amos-tool
Version:
amos ui tool
72 lines (70 loc) • 2.66 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"), _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")), _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")), InvalidStorageDB = function() {
return (0, _createClass2.default)(function e() {
(0, _classCallCheck2.default)(this, e);
}, [ {
key: "init",
value: function() {}
}, {
key: "get",
value: function() {}
}, {
key: "set",
value: function() {}
}, {
key: "clear",
value: function() {}
} ]);
}(), StorageDB = function() {
return (0, _createClass2.default)(function e(t) {
(0, _classCallCheck2.default)(this, e);
var a = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
if (void 0 === a) return console.warn("Storage: IndexedDB not available."), new InvalidStorageDB;
this._name = t.name || "amostool-db", this.version = t.version || 1, this.storeName = t.storeName || "item",
this.database, this.indexedDB = a, this.performance = window.performance || {
now: function() {}
};
}, [ {
key: "init",
value: function(e) {
var t = this, a = t.storeName, n = t.indexedDB.open(t._name, t.version);
n.onupgradeneeded = function(e) {
var t = e.target.result;
!1 === t.objectStoreNames.contains(a) && t.createObjectStore(a);
}, n.onsuccess = function(a) {
t.database = a.target.result, e && e();
}, n.onerror = function(e) {
console.error("IndexedDB", e);
};
}
}, {
key: "get",
value: function(e) {
var t = this.storeName;
this.database.transaction([ t ], "readwrite").objectStore(t).get(0).onsuccess = function(t) {
e && e(t.target.result);
};
}
}, {
key: "set",
value: function(e, t) {
var a = this, n = a.performance.now(), r = a.storeName;
a.database.transaction([ r ], "readwrite").objectStore(r).put(e, 0).onsuccess = function(e) {
console.log("[".concat(/\d\d\:\d\d\:\d\d/.exec(new Date)[0], "]"), "Saved item to IndexedDB. ".concat((a.performance.now() - n).toFixed(2), "ms")),
t && t(e.target.result);
};
}
}, {
key: "clear",
value: function() {
var e = this;
if (void 0 !== e.database) {
var t = e.storeName;
e.database.transaction([ t ], "readwrite").objectStore(t).clear().onsuccess = function(e) {
console.log("[".concat(/\d\d\:\d\d\:\d\d/.exec(new Date)[0], "]"), "Cleared IndexedDB.");
};
}
}
} ]);
}();
module.exports = StorageDB;