anys-web-plugin-store-offline 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- (()=>{var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};(()=>{"use strict";e.r(t),e.d(t,{AnysStoreOfflinePlugin:()=>u});let n=function(){function e(){this.queue=[],this.status=0}return e.prototype.push=function(e){let t,n;const r=new Promise(((e,r)=>{t=e,n=r})),s={runner:e,resolve:t,reject:n};this.queue.push(s);const o=()=>{setTimeout((()=>{if(!this.queue.length)return void(this.status=0);const{runner:e,resolve:t,reject:n}=this.queue.shift();e().then(t,n).finally(o)}),0),this.status=1};return this.status||o(),r},e}(),r=function(){function e(e={}){let{name:t,version:n=1,stores:r}=e;const s=!t;t||(t="__indb__"),r&&Array.isArray(r)&&r.length||(r=[{name:"__indb__",isKv:!0}]),this.cache={},this.connection=null,this.name=t,this.version=n,this.stores=r;const o=indexedDB.open(t,n);if(o.onupgradeneeded=e=>{const t=e.target.result,n=Array.from(t.objectStoreNames),s=[];r.forEach((r=>{let o=null;if(n.indexOf(r.name)>-1)o=e.target.transaction.objectStore(r.name);else{const e=r.isKv?"key":r.primaryKeyPath,n=!r.isKv&&r.autoIncrement;o=t.createObjectStore(r.name,{keyPath:e,autoIncrement:n})}const i=o.indexNames;i&&i.length&&Array.from(i).forEach((e=>o.deleteIndex(e))),r.indexes&&r.indexes.length&&r.indexes.forEach((e=>{o.createIndex(e.name,e.keyPath||e.name,{unique:e.unique,multiEntry:Array.isArray(e.keyPath)})})),s.push(r.name)})),n&&n.forEach((e=>{-1===s.indexOf(e)&&t.deleteObjectStore(e)}))},o.onblocked=e=>{console.error(i(new Error("indexedDB "+t+" is blocked")))},s)return this.use(t)}var t=e.prototype;return t.connect=function(){return new Promise(((e,t)=>{const n=indexedDB.open(this.name,this.version);n.onerror=e=>{t(i(e))},n.onsuccess=t=>{e(t.target.result)}}))},t.use=function(e){const t=this.stores.find((t=>t.name===e));if(!t)throw new Error(`[InDB]: store ${e} is not existing.`);if(this.cache[e])return this.cache[e];const n=new s({db:this,store:t});return t.isKv&&Object.defineProperties(n,{key:{value:e=>n.keys().then((t=>t&&t[e]))},getItem:{value:e=>n.get(e).then((e=>e&&e.value))},setItem:{value:(e,t)=>n.put({key:e,value:t})},removeItem:{value:e=>n.delete(e)}}),this.cache[e]=n,n},t.close=function(){return this.cache=null,this.stores=null,this.connect().then((e=>{e.close()}))},e.deleteDatabase=function(e){return new Promise(((t,n)=>{const r=indexedDB.deleteDatabase(e);r.onsuccess=()=>{t()},r.onerror=e=>{n(e)}}))},e.databases=function(){return indexedDB.databases()},e}();let s=function(){function e(e={}){const{store:t,db:n}=e;if("object"!=typeof t||!t.name||"string"!=typeof t.name)throw new Error("[InDBStore]: options.store should be a store config object.");if(!(n instanceof r))throw new Error("[InDBStore]: options.db should be an instanceof InDB.");this.db=n,this.store=t,this.name=t.name,this.primaryKeyPath=t.isKv?"key":t.primaryKeyPath,this._queue=[]}var t=e.prototype;return t.transaction=function(e=!1){const t=()=>{const t=this.name,n=e?"readwrite":"readonly",r=this.db.connection;return(r?Promise.resolve(r):this.db.connect()).then((e=>{this.db.connection=e;const r=e.transaction(t,n),s=()=>{this.db.connection=null,this._queue.shift()};return r.oncomplete=s,r.onabort=s,r.onerror=s,r}))},n=this._queue[this._queue.length-1],r=n?n.then((()=>t())):t();return this._queue.push(r),r},t.objectStore=function(e=!1){const t=this.name;return this.transaction(e).then((e=>e.objectStore(t)))},t.cursor=function(e){const{index:t,range:n,direction:r,onTouch:s,onDone:o,onError:u,writable:c=!1}=e;return this.objectStore(c).then((e=>{const c=t?e.index(t):e,a=c.openCursor(n,r);a.onsuccess=e=>{const t=e.target.result;t?s(t,c):o(t,c)},a.onerror=e=>{u(i(e))}}))},t.request=function(e,t={}){const{writable:n=!1}=t;return new Promise(((t,r)=>{this.objectStore(n).then((n=>{const s=e(n);s.onsuccess=e=>{const n=e.target.result;t(n)},s.onerror=e=>{r(i(e))}}))}))},t.iterate=function(e,t={}){const{index:n,range:r,writable:s=!1,direction:o="next"}=t;return new Promise(((t,i)=>{this.cursor({index:n,range:r,writable:s,direction:o,onTouch:(n,r)=>{e(n,(()=>n.continue()),(()=>{r.transaction.commit(),t()}))},onDone:()=>{t()},onError:e=>{i(e)}})}))},t.batch=function(e,t={}){const{writable:n=!0}=t;return this.transaction(n).then((t=>{const n=this.name,r=[],s=t.objectStore(n);return e.forEach((e=>{const t=new Promise(((t,n)=>{const r=e(s);r.onsuccess=e=>{const n=e.target.result;t(n)},r.onerror=e=>{n(i(e))}}));r.push(t)})),Promise.all(r)}))},t.get=function(e){if(!Array.isArray(e))return this.request((t=>t.get(e)));const t=e.map((e=>t=>t.get(e)));return this.batch(t,{writable:!1})},t.keys=function(){const e=this.primaryKeyPath,t=[];return this.each((n=>{const r=o(n,e);t.push(r)})).then((()=>t))},t.all=function(){const e=[];return this.each((t=>{e.push(t)})).then((()=>e))},t.count=function(){return this.request((e=>e.count()))},t.each=function(e){return this.iterate(((t,n)=>{const r=t.value;e(r),n()}))},t.reverse=function(e){return this.iterate(((t,n)=>{const r=t.value;e(r),n()}),{direction:"prev"})},t.some=function(e=10,t=0){return new Promise(((n,r)=>{const s=[];let o,i=0,u=t,c=t+e;t<0&&(o="prev",e=Math.min(e,-t),u=-(t+e)||0,c=u+e),this.iterate(((e,t,n)=>{i<u?(i++,t()):i<c?(s.push(e.value),i++,t()):n()}),{direction:o}).then((()=>{t<0&&s.reverse(),n(s)})).catch(r)}))},t.first=function(){return this.some(1).then((e=>e[0]))},t.last=function(){return this.some(1,-1).then((e=>e[0]))},t.find=function(e,t){return this.request((n=>n.index(e).get(t)))},t.query=function(e,t,n){const r=function(){switch(n){case">":return IDBKeyRange.lowerBound(t,!0);case">=":return IDBKeyRange.lowerBound(t);case"<":return IDBKeyRange.upperBound(t,!0);case"<=":return IDBKeyRange.upperBound(t);case"%":case"!=":case"in":return;default:return IDBKeyRange.only(t)}}(),s=[];return new Promise(((i,u)=>{this.cursor({index:e,range:r,onTouch:(e,r)=>{const i=e.value,u=o(i,r.keyPath);"!="===n?u!==t&&s.push(i):"%"===n?"string"==typeof u&&u.indexOf(t)>-1&&s.push(i):"in"===n?Array.isArray(t)&&t.indexOf(u)>-1&&s.push(i):s.push(i),e.continue()},onDone:()=>{i(s)},onError:e=>{u(e)}})}))},t.select=function(...e){const t=this.store.indexes||[],n={};t.forEach((e=>{const{name:t,keyPath:r}=e;n[t]=r}));const r=function(e,t,n){if(void 0===e)return!1;switch(n){case">":return e>t;case">=":return e>=t;case"<":return e<t;case"<=":return e<=t;case"!=":return e!==t;case"%":return"string"==typeof e&&e.indexOf(t)>-1;case"in":return Array.isArray(t)&&t.indexOf(e)>-1;default:return e===t}},s=function(e,t,n){if(!t.length&&!n.length)return!1;for(let n=0,s=t.length;n<s;n++){const{keyPath:s,value:i,compare:u}=t[n],c=o(e,s);if(!r(c,i,u))return!1}if(!n.length)return!0;for(let t=0,s=n.length;t<s;t++){const{keyPath:s,value:i,compare:u}=n[t],c=o(e,s);if(r(c,i,u))return!0}return!1},i=[];e.forEach((e=>{const t=[],r=[];for(let s=0,o=e.length;s<o;s++){const{key:o,value:i,compare:u,optional:c}=e[s],a=n[o]||o;c?t.push({keyPath:a,value:i,compare:u}):r.push({keyPath:a,value:i,compare:u})}i.push([r,t])}));const u=[];return this.each((e=>{(e=>{for(let t=0,n=i.length;t<n;t++){const[n,r]=i[t];if(s(e,n,r))return!0}return!1})(e)&&u.push(e)})).then((()=>u))},t.add=function(e,t){if(Array.isArray(e)){const n=e;if(n.length<2)return this.add(e[0],t);const r=n.map((e=>n=>n.add(e,t)));return this.batch(r)}return e?this.request((n=>n.add(e,t)),{writable:!0}):Promise.resolve()},t.put=function(e,t){if(Array.isArray(e)){const n=e;if(n.length<2)return this.put(n[0],t);const r=n.map((e=>n=>n.put(e,t)));return this.batch(r)}return e?this.request((n=>n.put(e,t)),{writable:!0}):Promise.resolve()},t.delete=function(e){if(Array.isArray(e)){const t=e;if(t.length<2)return this.delete(t[0]);const n=t.map((e=>t=>t.delete(e)));return this.batch(n)}return e?this.request((t=>t.delete(e)),{writable:!0}):Promise.resolve()},t.remove=function(e){const t=this.primaryKeyPath;if(Array.isArray(e)){const n=e;if(n.length<2)return this.remove(n[0]);const r=n.map((e=>{const n=o(e,t);return e=>e.delete(n)}));return this.batch(r)}if(!e)return Promise.resolve();const n=o(e,t);return n?this.delete(n):Promise.resolve()},t.clear=function(){return this.request((e=>e.clear()),{writable:!0})},e}();function o(e,t){if(null==t)return;if(Array.isArray(t)){for(let n=0,r=t.length;n<r;n++){const r=o(e,t[n]);if(void 0!==r)return r}return}let n=function(e){return e.toString().split(/\.|\[|\]/).filter((e=>!!e))}(t);if(!n.length)return e;let r=e;for(let e=0,t=n.length;e<t;e++){let t=n[e];if(void 0===r[t])return;r=r[t]}return r}function i(e){const{message:t}=e;return e.message=-1===t.indexOf("[IndexedDB]")?"[IndexedDB]: "+t:t,e}let u=function(){function e(e){this.anys=e}var t=e.prototype;return t.options=function(){return{namespace:new Error("[Anys]: options.namespace is required!"),autoReport:!1,expireTime:1728e5}},t.init=function(){const e="anyslogs",t=new r({name:this.anys.options.namespace,version:1,stores:[{name:e,primaryKeyPath:"_id",autoIncrement:!0}]});this.db=t.use(e),this.queue=new n;const{expireTime:s}=this.anys.options;if(s){let e=0;const t=setInterval((()=>{this.queue.push((()=>this.db.some(100,e))).then((n=>{if(!n.length)return void clearInterval(t);const r=Date.now(),o=[];n.forEach((e=>{const{_id:t,time:n}=e;r-n>s&&o.push(t)})),o.length&&this.queue.push((()=>this.db.delete(o))),e+=100,e-=o.length}))}),1e4)}},t.write=function(e){this.queue.push((()=>this.db.add(e))).then((t=>{this.anys.emit("writeOfflineLog",{id:t,data:e})}))},t.read=function(e){if(e){if(!Array.isArray(e))return;if(e.some((e=>!e.key)))return}else e=[{key:"client",value:this.anys.clientId},{key:"trace",value:this.anys.traceId}];return this.select(e)},t.clear=function(e){return this.queue.push((()=>this.db.remove(e))).catch((()=>{}))},t.select=function(e){return this.queue.push((()=>this.db.select(e)))},t.remove=function(e){return this.queue.push((()=>this.db.delete(e))).catch((()=>{}))},e}()})();var n=anys="undefined"==typeof anys?{}:anys;for(var r in t)n[r]=t[r];t.__esModule&&Object.defineProperty(n,"__esModule",{value:!0})})();
1
+ !function(){var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};!function(){"use strict";e.r(t),e.d(t,{AnysStoreOfflinePlugin:function(){return a}});class r{constructor(){this.queue=[],this.status=0}push(e){let t,r;const n=new Promise(((e,n)=>{t=e,r=n})),s={runner:e,resolve:t,reject:r};this.queue.push(s);const o=()=>{setTimeout((()=>{if(!this.queue.length)return void(this.status=0);const{runner:e,resolve:t,reject:r}=this.queue.shift();e().then(t,r).finally(o)}),0),this.status=1};return this.status||o(),n}}class n{constructor(e={}){let{name:t,version:r=1,stores:n}=e;const s=!t;t||(t="__indb__"),n&&Array.isArray(n)&&n.length||(n=[{name:"__indb__",isKv:!0}]),this.cache={},this.connection=null,this.name=t,this.version=r,this.stores=n;const o=indexedDB.open(t,r);if(o.onupgradeneeded=e=>{const t=e.target.result,r=Array.from(t.objectStoreNames),s=[];n.forEach((n=>{let o=null;if(r.indexOf(n.name)>-1)o=e.target.transaction.objectStore(n.name);else{const e=n.isKv?"key":n.primaryKeyPath,r=!n.isKv&&n.autoIncrement;o=t.createObjectStore(n.name,{keyPath:e,autoIncrement:r})}const i=o.indexNames;i&&i.length&&Array.from(i).forEach((e=>o.deleteIndex(e))),n.indexes&&n.indexes.length&&n.indexes.forEach((e=>{o.createIndex(e.name,e.keyPath||e.name,{unique:e.unique,multiEntry:Array.isArray(e.keyPath)})})),s.push(n.name)})),r&&r.forEach((e=>{-1===s.indexOf(e)&&t.deleteObjectStore(e)}))},o.onblocked=e=>{console.error(i(new Error("indexedDB "+t+" is blocked")))},s)return this.use(t)}connect(){return new Promise(((e,t)=>{const r=indexedDB.open(this.name,this.version);r.onerror=e=>{t(i(e))},r.onsuccess=t=>{e(t.target.result)}}))}use(e){const t=this.stores.find((t=>t.name===e));if(!t)throw new Error(`[InDB]: store ${e} is not existing.`);if(this.cache[e])return this.cache[e];const r=new s({db:this,store:t});return t.isKv&&Object.defineProperties(r,{key:{value:e=>r.keys().then((t=>t&&t[e]))},getItem:{value:e=>r.get(e).then((e=>e&&e.value))},setItem:{value:(e,t)=>r.put({key:e,value:t})},removeItem:{value:e=>r.delete(e)}}),this.cache[e]=r,r}close(){return this.cache=null,this.stores=null,this.connect().then((e=>{e.close()}))}static deleteDatabase(e){return new Promise(((t,r)=>{const n=indexedDB.deleteDatabase(e);n.onsuccess=()=>{t()},n.onerror=e=>{r(e)}}))}static databases(){return indexedDB.databases()}}class s{constructor(e={}){const{store:t,db:r}=e;if("object"!=typeof t||!t.name||"string"!=typeof t.name)throw new Error("[InDBStore]: options.store should be a store config object.");if(!(r instanceof n))throw new Error("[InDBStore]: options.db should be an instanceof InDB.");this.db=r,this.store=t,this.name=t.name,this.primaryKeyPath=t.isKv?"key":t.primaryKeyPath,this._queue=[]}transaction(e=!1){const t=()=>{const t=this.name,r=e?"readwrite":"readonly",n=this.db.connection;return(n?Promise.resolve(n):this.db.connect()).then((e=>{this.db.connection=e;const n=e.transaction(t,r),s=()=>{this.db.connection=null,this._queue.shift()};return n.oncomplete=s,n.onabort=s,n.onerror=s,n}))},r=this._queue[this._queue.length-1],n=r?r.then((()=>t())):t();return this._queue.push(n),n}objectStore(e=!1){const t=this.name;return this.transaction(e).then((e=>e.objectStore(t)))}cursor(e){const{index:t,range:r,direction:n,onTouch:s,onDone:o,onError:a,writable:u=!1}=e;return this.objectStore(u).then((e=>{const u=t?e.index(t):e,c=u.openCursor(r,n);c.onsuccess=e=>{const t=e.target.result;t?s(t,u):o(t,u)},c.onerror=e=>{a(i(e))}}))}request(e,t={}){const{writable:r=!1}=t;return new Promise(((t,n)=>{this.objectStore(r).then((r=>{const s=e(r);s.onsuccess=e=>{const r=e.target.result;t(r)},s.onerror=e=>{n(i(e))}}))}))}iterate(e,t={}){const{index:r,range:n,writable:s=!1,direction:o="next"}=t;return new Promise(((t,i)=>{this.cursor({index:r,range:n,writable:s,direction:o,onTouch:(r,n)=>{e(r,(()=>r.continue()),(()=>{n.transaction.commit(),t()}))},onDone:()=>{t()},onError:e=>{i(e)}})}))}batch(e,t={}){const{writable:r=!0}=t;return this.transaction(r).then((t=>{const r=this.name,n=[],s=t.objectStore(r);return e.forEach((e=>{const t=new Promise(((t,r)=>{const n=e(s);n.onsuccess=e=>{const r=e.target.result;t(r)},n.onerror=e=>{r(i(e))}}));n.push(t)})),Promise.all(n)}))}get(e){if(!Array.isArray(e))return this.request((t=>t.get(e)));const t=e.map((e=>t=>t.get(e)));return this.batch(t,{writable:!1})}keys(){const e=this.primaryKeyPath,t=[];return this.each((r=>{const n=o(r,e);t.push(n)})).then((()=>t))}all(){const e=[];return this.each((t=>{e.push(t)})).then((()=>e))}count(){return this.request((e=>e.count()))}each(e){return this.iterate(((t,r)=>{const n=t.value;e(n),r()}))}reverse(e){return this.iterate(((t,r)=>{const n=t.value;e(n),r()}),{direction:"prev"})}some(e=10,t=0){return new Promise(((r,n)=>{const s=[];let o,i=0,a=t,u=t+e;t<0&&(o="prev",e=Math.min(e,-t),a=-(t+e)||0,u=a+e),this.iterate(((e,t,r)=>{i<a?(i++,t()):i<u?(s.push(e.value),i++,t()):r()}),{direction:o}).then((()=>{t<0&&s.reverse(),r(s)})).catch(n)}))}first(){return this.some(1).then((e=>e[0]))}last(){return this.some(1,-1).then((e=>e[0]))}find(e,t){return this.request((r=>r.index(e).get(t)))}query(e,t,r){const n=function(){switch(r){case">":return IDBKeyRange.lowerBound(t,!0);case">=":return IDBKeyRange.lowerBound(t);case"<":return IDBKeyRange.upperBound(t,!0);case"<=":return IDBKeyRange.upperBound(t);case"%":case"!=":case"in":return;default:return IDBKeyRange.only(t)}}(),s=[];return new Promise(((i,a)=>{this.cursor({index:e,range:n,onTouch:(e,n)=>{const i=e.value,a=o(i,n.keyPath);"!="===r?a!==t&&s.push(i):"%"===r?"string"==typeof a&&a.indexOf(t)>-1&&s.push(i):"in"===r?Array.isArray(t)&&t.indexOf(a)>-1&&s.push(i):s.push(i),e.continue()},onDone:()=>{i(s)},onError:e=>{a(e)}})}))}select(...e){const t=this.store.indexes||[],r={};t.forEach((e=>{const{name:t,keyPath:n}=e;r[t]=n}));const n=function(e,t,r){if(void 0===e)return!1;switch(r){case">":return e>t;case">=":return e>=t;case"<":return e<t;case"<=":return e<=t;case"!=":return e!==t;case"%":return"string"==typeof e&&e.indexOf(t)>-1;case"in":return Array.isArray(t)&&t.indexOf(e)>-1;default:return e===t}},s=function(e,t,r){if(!t.length&&!r.length)return!1;for(let r=0,s=t.length;r<s;r++){const{keyPath:s,value:i,compare:a}=t[r],u=o(e,s);if(!n(u,i,a))return!1}if(!r.length)return!0;for(let t=0,s=r.length;t<s;t++){const{keyPath:s,value:i,compare:a}=r[t],u=o(e,s);if(n(u,i,a))return!0}return!1},i=[];e.forEach((e=>{const t=[],n=[];for(let s=0,o=e.length;s<o;s++){const{key:o,value:i,compare:a,optional:u}=e[s],c=r[o]||o;u?t.push({keyPath:c,value:i,compare:a}):n.push({keyPath:c,value:i,compare:a})}i.push([n,t])}));const a=[];return this.each((e=>{(e=>{for(let t=0,r=i.length;t<r;t++){const[r,n]=i[t];if(s(e,r,n))return!0}return!1})(e)&&a.push(e)})).then((()=>a))}add(e,t){if(Array.isArray(e)){const r=e;if(r.length<2)return this.add(e[0],t);const n=r.map((e=>r=>r.add(e,t)));return this.batch(n)}return e?this.request((r=>r.add(e,t)),{writable:!0}):Promise.resolve()}put(e,t){if(Array.isArray(e)){const r=e;if(r.length<2)return this.put(r[0],t);const n=r.map((e=>r=>r.put(e,t)));return this.batch(n)}return e?this.request((r=>r.put(e,t)),{writable:!0}):Promise.resolve()}delete(e){if(Array.isArray(e)){const t=e;if(t.length<2)return this.delete(t[0]);const r=t.map((e=>t=>t.delete(e)));return this.batch(r)}return e?this.request((t=>t.delete(e)),{writable:!0}):Promise.resolve()}remove(e){const t=this.primaryKeyPath;if(Array.isArray(e)){const r=e;if(r.length<2)return this.remove(r[0]);const n=r.map((e=>{const r=o(e,t);return e=>e.delete(r)}));return this.batch(n)}if(!e)return Promise.resolve();const r=o(e,t);return r?this.delete(r):Promise.resolve()}clear(){return this.request((e=>e.clear()),{writable:!0})}}function o(e,t){if(null==t)return;if(Array.isArray(t)){for(let r=0,n=t.length;r<n;r++){const n=o(e,t[r]);if(void 0!==n)return n}return}let r=function(e){return e.toString().split(/\.|\[|\]/).filter((e=>!!e))}(t);if(!r.length)return e;let n=e;for(let e=0,t=r.length;e<t;e++){let t=r[e];if(void 0===n[t])return;n=n[t]}return n}function i(e){const{message:t}=e;return e.message=-1===t.indexOf("[IndexedDB]")?"[IndexedDB]: "+t:t,e}class a{constructor(e){this.anys=e}options(){return{namespace:new Error("options.namespace is required!"),autoReport:!1,expireTime:1728e5}}init(){const e="anyslogs",t=new n({name:this.anys.options.namespace,version:1,stores:[{name:e,primaryKeyPath:"_id",autoIncrement:!0}]});this.db=t.use(e),this.queue=new r;const{expireTime:s}=this.anys.options;if(s){let e=0;const t=setInterval((()=>{this.queue.push((()=>this.db.some(100,e))).then((r=>{if(!r.length)return void clearInterval(t);const n=Date.now(),o=[];r.forEach((e=>{const{_id:t,time:r}=e;n-r>s&&o.push(t)})),o.length&&this.queue.push((()=>this.db.delete(o))),e+=100,e-=o.length}))}),1e4)}}write(e){this.queue.push((()=>this.db.add(e))).then((t=>{this.anys.emit("writeOfflineLog",{id:t,data:e})}))}read(e){if(e){if(!Array.isArray(e))return;if(e.some((e=>!e.key)))return}else e=[{key:"client",value:this.anys.clientId},{key:"trace",value:this.anys.traceId}];return this.select(e)}clear(e){return this.queue.push((()=>this.db.remove(e))).catch((()=>{}))}select(e){return this.queue.push((()=>this.db.select(e)))}remove(e){return this.queue.push((()=>this.db.delete(e))).catch((()=>{}))}}}();var r=anys="undefined"==typeof anys?{}:anys;for(var n in t)r[n]=t[n];t.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})}();
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","mappings":"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","sources":["webpack://anys/webpack/bootstrap","webpack://anys/webpack/runtime/define property getters","webpack://anys/webpack/runtime/hasOwnProperty shorthand","webpack://anys/webpack/runtime/make namespace object","webpack://anys/../@shared/src/async-queue.js","webpack://anys/./node_modules/indb/es/index.js","webpack://anys/./src/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export class AsyncQueue {\n constructor() {\n this.queue = [];\n this.status = 0;\n }\n\n push(runner) {\n let resolve; let\n reject;\n const defer = new Promise((rs, rj) => {\n resolve = rs;\n reject = rj;\n });\n const item = {\n runner,\n resolve,\n reject,\n };\n this.queue.push(item);\n\n const run = () => {\n setTimeout(() => {\n if (!this.queue.length) {\n this.status = 0;\n return;\n }\n\n const { runner: fn, resolve: rs, reject: rj } = this.queue.shift();\n fn().then(rs, rj).finally(run);\n }, 0);\n this.status = 1;\n };\n\n if (!this.status) {\n run();\n }\n\n return defer;\n }\n}\n","export class InDB {\n\t/**\n\t * InDB\n\t * @param {object} [options]\n\t * @param {string} [options.name] database name\n\t * @param {number} [options.version] database version\n\t * @param {object[]} [options.stores]\n\t * @param {string} [options.stores[].name] store name\n\t * @param {string} [options.stores[].primaryKeyPath] store primary keyPath\n\t * @param {boolean} [options.stores[].autoIncrement] is store primary keyPath autoIncrement, if true, primary key will be number\n\t * @param {boolean} [options.stores[].isKv] is store set to be Key-Value mode, if true, the store will have Storage methods, and `primaryKeyPath` `autoIncrement` not working\n\t * @param {object[]} [options.stores[].indexes]\n\t * @param {string} [options.stores[].indexes[].name] index name\n\t * @param {string} [options.stores[].indexes[].keyPath] index keyPath\n\t * @param {boolean} [options.stores[].indexes[].unique] should index value be unique\n\t * @returns\n\t */\n\tconstructor(options = {}) {\n\t\tlet { name, version = 1, stores } = options\n\t\tconst asStorage = !name\n\n\t\tif (!name) {\n\t\t\tname = '__indb__'\n\t\t}\n\n\t\tif (!stores || !Array.isArray(stores) || !stores.length) {\n\t\t\tstores = [\n\t\t\t\t{\n\t\t\t\t\tname: '__indb__',\n\t\t\t\t\tisKv: true,\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\tthis.cache = {}\n\t\tthis.connection = null\n\n\t\tthis.name = name\n\t\tthis.version = version\n\t\tthis.stores = stores\n\n\t\t// update database structure\n\t\tconst request = indexedDB.open(name, version)\n\t\trequest.onupgradeneeded = (e) => {\n\t\t\t// @ts-ignore\n\t\t\tconst db = e.target.result\n\t\t\tconst existStoreNames = Array.from(db.objectStoreNames)\n\t\t\tconst passStoreNames = []\n\n\t\t\tstores.forEach((item) => {\n\t\t\t\tlet objectStore = null\n\t\t\t\tif (existStoreNames.indexOf(item.name) > -1) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectStore = e.target.transaction.objectStore(item.name)\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst keyPath = item.isKv ? 'key' : item.primaryKeyPath\n\t\t\t\t\tconst autoIncrement = item.isKv ? false : item.autoIncrement\n\t\t\t\t\tobjectStore = db.createObjectStore(item.name, { keyPath, autoIncrement })\n\t\t\t\t}\n\n\t\t\t\t// delete old indexes\n\t\t\t\tconst indexNames = objectStore.indexNames\n\t\t\t\tif (indexNames && indexNames.length) {\n\t\t\t\t\tArray.from(indexNames).forEach((item) => objectStore.deleteIndex(item))\n\t\t\t\t}\n\n\t\t\t\t// add new indexes\n\t\t\t\tif (item.indexes && item.indexes.length) {\n\t\t\t\t\titem.indexes.forEach((item) => {\n\t\t\t\t\t\tobjectStore.createIndex(item.name, item.keyPath || item.name, { unique: item.unique, multiEntry: Array.isArray(item.keyPath) })\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tpassStoreNames.push(item.name)\n\t\t\t})\n\n\t\t\t// delete objectStores which is not in config information\n\t\t\t// notice, developers should backup data firstly\n\t\t\tif (existStoreNames) {\n\t\t\t\texistStoreNames.forEach((item) => {\n\t\t\t\t\tif (passStoreNames.indexOf(item) === -1) {\n\t\t\t\t\t\tdb.deleteObjectStore(item)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\trequest.onblocked = (e) => {\n\t\t\tconsole.error(modifyError(new Error('indexedDB ' + name + ' is blocked')))\n\t\t}\n\n\t\t// use as a storage like:\n\t\t// const store = new InDB()\n\t\t// store.setItem('key', 'value')\n\t\tif (asStorage) {\n\t\t\t// @ts-ignore\n\t\t\treturn this.use(name)\n\t\t}\n\t}\n\n\tconnect() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst request = indexedDB.open(this.name, this.version)\n\t\t\trequest.onerror = (e) => {\n\t\t\t\treject(modifyError(e))\n\t\t\t}\n\t\t\trequest.onsuccess = (e) => {\n\t\t\t\t// @ts-ignore\n\t\t\t\tresolve(e.target.result)\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @returns {InDBStore}\n\t */\n\tuse(name) {\n\t\tconst currentStore = this.stores.find(item => item.name === name)\n\n\t\tif (!currentStore) {\n\t\t\tthrow new Error(`[InDB]: store ${name} is not existing.`)\n\t\t}\n\n\t\t// use connected store\n\t\tif (this.cache[name]) {\n\t\t\treturn this.cache[name]\n\t\t}\n\n\t\tconst store = new InDBStore({\n\t\t\tdb: this,\n\t\t\tstore: currentStore,\n\t\t})\n\n\t\t// if it is a key-value store, append special methods\n\t\tif (currentStore.isKv) {\n\t\t\tObject.defineProperties(store, {\n\t\t\t\tkey: {\n\t\t\t\t\tvalue: i => store.keys().then(keys => keys && keys[i]),\n\t\t\t\t},\n\t\t\t\tgetItem: {\n\t\t\t\t\tvalue: key => store.get(key).then(obj => obj && obj.value),\n\t\t\t\t},\n\t\t\t\tsetItem: {\n\t\t\t\t\tvalue: (key, value) => store.put({ key, value }),\n\t\t\t\t},\n\t\t\t\tremoveItem: {\n\t\t\t\t\tvalue: key => store.delete(key),\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\n\t\tthis.cache[name] = store\n\n\t\treturn store\n\t}\n\n\tclose() {\n\t\tthis.cache = null\n\t\tthis.stores = null\n\n\t\treturn this.connect().then((db) => {\n\t\t\tdb.close()\n\t\t})\n\t}\n\n\tstatic deleteDatabase(name) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst request = indexedDB.deleteDatabase(name)\n\t\t\trequest.onsuccess = () => {\n\t\t\t\tresolve()\n\t\t\t}\n\t\t\trequest.onerror = (e) => {\n\t\t\t\treject(e)\n\t\t\t}\n\t\t})\n\t}\n\n\tstatic databases() {\n\t\treturn indexedDB.databases()\n\t}\n}\n\nexport default InDB\n\nclass InDBStore {\n\tconstructor(options = {}) {\n\t\tconst { store, db } = options\n\n\t\tif (typeof store !== 'object' || !store.name || typeof store.name !== 'string') {\n\t\t\tthrow new Error(`[InDBStore]: options.store should be a store config object.`)\n\t\t}\n\n\t\tif (!(db instanceof InDB)) {\n\t\t\tthrow new Error(`[InDBStore]: options.db should be an instanceof InDB.`)\n\t\t}\n\n\t\tthis.db = db\n\n\t\tthis.store = store\n\t\tthis.name = store.name\n\t\tthis.primaryKeyPath = store.isKv ? 'key' : store.primaryKeyPath\n\n\t\tthis._queue = []\n\t}\n\n\ttransaction(writable = false) {\n\t\tconst create = () => {\n\t\t\tconst name = this.name\n\t\t\tconst mode = writable ? 'readwrite' : 'readonly'\n\n\t\t\t// share the same connection\n\t\t\tconst connection = this.db.connection\n\t\t\tconst deferer = connection ? Promise.resolve(connection) : this.db.connect()\n\t\t\treturn deferer.then((db) => {\n\t\t\t\tthis.db.connection = db\n\t\t\t\tconst tx = db.transaction(name, mode)\n\t\t\t\tconst disconnect = () => {\n\t\t\t\t\tthis.db.connection = null\n\t\t\t\t\tthis._queue.shift()\n\t\t\t\t}\n\t\t\t\ttx.oncomplete = disconnect\n\t\t\t\ttx.onabort = disconnect\n\t\t\t\ttx.onerror = disconnect\n\t\t\t\treturn tx\n\t\t\t})\n\t\t}\n\n\t\tconst latest = this._queue[this._queue.length - 1]\n\t\tconst deferer = latest ? latest.then(() => create()) : create()\n\t\tthis._queue.push(deferer)\n\t\treturn deferer\n\t}\n\n\tobjectStore(writable = false) {\n\t\tconst name = this.name\n\t\treturn this.transaction(writable).then(tx => tx.objectStore(name))\n\t}\n\n\tcursor(options) {\n\t\tconst { index, range, direction, onTouch, onDone, onError, writable = false } = options\n\t\treturn this.objectStore(writable).then((objectStore) => {\n\t\t\tconst owner = index ? objectStore.index(index) : objectStore\n\t\t\tconst request = owner.openCursor(range, direction)\n\t\t\trequest.onsuccess = (e) => {\n\t\t\t\tconst cursor = e.target.result\n\t\t\t\tif (cursor) {\n\t\t\t\t\tonTouch(cursor, owner)\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tonDone(cursor, owner)\n\t\t\t\t}\n\t\t\t}\n\t\t\trequest.onerror = (e) => {\n\t\t\t\tonError(modifyError(e))\n\t\t\t}\n\t\t})\n\t}\n\n\trequest(fn, options = {}) {\n\t\tconst { writable = false } = options\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.objectStore(writable).then((objectStore) => {\n\t\t\t\tconst request = fn(objectStore)\n\t\t\t\trequest.onsuccess = (e) => {\n\t\t\t\t\tconst result = e.target.result\n\t\t\t\t\tresolve(result)\n\t\t\t\t}\n\t\t\t\trequest.onerror = (e) => {\n\t\t\t\t\treject(modifyError(e))\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\titerate(fn, options = {}) {\n\t\tconst { index, range, writable = false, direction = 'next' } = options\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.cursor({\n\t\t\t\tindex,\n\t\t\t\trange,\n\t\t\t\twritable,\n\t\t\t\tdirection,\n\t\t\t\tonTouch: (cursor, owner) => {\n\t\t\t\t\tconst next = () => cursor.continue()\n\t\t\t\t\tconst stop = () => {\n\t\t\t\t\t\t// should commit when writable is true\n\t\t\t\t\t\towner.transaction.commit()\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t}\n\t\t\t\t\tfn(cursor, next, stop)\n\t\t\t\t},\n\t\t\t\tonDone: () => {\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t\tonError: (e) => {\n\t\t\t\t\treject(e)\n\t\t\t\t},\n\t\t\t})\n\t\t})\n\t}\n\n\tbatch(fns, options = {}) {\n\t\tconst { writable = true } = options\n\t\treturn this.transaction(writable).then((tx) => {\n\t\t\tconst name = this.name\n\t\t\tconst promises = []\n\t\t\tconst objectStore = tx.objectStore(name)\n\t\t\tfns.forEach((fn) => {\n\t\t\t\tconst deferer = new Promise((resolve, reject) => {\n\t\t\t\t\tconst request = fn(objectStore)\n\t\t\t\t\trequest.onsuccess = (e) => {\n\t\t\t\t\t\tconst result = e.target.result\n\t\t\t\t\t\tresolve(result)\n\t\t\t\t\t}\n\t\t\t\t\trequest.onerror = (e) => {\n\t\t\t\t\t\treject(modifyError(e))\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tpromises.push(deferer)\n\t\t\t})\n\t\t\treturn Promise.all(promises)\n\t\t})\n\t}\n\n\t// ==========================================\n\n\t/**\n\t *\n\t * @param {string} key\n\t * @returns\n\t */\n\tget(key) {\n\t\t// single key\n\t\tif (!Array.isArray(key)) {\n\t\t\treturn this.request(objectStore => objectStore.get(key))\n\t\t}\n\n\t\t// multiple keys\n\t\tconst keys = key\n\t\tconst fns = keys.map(key => objectStore => objectStore.get(key))\n\t\treturn this.batch(fns, { writable: false })\n\t}\n\n\tkeys() {\n\t\tconst keyPath = this.primaryKeyPath\n\t\tconst results = []\n\t\treturn this.each((obj) => {\n\t\t\tconst key = parse(obj, keyPath)\n\t\t\tresults.push(key)\n\t\t}).then(() => {\n\t\t\treturn results\n\t\t})\n\t}\n\n\tall() {\n\t\tconst results = []\n\t\treturn this.each((obj) => {\n\t\t\tresults.push(obj)\n\t\t}).then(() => {\n\t\t\treturn results\n\t\t})\n\t}\n\n\tcount() {\n\t\treturn this.request(objectStore => objectStore.count())\n\t}\n\n\t// ==========================================\n\n\teach(fn) {\n\t\treturn this.iterate((cursor, next) => {\n\t\t\tconst obj = cursor.value\n\t\t\tfn(obj)\n\t\t\tnext()\n\t\t})\n\t}\n\n\treverse(fn) {\n\t\treturn this.iterate((cursor, next) => {\n\t\t\tconst obj = cursor.value\n\t\t\tfn(obj)\n\t\t\tnext()\n\t\t}, { direction: 'prev' })\n\t}\n\n\tsome(count = 10, offset = 0) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst results = []\n\t\t\tlet i = 0\n\t\t\tlet start = offset\n\t\t\tlet end = offset + count\n\t\t\tlet direction\n\n\t\t\t// offset < 0, means begining from the latest item,\n\t\t\t// for example, offset = -1, means begining from the last item\n\t\t\tif (offset < 0) {\n\t\t\t\tdirection = 'prev'\n\t\t\t\tcount = Math.min(count, -offset)\n\t\t\t\tstart = -(offset + count) || 0\n\t\t\t\tend = start + count\n\t\t\t}\n\n\t\t\tthis.iterate((cursor, next, stop) => {\n\t\t\t\tif (i < start) {\n\t\t\t\t\ti ++\n\t\t\t\t\tnext()\n\t\t\t\t}\n\t\t\t\telse if (i < end) {\n\t\t\t\t\tresults.push(cursor.value)\n\t\t\t\t\ti ++\n\t\t\t\t\tnext()\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tstop()\n\t\t\t\t}\n\t\t\t}, { direction }).then(() => {\n\t\t\t\tif (offset < 0) {\n\t\t\t\t\tresults.reverse()\n\t\t\t\t}\n\t\t\t\tresolve(results)\n\t\t\t}).catch(reject)\n\t\t})\n\t}\n\n\tfirst() {\n\t\treturn this.some(1).then(items => items[0])\n\t}\n\n\tlast() {\n\t\treturn this.some(1, -1).then(items => items[0])\n\t}\n\n\t// =========================\n\n\t/**\n\t * find a record with given index\n\t * @param {string} key index name\n\t * @param {*} value\n\t * @returns\n\t */\n\tfind(key, value) {\n\t\treturn this.request(objectStore => objectStore.index(key).get(value))\n\t}\n\t/**\n\t * query several records with given index and compare condition\n\t * @param {string} key index name\n\t * @param {*} value\n\t * @param {string} [compare]\n\t * @returns\n\t */\n\tquery(key, value, compare) {\n\t\tconst range = (function() {\n\t\t\tswitch (compare) {\n\t\t\t\tcase '>':\n\t\t\t\t\treturn IDBKeyRange.lowerBound(value, true)\n\t\t\t\tcase '>=':\n\t\t\t\t\treturn IDBKeyRange.lowerBound(value)\n\t\t\t\tcase '<':\n\t\t\t\t\treturn IDBKeyRange.upperBound(value, true)\n\t\t\t\tcase '<=':\n\t\t\t\t\treturn IDBKeyRange.upperBound(value)\n\t\t\t\tcase '%':\n\t\t\t\tcase '!=':\n\t\t\t\tcase 'in':\n\t\t\t\t\treturn undefined\n\t\t\t\tdefault:\n\t\t\t\t\treturn IDBKeyRange.only(value)\n\t\t\t}\n\t\t}())\n\n\t\tconst results = []\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.cursor({\n\t\t\t\tindex: key,\n\t\t\t\trange,\n\t\t\t\tonTouch: (cursor, owner) => {\n\t\t\t\t\tconst targetObj = cursor.value\n\t\t\t\t\tconst keyPath = owner.keyPath\n\t\t\t\t\tconst targetValue = parse(targetObj, keyPath)\n\n\t\t\t\t\tif (compare === '!=') {\n\t\t\t\t\t\tif (targetValue !== value) {\n\t\t\t\t\t\t\tresults.push(targetObj)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (compare === '%') {\n\t\t\t\t\t\tif (typeof targetValue == 'string' && targetValue.indexOf(value) > -1) {\n\t\t\t\t\t\t\tresults.push(targetObj)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (compare === 'in') {\n\t\t\t\t\t\tif (Array.isArray(value) && value.indexOf(targetValue) > -1) {\n\t\t\t\t\t\t\tresults.push(targetObj)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresults.push(targetObj)\n\t\t\t\t\t}\n\n\t\t\t\t\tcursor.continue()\n\t\t\t\t},\n\t\t\t\tonDone: () => {\n\t\t\t\t\tresolve(results)\n\t\t\t\t},\n\t\t\t\tonError: (e) => {\n\t\t\t\t\treject(e)\n\t\t\t\t},\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * query several records with conditions,\n\t * notice that, it works with iterator not with index.\n\t * @param {...object[]} rules\n\t * @param {string} rules[][].key index name or any keyPath.\n\t * @param {*} rules[][].value\n\t * @param {string=} rules[][].compare\n\t * @param {boolean=} rules[][].optional whether this condition is optional\n\t * @returns\n\t */\n\tselect(...rules) {\n\t\tconst currentStore = this.store\n\t\tconst indexes = currentStore.indexes || []\n\t\tconst indexesMapping = {}\n\t\tindexes.forEach((item) => {\n\t\t\tconst { name, keyPath } = item\n\t\t\tindexesMapping[name] = keyPath\n\t\t})\n\n\t\tconst compareAandB = function(a, b, compare) {\n\t\t\tif (a === undefined) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tswitch (compare) {\n\t\t\t\tcase '>':\n\t\t\t\t\treturn a > b\n\t\t\t\tcase '>=':\n\t\t\t\t\treturn a >= b\n\t\t\t\tcase '<':\n\t\t\t\t\treturn a < b\n\t\t\t\tcase '<=':\n\t\t\t\t\treturn a <= b\n\t\t\t\tcase '!=':\n\t\t\t\t\treturn a !== b\n\t\t\t\tcase '%':\n\t\t\t\t\treturn typeof a === 'string' && a.indexOf(b) > -1\n\t\t\t\tcase 'in':\n\t\t\t\t\treturn Array.isArray(b) && b.indexOf(a) > -1\n\t\t\t\tdefault:\n\t\t\t\t\treturn a === b\n\t\t\t}\n\t\t}\n\n\t\tconst determine = function(obj, and_conditions, or_conditions) {\n\t\t\tif (!and_conditions.length && !or_conditions.length) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tfor (let i = 0, len = and_conditions.length; i < len; i ++) {\n\t\t\t\tconst { keyPath, value, compare } = and_conditions[i]\n\t\t\t\tconst current = parse(obj, keyPath)\n\t\t\t\tif (!compareAandB(current, value, compare)) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!or_conditions.length) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tfor (let i = 0, len = or_conditions.length; i < len; i ++) {\n\t\t\t\tconst { keyPath, value, compare } = or_conditions[i]\n\t\t\t\tconst current = parse(obj, keyPath)\n\t\t\t\tif (compareAandB(current, value, compare)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\n\t\tconst groups = []\n\t\trules.forEach((conditions) => {\n\t\t\tconst or_conditions = []\n\t\t\tconst and_conditions = []\n\t\t\tfor (let i = 0, len = conditions.length; i < len; i ++) {\n\t\t\t\tconst { key, value, compare, optional } = conditions[i]\n\t\t\t\tconst keyPath = indexesMapping[key] || key // if there is not such index, use original key as keyPath\n\t\t\t\tif (optional) {\n\t\t\t\t\tor_conditions.push({ keyPath, value, compare })\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tand_conditions.push({ keyPath, value, compare })\n\t\t\t\t}\n\t\t\t}\n\t\t\tgroups.push([and_conditions, or_conditions])\n\t\t})\n\n\t\tconst isOk = (obj) => {\n\t\t\tfor (let i = 0, len = groups.length; i < len; i ++) {\n\t\t\t\tconst [and_conditions, or_conditions] = groups[i]\n\t\t\t\tconst res = determine(obj, and_conditions, or_conditions)\n\t\t\t\tif (res) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\n\t\tconst results = []\n\t\treturn this.each((obj) => {\n\t\t\tif (isOk(obj)) {\n\t\t\t\tresults.push(obj)\n\t\t\t}\n\t\t}).then(() => {\n\t\t\treturn results\n\t\t})\n\t}\n\n\t// =====================================\n\n\t/**\n\t * add a record into store\n\t * @param {*} obj\n\t * @param {string} [key]\n\t * @returns\n\t */\n\tadd(obj, key) {\n\t\tif (Array.isArray(obj)) {\n\t\t\tconst objs = obj\n\t\t\tif (objs.length < 2) {\n\t\t\t\treturn this.add(obj[0], key)\n\t\t\t}\n\n\t\t\tconst fns = objs.map(obj => objectStore => objectStore.add(obj, key))\n\t\t\treturn this.batch(fns)\n\t\t}\n\n\t\tif (!obj) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\n\t\treturn this.request(objectStore => objectStore.add(obj, key), { writable: true })\n\t}\n\n\t/**\n\t *\n\t * @param {*} obj\n\t * @param {string} [key] if not pass, primaryKey will read from obj\n\t * @returns\n\t */\n\tput(obj, key) {\n\t\tif (Array.isArray(obj)) {\n\t\t\tconst objs = obj\n\t\t\tif (objs.length < 2) {\n\t\t\t\treturn this.put(objs[0], key)\n\t\t\t}\n\n\t\t\tconst fns = objs.map(obj => objectStore => objectStore.put(obj, key))\n\t\t\treturn this.batch(fns)\n\t\t}\n\n\t\tif (!obj) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\n\t\treturn this.request(objectStore => objectStore.put(obj, key), { writable: true })\n\t}\n\n\tdelete(key) {\n\t\tif (Array.isArray(key)) {\n\t\t\tconst keys = key\n\t\t\tif (keys.length < 2) {\n\t\t\t\treturn this.delete(keys[0])\n\t\t\t}\n\n\t\t\tconst fns = keys.map(key => objectStore => objectStore.delete(key))\n\t\t\treturn this.batch(fns)\n\t\t}\n\n\t\tif (!key) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\n\t\treturn this.request(objectStore => objectStore.delete(key), { writable: true })\n\t}\n\n\tremove(obj) {\n\t\tconst keyPath = this.primaryKeyPath\n\n\t\tif (Array.isArray(obj)) {\n\t\t\tconst objs = obj\n\t\t\tif (objs.length < 2) {\n\t\t\t\treturn this.remove(objs[0])\n\t\t\t}\n\n\t\t\tconst fns = objs.map(obj => {\n\t\t\t\tconst key = parse(obj, keyPath)\n\t\t\t\treturn objectStore => objectStore.delete(key)\n\t\t\t})\n\t\t\treturn this.batch(fns)\n\t\t}\n\n\t\tif (!obj) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\n\t\tconst key = parse(obj, keyPath)\n\t\tif (!key) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\n\t\treturn this.delete(key)\n\t}\n\n\tclear() {\n\t\treturn this.request(objectStore => objectStore.clear(), { writable: true })\n\t}\n}\n\nfunction makeKeyChain(path) {\n\tlet chain = path.toString().split(/\\.|\\[|\\]/).filter(item => !!item)\n\treturn chain\n}\n\nfunction parse(obj, path) {\n\tif (typeof path === 'undefined' || path === null) {\n\t return;\n\t}\n\n\tif (Array.isArray(path)) {\n\t for (let i = 0, len = path.length; i < len; i ++) {\n\t\tconst item = path[i]\n\t\tconst res = parse(obj, item)\n\t\tif (res !== undefined) {\n\t\t return res\n\t\t}\n\t }\n\t return\n\t}\n\n\tlet chain = makeKeyChain(path)\n\n\tif (!chain.length) {\n\t return obj\n\t}\n\n\tlet target = obj\n\tfor (let i = 0, len = chain.length; i < len; i ++) {\n\t let key = chain[i]\n\t if (target[key] === undefined) {\n\t\treturn\n\t }\n\t target = target[key]\n\t}\n\treturn target\n}\n\nfunction modifyError(e) {\n\tconst { message } = e\n\te.message = message.indexOf('[IndexedDB]') === -1 ? '[IndexedDB]: ' + message : message\n\treturn e\n}\n","import { AsyncQueue } from 'anys-shared';\nimport { InDB } from 'indb/es/index.js';\n\nexport class AnysStoreOfflinePlugin {\n constructor(anys) {\n this.anys = anys;\n }\n\n options() {\n return {\n namespace: new Error('[Anys]: options.namespace is required!'),\n /**\n * offline log will close autoReport as default,\n * developers should must invoke anys.send to send logs to server side during\n * which should use this.[offlineLogger].select to pick logs,\n * and this.[offlineLogger].remove to clear logs\n */\n autoReport: false,\n /**\n * a offline log will be delete after how long time,\n * default 2 day (48 hours)\n */\n expireTime: 3600000 * 48,\n };\n }\n\n init() {\n const storeName = 'anyslogs';\n const idb = new InDB({\n name: this.anys.options.namespace,\n version: 1,\n stores: [\n {\n name: storeName,\n primaryKeyPath: '_id',\n autoIncrement: true,\n },\n ],\n });\n this.db = idb.use(storeName);\n this.queue = new AsyncQueue();\n\n /**\n * clear logs which should be delete from db\n */\n const { expireTime } = this.anys.options;\n if (expireTime) {\n let offset = 0;\n const timer = setInterval(() => {\n this.queue\n .push(() => this.db.some(100, offset))\n .then((logs) => {\n if (!logs.length) {\n // @ts-ignore\n clearInterval(timer);\n return;\n }\n const curr = Date.now();\n const ids = [];\n logs.forEach((log) => {\n const { _id, time } = log;\n if (curr - time > expireTime) {\n ids.push(_id);\n }\n });\n if (ids.length) {\n this.queue.push(() => this.db.delete(ids));\n }\n offset += 100;\n offset -= ids.length;\n });\n }, 10000);\n }\n }\n\n write(data) {\n this.queue\n .push(() => this.db.add(data))\n .then((id) => {\n this.anys.emit('writeOfflineLog', { id, data });\n });\n }\n\n /**\n * select records from db\n * anys.report([\n * { key: 'time', value: Date.now() - 3600000, compare: '>' },\n * { key: 'trace', value: 'xxx' },\n * ]);\n * https://github.com/tangshuang/indb#select\n * @param {Array} message\n * @returns\n */\n read(message) {\n if (!message) {\n message = [\n { key: 'client', value: this.anys.clientId },\n { key: 'trace', value: this.anys.traceId },\n ];\n }\n else if (!Array.isArray(message)) {\n return;\n }\n else if (message.some(item => !item.key)) {\n return;\n }\n return this.select(message);\n }\n\n clear(logs) {\n return this.queue.push(() => this.db.remove(logs)).catch(() => {});\n }\n\n /**\n * select records from db\n * https://github.com/tangshuang/indb#select\n * @param {Array} conditions\n * @returns\n */\n select(conditions) {\n return this.queue.push(() => this.db.select(conditions));\n }\n\n /**\n * delete records from db\n * @param {number|Array<number>} ids\n * @returns\n */\n remove(ids) {\n return this.queue.push(() => this.db.delete(ids)).catch(() => {});\n }\n}\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","AsyncQueue","this","queue","status","push","runner","resolve","reject","defer","Promise","rs","rj","item","run","setTimeout","length","fn","shift","then","finally","InDB","options","name","version","stores","asStorage","Array","isArray","isKv","cache","connection","request","indexedDB","open","onupgradeneeded","e","db","target","result","existStoreNames","from","objectStoreNames","passStoreNames","forEach","objectStore","indexOf","transaction","keyPath","primaryKeyPath","autoIncrement","createObjectStore","indexNames","deleteIndex","indexes","createIndex","unique","multiEntry","deleteObjectStore","onblocked","console","error","modifyError","Error","use","_proto","connect","onerror","onsuccess","currentStore","find","store","InDBStore","defineProperties","i","keys","getItem","setItem","put","removeItem","delete","close","deleteDatabase","databases","_queue","_proto2","writable","create","mode","tx","disconnect","oncomplete","onabort","latest","deferer","cursor","index","range","direction","onTouch","onDone","onError","owner","openCursor","iterate","next","continue","stop","commit","batch","fns","promises","all","map","results","each","parse","count","reverse","some","offset","start","end","Math","min","catch","first","items","last","query","compare","IDBKeyRange","lowerBound","upperBound","only","targetObj","targetValue","select","rules","indexesMapping","compareAandB","a","b","undefined","determine","and_conditions","or_conditions","len","current","groups","conditions","optional","isOk","add","objs","remove","clear","path","res","chain","toString","split","filter","makeKeyChain","message","AnysStoreOfflinePlugin","anys","namespace","autoReport","expireTime","init","storeName","idb","timer","setInterval","logs","clearInterval","curr","Date","now","ids","log","_id","time","write","data","id","emit","read","clientId","traceId"],"sourceRoot":""}
1
+ {"version":3,"file":"index.js","mappings":"YACA,IAAIA,EAAsB,CCA1BA,EAAwB,SAASC,EAASC,GACzC,IAAI,IAAIC,KAAOD,EACXF,EAAoBI,EAAEF,EAAYC,KAASH,EAAoBI,EAAEH,EAASE,IAC5EE,OAAOC,eAAeL,EAASE,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAG3E,ECPAH,EAAwB,SAASS,EAAKC,GAAQ,OAAOL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,EAAO,ECCtGV,EAAwB,SAASC,GACX,oBAAXa,QAA0BA,OAAOC,aAC1CV,OAAOC,eAAeL,EAASa,OAAOC,YAAa,CAAEC,MAAO,WAE7DX,OAAOC,eAAeL,EAAS,aAAc,CAAEe,OAAO,GACvD,G,0FCNO,MAAMC,EACTC,WAAAA,GACIC,KAAKC,MAAQ,GACbD,KAAKE,OAAS,CAClB,CAEAC,IAAAA,CAAKC,GACD,IAAIC,EACAC,EACJ,MAAMC,EAAQ,IAAIC,SAAQ,CAACC,EAAIC,KAC3BL,EAAUI,EACVH,EAASI,CAAE,IAETC,EAAO,CACTP,SACAC,UACAC,UAEJN,KAAKC,MAAME,KAAKQ,GAEhB,MAAMC,EAAMA,KACRC,YAAW,KACP,IAAKb,KAAKC,MAAMa,OAEZ,YADAd,KAAKE,OAAS,GAIlB,MAAQE,OAAQW,EAAIV,QAASI,EAAIH,OAAQI,GAAOV,KAAKC,MAAMe,QAC3DD,IAAKE,KAAKR,EAAIC,GAAIQ,QAAQN,EAAI,GAC/B,GACHZ,KAAKE,OAAS,CAAC,EAOnB,OAJKF,KAAKE,QACNU,IAGGL,CACX,ECtCG,MAAMY,EAiBZpB,WAAAA,CAAYqB,EAAU,CAAC,GACtB,IAAI,KAAEC,EAAI,QAAEC,EAAU,EAAC,OAAEC,GAAWH,EACpC,MAAMI,GAAaH,EAEdA,IACJA,EAAO,YAGHE,GAAWE,MAAMC,QAAQH,IAAYA,EAAOT,SAChDS,EAAS,CACR,CACCF,KAAM,WACNM,MAAM,KAKT3B,KAAK4B,MAAQ,CAAC,EACd5B,KAAK6B,WAAa,KAElB7B,KAAKqB,KAAOA,EACZrB,KAAKsB,QAAUA,EACftB,KAAKuB,OAASA,EAGd,MAAMO,EAAUC,UAAUC,KAAKX,EAAMC,GAoDrC,GAnDAQ,EAAQG,gBAAmBC,IAE1B,MAAMC,EAAKD,EAAEE,OAAOC,OACdC,EAAkBb,MAAMc,KAAKJ,EAAGK,kBAChCC,EAAiB,GAEvBlB,EAAOmB,SAAS/B,IACf,IAAIgC,EAAc,KAClB,GAAIL,EAAgBM,QAAQjC,EAAKU,OAAS,EAEzCsB,EAAcT,EAAEE,OAAOS,YAAYF,YAAYhC,EAAKU,UAEhD,CACJ,MAAMyB,EAAUnC,EAAKgB,KAAO,MAAQhB,EAAKoC,eACnCC,GAAgBrC,EAAKgB,MAAehB,EAAKqC,cAC/CL,EAAcR,EAAGc,kBAAkBtC,EAAKU,KAAM,CAAEyB,UAASE,iBAC1D,CAGA,MAAME,EAAaP,EAAYO,WAC3BA,GAAcA,EAAWpC,QAC5BW,MAAMc,KAAKW,GAAYR,SAAS/B,GAASgC,EAAYQ,YAAYxC,KAI9DA,EAAKyC,SAAWzC,EAAKyC,QAAQtC,QAChCH,EAAKyC,QAAQV,SAAS/B,IACrBgC,EAAYU,YAAY1C,EAAKU,KAAMV,EAAKmC,SAAWnC,EAAKU,KAAM,CAAEiC,OAAQ3C,EAAK2C,OAAQC,WAAY9B,MAAMC,QAAQf,EAAKmC,UAAW,IAIjIL,EAAetC,KAAKQ,EAAKU,KAAK,IAK3BiB,GACHA,EAAgBI,SAAS/B,KACc,IAAlC8B,EAAeG,QAAQjC,IAC1BwB,EAAGqB,kBAAkB7C,EACtB,GAEF,EAEDmB,EAAQ2B,UAAavB,IACpBwB,QAAQC,MAAMC,EAAY,IAAIC,MAAM,aAAexC,EAAO,gBAAgB,EAMvEG,EAEH,OAAOxB,KAAK8D,IAAIzC,EAElB,CAEA0C,OAAAA,GACC,OAAO,IAAIvD,SAAQ,CAACH,EAASC,KAC5B,MAAMwB,EAAUC,UAAUC,KAAKhC,KAAKqB,KAAMrB,KAAKsB,SAC/CQ,EAAQkC,QAAW9B,IAClB5B,EAAOsD,EAAY1B,GAAG,EAEvBJ,EAAQmC,UAAa/B,IAEpB7B,EAAQ6B,EAAEE,OAAOC,OAAO,CACxB,GAEH,CAOAyB,GAAAA,CAAIzC,GACH,MAAM6C,EAAelE,KAAKuB,OAAO4C,MAAKxD,GAAQA,EAAKU,OAASA,IAE5D,IAAK6C,EACJ,MAAM,IAAIL,MAAO,iBAAgBxC,sBAIlC,GAAIrB,KAAK4B,MAAMP,GACd,OAAOrB,KAAK4B,MAAMP,GAGnB,MAAM+C,EAAQ,IAAIC,EAAU,CAC3BlC,GAAInC,KACJoE,MAAOF,IAuBR,OAnBIA,EAAavC,MAChBzC,OAAOoF,iBAAiBF,EAAO,CAC9BpF,IAAK,CACJa,MAAO0E,GAAKH,EAAMI,OAAOvD,MAAKuD,GAAQA,GAAQA,EAAKD,MAEpDE,QAAS,CACR5E,MAAOb,GAAOoF,EAAM/E,IAAIL,GAAKiC,MAAK3B,GAAOA,GAAOA,EAAIO,SAErD6E,QAAS,CACR7E,MAAOA,CAACb,EAAKa,IAAUuE,EAAMO,IAAI,CAAE3F,MAAKa,WAEzC+E,WAAY,CACX/E,MAAOb,GAAOoF,EAAMS,OAAO7F,MAK9BgB,KAAK4B,MAAMP,GAAQ+C,EAEZA,CACR,CAEAU,KAAAA,GAIC,OAHA9E,KAAK4B,MAAQ,KACb5B,KAAKuB,OAAS,KAEPvB,KAAK+D,UAAU9C,MAAMkB,IAC3BA,EAAG2C,OAAO,GAEZ,CAEA,qBAAOC,CAAe1D,GACrB,OAAO,IAAIb,SAAQ,CAACH,EAASC,KAC5B,MAAMwB,EAAUC,UAAUgD,eAAe1D,GACzCS,EAAQmC,UAAY,KACnB5D,GAAS,EAEVyB,EAAQkC,QAAW9B,IAClB5B,EAAO4B,EAAE,CACT,GAEH,CAEA,gBAAO8C,GACN,OAAOjD,UAAUiD,WAClB,EAKD,MAAMX,EACLtE,WAAAA,CAAYqB,EAAU,CAAC,GACtB,MAAM,MAAEgD,EAAK,GAAEjC,GAAOf,EAEtB,GAAqB,iBAAVgD,IAAuBA,EAAM/C,MAA8B,iBAAf+C,EAAM/C,KAC5D,MAAM,IAAIwC,MAAO,+DAGlB,KAAM1B,aAAchB,GACnB,MAAM,IAAI0C,MAAO,yDAGlB7D,KAAKmC,GAAKA,EAEVnC,KAAKoE,MAAQA,EACbpE,KAAKqB,KAAO+C,EAAM/C,KAClBrB,KAAK+C,eAAiBqB,EAAMzC,KAAO,MAAQyC,EAAMrB,eAEjD/C,KAAKiF,OAAS,EACf,CAEApC,WAAAA,CAAYqC,GAAW,GACtB,MAAMC,EAASA,KACd,MAAM9D,EAAOrB,KAAKqB,KACZ+D,EAAOF,EAAW,YAAc,WAGhCrD,EAAa7B,KAAKmC,GAAGN,WAE3B,OADgBA,EAAarB,QAAQH,QAAQwB,GAAc7B,KAAKmC,GAAG4B,WACpD9C,MAAMkB,IACpBnC,KAAKmC,GAAGN,WAAaM,EACrB,MAAMkD,EAAKlD,EAAGU,YAAYxB,EAAM+D,GAC1BE,EAAaA,KAClBtF,KAAKmC,GAAGN,WAAa,KACrB7B,KAAKiF,OAAOjE,OAAO,EAKpB,OAHAqE,EAAGE,WAAaD,EAChBD,EAAGG,QAAUF,EACbD,EAAGrB,QAAUsB,EACND,CAAE,GACR,EAGGI,EAASzF,KAAKiF,OAAOjF,KAAKiF,OAAOnE,OAAS,GAC1C4E,EAAUD,EAASA,EAAOxE,MAAK,IAAMkE,MAAYA,IAEvD,OADAnF,KAAKiF,OAAO9E,KAAKuF,GACVA,CACR,CAEA/C,WAAAA,CAAYuC,GAAW,GACtB,MAAM7D,EAAOrB,KAAKqB,KAClB,OAAOrB,KAAK6C,YAAYqC,GAAUjE,MAAKoE,GAAMA,EAAG1C,YAAYtB,IAC7D,CAEAsE,MAAAA,CAAOvE,GACN,MAAM,MAAEwE,EAAK,MAAEC,EAAK,UAAEC,EAAS,QAAEC,EAAO,OAAEC,EAAM,QAAEC,EAAO,SAAEf,GAAW,GAAU9D,EAChF,OAAOpB,KAAK2C,YAAYuC,GAAUjE,MAAM0B,IACvC,MAAMuD,EAAQN,EAAQjD,EAAYiD,MAAMA,GAASjD,EAC3Cb,EAAUoE,EAAMC,WAAWN,EAAOC,GACxChE,EAAQmC,UAAa/B,IACpB,MAAMyD,EAASzD,EAAEE,OAAOC,OACpBsD,EACHI,EAAQJ,EAAQO,GAGhBF,EAAOL,EAAQO,EAChB,EAEDpE,EAAQkC,QAAW9B,IAClB+D,EAAQrC,EAAY1B,GAAG,CACvB,GAEH,CAEAJ,OAAAA,CAAQf,EAAIK,EAAU,CAAC,GACtB,MAAM,SAAE8D,GAAW,GAAU9D,EAC7B,OAAO,IAAIZ,SAAQ,CAACH,EAASC,KAC5BN,KAAK2C,YAAYuC,GAAUjE,MAAM0B,IAChC,MAAMb,EAAUf,EAAG4B,GACnBb,EAAQmC,UAAa/B,IACpB,MAAMG,EAASH,EAAEE,OAAOC,OACxBhC,EAAQgC,EAAO,EAEhBP,EAAQkC,QAAW9B,IAClB5B,EAAOsD,EAAY1B,GAAG,CACtB,GACA,GAEJ,CAEAkE,OAAAA,CAAQrF,EAAIK,EAAU,CAAC,GACtB,MAAM,MAAEwE,EAAK,MAAEC,EAAK,SAAEX,GAAW,EAAK,UAAEY,EAAY,QAAW1E,EAC/D,OAAO,IAAIZ,SAAQ,CAACH,EAASC,KAC5BN,KAAK2F,OAAO,CACXC,QACAC,QACAX,WACAY,YACAC,QAASA,CAACJ,EAAQO,KAOjBnF,EAAG4E,GANUU,IAAMV,EAAOW,aACbC,KAEZL,EAAMrD,YAAY2D,SAClBnG,GAAS,GAEY,EAEvB2F,OAAQA,KACP3F,GAAS,EAEV4F,QAAU/D,IACT5B,EAAO4B,EAAE,GAET,GAEJ,CAEAuE,KAAAA,CAAMC,EAAKtF,EAAU,CAAC,GACrB,MAAM,SAAE8D,GAAW,GAAS9D,EAC5B,OAAOpB,KAAK6C,YAAYqC,GAAUjE,MAAMoE,IACvC,MAAMhE,EAAOrB,KAAKqB,KACZsF,EAAW,GACXhE,EAAc0C,EAAG1C,YAAYtB,GAcnC,OAbAqF,EAAIhE,SAAS3B,IACZ,MAAM2E,EAAU,IAAIlF,SAAQ,CAACH,EAASC,KACrC,MAAMwB,EAAUf,EAAG4B,GACnBb,EAAQmC,UAAa/B,IACpB,MAAMG,EAASH,EAAEE,OAAOC,OACxBhC,EAAQgC,EAAO,EAEhBP,EAAQkC,QAAW9B,IAClB5B,EAAOsD,EAAY1B,GAAG,CACtB,IAEFyE,EAASxG,KAAKuF,EAAQ,IAEhBlF,QAAQoG,IAAID,EAAS,GAE9B,CASAtH,GAAAA,CAAIL,GAEH,IAAKyC,MAAMC,QAAQ1C,GAClB,OAAOgB,KAAK8B,SAAQa,GAAeA,EAAYtD,IAAIL,KAIpD,MACM0H,EADO1H,EACI6H,KAAI7H,GAAO2D,GAAeA,EAAYtD,IAAIL,KAC3D,OAAOgB,KAAKyG,MAAMC,EAAK,CAAExB,UAAU,GACpC,CAEAV,IAAAA,GACC,MAAM1B,EAAU9C,KAAK+C,eACf+D,EAAU,GAChB,OAAO9G,KAAK+G,MAAMzH,IACjB,MAAMN,EAAMgI,EAAM1H,EAAKwD,GACvBgE,EAAQ3G,KAAKnB,EAAI,IACfiC,MAAK,IACA6F,GAET,CAEAF,GAAAA,GACC,MAAME,EAAU,GAChB,OAAO9G,KAAK+G,MAAMzH,IACjBwH,EAAQ3G,KAAKb,EAAI,IACf2B,MAAK,IACA6F,GAET,CAEAG,KAAAA,GACC,OAAOjH,KAAK8B,SAAQa,GAAeA,EAAYsE,SAChD,CAIAF,IAAAA,CAAKhG,GACJ,OAAOf,KAAKoG,SAAQ,CAACT,EAAQU,KAC5B,MAAM/G,EAAMqG,EAAO9F,MACnBkB,EAAGzB,GACH+G,GAAM,GAER,CAEAa,OAAAA,CAAQnG,GACP,OAAOf,KAAKoG,SAAQ,CAACT,EAAQU,KAC5B,MAAM/G,EAAMqG,EAAO9F,MACnBkB,EAAGzB,GACH+G,GAAM,GACJ,CAAEP,UAAW,QACjB,CAEAqB,IAAAA,CAAKF,EAAQ,GAAIG,EAAS,GACzB,OAAO,IAAI5G,SAAQ,CAACH,EAASC,KAC5B,MAAMwG,EAAU,GAChB,IAGIhB,EAHAvB,EAAI,EACJ8C,EAAQD,EACRE,EAAMF,EAASH,EAKfG,EAAS,IACZtB,EAAY,OACZmB,EAAQM,KAAKC,IAAIP,GAAQG,GACzBC,IAAUD,EAASH,IAAU,EAC7BK,EAAMD,EAAQJ,GAGfjH,KAAKoG,SAAQ,CAACT,EAAQU,EAAME,KACvBhC,EAAI8C,GACP9C,IACA8B,KAEQ9B,EAAI+C,GACZR,EAAQ3G,KAAKwF,EAAO9F,OACpB0E,IACA8B,KAGAE,GACD,GACE,CAAET,cAAa7E,MAAK,KAClBmG,EAAS,GACZN,EAAQI,UAET7G,EAAQyG,EAAQ,IACdW,MAAMnH,EAAO,GAElB,CAEAoH,KAAAA,GACC,OAAO1H,KAAKmH,KAAK,GAAGlG,MAAK0G,GAASA,EAAM,IACzC,CAEAC,IAAAA,GACC,OAAO5H,KAAKmH,KAAK,GAAI,GAAGlG,MAAK0G,GAASA,EAAM,IAC7C,CAUAxD,IAAAA,CAAKnF,EAAKa,GACT,OAAOG,KAAK8B,SAAQa,GAAeA,EAAYiD,MAAM5G,GAAKK,IAAIQ,IAC/D,CAQAgI,KAAAA,CAAM7I,EAAKa,EAAOiI,GACjB,MAAMjC,EAAS,WACd,OAAQiC,GACP,IAAK,IACJ,OAAOC,YAAYC,WAAWnI,GAAO,GACtC,IAAK,KACJ,OAAOkI,YAAYC,WAAWnI,GAC/B,IAAK,IACJ,OAAOkI,YAAYE,WAAWpI,GAAO,GACtC,IAAK,KACJ,OAAOkI,YAAYE,WAAWpI,GAC/B,IAAK,IACL,IAAK,KACL,IAAK,KACJ,OACD,QACC,OAAOkI,YAAYG,KAAKrI,GAE3B,CAjBe,GAmBTiH,EAAU,GAChB,OAAO,IAAItG,SAAQ,CAACH,EAASC,KAC5BN,KAAK2F,OAAO,CACXC,MAAO5G,EACP6G,QACAE,QAASA,CAACJ,EAAQO,KACjB,MAAMiC,EAAYxC,EAAO9F,MAEnBuI,EAAcpB,EAAMmB,EADVjC,EAAMpD,SAGN,OAAZgF,EACCM,IAAgBvI,GACnBiH,EAAQ3G,KAAKgI,GAGM,MAAZL,EACkB,iBAAfM,GAA2BA,EAAYxF,QAAQ/C,IAAU,GACnEiH,EAAQ3G,KAAKgI,GAGM,OAAZL,EACJrG,MAAMC,QAAQ7B,IAAUA,EAAM+C,QAAQwF,IAAgB,GACzDtB,EAAQ3G,KAAKgI,GAIdrB,EAAQ3G,KAAKgI,GAGdxC,EAAOW,UAAU,EAElBN,OAAQA,KACP3F,EAAQyG,EAAQ,EAEjBb,QAAU/D,IACT5B,EAAO4B,EAAE,GAET,GAEJ,CAYAmG,MAAAA,IAAUC,GACT,MACMlF,EADepD,KAAKoE,MACGhB,SAAW,GAClCmF,EAAiB,CAAC,EACxBnF,EAAQV,SAAS/B,IAChB,MAAM,KAAEU,EAAI,QAAEyB,GAAYnC,EAC1B4H,EAAelH,GAAQyB,CAAO,IAG/B,MAAM0F,EAAe,SAASC,EAAGC,EAAGZ,GACnC,QAAUa,IAANF,EACH,OAAO,EAER,OAAQX,GACP,IAAK,IACJ,OAAOW,EAAIC,EACZ,IAAK,KACJ,OAAOD,GAAKC,EACb,IAAK,IACJ,OAAOD,EAAIC,EACZ,IAAK,KACJ,OAAOD,GAAKC,EACb,IAAK,KACJ,OAAOD,IAAMC,EACd,IAAK,IACJ,MAAoB,iBAAND,GAAkBA,EAAE7F,QAAQ8F,IAAM,EACjD,IAAK,KACJ,OAAOjH,MAAMC,QAAQgH,IAAMA,EAAE9F,QAAQ6F,IAAM,EAC5C,QACC,OAAOA,IAAMC,EAEhB,EAEME,EAAY,SAAStJ,EAAKuJ,EAAgBC,GAC/C,IAAKD,EAAe/H,SAAWgI,EAAchI,OAC5C,OAAO,EAGR,IAAK,IAAIyD,EAAI,EAAGwE,EAAMF,EAAe/H,OAAQyD,EAAIwE,EAAKxE,IAAM,CAC3D,MAAM,QAAEzB,EAAO,MAAEjD,EAAK,QAAEiI,GAAYe,EAAetE,GAC7CyE,EAAUhC,EAAM1H,EAAKwD,GAC3B,IAAK0F,EAAaQ,EAASnJ,EAAOiI,GACjC,OAAO,CAET,CAEA,IAAKgB,EAAchI,OAClB,OAAO,EAGR,IAAK,IAAIyD,EAAI,EAAGwE,EAAMD,EAAchI,OAAQyD,EAAIwE,EAAKxE,IAAM,CAC1D,MAAM,QAAEzB,EAAO,MAAEjD,EAAK,QAAEiI,GAAYgB,EAAcvE,GAC5CyE,EAAUhC,EAAM1H,EAAKwD,GAC3B,GAAI0F,EAAaQ,EAASnJ,EAAOiI,GAChC,OAAO,CAET,CAEA,OAAO,CACR,EAEMmB,EAAS,GACfX,EAAM5F,SAASwG,IACd,MAAMJ,EAAgB,GAChBD,EAAiB,GACvB,IAAK,IAAItE,EAAI,EAAGwE,EAAMG,EAAWpI,OAAQyD,EAAIwE,EAAKxE,IAAM,CACvD,MAAM,IAAEvF,EAAG,MAAEa,EAAK,QAAEiI,EAAO,SAAEqB,GAAaD,EAAW3E,GAC/CzB,EAAUyF,EAAevJ,IAAQA,EACnCmK,EACHL,EAAc3I,KAAK,CAAE2C,UAASjD,QAAOiI,YAGrCe,EAAe1I,KAAK,CAAE2C,UAASjD,QAAOiI,WAExC,CACAmB,EAAO9I,KAAK,CAAC0I,EAAgBC,GAAe,IAG7C,MAWMhC,EAAU,GAChB,OAAO9G,KAAK+G,MAAMzH,IAZJA,KACb,IAAK,IAAIiF,EAAI,EAAGwE,EAAME,EAAOnI,OAAQyD,EAAIwE,EAAKxE,IAAM,CACnD,MAAOsE,EAAgBC,GAAiBG,EAAO1E,GAE/C,GADYqE,EAAUtJ,EAAKuJ,EAAgBC,GAE1C,OAAO,CAET,CACA,OAAO,CAAK,EAKRM,CAAK9J,IACRwH,EAAQ3G,KAAKb,EACd,IACE2B,MAAK,IACA6F,GAET,CAUAuC,GAAAA,CAAI/J,EAAKN,GACR,GAAIyC,MAAMC,QAAQpC,GAAM,CACvB,MAAMgK,EAAOhK,EACb,GAAIgK,EAAKxI,OAAS,EACjB,OAAOd,KAAKqJ,IAAI/J,EAAI,GAAIN,GAGzB,MAAM0H,EAAM4C,EAAKzC,KAAIvH,GAAOqD,GAAeA,EAAY0G,IAAI/J,EAAKN,KAChE,OAAOgB,KAAKyG,MAAMC,EACnB,CAEA,OAAKpH,EAIEU,KAAK8B,SAAQa,GAAeA,EAAY0G,IAAI/J,EAAKN,IAAM,CAAEkG,UAAU,IAHlE1E,QAAQH,SAIjB,CAQAsE,GAAAA,CAAIrF,EAAKN,GACR,GAAIyC,MAAMC,QAAQpC,GAAM,CACvB,MAAMgK,EAAOhK,EACb,GAAIgK,EAAKxI,OAAS,EACjB,OAAOd,KAAK2E,IAAI2E,EAAK,GAAItK,GAG1B,MAAM0H,EAAM4C,EAAKzC,KAAIvH,GAAOqD,GAAeA,EAAYgC,IAAIrF,EAAKN,KAChE,OAAOgB,KAAKyG,MAAMC,EACnB,CAEA,OAAKpH,EAIEU,KAAK8B,SAAQa,GAAeA,EAAYgC,IAAIrF,EAAKN,IAAM,CAAEkG,UAAU,IAHlE1E,QAAQH,SAIjB,CAEAwE,OAAO7F,GACN,GAAIyC,MAAMC,QAAQ1C,GAAM,CACvB,MAAMwF,EAAOxF,EACb,GAAIwF,EAAK1D,OAAS,EACjB,OAAOd,KAAK6E,OAAOL,EAAK,IAGzB,MAAMkC,EAAMlC,EAAKqC,KAAI7H,GAAO2D,GAAeA,EAAYkC,OAAO7F,KAC9D,OAAOgB,KAAKyG,MAAMC,EACnB,CAEA,OAAK1H,EAIEgB,KAAK8B,SAAQa,GAAeA,EAAYkC,OAAO7F,IAAM,CAAEkG,UAAU,IAHhE1E,QAAQH,SAIjB,CAEAkJ,MAAAA,CAAOjK,GACN,MAAMwD,EAAU9C,KAAK+C,eAErB,GAAItB,MAAMC,QAAQpC,GAAM,CACvB,MAAMgK,EAAOhK,EACb,GAAIgK,EAAKxI,OAAS,EACjB,OAAOd,KAAKuJ,OAAOD,EAAK,IAGzB,MAAM5C,EAAM4C,EAAKzC,KAAIvH,IACpB,MAAMN,EAAMgI,EAAM1H,EAAKwD,GACvB,OAAOH,GAAeA,EAAYkC,OAAO7F,EAAI,IAE9C,OAAOgB,KAAKyG,MAAMC,EACnB,CAEA,IAAKpH,EACJ,OAAOkB,QAAQH,UAGhB,MAAMrB,EAAMgI,EAAM1H,EAAKwD,GACvB,OAAK9D,EAIEgB,KAAK6E,OAAO7F,GAHXwB,QAAQH,SAIjB,CAEAmJ,KAAAA,GACC,OAAOxJ,KAAK8B,SAAQa,GAAeA,EAAY6G,SAAS,CAAEtE,UAAU,GACrE,EAQD,SAAS8B,EAAM1H,EAAKmK,GACnB,GAAI,MAAOA,EACT,OAGF,GAAIhI,MAAMC,QAAQ+H,GAAO,CACvB,IAAK,IAAIlF,EAAI,EAAGwE,EAAMU,EAAK3I,OAAQyD,EAAIwE,EAAKxE,IAAM,CACnD,MACMmF,EAAM1C,EAAM1H,EADLmK,EAAKlF,IAElB,QAAYoE,IAARe,EACF,OAAOA,CAER,CACA,MACF,CAEA,IAAIC,EArBL,SAAsBF,GAErB,OADYA,EAAKG,WAAWC,MAAM,YAAYC,QAAOnJ,KAAUA,GAEhE,CAkBaoJ,CAAaN,GAEzB,IAAKE,EAAM7I,OACT,OAAOxB,EAGT,IAAI8C,EAAS9C,EACb,IAAK,IAAIiF,EAAI,EAAGwE,EAAMY,EAAM7I,OAAQyD,EAAIwE,EAAKxE,IAAM,CACjD,IAAIvF,EAAM2K,EAAMpF,GAChB,QAAoBoE,IAAhBvG,EAAOpD,GACZ,OAECoD,EAASA,EAAOpD,EAClB,CACA,OAAOoD,CACR,CAEA,SAASwB,EAAY1B,GACpB,MAAM,QAAE8H,GAAY9H,EAEpB,OADAA,EAAE8H,SAA8C,IAApCA,EAAQpH,QAAQ,eAAwB,gBAAkBoH,EAAUA,EACzE9H,CACR,CC1vBO,MAAM+H,EACTlK,WAAAA,CAAYmK,GACRlK,KAAKkK,KAAOA,CAChB,CAEA9I,OAAAA,GACI,MAAO,CACH+I,UAAW,IAAItG,MAAM,kCAOrBuG,YAAY,EAKZC,WAAY,OAEpB,CAEAC,IAAAA,GACI,MAAMC,EAAY,WACZC,EAAM,IAAIrJ,EAAK,CACjBE,KAAMrB,KAAKkK,KAAK9I,QAAQ+I,UACxB7I,QAAS,EACTC,OAAQ,CACJ,CACIF,KAAMkJ,EACNxH,eAAgB,MAChBC,eAAe,MAI3BhD,KAAKmC,GAAKqI,EAAI1G,IAAIyG,GAClBvK,KAAKC,MAAQ,IAAIH,EAKjB,MAAM,WAAEuK,GAAerK,KAAKkK,KAAK9I,QACjC,GAAIiJ,EAAY,CACZ,IAAIjD,EAAS,EACb,MAAMqD,EAAQC,aAAY,KACtB1K,KAAKC,MACAE,MAAK,IAAMH,KAAKmC,GAAGgF,KAAK,IAAKC,KAC7BnG,MAAM0J,IACH,IAAKA,EAAK7J,OAGN,YADA8J,cAAcH,GAGlB,MAAMI,EAAOC,KAAKC,MACZC,EAAM,GACZL,EAAKjI,SAASuI,IACV,MAAM,IAAEC,EAAG,KAAEC,GAASF,EAClBJ,EAAOM,EAAOd,GACdW,EAAI7K,KAAK+K,EACb,IAEAF,EAAIlK,QACJd,KAAKC,MAAME,MAAK,IAAMH,KAAKmC,GAAG0C,OAAOmG,KAEzC5D,GAAU,IACVA,GAAU4D,EAAIlK,MAAM,GACtB,GACP,IACP,CACJ,CAEAsK,KAAAA,CAAMC,GACFrL,KAAKC,MACAE,MAAK,IAAMH,KAAKmC,GAAGkH,IAAIgC,KACvBpK,MAAMqK,IACHtL,KAAKkK,KAAKqB,KAAK,kBAAmB,CAAED,KAAID,QAAO,GAE3D,CAYAG,IAAAA,CAAKxB,GACD,GAAKA,EAMA,KAAKvI,MAAMC,QAAQsI,GACpB,OAEC,GAAIA,EAAQ7C,MAAKxG,IAASA,EAAK3B,MAChC,MACJ,MAVIgL,EAAU,CACN,CAAEhL,IAAK,SAAUa,MAAOG,KAAKkK,KAAKuB,UAClC,CAAEzM,IAAK,QAASa,MAAOG,KAAKkK,KAAKwB,UASzC,OAAO1L,KAAKqI,OAAO2B,EACvB,CAEAR,KAAAA,CAAMmB,GACF,OAAO3K,KAAKC,MAAME,MAAK,IAAMH,KAAKmC,GAAGoH,OAAOoB,KAAOlD,OAAM,QAC7D,CAQAY,MAAAA,CAAOa,GACH,OAAOlJ,KAAKC,MAAME,MAAK,IAAMH,KAAKmC,GAAGkG,OAAOa,IAChD,CAOAK,MAAAA,CAAOyB,GACH,OAAOhL,KAAKC,MAAME,MAAK,IAAMH,KAAKmC,GAAG0C,OAAOmG,KAAMvD,OAAM,QAC5D,E","sources":["webpack://anys/webpack/bootstrap","webpack://anys/webpack/runtime/define property getters","webpack://anys/webpack/runtime/hasOwnProperty shorthand","webpack://anys/webpack/runtime/make namespace object","webpack://anys/../@shared/src/async-queue.js","webpack://anys/./node_modules/indb/es/index.js","webpack://anys/./src/index.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export class AsyncQueue {\n constructor() {\n this.queue = [];\n this.status = 0;\n }\n\n push(runner) {\n let resolve; let\n reject;\n const defer = new Promise((rs, rj) => {\n resolve = rs;\n reject = rj;\n });\n const item = {\n runner,\n resolve,\n reject,\n };\n this.queue.push(item);\n\n const run = () => {\n setTimeout(() => {\n if (!this.queue.length) {\n this.status = 0;\n return;\n }\n\n const { runner: fn, resolve: rs, reject: rj } = this.queue.shift();\n fn().then(rs, rj).finally(run);\n }, 0);\n this.status = 1;\n };\n\n if (!this.status) {\n run();\n }\n\n return defer;\n }\n}\n","export class InDB {\n\t/**\n\t * InDB\n\t * @param {object} [options]\n\t * @param {string} [options.name] database name\n\t * @param {number} [options.version] database version\n\t * @param {object[]} [options.stores]\n\t * @param {string} [options.stores[].name] store name\n\t * @param {string} [options.stores[].primaryKeyPath] store primary keyPath\n\t * @param {boolean} [options.stores[].autoIncrement] is store primary keyPath autoIncrement, if true, primary key will be number\n\t * @param {boolean} [options.stores[].isKv] is store set to be Key-Value mode, if true, the store will have Storage methods, and `primaryKeyPath` `autoIncrement` not working\n\t * @param {object[]} [options.stores[].indexes]\n\t * @param {string} [options.stores[].indexes[].name] index name\n\t * @param {string} [options.stores[].indexes[].keyPath] index keyPath\n\t * @param {boolean} [options.stores[].indexes[].unique] should index value be unique\n\t * @returns\n\t */\n\tconstructor(options = {}) {\n\t\tlet { name, version = 1, stores } = options\n\t\tconst asStorage = !name\n\n\t\tif (!name) {\n\t\t\tname = '__indb__'\n\t\t}\n\n\t\tif (!stores || !Array.isArray(stores) || !stores.length) {\n\t\t\tstores = [\n\t\t\t\t{\n\t\t\t\t\tname: '__indb__',\n\t\t\t\t\tisKv: true,\n\t\t\t\t},\n\t\t\t]\n\t\t}\n\n\t\tthis.cache = {}\n\t\tthis.connection = null\n\n\t\tthis.name = name\n\t\tthis.version = version\n\t\tthis.stores = stores\n\n\t\t// update database structure\n\t\tconst request = indexedDB.open(name, version)\n\t\trequest.onupgradeneeded = (e) => {\n\t\t\t// @ts-ignore\n\t\t\tconst db = e.target.result\n\t\t\tconst existStoreNames = Array.from(db.objectStoreNames)\n\t\t\tconst passStoreNames = []\n\n\t\t\tstores.forEach((item) => {\n\t\t\t\tlet objectStore = null\n\t\t\t\tif (existStoreNames.indexOf(item.name) > -1) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectStore = e.target.transaction.objectStore(item.name)\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst keyPath = item.isKv ? 'key' : item.primaryKeyPath\n\t\t\t\t\tconst autoIncrement = item.isKv ? false : item.autoIncrement\n\t\t\t\t\tobjectStore = db.createObjectStore(item.name, { keyPath, autoIncrement })\n\t\t\t\t}\n\n\t\t\t\t// delete old indexes\n\t\t\t\tconst indexNames = objectStore.indexNames\n\t\t\t\tif (indexNames && indexNames.length) {\n\t\t\t\t\tArray.from(indexNames).forEach((item) => objectStore.deleteIndex(item))\n\t\t\t\t}\n\n\t\t\t\t// add new indexes\n\t\t\t\tif (item.indexes && item.indexes.length) {\n\t\t\t\t\titem.indexes.forEach((item) => {\n\t\t\t\t\t\tobjectStore.createIndex(item.name, item.keyPath || item.name, { unique: item.unique, multiEntry: Array.isArray(item.keyPath) })\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tpassStoreNames.push(item.name)\n\t\t\t})\n\n\t\t\t// delete objectStores which is not in config information\n\t\t\t// notice, developers should backup data firstly\n\t\t\tif (existStoreNames) {\n\t\t\t\texistStoreNames.forEach((item) => {\n\t\t\t\t\tif (passStoreNames.indexOf(item) === -1) {\n\t\t\t\t\t\tdb.deleteObjectStore(item)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\trequest.onblocked = (e) => {\n\t\t\tconsole.error(modifyError(new Error('indexedDB ' + name + ' is blocked')))\n\t\t}\n\n\t\t// use as a storage like:\n\t\t// const store = new InDB()\n\t\t// store.setItem('key', 'value')\n\t\tif (asStorage) {\n\t\t\t// @ts-ignore\n\t\t\treturn this.use(name)\n\t\t}\n\t}\n\n\tconnect() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst request = indexedDB.open(this.name, this.version)\n\t\t\trequest.onerror = (e) => {\n\t\t\t\treject(modifyError(e))\n\t\t\t}\n\t\t\trequest.onsuccess = (e) => {\n\t\t\t\t// @ts-ignore\n\t\t\t\tresolve(e.target.result)\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t *\n\t * @param {string} name\n\t * @returns {InDBStore}\n\t */\n\tuse(name) {\n\t\tconst currentStore = this.stores.find(item => item.name === name)\n\n\t\tif (!currentStore) {\n\t\t\tthrow new Error(`[InDB]: store ${name} is not existing.`)\n\t\t}\n\n\t\t// use connected store\n\t\tif (this.cache[name]) {\n\t\t\treturn this.cache[name]\n\t\t}\n\n\t\tconst store = new InDBStore({\n\t\t\tdb: this,\n\t\t\tstore: currentStore,\n\t\t})\n\n\t\t// if it is a key-value store, append special methods\n\t\tif (currentStore.isKv) {\n\t\t\tObject.defineProperties(store, {\n\t\t\t\tkey: {\n\t\t\t\t\tvalue: i => store.keys().then(keys => keys && keys[i]),\n\t\t\t\t},\n\t\t\t\tgetItem: {\n\t\t\t\t\tvalue: key => store.get(key).then(obj => obj && obj.value),\n\t\t\t\t},\n\t\t\t\tsetItem: {\n\t\t\t\t\tvalue: (key, value) => store.put({ key, value }),\n\t\t\t\t},\n\t\t\t\tremoveItem: {\n\t\t\t\t\tvalue: key => store.delete(key),\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\n\t\tthis.cache[name] = store\n\n\t\treturn store\n\t}\n\n\tclose() {\n\t\tthis.cache = null\n\t\tthis.stores = null\n\n\t\treturn this.connect().then((db) => {\n\t\t\tdb.close()\n\t\t})\n\t}\n\n\tstatic deleteDatabase(name) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst request = indexedDB.deleteDatabase(name)\n\t\t\trequest.onsuccess = () => {\n\t\t\t\tresolve()\n\t\t\t}\n\t\t\trequest.onerror = (e) => {\n\t\t\t\treject(e)\n\t\t\t}\n\t\t})\n\t}\n\n\tstatic databases() {\n\t\treturn indexedDB.databases()\n\t}\n}\n\nexport default InDB\n\nclass InDBStore {\n\tconstructor(options = {}) {\n\t\tconst { store, db } = options\n\n\t\tif (typeof store !== 'object' || !store.name || typeof store.name !== 'string') {\n\t\t\tthrow new Error(`[InDBStore]: options.store should be a store config object.`)\n\t\t}\n\n\t\tif (!(db instanceof InDB)) {\n\t\t\tthrow new Error(`[InDBStore]: options.db should be an instanceof InDB.`)\n\t\t}\n\n\t\tthis.db = db\n\n\t\tthis.store = store\n\t\tthis.name = store.name\n\t\tthis.primaryKeyPath = store.isKv ? 'key' : store.primaryKeyPath\n\n\t\tthis._queue = []\n\t}\n\n\ttransaction(writable = false) {\n\t\tconst create = () => {\n\t\t\tconst name = this.name\n\t\t\tconst mode = writable ? 'readwrite' : 'readonly'\n\n\t\t\t// share the same connection\n\t\t\tconst connection = this.db.connection\n\t\t\tconst deferer = connection ? Promise.resolve(connection) : this.db.connect()\n\t\t\treturn deferer.then((db) => {\n\t\t\t\tthis.db.connection = db\n\t\t\t\tconst tx = db.transaction(name, mode)\n\t\t\t\tconst disconnect = () => {\n\t\t\t\t\tthis.db.connection = null\n\t\t\t\t\tthis._queue.shift()\n\t\t\t\t}\n\t\t\t\ttx.oncomplete = disconnect\n\t\t\t\ttx.onabort = disconnect\n\t\t\t\ttx.onerror = disconnect\n\t\t\t\treturn tx\n\t\t\t})\n\t\t}\n\n\t\tconst latest = this._queue[this._queue.length - 1]\n\t\tconst deferer = latest ? latest.then(() => create()) : create()\n\t\tthis._queue.push(deferer)\n\t\treturn deferer\n\t}\n\n\tobjectStore(writable = false) {\n\t\tconst name = this.name\n\t\treturn this.transaction(writable).then(tx => tx.objectStore(name))\n\t}\n\n\tcursor(options) {\n\t\tconst { index, range, direction, onTouch, onDone, onError, writable = false } = options\n\t\treturn this.objectStore(writable).then((objectStore) => {\n\t\t\tconst owner = index ? objectStore.index(index) : objectStore\n\t\t\tconst request = owner.openCursor(range, direction)\n\t\t\trequest.onsuccess = (e) => {\n\t\t\t\tconst cursor = e.target.result\n\t\t\t\tif (cursor) {\n\t\t\t\t\tonTouch(cursor, owner)\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tonDone(cursor, owner)\n\t\t\t\t}\n\t\t\t}\n\t\t\trequest.onerror = (e) => {\n\t\t\t\tonError(modifyError(e))\n\t\t\t}\n\t\t})\n\t}\n\n\trequest(fn, options = {}) {\n\t\tconst { writable = false } = options\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.objectStore(writable).then((objectStore) => {\n\t\t\t\tconst request = fn(objectStore)\n\t\t\t\trequest.onsuccess = (e) => {\n\t\t\t\t\tconst result = e.target.result\n\t\t\t\t\tresolve(result)\n\t\t\t\t}\n\t\t\t\trequest.onerror = (e) => {\n\t\t\t\t\treject(modifyError(e))\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\titerate(fn, options = {}) {\n\t\tconst { index, range, writable = false, direction = 'next' } = options\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.cursor({\n\t\t\t\tindex,\n\t\t\t\trange,\n\t\t\t\twritable,\n\t\t\t\tdirection,\n\t\t\t\tonTouch: (cursor, owner) => {\n\t\t\t\t\tconst next = () => cursor.continue()\n\t\t\t\t\tconst stop = () => {\n\t\t\t\t\t\t// should commit when writable is true\n\t\t\t\t\t\towner.transaction.commit()\n\t\t\t\t\t\tresolve()\n\t\t\t\t\t}\n\t\t\t\t\tfn(cursor, next, stop)\n\t\t\t\t},\n\t\t\t\tonDone: () => {\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t\tonError: (e) => {\n\t\t\t\t\treject(e)\n\t\t\t\t},\n\t\t\t})\n\t\t})\n\t}\n\n\tbatch(fns, options = {}) {\n\t\tconst { writable = true } = options\n\t\treturn this.transaction(writable).then((tx) => {\n\t\t\tconst name = this.name\n\t\t\tconst promises = []\n\t\t\tconst objectStore = tx.objectStore(name)\n\t\t\tfns.forEach((fn) => {\n\t\t\t\tconst deferer = new Promise((resolve, reject) => {\n\t\t\t\t\tconst request = fn(objectStore)\n\t\t\t\t\trequest.onsuccess = (e) => {\n\t\t\t\t\t\tconst result = e.target.result\n\t\t\t\t\t\tresolve(result)\n\t\t\t\t\t}\n\t\t\t\t\trequest.onerror = (e) => {\n\t\t\t\t\t\treject(modifyError(e))\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tpromises.push(deferer)\n\t\t\t})\n\t\t\treturn Promise.all(promises)\n\t\t})\n\t}\n\n\t// ==========================================\n\n\t/**\n\t *\n\t * @param {string} key\n\t * @returns\n\t */\n\tget(key) {\n\t\t// single key\n\t\tif (!Array.isArray(key)) {\n\t\t\treturn this.request(objectStore => objectStore.get(key))\n\t\t}\n\n\t\t// multiple keys\n\t\tconst keys = key\n\t\tconst fns = keys.map(key => objectStore => objectStore.get(key))\n\t\treturn this.batch(fns, { writable: false })\n\t}\n\n\tkeys() {\n\t\tconst keyPath = this.primaryKeyPath\n\t\tconst results = []\n\t\treturn this.each((obj) => {\n\t\t\tconst key = parse(obj, keyPath)\n\t\t\tresults.push(key)\n\t\t}).then(() => {\n\t\t\treturn results\n\t\t})\n\t}\n\n\tall() {\n\t\tconst results = []\n\t\treturn this.each((obj) => {\n\t\t\tresults.push(obj)\n\t\t}).then(() => {\n\t\t\treturn results\n\t\t})\n\t}\n\n\tcount() {\n\t\treturn this.request(objectStore => objectStore.count())\n\t}\n\n\t// ==========================================\n\n\teach(fn) {\n\t\treturn this.iterate((cursor, next) => {\n\t\t\tconst obj = cursor.value\n\t\t\tfn(obj)\n\t\t\tnext()\n\t\t})\n\t}\n\n\treverse(fn) {\n\t\treturn this.iterate((cursor, next) => {\n\t\t\tconst obj = cursor.value\n\t\t\tfn(obj)\n\t\t\tnext()\n\t\t}, { direction: 'prev' })\n\t}\n\n\tsome(count = 10, offset = 0) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst results = []\n\t\t\tlet i = 0\n\t\t\tlet start = offset\n\t\t\tlet end = offset + count\n\t\t\tlet direction\n\n\t\t\t// offset < 0, means begining from the latest item,\n\t\t\t// for example, offset = -1, means begining from the last item\n\t\t\tif (offset < 0) {\n\t\t\t\tdirection = 'prev'\n\t\t\t\tcount = Math.min(count, -offset)\n\t\t\t\tstart = -(offset + count) || 0\n\t\t\t\tend = start + count\n\t\t\t}\n\n\t\t\tthis.iterate((cursor, next, stop) => {\n\t\t\t\tif (i < start) {\n\t\t\t\t\ti ++\n\t\t\t\t\tnext()\n\t\t\t\t}\n\t\t\t\telse if (i < end) {\n\t\t\t\t\tresults.push(cursor.value)\n\t\t\t\t\ti ++\n\t\t\t\t\tnext()\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tstop()\n\t\t\t\t}\n\t\t\t}, { direction }).then(() => {\n\t\t\t\tif (offset < 0) {\n\t\t\t\t\tresults.reverse()\n\t\t\t\t}\n\t\t\t\tresolve(results)\n\t\t\t}).catch(reject)\n\t\t})\n\t}\n\n\tfirst() {\n\t\treturn this.some(1).then(items => items[0])\n\t}\n\n\tlast() {\n\t\treturn this.some(1, -1).then(items => items[0])\n\t}\n\n\t// =========================\n\n\t/**\n\t * find a record with given index\n\t * @param {string} key index name\n\t * @param {*} value\n\t * @returns\n\t */\n\tfind(key, value) {\n\t\treturn this.request(objectStore => objectStore.index(key).get(value))\n\t}\n\t/**\n\t * query several records with given index and compare condition\n\t * @param {string} key index name\n\t * @param {*} value\n\t * @param {string} [compare]\n\t * @returns\n\t */\n\tquery(key, value, compare) {\n\t\tconst range = (function() {\n\t\t\tswitch (compare) {\n\t\t\t\tcase '>':\n\t\t\t\t\treturn IDBKeyRange.lowerBound(value, true)\n\t\t\t\tcase '>=':\n\t\t\t\t\treturn IDBKeyRange.lowerBound(value)\n\t\t\t\tcase '<':\n\t\t\t\t\treturn IDBKeyRange.upperBound(value, true)\n\t\t\t\tcase '<=':\n\t\t\t\t\treturn IDBKeyRange.upperBound(value)\n\t\t\t\tcase '%':\n\t\t\t\tcase '!=':\n\t\t\t\tcase 'in':\n\t\t\t\t\treturn undefined\n\t\t\t\tdefault:\n\t\t\t\t\treturn IDBKeyRange.only(value)\n\t\t\t}\n\t\t}())\n\n\t\tconst results = []\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.cursor({\n\t\t\t\tindex: key,\n\t\t\t\trange,\n\t\t\t\tonTouch: (cursor, owner) => {\n\t\t\t\t\tconst targetObj = cursor.value\n\t\t\t\t\tconst keyPath = owner.keyPath\n\t\t\t\t\tconst targetValue = parse(targetObj, keyPath)\n\n\t\t\t\t\tif (compare === '!=') {\n\t\t\t\t\t\tif (targetValue !== value) {\n\t\t\t\t\t\t\tresults.push(targetObj)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (compare === '%') {\n\t\t\t\t\t\tif (typeof targetValue == 'string' && targetValue.indexOf(value) > -1) {\n\t\t\t\t\t\t\tresults.push(targetObj)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (compare === 'in') {\n\t\t\t\t\t\tif (Array.isArray(value) && value.indexOf(targetValue) > -1) {\n\t\t\t\t\t\t\tresults.push(targetObj)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresults.push(targetObj)\n\t\t\t\t\t}\n\n\t\t\t\t\tcursor.continue()\n\t\t\t\t},\n\t\t\t\tonDone: () => {\n\t\t\t\t\tresolve(results)\n\t\t\t\t},\n\t\t\t\tonError: (e) => {\n\t\t\t\t\treject(e)\n\t\t\t\t},\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * query several records with conditions,\n\t * notice that, it works with iterator not with index.\n\t * @param {...object[]} rules\n\t * @param {string} rules[][].key index name or any keyPath.\n\t * @param {*} rules[][].value\n\t * @param {string=} rules[][].compare\n\t * @param {boolean=} rules[][].optional whether this condition is optional\n\t * @returns\n\t */\n\tselect(...rules) {\n\t\tconst currentStore = this.store\n\t\tconst indexes = currentStore.indexes || []\n\t\tconst indexesMapping = {}\n\t\tindexes.forEach((item) => {\n\t\t\tconst { name, keyPath } = item\n\t\t\tindexesMapping[name] = keyPath\n\t\t})\n\n\t\tconst compareAandB = function(a, b, compare) {\n\t\t\tif (a === undefined) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tswitch (compare) {\n\t\t\t\tcase '>':\n\t\t\t\t\treturn a > b\n\t\t\t\tcase '>=':\n\t\t\t\t\treturn a >= b\n\t\t\t\tcase '<':\n\t\t\t\t\treturn a < b\n\t\t\t\tcase '<=':\n\t\t\t\t\treturn a <= b\n\t\t\t\tcase '!=':\n\t\t\t\t\treturn a !== b\n\t\t\t\tcase '%':\n\t\t\t\t\treturn typeof a === 'string' && a.indexOf(b) > -1\n\t\t\t\tcase 'in':\n\t\t\t\t\treturn Array.isArray(b) && b.indexOf(a) > -1\n\t\t\t\tdefault:\n\t\t\t\t\treturn a === b\n\t\t\t}\n\t\t}\n\n\t\tconst determine = function(obj, and_conditions, or_conditions) {\n\t\t\tif (!and_conditions.length && !or_conditions.length) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tfor (let i = 0, len = and_conditions.length; i < len; i ++) {\n\t\t\t\tconst { keyPath, value, compare } = and_conditions[i]\n\t\t\t\tconst current = parse(obj, keyPath)\n\t\t\t\tif (!compareAandB(current, value, compare)) {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!or_conditions.length) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tfor (let i = 0, len = or_conditions.length; i < len; i ++) {\n\t\t\t\tconst { keyPath, value, compare } = or_conditions[i]\n\t\t\t\tconst current = parse(obj, keyPath)\n\t\t\t\tif (compareAandB(current, value, compare)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false\n\t\t}\n\n\t\tconst groups = []\n\t\trules.forEach((conditions) => {\n\t\t\tconst or_conditions = []\n\t\t\tconst and_conditions = []\n\t\t\tfor (let i = 0, len = conditions.length; i < len; i ++) {\n\t\t\t\tconst { key, value, compare, optional } = conditions[i]\n\t\t\t\tconst keyPath = indexesMapping[key] || key // if there is not such index, use original key as keyPath\n\t\t\t\tif (optional) {\n\t\t\t\t\tor_conditions.push({ keyPath, value, compare })\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tand_conditions.push({ keyPath, value, compare })\n\t\t\t\t}\n\t\t\t}\n\t\t\tgroups.push([and_conditions, or_conditions])\n\t\t})\n\n\t\tconst isOk = (obj) => {\n\t\t\tfor (let i = 0, len = groups.length; i < len; i ++) {\n\t\t\t\tconst [and_conditions, or_conditions] = groups[i]\n\t\t\t\tconst res = determine(obj, and_conditions, or_conditions)\n\t\t\t\tif (res) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\n\t\tconst results = []\n\t\treturn this.each((obj) => {\n\t\t\tif (isOk(obj)) {\n\t\t\t\tresults.push(obj)\n\t\t\t}\n\t\t}).then(() => {\n\t\t\treturn results\n\t\t})\n\t}\n\n\t// =====================================\n\n\t/**\n\t * add a record into store\n\t * @param {*} obj\n\t * @param {string} [key]\n\t * @returns\n\t */\n\tadd(obj, key) {\n\t\tif (Array.isArray(obj)) {\n\t\t\tconst objs = obj\n\t\t\tif (objs.length < 2) {\n\t\t\t\treturn this.add(obj[0], key)\n\t\t\t}\n\n\t\t\tconst fns = objs.map(obj => objectStore => objectStore.add(obj, key))\n\t\t\treturn this.batch(fns)\n\t\t}\n\n\t\tif (!obj) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\n\t\treturn this.request(objectStore => objectStore.add(obj, key), { writable: true })\n\t}\n\n\t/**\n\t *\n\t * @param {*} obj\n\t * @param {string} [key] if not pass, primaryKey will read from obj\n\t * @returns\n\t */\n\tput(obj, key) {\n\t\tif (Array.isArray(obj)) {\n\t\t\tconst objs = obj\n\t\t\tif (objs.length < 2) {\n\t\t\t\treturn this.put(objs[0], key)\n\t\t\t}\n\n\t\t\tconst fns = objs.map(obj => objectStore => objectStore.put(obj, key))\n\t\t\treturn this.batch(fns)\n\t\t}\n\n\t\tif (!obj) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\n\t\treturn this.request(objectStore => objectStore.put(obj, key), { writable: true })\n\t}\n\n\tdelete(key) {\n\t\tif (Array.isArray(key)) {\n\t\t\tconst keys = key\n\t\t\tif (keys.length < 2) {\n\t\t\t\treturn this.delete(keys[0])\n\t\t\t}\n\n\t\t\tconst fns = keys.map(key => objectStore => objectStore.delete(key))\n\t\t\treturn this.batch(fns)\n\t\t}\n\n\t\tif (!key) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\n\t\treturn this.request(objectStore => objectStore.delete(key), { writable: true })\n\t}\n\n\tremove(obj) {\n\t\tconst keyPath = this.primaryKeyPath\n\n\t\tif (Array.isArray(obj)) {\n\t\t\tconst objs = obj\n\t\t\tif (objs.length < 2) {\n\t\t\t\treturn this.remove(objs[0])\n\t\t\t}\n\n\t\t\tconst fns = objs.map(obj => {\n\t\t\t\tconst key = parse(obj, keyPath)\n\t\t\t\treturn objectStore => objectStore.delete(key)\n\t\t\t})\n\t\t\treturn this.batch(fns)\n\t\t}\n\n\t\tif (!obj) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\n\t\tconst key = parse(obj, keyPath)\n\t\tif (!key) {\n\t\t\treturn Promise.resolve()\n\t\t}\n\n\t\treturn this.delete(key)\n\t}\n\n\tclear() {\n\t\treturn this.request(objectStore => objectStore.clear(), { writable: true })\n\t}\n}\n\nfunction makeKeyChain(path) {\n\tlet chain = path.toString().split(/\\.|\\[|\\]/).filter(item => !!item)\n\treturn chain\n}\n\nfunction parse(obj, path) {\n\tif (typeof path === 'undefined' || path === null) {\n\t return;\n\t}\n\n\tif (Array.isArray(path)) {\n\t for (let i = 0, len = path.length; i < len; i ++) {\n\t\tconst item = path[i]\n\t\tconst res = parse(obj, item)\n\t\tif (res !== undefined) {\n\t\t return res\n\t\t}\n\t }\n\t return\n\t}\n\n\tlet chain = makeKeyChain(path)\n\n\tif (!chain.length) {\n\t return obj\n\t}\n\n\tlet target = obj\n\tfor (let i = 0, len = chain.length; i < len; i ++) {\n\t let key = chain[i]\n\t if (target[key] === undefined) {\n\t\treturn\n\t }\n\t target = target[key]\n\t}\n\treturn target\n}\n\nfunction modifyError(e) {\n\tconst { message } = e\n\te.message = message.indexOf('[IndexedDB]') === -1 ? '[IndexedDB]: ' + message : message\n\treturn e\n}\n","import { AsyncQueue } from 'anys-shared';\nimport { InDB } from 'indb/es/index.js';\n\nexport class AnysStoreOfflinePlugin {\n constructor(anys) {\n this.anys = anys;\n }\n\n options() {\n return {\n namespace: new Error('options.namespace is required!'),\n /**\n * offline log will close autoReport as default,\n * developers should must invoke anys.send to send logs to server side during\n * which should use this.[offlineLogger].select to pick logs,\n * and this.[offlineLogger].remove to clear logs\n */\n autoReport: false,\n /**\n * a offline log will be delete after how long time,\n * default 2 day (48 hours)\n */\n expireTime: 3600000 * 48,\n };\n }\n\n init() {\n const storeName = 'anyslogs';\n const idb = new InDB({\n name: this.anys.options.namespace,\n version: 1,\n stores: [\n {\n name: storeName,\n primaryKeyPath: '_id',\n autoIncrement: true,\n },\n ],\n });\n this.db = idb.use(storeName);\n this.queue = new AsyncQueue();\n\n /**\n * clear logs which should be delete from db\n */\n const { expireTime } = this.anys.options;\n if (expireTime) {\n let offset = 0;\n const timer = setInterval(() => {\n this.queue\n .push(() => this.db.some(100, offset))\n .then((logs) => {\n if (!logs.length) {\n // @ts-ignore\n clearInterval(timer);\n return;\n }\n const curr = Date.now();\n const ids = [];\n logs.forEach((log) => {\n const { _id, time } = log;\n if (curr - time > expireTime) {\n ids.push(_id);\n }\n });\n if (ids.length) {\n this.queue.push(() => this.db.delete(ids));\n }\n offset += 100;\n offset -= ids.length;\n });\n }, 10000);\n }\n }\n\n write(data) {\n this.queue\n .push(() => this.db.add(data))\n .then((id) => {\n this.anys.emit('writeOfflineLog', { id, data });\n });\n }\n\n /**\n * select records from db\n * anys.report([\n * { key: 'time', value: Date.now() - 3600000, compare: '>' },\n * { key: 'trace', value: 'xxx' },\n * ]);\n * https://github.com/tangshuang/indb#select\n * @param {Array} message\n * @returns\n */\n read(message) {\n if (!message) {\n message = [\n { key: 'client', value: this.anys.clientId },\n { key: 'trace', value: this.anys.traceId },\n ];\n }\n else if (!Array.isArray(message)) {\n return;\n }\n else if (message.some(item => !item.key)) {\n return;\n }\n return this.select(message);\n }\n\n clear(logs) {\n return this.queue.push(() => this.db.remove(logs)).catch(() => {});\n }\n\n /**\n * select records from db\n * https://github.com/tangshuang/indb#select\n * @param {Array} conditions\n * @returns\n */\n select(conditions) {\n return this.queue.push(() => this.db.select(conditions));\n }\n\n /**\n * delete records from db\n * @param {number|Array<number>} ids\n * @returns\n */\n remove(ids) {\n return this.queue.push(() => this.db.delete(ids)).catch(() => {});\n }\n}\n"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","AsyncQueue","constructor","this","queue","status","push","runner","resolve","reject","defer","Promise","rs","rj","item","run","setTimeout","length","fn","shift","then","finally","InDB","options","name","version","stores","asStorage","Array","isArray","isKv","cache","connection","request","indexedDB","open","onupgradeneeded","e","db","target","result","existStoreNames","from","objectStoreNames","passStoreNames","forEach","objectStore","indexOf","transaction","keyPath","primaryKeyPath","autoIncrement","createObjectStore","indexNames","deleteIndex","indexes","createIndex","unique","multiEntry","deleteObjectStore","onblocked","console","error","modifyError","Error","use","connect","onerror","onsuccess","currentStore","find","store","InDBStore","defineProperties","i","keys","getItem","setItem","put","removeItem","delete","close","deleteDatabase","databases","_queue","writable","create","mode","tx","disconnect","oncomplete","onabort","latest","deferer","cursor","index","range","direction","onTouch","onDone","onError","owner","openCursor","iterate","next","continue","stop","commit","batch","fns","promises","all","map","results","each","parse","count","reverse","some","offset","start","end","Math","min","catch","first","items","last","query","compare","IDBKeyRange","lowerBound","upperBound","only","targetObj","targetValue","select","rules","indexesMapping","compareAandB","a","b","undefined","determine","and_conditions","or_conditions","len","current","groups","conditions","optional","isOk","add","objs","remove","clear","path","res","chain","toString","split","filter","makeKeyChain","message","AnysStoreOfflinePlugin","anys","namespace","autoReport","expireTime","init","storeName","idb","timer","setInterval","logs","clearInterval","curr","Date","now","ids","log","_id","time","write","data","id","emit","read","clientId","traceId"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,28 +1,21 @@
1
1
  {
2
2
  "name": "anys-web-plugin-store-offline",
3
- "version": "1.2.0",
3
+ "version": "2.0.0",
4
4
  "description": "",
5
- "main": "cjs/index.js",
6
- "module": "src/index.js",
5
+ "main": "src/index.js",
7
6
  "type": "module",
8
- "exports": {
9
- "import": "./src/index.js",
10
- "require": "./cjs/index.js"
11
- },
12
7
  "scripts": {
13
- "build:cjs": "rimraf cjs && babel src --out-dir cjs --root-mode upward",
14
- "build:dist": "rimraf dist && webpack --config ../../webpack.config.js",
15
- "build": "npm run build:cjs && npm run build:dist"
8
+ "build": "rimraf dist && webpack --config ../../webpack.config.js"
16
9
  },
17
10
  "keywords": [],
18
11
  "author": "tangshuang",
19
12
  "license": "Apache-2.0",
20
13
  "dependencies": {
21
- "anys-shared": "^1.2.0",
14
+ "anys-shared": "^2.0.0",
22
15
  "indb": "^4.0.1"
23
16
  },
24
17
  "publishConfig": {
25
18
  "registry": "https://registry.npmjs.org/"
26
19
  },
27
- "gitHead": "34581c8ebd49b45ebe205d00f08e1bd3c117a211"
20
+ "gitHead": "4264c187b83f68eb7095c1f27eb644a21fd7df54"
28
21
  }
package/src/index.js CHANGED
@@ -8,7 +8,7 @@ export class AnysStoreOfflinePlugin {
8
8
 
9
9
  options() {
10
10
  return {
11
- namespace: new Error('[Anys]: options.namespace is required!'),
11
+ namespace: new Error('options.namespace is required!'),
12
12
  /**
13
13
  * offline log will close autoReport as default,
14
14
  * developers should must invoke anys.send to send logs to server side during
package/cjs/index.js DELETED
@@ -1,139 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.AnysStoreOfflinePlugin = void 0;
7
- var _anysShared = require("anys-shared");
8
- var _index = require("indb/es/index.js");
9
- let AnysStoreOfflinePlugin = /*#__PURE__*/function () {
10
- function AnysStoreOfflinePlugin(anys) {
11
- this.anys = anys;
12
- }
13
- var _proto = AnysStoreOfflinePlugin.prototype;
14
- _proto.options = function options() {
15
- return {
16
- namespace: new Error('[Anys]: options.namespace is required!'),
17
- /**
18
- * offline log will close autoReport as default,
19
- * developers should must invoke anys.send to send logs to server side during
20
- * which should use this.[offlineLogger].select to pick logs,
21
- * and this.[offlineLogger].remove to clear logs
22
- */
23
- autoReport: false,
24
- /**
25
- * a offline log will be delete after how long time,
26
- * default 2 day (48 hours)
27
- */
28
- expireTime: 3600000 * 48
29
- };
30
- };
31
- _proto.init = function init() {
32
- const storeName = 'anyslogs';
33
- const idb = new _index.InDB({
34
- name: this.anys.options.namespace,
35
- version: 1,
36
- stores: [{
37
- name: storeName,
38
- primaryKeyPath: '_id',
39
- autoIncrement: true
40
- }]
41
- });
42
- this.db = idb.use(storeName);
43
- this.queue = new _anysShared.AsyncQueue();
44
-
45
- /**
46
- * clear logs which should be delete from db
47
- */
48
- const {
49
- expireTime
50
- } = this.anys.options;
51
- if (expireTime) {
52
- let offset = 0;
53
- const timer = setInterval(() => {
54
- this.queue.push(() => this.db.some(100, offset)).then(logs => {
55
- if (!logs.length) {
56
- // @ts-ignore
57
- clearInterval(timer);
58
- return;
59
- }
60
- const curr = Date.now();
61
- const ids = [];
62
- logs.forEach(log => {
63
- const {
64
- _id,
65
- time
66
- } = log;
67
- if (curr - time > expireTime) {
68
- ids.push(_id);
69
- }
70
- });
71
- if (ids.length) {
72
- this.queue.push(() => this.db.delete(ids));
73
- }
74
- offset += 100;
75
- offset -= ids.length;
76
- });
77
- }, 10000);
78
- }
79
- };
80
- _proto.write = function write(data) {
81
- this.queue.push(() => this.db.add(data)).then(id => {
82
- this.anys.emit('writeOfflineLog', {
83
- id,
84
- data
85
- });
86
- });
87
- }
88
-
89
- /**
90
- * select records from db
91
- * anys.report([
92
- * { key: 'time', value: Date.now() - 3600000, compare: '>' },
93
- * { key: 'trace', value: 'xxx' },
94
- * ]);
95
- * https://github.com/tangshuang/indb#select
96
- * @param {Array} message
97
- * @returns
98
- */;
99
- _proto.read = function read(message) {
100
- if (!message) {
101
- message = [{
102
- key: 'client',
103
- value: this.anys.clientId
104
- }, {
105
- key: 'trace',
106
- value: this.anys.traceId
107
- }];
108
- } else if (!Array.isArray(message)) {
109
- return;
110
- } else if (message.some(item => !item.key)) {
111
- return;
112
- }
113
- return this.select(message);
114
- };
115
- _proto.clear = function clear(logs) {
116
- return this.queue.push(() => this.db.remove(logs)).catch(() => {});
117
- }
118
-
119
- /**
120
- * select records from db
121
- * https://github.com/tangshuang/indb#select
122
- * @param {Array} conditions
123
- * @returns
124
- */;
125
- _proto.select = function select(conditions) {
126
- return this.queue.push(() => this.db.select(conditions));
127
- }
128
-
129
- /**
130
- * delete records from db
131
- * @param {number|Array<number>} ids
132
- * @returns
133
- */;
134
- _proto.remove = function remove(ids) {
135
- return this.queue.push(() => this.db.delete(ids)).catch(() => {});
136
- };
137
- return AnysStoreOfflinePlugin;
138
- }();
139
- exports.AnysStoreOfflinePlugin = AnysStoreOfflinePlugin;