mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-20 19:12:06 +02:00
19.0 vanilla
This commit is contained in:
parent
d1963a3c3a
commit
2d3ee4855a
7430 changed files with 2687981 additions and 2965473 deletions
|
|
@ -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;
|
||||
|
||||
}({}));
|
||||
Loading…
Add table
Add a link
Reference in a new issue