summaryrefslogtreecommitdiff
path: root/addons/website_event_track/static/lib
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/website_event_track/static/lib
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/website_event_track/static/lib')
-rw-r--r--addons/website_event_track/static/lib/idb-keyval/idb-keyval.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/addons/website_event_track/static/lib/idb-keyval/idb-keyval.js b/addons/website_event_track/static/lib/idb-keyval/idb-keyval.js
new file mode 100644
index 00000000..c08909dc
--- /dev/null
+++ b/addons/website_event_track/static/lib/idb-keyval/idb-keyval.js
@@ -0,0 +1,81 @@
+// idb-keyval.js 3.2.0
+// https://github.com/jakearchibald/idb-keyval
+// Copyright 2016, Jake Archibald
+// Licensed under the Apache License, Version 2.0
+
+var idbKeyval = (function (exports) {
+ 'use strict';
+
+ class Store {
+ constructor(dbName = 'keyval-store', storeName = 'keyval') {
+ this.storeName = storeName;
+ this._dbp = new Promise((resolve, reject) => {
+ const openreq = indexedDB.open(dbName, 1);
+ openreq.onerror = () => reject(openreq.error);
+ openreq.onsuccess = () => resolve(openreq.result);
+ // First time setup: create an empty object store
+ openreq.onupgradeneeded = () => {
+ openreq.result.createObjectStore(storeName);
+ };
+ });
+ }
+ _withIDBStore(type, callback) {
+ return this._dbp.then(db => new Promise((resolve, reject) => {
+ const transaction = db.transaction(this.storeName, type);
+ transaction.oncomplete = () => resolve();
+ transaction.onabort = transaction.onerror = () => reject(transaction.error);
+ callback(transaction.objectStore(this.storeName));
+ }));
+ }
+ }
+ let store;
+ function getDefaultStore() {
+ if (!store)
+ store = new Store();
+ return store;
+ }
+ function get(key, store = getDefaultStore()) {
+ let req;
+ return store._withIDBStore('readonly', store => {
+ req = store.get(key);
+ }).then(() => req.result);
+ }
+ function set(key, value, store = getDefaultStore()) {
+ return store._withIDBStore('readwrite', store => {
+ store.put(value, key);
+ });
+ }
+ function del(key, store = getDefaultStore()) {
+ return store._withIDBStore('readwrite', store => {
+ store.delete(key);
+ });
+ }
+ function clear(store = getDefaultStore()) {
+ return store._withIDBStore('readwrite', store => {
+ store.clear();
+ });
+ }
+ function keys(store = getDefaultStore()) {
+ const keys = [];
+ return store._withIDBStore('readonly', store => {
+ // This would be store.getAllKeys(), but it isn't supported by Edge or Safari.
+ // And openKeyCursor isn't supported by Safari.
+ (store.openKeyCursor || store.openCursor).call(store).onsuccess = function () {
+ if (!this.result)
+ return;
+ keys.push(this.result.key);
+ this.result.continue();
+ };
+ }).then(() => keys);
+ }
+
+ exports.Store = Store;
+ exports.get = get;
+ exports.set = set;
+ exports.del = del;
+ exports.clear = clear;
+ exports.keys = keys;
+
+ return exports;
+
+ }({}));