@powersync/web 2.3.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import { BaseObserver, DBAdapter, LogLevels, SyncStreamConnectionMethod } from '@powersync/common';
2
- import { AbortOperation, ConnectionManager, SqliteBucketStorage, Mutex } from '@powersync/shared-internals';
2
+ import { AbortOperation, ConnectionManager, SqliteBucketStorage, Mutex, SyncStatusSnapshot } from '@powersync/shared-internals';
3
3
  import * as Comlink from 'comlink';
4
4
  import { WebRemote } from '../../db/sync/WebRemote.js';
5
5
  import { WebStreamingSyncImplementation } from '../../db/sync/WebStreamingSyncImplementation.js';
@@ -61,7 +61,7 @@ export class SharedSyncImplementation extends BaseObserver {
61
61
  createSyncImplementation: async () => {
62
62
  await this.waitForReady();
63
63
  const sync = this.generateStreamingImplementation();
64
- const onDispose = sync.registerListener({
64
+ const removeStatusListener = sync.registerListener({
65
65
  statusChanged: (snapshot) => {
66
66
  this.syncStatus = snapshot;
67
67
  const json = snapshot.toJSON();
@@ -70,7 +70,12 @@ export class SharedSyncImplementation extends BaseObserver {
70
70
  });
71
71
  return {
72
72
  sync,
73
- onDispose
73
+ onDispose: () => {
74
+ removeStatusListener();
75
+ // Clear transient state so new tabs don't inherit stale errors.
76
+ // Preserve core status, including hasSynced and lastSyncedAt.
77
+ this.syncStatus &&= new SyncStatusSnapshot(this.syncStatus.core, {});
78
+ }
74
79
  };
75
80
  },
76
81
  logger: this.logger,
@@ -276,21 +281,21 @@ export class SharedSyncImplementation extends BaseObserver {
276
281
  this.logger.log({ level: LogLevels.error, message: 'error invalidating credentials', error });
277
282
  }
278
283
  },
279
- fetchCredentials: () => {
284
+ fetchCredentials: (signal) => {
280
285
  return this.#useConnector((port) => {
281
286
  this.logger.log({
282
287
  level: LogLevels.info,
283
288
  message: 'calling the last port client provider for credentials'
284
289
  });
285
290
  return port.clientProvider.fetchCredentials();
286
- }, 'fetchCredentials');
291
+ }, 'fetchCredentials', signal);
287
292
  }
288
293
  }, this.logger),
289
- uploadCrud: () => {
290
- return this.#useConnector((port) => port.clientProvider.uploadCrud(), 'uploadCrud');
294
+ uploadCrud: (signal) => {
295
+ return this.#useConnector((port) => port.clientProvider.uploadCrud(), 'uploadCrud', signal);
291
296
  },
292
- postCheckpointRequest: (clientId, requestId) => {
293
- return this.#useConnector((port) => port.clientProvider.postCheckpointRequest(clientId, requestId), 'postCheckpointRequest');
297
+ postCheckpointRequest: (clientId, requestId, signal) => {
298
+ return this.#useConnector((port) => port.clientProvider.postCheckpointRequest(clientId, requestId), 'postCheckpointRequest', signal);
294
299
  },
295
300
  ...syncParams.streamOptions,
296
301
  subscriptions: this.subscriptions,
@@ -298,22 +303,32 @@ export class SharedSyncImplementation extends BaseObserver {
298
303
  logger: this.logger
299
304
  });
300
305
  }
