From 1de17a183a8de1c6930c894b80712c73280ce83c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E5=8D=9A?= Date: Thu, 19 Aug 2021 15:44:51 +0800 Subject: [PATCH] fix: handle Uncaught in promise --- demo/js/idb-managed.js | 2 +- src/lib/idb.js | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/demo/js/idb-managed.js b/demo/js/idb-managed.js index 1c71d7b..bbc0ef7 100644 --- a/demo/js/idb-managed.js +++ b/demo/js/idb-managed.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.IDBM=t():e.IDBM=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){"use strict";function r(e){return!isNaN(e)&&e>=0}Object.defineProperty(t,"__esModule",{value:!0}),t.ParamCheckerEnum={NonNegativeInteger:{rule:r,desc:"needs to be a non-negative integer"},NotNullObject:{rule:function(e){return e&&"object"==typeof e},desc:"needs to be a not-null object"},String:{rule:function(e){return"string"==typeof e},desc:"needs to be a string"},Array:{rule:function(e){return e instanceof Array},desc:"needs to be an Array"},Boolean:{rule:function(e){return"boolean"==typeof e},desc:"needs to be a boolean"}},t.isNonNegativeInteger=r,t.optionWithBackup=function(e,t){return void 0!==e?e:t},t.paramChecker=function(e,t,n,r){var o=n+" "+t.desc;if(r){if(void 0!==e&&!t.rule(e))throw new Error(o+" if defined")}else if(!t.rule(e))throw new Error(o)},t.deduplicateList=function(e){return e.reduce((function(e,t){return e.indexOf(t)<0?e.concat(t):e}),[])}},function(e,t,n){e.exports=n(2)},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=i)throw new Error("lowerIndex should be less than upperIndex");o&&i&&c.paramChecker(a,c.ParamCheckerEnum.Boolean,"indexRange's lowerExclusive",l),c.paramChecker(u,c.ParamCheckerEnum.Boolean,"indexRange's upperExclusive",l)}}function d(){try{return a.default(),!0}catch(e){return!1}}t.idbIsSupported=d;var h=function(){function e(e){a.default(),function(e){c.paramChecker(e,c.ParamCheckerEnum.NotNullObject,"dbConfig",!l),c.paramChecker(e.dbName,c.ParamCheckerEnum.String,"dbName",!l),c.paramChecker(e.dbVersion,c.ParamCheckerEnum.NonNegativeInteger,"dbVersion",l),c.paramChecker(e.itemDuration,c.ParamCheckerEnum.NonNegativeInteger,"itemDuration of dbConfig",l),c.paramChecker(e.tables,c.ParamCheckerEnum.NotNullObject,"tables",l),Object.keys(e.tables||{}).forEach((function(t){var n=e.tables[t];c.paramChecker(n.primaryKey,c.ParamCheckerEnum.String,"primaryKey",l),c.paramChecker(n.itemDuration,c.ParamCheckerEnum.NonNegativeInteger,"itemDuration of table",l),c.paramChecker(n.indexList,c.ParamCheckerEnum.Array,"indexList",l),(n.indexList||[]).forEach((function(e){c.paramChecker(e.indexName,c.ParamCheckerEnum.String,"indexName",!l),c.paramChecker(e.unique,c.ParamCheckerEnum.Boolean,"unique",l)}))}))}(e),this.name=e.dbName,this.version=c.optionWithBackup(e.dbVersion,s),this.tableList=Object.keys(e.tables||{}).map((function(t){return r({tableName:t},e.tables[t])})),this.itemDuration=e.itemDuration}return e.prototype.addItems=function(e){return o(this,void 0,void 0,(function(){var t,n,o=this;return i(this,(function(i){switch(i.label){case 0:return t=function(e,t,n){return void 0!==n?n:void 0!==t?t:e},a=e,s=this.tableList,c.paramChecker(a,c.ParamCheckerEnum.Array,"items",!l),a.forEach((function(e){c.paramChecker(e.tableName,c.ParamCheckerEnum.String,"item's tableName",!l),c.paramChecker(e.itemDuration,c.ParamCheckerEnum.NonNegativeInteger,"item's itemDuration",l);var t=s.filter((function(t){return t.tableName===e.tableName}))[0];if(!t)throw new Error("Table "+e.tableName+" does not exist");if(void 0!==t.primaryKey&&Object.getOwnPropertyNames(e.item).indexOf(t.primaryKey)<0)throw new Error("primaryKey is needed for item in table "+e.tableName)})),n=e.map((function(e){var n=o.tableList.filter((function(t){return t.tableName===e.tableName}))[0];return r({itemDuration:t(o.itemDuration,n.itemDuration,e.itemDuration)},e)})),[4,u.default.addItems({name:this.name,tableList:this.tableList,version:this.version},n)];case 1:return i.sent(),[2]}var a,s}))}))},e.prototype.getItem=function(e,t){return o(this,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return[4,m(this.name,e,t)];case 1:return[2,n.sent()]}}))}))},e.prototype.getItemsInRange=function(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,b(this.name,e)];case 1:return[2,t.sent()]}}))}))},e.prototype.deleteItemsInRange=function(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return c.paramChecker(e,c.ParamCheckerEnum.Array,"tableIndexRanges",!l),e.forEach((function(e){f(e)})),[4,u.default.deleteItems(this.name,e)];case 1:return t.sent(),[2]}}))}))},e}();function p(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return a.default(),c.paramChecker(e,c.ParamCheckerEnum.String,"dbName",!l),[4,u.default.deleteDB(e)];case 1:return t.sent(),[2]}}))}))}function m(e,t,n){return o(this,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return c.paramChecker(e,c.ParamCheckerEnum.String,"dbName",!l),c.paramChecker(t,c.ParamCheckerEnum.String,"tableName",!l),[4,u.default.getItem(e,t,n)];case 1:return[2,r.sent()]}}))}))}function b(e,t){return o(this,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return c.paramChecker(e,c.ParamCheckerEnum.String,"dbName",!l),f(t),[4,u.default.getItemsInRange(e,t)];case 1:return[2,n.sent()]}}))}))}t.CustomDB=h,t.deleteDB=p,t.getItemFromDB=m,t.getItemsInRangeFromDB=b,t.default={idbIsSupported:d,CustomDB:h,deleteDB:p,getItemFromDB:m,getItemsInRangeFromDB:b}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){if(!window)throw new Error("idb-managed can not run in non-browser environment");for(var e=0,t=["indexedDB","IDBDatabase","IDBObjectStore","IDBTransaction","IDBIndex","IDBCursor","IDBKeyRange","IDBRequest"];e0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&e.expireTimen.version?(r=t.transaction(l,"readwrite"),o=r.objectStore(l),a={dbName:e.name,tableList:e.tableList,version:e.version},o.put(m({item:a,tableName:l})),[4,r.complete]):[3,4];case 3:i.sent(),t.close(),i.label=4;case 4:return[2]}}))}))}function y(e){return o(this,void 0,void 0,(function(){var t,n;return i(this,(function(r){switch(r.label){case 0:return[4,x()];case 1:return t=r.sent(),n=t.transaction(l,"readwrite"),n.objectStore(l).delete(e),[4,n.complete];case 2:return r.sent(),t.close(),[2]}}))}))}function w(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,v(e)];case 1:return t.sent(),[4,u.open(e.name,e.version,(function(t){N(t,e.tableList)}))];case 2:return[2,t.sent()]}}))}))}function x(){return o(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,u.open(s,c,(function(e){!function(e){e.createObjectStore(l,{keyPath:f})}(e)}))];case 1:return[2,e.sent()]}}))}))}function g(e){return o(this,void 0,void 0,(function(){var t,n;return i(this,(function(r){switch(r.label){case 0:return[4,x()];case 1:return[4,I(t=r.sent(),l,e)];case 2:return n=r.sent(),t.close(),n?[4,u.open(n.dbName,n.version,(function(e){N(e,n.tableList||[])}))]:[3,4];case 3:return[2,r.sent()];case 4:return[2,null]}}))}))}function I(e,t,n){return o(this,void 0,void 0,(function(){var r;return i(this,(function(o){switch(o.label){case 0:return e.objectStoreNames.contains(t)?(r=e.transaction(t,"readonly"),[4,r.objectStore(t).get(n)]):[3,2];case 1:return[2,b(o.sent())];case 2:return[2,null]}}))}))}function N(e,t){try{t.forEach((function(t){if(e.objectStoreNames.contains(t.tableName)){var n=e.transaction(t.tableName).objectStore(t.tableName);(t.indexList||[]).forEach((function(e){n.indexNames.contains(e.indexName)||n.createIndex(e.indexName,e.indexName,{unique:e.unique})}))}else{var o=t.primaryKey||"id",i=e.createObjectStore(t.tableName,r({keyPath:o},"id"===o?{autoIncrement:!0}:{}));i.createIndex(o,o,{unique:!0}),(t.indexList||[]).forEach((function(e){i.createIndex(e.indexName,e.indexName,{unique:e.unique})})),i.createIndex(d,d,{unique:!1}),i.createIndex(h,h,{unique:!1})}}))}catch(t){e.close()}}function D(e,t,n){return o(this,void 0,void 0,(function(){var r;return i(this,(function(o){switch(o.label){case 0:return o.trys.push([0,3,8,9]),[4,n()];case 1:return o.sent(),[4,e.complete];case 2:return o.sent(),[3,9];case 3:r=o.sent();try{e.abort()}catch(e){}o.label=4;case 4:return o.trys.push([4,6,,7]),[4,e.complete];case 5:return o.sent(),[3,7];case 6:return o.sent(),[3,7];case 7:throw r;case 8:return t.close(),[7];case 9:return[2]}}))}))}function _(e,t){return o(this,void 0,void 0,(function(){var n,r,u,c=this;return i(this,(function(s){switch(s.label){case 0:return n=t.filter((function(t){return e.objectStoreNames.contains(t.tableName)})),r=a.deduplicateList(n.map((function(e){return e.tableName}))),[4,D(u=e.transaction(r,"readwrite"),e,(function(){return o(c,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,Promise.all(n.map((function(e){var t=e.tableName,n=e.indexRange,r=u.objectStore(t);return n?new Promise((function(e){r.index(n.indexName).iterateCursor(p(n),(function(t){t?(r.delete(t.primaryKey),t.continue()):e()}))})):r.clear()})))];case 1:return e.sent(),[2]}}))}))}))];case 1:return s.sent(),[2]}}))}))}function k(e,t){return o(this,void 0,void 0,(function(){var n,r,u,c=this;return i(this,(function(s){switch(s.label){case 0:return n=a.deduplicateList(t.map((function(e){return e.tableName}))),[4,j(e.name,n.map((function(e){return{tableName:e,indexRange:{indexName:h,upperIndex:+new Date,upperExclusive:!1}}})))];case 1:return s.sent(),[4,w(e)];case 2:return r=s.sent(),[4,D(u=r.transaction(n,"readwrite"),r,(function(){return o(c,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,Promise.all(t.map((function(e){return u.objectStore(e.tableName).put(m(e))})))];case 1:return e.sent(),[2]}}))}))}))];case 3:return s.sent(),[2]}}))}))}function C(e,t,n){return o(this,void 0,void 0,(function(){var r;return i(this,(function(o){switch(o.label){case 0:return[4,g(e)];case 1:if(!(r=o.sent()))return[3,7];o.label=2;case 2:return o.trys.push([2,4,5,6]),[4,I(r,t,n)];case 3:return[2,o.sent()];case 4:throw o.sent();case 5:return r.close(),[7];case 6:return[3,8];case 7:return[2,null];case 8:return[2]}}))}))}function E(e,t){return o(this,void 0,void 0,(function(){var n,r,o,a,u,c,s;return i(this,(function(i){switch(i.label){case 0:return n=t.tableName,r=t.indexRange,[4,g(e)];case 1:if(!(o=i.sent()))return[3,11];i.label=2;case 2:return i.trys.push([2,8,9,10]),a=[],o.objectStoreNames.contains(n)?[3,3]:[3,7];case 3:return u=o.transaction(n,"readonly"),c=u.objectStore(n),r?[3,5]:[4,c.getAll()];case 4:return s=i.sent(),a=(s||[]).map(b).filter((function(e){return null!==e})),[3,7];case 5:return[4,new Promise((function(e){c.index(r.indexName).iterateCursor(p(r),(function(t){if(t){var n=b(t.value);n&&a.push(n),t.continue()}else e()}))}))];case 6:i.sent(),i.label=7;case 7:return[2,a];case 8:throw i.sent();case 9:return o.close(),[7];case 10:return[3,12];case 11:return[2,[]];case 12:return[2]}}))}))}function P(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,y(e)];case 1:return t.sent(),[4,u.delete(e)];case 2:return t.sent(),[2]}}))}))}function j(e,t){return o(this,void 0,void 0,(function(){var n;return i(this,(function(r){switch(r.label){case 0:return[4,g(e)];case 1:return(n=r.sent())?[4,_(n,t)]:[3,3];case 2:return r.sent(),[3,4];case 3:case 4:return[2]}}))}))}t.addItems=k,t.getItem=C,t.getItemsInRange=E,t.deleteDB=P,t.deleteItems=j,t.default={addItems:k,getItem:C,getItemsInRange:E,deleteDB:P,deleteItems:j}},function(e,t){function n(e){return Array.prototype.slice.call(e)}function r(e){return new Promise((function(t,n){e.onsuccess=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function o(e,t,n){var o,i=new Promise((function(i,a){r(o=e[t].apply(e,n)).then(i,a)}));return i.request=o,i}function i(e,t,n){var r=o(e,t,n);return r.then((function(e){if(e)return new f(e,r.request)}))}function a(e,t,n){n.forEach((function(n){Object.defineProperty(e.prototype,n,{get:function(){return this[t][n]},set:function(e){this[t][n]=e}})}))}function u(e,t,n,r){r.forEach((function(r){r in n.prototype&&(e.prototype[r]=function(){return o(this[t],r,arguments)})}))}function c(e,t,n,r){r.forEach((function(r){r in n.prototype&&(e.prototype[r]=function(){return this[t][r].apply(this[t],arguments)})}))}function s(e,t,n,r){r.forEach((function(r){r in n.prototype&&(e.prototype[r]=function(){return i(this[t],r,arguments)})}))}function l(e){this._index=e}function f(e,t){this._cursor=e,this._request=t}function d(e){this._store=e}function h(e){this._tx=e,this.complete=new Promise((function(t,n){e.oncomplete=function(){t()},e.onerror=function(){n(e.error)},e.onabort=function(){n(e.error)}}))}function p(e,t,n){this._db=e,this.oldVersion=t,this.transaction=new h(n)}function m(e){this._db=e}var b;if(d.prototype.createIndex=function(){return new l(this._store.createIndex.apply(this._store,arguments))},d.prototype.index=function(){return new l(this._store.index.apply(this._store,arguments))},h.prototype.objectStore=function(){return new d(this._tx.objectStore.apply(this._tx,arguments))},p.prototype.createObjectStore=function(){return new d(this._db.createObjectStore.apply(this._db,arguments))},m.prototype.transaction=function(){return new h(this._db.transaction.apply(this._db,arguments))},function(){try{return["IDBIndex","IDBCursor","IDBObjectStore","IDBTransaction","IDBDatabase"].forEach((function(e){if(window&&(!window[e]||!window.hasOwnProperty(e)))throw new Error(e)})),!0}catch(e){return!1}}())a(l,"_index",["name","keyPath","multiEntry","unique"]),u(l,"_index",IDBIndex,["get","getKey","getAll","getAllKeys","count"]),s(l,"_index",IDBIndex,["openCursor","openKeyCursor"]),a(f,"_cursor",["direction","key","primaryKey","value"]),u(f,"_cursor",IDBCursor,["update","delete"]),["advance","continue","continuePrimaryKey"].forEach((function(e){e in IDBCursor.prototype&&(f.prototype[e]=function(){var t=this,n=arguments;return Promise.resolve().then((function(){return t._cursor[e].apply(t._cursor,n),r(t._request).then((function(e){if(e)return new f(e,t._request)}))}))})})),a(d,"_store",["name","keyPath","indexNames","autoIncrement"]),u(d,"_store",IDBObjectStore,["put","add","delete","clear","get","getAll","getKey","getAllKeys","count"]),s(d,"_store",IDBObjectStore,["openCursor","openKeyCursor"]),c(d,"_store",IDBObjectStore,["deleteIndex"]),a(h,"_tx",["objectStoreNames","mode"]),c(h,"_tx",IDBTransaction,["abort"]),a(p,"_db",["name","version","objectStoreNames"]),c(p,"_db",IDBDatabase,["deleteObjectStore","close"]),a(m,"_db",["name","version","objectStoreNames"]),c(m,"_db",IDBDatabase,["close"]),["openCursor","openKeyCursor"].forEach((function(e){[d,l].forEach((function(t){e in t.prototype&&(t.prototype[e.replace("open","iterate")]=function(){var t=n(arguments),r=t[t.length-1],o=this._store||this._index,i=o[e].apply(o,t.slice(0,-1));i.onsuccess=function(){r(i.result)}})}))})),[l,d].forEach((function(e){e.prototype.getAll||(e.prototype.getAll=function(e,t){var n=this,r=[];return new Promise((function(o){n.iterateCursor(e,(function(e){e?(r.push(e.value),void 0===t||r.length!=t?e.continue():o(r)):o(r)}))}))})})),b={open:function(e,t,n){var r=o(indexedDB,"open",[e,t]),i=r.request;return i&&(i.onupgradeneeded=function(e){n&&n(new p(i.result,e.oldVersion,i.transaction))}),r.then((function(e){return new m(e)}))},delete:function(e){return o(indexedDB,"deleteDatabase",[e])}};else{var v="indexedDB is not supported";b={open:function(){return Promise.reject(new Error(v))},delete:function(){return Promise.reject(new Error(v))}}}e.exports=b}])})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.IDBM=t():e.IDBM=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=1)}([function(e,t,n){"use strict";function r(e){return!isNaN(e)&&e>=0}Object.defineProperty(t,"__esModule",{value:!0}),t.ParamCheckerEnum={NonNegativeInteger:{rule:r,desc:"needs to be a non-negative integer"},NotNullObject:{rule:function(e){return e&&"object"==typeof e},desc:"needs to be a not-null object"},String:{rule:function(e){return"string"==typeof e},desc:"needs to be a string"},Array:{rule:function(e){return e instanceof Array},desc:"needs to be an Array"},Boolean:{rule:function(e){return"boolean"==typeof e},desc:"needs to be a boolean"}},t.isNonNegativeInteger=r,t.optionWithBackup=function(e,t){return void 0!==e?e:t},t.paramChecker=function(e,t,n,r){var o=n+" "+t.desc;if(r){if(void 0!==e&&!t.rule(e))throw new Error(o+" if defined")}else if(!t.rule(e))throw new Error(o)},t.deduplicateList=function(e){return e.reduce((function(e,t){return e.indexOf(t)<0?e.concat(t):e}),[])}},function(e,t,n){e.exports=n(2)},function(e,t,n){"use strict";var r=this&&this.__assign||function(){return(r=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]=i)throw new Error("lowerIndex should be less than upperIndex");o&&i&&c.paramChecker(a,c.ParamCheckerEnum.Boolean,"indexRange's lowerExclusive",l),c.paramChecker(u,c.ParamCheckerEnum.Boolean,"indexRange's upperExclusive",l)}}function d(){try{return a.default(),!0}catch(e){return!1}}t.idbIsSupported=d;var h=function(){function e(e){a.default(),function(e){c.paramChecker(e,c.ParamCheckerEnum.NotNullObject,"dbConfig",!l),c.paramChecker(e.dbName,c.ParamCheckerEnum.String,"dbName",!l),c.paramChecker(e.dbVersion,c.ParamCheckerEnum.NonNegativeInteger,"dbVersion",l),c.paramChecker(e.itemDuration,c.ParamCheckerEnum.NonNegativeInteger,"itemDuration of dbConfig",l),c.paramChecker(e.tables,c.ParamCheckerEnum.NotNullObject,"tables",l),Object.keys(e.tables||{}).forEach((function(t){var n=e.tables[t];c.paramChecker(n.primaryKey,c.ParamCheckerEnum.String,"primaryKey",l),c.paramChecker(n.itemDuration,c.ParamCheckerEnum.NonNegativeInteger,"itemDuration of table",l),c.paramChecker(n.indexList,c.ParamCheckerEnum.Array,"indexList",l),(n.indexList||[]).forEach((function(e){c.paramChecker(e.indexName,c.ParamCheckerEnum.String,"indexName",!l),c.paramChecker(e.unique,c.ParamCheckerEnum.Boolean,"unique",l)}))}))}(e),this.name=e.dbName,this.version=c.optionWithBackup(e.dbVersion,s),this.tableList=Object.keys(e.tables||{}).map((function(t){return r({tableName:t},e.tables[t])})),this.itemDuration=e.itemDuration}return e.prototype.addItems=function(e){return o(this,void 0,void 0,(function(){var t,n,o=this;return i(this,(function(i){switch(i.label){case 0:return t=function(e,t,n){return void 0!==n?n:void 0!==t?t:e},a=e,s=this.tableList,c.paramChecker(a,c.ParamCheckerEnum.Array,"items",!l),a.forEach((function(e){c.paramChecker(e.tableName,c.ParamCheckerEnum.String,"item's tableName",!l),c.paramChecker(e.itemDuration,c.ParamCheckerEnum.NonNegativeInteger,"item's itemDuration",l);var t=s.filter((function(t){return t.tableName===e.tableName}))[0];if(!t)throw new Error("Table "+e.tableName+" does not exist");if(void 0!==t.primaryKey&&Object.getOwnPropertyNames(e.item).indexOf(t.primaryKey)<0)throw new Error("primaryKey is needed for item in table "+e.tableName)})),n=e.map((function(e){var n=o.tableList.filter((function(t){return t.tableName===e.tableName}))[0];return r({itemDuration:t(o.itemDuration,n.itemDuration,e.itemDuration)},e)})),[4,u.default.addItems({name:this.name,tableList:this.tableList,version:this.version},n)];case 1:return i.sent(),[2]}var a,s}))}))},e.prototype.getItem=function(e,t){return o(this,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return[4,m(this.name,e,t)];case 1:return[2,n.sent()]}}))}))},e.prototype.getItemsInRange=function(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,b(this.name,e)];case 1:return[2,t.sent()]}}))}))},e.prototype.deleteItemsInRange=function(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return c.paramChecker(e,c.ParamCheckerEnum.Array,"tableIndexRanges",!l),e.forEach((function(e){f(e)})),[4,u.default.deleteItems(this.name,e)];case 1:return t.sent(),[2]}}))}))},e}();function p(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return a.default(),c.paramChecker(e,c.ParamCheckerEnum.String,"dbName",!l),[4,u.default.deleteDB(e)];case 1:return t.sent(),[2]}}))}))}function m(e,t,n){return o(this,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return c.paramChecker(e,c.ParamCheckerEnum.String,"dbName",!l),c.paramChecker(t,c.ParamCheckerEnum.String,"tableName",!l),[4,u.default.getItem(e,t,n)];case 1:return[2,r.sent()]}}))}))}function b(e,t){return o(this,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return c.paramChecker(e,c.ParamCheckerEnum.String,"dbName",!l),f(t),[4,u.default.getItemsInRange(e,t)];case 1:return[2,n.sent()]}}))}))}t.CustomDB=h,t.deleteDB=p,t.getItemFromDB=m,t.getItemsInRangeFromDB=b,t.default={idbIsSupported:d,CustomDB:h,deleteDB:p,getItemFromDB:m,getItemsInRangeFromDB:b}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){if(!window)throw new Error("idb-managed can not run in non-browser environment");for(var e=0,t=["indexedDB","IDBDatabase","IDBObjectStore","IDBTransaction","IDBIndex","IDBCursor","IDBKeyRange","IDBRequest"];e0&&o[o.length-1])&&(6===i[0]||2===i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0&&e.expireTimen.version?(r=t.transaction(l,"readwrite"),o=r.objectStore(l),a={dbName:e.name,tableList:e.tableList,version:e.version},o.put(m({item:a,tableName:l})),[4,r.complete]):[3,4];case 3:i.sent(),t.close(),i.label=4;case 4:return[2]}}))}))}function y(e){return o(this,void 0,void 0,(function(){var t,n;return i(this,(function(r){switch(r.label){case 0:return[4,x()];case 1:return t=r.sent(),n=t.transaction(l,"readwrite"),n.objectStore(l).delete(e),[4,n.complete];case 2:return r.sent(),t.close(),[2]}}))}))}function w(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,v(e)];case 1:return t.sent(),[4,u.open(e.name,e.version,(function(t){N(t,e.tableList)}))];case 2:return[2,t.sent()]}}))}))}function x(){return o(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,u.open(s,c,(function(e){!function(e){e.createObjectStore(l,{keyPath:f})}(e)}))];case 1:return[2,e.sent()]}}))}))}function g(e){return o(this,void 0,void 0,(function(){var t,n;return i(this,(function(r){switch(r.label){case 0:return[4,x()];case 1:return[4,I(t=r.sent(),l,e)];case 2:return n=r.sent(),t.close(),n?[4,u.open(n.dbName,n.version,(function(e){N(e,n.tableList||[])}))]:[3,4];case 3:return[2,r.sent()];case 4:return[2,null]}}))}))}function I(e,t,n){return o(this,void 0,void 0,(function(){var r;return i(this,(function(o){switch(o.label){case 0:if(!e.objectStoreNames.contains(t))return[3,8];r=e.transaction(t,"readonly"),o.label=1;case 1:return o.trys.push([1,,3,7]),[4,r.objectStore(t).get(n)];case 2:return[2,b(o.sent())];case 3:return o.trys.push([3,5,,6]),[4,r.complete];case 4:return o.sent(),[3,6];case 5:return o.sent(),[3,6];case 6:return[7];case 7:return[3,9];case 8:return[2,null];case 9:return[2]}}))}))}function N(e,t){try{t.forEach((function(t){if(e.objectStoreNames.contains(t.tableName)){var n=e.transaction(t.tableName).objectStore(t.tableName);(t.indexList||[]).forEach((function(e){n.indexNames.contains(e.indexName)||n.createIndex(e.indexName,e.indexName,{unique:e.unique})}))}else{var o=t.primaryKey||"id",i=e.createObjectStore(t.tableName,r({keyPath:o},"id"===o?{autoIncrement:!0}:{}));i.createIndex(o,o,{unique:!0}),(t.indexList||[]).forEach((function(e){i.createIndex(e.indexName,e.indexName,{unique:e.unique})})),i.createIndex(d,d,{unique:!1}),i.createIndex(h,h,{unique:!1})}}))}catch(t){e.close()}}function D(e,t,n){return o(this,void 0,void 0,(function(){var r;return i(this,(function(o){switch(o.label){case 0:return o.trys.push([0,3,8,9]),[4,n()];case 1:return o.sent(),[4,e.complete];case 2:return o.sent(),[3,9];case 3:r=o.sent();try{e.abort()}catch(e){}o.label=4;case 4:return o.trys.push([4,6,,7]),[4,e.complete];case 5:return o.sent(),[3,7];case 6:return o.sent(),[3,7];case 7:throw r;case 8:return t.close(),[7];case 9:return[2]}}))}))}function _(e,t){return o(this,void 0,void 0,(function(){var n,r,u,c=this;return i(this,(function(s){switch(s.label){case 0:return n=t.filter((function(t){return e.objectStoreNames.contains(t.tableName)})),r=a.deduplicateList(n.map((function(e){return e.tableName}))),[4,D(u=e.transaction(r,"readwrite"),e,(function(){return o(c,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,Promise.all(n.map((function(e){var t=e.tableName,n=e.indexRange,r=u.objectStore(t);return n?new Promise((function(e){r.index(n.indexName).iterateCursor(p(n),(function(t){t?(r.delete(t.primaryKey),t.continue()):e()}))})):r.clear()})))];case 1:return e.sent(),[2]}}))}))}))];case 1:return s.sent(),[2]}}))}))}function k(e,t){return o(this,void 0,void 0,(function(){var n,r,u,c=this;return i(this,(function(s){switch(s.label){case 0:return n=a.deduplicateList(t.map((function(e){return e.tableName}))),[4,j(e.name,n.map((function(e){return{tableName:e,indexRange:{indexName:h,upperIndex:+new Date,upperExclusive:!1}}})))];case 1:return s.sent(),[4,w(e)];case 2:return r=s.sent(),[4,D(u=r.transaction(n,"readwrite"),r,(function(){return o(c,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,Promise.all(t.map((function(e){return u.objectStore(e.tableName).put(m(e))})))];case 1:return e.sent(),[2]}}))}))}))];case 3:return s.sent(),[2]}}))}))}function C(e,t,n){return o(this,void 0,void 0,(function(){var r;return i(this,(function(o){switch(o.label){case 0:return[4,g(e)];case 1:if(!(r=o.sent()))return[3,7];o.label=2;case 2:return o.trys.push([2,4,5,6]),[4,I(r,t,n)];case 3:return[2,o.sent()];case 4:throw o.sent();case 5:return r.close(),[7];case 6:return[3,8];case 7:return[2,null];case 8:return[2]}}))}))}function E(e,t){return o(this,void 0,void 0,(function(){var n,r,o,a,u,c,s;return i(this,(function(i){switch(i.label){case 0:return n=t.tableName,r=t.indexRange,[4,g(e)];case 1:if(!(o=i.sent()))return[3,17];i.label=2;case 2:return i.trys.push([2,14,15,16]),a=[],o.objectStoreNames.contains(n)?[3,3]:[3,13];case 3:u=o.transaction(n,"readonly"),i.label=4;case 4:return i.trys.push([4,,9,13]),c=u.objectStore(n),r?[3,6]:[4,c.getAll()];case 5:return s=i.sent(),a=(s||[]).map(b).filter((function(e){return null!==e})),[3,8];case 6:return[4,new Promise((function(e){c.index(r.indexName).iterateCursor(p(r),(function(t){if(t){var n=b(t.value);n&&a.push(n),t.continue()}else e()}))}))];case 7:i.sent(),i.label=8;case 8:return[3,13];case 9:return i.trys.push([9,11,,12]),[4,u.complete];case 10:return i.sent(),[3,12];case 11:return i.sent(),[3,12];case 12:return[7];case 13:return[2,a];case 14:throw i.sent();case 15:return o.close(),[7];case 16:return[3,18];case 17:return[2,[]];case 18:return[2]}}))}))}function P(e){return o(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,y(e)];case 1:return t.sent(),[4,u.delete(e)];case 2:return t.sent(),[2]}}))}))}function j(e,t){return o(this,void 0,void 0,(function(){var n;return i(this,(function(r){switch(r.label){case 0:return[4,g(e)];case 1:return(n=r.sent())?[4,_(n,t)]:[3,3];case 2:return r.sent(),[3,4];case 3:case 4:return[2]}}))}))}t.addItems=k,t.getItem=C,t.getItemsInRange=E,t.deleteDB=P,t.deleteItems=j,t.default={addItems:k,getItem:C,getItemsInRange:E,deleteDB:P,deleteItems:j}},function(e,t){function n(e){return Array.prototype.slice.call(e)}function r(e){return new Promise((function(t,n){e.onsuccess=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function o(e,t,n){var o,i=new Promise((function(i,a){r(o=e[t].apply(e,n)).then(i,a)}));return i.request=o,i}function i(e,t,n){var r=o(e,t,n);return r.then((function(e){if(e)return new f(e,r.request)}))}function a(e,t,n){n.forEach((function(n){Object.defineProperty(e.prototype,n,{get:function(){return this[t][n]},set:function(e){this[t][n]=e}})}))}function u(e,t,n,r){r.forEach((function(r){r in n.prototype&&(e.prototype[r]=function(){return o(this[t],r,arguments)})}))}function c(e,t,n,r){r.forEach((function(r){r in n.prototype&&(e.prototype[r]=function(){return this[t][r].apply(this[t],arguments)})}))}function s(e,t,n,r){r.forEach((function(r){r in n.prototype&&(e.prototype[r]=function(){return i(this[t],r,arguments)})}))}function l(e){this._index=e}function f(e,t){this._cursor=e,this._request=t}function d(e){this._store=e}function h(e){this._tx=e,this.complete=new Promise((function(t,n){e.oncomplete=function(){t()},e.onerror=function(){n(e.error)},e.onabort=function(){n(e.error)}}))}function p(e,t,n){this._db=e,this.oldVersion=t,this.transaction=new h(n)}function m(e){this._db=e}var b;if(d.prototype.createIndex=function(){return new l(this._store.createIndex.apply(this._store,arguments))},d.prototype.index=function(){return new l(this._store.index.apply(this._store,arguments))},h.prototype.objectStore=function(){return new d(this._tx.objectStore.apply(this._tx,arguments))},p.prototype.createObjectStore=function(){return new d(this._db.createObjectStore.apply(this._db,arguments))},m.prototype.transaction=function(){return new h(this._db.transaction.apply(this._db,arguments))},function(){try{return["IDBIndex","IDBCursor","IDBObjectStore","IDBTransaction","IDBDatabase"].forEach((function(e){if(window&&(!window[e]||!window.hasOwnProperty(e)))throw new Error(e)})),!0}catch(e){return!1}}())a(l,"_index",["name","keyPath","multiEntry","unique"]),u(l,"_index",IDBIndex,["get","getKey","getAll","getAllKeys","count"]),s(l,"_index",IDBIndex,["openCursor","openKeyCursor"]),a(f,"_cursor",["direction","key","primaryKey","value"]),u(f,"_cursor",IDBCursor,["update","delete"]),["advance","continue","continuePrimaryKey"].forEach((function(e){e in IDBCursor.prototype&&(f.prototype[e]=function(){var t=this,n=arguments;return Promise.resolve().then((function(){return t._cursor[e].apply(t._cursor,n),r(t._request).then((function(e){if(e)return new f(e,t._request)}))}))})})),a(d,"_store",["name","keyPath","indexNames","autoIncrement"]),u(d,"_store",IDBObjectStore,["put","add","delete","clear","get","getAll","getKey","getAllKeys","count"]),s(d,"_store",IDBObjectStore,["openCursor","openKeyCursor"]),c(d,"_store",IDBObjectStore,["deleteIndex"]),a(h,"_tx",["objectStoreNames","mode"]),c(h,"_tx",IDBTransaction,["abort"]),a(p,"_db",["name","version","objectStoreNames"]),c(p,"_db",IDBDatabase,["deleteObjectStore","close"]),a(m,"_db",["name","version","objectStoreNames"]),c(m,"_db",IDBDatabase,["close"]),["openCursor","openKeyCursor"].forEach((function(e){[d,l].forEach((function(t){e in t.prototype&&(t.prototype[e.replace("open","iterate")]=function(){var t=n(arguments),r=t[t.length-1],o=this._store||this._index,i=o[e].apply(o,t.slice(0,-1));i.onsuccess=function(){r(i.result)}})}))})),[l,d].forEach((function(e){e.prototype.getAll||(e.prototype.getAll=function(e,t){var n=this,r=[];return new Promise((function(o){n.iterateCursor(e,(function(e){e?(r.push(e.value),void 0===t||r.length!=t?e.continue():o(r)):o(r)}))}))})})),b={open:function(e,t,n){var r=o(indexedDB,"open",[e,t]),i=r.request;return i&&(i.onupgradeneeded=function(e){if(n){const t=new p(i.result,e.oldVersion,i.transaction);t.transaction.complete.catch(()=>{}),n(t)}}),r.then((function(e){return new m(e)}))},delete:function(e){return o(indexedDB,"deleteDatabase",[e])}};else{var v="indexedDB is not supported";b={open:function(){return Promise.reject(new Error(v))},delete:function(){return Promise.reject(new Error(v))}}}e.exports=b}])})); \ No newline at end of file diff --git a/src/lib/idb.js b/src/lib/idb.js index c173166..4e98aa2 100644 --- a/src/lib/idb.js +++ b/src/lib/idb.js @@ -306,13 +306,13 @@ if (idbIsSupported()) { if (request) { request.onupgradeneeded = function(event) { if (upgradeCallback) { - upgradeCallback( - new UpgradeDB( - request.result, - event.oldVersion, - request.transaction - ) - ); + const db = new UpgradeDB( + request.result, + event.oldVersion, + request.transaction + ) + db.transaction.complete.catch(() => {}); + upgradeCallback(db); } }; }