@pixagram/lacerta-db 0.2.0 → 0.3.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/browser.js +3 -27
- package/dist/browser.min.js +4 -4
- package/dist/index.min.js +4 -4
- package/dist/lacertadb-interface.html +1641 -0
- package/index.js +1550 -2159
- package/package.json +2 -2
- package/readme.md +1046 -131
package/browser.js
CHANGED
|
@@ -1,31 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
Database,
|
|
3
|
-
Collection,
|
|
4
|
-
Document,
|
|
5
|
-
QueryOperators,
|
|
6
|
-
AggregationPipeline,
|
|
7
|
-
MigrationManager,
|
|
8
|
-
PerformanceMonitor,
|
|
9
|
-
LacertaDBError} from "./index.js";
|
|
1
|
+
import * as lacerta from "./index.js";
|
|
10
2
|
|
|
11
3
|
if(typeof window != "undefined"){
|
|
12
|
-
window.
|
|
13
|
-
window.Collection = Collection;
|
|
14
|
-
window.Document = Document;
|
|
15
|
-
window.QueryOperators = QueryOperators;
|
|
16
|
-
window.AggregationPipeline = AggregationPipeline;
|
|
17
|
-
window.MigrationManager = MigrationManager;
|
|
18
|
-
window.PerformanceMonitor = PerformanceMonitor;
|
|
19
|
-
window.LacertaDBError = LacertaDBError;
|
|
20
|
-
window.lacertaDBInstance = lacertaDBInstance;
|
|
4
|
+
window.lacerta = lacerta;
|
|
21
5
|
}else {
|
|
22
|
-
self.
|
|
23
|
-
self.Collection = Collection;
|
|
24
|
-
self.Document = Document;
|
|
25
|
-
self.QueryOperators = QueryOperators;
|
|
26
|
-
self.AggregationPipeline = AggregationPipeline;
|
|
27
|
-
self.MigrationManager = MigrationManager;
|
|
28
|
-
self.PerformanceMonitor = PerformanceMonitor;
|
|
29
|
-
self.LacertaDBError = LacertaDBError;
|
|
30
|
-
self.lacertaDBInstance = lacertaDBInstance;
|
|
6
|
+
self.lacerta = lacerta;
|
|
31
7
|
}
|
package/dist/browser.min.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
(e=>{var t={};function r(i){var a;return(t[i]||(a=t[i]={i:i,l:!1,exports:{}},e[i].call(a.exports,a,a.exports,r),a.l=!0,a)).exports}r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(i,a,function(t){return e[t]}.bind(null,a));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=3)})([function(e,t,r){
|
|
1
|
+
(e=>{var t={};function r(i){var a;return(t[i]||(a=t[i]={i:i,l:!1,exports:{}},e[i].call(a.exports,a,a.exports,r),a.l=!0,a)).exports}r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(i,a,function(t){return e[t]}.bind(null,a));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)})([function(e,t){var r={},i=new Float32Array(4);function a(e,t){if((0|e)!==e)throw new TypeError("Lane index must be an int32");if(e<0||t<=e)throw new RangeError("Lane index must be in bounds")}new Int32Array(i.buffer),new Int16Array(i.buffer),new Int8Array(i.buffer),new Uint32Array(i.buffer),new Uint16Array(i.buffer),new Uint8Array(i.buffer),void 0!==r.Int8x16&&void 0!==r.Int8x16.extractLane||(r.Int8x16=function(e,t,i,a,s,n,o,c,h,l,d,u,p,f,m,w){if(!(this instanceof r.Int8x16))return new r.Int8x16(e,t,i,a,s,n,o,c,h,l,d,u,p,f,m,w);this.s_=new Int8Array([e,t,i,a,s,n,o,c,h,l,d,u,p,f,m,w])},r.Int8x16.check=function(e){if(e instanceof r.Int8x16)return e;throw new TypeError("Argument is not a Int8x16.")},r.Int8x16.splat=function(e){return new r.Int8x16(e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e)},r.Int8x16.extractLane=function(e,t){return e=r.Int8x16.check(e),a(t,16),e.s_[t]},r.Int8x16.replaceLane=function(e,t,i){return e=r.Int8x16.check(e),a(t,16),(e=Array.from(e.s_))[t]=i,new r.Int8x16(...e)},r.Int8x16.shuffle=function(e,t,i,s,n,o,c,h,l,d,u,p,f,m,w,y,g,b){var v=[i,s,n,o,c,h,l,d,u,p,f,m,w,y,g,b],A=[];e=r.Int8x16.check(e),t=r.Int8x16.check(t);for(var _=0;_<16;_++){var S=v[_];a(S,32),A[_]=S<16?e.s_[S]:t.s_[S-16]}return new r.Int8x16(...A)}),void 0!==r.Uint8x16&&void 0!==r.Uint8x16.extractLane||(r.Uint8x16=function(e,t,i,a,s,n,o,c,h,l,d,u,p,f,m,w){if(!(this instanceof r.Uint8x16))return new r.Uint8x16(e,t,i,a,s,n,o,c,h,l,d,u,p,f,m,w);this.s_=new Uint8Array([e,t,i,a,s,n,o,c,h,l,d,u,p,f,m,w])},r.Uint8x16.check=function(e){if(e instanceof r.Uint8x16)return e;throw new TypeError("Argument is not a Uint8x16.")},r.Uint8x16.splat=function(e){return new r.Uint8x16(e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e)},r.Uint8x16.extractLane=function(e,t){return e=r.Uint8x16.check(e),a(t,16),e.s_[t]},r.Uint8x16.load=function(e,t){if(t<0||t*e.BYTES_PER_ELEMENT+16>e.byteLength)throw new RangeError("The value of index is invalid.");return new r.Uint8x16(...e.subarray(t,t+16))},r.Uint8x16.store=function(e,t,r){if(t<0||t*e.BYTES_PER_ELEMENT+16>e.byteLength)throw new RangeError("The value of index is invalid.");return e.set(r.s_,t),r},r.Uint8x16.shuffle=function(e,t,i,s,n,o,c,h,l,d,u,p,f,m,w,y,g,b){var v=[i,s,n,o,c,h,l,d,u,p,f,m,w,y,g,b],A=[];e=r.Uint8x16.check(e),t=r.Uint8x16.check(t);for(var _=0;_<16;_++){var S=v[_];a(S,32),A[_]=S<16?e.s_[S]:t.s_[S-16]}return new r.Uint8x16(...A)},r.Uint8x16.and=function(e,t){for(var i=[],a=0;a<16;++a)i[a]=e.s_[a]&t.s_[a];return new r.Uint8x16(...i)},r.Uint8x16.or=function(e,t){for(var i=[],a=0;a<16;++a)i[a]=e.s_[a]|t.s_[a];return new r.Uint8x16(...i)},r.Uint8x16.shiftLeftByScalar=function(e,t){for(var i=[],a=0;a<16;++a)i[a]=e.s_[a]<<t;return new r.Uint8x16(...i)},r.Uint8x16.shiftRightByScalar=function(e,t){for(var i=[],a=0;a<16;++a)i[a]=e.s_[a]>>>t;return new r.Uint8x16(...i)}),e.exports=class{constructor(){this.ENC_SHUFFLE=r.Int8x16(10,11,9,10,7,8,6,7,4,5,3,4,1,2,0,1),this.ENC_LUT="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",this.ENC_LUT_SIMD=[r.Uint8x16.splat(0),r.Uint8x16.splat(0),r.Uint8x16.splat(0),r.Uint8x16.splat(0)];for(let t=0;t<4;t++){var e=this.ENC_LUT.substring(16*t,16*(t+1));this.ENC_LUT_SIMD[t]=r.Uint8x16(...Array.from(e).map(e=>e.charCodeAt(0)))}this.DEC_DELTA_ASSO=r.Uint8x16(1,1,1,1,1,1,1,1,0,0,0,0,0,15,0,15),this.DEC_DELTA_VALUES=r.Int8x16(0,0,0,19,4,191,191,185,185,0,16,195,191,191,185,185),this.DEC_SHUFFLE=r.Int8x16(-1,-1,-1,-1,12,13,14,8,9,10,4,5,6,0,1,2),this.SCALAR_ENC_LUT="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",this.SCALAR_DEC_LUT={};for(let e=0;e<this.SCALAR_ENC_LUT.length;e++)this.SCALAR_DEC_LUT[this.SCALAR_ENC_LUT.charAt(e)]=e;this.SCALAR_DEC_LUT["="]=0}_scalar_encode(e){let t="";for(let s=0;s<e.length;s+=3){var r=e[s],i=s+1<e.length?e[s+1]:0,a=s+2<e.length?e[s+2]:0;t+=this.SCALAR_ENC_LUT[r>>2]+this.SCALAR_ENC_LUT[(3&r)<<4|i>>4],s+1<e.length?t+=this.SCALAR_ENC_LUT[(15&i)<<2|a>>6]:t+="=",s+2<e.length?t+=this.SCALAR_ENC_LUT[63&a]:t+="="}return t}encode(e){var t=e.length,r=4*Math.ceil(t/3),i=new Uint8Array(r);let a=0,s=0;for(;a+12<=t;){var n=e.subarray(a,a+12),o=new Uint8Array(16);o[0]=n[0]>>2,o[1]=(3&n[0])<<4|n[1]>>4,o[2]=(15&n[1])<<2|n[2]>>6,o[3]=63&n[2],o[4]=n[3]>>2,o[5]=(3&n[3])<<4|n[4]>>4,o[6]=(15&n[4])<<2|n[5]>>6,o[7]=63&n[5],o[8]=n[6]>>2,o[9]=(3&n[6])<<4|n[7]>>4,o[10]=(15&n[7])<<2|n[8]>>6,o[11]=63&n[8],o[12]=n[9]>>2,o[13]=(3&n[9])<<4|n[10]>>4,o[14]=(15&n[10])<<2|n[11]>>6,o[15]=63&n[11];for(let e=0;e<16;e++)i[s+e]=this.SCALAR_ENC_LUT.charCodeAt(o[e]);a+=12,s+=16}let c=(new TextDecoder).decode(i.subarray(0,s));return a<t&&(c+=this._scalar_encode(e.subarray(a))),c}_scalar_decode(e){e=e.replace(/=+$/,"");var t=Math.floor(3*e.length/4),r=new Uint8Array(t);let i=0;for(let c=0;c<e.length;c+=4){var a=this.SCALAR_DEC_LUT[e[c]],s=this.SCALAR_DEC_LUT[e[c+1]],n=c+2<e.length?this.SCALAR_DEC_LUT[e[c+2]]:0,o=c+3<e.length?this.SCALAR_DEC_LUT[e[c+3]]:0;r[i++]=a<<2|s>>4,i<t&&(r[i++]=(15&s)<<4|n>>2),i<t&&(r[i++]=(3&n)<<6|o)}return r}decode(e){var t=e.length;if(t%4!=0)throw new Error("Invalid Base64 string length.");var r=(e.match(/=/g)||[]).length,i=new Uint8Array(3*t/4-r);let a=0,s=0;for(var n;a+16<=t-r;){var o=Array.from(e.substring(a,a+16)).map(e=>this.SCALAR_DEC_LUT[e]),c=new Uint8Array(12);c[0]=o[0]<<2|o[1]>>4,c[1]=(15&o[1])<<4|o[2]>>2,c[2]=(3&o[2])<<6|o[3],c[3]=o[4]<<2|o[5]>>4,c[4]=(15&o[5])<<4|o[6]>>2,c[5]=(3&o[6])<<6|o[7],c[6]=o[8]<<2|o[9]>>4,c[7]=(15&o[9])<<4|o[10]>>2,c[8]=(3&o[10])<<6|o[11],c[9]=o[12]<<2|o[13]>>4,c[10]=(15&o[13])<<4|o[14]>>2,c[11]=(3&o[14])<<6|o[15],i.set(c,s),a+=16,s+=12}return a<t&&(n=this._scalar_decode(e.substring(a)),i.set(n,s)),i}}},function(e,t,r){r.r(t);let i=240,a=0,s=16,n=32,o=48,c=64,h=80,l=96,d=112,u=128,p=144,f=160,m=176,w=192,y=224,g=240,b=0,v=1,A=2,_=3,S=16,U=17,E=18,k=19,D=20,x=21,V=22,I=23,B=24,C=25,z=26,O=32,M=33,T=34,P=35,L=48,F=49,j=50,R=51,N=52,$=53,K=54,q=55,H=64,W=65,Y=66,G=67,Q=68,J=69,X=70,Z=71,ee=80,te=81,re=82,ie=83,ae=84,se=85,ne=96,oe=97,ce=98,he=99,le=100,de=101,ue=102,pe=103,fe=104,me=105,we=106,ye=107,ge=112,be=113,ve=114,Ae=128,_e=129,Se=144,Ue=145,Ee=160,ke=161,De=162,xe=163,Ve=164,Ie=165,Be=166,Ce=167,ze=168,Oe=176,Me=192,Te=193,Pe=208,Le=209,Fe=224,je=225,Re=226,Ne=227,$e=240,Ke=new Uint8Array(256),qe=new Uint8Array(256);new Map;let He=new Map,We=new Map;var Ye=[[U,2],[E,4],[k,4],[D,4],[x,8],[O,8],[M,8]];for(let e=0;e<Ye.length;e++)Ke[Ye[e][0]]=Ye[e][1];var Ge,Qe=[[ne,1],[oe,1],[ce,1],[he,2],[le,2],[de,4],[ue,4],[pe,4],[fe,8],[me,8],[we,8],[G,1],[Q,2],[J,4],[X,4],[Z,8]];for(let e=0;e<Qe.length;e++)qe[Qe[e][0]]=Qe[e][1];for(Ge of["asyncIterator","hasInstance","isConcatSpreadable","iterator","match","matchAll","replace","search","species","split","toPrimitive","toStringTag","unscopables"]){var Je=Symbol[Ge];Je&&(He.set(Je,Ge),We.set(Ge,Je))}class Xe{constructor(e=65536){this.size=(e+128-1&-128)>>>0,this.buffer=new ArrayBuffer(this.size),this.offset=0,this.u8=new Uint8Array(this.buffer),this.view=new DataView(this.buffer),this.pos=0,this.f32View=null,this.f64View=null,this.i32View=null}ensure(e){var t,r;(e=this.pos+(e|=0)|0)>this.size&&(e=(128+(0|Math.max(this.size<<1,128+e))-1&-128)>>>0,t=new ArrayBuffer(e),(r=new Uint8Array(t)).set(this.u8.subarray(0,this.pos)),this.buffer=t,this.u8=r,this.view=new DataView(t),this.size=e,this.f32View=null,this.f64View=null,this.i32View=null)}alignPos(e){e=e-1|0,this.pos=(this.pos+e&~e)>>>0}writeU8(e){this.ensure(1),this.u8[this.pos++]=255&e}writeU16(e){this.alignPos(2),this.ensure(2),this.view.setUint16(this.pos,65535&e,!0),this.pos=this.pos+2|0}writeI16(e){this.alignPos(2),this.ensure(2),this.view.setInt16(this.pos,e,!0),this.pos=this.pos+2|0}writeU32(e){this.alignPos(4),this.ensure(4),this.view.setUint32(this.pos,e>>>0,!0),this.pos=this.pos+4|0}writeI32(e){this.alignPos(4),this.ensure(4),this.view.setInt32(this.pos,0|e,!0),this.pos=this.pos+4|0}writeF32(e){this.alignPos(4),this.ensure(4),this.view.setFloat32(this.pos,+e,!0),this.pos=this.pos+4|0}writeF64(e){this.alignPos(8),this.ensure(8),this.view.setFloat64(this.pos,+e,!0),this.pos=this.pos+8|0}writeBigInt64(e){this.alignPos(8),this.ensure(8),this.view.setBigInt64(this.pos,BigInt(e),!0),this.pos=this.pos+8|0}writeVarint(e){if(e>>>=0,this.ensure(5),e<128)this.u8[this.pos++]=e;else if(e<16384)this.u8[this.pos]=127&e|128,this.u8[this.pos+1]=e>>>7,this.pos=this.pos+2|0;else{let t=this.pos;for(;this.u8[t++]=127&e|128,128<=(e>>>=7););this.u8[t++]=e,this.pos=t}}writePackedArray(e,t){var r=0|e.length,i=(this.writeVarint(r),0|qe[t]);if(!i)throw new Error("Unknown element type: 0x"+t.toString(16));switch(this.alignPos(Math.min(i,8)),this.ensure(r*i),t){case G:new Int8Array(this.buffer,this.pos,r).set(e),this.pos=this.pos+r|0;break;case Q:var a=new Int16Array(this.buffer,this.pos,r);for(let t=0;t<r;t++)a[t]=0|e[t];this.pos=this.pos+(r<<1)|0;break;case J:var s=new Int32Array(this.buffer,this.pos,r);for(let t=0;t<r;t++)s[t]=0|e[t];this.pos=this.pos+(r<<2)|0;break;case X:var n=new Float32Array(this.buffer,this.pos,r);for(let t=0;t<r;t++)n[t]=+e[t];this.pos=this.pos+(r<<2)|0;break;case Z:var o=new Float64Array(this.buffer,this.pos,r);for(let t=0;t<r;t++)o[t]=+e[t];this.pos=this.pos+(r<<3)|0;break;default:throw new Error("Unsupported packed array type: 0x"+t.toString(16))}}writeBulkAligned(e,t){var r;t=Math.min(t,8),this.alignPos(t),t=e.byteLength||e.length;this.ensure(t),e.buffer&&void 0!==e.byteOffset?(r=new Uint8Array(e.buffer,e.byteOffset,t),this.u8.set(r,this.pos)):this.u8.set(e,this.pos),this.pos=this.pos+t|0}reset(){this.pos=0}getResult(){return this.u8.subarray(0,this.pos)}}class Ze{constructor(){this.blockSize=16}canOptimize(e){var t=e.length;if(!(8<=t&(0==(t&t-1)||16<=t)))return!1;var r=typeof e[0];if("number"!=r)return!1;var i=Math.max(1,t>>>5|0);for(let a=i;a<t;a+=i)if(typeof e[a]!=r)return!1;return!0}analyzeNumericArray(e){let t=1,r=1/0,i=-1/0,a=1;var s,n=e.length;for(let s=0;s<n;s++){var o=e[s];t&=+(o==(0|o)),r=Math.min(r,o),i=Math.max(i,o),a&&(a&=+(Math.fround(o)==o))}return t?(s=+((s=Math.max(Math.abs(r),Math.abs(i)))<=127)<<0|+(s<=32767)<<1|+(s<=2147483647)<<2,[{type:J,elementSize:4},{type:G,elementSize:1},{type:Q,elementSize:2},{type:J,elementSize:4}][3&s]):a?{type:X,elementSize:4}:{type:Z,elementSize:8}}}class et{constructor(){this.simdProcessor=new Ze,this.constructorMap=new Map,this.typeNameMap=new Map,this.errorTypeMap=new Map,this.initMaps()}initMaps(){var e,t,r,i,a=[[Date,Se],[RegExp,Oe],[Map,Ae],[Set,_e],[ArrayBuffer,ge],[DataView,ye]],s=[["Uint8Array",ne],["Int8Array",oe],["Uint8ClampedArray",ce],["Uint16Array",he],["Int16Array",le],["Uint32Array",de],["Int32Array",ue],["Float32Array",pe],["Float64Array",fe],["BigInt64Array",me],["BigUint64Array",we],["SharedArrayBuffer",ve]];for([e,t]of a)this.constructorMap.set(e,t);for([r,i]of s){var n=globalThis[r];n&&(this.constructorMap.set(n,i),this.typeNameMap.set(r,i))}this.errorTypeMap.set("Error",Ee),this.errorTypeMap.set("EvalError",ke),this.errorTypeMap.set("RangeError",De),this.errorTypeMap.set("ReferenceError",xe),this.errorTypeMap.set("SyntaxError",Ve),this.errorTypeMap.set("TypeError",Ie),this.errorTypeMap.set("URIError",Be),this.errorTypeMap.set("AggregateError",Ce)}detect(e){if(null==e)return null===e?b:v;switch(typeof e){case"boolean":return e?_:A;case"number":return this.detectNumber(e);case"bigint":return this.detectBigInt(e);case"string":return this.detectString(e);case"symbol":return this.detectSymbol(e);case"object":return this.detectObject(e);default:return v}}detectNumber(e){var t,r,i;return e!=e?V:(i=new Float64Array([e]),((t=(i=new Uint32Array(i.buffer))[1])&(r=2146435072))==r&0==i[0]&0==(1048575&t)?t>>>31?B:I:0==e&&t>>>31?C:e==(0|e)?(i=+((r=Math.abs(e))<=127)<<0|+(r<=32767)<<1|+(r<=2147483647)<<2,[z,S,U,E][Math.min(i,3)]):Math.fround(e)==e?D:x)}detectBigInt(e){var t=e<0n;return(t?-e:e)<=0x7fffffffffffffffn?t?M:O:t?P:T}detectString(e){var t,r=e.length;if(0==r)return L;let i=1;for(let t=0;t<r&&i;t++)i&=+(e.charCodeAt(t)<=127);return i?r<16?F:r<256?j:R:(t=(new TextEncoder).encode(e).length)<16?N:t<256?$:K}detectSymbol(e){return void 0!==Symbol.keyFor(e)?je:He.has(e)?Re:void 0===e.description?Ne:Fe}detectObject(e){var t,r;return null==e?b:(t=e.constructor,void 0!==(t=this.constructorMap.get(t))?t==Se?(r=e.getTime())==r?Se:Ue:t:Array.isArray(e)?this.detectArray(e):ArrayBuffer.isView(e)?this.detectTypedArrayType(e):e instanceof Error?this.detectErrorType(e):"undefined"!=typeof Blob&&e instanceof Blob?e instanceof File?Te:Me:this.classifyObject(e))}classifyObject(e){var t=Object.getPrototypeOf(e);if(e.constructor!=Object&&t!=Object.prototype&&null!=t)return ie;t=Object.getOwnPropertyNames(e);var r,i=Object.getOwnPropertySymbols(e);if(0===(t=[...t,...i]).length)return ee;let a=!1,s=!1;for(r of t){var n=Object.getOwnPropertyDescriptor(e,r);if(n.get||n.set){a=!0;break}"function"==typeof n.value&&(s=!0),n.enumerable&&n.writable&&n.configurable||(a=!0)}return a?ae:s?se:re}detectArray(e){var t=e.length;if(0==t)return H;let r=0,i=!1;for(let a=0;a<t;a++)a in e?r++:i=!0;return i||r<3*t>>>2?Y:this.simdProcessor.canOptimize(e)?this.simdProcessor.analyzeNumericArray(e).type:W}detectTypedArrayType(e){return e=e.constructor.name,this.typeNameMap.get(e)||ne}detectErrorType(e){return e=e.constructor.name,this.errorTypeMap.get(e)||ze}}var tt=r(0);tt=r.n(tt);r.d(t,"LacertaDB",(function(){return At})),r.d(t,"Database",(function(){return vt})),r.d(t,"Collection",(function(){return bt})),r.d(t,"Document",(function(){return lt})),r.d(t,"MigrationManager",(function(){return yt})),r.d(t,"PerformanceMonitor",(function(){return gt})),r.d(t,"LacertaDBError",(function(){return st})),r.d(t,"OPFSUtility",(function(){return ct}));
|
|
2
2
|
/**
|
|
3
|
-
* LacertaDB V4 - Complete Core Library (
|
|
3
|
+
* LacertaDB V4 - Complete Core Library (Repaired and Enhanced)
|
|
4
4
|
* A powerful browser-based document database with encryption, compression, and OPFS support
|
|
5
|
-
* @version 4.0.
|
|
5
|
+
* @version 4.0.3 (Max Compatibility)
|
|
6
6
|
* @license MIT
|
|
7
7
|
*/
|
|
8
|
-
{var i=("undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:this)||{},a=r(1),s=(r=r(2),new a({compression:!0,deduplication:!0,shareArrayBuffers:!0,simdOptimization:!0,detectCircular:!0})),n=new r;class t{constructor(){this._queue=[],this._locked=!1}acquire(){var e=this;return new Promise((function(t){e._queue.push(t),e._dispatch()}))}release(){this._locked=!1,this._dispatch()}async runExclusive(e){var t=await this.acquire();try{return await e()}finally{t()}}_dispatch(){var e,t;this._locked||0===this._queue.length||(this._locked=!0,e=this._queue.shift(),t=this,e((function(){t.release()})))}}class o extends Error{constructor(e,t,r){super(e),this.name="LacertaDBError",this.code=t,this.originalError=r||null,this.timestamp=(new Date).toISOString()}}class c{async compress(e){try{var t=new Response(e).body.pipeThrough(new CompressionStream("deflate")),r=await new Response(t).arrayBuffer();return new Uint8Array(r)}catch(e){throw new o("Compression failed","COMPRESSION_FAILED",e)}}async decompress(e){try{var t=new Response(e).body.pipeThrough(new DecompressionStream("deflate")),r=await new Response(t).arrayBuffer();return new Uint8Array(r)}catch(e){throw new o("Decompression failed","DECOMPRESSION_FAILED",e)}}compressSync(e){return(new TextEncoder).encode(n.encode(e))}decompressSync(e){return n.decode((new TextDecoder).decode(e))}}class h{async encrypt(e,t){try{var r=crypto.getRandomValues(new Uint8Array(16)),i=crypto.getRandomValues(new Uint8Array(12)),a=await crypto.subtle.importKey("raw",(new TextEncoder).encode(t),"PBKDF2",!1,["deriveKey"]),s=await crypto.subtle.deriveKey({name:"PBKDF2",salt:r,iterations:6e5,hash:"SHA-512"},a,{name:"AES-GCM",length:256},!1,["encrypt"]),n=await crypto.subtle.encrypt({name:"AES-GCM",iv:i},s,e),c=await crypto.subtle.digest("SHA-256",e),h=new Uint8Array(c),l=new Uint8Array(r.length+i.length+h.length+n.byteLength);return l.set(r,0),l.set(i,r.length),l.set(h,r.length+i.length),l.set(new Uint8Array(n),r.length+i.length+h.length),l}catch(e){throw new o("Encryption failed","ENCRYPTION_FAILED",e)}}async decrypt(e,t){try{for(var r=e.slice(0,16),i=e.slice(16,28),a=e.slice(28,60),s=e.slice(60),n=await crypto.subtle.importKey("raw",(new TextEncoder).encode(t),"PBKDF2",!1,["deriveKey"]),c=await crypto.subtle.deriveKey({name:"PBKDF2",salt:r,iterations:6e5,hash:"SHA-512"},n,{name:"AES-GCM",length:256},!1,["decrypt"]),h=await crypto.subtle.decrypt({name:"AES-GCM",iv:i},c,s),l=await crypto.subtle.digest("SHA-256",h),u=new Uint8Array(l),d=!0,f=0;f<a.length;f++)if(a[f]!==u[f]){d=!1;break}if(d)return new Uint8Array(h);throw new Error("Checksum verification failed")}catch(e){throw new o("Decryption failed","DECRYPTION_FAILED",e)}}}class l{async saveAttachments(e,t,r,i){var a=[],s=await navigator.storage.getDirectory();try{for(var n=await(await(await s.getDirectoryHandle(e,{create:!0})).getDirectoryHandle(t,{create:!0})).getDirectoryHandle(r,{create:!0}),c=0;c<i.length;c++){var h=i[c],l=await(await n.getFileHandle(String(c),{create:!0})).createWritable(),u=new Blob([h.data],{type:h.type});await l.write(u),await l.close(),a.push({path:"/"+e+"/"+t+"/"+r+"/"+c,name:h.name,type:h.type,size:h.data.byteLength})}return a}catch(e){throw new o("Failed to save attachments","ATTACHMENT_SAVE_FAILED",e)}}async getAttachments(e){for(var t=[],r=await navigator.storage.getDirectory(),i=0;i<e.length;i++){var a=e[i];try{for(var s=a.path.split("/").filter((function(e){return e})),n=r,o=0;o<s.length-1;o++)n=await n.getDirectoryHandle(s[o]);var c=await(await(await n.getFileHandle(s[s.length-1])).getFile()).arrayBuffer();t.push({name:a.name,type:a.type,data:new Uint8Array(c),size:a.size})}catch(e){console.error("Failed to get attachment:",a.path,e)}}return t}async deleteAttachments(e,t,r){try{await(await(await(await navigator.storage.getDirectory()).getDirectoryHandle(e)).getDirectoryHandle(t)).removeEntry(r,{recursive:!0})}catch(e){console.error("Failed to delete attachments:",e)}}}class u{constructor(){this.transactionQueue=[],this.isProcessing=!1,this.mutex=new t}openDatabase(e,t,r){return t=t||1,new Promise((function(i,a){var s=indexedDB.open(e,t);s.onerror=function(){a(new o("Failed to open database","DATABASE_OPEN_FAILED",s.error))},s.onsuccess=function(){i(s.result)},s.onupgradeneeded=function(e){var t=e.target.result;r&&r(t,e.oldVersion,e.newVersion)}}))}async performTransaction(e,t,r,i,a,s){return a=a||3,this.mutex.runExclusive((async function(){for(var s,n=0;n<a;n++)try{return await new Promise((function(a,s){var n,o=e.transaction(t,r);o.oncomplete=function(){a(n)},o.onerror=function(){s(o.error)},o.onabort=function(){s(new Error("Transaction aborted"))};try{(n=i(o))instanceof Promise&&n.then((function(e){n=e})).catch(s)}catch(a){s(a)}}))}catch(e){s=e,n<a-1&&await new Promise((function(e){setTimeout(e,100*Math.pow(2,n))}))}throw new o("Transaction failed after retries","TRANSACTION_FAILED",s)}))}add(e,t,r,i){return i=void 0===i?void 0:i,this.performTransaction(e,[t],"readwrite",(function(e){return new Promise((function(a,s){var n=i?e.objectStore(t).add(r,i):e.objectStore(t).add(r);n.onsuccess=function(){a(n.result)},n.onerror=function(){s(n.error)}}))}))}put(e,t,r,i){return i=void 0===i?void 0:i,this.performTransaction(e,[t],"readwrite",(function(e){return new Promise((function(a,s){var n=i?e.objectStore(t).put(r,i):e.objectStore(t).put(r);n.onsuccess=function(){a(n.result)},n.onerror=function(){s(n.error)}}))}))}get(e,t,r){return this.performTransaction(e,[t],"readonly",(function(e){return new Promise((function(i,a){var s=e.objectStore(t).get(r);s.onsuccess=function(){i(s.result)},s.onerror=function(){a(s.error)}}))}))}getAll(e,t,r,i){return r=void 0===r?void 0:r,i=void 0===i?void 0:i,this.performTransaction(e,[t],"readonly",(function(e){return new Promise((function(a,s){var n=e.objectStore(t).getAll(r,i);n.onsuccess=function(){a(n.result)},n.onerror=function(){s(n.error)}}))}))}delete(e,t,r){return this.performTransaction(e,[t],"readwrite",(function(e){return new Promise((function(i,a){var s=e.objectStore(t).delete(r);s.onsuccess=function(){i()},s.onerror=function(){a(s.error)}}))}))}clear(e,t){return this.performTransaction(e,[t],"readwrite",(function(e){return new Promise((function(r,i){var a=e.objectStore(t).clear();a.onsuccess=function(){r()},a.onerror=function(){i(a.error)}}))}))}count(e,t,r){return r=void 0===r?void 0:r,this.performTransaction(e,[t],"readonly",(function(e){return new Promise((function(i,a){var s=e.objectStore(t).count(r);s.onsuccess=function(){i(s.result)},s.onerror=function(){a(s.error)}}))}))}iterateCursorSafe(e,t,r,i,a){return i=i||"next",a=void 0===a?void 0:a,this.performTransaction(e,[t],"readonly",(function(e){return new Promise((function(s,n){var o=[],c=e.objectStore(t).openCursor(a,i);c.onsuccess=function(e){if(e=e.target.result)try{var t=r(e.value,e.key);!1!==t?(o.push(t),e.continue()):s(o)}catch(e){n(e)}else s(o)},c.onerror=function(){n(c.error)}}))}))}}class d{constructor(e,t){t=t||{},this._id=(e=e||{})._id||this.generateId(),this._created=e._created||Date.now(),this._modified=e._modified||Date.now(),this._permanent=e._permanent||t.permanent||!1,this._encrypted=e._encrypted||t.encrypted||!1,this._compressed=e._compressed||t.compressed||!1,this._attachments=e._attachments||[],this.data=e.data||{},this.packedData=e.packedData||null,this.serializer=new a({compression:!0,deduplication:!0,shareArrayBuffers:!0,simdOptimization:!0,detectCircular:!0}),this.compression=new c,this.encryption=new h,this.password=t.password||null}generateId(){return"doc_"+Date.now()+"_"+Math.random().toString(36).substr(2,9)}async pack(){try{var e=this.serializer.serialize(this.data);return this._compressed&&(e=await this.compression.compress(e)),this._encrypted&&this.password&&(e=await this.encryption.encrypt(e,this.password)),this.packedData=e}catch(e){throw new o("Failed to pack document","PACK_FAILED",e)}}async unpack(){try{var e=this.packedData;return this._encrypted&&this.password&&(e=await this.encryption.decrypt(e,this.password)),this._compressed&&(e=await this.compression.decompress(e)),this.data=this.serializer.deserialize(e),this.data}catch(e){throw new o("Failed to unpack document","UNPACK_FAILED",e)}}packSync(){var e=this.serializer.serialize(this.data);if(this._compressed&&(e=this.compression.compressSync(e)),this._encrypted&&this.password)throw new o("Synchronous encryption not supported","SYNC_ENCRYPT_NOT_SUPPORTED");return this.packedData=e}unpackSync(){var e=this.packedData;if(this._encrypted&&this.password)throw new o("Synchronous decryption not supported","SYNC_DECRYPT_NOT_SUPPORTED");return this._compressed&&(e=this.compression.decompressSync(e)),this.data=this.serializer.deserialize(e),this.data}objectOutput(e){e=e||!1;var t,r={_id:this._id,_created:this._created,_modified:this._modified,_permanent:this._permanent};for(t in this.data)Object.prototype.hasOwnProperty.call(this.data,t)&&(r[t]=this.data[t]);return e&&0<this._attachments.length&&(r._attachments=this._attachments),r}databaseOutput(){return{_id:this._id,_created:this._created,_modified:this._modified,_permanent:this._permanent,_encrypted:this._encrypted,_compressed:this._compressed,_attachments:this._attachments,packedData:this.packedData}}}class f{constructor(e,t){t=t||{},this.name=e,this.sizeKB=t.sizeKB||0,this.length=t.length||0,this.createdAt=t.createdAt||Date.now(),this.modifiedAt=t.modifiedAt||Date.now(),this.documentSizes=t.documentSizes||{},this.documentModifiedAt=t.documentModifiedAt||{},this.documentPermanent=t.documentPermanent||{},this.documentAttachments=t.documentAttachments||{}}addDocument(e,t,r,i){this.documentSizes[e]=t,this.documentModifiedAt[e]=Date.now(),r&&(this.documentPermanent[e]=!0),0<i&&(this.documentAttachments[e]=i),this.sizeKB+=t,this.length++,this.modifiedAt=Date.now()}updateDocument(e,t,r,i){var a=this.documentSizes[e]||0;this.sizeKB=this.sizeKB-a+t,this.documentSizes[e]=t,this.documentModifiedAt[e]=Date.now(),r?this.documentPermanent[e]=!0:delete this.documentPermanent[e],0<i?this.documentAttachments[e]=i:delete this.documentAttachments[e],this.modifiedAt=Date.now()}removeDocument(e){var t=this.documentSizes[e]||0;delete this.documentSizes[e],delete this.documentModifiedAt[e],delete this.documentPermanent[e],delete this.documentAttachments[e],this.sizeKB-=t,this.length--,this.modifiedAt=Date.now()}getOldestNonPermanentDocuments(e){var t=this;return Object.entries(this.documentModifiedAt).filter((function(e){return e=e[0],!t.documentPermanent[e]})).sort((function(e,t){return e[1]-t[1]})).slice(0,e).map((function(e){return e[0]}))}}class p{constructor(e,t){t=t||{},this.name=e,this.collections=t.collections||{},this.totalSizeKB=t.totalSizeKB||0,this.totalLength=t.totalLength||0,this.modifiedAt=t.modifiedAt||Date.now()}static load(e){var t=localStorage.getItem("lacertadb_"+e+"_metadata");if(t)try{var r=n.decode(t),i=s.deserialize(r);return new p(e,i)}catch(e){console.error("Failed to load metadata:",e)}return new p(e)}save(){var e="lacertadb_"+this.name+"_metadata";try{var t={collections:this.collections,totalSizeKB:this.totalSizeKB,totalLength:this.totalLength,modifiedAt:this.modifiedAt},r=s.serialize(t),i=n.encode(r);localStorage.setItem(e,i)}catch(e){if("QuotaExceededError"===e.name)throw new o("Storage quota exceeded","QUOTA_EXCEEDED",e);throw new o("Failed to save metadata","METADATA_SAVE_FAILED",e)}}addCollection(e){this.collections[e.name]={sizeKB:e.sizeKB,length:e.length,createdAt:e.createdAt,modifiedAt:e.modifiedAt,documentSizes:e.documentSizes,documentModifiedAt:e.documentModifiedAt,documentPermanent:e.documentPermanent,documentAttachments:e.documentAttachments},this.recalculate(),this.save()}updateCollection(e){this.collections[e.name]={sizeKB:e.sizeKB,length:e.length,createdAt:e.createdAt,modifiedAt:e.modifiedAt,documentSizes:e.documentSizes,documentModifiedAt:e.documentModifiedAt,documentPermanent:e.documentPermanent,documentAttachments:e.documentAttachments},this.recalculate(),this.save()}removeCollection(e){delete this.collections[e],this.recalculate(),this.save()}recalculate(){for(var e in this.totalSizeKB=0,this.totalLength=0,this.collections)Object.prototype.hasOwnProperty.call(this.collections,e)&&(e=this.collections[e],this.totalSizeKB+=e.sizeKB,this.totalLength+=e.length);this.modifiedAt=Date.now()}}class w{constructor(e,t){t=t||{},this.dbName=e,this.sizeLimitKB=t.sizeLimitKB||1/0,this.bufferLimitKB=t.bufferLimitKB||(this.sizeLimitKB===1/0?0:.8*this.sizeLimitKB),this.freeSpaceEvery=t.freeSpaceEvery||1e4}static load(e){var t=localStorage.getItem("lacertadb_"+e+"_settings");if(t)try{var r=n.decode(t),i=s.deserialize(r);return new w(e,i)}catch(e){console.error("Failed to load settings:",e)}return new w(e)}save(){var e="lacertadb_"+this.dbName+"_settings",t={sizeLimitKB:this.sizeLimitKB,bufferLimitKB:this.bufferLimitKB,freeSpaceEvery:this.freeSpaceEvery};t=s.serialize(t),t=n.encode(t);localStorage.setItem(e,t)}updateSettings(e){Object.assign(this,e),this.save()}}class m{constructor(e){this.dbName=e,this.keyPrefix="lacertadb_"+e+"_quickstore_"}add(e,t){var r=this.keyPrefix+"data_"+e;try{var i=s.serialize(t),a=n.encode(i);return localStorage.setItem(r,a),this.updateIndex(e,"add"),!0}catch(e){if("QuotaExceededError"===e.name)throw new o("QuickStore quota exceeded","QUOTA_EXCEEDED",e);return!1}}get(e){if(e=this.keyPrefix+"data_"+e,e=localStorage.getItem(e))try{var t=n.decode(e);return s.deserialize(t)}catch(e){console.error("Failed to parse QuickStore data:",e)}return null}update(e,t){return this.add(e,t)}delete(e){var t=this.keyPrefix+"data_"+e;localStorage.removeItem(t),this.updateIndex(e,"delete")}getAll(){var e=this.keyPrefix+"index",t=[];if(e=localStorage.getItem(e))try{var r=n.decode(e);t=s.deserialize(r)}catch(e){t=[]}for(var i=[],a=0;a<t.length;a++){var o=t[a],c=this.get(o);if(c){var h,l={_id:o};for(h in c)Object.prototype.hasOwnProperty.call(c,h)&&(l[h]=c[h]);i.push(l)}}return i}clear(){var e=this.keyPrefix+"index",t=localStorage.getItem(e),r=[];if(t)try{var i=n.decode(t);r=s.deserialize(i)}catch(e){r=[]}for(var a=0;a<r.length;a++)this.delete(r[a]);localStorage.removeItem(e)}updateIndex(e,t){var r=this.keyPrefix+"index",i=localStorage.getItem(r),a=[];if(i)try{var o=n.decode(i);a=s.deserialize(o)}catch(t){a=[]}"add"!==t||a.includes(e)?"delete"===t&&(a=a.filter((function(t){return t!==e}))):a.push(e),i=s.serialize(a),o=n.encode(i),localStorage.setItem(r,o)}}class y{}y.operators={$eq:function(e,t){return e===t},$ne:function(e,t){return e!==t},$gt:function(e,t){return t<e},$gte:function(e,t){return t<=e},$lt:function(e,t){return e<t},$lte:function(e,t){return e<=t},$in:function(e,t){return Array.isArray(t)&&t.includes(e)},$nin:function(e,t){return Array.isArray(t)&&!t.includes(e)},$and:function(e,t){return t.every((function(t){return y.evaluate(e,t)}))},$or:function(e,t){return t.some((function(t){return y.evaluate(e,t)}))},$not:function(e,t){return!y.evaluate(e,t)},$nor:function(e,t){return!t.some((function(t){return y.evaluate(e,t)}))},$exists:function(e,t){return void 0!==e===t},$type:function(e,t){return typeof e===t},$all:function(e,t){return Array.isArray(e)&&t.every((function(t){return e.includes(t)}))},$elemMatch:function(e,t){return Array.isArray(e)&&e.some((function(e){return y.evaluate({value:e},{value:t})}))},$size:function(e,t){return Array.isArray(e)&&e.length===t},$regex:function(e,t){return"string"==typeof e&&new RegExp(t).test(e)},$text:function(e,t){return"string"==typeof e&&e.toLowerCase().includes(t.toLowerCase())}},y.evaluate=function(e,t){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var i=t[r];if(r.startsWith("$")){var a=this.operators[r];if(!a)return!1;if(!a(e,i))return!1}else{var s=this.getFieldValue(e,r);if("object"!=typeof i||null===i||Array.isArray(i)){if(s!==i)return!1}else for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)){var o=i[n];if(n.startsWith("$")){if(!(n=this.operators[n])||!n(s,o))return!1}else if(s!==i)return!1}}}return!0}.bind(y),y.getFieldValue=function(e,t){for(var r=t.split("."),i=e,a=0;a<r.length;a++){var s=r[a];if(null==i)return;i=i[s]}return i};class g{}g.stages={$match:function(e,t){return e.filter((function(e){return y.evaluate(e,t)}))},$project:function(e,t){var r=this;return e.map((function(e){var i,a,s={};for(i in t)Object.prototype.hasOwnProperty.call(t,i)&&(1===(a=t[i])||!0===a?s[i]=y.getFieldValue(e,i):"object"==typeof a&&(s[i]=r.computeField(e,a)));return s}))},$sort:function(e,t){return(e=e.slice()).sort((function(e,r){for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var a=t[i],s=y.getFieldValue(e,i);if(s<(i=y.getFieldValue(r,i)))return 1===a?-1:1;if(i<s)return 1===a?1:-1}return 0})),e},$limit:function(e,t){return e.slice(0,t)},$skip:function(e,t){return e.slice(t)},$group:function(e,t){for(var r={},i=t._id,a=0;a<e.length;a++){var s=e[a],n="string"==typeof i?y.getFieldValue(s,i.replace("$","")):JSON.stringify(i);r[n]||(r[n]={_id:n,docs:[]}),r[n].docs.push(s)}var o,c=[];for(o in r)if(Object.prototype.hasOwnProperty.call(r,o)){var h,l,u,d=r[o],f={_id:d._id};for(h in t)Object.prototype.hasOwnProperty.call(t,h)&&"_id"!==h&&((l=t[h]).$sum?f[h]=d.docs.reduce((function(e,t){return e+(("string"==typeof l.$sum?y.getFieldValue(t,l.$sum.replace("$","")):l.$sum)||0)}),0):l.$avg?(u=d.docs.reduce((function(e,t){return e+(y.getFieldValue(t,l.$avg.replace("$",""))||0)}),0),f[h]=u/d.docs.length):l.$count?f[h]=d.docs.length:l.$max?f[h]=Math.max.apply(null,d.docs.map((function(e){return y.getFieldValue(e,l.$max.replace("$",""))}))):l.$min&&(f[h]=Math.min.apply(null,d.docs.map((function(e){return y.getFieldValue(e,l.$min.replace("$",""))})))));c.push(f)}return c},$lookup:async function(e,t,r){for(var i=[],a=await r.getCollection(t.from),s=0;s<e.length;s++){var n,o=e[s],c=y.getFieldValue(o,t.localField),h={},l=(c=(h[t.foreignField]=c,await a.query(h)),{});for(n in o)Object.prototype.hasOwnProperty.call(o,n)&&(l[n]=o[n]);l[t.as]=c,i.push(l)}return i}},g.computeField=function(e,t){return"string"==typeof t&&t.startsWith("$")?y.getFieldValue(e,t.replace("$","")):t},g.execute=async function(e,t,r){for(var i=e,a=0;a<t.length;a++){var s=t[a],n=Object.keys(s)[0],o=(s=s[n],this.stages[n]);if(!o)throw new Error("Unknown aggregation stage: "+n);i="$lookup"===n?await o(i,s,r):o.call(this,i,s)}return i}.bind(g);class v{constructor(){this.metrics={operations:[],latencies:[],cacheHits:0,cacheMisses:0,memoryUsage:[]},this.monitoring=!1,this.monitoringInterval=null}startMonitoring(){this.monitoring=!0,this.monitoringInterval=setInterval(this.collectMetrics.bind(this),1e3)}stopMonitoring(){this.monitoring=!1,this.monitoringInterval&&(clearInterval(this.monitoringInterval),this.monitoringInterval=null)}recordOperation(e,t){this.monitoring&&(this.metrics.operations.push({type:e,duration:t,timestamp:Date.now()}),this.metrics.latencies.push(t),100<this.metrics.operations.length&&this.metrics.operations.shift(),100<this.metrics.latencies.length)&&this.metrics.latencies.shift()}recordCacheHit(){this.metrics.cacheHits++}recordCacheMiss(){this.metrics.cacheMisses++}collectMetrics(){"undefined"!=typeof performance&&performance.memory&&(this.metrics.memoryUsage.push({used:performance.memory.usedJSHeapSize,total:performance.memory.totalJSHeapSize,limit:performance.memory.jsHeapSizeLimit,timestamp:Date.now()}),60<this.metrics.memoryUsage.length)&&this.metrics.memoryUsage.shift()}getStats(){var e=this.metrics.operations.filter((function(e){return Date.now()-e.timestamp<1e3})).length,t=0<this.metrics.latencies.length?this.metrics.latencies.reduce((function(e,t){return e+t}),0)/this.metrics.latencies.length:0,r=0<this.metrics.cacheHits+this.metrics.cacheMisses?this.metrics.cacheHits/(this.metrics.cacheHits+this.metrics.cacheMisses)*100:0,i=0<this.metrics.memoryUsage.length?this.metrics.memoryUsage[this.metrics.memoryUsage.length-1].used/1048576:0;return{opsPerSec:e,avgLatency:t.toFixed(2),cacheHitRate:r.toFixed(1),memoryUsage:i.toFixed(2)}}getOptimizationTips(){var e,t=[];return 0<this.metrics.latencies.length&&100<this.metrics.latencies.reduce((function(e,t){return e+t}),0)/this.metrics.latencies.length&&t.push("High average latency detected. Consider enabling compression and indexing frequently queried fields."),(0<this.metrics.cacheHits+this.metrics.cacheMisses?this.metrics.cacheHits/(this.metrics.cacheHits+this.metrics.cacheMisses)*100:0)<50&&t.push("Low cache hit rate. Consider increasing cache size or optimizing query patterns."),10<this.metrics.memoryUsage.length&&10485760<(e=this.metrics.memoryUsage.slice(-10))[e.length-1].used-e[0].used&&t.push("Memory usage is increasing rapidly. Check for memory leaks or consider batch processing."),0===t.length&&t.push("Performance is optimal. No issues detected."),t}}class b{constructor(e,t){this.name=e,this.database=t,this.db=null,this.metadata=null,this.settings=t.settings,this.indexedDB=new u,this.opfs=new l,this.cleanupInterval=null,this.events={beforeAdd:[],afterAdd:[],beforeGet:[],afterGet:[],beforeUpdate:[],afterUpdate:[],beforeDelete:[],afterDelete:[]},this.queryCache=new Map,this.cacheTimeout=6e4}async init(){var e=this.database.name+"_"+this.name;this.db=await this.indexedDB.openDatabase(e,1,(function(e){e.objectStoreNames.contains("documents")||((e=e.createObjectStore("documents",{keyPath:"_id"})).createIndex("created","_created",{unique:!1}),e.createIndex("modified","_modified",{unique:!1}),e.createIndex("permanent","_permanent",{unique:!1}))})),e=this.database.metadata.collections[this.name];return this.metadata=new f(this.name,e),0<this.settings.freeSpaceEvery&&(this.cleanupInterval=setInterval(this.freeSpace.bind(this),this.settings.freeSpaceEvery)),this}async add(e,t){return t=t||{},await this.trigger("beforeAdd",e),e=new d({data:e,_id:t.id},{encrypted:t.encrypted||!1,compressed:!1!==t.compressed,permanent:t.permanent||!1,password:t.password}),t.attachments&&0<t.attachments.length&&(t=await this.opfs.saveAttachments(this.database.name,this.name,e._id,t.attachments),e._attachments=t),await e.pack(),t=e.databaseOutput(),await this.indexedDB.add(this.db,"documents",t),t=new Blob([t.packedData]).size/1024,this.metadata.addDocument(e._id,t,e._permanent,e._attachments.length),this.database.metadata.updateCollection(this.metadata),await this.checkSpaceLimit(),await this.trigger("afterAdd",e),this.queryCache.clear(),e._id}async get(e,t){var r;if(t=t||{},await this.trigger("beforeGet",e),e=await this.indexedDB.get(this.db,"documents",e))return r=new d(e,{password:t.password,encrypted:e._encrypted,compressed:e._compressed}),e.packedData&&await r.unpack(),t.includeAttachments&&0<r._attachments.length&&(e=await this.opfs.getAttachments(r._attachments),r.data._attachments=e),await this.trigger("afterGet",r),r.objectOutput(t.includeAttachments);throw new o("Document not found","DOCUMENT_NOT_FOUND")}async getAll(e){for(var t=await this.indexedDB.getAll(this.db,"documents",void 0,(e=e||{}).limit),r=[],i=0;i<t.length;i++){var a=t[i];try{var s=new d(a,{password:e.password,encrypted:a._encrypted,compressed:a._compressed});a.packedData&&await s.unpack(),r.push(s.objectOutput())}catch(e){console.error("Failed to unpack document:",e)}}return r}async update(e,t,r){r=r||{},await this.trigger("beforeUpdate",{docId:e,updates:t});var i,a,s=await this.get(e,{password:r.password}),n={};for(i in s)Object.prototype.hasOwnProperty.call(s,i)&&(n[i]=s[i]);for(a in t)Object.prototype.hasOwnProperty.call(t,a)&&(n[a]=t[a]);delete n._id,delete n._created,delete n._modified,delete n._permanent;var o=new d({_id:e,_created:s._created,data:n},{encrypted:r.encrypted||!1,compressed:!1!==r.compressed,permanent:r.permanent||s._permanent,password:r.password});r.attachments&&0<r.attachments.length&&(await this.opfs.deleteAttachments(this.database.name,this.name,e),e=await this.opfs.saveAttachments(this.database.name,this.name,o._id,r.attachments),o._attachments=e),await o.pack(),r=o.databaseOutput(),await this.indexedDB.put(this.db,"documents",r),e=new Blob([r.packedData]).size/1024;return this.metadata.updateDocument(o._id,e,o._permanent,o._attachments.length),this.database.metadata.updateCollection(this.metadata),await this.trigger("afterUpdate",o),this.queryCache.clear(),o._id}async delete(e){await this.trigger("beforeDelete",e);var t=await this.indexedDB.get(this.db,"documents",e);if(!t)throw new o("Document not found","DOCUMENT_NOT_FOUND");if(t._permanent)throw new o("Cannot delete permanent document","INVALID_OPERATION");await this.indexedDB.delete(this.db,"documents",e),t._attachments&&0<t._attachments.length&&await this.opfs.deleteAttachments(this.database.name,this.name,e),this.metadata.removeDocument(e),this.database.metadata.updateCollection(this.metadata),await this.trigger("afterDelete",e),this.queryCache.clear()}async query(e,t){var r={filter:e=e||{},options:t=t||{}};r=s.serialize(r),r=n.encode(r);if((a=this.queryCache.get(r))&&Date.now()-a.timestamp<this.cacheTimeout)return i.performanceMonitor&&i.performanceMonitor.recordCacheHit(),a.data;i.performanceMonitor&&i.performanceMonitor.recordCacheMiss();var a=performance.now(),o=c=(await this.getAll(t)).filter((function(t){return y.evaluate(t,e)})),c=(t.projection&&(o=g.stages.$project(c,t.projection)),t.sort&&(o=g.stages.$sort(o,t.sort)),t.skip&&(o=g.stages.$skip(o,t.skip)),t.limit&&(o=g.stages.$limit(o,t.limit)),performance.now()-a);return i.performanceMonitor&&i.performanceMonitor.recordOperation("query",c),this.queryCache.set(r,{data:o,timestamp:Date.now()}),100<this.queryCache.size&&(t=this.queryCache.keys().next().value,this.queryCache.delete(t)),o}async aggregate(e){var t=performance.now(),r=await this.getAll();r=await g.execute(r,e,this.database),e=performance.now()-t;return i.performanceMonitor&&i.performanceMonitor.recordOperation("aggregate",e),r}async batchAdd(e,t){t=t||{};for(var r=[],a=performance.now(),s=0;s<e.length;s++){var n=e[s];try{var o=await this.add(n,t);r.push({success:!0,id:o})}catch(e){r.push({success:!1,error:e.message})}}return a=performance.now()-a,i.performanceMonitor&&i.performanceMonitor.recordOperation("batchAdd",a),r}async batchUpdate(e,t){t=t||{};for(var r=[],i=0;i<e.length;i++){var a=e[i];try{await this.update(a.id,a.data,t),r.push({success:!0,id:a.id})}catch(e){r.push({success:!1,id:a.id,error:e.message})}}return r}async batchDelete(e){for(var t=[],r=0;r<e.length;r++){var i=e[r];try{await this.delete(i),t.push({success:!0,id:i})}catch(e){t.push({success:!1,id:i,error:e.message})}}return t}async clear(){await this.indexedDB.clear(this.db,"documents"),this.metadata=new f(this.name),this.database.metadata.updateCollection(this.metadata),this.queryCache.clear()}async checkSpaceLimit(){this.settings.sizeLimitKB!==1/0&&this.metadata.sizeKB>this.settings.bufferLimitKB&&await this.freeSpace()}async freeSpace(){for(var e=.8*this.settings.bufferLimitKB;this.metadata.sizeKB>e;){var t=this.metadata.getOldestNonPermanentDocuments(10);if(0===t.length)break;for(var r=0;r<t.length;r++){var i=t[r];try{await this.delete(i)}catch(e){console.error("Failed to delete document during cleanup:",e)}}}}createIndex(e,t){console.log("Index for "+e+" would be created on next database upgrade")}on(e,t){this.events[e]&&this.events[e].push(t)}off(e,t){this.events[e]&&(this.events[e]=this.events[e].filter((function(e){return e!==t})))}async trigger(e,t){if(this.events[e])for(var r=this.events[e],i=0;i<r.length;i++)await r[i](t)}clearCache(){this.queryCache.clear()}destroy(){this.cleanupInterval&&(clearInterval(this.cleanupInterval),this.cleanupInterval=null),this.db&&(this.db.close(),this.db=null)}}class A{constructor(e){this.name=e,this.collections=new Map,this.metadata=null,this.settings=null,this.quickStore=null}async init(){return this.metadata=p.load(this.name),this.settings=w.load(this.name),this.quickStore=new m(this.name),this}async createCollection(e,t){if(this.collections.has(e))throw new o("Collection already exists","COLLECTION_EXISTS");var r=new b(e,this);return await r.init(),this.collections.set(e,r),this.metadata.collections[e]||(e=new f(e),this.metadata.addCollection(e)),r}async getCollection(e){if(!this.collections.has(e)){if(!this.metadata.collections[e])throw new o("Collection not found","COLLECTION_NOT_FOUND");var t=new b(e,this);await t.init(),this.collections.set(e,t)}return this.collections.get(e)}async dropCollection(e){var t=await this.getCollection(e),r=(await t.clear(),t.destroy(),this.collections.delete(e),this.metadata.removeCollection(e),this.name+"_"+e);await new Promise((function(e,t){var i=indexedDB.deleteDatabase(r);i.onsuccess=e,i.onerror=t}))}async listCollections(){return Object.keys(this.metadata.collections)}getStats(){var e,t,r=[],i=this.metadata.collections;for(e in i)Object.prototype.hasOwnProperty.call(i,e)&&(t=i[e],r.push({name:e,sizeKB:t.sizeKB,documents:t.length,createdAt:new Date(t.createdAt).toISOString(),modifiedAt:new Date(t.modifiedAt).toISOString()}));return{name:this.name,totalSizeKB:this.metadata.totalSizeKB,totalDocuments:this.metadata.totalLength,collections:r}}updateSettings(e){this.settings.updateSettings(e)}async export(e,t){e=e||"json",t=t||null;for(var r,i,a={version:"4.0.0",database:this.name,timestamp:Date.now(),collections:{}},o=await this.listCollections(),c=0;c<o.length;c++){var l=o[c],u=await(await this.getCollection(l)).getAll({password:t});a.collections[l]=u}if("json"===e)return i=s.serialize(a),n.encode(i);if("encrypted"===e&&t)return i=new h,r=s.serialize(a),i=await i.encrypt(r,t),n.encode(i);if("csv"!==e)return a;var d="";for(l in a.collections)if(Object.prototype.hasOwnProperty.call(a.collections,l)&&0<(u=a.collections[l]).length){for(var f=Object.keys(u[0]),p=(d=(d+="Collection: "+l+"\n")+f.join(",")+"\n",0);p<u.length;p++){var w=u[p];d+=f.map((function(e){return JSON.stringify(w[e]||"")})).join(",")+"\n"}d+="\n"}return d}async import(e,t,r){var i,a,c,l,u;t=t||"json",r=r||null;try{l="encrypted"===t&&r?(i=new h,a=n.decode(e),c=await i.decrypt(a,r),s.deserialize(c)):(u=n.decode(e),s.deserialize(u))}catch(e){throw new o("Failed to parse import data","IMPORT_PARSE_FAILED",e)}var d,f=this;for(d in l.collections)if(Object.prototype.hasOwnProperty.call(l.collections,d))for(var p=l.collections[d],w=await this.createCollection(d).catch((function(){return f.getCollection(d)})),m=0;m<p.length;m++)await w.add(p[m]);var y,g=0;for(y in l.collections)Object.prototype.hasOwnProperty.call(l.collections,y)&&(g+=l.collections[y].length);return{collections:Object.keys(l.collections).length,documents:g}}async clearAll(){this.collections.forEach((async function(e,t){await e.clear(),e.destroy()})),this.collections.clear(),this.metadata=new p(this.name),this.metadata.save(),this.quickStore.clear()}destroy(){this.collections.forEach((function(e){e.destroy()})),this.collections.clear()}}r={LacertaDB:class{constructor(){this.databases=new Map,this.performanceMonitor=new v,void 0!==i&&(i.performanceMonitor=this.performanceMonitor)}async getDatabase(e){var t;return this.databases.has(e)||(await(t=new A(e)).init(),this.databases.set(e,t)),this.databases.get(e)}async dropDatabase(e){var t;this.databases.has(e)&&(await(t=this.databases.get(e)).clearAll(),t.destroy(),this.databases.delete(e),localStorage.removeItem("lacertadb_"+e+"_metadata"),localStorage.removeItem("lacertadb_"+e+"_settings"),localStorage.removeItem("lacertadb_"+e+"_version"),new m(e).clear())}listDatabases(){for(var e=[],t=0;t<localStorage.length;t++){var r=localStorage.key(t);r&&r.startsWith("lacertadb_")&&r.endsWith("_metadata")&&(r=r.replace("lacertadb_","").replace("_metadata",""),e.push(r))}return e}async createBackup(e){e=e||null;for(var t={version:"4.0.0",timestamp:Date.now(),databases:{}},r=this.listDatabases(),i=0;i<r.length;i++){var a=r[i],o=await(await this.getDatabase(a)).export("json");o=n.decode(o);t.databases[a]=s.deserialize(o)}var c=s.serialize(t);return e?(e=await(new h).encrypt(c,e),n.encode(e)):n.encode(c)}async restoreBackup(e,t){t=t||null;try{var r,i,a=n.decode(e);i=t?(r=await(new h).decrypt(a,t),s.deserialize(r)):s.deserialize(a)}catch(e){throw new o("Failed to parse backup data","BACKUP_PARSE_FAILED",e)}var c,l,u,d={databases:0,collections:0,documents:0};for(c in i.databases)Object.prototype.hasOwnProperty.call(i.databases,c)&&(l=i.databases[c],u=await this.getDatabase(c),l=s.serialize(l),l=n.encode(l),u=await u.import(l),d.databases++,d.collections+=u.collections,d.documents+=u.documents);return d}},Database:A,Collection:b,Document:d,QueryOperators:y,AggregationPipeline:g,MigrationManager:class{constructor(e){this.database=e,this.migrations=[],this.currentVersion=this.loadVersion()}loadVersion(){return localStorage.getItem("lacertadb_"+this.database.name+"_version")||"1.0.0"}saveVersion(e){localStorage.setItem("lacertadb_"+this.database.name+"_version",e),this.currentVersion=e}addMigration(e){this.migrations.push(e)}async runMigrations(e){var t=this,r=this.migrations.filter((function(r){return 0<t.compareVersions(r.version,t.currentVersion)&&t.compareVersions(r.version,e)<=0}));r.sort((function(e,r){return t.compareVersions(e.version,r.version)}));for(var i=0;i<r.length;i++){var a=r[i];await this.runMigration(a),this.saveVersion(a.version)}}async runMigration(e){console.log("Running migration: "+e.name+" (v"+e.version+")");for(var t=await this.database.listCollections(),r=0;r<t.length;r++)for(var i=t[r],a=await this.database.getCollection(i),s=await a.getAll(),n=0;n<s.length;n++){var o=s[n],c=await e.up(o);c&&await a.update(o._id,c)}}async rollback(e){var t=this,r=this.migrations.filter((function(r){return 0<t.compareVersions(r.version,e)&&t.compareVersions(r.version,t.currentVersion)<=0}));r.sort((function(e,r){return t.compareVersions(r.version,e.version)}));for(var i=0;i<r.length;i++){var a=r[i];a.down&&await this.runRollback(a)}this.saveVersion(e)}async runRollback(e){console.log("Rolling back migration: "+e.name+" (v"+e.version+")");for(var t=await this.database.listCollections(),r=0;r<t.length;r++)for(var i=t[r],a=await this.database.getCollection(i),s=await a.getAll(),n=0;n<s.length;n++){var o=s[n],c=await e.down(o);c&&await a.update(o._id,c)}}compareVersions(e,t){for(var r=e.split(".").map(Number),i=t.split(".").map(Number),a=0;a<Math.max(r.length,i.length);a++){var s=r[a]||0,n=i[a]||0;if(n<s)return 1;if(s<n)return-1}return 0}},PerformanceMonitor:v,LacertaDBError:o},e.exports=r}},function(e,t,r){r.r(t);let i=240,a=0,s=16,n=32,o=48,c=64,h=80,l=96,u=112,d=128,f=144,p=160,w=176,m=192,y=224,g=240,v=0,b=1,A=2,_=3,S=16,E=17,U=18,D=19,k=20,x=21,I=22,O=23,V=24,B=25,C=26,z=32,P=33,M=34,T=35,L=48,j=49,F=50,R=51,N=52,$=53,K=54,q=55,H=64,W=65,Q=66,G=67,Y=68,J=69,X=70,Z=71,ee=80,te=81,re=82,ie=83,ae=84,se=85,ne=96,oe=97,ce=98,he=99,le=100,ue=101,de=102,fe=103,pe=104,we=105,me=106,ye=107,ge=112,ve=113,be=114,Ae=128,_e=129,Se=144,Ee=145,Ue=160,De=161,ke=162,xe=163,Ie=164,Oe=165,Ve=166,Be=167,Ce=168,ze=176,Pe=192,Me=193,Te=208,Le=209,je=224,Fe=225,Re=226,Ne=227,$e=240,Ke=new Uint8Array(256),qe=new Uint8Array(256);new Map;let He=new Map,We=new Map;var Qe=[[E,2],[U,4],[D,4],[k,4],[x,8],[z,8],[P,8]];for(let e=0;e<Qe.length;e++)Ke[Qe[e][0]]=Qe[e][1];var Ge,Ye=[[ne,1],[oe,1],[ce,1],[he,2],[le,2],[ue,4],[de,4],[fe,4],[pe,8],[we,8],[me,8],[G,1],[Y,2],[J,4],[X,4],[Z,8]];for(let e=0;e<Ye.length;e++)qe[Ye[e][0]]=Ye[e][1];for(Ge of["asyncIterator","hasInstance","isConcatSpreadable","iterator","match","matchAll","replace","search","species","split","toPrimitive","toStringTag","unscopables"]){var Je=Symbol[Ge];Je&&(He.set(Je,Ge),We.set(Ge,Je))}class Xe{constructor(e=65536){this.size=(e+128-1&-128)>>>0,this.buffer=new ArrayBuffer(this.size),this.offset=0,this.u8=new Uint8Array(this.buffer),this.view=new DataView(this.buffer),this.pos=0,this.f32View=null,this.f64View=null,this.i32View=null}ensure(e){var t,r;(e=this.pos+(e|=0)|0)>this.size&&(e=(128+(0|Math.max(this.size<<1,128+e))-1&-128)>>>0,t=new ArrayBuffer(e),(r=new Uint8Array(t)).set(this.u8.subarray(0,this.pos)),this.buffer=t,this.u8=r,this.view=new DataView(t),this.size=e,this.f32View=null,this.f64View=null,this.i32View=null)}alignPos(e){e=e-1|0,this.pos=(this.pos+e&~e)>>>0}writeU8(e){this.ensure(1),this.u8[this.pos++]=255&e}writeU16(e){this.alignPos(2),this.ensure(2),this.view.setUint16(this.pos,65535&e,!0),this.pos=this.pos+2|0}writeI16(e){this.alignPos(2),this.ensure(2),this.view.setInt16(this.pos,e,!0),this.pos=this.pos+2|0}writeU32(e){this.alignPos(4),this.ensure(4),this.view.setUint32(this.pos,e>>>0,!0),this.pos=this.pos+4|0}writeI32(e){this.alignPos(4),this.ensure(4),this.view.setInt32(this.pos,0|e,!0),this.pos=this.pos+4|0}writeF32(e){this.alignPos(4),this.ensure(4),this.view.setFloat32(this.pos,+e,!0),this.pos=this.pos+4|0}writeF64(e){this.alignPos(8),this.ensure(8),this.view.setFloat64(this.pos,+e,!0),this.pos=this.pos+8|0}writeBigInt64(e){this.alignPos(8),this.ensure(8),this.view.setBigInt64(this.pos,BigInt(e),!0),this.pos=this.pos+8|0}writeVarint(e){if(e>>>=0,this.ensure(5),e<128)this.u8[this.pos++]=e;else if(e<16384)this.u8[this.pos]=127&e|128,this.u8[this.pos+1]=e>>>7,this.pos=this.pos+2|0;else{let t=this.pos;for(;this.u8[t++]=127&e|128,128<=(e>>>=7););this.u8[t++]=e,this.pos=t}}writePackedArray(e,t){var r=0|e.length,i=(this.writeVarint(r),0|qe[t]);if(!i)throw new Error("Unknown element type: 0x"+t.toString(16));switch(this.alignPos(Math.min(i,8)),this.ensure(r*i),t){case G:new Int8Array(this.buffer,this.pos,r).set(e),this.pos=this.pos+r|0;break;case Y:var a=new Int16Array(this.buffer,this.pos,r);for(let t=0;t<r;t++)a[t]=0|e[t];this.pos=this.pos+(r<<1)|0;break;case J:var s=new Int32Array(this.buffer,this.pos,r);for(let t=0;t<r;t++)s[t]=0|e[t];this.pos=this.pos+(r<<2)|0;break;case X:var n=new Float32Array(this.buffer,this.pos,r);for(let t=0;t<r;t++)n[t]=+e[t];this.pos=this.pos+(r<<2)|0;break;case Z:var o=new Float64Array(this.buffer,this.pos,r);for(let t=0;t<r;t++)o[t]=+e[t];this.pos=this.pos+(r<<3)|0;break;default:throw new Error("Unsupported packed array type: 0x"+t.toString(16))}}writeBulkAligned(e,t){var r;t=Math.min(t,8),this.alignPos(t),t=e.byteLength||e.length;this.ensure(t),e.buffer&&void 0!==e.byteOffset?(r=new Uint8Array(e.buffer,e.byteOffset,t),this.u8.set(r,this.pos)):this.u8.set(e,this.pos),this.pos=this.pos+t|0}reset(){this.pos=0}getResult(){return this.u8.subarray(0,this.pos)}}class Ze{constructor(){this.blockSize=16}canOptimize(e){var t=e.length;if(!(8<=t&(0==(t&t-1)||16<=t)))return!1;var r=typeof e[0];if("number"!=r)return!1;var i=Math.max(1,t>>>5|0);for(let a=i;a<t;a+=i)if(typeof e[a]!=r)return!1;return!0}analyzeNumericArray(e){let t=1,r=1/0,i=-1/0,a=1;var s,n=e.length;for(let s=0;s<n;s++){var o=e[s];t&=+(o==(0|o)),r=Math.min(r,o),i=Math.max(i,o),a&&(a&=+(Math.fround(o)==o))}return t?(s=+((s=Math.max(Math.abs(r),Math.abs(i)))<=127)<<0|+(s<=32767)<<1|+(s<=2147483647)<<2,[{type:J,elementSize:4},{type:G,elementSize:1},{type:Y,elementSize:2},{type:J,elementSize:4}][3&s]):a?{type:X,elementSize:4}:{type:Z,elementSize:8}}}class et{constructor(){this.simdProcessor=new Ze,this.constructorMap=new Map,this.typeNameMap=new Map,this.errorTypeMap=new Map,this.initMaps()}initMaps(){var e,t,r,i,a=[[Date,Se],[RegExp,ze],[Map,Ae],[Set,_e],[ArrayBuffer,ge],[DataView,ye]],s=[["Uint8Array",ne],["Int8Array",oe],["Uint8ClampedArray",ce],["Uint16Array",he],["Int16Array",le],["Uint32Array",ue],["Int32Array",de],["Float32Array",fe],["Float64Array",pe],["BigInt64Array",we],["BigUint64Array",me],["SharedArrayBuffer",be]];for([e,t]of a)this.constructorMap.set(e,t);for([r,i]of s){var n=globalThis[r];n&&(this.constructorMap.set(n,i),this.typeNameMap.set(r,i))}this.errorTypeMap.set("Error",Ue),this.errorTypeMap.set("EvalError",De),this.errorTypeMap.set("RangeError",ke),this.errorTypeMap.set("ReferenceError",xe),this.errorTypeMap.set("SyntaxError",Ie),this.errorTypeMap.set("TypeError",Oe),this.errorTypeMap.set("URIError",Ve),this.errorTypeMap.set("AggregateError",Be)}detect(e){if(null==e)return null===e?v:b;switch(typeof e){case"boolean":return e?_:A;case"number":return this.detectNumber(e);case"bigint":return this.detectBigInt(e);case"string":return this.detectString(e);case"symbol":return this.detectSymbol(e);case"object":return this.detectObject(e);default:return b}}detectNumber(e){var t,r,i;return e!=e?I:(i=new Float64Array([e]),((t=(i=new Uint32Array(i.buffer))[1])&(r=2146435072))==r&0==i[0]&0==(1048575&t)?t>>>31?V:O:0==e&&t>>>31?B:e==(0|e)?(i=+((r=Math.abs(e))<=127)<<0|+(r<=32767)<<1|+(r<=2147483647)<<2,[C,S,E,U][Math.min(i,3)]):Math.fround(e)==e?k:x)}detectBigInt(e){var t=e<0n;return(t?-e:e)<=0x7fffffffffffffffn?t?P:z:t?T:M}detectString(e){var t,r=e.length;if(0==r)return L;let i=1;for(let t=0;t<r&&i;t++)i&=+(e.charCodeAt(t)<=127);return i?r<16?j:r<256?F:R:(t=(new TextEncoder).encode(e).length)<16?N:t<256?$:K}detectSymbol(e){return void 0!==Symbol.keyFor(e)?Fe:He.has(e)?Re:void 0===e.description?Ne:je}detectObject(e){var t,r;return null==e?v:(t=e.constructor,void 0!==(t=this.constructorMap.get(t))?t==Se?(r=e.getTime())==r?Se:Ee:t:Array.isArray(e)?this.detectArray(e):ArrayBuffer.isView(e)?this.detectTypedArrayType(e):e instanceof Error?this.detectErrorType(e):"undefined"!=typeof Blob&&e instanceof Blob?e instanceof File?Me:Pe:this.classifyObject(e))}classifyObject(e){var t=Object.getPrototypeOf(e);if(e.constructor!=Object&&t!=Object.prototype&&null!=t)return ie;t=Object.getOwnPropertyNames(e);var r,i=Object.getOwnPropertySymbols(e);if(0===(t=[...t,...i]).length)return ee;let a=!1,s=!1;for(r of t){var n=Object.getOwnPropertyDescriptor(e,r);if(n.get||n.set){a=!0;break}"function"==typeof n.value&&(s=!0),n.enumerable&&n.writable&&n.configurable||(a=!0)}return a?ae:s?se:re}detectArray(e){var t=e.length;if(0==t)return H;let r=0,i=!1;for(let a=0;a<t;a++)a in e?r++:i=!0;return i||r<3*t>>>2?Q:this.simdProcessor.canOptimize(e)?this.simdProcessor.analyzeNumericArray(e).type:W}detectTypedArrayType(e){return e=e.constructor.name,this.typeNameMap.get(e)||ne}detectErrorType(e){return e=e.constructor.name,this.errorTypeMap.get(e)||Ce}}t.default=class{constructor(e={}){this.options={compression:e.compression||!1,deduplication:!1!==e.deduplication,shareArrayBuffers:!1!==e.shareArrayBuffers,simdOptimization:!1!==e.simdOptimization,detectCircular:!1!==e.detectCircular,serializeFunctions:e.serializeFunctions||!1,preservePropertyDescriptors:!1!==e.preservePropertyDescriptors,memoryPoolSize:e.memoryPoolSize||65536,...e},this.pool=new Xe(this.options.memoryPoolSize),this.detector=new et,this.simdProcessor=new Ze,this.refs=new Map,this.circularRefs=new Set,this.strings=new Map,this.buffers=new Map,this.encoder=new TextEncoder,this.decoder=new TextDecoder}serialize(e){return this.resetState(),this.pool.writeU32(1413632565),this.pool.writeU8(5),this.options.detectCircular&&this.detectCircularReferences(e,new WeakSet),this.writeValue(e),this.pool.getResult()}resetState(){this.pool.reset(),this.refs.clear(),this.circularRefs.clear(),this.strings.clear(),this.buffers.clear()}detectCircularReferences(e,t){if("object"==typeof e&&null!=e)if(t.has(e))this.circularRefs.add(e);else{t.add(e);try{if(Array.isArray(e))for(let r=0;r<e.length;r++)r in e&&this.detectCircularReferences(e[r],t);else if(e instanceof Map)for(var[r,i]of e)this.detectCircularReferences(r,t),this.detectCircularReferences(i,t);else if(e instanceof Set)for(var a of e)this.detectCircularReferences(a,t);else for(var s in e)if(e.hasOwnProperty(s))try{this.detectCircularReferences(e[s],t)}catch(r){}}finally{t.delete(e)}}}writeValue(e){if(this.options.detectCircular&&"object"==typeof e&&null!=e&&this.circularRefs.has(e)){if(void 0!==(t=this.refs.get(e)))return this.pool.writeU8(Le),void this.pool.writeVarint(t);this.refs.set(e,this.refs.size)}if(this.options.deduplication&&"object"==typeof e&&null!=e&&!this.circularRefs.has(e)){if(void 0!==(t=this.refs.get(e)))return this.pool.writeU8(Te),void this.pool.writeVarint(t);this.refs.set(e,this.refs.size)}if(this.options.deduplication&&"string"==typeof e&&3<e.length){if(void 0!==(t=this.strings.get(e)))return this.pool.writeU8(q),void this.pool.writeVarint(t);this.strings.set(e,this.strings.size)}if(this.options.shareArrayBuffers&&e instanceof ArrayBuffer){if(void 0!==(t=this.buffers.get(e)))return this.pool.writeU8(ve),void this.pool.writeVarint(t);this.buffers.set(e,this.buffers.size)}var t,r=this.detector.detect(e);switch(t=(this.pool.writeU8(r),r&i)){case a:break;case s:this.writeNumber(e,r);break;case n:this.writeBigInt(e,r);break;case o:this.writeString(e,r);break;case c:this.writeArray(e,r);break;case h:this.writeObject(e,r);break;case l:this.writeTypedArray(e,r);break;case u:this.writeArrayBuffer(e,r);break;case d:this.writeCollection(e,r);break;case f:this.writeDate(e,r);break;case p:this.writeError(e,r);break;case w:this.writeRegExp(e);break;case m:this.writeBinary(e,r);break;case y:this.writeSpecial(e,r);break;case g:this.writeExtension(e,r)}}writeNumber(e,t){switch(t){case S:this.pool.writeU8(e);break;case E:this.pool.writeI16(e);break;case U:this.pool.writeI32(e);break;case D:this.pool.writeU32(e);break;case k:this.pool.writeF32(e);break;case x:this.pool.writeF64(e);break;case C:var r=e<0;this.pool.writeVarint(Math.abs(e)),this.pool.writeU8(r?1:0)}}writeBigInt(e,t){switch(t){case z:case P:this.pool.writeBigInt64(e);break;case M:case T:this.writeLargeBigInt(e)}}writeLargeBigInt(e){var t,r=BigInt(e).toString(16).replace("-",""),i=[];for(let e=r.length-2;0<=e;e-=2)i.push(parseInt(r.substr(e,2),16));for(t of(r.length%2&&i.push(parseInt(r[0],16)),this.pool.writeVarint(i.length),i))this.pool.writeU8(t)}writeString(e,t){var r=e.length;switch(t){case L:break;case j:case F:this.pool.writeU8(r);for(let t=0;t<r;t++)this.pool.writeU8(e.charCodeAt(t));break;case R:this.pool.writeVarint(r);for(let t=0;t<r;t++)this.pool.writeU8(e.charCodeAt(t));break;case N:case $:case K:var i=this.encoder.encode(e);t==N||t==$?this.pool.writeU8(i.length):this.pool.writeVarint(i.length),this.pool.writeBulkAligned(i,1)}}writeArray(e,t){var r=e.length;switch(t){case H:break;case W:this.pool.writeVarint(r);for(let t=0;t<r;t++)this.writeValue(e[t]);break;case Q:this.writeSparseArray(e);break;case G:case Y:case J:case X:case Z:this.pool.writePackedArray(e,t)}}writeSparseArray(e){var t=e.length,r=new Uint32Array(t),i=[];let a=0;for(let s=0;s<t;s++)s in e&&(r[a]=s,i[a]=e[s],a++);this.pool.writeVarint(t),this.pool.writeVarint(a);for(let e=0;e<a;e++)this.pool.writeVarint(r[e]),this.writeValue(i[e])}writeObject(e,t){if(t!=ee)switch(t){case re:case te:this.writeSimpleObject(e);break;case ae:this.writeObjectWithDescriptors(e);break;case se:this.writeObjectWithMethods(e);break;case ie:this.writeConstructorObject(e)}}writeSimpleObject(e){var t,r=Object.keys(e).filter(t=>{try{return"function"!=typeof e[t]||this.options.serializeFunctions}catch(t){return!1}});for(t of(r.sort(),this.pool.writeVarint(r.length),r))this.writeValue(t),this.writeValue(e[t])}writeObjectWithDescriptors(e){var t,r=Object.getOwnPropertyNames(e),i=Object.getOwnPropertySymbols(e);r=[...r,...i].filter(t=>{try{var r=Object.getOwnPropertyDescriptor(e,t);return r&&(this.options.serializeFunctions||!r.get&&!r.set&&"function"!=typeof r.value)}catch(t){return!1}});for(t of(this.pool.writeVarint(r.length),r)){this.writeValue(t);var a=Object.getOwnPropertyDescriptor(e,t);let r=0;a.enumerable&&(r|=1),a.writable&&(r|=2),a.configurable&&(r|=4),a.get&&(r|=8),a.set&&(r|=16),this.pool.writeU8(r),a.get||a.set?(a.get&&this.writeValue(a.get),a.set&&this.writeValue(a.set)):this.writeValue(a.value)}}writeObjectWithMethods(e){var t,r,i,a,s=[];for(t of Object.keys(e))try{var n=e[t];"function"==typeof n?this.options.serializeFunctions?s.push([t,n,!0]):s.push([t,null,!1]):s.push([t,n,!1])}catch(e){}for([r,i,a]of(this.pool.writeVarint(s.length),s))this.writeValue(r),this.pool.writeU8(a?1:0),a&&this.options.serializeFunctions?(this.writeValue(i.toString()),this.writeValue(i.name||"")):a?this.pool.writeU8($e):this.writeValue(i)}writeConstructorObject(e){this.writeValue(e.constructor.name||"");var t,r=Object.keys(e).filter(t=>{try{return"function"!=typeof e[t]||this.options.serializeFunctions}catch(t){return!1}});for(t of(this.pool.writeVarint(r.length),r))this.writeValue(t),this.writeValue(e[t])}writeTypedArray(e,t){var r=e.buffer,i=e.byteOffset,a=e.length;if(this.options.shareArrayBuffers){if(void 0!==(s=this.buffers.get(r)))return this.pool.writeU8(1),this.pool.writeVarint(s),this.pool.writeVarint(i),void this.pool.writeVarint(a);this.buffers.set(r,this.buffers.size)}this.pool.writeU8(0),this.pool.writeVarint(i),this.pool.writeVarint(a);var s,n=a*(s=qe[t]||1);if(t==we||t==me)for(let t=0;t<a;t++)this.pool.writeBigInt64(e[t]);else t=new Uint8Array(r,i,n),this.pool.writeBulkAligned(t,s)}writeArrayBuffer(e,t){e=new Uint8Array(e),this.pool.writeVarint(e.length),this.pool.writeBulkAligned(e,1)}writeCollection(e,t){switch(t){case Ae:for(var[r,i]of(this.pool.writeVarint(e.size),e))this.writeValue(r),this.writeValue(i);break;case _e:for(var a of(this.pool.writeVarint(e.size),e))this.writeValue(a)}}writeDate(e,t){t==Se&&this.pool.writeF64(e.getTime())}writeError(e,t){if(this.writeValue(e.message||""),this.writeValue(e.stack||""),t==Be&&e.errors)for(var r of(this.pool.writeVarint(e.errors.length),e.errors))this.writeValue(r)}writeRegExp(e){this.writeValue(e.source),this.writeValue(e.flags)}writeBinary(e,t){this.pool.writeVarint(0),this.pool.writeVarint(0)}writeSpecial(e,t){switch(t){case je:var r=e.description;this.writeValue(r);break;case Ne:break;case Fe:r=Symbol.keyFor(e),this.writeValue(r||"");break;case Re:r=He.get(e),this.writeValue(r||"")}}writeExtension(e,t){}deserialize(e){if(this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset),this.pos=0,this.deserializeRefs=[],this.deserializeStrings=[],this.deserializeBuffers=[],1413632565!==this.readU32())throw new Error("Invalid TurboSerial data");if(5!==(e=this.readU8()))throw new Error("Unsupported version: "+e);return this.readValue()}readValue(){if(this.pos>=this.buffer.length)throw new Error("Unexpected end of buffer");var e=this.readU8();if(e==Te||e==Le){var t=this.readVarint();if(t>=this.deserializeRefs.length)throw new Error("Invalid reference: "+t);return this.deserializeRefs[t]}if(e==q){if((t=this.readVarint())>=this.deserializeStrings.length)throw new Error("Invalid string reference: "+t);return this.deserializeStrings[t]}if(e==ve){if((t=this.readVarint())>=this.deserializeBuffers.length)throw new Error("Invalid buffer reference: "+t);return this.deserializeBuffers[t]}let r,v=!1;switch(t=e&i){case h:case c:case d:v=!0}if(v){switch(t){case c:r=[];break;case d:e==Ae?r=new Map:e==_e&&(r=new Set);break;case h:r={}}switch(r&&this.deserializeRefs.push(r),t){case c:this.fillArray(r,e);break;case h:this.fillObject(r,e);break;case d:this.fillCollection(r,e)}}else{switch(t){case a:r=this.readPrimitive(e);break;case s:r=this.readNumber(e);break;case n:r=this.readBigInt(e);break;case o:r=this.readString(e);break;case l:r=this.readTypedArray(e);break;case u:r=this.readArrayBuffer(e);break;case f:r=this.readDate(e);break;case p:r=this.readError(e);break;case w:r=this.readRegExp();break;case m:r=this.readBinary(e);break;case y:r=this.readSpecial(e);break;case g:r=this.readExtension(e);break;default:throw new Error("Unknown type: 0x"+e.toString(16))}"object"!=typeof r||null==r||v||this.deserializeRefs.push(r)}return r}fillArray(e,t){switch(t){case H:break;case W:var r=this.readVarint();for(let t=0;t<r;t++)e[t]=this.readValue();break;case Q:var i=this.readVarint(),a=this.readVarint();e.length=i;for(let t=0;t<a;t++)e[this.readVarint()]=this.readValue();break;case G:case Y:case J:case X:case Z:i=this.readPackedArrayData(t),e.push(...i)}}fillObject(e,t){if(t!=ee)switch(t){case re:case te:this.fillSimpleObject(e);break;case ae:this.fillObjectWithDescriptors(e);break;case se:this.fillObjectWithMethods(e);break;case ie:this.fillConstructorObject(e)}}fillSimpleObject(e){var t=this.readVarint();for(let r=0;r<t;r++)e[this.readValue()]=this.readValue()}fillObjectWithDescriptors(e){var t=this.readVarint();for(let n=0;n<t;n++){var r=this.readValue(),i={enumerable:!!(1&(s=this.readU8())),writable:!!(2&s),configurable:!!(4&s)},a=!!(8&s),s=!!(16&s);a||s?(a&&(i.get=this.readValue()),s&&(i.set=this.readValue())):i.value=this.readValue(),Object.defineProperty(e,r,i)}}fillObjectWithMethods(e){var t=this.readVarint();for(let a=0;a<t;a++){var r=this.readValue();if(this.readU8())if(this.options.serializeFunctions){var i=this.readValue();this.readValue();try{e[r]=new Function("return "+i)()}catch(t){e[r]=function(){throw new Error("Function deserialization failed")}}}else this.readU8()===$e&&(e[r]=function(){throw new Error("Function not serialized")});else e[r]=this.readValue()}}fillConstructorObject(e){var t=this.readValue(),r=this.readVarint();for(let t=0;t<r;t++)e[this.readValue()]=this.readValue();Object.defineProperty(e,"__constructorName",{value:t,enumerable:!1,writable:!1,configurable:!0})}fillCollection(e,t){var r=this.readVarint();switch(t){case Ae:for(let t=0;t<r;t++){var i=this.readValue(),a=this.readValue();e.set(i,a)}break;case _e:for(let t=0;t<r;t++)e.add(this.readValue())}}readPrimitive(e){switch(e){case v:return null;case b:return;case A:return!1;case _:return!0;default:throw new Error("Unknown primitive: 0x"+e.toString(16))}}readNumber(e){switch(e){case S:return this.view.getInt8(this.pos++);case E:return this.readI16();case U:return this.readI32();case D:return this.readU32();case k:return this.readF32();case x:return this.readF64();case I:return NaN;case O:return 1/0;case V:return-1/0;case B:return-0;case C:var t=this.readVarint();return this.readU8()?-t:t;default:throw new Error("Unknown number type: 0x"+e.toString(16))}}readBigInt(e){switch(e){case z:case P:return this.readBigInt64();case M:case T:return this.readLargeBigInt(e==T);default:throw new Error("Unknown BigInt type: 0x"+e.toString(16))}}readLargeBigInt(e){var t=this.readVarint(),r=(this.ensureBytes(t),this.buffer.subarray(this.pos,this.pos+t));this.pos+=t;let i="";for(let e=r.length-1;0<=e;e--)i+=r[e].toString(16).padStart(2,"0");return t=BigInt("0x"+i),e?-t:t}readString(e){if(e==L)return"";let t,r;switch(e){case j:case F:case N:case $:t=this.readU8();break;default:t=this.readVarint()}if(this.ensureBytes(t),e==j||e==F||e==R){r="";for(let e=0;e<t;e++)r+=String.fromCharCode(this.readU8())}else e=this.buffer.subarray(this.pos,this.pos+t),this.pos+=t,r=this.decoder.decode(e);return this.deserializeStrings.push(r),r}readPackedArrayData(e){var t=this.readVarint(),r=new Array(t),i=qe[e];if(!i)throw new Error("Unknown packed array type: 0x"+e.toString(16));switch(this.alignPos(Math.min(i,8)),this.ensureBytes(t*i),e){case G:for(let e=0;e<t;e++)r[e]=this.view.getInt8(this.pos++);break;case Y:for(let e=0;e<t;e++)r[e]=this.view.getInt16(this.pos,!0),this.pos+=2;break;case J:for(let e=0;e<t;e++)r[e]=this.view.getInt32(this.pos,!0),this.pos+=4;break;case X:for(let e=0;e<t;e++)r[e]=this.view.getFloat32(this.pos,!0),this.pos+=4;break;case Z:for(let e=0;e<t;e++)r[e]=this.view.getFloat64(this.pos,!0),this.pos+=8}return r}readTypedArray(e){if(this.readU8()){var t=this.readVarint(),r=this.readVarint(),i=this.readVarint();if(t>=this.deserializeBuffers.length)throw new Error("Invalid buffer reference: "+t);return t=this.deserializeBuffers[t],this.createTypedArray(e,t,r,i)}this.readVarint();var a=this.readVarint();t=qe[e]||1;if(e!=we&&e!=me)return r=a*t,this.alignPos(t),this.ensureBytes(r),i=this.buffer.subarray(this.pos,this.pos+r),this.pos+=r,t=new ArrayBuffer(r),new Uint8Array(t).set(i),this.deserializeBuffers.push(t),this.createTypedArray(e,t,0,a);this.alignPos(8);var s=[];for(let e=0;e<a;e++)s.push(this.readBigInt64());return new(e==we?BigInt64Array:BigUint64Array)(s)}createTypedArray(e,t,r,i){var a={[ne]:Uint8Array,[oe]:Int8Array,[ce]:Uint8ClampedArray,[he]:Uint16Array,[le]:Int16Array,[ue]:Uint32Array,[de]:Int32Array,[fe]:Float32Array,[pe]:Float64Array,[we]:BigInt64Array,[me]:BigUint64Array,[ye]:DataView}[e];if(a)return new a(t,r,i);throw new Error("Unknown typed array type: 0x"+e.toString(16))}readArrayBuffer(e){var t=this.readVarint(),r=(this.ensureBytes(t),this.buffer.subarray(this.pos,this.pos+t));this.pos+=t,t=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength);return this.deserializeBuffers.push(t),t}readDate(e){switch(e){case Se:return new Date(this.readF64());case Ee:return new Date(NaN);default:throw new Error("Unknown date type: 0x"+e.toString(16))}}readError(e){var t=this.readValue(),r=this.readValue();let i;var a={[Ue]:Error,[De]:EvalError,[ke]:RangeError,[xe]:ReferenceError,[Ie]:SyntaxError,[Oe]:TypeError,[Ve]:URIError}[e]||Error;if(e==Be){var s=this.readVarint(),n=[];for(let e=0;e<s;e++)n.push(this.readValue());i=new AggregateError(n,t)}else i=new a(t);return r&&(i.stack=r),i}readRegExp(){var e=this.readValue(),t=this.readValue();return new RegExp(e,t)}readBinary(e){return{_type:"Binary",size:this.readVarint(),typeStr:this.readVarint()}}readSpecial(e){switch(e){case je:var t=this.readValue();return Symbol(t);case Ne:return Symbol();case Fe:return t=this.readValue(),Symbol.for(t);case Re:return t=this.readValue(),We.get(t)||Symbol(t);default:throw new Error("Unknown special type: 0x"+e.toString(16))}}readExtension(e){if(e!==$e)throw new Error("Unknown extension type: 0x"+e.toString(16));return function(){throw new Error("Function not serialized")}}readU8(){return this.ensureBytes(1),this.buffer[this.pos++]}readI16(){this.alignPos(2),this.ensureBytes(2);var e=this.view.getInt16(this.pos,!0);return this.pos+=2,e}readU16(){this.alignPos(2),this.ensureBytes(2);var e=this.view.getUint16(this.pos,!0);return this.pos+=2,e}readI32(){this.alignPos(4),this.ensureBytes(4);var e=this.view.getInt32(this.pos,!0);return this.pos+=4,e}readU32(){this.alignPos(4),this.ensureBytes(4);var e=this.view.getUint32(this.pos,!0);return this.pos+=4,e}readF32(){this.alignPos(4),this.ensureBytes(4);var e=this.view.getFloat32(this.pos,!0);return this.pos+=4,e}readF64(){this.alignPos(8),this.ensureBytes(8);var e=this.view.getFloat64(this.pos,!0);return this.pos+=8,e}readBigInt64(){this.alignPos(8),this.ensureBytes(8);var e=this.view.getBigInt64(this.pos,!0);return this.pos+=8,e}readVarint(){let e=0,t=0;for(var r;this.ensureBytes(1),e|=(127&(r=this.buffer[this.pos++]))<<t,t+=7,128&r;);return e>>>0}alignPos(e){e=e-1|0,this.pos=(this.pos+e&~e)>>>0}ensureBytes(e){if(this.pos+e>this.buffer.length)throw new Error(`Buffer underflow: need ${e}, available `+(this.buffer.length-this.pos))}}},function(e,t){var r={},i=new Float32Array(4);function a(e,t){if((0|e)!==e)throw new TypeError("Lane index must be an int32");if(e<0||t<=e)throw new RangeError("Lane index must be in bounds")}new Int32Array(i.buffer),new Int16Array(i.buffer),new Int8Array(i.buffer),new Uint32Array(i.buffer),new Uint16Array(i.buffer),new Uint8Array(i.buffer),void 0!==r.Int8x16&&void 0!==r.Int8x16.extractLane||(r.Int8x16=function(e,t,i,a,s,n,o,c,h,l,u,d,f,p,w,m){if(!(this instanceof r.Int8x16))return new r.Int8x16(e,t,i,a,s,n,o,c,h,l,u,d,f,p,w,m);this.s_=new Int8Array([e,t,i,a,s,n,o,c,h,l,u,d,f,p,w,m])},r.Int8x16.check=function(e){if(e instanceof r.Int8x16)return e;throw new TypeError("Argument is not a Int8x16.")},r.Int8x16.splat=function(e){return new r.Int8x16(e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e)},r.Int8x16.extractLane=function(e,t){return e=r.Int8x16.check(e),a(t,16),e.s_[t]},r.Int8x16.replaceLane=function(e,t,i){return e=r.Int8x16.check(e),a(t,16),(e=Array.from(e.s_))[t]=i,new r.Int8x16(...e)},r.Int8x16.shuffle=function(e,t,i,s,n,o,c,h,l,u,d,f,p,w,m,y,g,v){var b=[i,s,n,o,c,h,l,u,d,f,p,w,m,y,g,v],A=[];e=r.Int8x16.check(e),t=r.Int8x16.check(t);for(var _=0;_<16;_++){var S=b[_];a(S,32),A[_]=S<16?e.s_[S]:t.s_[S-16]}return new r.Int8x16(...A)}),void 0!==r.Uint8x16&&void 0!==r.Uint8x16.extractLane||(r.Uint8x16=function(e,t,i,a,s,n,o,c,h,l,u,d,f,p,w,m){if(!(this instanceof r.Uint8x16))return new r.Uint8x16(e,t,i,a,s,n,o,c,h,l,u,d,f,p,w,m);this.s_=new Uint8Array([e,t,i,a,s,n,o,c,h,l,u,d,f,p,w,m])},r.Uint8x16.check=function(e){if(e instanceof r.Uint8x16)return e;throw new TypeError("Argument is not a Uint8x16.")},r.Uint8x16.splat=function(e){return new r.Uint8x16(e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e)},r.Uint8x16.extractLane=function(e,t){return e=r.Uint8x16.check(e),a(t,16),e.s_[t]},r.Uint8x16.load=function(e,t){if(t<0||t*e.BYTES_PER_ELEMENT+16>e.byteLength)throw new RangeError("The value of index is invalid.");return new r.Uint8x16(...e.subarray(t,t+16))},r.Uint8x16.store=function(e,t,r){if(t<0||t*e.BYTES_PER_ELEMENT+16>e.byteLength)throw new RangeError("The value of index is invalid.");return e.set(r.s_,t),r},r.Uint8x16.shuffle=function(e,t,i,s,n,o,c,h,l,u,d,f,p,w,m,y,g,v){var b=[i,s,n,o,c,h,l,u,d,f,p,w,m,y,g,v],A=[];e=r.Uint8x16.check(e),t=r.Uint8x16.check(t);for(var _=0;_<16;_++){var S=b[_];a(S,32),A[_]=S<16?e.s_[S]:t.s_[S-16]}return new r.Uint8x16(...A)},r.Uint8x16.and=function(e,t){for(var i=[],a=0;a<16;++a)i[a]=e.s_[a]&t.s_[a];return new r.Uint8x16(...i)},r.Uint8x16.or=function(e,t){for(var i=[],a=0;a<16;++a)i[a]=e.s_[a]|t.s_[a];return new r.Uint8x16(...i)},r.Uint8x16.shiftLeftByScalar=function(e,t){for(var i=[],a=0;a<16;++a)i[a]=e.s_[a]<<t;return new r.Uint8x16(...i)},r.Uint8x16.shiftRightByScalar=function(e,t){for(var i=[],a=0;a<16;++a)i[a]=e.s_[a]>>>t;return new r.Uint8x16(...i)}),e.exports=class{constructor(){this.ENC_SHUFFLE=r.Int8x16(10,11,9,10,7,8,6,7,4,5,3,4,1,2,0,1),this.ENC_LUT="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",this.ENC_LUT_SIMD=[r.Uint8x16.splat(0),r.Uint8x16.splat(0),r.Uint8x16.splat(0),r.Uint8x16.splat(0)];for(let t=0;t<4;t++){var e=this.ENC_LUT.substring(16*t,16*(t+1));this.ENC_LUT_SIMD[t]=r.Uint8x16(...Array.from(e).map(e=>e.charCodeAt(0)))}this.DEC_DELTA_ASSO=r.Uint8x16(1,1,1,1,1,1,1,1,0,0,0,0,0,15,0,15),this.DEC_DELTA_VALUES=r.Int8x16(0,0,0,19,4,191,191,185,185,0,16,195,191,191,185,185),this.DEC_SHUFFLE=r.Int8x16(-1,-1,-1,-1,12,13,14,8,9,10,4,5,6,0,1,2),this.SCALAR_ENC_LUT="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",this.SCALAR_DEC_LUT={};for(let e=0;e<this.SCALAR_ENC_LUT.length;e++)this.SCALAR_DEC_LUT[this.SCALAR_ENC_LUT.charAt(e)]=e;this.SCALAR_DEC_LUT["="]=0}_scalar_encode(e){let t="";for(let s=0;s<e.length;s+=3){var r=e[s],i=s+1<e.length?e[s+1]:0,a=s+2<e.length?e[s+2]:0;t+=this.SCALAR_ENC_LUT[r>>2]+this.SCALAR_ENC_LUT[(3&r)<<4|i>>4],s+1<e.length?t+=this.SCALAR_ENC_LUT[(15&i)<<2|a>>6]:t+="=",s+2<e.length?t+=this.SCALAR_ENC_LUT[63&a]:t+="="}return t}encode(e){var t=e.length,r=4*Math.ceil(t/3),i=new Uint8Array(r);let a=0,s=0;for(;a+12<=t;){var n=e.subarray(a,a+12),o=new Uint8Array(16);o[0]=n[0]>>2,o[1]=(3&n[0])<<4|n[1]>>4,o[2]=(15&n[1])<<2|n[2]>>6,o[3]=63&n[2],o[4]=n[3]>>2,o[5]=(3&n[3])<<4|n[4]>>4,o[6]=(15&n[4])<<2|n[5]>>6,o[7]=63&n[5],o[8]=n[6]>>2,o[9]=(3&n[6])<<4|n[7]>>4,o[10]=(15&n[7])<<2|n[8]>>6,o[11]=63&n[8],o[12]=n[9]>>2,o[13]=(3&n[9])<<4|n[10]>>4,o[14]=(15&n[10])<<2|n[11]>>6,o[15]=63&n[11];for(let e=0;e<16;e++)i[s+e]=this.SCALAR_ENC_LUT.charCodeAt(o[e]);a+=12,s+=16}let c=(new TextDecoder).decode(i.subarray(0,s));return a<t&&(c+=this._scalar_encode(e.subarray(a))),c}_scalar_decode(e){e=e.replace(/=+$/,"");var t=Math.floor(3*e.length/4),r=new Uint8Array(t);let i=0;for(let c=0;c<e.length;c+=4){var a=this.SCALAR_DEC_LUT[e[c]],s=this.SCALAR_DEC_LUT[e[c+1]],n=c+2<e.length?this.SCALAR_DEC_LUT[e[c+2]]:0,o=c+3<e.length?this.SCALAR_DEC_LUT[e[c+3]]:0;r[i++]=a<<2|s>>4,i<t&&(r[i++]=(15&s)<<4|n>>2),i<t&&(r[i++]=(3&n)<<6|o)}return r}decode(e){var t=e.length;if(t%4!=0)throw new Error("Invalid Base64 string length.");var r=(e.match(/=/g)||[]).length,i=new Uint8Array(3*t/4-r);let a=0,s=0;for(var n;a+16<=t-r;){var o=Array.from(e.substring(a,a+16)).map(e=>this.SCALAR_DEC_LUT[e]),c=new Uint8Array(12);c[0]=o[0]<<2|o[1]>>4,c[1]=(15&o[1])<<4|o[2]>>2,c[2]=(3&o[2])<<6|o[3],c[3]=o[4]<<2|o[5]>>4,c[4]=(15&o[5])<<4|o[6]>>2,c[5]=(3&o[6])<<6|o[7],c[6]=o[8]<<2|o[9]>>4,c[7]=(15&o[9])<<4|o[10]>>2,c[8]=(3&o[10])<<6|o[11],c[9]=o[12]<<2|o[13]>>4,c[10]=(15&o[13])<<4|o[14]>>2,c[11]=(3&o[14])<<6|o[15],i.set(c,s),a+=16,s+=12}return a<t&&(n=this._scalar_decode(e.substring(a)),i.set(n,s)),i}}},function(e,t,r){r.r(t),t=r(0),"undefined"!=typeof window?(window.Database=t.Database,window.Collection=t.Collection,window.Document=t.Document,window.QueryOperators=t.QueryOperators,window.AggregationPipeline=t.AggregationPipeline,window.MigrationManager=t.MigrationManager,window.PerformanceMonitor=t.PerformanceMonitor,window.LacertaDBError=t.LacertaDBError,window.lacertaDBInstance=lacertaDBInstance):(self.Database=t.Database,self.Collection=t.Collection,self.Document=t.Document,self.QueryOperators=t.QueryOperators,self.AggregationPipeline=t.AggregationPipeline,self.MigrationManager=t.MigrationManager,self.PerformanceMonitor=t.PerformanceMonitor,self.LacertaDBError=t.LacertaDBError,self.lacertaDBInstance=lacertaDBInstance)}]);
|
|
8
|
+
let rt=new class{constructor(e={}){this.options={compression:e.compression||!1,deduplication:!1!==e.deduplication,shareArrayBuffers:!1!==e.shareArrayBuffers,simdOptimization:!1!==e.simdOptimization,detectCircular:!1!==e.detectCircular,serializeFunctions:e.serializeFunctions||!1,preservePropertyDescriptors:!1!==e.preservePropertyDescriptors,memoryPoolSize:e.memoryPoolSize||65536,...e},this.pool=new Xe(this.options.memoryPoolSize),this.detector=new et,this.simdProcessor=new Ze,this.refs=new Map,this.circularRefs=new Set,this.strings=new Map,this.buffers=new Map,this.encoder=new TextEncoder,this.decoder=new TextDecoder}serialize(e){return this.resetState(),this.pool.writeU32(1413632565),this.pool.writeU8(5),this.options.detectCircular&&this.detectCircularReferences(e,new WeakSet),this.writeValue(e),this.pool.getResult()}resetState(){this.pool.reset(),this.refs.clear(),this.circularRefs.clear(),this.strings.clear(),this.buffers.clear()}detectCircularReferences(e,t){if("object"==typeof e&&null!=e)if(t.has(e))this.circularRefs.add(e);else{t.add(e);try{if(Array.isArray(e))for(let r=0;r<e.length;r++)r in e&&this.detectCircularReferences(e[r],t);else if(e instanceof Map)for(var[r,i]of e)this.detectCircularReferences(r,t),this.detectCircularReferences(i,t);else if(e instanceof Set)for(var a of e)this.detectCircularReferences(a,t);else for(var s in e)if(e.hasOwnProperty(s))try{this.detectCircularReferences(e[s],t)}catch(r){}}finally{t.delete(e)}}}writeValue(e){if(this.options.detectCircular&&"object"==typeof e&&null!=e&&this.circularRefs.has(e)){if(void 0!==(t=this.refs.get(e)))return this.pool.writeU8(Le),void this.pool.writeVarint(t);this.refs.set(e,this.refs.size)}if(this.options.deduplication&&"object"==typeof e&&null!=e&&!this.circularRefs.has(e)){if(void 0!==(t=this.refs.get(e)))return this.pool.writeU8(Pe),void this.pool.writeVarint(t);this.refs.set(e,this.refs.size)}if(this.options.deduplication&&"string"==typeof e&&3<e.length){if(void 0!==(t=this.strings.get(e)))return this.pool.writeU8(q),void this.pool.writeVarint(t);this.strings.set(e,this.strings.size)}if(this.options.shareArrayBuffers&&e instanceof ArrayBuffer){if(void 0!==(t=this.buffers.get(e)))return this.pool.writeU8(be),void this.pool.writeVarint(t);this.buffers.set(e,this.buffers.size)}var t,r=this.detector.detect(e);switch(t=(this.pool.writeU8(r),r&i)){case a:break;case s:this.writeNumber(e,r);break;case n:this.writeBigInt(e,r);break;case o:this.writeString(e,r);break;case c:this.writeArray(e,r);break;case h:this.writeObject(e,r);break;case l:this.writeTypedArray(e,r);break;case d:this.writeArrayBuffer(e,r);break;case u:this.writeCollection(e,r);break;case p:this.writeDate(e,r);break;case f:this.writeError(e,r);break;case m:this.writeRegExp(e);break;case w:this.writeBinary(e,r);break;case y:this.writeSpecial(e,r);break;case g:this.writeExtension(e,r)}}writeNumber(e,t){switch(t){case S:this.pool.writeU8(e);break;case U:this.pool.writeI16(e);break;case E:this.pool.writeI32(e);break;case k:this.pool.writeU32(e);break;case D:this.pool.writeF32(e);break;case x:this.pool.writeF64(e);break;case z:var r=e<0;this.pool.writeVarint(Math.abs(e)),this.pool.writeU8(r?1:0)}}writeBigInt(e,t){switch(t){case O:case M:this.pool.writeBigInt64(e);break;case T:case P:this.writeLargeBigInt(e)}}writeLargeBigInt(e){var t,r=BigInt(e).toString(16).replace("-",""),i=[];for(let e=r.length-2;0<=e;e-=2)i.push(parseInt(r.substr(e,2),16));for(t of(r.length%2&&i.push(parseInt(r[0],16)),this.pool.writeVarint(i.length),i))this.pool.writeU8(t)}writeString(e,t){var r=e.length;switch(t){case L:break;case F:case j:this.pool.writeU8(r);for(let t=0;t<r;t++)this.pool.writeU8(e.charCodeAt(t));break;case R:this.pool.writeVarint(r);for(let t=0;t<r;t++)this.pool.writeU8(e.charCodeAt(t));break;case N:case $:case K:var i=this.encoder.encode(e);t==N||t==$?this.pool.writeU8(i.length):this.pool.writeVarint(i.length),this.pool.writeBulkAligned(i,1)}}writeArray(e,t){var r=e.length;switch(t){case H:break;case W:this.pool.writeVarint(r);for(let t=0;t<r;t++)this.writeValue(e[t]);break;case Y:this.writeSparseArray(e);break;case G:case Q:case J:case X:case Z:this.pool.writePackedArray(e,t)}}writeSparseArray(e){var t=e.length,r=new Uint32Array(t),i=[];let a=0;for(let s=0;s<t;s++)s in e&&(r[a]=s,i[a]=e[s],a++);this.pool.writeVarint(t),this.pool.writeVarint(a);for(let e=0;e<a;e++)this.pool.writeVarint(r[e]),this.writeValue(i[e])}writeObject(e,t){if(t!=ee)switch(t){case re:case te:this.writeSimpleObject(e);break;case ae:this.writeObjectWithDescriptors(e);break;case se:this.writeObjectWithMethods(e);break;case ie:this.writeConstructorObject(e)}}writeSimpleObject(e){var t,r=Object.keys(e).filter(t=>{try{return"function"!=typeof e[t]||this.options.serializeFunctions}catch(t){return!1}});for(t of(r.sort(),this.pool.writeVarint(r.length),r))this.writeValue(t),this.writeValue(e[t])}writeObjectWithDescriptors(e){var t,r=Object.getOwnPropertyNames(e),i=Object.getOwnPropertySymbols(e);r=[...r,...i].filter(t=>{try{var r=Object.getOwnPropertyDescriptor(e,t);return r&&(this.options.serializeFunctions||!r.get&&!r.set&&"function"!=typeof r.value)}catch(t){return!1}});for(t of(this.pool.writeVarint(r.length),r)){this.writeValue(t);var a=Object.getOwnPropertyDescriptor(e,t);let r=0;a.enumerable&&(r|=1),a.writable&&(r|=2),a.configurable&&(r|=4),a.get&&(r|=8),a.set&&(r|=16),this.pool.writeU8(r),a.get||a.set?(a.get&&this.writeValue(a.get),a.set&&this.writeValue(a.set)):this.writeValue(a.value)}}writeObjectWithMethods(e){var t,r,i,a,s=[];for(t of Object.keys(e))try{var n=e[t];"function"==typeof n?this.options.serializeFunctions?s.push([t,n,!0]):s.push([t,null,!1]):s.push([t,n,!1])}catch(e){}for([r,i,a]of(this.pool.writeVarint(s.length),s))this.writeValue(r),this.pool.writeU8(a?1:0),a&&this.options.serializeFunctions?(this.writeValue(i.toString()),this.writeValue(i.name||"")):a?this.pool.writeU8($e):this.writeValue(i)}writeConstructorObject(e){this.writeValue(e.constructor.name||"");var t,r=Object.keys(e).filter(t=>{try{return"function"!=typeof e[t]||this.options.serializeFunctions}catch(t){return!1}});for(t of(this.pool.writeVarint(r.length),r))this.writeValue(t),this.writeValue(e[t])}writeTypedArray(e,t){var r=e.buffer,i=e.byteOffset,a=e.length;if(this.options.shareArrayBuffers){if(void 0!==(s=this.buffers.get(r)))return this.pool.writeU8(1),this.pool.writeVarint(s),this.pool.writeVarint(i),void this.pool.writeVarint(a);this.buffers.set(r,this.buffers.size)}this.pool.writeU8(0),this.pool.writeVarint(i),this.pool.writeVarint(a);var s,n=a*(s=qe[t]||1);if(t==me||t==we)for(let t=0;t<a;t++)this.pool.writeBigInt64(e[t]);else t=new Uint8Array(r,i,n),this.pool.writeBulkAligned(t,s)}writeArrayBuffer(e,t){e=new Uint8Array(e),this.pool.writeVarint(e.length),this.pool.writeBulkAligned(e,1)}writeCollection(e,t){switch(t){case Ae:for(var[r,i]of(this.pool.writeVarint(e.size),e))this.writeValue(r),this.writeValue(i);break;case _e:for(var a of(this.pool.writeVarint(e.size),e))this.writeValue(a)}}writeDate(e,t){t==Se&&this.pool.writeF64(e.getTime())}writeError(e,t){if(this.writeValue(e.message||""),this.writeValue(e.stack||""),t==Ce&&e.errors)for(var r of(this.pool.writeVarint(e.errors.length),e.errors))this.writeValue(r)}writeRegExp(e){this.writeValue(e.source),this.writeValue(e.flags)}writeBinary(e,t){this.pool.writeVarint(0),this.pool.writeVarint(0)}writeSpecial(e,t){switch(t){case Fe:var r=e.description;this.writeValue(r);break;case Ne:break;case je:r=Symbol.keyFor(e),this.writeValue(r||"");break;case Re:r=He.get(e),this.writeValue(r||"")}}writeExtension(e,t){}deserialize(e){if(this.buffer=new Uint8Array(e),this.view=new DataView(this.buffer.buffer,this.buffer.byteOffset),this.pos=0,this.deserializeRefs=[],this.deserializeStrings=[],this.deserializeBuffers=[],1413632565!==this.readU32())throw new Error("Invalid TurboSerial data");if(5!==(e=this.readU8()))throw new Error("Unsupported version: "+e);return this.readValue()}readValue(){if(this.pos>=this.buffer.length)throw new Error("Unexpected end of buffer");var e=this.readU8();if(e==Pe||e==Le){var t=this.readVarint();if(t>=this.deserializeRefs.length)throw new Error("Invalid reference: "+t);return this.deserializeRefs[t]}if(e==q){if((t=this.readVarint())>=this.deserializeStrings.length)throw new Error("Invalid string reference: "+t);return this.deserializeStrings[t]}if(e==be){if((t=this.readVarint())>=this.deserializeBuffers.length)throw new Error("Invalid buffer reference: "+t);return this.deserializeBuffers[t]}let r,b=!1;switch(t=e&i){case h:case c:case u:b=!0}if(b){switch(t){case c:r=[];break;case u:e==Ae?r=new Map:e==_e&&(r=new Set);break;case h:r={}}switch(r&&this.deserializeRefs.push(r),t){case c:this.fillArray(r,e);break;case h:this.fillObject(r,e);break;case u:this.fillCollection(r,e)}}else{switch(t){case a:r=this.readPrimitive(e);break;case s:r=this.readNumber(e);break;case n:r=this.readBigInt(e);break;case o:r=this.readString(e);break;case l:r=this.readTypedArray(e);break;case d:r=this.readArrayBuffer(e);break;case p:r=this.readDate(e);break;case f:r=this.readError(e);break;case m:r=this.readRegExp();break;case w:r=this.readBinary(e);break;case y:r=this.readSpecial(e);break;case g:r=this.readExtension(e);break;default:throw new Error("Unknown type: 0x"+e.toString(16))}"object"!=typeof r||null==r||b||this.deserializeRefs.push(r)}return r}fillArray(e,t){switch(t){case H:break;case W:var r=this.readVarint();for(let t=0;t<r;t++)e[t]=this.readValue();break;case Y:var i=this.readVarint(),a=this.readVarint();e.length=i;for(let t=0;t<a;t++)e[this.readVarint()]=this.readValue();break;case G:case Q:case J:case X:case Z:i=this.readPackedArrayData(t),e.push(...i)}}fillObject(e,t){if(t!=ee)switch(t){case re:case te:this.fillSimpleObject(e);break;case ae:this.fillObjectWithDescriptors(e);break;case se:this.fillObjectWithMethods(e);break;case ie:this.fillConstructorObject(e)}}fillSimpleObject(e){var t=this.readVarint();for(let r=0;r<t;r++)e[this.readValue()]=this.readValue()}fillObjectWithDescriptors(e){var t=this.readVarint();for(let n=0;n<t;n++){var r=this.readValue(),i={enumerable:!!(1&(s=this.readU8())),writable:!!(2&s),configurable:!!(4&s)},a=!!(8&s),s=!!(16&s);a||s?(a&&(i.get=this.readValue()),s&&(i.set=this.readValue())):i.value=this.readValue(),Object.defineProperty(e,r,i)}}fillObjectWithMethods(e){var t=this.readVarint();for(let a=0;a<t;a++){var r=this.readValue();if(this.readU8())if(this.options.serializeFunctions){var i=this.readValue();this.readValue();try{e[r]=new Function("return "+i)()}catch(t){e[r]=function(){throw new Error("Function deserialization failed")}}}else this.readU8()===$e&&(e[r]=function(){throw new Error("Function not serialized")});else e[r]=this.readValue()}}fillConstructorObject(e){var t=this.readValue(),r=this.readVarint();for(let t=0;t<r;t++)e[this.readValue()]=this.readValue();Object.defineProperty(e,"__constructorName",{value:t,enumerable:!1,writable:!1,configurable:!0})}fillCollection(e,t){var r=this.readVarint();switch(t){case Ae:for(let t=0;t<r;t++){var i=this.readValue(),a=this.readValue();e.set(i,a)}break;case _e:for(let t=0;t<r;t++)e.add(this.readValue())}}readPrimitive(e){switch(e){case b:return null;case v:return;case A:return!1;case _:return!0;default:throw new Error("Unknown primitive: 0x"+e.toString(16))}}readNumber(e){switch(e){case S:return this.view.getInt8(this.pos++);case U:return this.readI16();case E:return this.readI32();case k:return this.readU32();case D:return this.readF32();case x:return this.readF64();case V:return NaN;case I:return 1/0;case B:return-1/0;case C:return-0;case z:var t=this.readVarint();return this.readU8()?-t:t;default:throw new Error("Unknown number type: 0x"+e.toString(16))}}readBigInt(e){switch(e){case O:case M:return this.readBigInt64();case T:case P:return this.readLargeBigInt(e==P);default:throw new Error("Unknown BigInt type: 0x"+e.toString(16))}}readLargeBigInt(e){var t=this.readVarint(),r=(this.ensureBytes(t),this.buffer.subarray(this.pos,this.pos+t));this.pos+=t;let i="";for(let e=r.length-1;0<=e;e--)i+=r[e].toString(16).padStart(2,"0");return t=BigInt("0x"+i),e?-t:t}readString(e){if(e==L)return"";let t,r;switch(e){case F:case j:case N:case $:t=this.readU8();break;default:t=this.readVarint()}if(this.ensureBytes(t),e==F||e==j||e==R){r="";for(let e=0;e<t;e++)r+=String.fromCharCode(this.readU8())}else e=this.buffer.subarray(this.pos,this.pos+t),this.pos+=t,r=this.decoder.decode(e);return this.deserializeStrings.push(r),r}readPackedArrayData(e){var t=this.readVarint(),r=new Array(t),i=qe[e];if(!i)throw new Error("Unknown packed array type: 0x"+e.toString(16));switch(this.alignPos(Math.min(i,8)),this.ensureBytes(t*i),e){case G:for(let e=0;e<t;e++)r[e]=this.view.getInt8(this.pos++);break;case Q:for(let e=0;e<t;e++)r[e]=this.view.getInt16(this.pos,!0),this.pos+=2;break;case J:for(let e=0;e<t;e++)r[e]=this.view.getInt32(this.pos,!0),this.pos+=4;break;case X:for(let e=0;e<t;e++)r[e]=this.view.getFloat32(this.pos,!0),this.pos+=4;break;case Z:for(let e=0;e<t;e++)r[e]=this.view.getFloat64(this.pos,!0),this.pos+=8}return r}readTypedArray(e){if(this.readU8()){var t=this.readVarint(),r=this.readVarint(),i=this.readVarint();if(t>=this.deserializeBuffers.length)throw new Error("Invalid buffer reference: "+t);return t=this.deserializeBuffers[t],this.createTypedArray(e,t,r,i)}this.readVarint();var a=this.readVarint();t=qe[e]||1;if(e!=me&&e!=we)return r=a*t,this.alignPos(t),this.ensureBytes(r),i=this.buffer.subarray(this.pos,this.pos+r),this.pos+=r,t=new ArrayBuffer(r),new Uint8Array(t).set(i),this.deserializeBuffers.push(t),this.createTypedArray(e,t,0,a);this.alignPos(8);var s=[];for(let e=0;e<a;e++)s.push(this.readBigInt64());return new(e==me?BigInt64Array:BigUint64Array)(s)}createTypedArray(e,t,r,i){var a={[ne]:Uint8Array,[oe]:Int8Array,[ce]:Uint8ClampedArray,[he]:Uint16Array,[le]:Int16Array,[de]:Uint32Array,[ue]:Int32Array,[pe]:Float32Array,[fe]:Float64Array,[me]:BigInt64Array,[we]:BigUint64Array,[ye]:DataView}[e];if(a)return new a(t,r,i);throw new Error("Unknown typed array type: 0x"+e.toString(16))}readArrayBuffer(e){var t=this.readVarint(),r=(this.ensureBytes(t),this.buffer.subarray(this.pos,this.pos+t));this.pos+=t,t=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength);return this.deserializeBuffers.push(t),t}readDate(e){switch(e){case Se:return new Date(this.readF64());case Ue:return new Date(NaN);default:throw new Error("Unknown date type: 0x"+e.toString(16))}}readError(e){var t=this.readValue(),r=this.readValue();let i;var a={[Ee]:Error,[ke]:EvalError,[De]:RangeError,[xe]:ReferenceError,[Ve]:SyntaxError,[Ie]:TypeError,[Be]:URIError}[e]||Error;if(e==Ce){var s=this.readVarint(),n=[];for(let e=0;e<s;e++)n.push(this.readValue());i=new AggregateError(n,t)}else i=new a(t);return r&&(i.stack=r),i}readRegExp(){var e=this.readValue(),t=this.readValue();return new RegExp(e,t)}readBinary(e){return{_type:"Binary",size:this.readVarint(),typeStr:this.readVarint()}}readSpecial(e){switch(e){case Fe:var t=this.readValue();return Symbol(t);case Ne:return Symbol();case je:return t=this.readValue(),Symbol.for(t);case Re:return t=this.readValue(),We.get(t)||Symbol(t);default:throw new Error("Unknown special type: 0x"+e.toString(16))}}readExtension(e){if(e!==$e)throw new Error("Unknown extension type: 0x"+e.toString(16));return function(){throw new Error("Function not serialized")}}readU8(){return this.ensureBytes(1),this.buffer[this.pos++]}readI16(){this.alignPos(2),this.ensureBytes(2);var e=this.view.getInt16(this.pos,!0);return this.pos+=2,e}readU16(){this.alignPos(2),this.ensureBytes(2);var e=this.view.getUint16(this.pos,!0);return this.pos+=2,e}readI32(){this.alignPos(4),this.ensureBytes(4);var e=this.view.getInt32(this.pos,!0);return this.pos+=4,e}readU32(){this.alignPos(4),this.ensureBytes(4);var e=this.view.getUint32(this.pos,!0);return this.pos+=4,e}readF32(){this.alignPos(4),this.ensureBytes(4);var e=this.view.getFloat32(this.pos,!0);return this.pos+=4,e}readF64(){this.alignPos(8),this.ensureBytes(8);var e=this.view.getFloat64(this.pos,!0);return this.pos+=8,e}readBigInt64(){this.alignPos(8),this.ensureBytes(8);var e=this.view.getBigInt64(this.pos,!0);return this.pos+=8,e}readVarint(){let e=0,t=0;for(var r;this.ensureBytes(1),e|=(127&(r=this.buffer[this.pos++]))<<t,t+=7,128&r;);return e>>>0}alignPos(e){e=e-1|0,this.pos=(this.pos+e&~e)>>>0}ensureBytes(e){if(this.pos+e>this.buffer.length)throw new Error(`Buffer underflow: need ${e}, available `+(this.buffer.length-this.pos))}}({compression:!0,deduplication:!0,shareArrayBuffers:!0,simdOptimization:!0,detectCircular:!0}),it=new tt.a;class at{constructor(){this._queue=[],this._locked=!1}acquire(){return new Promise(e=>{this._queue.push(e),this._dispatch()})}release(){this._locked=!1,this._dispatch()}async runExclusive(e){var t=await this.acquire();try{return await e()}finally{t()}}_dispatch(){this._locked||0===this._queue.length||(this._locked=!0,this._queue.shift()(()=>this.release()))}}class st extends Error{constructor(e,t,r){super(e),this.name="LacertaDBError",this.code=t,this.originalError=r||null,this.timestamp=(new Date).toISOString()}}class nt{async compress(e){if(!(e instanceof Uint8Array))throw new TypeError("Input must be Uint8Array");try{var t=new Response(e).body.pipeThrough(new CompressionStream("deflate")),r=await new Response(t).arrayBuffer();return new Uint8Array(r)}catch(e){throw new st("Compression failed","COMPRESSION_FAILED",e)}}async decompress(e){if(!(e instanceof Uint8Array))throw new TypeError("Input must be Uint8Array");try{var t=new Response(e).body.pipeThrough(new DecompressionStream("deflate")),r=await new Response(t).arrayBuffer();return new Uint8Array(r)}catch(e){throw new st("Decompression failed","DECOMPRESSION_FAILED",e)}}compressSync(e){if(e instanceof Uint8Array)return e;throw new TypeError("Input must be Uint8Array")}decompressSync(e){if(e instanceof Uint8Array)return e;throw new TypeError("Input must be Uint8Array")}}class ot{async encrypt(e,t){if(!(e instanceof Uint8Array))throw new TypeError("Data must be Uint8Array");try{var r=crypto.getRandomValues(new Uint8Array(16)),i=crypto.getRandomValues(new Uint8Array(12)),a=await crypto.subtle.importKey("raw",(new TextEncoder).encode(t),"PBKDF2",!1,["deriveKey"]),s=await crypto.subtle.deriveKey({name:"PBKDF2",salt:r,iterations:6e5,hash:"SHA-512"},a,{name:"AES-GCM",length:256},!1,["encrypt"]),n=await crypto.subtle.encrypt({name:"AES-GCM",iv:i},s,e),o=new Uint8Array(r.length+i.length+n.byteLength);return o.set(r,0),o.set(i,r.length),o.set(new Uint8Array(n),r.length+i.length),o}catch(e){throw new st("Encryption failed","ENCRYPTION_FAILED",e)}}async decrypt(e,t){if(!(e instanceof Uint8Array))throw new TypeError("Data must be Uint8Array");try{var r=e.slice(0,16),i=e.slice(16,28),a=e.slice(28),s=await crypto.subtle.importKey("raw",(new TextEncoder).encode(t),"PBKDF2",!1,["deriveKey"]),n=await crypto.subtle.deriveKey({name:"PBKDF2",salt:r,iterations:6e5,hash:"SHA-512"},s,{name:"AES-GCM",length:256},!1,["decrypt"]),o=await crypto.subtle.decrypt({name:"AES-GCM",iv:i},n,a);return new Uint8Array(o)}catch(e){throw new st("Decryption failed. This may be due to an incorrect password or corrupted data.","DECRYPTION_FAILED",e)}}}class ct{async saveAttachments(e,t,r,i){try{var a,s,n=[],o=await(await(await(await navigator.storage.getDirectory()).getDirectoryHandle(e,{create:!0})).getDirectoryHandle(t,{create:!0})).getDirectoryHandle(r,{create:!0});for([a,s]of i.entries()){var c=a+"_"+(s.name||"file"),h=await(await o.getFileHandle(c,{create:!0})).createWritable();let i;if(s.data instanceof Uint8Array)i=s.data;else if(s.data instanceof ArrayBuffer)i=new Uint8Array(s.data);else{if(!(s.data instanceof Blob))throw new TypeError("Unsupported attachment data type");i=new Uint8Array(await s.data.arrayBuffer())}var l=new Blob([i],{type:s.type||"application/octet-stream"}),d=(await h.write(l),await h.close(),`/${e}/${t}/${r}/`+c);n.push({path:d,name:s.name,type:s.type,size:i.byteLength,originalName:s.originalName||s.name})}return n}catch(i){throw new st("Failed to save attachments","ATTACHMENT_SAVE_FAILED",i)}}async getAttachments(e){var t,r=[],i=await navigator.storage.getDirectory();for(t of e)try{var a=t.path.split("/").filter(e=>e);let e=i;for(let t=0;t<a.length-1;t++)e=await e.getDirectoryHandle(a[t]);var s=await(await(await e.getFileHandle(a[a.length-1])).getFile()).arrayBuffer();r.push({name:t.originalName||t.name,type:t.type,data:new Uint8Array(s),size:t.size})}catch(e){console.error("Failed to get attachment: "+t.path,e)}return r}async deleteAttachments(e,t,r){try{await(await(await(await navigator.storage.getDirectory()).getDirectoryHandle(e)).getDirectoryHandle(t)).removeEntry(r,{recursive:!0})}catch(e){"NotFoundError"!==e.name&&console.error(`Failed to delete attachments for ${r}:`,e)}}static async prepareAttachment(e,t){let r;if(e instanceof File||e instanceof Blob){var i=await e.arrayBuffer();r=new Uint8Array(i)}else if(e instanceof ArrayBuffer)r=new Uint8Array(e);else{if(!(e instanceof Uint8Array))throw new TypeError("Unsupported file type for attachment");r=e}return{name:t||e.name||"unnamed",type:e.type||"application/octet-stream",data:r,originalName:e.name||t}}}class ht{constructor(){this.mutex=new at}openDatabase(e,t=1,r){return new Promise((i,a)=>{let s=indexedDB.open(e,t);s.onerror=()=>a(new st("Failed to open database","DATABASE_OPEN_FAILED",s.error)),s.onsuccess=()=>i(s.result),s.onupgradeneeded=e=>{r&&r(e.target.result,e.oldVersion,e.newVersion)}})}async performTransaction(e,t,r,i,a=3){return this.mutex.runExclusive(async()=>{let s;for(let n=0;n<a;n++)try{return await new Promise((a,s)=>{let n,o=e.transaction(t,r);o.oncomplete=()=>a(n),o.onerror=()=>s(o.error),o.onabort=()=>s(new Error("Transaction aborted"));try{var c=i(o);c instanceof Promise?c.then(e=>{n=e}).catch(s):n=c}catch(a){s(a)}})}catch(e){s=e,n<a-1&&await new Promise(e=>setTimeout(e,2**n*100))}throw new st("Transaction failed after retries","TRANSACTION_FAILED",s)})}_promisifyRequest(e){return new Promise((t,r)=>{let i=e();i.onsuccess=()=>t(i.result),i.onerror=()=>r(i.error)})}add(e,t,r,i){return this.performTransaction(e,[t],"readwrite",e=>{let a=e.objectStore(t);return this._promisifyRequest(()=>void 0!==i?a.add(r,i):a.add(r))})}put(e,t,r,i){return this.performTransaction(e,[t],"readwrite",e=>{let a=e.objectStore(t);return this._promisifyRequest(()=>void 0!==i?a.put(r,i):a.put(r))})}get(e,t,r){return this.performTransaction(e,[t],"readonly",e=>this._promisifyRequest(()=>e.objectStore(t).get(r)))}getAll(e,t,r,i){return this.performTransaction(e,[t],"readonly",e=>this._promisifyRequest(()=>e.objectStore(t).getAll(r,i)))}delete(e,t,r){return this.performTransaction(e,[t],"readwrite",e=>this._promisifyRequest(()=>e.objectStore(t).delete(r)))}clear(e,t){return this.performTransaction(e,[t],"readwrite",e=>this._promisifyRequest(()=>e.objectStore(t).clear()))}count(e,t,r){return this.performTransaction(e,[t],"readonly",e=>this._promisifyRequest(()=>e.objectStore(t).count(r)))}iterateCursorSafe(e,t,r,i="next",a){return this.performTransaction(e,[t],"readonly",e=>new Promise((s,n)=>{let o=[],c=e.objectStore(t).openCursor(a,i);c.onsuccess=e=>{if(e=e.target.result)try{var t=r(e.value,e.key);!1!==t?(o.push(t),e.continue()):s(o)}catch(e){n(e)}else s(o)},c.onerror=()=>n(c.error)}))}}class lt{constructor(e={},t={}){this._id=e._id||this.generateId(),this._created=e._created||Date.now(),this._modified=e._modified||Date.now(),this._permanent=e._permanent||t.permanent||!1,this._encrypted=e._encrypted||t.encrypted||!1,this._compressed=e._compressed||t.compressed||!1,this._attachments=e._attachments||[],this.data=e.data||{},this.packedData=e.packedData||null,this.compression=new nt,this.encryption=new ot,this.password=t.password||null}generateId(){return`doc_${Date.now()}_`+Math.random().toString(36).substring(2,11)}async pack(){try{let e=rt.serialize(this.data);return this._compressed&&(e=await this.compression.compress(e)),this._encrypted&&this.password&&(e=await this.encryption.encrypt(e,this.password)),this.packedData=e}catch(e){throw new st("Failed to pack document","PACK_FAILED",e)}}async unpack(){try{let e=this.packedData;return this._encrypted&&this.password&&(e=await this.encryption.decrypt(e,this.password)),this._compressed&&(e=await this.compression.decompress(e)),this.data=rt.deserialize(e),this.data}catch(e){throw new st("Failed to unpack document","UNPACK_FAILED",e)}}packSync(){let e=rt.serialize(this.data);if(this._compressed&&(e=this.compression.compressSync(e)),this._encrypted)throw new st("Synchronous encryption not supported","SYNC_ENCRYPT_NOT_SUPPORTED");return this.packedData=e}unpackSync(){let e=this.packedData;if(this._encrypted)throw new st("Synchronous decryption not supported","SYNC_DECRYPT_NOT_SUPPORTED");return this._compressed&&(e=this.compression.decompressSync(e)),this.data=rt.deserialize(e),this.data}objectOutput(e=!1){var t={_id:this._id,_created:this._created,_modified:this._modified,_permanent:this._permanent,...this.data};return e&&0<this._attachments.length&&(t._attachments=this._attachments),t}databaseOutput(){return{_id:this._id,_created:this._created,_modified:this._modified,_permanent:this._permanent,_encrypted:this._encrypted,_compressed:this._compressed,_attachments:this._attachments,packedData:this.packedData}}}class dt{constructor(e,t={}){this.name=e,this.sizeKB=t.sizeKB||0,this.length=t.length||0,this.createdAt=t.createdAt||Date.now(),this.modifiedAt=t.modifiedAt||Date.now(),this.documentSizes=t.documentSizes||{},this.documentModifiedAt=t.documentModifiedAt||{},this.documentPermanent=t.documentPermanent||{},this.documentAttachments=t.documentAttachments||{}}addDocument(e,t,r,i){this.documentSizes[e]=t,this.documentModifiedAt[e]=Date.now(),r&&(this.documentPermanent[e]=!0),0<i&&(this.documentAttachments[e]=i),this.sizeKB+=t,this.length++,this.modifiedAt=Date.now()}updateDocument(e,t,r,i){var a=this.documentSizes[e]||0;this.sizeKB=this.sizeKB-a+t,this.documentSizes[e]=t,this.documentModifiedAt[e]=Date.now(),r?this.documentPermanent[e]=!0:delete this.documentPermanent[e],0<i?this.documentAttachments[e]=i:delete this.documentAttachments[e],this.modifiedAt=Date.now()}removeDocument(e){var t=this.documentSizes[e]||0;this.documentSizes[e]&&(this.sizeKB-=t,this.length--),delete this.documentSizes[e],delete this.documentModifiedAt[e],delete this.documentPermanent[e],delete this.documentAttachments[e],this.modifiedAt=Date.now()}getOldestNonPermanentDocuments(e){return Object.entries(this.documentModifiedAt).filter(([e])=>!this.documentPermanent[e]).sort(([,e],[,t])=>e-t).slice(0,e).map(([e])=>e)}}class ut{constructor(e,t={}){this.name=e,this.collections=t.collections||{},this.totalSizeKB=t.totalSizeKB||0,this.totalLength=t.totalLength||0,this.modifiedAt=t.modifiedAt||Date.now()}static load(e){var t=localStorage.getItem(`lacertadb_${e}_metadata`);if(t)try{var r=it.decode(t),i=rt.deserialize(r);return new ut(e,i)}catch(e){console.error("Failed to load metadata:",e)}return new ut(e)}save(){var e=`lacertadb_${this.name}_metadata`;try{var t={collections:this.collections,totalSizeKB:this.totalSizeKB,totalLength:this.totalLength,modifiedAt:this.modifiedAt},r=rt.serialize(t),i=it.encode(r);localStorage.setItem(e,i)}catch(e){if("QuotaExceededError"===e.name)throw new st("Storage quota exceeded for metadata","QUOTA_EXCEEDED",e);throw new st("Failed to save metadata","METADATA_SAVE_FAILED",e)}}setCollection(e){this.collections[e.name]={sizeKB:e.sizeKB,length:e.length,createdAt:e.createdAt,modifiedAt:e.modifiedAt,documentSizes:e.documentSizes,documentModifiedAt:e.documentModifiedAt,documentPermanent:e.documentPermanent,documentAttachments:e.documentAttachments},this.recalculate(),this.save()}removeCollection(e){delete this.collections[e],this.recalculate(),this.save()}recalculate(){for(var e in this.totalSizeKB=0,this.totalLength=0,this.collections)e=this.collections[e],this.totalSizeKB+=e.sizeKB,this.totalLength+=e.length;this.modifiedAt=Date.now()}}class pt{constructor(e,t={}){this.dbName=e,this.sizeLimitKB=null!=t.sizeLimitKB?t.sizeLimitKB:1/0,e=this.sizeLimitKB===1/0?0:.8*this.sizeLimitKB,this.bufferLimitKB=null!=t.bufferLimitKB?t.bufferLimitKB:e,this.freeSpaceEvery=t.freeSpaceEvery||1e4}static load(e){var t=localStorage.getItem(`lacertadb_${e}_settings`);if(t)try{var r=it.decode(t),i=rt.deserialize(r);return new pt(e,i)}catch(e){console.error("Failed to load settings:",e)}return new pt(e)}save(){var e=`lacertadb_${this.dbName}_settings`,t={sizeLimitKB:this.sizeLimitKB,bufferLimitKB:this.bufferLimitKB,freeSpaceEvery:this.freeSpaceEvery};t=rt.serialize(t),t=it.encode(t);localStorage.setItem(e,t)}updateSettings(e){Object.assign(this,e),this.save()}}class ft{constructor(e){this.dbName=e,this.keyPrefix=`lacertadb_${e}_quickstore_`,this.indexKey=this.keyPrefix+"index"}_readIndex(){var e=localStorage.getItem(this.indexKey);if(!e)return[];try{var t=it.decode(e);return rt.deserialize(t)}catch{return[]}}_writeIndex(e){e=rt.serialize(e),e=it.encode(e),localStorage.setItem(this.indexKey,e)}add(e,t){var r=this.keyPrefix+"data_"+e;try{var i=rt.serialize(t),a=it.encode(i),s=(localStorage.setItem(r,a),this._readIndex());return s.includes(e)||(s.push(e),this._writeIndex(s)),!0}catch(e){if("QuotaExceededError"===e.name)throw new st("QuickStore quota exceeded","QUOTA_EXCEEDED",e);return!1}}get(e){if(e=this.keyPrefix+"data_"+e,e=localStorage.getItem(e))try{var t=it.decode(e);return rt.deserialize(t)}catch(e){console.error("Failed to parse QuickStore data:",e)}return null}update(e,t){return this.add(e,t)}delete(e){var t=this.keyPrefix+"data_"+e;localStorage.removeItem(t);let r=this._readIndex();t=r.length,(r=r.filter(t=>t!==e)).length<t&&this._writeIndex(r)}getAll(){return this._readIndex().map(e=>{var t=this.get(e);return t?{_id:e,...t}:null}).filter(Boolean)}clear(){var e;for(e of this._readIndex())localStorage.removeItem(this.keyPrefix+"data_"+e);localStorage.removeItem(this.indexKey)}}let mt=new class{constructor(){this.operators={$eq:(e,t)=>e===t,$ne:(e,t)=>e!==t,$gt:(e,t)=>t<e,$gte:(e,t)=>t<=e,$lt:(e,t)=>e<t,$lte:(e,t)=>e<=t,$in:(e,t)=>Array.isArray(t)&&t.includes(e),$nin:(e,t)=>Array.isArray(t)&&!t.includes(e),$and:(e,t)=>t.every(t=>this.evaluate(e,t)),$or:(e,t)=>t.some(t=>this.evaluate(e,t)),$not:(e,t)=>!this.evaluate(e,t),$nor:(e,t)=>!t.some(t=>this.evaluate(e,t)),$exists:(e,t)=>void 0!==e===t,$type:(e,t)=>typeof e===t,$all:(e,t)=>Array.isArray(e)&&t.every(t=>e.includes(t)),$elemMatch:(e,t)=>Array.isArray(e)&&e.some(e=>this.evaluate({value:e},{value:t})),$size:(e,t)=>Array.isArray(e)&&e.length===t,$regex:(e,t)=>{if("string"!=typeof e)return!1;try{return new RegExp(t).test(e)}catch{return!1}},$text:(e,t)=>"string"==typeof e&&e.toLowerCase().includes(t.toLowerCase())}}evaluate(e,t){for(var r in t){var i=t[r];if(r.startsWith("$")){var a=this.operators[r];if(!a||!a(e,i))return!1}else{var s=this.getFieldValue(e,r);if("object"!=typeof i||null===i||Array.isArray(i)){if(s!==i)return!1}else for(var n in i)if(n.startsWith("$")){var o=this.operators[n];if(!o||!o(s,i[n]))return!1}}}return!0}getFieldValue(e,t){let r=e;for(var i of t.split(".")){if(null==r)return;r=r[i]}return r}};let wt=new class{constructor(){this.stages={$match:(e,t)=>e.filter(e=>mt.evaluate(e,t)),$project:(e,t)=>e.map(e=>{var r,i={};for(r in t){var a=t[r];1===a||!0===a?i[r]=mt.getFieldValue(e,r):"object"!=typeof a&&"string"==typeof a&&a.startsWith("$")&&(i[r]=mt.getFieldValue(e,a.substring(1)))}if(Object.values(t).some(e=>0===e||!1===e)){var s=Object.keys(t).filter(e=>0===t[e]||!1===t[e]);let r={...e};return s.forEach(e=>delete r[e]),r}return i}),$sort:(e,t)=>[...e].sort((e,r)=>{for(var i in t){var a=t[i],s=mt.getFieldValue(e,i);if(s<(i=mt.getFieldValue(r,i)))return-a;if(i<s)return a}return 0}),$limit:(e,t)=>e.slice(0,t),$skip:(e,t)=>e.slice(t),$group:(e,t)=>{var r,i=new Map,a=t._id;for(r of e){var s="string"==typeof a?mt.getFieldValue(r,a.replace("$","")):JSON.stringify(a);i.has(s)||i.set(s,{_id:s,docs:[]}),i.get(s).docs.push(r)}var n,o=[];for(n of i.values()){var c,h={_id:n._id};for(c in t)if("_id"!==c){var l=t[c],d=Object.keys(l)[0];let e=l[d].toString().replace("$","");switch(d){case"$sum":h[c]=n.docs.reduce((t,r)=>t+(mt.getFieldValue(r,e)||0),0);break;case"$avg":var u=n.docs.reduce((t,r)=>t+(mt.getFieldValue(r,e)||0),0);h[c]=u/n.docs.length;break;case"$count":h[c]=n.docs.length;break;case"$max":h[c]=Math.max(...n.docs.map(t=>mt.getFieldValue(t,e)));break;case"$min":h[c]=Math.min(...n.docs.map(t=>mt.getFieldValue(t,e)))}}o.push(h)}return o},$lookup:async(e,t,r)=>{r=await(await r.getCollection(t.from)).getAll();let i=new Map;return r.forEach(e=>{var r=mt.getFieldValue(e,t.foreignField);i.has(r)||i.set(r,[]),i.get(r).push(e)}),e.map(e=>{var r=mt.getFieldValue(e,t.localField);return{...e,[t.as]:i.get(r)||[]}})}}}async execute(e,t,r){let i=e;for(var a of t){var s=Object.keys(a)[0],n=(a=a[s],this.stages[s]);if(!n)throw new Error("Unknown aggregation stage: "+s);i="$lookup"===s?await n(i,a,r):n(i,a)}return i}};class yt{constructor(e){this.database=e,this.migrations=[],this.currentVersion=this.loadVersion()}loadVersion(){return localStorage.getItem(`lacertadb_${this.database.name}_version`)||"1.0.0"}saveVersion(e){localStorage.setItem(`lacertadb_${this.database.name}_version`,e),this.currentVersion=e}addMigration(e){this.migrations.push(e)}compareVersions(e,t){var r=e.split(".").map(Number),i=t.split(".").map(Number),a=Math.max(r.length,i.length);for(let e=0;e<a;e++){var s=r[e]||0,n=i[e]||0;if(n<s)return 1;if(s<n)return-1}return 0}async runMigrations(e){var t;for(t of this.migrations.filter(t=>0<this.compareVersions(t.version,this.currentVersion)&&this.compareVersions(t.version,e)<=0).sort((e,t)=>this.compareVersions(e.version,t.version)))await this._applyMigration(t,"up"),this.saveVersion(t.version)}async rollback(e){var t;for(t of this.migrations.filter(t=>t.down&&0<this.compareVersions(t.version,e)&&this.compareVersions(t.version,this.currentVersion)<=0).sort((e,t)=>this.compareVersions(t.version,e.version)))await this._applyMigration(t,"down");this.saveVersion(e)}async _applyMigration(e,t){var r;for(r of(console.log(`${"up"===t?"Running":"Rolling back"} migration: ${e.name} (v${e.version})`),await this.database.listCollections())){var i,a=await this.database.getCollection(r);for(i of await a.getAll()){var s=await e[t](i);s&&await a.update(i._id,s)}}}}class gt{constructor(){this.metrics={operations:[],latencies:[],cacheHits:0,cacheMisses:0,memoryUsage:[]},this.monitoring=!1,this.monitoringInterval=null}startMonitoring(){this.monitoring||(this.monitoring=!0,this.monitoringInterval=setInterval(()=>this.collectMetrics(),1e3))}stopMonitoring(){this.monitoring&&(this.monitoring=!1,clearInterval(this.monitoringInterval),this.monitoringInterval=null)}recordOperation(e,t){this.monitoring&&(this.metrics.operations.push({type:e,duration:t,timestamp:Date.now()}),this.metrics.latencies.push(t),100<this.metrics.operations.length&&this.metrics.operations.shift(),100<this.metrics.latencies.length)&&this.metrics.latencies.shift()}recordCacheHit(){this.metrics.cacheHits++}recordCacheMiss(){this.metrics.cacheMisses++}collectMetrics(){performance&&performance.memory&&(this.metrics.memoryUsage.push({used:performance.memory.usedJSHeapSize,total:performance.memory.totalJSHeapSize,limit:performance.memory.jsHeapSizeLimit,timestamp:Date.now()}),60<this.metrics.memoryUsage.length)&&this.metrics.memoryUsage.shift()}getStats(){var e=this.metrics.operations.filter(e=>Date.now()-e.timestamp<1e3).length,t=this.metrics.latencies.reduce((e,t)=>e+t,0),r=(t=0<this.metrics.latencies.length?t/this.metrics.latencies.length:0,0<(r=this.metrics.cacheHits+this.metrics.cacheMisses)?this.metrics.cacheHits/r*100:0),i=(i=0<this.metrics.memoryUsage.length?this.metrics.memoryUsage[this.metrics.memoryUsage.length-1]:null)?i.used/1048576:0;return{opsPerSec:e,avgLatency:t.toFixed(2),cacheHitRate:r.toFixed(1),memoryUsageMB:i.toFixed(2)}}getOptimizationTips(){var e=[],t=this.getStats();return 100<t.avgLatency&&e.push("High average latency detected. Consider enabling compression and indexing frequently queried fields."),t.cacheHitRate<50&&20<this.metrics.cacheHits+this.metrics.cacheMisses&&e.push("Low cache hit rate. Consider increasing cache size or optimizing query patterns."),10<this.metrics.memoryUsage.length&&10485760<(t=this.metrics.memoryUsage.slice(-10))[t.length-1].used-t[0].used&&e.push("Memory usage is increasing rapidly. Check for memory leaks or consider batch processing."),0<e.length?e:["Performance is optimal. No issues detected."]}}class bt{constructor(e,t){this.name=e,this.database=t,this.db=null,this.metadata=null,this.settings=t.settings,this.indexedDB=new ht,this.opfs=new ct,this.cleanupInterval=null,this.events=new Map,this.queryCache=new Map,this.cacheTimeout=6e4,this.performanceMonitor=t.performanceMonitor}async init(){var e=this.database.name+"_"+this.name;this.db=await this.indexedDB.openDatabase(e,1,(e,t)=>{t<1&&!e.objectStoreNames.contains("documents")&&e.createObjectStore("documents",{keyPath:"_id"}).createIndex("modified","_modified",{unique:!1})}),e=this.database.metadata.collections[this.name];return this.metadata=new dt(this.name,e),0<this.settings.freeSpaceEvery&&(this.cleanupInterval=setInterval(()=>this.freeSpace(),this.settings.freeSpaceEvery)),this}async add(e,t={}){await this.trigger("beforeAdd",e);e=new lt({data:e,_id:t.id},{encrypted:t.encrypted||!1,compressed:!1!==t.compressed,permanent:t.permanent||!1,password:t.password}),(t=t.attachments)&&0<t.length&&(t=await Promise.all(t.map(e=>e instanceof File||e instanceof Blob?ct.prepareAttachment(e,e.name):Promise.resolve(e))),e._attachments=await this.opfs.saveAttachments(this.database.name,this.name,e._id,t)),await e.pack(),t=e.databaseOutput(),await this.indexedDB.add(this.db,"documents",t),t=t.packedData.byteLength/1024;return this.metadata.addDocument(e._id,t,e._permanent,e._attachments.length),this.database.metadata.setCollection(this.metadata),await this.checkSpaceLimit(),await this.trigger("afterAdd",e),this.queryCache.clear(),e._id}async get(e,t={}){await this.trigger("beforeGet",e);var r,i=await this.indexedDB.get(this.db,"documents",e);if(i)return r=new lt(i,{password:t.password,encrypted:i._encrypted,compressed:i._compressed}),i.packedData&&await r.unpack(),t.includeAttachments&&0<r._attachments.length&&(r.data._attachments=await this.opfs.getAttachments(r._attachments)),await this.trigger("afterGet",r),r.objectOutput(t.includeAttachments);throw new st(`Document with id '${e}' not found.`,"DOCUMENT_NOT_FOUND")}async getAll(e={}){var t=await this.indexedDB.getAll(this.db,"documents",void 0,e.limit);return Promise.all(t.map(async t=>{try{var r=new lt(t,{password:e.password,encrypted:t._encrypted,compressed:t._compressed});return t.packedData&&await r.unpack(),r.objectOutput()}catch(r){return console.error(`Failed to unpack document ${t._id}:`,r),null}})).then(e=>e.filter(Boolean))}async update(e,t,r={}){await this.trigger("beforeUpdate",{docId:e,updates:t});var i,a=await this.indexedDB.get(this.db,"documents",e);if(a)return i=new lt(a,{password:r.password}),a.packedData&&await i.unpack(),i={...i.data,...t},(t=new lt({_id:e,_created:a._created,data:i},{encrypted:void 0!==r.encrypted?r.encrypted:a._encrypted,compressed:void 0!==r.compressed?r.compressed:a._compressed,permanent:void 0!==r.permanent?r.permanent:a._permanent,password:r.password}))._modified=Date.now(),(i=r.attachments)&&0<i.length?(await this.opfs.deleteAttachments(this.database.name,this.name,e),r=await Promise.all(i.map(e=>e instanceof File||e instanceof Blob?ct.prepareAttachment(e,e.name):Promise.resolve(e))),t._attachments=await this.opfs.saveAttachments(this.database.name,this.name,t._id,r)):t._attachments=a._attachments,await t.pack(),i=t.databaseOutput(),await this.indexedDB.put(this.db,"documents",i),r=i.packedData.byteLength/1024,this.metadata.updateDocument(t._id,r,t._permanent,t._attachments.length),this.database.metadata.setCollection(this.metadata),await this.trigger("afterUpdate",t),this.queryCache.clear(),t._id;throw new st(`Document with id '${e}' not found for update.`,"DOCUMENT_NOT_FOUND")}async delete(e){await this.trigger("beforeDelete",e);var t=await this.indexedDB.get(this.db,"documents",e);if(!t)throw new st("Document not found for deletion","DOCUMENT_NOT_FOUND");if(t._permanent)throw new st("Cannot delete a permanent document","INVALID_OPERATION");await this.indexedDB.delete(this.db,"documents",e),(t=t._attachments)&&0<t.length&&await this.opfs.deleteAttachments(this.database.name,this.name,e),this.metadata.removeDocument(e),this.database.metadata.setCollection(this.metadata),await this.trigger("afterDelete",e),this.queryCache.clear()}async query(e={},t={}){var r=performance.now(),i=it.encode(rt.serialize({filter:e,options:t})),a=this.queryCache.get(i);if(a&&Date.now()-a.timestamp<this.cacheTimeout)return this.performanceMonitor&&this.performanceMonitor.recordCacheHit(),a.data;this.performanceMonitor&&this.performanceMonitor.recordCacheMiss();let s=await this.getAll(t);return 0<Object.keys(e).length&&(s=s.filter(t=>mt.evaluate(t,e))),t.sort&&(s=wt.stages.$sort(s,t.sort)),t.skip&&(s=wt.stages.$skip(s,t.skip)),t.limit&&(s=wt.stages.$limit(s,t.limit)),t.projection&&(s=wt.stages.$project(s,t.projection)),this.performanceMonitor&&this.performanceMonitor.recordOperation("query",performance.now()-r),this.queryCache.set(i,{data:s,timestamp:Date.now()}),100<this.queryCache.size&&this.queryCache.delete(this.queryCache.keys().next().value),s}async aggregate(e){var t=performance.now(),r=await this.getAll();r=await wt.execute(r,e,this.database);return this.performanceMonitor&&this.performanceMonitor.recordOperation("aggregate",performance.now()-t),r}async batchAdd(e,t){var r=performance.now();e=await Promise.all(e.map(e=>this.add(e,t).then(e=>({success:!0,id:e})).catch(e=>({success:!1,error:e.message}))));return this.performanceMonitor&&this.performanceMonitor.recordOperation("batchAdd",performance.now()-r),e}batchUpdate(e,t){return Promise.all(e.map(e=>this.update(e.id,e.data,t).then(e=>({success:!0,id:e})).catch(t=>({success:!1,id:e.id,error:t.message}))))}batchDelete(e){return Promise.all(e.map(e=>this.delete(e).then(()=>({success:!0,id:e})).catch(t=>({success:!1,id:e,error:t.message}))))}async clear(){await this.indexedDB.clear(this.db,"documents"),this.metadata=new dt(this.name),this.database.metadata.setCollection(this.metadata),this.queryCache.clear()}async checkSpaceLimit(){this.settings.sizeLimitKB!==1/0&&this.metadata.sizeKB>this.settings.bufferLimitKB&&await this.freeSpace()}async freeSpace(){for(var e=.8*this.settings.bufferLimitKB;this.metadata.sizeKB>e;){var t=this.metadata.getOldestNonPermanentDocuments(10);if(0===t.length)break;await this.batchDelete(t)}}on(e,t){this.events.has(e)||this.events.set(e,[]),this.events.get(e).push(t)}off(e,t){var r;this.events.has(e)&&(r=this.events.get(e).filter(e=>e!==t),this.events.set(e,r))}async trigger(e,t){if(this.events.has(e))for(var r of this.events.get(e))await r(t)}clearCache(){this.queryCache.clear()}destroy(){clearInterval(this.cleanupInterval),this.db&&this.db.close()}}class vt{constructor(e,t){this.name=e,this.collections=new Map,this.metadata=null,this.settings=null,this.quickStore=null,this.performanceMonitor=t}async init(){return this.metadata=ut.load(this.name),this.settings=pt.load(this.name),this.quickStore=new ft(this.name),this}async createCollection(e,t){if(this.collections.has(e))throw new st(`Collection '${e}' already exists.`,"COLLECTION_EXISTS");var r=new bt(e,this);return await r.init(),this.collections.set(e,r),this.metadata.collections[e]||this.metadata.setCollection(new dt(e)),r}async getCollection(e){if(this.collections.has(e))return this.collections.get(e);var t;if(this.metadata.collections[e])return await(t=new bt(e,this)).init(),this.collections.set(e,t),t;throw new st(`Collection '${e}' not found.`,"COLLECTION_NOT_FOUND")}async dropCollection(e){var t;this.collections.has(e)&&(await(t=this.collections.get(e)).clear(),t.destroy(),this.collections.delete(e)),this.metadata.removeCollection(e);let r=this.name+"_"+e;await new Promise((e,t)=>{var i=indexedDB.deleteDatabase(r);i.onsuccess=e,i.onerror=t,i.onblocked=()=>console.warn(`Deletion of '${r}' is blocked.`)})}listCollections(){return Object.keys(this.metadata.collections)}getStats(){return{name:this.name,totalSizeKB:this.metadata.totalSizeKB,totalDocuments:this.metadata.totalLength,collections:Object.entries(this.metadata.collections).map(([e,t])=>({name:e,sizeKB:t.sizeKB,documents:t.length,createdAt:new Date(t.createdAt).toISOString(),modifiedAt:new Date(t.modifiedAt).toISOString()}))}}updateSettings(e){this.settings.updateSettings(e)}async export(e="json",t=null){var r,i,a,s={version:"4.0.3",database:this.name,timestamp:Date.now(),collections:{}};for(r of this.listCollections()){var n=await this.getCollection(r);s.collections[r]=await n.getAll({password:t})}if("json"===e)return a=rt.serialize(s),it.encode(a);if("encrypted"===e&&t)return a=new ot,i=rt.serialize(s),a=await a.encrypt(i,t),it.encode(a);throw new st("Unsupported export format: "+e,"INVALID_FORMAT")}async import(e,t="json",r=null){let i;try{var a,s=it.decode(e);i="encrypted"===t&&r?(a=await(new ot).decrypt(s,r),rt.deserialize(a)):rt.deserialize(s)}catch(e){throw new st("Failed to parse import data","IMPORT_PARSE_FAILED",e)}for(let e in i.collections){var n=i.collections[e];await(await this.createCollection(e).catch(()=>this.getCollection(e))).batchAdd(n)}return e=Object.values(i.collections).reduce((e,t)=>e+t.length,0),{collections:Object.keys(i.collections).length,documents:e}}async clearAll(){await Promise.all([...this.collections.keys()].map(e=>this.dropCollection(e))),this.collections.clear(),this.metadata=new ut(this.name),this.metadata.save(),this.quickStore.clear()}destroy(){this.collections.forEach(e=>e.destroy()),this.collections.clear()}}class At{constructor(){this.databases=new Map,this.performanceMonitor=new gt}async getDatabase(e){var t;return this.databases.has(e)||(await(t=new vt(e,this.performanceMonitor)).init(),this.databases.set(e,t)),this.databases.get(e)}async dropDatabase(e){var t;this.databases.has(e)&&(await(t=this.databases.get(e)).clearAll(),t.destroy(),this.databases.delete(e)),["metadata","settings","version"].forEach(t=>{localStorage.removeItem(`lacertadb_${e}_`+t)}),new ft(e).clear()}listDatabases(){var e=new Set;for(let r=0;r<localStorage.length;r++){var t=localStorage.key(r);t&&t.startsWith("lacertadb_")&&(t=t.split("_")[1],e.add(t))}return[...e]}async createBackup(e=null){var t,r={version:"4.0.3",timestamp:Date.now(),databases:{}};for(t of this.listDatabases()){var i=await(await this.getDatabase(t)).export("json");i=it.decode(i);r.databases[t]=rt.deserialize(i)}var a=rt.serialize(r);return e?(e=await(new ot).encrypt(a,e),it.encode(e)):it.encode(a)}async restoreBackup(e,t=null){let r;try{var i,a=it.decode(e);r=t?(i=await(new ot).decrypt(a,t),rt.deserialize(i)):rt.deserialize(a)}catch(e){throw new st("Failed to parse backup data","BACKUP_PARSE_FAILED",e)}var s,n,o={databases:0,collections:0,documents:0};for([s,n]of Object.entries(r.databases)){var c=await this.getDatabase(s),h=it.encode(rt.serialize(n));c=await c.import(h);o.databases++,o.collections+=c.collections,o.documents+=c.documents}return o}}},function(e,t,r){r.r(t),t=r(1),"undefined"!=typeof window?window.lacerta=t:self.lacerta=t}]);
|