301
- async #useConnector(inner, debugContext) {
302
- const lastPort = await this.getLastWrappedPort();
303
- if (!lastPort) {
304
- throw new Error(`No client port found for ${debugContext}`);
305
- }
306
- return new Promise((resolve, reject) => {
307
- function portClosed() {
308
- reject(new Error(`Tab closed while handling ${debugContext}`));
306
+ /**
307
+ * Calls into a client tab, stopping the wait on disconnect when a signal is supplied.
308
+ */
309
+ async #useConnector(inner, debugContext, signal) {
310
+ const action = async () => {
311
+ const lastPort = await this.getLastWrappedPort();
312
+ if (!lastPort) {
313
+ throw new Error(`No client port found for ${debugContext}`);
309
314
  }
310
- lastPort.closeListeners.push(portClosed);
311
- inner(lastPort)
312
- .then(resolve, reject)
313
- .finally(() => {
314
- lastPort.closeListeners.splice(lastPort.closeListeners.indexOf(portClosed), 1);
315
+ return await new Promise((resolve, reject) => {
316
+ const portClosed = () => {
317
+ reject(new Error(`Tab closed while handling ${debugContext}`));
318
+ };
319
+ lastPort.closeListeners.push(portClosed);
320
+ inner(lastPort)
321
+ .then(resolve, reject)
322
+ .finally(() => {
323
+ const index = lastPort.closeListeners.indexOf(portClosed);
324
+ if (index >= 0) {
325
+ lastPort.closeListeners.splice(index, 1);
326
+ }
327
+ });
315
328
  });
316
- });
329
+ };
330
+ // Include port lookup in the guard: port removal can hold portMutex.
331
+ return signal ? withAbort({ signal, action }) : action();
317
332
  }
318
333
  /**
319
334
  * Requests a random client to share its database connection with us.
@@ -462,14 +477,15 @@ export class SharedSyncImplementation extends BaseObserver {
462
477
  */
463
478
  function withAbort(options) {
464
479
  const { action, signal, cleanupOnAbort } = options;
480
+ const abortError = () => signal.reason instanceof Error ? signal.reason : new AbortOperation('Operation aborted by abort controller');
465
481
  return new Promise((resolve, reject) => {
466
482
  if (signal.aborted) {
467
- reject(new AbortOperation('Operation aborted by abort controller'));
483
+ reject(abortError());
468
484
  return;
469
485
  }
470
486
  function handleAbort() {
471
487
  signal.removeEventListener('abort', handleAbort);
472
- reject(new AbortOperation('Operation aborted by abort controller'));
488
+ reject(abortError());
473
489
  }
474
490
  signal.addEventListener('abort', handleAbort, { once: true });
475
491
  function completePromise(action) {
@@ -1 +1 @@
1
- {"version":3,"file":"SharedSyncImplementation.js","sourceRoot":"","sources":["../../../src/worker/sync/SharedSyncImplementation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SharedSyncImplementation.js","sourceRoot":"","sources":["../../../src/worker/sync/SharedSyncImplementation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powersync/web",
3
- "version": "2.3.1",
3
+ "version": "2.4.0",
4
4
  "description": "PowerSync Web SDK",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.js",
@@ -54,15 +54,15 @@
54
54
  "author": "PowerSync",
55
55
  "license": "Apache-2.0",
56
56
  "peerDependencies": {
57
- "@powersync/common": "^2.2.1",
58
- "@powersync/shared-internals": "^1.2.0"
57
+ "@powersync/common": "^2.3.0",
58
+ "@powersync/shared-internals": "^1.3.0"
59
59
  },
60
60
  "dependencies": {
61
- "@journeyapps/wa-sqlite": "2.0.4",
61
+ "@journeyapps/wa-sqlite": "2.0.5",
62
62
  "comlink": "^4.4.2",
63
63
  "commander": "^12.1.0",
64
- "@powersync/common": "2.2.1",
65
- "@powersync/shared-internals": "1.2.0"
64
+ "@powersync/common": "2.3.0",
65
+ "@powersync/shared-internals": "1.3.0"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@types/uuid": "^9.0.6",
@@ -137,7 +137,7 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
137
137
  await this.waitForReady();
138
138
 
139
139
  const sync = this.generateStreamingImplementation();
140
- const onDispose = sync.registerListener({
140
+ const removeStatusListener = sync.registerListener({
141
141
  statusChanged: (snapshot) => {
142
142
  this.syncStatus = snapshot;
143
143
  const json = snapshot.toJSON();
@@ -147,7 +147,13 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
147
147
 
148
148
  return {
149
149
  sync,
150
- onDispose
150
+ onDispose: () => {
151
+ removeStatusListener();
152
+
153
+ // Clear transient state so new tabs don't inherit stale errors.
154
+ // Preserve core status, including hasSynced and lastSyncedAt.
155
+ this.syncStatus &&= new SyncStatusSnapshot(this.syncStatus.core, {});
156
+ }
151
157
  };
152
158
  },
153
159
  logger: this.logger,
@@ -386,26 +392,33 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
386
392
  this.logger.log({ level: LogLevels.error, message: 'error invalidating credentials', error });
387
393
  }
388
394
  },
389
- fetchCredentials: () => {
390
- return this.#useConnector((port) => {
391
- this.logger.log({
392
- level: LogLevels.info,
393
- message: 'calling the last port client provider for credentials'
394
- });
395
-
396
- return port.clientProvider.fetchCredentials();
397
- }, 'fetchCredentials');
395
+ fetchCredentials: (
396
+ signal?: AbortSignal
397
+ ) => {
398
+ return this.#useConnector(
399
+ (port) => {
400
+ this.logger.log({
401
+ level: LogLevels.info,
402
+ message: 'calling the last port client provider for credentials'
403
+ });
404
+
405
+ return port.clientProvider.fetchCredentials();
406
+ },
407
+ 'fetchCredentials',
408
+ signal
409
+ );
398
410
  }
399
411
  },
400
412
  this.logger
401
413
  ),
402
- uploadCrud: () => {
403
- return this.#useConnector((port) => port.clientProvider.uploadCrud(), 'uploadCrud');
414
+ uploadCrud: (signal) => {
415
+ return this.#useConnector((port) => port.clientProvider.uploadCrud(), 'uploadCrud', signal);
404
416
  },
405
- postCheckpointRequest: (clientId, requestId) => {
417
+ postCheckpointRequest: (clientId, requestId, signal) => {
406
418
  return this.#useConnector(
407
419
  (port) => port.clientProvider.postCheckpointRequest(clientId, requestId),
408
- 'postCheckpointRequest'
420
+ 'postCheckpointRequest',
421
+ signal
409
422
  );
410
423
  },
411
424
  ...syncParams.streamOptions,
@@ -415,25 +428,40 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
415
428
  });
416
429
  }
417
430
 
418
- async #useConnector<T>(inner: (port: WrappedSyncPort) => Promise<T>, debugContext: string): Promise<T> {
419
- const lastPort = await this.getLastWrappedPort();
420
- if (!lastPort) {
421
- throw new Error(`No client port found for ${debugContext}`);
422
- }
423
-
424
- return new Promise((resolve, reject) => {
425
- function portClosed() {
426
- reject(new Error(`Tab closed while handling ${debugContext}`));
431
+ /**
432
+ * Calls into a client tab, stopping the wait on disconnect when a signal is supplied.
433
+ */
434
+ async #useConnector<T>(
435
+ inner: (port: WrappedSyncPort) => Promise<T>,
436
+ debugContext: string,
437
+ signal?: AbortSignal
438
+ ): Promise<T> {
439
+ const action = async () => {
440
+ const lastPort = await this.getLastWrappedPort();
441
+ if (!lastPort) {
442
+ throw new Error(`No client port found for ${debugContext}`);
427
443
  }
428
444
 
429
- lastPort.closeListeners.push(portClosed);
445
+ return await new Promise<T>((resolve, reject) => {
446
+ const portClosed = () => {
447
+ reject(new Error(`Tab closed while handling ${debugContext}`));
448
+ };
430
449
 
431
- inner(lastPort)
432
- .then(resolve, reject)
433
- .finally(() => {
434
- lastPort.closeListeners.splice(lastPort.closeListeners.indexOf(portClosed), 1);
435
- });
436
- });
450
+ lastPort.closeListeners.push(portClosed);
451
+
452
+ inner(lastPort)
453
+ .then(resolve, reject)
454
+ .finally(() => {
455
+ const index = lastPort.closeListeners.indexOf(portClosed);
456
+ if (index >= 0) {
457
+ lastPort.closeListeners.splice(index, 1);
458
+ }
459
+ });
460
+ });
461
+ };
462
+
463
+ // Include port lookup in the guard: port removal can hold portMutex.
464
+ return signal ? withAbort({ signal, action }) : action();
437
465
  }
438
466
 
439
467
  /**
@@ -619,15 +647,18 @@ function withAbort<T>(options: {
619
647
  cleanupOnAbort?: (result: T) => void;
620
648
  }): Promise<T> {
621
649
  const { action, signal, cleanupOnAbort } = options;
650
+ const abortError = () =>
651
+ signal.reason instanceof Error ? signal.reason : new AbortOperation('Operation aborted by abort controller');
652
+
622
653
  return new Promise((resolve, reject) => {
623
654
  if (signal.aborted) {
624
- reject(new AbortOperation('Operation aborted by abort controller'));
655
+ reject(abortError());
625
656
  return;
626
657
  }
627
658
 
628
659
  function handleAbort() {
629
660
  signal.removeEventListener('abort', handleAbort);
630
- reject(new AbortOperation('Operation aborted by abort controller'));
661
+ reject(abortError());
631
662
  }
632
663
 
633
664
  signal.addEventListener('abort', handleAbort, { once: true });
@@ -1,2 +0,0 @@
1
- import{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)=>Math.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(),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());class 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)}#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