1import{F as e}from"./FacadeVFS-d1ZDvud7.js";import{r as t,f as s,e as a,I as i,H as r,j as n,S as o,k as l,l as c,m as h,n as d,o as u,p as g,q as w,t as p,u as f,v as m,w as y,i as k,g as b,a as x,b as I,J as T,A as v,x as H,y as L,z as F,B as S,D as P,d as z,F as A,E}from"./worker.js";class U{#e;#t=null;#s=Promise.resolve(null);#a=!1;constructor(e){this.#e=e}get name(){return this.#e}get mode(){return this.#t}close(){this.release()}async acquire(e,t=-1){if(this.#a)throw new Error("Lock is already being acquired");this.#a=!0;try{if(this.#t)throw new Error(`Lock ${this.#e} is already acquired`);return this.#s=new Promise((s,a)=>{const i={mode:e,ifAvailable:0===t};t>0&&(i.signal=AbortSignal.timeout(t)),navigator.locks.request(this.#e,i,t=>null===t?s(null):(this.#t=e,new Promise(e=>{s(e)}))).catch(e=>a(e))}),this.#s.then(e=>!!e)}finally{this.#a=!1}}release(){this.#s.then(e=>e?.(),()=>{}),this.#t=null}}class C extends U{#i;#r=!1;#n=!1;constructor(e){super(e),this.#i=new BroadcastChannel(e),this.#i.onmessage=e=>{this.#r?this.#n=!0:this.release()}}close(){super.close(),this.#i.onmessage=null,this.#i.close()}async acquire(e,t=-1){this.#r=!0;try{if(e===this.mode)return!0;if(this.mode)super.release();else if(await super.acquire(e,0))return!0;const s=super.acquire(e,t);return this.#i.postMessage({}),await s}catch(e){throw this.release(),e}}acquireIfHeld(e){return e===this.mode&&(this.#r=!0,!0)}release(){super.release(),this.#r=!1,this.#n=!1}releaseLazy(){this.#r=!1,this.#n&&this.release()}}const O=931071620,$=32,R=32;class _{log=null;options={autoCheckpoint:1,backstopInterval:3e4,journalSizeLimit:1e3};#o;#l;#c;#h;#d;#u;#g=0;#w=null;#p=0;#f;#m=null;#y=null;#k=new Map;#b=new Map;#x=new Map;#I=0;#T=[0,0];#v;#H;#L=0;#F=new AbortController;constructor(e,t,s,a={}){this.#o=e,this.#l=t,this.#c=s,this.options=Object.assign(this.options,a),this.#f=(async()=>{const{fileHeader:t}=await navigator.locks.request(`${this.#o}#ckpt`,async()=>{await this.#S(),this.#v=new BroadcastChannel(`${e}#wa`),this.#v.onmessage=e=>{this.#P(e)};return{fileHeader:this.#c.map(e=>this.#z(e)).filter(e=>e).sort((e,t)=>e.nextTxId-t.nextTxId)[0]??this.#A(Math.floor(4294967295*Math.random()))}});this.#d=t,this.#h=this.#c[1&t.salt1],this.#u=$,this.#g=t.nextTxId-1;for(const e of this.#E())this.#U(e);this.#S(),this.#L=performance.now(),this.#C()})()}ready(){return this.#f}close(){this.#F.abort(),this.#v.onmessage=null,clearTimeout(this.#H),this.#y?.release(),this.#v.close()}isolateForRead(){if(null!==this.#m)throw new Error("Already in isolated state");this.#m="read",clearTimeout(this.#H),this.#H=null}isolateForWrite(){if(null!==this.#m)throw new Error("Already in isolated state");this.#m="write",clearTimeout(this.#H),this.#H=null,this.#O({readToCurrent:!0})}rejoin(){"read"===this.#m&&this.#O({autoCheckpoint:!0}),this.#m=null,this.#C()}read(e){const t=this.#w?.pages.get(e)??this.#k.get(e);return t?t.pageData?(this.log?.(`%cread page at ${e} from WAL ${1&t.waSalt1}:${t.waOffset} (cached)`,"background-color: gold;"),t.pageData):(this.log?.(`%cread page at ${e} from WAL ${1&t.waSalt1}:${t.waOffset}`,"background-color: gold;"),this.#$(t)):null}write(e,t,s){if("write"!==this.#m)throw new Error("Not in write isolated state");if(this.#w||(this.#R(),s.dstPageSize!==t.byteLength&&(this.#w.newPageSize=s.dstPageSize)),this.#w.newPageSize){const s=R+this.#w.newPageSize;if(t.byteLength>this.#w.newPageSize)for(let s=0;s<t.byteLength;s+=this.#w.newPageSize){const a=t.slice(s,s+this.#w.newPageSize),i=this.#_(e+s,a);this.log?.(`%cwrite page at ${e+s} to WAL ${1&this.#d.salt1}:${i}`,"background-color: lightskyblue;")}else{const a=e%this.#w.newPageSize,i=this.#u+(e-a)/this.#w.newPageSize*s+R+a;this.#h.write(t.subarray(),{at:i}),this.log?.(`%cwrite page at ${e} to WAL ${1&this.#d.salt1}:${i}`,"background-color: lightskyblue;")}}else{const s=this.#_(e,t.slice());this.log?.(`%cwrite page at ${e} to WAL ${1&this.#d.salt1}:${s}`,"background-color: lightskyblue;")}}truncate(e){if(this.#w)for(const t of this.#w.pages.keys())t>=e&&this.#w.pages.delete(t)}getFileSize(){return this.#w?.dbFileSize??this.#p}commit(){const e=this.#w;if(e.newPageSize&&0===e.pages.size){let t=1;for(let s=0;s<t;s++){const a=new Uint8Array(e.newPageSize),i=this.#u+s*(R+e.newPageSize)+R;if(this.#h.read(a,{at:i}),0===s){t=new DataView(a.buffer).getUint32(28)}this.#_(s*e.newPageSize,a)}}const t=this.#w.pages.get(0)?.pageData;if(!t)return void this.rollback();{const e=new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(28);this.#w.dbFileSize=e*t.byteLength}this.#q(),this.#U(e),this.#S();const s={type:"tx",tx:e};if(this.#v.postMessage(s),this.#B()){const e=this.#T[0]+this.#T[1];e>=(this.options.journalSizeLimit>0?this.options.journalSizeLimit:1e3)&&(this.log?.(`%cchange WAL file at ${e} pages`,"background-color: lightskyblue;"),this.#j())}this.#D(),this.#L=performance.now()}rollback(){this.#M()}sync(e){"strict"===e.durability&&this.#N()}async checkpoint(e={isPassive:!0}){const t={ifAvailable:e.isPassive};await navigator.locks.request(`${this.#o}#ckpt`,t,async t=>{if(!t)return;if(this.#F.signal.aborted)return;let s=this.#W()-1;if(e.isPassive){if(!this.#b.has(s))return;if((await this.#V()).reduce((e,t)=>
1Math.min(e,t.maxTxId),this.#g)<s)return}else await this.#G(e=>e.maxTxId>=this.#g),s=this.#g;this.log?.(`%ccheckpoint through txId ${s}`,"background-color: lightgreen;"),this.#J(),e.isPassive||this.#N();const a=new Set;let i=this.#l.getSize();for(let e=this.#b.get(s);e;e=this.#b.get(e.id-1)){e.id===s&&i!==e.dbFileSize&&(i=e.dbFileSize,this.#l.truncate(i));for(const[t,s]of e.pages)if(t<i&&!a.has(t)){const i=s.pageData??this.#$(s);if(this.#l.write(i,{at:t})!==i.byteLength)throw new Error("Checkpoint write failed");a.add(t),this.log?.(`%ccheckpoint wrote txId ${e.id} page at ${t} to database`,"background-color: lightgreen;")}if(e.newPageSize)break}this.log?.("%ccheckpoint flush database file","background-color: lightgreen;"),this.#l.flush(),this.#v.postMessage({type:"ckpt",ckptId:s}),this.#K(s),this.log?.("%ccheckpoint waiting for connection updates","background-color: lightgreen;"),await this.#G(e=>e.minTxId>s),this.#Q(),this.log?.("%ccheckpoint complete","background-color: lightgreen;")})}getWriteAheadSize(){return this.#I}isTransactionPending(){return!!this.#w}setBackstopInterval(e){this.options.backstopInterval=e,e>0&&this.#m&&this.#C()}#U(e){this.#b.set(e.id,e);const t=1&e.pages.get(0).waSalt1;this.#T[t]+=e.pages.size,this.#T[1-t]=0,this.#I+=e.pages.size;for(const[t,s]of e.pages)this.#k.set(t,s);this.#p=e.dbFileSize}#O(e={}){let t=!1;for(;this.#x.size;){const e=this.#g+1;let s;this.#x.has(e)?(s=this.#x.get(e),this.#x.delete(s.id),this.#X(s)):s=this.#Y();if(!s)break;this.#U(s),t=!0}if(e.readToCurrent)for(const e of this.#E())this.#U(e),t=!0;t&&(this.#S(),e.autoCheckpoint&&this.#D()),(e.readToCurrent||t)&&(this.#L=performance.now())}#D(){this.options.autoCheckpoint>0&&this.checkpoint({isPassive:!0})}#K(e){this.log?.(`%capply checkpoint through txId ${e}`,"background-color: lightgreen;");for(let t=this.#b.get(e);t;t=this.#b.get(t.id-1)){for(const[e,s]of t.pages.entries()){this.#k.get(e)===s&&(this.log?.(`%cremove txId ${t.id} page at offset ${e}`,"background-color: lightgreen;"),this.#k.delete(e))}this.#b.delete(t.id),this.#I-=t.pages.size}this.#S()}#P(e){if("tx"===e.data.type){const t=e.data.tx;t.id>this.#g&&(this.#x.set(t.id,t),null===this.#m&&this.#O({autoCheckpoint:!0}))}else if("ckpt"===e.data.type){const t=e.data.ckptId;this.#K(t)}}#C(){if(this.options.backstopInterval<=0)return;if(this.#m)throw new Error("Backstop was invoked in an isolated state");if(performance.now()>=this.#L+this.options.backstopInterval){const e=this.#g;this.#O({readToCurrent:!0}),this.#g>e&&this.log?.(`%cbackstop txId ${e} -> ${this.#g}`,"background-color: lightyellow;"),this.#L=performance.now()}const e=this.#L+this.options.backstopInterval-performance.now();clearTimeout(this.#H),this.#H=self.setTimeout(()=>{this.#C()},e)}async#S(){const e=this.#y,t=this.#Z();if(e?.name!==t&&(this.#y=new U(t),await this.#y.acquire("shared").then(()=>{e?.release()}),this.log)){const{minTxId:e,maxTxId:s}=this.#ee(t);this.log?.(`%ctxId to ${e}:${s}`,"background-color: pink;")}}async#V(){const{held:e}=await navigator.locks.query();return e.map(e=>this.#ee(e.name)).filter(e=>null!==e)}#Z(){const e=this.#g,t=this.#b.keys().next().value??e+1;return`${this.#o}-txId<${t.toString(36)}:${e.toString(36)}>`}#ee(e){const t=e.match(/^(.*)-txId<([0-9a-z]+):([0-9a-z]+)>$/);return t?.[1]===this.#o?{name:t[1],minTxId:parseInt(t[2],36),maxTxId:parseInt(t[3],36),encoded:e}:null}async#G(e){let t=[];do{t.length>0&&await Promise.all(t.map(e=>navigator.locks.request(e,async()=>{}))),t=(await this.#V()).filter(t=>!e(t)).map(e=>e.encoded)}while(t.length>0)}#$(e){const t=this.#c[1&e.waSalt1],s=new Uint8Array(e.pageSize),a=t.read(s,{at:e.waOffset});if(a!==e.pageSize)throw new Error(`Short WAL read: expected ${e.pageSize} bytes, got ${a}`);return s}*#E(){for(;;){const e=this.#Y();if(!e)break;yield e}}#Y(){const e={id:0,pages:new Map,dbFileSize:0,waSalt1:0,waOffsetEnd:0};let t=this.#u;for(;;){const s=this.#te(t);if(!s)return null;if(0===s.frameType)e.pages.set(s.pageOffset,{pageSize:s.pageData.byteLength,waOffset:t+R,waSalt1:this.#d.salt1});else{if(1===s.frameType)return this.#g+=1,this.#u=t+s.byteLength,e.id=this.#g,e.dbFileSize=s.dbFileSize,e.waSalt1=this.#d.salt1,e.newPageSize=1&s.flags?e.pages.get(0).pageSize:null,e.waOffsetEnd=this.#u,e;if(2===s.frameType){this.#se(s.fileHeader),t=this.#u;continue}}t+=s.byteLength}}#X(e){if(e.waSalt1!==this.#d.salt1&&!this.#se(null))throw new Error("invalid WAL file");this.#g=e.id,this.#u=e.waOffsetEnd}#R(e={}){return this.#w={id:this.#g+1,pages:new Map,dbFileSize:this.#p,waSalt1:this.#d.salt1,waOffsetEnd:this.#u},this.#w}#_(e,t){const s=new DataView(new ArrayBuffer(R));s.setUint8(0,0),s.setUint16(2,65536===t.byteLength?1:t.byteLength),s.setBigUint64(8,BigInt(e)),s.setUint32(16,this.#d.salt1),s.setUint32(20,this.#d.salt2);const a=new q;a.update(new Uint8Array(s.buffer,0,24)),a.update(t),s.setUint32(24,a.s0),s.setUint32(28,a.s1);const i=this.#h.write(s,{at:this.#w.waOffsetEnd})+this.#h.write(t,{at:this.#w.waOffsetEnd+R});if(i!==s.byteLength+t.byteLength)throw new Error("write failed");const r={pageSize:t.byteLength,waOffset:this.#w.waOffsetEnd+R,waSalt1:this.#d.salt1,pageData:0===e?t:void 0};return this.#w.pages.set(e,r),this.#w.waOffsetEnd+=i,r.waOffset}#q(){const e=new DataView(new ArrayBuffer(R));e.setUint8(0,1),e.setUint8(1,this.#w.newPageSize?1:0),e.setBigUint64(8,BigInt(this.#w.dbFileSize)),e.setUint32(16,this.#d.salt1),e.setUint32(20,this.#d.salt2);const t=new q;t.update(new Uint8Array(e.buffer,0,24)),e.setUint32(24,t.s0),e.setUint32(28,t.s1);const s=this.#h.write(e,{at:this.#w.waOffsetEnd});if(s!==e.byteLength)throw new Error("write failed");this.#w.waOffsetEnd+=s;const a=this.#w;return this.#w=null,this.#u=a.waOffsetEnd,this.#g=a.id,a}#M(){this.#w=null,this.#h.truncate(this.#u)}#j(){const e=new DataView(new ArrayBuffer(R));e.setUint8(0,2),e.setUint32(16,this.#d.salt1),e.setUint32(20,this.#d.salt2);const t=new q;t.update(new Uint8Array(e.buffer,0,24)),e.setUint32(24,t.s0),e.setUint32(28,t.s1);if(this.#h.write(e,{at:this.#u})!==e.byteLength)throw new Error("write failed");this.#d=this.#A(),this.#h=this.#ae(),this.#u=$}#W(){return this.#d.nextTxId}#N(){this.#h.flush()}#J(){this.#ae().flush()}#B(){if(this.#b.has(this.#d.nextTxId-1))return!1;const e=this.#ae();return e.getSize()<$||null===this.#z(e)}#Q(){this.#ae().truncate(0)}#se(e){const t=this.#ae();return e||(e=this.#z(t),e?.salt1===this.#d.salt1+1>>>0)?(this.#h=t,this.#d=e,this.#u=$,e):null}#ae(){return this.#h!==this.#c[0]?this.#c[0]:this.#c[1]}#z(e){const t=new DataView(new ArrayBuffer($));if(e.read(t,{at:0})!==t.byteLength)return null;if(t.getUint32(0)!==O)return null;const s=new q;return s.update(new Uint8Array(t.buffer,0,24)),s.matches(t.getUint32(24),t.getUint32(28))?{nextTxId:Number(t.getBigUint64(8)),salt1:t.getUint32(16),salt2:t.getUint32(20)}:null}#te(e){const t=new DataView(new ArrayBuffer(R));if(this.#h.read(t,{at:e})!==t.byteLength)return null;const s=t.getUint32(16),a=t.getUint32(20);if(s!==this.#d.salt1||a!==this.#d.salt2)return null;const i=1===(r=t.getUint16(2))?65536:r;var r;let n;if(i){n=new Uint8Array(i);if(this.#h.read(n,{at:e+R})!==i)return null}const o=new q;if(o.update(new Uint8Array(t.buffer,0,24)),n&&o.update(n),!o.matches(t.getUint32(24),t.getUint32(28)))return null;const l=t.getUint8(0);if(0===l)return{frameType:l,byteLength:R+i,pageOffset:Number(t.getBigUint64(8)),pageData:n};if(1===l)return{frameType:l,byteLength:R,flags:t.getUint8(1),dbFileSize:Number(t.getBigUint64(8))};if(2===l){const e=this.#z(this.#ae());return e?.salt1!==this.#d.salt1+1>>>0?null:{frameType:l,byteLength:R,fileHeader:e}}throw new Error(`Invalid frame type: ${l}`)}#A(e=this.#d.salt1){const t=this.#g+1,s=e+1>>>0,a=Math.floor(4294967295*Math.random())>>>0,i=new DataView(new ArrayBuffer($));i.setUint32(0,O),i.setBigUint64(8,BigInt(t)),i.setUint32(16,s),i.setUint32(20,a);const r=new q;r.update(new Uint8Array(i.buffer,0,24)),i.setUint32(24,r.s0),i.setUint32(28,r.s1);if(this.#c[1&s].write(i,{at:0})!==i.byteLength)throw new Error("write failed");return{nextTxId:t,salt1:s,salt2:a}}}class q{s0=0;s1=0;update(e){if(e.byteLength%8!=0)throw new Error("Data must be a multiple of 8 bytes");const t=ArrayBuffer.isView(e)?new Uint32Array(e.buffer,e.byteOffset,e.byteLength/4):new Uint32Array(e);for(let e=0;e<t.length;e+=2)this.s0=this.s0+t[e]+this.s1>>>0,this.s1=this.s1+t[e+1]+this.s0>>>0}matches(e,t){return this.s0===e&&this.s1===t}}const B=new FinalizationRegistry(e=>e());
1class j extends e{lastError=null;log=null;mapIdToFile=new Map;mapPathToFile=new Map;boundTempFiles=new Map;unboundTempFiles=new Set;options={nTmpFiles:6};_ready;static async create(e,t,s){const a=new j(e,t);return Object.assign(a.options,s),await a.isReady(),a}constructor(e,t){super(e,t),this._ready=(async()=>{let e=await navigator.storage.getDirectory();e=await e.getDirectoryHandle(".wa-sqlite",{create:!0});for await(const t of e.keys())t.startsWith(".session-")&&await navigator.locks.request(t,{ifAvailable:!0},async s=>{if(s)try{await e.removeEntry(t,{recursive:!0})}catch(e){}});const t=`.session-${Math.random().toString(16).slice(2)}`;await new Promise(e=>{navigator.locks.request(t,()=>(e(),new Promise(e=>{B.register(this,e)})))}),e=await e.getDirectoryHandle(t,{create:!0});for(let t=0;t<this.options.nTmpFiles;t++){const s=await e.getFileHandle(t.toString(),{create:!0}),a=await s.createSyncAccessHandle();B.register(this,()=>a.close()),this.unboundTempFiles.add(a)}})()}isReady(){return Promise.all([super.isReady(),this._ready]).then(()=>!0)}jOpen(e,c,h,d){try{null===e&&(e=Math.random().toString(16).slice(2));const l=this.mapPathToFile.get(e)??{zName:e,flags:h,retryResult:null};if(this.mapPathToFile.set(e,l),h&t){if(null===l.retryResult)return this._module.retryOps.push(this.#ie(e,h,c,d)),s;if(l.retryResult instanceof Error){const e=l.retryResult;throw l.retryResult=null,e}l.accessHandle=l.retryResult.accessHandle,l.waHandles=l.retryResult.waHandles,l.writeAhead=l.retryResult.writeAhead,l.retryResult=null,l.lockState=a,l.lockingMode="normal",l.readLock=new C(`${e}#read`),l.writeLock=new C(`${e}#write`),l.useLazyLock="readwrite",l.timeout=-1,l.synchronous=1,l.writeHint=null,l.pageSize=null,l.overwrite=!1}else{if(h&(i|r))throw new Error("WAL and super-journal files are not supported");if(l.accessHandle);else{if(!(h&n))throw new Error("file not found");l.accessHandle=this.#re(e)}}return this.mapIdToFile.set(c,l),d.setInt32(0,h,!0),o}catch(t){return console.error(t.stack),this.lastError=t,this.mapPathToFile.delete(e),l}}jDelete(e,t){try{if(!this.boundTempFiles.has(e))throw new Error(`unexpected file deletion: ${e}`);{const t=this.mapPathToFile.get(e);this.#ne(t)}return o}catch(e){return console.error(e.stack),this.lastError=e,c}}jAccess(e,t,s){try{const t=this.mapPathToFile.get(e);return s.setInt32(0,t?1:0,!0),o}catch(e){return console.error(e.stack),this.lastError=e,h}}jClose(e){try{const s=this.mapIdToFile.get(e);return s?.flags&t?(s.writeAhead.close(),s.accessHandle.close(),s.waHandles.forEach(e=>e.close()),this.mapPathToFile.delete(s?.zName),s.readLock.close(),s.writeLock.close()):s?.flags&d&&this.#ne(s),this.mapIdToFile.delete(e),o}catch(e){return console.error(e.stack),this.lastError=e,u}}jRead(e,s,a){try{const i=this.mapIdToFile.get(e);let r=null;if(i.flags&t){const e=a<100?a:0,t=i.writeAhead.read(a-e);if(t){const a=t.subarray(e,e+s.byteLength);s.set(a),r=a.byteLength}}return null===r&&(r=i.accessHandle.read(s.subarray(),{at:a})),r<s.byteLength?(s.fill(0,r),g):o}catch(e){return console.error(e.stack),this.lastError=e,w}}jWrite(e,s,a){try{const i=this.mapIdToFile.get(e);if(i.flags&t){const e=i.overwrite&&i.pageSize!==s.byteLength;return i.writeAhead.write(a,s,{dstPageSize:e?i.pageSize:null}),o}return i.accessHandle.write(s.subarray(),{at:a}),o}catch(e){return console.error(e.stack),this.lastError=e,p}}jTruncate(e,s){try{const a=this.mapIdToFile.get(e);return a.flags&t?(a.writeAhead.truncate(s),o):(a.accessHandle.truncate(s),o)}catch(e){return console.error(e.stack),this.lastError=e,f}}jSync(e,s){try{const s=this.mapIdToFile.get(e);if(s.flags&t){const e=s.synchronous>1?"strict":"relaxed";s.writeAhead.sync({durability:e})}return o}catch(e){return console.error(e.stack),this.lastError=e,m}}jFileSize(e,s){try{const a=this.mapIdToFile.get(e);let i;return i=a.flags&t&&a.writeAhead.getFileSize()||a.accessHandle.getSize(),s.setBigInt64(0,BigInt(i),!0),o}catch(e){return console.error(e.stack),this.lastError=e,y}}jLock(e,t){try{const i=this.mapIdToFile.get(e);if(i.lockState===a&&t===k){if(null===i.retryResult){if("exclusive"===i.lockingMode)return i.retryResult={},this._module.retryOps.push(this.#oe(i)),s;if(i.writeHint){if(!i.writeLock.acquireIfHeld("exclusive"))return i.retryResult={},this._module.retryOps.push(this.#oe(i)),s;i.writeAhead.isolateForWrite()}else{if(!i.readLock.acquireIfHeld("shared"))return i.retryResult={},this._module.retryOps.push(this.#le(i)),s;i.writeAhead.isolateForRead()}}else if(i.retryResult instanceof Error){const e=i.retryResult;throw i.retryResult=null,e}i.retryResult=null}else if(t>=b&&!i.writeLock.mode)throw new Error("Write transaction cannot use BEGIN DEFERRED");return i.lockState=t,o}catch(e){return"TimeoutError"===e.name?s:(console.error(e.stack),this.lastError=e,x)}}jUnlock(e,t){try{const s=this.mapIdToFile.get(e);if(!s.retryResult&&t===a){switch(s.writeAhead.rejoin(),s.useLazyLock){case"none":s.writeLock.release(),s.readLock.release();break;case"read":s.writeLock.release(),s.readLock.releaseLazy();break;case"write":s.writeLock.releaseLazy(),s.readLock.release();break;case"readwrite":s.writeLock.releaseLazy(),s.readLock.releaseLazy()}s.writeHint=null}s.lockState=t}catch(e){return console.error(e.stack),this.lastError=e,I}}jCheckReservedLock(e,t){return console.assert(!1,"unexpected"),t.setInt32(0,0,!0),o}jFileControl(e,s,a){try{const i=this.mapIdToFile.get(e);switch(s){case S:const e=this._module.UTF8ToString(a.getUint32(4,!0)),s=a.getUint32(8,!0),r=s?this._module.UTF8ToString(s):null;switch(this.log?.(`PRAGMA ${e} ${r}`),e.toLowerCase()){case"experimental_pragma_20251114":switch(r){case"1":i.writeHint="reserved";break;case"2":i.writeHint="exclusive";break;default:throw new Error(`unexpected write hint value: ${r}`)}break;case"backstop_interval":if(null!==r){const e=parseInt(r);i.writeAhead.setBackstopInterval(e)}else{const e=i.writeAhead.options.backstopInterval.toString(),t=this._module._sqlite3_malloc64(e.length+1);this._module.stringToUTF8(e,t,e.length+1),a.setUint32(0,t,!0)}return o;case"busy_timeout":if(null!==r)i.timeout=parseInt(r);else{const e=i.timeout.toString(),t=this._module._sqlite3_malloc64(e.length+1);this._module.stringToUTF8(e,t,e.length+1),a.setUint32(0,t,!0)}return o;case"journal_size_limit":if(null!==r){const e=parseInt(r);i.writeAhead.options.journalSizeLimit=e}break;case"locking_mode":switch(r?.toLowerCase()){case"normal":i.lockingMode="normal";break;case"exclusive":i.lockingMode="exclusive"}break;case"page_size":if(null!==r){const e=parseInt(r);(1===e||e>=512&&e<=32768&&!(e&e-1))&&(i.pageSize=1===e?65536:e)}break;case"synchronous":if(null!==r)switch(r.toLowerCase()){case"off":case"0":i.synchronous=0;break;case"normal":case"1":i.synchronous=1;break;case"full":case"2":i.synchronous=2;break;case"extra":case"3":i.synchronous=3;break;default:throw new Error(`unexpected synchronous value: ${r}`)}break;case"vfs_trace":return null!==r&&(this.log=0!==parseInt(r)?console.debug:null,i.writeAhead.log=this.log),o;case"wal_autocheckpoint":null!==r&&(i.writeAhead.options.autoCheckpoint=parseInt(r));break;case"wal_checkpoint":const e=(r??"passive").toLowerCase();switch(e){case"passive":this._module.pendingOps.push(this.#ce(i,e));break;case"full":case"restart":case"truncate":if(i.writeAhead.isTransactionPending())throw new Error("invalid while a transaction is in progress");this._module.pendingOps.push(this.#ce(i,e));break;case"noop":break;default:throw new Error(`unexpected wal_checkpoint mode: ${r}`)}{const e=i.writeAhead.getWriteAheadSize().toString(),t=this._module._sqlite3_malloc64(e.length+1);this._module.stringToUTF8(e,t,e.length+1),a.setUint32(0,t,!0)}return o;case"lazy_lock":if(null!==r){const e=r.toLowerCase();switch(e){case"read":case"write":case"readwrite":case"none":i.useLazyLock=e;break;default:throw new Error(`unexpected value for lazy_lock: ${r}`)}}{const e=i.useLazyLock,t=this._module._sqlite3_malloc64(e.length+1);this._module.stringToUTF8(e,t,e.length+1),a.setUint32(0,t,!0)}return o}break;case F:case L:if(i.flags&t)return o;break;case H:if(i.flags&t)return i.writeAhead.rollback(),o;break;case v:i.flags&t&&i.writeAhead.commit();break;case T:i.overwrite=!0}}catch(e){return console.error(e.stack),this.lastError=e,P}return z}jDeviceCharacteristics(e){return A|E}jGetLastError(e){if(this.lastError){console.error(this.lastError);const t=e.subarray(0,e.byteLength-1),{written:s}=(new TextEncoder).encodeInto(this.lastError.message,t);e[s]=0}return o}#re(e){if(0===this.unboundTempFiles.size)throw new Error("no temporary files available");const t=this.unboundTempFiles.values().next().value;return this.unboundTempFiles.delete(t),this.boundTempFiles.set(e,t),t}#ne(e){e.accessHandle.truncate(0),this.mapPathToFile.delete(e.zName),this.unboundTempFiles.add(e.accessHandle),this.boundTempFiles.delete(e.zName)}
1#he(e,t){return`${e}-wa${t}`}async#ce(e,t){const i=[];try{"passive"!==t&&e.lockState===a&&(await e.writeLock.acquire("exclusive"),i.push(()=>e.writeLock.release()),e.writeAhead.isolateForWrite(),i.push(()=>e.writeAhead.rejoin())),await e.writeAhead.checkpoint({isPassive:"passive"===t})}catch(e){throw"AbortError"===e.name&&(e.code=s),e}finally{for(;i.length;)i.pop()()}}async#le(e){const t=[];try{await e.readLock.acquire("shared",e.timeout),t.push(()=>e.readLock.release()),e.writeAhead.isolateForRead(),e.retryResult={}}catch(s){for(;t.length;)t.pop()();e.retryResult=s}}async#oe(e){const t=[];try{"exclusive"===e.lockingMode&&(await e.readLock.acquire("exclusive",e.timeout),t.push(()=>e.readLock.release())),await e.writeLock.acquire("exclusive",e.timeout),t.push(()=>e.writeLock.release()),e.writeAhead.isolateForWrite(),e.retryResult={}}catch(s){for(;t.length;)t.pop()();e.retryResult=s}}async#ie(e,t,s,a){const i=[],r=this.mapPathToFile.get(e);try{const{accessHandle:s,waHandles:a}=await navigator.locks.request(`${e}#open`,async s=>{const a=e.split("/").filter(e=>e),r=a.pop();let o=await navigator.storage.getDirectory();const l=!!(t&n);for(const e of a)o=await o.getDirectoryHandle(e,{create:l});const c=l&&await async function(){try{return await o.getFileHandle(r),!1}catch(e){if("NotFoundError"===e.name)return!0;throw e}}();async function h(e,t){const s=await o.getFileHandle(e,t),a=await s.createSyncAccessHandle({mode:"readwrite-unsafe"});return i.push(()=>{a.close(),c&&o.removeEntry(e)}),a}return{accessHandle:await h(r,{create:l}),waHandles:await Promise.all([0,1].map(async e=>{const t=this.#he(r,e),s=await h(t,{create:!0});return c&&s.truncate(0),s}))}}),o=new _(e,s,a);await o.ready(),r.retryResult={accessHandle:s,waHandles:a,writeAhead:o}}catch(e){for(;i.length;)i.pop()();r.retryResult=e}}}export{j as OPFSWriteAheadVFS}; 2//# sourceMappingURL=OPFSWriteAheadVFS-Rt5CGCZP.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.