vvvfs 0.0.1-alpha.1 → 0.0.1
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/README.md +15 -16
- package/dist/vvvfs.min.js +3 -0
- package/esbuild.config.js +11 -6
- package/index.html +14 -26
- package/index.ts +441 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ const VVVFS = require("vvvfs"); // CommonJS
|
|
|
30
30
|
3. 初始化
|
|
31
31
|
|
|
32
32
|
```javascript
|
|
33
|
-
const vvvfs = new
|
|
33
|
+
const vvvfs = new VVVFS("vvvfs"); // 创建一个名为vvvfs的虚拟文件系统
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
4. 使用
|
|
@@ -39,18 +39,18 @@ const vvvfs = new VVFS("vvvfs"); // 创建一个名为vvvfs的虚拟文件系统
|
|
|
39
39
|
// 所有操作都是异步的
|
|
40
40
|
(async function () {
|
|
41
41
|
await vvvfs.reset(); // 重置文件系统
|
|
42
|
-
await vvvfs.
|
|
43
|
-
await vvvfs.
|
|
42
|
+
await vvvfs.createDir("/home/user/Desktop"); // 创建目录,返回true和false
|
|
43
|
+
await vvvfs.writeText(
|
|
44
44
|
"/home/user/Desktop/test.txt",
|
|
45
|
-
|
|
46
|
-
); //
|
|
47
|
-
console.log(await vvvfs.
|
|
48
|
-
await vvvfs.delete("/home/user/Desktop/test.txt"); //
|
|
45
|
+
"Hello World!"
|
|
46
|
+
); // 写入文本文件,写入文件还包括write(path: string, content: Blob)和writeJson(path: string, content: Record<string, any>)方法,返回true和false
|
|
47
|
+
console.log(await vvvfs.readText("/home/user/Desktop/test.txt")); // 读取文本文件,读取文件还包括read(path: string): Blob和readJson(path: string): Record<string, any>方法
|
|
48
|
+
await vvvfs.delete("/home/user/Desktop/test.txt"); // 删除文件,返回true和false
|
|
49
49
|
if (await vvvfs.exists("/home/user/Desktop")) {
|
|
50
|
-
//
|
|
50
|
+
// 判断文件或目录是否存在
|
|
51
51
|
}
|
|
52
|
-
console.log(await vvvfs.list("/home/user/Desktop")); //
|
|
53
|
-
if (await vvvfs.
|
|
52
|
+
console.log(await vvvfs.list("/home/user/Desktop")); // 列出目录下的文件,返回string[]
|
|
53
|
+
if (await vvvfs.isDir("/home/user/Desktop")) {
|
|
54
54
|
// 判断是否为目录
|
|
55
55
|
}
|
|
56
56
|
if (await vvvfs.isFile("/home/user/Desktop/test.txt")) {
|
|
@@ -58,17 +58,16 @@ const vvvfs = new VVFS("vvvfs"); // 创建一个名为vvvfs的虚拟文件系统
|
|
|
58
58
|
}
|
|
59
59
|
await vvvfs.rename(
|
|
60
60
|
"/home/user/Desktop/test.txt",
|
|
61
|
-
"
|
|
62
|
-
); //
|
|
61
|
+
"test2.txt",
|
|
62
|
+
); // 重命名文件,返回true和false
|
|
63
63
|
await vvvfs.move(
|
|
64
64
|
"/home/user/Desktop/test2.txt",
|
|
65
65
|
"/home/user/Desktop/test.txt",
|
|
66
|
-
); //
|
|
66
|
+
); // 移动文件,返回true和false
|
|
67
67
|
await vvvfs.copy(
|
|
68
68
|
"/home/user/Desktop/test.txt",
|
|
69
69
|
"/home/user/Desktop/test2.txt",
|
|
70
|
-
); //
|
|
71
|
-
await vvvfs.
|
|
72
|
-
await vvvfs.chown("/home/user/Desktop/test.txt", "root", "root"); // 修改文件所有者
|
|
70
|
+
); // 复制文件,返回true和false
|
|
71
|
+
await vvvfs.search("/home/user/Desktop", "test.txt"); // 搜索文件,返回string[]
|
|
73
72
|
})();
|
|
74
73
|
```
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
(()=>{var Sr=Object.create;var Bn=Object.defineProperty;var Kr=Object.getOwnPropertyDescriptor;var Tr=Object.getOwnPropertyNames;var Dr=Object.getPrototypeOf,Ar=Object.prototype.hasOwnProperty;var Or=(V,y,m)=>y in V?Bn(V,y,{enumerable:!0,configurable:!0,writable:!0,value:m}):V[y]=m;var Pr=(V,y)=>()=>(y||V((y={exports:{}}).exports,y),y.exports);var Cr=(V,y,m,E)=>{if(y&&typeof y=="object"||typeof y=="function")for(let A of Tr(y))!Ar.call(V,A)&&A!==m&&Bn(V,A,{get:()=>y[A],enumerable:!(E=Kr(y,A))||E.enumerable});return V};var Ir=(V,y,m)=>(m=V!=null?Sr(Dr(V)):{},Cr(y||!V||!V.__esModule?Bn(m,"default",{value:V,enumerable:!0}):m,V));var Wt=(V,y,m)=>Or(V,typeof y!="symbol"?y+"":y,m);var Fi=Pr((Mn,Fn)=>{(function(V,y){typeof Mn=="object"&&typeof Fn<"u"?Fn.exports=y():typeof define=="function"&&define.amd?define(y):(V=typeof globalThis<"u"?globalThis:V||self,V.Dexie=y())})(Mn,(function(){"use strict";var V=function(e,t){return V=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])},V(e,t)};function y(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");V(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var m=function(){return m=Object.assign||function(t){for(var n,i=1,a=arguments.length;i<a;i++){n=arguments[i];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},m.apply(this,arguments)};function E(e,t,n){if(n||arguments.length===2)for(var i=0,a=t.length,r;i<a;i++)(r||!(i in t))&&(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}typeof SuppressedError=="function"&&SuppressedError;var A=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,C=Object.keys,z=Array.isArray;typeof Promise<"u"&&!A.Promise&&(A.Promise=Promise);function L(e,t){return typeof t!="object"||C(t).forEach(function(n){e[n]=t[n]}),e}var $=Object.getPrototypeOf,Ge={}.hasOwnProperty;function J(e,t){return Ge.call(e,t)}function Be(e,t){typeof t=="function"&&(t=t($(e))),(typeof Reflect>"u"?C:Reflect.ownKeys)(t).forEach(function(n){me(e,n,t[n])})}var Wn=Object.defineProperty;function me(e,t,n,i){Wn(e,t,L(n&&J(n,"get")&&typeof n.get=="function"?{get:n.get,set:n.set,configurable:!0}:{value:n,configurable:!0,writable:!0},i))}function Me(e){return{from:function(t){return e.prototype=Object.create(t.prototype),me(e.prototype,"constructor",e),{extend:Be.bind(null,e.prototype)}}}}var $i=Object.getOwnPropertyDescriptor;function $n(e,t){var n=$i(e,t),i;return n||(i=$(e))&&$n(i,t)}var Ui=[].slice;function vt(e,t,n){return Ui.call(e,t,n)}function Un(e,t){return t(e)}function Xe(e){if(!e)throw new Error("Assertion Failed")}function Yn(e){A.setImmediate?setImmediate(e):setTimeout(e,0)}function Yi(e,t){return e.reduce(function(n,i,a){var r=t(i,a);return r&&(n[r[0]]=r[1]),n},{})}function ue(e,t){if(typeof t=="string"&&J(e,t))return e[t];if(!t)return e;if(typeof t!="string"){for(var n=[],i=0,a=t.length;i<a;++i){var r=ue(e,t[i]);n.push(r)}return n}var o=t.indexOf(".");if(o!==-1){var s=e[t.substr(0,o)];return s==null?void 0:ue(s,t.substr(o+1))}}function Z(e,t,n){if(!(!e||t===void 0)&&!("isFrozen"in Object&&Object.isFrozen(e)))if(typeof t!="string"&&"length"in t){Xe(typeof n!="string"&&"length"in n);for(var i=0,a=t.length;i<a;++i)Z(e,t[i],n[i])}else{var r=t.indexOf(".");if(r!==-1){var o=t.substr(0,r),s=t.substr(r+1);if(s==="")n===void 0?z(e)&&!isNaN(parseInt(o))?e.splice(o,1):delete e[o]:e[o]=n;else{var c=e[o];(!c||!J(e,o))&&(c=e[o]={}),Z(c,s,n)}}else n===void 0?z(e)&&!isNaN(parseInt(t))?e.splice(t,1):delete e[t]:e[t]=n}}function Qi(e,t){typeof t=="string"?Z(e,t,void 0):"length"in t&&[].map.call(t,function(n){Z(e,n,void 0)})}function Qn(e){var t={};for(var n in e)J(e,n)&&(t[n]=e[n]);return t}var Hi=[].concat;function Hn(e){return Hi.apply([],e)}var Gi="BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey".split(",").concat(Hn([8,16,32,64].map(function(e){return["Int","Uint","Float"].map(function(t){return t+e+"Array"})}))).filter(function(e){return A[e]}),Gn=new Set(Gi.map(function(e){return A[e]}));function Xn(e){var t={};for(var n in e)if(J(e,n)){var i=e[n];t[n]=!i||typeof i!="object"||Gn.has(i.constructor)?i:Xn(i)}return t}function Xi(e){for(var t in e)if(J(e,t))return!1;return!0}var Je=null;function je(e){Je=new WeakMap;var t=Ut(e);return Je=null,t}function Ut(e){if(!e||typeof e!="object")return e;var t=Je.get(e);if(t)return t;if(z(e)){t=[],Je.set(e,t);for(var n=0,i=e.length;n<i;++n)t.push(Ut(e[n]))}else if(Gn.has(e.constructor))t=e;else{var a=$(e);t=a===Object.prototype?{}:Object.create(a),Je.set(e,t);for(var r in e)J(e,r)&&(t[r]=Ut(e[r]))}return t}var Ji={}.toString;function Yt(e){return Ji.call(e).slice(8,-1)}var Qt=typeof Symbol<"u"?Symbol.iterator:"@@iterator",Zi=typeof Qt=="symbol"?function(e){var t;return e!=null&&(t=e[Qt])&&t.apply(e)}:function(){return null};function Se(e,t){var n=e.indexOf(t);return n>=0&&e.splice(n,1),n>=0}var Fe={};function pe(e){var t,n,i,a;if(arguments.length===1){if(z(e))return e.slice();if(this===Fe&&typeof e=="string")return[e];if(a=Zi(e)){for(n=[];i=a.next(),!i.done;)n.push(i.value);return n}if(e==null)return[e];if(t=e.length,typeof t=="number"){for(n=new Array(t);t--;)n[t]=e[t];return n}return[e]}for(t=arguments.length,n=new Array(t);t--;)n[t]=arguments[t];return n}var Ht=typeof Symbol<"u"?function(e){return e[Symbol.toStringTag]==="AsyncFunction"}:function(){return!1},ea=["Modify","Bulk","OpenFailed","VersionChange","Schema","Upgrade","InvalidTable","MissingAPI","NoSuchDatabase","InvalidArgument","SubTransaction","Unsupported","Internal","DatabaseClosed","PrematureCommit","ForeignAwait"],Jn=["Unknown","Constraint","Data","TransactionInactive","ReadOnly","Version","NotFound","InvalidState","InvalidAccess","Abort","Timeout","QuotaExceeded","Syntax","DataClone"],Gt=ea.concat(Jn),ta={VersionChanged:"Database version changed by other database connection",DatabaseClosed:"Database has been closed",Abort:"Transaction aborted",TransactionInactive:"Transaction has already completed or failed",MissingAPI:"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb"};function Ve(e,t){this.name=e,this.message=t}Me(Ve).from(Error).extend({toString:function(){return this.name+": "+this.message}});function Zn(e,t){return e+". Errors: "+Object.keys(t).map(function(n){return t[n].toString()}).filter(function(n,i,a){return a.indexOf(n)===i}).join(`
|
|
2
|
+
`)}function ht(e,t,n,i){this.failures=t,this.failedKeys=i,this.successCount=n,this.message=Zn(e,t)}Me(ht).from(Ve);function Le(e,t){this.name="BulkError",this.failures=Object.keys(t).map(function(n){return t[n]}),this.failuresByPos=t,this.message=Zn(e,this.failures)}Me(Le).from(Ve);var Xt=Gt.reduce(function(e,t){return e[t]=t+"Error",e},{}),na=Ve,I=Gt.reduce(function(e,t){var n=t+"Error";function i(a,r){this.name=n,a?typeof a=="string"?(this.message="".concat(a).concat(r?`
|
|
3
|
+
`+r:""),this.inner=r||null):typeof a=="object"&&(this.message="".concat(a.name," ").concat(a.message),this.inner=a):(this.message=ta[t]||n,this.inner=null)}return Me(i).from(na),e[t]=i,e},{});I.Syntax=SyntaxError,I.Type=TypeError,I.Range=RangeError;var ei=Jn.reduce(function(e,t){return e[t+"Error"]=I[t],e},{});function ia(e,t){if(!e||e instanceof Ve||e instanceof TypeError||e instanceof SyntaxError||!e.name||!ei[e.name])return e;var n=new ei[e.name](t||e.message,e);return"stack"in e&&me(n,"stack",{get:function(){return this.inner.stack}}),n}var yt=Gt.reduce(function(e,t){return["Syntax","Type","Range"].indexOf(t)===-1&&(e[t+"Error"]=I[t]),e},{});yt.ModifyError=ht,yt.DexieError=Ve,yt.BulkError=Le;function W(){}function Ze(e){return e}function aa(e,t){return e==null||e===Ze?t:function(n){return t(e(n))}}function Ke(e,t){return function(){e.apply(this,arguments),t.apply(this,arguments)}}function ra(e,t){return e===W?t:function(){var n=e.apply(this,arguments);n!==void 0&&(arguments[0]=n);var i=this.onsuccess,a=this.onerror;this.onsuccess=null,this.onerror=null;var r=t.apply(this,arguments);return i&&(this.onsuccess=this.onsuccess?Ke(i,this.onsuccess):i),a&&(this.onerror=this.onerror?Ke(a,this.onerror):a),r!==void 0?r:n}}function oa(e,t){return e===W?t:function(){e.apply(this,arguments);var n=this.onsuccess,i=this.onerror;this.onsuccess=this.onerror=null,t.apply(this,arguments),n&&(this.onsuccess=this.onsuccess?Ke(n,this.onsuccess):n),i&&(this.onerror=this.onerror?Ke(i,this.onerror):i)}}function sa(e,t){return e===W?t:function(n){var i=e.apply(this,arguments);L(n,i);var a=this.onsuccess,r=this.onerror;this.onsuccess=null,this.onerror=null;var o=t.apply(this,arguments);return a&&(this.onsuccess=this.onsuccess?Ke(a,this.onsuccess):a),r&&(this.onerror=this.onerror?Ke(r,this.onerror):r),i===void 0?o===void 0?void 0:o:L(i,o)}}function ca(e,t){return e===W?t:function(){return t.apply(this,arguments)===!1?!1:e.apply(this,arguments)}}function Jt(e,t){return e===W?t:function(){var n=e.apply(this,arguments);if(n&&typeof n.then=="function"){for(var i=this,a=arguments.length,r=new Array(a);a--;)r[a]=arguments[a];return n.then(function(){return t.apply(i,r)})}return t.apply(this,arguments)}}var oe=typeof location<"u"&&/^(http|https):\/\/(localhost|127\.0\.0\.1)/.test(location.href);function ti(e,t){oe=e}var et={},ni=100,Zt=typeof Promise>"u"?[]:(function(){var e=Promise.resolve();if(typeof crypto>"u"||!crypto.subtle)return[e,$(e),e];var t=crypto.subtle.digest("SHA-512",new Uint8Array([0]));return[t,$(t),e]})(),ii=Zt[0],ai=Zt[1],la=Zt[2],ua=ai&&ai.then,Te=ii&&ii.constructor,en=!!la;function pa(){queueMicrotask(da)}var tt=function(e,t){nt.push([e,t]),gt&&(pa(),gt=!1)},tn=!0,gt=!0,De=[],xt=[],nn=Ze,ve={id:"global",global:!0,ref:0,unhandleds:[],onunhandled:W,pgp:!1,env:{},finalize:W},O=ve,nt=[],Ae=0,bt=[];function K(e){if(typeof this!="object")throw new TypeError("Promises must be constructed via new");this._listeners=[],this._lib=!1;var t=this._PSD=O;if(typeof e!="function"){if(e!==et)throw new TypeError("Not a function");this._state=arguments[1],this._value=arguments[2],this._state===!1&&rn(this,this._value);return}this._state=null,this._value=null,++t.ref,oi(this,e)}var an={get:function(){var e=O,t=Et;function n(i,a){var r=this,o=!e.global&&(e!==O||t!==Et),s=o&&!ye(),c=new K(function(l,f){on(r,new ri(li(i,e,o,s),li(a,e,o,s),l,f,e))});return this._consoleTask&&(c._consoleTask=this._consoleTask),c}return n.prototype=et,n},set:function(e){me(this,"then",e&&e.prototype===et?an:{get:function(){return e},set:an.set})}};Be(K.prototype,{then:an,_then:function(e,t){on(this,new ri(null,null,e,t,O))},catch:function(e){if(arguments.length===1)return this.then(null,e);var t=arguments[0],n=arguments[1];return typeof t=="function"?this.then(null,function(i){return i instanceof t?n(i):wt(i)}):this.then(null,function(i){return i&&i.name===t?n(i):wt(i)})},finally:function(e){return this.then(function(t){return K.resolve(e()).then(function(){return t})},function(t){return K.resolve(e()).then(function(){return wt(t)})})},timeout:function(e,t){var n=this;return e<1/0?new K(function(i,a){var r=setTimeout(function(){return a(new I.Timeout(t))},e);n.then(i,a).finally(clearTimeout.bind(null,r))}):this}}),typeof Symbol<"u"&&Symbol.toStringTag&&me(K.prototype,Symbol.toStringTag,"Dexie.Promise"),ve.env=ci();function ri(e,t,n,i,a){this.onFulfilled=typeof e=="function"?e:null,this.onRejected=typeof t=="function"?t:null,this.resolve=n,this.reject=i,this.psd=a}Be(K,{all:function(){var e=pe.apply(null,arguments).map(jt);return new K(function(t,n){e.length===0&&t([]);var i=e.length;e.forEach(function(a,r){return K.resolve(a).then(function(o){e[r]=o,--i||t(e)},n)})})},resolve:function(e){if(e instanceof K)return e;if(e&&typeof e.then=="function")return new K(function(n,i){e.then(n,i)});var t=new K(et,!0,e);return t},reject:wt,race:function(){var e=pe.apply(null,arguments).map(jt);return new K(function(t,n){e.map(function(i){return K.resolve(i).then(t,n)})})},PSD:{get:function(){return O},set:function(e){return O=e}},totalEchoes:{get:function(){return Et}},newPSD:he,usePSD:Oe,scheduler:{get:function(){return tt},set:function(e){tt=e}},rejectionMapper:{get:function(){return nn},set:function(e){nn=e}},follow:function(e,t){return new K(function(n,i){return he(function(a,r){var o=O;o.unhandleds=[],o.onunhandled=r,o.finalize=Ke(function(){var s=this;ma(function(){s.unhandleds.length===0?a():r(s.unhandleds[0])})},o.finalize),e()},t,n,i)})}}),Te&&(Te.allSettled&&me(K,"allSettled",function(){var e=pe.apply(null,arguments).map(jt);return new K(function(t){e.length===0&&t([]);var n=e.length,i=new Array(n);e.forEach(function(a,r){return K.resolve(a).then(function(o){return i[r]={status:"fulfilled",value:o}},function(o){return i[r]={status:"rejected",reason:o}}).then(function(){return--n||t(i)})})})}),Te.any&&typeof AggregateError<"u"&&me(K,"any",function(){var e=pe.apply(null,arguments).map(jt);return new K(function(t,n){e.length===0&&n(new AggregateError([]));var i=e.length,a=new Array(i);e.forEach(function(r,o){return K.resolve(r).then(function(s){return t(s)},function(s){a[o]=s,--i||n(new AggregateError(a))})})})}),Te.withResolvers&&(K.withResolvers=Te.withResolvers));function oi(e,t){try{t(function(n){if(e._state===null){if(n===e)throw new TypeError("A promise cannot be resolved with itself.");var i=e._lib&&Ne();n&&typeof n.then=="function"?oi(e,function(a,r){n instanceof K?n._then(a,r):n.then(a,r)}):(e._state=!0,e._value=n,si(e)),i&&qe()}},rn.bind(null,e))}catch(n){rn(e,n)}}function rn(e,t){if(xt.push(t),e._state===null){var n=e._lib&&Ne();t=nn(t),e._state=!1,e._value=t,va(e),si(e),n&&qe()}}function si(e){var t=e._listeners;e._listeners=[];for(var n=0,i=t.length;n<i;++n)on(e,t[n]);var a=e._PSD;--a.ref||a.finalize(),Ae===0&&(++Ae,tt(function(){--Ae===0&&sn()},[]))}function on(e,t){if(e._state===null){e._listeners.push(t);return}var n=e._state?t.onFulfilled:t.onRejected;if(n===null)return(e._state?t.resolve:t.reject)(e._value);++t.psd.ref,++Ae,tt(fa,[n,e,t])}function fa(e,t,n){try{var i,a=t._value;!t._state&&xt.length&&(xt=[]),i=oe&&t._consoleTask?t._consoleTask.run(function(){return e(a)}):e(a),!t._state&&xt.indexOf(a)===-1&&ha(t),n.resolve(i)}catch(r){n.reject(r)}finally{--Ae===0&&sn(),--n.psd.ref||n.psd.finalize()}}function da(){Oe(ve,function(){Ne()&&qe()})}function Ne(){var e=tn;return tn=!1,gt=!1,e}function qe(){var e,t,n;do for(;nt.length>0;)for(e=nt,nt=[],n=e.length,t=0;t<n;++t){var i=e[t];i[0].apply(null,i[1])}while(nt.length>0);tn=!0,gt=!0}function sn(){var e=De;De=[],e.forEach(function(i){i._PSD.onunhandled.call(null,i._value,i)});for(var t=bt.slice(0),n=t.length;n;)t[--n]()}function ma(e){function t(){e(),bt.splice(bt.indexOf(t),1)}bt.push(t),++Ae,tt(function(){--Ae===0&&sn()},[])}function va(e){De.some(function(t){return t._value===e._value})||De.push(e)}function ha(e){for(var t=De.length;t;)if(De[--t]._value===e._value){De.splice(t,1);return}}function wt(e){return new K(et,!1,e)}function U(e,t){var n=O;return function(){var i=Ne(),a=O;try{return ge(n,!0),e.apply(this,arguments)}catch(r){t&&t(r)}finally{ge(a,!1),i&&qe()}}}var H={awaits:0,echoes:0,id:0},ya=0,_t=[],kt=0,Et=0,ga=0;function he(e,t,n,i){var a=O,r=Object.create(a);r.parent=a,r.ref=0,r.global=!1,r.id=++ga,ve.env,r.env=en?{Promise:K,PromiseProp:{value:K,configurable:!0,writable:!0},all:K.all,race:K.race,allSettled:K.allSettled,any:K.any,resolve:K.resolve,reject:K.reject}:{},t&&L(r,t),++a.ref,r.finalize=function(){--this.parent.ref||this.parent.finalize()};var o=Oe(r,e,n,i);return r.ref===0&&r.finalize(),o}function We(){return H.id||(H.id=++ya),++H.awaits,H.echoes+=ni,H.id}function ye(){return H.awaits?(--H.awaits===0&&(H.id=0),H.echoes=H.awaits*ni,!0):!1}(""+ua).indexOf("[native code]")===-1&&(We=ye=W);function jt(e){return H.echoes&&e&&e.constructor===Te?(We(),e.then(function(t){return ye(),t},function(t){return ye(),Q(t)})):e}function xa(e){++Et,(!H.echoes||--H.echoes===0)&&(H.echoes=H.awaits=H.id=0),_t.push(O),ge(e,!0)}function ba(){var e=_t[_t.length-1];_t.pop(),ge(e,!1)}function ge(e,t){var n=O;if((t?H.echoes&&(!kt++||e!==O):kt&&(!--kt||e!==O))&&queueMicrotask(t?xa.bind(null,e):ba),e!==O&&(O=e,n===ve&&(ve.env=ci()),en)){var i=ve.env.Promise,a=e.env;(n.global||e.global)&&(Object.defineProperty(A,"Promise",a.PromiseProp),i.all=a.all,i.race=a.race,i.resolve=a.resolve,i.reject=a.reject,a.allSettled&&(i.allSettled=a.allSettled),a.any&&(i.any=a.any))}}function ci(){var e=A.Promise;return en?{Promise:e,PromiseProp:Object.getOwnPropertyDescriptor(A,"Promise"),all:e.all,race:e.race,allSettled:e.allSettled,any:e.any,resolve:e.resolve,reject:e.reject}:{}}function Oe(e,t,n,i,a){var r=O;try{return ge(e,!0),t(n,i,a)}finally{ge(r,!1)}}function li(e,t,n,i){return typeof e!="function"?e:function(){var a=O;n&&We(),ge(t,!0);try{return e.apply(this,arguments)}finally{ge(a,!1),i&&queueMicrotask(ye)}}}function cn(e){Promise===Te&&H.echoes===0?kt===0?e():enqueueNativeMicroTask(e):setTimeout(e,0)}var Q=K.reject;function ln(e,t,n,i){if(!e.idbdb||!e._state.openComplete&&!O.letThrough&&!e._vip){if(e._state.openComplete)return Q(new I.DatabaseClosed(e._state.dbOpenError));if(!e._state.isBeingOpened){if(!e._state.autoOpen)return Q(new I.DatabaseClosed);e.open().catch(W)}return e._state.dbReadyPromise.then(function(){return ln(e,t,n,i)})}else{var a=e._createTransaction(t,n,e._dbSchema);try{a.create(),e._state.PR1398_maxLoop=3}catch(r){return r.name===Xt.InvalidState&&e.isOpen()&&--e._state.PR1398_maxLoop>0?(console.warn("Dexie: Need to reopen db"),e.close({disableAutoOpen:!1}),e.open().then(function(){return ln(e,t,n,i)})):Q(r)}return a._promise(t,function(r,o){return he(function(){return O.trans=a,i(r,o,a)})}).then(function(r){if(t==="readwrite")try{a.idbtrans.commit()}catch{}return t==="readonly"?r:a._completion.then(function(){return r})})}}var ui="4.3.0",Pe="\uFFFF",un=-1/0,fe="Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.",pi="String expected.",$e=[],St="__dbnames",pn="readonly",fn="readwrite";function Ce(e,t){return e?t?function(){return e.apply(this,arguments)&&t.apply(this,arguments)}:e:t}var fi={type:3,lower:-1/0,lowerOpen:!1,upper:[[]],upperOpen:!1};function Kt(e){return typeof e=="string"&&!/\./.test(e)?function(t){return t[e]===void 0&&e in t&&(t=je(t),delete t[e]),t}:function(t){return t}}function di(){throw I.Type("Entity instances must never be new:ed. Instances are generated by the framework bypassing the constructor.")}function N(e,t){try{var n=mi(e),i=mi(t);if(n!==i)return n==="Array"?1:i==="Array"?-1:n==="binary"?1:i==="binary"?-1:n==="string"?1:i==="string"?-1:n==="Date"?1:i!=="Date"?NaN:-1;switch(n){case"number":case"Date":case"string":return e>t?1:e<t?-1:0;case"binary":return _a(vi(e),vi(t));case"Array":return wa(e,t)}}catch{}return NaN}function wa(e,t){for(var n=e.length,i=t.length,a=n<i?n:i,r=0;r<a;++r){var o=N(e[r],t[r]);if(o!==0)return o}return n===i?0:n<i?-1:1}function _a(e,t){for(var n=e.length,i=t.length,a=n<i?n:i,r=0;r<a;++r)if(e[r]!==t[r])return e[r]<t[r]?-1:1;return n===i?0:n<i?-1:1}function mi(e){var t=typeof e;if(t!=="object")return t;if(ArrayBuffer.isView(e))return"binary";var n=Yt(e);return n==="ArrayBuffer"?"binary":n}function vi(e){return e instanceof Uint8Array?e:ArrayBuffer.isView(e)?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(e)}function Tt(e,t,n){var i=e.schema.yProps;return i?(t&&n.numFailures>0&&(t=t.filter(function(a,r){return!n.failures[r]})),Promise.all(i.map(function(a){var r=a.updatesTable;return t?e.db.table(r).where("k").anyOf(t).delete():e.db.table(r).clear()})).then(function(){return n})):n}var it=(function(){function e(t){this["@@propmod"]=t}return e.prototype.execute=function(t){var n,i=this["@@propmod"];if(i.add!==void 0){var a=i.add;if(z(a))return E(E([],z(t)?t:[],!0),a,!0).sort();if(typeof a=="number")return(Number(t)||0)+a;if(typeof a=="bigint")try{return BigInt(t)+a}catch{return BigInt(0)+a}throw new TypeError("Invalid term ".concat(a))}if(i.remove!==void 0){var r=i.remove;if(z(r))return z(t)?t.filter(function(s){return!r.includes(s)}).sort():[];if(typeof r=="number")return Number(t)-r;if(typeof r=="bigint")try{return BigInt(t)-r}catch{return BigInt(0)-r}throw new TypeError("Invalid subtrahend ".concat(r))}var o=(n=i.replacePrefix)===null||n===void 0?void 0:n[0];return o&&typeof t=="string"&&t.startsWith(o)?i.replacePrefix[1]+t.substring(o.length):t},e})();function hi(e,t){for(var n=C(t),i=n.length,a=!1,r=0;r<i;++r){var o=n[r],s=t[o],c=ue(e,o);s instanceof it?(Z(e,o,s.execute(c)),a=!0):c!==s&&(Z(e,o,s),a=!0)}return a}var yi=(function(){function e(){}return e.prototype._trans=function(t,n,i){var a=this._tx||O.trans,r=this.name,o=oe&&typeof console<"u"&&console.createTask&&console.createTask("Dexie: ".concat(t==="readonly"?"read":"write"," ").concat(this.name));function s(f,u,h){if(!h.schema[r])throw new I.NotFound("Table "+r+" not part of transaction");return n(h.idbtrans,h)}var c=Ne();try{var l=a&&a.db._novip===this.db._novip?a===O.trans?a._promise(t,s,i):he(function(){return a._promise(t,s,i)},{trans:a,transless:O.transless||O}):ln(this.db,t,[this.name],s);return o&&(l._consoleTask=o,l=l.catch(function(f){return console.trace(f),Q(f)})),l}finally{c&&qe()}},e.prototype.get=function(t,n){var i=this;return t&&t.constructor===Object?this.where(t).first(n):t==null?Q(new I.Type("Invalid argument to Table.get()")):this._trans("readonly",function(a){return i.core.get({trans:a,key:t}).then(function(r){return i.hook.reading.fire(r)})}).then(n)},e.prototype.where=function(t){if(typeof t=="string")return new this.db.WhereClause(this,t);if(z(t))return new this.db.WhereClause(this,"[".concat(t.join("+"),"]"));var n=C(t);if(n.length===1)return this.where(n[0]).equals(t[n[0]]);var i=this.schema.indexes.concat(this.schema.primKey).filter(function(f){if(f.compound&&n.every(function(h){return f.keyPath.indexOf(h)>=0})){for(var u=0;u<n.length;++u)if(n.indexOf(f.keyPath[u])===-1)return!1;return!0}return!1}).sort(function(f,u){return f.keyPath.length-u.keyPath.length})[0];if(i&&this.db._maxKey!==Pe){var a=i.keyPath.slice(0,n.length);return this.where(a).equals(a.map(function(f){return t[f]}))}!i&&oe&&console.warn("The query ".concat(JSON.stringify(t)," on ").concat(this.name," would benefit from a ")+"compound index [".concat(n.join("+"),"]"));var r=this.schema.idxByName;function o(f,u){return N(f,u)===0}var s=n.reduce(function(f,u){var h=f[0],k=f[1],p=r[u],d=t[u];return[h||p,h||!p?Ce(k,p&&p.multi?function(v){var g=ue(v,u);return z(g)&&g.some(function(b){return o(d,b)})}:function(v){return o(d,ue(v,u))}):k]},[null,null]),c=s[0],l=s[1];return c?this.where(c.name).equals(t[c.keyPath]).filter(l):i?this.filter(l):this.where(n).equals("")},e.prototype.filter=function(t){return this.toCollection().and(t)},e.prototype.count=function(t){return this.toCollection().count(t)},e.prototype.offset=function(t){return this.toCollection().offset(t)},e.prototype.limit=function(t){return this.toCollection().limit(t)},e.prototype.each=function(t){return this.toCollection().each(t)},e.prototype.toArray=function(t){return this.toCollection().toArray(t)},e.prototype.toCollection=function(){return new this.db.Collection(new this.db.WhereClause(this))},e.prototype.orderBy=function(t){return new this.db.Collection(new this.db.WhereClause(this,z(t)?"[".concat(t.join("+"),"]"):t))},e.prototype.reverse=function(){return this.toCollection().reverse()},e.prototype.mapToClass=function(t){var n=this,i=n.db,a=n.name;this.schema.mappedClass=t,t.prototype instanceof di&&(t=(function(c){y(l,c);function l(){return c!==null&&c.apply(this,arguments)||this}return Object.defineProperty(l.prototype,"db",{get:function(){return i},enumerable:!1,configurable:!0}),l.prototype.table=function(){return a},l})(t));for(var r=new Set,o=t.prototype;o;o=$(o))Object.getOwnPropertyNames(o).forEach(function(c){return r.add(c)});var s=function(c){if(!c)return c;var l=Object.create(t.prototype);for(var f in c)if(!r.has(f))try{l[f]=c[f]}catch{}return l};return this.schema.readHook&&this.hook.reading.unsubscribe(this.schema.readHook),this.schema.readHook=s,this.hook("reading",s),t},e.prototype.defineClass=function(){function t(n){L(this,n)}return this.mapToClass(t)},e.prototype.add=function(t,n){var i=this,a=this.schema.primKey,r=a.auto,o=a.keyPath,s=t;return o&&r&&(s=Kt(o)(t)),this._trans("readwrite",function(c){return i.core.mutate({trans:c,type:"add",keys:n!=null?[n]:null,values:[s]})}).then(function(c){return c.numFailures?K.reject(c.failures[0]):c.lastResult}).then(function(c){if(o)try{Z(t,o,c)}catch{}return c})},e.prototype.upsert=function(t,n){var i=this,a=this.schema.primKey.keyPath;return this._trans("readwrite",function(r){return i.core.get({trans:r,key:t}).then(function(o){var s=o!=null?o:{};return hi(s,n),a&&Z(s,a,t),i.core.mutate({trans:r,type:"put",values:[s],keys:[t],upsert:!0,updates:{keys:[t],changeSpecs:[n]}}).then(function(c){return c.numFailures?K.reject(c.failures[0]):!!o})})})},e.prototype.update=function(t,n){if(typeof t=="object"&&!z(t)){var i=ue(t,this.schema.primKey.keyPath);return i===void 0?Q(new I.InvalidArgument("Given object does not contain its primary key")):this.where(":id").equals(i).modify(n)}else return this.where(":id").equals(t).modify(n)},e.prototype.put=function(t,n){var i=this,a=this.schema.primKey,r=a.auto,o=a.keyPath,s=t;return o&&r&&(s=Kt(o)(t)),this._trans("readwrite",function(c){return i.core.mutate({trans:c,type:"put",values:[s],keys:n!=null?[n]:null})}).then(function(c){return c.numFailures?K.reject(c.failures[0]):c.lastResult}).then(function(c){if(o)try{Z(t,o,c)}catch{}return c})},e.prototype.delete=function(t){var n=this;return this._trans("readwrite",function(i){return n.core.mutate({trans:i,type:"delete",keys:[t]}).then(function(a){return Tt(n,[t],a)}).then(function(a){return a.numFailures?K.reject(a.failures[0]):void 0})})},e.prototype.clear=function(){var t=this;return this._trans("readwrite",function(n){return t.core.mutate({trans:n,type:"deleteRange",range:fi}).then(function(i){return Tt(t,null,i)})}).then(function(n){return n.numFailures?K.reject(n.failures[0]):void 0})},e.prototype.bulkGet=function(t){var n=this;return this._trans("readonly",function(i){return n.core.getMany({keys:t,trans:i}).then(function(a){return a.map(function(r){return n.hook.reading.fire(r)})})})},e.prototype.bulkAdd=function(t,n,i){var a=this,r=Array.isArray(n)?n:void 0;i=i||(r?void 0:n);var o=i?i.allKeys:void 0;return this._trans("readwrite",function(s){var c=a.schema.primKey,l=c.auto,f=c.keyPath;if(f&&r)throw new I.InvalidArgument("bulkAdd(): keys argument invalid on tables with inbound keys");if(r&&r.length!==t.length)throw new I.InvalidArgument("Arguments objects and keys must have the same length");var u=t.length,h=f&&l?t.map(Kt(f)):t;return a.core.mutate({trans:s,type:"add",keys:r,values:h,wantResults:o}).then(function(k){var p=k.numFailures,d=k.results,v=k.lastResult,g=k.failures,b=o?d:v;if(p===0)return b;throw new Le("".concat(a.name,".bulkAdd(): ").concat(p," of ").concat(u," operations failed"),g)})})},e.prototype.bulkPut=function(t,n,i){var a=this,r=Array.isArray(n)?n:void 0;i=i||(r?void 0:n);var o=i?i.allKeys:void 0;return this._trans("readwrite",function(s){var c=a.schema.primKey,l=c.auto,f=c.keyPath;if(f&&r)throw new I.InvalidArgument("bulkPut(): keys argument invalid on tables with inbound keys");if(r&&r.length!==t.length)throw new I.InvalidArgument("Arguments objects and keys must have the same length");var u=t.length,h=f&&l?t.map(Kt(f)):t;return a.core.mutate({trans:s,type:"put",keys:r,values:h,wantResults:o}).then(function(k){var p=k.numFailures,d=k.results,v=k.lastResult,g=k.failures,b=o?d:v;if(p===0)return b;throw new Le("".concat(a.name,".bulkPut(): ").concat(p," of ").concat(u," operations failed"),g)})})},e.prototype.bulkUpdate=function(t){var n=this,i=this.core,a=t.map(function(s){return s.key}),r=t.map(function(s){return s.changes}),o=[];return this._trans("readwrite",function(s){return i.getMany({trans:s,keys:a,cache:"clone"}).then(function(c){var l=[],f=[];t.forEach(function(h,k){var p=h.key,d=h.changes,v=c[k];if(v){for(var g=0,b=Object.keys(d);g<b.length;g++){var w=b[g],_=d[w];if(w===n.schema.primKey.keyPath){if(N(_,p)!==0)throw new I.Constraint("Cannot update primary key in bulkUpdate()")}else Z(v,w,_)}o.push(k),l.push(p),f.push(v)}});var u=l.length;return i.mutate({trans:s,type:"put",keys:l,values:f,updates:{keys:a,changeSpecs:r}}).then(function(h){var k=h.numFailures,p=h.failures;if(k===0)return u;for(var d=0,v=Object.keys(p);d<v.length;d++){var g=v[d],b=o[Number(g)];if(b!=null){var w=p[g];delete p[g],p[b]=w}}throw new Le("".concat(n.name,".bulkUpdate(): ").concat(k," of ").concat(u," operations failed"),p)})})})},e.prototype.bulkDelete=function(t){var n=this,i=t.length;return this._trans("readwrite",function(a){return n.core.mutate({trans:a,type:"delete",keys:t}).then(function(r){return Tt(n,t,r)})}).then(function(a){var r=a.numFailures,o=a.lastResult,s=a.failures;if(r===0)return o;throw new Le("".concat(n.name,".bulkDelete(): ").concat(r," of ").concat(i," operations failed"),s)})},e})();function at(e){var t={},n=function(s,c){if(c){for(var l=arguments.length,f=new Array(l-1);--l;)f[l-1]=arguments[l];return t[s].subscribe.apply(null,f),e}else if(typeof s=="string")return t[s]};n.addEventType=r;for(var i=1,a=arguments.length;i<a;++i)r(arguments[i]);return n;function r(s,c,l){if(typeof s=="object")return o(s);c||(c=ca),l||(l=W);var f={subscribers:[],fire:l,subscribe:function(u){f.subscribers.indexOf(u)===-1&&(f.subscribers.push(u),f.fire=c(f.fire,u))},unsubscribe:function(u){f.subscribers=f.subscribers.filter(function(h){return h!==u}),f.fire=f.subscribers.reduce(c,l)}};return t[s]=n[s]=f,f}function o(s){C(s).forEach(function(c){var l=s[c];if(z(l))r(c,s[c][0],s[c][1]);else if(l==="asap")var f=r(c,Ze,function(){for(var h=arguments.length,k=new Array(h);h--;)k[h]=arguments[h];f.subscribers.forEach(function(p){Yn(function(){p.apply(null,k)})})});else throw new I.InvalidArgument("Invalid event config")})}}function rt(e,t){return Me(t).from({prototype:e}),t}function ka(e){return rt(yi.prototype,function(n,i,a){this.db=e,this._tx=a,this.name=n,this.schema=i,this.hook=e._allTables[n]?e._allTables[n].hook:at(null,{creating:[ra,W],reading:[aa,Ze],updating:[sa,W],deleting:[oa,W]})})}function Ue(e,t){return!(e.filter||e.algorithm||e.or)&&(t?e.justLimit:!e.replayFilter)}function dn(e,t){e.filter=Ce(e.filter,t)}function mn(e,t,n){var i=e.replayFilter;e.replayFilter=i?function(){return Ce(i(),t())}:t,e.justLimit=n&&!i}function Ea(e,t){e.isMatch=Ce(e.isMatch,t)}function Dt(e,t){if(e.isPrimKey)return t.primaryKey;var n=t.getIndexByKeyPath(e.index);if(!n)throw new I.Schema("KeyPath "+e.index+" on object store "+t.name+" is not indexed");return n}function gi(e,t,n){var i=Dt(e,t.schema);return t.openCursor({trans:n,values:!e.keysOnly,reverse:e.dir==="prev",unique:!!e.unique,query:{index:i,range:e.range}})}function At(e,t,n,i){var a=e.replayFilter?Ce(e.filter,e.replayFilter()):e.filter;if(e.or){var r={},o=function(s,c,l){if(!a||a(c,l,function(h){return c.stop(h)},function(h){return c.fail(h)})){var f=c.primaryKey,u=""+f;u==="[object ArrayBuffer]"&&(u=""+new Uint8Array(f)),J(r,u)||(r[u]=!0,t(s,c,l))}};return Promise.all([e.or._iterate(o,n),xi(gi(e,i,n),e.algorithm,o,!e.keysOnly&&e.valueMapper)])}else return xi(gi(e,i,n),Ce(e.algorithm,a),t,!e.keysOnly&&e.valueMapper)}function xi(e,t,n,i){var a=i?function(o,s,c){return n(i(o),s,c)}:n,r=U(a);return e.then(function(o){if(o)return o.start(function(){var s=function(){return o.continue()};(!t||t(o,function(c){return s=c},function(c){o.stop(c),s=W},function(c){o.fail(c),s=W}))&&r(o.value,o,function(c){return s=c}),s()})})}var ja=(function(){function e(){}return e.prototype._read=function(t,n){var i=this._ctx;return i.error?i.table._trans(null,Q.bind(null,i.error)):i.table._trans("readonly",t).then(n)},e.prototype._write=function(t){var n=this._ctx;return n.error?n.table._trans(null,Q.bind(null,n.error)):n.table._trans("readwrite",t,"locked")},e.prototype._addAlgorithm=function(t){var n=this._ctx;n.algorithm=Ce(n.algorithm,t)},e.prototype._iterate=function(t,n){return At(this._ctx,t,n,this._ctx.table.core)},e.prototype.clone=function(t){var n=Object.create(this.constructor.prototype),i=Object.create(this._ctx);return t&&L(i,t),n._ctx=i,n},e.prototype.raw=function(){return this._ctx.valueMapper=null,this},e.prototype.each=function(t){var n=this._ctx;return this._read(function(i){return At(n,t,i,n.table.core)})},e.prototype.count=function(t){var n=this;return this._read(function(i){var a=n._ctx,r=a.table.core;if(Ue(a,!0))return r.count({trans:i,query:{index:Dt(a,r.schema),range:a.range}}).then(function(s){return Math.min(s,a.limit)});var o=0;return At(a,function(){return++o,!1},i,r).then(function(){return o})}).then(t)},e.prototype.sortBy=function(t,n){var i=t.split(".").reverse(),a=i[0],r=i.length-1;function o(l,f){return f?o(l[i[f]],f-1):l[a]}var s=this._ctx.dir==="next"?1:-1;function c(l,f){var u=o(l,r),h=o(f,r);return N(u,h)*s}return this.toArray(function(l){return l.sort(c)}).then(n)},e.prototype.toArray=function(t){var n=this;return this._read(function(i){var a=n._ctx;if(a.dir==="next"&&Ue(a,!0)&&a.limit>0){var r=a.valueMapper,o=Dt(a,a.table.core.schema);return a.table.core.query({trans:i,limit:a.limit,values:!0,query:{index:o,range:a.range}}).then(function(c){var l=c.result;return r?l.map(r):l})}else{var s=[];return At(a,function(c){return s.push(c)},i,a.table.core).then(function(){return s})}},t)},e.prototype.offset=function(t){var n=this._ctx;return t<=0?this:(n.offset+=t,Ue(n)?mn(n,function(){var i=t;return function(a,r){return i===0?!0:i===1?(--i,!1):(r(function(){a.advance(i),i=0}),!1)}}):mn(n,function(){var i=t;return function(){return--i<0}}),this)},e.prototype.limit=function(t){return this._ctx.limit=Math.min(this._ctx.limit,t),mn(this._ctx,function(){var n=t;return function(i,a,r){return--n<=0&&a(r),n>=0}},!0),this},e.prototype.until=function(t,n){return dn(this._ctx,function(i,a,r){return t(i.value)?(a(r),n):!0}),this},e.prototype.first=function(t){return this.limit(1).toArray(function(n){return n[0]}).then(t)},e.prototype.last=function(t){return this.reverse().first(t)},e.prototype.filter=function(t){return dn(this._ctx,function(n){return t(n.value)}),Ea(this._ctx,t),this},e.prototype.and=function(t){return this.filter(t)},e.prototype.or=function(t){return new this.db.WhereClause(this._ctx.table,t,this)},e.prototype.reverse=function(){return this._ctx.dir=this._ctx.dir==="prev"?"next":"prev",this._ondirectionchange&&this._ondirectionchange(this._ctx.dir),this},e.prototype.desc=function(){return this.reverse()},e.prototype.eachKey=function(t){var n=this._ctx;return n.keysOnly=!n.isMatch,this.each(function(i,a){t(a.key,a)})},e.prototype.eachUniqueKey=function(t){return this._ctx.unique="unique",this.eachKey(t)},e.prototype.eachPrimaryKey=function(t){var n=this._ctx;return n.keysOnly=!n.isMatch,this.each(function(i,a){t(a.primaryKey,a)})},e.prototype.keys=function(t){var n=this._ctx;n.keysOnly=!n.isMatch;var i=[];return this.each(function(a,r){i.push(r.key)}).then(function(){return i}).then(t)},e.prototype.primaryKeys=function(t){var n=this._ctx;if(n.dir==="next"&&Ue(n,!0)&&n.limit>0)return this._read(function(a){var r=Dt(n,n.table.core.schema);return n.table.core.query({trans:a,values:!1,limit:n.limit,query:{index:r,range:n.range}})}).then(function(a){var r=a.result;return r}).then(t);n.keysOnly=!n.isMatch;var i=[];return this.each(function(a,r){i.push(r.primaryKey)}).then(function(){return i}).then(t)},e.prototype.uniqueKeys=function(t){return this._ctx.unique="unique",this.keys(t)},e.prototype.firstKey=function(t){return this.limit(1).keys(function(n){return n[0]}).then(t)},e.prototype.lastKey=function(t){return this.reverse().firstKey(t)},e.prototype.distinct=function(){var t=this._ctx,n=t.index&&t.table.schema.idxByName[t.index];if(!n||!n.multi)return this;var i={};return dn(this._ctx,function(a){var r=a.primaryKey.toString(),o=J(i,r);return i[r]=!0,!o}),this},e.prototype.modify=function(t){var n=this,i=this._ctx;return this._write(function(a){var r;typeof t=="function"?r=t:r=function(g){return hi(g,t)};var o=i.table.core,s=o.schema.primaryKey,c=s.outbound,l=s.extractKey,f=200,u=n.db._options.modifyChunkSize;u&&(typeof u=="object"?f=u[o.name]||u["*"]||200:f=u);var h=[],k=0,p=[],d=function(g,b){var w=b.failures,_=b.numFailures;k+=g-_;for(var x=0,j=C(w);x<j.length;x++){var T=j[x];h.push(w[T])}},v=t===bi;return n.clone().primaryKeys().then(function(g){var b=Ue(i)&&i.limit===1/0&&(typeof t!="function"||v)&&{index:i.index,range:i.range},w=function(_){var x=Math.min(f,g.length-_),j=g.slice(_,_+x);return(v?Promise.resolve([]):o.getMany({trans:a,keys:j,cache:"immutable"})).then(function(T){var S=[],R=[],F=c?[]:null,D=v?j:[];if(!v)for(var M=0;M<x;++M){var B=T[M],q={value:je(B),primKey:g[_+M]};r.call(q,q.value,q)!==!1&&(q.value==null?D.push(g[_+M]):!c&&N(l(B),l(q.value))!==0?(D.push(g[_+M]),S.push(q.value)):(R.push(q.value),c&&F.push(g[_+M])))}return Promise.resolve(S.length>0&&o.mutate({trans:a,type:"add",values:S}).then(function(P){for(var Y in P.failures)D.splice(parseInt(Y),1);d(S.length,P)})).then(function(){return(R.length>0||b&&typeof t=="object")&&o.mutate({trans:a,type:"put",keys:F,values:R,criteria:b,changeSpec:typeof t!="function"&&t,isAdditionalChunk:_>0}).then(function(P){return d(R.length,P)})}).then(function(){return(D.length>0||b&&v)&&o.mutate({trans:a,type:"delete",keys:D,criteria:b,isAdditionalChunk:_>0}).then(function(P){return Tt(i.table,D,P)}).then(function(P){return d(D.length,P)})}).then(function(){return g.length>_+x&&w(_+f)})})};return w(0).then(function(){if(h.length>0)throw new ht("Error modifying one or more objects",h,k,p);return g.length})})})},e.prototype.delete=function(){var t=this._ctx,n=t.range;return Ue(t)&&!t.table.schema.yProps&&(t.isPrimKey||n.type===3)?this._write(function(i){var a=t.table.core.schema.primaryKey,r=n;return t.table.core.count({trans:i,query:{index:a,range:r}}).then(function(o){return t.table.core.mutate({trans:i,type:"deleteRange",range:r}).then(function(s){var c=s.failures,l=s.numFailures;if(l)throw new ht("Could not delete some values",Object.keys(c).map(function(f){return c[f]}),o-l);return o-l})})}):this.modify(bi)},e})(),bi=function(e,t){return t.value=null};function Sa(e){return rt(ja.prototype,function(n,i){this.db=e;var a=fi,r=null;if(i)try{a=i()}catch(l){r=l}var o=n._ctx,s=o.table,c=s.hook.reading.fire;this._ctx={table:s,index:o.index,isPrimKey:!o.index||s.schema.primKey.keyPath&&o.index===s.schema.primKey.name,range:a,keysOnly:!1,dir:"next",unique:"",algorithm:null,filter:null,replayFilter:null,justLimit:!0,isMatch:null,offset:0,limit:1/0,error:r,or:o.or,valueMapper:c!==Ze?c:null}})}function Ka(e,t){return e<t?-1:e===t?0:1}function Ta(e,t){return e>t?-1:e===t?0:1}function ne(e,t,n){var i=e instanceof _i?new e.Collection(e):e;return i._ctx.error=n?new n(t):new TypeError(t),i}function Ye(e){return new e.Collection(e,function(){return wi("")}).limit(0)}function Da(e){return e==="next"?function(t){return t.toUpperCase()}:function(t){return t.toLowerCase()}}function Aa(e){return e==="next"?function(t){return t.toLowerCase()}:function(t){return t.toUpperCase()}}function Oa(e,t,n,i,a,r){for(var o=Math.min(e.length,i.length),s=-1,c=0;c<o;++c){var l=t[c];if(l!==i[c])return a(e[c],n[c])<0?e.substr(0,c)+n[c]+n.substr(c+1):a(e[c],i[c])<0?e.substr(0,c)+i[c]+n.substr(c+1):s>=0?e.substr(0,s)+t[s]+n.substr(s+1):null;a(e[c],l)<0&&(s=c)}return o<i.length&&r==="next"?e+n.substr(e.length):o<e.length&&r==="prev"?e.substr(0,n.length):s<0?null:e.substr(0,s)+i[s]+n.substr(s+1)}function Ot(e,t,n,i){var a,r,o,s,c,l,f,u=n.length;if(!n.every(function(d){return typeof d=="string"}))return ne(e,pi);function h(d){a=Da(d),r=Aa(d),o=d==="next"?Ka:Ta;var v=n.map(function(g){return{lower:r(g),upper:a(g)}}).sort(function(g,b){return o(g.lower,b.lower)});s=v.map(function(g){return g.upper}),c=v.map(function(g){return g.lower}),l=d,f=d==="next"?"":i}h("next");var k=new e.Collection(e,function(){return xe(s[0],c[u-1]+i)});k._ondirectionchange=function(d){h(d)};var p=0;return k._addAlgorithm(function(d,v,g){var b=d.key;if(typeof b!="string")return!1;var w=r(b);if(t(w,c,p))return!0;for(var _=null,x=p;x<u;++x){var j=Oa(b,w,s[x],c[x],o,l);j===null&&_===null?p=x+1:(_===null||o(_,j)>0)&&(_=j)}return v(_!==null?function(){d.continue(_+f)}:g),!1}),k}function xe(e,t,n,i){return{type:2,lower:e,upper:t,lowerOpen:n,upperOpen:i}}function wi(e){return{type:1,lower:e,upper:e}}var _i=(function(){function e(){}return Object.defineProperty(e.prototype,"Collection",{get:function(){return this._ctx.table.db.Collection},enumerable:!1,configurable:!0}),e.prototype.between=function(t,n,i,a){i=i!==!1,a=a===!0;try{return this._cmp(t,n)>0||this._cmp(t,n)===0&&(i||a)&&!(i&&a)?Ye(this):new this.Collection(this,function(){return xe(t,n,!i,!a)})}catch{return ne(this,fe)}},e.prototype.equals=function(t){return t==null?ne(this,fe):new this.Collection(this,function(){return wi(t)})},e.prototype.above=function(t){return t==null?ne(this,fe):new this.Collection(this,function(){return xe(t,void 0,!0)})},e.prototype.aboveOrEqual=function(t){return t==null?ne(this,fe):new this.Collection(this,function(){return xe(t,void 0,!1)})},e.prototype.below=function(t){return t==null?ne(this,fe):new this.Collection(this,function(){return xe(void 0,t,!1,!0)})},e.prototype.belowOrEqual=function(t){return t==null?ne(this,fe):new this.Collection(this,function(){return xe(void 0,t)})},e.prototype.startsWith=function(t){return typeof t!="string"?ne(this,pi):this.between(t,t+Pe,!0,!0)},e.prototype.startsWithIgnoreCase=function(t){return t===""?this.startsWith(t):Ot(this,function(n,i){return n.indexOf(i[0])===0},[t],Pe)},e.prototype.equalsIgnoreCase=function(t){return Ot(this,function(n,i){return n===i[0]},[t],"")},e.prototype.anyOfIgnoreCase=function(){var t=pe.apply(Fe,arguments);return t.length===0?Ye(this):Ot(this,function(n,i){return i.indexOf(n)!==-1},t,"")},e.prototype.startsWithAnyOfIgnoreCase=function(){var t=pe.apply(Fe,arguments);return t.length===0?Ye(this):Ot(this,function(n,i){return i.some(function(a){return n.indexOf(a)===0})},t,Pe)},e.prototype.anyOf=function(){var t=this,n=pe.apply(Fe,arguments),i=this._cmp;try{n.sort(i)}catch{return ne(this,fe)}if(n.length===0)return Ye(this);var a=new this.Collection(this,function(){return xe(n[0],n[n.length-1])});a._ondirectionchange=function(o){i=o==="next"?t._ascending:t._descending,n.sort(i)};var r=0;return a._addAlgorithm(function(o,s,c){for(var l=o.key;i(l,n[r])>0;)if(++r,r===n.length)return s(c),!1;return i(l,n[r])===0?!0:(s(function(){o.continue(n[r])}),!1)}),a},e.prototype.notEqual=function(t){return this.inAnyRange([[un,t],[t,this.db._maxKey]],{includeLowers:!1,includeUppers:!1})},e.prototype.noneOf=function(){var t=pe.apply(Fe,arguments);if(t.length===0)return new this.Collection(this);try{t.sort(this._ascending)}catch{return ne(this,fe)}var n=t.reduce(function(i,a){return i?i.concat([[i[i.length-1][1],a]]):[[un,a]]},null);return n.push([t[t.length-1],this.db._maxKey]),this.inAnyRange(n,{includeLowers:!1,includeUppers:!1})},e.prototype.inAnyRange=function(t,n){var i=this,a=this._cmp,r=this._ascending,o=this._descending,s=this._min,c=this._max;if(t.length===0)return Ye(this);if(!t.every(function(x){return x[0]!==void 0&&x[1]!==void 0&&r(x[0],x[1])<=0}))return ne(this,"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower",I.InvalidArgument);var l=!n||n.includeLowers!==!1,f=n&&n.includeUppers===!0;function u(x,j){for(var T=0,S=x.length;T<S;++T){var R=x[T];if(a(j[0],R[1])<0&&a(j[1],R[0])>0){R[0]=s(R[0],j[0]),R[1]=c(R[1],j[1]);break}}return T===S&&x.push(j),x}var h=r;function k(x,j){return h(x[0],j[0])}var p;try{p=t.reduce(u,[]),p.sort(k)}catch{return ne(this,fe)}var d=0,v=f?function(x){return r(x,p[d][1])>0}:function(x){return r(x,p[d][1])>=0},g=l?function(x){return o(x,p[d][0])>0}:function(x){return o(x,p[d][0])>=0};function b(x){return!v(x)&&!g(x)}var w=v,_=new this.Collection(this,function(){return xe(p[0][0],p[p.length-1][1],!l,!f)});return _._ondirectionchange=function(x){x==="next"?(w=v,h=r):(w=g,h=o),p.sort(k)},_._addAlgorithm(function(x,j,T){for(var S=x.key;w(S);)if(++d,d===p.length)return j(T),!1;return b(S)?!0:(i._cmp(S,p[d][1])===0||i._cmp(S,p[d][0])===0||j(function(){h===r?x.continue(p[d][0]):x.continue(p[d][1])}),!1)}),_},e.prototype.startsWithAnyOf=function(){var t=pe.apply(Fe,arguments);return t.every(function(n){return typeof n=="string"})?t.length===0?Ye(this):this.inAnyRange(t.map(function(n){return[n,n+Pe]})):ne(this,"startsWithAnyOf() only works with strings")},e})();function Pa(e){return rt(_i.prototype,function(n,i,a){if(this.db=e,this._ctx={table:n,index:i===":id"?null:i,or:a},this._cmp=this._ascending=N,this._descending=function(r,o){return N(o,r)},this._max=function(r,o){return N(r,o)>0?r:o},this._min=function(r,o){return N(r,o)<0?r:o},this._IDBKeyRange=e._deps.IDBKeyRange,!this._IDBKeyRange)throw new I.MissingAPI})}function se(e){return U(function(t){return ot(t),e(t.target.error),!1})}function ot(e){e.stopPropagation&&e.stopPropagation(),e.preventDefault&&e.preventDefault()}var st="storagemutated",vn="x-storagemutated-1",be=at(null,st),Ca=(function(){function e(){}return e.prototype._lock=function(){return Xe(!O.global),++this._reculock,this._reculock===1&&!O.global&&(O.lockOwnerFor=this),this},e.prototype._unlock=function(){if(Xe(!O.global),--this._reculock===0)for(O.global||(O.lockOwnerFor=null);this._blockedFuncs.length>0&&!this._locked();){var t=this._blockedFuncs.shift();try{Oe(t[1],t[0])}catch{}}return this},e.prototype._locked=function(){return this._reculock&&O.lockOwnerFor!==this},e.prototype.create=function(t){var n=this;if(!this.mode)return this;var i=this.db.idbdb,a=this.db._state.dbOpenError;if(Xe(!this.idbtrans),!t&&!i)switch(a&&a.name){case"DatabaseClosedError":throw new I.DatabaseClosed(a);case"MissingAPIError":throw new I.MissingAPI(a.message,a);default:throw new I.OpenFailed(a)}if(!this.active)throw new I.TransactionInactive;return Xe(this._completion._state===null),t=this.idbtrans=t||(this.db.core?this.db.core.transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability}):i.transaction(this.storeNames,this.mode,{durability:this.chromeTransactionDurability})),t.onerror=U(function(r){ot(r),n._reject(t.error)}),t.onabort=U(function(r){ot(r),n.active&&n._reject(new I.Abort(t.error)),n.active=!1,n.on("abort").fire(r)}),t.oncomplete=U(function(){n.active=!1,n._resolve(),"mutatedParts"in t&&be.storagemutated.fire(t.mutatedParts)}),this},e.prototype._promise=function(t,n,i){var a=this;if(t==="readwrite"&&this.mode!=="readwrite")return Q(new I.ReadOnly("Transaction is readonly"));if(!this.active)return Q(new I.TransactionInactive);if(this._locked())return new K(function(o,s){a._blockedFuncs.push([function(){a._promise(t,n,i).then(o,s)},O])});if(i)return he(function(){var o=new K(function(s,c){a._lock();var l=n(s,c,a);l&&l.then&&l.then(s,c)});return o.finally(function(){return a._unlock()}),o._lib=!0,o});var r=new K(function(o,s){var c=n(o,s,a);c&&c.then&&c.then(o,s)});return r._lib=!0,r},e.prototype._root=function(){return this.parent?this.parent._root():this},e.prototype.waitFor=function(t){var n=this._root(),i=K.resolve(t);if(n._waitingFor)n._waitingFor=n._waitingFor.then(function(){return i});else{n._waitingFor=i,n._waitingQueue=[];var a=n.idbtrans.objectStore(n.storeNames[0]);(function o(){for(++n._spinCount;n._waitingQueue.length;)n._waitingQueue.shift()();n._waitingFor&&(a.get(-1/0).onsuccess=o)})()}var r=n._waitingFor;return new K(function(o,s){i.then(function(c){return n._waitingQueue.push(U(o.bind(null,c)))},function(c){return n._waitingQueue.push(U(s.bind(null,c)))}).finally(function(){n._waitingFor===r&&(n._waitingFor=null)})})},e.prototype.abort=function(){this.active&&(this.active=!1,this.idbtrans&&this.idbtrans.abort(),this._reject(new I.Abort))},e.prototype.table=function(t){var n=this._memoizedTables||(this._memoizedTables={});if(J(n,t))return n[t];var i=this.schema[t];if(!i)throw new I.NotFound("Table "+t+" not part of transaction");var a=new this.db.Table(t,i,this);return a.core=this.db.core.table(t),n[t]=a,a},e})();function Ia(e){return rt(Ca.prototype,function(n,i,a,r,o){var s=this;n!=="readonly"&&i.forEach(function(c){var l,f=(l=a[c])===null||l===void 0?void 0:l.yProps;f&&(i=i.concat(f.map(function(u){return u.updatesTable})))}),this.db=e,this.mode=n,this.storeNames=i,this.schema=a,this.chromeTransactionDurability=r,this.idbtrans=null,this.on=at(this,"complete","error","abort"),this.parent=o||null,this.active=!0,this._reculock=0,this._blockedFuncs=[],this._resolve=null,this._reject=null,this._waitingFor=null,this._waitingQueue=null,this._spinCount=0,this._completion=new K(function(c,l){s._resolve=c,s._reject=l}),this._completion.then(function(){s.active=!1,s.on.complete.fire()},function(c){var l=s.active;return s.active=!1,s.on.error.fire(c),s.parent?s.parent._reject(c):l&&s.idbtrans&&s.idbtrans.abort(),Q(c)})})}function hn(e,t,n,i,a,r,o,s){return{name:e,keyPath:t,unique:n,multi:i,auto:a,compound:r,src:(n&&!o?"&":"")+(i?"*":"")+(a?"++":"")+ki(t),type:s}}function ki(e){return typeof e=="string"?e:e?"["+[].join.call(e,"+")+"]":""}function yn(e,t,n){return{name:e,primKey:t,indexes:n,mappedClass:null,idxByName:Yi(n,function(i){return[i.name,i]})}}function Ra(e){return e.length===1?e[0]:e}var ct=function(e){try{return e.only([[]]),ct=function(){return[[]]},[[]]}catch{return ct=function(){return Pe},Pe}};function gn(e){return e==null?function(){}:typeof e=="string"?za(e):function(t){return ue(t,e)}}function za(e){var t=e.split(".");return t.length===1?function(n){return n[e]}:function(n){return ue(n,e)}}function Ei(e){return[].slice.call(e)}var Ba=0;function lt(e){return e==null?":id":typeof e=="string"?e:"[".concat(e.join("+"),"]")}function Ma(e,t,n){function i(u,h){var k=Ei(u.objectStoreNames);return{schema:{name:u.name,tables:k.map(function(p){return h.objectStore(p)}).map(function(p){var d=p.keyPath,v=p.autoIncrement,g=z(d),b=d==null,w={},_={name:p.name,primaryKey:{name:null,isPrimaryKey:!0,outbound:b,compound:g,keyPath:d,autoIncrement:v,unique:!0,extractKey:gn(d)},indexes:Ei(p.indexNames).map(function(x){return p.index(x)}).map(function(x){var j=x.name,T=x.unique,S=x.multiEntry,R=x.keyPath,F=z(R),D={name:j,compound:F,keyPath:R,unique:T,multiEntry:S,extractKey:gn(R)};return w[lt(R)]=D,D}),getIndexByKeyPath:function(x){return w[lt(x)]}};return w[":id"]=_.primaryKey,d!=null&&(w[lt(d)]=_.primaryKey),_})},hasGetAll:k.length>0&&"getAll"in h.objectStore(k[0])&&!(typeof navigator<"u"&&/Safari/.test(navigator.userAgent)&&!/(Chrome\/|Edge\/)/.test(navigator.userAgent)&&[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]<604)}}function a(u){if(u.type===3)return null;if(u.type===4)throw new Error("Cannot convert never type to IDBKeyRange");var h=u.lower,k=u.upper,p=u.lowerOpen,d=u.upperOpen,v=h===void 0?k===void 0?null:t.upperBound(k,!!d):k===void 0?t.lowerBound(h,!!p):t.bound(h,k,!!p,!!d);return v}function r(u){var h=u.name;function k(v){var g=v.trans,b=v.type,w=v.keys,_=v.values,x=v.range;return new Promise(function(j,T){j=U(j);var S=g.objectStore(h),R=S.keyPath==null,F=b==="put"||b==="add";if(!F&&b!=="delete"&&b!=="deleteRange")throw new Error("Invalid operation type: "+b);var D=(w||_||{length:1}).length;if(w&&_&&w.length!==_.length)throw new Error("Given keys array must have same length as given values array.");if(D===0)return j({numFailures:0,failures:{},results:[],lastResult:void 0});var M,B=[],q=[],P=0,Y=function(le){++P,ot(le)};if(b==="deleteRange"){if(x.type===4)return j({numFailures:P,failures:q,results:[],lastResult:void 0});x.type===3?B.push(M=S.clear()):B.push(M=S.delete(a(x)))}else{var X=F?R?[_,w]:[_,null]:[w,null],ce=X[0],ee=X[1];if(F)for(var ie=0;ie<D;++ie)B.push(M=ee&&ee[ie]!==void 0?S[b](ce[ie],ee[ie]):S[b](ce[ie])),M.onerror=Y;else for(var ie=0;ie<D;++ie)B.push(M=S[b](ce[ie])),M.onerror=Y}var ke=function(le){var ft=le.target.result;B.forEach(function(re,qt){return re.error!=null&&(q[qt]=re.error)}),j({numFailures:P,failures:q,results:b==="delete"?w:B.map(function(re){return re.result}),lastResult:ft})};M.onerror=function(le){Y(le),ke(le)},M.onsuccess=ke})}function p(v){var g=v.trans,b=v.values,w=v.query,_=v.reverse,x=v.unique;return new Promise(function(j,T){j=U(j);var S=w.index,R=w.range,F=g.objectStore(h),D=S.isPrimaryKey?F:F.index(S.name),M=_?x?"prevunique":"prev":x?"nextunique":"next",B=b||!("openKeyCursor"in D)?D.openCursor(a(R),M):D.openKeyCursor(a(R),M);B.onerror=se(T),B.onsuccess=U(function(q){var P=B.result;if(!P){j(null);return}P.___id=++Ba,P.done=!1;var Y=P.continue.bind(P),X=P.continuePrimaryKey;X&&(X=X.bind(P));var ce=P.advance.bind(P),ee=function(){throw new Error("Cursor not started")},ie=function(){throw new Error("Cursor not stopped")};P.trans=g,P.stop=P.continue=P.continuePrimaryKey=P.advance=ee,P.fail=U(T),P.next=function(){var ke=this,le=1;return this.start(function(){return le--?ke.continue():ke.stop()}).then(function(){return ke})},P.start=function(ke){var le=new Promise(function(re,qt){re=U(re),B.onerror=se(qt),P.fail=qt,P.stop=function(jr){P.stop=P.continue=P.continuePrimaryKey=P.advance=ie,re(jr)}}),ft=function(){if(B.result)try{ke()}catch(re){P.fail(re)}else P.done=!0,P.start=function(){throw new Error("Cursor behind last entry")},P.stop()};return B.onsuccess=U(function(re){B.onsuccess=ft,ft()}),P.continue=Y,P.continuePrimaryKey=X,P.advance=ce,ft(),le},j(P)},T)})}function d(v){return function(g){return new Promise(function(b,w){b=U(b);var _=g.trans,x=g.values,j=g.limit,T=g.query,S=j===1/0?void 0:j,R=T.index,F=T.range,D=_.objectStore(h),M=R.isPrimaryKey?D:D.index(R.name),B=a(F);if(j===0)return b({result:[]});if(v){var q=x?M.getAll(B,S):M.getAllKeys(B,S);q.onsuccess=function(ce){return b({result:ce.target.result})},q.onerror=se(w)}else{var P=0,Y=x||!("openKeyCursor"in M)?M.openCursor(B):M.openKeyCursor(B),X=[];Y.onsuccess=function(ce){var ee=Y.result;if(!ee)return b({result:X});if(X.push(x?ee.value:ee.primaryKey),++P===j)return b({result:X});ee.continue()},Y.onerror=se(w)}})}}return{name:h,schema:u,mutate:k,getMany:function(v){var g=v.trans,b=v.keys;return new Promise(function(w,_){w=U(w);for(var x=g.objectStore(h),j=b.length,T=new Array(j),S=0,R=0,F,D=function(P){var Y=P.target;(T[Y._pos]=Y.result)!=null,++R===S&&w(T)},M=se(_),B=0;B<j;++B){var q=b[B];q!=null&&(F=x.get(b[B]),F._pos=B,F.onsuccess=D,F.onerror=M,++S)}S===0&&w(T)})},get:function(v){var g=v.trans,b=v.key;return new Promise(function(w,_){w=U(w);var x=g.objectStore(h),j=x.get(b);j.onsuccess=function(T){return w(T.target.result)},j.onerror=se(_)})},query:d(c),openCursor:p,count:function(v){var g=v.query,b=v.trans,w=g.index,_=g.range;return new Promise(function(x,j){var T=b.objectStore(h),S=w.isPrimaryKey?T:T.index(w.name),R=a(_),F=R?S.count(R):S.count();F.onsuccess=U(function(D){return x(D.target.result)}),F.onerror=se(j)})}}}var o=i(e,n),s=o.schema,c=o.hasGetAll,l=s.tables.map(function(u){return r(u)}),f={};return l.forEach(function(u){return f[u.name]=u}),{stack:"dbcore",transaction:e.transaction.bind(e),table:function(u){var h=f[u];if(!h)throw new Error("Table '".concat(u,"' not found"));return f[u]},MIN_KEY:-1/0,MAX_KEY:ct(t),schema:s}}function Fa(e,t){return t.reduce(function(n,i){var a=i.create;return m(m({},n),a(n))},e)}function Va(e,t,n,i){var a=n.IDBKeyRange;n.indexedDB;var r=Fa(Ma(t,a,i),e.dbcore);return{dbcore:r}}function Pt(e,t){var n=t.db,i=Va(e._middlewares,n,e._deps,t);e.core=i.dbcore,e.tables.forEach(function(a){var r=a.name;e.core.schema.tables.some(function(o){return o.name===r})&&(a.core=e.core.table(r),e[r]instanceof e.Table&&(e[r].core=a.core))})}function Ct(e,t,n,i){n.forEach(function(a){var r=i[a];t.forEach(function(o){var s=$n(o,a);(!s||"value"in s&&s.value===void 0)&&(o===e.Transaction.prototype||o instanceof e.Transaction?me(o,a,{get:function(){return this.table(a)},set:function(c){Wn(this,a,{value:c,writable:!0,configurable:!0,enumerable:!0})}}):o[a]=new e.Table(a,r))})})}function xn(e,t){t.forEach(function(n){for(var i in n)n[i]instanceof e.Table&&delete n[i]})}function La(e,t){return e._cfg.version-t._cfg.version}function Na(e,t,n,i){var a=e._dbSchema;n.objectStoreNames.contains("$meta")&&!a.$meta&&(a.$meta=yn("$meta",Si("")[0],[]),e._storeNames.push("$meta"));var r=e._createTransaction("readwrite",e._storeNames,a);r.create(n),r._completion.catch(i);var o=r._reject.bind(r),s=O.transless||O;he(function(){if(O.trans=r,O.transless=s,t===0)C(a).forEach(function(c){wn(n,c,a[c].primKey,a[c].indexes)}),Pt(e,n),K.follow(function(){return e.on.populate.fire(r)}).catch(o);else return Pt(e,n),Wa(e,r,t).then(function(c){return $a(e,c,r,n)}).catch(o)})}function qa(e,t){ji(e._dbSchema,t),t.db.version%10===0&&!t.objectStoreNames.contains("$meta")&&t.db.createObjectStore("$meta").add(Math.ceil(t.db.version/10-1),"version");var n=Rt(e,e.idbdb,t);zt(e,e._dbSchema,t);for(var i=bn(n,e._dbSchema),a=function(l){if(l.change.length||l.recreate)return console.warn("Unable to patch indexes of table ".concat(l.name," because it has changes on the type of index or primary key.")),{value:void 0};var f=t.objectStore(l.name);l.add.forEach(function(u){oe&&console.debug("Dexie upgrade patch: Creating missing index ".concat(l.name,".").concat(u.src)),It(f,u)})},r=0,o=i.change;r<o.length;r++){var s=o[r],c=a(s);if(typeof c=="object")return c.value}}function Wa(e,t,n){return t.storeNames.includes("$meta")?t.table("$meta").get("version").then(function(i){return i!=null?i:n}):K.resolve(n)}function $a(e,t,n,i){var a=[],r=e._versions,o=e._dbSchema=Rt(e,e.idbdb,i),s=r.filter(function(l){return l._cfg.version>=t});if(s.length===0)return K.resolve();s.forEach(function(l){a.push(function(){var f=o,u=l._cfg.dbschema;zt(e,f,i),zt(e,u,i),o=e._dbSchema=u;var h=bn(f,u);h.add.forEach(function(b){wn(i,b[0],b[1].primKey,b[1].indexes)}),h.change.forEach(function(b){if(b.recreate)throw new I.Upgrade("Not yet support for changing primary key");var w=i.objectStore(b.name);b.add.forEach(function(_){return It(w,_)}),b.change.forEach(function(_){w.deleteIndex(_.name),It(w,_)}),b.del.forEach(function(_){return w.deleteIndex(_)})});var k=l._cfg.contentUpgrade;if(k&&l._cfg.version>t){Pt(e,i),n._memoizedTables={};var p=Qn(u);h.del.forEach(function(b){p[b]=f[b]}),xn(e,[e.Transaction.prototype]),Ct(e,[e.Transaction.prototype],C(p),p),n.schema=p;var d=Ht(k);d&&We();var v,g=K.follow(function(){if(v=k(n),v&&d){var b=ye.bind(null,null);v.then(b,b)}});return v&&typeof v.then=="function"?K.resolve(v):g.then(function(){return v})}}),a.push(function(f){var u=l._cfg.dbschema;Ua(u,f),xn(e,[e.Transaction.prototype]),Ct(e,[e.Transaction.prototype],e._storeNames,e._dbSchema),n.schema=e._dbSchema}),a.push(function(f){e.idbdb.objectStoreNames.contains("$meta")&&(Math.ceil(e.idbdb.version/10)===l._cfg.version?(e.idbdb.deleteObjectStore("$meta"),delete e._dbSchema.$meta,e._storeNames=e._storeNames.filter(function(u){return u!=="$meta"})):f.objectStore("$meta").put(l._cfg.version,"version"))})});function c(){return a.length?K.resolve(a.shift()(n.idbtrans)).then(c):K.resolve()}return c().then(function(){ji(o,i)})}function bn(e,t){var n={del:[],add:[],change:[]},i;for(i in e)t[i]||n.del.push(i);for(i in t){var a=e[i],r=t[i];if(!a)n.add.push([i,r]);else{var o={name:i,def:r,recreate:!1,del:[],add:[],change:[]};if(""+(a.primKey.keyPath||"")!=""+(r.primKey.keyPath||"")||a.primKey.auto!==r.primKey.auto)o.recreate=!0,n.change.push(o);else{var s=a.idxByName,c=r.idxByName,l=void 0;for(l in s)c[l]||o.del.push(l);for(l in c){var f=s[l],u=c[l];f?f.src!==u.src&&o.change.push(u):o.add.push(u)}(o.del.length>0||o.add.length>0||o.change.length>0)&&n.change.push(o)}}}return n}function wn(e,t,n,i){var a=e.db.createObjectStore(t,n.keyPath?{keyPath:n.keyPath,autoIncrement:n.auto}:{autoIncrement:n.auto});return i.forEach(function(r){return It(a,r)}),a}function ji(e,t){C(e).forEach(function(n){t.db.objectStoreNames.contains(n)||(oe&&console.debug("Dexie: Creating missing table",n),wn(t,n,e[n].primKey,e[n].indexes))})}function Ua(e,t){[].slice.call(t.db.objectStoreNames).forEach(function(n){return e[n]==null&&t.db.deleteObjectStore(n)})}function It(e,t){e.createIndex(t.name,t.keyPath,{unique:t.unique,multiEntry:t.multi})}function Rt(e,t,n){var i={},a=vt(t.objectStoreNames,0);return a.forEach(function(r){for(var o=n.objectStore(r),s=o.keyPath,c=hn(ki(s),s||"",!0,!1,!!o.autoIncrement,s&&typeof s!="string",!0),l=[],f=0;f<o.indexNames.length;++f){var u=o.index(o.indexNames[f]);s=u.keyPath;var h=hn(u.name,s,!!u.unique,!!u.multiEntry,!1,s&&typeof s!="string",!1);l.push(h)}i[r]=yn(r,c,l)}),i}function Ya(e,t,n){e.verno=t.version/10;var i=e._dbSchema=Rt(e,t,n);e._storeNames=vt(t.objectStoreNames,0),Ct(e,[e._allTables],C(i),i)}function Qa(e,t){var n=Rt(e,e.idbdb,t),i=bn(n,e._dbSchema);return!(i.add.length||i.change.some(function(a){return a.add.length||a.change.length}))}function zt(e,t,n){for(var i=n.db.objectStoreNames,a=0;a<i.length;++a){var r=i[a],o=n.objectStore(r);e._hasGetAll="getAll"in o;for(var s=0;s<o.indexNames.length;++s){var c=o.indexNames[s],l=o.index(c).keyPath,f=typeof l=="string"?l:"["+vt(l).join("+")+"]";if(t[r]){var u=t[r].idxByName[f];u&&(u.name=c,delete t[r].idxByName[f],t[r].idxByName[c]=u)}}}typeof navigator<"u"&&/Safari/.test(navigator.userAgent)&&!/(Chrome\/|Edge\/)/.test(navigator.userAgent)&&A.WorkerGlobalScope&&A instanceof A.WorkerGlobalScope&&[].concat(navigator.userAgent.match(/Safari\/(\d*)/))[1]<604&&(e._hasGetAll=!1)}function Si(e){return e.split(",").map(function(t,n){var i,a=t.split(":"),r=(i=a[1])===null||i===void 0?void 0:i.trim();t=a[0].trim();var o=t.replace(/([&*]|\+\+)/g,""),s=/^\[/.test(o)?o.match(/^\[(.*)\]$/)[1].split("+"):o;return hn(o,s||null,/\&/.test(t),/\*/.test(t),/\+\+/.test(t),z(s),n===0,r)})}var Ha=(function(){function e(){}return e.prototype._createTableSchema=function(t,n,i){return yn(t,n,i)},e.prototype._parseIndexSyntax=function(t){return Si(t)},e.prototype._parseStoresSpec=function(t,n){var i=this;C(t).forEach(function(a){if(t[a]!==null){var r=i._parseIndexSyntax(t[a]),o=r.shift();if(!o)throw new I.Schema("Invalid schema for table "+a+": "+t[a]);if(o.unique=!0,o.multi)throw new I.Schema("Primary key cannot be multiEntry*");r.forEach(function(c){if(c.auto)throw new I.Schema("Only primary key can be marked as autoIncrement (++)");if(!c.keyPath)throw new I.Schema("Index must have a name and cannot be an empty string")});var s=i._createTableSchema(a,o,r);n[a]=s}})},e.prototype.stores=function(t){var n=this.db;this._cfg.storesSource=this._cfg.storesSource?L(this._cfg.storesSource,t):t;var i=n._versions,a={},r={};return i.forEach(function(o){L(a,o._cfg.storesSource),r=o._cfg.dbschema={},o._parseStoresSpec(a,r)}),n._dbSchema=r,xn(n,[n._allTables,n,n.Transaction.prototype]),Ct(n,[n._allTables,n,n.Transaction.prototype,this._cfg.tables],C(r),r),n._storeNames=C(r),this},e.prototype.upgrade=function(t){return this._cfg.contentUpgrade=Jt(this._cfg.contentUpgrade||W,t),this},e})();function Ga(e){return rt(Ha.prototype,function(n){this.db=e,this._cfg={version:n,storesSource:null,dbschema:{},tables:{},contentUpgrade:null}})}function _n(e,t){var n=e._dbNamesDB;return n||(n=e._dbNamesDB=new de(St,{addons:[],indexedDB:e,IDBKeyRange:t}),n.version(1).stores({dbnames:"name"})),n.table("dbnames")}function kn(e){return e&&typeof e.databases=="function"}function Xa(e){var t=e.indexedDB,n=e.IDBKeyRange;return kn(t)?Promise.resolve(t.databases()).then(function(i){return i.map(function(a){return a.name}).filter(function(a){return a!==St})}):_n(t,n).toCollection().primaryKeys()}function Ja(e,t){var n=e.indexedDB,i=e.IDBKeyRange;!kn(n)&&t!==St&&_n(n,i).put({name:t}).catch(W)}function Za(e,t){var n=e.indexedDB,i=e.IDBKeyRange;!kn(n)&&t!==St&&_n(n,i).delete(t).catch(W)}function En(e){return he(function(){return O.letThrough=!0,e()})}function er(){var e=!navigator.userAgentData&&/Safari\//.test(navigator.userAgent)&&!/Chrom(e|ium)\//.test(navigator.userAgent);if(!e||!indexedDB.databases)return Promise.resolve();var t;return new Promise(function(n){var i=function(){return indexedDB.databases().finally(n)};t=setInterval(i,100),i()}).finally(function(){return clearInterval(t)})}var jn;function Sn(e){return!("from"in e)}var G=function(e,t){if(this)L(this,arguments.length?{d:1,from:e,to:arguments.length>1?t:e}:{d:0});else{var n=new G;return e&&"d"in e&&L(n,e),n}};Be(G.prototype,(jn={add:function(e){return pt(this,e),this},addKey:function(e){return ut(this,e,e),this},addKeys:function(e){var t=this;return e.forEach(function(n){return ut(t,n,n)}),this},hasKey:function(e){var t=Bt(this).next(e).value;return t&&N(t.from,e)<=0&&N(t.to,e)>=0}},jn[Qt]=function(){return Bt(this)},jn));function ut(e,t,n){var i=N(t,n);if(!isNaN(i)){if(i>0)throw RangeError();if(Sn(e))return L(e,{from:t,to:n,d:1});var a=e.l,r=e.r;if(N(n,e.from)<0)return a?ut(a,t,n):e.l={from:t,to:n,d:1,l:null,r:null},Ti(e);if(N(t,e.to)>0)return r?ut(r,t,n):e.r={from:t,to:n,d:1,l:null,r:null},Ti(e);N(t,e.from)<0&&(e.from=t,e.l=null,e.d=r?r.d+1:1),N(n,e.to)>0&&(e.to=n,e.r=null,e.d=e.l?e.l.d+1:1);var o=!e.r;a&&!e.l&&pt(e,a),r&&o&&pt(e,r)}}function pt(e,t){function n(i,a){var r=a.from,o=a.to,s=a.l,c=a.r;ut(i,r,o),s&&n(i,s),c&&n(i,c)}Sn(t)||n(e,t)}function Ki(e,t){var n=Bt(t),i=n.next();if(i.done)return!1;for(var a=i.value,r=Bt(e),o=r.next(a.from),s=o.value;!i.done&&!o.done;){if(N(s.from,a.to)<=0&&N(s.to,a.from)>=0)return!0;N(a.from,s.from)<0?a=(i=n.next(s.from)).value:s=(o=r.next(a.from)).value}return!1}function Bt(e){var t=Sn(e)?null:{s:0,n:e};return{next:function(n){for(var i=arguments.length>0;t;)switch(t.s){case 0:if(t.s=1,i)for(;t.n.l&&N(n,t.n.from)<0;)t={up:t,n:t.n.l,s:1};else for(;t.n.l;)t={up:t,n:t.n.l,s:1};case 1:if(t.s=2,!i||N(n,t.n.to)<=0)return{value:t.n,done:!1};case 2:if(t.n.r){t.s=3,t={up:t,n:t.n.r,s:0};continue}case 3:t=t.up}return{done:!0}}}}function Ti(e){var t,n,i=(((t=e.r)===null||t===void 0?void 0:t.d)||0)-(((n=e.l)===null||n===void 0?void 0:n.d)||0),a=i>1?"r":i<-1?"l":"";if(a){var r=a==="r"?"l":"r",o=m({},e),s=e[a];e.from=s.from,e.to=s.to,e[a]=s[a],o[a]=s[r],e[r]=o,o.d=Di(o)}e.d=Di(e)}function Di(e){var t=e.r,n=e.l;return(t?n?Math.max(t.d,n.d):t.d:n?n.d:0)+1}function Mt(e,t){return C(t).forEach(function(n){e[n]?pt(e[n],t[n]):e[n]=Xn(t[n])}),e}function Kn(e,t){return e.all||t.all||Object.keys(e).some(function(n){return t[n]&&Ki(t[n],e[n])})}var Ie={},Tn={},Dn=!1;function Ft(e,t){Mt(Tn,e),Dn||(Dn=!0,setTimeout(function(){Dn=!1;var n=Tn;Tn={},An(n,!1)},0))}function An(e,t){t===void 0&&(t=!1);var n=new Set;if(e.all)for(var i=0,a=Object.values(Ie);i<a.length;i++){var r=a[i];Ai(r,e,n,t)}else for(var o in e){var s=/^idb\:\/\/(.*)\/(.*)\//.exec(o);if(s){var c=s[1],l=s[2],r=Ie["idb://".concat(c,"/").concat(l)];r&&Ai(r,e,n,t)}}n.forEach(function(f){return f()})}function Ai(e,t,n,i){for(var a=[],r=0,o=Object.entries(e.queries.query);r<o.length;r++){for(var s=o[r],c=s[0],l=s[1],f=[],u=0,h=l;u<h.length;u++){var k=h[u];Kn(t,k.obsSet)?k.subscribers.forEach(function(g){return n.add(g)}):i&&f.push(k)}i&&a.push([c,f])}if(i)for(var p=0,d=a;p<d.length;p++){var v=d[p],c=v[0],f=v[1];e.queries.query[c]=f}}function tr(e){var t=e._state,n=e._deps.indexedDB;if(t.isBeingOpened||e.idbdb)return t.dbReadyPromise.then(function(){return t.dbOpenError?Q(t.dbOpenError):e});t.isBeingOpened=!0,t.dbOpenError=null,t.openComplete=!1;var i=t.openCanceller,a=Math.round(e.verno*10),r=!1;function o(){if(t.openCanceller!==i)throw new I.DatabaseClosed("db.open() was cancelled")}var s=t.dbReadyResolve,c=null,l=!1,f=function(){return new K(function(u,h){if(o(),!n)throw new I.MissingAPI;var k=e.name,p=t.autoSchema||!a?n.open(k):n.open(k,a);if(!p)throw new I.MissingAPI;p.onerror=se(h),p.onblocked=U(e._fireOnBlocked),p.onupgradeneeded=U(function(d){if(c=p.transaction,t.autoSchema&&!e._options.allowEmptyDB){p.onerror=ot,c.abort(),p.result.close();var v=n.deleteDatabase(k);v.onsuccess=v.onerror=U(function(){h(new I.NoSuchDatabase("Database ".concat(k," doesnt exist")))})}else{c.onerror=se(h);var g=d.oldVersion>Math.pow(2,62)?0:d.oldVersion;l=g<1,e.idbdb=p.result,r&&qa(e,c),Na(e,g/10,c,h)}},h),p.onsuccess=U(function(){c=null;var d=e.idbdb=p.result,v=vt(d.objectStoreNames);if(v.length>0)try{var g=d.transaction(Ra(v),"readonly");if(t.autoSchema)Ya(e,d,g);else if(zt(e,e._dbSchema,g),!Qa(e,g)&&!r)return console.warn("Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this."),d.close(),a=d.version+1,r=!0,u(f());Pt(e,g)}catch{}$e.push(e),d.onversionchange=U(function(b){t.vcFired=!0,e.on("versionchange").fire(b)}),d.onclose=U(function(){e.close({disableAutoOpen:!1})}),l&&Ja(e._deps,k),u()},h)}).catch(function(u){switch(u==null?void 0:u.name){case"UnknownError":if(t.PR1398_maxLoop>0)return t.PR1398_maxLoop--,console.warn("Dexie: Workaround for Chrome UnknownError on open()"),f();break;case"VersionError":if(a>0)return a=0,f();break}return K.reject(u)})};return K.race([i,(typeof navigator>"u"?K.resolve():er()).then(f)]).then(function(){return o(),t.onReadyBeingFired=[],K.resolve(En(function(){return e.on.ready.fire(e.vip)})).then(function u(){if(t.onReadyBeingFired.length>0){var h=t.onReadyBeingFired.reduce(Jt,W);return t.onReadyBeingFired=[],K.resolve(En(function(){return h(e.vip)})).then(u)}})}).finally(function(){t.openCanceller===i&&(t.onReadyBeingFired=null,t.isBeingOpened=!1)}).catch(function(u){t.dbOpenError=u;try{c&&c.abort()}catch{}return i===t.openCanceller&&e._close(),Q(u)}).finally(function(){t.openComplete=!0,s()}).then(function(){if(l){var u={};e.tables.forEach(function(h){h.schema.indexes.forEach(function(k){k.name&&(u["idb://".concat(e.name,"/").concat(h.name,"/").concat(k.name)]=new G(-1/0,[[[]]]))}),u["idb://".concat(e.name,"/").concat(h.name,"/")]=u["idb://".concat(e.name,"/").concat(h.name,"/:dels")]=new G(-1/0,[[[]]])}),be(st).fire(u),An(u,!0)}return e})}function On(e){var t=function(o){return e.next(o)},n=function(o){return e.throw(o)},i=r(t),a=r(n);function r(o){return function(s){var c=o(s),l=c.value;return c.done?l:!l||typeof l.then!="function"?z(l)?Promise.all(l).then(i,a):i(l):l.then(i,a)}}return r(t)()}function nr(e,t,n){var i=arguments.length;if(i<2)throw new I.InvalidArgument("Too few arguments");for(var a=new Array(i-1);--i;)a[i-1]=arguments[i];n=a.pop();var r=Hn(a);return[e,r,n]}function Oi(e,t,n,i,a){return K.resolve().then(function(){var r=O.transless||O,o=e._createTransaction(t,n,e._dbSchema,i);o.explicit=!0;var s={trans:o,transless:r};if(i)o.idbtrans=i.idbtrans;else try{o.create(),o.idbtrans._explicit=!0,e._state.PR1398_maxLoop=3}catch(u){return u.name===Xt.InvalidState&&e.isOpen()&&--e._state.PR1398_maxLoop>0?(console.warn("Dexie: Need to reopen db"),e.close({disableAutoOpen:!1}),e.open().then(function(){return Oi(e,t,n,null,a)})):Q(u)}var c=Ht(a);c&&We();var l,f=K.follow(function(){if(l=a.call(o,o),l)if(c){var u=ye.bind(null,null);l.then(u,u)}else typeof l.next=="function"&&typeof l.throw=="function"&&(l=On(l))},s);return(l&&typeof l.then=="function"?K.resolve(l).then(function(u){return o.active?u:Q(new I.PrematureCommit("Transaction committed too early. See http://bit.ly/2kdckMn"))}):f.then(function(){return l})).then(function(u){return i&&o._resolve(),o._completion.then(function(){return u})}).catch(function(u){return o._reject(u),Q(u)})})}function Vt(e,t,n){for(var i=z(e)?e.slice():[e],a=0;a<n;++a)i.push(t);return i}function ir(e){return m(m({},e),{table:function(t){var n=e.table(t),i=n.schema,a={},r=[];function o(d,v,g){var b=lt(d),w=a[b]=a[b]||[],_=d==null?0:typeof d=="string"?1:d.length,x=v>0,j=m(m({},g),{name:x?"".concat(b,"(virtual-from:").concat(g.name,")"):g.name,lowLevelIndex:g,isVirtual:x,keyTail:v,keyLength:_,extractKey:gn(d),unique:!x&&g.unique});if(w.push(j),j.isPrimaryKey||r.push(j),_>1){var T=_===2?d[0]:d.slice(0,_-1);o(T,v+1,g)}return w.sort(function(S,R){return S.keyTail-R.keyTail}),j}var s=o(i.primaryKey.keyPath,0,i.primaryKey);a[":id"]=[s];for(var c=0,l=i.indexes;c<l.length;c++){var f=l[c];o(f.keyPath,0,f)}function u(d){var v=a[lt(d)];return v&&v[0]}function h(d,v){return{type:d.type===1?2:d.type,lower:Vt(d.lower,d.lowerOpen?e.MAX_KEY:e.MIN_KEY,v),lowerOpen:!0,upper:Vt(d.upper,d.upperOpen?e.MIN_KEY:e.MAX_KEY,v),upperOpen:!0}}function k(d){var v=d.query.index;return v.isVirtual?m(m({},d),{query:{index:v.lowLevelIndex,range:h(d.query.range,v.keyTail)}}):d}var p=m(m({},n),{schema:m(m({},i),{primaryKey:s,indexes:r,getIndexByKeyPath:u}),count:function(d){return n.count(k(d))},query:function(d){return n.query(k(d))},openCursor:function(d){var v=d.query.index,g=v.keyTail,b=v.isVirtual,w=v.keyLength;if(!b)return n.openCursor(d);function _(x){function j(S){S!=null?x.continue(Vt(S,d.reverse?e.MAX_KEY:e.MIN_KEY,g)):d.unique?x.continue(x.key.slice(0,w).concat(d.reverse?e.MIN_KEY:e.MAX_KEY,g)):x.continue()}var T=Object.create(x,{continue:{value:j},continuePrimaryKey:{value:function(S,R){x.continuePrimaryKey(Vt(S,e.MAX_KEY,g),R)}},primaryKey:{get:function(){return x.primaryKey}},key:{get:function(){var S=x.key;return w===1?S[0]:S.slice(0,w)}},value:{get:function(){return x.value}}});return T}return n.openCursor(k(d)).then(function(x){return x&&_(x)})}});return p}})}var ar={stack:"dbcore",name:"VirtualIndexMiddleware",level:1,create:ir};function Pn(e,t,n,i){return n=n||{},i=i||"",C(e).forEach(function(a){if(!J(t,a))n[i+a]=void 0;else{var r=e[a],o=t[a];if(typeof r=="object"&&typeof o=="object"&&r&&o){var s=Yt(r),c=Yt(o);s!==c?n[i+a]=t[a]:s==="Object"?Pn(r,o,n,i+a+"."):r!==o&&(n[i+a]=t[a])}else r!==o&&(n[i+a]=t[a])}}),C(t).forEach(function(a){J(e,a)||(n[i+a]=t[a])}),n}function Cn(e,t){return t.type==="delete"?t.keys:t.keys||t.values.map(e.extractKey)}var rr={stack:"dbcore",name:"HooksMiddleware",level:2,create:function(e){return m(m({},e),{table:function(t){var n=e.table(t),i=n.schema.primaryKey,a=m(m({},n),{mutate:function(r){var o=O.trans,s=o.table(t).hook,c=s.deleting,l=s.creating,f=s.updating;switch(r.type){case"add":if(l.fire===W)break;return o._promise("readwrite",function(){return u(r)},!0);case"put":if(l.fire===W&&f.fire===W)break;return o._promise("readwrite",function(){return u(r)},!0);case"delete":if(c.fire===W)break;return o._promise("readwrite",function(){return u(r)},!0);case"deleteRange":if(c.fire===W)break;return o._promise("readwrite",function(){return h(r)},!0)}return n.mutate(r);function u(p){var d=O.trans,v=p.keys||Cn(i,p);if(!v)throw new Error("Keys missing");return p=p.type==="add"||p.type==="put"?m(m({},p),{keys:v}):m({},p),p.type!=="delete"&&(p.values=E([],p.values,!0)),p.keys&&(p.keys=E([],p.keys,!0)),or(n,p,v).then(function(g){var b=v.map(function(w,_){var x=g[_],j={onerror:null,onsuccess:null};if(p.type==="delete")c.fire.call(j,w,x,d);else if(p.type==="add"||x===void 0){var T=l.fire.call(j,w,p.values[_],d);w==null&&T!=null&&(w=T,p.keys[_]=w,i.outbound||Z(p.values[_],i.keyPath,w))}else{var S=Pn(x,p.values[_]),R=f.fire.call(j,S,w,x,d);if(R){var F=p.values[_];Object.keys(R).forEach(function(D){J(F,D)?F[D]=R[D]:Z(F,D,R[D])})}}return j});return n.mutate(p).then(function(w){for(var _=w.failures,x=w.results,j=w.numFailures,T=w.lastResult,S=0;S<v.length;++S){var R=x?x[S]:v[S],F=b[S];R==null?F.onerror&&F.onerror(_[S]):F.onsuccess&&F.onsuccess(p.type==="put"&&g[S]?p.values[S]:R)}return{failures:_,results:x,numFailures:j,lastResult:T}}).catch(function(w){return b.forEach(function(_){return _.onerror&&_.onerror(w)}),Promise.reject(w)})})}function h(p){return k(p.trans,p.range,1e4)}function k(p,d,v){return n.query({trans:p,values:!1,query:{index:i,range:d},limit:v}).then(function(g){var b=g.result;return u({type:"delete",keys:b,trans:p}).then(function(w){return w.numFailures>0?Promise.reject(w.failures[0]):b.length<v?{failures:[],numFailures:0,lastResult:void 0}:k(p,m(m({},d),{lower:b[b.length-1],lowerOpen:!0}),v)})})}}});return a}})}};function or(e,t,n){return t.type==="add"?Promise.resolve([]):e.getMany({trans:t.trans,keys:n,cache:"immutable"})}function Pi(e,t,n){try{if(!t||t.keys.length<e.length)return null;for(var i=[],a=0,r=0;a<t.keys.length&&r<e.length;++a)N(t.keys[a],e[r])===0&&(i.push(n?je(t.values[a]):t.values[a]),++r);return i.length===e.length?i:null}catch{return null}}var sr={stack:"dbcore",level:-1,create:function(e){return{table:function(t){var n=e.table(t);return m(m({},n),{getMany:function(i){if(!i.cache)return n.getMany(i);var a=Pi(i.keys,i.trans._cache,i.cache==="clone");return a?K.resolve(a):n.getMany(i).then(function(r){return i.trans._cache={keys:i.keys,values:i.cache==="clone"?je(r):r},r})},mutate:function(i){return i.type!=="add"&&(i.trans._cache=null),n.mutate(i)}})}}}};function Ci(e,t){return e.trans.mode==="readonly"&&!!e.subscr&&!e.trans.explicit&&e.trans.db._options.cache!=="disabled"&&!t.schema.primaryKey.outbound}function Ii(e,t){switch(e){case"query":return t.values&&!t.unique;case"get":return!1;case"getMany":return!1;case"count":return!1;case"openCursor":return!1}}var cr={stack:"dbcore",level:0,name:"Observability",create:function(e){var t=e.schema.name,n=new G(e.MIN_KEY,e.MAX_KEY);return m(m({},e),{transaction:function(i,a,r){if(O.subscr&&a!=="readonly")throw new I.ReadOnly("Readwrite transaction in liveQuery context. Querier source: ".concat(O.querier));return e.transaction(i,a,r)},table:function(i){var a=e.table(i),r=a.schema,o=r.primaryKey,s=r.indexes,c=o.extractKey,l=o.outbound,f=o.autoIncrement&&s.filter(function(p){return p.compound&&p.keyPath.includes(o.keyPath)}),u=m(m({},a),{mutate:function(p){var d,v,g=p.trans,b=p.mutatedParts||(p.mutatedParts={}),w=function(B){var q="idb://".concat(t,"/").concat(i,"/").concat(B);return b[q]||(b[q]=new G)},_=w(""),x=w(":dels"),j=p.type,T=p.type==="deleteRange"?[p.range]:p.type==="delete"?[p.keys]:p.values.length<50?[Cn(o,p).filter(function(B){return B}),p.values]:[],S=T[0],R=T[1],F=p.trans._cache;if(z(S)){_.addKeys(S);var D=j==="delete"||S.length===R.length?Pi(S,F):null;D||x.addKeys(S),(D||R)&&lr(w,r,D,R)}else if(S){var M={from:(d=S.lower)!==null&&d!==void 0?d:e.MIN_KEY,to:(v=S.upper)!==null&&v!==void 0?v:e.MAX_KEY};x.add(M),_.add(M)}else _.add(n),x.add(n),r.indexes.forEach(function(B){return w(B.name).add(n)});return a.mutate(p).then(function(B){return S&&(p.type==="add"||p.type==="put")&&(_.addKeys(B.results),f&&f.forEach(function(q){for(var P=p.values.map(function(ee){return q.extractKey(ee)}),Y=q.keyPath.findIndex(function(ee){return ee===o.keyPath}),X=0,ce=B.results.length;X<ce;++X)P[X][Y]=B.results[X];w(q.name).addKeys(P)})),g.mutatedParts=Mt(g.mutatedParts||{},b),B})}}),h=function(p){var d,v,g=p.query,b=g.index,w=g.range;return[b,new G((d=w.lower)!==null&&d!==void 0?d:e.MIN_KEY,(v=w.upper)!==null&&v!==void 0?v:e.MAX_KEY)]},k={get:function(p){return[o,new G(p.key)]},getMany:function(p){return[o,new G().addKeys(p.keys)]},count:h,query:h,openCursor:h};return C(k).forEach(function(p){u[p]=function(d){var v=O.subscr,g=!!v,b=Ci(O,a)&&Ii(p,d),w=b?d.obsSet={}:v;if(g){var _=function(D){var M="idb://".concat(t,"/").concat(i,"/").concat(D);return w[M]||(w[M]=new G)},x=_(""),j=_(":dels"),T=k[p](d),S=T[0],R=T[1];if(p==="query"&&S.isPrimaryKey&&!d.values?j.add(R):_(S.name||"").add(R),!S.isPrimaryKey)if(p==="count")j.add(n);else{var F=p==="query"&&l&&d.values&&a.query(m(m({},d),{values:!1}));return a[p].apply(this,arguments).then(function(D){if(p==="query"){if(l&&d.values)return F.then(function(P){var Y=P.result;return x.addKeys(Y),D});var M=d.values?D.result.map(c):D.result;d.values?x.addKeys(M):j.addKeys(M)}else if(p==="openCursor"){var B=D,q=d.values;return B&&Object.create(B,{key:{get:function(){return j.addKey(B.primaryKey),B.key}},primaryKey:{get:function(){var P=B.primaryKey;return j.addKey(P),P}},value:{get:function(){return q&&x.addKey(B.primaryKey),B.value}}})}return D})}}return a[p].apply(this,arguments)}}),u}})}};function lr(e,t,n,i){function a(r){var o=e(r.name||"");function s(l){return l!=null?r.extractKey(l):null}var c=function(l){return r.multiEntry&&z(l)?l.forEach(function(f){return o.addKey(f)}):o.addKey(l)};(n||i).forEach(function(l,f){var u=n&&s(n[f]),h=i&&s(i[f]);N(u,h)!==0&&(u!=null&&c(u),h!=null&&c(h))})}t.indexes.forEach(a)}function Ri(e,t,n){if(n.numFailures===0)return t;if(t.type==="deleteRange")return null;var i=t.keys?t.keys.length:"values"in t&&t.values?t.values.length:1;if(n.numFailures===i)return null;var a=m({},t);return z(a.keys)&&(a.keys=a.keys.filter(function(r,o){return!(o in n.failures)})),"values"in a&&z(a.values)&&(a.values=a.values.filter(function(r,o){return!(o in n.failures)})),a}function ur(e,t){return t.lower===void 0?!0:t.lowerOpen?N(e,t.lower)>0:N(e,t.lower)>=0}function pr(e,t){return t.upper===void 0?!0:t.upperOpen?N(e,t.upper)<0:N(e,t.upper)<=0}function In(e,t){return ur(e,t)&&pr(e,t)}function zi(e,t,n,i,a,r){if(!n||n.length===0)return e;var o=t.query.index,s=o.multiEntry,c=t.query.range,l=i.schema.primaryKey,f=l.extractKey,u=o.extractKey,h=(o.lowLevelIndex||o).extractKey,k=n.reduce(function(p,d){var v=p,g=[];if(d.type==="add"||d.type==="put")for(var b=new G,w=d.values.length-1;w>=0;--w){var _=d.values[w],x=f(_);if(!b.hasKey(x)){var j=u(_);(s&&z(j)?j.some(function(D){return In(D,c)}):In(j,c))&&(b.addKey(x),g.push(_))}}switch(d.type){case"add":{var T=new G().addKeys(t.values?p.map(function(D){return f(D)}):p);v=p.concat(t.values?g.filter(function(D){var M=f(D);return T.hasKey(M)?!1:(T.addKey(M),!0)}):g.map(function(D){return f(D)}).filter(function(D){return T.hasKey(D)?!1:(T.addKey(D),!0)}));break}case"put":{var S=new G().addKeys(d.values.map(function(D){return f(D)}));v=p.filter(function(D){return!S.hasKey(t.values?f(D):D)}).concat(t.values?g:g.map(function(D){return f(D)}));break}case"delete":var R=new G().addKeys(d.keys);v=p.filter(function(D){return!R.hasKey(t.values?f(D):D)});break;case"deleteRange":var F=d.range;v=p.filter(function(D){return!In(f(D),F)});break}return v},e);return k===e?e:(k.sort(function(p,d){return N(h(p),h(d))||N(f(p),f(d))}),t.limit&&t.limit<1/0&&(k.length>t.limit?k.length=t.limit:e.length===t.limit&&k.length<t.limit&&(a.dirty=!0)),r?Object.freeze(k):k)}function Bi(e,t){return N(e.lower,t.lower)===0&&N(e.upper,t.upper)===0&&!!e.lowerOpen==!!t.lowerOpen&&!!e.upperOpen==!!t.upperOpen}function fr(e,t,n,i){if(e===void 0)return t!==void 0?-1:0;if(t===void 0)return 1;var a=N(e,t);if(a===0){if(n&&i)return 0;if(n)return 1;if(i)return-1}return a}function dr(e,t,n,i){if(e===void 0)return t!==void 0?1:0;if(t===void 0)return-1;var a=N(e,t);if(a===0){if(n&&i)return 0;if(n)return-1;if(i)return 1}return a}function mr(e,t){return fr(e.lower,t.lower,e.lowerOpen,t.lowerOpen)<=0&&dr(e.upper,t.upper,e.upperOpen,t.upperOpen)>=0}function vr(e,t,n,i){var a=Ie["idb://".concat(e,"/").concat(t)];if(!a)return[];var r=a.queries[n];if(!r)return[null,!1,a,null];var o=i.query?i.query.index.name:null,s=r[o||""];if(!s)return[null,!1,a,null];switch(n){case"query":var c=s.find(function(u){return u.req.limit===i.limit&&u.req.values===i.values&&Bi(u.req.query.range,i.query.range)});if(c)return[c,!0,a,s];var l=s.find(function(u){var h="limit"in u.req?u.req.limit:1/0;return h>=i.limit&&(i.values?u.req.values:!0)&&mr(u.req.query.range,i.query.range)});return[l,!1,a,s];case"count":var f=s.find(function(u){return Bi(u.req.query.range,i.query.range)});return[f,!!f,a,s]}}function hr(e,t,n,i){e.subscribers.add(n),i.addEventListener("abort",function(){e.subscribers.delete(n),e.subscribers.size===0&&yr(e,t)})}function yr(e,t){setTimeout(function(){e.subscribers.size===0&&Se(t,e)},3e3)}var gr={stack:"dbcore",level:0,name:"Cache",create:function(e){var t=e.schema.name,n=m(m({},e),{transaction:function(i,a,r){var o=e.transaction(i,a,r);if(a==="readwrite"){var s=new AbortController,c=s.signal,l=function(f){return function(){if(s.abort(),a==="readwrite"){for(var u=new Set,h=0,k=i;h<k.length;h++){var p=k[h],d=Ie["idb://".concat(t,"/").concat(p)];if(d){var v=e.table(p),g=d.optimisticOps.filter(function(q){return q.trans===o});if(o._explicit&&f&&o.mutatedParts)for(var b=0,w=Object.values(d.queries.query);b<w.length;b++)for(var _=w[b],x=0,j=_.slice();x<j.length;x++){var T=j[x];Kn(T.obsSet,o.mutatedParts)&&(Se(_,T),T.subscribers.forEach(function(q){return u.add(q)}))}else if(g.length>0){d.optimisticOps=d.optimisticOps.filter(function(q){return q.trans!==o});for(var S=0,R=Object.values(d.queries.query);S<R.length;S++)for(var _=R[S],F=0,D=_.slice();F<D.length;F++){var T=D[F];if(T.res!=null&&o.mutatedParts)if(f&&!T.dirty){var M=Object.isFrozen(T.res),B=zi(T.res,T.req,g,v,T,M);T.dirty?(Se(_,T),T.subscribers.forEach(function(Y){return u.add(Y)})):B!==T.res&&(T.res=B,T.promise=K.resolve({result:B}))}else T.dirty&&Se(_,T),T.subscribers.forEach(function(Y){return u.add(Y)})}}}}u.forEach(function(q){return q()})}}};o.addEventListener("abort",l(!1),{signal:c}),o.addEventListener("error",l(!1),{signal:c}),o.addEventListener("complete",l(!0),{signal:c})}return o},table:function(i){var a=e.table(i),r=a.schema.primaryKey,o=m(m({},a),{mutate:function(s){var c=O.trans;if(r.outbound||c.db._options.cache==="disabled"||c.explicit||c.idbtrans.mode!=="readwrite")return a.mutate(s);var l=Ie["idb://".concat(t,"/").concat(i)];if(!l)return a.mutate(s);var f=a.mutate(s);return(s.type==="add"||s.type==="put")&&(s.values.length>=50||Cn(r,s).some(function(u){return u==null}))?f.then(function(u){var h=m(m({},s),{values:s.values.map(function(p,d){var v;if(u.failures[d])return p;var g=!((v=r.keyPath)===null||v===void 0)&&v.includes(".")?je(p):m({},p);return Z(g,r.keyPath,u.results[d]),g})}),k=Ri(l,h,u);l.optimisticOps.push(k),queueMicrotask(function(){return s.mutatedParts&&Ft(s.mutatedParts)})}):(l.optimisticOps.push(s),s.mutatedParts&&Ft(s.mutatedParts),f.then(function(u){if(u.numFailures>0){Se(l.optimisticOps,s);var h=Ri(l,s,u);h&&l.optimisticOps.push(h),s.mutatedParts&&Ft(s.mutatedParts)}}),f.catch(function(){Se(l.optimisticOps,s),s.mutatedParts&&Ft(s.mutatedParts)})),f},query:function(s){var c;if(!Ci(O,a)||!Ii("query",s))return a.query(s);var l=((c=O.trans)===null||c===void 0?void 0:c.db._options.cache)==="immutable",f=O,u=f.requery,h=f.signal,k=vr(t,i,"query",s),p=k[0],d=k[1],v=k[2],g=k[3];if(p&&d)p.obsSet=s.obsSet;else{var b=a.query(s).then(function(w){var _=w.result;if(p&&(p.res=_),l){for(var x=0,j=_.length;x<j;++x)Object.freeze(_[x]);Object.freeze(_)}else w.result=je(_);return w}).catch(function(w){return g&&p&&Se(g,p),Promise.reject(w)});p={obsSet:s.obsSet,promise:b,subscribers:new Set,type:"query",req:s,dirty:!1},g?g.push(p):(g=[p],v||(v=Ie["idb://".concat(t,"/").concat(i)]={queries:{query:{},count:{}},objs:new Map,optimisticOps:[],unsignaledParts:{}}),v.queries.query[s.query.index.name||""]=g)}return hr(p,g,u,h),p.promise.then(function(w){return{result:zi(w.result,s,v==null?void 0:v.optimisticOps,a,p,l)}})}});return o}});return n}};function Lt(e,t){return new Proxy(e,{get:function(n,i,a){return i==="db"?t:Reflect.get(n,i,a)}})}var de=(function(){function e(t,n){var i=this;this._middlewares={},this.verno=0;var a=e.dependencies;this._options=n=m({addons:e.addons,autoOpen:!0,indexedDB:a.indexedDB,IDBKeyRange:a.IDBKeyRange,cache:"cloned"},n),this._deps={indexedDB:n.indexedDB,IDBKeyRange:n.IDBKeyRange};var r=n.addons;this._dbSchema={},this._versions=[],this._storeNames=[],this._allTables={},this.idbdb=null,this._novip=this;var o={dbOpenError:null,isBeingOpened:!1,onReadyBeingFired:null,openComplete:!1,dbReadyResolve:W,dbReadyPromise:null,cancelOpen:W,openCanceller:null,autoSchema:!0,PR1398_maxLoop:3,autoOpen:n.autoOpen};o.dbReadyPromise=new K(function(c){o.dbReadyResolve=c}),o.openCanceller=new K(function(c,l){o.cancelOpen=l}),this._state=o,this.name=t,this.on=at(this,"populate","blocked","versionchange","close",{ready:[Jt,W]}),this.once=function(c,l){var f=function(){for(var u=[],h=0;h<arguments.length;h++)u[h]=arguments[h];i.on(c).unsubscribe(f),l.apply(i,u)};return i.on(c,f)},this.on.ready.subscribe=Un(this.on.ready.subscribe,function(c){return function(l,f){e.vip(function(){var u=i._state;if(u.openComplete)u.dbOpenError||K.resolve().then(l),f&&c(l);else if(u.onReadyBeingFired)u.onReadyBeingFired.push(l),f&&c(l);else{c(l);var h=i;f||c(function k(){h.on.ready.unsubscribe(l),h.on.ready.unsubscribe(k)})}})}}),this.Collection=Sa(this),this.Table=ka(this),this.Transaction=Ia(this),this.Version=Ga(this),this.WhereClause=Pa(this),this.on("versionchange",function(c){c.newVersion>0?console.warn("Another connection wants to upgrade database '".concat(i.name,"'. Closing db now to resume the upgrade.")):console.warn("Another connection wants to delete database '".concat(i.name,"'. Closing db now to resume the delete request.")),i.close({disableAutoOpen:!1})}),this.on("blocked",function(c){!c.newVersion||c.newVersion<c.oldVersion?console.warn("Dexie.delete('".concat(i.name,"') was blocked")):console.warn("Upgrade '".concat(i.name,"' blocked by other connection holding version ").concat(c.oldVersion/10))}),this._maxKey=ct(n.IDBKeyRange),this._createTransaction=function(c,l,f,u){return new i.Transaction(c,l,f,i._options.chromeTransactionDurability,u)},this._fireOnBlocked=function(c){i.on("blocked").fire(c),$e.filter(function(l){return l.name===i.name&&l!==i&&!l._state.vcFired}).map(function(l){return l.on("versionchange").fire(c)})},this.use(sr),this.use(gr),this.use(cr),this.use(ar),this.use(rr);var s=new Proxy(this,{get:function(c,l,f){if(l==="_vip")return!0;if(l==="table")return function(h){return Lt(i.table(h),s)};var u=Reflect.get(c,l,f);return u instanceof yi?Lt(u,s):l==="tables"?u.map(function(h){return Lt(h,s)}):l==="_createTransaction"?function(){var h=u.apply(this,arguments);return Lt(h,s)}:u}});this.vip=s,r.forEach(function(c){return c(i)})}return e.prototype.version=function(t){if(isNaN(t)||t<.1)throw new I.Type("Given version is not a positive number");if(t=Math.round(t*10)/10,this.idbdb||this._state.isBeingOpened)throw new I.Schema("Cannot add version when database is open");this.verno=Math.max(this.verno,t);var n=this._versions,i=n.filter(function(a){return a._cfg.version===t})[0];return i||(i=new this.Version(t),n.push(i),n.sort(La),i.stores({}),this._state.autoSchema=!1,i)},e.prototype._whenReady=function(t){var n=this;return this.idbdb&&(this._state.openComplete||O.letThrough||this._vip)?t():new K(function(i,a){if(n._state.openComplete)return a(new I.DatabaseClosed(n._state.dbOpenError));if(!n._state.isBeingOpened){if(!n._state.autoOpen){a(new I.DatabaseClosed);return}n.open().catch(W)}n._state.dbReadyPromise.then(i,a)}).then(t)},e.prototype.use=function(t){var n=t.stack,i=t.create,a=t.level,r=t.name;r&&this.unuse({stack:n,name:r});var o=this._middlewares[n]||(this._middlewares[n]=[]);return o.push({stack:n,create:i,level:a==null?10:a,name:r}),o.sort(function(s,c){return s.level-c.level}),this},e.prototype.unuse=function(t){var n=t.stack,i=t.name,a=t.create;return n&&this._middlewares[n]&&(this._middlewares[n]=this._middlewares[n].filter(function(r){return a?r.create!==a:i?r.name!==i:!1})),this},e.prototype.open=function(){var t=this;return Oe(ve,function(){return tr(t)})},e.prototype._close=function(){this.on.close.fire(new CustomEvent("close"));var t=this._state,n=$e.indexOf(this);if(n>=0&&$e.splice(n,1),this.idbdb){try{this.idbdb.close()}catch{}this.idbdb=null}t.isBeingOpened||(t.dbReadyPromise=new K(function(i){t.dbReadyResolve=i}),t.openCanceller=new K(function(i,a){t.cancelOpen=a}))},e.prototype.close=function(t){var n=t===void 0?{disableAutoOpen:!0}:t,i=n.disableAutoOpen,a=this._state;i?(a.isBeingOpened&&a.cancelOpen(new I.DatabaseClosed),this._close(),a.autoOpen=!1,a.dbOpenError=new I.DatabaseClosed):(this._close(),a.autoOpen=this._options.autoOpen||a.isBeingOpened,a.openComplete=!1,a.dbOpenError=null)},e.prototype.delete=function(t){var n=this;t===void 0&&(t={disableAutoOpen:!0});var i=arguments.length>0&&typeof arguments[0]!="object",a=this._state;return new K(function(r,o){var s=function(){n.close(t);var c=n._deps.indexedDB.deleteDatabase(n.name);c.onsuccess=U(function(){Za(n._deps,n.name),r()}),c.onerror=se(o),c.onblocked=n._fireOnBlocked};if(i)throw new I.InvalidArgument("Invalid closeOptions argument to db.delete()");a.isBeingOpened?a.dbReadyPromise.then(s):s()})},e.prototype.backendDB=function(){return this.idbdb},e.prototype.isOpen=function(){return this.idbdb!==null},e.prototype.hasBeenClosed=function(){var t=this._state.dbOpenError;return t&&t.name==="DatabaseClosed"},e.prototype.hasFailed=function(){return this._state.dbOpenError!==null},e.prototype.dynamicallyOpened=function(){return this._state.autoSchema},Object.defineProperty(e.prototype,"tables",{get:function(){var t=this;return C(this._allTables).map(function(n){return t._allTables[n]})},enumerable:!1,configurable:!0}),e.prototype.transaction=function(){var t=nr.apply(this,arguments);return this._transaction.apply(this,t)},e.prototype._transaction=function(t,n,i){var a=this,r=O.trans;(!r||r.db!==this||t.indexOf("!")!==-1)&&(r=null);var o=t.indexOf("?")!==-1;t=t.replace("!","").replace("?","");var s,c;try{if(c=n.map(function(f){var u=f instanceof a.Table?f.name:f;if(typeof u!="string")throw new TypeError("Invalid table argument to Dexie.transaction(). Only Table or String are allowed");return u}),t=="r"||t===pn)s=pn;else if(t=="rw"||t==fn)s=fn;else throw new I.InvalidArgument("Invalid transaction mode: "+t);if(r){if(r.mode===pn&&s===fn)if(o)r=null;else throw new I.SubTransaction("Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY");r&&c.forEach(function(f){if(r&&r.storeNames.indexOf(f)===-1)if(o)r=null;else throw new I.SubTransaction("Table "+f+" not included in parent transaction.")}),o&&r&&!r.active&&(r=null)}}catch(f){return r?r._promise(null,function(u,h){h(f)}):Q(f)}var l=Oi.bind(null,this,s,c,r,i);return r?r._promise(s,l,"lock"):O.trans?Oe(O.transless,function(){return a._whenReady(l)}):this._whenReady(l)},e.prototype.table=function(t){if(!J(this._allTables,t))throw new I.InvalidTable("Table ".concat(t," does not exist"));return this._allTables[t]},e})(),xr=typeof Symbol<"u"&&"observable"in Symbol?Symbol.observable:"@@observable",br=(function(){function e(t){this._subscribe=t}return e.prototype.subscribe=function(t,n,i){return this._subscribe(!t||typeof t=="function"?{next:t,error:n,complete:i}:t)},e.prototype[xr]=function(){return this},e})(),Nt;try{Nt={indexedDB:A.indexedDB||A.mozIndexedDB||A.webkitIndexedDB||A.msIndexedDB,IDBKeyRange:A.IDBKeyRange||A.webkitIDBKeyRange}}catch{Nt={indexedDB:null,IDBKeyRange:null}}function Mi(e){var t=!1,n,i=new br(function(a){var r=Ht(e);function o(g){var b=Ne();try{r&&We();var w=he(e,g);return r&&(w=w.finally(ye)),w}finally{b&&qe()}}var s=!1,c,l={},f={},u={get closed(){return s},unsubscribe:function(){s||(s=!0,c&&c.abort(),h&&be.storagemutated.unsubscribe(d))}};a.start&&a.start(u);var h=!1,k=function(){return cn(v)};function p(){return Kn(f,l)}var d=function(g){Mt(l,g),p()&&k()},v=function(){if(!(s||!Nt.indexedDB)){l={};var g={};c&&c.abort(),c=new AbortController;var b={subscr:g,signal:c.signal,requery:k,querier:e,trans:null},w=o(b);Promise.resolve(w).then(function(_){t=!0,n=_,!(s||b.signal.aborted)&&(l={},f=g,!Xi(f)&&!h&&(be(st,d),h=!0),cn(function(){return!s&&a.next&&a.next(_)}))},function(_){t=!1,["DatabaseClosedError","AbortError"].includes(_==null?void 0:_.name)||s||cn(function(){s||a.error&&a.error(_)})})}};return setTimeout(k,0),u});return i.hasValue=function(){return t},i.getValue=function(){return n},i}var Re=de;Be(Re,m(m({},yt),{delete:function(e){var t=new Re(e,{addons:[]});return t.delete()},exists:function(e){return new Re(e,{addons:[]}).open().then(function(t){return t.close(),!0}).catch("NoSuchDatabaseError",function(){return!1})},getDatabaseNames:function(e){try{return Xa(Re.dependencies).then(e)}catch{return Q(new I.MissingAPI)}},defineClass:function(){function e(t){L(this,t)}return e},ignoreTransaction:function(e){return O.trans?Oe(O.transless,e):e()},vip:En,async:function(e){return function(){try{var t=On(e.apply(this,arguments));return!t||typeof t.then!="function"?K.resolve(t):t}catch(n){return Q(n)}}},spawn:function(e,t,n){try{var i=On(e.apply(n,t||[]));return!i||typeof i.then!="function"?K.resolve(i):i}catch(a){return Q(a)}},currentTransaction:{get:function(){return O.trans||null}},waitFor:function(e,t){var n=K.resolve(typeof e=="function"?Re.ignoreTransaction(e):e).timeout(t||6e4);return O.trans?O.trans.waitFor(n):n},Promise:K,debug:{get:function(){return oe},set:function(e){ti(e)}},derive:Me,extend:L,props:Be,override:Un,Events:at,on:be,liveQuery:Mi,extendObservabilitySet:Mt,getByKeyPath:ue,setByKeyPath:Z,delByKeyPath:Qi,shallowClone:Qn,deepClone:je,getObjectDiff:Pn,cmp:N,asap:Yn,minKey:un,addons:[],connections:$e,errnames:Xt,dependencies:Nt,cache:Ie,semVer:ui,version:ui.split(".").map(function(e){return parseInt(e)}).reduce(function(e,t,n){return e+t/Math.pow(10,n*2)})})),Re.maxKey=ct(Re.dependencies.IDBKeyRange),typeof dispatchEvent<"u"&&typeof addEventListener<"u"&&(be(st,function(e){if(!we){var t;t=new CustomEvent(vn,{detail:e}),we=!0,dispatchEvent(t),we=!1}}),addEventListener(vn,function(e){var t=e.detail;we||Rn(t)}));function Rn(e){var t=we;try{we=!0,be.storagemutated.fire(e),An(e,!0)}finally{we=t}}var we=!1,_e,zn=function(){};typeof BroadcastChannel<"u"&&(zn=function(){_e=new BroadcastChannel(vn),_e.onmessage=function(e){return e.data&&Rn(e.data)}},zn(),typeof _e.unref=="function"&&_e.unref(),be(st,function(e){we||_e.postMessage(e)})),typeof addEventListener<"u"&&(addEventListener("pagehide",function(e){if(!de.disableBfCache&&e.persisted){oe&&console.debug("Dexie: handling persisted pagehide"),_e==null||_e.close();for(var t=0,n=$e;t<n.length;t++){var i=n[t];i.close({disableAutoOpen:!1})}}}),addEventListener("pageshow",function(e){!de.disableBfCache&&e.persisted&&(oe&&console.debug("Dexie: handling persisted pageshow"),zn(),Rn({all:new G(-1/0,[[]])}))}));function wr(e){return new it({add:e})}function _r(e){return new it({remove:e})}function kr(e,t){return new it({replacePrefix:[e,t]})}K.rejectionMapper=ia,ti(oe);var Er=Object.freeze({__proto__:null,Dexie:de,Entity:di,PropModification:it,RangeSet:G,add:wr,cmp:N,default:de,liveQuery:Mi,mergeRanges:pt,rangesOverlap:Ki,remove:_r,replacePrefix:kr});return m(de,Er,{default:de}),de}))});var $t=Ir(Fi(),1),Vi=Symbol.for("Dexie"),Qe=globalThis[Vi]||(globalThis[Vi]=$t.default);if($t.default.semVer!==Qe.semVer)throw new Error(`Two different versions of Dexie loaded in the same app: ${$t.default.semVer} and ${Qe.semVer}`);var{liveQuery:Br,mergeRanges:Mr,rangesOverlap:Fr,RangeSet:Vr,cmp:Lr,Entity:Nr,PropModification:qr,replacePrefix:Wr,add:$r,remove:Ur,DexieYProvider:Yr}=Qe;var Vn={name:"vvvfs",version:"0.0.1-alpha.2",description:"\u4E00\u4E2A\u4F7F\u7528IndexDB\u5B9E\u73B0\u7684\u865A\u62DF\u6587\u4EF6\u7CFB\u7EDF",keywords:["Virtual","File","System","IFTC","VV","File","System","vfs","fs"],license:"MIT",author:"IFTC",type:"module",main:"index.js",scripts:{test:'echo "Error: no test specified" && exit 1',build:"node esbuild.config.js"},dependencies:{dexie:"^4.3.0",esbuild:"^0.27.3",mime:"^4.1.0"}};var Li={"application/prs.cww":["cww"],"application/prs.xsf+xml":["xsf"],"application/vnd.1000minds.decision-model+xml":["1km"],"application/vnd.3gpp.pic-bw-large":["plb"],"application/vnd.3gpp.pic-bw-small":["psb"],"application/vnd.3gpp.pic-bw-var":["pvb"],"application/vnd.3gpp2.tcap":["tcap"],"application/vnd.3m.post-it-notes":["pwn"],"application/vnd.accpac.simply.aso":["aso"],"application/vnd.accpac.simply.imp":["imp"],"application/vnd.acucobol":["acu"],"application/vnd.acucorp":["atc","acutc"],"application/vnd.adobe.air-application-installer-package+zip":["air"],"application/vnd.adobe.formscentral.fcdt":["fcdt"],"application/vnd.adobe.fxp":["fxp","fxpl"],"application/vnd.adobe.xdp+xml":["xdp"],"application/vnd.adobe.xfdf":["*xfdf"],"application/vnd.age":["age"],"application/vnd.ahead.space":["ahead"],"application/vnd.airzip.filesecure.azf":["azf"],"application/vnd.airzip.filesecure.azs":["azs"],"application/vnd.amazon.ebook":["azw"],"application/vnd.americandynamics.acc":["acc"],"application/vnd.amiga.ami":["ami"],"application/vnd.android.package-archive":["apk"],"application/vnd.anser-web-certificate-issue-initiation":["cii"],"application/vnd.anser-web-funds-transfer-initiation":["fti"],"application/vnd.antix.game-component":["atx"],"application/vnd.apple.installer+xml":["mpkg"],"application/vnd.apple.keynote":["key"],"application/vnd.apple.mpegurl":["m3u8"],"application/vnd.apple.numbers":["numbers"],"application/vnd.apple.pages":["pages"],"application/vnd.apple.pkpass":["pkpass"],"application/vnd.aristanetworks.swi":["swi"],"application/vnd.astraea-software.iota":["iota"],"application/vnd.audiograph":["aep"],"application/vnd.autodesk.fbx":["fbx"],"application/vnd.balsamiq.bmml+xml":["bmml"],"application/vnd.blueice.multipass":["mpm"],"application/vnd.bmi":["bmi"],"application/vnd.businessobjects":["rep"],"application/vnd.chemdraw+xml":["cdxml"],"application/vnd.chipnuts.karaoke-mmd":["mmd"],"application/vnd.cinderella":["cdy"],"application/vnd.citationstyles.style+xml":["csl"],"application/vnd.claymore":["cla"],"application/vnd.cloanto.rp9":["rp9"],"application/vnd.clonk.c4group":["c4g","c4d","c4f","c4p","c4u"],"application/vnd.cluetrust.cartomobile-config":["c11amc"],"application/vnd.cluetrust.cartomobile-config-pkg":["c11amz"],"application/vnd.commonspace":["csp"],"application/vnd.contact.cmsg":["cdbcmsg"],"application/vnd.cosmocaller":["cmc"],"application/vnd.crick.clicker":["clkx"],"application/vnd.crick.clicker.keyboard":["clkk"],"application/vnd.crick.clicker.palette":["clkp"],"application/vnd.crick.clicker.template":["clkt"],"application/vnd.crick.clicker.wordbank":["clkw"],"application/vnd.criticaltools.wbs+xml":["wbs"],"application/vnd.ctc-posml":["pml"],"application/vnd.cups-ppd":["ppd"],"application/vnd.curl.car":["car"],"application/vnd.curl.pcurl":["pcurl"],"application/vnd.dart":["dart"],"application/vnd.data-vision.rdz":["rdz"],"application/vnd.dbf":["dbf"],"application/vnd.dcmp+xml":["dcmp"],"application/vnd.dece.data":["uvf","uvvf","uvd","uvvd"],"application/vnd.dece.ttml+xml":["uvt","uvvt"],"application/vnd.dece.unspecified":["uvx","uvvx"],"application/vnd.dece.zip":["uvz","uvvz"],"application/vnd.denovo.fcselayout-link":["fe_launch"],"application/vnd.dna":["dna"],"application/vnd.dolby.mlp":["mlp"],"application/vnd.dpgraph":["dpg"],"application/vnd.dreamfactory":["dfac"],"application/vnd.ds-keypoint":["kpxx"],"application/vnd.dvb.ait":["ait"],"application/vnd.dvb.service":["svc"],"application/vnd.dynageo":["geo"],"application/vnd.ecowin.chart":["mag"],"application/vnd.enliven":["nml"],"application/vnd.epson.esf":["esf"],"application/vnd.epson.msf":["msf"],"application/vnd.epson.quickanime":["qam"],"application/vnd.epson.salt":["slt"],"application/vnd.epson.ssf":["ssf"],"application/vnd.eszigno3+xml":["es3","et3"],"application/vnd.ezpix-album":["ez2"],"application/vnd.ezpix-package":["ez3"],"application/vnd.fdf":["*fdf"],"application/vnd.fdsn.mseed":["mseed"],"application/vnd.fdsn.seed":["seed","dataless"],"application/vnd.flographit":["gph"],"application/vnd.fluxtime.clip":["ftc"],"application/vnd.framemaker":["fm","frame","maker","book"],"application/vnd.frogans.fnc":["fnc"],"application/vnd.frogans.ltf":["ltf"],"application/vnd.fsc.weblaunch":["fsc"],"application/vnd.fujitsu.oasys":["oas"],"application/vnd.fujitsu.oasys2":["oa2"],"application/vnd.fujitsu.oasys3":["oa3"],"application/vnd.fujitsu.oasysgp":["fg5"],"application/vnd.fujitsu.oasysprs":["bh2"],"application/vnd.fujixerox.ddd":["ddd"],"application/vnd.fujixerox.docuworks":["xdw"],"application/vnd.fujixerox.docuworks.binder":["xbd"],"application/vnd.fuzzysheet":["fzs"],"application/vnd.genomatix.tuxedo":["txd"],"application/vnd.geogebra.file":["ggb"],"application/vnd.geogebra.slides":["ggs"],"application/vnd.geogebra.tool":["ggt"],"application/vnd.geometry-explorer":["gex","gre"],"application/vnd.geonext":["gxt"],"application/vnd.geoplan":["g2w"],"application/vnd.geospace":["g3w"],"application/vnd.gmx":["gmx"],"application/vnd.google-apps.document":["gdoc"],"application/vnd.google-apps.drawing":["gdraw"],"application/vnd.google-apps.form":["gform"],"application/vnd.google-apps.jam":["gjam"],"application/vnd.google-apps.map":["gmap"],"application/vnd.google-apps.presentation":["gslides"],"application/vnd.google-apps.script":["gscript"],"application/vnd.google-apps.site":["gsite"],"application/vnd.google-apps.spreadsheet":["gsheet"],"application/vnd.google-earth.kml+xml":["kml"],"application/vnd.google-earth.kmz":["kmz"],"application/vnd.gov.sk.xmldatacontainer+xml":["xdcf"],"application/vnd.grafeq":["gqf","gqs"],"application/vnd.groove-account":["gac"],"application/vnd.groove-help":["ghf"],"application/vnd.groove-identity-message":["gim"],"application/vnd.groove-injector":["grv"],"application/vnd.groove-tool-message":["gtm"],"application/vnd.groove-tool-template":["tpl"],"application/vnd.groove-vcard":["vcg"],"application/vnd.hal+xml":["hal"],"application/vnd.handheld-entertainment+xml":["zmm"],"application/vnd.hbci":["hbci"],"application/vnd.hhe.lesson-player":["les"],"application/vnd.hp-hpgl":["hpgl"],"application/vnd.hp-hpid":["hpid"],"application/vnd.hp-hps":["hps"],"application/vnd.hp-jlyt":["jlt"],"application/vnd.hp-pcl":["pcl"],"application/vnd.hp-pclxl":["pclxl"],"application/vnd.hydrostatix.sof-data":["sfd-hdstx"],"application/vnd.ibm.minipay":["mpy"],"application/vnd.ibm.modcap":["afp","listafp","list3820"],"application/vnd.ibm.rights-management":["irm"],"application/vnd.ibm.secure-container":["sc"],"application/vnd.iccprofile":["icc","icm"],"application/vnd.igloader":["igl"],"application/vnd.immervision-ivp":["ivp"],"application/vnd.immervision-ivu":["ivu"],"application/vnd.insors.igm":["igm"],"application/vnd.intercon.formnet":["xpw","xpx"],"application/vnd.intergeo":["i2g"],"application/vnd.intu.qbo":["qbo"],"application/vnd.intu.qfx":["qfx"],"application/vnd.ipunplugged.rcprofile":["rcprofile"],"application/vnd.irepository.package+xml":["irp"],"application/vnd.is-xpr":["xpr"],"application/vnd.isac.fcs":["fcs"],"application/vnd.jam":["jam"],"application/vnd.jcp.javame.midlet-rms":["rms"],"application/vnd.jisp":["jisp"],"application/vnd.joost.joda-archive":["joda"],"application/vnd.kahootz":["ktz","ktr"],"application/vnd.kde.karbon":["karbon"],"application/vnd.kde.kchart":["chrt"],"application/vnd.kde.kformula":["kfo"],"application/vnd.kde.kivio":["flw"],"application/vnd.kde.kontour":["kon"],"application/vnd.kde.kpresenter":["kpr","kpt"],"application/vnd.kde.kspread":["ksp"],"application/vnd.kde.kword":["kwd","kwt"],"application/vnd.kenameaapp":["htke"],"application/vnd.kidspiration":["kia"],"application/vnd.kinar":["kne","knp"],"application/vnd.koan":["skp","skd","skt","skm"],"application/vnd.kodak-descriptor":["sse"],"application/vnd.las.las+xml":["lasxml"],"application/vnd.llamagraphics.life-balance.desktop":["lbd"],"application/vnd.llamagraphics.life-balance.exchange+xml":["lbe"],"application/vnd.lotus-1-2-3":["123"],"application/vnd.lotus-approach":["apr"],"application/vnd.lotus-freelance":["pre"],"application/vnd.lotus-notes":["nsf"],"application/vnd.lotus-organizer":["org"],"application/vnd.lotus-screencam":["scm"],"application/vnd.lotus-wordpro":["lwp"],"application/vnd.macports.portpkg":["portpkg"],"application/vnd.mapbox-vector-tile":["mvt"],"application/vnd.mcd":["mcd"],"application/vnd.medcalcdata":["mc1"],"application/vnd.mediastation.cdkey":["cdkey"],"application/vnd.mfer":["mwf"],"application/vnd.mfmp":["mfm"],"application/vnd.micrografx.flo":["flo"],"application/vnd.micrografx.igx":["igx"],"application/vnd.mif":["mif"],"application/vnd.mobius.daf":["daf"],"application/vnd.mobius.dis":["dis"],"application/vnd.mobius.mbk":["mbk"],"application/vnd.mobius.mqy":["mqy"],"application/vnd.mobius.msl":["msl"],"application/vnd.mobius.plc":["plc"],"application/vnd.mobius.txf":["txf"],"application/vnd.mophun.application":["mpn"],"application/vnd.mophun.certificate":["mpc"],"application/vnd.mozilla.xul+xml":["xul"],"application/vnd.ms-artgalry":["cil"],"application/vnd.ms-cab-compressed":["cab"],"application/vnd.ms-excel":["xls","xlm","xla","xlc","xlt","xlw"],"application/vnd.ms-excel.addin.macroenabled.12":["xlam"],"application/vnd.ms-excel.sheet.binary.macroenabled.12":["xlsb"],"application/vnd.ms-excel.sheet.macroenabled.12":["xlsm"],"application/vnd.ms-excel.template.macroenabled.12":["xltm"],"application/vnd.ms-fontobject":["eot"],"application/vnd.ms-htmlhelp":["chm"],"application/vnd.ms-ims":["ims"],"application/vnd.ms-lrm":["lrm"],"application/vnd.ms-officetheme":["thmx"],"application/vnd.ms-outlook":["msg"],"application/vnd.ms-pki.seccat":["cat"],"application/vnd.ms-pki.stl":["*stl"],"application/vnd.ms-powerpoint":["ppt","pps","pot"],"application/vnd.ms-powerpoint.addin.macroenabled.12":["ppam"],"application/vnd.ms-powerpoint.presentation.macroenabled.12":["pptm"],"application/vnd.ms-powerpoint.slide.macroenabled.12":["sldm"],"application/vnd.ms-powerpoint.slideshow.macroenabled.12":["ppsm"],"application/vnd.ms-powerpoint.template.macroenabled.12":["potm"],"application/vnd.ms-project":["*mpp","mpt"],"application/vnd.ms-visio.viewer":["vdx"],"application/vnd.ms-word.document.macroenabled.12":["docm"],"application/vnd.ms-word.template.macroenabled.12":["dotm"],"application/vnd.ms-works":["wps","wks","wcm","wdb"],"application/vnd.ms-wpl":["wpl"],"application/vnd.ms-xpsdocument":["xps"],"application/vnd.mseq":["mseq"],"application/vnd.musician":["mus"],"application/vnd.muvee.style":["msty"],"application/vnd.mynfc":["taglet"],"application/vnd.nato.bindingdataobject+xml":["bdo"],"application/vnd.neurolanguage.nlu":["nlu"],"application/vnd.nitf":["ntf","nitf"],"application/vnd.noblenet-directory":["nnd"],"application/vnd.noblenet-sealer":["nns"],"application/vnd.noblenet-web":["nnw"],"application/vnd.nokia.n-gage.ac+xml":["*ac"],"application/vnd.nokia.n-gage.data":["ngdat"],"application/vnd.nokia.n-gage.symbian.install":["n-gage"],"application/vnd.nokia.radio-preset":["rpst"],"application/vnd.nokia.radio-presets":["rpss"],"application/vnd.novadigm.edm":["edm"],"application/vnd.novadigm.edx":["edx"],"application/vnd.novadigm.ext":["ext"],"application/vnd.oasis.opendocument.chart":["odc"],"application/vnd.oasis.opendocument.chart-template":["otc"],"application/vnd.oasis.opendocument.database":["odb"],"application/vnd.oasis.opendocument.formula":["odf"],"application/vnd.oasis.opendocument.formula-template":["odft"],"application/vnd.oasis.opendocument.graphics":["odg"],"application/vnd.oasis.opendocument.graphics-template":["otg"],"application/vnd.oasis.opendocument.image":["odi"],"application/vnd.oasis.opendocument.image-template":["oti"],"application/vnd.oasis.opendocument.presentation":["odp"],"application/vnd.oasis.opendocument.presentation-template":["otp"],"application/vnd.oasis.opendocument.spreadsheet":["ods"],"application/vnd.oasis.opendocument.spreadsheet-template":["ots"],"application/vnd.oasis.opendocument.text":["odt"],"application/vnd.oasis.opendocument.text-master":["odm"],"application/vnd.oasis.opendocument.text-template":["ott"],"application/vnd.oasis.opendocument.text-web":["oth"],"application/vnd.olpc-sugar":["xo"],"application/vnd.oma.dd2+xml":["dd2"],"application/vnd.openblox.game+xml":["obgx"],"application/vnd.openofficeorg.extension":["oxt"],"application/vnd.openstreetmap.data+xml":["osm"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":["pptx"],"application/vnd.openxmlformats-officedocument.presentationml.slide":["sldx"],"application/vnd.openxmlformats-officedocument.presentationml.slideshow":["ppsx"],"application/vnd.openxmlformats-officedocument.presentationml.template":["potx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":["xlsx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.template":["xltx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":["docx"],"application/vnd.openxmlformats-officedocument.wordprocessingml.template":["dotx"],"application/vnd.osgeo.mapguide.package":["mgp"],"application/vnd.osgi.dp":["dp"],"application/vnd.osgi.subsystem":["esa"],"application/vnd.palm":["pdb","pqa","oprc"],"application/vnd.pawaafile":["paw"],"application/vnd.pg.format":["str"],"application/vnd.pg.osasli":["ei6"],"application/vnd.picsel":["efif"],"application/vnd.pmi.widget":["wg"],"application/vnd.pocketlearn":["plf"],"application/vnd.powerbuilder6":["pbd"],"application/vnd.previewsystems.box":["box"],"application/vnd.procrate.brushset":["brushset"],"application/vnd.procreate.brush":["brush"],"application/vnd.procreate.dream":["drm"],"application/vnd.proteus.magazine":["mgz"],"application/vnd.publishare-delta-tree":["qps"],"application/vnd.pvi.ptid1":["ptid"],"application/vnd.pwg-xhtml-print+xml":["xhtm"],"application/vnd.quark.quarkxpress":["qxd","qxt","qwd","qwt","qxl","qxb"],"application/vnd.rar":["rar"],"application/vnd.realvnc.bed":["bed"],"application/vnd.recordare.musicxml":["mxl"],"application/vnd.recordare.musicxml+xml":["musicxml"],"application/vnd.rig.cryptonote":["cryptonote"],"application/vnd.rim.cod":["cod"],"application/vnd.rn-realmedia":["rm"],"application/vnd.rn-realmedia-vbr":["rmvb"],"application/vnd.route66.link66+xml":["link66"],"application/vnd.sailingtracker.track":["st"],"application/vnd.seemail":["see"],"application/vnd.sema":["sema"],"application/vnd.semd":["semd"],"application/vnd.semf":["semf"],"application/vnd.shana.informed.formdata":["ifm"],"application/vnd.shana.informed.formtemplate":["itp"],"application/vnd.shana.informed.interchange":["iif"],"application/vnd.shana.informed.package":["ipk"],"application/vnd.simtech-mindmapper":["twd","twds"],"application/vnd.smaf":["mmf"],"application/vnd.smart.teacher":["teacher"],"application/vnd.software602.filler.form+xml":["fo"],"application/vnd.solent.sdkm+xml":["sdkm","sdkd"],"application/vnd.spotfire.dxp":["dxp"],"application/vnd.spotfire.sfs":["sfs"],"application/vnd.stardivision.calc":["sdc"],"application/vnd.stardivision.draw":["sda"],"application/vnd.stardivision.impress":["sdd"],"application/vnd.stardivision.math":["smf"],"application/vnd.stardivision.writer":["sdw","vor"],"application/vnd.stardivision.writer-global":["sgl"],"application/vnd.stepmania.package":["smzip"],"application/vnd.stepmania.stepchart":["sm"],"application/vnd.sun.wadl+xml":["wadl"],"application/vnd.sun.xml.calc":["sxc"],"application/vnd.sun.xml.calc.template":["stc"],"application/vnd.sun.xml.draw":["sxd"],"application/vnd.sun.xml.draw.template":["std"],"application/vnd.sun.xml.impress":["sxi"],"application/vnd.sun.xml.impress.template":["sti"],"application/vnd.sun.xml.math":["sxm"],"application/vnd.sun.xml.writer":["sxw"],"application/vnd.sun.xml.writer.global":["sxg"],"application/vnd.sun.xml.writer.template":["stw"],"application/vnd.sus-calendar":["sus","susp"],"application/vnd.svd":["svd"],"application/vnd.symbian.install":["sis","sisx"],"application/vnd.syncml+xml":["xsm"],"application/vnd.syncml.dm+wbxml":["bdm"],"application/vnd.syncml.dm+xml":["xdm"],"application/vnd.syncml.dmddf+xml":["ddf"],"application/vnd.tao.intent-module-archive":["tao"],"application/vnd.tcpdump.pcap":["pcap","cap","dmp"],"application/vnd.tmobile-livetv":["tmo"],"application/vnd.trid.tpt":["tpt"],"application/vnd.triscape.mxs":["mxs"],"application/vnd.trueapp":["tra"],"application/vnd.ufdl":["ufd","ufdl"],"application/vnd.uiq.theme":["utz"],"application/vnd.umajin":["umj"],"application/vnd.unity":["unityweb"],"application/vnd.uoml+xml":["uoml","uo"],"application/vnd.vcx":["vcx"],"application/vnd.visio":["vsd","vst","vss","vsw","vsdx","vtx"],"application/vnd.visionary":["vis"],"application/vnd.vsf":["vsf"],"application/vnd.wap.wbxml":["wbxml"],"application/vnd.wap.wmlc":["wmlc"],"application/vnd.wap.wmlscriptc":["wmlsc"],"application/vnd.webturbo":["wtb"],"application/vnd.wolfram.player":["nbp"],"application/vnd.wordperfect":["wpd"],"application/vnd.wqd":["wqd"],"application/vnd.wt.stf":["stf"],"application/vnd.xara":["xar"],"application/vnd.xfdl":["xfdl"],"application/vnd.yamaha.hv-dic":["hvd"],"application/vnd.yamaha.hv-script":["hvs"],"application/vnd.yamaha.hv-voice":["hvp"],"application/vnd.yamaha.openscoreformat":["osf"],"application/vnd.yamaha.openscoreformat.osfpvg+xml":["osfpvg"],"application/vnd.yamaha.smaf-audio":["saf"],"application/vnd.yamaha.smaf-phrase":["spf"],"application/vnd.yellowriver-custom-menu":["cmp"],"application/vnd.zul":["zir","zirz"],"application/vnd.zzazz.deck+xml":["zaz"],"application/x-7z-compressed":["7z"],"application/x-abiword":["abw"],"application/x-ace-compressed":["ace"],"application/x-apple-diskimage":["*dmg"],"application/x-arj":["arj"],"application/x-authorware-bin":["aab","x32","u32","vox"],"application/x-authorware-map":["aam"],"application/x-authorware-seg":["aas"],"application/x-bcpio":["bcpio"],"application/x-bdoc":["*bdoc"],"application/x-bittorrent":["torrent"],"application/x-blender":["blend"],"application/x-blorb":["blb","blorb"],"application/x-bzip":["bz"],"application/x-bzip2":["bz2","boz"],"application/x-cbr":["cbr","cba","cbt","cbz","cb7"],"application/x-cdlink":["vcd"],"application/x-cfs-compressed":["cfs"],"application/x-chat":["chat"],"application/x-chess-pgn":["pgn"],"application/x-chrome-extension":["crx"],"application/x-cocoa":["cco"],"application/x-compressed":["*rar"],"application/x-conference":["nsc"],"application/x-cpio":["cpio"],"application/x-csh":["csh"],"application/x-debian-package":["*deb","udeb"],"application/x-dgc-compressed":["dgc"],"application/x-director":["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"],"application/x-doom":["wad"],"application/x-dtbncx+xml":["ncx"],"application/x-dtbook+xml":["dtb"],"application/x-dtbresource+xml":["res"],"application/x-dvi":["dvi"],"application/x-envoy":["evy"],"application/x-eva":["eva"],"application/x-font-bdf":["bdf"],"application/x-font-ghostscript":["gsf"],"application/x-font-linux-psf":["psf"],"application/x-font-pcf":["pcf"],"application/x-font-snf":["snf"],"application/x-font-type1":["pfa","pfb","pfm","afm"],"application/x-freearc":["arc"],"application/x-futuresplash":["spl"],"application/x-gca-compressed":["gca"],"application/x-glulx":["ulx"],"application/x-gnumeric":["gnumeric"],"application/x-gramps-xml":["gramps"],"application/x-gtar":["gtar"],"application/x-hdf":["hdf"],"application/x-httpd-php":["php"],"application/x-install-instructions":["install"],"application/x-ipynb+json":["ipynb"],"application/x-iso9660-image":["*iso"],"application/x-iwork-keynote-sffkey":["*key"],"application/x-iwork-numbers-sffnumbers":["*numbers"],"application/x-iwork-pages-sffpages":["*pages"],"application/x-java-archive-diff":["jardiff"],"application/x-java-jnlp-file":["jnlp"],"application/x-keepass2":["kdbx"],"application/x-latex":["latex"],"application/x-lua-bytecode":["luac"],"application/x-lzh-compressed":["lzh","lha"],"application/x-makeself":["run"],"application/x-mie":["mie"],"application/x-mobipocket-ebook":["*prc","mobi"],"application/x-ms-application":["application"],"application/x-ms-shortcut":["lnk"],"application/x-ms-wmd":["wmd"],"application/x-ms-wmz":["wmz"],"application/x-ms-xbap":["xbap"],"application/x-msaccess":["mdb"],"application/x-msbinder":["obd"],"application/x-mscardfile":["crd"],"application/x-msclip":["clp"],"application/x-msdos-program":["*exe"],"application/x-msdownload":["*exe","*dll","com","bat","*msi"],"application/x-msmediaview":["mvb","m13","m14"],"application/x-msmetafile":["*wmf","*wmz","*emf","emz"],"application/x-msmoney":["mny"],"application/x-mspublisher":["pub"],"application/x-msschedule":["scd"],"application/x-msterminal":["trm"],"application/x-mswrite":["wri"],"application/x-netcdf":["nc","cdf"],"application/x-ns-proxy-autoconfig":["pac"],"application/x-nzb":["nzb"],"application/x-perl":["pl","pm"],"application/x-pilot":["*prc","*pdb"],"application/x-pkcs12":["p12","pfx"],"application/x-pkcs7-certificates":["p7b","spc"],"application/x-pkcs7-certreqresp":["p7r"],"application/x-rar-compressed":["*rar"],"application/x-redhat-package-manager":["rpm"],"application/x-research-info-systems":["ris"],"application/x-sea":["sea"],"application/x-sh":["sh"],"application/x-shar":["shar"],"application/x-shockwave-flash":["swf"],"application/x-silverlight-app":["xap"],"application/x-sql":["*sql"],"application/x-stuffit":["sit"],"application/x-stuffitx":["sitx"],"application/x-subrip":["srt"],"application/x-sv4cpio":["sv4cpio"],"application/x-sv4crc":["sv4crc"],"application/x-t3vm-image":["t3"],"application/x-tads":["gam"],"application/x-tar":["tar"],"application/x-tcl":["tcl","tk"],"application/x-tex":["tex"],"application/x-tex-tfm":["tfm"],"application/x-texinfo":["texinfo","texi"],"application/x-tgif":["*obj"],"application/x-ustar":["ustar"],"application/x-virtualbox-hdd":["hdd"],"application/x-virtualbox-ova":["ova"],"application/x-virtualbox-ovf":["ovf"],"application/x-virtualbox-vbox":["vbox"],"application/x-virtualbox-vbox-extpack":["vbox-extpack"],"application/x-virtualbox-vdi":["vdi"],"application/x-virtualbox-vhd":["vhd"],"application/x-virtualbox-vmdk":["vmdk"],"application/x-wais-source":["src"],"application/x-web-app-manifest+json":["webapp"],"application/x-x509-ca-cert":["der","crt","pem"],"application/x-xfig":["fig"],"application/x-xliff+xml":["*xlf"],"application/x-xpinstall":["xpi"],"application/x-xz":["xz"],"application/x-zip-compressed":["*zip"],"application/x-zmachine":["z1","z2","z3","z4","z5","z6","z7","z8"],"audio/vnd.dece.audio":["uva","uvva"],"audio/vnd.digital-winds":["eol"],"audio/vnd.dra":["dra"],"audio/vnd.dts":["dts"],"audio/vnd.dts.hd":["dtshd"],"audio/vnd.lucent.voice":["lvp"],"audio/vnd.ms-playready.media.pya":["pya"],"audio/vnd.nuera.ecelp4800":["ecelp4800"],"audio/vnd.nuera.ecelp7470":["ecelp7470"],"audio/vnd.nuera.ecelp9600":["ecelp9600"],"audio/vnd.rip":["rip"],"audio/x-aac":["*aac"],"audio/x-aiff":["aif","aiff","aifc"],"audio/x-caf":["caf"],"audio/x-flac":["flac"],"audio/x-m4a":["*m4a"],"audio/x-matroska":["mka"],"audio/x-mpegurl":["m3u"],"audio/x-ms-wax":["wax"],"audio/x-ms-wma":["wma"],"audio/x-pn-realaudio":["ram","ra"],"audio/x-pn-realaudio-plugin":["rmp"],"audio/x-realaudio":["*ra"],"audio/x-wav":["*wav"],"chemical/x-cdx":["cdx"],"chemical/x-cif":["cif"],"chemical/x-cmdf":["cmdf"],"chemical/x-cml":["cml"],"chemical/x-csml":["csml"],"chemical/x-xyz":["xyz"],"image/prs.btif":["btif","btf"],"image/prs.pti":["pti"],"image/vnd.adobe.photoshop":["psd"],"image/vnd.airzip.accelerator.azv":["azv"],"image/vnd.blockfact.facti":["facti"],"image/vnd.dece.graphic":["uvi","uvvi","uvg","uvvg"],"image/vnd.djvu":["djvu","djv"],"image/vnd.dvb.subtitle":["*sub"],"image/vnd.dwg":["dwg"],"image/vnd.dxf":["dxf"],"image/vnd.fastbidsheet":["fbs"],"image/vnd.fpx":["fpx"],"image/vnd.fst":["fst"],"image/vnd.fujixerox.edmics-mmr":["mmr"],"image/vnd.fujixerox.edmics-rlc":["rlc"],"image/vnd.microsoft.icon":["ico"],"image/vnd.ms-dds":["dds"],"image/vnd.ms-modi":["mdi"],"image/vnd.ms-photo":["wdp"],"image/vnd.net-fpx":["npx"],"image/vnd.pco.b16":["b16"],"image/vnd.tencent.tap":["tap"],"image/vnd.valve.source.texture":["vtf"],"image/vnd.wap.wbmp":["wbmp"],"image/vnd.xiff":["xif"],"image/vnd.zbrush.pcx":["pcx"],"image/x-3ds":["3ds"],"image/x-adobe-dng":["dng"],"image/x-cmu-raster":["ras"],"image/x-cmx":["cmx"],"image/x-freehand":["fh","fhc","fh4","fh5","fh7"],"image/x-icon":["*ico"],"image/x-jng":["jng"],"image/x-mrsid-image":["sid"],"image/x-ms-bmp":["*bmp"],"image/x-pcx":["*pcx"],"image/x-pict":["pic","pct"],"image/x-portable-anymap":["pnm"],"image/x-portable-bitmap":["pbm"],"image/x-portable-graymap":["pgm"],"image/x-portable-pixmap":["ppm"],"image/x-rgb":["rgb"],"image/x-tga":["tga"],"image/x-xbitmap":["xbm"],"image/x-xpixmap":["xpm"],"image/x-xwindowdump":["xwd"],"message/vnd.wfa.wsc":["wsc"],"model/vnd.bary":["bary"],"model/vnd.cld":["cld"],"model/vnd.collada+xml":["dae"],"model/vnd.dwf":["dwf"],"model/vnd.gdl":["gdl"],"model/vnd.gtw":["gtw"],"model/vnd.mts":["*mts"],"model/vnd.opengex":["ogex"],"model/vnd.parasolid.transmit.binary":["x_b"],"model/vnd.parasolid.transmit.text":["x_t"],"model/vnd.pytha.pyox":["pyo","pyox"],"model/vnd.sap.vds":["vds"],"model/vnd.usda":["usda"],"model/vnd.usdz+zip":["usdz"],"model/vnd.valve.source.compiled-map":["bsp"],"model/vnd.vtu":["vtu"],"text/prs.lines.tag":["dsc"],"text/vnd.curl":["curl"],"text/vnd.curl.dcurl":["dcurl"],"text/vnd.curl.mcurl":["mcurl"],"text/vnd.curl.scurl":["scurl"],"text/vnd.dvb.subtitle":["sub"],"text/vnd.familysearch.gedcom":["ged"],"text/vnd.fly":["fly"],"text/vnd.fmi.flexstor":["flx"],"text/vnd.graphviz":["gv"],"text/vnd.in3d.3dml":["3dml"],"text/vnd.in3d.spot":["spot"],"text/vnd.sun.j2me.app-descriptor":["jad"],"text/vnd.wap.wml":["wml"],"text/vnd.wap.wmlscript":["wmls"],"text/x-asm":["s","asm"],"text/x-c":["c","cc","cxx","cpp","h","hh","dic"],"text/x-component":["htc"],"text/x-fortran":["f","for","f77","f90"],"text/x-handlebars-template":["hbs"],"text/x-java-source":["java"],"text/x-lua":["lua"],"text/x-markdown":["mkd"],"text/x-nfo":["nfo"],"text/x-opml":["opml"],"text/x-org":["*org"],"text/x-pascal":["p","pas"],"text/x-processing":["pde"],"text/x-sass":["sass"],"text/x-scss":["scss"],"text/x-setext":["etx"],"text/x-sfv":["sfv"],"text/x-suse-ymp":["ymp"],"text/x-uuencode":["uu"],"text/x-vcalendar":["vcs"],"text/x-vcard":["vcf"],"video/vnd.dece.hd":["uvh","uvvh"],"video/vnd.dece.mobile":["uvm","uvvm"],"video/vnd.dece.pd":["uvp","uvvp"],"video/vnd.dece.sd":["uvs","uvvs"],"video/vnd.dece.video":["uvv","uvvv"],"video/vnd.dvb.file":["dvb"],"video/vnd.fvt":["fvt"],"video/vnd.mpegurl":["mxu","m4u"],"video/vnd.ms-playready.media.pyv":["pyv"],"video/vnd.uvvu.mp4":["uvu","uvvu"],"video/vnd.vivo":["viv"],"video/x-f4v":["f4v"],"video/x-fli":["fli"],"video/x-flv":["flv"],"video/x-m4v":["m4v"],"video/x-matroska":["mkv","mk3d","mks"],"video/x-mng":["mng"],"video/x-ms-asf":["asf","asx"],"video/x-ms-vob":["vob"],"video/x-ms-wm":["wm"],"video/x-ms-wmv":["wmv"],"video/x-ms-wmx":["wmx"],"video/x-ms-wvx":["wvx"],"video/x-msvideo":["avi"],"video/x-sgi-movie":["movie"],"video/x-smv":["smv"],"x-conference/x-cooltalk":["ice"]};Object.freeze(Li);var Ni=Li;var qi={"application/andrew-inset":["ez"],"application/appinstaller":["appinstaller"],"application/applixware":["aw"],"application/appx":["appx"],"application/appxbundle":["appxbundle"],"application/atom+xml":["atom"],"application/atomcat+xml":["atomcat"],"application/atomdeleted+xml":["atomdeleted"],"application/atomsvc+xml":["atomsvc"],"application/atsc-dwd+xml":["dwd"],"application/atsc-held+xml":["held"],"application/atsc-rsat+xml":["rsat"],"application/automationml-aml+xml":["aml"],"application/automationml-amlx+zip":["amlx"],"application/bdoc":["bdoc"],"application/calendar+xml":["xcs"],"application/ccxml+xml":["ccxml"],"application/cdfx+xml":["cdfx"],"application/cdmi-capability":["cdmia"],"application/cdmi-container":["cdmic"],"application/cdmi-domain":["cdmid"],"application/cdmi-object":["cdmio"],"application/cdmi-queue":["cdmiq"],"application/cpl+xml":["cpl"],"application/cu-seeme":["cu"],"application/cwl":["cwl"],"application/dash+xml":["mpd"],"application/dash-patch+xml":["mpp"],"application/davmount+xml":["davmount"],"application/dicom":["dcm"],"application/docbook+xml":["dbk"],"application/dssc+der":["dssc"],"application/dssc+xml":["xdssc"],"application/ecmascript":["ecma"],"application/emma+xml":["emma"],"application/emotionml+xml":["emotionml"],"application/epub+zip":["epub"],"application/exi":["exi"],"application/express":["exp"],"application/fdf":["fdf"],"application/fdt+xml":["fdt"],"application/font-tdpfr":["pfr"],"application/geo+json":["geojson"],"application/gml+xml":["gml"],"application/gpx+xml":["gpx"],"application/gxf":["gxf"],"application/gzip":["gz"],"application/hjson":["hjson"],"application/hyperstudio":["stk"],"application/inkml+xml":["ink","inkml"],"application/ipfix":["ipfix"],"application/its+xml":["its"],"application/java-archive":["jar","war","ear"],"application/java-serialized-object":["ser"],"application/java-vm":["class"],"application/javascript":["*js"],"application/json":["json","map"],"application/json5":["json5"],"application/jsonml+json":["jsonml"],"application/ld+json":["jsonld"],"application/lgr+xml":["lgr"],"application/lost+xml":["lostxml"],"application/mac-binhex40":["hqx"],"application/mac-compactpro":["cpt"],"application/mads+xml":["mads"],"application/manifest+json":["webmanifest"],"application/marc":["mrc"],"application/marcxml+xml":["mrcx"],"application/mathematica":["ma","nb","mb"],"application/mathml+xml":["mathml"],"application/mbox":["mbox"],"application/media-policy-dataset+xml":["mpf"],"application/mediaservercontrol+xml":["mscml"],"application/metalink+xml":["metalink"],"application/metalink4+xml":["meta4"],"application/mets+xml":["mets"],"application/mmt-aei+xml":["maei"],"application/mmt-usd+xml":["musd"],"application/mods+xml":["mods"],"application/mp21":["m21","mp21"],"application/mp4":["*mp4","*mpg4","mp4s","m4p"],"application/msix":["msix"],"application/msixbundle":["msixbundle"],"application/msword":["doc","dot"],"application/mxf":["mxf"],"application/n-quads":["nq"],"application/n-triples":["nt"],"application/node":["cjs"],"application/octet-stream":["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"],"application/oda":["oda"],"application/oebps-package+xml":["opf"],"application/ogg":["ogx"],"application/omdoc+xml":["omdoc"],"application/onenote":["onetoc","onetoc2","onetmp","onepkg","one","onea"],"application/oxps":["oxps"],"application/p2p-overlay+xml":["relo"],"application/patch-ops-error+xml":["xer"],"application/pdf":["pdf"],"application/pgp-encrypted":["pgp"],"application/pgp-keys":["asc"],"application/pgp-signature":["sig","*asc"],"application/pics-rules":["prf"],"application/pkcs10":["p10"],"application/pkcs7-mime":["p7m","p7c"],"application/pkcs7-signature":["p7s"],"application/pkcs8":["p8"],"application/pkix-attr-cert":["ac"],"application/pkix-cert":["cer"],"application/pkix-crl":["crl"],"application/pkix-pkipath":["pkipath"],"application/pkixcmp":["pki"],"application/pls+xml":["pls"],"application/postscript":["ai","eps","ps"],"application/provenance+xml":["provx"],"application/pskc+xml":["pskcxml"],"application/raml+yaml":["raml"],"application/rdf+xml":["rdf","owl"],"application/reginfo+xml":["rif"],"application/relax-ng-compact-syntax":["rnc"],"application/resource-lists+xml":["rl"],"application/resource-lists-diff+xml":["rld"],"application/rls-services+xml":["rs"],"application/route-apd+xml":["rapd"],"application/route-s-tsid+xml":["sls"],"application/route-usd+xml":["rusd"],"application/rpki-ghostbusters":["gbr"],"application/rpki-manifest":["mft"],"application/rpki-roa":["roa"],"application/rsd+xml":["rsd"],"application/rss+xml":["rss"],"application/rtf":["rtf"],"application/sbml+xml":["sbml"],"application/scvp-cv-request":["scq"],"application/scvp-cv-response":["scs"],"application/scvp-vp-request":["spq"],"application/scvp-vp-response":["spp"],"application/sdp":["sdp"],"application/senml+xml":["senmlx"],"application/sensml+xml":["sensmlx"],"application/set-payment-initiation":["setpay"],"application/set-registration-initiation":["setreg"],"application/shf+xml":["shf"],"application/sieve":["siv","sieve"],"application/smil+xml":["smi","smil"],"application/sparql-query":["rq"],"application/sparql-results+xml":["srx"],"application/sql":["sql"],"application/srgs":["gram"],"application/srgs+xml":["grxml"],"application/sru+xml":["sru"],"application/ssdl+xml":["ssdl"],"application/ssml+xml":["ssml"],"application/swid+xml":["swidtag"],"application/tei+xml":["tei","teicorpus"],"application/thraud+xml":["tfi"],"application/timestamped-data":["tsd"],"application/toml":["toml"],"application/trig":["trig"],"application/ttml+xml":["ttml"],"application/ubjson":["ubj"],"application/urc-ressheet+xml":["rsheet"],"application/urc-targetdesc+xml":["td"],"application/voicexml+xml":["vxml"],"application/wasm":["wasm"],"application/watcherinfo+xml":["wif"],"application/widget":["wgt"],"application/winhlp":["hlp"],"application/wsdl+xml":["wsdl"],"application/wspolicy+xml":["wspolicy"],"application/xaml+xml":["xaml"],"application/xcap-att+xml":["xav"],"application/xcap-caps+xml":["xca"],"application/xcap-diff+xml":["xdf"],"application/xcap-el+xml":["xel"],"application/xcap-ns+xml":["xns"],"application/xenc+xml":["xenc"],"application/xfdf":["xfdf"],"application/xhtml+xml":["xhtml","xht"],"application/xliff+xml":["xlf"],"application/xml":["xml","xsl","xsd","rng"],"application/xml-dtd":["dtd"],"application/xop+xml":["xop"],"application/xproc+xml":["xpl"],"application/xslt+xml":["*xsl","xslt"],"application/xspf+xml":["xspf"],"application/xv+xml":["mxml","xhvml","xvml","xvm"],"application/yang":["yang"],"application/yin+xml":["yin"],"application/zip":["zip"],"application/zip+dotlottie":["lottie"],"audio/3gpp":["*3gpp"],"audio/aac":["adts","aac"],"audio/adpcm":["adp"],"audio/amr":["amr"],"audio/basic":["au","snd"],"audio/midi":["mid","midi","kar","rmi"],"audio/mobile-xmf":["mxmf"],"audio/mp3":["*mp3"],"audio/mp4":["m4a","mp4a","m4b"],"audio/mpeg":["mpga","mp2","mp2a","mp3","m2a","m3a"],"audio/ogg":["oga","ogg","spx","opus"],"audio/s3m":["s3m"],"audio/silk":["sil"],"audio/wav":["wav"],"audio/wave":["*wav"],"audio/webm":["weba"],"audio/xm":["xm"],"font/collection":["ttc"],"font/otf":["otf"],"font/ttf":["ttf"],"font/woff":["woff"],"font/woff2":["woff2"],"image/aces":["exr"],"image/apng":["apng"],"image/avci":["avci"],"image/avcs":["avcs"],"image/avif":["avif"],"image/bmp":["bmp","dib"],"image/cgm":["cgm"],"image/dicom-rle":["drle"],"image/dpx":["dpx"],"image/emf":["emf"],"image/fits":["fits"],"image/g3fax":["g3"],"image/gif":["gif"],"image/heic":["heic"],"image/heic-sequence":["heics"],"image/heif":["heif"],"image/heif-sequence":["heifs"],"image/hej2k":["hej2"],"image/ief":["ief"],"image/jaii":["jaii"],"image/jais":["jais"],"image/jls":["jls"],"image/jp2":["jp2","jpg2"],"image/jpeg":["jpg","jpeg","jpe"],"image/jph":["jph"],"image/jphc":["jhc"],"image/jpm":["jpm","jpgm"],"image/jpx":["jpx","jpf"],"image/jxl":["jxl"],"image/jxr":["jxr"],"image/jxra":["jxra"],"image/jxrs":["jxrs"],"image/jxs":["jxs"],"image/jxsc":["jxsc"],"image/jxsi":["jxsi"],"image/jxss":["jxss"],"image/ktx":["ktx"],"image/ktx2":["ktx2"],"image/pjpeg":["jfif"],"image/png":["png"],"image/sgi":["sgi"],"image/svg+xml":["svg","svgz"],"image/t38":["t38"],"image/tiff":["tif","tiff"],"image/tiff-fx":["tfx"],"image/webp":["webp"],"image/wmf":["wmf"],"message/disposition-notification":["disposition-notification"],"message/global":["u8msg"],"message/global-delivery-status":["u8dsn"],"message/global-disposition-notification":["u8mdn"],"message/global-headers":["u8hdr"],"message/rfc822":["eml","mime","mht","mhtml"],"model/3mf":["3mf"],"model/gltf+json":["gltf"],"model/gltf-binary":["glb"],"model/iges":["igs","iges"],"model/jt":["jt"],"model/mesh":["msh","mesh","silo"],"model/mtl":["mtl"],"model/obj":["obj"],"model/prc":["prc"],"model/step":["step","stp","stpnc","p21","210"],"model/step+xml":["stpx"],"model/step+zip":["stpz"],"model/step-xml+zip":["stpxz"],"model/stl":["stl"],"model/u3d":["u3d"],"model/vrml":["wrl","vrml"],"model/x3d+binary":["*x3db","x3dbz"],"model/x3d+fastinfoset":["x3db"],"model/x3d+vrml":["*x3dv","x3dvz"],"model/x3d+xml":["x3d","x3dz"],"model/x3d-vrml":["x3dv"],"text/cache-manifest":["appcache","manifest"],"text/calendar":["ics","ifb"],"text/coffeescript":["coffee","litcoffee"],"text/css":["css"],"text/csv":["csv"],"text/html":["html","htm","shtml"],"text/jade":["jade"],"text/javascript":["js","mjs"],"text/jsx":["jsx"],"text/less":["less"],"text/markdown":["md","markdown"],"text/mathml":["mml"],"text/mdx":["mdx"],"text/n3":["n3"],"text/plain":["txt","text","conf","def","list","log","in","ini"],"text/richtext":["rtx"],"text/rtf":["*rtf"],"text/sgml":["sgml","sgm"],"text/shex":["shex"],"text/slim":["slim","slm"],"text/spdx":["spdx"],"text/stylus":["stylus","styl"],"text/tab-separated-values":["tsv"],"text/troff":["t","tr","roff","man","me","ms"],"text/turtle":["ttl"],"text/uri-list":["uri","uris","urls"],"text/vcard":["vcard"],"text/vtt":["vtt"],"text/wgsl":["wgsl"],"text/xml":["*xml"],"text/yaml":["yaml","yml"],"video/3gpp":["3gp","3gpp"],"video/3gpp2":["3g2"],"video/h261":["h261"],"video/h263":["h263"],"video/h264":["h264"],"video/iso.segment":["m4s"],"video/jpeg":["jpgv"],"video/jpm":["*jpm","*jpgm"],"video/mj2":["mj2","mjp2"],"video/mp2t":["ts","m2t","m2ts","mts"],"video/mp4":["mp4","mp4v","mpg4"],"video/mpeg":["mpeg","mpg","mpe","m1v","m2v"],"video/ogg":["ogv"],"video/quicktime":["qt","mov"],"video/webm":["webm"]};Object.freeze(qi);var Wi=qi;var ae=function(V,y,m,E){if(m==="a"&&!E)throw new TypeError("Private accessor was defined without a getter");if(typeof y=="function"?V!==y||!E:!y.has(V))throw new TypeError("Cannot read private member from an object whose class did not declare it");return m==="m"?E:m==="a"?E.call(V):E?E.value:y.get(V)},He,dt,ze,Ln=class{constructor(...y){He.set(this,new Map),dt.set(this,new Map),ze.set(this,new Map);for(let m of y)this.define(m)}define(y,m=!1){for(let[E,A]of Object.entries(y)){E=E.toLowerCase(),A=A.map(L=>L.toLowerCase()),ae(this,ze,"f").has(E)||ae(this,ze,"f").set(E,new Set);let C=ae(this,ze,"f").get(E),z=!0;for(let L of A){let $=L.startsWith("*");if(L=$?L.slice(1):L,C==null||C.add(L),z&&ae(this,dt,"f").set(E,L),z=!1,$)continue;let Ge=ae(this,He,"f").get(L);if(Ge&&Ge!=E&&!m)throw new Error(`"${E} -> ${L}" conflicts with "${Ge} -> ${L}". Pass \`force=true\` to override this definition.`);ae(this,He,"f").set(L,E)}}return this}getType(y){var z;if(typeof y!="string")return null;let m=y.replace(new RegExp("^.*[/\\\\]","s"),"").toLowerCase(),E=m.replace(new RegExp("^.*\\.","s"),"").toLowerCase(),A=m.length<y.length;return!(E.length<m.length-1)&&A?null:(z=ae(this,He,"f").get(E))!=null?z:null}getExtension(y){var m,E;return typeof y!="string"?null:(y=(m=y==null?void 0:y.split)==null?void 0:m.call(y,";")[0],(E=y&&ae(this,dt,"f").get(y.trim().toLowerCase()))!=null?E:null)}getAllExtensions(y){var m;return typeof y!="string"?null:(m=ae(this,ze,"f").get(y.toLowerCase()))!=null?m:null}_freeze(){this.define=()=>{throw new Error("define() not allowed for built-in Mime objects. See https://github.com/broofa/mime/blob/main/README.md#custom-mime-instances")},Object.freeze(this);for(let y of ae(this,ze,"f").values())Object.freeze(y);return this}_getTestState(){return{types:ae(this,He,"f"),extensions:ae(this,dt,"f")}}};He=new WeakMap,dt=new WeakMap,ze=new WeakMap;var Nn=Ln;var qn=new Nn(Wi,Ni)._freeze();var co=Vn.version,mt=class{constructor(y="vvvfs",m={}){Wt(this,"db");Wt(this,"options");this.options=m,this.db=new Qe(y),this.db.version(1).stores({files:"++id, name, path, type, file"})}async reset(){await this.db.delete(),this.db=new Qe(this.db.name),this.db.version(1).stores({files:"++id, name, path, type, file"})}async createFile(y){if(await this.exists(y))return console.warn("\u6587\u4EF6\u5DF2\u5B58\u5728"),!0;try{let{name:m,parent:E}=te(y);return await this.exists(E)||await this.createDir(E),console.log(m,E),await this.db.files.add({name:m,path:E,type:"file",file:new File([],m,{type:qn.getType(y)||"application/octet-stream"})}),!0}catch(m){return console.error("\u521B\u5EFA\u6587\u4EF6\u5931\u8D25",m),!1}}async createDir(y){if(await this.exists(y))return console.warn("\u76EE\u5F55\u5DF2\u5B58\u5728"),!0;try{let{name:m,parent:E}=te(y);if(!await this.exists(E))if(E=="/"){if(await this.db.files.add({name:"",path:"/",type:"dir",file:new File([],"")}),m=="")return!0}else await this.createDir(E);return console.log(m,E),await this.db.files.add({name:m,path:E,type:"dir",file:new File([],m)}),!0}catch(m){return console.error("\u521B\u5EFA\u76EE\u5F55\u5931\u8D25",m),!1}}async exists(y){let{name:m,parent:E}=te(y);return await this.db.files.where({name:m,path:E}).count()>0}async write(y,m){if(!await this.exists(y)&&!await this.createFile(y))return console.warn("\u521B\u5EFA\u6587\u4EF6\u5931\u8D25"),!1;try{let{name:E,parent:A}=te(y);if(console.log(E,A),await this.isDir(A+"/"+E))return console.warn("\u8DEF\u5F84\u5DF2\u5B58\u5728"),!1;let C=new File([m],E,{type:qn.getType(y)||"application/octet-stream"});console.log(C);let z=await this.db.files.where({name:E,path:A}).first();return z?(await this.db.files.put({...z,file:C}),!0):(console.warn("\u6587\u4EF6\u8BB0\u5F55\u672A\u627E\u5230\uFF0C\u65E0\u6CD5\u5199\u5165\u5185\u5BB9"),!1)}catch(E){return console.error("\u5199\u5165\u6587\u4EF6\u5931\u8D25",E),!1}}async writeText(y,m){let E=new Blob([m],{type:"text/plain"});return await this.write(y,E)}async writeJson(y,m,E){return await this.writeText(y,JSON.stringify(m,null,E?4:void 0))}async read(y){var m;if(!await this.exists(y))return console.warn("\u6587\u4EF6\u4E0D\u5B58\u5728"),null;try{let{name:E,parent:A}=te(y);return(m=await this.db.files.where({name:E,path:A}).first())==null?void 0:m.file}catch(E){return console.error("\u8BFB\u53D6\u6587\u4EF6\u5931\u8D25",E),null}}async readText(y){let m=await this.read(y);return m?await m.text():null}async readJson(y){let m=await this.readText(y);if(m)try{return JSON.parse(m)}catch(E){return console.error("\u89E3\u6790JSON\u5931\u8D25",E),null}else return null}async isFile(y){let{name:m,parent:E}=te(y);return await this.db.files.where({name:m,path:E,type:"file"}).count()>0}async isDir(y){let{name:m,parent:E}=te(y);return await this.db.files.where({path:E,name:m,type:"dir"}).count()>0}async list(y){let{name:m,parent:E}=te(y);return(await this.db.files.where({path:E}).toArray()).map(A=>A.name)}async rename(y,m){if(!await this.exists(y))throw new Error("File not exists");try{let{name:E,parent:A}=te(y),C=await this.db.files.get({path:y,name:E});return await this.db.files.put({name:m,path:A,type:"file",file:C.file}),!0}catch(E){return console.error(E),!1}}async delete(y){if(!await this.exists(y))return!1;try{let{name:m,parent:E}=te(y);if(await this.isDir(y)){let A=await this.list(y);for(let C of A){if(await this.isDir(Ee(y,C))){let z=await this.db.files.where({name:m,path:E}).first();await this.db.files.delete(z.id)}await this.delete(Ee(E,C))}return!0}else{let A=await this.db.files.where({name:m,path:E}).first();return await this.db.files.delete(A.id),!0}}catch(m){return console.error(m),!1}}async move(y,m){if(await this.exists(m)||!await this.exists(y))return!1;try{let{name:E,parent:A}=te(y),{name:C,parent:z}=te(m);if(await this.createDir(z),await this.isDir(y)){let L=await this.list(y);for(let $ of L)await this.move(y+"/"+$,m+"/"+$)}else{let L=await this.db.files.where({name:E,path:A}).first();await this.db.files.update(L.id,{name:C,path:z})}return await this.delete(y),!0}catch(E){return console.error(E),!1}}async copy(y,m){if(await this.exists(m)||!await this.exists(y))return!1;try{let{name:E,parent:A}=te(y),{name:C,parent:z}=te(m);if(await this.createDir(z),await this.isDir(y)){let L=await this.list(y);for(let $ of L)await this.move(y+"/"+$,m+"/"+$)}else{let L=await this.db.files.where({name:E,path:A}).first();await this.db.files.update(L.id,{name:C,path:z})}return!0}catch(E){return console.error(E),!1}}async search(y,m){if(!await this.isDir(y))return null;let E=this;try{let C=await this.list(y);return await A(y,C)}catch(C){return console.error(C),[]}async function A(C,z){let L=[];console.log(z);for(let $ of z)$!=""&&(console.log($),await E.isDir(Ee(C,$))?($.includes(m)&&L.push(Ee(C,$)+"/"),L.push(...await A(Ee(C,$),await E.list(Ee(C,$))))):$.includes(m)&&L.push(Ee(C,$)));return L}}};Wt(mt,"version");function te(V){V=Ee(V);let y=V.split("/"),m=[];for(let C=0;C<y.length;C++)y[C]&&m.push(y[C]);let E=m.pop()||"",A="/"+m.join("/");if((A+"/"+E).length>255)throw new Error("\u6587\u4EF6\u540D\u8FC7\u957F");return{name:E,parent:A}}function Ee(...V){let y=V.map(z=>String(z)).filter(z=>z.length>0);if(y.length===0)return".";let m=y[0].startsWith("/"),E=y.join("/").split("/"),A=[];for(let z of E)z===""||z==="."||(z===".."?A.length>0&&A[A.length-1]!==".."?A.pop():m||A.push(".."):A.push(z));let C=A.join("/");return m&&(C="/"+C),C||(m?"/":".")}Object.defineProperty(mt,"version",{value:Vn.version,writable:!1,enumerable:!0,configurable:!1});globalThis.VVVFS=mt;})();
|
package/esbuild.config.js
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
import { build } from 'esbuild';
|
|
2
|
+
import fs from 'fs';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
const pkg = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
|
|
5
|
+
|
|
6
|
+
build({
|
|
7
|
+
entryPoints: ['index.ts'],
|
|
5
8
|
bundle: true,
|
|
6
9
|
outfile: 'dist/vvvfs.min.js',
|
|
7
|
-
format: '
|
|
10
|
+
format: 'iife',
|
|
11
|
+
define: {
|
|
12
|
+
'process.env.PACKAGE_VERSION': JSON.stringify(pkg.version), // 注入版本号
|
|
13
|
+
},
|
|
8
14
|
minify: true,
|
|
9
15
|
platform: 'browser',
|
|
10
16
|
target: ["chrome80", "firefox70", "safari13", "edge80"],
|
|
11
17
|
logLevel: 'info',
|
|
12
|
-
|
|
13
|
-
});
|
|
18
|
+
}).catch(() => process.exit(1));
|
package/index.html
CHANGED
|
@@ -4,37 +4,25 @@
|
|
|
4
4
|
<head>
|
|
5
5
|
<meta charset="UTF-8">
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
-
<title>
|
|
8
|
-
<script src="dist/
|
|
7
|
+
<title>Example</title>
|
|
8
|
+
<script src="dist/vvvfs.min.js"></script>
|
|
9
9
|
</head>
|
|
10
10
|
|
|
11
11
|
<body>
|
|
12
12
|
<script>
|
|
13
13
|
(async () => {
|
|
14
|
-
|
|
15
|
-
await
|
|
16
|
-
console.log(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
await
|
|
23
|
-
await
|
|
24
|
-
console.log(
|
|
25
|
-
await
|
|
26
|
-
console.log('Changed permissions of /home/root/hello.txt to 644');
|
|
27
|
-
await vvfs.rename('/home/root/test.txt', '/home/root/test-renamed.txt');
|
|
28
|
-
console.log('Renamed /home/root/test.txt to /home/root/test-renamed.txt');
|
|
29
|
-
const content = await vvfs.read('/home/root/test.txt');
|
|
30
|
-
console.log('Content of /home/root/test.txt:', content);
|
|
31
|
-
const hello = await vvfs.read('/home/root/hello.txt');
|
|
32
|
-
console.log('Content of /home/root/hello.txt:', hello);
|
|
33
|
-
// await vvfs.delete('/home/root/test.txt');
|
|
34
|
-
// await vvfs.delete('/home/root/hello.txt');
|
|
35
|
-
console.log('Deleted /home/root/test.txt and /home/root/hello.txt');
|
|
36
|
-
console.log('Listing directory /home/root/:', await vvfs.list('/home/root/'));
|
|
37
|
-
console.log('Listing directory /home/:', await vvfs.list('/home/'));
|
|
14
|
+
globalThis.vvvfs = new VVVFS();
|
|
15
|
+
await vvvfs.reset();
|
|
16
|
+
console.log(vvvfs);
|
|
17
|
+
console.log("创建文件", await vvvfs.createFile("/test.txt"));
|
|
18
|
+
console.log("写入文件", await vvvfs.writeText("/test.txt", "Hello World"));
|
|
19
|
+
console.log("文件是否存在", await vvvfs.exists("/test.txt"));
|
|
20
|
+
console.log("文件是否存在", await vvvfs.exists("/test2.txt"));
|
|
21
|
+
console.log("读取文件", await vvvfs.readText("/test.txt"));
|
|
22
|
+
console.log("复制文件", await vvvfs.copy("/test.txt", "/test2.txt"));
|
|
23
|
+
console.log("搜索文件", await vvvfs.search("test"));
|
|
24
|
+
console.log("移动文件", await vvvfs.move("/test2.txt", "/test3.txt"));
|
|
25
|
+
console.log("删除文件", await vvvfs.delete("/test.txt"));
|
|
38
26
|
})();
|
|
39
27
|
</script>
|
|
40
28
|
</body>
|
package/index.ts
ADDED
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { Dexie, Table } from "dexie";
|
|
2
|
+
import packageJson from "./package.json" with { type: "json" };
|
|
3
|
+
import mime from "mime";
|
|
4
|
+
|
|
5
|
+
export interface FileRecord {
|
|
6
|
+
id?: number;
|
|
7
|
+
name: string;
|
|
8
|
+
path: string;
|
|
9
|
+
type: string;
|
|
10
|
+
file: File | null;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface VVVFSDatabase extends Dexie {
|
|
14
|
+
files: Table<FileRecord, number>;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const version = packageJson.version;
|
|
18
|
+
class VVVFS {
|
|
19
|
+
private db: VVVFSDatabase;
|
|
20
|
+
options: Record<string, any>;
|
|
21
|
+
/**
|
|
22
|
+
* 虚拟文件系统版本
|
|
23
|
+
*/
|
|
24
|
+
static version: string;
|
|
25
|
+
/**
|
|
26
|
+
* 创建虚拟文件系统
|
|
27
|
+
* @param name 虚拟文件系统名称
|
|
28
|
+
* @param options 配置项
|
|
29
|
+
*/
|
|
30
|
+
constructor(name = "vvvfs", options = {}) {
|
|
31
|
+
this.options = options;
|
|
32
|
+
this.db = new Dexie(name) as VVVFSDatabase;
|
|
33
|
+
this.db.version(1).stores({
|
|
34
|
+
files: "++id, name, path, type, file",
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 重置虚拟文件系统
|
|
39
|
+
*/
|
|
40
|
+
async reset() {
|
|
41
|
+
await this.db.delete();
|
|
42
|
+
this.db = new Dexie(this.db.name) as VVVFSDatabase;
|
|
43
|
+
this.db.version(1).stores({
|
|
44
|
+
files: "++id, name, path, type, file",
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* 创建文件
|
|
49
|
+
* @param path 文件路径
|
|
50
|
+
*/
|
|
51
|
+
async createFile(path: string) {
|
|
52
|
+
if (await this.exists(path)) {
|
|
53
|
+
console.warn("文件已存在");
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const { name, parent } = parsePath(path);
|
|
58
|
+
if (!(await this.exists(parent))) {
|
|
59
|
+
await this.createDir(parent);
|
|
60
|
+
}
|
|
61
|
+
console.log(name, parent);
|
|
62
|
+
await this.db.files.add({
|
|
63
|
+
name: name,
|
|
64
|
+
path: parent,
|
|
65
|
+
type: "file",
|
|
66
|
+
file: new File([], name, {
|
|
67
|
+
type: mime.getType(path) || "application/octet-stream",
|
|
68
|
+
}),
|
|
69
|
+
});
|
|
70
|
+
return true;
|
|
71
|
+
} catch (error) {
|
|
72
|
+
console.error("创建文件失败", error);
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 创建目录
|
|
78
|
+
* @param path 目录路径
|
|
79
|
+
*/
|
|
80
|
+
async createDir(path: string) {
|
|
81
|
+
if (await this.exists(path)) {
|
|
82
|
+
console.warn("目录已存在");
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const { name, parent } = parsePath(path);
|
|
87
|
+
if (!(await this.exists(parent))) {
|
|
88
|
+
if (parent == "/") {
|
|
89
|
+
await this.db.files.add({
|
|
90
|
+
name: "",
|
|
91
|
+
path: "/",
|
|
92
|
+
type: "dir",
|
|
93
|
+
file: new File([], ""),
|
|
94
|
+
});
|
|
95
|
+
if (name == "") return true;
|
|
96
|
+
} else {
|
|
97
|
+
await this.createDir(parent);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
console.log(name, parent);
|
|
101
|
+
await this.db.files.add({
|
|
102
|
+
name: name,
|
|
103
|
+
path: parent,
|
|
104
|
+
type: "dir",
|
|
105
|
+
file: new File([], name),
|
|
106
|
+
});
|
|
107
|
+
return true;
|
|
108
|
+
} catch (error) {
|
|
109
|
+
console.error("创建目录失败", error);
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* 判断文件是否存在
|
|
115
|
+
* @param path 文件路径
|
|
116
|
+
*/
|
|
117
|
+
async exists(path: string) {
|
|
118
|
+
const { name, parent } = parsePath(path);
|
|
119
|
+
return (
|
|
120
|
+
(await this.db.files
|
|
121
|
+
.where({
|
|
122
|
+
name: name,
|
|
123
|
+
path: parent,
|
|
124
|
+
})
|
|
125
|
+
.count()) > 0
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* 读取文件内容
|
|
130
|
+
* @param path 文件路径
|
|
131
|
+
*/
|
|
132
|
+
async write(path: string, content: Blob) {
|
|
133
|
+
if (!(await this.exists(path))) {
|
|
134
|
+
const success = await this.createFile(path);
|
|
135
|
+
if (!success) {
|
|
136
|
+
console.warn("创建文件失败");
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
const { name, parent } = parsePath(path);
|
|
142
|
+
console.log(name, parent);
|
|
143
|
+
if (await this.isDir(parent + "/" + name)) {
|
|
144
|
+
console.warn("路径已存在");
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
const file = new File([content], name, {
|
|
148
|
+
type: mime.getType(path) || "application/octet-stream",
|
|
149
|
+
});
|
|
150
|
+
console.log(file);
|
|
151
|
+
const fileRecord = await this.db.files.where({ name, path: parent }).first();
|
|
152
|
+
if (fileRecord) {
|
|
153
|
+
await this.db.files.put({
|
|
154
|
+
...fileRecord,
|
|
155
|
+
file: file,
|
|
156
|
+
});
|
|
157
|
+
return true;
|
|
158
|
+
} else {
|
|
159
|
+
console.warn("文件记录未找到,无法写入内容");
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
} catch (error) {
|
|
163
|
+
console.error("写入文件失败", error);
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* 写入文本内容
|
|
169
|
+
* @param path 文件路径
|
|
170
|
+
* @param content 文本内容
|
|
171
|
+
*/
|
|
172
|
+
async writeText(path: string, content: string) {
|
|
173
|
+
const blob = new Blob([content], { type: "text/plain" });
|
|
174
|
+
return await this.write(path, blob);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* 写入JSON内容
|
|
178
|
+
* @param path 文件路径
|
|
179
|
+
* @param content JSON内容
|
|
180
|
+
* @param format 是否格式化
|
|
181
|
+
*/
|
|
182
|
+
async writeJson(path: string, content: Record<string, any>, format?: boolean) {
|
|
183
|
+
return await this.writeText(path, JSON.stringify(content, null, format ? 4 : undefined));
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* 读取文件内容
|
|
187
|
+
* @param path 文件路径
|
|
188
|
+
*/
|
|
189
|
+
async read(path: string) {
|
|
190
|
+
if (!(await this.exists(path))) {
|
|
191
|
+
console.warn("文件不存在");
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
try {
|
|
195
|
+
const { name, parent } = parsePath(path);
|
|
196
|
+
return (await this.db.files.where({ name, path: parent }).first())?.file;
|
|
197
|
+
} catch (error) {
|
|
198
|
+
console.error("读取文件失败", error);
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* 读取文件内容
|
|
204
|
+
* @param path 文件路径
|
|
205
|
+
*/
|
|
206
|
+
async readText(path: string) {
|
|
207
|
+
const file = await this.read(path);
|
|
208
|
+
if (file) {
|
|
209
|
+
return await file.text();
|
|
210
|
+
} else {
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* 读取JSON内容
|
|
216
|
+
* @param path 文件路径
|
|
217
|
+
*/
|
|
218
|
+
async readJson(path: string) {
|
|
219
|
+
const text = await this.readText(path);
|
|
220
|
+
if (text) {
|
|
221
|
+
try {
|
|
222
|
+
return JSON.parse(text);
|
|
223
|
+
} catch (error) {
|
|
224
|
+
console.error("解析JSON失败", error);
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
} else {
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* 判断是否是文件
|
|
233
|
+
* @param path 文件路径
|
|
234
|
+
*/
|
|
235
|
+
async isFile(path: string) {
|
|
236
|
+
const { name, parent } = parsePath(path);
|
|
237
|
+
return (await this.db.files.where({ name, path: parent, type: "file" }).count()) > 0;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* 判断是否是目录
|
|
241
|
+
* @param path 文件路径
|
|
242
|
+
*/
|
|
243
|
+
async isDir(path: string) {
|
|
244
|
+
const { name, parent } = parsePath(path);
|
|
245
|
+
return (await this.db.files.where({ path: parent, name, type: "dir" }).count()) > 0;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* 列出目录下的文件
|
|
249
|
+
* @param path 目录路径
|
|
250
|
+
*/
|
|
251
|
+
async list(path: string) {
|
|
252
|
+
const { name, parent } = parsePath(path);
|
|
253
|
+
return (await this.db.files.where({ path: parent }).toArray()).map((file) => file.name);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* 重命名文件
|
|
257
|
+
* @param path 文件路径
|
|
258
|
+
* @param newName 新文件名
|
|
259
|
+
*/
|
|
260
|
+
async rename(path: string, newName: string) {
|
|
261
|
+
if (!(await this.exists(path))) throw new Error("File not exists");
|
|
262
|
+
try {
|
|
263
|
+
const { name, parent } = parsePath(path);
|
|
264
|
+
const file = await this.db.files.get({ path, name });
|
|
265
|
+
await this.db.files.put({
|
|
266
|
+
name: newName,
|
|
267
|
+
path: parent,
|
|
268
|
+
type: "file",
|
|
269
|
+
file: file!.file,
|
|
270
|
+
});
|
|
271
|
+
return true;
|
|
272
|
+
} catch (e) {
|
|
273
|
+
console.error(e);
|
|
274
|
+
return false;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* 删除文件
|
|
279
|
+
* @param path 文件路径
|
|
280
|
+
*/
|
|
281
|
+
async delete(path: string) {
|
|
282
|
+
if (!(await this.exists(path))) return false;
|
|
283
|
+
try {
|
|
284
|
+
const { name, parent } = parsePath(path);
|
|
285
|
+
if (await this.isDir(path)) {
|
|
286
|
+
const files = await this.list(path);
|
|
287
|
+
for (const file of files) {
|
|
288
|
+
if (await this.isDir(joinPath(path, file))) {
|
|
289
|
+
const fileRecord = await this.db.files
|
|
290
|
+
.where({ name, path: parent })
|
|
291
|
+
.first();
|
|
292
|
+
await this.db.files.delete(fileRecord!.id!);
|
|
293
|
+
}
|
|
294
|
+
await this.delete(joinPath(parent, file));
|
|
295
|
+
}
|
|
296
|
+
return true;
|
|
297
|
+
} else {
|
|
298
|
+
const fileRecord = await this.db.files.where({ name, path: parent }).first();
|
|
299
|
+
await this.db.files.delete(fileRecord!.id!);
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
} catch (e) {
|
|
303
|
+
console.error(e);
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* 移动文件
|
|
309
|
+
* @param path 文件路径
|
|
310
|
+
* @param newPath 新路径
|
|
311
|
+
*/
|
|
312
|
+
async move(path: string, newPath: string) {
|
|
313
|
+
if (await this.exists(newPath)) return false;
|
|
314
|
+
if (!(await this.exists(path))) return false;
|
|
315
|
+
try {
|
|
316
|
+
const { name, parent } = parsePath(path);
|
|
317
|
+
const { name: newName, parent: newParent } = parsePath(newPath);
|
|
318
|
+
await this.createDir(newParent);
|
|
319
|
+
if (await this.isDir(path)) {
|
|
320
|
+
const dirs = await this.list(path);
|
|
321
|
+
for (const dir of dirs) {
|
|
322
|
+
await this.move(path + "/" + dir, newPath + "/" + dir);
|
|
323
|
+
}
|
|
324
|
+
} else {
|
|
325
|
+
const fileRecord = await this.db.files.where({ name, path: parent }).first();
|
|
326
|
+
await this.db.files.update(fileRecord!.id!, { name: newName, path: newParent });
|
|
327
|
+
}
|
|
328
|
+
await this.delete(path);
|
|
329
|
+
return true;
|
|
330
|
+
} catch (e) {
|
|
331
|
+
console.error(e);
|
|
332
|
+
return false;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* 复制文件
|
|
337
|
+
* @param path 文件路径
|
|
338
|
+
* @param newPath 新路径
|
|
339
|
+
*/
|
|
340
|
+
async copy(path: string, newPath: string) {
|
|
341
|
+
if (await this.exists(newPath)) return false;
|
|
342
|
+
if (!(await this.exists(path))) return false;
|
|
343
|
+
try {
|
|
344
|
+
const { name, parent } = parsePath(path);
|
|
345
|
+
const { name: newName, parent: newParent } = parsePath(newPath);
|
|
346
|
+
await this.createDir(newParent);
|
|
347
|
+
if (await this.isDir(path)) {
|
|
348
|
+
const dirs = await this.list(path);
|
|
349
|
+
for (const dir of dirs) {
|
|
350
|
+
await this.move(path + "/" + dir, newPath + "/" + dir);
|
|
351
|
+
}
|
|
352
|
+
} else {
|
|
353
|
+
const fileRecord = await this.db.files.where({ name, path: parent }).first();
|
|
354
|
+
await this.db.files.update(fileRecord!.id!, { name: newName, path: newParent });
|
|
355
|
+
}
|
|
356
|
+
return true;
|
|
357
|
+
} catch (e) {
|
|
358
|
+
console.error(e);
|
|
359
|
+
return false;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* 搜索文件
|
|
364
|
+
* @param basePath 基础路径
|
|
365
|
+
* @param query 查询字符串
|
|
366
|
+
*/
|
|
367
|
+
async search(basePath: string, query: string) {
|
|
368
|
+
if (!await this.isDir(basePath)) return null;
|
|
369
|
+
const that = this;
|
|
370
|
+
try {
|
|
371
|
+
const dirs = await this.list(basePath);
|
|
372
|
+
return await search(basePath, dirs);
|
|
373
|
+
} catch (e) {
|
|
374
|
+
console.error(e);
|
|
375
|
+
return [];
|
|
376
|
+
}
|
|
377
|
+
async function search(parent: string, files: string[]) {
|
|
378
|
+
const result: string[] = [];
|
|
379
|
+
console.log(files)
|
|
380
|
+
for (const file of files) {
|
|
381
|
+
if (file == "") continue;
|
|
382
|
+
console.log(file);
|
|
383
|
+
if (await that.isDir(joinPath(parent, file))) {
|
|
384
|
+
if (file.includes(query)) {
|
|
385
|
+
result.push(joinPath(parent, file) + "/");
|
|
386
|
+
}
|
|
387
|
+
result.push(...await search(joinPath(parent, file), await that.list(joinPath(parent, file))));
|
|
388
|
+
} else {
|
|
389
|
+
if (file.includes(query)) {
|
|
390
|
+
result.push(joinPath(parent, file));
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return result;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
function parsePath(path: string) {
|
|
399
|
+
path = joinPath(path);
|
|
400
|
+
const oldParts = path.split("/");
|
|
401
|
+
const parts: string[] = [];
|
|
402
|
+
for (let i = 0; i < oldParts.length; i++) {
|
|
403
|
+
if (oldParts[i]) parts.push(oldParts[i]);
|
|
404
|
+
}
|
|
405
|
+
const name = parts.pop() || "";
|
|
406
|
+
const parent = "/" + parts.join("/");
|
|
407
|
+
if ((parent + "/" + name).length > 255) throw new Error("文件名过长");
|
|
408
|
+
return { name, parent };
|
|
409
|
+
}
|
|
410
|
+
function joinPath(...paths: string[]) {
|
|
411
|
+
const segments = paths.map((p) => String(p)).filter((p) => p.length > 0);
|
|
412
|
+
if (segments.length === 0) return ".";
|
|
413
|
+
const isAbsolute = segments[0].startsWith("/");
|
|
414
|
+
const parts = segments.join("/").split("/");
|
|
415
|
+
const stack = [];
|
|
416
|
+
for (const part of parts) {
|
|
417
|
+
if (part === "" || part === ".") {
|
|
418
|
+
continue;
|
|
419
|
+
} else if (part === "..") {
|
|
420
|
+
if (stack.length > 0 && stack[stack.length - 1] !== "..") {
|
|
421
|
+
stack.pop();
|
|
422
|
+
} else if (!isAbsolute) {
|
|
423
|
+
stack.push("..");
|
|
424
|
+
}
|
|
425
|
+
} else {
|
|
426
|
+
stack.push(part);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
let result = stack.join("/");
|
|
430
|
+
if (isAbsolute) {
|
|
431
|
+
result = "/" + result;
|
|
432
|
+
}
|
|
433
|
+
return result || (isAbsolute ? "/" : ".");
|
|
434
|
+
}
|
|
435
|
+
Object.defineProperty(VVVFS, "version", {
|
|
436
|
+
value: packageJson.version,
|
|
437
|
+
writable: false,
|
|
438
|
+
enumerable: true,
|
|
439
|
+
configurable: false,
|
|
440
|
+
});
|
|
441
|
+
(globalThis as any).VVVFS = VVVFS;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vvvfs",
|
|
3
|
-
"version": "0.0.1
|
|
3
|
+
"version": "0.0.1",
|
|
4
4
|
"description": "一个使用IndexDB实现的虚拟文件系统",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Virtual",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
],
|
|
16
16
|
"license": "MIT",
|
|
17
17
|
"author": "IFTC",
|
|
18
|
-
"type": "
|
|
18
|
+
"type": "module",
|
|
19
19
|
"main": "index.js",
|
|
20
20
|
"scripts": {
|
|
21
21
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"dexie": "^4.3.0",
|
|
26
|
-
"esbuild": "^0.27.3"
|
|
26
|
+
"esbuild": "^0.27.3",
|
|
27
|
+
"mime": "^4.1.0"
|
|
27
28
|
}
|
|
28
29
|
}
|