@powersync/web 0.0.0-dev-20251201150812 → 0.0.0-dev-20251203144301

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.
Files changed (39) hide show
  1. package/dist/index.umd.js +2415 -58
  2. package/dist/index.umd.js.map +1 -1
  3. package/dist/worker/SharedSyncImplementation.umd.js +1884 -39
  4. package/dist/worker/SharedSyncImplementation.umd.js.map +1 -1
  5. package/dist/worker/WASQLiteDB.umd.js +1809 -8
  6. package/dist/worker/WASQLiteDB.umd.js.map +1 -1
  7. package/dist/worker/node_modules_journeyapps_wa-sqlite_src_examples_AccessHandlePoolVFS_js.umd.js +0 -1203
  8. package/dist/worker/node_modules_journeyapps_wa-sqlite_src_examples_AccessHandlePoolVFS_js.umd.js.map +1 -1
  9. package/dist/worker/node_modules_journeyapps_wa-sqlite_src_examples_IDBBatchAtomicVFS_js.umd.js +0 -1203
  10. package/dist/worker/node_modules_journeyapps_wa-sqlite_src_examples_IDBBatchAtomicVFS_js.umd.js.map +1 -1
  11. package/lib/package.json +2 -2
  12. package/lib/src/db/adapters/LockedAsyncDatabaseAdapter.d.ts +4 -1
  13. package/lib/src/db/adapters/LockedAsyncDatabaseAdapter.js +52 -28
  14. package/lib/src/db/adapters/wa-sqlite/WASQLiteConnection.js +3 -3
  15. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.d.ts +1 -1
  16. package/lib/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +2 -2
  17. package/lib/src/worker/db/WASQLiteDB.worker.js +0 -1
  18. package/lib/src/worker/db/opfs.d.ts +96 -0
  19. package/lib/src/worker/db/opfs.js +582 -0
  20. package/lib/src/worker/sync/SharedSyncImplementation.js +23 -4
  21. package/lib/tsconfig.tsbuildinfo +1 -1
  22. package/package.json +5 -5
  23. package/src/db/adapters/LockedAsyncDatabaseAdapter.ts +71 -48
  24. package/src/db/adapters/wa-sqlite/WASQLiteConnection.ts +3 -4
  25. package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +3 -3
  26. package/src/worker/db/WASQLiteDB.worker.ts +0 -2
  27. package/src/worker/db/opfs.ts +623 -0
  28. package/src/worker/sync/SharedSyncImplementation.ts +29 -8
  29. package/dist/worker/node_modules_journeyapps_wa-sqlite_src_examples_OPFSCoopSyncVFS_js.umd.js +0 -1813
  30. package/dist/worker/node_modules_journeyapps_wa-sqlite_src_examples_OPFSCoopSyncVFS_js.umd.js.map +0 -1
  31. package/lib/src/worker/sync/MockSyncService.d.ts +0 -2
  32. package/lib/src/worker/sync/MockSyncService.js +0 -3
  33. package/lib/src/worker/sync/MockSyncServiceTypes.d.ts +0 -101
  34. package/lib/src/worker/sync/MockSyncServiceTypes.js +0 -1
  35. package/lib/src/worker/sync/MockSyncServiceWorker.d.ts +0 -56
  36. package/lib/src/worker/sync/MockSyncServiceWorker.js +0 -369
  37. package/src/worker/sync/MockSyncService.ts +0 -3
  38. package/src/worker/sync/MockSyncServiceTypes.ts +0 -71
  39. package/src/worker/sync/MockSyncServiceWorker.ts +0 -406
package/dist/index.umd.js CHANGED
@@ -1,13 +1,13 @@
1
1
  (function webpackUniversalModuleDefinition(root, factory) {
2
2
  if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory(require("@powersync/common"), require("async-mutex"), require("comlink"), require("@journeyapps/wa-sqlite"), require("@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js"), require("@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js"), require("@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js"));
3
+ module.exports = factory(require("@powersync/common"), require("async-mutex"), require("comlink"), require("@journeyapps/wa-sqlite"), require("@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js"), require("@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js"));
4
4
  else if(typeof define === 'function' && define.amd)
5
- define(["@powersync/common", "async-mutex", "comlink", "@journeyapps/wa-sqlite", "@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js", "@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js", "@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js"], factory);
5
+ define(["@powersync/common", "async-mutex", "comlink", "@journeyapps/wa-sqlite", "@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js", "@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js"], factory);
6
6
  else if(typeof exports === 'object')
7
- exports["sdk_web"] = factory(require("@powersync/common"), require("async-mutex"), require("comlink"), require("@journeyapps/wa-sqlite"), require("@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js"), require("@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js"), require("@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js"));
7
+ exports["sdk_web"] = factory(require("@powersync/common"), require("async-mutex"), require("comlink"), require("@journeyapps/wa-sqlite"), require("@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js"), require("@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js"));
8
8
  else
9
- root["sdk_web"] = factory(root["@powersync/common"], root["async-mutex"], root["comlink"], root["@journeyapps/wa-sqlite"], root["@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js"], root["@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js"], root["@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js"]);
10
- })(self, (__WEBPACK_EXTERNAL_MODULE__powersync_common__, __WEBPACK_EXTERNAL_MODULE_async_mutex__, __WEBPACK_EXTERNAL_MODULE_comlink__, __WEBPACK_EXTERNAL_MODULE__journeyapps_wa_sqlite__, __WEBPACK_EXTERNAL_MODULE__journeyapps_wa_sqlite_src_examples_OPFSCoopSyncVFS_js__, __WEBPACK_EXTERNAL_MODULE__journeyapps_wa_sqlite_src_examples_AccessHandlePoolVFS_js__, __WEBPACK_EXTERNAL_MODULE__journeyapps_wa_sqlite_src_examples_IDBBatchAtomicVFS_js__) => {
9
+ root["sdk_web"] = factory(root["@powersync/common"], root["async-mutex"], root["comlink"], root["@journeyapps/wa-sqlite"], root["@journeyapps/wa-sqlite/src/examples/AccessHandlePoolVFS.js"], root["@journeyapps/wa-sqlite/src/examples/IDBBatchAtomicVFS.js"]);
10
+ })(self, (__WEBPACK_EXTERNAL_MODULE__powersync_common__, __WEBPACK_EXTERNAL_MODULE_async_mutex__, __WEBPACK_EXTERNAL_MODULE_comlink__, __WEBPACK_EXTERNAL_MODULE__journeyapps_wa_sqlite__, __WEBPACK_EXTERNAL_MODULE__journeyapps_wa_sqlite_src_examples_AccessHandlePoolVFS_js__, __WEBPACK_EXTERNAL_MODULE__journeyapps_wa_sqlite_src_examples_IDBBatchAtomicVFS_js__) => {
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
@@ -123,6 +123,1731 @@ module.exports = __webpack_require__.p + "e797080f5ed0b5324166.wasm";
123
123
 
124
124
  /***/ }),
125
125
 
126
+ /***/ "../../node_modules/@journeyapps/wa-sqlite/src/FacadeVFS.js":
127
+ /*!******************************************************************!*\
128
+ !*** ../../node_modules/@journeyapps/wa-sqlite/src/FacadeVFS.js ***!
129
+ \******************************************************************/
130
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
131
+
132
+ "use strict";
133
+ __webpack_require__.r(__webpack_exports__);
134
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
135
+ /* harmony export */ FacadeVFS: () => (/* binding */ FacadeVFS)
136
+ /* harmony export */ });
137
+ /* harmony import */ var _VFS_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./VFS.js */ "../../node_modules/@journeyapps/wa-sqlite/src/VFS.js");
138
+ // Copyright 2024 Roy T. Hashimoto. All Rights Reserved.
139
+
140
+
141
+ const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;
142
+
143
+ // Milliseconds since Julian epoch as a BigInt.
144
+ // https://github.com/sqlite/sqlite/blob/e57527c14f7b7cfa6e32eeab5c549d50c4fa3674/src/os_unix.c#L6872-L6882
145
+ const UNIX_EPOCH = 24405875n * 8640000n;
146
+
147
+ // Convenience base class for a JavaScript VFS.
148
+ // The raw xOpen, xRead, etc. function signatures receive only C primitives
149
+ // which aren't easy to work with. This class provides corresponding calls
150
+ // like jOpen, jRead, etc., which receive JavaScript-friendlier arguments
151
+ // such as string, Uint8Array, and DataView.
152
+ class FacadeVFS extends _VFS_js__WEBPACK_IMPORTED_MODULE_0__.Base {
153
+ /**
154
+ * @param {string} name
155
+ * @param {object} module
156
+ */
157
+ constructor(name, module) {
158
+ super(name, module);
159
+ }
160
+
161
+ /**
162
+ * Override to indicate which methods are asynchronous.
163
+ * @param {string} methodName
164
+ * @returns {boolean}
165
+ */
166
+ hasAsyncMethod(methodName) {
167
+ // The input argument is a string like "xOpen", so convert to "jOpen".
168
+ // Then check if the method exists and is async.
169
+ const jMethodName = `j${methodName.slice(1)}`;
170
+ return this[jMethodName] instanceof AsyncFunction;
171
+ }
172
+
173
+ /**
174
+ * Return the filename for a file id for use by mixins.
175
+ * @param {number} pFile
176
+ * @returns {string}
177
+ */
178
+ getFilename(pFile) {
179
+ throw new Error('unimplemented');
180
+ }
181
+
182
+ /**
183
+ * @param {string?} filename
184
+ * @param {number} pFile
185
+ * @param {number} flags
186
+ * @param {DataView} pOutFlags
187
+ * @returns {number|Promise<number>}
188
+ */
189
+ jOpen(filename, pFile, flags, pOutFlags) {
190
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CANTOPEN;
191
+ }
192
+
193
+ /**
194
+ * @param {string} filename
195
+ * @param {number} syncDir
196
+ * @returns {number|Promise<number>}
197
+ */
198
+ jDelete(filename, syncDir) {
199
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
200
+ }
201
+
202
+ /**
203
+ * @param {string} filename
204
+ * @param {number} flags
205
+ * @param {DataView} pResOut
206
+ * @returns {number|Promise<number>}
207
+ */
208
+ jAccess(filename, flags, pResOut) {
209
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
210
+ }
211
+
212
+ /**
213
+ * @param {string} filename
214
+ * @param {Uint8Array} zOut
215
+ * @returns {number|Promise<number>}
216
+ */
217
+ jFullPathname(filename, zOut) {
218
+ // Copy the filename to the output buffer.
219
+ const { read, written } = new TextEncoder().encodeInto(filename, zOut);
220
+ if (read < filename.length) return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR;
221
+ if (written >= zOut.length) return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR;
222
+ zOut[written] = 0;
223
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
224
+ }
225
+
226
+ /**
227
+ * @param {Uint8Array} zBuf
228
+ * @returns {number|Promise<number>}
229
+ */
230
+ jGetLastError(zBuf) {
231
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
232
+ }
233
+
234
+ /**
235
+ * @param {number} pFile
236
+ * @returns {number|Promise<number>}
237
+ */
238
+ jClose(pFile) {
239
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
240
+ }
241
+
242
+ /**
243
+ * @param {number} pFile
244
+ * @param {Uint8Array} pData
245
+ * @param {number} iOffset
246
+ * @returns {number|Promise<number>}
247
+ */
248
+ jRead(pFile, pData, iOffset) {
249
+ pData.fill(0);
250
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_SHORT_READ;
251
+ }
252
+
253
+ /**
254
+ * @param {number} pFile
255
+ * @param {Uint8Array} pData
256
+ * @param {number} iOffset
257
+ * @returns {number|Promise<number>}
258
+ */
259
+ jWrite(pFile, pData, iOffset) {
260
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_WRITE;
261
+ }
262
+
263
+ /**
264
+ * @param {number} pFile
265
+ * @param {number} size
266
+ * @returns {number|Promise<number>}
267
+ */
268
+ jTruncate(pFile, size) {
269
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
270
+ }
271
+
272
+ /**
273
+ * @param {number} pFile
274
+ * @param {number} flags
275
+ * @returns {number|Promise<number>}
276
+ */
277
+ jSync(pFile, flags) {
278
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
279
+ }
280
+
281
+ /**
282
+ * @param {number} pFile
283
+ * @param {DataView} pSize
284
+ * @returns {number|Promise<number>}
285
+ */
286
+ jFileSize(pFile, pSize) {
287
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
288
+ }
289
+
290
+ /**
291
+ * @param {number} pFile
292
+ * @param {number} lockType
293
+ * @returns {number|Promise<number>}
294
+ */
295
+ jLock(pFile, lockType) {
296
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
297
+ }
298
+
299
+ /**
300
+ * @param {number} pFile
301
+ * @param {number} lockType
302
+ * @returns {number|Promise<number>}
303
+ */
304
+ jUnlock(pFile, lockType) {
305
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
306
+ }
307
+
308
+ /**
309
+ * @param {number} pFile
310
+ * @param {DataView} pResOut
311
+ * @returns {number|Promise<number>}
312
+ */
313
+ jCheckReservedLock(pFile, pResOut) {
314
+ pResOut.setInt32(0, 0, true);
315
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
316
+ }
317
+
318
+ /**
319
+ * @param {number} pFile
320
+ * @param {number} op
321
+ * @param {DataView} pArg
322
+ * @returns {number|Promise<number>}
323
+ */
324
+ jFileControl(pFile, op, pArg) {
325
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_NOTFOUND;
326
+ }
327
+
328
+ /**
329
+ * @param {number} pFile
330
+ * @returns {number|Promise<number>}
331
+ */
332
+ jSectorSize(pFile) {
333
+ return super.xSectorSize(pFile);
334
+ }
335
+
336
+ /**
337
+ * @param {number} pFile
338
+ * @returns {number|Promise<number>}
339
+ */
340
+ jDeviceCharacteristics(pFile) {
341
+ return 0;
342
+ }
343
+
344
+ /**
345
+ * @param {number} pVfs
346
+ * @param {number} zName
347
+ * @param {number} pFile
348
+ * @param {number} flags
349
+ * @param {number} pOutFlags
350
+ * @returns {number|Promise<number>}
351
+ */
352
+ xOpen(pVfs, zName, pFile, flags, pOutFlags) {
353
+ const filename = this.#decodeFilename(zName, flags);
354
+ const pOutFlagsView = this.#makeTypedDataView('Int32', pOutFlags);
355
+ this['log']?.('jOpen', filename, pFile, '0x' + flags.toString(16));
356
+ return this.jOpen(filename, pFile, flags, pOutFlagsView);
357
+ }
358
+
359
+ /**
360
+ * @param {number} pVfs
361
+ * @param {number} nByte
362
+ * @param {number} pCharOut
363
+ * @returns {number|Promise<number>}
364
+ */
365
+ xRandomness(pVfs, nByte, pCharOut) {
366
+ const randomArray = new Uint8Array(nByte);
367
+ crypto.getRandomValues(randomArray);
368
+ // Copy randomArray to the WebAssembly memory
369
+ const buffer = pCharOut; // Pointer to memory in WebAssembly
370
+ this._module.HEAPU8.set(randomArray, buffer); // Copy randomArray into memory starting at buffer
371
+ return nByte;
372
+ }
373
+
374
+ /**
375
+ * Gets the current time as milliseconds since Unix epoch
376
+ * @param {number} pVfs pointer to the VFS
377
+ * @param {number} pTime pointer to write the time value
378
+ * @returns {number} SQLite error code
379
+ */
380
+ xCurrentTimeInt64(pVfs, pTime) {
381
+ // Create a DataView to write the current time
382
+ const timeView = this.#makeTypedDataView('BigInt64', pTime);
383
+
384
+ const currentTime = BigInt(Date.now());
385
+ // Convert the current time to milliseconds since Unix epoch
386
+ const value = UNIX_EPOCH + currentTime;
387
+
388
+ // Write the time value to the pointer location
389
+ timeView.setBigInt64(0, value, true);
390
+
391
+ return _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
392
+ }
393
+
394
+ /**
395
+ * @param {number} pVfs
396
+ * @param {number} zName
397
+ * @param {number} syncDir
398
+ * @returns {number|Promise<number>}
399
+ */
400
+ xDelete(pVfs, zName, syncDir) {
401
+ const filename = this._module.UTF8ToString(zName);
402
+ this['log']?.('jDelete', filename, syncDir);
403
+ return this.jDelete(filename, syncDir);
404
+ }
405
+
406
+ /**
407
+ * @param {number} pVfs
408
+ * @param {number} zName
409
+ * @param {number} flags
410
+ * @param {number} pResOut
411
+ * @returns {number|Promise<number>}
412
+ */
413
+ xAccess(pVfs, zName, flags, pResOut) {
414
+ const filename = this._module.UTF8ToString(zName);
415
+ const pResOutView = this.#makeTypedDataView('Int32', pResOut);
416
+ this['log']?.('jAccess', filename, flags);
417
+ return this.jAccess(filename, flags, pResOutView);
418
+ }
419
+
420
+ /**
421
+ * @param {number} pVfs
422
+ * @param {number} zName
423
+ * @param {number} nOut
424
+ * @param {number} zOut
425
+ * @returns {number|Promise<number>}
426
+ */
427
+ xFullPathname(pVfs, zName, nOut, zOut) {
428
+ const filename = this._module.UTF8ToString(zName);
429
+ const zOutArray = this._module.HEAPU8.subarray(zOut, zOut + nOut);
430
+ this['log']?.('jFullPathname', filename, nOut);
431
+ return this.jFullPathname(filename, zOutArray);
432
+ }
433
+
434
+ /**
435
+ * @param {number} pVfs
436
+ * @param {number} nBuf
437
+ * @param {number} zBuf
438
+ * @returns {number|Promise<number>}
439
+ */
440
+ xGetLastError(pVfs, nBuf, zBuf) {
441
+ const zBufArray = this._module.HEAPU8.subarray(zBuf, zBuf + nBuf);
442
+ this['log']?.('jGetLastError', nBuf);
443
+ return this.jGetLastError(zBufArray);
444
+ }
445
+
446
+ /**
447
+ * @param {number} pFile
448
+ * @returns {number|Promise<number>}
449
+ */
450
+ xClose(pFile) {
451
+ this['log']?.('jClose', pFile);
452
+ return this.jClose(pFile);
453
+ }
454
+
455
+ /**
456
+ * @param {number} pFile
457
+ * @param {number} pData
458
+ * @param {number} iAmt
459
+ * @param {number} iOffsetLo
460
+ * @param {number} iOffsetHi
461
+ * @returns {number|Promise<number>}
462
+ */
463
+ xRead(pFile, pData, iAmt, iOffsetLo, iOffsetHi) {
464
+ const pDataArray = this.#makeDataArray(pData, iAmt);
465
+ const iOffset = delegalize(iOffsetLo, iOffsetHi);
466
+ this['log']?.('jRead', pFile, iAmt, iOffset);
467
+ return this.jRead(pFile, pDataArray, iOffset);
468
+ }
469
+
470
+ /**
471
+ * @param {number} pFile
472
+ * @param {number} pData
473
+ * @param {number} iAmt
474
+ * @param {number} iOffsetLo
475
+ * @param {number} iOffsetHi
476
+ * @returns {number|Promise<number>}
477
+ */
478
+ xWrite(pFile, pData, iAmt, iOffsetLo, iOffsetHi) {
479
+ const pDataArray = this.#makeDataArray(pData, iAmt);
480
+ const iOffset = delegalize(iOffsetLo, iOffsetHi);
481
+ this['log']?.('jWrite', pFile, pDataArray, iOffset);
482
+ return this.jWrite(pFile, pDataArray, iOffset);
483
+ }
484
+
485
+ /**
486
+ * @param {number} pFile
487
+ * @param {number} sizeLo
488
+ * @param {number} sizeHi
489
+ * @returns {number|Promise<number>}
490
+ */
491
+ xTruncate(pFile, sizeLo, sizeHi) {
492
+ const size = delegalize(sizeLo, sizeHi);
493
+ this['log']?.('jTruncate', pFile, size);
494
+ return this.jTruncate(pFile, size);
495
+ }
496
+
497
+ /**
498
+ * @param {number} pFile
499
+ * @param {number} flags
500
+ * @returns {number|Promise<number>}
501
+ */
502
+ xSync(pFile, flags) {
503
+ this['log']?.('jSync', pFile, flags);
504
+ return this.jSync(pFile, flags);
505
+ }
506
+
507
+ /**
508
+ *
509
+ * @param {number} pFile
510
+ * @param {number} pSize
511
+ * @returns {number|Promise<number>}
512
+ */
513
+ xFileSize(pFile, pSize) {
514
+ const pSizeView = this.#makeTypedDataView('BigInt64', pSize);
515
+ this['log']?.('jFileSize', pFile);
516
+ return this.jFileSize(pFile, pSizeView);
517
+ }
518
+
519
+ /**
520
+ * @param {number} pFile
521
+ * @param {number} lockType
522
+ * @returns {number|Promise<number>}
523
+ */
524
+ xLock(pFile, lockType) {
525
+ this['log']?.('jLock', pFile, lockType);
526
+ return this.jLock(pFile, lockType);
527
+ }
528
+
529
+ /**
530
+ * @param {number} pFile
531
+ * @param {number} lockType
532
+ * @returns {number|Promise<number>}
533
+ */
534
+ xUnlock(pFile, lockType) {
535
+ this['log']?.('jUnlock', pFile, lockType);
536
+ return this.jUnlock(pFile, lockType);
537
+ }
538
+
539
+ /**
540
+ * @param {number} pFile
541
+ * @param {number} pResOut
542
+ * @returns {number|Promise<number>}
543
+ */
544
+ xCheckReservedLock(pFile, pResOut) {
545
+ const pResOutView = this.#makeTypedDataView('Int32', pResOut);
546
+ this['log']?.('jCheckReservedLock', pFile);
547
+ return this.jCheckReservedLock(pFile, pResOutView);
548
+ }
549
+
550
+ /**
551
+ * @param {number} pFile
552
+ * @param {number} op
553
+ * @param {number} pArg
554
+ * @returns {number|Promise<number>}
555
+ */
556
+ xFileControl(pFile, op, pArg) {
557
+ const pArgView = new DataView(
558
+ this._module.HEAPU8.buffer,
559
+ this._module.HEAPU8.byteOffset + pArg);
560
+ this['log']?.('jFileControl', pFile, op, pArgView);
561
+ return this.jFileControl(pFile, op, pArgView);
562
+ }
563
+
564
+ /**
565
+ * @param {number} pFile
566
+ * @returns {number|Promise<number>}
567
+ */
568
+ xSectorSize(pFile) {
569
+ this['log']?.('jSectorSize', pFile);
570
+ return this.jSectorSize(pFile);
571
+ }
572
+
573
+ /**
574
+ * @param {number} pFile
575
+ * @returns {number|Promise<number>}
576
+ */
577
+ xDeviceCharacteristics(pFile) {
578
+ this['log']?.('jDeviceCharacteristics', pFile);
579
+ return this.jDeviceCharacteristics(pFile);
580
+ }
581
+
582
+ /**
583
+ * Wrapped DataView for pointer arguments.
584
+ * Pointers to a single value are passed using a DataView-like class.
585
+ * This wrapper class prevents use of incorrect type or endianness, and
586
+ * reacquires the underlying buffer when the WebAssembly memory is resized.
587
+ * @param {'Int32'|'BigInt64'} type
588
+ * @param {number} byteOffset
589
+ * @returns {DataView}
590
+ */
591
+ #makeTypedDataView(type, byteOffset) {
592
+ // @ts-ignore
593
+ return new DataViewProxy(this._module, byteOffset, type);
594
+ }
595
+
596
+ /**
597
+ * Wrapped Uint8Array for buffer arguments.
598
+ * Memory blocks are passed as a Uint8Array-like class. This wrapper
599
+ * class reacquires the underlying buffer when the WebAssembly memory
600
+ * is resized.
601
+ * @param {number} byteOffset
602
+ * @param {number} byteLength
603
+ * @returns {Uint8Array}
604
+ */
605
+ #makeDataArray(byteOffset, byteLength) {
606
+ // @ts-ignore
607
+ return new Uint8ArrayProxy(this._module, byteOffset, byteLength);
608
+ }
609
+
610
+ #decodeFilename(zName, flags) {
611
+ if (flags & _VFS_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_URI) {
612
+ // The first null-terminated string is the URI path. Subsequent
613
+ // strings are query parameter keys and values.
614
+ // https://www.sqlite.org/c3ref/open.html#urifilenamesinsqlite3open
615
+ let pName = zName;
616
+ let state = 1;
617
+ const charCodes = [];
618
+ while (state) {
619
+ const charCode = this._module.HEAPU8[pName++];
620
+ if (charCode) {
621
+ charCodes.push(charCode);
622
+ } else {
623
+ if (!this._module.HEAPU8[pName]) state = null;
624
+ switch (state) {
625
+ case 1: // path
626
+ charCodes.push('?'.charCodeAt(0));
627
+ state = 2;
628
+ break;
629
+ case 2: // key
630
+ charCodes.push('='.charCodeAt(0));
631
+ state = 3;
632
+ break;
633
+ case 3: // value
634
+ charCodes.push('&'.charCodeAt(0));
635
+ state = 2;
636
+ break;
637
+ }
638
+ }
639
+ }
640
+ return new TextDecoder().decode(new Uint8Array(charCodes));
641
+ }
642
+ return zName ? this._module.UTF8ToString(zName) : null;
643
+ }
644
+ }
645
+
646
+ // Emscripten "legalizes" 64-bit integer arguments by passing them as
647
+ // two 32-bit signed integers.
648
+ function delegalize(lo32, hi32) {
649
+ return (hi32 * 0x100000000) + lo32 + (lo32 < 0 ? 2**32 : 0);
650
+ }
651
+
652
+ // This class provides a Uint8Array-like interface for a WebAssembly memory
653
+ // buffer. It is used to access memory blocks passed as arguments to
654
+ // xRead, xWrite, etc. The class reacquires the underlying buffer when the
655
+ // WebAssembly memory is resized, which can happen when the memory is
656
+ // detached and resized by the WebAssembly module.
657
+ //
658
+ // Note that although this class implements the same methods as Uint8Array,
659
+ // it is not a real Uint8Array and passing it to functions that expect
660
+ // a Uint8Array may not work. Use subarray() to get a real Uint8Array
661
+ // if needed.
662
+ class Uint8ArrayProxy {
663
+ #module;
664
+
665
+ #_array = new Uint8Array()
666
+ get #array() {
667
+ if (this.#_array.buffer.byteLength === 0) {
668
+ // WebAssembly memory resize detached the buffer so re-create the
669
+ // array with the new buffer.
670
+ this.#_array = this.#module.HEAPU8.subarray(
671
+ this.byteOffset,
672
+ this.byteOffset + this.byteLength);
673
+ }
674
+ return this.#_array;
675
+ }
676
+
677
+ /**
678
+ * @param {*} module
679
+ * @param {number} byteOffset
680
+ * @param {number} byteLength
681
+ */
682
+ constructor(module, byteOffset, byteLength) {
683
+ this.#module = module;
684
+ this.byteOffset = byteOffset;
685
+ this.length = this.byteLength = byteLength;
686
+ }
687
+
688
+ get buffer() {
689
+ return this.#array.buffer;
690
+ }
691
+
692
+ at(index) {
693
+ return this.#array.at(index);
694
+ }
695
+ copyWithin(target, start, end) {
696
+ this.#array.copyWithin(target, start, end);
697
+ }
698
+ entries() {
699
+ return this.#array.entries();
700
+ }
701
+ every(predicate) {
702
+ return this.#array.every(predicate);
703
+ }
704
+ fill(value, start, end) {
705
+ this.#array.fill(value, start, end);
706
+ }
707
+ filter(predicate) {
708
+ return this.#array.filter(predicate);
709
+ }
710
+ find(predicate) {
711
+ return this.#array.find(predicate);
712
+ }
713
+ findIndex(predicate) {
714
+ return this.#array.findIndex(predicate);
715
+ }
716
+ findLast(predicate) {
717
+ return this.#array.findLast(predicate);
718
+ }
719
+ findLastIndex(predicate) {
720
+ return this.#array.findLastIndex(predicate);
721
+ }
722
+ forEach(callback) {
723
+ this.#array.forEach(callback);
724
+ }
725
+ includes(value, start) {
726
+ return this.#array.includes(value, start);
727
+ }
728
+ indexOf(value, start) {
729
+ return this.#array.indexOf(value, start);
730
+ }
731
+ join(separator) {
732
+ return this.#array.join(separator);
733
+ }
734
+ keys() {
735
+ return this.#array.keys();
736
+ }
737
+ lastIndexOf(value, start) {
738
+ return this.#array.lastIndexOf(value, start);
739
+ }
740
+ map(callback) {
741
+ return this.#array.map(callback);
742
+ }
743
+ reduce(callback, initialValue) {
744
+ return this.#array.reduce(callback, initialValue);
745
+ }
746
+ reduceRight(callback, initialValue) {
747
+ return this.#array.reduceRight(callback, initialValue);
748
+ }
749
+ reverse() {
750
+ this.#array.reverse();
751
+ }
752
+ set(array, offset) {
753
+ this.#array.set(array, offset);
754
+ }
755
+ slice(start, end) {
756
+ return this.#array.slice(start, end);
757
+ }
758
+ some(predicate) {
759
+ return this.#array.some(predicate);
760
+ }
761
+ sort(compareFn) {
762
+ this.#array.sort(compareFn);
763
+ }
764
+ subarray(begin, end) {
765
+ return this.#array.subarray(begin, end);
766
+ }
767
+ toLocaleString(locales, options) {
768
+ // @ts-ignore
769
+ return this.#array.toLocaleString(locales, options);
770
+ }
771
+ toReversed() {
772
+ return this.#array.toReversed();
773
+ }
774
+ toSorted(compareFn) {
775
+ return this.#array.toSorted(compareFn);
776
+ }
777
+ toString() {
778
+ return this.#array.toString();
779
+ }
780
+ values() {
781
+ return this.#array.values();
782
+ }
783
+ with(index, value) {
784
+ return this.#array.with(index, value);
785
+ }
786
+ [Symbol.iterator]() {
787
+ return this.#array[Symbol.iterator]();
788
+ }
789
+ }
790
+
791
+ // This class provides a DataView-like interface for a WebAssembly memory
792
+ // buffer, restricted to either Int32 or BigInt64 types. It also reacquires
793
+ // the underlying buffer when the WebAssembly memory is resized, which can
794
+ // happen when the memory is detached and resized by the WebAssembly module.
795
+ class DataViewProxy {
796
+ #module;
797
+ #type;
798
+
799
+ #_view = new DataView(new ArrayBuffer(0));
800
+ get #view() {
801
+ if (this.#_view.buffer.byteLength === 0) {
802
+ // WebAssembly memory resize detached the buffer so re-create the
803
+ // view with the new buffer.
804
+ this.#_view = new DataView(
805
+ this.#module.HEAPU8.buffer,
806
+ this.#module.HEAPU8.byteOffset + this.byteOffset);
807
+ }
808
+ return this.#_view;
809
+ }
810
+
811
+ /**
812
+ * @param {*} module
813
+ * @param {number} byteOffset
814
+ * @param {'Int32'|'BigInt64'} type
815
+ */
816
+ constructor(module, byteOffset, type) {
817
+ this.#module = module;
818
+ this.byteOffset = byteOffset;
819
+ this.#type = type;
820
+ }
821
+
822
+ get buffer() {
823
+ return this.#view.buffer;
824
+ }
825
+ get byteLength() {
826
+ return this.#type === 'Int32' ? 4 : 8;
827
+ }
828
+
829
+ getInt32(byteOffset, littleEndian) {
830
+ if (this.#type !== 'Int32') {
831
+ throw new Error('invalid type');
832
+ }
833
+ if (!littleEndian) throw new Error('must be little endian');
834
+ return this.#view.getInt32(byteOffset, littleEndian);
835
+ }
836
+ setInt32(byteOffset, value, littleEndian) {
837
+ if (this.#type !== 'Int32') {
838
+ throw new Error('invalid type');
839
+ }
840
+ if (!littleEndian) throw new Error('must be little endian');
841
+ this.#view.setInt32(byteOffset, value, littleEndian);
842
+ }
843
+ getBigInt64(byteOffset, littleEndian) {
844
+ if (this.#type !== 'BigInt64') {
845
+ throw new Error('invalid type');
846
+ }
847
+ if (!littleEndian) throw new Error('must be little endian');
848
+ return this.#view.getBigInt64(byteOffset, littleEndian);
849
+ }
850
+ setBigInt64(byteOffset, value, littleEndian) {
851
+ if (this.#type !== 'BigInt64') {
852
+ throw new Error('invalid type');
853
+ }
854
+ if (!littleEndian) throw new Error('must be little endian');
855
+ this.#view.setBigInt64(byteOffset, value, littleEndian);
856
+ }
857
+ }
858
+
859
+ /***/ }),
860
+
861
+ /***/ "../../node_modules/@journeyapps/wa-sqlite/src/VFS.js":
862
+ /*!************************************************************!*\
863
+ !*** ../../node_modules/@journeyapps/wa-sqlite/src/VFS.js ***!
864
+ \************************************************************/
865
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
866
+
867
+ "use strict";
868
+ __webpack_require__.r(__webpack_exports__);
869
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
870
+ /* harmony export */ Base: () => (/* binding */ Base),
871
+ /* harmony export */ FILE_TYPE_MASK: () => (/* binding */ FILE_TYPE_MASK),
872
+ /* harmony export */ SQLITE_ABORT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_ABORT),
873
+ /* harmony export */ SQLITE_ACCESS_EXISTS: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_ACCESS_EXISTS),
874
+ /* harmony export */ SQLITE_ACCESS_READ: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_ACCESS_READ),
875
+ /* harmony export */ SQLITE_ACCESS_READWRITE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_ACCESS_READWRITE),
876
+ /* harmony export */ SQLITE_ALTER_TABLE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_ALTER_TABLE),
877
+ /* harmony export */ SQLITE_ANALYZE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_ANALYZE),
878
+ /* harmony export */ SQLITE_ATTACH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_ATTACH),
879
+ /* harmony export */ SQLITE_AUTH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_AUTH),
880
+ /* harmony export */ SQLITE_BLOB: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_BLOB),
881
+ /* harmony export */ SQLITE_BUSY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_BUSY),
882
+ /* harmony export */ SQLITE_CANTOPEN: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CANTOPEN),
883
+ /* harmony export */ SQLITE_CONSTRAINT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT),
884
+ /* harmony export */ SQLITE_CONSTRAINT_CHECK: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_CHECK),
885
+ /* harmony export */ SQLITE_CONSTRAINT_COMMITHOOK: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_COMMITHOOK),
886
+ /* harmony export */ SQLITE_CONSTRAINT_FOREIGNKEY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_FOREIGNKEY),
887
+ /* harmony export */ SQLITE_CONSTRAINT_FUNCTION: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_FUNCTION),
888
+ /* harmony export */ SQLITE_CONSTRAINT_NOTNULL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_NOTNULL),
889
+ /* harmony export */ SQLITE_CONSTRAINT_PINNED: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_PINNED),
890
+ /* harmony export */ SQLITE_CONSTRAINT_PRIMARYKEY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_PRIMARYKEY),
891
+ /* harmony export */ SQLITE_CONSTRAINT_ROWID: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_ROWID),
892
+ /* harmony export */ SQLITE_CONSTRAINT_TRIGGER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_TRIGGER),
893
+ /* harmony export */ SQLITE_CONSTRAINT_UNIQUE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_UNIQUE),
894
+ /* harmony export */ SQLITE_CONSTRAINT_VTAB: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CONSTRAINT_VTAB),
895
+ /* harmony export */ SQLITE_COPY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_COPY),
896
+ /* harmony export */ SQLITE_CORRUPT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CORRUPT),
897
+ /* harmony export */ SQLITE_CREATE_INDEX: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CREATE_INDEX),
898
+ /* harmony export */ SQLITE_CREATE_TABLE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CREATE_TABLE),
899
+ /* harmony export */ SQLITE_CREATE_TEMP_INDEX: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CREATE_TEMP_INDEX),
900
+ /* harmony export */ SQLITE_CREATE_TEMP_TABLE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CREATE_TEMP_TABLE),
901
+ /* harmony export */ SQLITE_CREATE_TEMP_TRIGGER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CREATE_TEMP_TRIGGER),
902
+ /* harmony export */ SQLITE_CREATE_TEMP_VIEW: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CREATE_TEMP_VIEW),
903
+ /* harmony export */ SQLITE_CREATE_TRIGGER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CREATE_TRIGGER),
904
+ /* harmony export */ SQLITE_CREATE_VIEW: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CREATE_VIEW),
905
+ /* harmony export */ SQLITE_CREATE_VTABLE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CREATE_VTABLE),
906
+ /* harmony export */ SQLITE_DELETE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DELETE),
907
+ /* harmony export */ SQLITE_DENY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DENY),
908
+ /* harmony export */ SQLITE_DETACH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DETACH),
909
+ /* harmony export */ SQLITE_DETERMINISTIC: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DETERMINISTIC),
910
+ /* harmony export */ SQLITE_DIRECTONLY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DIRECTONLY),
911
+ /* harmony export */ SQLITE_DONE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DONE),
912
+ /* harmony export */ SQLITE_DROP_INDEX: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DROP_INDEX),
913
+ /* harmony export */ SQLITE_DROP_TABLE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DROP_TABLE),
914
+ /* harmony export */ SQLITE_DROP_TEMP_INDEX: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DROP_TEMP_INDEX),
915
+ /* harmony export */ SQLITE_DROP_TEMP_TABLE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DROP_TEMP_TABLE),
916
+ /* harmony export */ SQLITE_DROP_TEMP_TRIGGER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DROP_TEMP_TRIGGER),
917
+ /* harmony export */ SQLITE_DROP_TEMP_VIEW: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DROP_TEMP_VIEW),
918
+ /* harmony export */ SQLITE_DROP_TRIGGER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DROP_TRIGGER),
919
+ /* harmony export */ SQLITE_DROP_VIEW: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DROP_VIEW),
920
+ /* harmony export */ SQLITE_DROP_VTABLE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_DROP_VTABLE),
921
+ /* harmony export */ SQLITE_EMPTY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_EMPTY),
922
+ /* harmony export */ SQLITE_ERROR: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_ERROR),
923
+ /* harmony export */ SQLITE_FCNTL_BEGIN_ATOMIC_WRITE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_BEGIN_ATOMIC_WRITE),
924
+ /* harmony export */ SQLITE_FCNTL_BUSYHANDLER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_BUSYHANDLER),
925
+ /* harmony export */ SQLITE_FCNTL_CHUNK_SIZE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_CHUNK_SIZE),
926
+ /* harmony export */ SQLITE_FCNTL_CKPT_DONE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_CKPT_DONE),
927
+ /* harmony export */ SQLITE_FCNTL_CKPT_START: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_CKPT_START),
928
+ /* harmony export */ SQLITE_FCNTL_COMMIT_ATOMIC_WRITE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_COMMIT_ATOMIC_WRITE),
929
+ /* harmony export */ SQLITE_FCNTL_COMMIT_PHASETWO: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_COMMIT_PHASETWO),
930
+ /* harmony export */ SQLITE_FCNTL_DATA_VERSION: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_DATA_VERSION),
931
+ /* harmony export */ SQLITE_FCNTL_FILE_POINTER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_FILE_POINTER),
932
+ /* harmony export */ SQLITE_FCNTL_GET_LOCKPROXYFILE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_GET_LOCKPROXYFILE),
933
+ /* harmony export */ SQLITE_FCNTL_HAS_MOVED: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_HAS_MOVED),
934
+ /* harmony export */ SQLITE_FCNTL_JOURNAL_POINTER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_JOURNAL_POINTER),
935
+ /* harmony export */ SQLITE_FCNTL_LAST_ERRNO: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_LAST_ERRNO),
936
+ /* harmony export */ SQLITE_FCNTL_LOCKSTATE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_LOCKSTATE),
937
+ /* harmony export */ SQLITE_FCNTL_LOCK_TIMEOUT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_LOCK_TIMEOUT),
938
+ /* harmony export */ SQLITE_FCNTL_MMAP_SIZE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_MMAP_SIZE),
939
+ /* harmony export */ SQLITE_FCNTL_OVERWRITE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_OVERWRITE),
940
+ /* harmony export */ SQLITE_FCNTL_PDB: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_PDB),
941
+ /* harmony export */ SQLITE_FCNTL_PERSIST_WAL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_PERSIST_WAL),
942
+ /* harmony export */ SQLITE_FCNTL_POWERSAFE_OVERWRITE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_POWERSAFE_OVERWRITE),
943
+ /* harmony export */ SQLITE_FCNTL_PRAGMA: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_PRAGMA),
944
+ /* harmony export */ SQLITE_FCNTL_RBU: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_RBU),
945
+ /* harmony export */ SQLITE_FCNTL_RESERVE_BYTES: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_RESERVE_BYTES),
946
+ /* harmony export */ SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE),
947
+ /* harmony export */ SQLITE_FCNTL_SET_LOCKPROXYFILE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_SET_LOCKPROXYFILE),
948
+ /* harmony export */ SQLITE_FCNTL_SIZE_HINT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_SIZE_HINT),
949
+ /* harmony export */ SQLITE_FCNTL_SIZE_LIMIT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_SIZE_LIMIT),
950
+ /* harmony export */ SQLITE_FCNTL_SYNC: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_SYNC),
951
+ /* harmony export */ SQLITE_FCNTL_SYNC_OMITTED: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_SYNC_OMITTED),
952
+ /* harmony export */ SQLITE_FCNTL_TEMPFILENAME: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_TEMPFILENAME),
953
+ /* harmony export */ SQLITE_FCNTL_TRACE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_TRACE),
954
+ /* harmony export */ SQLITE_FCNTL_VFSNAME: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_VFSNAME),
955
+ /* harmony export */ SQLITE_FCNTL_VFS_POINTER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_VFS_POINTER),
956
+ /* harmony export */ SQLITE_FCNTL_WAL_BLOCK: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_WAL_BLOCK),
957
+ /* harmony export */ SQLITE_FCNTL_WIN32_AV_RETRY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_WIN32_AV_RETRY),
958
+ /* harmony export */ SQLITE_FCNTL_WIN32_GET_HANDLE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_WIN32_GET_HANDLE),
959
+ /* harmony export */ SQLITE_FCNTL_WIN32_SET_HANDLE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_WIN32_SET_HANDLE),
960
+ /* harmony export */ SQLITE_FCNTL_ZIPVFS: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FCNTL_ZIPVFS),
961
+ /* harmony export */ SQLITE_FLOAT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FLOAT),
962
+ /* harmony export */ SQLITE_FORMAT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FORMAT),
963
+ /* harmony export */ SQLITE_FULL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FULL),
964
+ /* harmony export */ SQLITE_FUNCTION: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_FUNCTION),
965
+ /* harmony export */ SQLITE_IGNORE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IGNORE),
966
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_EQ: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_EQ),
967
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_FUNCTION: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_FUNCTION),
968
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_GE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_GE),
969
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_GLOB: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_GLOB),
970
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_GT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_GT),
971
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_IS: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_IS),
972
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_ISNOT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_ISNOT),
973
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_ISNOTNULL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_ISNOTNULL),
974
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_ISNULL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_ISNULL),
975
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_LE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_LE),
976
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_LIKE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_LIKE),
977
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_LT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_LT),
978
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_MATCH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_MATCH),
979
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_NE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_NE),
980
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_REGEXP: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_CONSTRAINT_REGEXP),
981
+ /* harmony export */ SQLITE_INDEX_SCAN_UNIQUE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INDEX_SCAN_UNIQUE),
982
+ /* harmony export */ SQLITE_INNOCUOUS: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INNOCUOUS),
983
+ /* harmony export */ SQLITE_INSERT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INSERT),
984
+ /* harmony export */ SQLITE_INTEGER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INTEGER),
985
+ /* harmony export */ SQLITE_INTERNAL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INTERNAL),
986
+ /* harmony export */ SQLITE_INTERRUPT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_INTERRUPT),
987
+ /* harmony export */ SQLITE_IOCAP_ATOMIC: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_ATOMIC),
988
+ /* harmony export */ SQLITE_IOCAP_ATOMIC16K: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_ATOMIC16K),
989
+ /* harmony export */ SQLITE_IOCAP_ATOMIC1K: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_ATOMIC1K),
990
+ /* harmony export */ SQLITE_IOCAP_ATOMIC2K: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_ATOMIC2K),
991
+ /* harmony export */ SQLITE_IOCAP_ATOMIC32K: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_ATOMIC32K),
992
+ /* harmony export */ SQLITE_IOCAP_ATOMIC4K: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_ATOMIC4K),
993
+ /* harmony export */ SQLITE_IOCAP_ATOMIC512: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_ATOMIC512),
994
+ /* harmony export */ SQLITE_IOCAP_ATOMIC64K: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_ATOMIC64K),
995
+ /* harmony export */ SQLITE_IOCAP_ATOMIC8K: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_ATOMIC8K),
996
+ /* harmony export */ SQLITE_IOCAP_BATCH_ATOMIC: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_BATCH_ATOMIC),
997
+ /* harmony export */ SQLITE_IOCAP_IMMUTABLE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_IMMUTABLE),
998
+ /* harmony export */ SQLITE_IOCAP_POWERSAFE_OVERWRITE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_POWERSAFE_OVERWRITE),
999
+ /* harmony export */ SQLITE_IOCAP_SAFE_APPEND: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_SAFE_APPEND),
1000
+ /* harmony export */ SQLITE_IOCAP_SEQUENTIAL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_SEQUENTIAL),
1001
+ /* harmony export */ SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN),
1002
+ /* harmony export */ SQLITE_IOERR: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR),
1003
+ /* harmony export */ SQLITE_IOERR_ACCESS: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_ACCESS),
1004
+ /* harmony export */ SQLITE_IOERR_BEGIN_ATOMIC: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_BEGIN_ATOMIC),
1005
+ /* harmony export */ SQLITE_IOERR_CHECKRESERVEDLOCK: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_CHECKRESERVEDLOCK),
1006
+ /* harmony export */ SQLITE_IOERR_CLOSE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_CLOSE),
1007
+ /* harmony export */ SQLITE_IOERR_COMMIT_ATOMIC: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_COMMIT_ATOMIC),
1008
+ /* harmony export */ SQLITE_IOERR_DATA: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_DATA),
1009
+ /* harmony export */ SQLITE_IOERR_DELETE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_DELETE),
1010
+ /* harmony export */ SQLITE_IOERR_DELETE_NOENT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_DELETE_NOENT),
1011
+ /* harmony export */ SQLITE_IOERR_DIR_FSYNC: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_DIR_FSYNC),
1012
+ /* harmony export */ SQLITE_IOERR_FSTAT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_FSTAT),
1013
+ /* harmony export */ SQLITE_IOERR_FSYNC: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_FSYNC),
1014
+ /* harmony export */ SQLITE_IOERR_GETTEMPPATH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_GETTEMPPATH),
1015
+ /* harmony export */ SQLITE_IOERR_LOCK: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_LOCK),
1016
+ /* harmony export */ SQLITE_IOERR_NOMEM: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_NOMEM),
1017
+ /* harmony export */ SQLITE_IOERR_RDLOCK: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_RDLOCK),
1018
+ /* harmony export */ SQLITE_IOERR_READ: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_READ),
1019
+ /* harmony export */ SQLITE_IOERR_ROLLBACK_ATOMIC: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_ROLLBACK_ATOMIC),
1020
+ /* harmony export */ SQLITE_IOERR_SEEK: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_SEEK),
1021
+ /* harmony export */ SQLITE_IOERR_SHORT_READ: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_SHORT_READ),
1022
+ /* harmony export */ SQLITE_IOERR_TRUNCATE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_TRUNCATE),
1023
+ /* harmony export */ SQLITE_IOERR_UNLOCK: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_UNLOCK),
1024
+ /* harmony export */ SQLITE_IOERR_VNODE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_VNODE),
1025
+ /* harmony export */ SQLITE_IOERR_WRITE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_IOERR_WRITE),
1026
+ /* harmony export */ SQLITE_LIMIT_ATTACHED: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_ATTACHED),
1027
+ /* harmony export */ SQLITE_LIMIT_COLUMN: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_COLUMN),
1028
+ /* harmony export */ SQLITE_LIMIT_COMPOUND_SELECT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_COMPOUND_SELECT),
1029
+ /* harmony export */ SQLITE_LIMIT_EXPR_DEPTH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_EXPR_DEPTH),
1030
+ /* harmony export */ SQLITE_LIMIT_FUNCTION_ARG: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_FUNCTION_ARG),
1031
+ /* harmony export */ SQLITE_LIMIT_LENGTH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_LENGTH),
1032
+ /* harmony export */ SQLITE_LIMIT_LIKE_PATTERN_LENGTH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_LIKE_PATTERN_LENGTH),
1033
+ /* harmony export */ SQLITE_LIMIT_SQL_LENGTH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_SQL_LENGTH),
1034
+ /* harmony export */ SQLITE_LIMIT_TRIGGER_DEPTH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_TRIGGER_DEPTH),
1035
+ /* harmony export */ SQLITE_LIMIT_VARIABLE_NUMBER: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_VARIABLE_NUMBER),
1036
+ /* harmony export */ SQLITE_LIMIT_VDBE_OP: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_VDBE_OP),
1037
+ /* harmony export */ SQLITE_LIMIT_WORKER_THREADS: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LIMIT_WORKER_THREADS),
1038
+ /* harmony export */ SQLITE_LOCKED: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LOCKED),
1039
+ /* harmony export */ SQLITE_LOCK_EXCLUSIVE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LOCK_EXCLUSIVE),
1040
+ /* harmony export */ SQLITE_LOCK_NONE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LOCK_NONE),
1041
+ /* harmony export */ SQLITE_LOCK_PENDING: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LOCK_PENDING),
1042
+ /* harmony export */ SQLITE_LOCK_RESERVED: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LOCK_RESERVED),
1043
+ /* harmony export */ SQLITE_LOCK_SHARED: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_LOCK_SHARED),
1044
+ /* harmony export */ SQLITE_MISMATCH: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_MISMATCH),
1045
+ /* harmony export */ SQLITE_MISUSE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_MISUSE),
1046
+ /* harmony export */ SQLITE_NOLFS: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_NOLFS),
1047
+ /* harmony export */ SQLITE_NOMEM: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_NOMEM),
1048
+ /* harmony export */ SQLITE_NOTADB: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_NOTADB),
1049
+ /* harmony export */ SQLITE_NOTFOUND: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_NOTFOUND),
1050
+ /* harmony export */ SQLITE_NOTICE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_NOTICE),
1051
+ /* harmony export */ SQLITE_NULL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_NULL),
1052
+ /* harmony export */ SQLITE_OK: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK),
1053
+ /* harmony export */ SQLITE_OPEN_AUTOPROXY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_AUTOPROXY),
1054
+ /* harmony export */ SQLITE_OPEN_CREATE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_CREATE),
1055
+ /* harmony export */ SQLITE_OPEN_DELETEONCLOSE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_DELETEONCLOSE),
1056
+ /* harmony export */ SQLITE_OPEN_EXCLUSIVE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_EXCLUSIVE),
1057
+ /* harmony export */ SQLITE_OPEN_FULLMUTEX: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_FULLMUTEX),
1058
+ /* harmony export */ SQLITE_OPEN_MAIN_DB: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_MAIN_DB),
1059
+ /* harmony export */ SQLITE_OPEN_MAIN_JOURNAL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_MAIN_JOURNAL),
1060
+ /* harmony export */ SQLITE_OPEN_MEMORY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_MEMORY),
1061
+ /* harmony export */ SQLITE_OPEN_NOFOLLOW: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_NOFOLLOW),
1062
+ /* harmony export */ SQLITE_OPEN_NOMUTEX: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_NOMUTEX),
1063
+ /* harmony export */ SQLITE_OPEN_PRIVATECACHE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_PRIVATECACHE),
1064
+ /* harmony export */ SQLITE_OPEN_READONLY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_READONLY),
1065
+ /* harmony export */ SQLITE_OPEN_READWRITE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_READWRITE),
1066
+ /* harmony export */ SQLITE_OPEN_SHAREDCACHE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_SHAREDCACHE),
1067
+ /* harmony export */ SQLITE_OPEN_SUBJOURNAL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_SUBJOURNAL),
1068
+ /* harmony export */ SQLITE_OPEN_SUPER_JOURNAL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_SUPER_JOURNAL),
1069
+ /* harmony export */ SQLITE_OPEN_TEMP_DB: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_TEMP_DB),
1070
+ /* harmony export */ SQLITE_OPEN_TEMP_JOURNAL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_TEMP_JOURNAL),
1071
+ /* harmony export */ SQLITE_OPEN_TRANSIENT_DB: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_TRANSIENT_DB),
1072
+ /* harmony export */ SQLITE_OPEN_URI: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_URI),
1073
+ /* harmony export */ SQLITE_OPEN_WAL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_WAL),
1074
+ /* harmony export */ SQLITE_PERM: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_PERM),
1075
+ /* harmony export */ SQLITE_PRAGMA: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_PRAGMA),
1076
+ /* harmony export */ SQLITE_PREPARE_NORMALIZED: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_PREPARE_NORMALIZED),
1077
+ /* harmony export */ SQLITE_PREPARE_NO_VTAB: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_PREPARE_NO_VTAB),
1078
+ /* harmony export */ SQLITE_PREPARE_PERSISTENT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_PREPARE_PERSISTENT),
1079
+ /* harmony export */ SQLITE_PROTOCOL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_PROTOCOL),
1080
+ /* harmony export */ SQLITE_RANGE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_RANGE),
1081
+ /* harmony export */ SQLITE_READ: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_READ),
1082
+ /* harmony export */ SQLITE_READONLY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_READONLY),
1083
+ /* harmony export */ SQLITE_RECURSIVE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_RECURSIVE),
1084
+ /* harmony export */ SQLITE_REINDEX: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_REINDEX),
1085
+ /* harmony export */ SQLITE_ROW: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_ROW),
1086
+ /* harmony export */ SQLITE_SAVEPOINT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_SAVEPOINT),
1087
+ /* harmony export */ SQLITE_SCHEMA: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_SCHEMA),
1088
+ /* harmony export */ SQLITE_SELECT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_SELECT),
1089
+ /* harmony export */ SQLITE_STATIC: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_STATIC),
1090
+ /* harmony export */ SQLITE_SUBTYPE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_SUBTYPE),
1091
+ /* harmony export */ SQLITE_SYNC_DATAONLY: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_SYNC_DATAONLY),
1092
+ /* harmony export */ SQLITE_SYNC_FULL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_SYNC_FULL),
1093
+ /* harmony export */ SQLITE_SYNC_NORMAL: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_SYNC_NORMAL),
1094
+ /* harmony export */ SQLITE_TEXT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_TEXT),
1095
+ /* harmony export */ SQLITE_TOOBIG: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_TOOBIG),
1096
+ /* harmony export */ SQLITE_TRANSACTION: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_TRANSACTION),
1097
+ /* harmony export */ SQLITE_TRANSIENT: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_TRANSIENT),
1098
+ /* harmony export */ SQLITE_UPDATE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_UPDATE),
1099
+ /* harmony export */ SQLITE_UTF16: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_UTF16),
1100
+ /* harmony export */ SQLITE_UTF16BE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_UTF16BE),
1101
+ /* harmony export */ SQLITE_UTF16LE: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_UTF16LE),
1102
+ /* harmony export */ SQLITE_UTF8: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_UTF8),
1103
+ /* harmony export */ SQLITE_WARNING: () => (/* reexport safe */ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_WARNING)
1104
+ /* harmony export */ });
1105
+ /* harmony import */ var _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./sqlite-constants.js */ "../../node_modules/@journeyapps/wa-sqlite/src/sqlite-constants.js");
1106
+ // Copyright 2024 Roy T. Hashimoto. All Rights Reserved.
1107
+
1108
+
1109
+
1110
+ const DEFAULT_SECTOR_SIZE = 512;
1111
+
1112
+ // Base class for a VFS.
1113
+ class Base {
1114
+ name;
1115
+ mxPathname = 64;
1116
+ _module;
1117
+
1118
+ /**
1119
+ * @param {string} name
1120
+ * @param {object} module
1121
+ */
1122
+ constructor(name, module) {
1123
+ this.name = name;
1124
+ this._module = module;
1125
+ }
1126
+
1127
+ /**
1128
+ * @returns {void|Promise<void>}
1129
+ */
1130
+ close() {
1131
+ }
1132
+
1133
+ /**
1134
+ * @returns {boolean|Promise<boolean>}
1135
+ */
1136
+ isReady() {
1137
+ return true;
1138
+ }
1139
+
1140
+ /**
1141
+ * Overload in subclasses to indicate which methods are asynchronous.
1142
+ * @param {string} methodName
1143
+ * @returns {boolean}
1144
+ */
1145
+ hasAsyncMethod(methodName) {
1146
+ return false;
1147
+ }
1148
+
1149
+ /**
1150
+ * @param {number} pVfs
1151
+ * @param {number} zName
1152
+ * @param {number} pFile
1153
+ * @param {number} flags
1154
+ * @param {number} pOutFlags
1155
+ * @returns {number|Promise<number>}
1156
+ */
1157
+ xOpen(pVfs, zName, pFile, flags, pOutFlags) {
1158
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_CANTOPEN;
1159
+ }
1160
+
1161
+ /**
1162
+ * @param {number} pVfs
1163
+ * @param {number} zName
1164
+ * @param {number} syncDir
1165
+ * @returns {number|Promise<number>}
1166
+ */
1167
+ xDelete(pVfs, zName, syncDir) {
1168
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1169
+ }
1170
+
1171
+ /**
1172
+ * @param {number} pVfs
1173
+ * @param {number} zName
1174
+ * @param {number} flags
1175
+ * @param {number} pResOut
1176
+ * @returns {number|Promise<number>}
1177
+ */
1178
+ xAccess(pVfs, zName, flags, pResOut) {
1179
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1180
+ }
1181
+
1182
+ /**
1183
+ * @param {number} pVfs
1184
+ * @param {number} zName
1185
+ * @param {number} nOut
1186
+ * @param {number} zOut
1187
+ * @returns {number|Promise<number>}
1188
+ */
1189
+ xFullPathname(pVfs, zName, nOut, zOut) {
1190
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1191
+ }
1192
+
1193
+ /**
1194
+ * @param {number} pVfs
1195
+ * @param {number} nBuf
1196
+ * @param {number} zBuf
1197
+ * @returns {number|Promise<number>}
1198
+ */
1199
+ xGetLastError(pVfs, nBuf, zBuf) {
1200
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1201
+ }
1202
+
1203
+ /**
1204
+ * @param {number} pFile
1205
+ * @returns {number|Promise<number>}
1206
+ */
1207
+ xClose(pFile) {
1208
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1209
+ }
1210
+
1211
+ /**
1212
+ * @param {number} pFile
1213
+ * @param {number} pData
1214
+ * @param {number} iAmt
1215
+ * @param {number} iOffsetLo
1216
+ * @param {number} iOffsetHi
1217
+ * @returns {number|Promise<number>}
1218
+ */
1219
+ xRead(pFile, pData, iAmt, iOffsetLo, iOffsetHi) {
1220
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1221
+ }
1222
+
1223
+ /**
1224
+ * @param {number} pFile
1225
+ * @param {number} pData
1226
+ * @param {number} iAmt
1227
+ * @param {number} iOffsetLo
1228
+ * @param {number} iOffsetHi
1229
+ * @returns {number|Promise<number>}
1230
+ */
1231
+ xWrite(pFile, pData, iAmt, iOffsetLo, iOffsetHi) {
1232
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1233
+ }
1234
+
1235
+ /**
1236
+ * @param {number} pFile
1237
+ * @param {number} sizeLo
1238
+ * @param {number} sizeHi
1239
+ * @returns {number|Promise<number>}
1240
+ */
1241
+ xTruncate(pFile, sizeLo, sizeHi) {
1242
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1243
+ }
1244
+
1245
+ /**
1246
+ * @param {number} pFile
1247
+ * @param {number} flags
1248
+ * @returns {number|Promise<number>}
1249
+ */
1250
+ xSync(pFile, flags) {
1251
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1252
+ }
1253
+
1254
+ /**
1255
+ *
1256
+ * @param {number} pFile
1257
+ * @param {number} pSize
1258
+ * @returns {number|Promise<number>}
1259
+ */
1260
+ xFileSize(pFile, pSize) {
1261
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1262
+ }
1263
+
1264
+ /**
1265
+ * @param {number} pFile
1266
+ * @param {number} lockType
1267
+ * @returns {number|Promise<number>}
1268
+ */
1269
+ xLock(pFile, lockType) {
1270
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1271
+ }
1272
+
1273
+ /**
1274
+ * @param {number} pFile
1275
+ * @param {number} lockType
1276
+ * @returns {number|Promise<number>}
1277
+ */
1278
+ xUnlock(pFile, lockType) {
1279
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1280
+ }
1281
+
1282
+ /**
1283
+ * @param {number} pFile
1284
+ * @param {number} pResOut
1285
+ * @returns {number|Promise<number>}
1286
+ */
1287
+ xCheckReservedLock(pFile, pResOut) {
1288
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OK;
1289
+ }
1290
+
1291
+ /**
1292
+ * @param {number} pFile
1293
+ * @param {number} op
1294
+ * @param {number} pArg
1295
+ * @returns {number|Promise<number>}
1296
+ */
1297
+ xFileControl(pFile, op, pArg) {
1298
+ return _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_NOTFOUND;
1299
+ }
1300
+
1301
+ /**
1302
+ * @param {number} pFile
1303
+ * @returns {number|Promise<number>}
1304
+ */
1305
+ xSectorSize(pFile) {
1306
+ return DEFAULT_SECTOR_SIZE;
1307
+ }
1308
+
1309
+ /**
1310
+ * @param {number} pFile
1311
+ * @returns {number|Promise<number>}
1312
+ */
1313
+ xDeviceCharacteristics(pFile) {
1314
+ return 0;
1315
+ }
1316
+ }
1317
+
1318
+ const FILE_TYPE_MASK = [
1319
+ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_MAIN_DB,
1320
+ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_MAIN_JOURNAL,
1321
+ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_TEMP_DB,
1322
+ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_TEMP_JOURNAL,
1323
+ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_TRANSIENT_DB,
1324
+ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_SUBJOURNAL,
1325
+ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_SUPER_JOURNAL,
1326
+ _sqlite_constants_js__WEBPACK_IMPORTED_MODULE_0__.SQLITE_OPEN_WAL
1327
+ ].reduce((mask, element) => mask | element);
1328
+
1329
+ /***/ }),
1330
+
1331
+ /***/ "../../node_modules/@journeyapps/wa-sqlite/src/sqlite-constants.js":
1332
+ /*!*************************************************************************!*\
1333
+ !*** ../../node_modules/@journeyapps/wa-sqlite/src/sqlite-constants.js ***!
1334
+ \*************************************************************************/
1335
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1336
+
1337
+ "use strict";
1338
+ __webpack_require__.r(__webpack_exports__);
1339
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
1340
+ /* harmony export */ SQLITE_ABORT: () => (/* binding */ SQLITE_ABORT),
1341
+ /* harmony export */ SQLITE_ACCESS_EXISTS: () => (/* binding */ SQLITE_ACCESS_EXISTS),
1342
+ /* harmony export */ SQLITE_ACCESS_READ: () => (/* binding */ SQLITE_ACCESS_READ),
1343
+ /* harmony export */ SQLITE_ACCESS_READWRITE: () => (/* binding */ SQLITE_ACCESS_READWRITE),
1344
+ /* harmony export */ SQLITE_ALTER_TABLE: () => (/* binding */ SQLITE_ALTER_TABLE),
1345
+ /* harmony export */ SQLITE_ANALYZE: () => (/* binding */ SQLITE_ANALYZE),
1346
+ /* harmony export */ SQLITE_ATTACH: () => (/* binding */ SQLITE_ATTACH),
1347
+ /* harmony export */ SQLITE_AUTH: () => (/* binding */ SQLITE_AUTH),
1348
+ /* harmony export */ SQLITE_BLOB: () => (/* binding */ SQLITE_BLOB),
1349
+ /* harmony export */ SQLITE_BUSY: () => (/* binding */ SQLITE_BUSY),
1350
+ /* harmony export */ SQLITE_CANTOPEN: () => (/* binding */ SQLITE_CANTOPEN),
1351
+ /* harmony export */ SQLITE_CONSTRAINT: () => (/* binding */ SQLITE_CONSTRAINT),
1352
+ /* harmony export */ SQLITE_CONSTRAINT_CHECK: () => (/* binding */ SQLITE_CONSTRAINT_CHECK),
1353
+ /* harmony export */ SQLITE_CONSTRAINT_COMMITHOOK: () => (/* binding */ SQLITE_CONSTRAINT_COMMITHOOK),
1354
+ /* harmony export */ SQLITE_CONSTRAINT_FOREIGNKEY: () => (/* binding */ SQLITE_CONSTRAINT_FOREIGNKEY),
1355
+ /* harmony export */ SQLITE_CONSTRAINT_FUNCTION: () => (/* binding */ SQLITE_CONSTRAINT_FUNCTION),
1356
+ /* harmony export */ SQLITE_CONSTRAINT_NOTNULL: () => (/* binding */ SQLITE_CONSTRAINT_NOTNULL),
1357
+ /* harmony export */ SQLITE_CONSTRAINT_PINNED: () => (/* binding */ SQLITE_CONSTRAINT_PINNED),
1358
+ /* harmony export */ SQLITE_CONSTRAINT_PRIMARYKEY: () => (/* binding */ SQLITE_CONSTRAINT_PRIMARYKEY),
1359
+ /* harmony export */ SQLITE_CONSTRAINT_ROWID: () => (/* binding */ SQLITE_CONSTRAINT_ROWID),
1360
+ /* harmony export */ SQLITE_CONSTRAINT_TRIGGER: () => (/* binding */ SQLITE_CONSTRAINT_TRIGGER),
1361
+ /* harmony export */ SQLITE_CONSTRAINT_UNIQUE: () => (/* binding */ SQLITE_CONSTRAINT_UNIQUE),
1362
+ /* harmony export */ SQLITE_CONSTRAINT_VTAB: () => (/* binding */ SQLITE_CONSTRAINT_VTAB),
1363
+ /* harmony export */ SQLITE_COPY: () => (/* binding */ SQLITE_COPY),
1364
+ /* harmony export */ SQLITE_CORRUPT: () => (/* binding */ SQLITE_CORRUPT),
1365
+ /* harmony export */ SQLITE_CREATE_INDEX: () => (/* binding */ SQLITE_CREATE_INDEX),
1366
+ /* harmony export */ SQLITE_CREATE_TABLE: () => (/* binding */ SQLITE_CREATE_TABLE),
1367
+ /* harmony export */ SQLITE_CREATE_TEMP_INDEX: () => (/* binding */ SQLITE_CREATE_TEMP_INDEX),
1368
+ /* harmony export */ SQLITE_CREATE_TEMP_TABLE: () => (/* binding */ SQLITE_CREATE_TEMP_TABLE),
1369
+ /* harmony export */ SQLITE_CREATE_TEMP_TRIGGER: () => (/* binding */ SQLITE_CREATE_TEMP_TRIGGER),
1370
+ /* harmony export */ SQLITE_CREATE_TEMP_VIEW: () => (/* binding */ SQLITE_CREATE_TEMP_VIEW),
1371
+ /* harmony export */ SQLITE_CREATE_TRIGGER: () => (/* binding */ SQLITE_CREATE_TRIGGER),
1372
+ /* harmony export */ SQLITE_CREATE_VIEW: () => (/* binding */ SQLITE_CREATE_VIEW),
1373
+ /* harmony export */ SQLITE_CREATE_VTABLE: () => (/* binding */ SQLITE_CREATE_VTABLE),
1374
+ /* harmony export */ SQLITE_DELETE: () => (/* binding */ SQLITE_DELETE),
1375
+ /* harmony export */ SQLITE_DENY: () => (/* binding */ SQLITE_DENY),
1376
+ /* harmony export */ SQLITE_DETACH: () => (/* binding */ SQLITE_DETACH),
1377
+ /* harmony export */ SQLITE_DETERMINISTIC: () => (/* binding */ SQLITE_DETERMINISTIC),
1378
+ /* harmony export */ SQLITE_DIRECTONLY: () => (/* binding */ SQLITE_DIRECTONLY),
1379
+ /* harmony export */ SQLITE_DONE: () => (/* binding */ SQLITE_DONE),
1380
+ /* harmony export */ SQLITE_DROP_INDEX: () => (/* binding */ SQLITE_DROP_INDEX),
1381
+ /* harmony export */ SQLITE_DROP_TABLE: () => (/* binding */ SQLITE_DROP_TABLE),
1382
+ /* harmony export */ SQLITE_DROP_TEMP_INDEX: () => (/* binding */ SQLITE_DROP_TEMP_INDEX),
1383
+ /* harmony export */ SQLITE_DROP_TEMP_TABLE: () => (/* binding */ SQLITE_DROP_TEMP_TABLE),
1384
+ /* harmony export */ SQLITE_DROP_TEMP_TRIGGER: () => (/* binding */ SQLITE_DROP_TEMP_TRIGGER),
1385
+ /* harmony export */ SQLITE_DROP_TEMP_VIEW: () => (/* binding */ SQLITE_DROP_TEMP_VIEW),
1386
+ /* harmony export */ SQLITE_DROP_TRIGGER: () => (/* binding */ SQLITE_DROP_TRIGGER),
1387
+ /* harmony export */ SQLITE_DROP_VIEW: () => (/* binding */ SQLITE_DROP_VIEW),
1388
+ /* harmony export */ SQLITE_DROP_VTABLE: () => (/* binding */ SQLITE_DROP_VTABLE),
1389
+ /* harmony export */ SQLITE_EMPTY: () => (/* binding */ SQLITE_EMPTY),
1390
+ /* harmony export */ SQLITE_ERROR: () => (/* binding */ SQLITE_ERROR),
1391
+ /* harmony export */ SQLITE_FCNTL_BEGIN_ATOMIC_WRITE: () => (/* binding */ SQLITE_FCNTL_BEGIN_ATOMIC_WRITE),
1392
+ /* harmony export */ SQLITE_FCNTL_BUSYHANDLER: () => (/* binding */ SQLITE_FCNTL_BUSYHANDLER),
1393
+ /* harmony export */ SQLITE_FCNTL_CHUNK_SIZE: () => (/* binding */ SQLITE_FCNTL_CHUNK_SIZE),
1394
+ /* harmony export */ SQLITE_FCNTL_CKPT_DONE: () => (/* binding */ SQLITE_FCNTL_CKPT_DONE),
1395
+ /* harmony export */ SQLITE_FCNTL_CKPT_START: () => (/* binding */ SQLITE_FCNTL_CKPT_START),
1396
+ /* harmony export */ SQLITE_FCNTL_COMMIT_ATOMIC_WRITE: () => (/* binding */ SQLITE_FCNTL_COMMIT_ATOMIC_WRITE),
1397
+ /* harmony export */ SQLITE_FCNTL_COMMIT_PHASETWO: () => (/* binding */ SQLITE_FCNTL_COMMIT_PHASETWO),
1398
+ /* harmony export */ SQLITE_FCNTL_DATA_VERSION: () => (/* binding */ SQLITE_FCNTL_DATA_VERSION),
1399
+ /* harmony export */ SQLITE_FCNTL_FILE_POINTER: () => (/* binding */ SQLITE_FCNTL_FILE_POINTER),
1400
+ /* harmony export */ SQLITE_FCNTL_GET_LOCKPROXYFILE: () => (/* binding */ SQLITE_FCNTL_GET_LOCKPROXYFILE),
1401
+ /* harmony export */ SQLITE_FCNTL_HAS_MOVED: () => (/* binding */ SQLITE_FCNTL_HAS_MOVED),
1402
+ /* harmony export */ SQLITE_FCNTL_JOURNAL_POINTER: () => (/* binding */ SQLITE_FCNTL_JOURNAL_POINTER),
1403
+ /* harmony export */ SQLITE_FCNTL_LAST_ERRNO: () => (/* binding */ SQLITE_FCNTL_LAST_ERRNO),
1404
+ /* harmony export */ SQLITE_FCNTL_LOCKSTATE: () => (/* binding */ SQLITE_FCNTL_LOCKSTATE),
1405
+ /* harmony export */ SQLITE_FCNTL_LOCK_TIMEOUT: () => (/* binding */ SQLITE_FCNTL_LOCK_TIMEOUT),
1406
+ /* harmony export */ SQLITE_FCNTL_MMAP_SIZE: () => (/* binding */ SQLITE_FCNTL_MMAP_SIZE),
1407
+ /* harmony export */ SQLITE_FCNTL_OVERWRITE: () => (/* binding */ SQLITE_FCNTL_OVERWRITE),
1408
+ /* harmony export */ SQLITE_FCNTL_PDB: () => (/* binding */ SQLITE_FCNTL_PDB),
1409
+ /* harmony export */ SQLITE_FCNTL_PERSIST_WAL: () => (/* binding */ SQLITE_FCNTL_PERSIST_WAL),
1410
+ /* harmony export */ SQLITE_FCNTL_POWERSAFE_OVERWRITE: () => (/* binding */ SQLITE_FCNTL_POWERSAFE_OVERWRITE),
1411
+ /* harmony export */ SQLITE_FCNTL_PRAGMA: () => (/* binding */ SQLITE_FCNTL_PRAGMA),
1412
+ /* harmony export */ SQLITE_FCNTL_RBU: () => (/* binding */ SQLITE_FCNTL_RBU),
1413
+ /* harmony export */ SQLITE_FCNTL_RESERVE_BYTES: () => (/* binding */ SQLITE_FCNTL_RESERVE_BYTES),
1414
+ /* harmony export */ SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE: () => (/* binding */ SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE),
1415
+ /* harmony export */ SQLITE_FCNTL_SET_LOCKPROXYFILE: () => (/* binding */ SQLITE_FCNTL_SET_LOCKPROXYFILE),
1416
+ /* harmony export */ SQLITE_FCNTL_SIZE_HINT: () => (/* binding */ SQLITE_FCNTL_SIZE_HINT),
1417
+ /* harmony export */ SQLITE_FCNTL_SIZE_LIMIT: () => (/* binding */ SQLITE_FCNTL_SIZE_LIMIT),
1418
+ /* harmony export */ SQLITE_FCNTL_SYNC: () => (/* binding */ SQLITE_FCNTL_SYNC),
1419
+ /* harmony export */ SQLITE_FCNTL_SYNC_OMITTED: () => (/* binding */ SQLITE_FCNTL_SYNC_OMITTED),
1420
+ /* harmony export */ SQLITE_FCNTL_TEMPFILENAME: () => (/* binding */ SQLITE_FCNTL_TEMPFILENAME),
1421
+ /* harmony export */ SQLITE_FCNTL_TRACE: () => (/* binding */ SQLITE_FCNTL_TRACE),
1422
+ /* harmony export */ SQLITE_FCNTL_VFSNAME: () => (/* binding */ SQLITE_FCNTL_VFSNAME),
1423
+ /* harmony export */ SQLITE_FCNTL_VFS_POINTER: () => (/* binding */ SQLITE_FCNTL_VFS_POINTER),
1424
+ /* harmony export */ SQLITE_FCNTL_WAL_BLOCK: () => (/* binding */ SQLITE_FCNTL_WAL_BLOCK),
1425
+ /* harmony export */ SQLITE_FCNTL_WIN32_AV_RETRY: () => (/* binding */ SQLITE_FCNTL_WIN32_AV_RETRY),
1426
+ /* harmony export */ SQLITE_FCNTL_WIN32_GET_HANDLE: () => (/* binding */ SQLITE_FCNTL_WIN32_GET_HANDLE),
1427
+ /* harmony export */ SQLITE_FCNTL_WIN32_SET_HANDLE: () => (/* binding */ SQLITE_FCNTL_WIN32_SET_HANDLE),
1428
+ /* harmony export */ SQLITE_FCNTL_ZIPVFS: () => (/* binding */ SQLITE_FCNTL_ZIPVFS),
1429
+ /* harmony export */ SQLITE_FLOAT: () => (/* binding */ SQLITE_FLOAT),
1430
+ /* harmony export */ SQLITE_FORMAT: () => (/* binding */ SQLITE_FORMAT),
1431
+ /* harmony export */ SQLITE_FULL: () => (/* binding */ SQLITE_FULL),
1432
+ /* harmony export */ SQLITE_FUNCTION: () => (/* binding */ SQLITE_FUNCTION),
1433
+ /* harmony export */ SQLITE_IGNORE: () => (/* binding */ SQLITE_IGNORE),
1434
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_EQ: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_EQ),
1435
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_FUNCTION: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_FUNCTION),
1436
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_GE: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_GE),
1437
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_GLOB: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_GLOB),
1438
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_GT: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_GT),
1439
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_IS: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_IS),
1440
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_ISNOT: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_ISNOT),
1441
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_ISNOTNULL: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_ISNOTNULL),
1442
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_ISNULL: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_ISNULL),
1443
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_LE: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_LE),
1444
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_LIKE: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_LIKE),
1445
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_LT: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_LT),
1446
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_MATCH: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_MATCH),
1447
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_NE: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_NE),
1448
+ /* harmony export */ SQLITE_INDEX_CONSTRAINT_REGEXP: () => (/* binding */ SQLITE_INDEX_CONSTRAINT_REGEXP),
1449
+ /* harmony export */ SQLITE_INDEX_SCAN_UNIQUE: () => (/* binding */ SQLITE_INDEX_SCAN_UNIQUE),
1450
+ /* harmony export */ SQLITE_INNOCUOUS: () => (/* binding */ SQLITE_INNOCUOUS),
1451
+ /* harmony export */ SQLITE_INSERT: () => (/* binding */ SQLITE_INSERT),
1452
+ /* harmony export */ SQLITE_INTEGER: () => (/* binding */ SQLITE_INTEGER),
1453
+ /* harmony export */ SQLITE_INTERNAL: () => (/* binding */ SQLITE_INTERNAL),
1454
+ /* harmony export */ SQLITE_INTERRUPT: () => (/* binding */ SQLITE_INTERRUPT),
1455
+ /* harmony export */ SQLITE_IOCAP_ATOMIC: () => (/* binding */ SQLITE_IOCAP_ATOMIC),
1456
+ /* harmony export */ SQLITE_IOCAP_ATOMIC16K: () => (/* binding */ SQLITE_IOCAP_ATOMIC16K),
1457
+ /* harmony export */ SQLITE_IOCAP_ATOMIC1K: () => (/* binding */ SQLITE_IOCAP_ATOMIC1K),
1458
+ /* harmony export */ SQLITE_IOCAP_ATOMIC2K: () => (/* binding */ SQLITE_IOCAP_ATOMIC2K),
1459
+ /* harmony export */ SQLITE_IOCAP_ATOMIC32K: () => (/* binding */ SQLITE_IOCAP_ATOMIC32K),
1460
+ /* harmony export */ SQLITE_IOCAP_ATOMIC4K: () => (/* binding */ SQLITE_IOCAP_ATOMIC4K),
1461
+ /* harmony export */ SQLITE_IOCAP_ATOMIC512: () => (/* binding */ SQLITE_IOCAP_ATOMIC512),
1462
+ /* harmony export */ SQLITE_IOCAP_ATOMIC64K: () => (/* binding */ SQLITE_IOCAP_ATOMIC64K),
1463
+ /* harmony export */ SQLITE_IOCAP_ATOMIC8K: () => (/* binding */ SQLITE_IOCAP_ATOMIC8K),
1464
+ /* harmony export */ SQLITE_IOCAP_BATCH_ATOMIC: () => (/* binding */ SQLITE_IOCAP_BATCH_ATOMIC),
1465
+ /* harmony export */ SQLITE_IOCAP_IMMUTABLE: () => (/* binding */ SQLITE_IOCAP_IMMUTABLE),
1466
+ /* harmony export */ SQLITE_IOCAP_POWERSAFE_OVERWRITE: () => (/* binding */ SQLITE_IOCAP_POWERSAFE_OVERWRITE),
1467
+ /* harmony export */ SQLITE_IOCAP_SAFE_APPEND: () => (/* binding */ SQLITE_IOCAP_SAFE_APPEND),
1468
+ /* harmony export */ SQLITE_IOCAP_SEQUENTIAL: () => (/* binding */ SQLITE_IOCAP_SEQUENTIAL),
1469
+ /* harmony export */ SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN: () => (/* binding */ SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN),
1470
+ /* harmony export */ SQLITE_IOERR: () => (/* binding */ SQLITE_IOERR),
1471
+ /* harmony export */ SQLITE_IOERR_ACCESS: () => (/* binding */ SQLITE_IOERR_ACCESS),
1472
+ /* harmony export */ SQLITE_IOERR_BEGIN_ATOMIC: () => (/* binding */ SQLITE_IOERR_BEGIN_ATOMIC),
1473
+ /* harmony export */ SQLITE_IOERR_CHECKRESERVEDLOCK: () => (/* binding */ SQLITE_IOERR_CHECKRESERVEDLOCK),
1474
+ /* harmony export */ SQLITE_IOERR_CLOSE: () => (/* binding */ SQLITE_IOERR_CLOSE),
1475
+ /* harmony export */ SQLITE_IOERR_COMMIT_ATOMIC: () => (/* binding */ SQLITE_IOERR_COMMIT_ATOMIC),
1476
+ /* harmony export */ SQLITE_IOERR_DATA: () => (/* binding */ SQLITE_IOERR_DATA),
1477
+ /* harmony export */ SQLITE_IOERR_DELETE: () => (/* binding */ SQLITE_IOERR_DELETE),
1478
+ /* harmony export */ SQLITE_IOERR_DELETE_NOENT: () => (/* binding */ SQLITE_IOERR_DELETE_NOENT),
1479
+ /* harmony export */ SQLITE_IOERR_DIR_FSYNC: () => (/* binding */ SQLITE_IOERR_DIR_FSYNC),
1480
+ /* harmony export */ SQLITE_IOERR_FSTAT: () => (/* binding */ SQLITE_IOERR_FSTAT),
1481
+ /* harmony export */ SQLITE_IOERR_FSYNC: () => (/* binding */ SQLITE_IOERR_FSYNC),
1482
+ /* harmony export */ SQLITE_IOERR_GETTEMPPATH: () => (/* binding */ SQLITE_IOERR_GETTEMPPATH),
1483
+ /* harmony export */ SQLITE_IOERR_LOCK: () => (/* binding */ SQLITE_IOERR_LOCK),
1484
+ /* harmony export */ SQLITE_IOERR_NOMEM: () => (/* binding */ SQLITE_IOERR_NOMEM),
1485
+ /* harmony export */ SQLITE_IOERR_RDLOCK: () => (/* binding */ SQLITE_IOERR_RDLOCK),
1486
+ /* harmony export */ SQLITE_IOERR_READ: () => (/* binding */ SQLITE_IOERR_READ),
1487
+ /* harmony export */ SQLITE_IOERR_ROLLBACK_ATOMIC: () => (/* binding */ SQLITE_IOERR_ROLLBACK_ATOMIC),
1488
+ /* harmony export */ SQLITE_IOERR_SEEK: () => (/* binding */ SQLITE_IOERR_SEEK),
1489
+ /* harmony export */ SQLITE_IOERR_SHORT_READ: () => (/* binding */ SQLITE_IOERR_SHORT_READ),
1490
+ /* harmony export */ SQLITE_IOERR_TRUNCATE: () => (/* binding */ SQLITE_IOERR_TRUNCATE),
1491
+ /* harmony export */ SQLITE_IOERR_UNLOCK: () => (/* binding */ SQLITE_IOERR_UNLOCK),
1492
+ /* harmony export */ SQLITE_IOERR_VNODE: () => (/* binding */ SQLITE_IOERR_VNODE),
1493
+ /* harmony export */ SQLITE_IOERR_WRITE: () => (/* binding */ SQLITE_IOERR_WRITE),
1494
+ /* harmony export */ SQLITE_LIMIT_ATTACHED: () => (/* binding */ SQLITE_LIMIT_ATTACHED),
1495
+ /* harmony export */ SQLITE_LIMIT_COLUMN: () => (/* binding */ SQLITE_LIMIT_COLUMN),
1496
+ /* harmony export */ SQLITE_LIMIT_COMPOUND_SELECT: () => (/* binding */ SQLITE_LIMIT_COMPOUND_SELECT),
1497
+ /* harmony export */ SQLITE_LIMIT_EXPR_DEPTH: () => (/* binding */ SQLITE_LIMIT_EXPR_DEPTH),
1498
+ /* harmony export */ SQLITE_LIMIT_FUNCTION_ARG: () => (/* binding */ SQLITE_LIMIT_FUNCTION_ARG),
1499
+ /* harmony export */ SQLITE_LIMIT_LENGTH: () => (/* binding */ SQLITE_LIMIT_LENGTH),
1500
+ /* harmony export */ SQLITE_LIMIT_LIKE_PATTERN_LENGTH: () => (/* binding */ SQLITE_LIMIT_LIKE_PATTERN_LENGTH),
1501
+ /* harmony export */ SQLITE_LIMIT_SQL_LENGTH: () => (/* binding */ SQLITE_LIMIT_SQL_LENGTH),
1502
+ /* harmony export */ SQLITE_LIMIT_TRIGGER_DEPTH: () => (/* binding */ SQLITE_LIMIT_TRIGGER_DEPTH),
1503
+ /* harmony export */ SQLITE_LIMIT_VARIABLE_NUMBER: () => (/* binding */ SQLITE_LIMIT_VARIABLE_NUMBER),
1504
+ /* harmony export */ SQLITE_LIMIT_VDBE_OP: () => (/* binding */ SQLITE_LIMIT_VDBE_OP),
1505
+ /* harmony export */ SQLITE_LIMIT_WORKER_THREADS: () => (/* binding */ SQLITE_LIMIT_WORKER_THREADS),
1506
+ /* harmony export */ SQLITE_LOCKED: () => (/* binding */ SQLITE_LOCKED),
1507
+ /* harmony export */ SQLITE_LOCK_EXCLUSIVE: () => (/* binding */ SQLITE_LOCK_EXCLUSIVE),
1508
+ /* harmony export */ SQLITE_LOCK_NONE: () => (/* binding */ SQLITE_LOCK_NONE),
1509
+ /* harmony export */ SQLITE_LOCK_PENDING: () => (/* binding */ SQLITE_LOCK_PENDING),
1510
+ /* harmony export */ SQLITE_LOCK_RESERVED: () => (/* binding */ SQLITE_LOCK_RESERVED),
1511
+ /* harmony export */ SQLITE_LOCK_SHARED: () => (/* binding */ SQLITE_LOCK_SHARED),
1512
+ /* harmony export */ SQLITE_MISMATCH: () => (/* binding */ SQLITE_MISMATCH),
1513
+ /* harmony export */ SQLITE_MISUSE: () => (/* binding */ SQLITE_MISUSE),
1514
+ /* harmony export */ SQLITE_NOLFS: () => (/* binding */ SQLITE_NOLFS),
1515
+ /* harmony export */ SQLITE_NOMEM: () => (/* binding */ SQLITE_NOMEM),
1516
+ /* harmony export */ SQLITE_NOTADB: () => (/* binding */ SQLITE_NOTADB),
1517
+ /* harmony export */ SQLITE_NOTFOUND: () => (/* binding */ SQLITE_NOTFOUND),
1518
+ /* harmony export */ SQLITE_NOTICE: () => (/* binding */ SQLITE_NOTICE),
1519
+ /* harmony export */ SQLITE_NULL: () => (/* binding */ SQLITE_NULL),
1520
+ /* harmony export */ SQLITE_OK: () => (/* binding */ SQLITE_OK),
1521
+ /* harmony export */ SQLITE_OPEN_AUTOPROXY: () => (/* binding */ SQLITE_OPEN_AUTOPROXY),
1522
+ /* harmony export */ SQLITE_OPEN_CREATE: () => (/* binding */ SQLITE_OPEN_CREATE),
1523
+ /* harmony export */ SQLITE_OPEN_DELETEONCLOSE: () => (/* binding */ SQLITE_OPEN_DELETEONCLOSE),
1524
+ /* harmony export */ SQLITE_OPEN_EXCLUSIVE: () => (/* binding */ SQLITE_OPEN_EXCLUSIVE),
1525
+ /* harmony export */ SQLITE_OPEN_FULLMUTEX: () => (/* binding */ SQLITE_OPEN_FULLMUTEX),
1526
+ /* harmony export */ SQLITE_OPEN_MAIN_DB: () => (/* binding */ SQLITE_OPEN_MAIN_DB),
1527
+ /* harmony export */ SQLITE_OPEN_MAIN_JOURNAL: () => (/* binding */ SQLITE_OPEN_MAIN_JOURNAL),
1528
+ /* harmony export */ SQLITE_OPEN_MEMORY: () => (/* binding */ SQLITE_OPEN_MEMORY),
1529
+ /* harmony export */ SQLITE_OPEN_NOFOLLOW: () => (/* binding */ SQLITE_OPEN_NOFOLLOW),
1530
+ /* harmony export */ SQLITE_OPEN_NOMUTEX: () => (/* binding */ SQLITE_OPEN_NOMUTEX),
1531
+ /* harmony export */ SQLITE_OPEN_PRIVATECACHE: () => (/* binding */ SQLITE_OPEN_PRIVATECACHE),
1532
+ /* harmony export */ SQLITE_OPEN_READONLY: () => (/* binding */ SQLITE_OPEN_READONLY),
1533
+ /* harmony export */ SQLITE_OPEN_READWRITE: () => (/* binding */ SQLITE_OPEN_READWRITE),
1534
+ /* harmony export */ SQLITE_OPEN_SHAREDCACHE: () => (/* binding */ SQLITE_OPEN_SHAREDCACHE),
1535
+ /* harmony export */ SQLITE_OPEN_SUBJOURNAL: () => (/* binding */ SQLITE_OPEN_SUBJOURNAL),
1536
+ /* harmony export */ SQLITE_OPEN_SUPER_JOURNAL: () => (/* binding */ SQLITE_OPEN_SUPER_JOURNAL),
1537
+ /* harmony export */ SQLITE_OPEN_TEMP_DB: () => (/* binding */ SQLITE_OPEN_TEMP_DB),
1538
+ /* harmony export */ SQLITE_OPEN_TEMP_JOURNAL: () => (/* binding */ SQLITE_OPEN_TEMP_JOURNAL),
1539
+ /* harmony export */ SQLITE_OPEN_TRANSIENT_DB: () => (/* binding */ SQLITE_OPEN_TRANSIENT_DB),
1540
+ /* harmony export */ SQLITE_OPEN_URI: () => (/* binding */ SQLITE_OPEN_URI),
1541
+ /* harmony export */ SQLITE_OPEN_WAL: () => (/* binding */ SQLITE_OPEN_WAL),
1542
+ /* harmony export */ SQLITE_PERM: () => (/* binding */ SQLITE_PERM),
1543
+ /* harmony export */ SQLITE_PRAGMA: () => (/* binding */ SQLITE_PRAGMA),
1544
+ /* harmony export */ SQLITE_PREPARE_NORMALIZED: () => (/* binding */ SQLITE_PREPARE_NORMALIZED),
1545
+ /* harmony export */ SQLITE_PREPARE_NO_VTAB: () => (/* binding */ SQLITE_PREPARE_NO_VTAB),
1546
+ /* harmony export */ SQLITE_PREPARE_PERSISTENT: () => (/* binding */ SQLITE_PREPARE_PERSISTENT),
1547
+ /* harmony export */ SQLITE_PROTOCOL: () => (/* binding */ SQLITE_PROTOCOL),
1548
+ /* harmony export */ SQLITE_RANGE: () => (/* binding */ SQLITE_RANGE),
1549
+ /* harmony export */ SQLITE_READ: () => (/* binding */ SQLITE_READ),
1550
+ /* harmony export */ SQLITE_READONLY: () => (/* binding */ SQLITE_READONLY),
1551
+ /* harmony export */ SQLITE_RECURSIVE: () => (/* binding */ SQLITE_RECURSIVE),
1552
+ /* harmony export */ SQLITE_REINDEX: () => (/* binding */ SQLITE_REINDEX),
1553
+ /* harmony export */ SQLITE_ROW: () => (/* binding */ SQLITE_ROW),
1554
+ /* harmony export */ SQLITE_SAVEPOINT: () => (/* binding */ SQLITE_SAVEPOINT),
1555
+ /* harmony export */ SQLITE_SCHEMA: () => (/* binding */ SQLITE_SCHEMA),
1556
+ /* harmony export */ SQLITE_SELECT: () => (/* binding */ SQLITE_SELECT),
1557
+ /* harmony export */ SQLITE_STATIC: () => (/* binding */ SQLITE_STATIC),
1558
+ /* harmony export */ SQLITE_SUBTYPE: () => (/* binding */ SQLITE_SUBTYPE),
1559
+ /* harmony export */ SQLITE_SYNC_DATAONLY: () => (/* binding */ SQLITE_SYNC_DATAONLY),
1560
+ /* harmony export */ SQLITE_SYNC_FULL: () => (/* binding */ SQLITE_SYNC_FULL),
1561
+ /* harmony export */ SQLITE_SYNC_NORMAL: () => (/* binding */ SQLITE_SYNC_NORMAL),
1562
+ /* harmony export */ SQLITE_TEXT: () => (/* binding */ SQLITE_TEXT),
1563
+ /* harmony export */ SQLITE_TOOBIG: () => (/* binding */ SQLITE_TOOBIG),
1564
+ /* harmony export */ SQLITE_TRANSACTION: () => (/* binding */ SQLITE_TRANSACTION),
1565
+ /* harmony export */ SQLITE_TRANSIENT: () => (/* binding */ SQLITE_TRANSIENT),
1566
+ /* harmony export */ SQLITE_UPDATE: () => (/* binding */ SQLITE_UPDATE),
1567
+ /* harmony export */ SQLITE_UTF16: () => (/* binding */ SQLITE_UTF16),
1568
+ /* harmony export */ SQLITE_UTF16BE: () => (/* binding */ SQLITE_UTF16BE),
1569
+ /* harmony export */ SQLITE_UTF16LE: () => (/* binding */ SQLITE_UTF16LE),
1570
+ /* harmony export */ SQLITE_UTF8: () => (/* binding */ SQLITE_UTF8),
1571
+ /* harmony export */ SQLITE_WARNING: () => (/* binding */ SQLITE_WARNING)
1572
+ /* harmony export */ });
1573
+ // Primary result codes.
1574
+ // https://www.sqlite.org/rescode.html
1575
+ const SQLITE_OK = 0;
1576
+ const SQLITE_ERROR = 1;
1577
+ const SQLITE_INTERNAL = 2;
1578
+ const SQLITE_PERM = 3;
1579
+ const SQLITE_ABORT = 4;
1580
+ const SQLITE_BUSY = 5;
1581
+ const SQLITE_LOCKED = 6;
1582
+ const SQLITE_NOMEM = 7;
1583
+ const SQLITE_READONLY = 8;
1584
+ const SQLITE_INTERRUPT = 9;
1585
+ const SQLITE_IOERR = 10;
1586
+ const SQLITE_CORRUPT = 11;
1587
+ const SQLITE_NOTFOUND = 12;
1588
+ const SQLITE_FULL = 13;
1589
+ const SQLITE_CANTOPEN = 14;
1590
+ const SQLITE_PROTOCOL = 15;
1591
+ const SQLITE_EMPTY = 16;
1592
+ const SQLITE_SCHEMA = 17;
1593
+ const SQLITE_TOOBIG = 18;
1594
+ const SQLITE_CONSTRAINT = 19;
1595
+ const SQLITE_MISMATCH = 20;
1596
+ const SQLITE_MISUSE = 21;
1597
+ const SQLITE_NOLFS = 22;
1598
+ const SQLITE_AUTH = 23;
1599
+ const SQLITE_FORMAT = 24;
1600
+ const SQLITE_RANGE = 25;
1601
+ const SQLITE_NOTADB = 26;
1602
+ const SQLITE_NOTICE = 27;
1603
+ const SQLITE_WARNING = 28;
1604
+ const SQLITE_ROW = 100;
1605
+ const SQLITE_DONE = 101;
1606
+
1607
+ // Extended error codes.
1608
+ const SQLITE_IOERR_ACCESS = 3338;
1609
+ const SQLITE_IOERR_CHECKRESERVEDLOCK = 3594;
1610
+ const SQLITE_IOERR_CLOSE = 4106;
1611
+ const SQLITE_IOERR_DATA = 8202;
1612
+ const SQLITE_IOERR_DELETE = 2570;
1613
+ const SQLITE_IOERR_DELETE_NOENT = 5898;
1614
+ const SQLITE_IOERR_DIR_FSYNC = 1290;
1615
+ const SQLITE_IOERR_FSTAT = 1802;
1616
+ const SQLITE_IOERR_FSYNC = 1034;
1617
+ const SQLITE_IOERR_GETTEMPPATH = 6410;
1618
+ const SQLITE_IOERR_LOCK = 3850;
1619
+ const SQLITE_IOERR_NOMEM = 3082;
1620
+ const SQLITE_IOERR_READ = 266;
1621
+ const SQLITE_IOERR_RDLOCK = 2314;
1622
+ const SQLITE_IOERR_SEEK = 5642;
1623
+ const SQLITE_IOERR_SHORT_READ = 522;
1624
+ const SQLITE_IOERR_TRUNCATE = 1546;
1625
+ const SQLITE_IOERR_UNLOCK = 2058;
1626
+ const SQLITE_IOERR_VNODE = 6922;
1627
+ const SQLITE_IOERR_WRITE = 778;
1628
+ const SQLITE_IOERR_BEGIN_ATOMIC = 7434;
1629
+ const SQLITE_IOERR_COMMIT_ATOMIC = 7690;
1630
+ const SQLITE_IOERR_ROLLBACK_ATOMIC = 7946;
1631
+
1632
+ // Other extended result codes.
1633
+ const SQLITE_CONSTRAINT_CHECK = 275;
1634
+ const SQLITE_CONSTRAINT_COMMITHOOK = 531;
1635
+ const SQLITE_CONSTRAINT_FOREIGNKEY = 787;
1636
+ const SQLITE_CONSTRAINT_FUNCTION = 1043;
1637
+ const SQLITE_CONSTRAINT_NOTNULL = 1299;
1638
+ const SQLITE_CONSTRAINT_PINNED = 2835;
1639
+ const SQLITE_CONSTRAINT_PRIMARYKEY = 1555;
1640
+ const SQLITE_CONSTRAINT_ROWID = 2579;
1641
+ const SQLITE_CONSTRAINT_TRIGGER = 1811;
1642
+ const SQLITE_CONSTRAINT_UNIQUE = 2067;
1643
+ const SQLITE_CONSTRAINT_VTAB = 2323;
1644
+
1645
+ // Open flags.
1646
+ // https://www.sqlite.org/c3ref/c_open_autoproxy.html
1647
+ const SQLITE_OPEN_READONLY = 0x00000001;
1648
+ const SQLITE_OPEN_READWRITE = 0x00000002;
1649
+ const SQLITE_OPEN_CREATE = 0x00000004;
1650
+ const SQLITE_OPEN_DELETEONCLOSE = 0x00000008;
1651
+ const SQLITE_OPEN_EXCLUSIVE = 0x00000010;
1652
+ const SQLITE_OPEN_AUTOPROXY = 0x00000020;
1653
+ const SQLITE_OPEN_URI = 0x00000040;
1654
+ const SQLITE_OPEN_MEMORY = 0x00000080;
1655
+ const SQLITE_OPEN_MAIN_DB = 0x00000100;
1656
+ const SQLITE_OPEN_TEMP_DB = 0x00000200;
1657
+ const SQLITE_OPEN_TRANSIENT_DB = 0x00000400;
1658
+ const SQLITE_OPEN_MAIN_JOURNAL = 0x00000800;
1659
+ const SQLITE_OPEN_TEMP_JOURNAL = 0x00001000;
1660
+ const SQLITE_OPEN_SUBJOURNAL = 0x00002000;
1661
+ const SQLITE_OPEN_SUPER_JOURNAL = 0x00004000;
1662
+ const SQLITE_OPEN_NOMUTEX = 0x00008000;
1663
+ const SQLITE_OPEN_FULLMUTEX = 0x00010000;
1664
+ const SQLITE_OPEN_SHAREDCACHE = 0x00020000;
1665
+ const SQLITE_OPEN_PRIVATECACHE = 0x00040000;
1666
+ const SQLITE_OPEN_WAL = 0x00080000;
1667
+ const SQLITE_OPEN_NOFOLLOW = 0x01000000;
1668
+
1669
+ // Locking levels.
1670
+ // https://www.sqlite.org/c3ref/c_lock_exclusive.html
1671
+ const SQLITE_LOCK_NONE = 0;
1672
+ const SQLITE_LOCK_SHARED = 1;
1673
+ const SQLITE_LOCK_RESERVED = 2;
1674
+ const SQLITE_LOCK_PENDING = 3;
1675
+ const SQLITE_LOCK_EXCLUSIVE = 4;
1676
+
1677
+ // Device characteristics.
1678
+ // https://www.sqlite.org/c3ref/c_iocap_atomic.html
1679
+ const SQLITE_IOCAP_ATOMIC = 0x00000001;
1680
+ const SQLITE_IOCAP_ATOMIC512 = 0x00000002;
1681
+ const SQLITE_IOCAP_ATOMIC1K = 0x00000004;
1682
+ const SQLITE_IOCAP_ATOMIC2K = 0x00000008;
1683
+ const SQLITE_IOCAP_ATOMIC4K = 0x00000010;
1684
+ const SQLITE_IOCAP_ATOMIC8K = 0x00000020;
1685
+ const SQLITE_IOCAP_ATOMIC16K = 0x00000040;
1686
+ const SQLITE_IOCAP_ATOMIC32K = 0x00000080;
1687
+ const SQLITE_IOCAP_ATOMIC64K = 0x00000100;
1688
+ const SQLITE_IOCAP_SAFE_APPEND = 0x00000200;
1689
+ const SQLITE_IOCAP_SEQUENTIAL = 0x00000400;
1690
+ const SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN = 0x00000800;
1691
+ const SQLITE_IOCAP_POWERSAFE_OVERWRITE = 0x00001000;
1692
+ const SQLITE_IOCAP_IMMUTABLE = 0x00002000;
1693
+ const SQLITE_IOCAP_BATCH_ATOMIC = 0x00004000;
1694
+
1695
+ // xAccess flags.
1696
+ // https://www.sqlite.org/c3ref/c_access_exists.html
1697
+ const SQLITE_ACCESS_EXISTS = 0;
1698
+ const SQLITE_ACCESS_READWRITE = 1;
1699
+ const SQLITE_ACCESS_READ = 2;
1700
+
1701
+ // File control opcodes
1702
+ // https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlbeginatomicwrite
1703
+ const SQLITE_FCNTL_LOCKSTATE = 1;
1704
+ const SQLITE_FCNTL_GET_LOCKPROXYFILE = 2;
1705
+ const SQLITE_FCNTL_SET_LOCKPROXYFILE = 3;
1706
+ const SQLITE_FCNTL_LAST_ERRNO = 4;
1707
+ const SQLITE_FCNTL_SIZE_HINT = 5;
1708
+ const SQLITE_FCNTL_CHUNK_SIZE = 6;
1709
+ const SQLITE_FCNTL_FILE_POINTER = 7;
1710
+ const SQLITE_FCNTL_SYNC_OMITTED = 8;
1711
+ const SQLITE_FCNTL_WIN32_AV_RETRY = 9;
1712
+ const SQLITE_FCNTL_PERSIST_WAL = 10;
1713
+ const SQLITE_FCNTL_OVERWRITE = 11;
1714
+ const SQLITE_FCNTL_VFSNAME = 12;
1715
+ const SQLITE_FCNTL_POWERSAFE_OVERWRITE = 13;
1716
+ const SQLITE_FCNTL_PRAGMA = 14;
1717
+ const SQLITE_FCNTL_BUSYHANDLER = 15;
1718
+ const SQLITE_FCNTL_TEMPFILENAME = 16;
1719
+ const SQLITE_FCNTL_MMAP_SIZE = 18;
1720
+ const SQLITE_FCNTL_TRACE = 19;
1721
+ const SQLITE_FCNTL_HAS_MOVED = 20;
1722
+ const SQLITE_FCNTL_SYNC = 21;
1723
+ const SQLITE_FCNTL_COMMIT_PHASETWO = 22;
1724
+ const SQLITE_FCNTL_WIN32_SET_HANDLE = 23;
1725
+ const SQLITE_FCNTL_WAL_BLOCK = 24;
1726
+ const SQLITE_FCNTL_ZIPVFS = 25;
1727
+ const SQLITE_FCNTL_RBU = 26;
1728
+ const SQLITE_FCNTL_VFS_POINTER = 27;
1729
+ const SQLITE_FCNTL_JOURNAL_POINTER = 28;
1730
+ const SQLITE_FCNTL_WIN32_GET_HANDLE = 29;
1731
+ const SQLITE_FCNTL_PDB = 30;
1732
+ const SQLITE_FCNTL_BEGIN_ATOMIC_WRITE = 31;
1733
+ const SQLITE_FCNTL_COMMIT_ATOMIC_WRITE = 32;
1734
+ const SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE = 33;
1735
+ const SQLITE_FCNTL_LOCK_TIMEOUT = 34;
1736
+ const SQLITE_FCNTL_DATA_VERSION = 35;
1737
+ const SQLITE_FCNTL_SIZE_LIMIT = 36;
1738
+ const SQLITE_FCNTL_CKPT_DONE = 37;
1739
+ const SQLITE_FCNTL_RESERVE_BYTES = 38;
1740
+ const SQLITE_FCNTL_CKPT_START = 39;
1741
+
1742
+ // Fundamental datatypes.
1743
+ // https://www.sqlite.org/c3ref/c_blob.html
1744
+ const SQLITE_INTEGER = 1;
1745
+ const SQLITE_FLOAT = 2;
1746
+ const SQLITE_TEXT = 3;
1747
+ const SQLITE_BLOB = 4;
1748
+ const SQLITE_NULL = 5;
1749
+
1750
+ // Special destructor behavior.
1751
+ // https://www.sqlite.org/c3ref/c_static.html
1752
+ const SQLITE_STATIC = 0;
1753
+ const SQLITE_TRANSIENT = -1;
1754
+
1755
+ // Text encodings.
1756
+ // https://sqlite.org/c3ref/c_any.html
1757
+ const SQLITE_UTF8 = 1; /* IMP: R-37514-35566 */
1758
+ const SQLITE_UTF16LE = 2; /* IMP: R-03371-37637 */
1759
+ const SQLITE_UTF16BE = 3; /* IMP: R-51971-34154 */
1760
+ const SQLITE_UTF16 = 4; /* Use native byte order */
1761
+
1762
+ // Module constraint ops.
1763
+ const SQLITE_INDEX_CONSTRAINT_EQ = 2;
1764
+ const SQLITE_INDEX_CONSTRAINT_GT = 4;
1765
+ const SQLITE_INDEX_CONSTRAINT_LE = 8;
1766
+ const SQLITE_INDEX_CONSTRAINT_LT = 16;
1767
+ const SQLITE_INDEX_CONSTRAINT_GE = 32;
1768
+ const SQLITE_INDEX_CONSTRAINT_MATCH = 64;
1769
+ const SQLITE_INDEX_CONSTRAINT_LIKE = 65;
1770
+ const SQLITE_INDEX_CONSTRAINT_GLOB = 66;
1771
+ const SQLITE_INDEX_CONSTRAINT_REGEXP = 67;
1772
+ const SQLITE_INDEX_CONSTRAINT_NE = 68;
1773
+ const SQLITE_INDEX_CONSTRAINT_ISNOT = 69;
1774
+ const SQLITE_INDEX_CONSTRAINT_ISNOTNULL = 70;
1775
+ const SQLITE_INDEX_CONSTRAINT_ISNULL = 71;
1776
+ const SQLITE_INDEX_CONSTRAINT_IS = 72;
1777
+ const SQLITE_INDEX_CONSTRAINT_FUNCTION = 150;
1778
+ const SQLITE_INDEX_SCAN_UNIQUE = 1; /* Scan visits at most = 1 row */
1779
+
1780
+ // Function flags
1781
+ const SQLITE_DETERMINISTIC = 0x000000800;
1782
+ const SQLITE_DIRECTONLY = 0x000080000;
1783
+ const SQLITE_SUBTYPE = 0x000100000;
1784
+ const SQLITE_INNOCUOUS = 0x000200000;
1785
+
1786
+ // Sync flags
1787
+ const SQLITE_SYNC_NORMAL = 0x00002;
1788
+ const SQLITE_SYNC_FULL = 0x00003;
1789
+ const SQLITE_SYNC_DATAONLY = 0x00010;
1790
+
1791
+ // Authorizer action codes
1792
+ const SQLITE_CREATE_INDEX = 1;
1793
+ const SQLITE_CREATE_TABLE = 2;
1794
+ const SQLITE_CREATE_TEMP_INDEX = 3;
1795
+ const SQLITE_CREATE_TEMP_TABLE = 4;
1796
+ const SQLITE_CREATE_TEMP_TRIGGER = 5;
1797
+ const SQLITE_CREATE_TEMP_VIEW = 6;
1798
+ const SQLITE_CREATE_TRIGGER = 7;
1799
+ const SQLITE_CREATE_VIEW = 8;
1800
+ const SQLITE_DELETE = 9;
1801
+ const SQLITE_DROP_INDEX = 10;
1802
+ const SQLITE_DROP_TABLE = 11;
1803
+ const SQLITE_DROP_TEMP_INDEX = 12;
1804
+ const SQLITE_DROP_TEMP_TABLE = 13;
1805
+ const SQLITE_DROP_TEMP_TRIGGER = 14;
1806
+ const SQLITE_DROP_TEMP_VIEW = 15;
1807
+ const SQLITE_DROP_TRIGGER = 16;
1808
+ const SQLITE_DROP_VIEW = 17;
1809
+ const SQLITE_INSERT = 18;
1810
+ const SQLITE_PRAGMA = 19;
1811
+ const SQLITE_READ = 20;
1812
+ const SQLITE_SELECT = 21;
1813
+ const SQLITE_TRANSACTION = 22;
1814
+ const SQLITE_UPDATE = 23;
1815
+ const SQLITE_ATTACH = 24;
1816
+ const SQLITE_DETACH = 25;
1817
+ const SQLITE_ALTER_TABLE = 26;
1818
+ const SQLITE_REINDEX = 27;
1819
+ const SQLITE_ANALYZE = 28;
1820
+ const SQLITE_CREATE_VTABLE = 29;
1821
+ const SQLITE_DROP_VTABLE = 30;
1822
+ const SQLITE_FUNCTION = 31;
1823
+ const SQLITE_SAVEPOINT = 32;
1824
+ const SQLITE_COPY = 0;
1825
+ const SQLITE_RECURSIVE = 33;
1826
+
1827
+ // Authorizer return codes
1828
+ const SQLITE_DENY = 1;
1829
+ const SQLITE_IGNORE = 2;
1830
+
1831
+ // Limit categories
1832
+ const SQLITE_LIMIT_LENGTH = 0;
1833
+ const SQLITE_LIMIT_SQL_LENGTH = 1;
1834
+ const SQLITE_LIMIT_COLUMN = 2;
1835
+ const SQLITE_LIMIT_EXPR_DEPTH = 3;
1836
+ const SQLITE_LIMIT_COMPOUND_SELECT = 4;
1837
+ const SQLITE_LIMIT_VDBE_OP = 5;
1838
+ const SQLITE_LIMIT_FUNCTION_ARG = 6;
1839
+ const SQLITE_LIMIT_ATTACHED = 7;
1840
+ const SQLITE_LIMIT_LIKE_PATTERN_LENGTH = 8;
1841
+ const SQLITE_LIMIT_VARIABLE_NUMBER = 9;
1842
+ const SQLITE_LIMIT_TRIGGER_DEPTH = 10;
1843
+ const SQLITE_LIMIT_WORKER_THREADS = 11;
1844
+
1845
+ const SQLITE_PREPARE_PERSISTENT = 0x01;
1846
+ const SQLITE_PREPARE_NORMALIZED = 0x02;
1847
+ const SQLITE_PREPARE_NO_VTAB = 0x04;
1848
+
1849
+ /***/ }),
1850
+
126
1851
  /***/ "../../node_modules/asn1.js/lib/asn1.js":
127
1852
  /*!**********************************************!*\
128
1853
  !*** ../../node_modules/asn1.js/lib/asn1.js ***!
@@ -38711,7 +40436,7 @@ __webpack_require__.r(__webpack_exports__);
38711
40436
  /* harmony export */ });
38712
40437
  /* harmony import */ var _powersync_common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @powersync/common */ "@powersync/common");
38713
40438
  /* harmony import */ var _powersync_common__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_powersync_common__WEBPACK_IMPORTED_MODULE_0__);
38714
- /* harmony import */ var _shared_navigator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../..//shared/navigator */ "./lib/src/shared/navigator.js");
40439
+ /* harmony import */ var _shared_navigator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../shared/navigator */ "./lib/src/shared/navigator.js");
38715
40440
  /* harmony import */ var _AsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AsyncDatabaseConnection */ "./lib/src/db/adapters/AsyncDatabaseConnection.js");
38716
40441
  /* harmony import */ var _WorkerWrappedAsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./WorkerWrappedAsyncDatabaseConnection */ "./lib/src/db/adapters/WorkerWrappedAsyncDatabaseConnection.js");
38717
40442
  /* harmony import */ var _wa_sqlite_WASQLiteConnection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./wa-sqlite/WASQLiteConnection */ "./lib/src/db/adapters/wa-sqlite/WASQLiteConnection.js");
@@ -38788,21 +40513,28 @@ class LockedAsyncDatabaseAdapter extends _powersync_common__WEBPACK_IMPORTED_MOD
38788
40513
  return this.initPromise;
38789
40514
  }
38790
40515
  async openInternalDB() {
38791
- // Dispose any previous table change listener.
38792
- this._disposeTableChangeListener?.();
38793
- this._disposeTableChangeListener = null;
38794
- const isReOpen = !!this._db;
38795
- this._db = await this.options.openConnection();
38796
- await this._db.init();
38797
- this._config = await this._db.getConfig();
38798
- await this.registerOnChangeListener(this._db);
38799
- if (isReOpen) {
38800
- this.iterateListeners((cb) => cb.databaseReOpened?.());
38801
- }
38802
40516
  /**
38803
- * This is only required for the long-lived shared IndexedDB connections.
40517
+ * Execute opening of the db in a lock in order not to interfere with other operations.
38804
40518
  */
38805
- this.requiresHolds = this._config.vfs == _wa_sqlite_WASQLiteConnection__WEBPACK_IMPORTED_MODULE_4__.WASQLiteVFS.IDBBatchAtomicVFS;
40519
+ return this._acquireLock(async () => {
40520
+ // Dispose any previous table change listener.
40521
+ this._disposeTableChangeListener?.();
40522
+ this._disposeTableChangeListener = null;
40523
+ this._db?.close().catch((ex) => this.logger.warn(`Error closing database before opening new instance`, ex));
40524
+ const isReOpen = !!this._db;
40525
+ this._db = null;
40526
+ this._db = await this.options.openConnection();
40527
+ await this._db.init();
40528
+ this._config = await this._db.getConfig();
40529
+ await this.registerOnChangeListener(this._db);
40530
+ if (isReOpen) {
40531
+ this.iterateListeners((cb) => cb.databaseReOpened?.());
40532
+ }
40533
+ /**
40534
+ * This is only required for the long-lived shared IndexedDB connections.
40535
+ */
40536
+ this.requiresHolds = this._config.vfs == _wa_sqlite_WASQLiteConnection__WEBPACK_IMPORTED_MODULE_4__.WASQLiteVFS.IDBBatchAtomicVFS;
40537
+ });
38806
40538
  }
38807
40539
  _reOpen() {
38808
40540
  this.databaseOpenPromise = this.openInternalDB().finally(() => {
@@ -38824,7 +40556,24 @@ class LockedAsyncDatabaseAdapter extends _powersync_common__WEBPACK_IMPORTED_MOD
38824
40556
  return this._reOpen();
38825
40557
  }
38826
40558
  async _init() {
38827
- await this.openInternalDB();
40559
+ /**
40560
+ * For OPFS, we can see this open call sometimes fail due to NoModificationAllowedError.
40561
+ * We should be able to recover from this by re-opening the database.
40562
+ */
40563
+ const maxAttempts = 3;
40564
+ for (let count = 0; count < maxAttempts; count++) {
40565
+ try {
40566
+ await this.openInternalDB();
40567
+ break;
40568
+ }
40569
+ catch (ex) {
40570
+ if (count == maxAttempts - 1) {
40571
+ throw ex;
40572
+ }
40573
+ this.logger.warn(`Attempt ${count + 1} of ${maxAttempts} to open database failed, retrying in 1 second...`, ex);
40574
+ await new Promise((resolve) => setTimeout(resolve, 1000));
40575
+ }
40576
+ }
38828
40577
  this.iterateListeners((cb) => cb.initialized?.());
38829
40578
  }
38830
40579
  getConfiguration() {
@@ -38901,8 +40650,7 @@ class LockedAsyncDatabaseAdapter extends _powersync_common__WEBPACK_IMPORTED_MOD
38901
40650
  timeoutMs: options?.timeoutMs ?? this.options.defaultLockTimeoutMs
38902
40651
  });
38903
40652
  }
38904
- async acquireLock(callback, options) {
38905
- await this.waitForInitialized();
40653
+ async _acquireLock(callback, options) {
38906
40654
  if (this.closing) {
38907
40655
  throw new Error(`Cannot acquire lock, the database is closing`);
38908
40656
  }
@@ -38920,25 +40668,26 @@ class LockedAsyncDatabaseAdapter extends _powersync_common__WEBPACK_IMPORTED_MOD
38920
40668
  if (timeoutId) {
38921
40669
  clearTimeout(timeoutId);
38922
40670
  }
40671
+ return await callback();
40672
+ });
40673
+ }
40674
+ async acquireLock(callback, options) {
40675
+ await this.waitForInitialized();
40676
+ return this._acquireLock(async () => {
38923
40677
  let holdId = null;
38924
40678
  try {
38925
40679
  // The database is being opened in the background. Wait for it here.
38926
40680
  if (this.databaseOpenPromise) {
38927
- try {
38928
- await this.databaseOpenPromise;
38929
- }
38930
- catch (ex) {
38931
- // This will cause a retry of opening the database.
38932
- const wrappedError = new _AsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_2__.ConnectionClosedError('Could not open database');
38933
- wrappedError.cause = ex;
38934
- throw wrappedError;
38935
- }
40681
+ /**
40682
+ * We can't await this since it uses the same lock as we're in now.
40683
+ */
40684
+ throw new _AsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_2__.ConnectionClosedError('Connection is busy re-opening');
38936
40685
  }
38937
40686
  holdId = this.requiresHolds ? await this.baseDB.markHold() : null;
38938
40687
  return await callback();
38939
40688
  }
38940
40689
  catch (ex) {
38941
- if (ex instanceof _AsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_2__.ConnectionClosedError) {
40690
+ if (ex instanceof _AsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_2__.ConnectionClosedError || (ex instanceof Error && ex.name === 'NoModificationAllowedError')) {
38942
40691
  if (this.options.reOpenOnConnectionClosed && !this.databaseOpenPromise && !this.closing) {
38943
40692
  // Immediately re-open the database. We need to miss as little table updates as possible.
38944
40693
  this.reOpenInternalDB();
@@ -38951,7 +40700,7 @@ class LockedAsyncDatabaseAdapter extends _powersync_common__WEBPACK_IMPORTED_MOD
38951
40700
  await this.baseDB.releaseHold(holdId);
38952
40701
  }
38953
40702
  }
38954
- });
40703
+ }, options);
38955
40704
  }
38956
40705
  async readTransaction(fn, options) {
38957
40706
  return this.readLock(this.wrapTransaction(fn));
@@ -39347,6 +41096,8 @@ __webpack_require__.r(__webpack_exports__);
39347
41096
  /* harmony import */ var _powersync_common__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_powersync_common__WEBPACK_IMPORTED_MODULE_1__);
39348
41097
  /* harmony import */ var async_mutex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! async-mutex */ "async-mutex");
39349
41098
  /* harmony import */ var async_mutex__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(async_mutex__WEBPACK_IMPORTED_MODULE_2__);
41099
+ /* harmony import */ var _worker_db_opfs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../worker/db/opfs */ "./lib/src/worker/db/opfs.js");
41100
+
39350
41101
 
39351
41102
 
39352
41103
 
@@ -39429,11 +41180,10 @@ const DEFAULT_MODULE_FACTORIES = {
39429
41180
  else {
39430
41181
  module = await SyncWASQLiteModuleFactory();
39431
41182
  }
39432
- // @ts-expect-error The types for this static method are missing upstream
39433
- const { OPFSCoopSyncVFS } = await Promise.resolve(/*! import() */).then(__webpack_require__.t.bind(__webpack_require__, /*! @journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js */ "@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js", 23));
41183
+ const vfs = await _worker_db_opfs__WEBPACK_IMPORTED_MODULE_3__.OPFSCoopSyncVFS.create(options.dbFileName, module);
39434
41184
  return {
39435
41185
  module,
39436
- vfs: await OPFSCoopSyncVFS.create(options.dbFileName, module)
41186
+ vfs: vfs
39437
41187
  };
39438
41188
  }
39439
41189
  };
@@ -39830,8 +41580,8 @@ __webpack_require__.r(__webpack_exports__);
39830
41580
  /* harmony import */ var _worker_db_open_worker_database__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../worker/db/open-worker-database */ "./lib/src/worker/db/open-worker-database.js");
39831
41581
  /* harmony import */ var _AbstractWebSQLOpenFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../AbstractWebSQLOpenFactory */ "./lib/src/db/adapters/AbstractWebSQLOpenFactory.js");
39832
41582
  /* harmony import */ var _LockedAsyncDatabaseAdapter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../LockedAsyncDatabaseAdapter */ "./lib/src/db/adapters/LockedAsyncDatabaseAdapter.js");
39833
- /* harmony import */ var _web_sql_flags__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../web-sql-flags */ "./lib/src/db/adapters/web-sql-flags.js");
39834
- /* harmony import */ var _WorkerWrappedAsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../WorkerWrappedAsyncDatabaseConnection */ "./lib/src/db/adapters/WorkerWrappedAsyncDatabaseConnection.js");
41583
+ /* harmony import */ var _WorkerWrappedAsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../WorkerWrappedAsyncDatabaseConnection */ "./lib/src/db/adapters/WorkerWrappedAsyncDatabaseConnection.js");
41584
+ /* harmony import */ var _web_sql_flags__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../web-sql-flags */ "./lib/src/db/adapters/web-sql-flags.js");
39835
41585
  /* harmony import */ var _WASQLiteConnection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./WASQLiteConnection */ "./lib/src/db/adapters/wa-sqlite/WASQLiteConnection.js");
39836
41586
 
39837
41587
 
@@ -39862,7 +41612,7 @@ class WASQLiteOpenFactory extends _AbstractWebSQLOpenFactory__WEBPACK_IMPORTED_M
39862
41612
  }
39863
41613
  async openConnection() {
39864
41614
  const { enableMultiTabs, useWebWorker } = this.resolvedFlags;
39865
- const { vfs = _WASQLiteConnection__WEBPACK_IMPORTED_MODULE_6__.WASQLiteVFS.IDBBatchAtomicVFS, temporaryStorage = _web_sql_flags__WEBPACK_IMPORTED_MODULE_4__.TemporaryStorageOption.MEMORY, cacheSizeKb = _web_sql_flags__WEBPACK_IMPORTED_MODULE_4__.DEFAULT_CACHE_SIZE_KB, encryptionKey } = this.waOptions;
41615
+ const { vfs = _WASQLiteConnection__WEBPACK_IMPORTED_MODULE_6__.WASQLiteVFS.IDBBatchAtomicVFS, temporaryStorage = _web_sql_flags__WEBPACK_IMPORTED_MODULE_5__.TemporaryStorageOption.MEMORY, cacheSizeKb = _web_sql_flags__WEBPACK_IMPORTED_MODULE_5__.DEFAULT_CACHE_SIZE_KB, encryptionKey } = this.waOptions;
39866
41616
  if (!enableMultiTabs) {
39867
41617
  this.logger.warn('Multiple tabs are not enabled in this browser');
39868
41618
  }
@@ -39878,7 +41628,7 @@ class WASQLiteOpenFactory extends _AbstractWebSQLOpenFactory__WEBPACK_IMPORTED_M
39878
41628
  }))
39879
41629
  : (0,_worker_db_open_worker_database__WEBPACK_IMPORTED_MODULE_1__.openWorkerDatabasePort)(this.options.dbFilename, enableMultiTabs, optionsDbWorker, this.waOptions.vfs);
39880
41630
  const workerDBOpener = comlink__WEBPACK_IMPORTED_MODULE_0__.wrap(workerPort);
39881
- return new _WorkerWrappedAsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_5__.WorkerWrappedAsyncDatabaseConnection({
41631
+ return new _WorkerWrappedAsyncDatabaseConnection__WEBPACK_IMPORTED_MODULE_4__.WorkerWrappedAsyncDatabaseConnection({
39882
41632
  remote: workerDBOpener,
39883
41633
  // This tab owns the worker, so we're guaranteed to outlive it.
39884
41634
  remoteCanCloseUnexpectedly: false,
@@ -40244,7 +41994,7 @@ class SharedWebStreamingSyncImplementation extends _WebStreamingSyncImplementati
40244
41994
  }
40245
41995
  }
40246
41996
  else {
40247
- this.messagePort = new SharedWorker(new URL(/* worker import */ __webpack_require__.p + __webpack_require__.u("lib_src_worker_sync_SharedSyncImplementation_worker_js-_journeyapps_wa-sqlite-_journeyapps_wa-4748cf"), __webpack_require__.b), {
41997
+ this.messagePort = new SharedWorker(new URL(/* worker import */ __webpack_require__.p + __webpack_require__.u("lib_src_worker_sync_SharedSyncImplementation_worker_js-_journeyapps_wa-sqlite-_journeyapps_wa-d97eb8"), __webpack_require__.b), {
40248
41998
  /* @vite-ignore */
40249
41999
  name: `shared-sync-${this.webOptions.identifier}`,
40250
42000
  type: undefined
@@ -40611,12 +42361,12 @@ function openWorkerDatabasePort(workerIdentifier, multipleTabs = true, worker =
40611
42361
  * (in the case of Android)
40612
42362
  */
40613
42363
  return !needsDedicated && multipleTabs
40614
- ? new SharedWorker(new URL(/* worker import */ __webpack_require__.p + __webpack_require__.u("lib_src_worker_db_WASQLiteDB_worker_js-_journeyapps_wa-sqlite_src_examples_AccessHandlePoolVF-1dc7800"), __webpack_require__.b), {
42364
+ ? new SharedWorker(new URL(/* worker import */ __webpack_require__.p + __webpack_require__.u("lib_src_worker_db_WASQLiteDB_worker_js-_journeyapps_wa-sqlite_src_examples_AccessHandlePoolVF-7740190"), __webpack_require__.b), {
40615
42365
  /* @vite-ignore */
40616
42366
  name: `shared-DB-worker-${workerIdentifier}`,
40617
42367
  type: undefined
40618
42368
  }).port
40619
- : new Worker(new URL(/* worker import */ __webpack_require__.p + __webpack_require__.u("lib_src_worker_db_WASQLiteDB_worker_js-_journeyapps_wa-sqlite_src_examples_AccessHandlePoolVF-1dc7801"), __webpack_require__.b), {
42369
+ : new Worker(new URL(/* worker import */ __webpack_require__.p + __webpack_require__.u("lib_src_worker_db_WASQLiteDB_worker_js-_journeyapps_wa-sqlite_src_examples_AccessHandlePoolVF-7740191"), __webpack_require__.b), {
40620
42370
  /* @vite-ignore */
40621
42371
  name: `DB-worker-${workerIdentifier}`,
40622
42372
  type: undefined
@@ -40639,6 +42389,605 @@ function isSharedWorker(worker) {
40639
42389
  }
40640
42390
 
40641
42391
 
42392
+ /***/ }),
42393
+
42394
+ /***/ "./lib/src/worker/db/opfs.js":
42395
+ /*!***********************************!*\
42396
+ !*** ./lib/src/worker/db/opfs.js ***!
42397
+ \***********************************/
42398
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
42399
+
42400
+ "use strict";
42401
+ __webpack_require__.r(__webpack_exports__);
42402
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
42403
+ /* harmony export */ OPFSCoopSyncVFS: () => (/* binding */ OPFSCoopSyncVFS)
42404
+ /* harmony export */ });
42405
+ /* harmony import */ var _journeyapps_wa_sqlite_src_FacadeVFS_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @journeyapps/wa-sqlite/src/FacadeVFS.js */ "../../node_modules/@journeyapps/wa-sqlite/src/FacadeVFS.js");
42406
+ /* harmony import */ var _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @journeyapps/wa-sqlite/src/VFS.js */ "../../node_modules/@journeyapps/wa-sqlite/src/VFS.js");
42407
+ // Copyright 2024 Roy T. Hashimoto. All Rights Reserved.
42408
+ // @ts-nocheck
42409
+
42410
+
42411
+ const DEFAULT_TEMPORARY_FILES = 10;
42412
+ const LOCK_NOTIFY_INTERVAL = 1000;
42413
+ const DB_RELATED_FILE_SUFFIXES = ['', '-journal', '-wal'];
42414
+ const finalizationRegistry = new FinalizationRegistry((releaser) => releaser());
42415
+ class File {
42416
+ /** @type {string} */ path;
42417
+ /** @type {number} */ flags;
42418
+ /** @type {FileSystemSyncAccessHandle} */ accessHandle;
42419
+ /** @type {PersistentFile?} */ persistentFile;
42420
+ constructor(path, flags) {
42421
+ this.path = path;
42422
+ this.flags = flags;
42423
+ }
42424
+ }
42425
+ class PersistentFile {
42426
+ /** @type {FileSystemFileHandle} */ fileHandle;
42427
+ /** @type {FileSystemSyncAccessHandle} */ accessHandle = null;
42428
+ // The following properties are for main database files.
42429
+ /** @type {boolean} */ isLockBusy = false;
42430
+ /** @type {boolean} */ isFileLocked = false;
42431
+ /** @type {boolean} */ isRequestInProgress = false;
42432
+ /** @type {function} */ handleLockReleaser = null;
42433
+ /** @type {BroadcastChannel} */ handleRequestChannel;
42434
+ /** @type {boolean} */ isHandleRequested = false;
42435
+ constructor(fileHandle) {
42436
+ this.fileHandle = fileHandle;
42437
+ }
42438
+ }
42439
+ class OPFSCoopSyncVFS extends _journeyapps_wa_sqlite_src_FacadeVFS_js__WEBPACK_IMPORTED_MODULE_0__.FacadeVFS {
42440
+ /** @type {Map<number, File>} */ mapIdToFile = new Map();
42441
+ lastError = null;
42442
+ log = null; //function(...args) { console.log(`[${contextName}]`, ...args) };
42443
+ /** @type {Map<string, PersistentFile>} */ persistentFiles = new Map();
42444
+ /** @type {Map<string, FileSystemSyncAccessHandle>} */ boundAccessHandles = new Map();
42445
+ /** @type {Set<FileSystemSyncAccessHandle>} */ unboundAccessHandles = new Set();
42446
+ /** @type {Set<string>} */ accessiblePaths = new Set();
42447
+ releaser = null;
42448
+ static async create(name, module) {
42449
+ const vfs = new OPFSCoopSyncVFS(name, module);
42450
+ await Promise.all([vfs.isReady(), vfs.#initialize(DEFAULT_TEMPORARY_FILES)]);
42451
+ return vfs;
42452
+ }
42453
+ constructor(name, module) {
42454
+ super(name, module);
42455
+ }
42456
+ async #initialize(nTemporaryFiles) {
42457
+ // Delete temporary directories no longer in use.
42458
+ const root = await navigator.storage.getDirectory();
42459
+ // @ts-ignore
42460
+ for await (const entry of root.values()) {
42461
+ if (entry.kind === 'directory' && entry.name.startsWith('.ahp-')) {
42462
+ // A lock with the same name as the directory protects it from
42463
+ // being deleted.
42464
+ await navigator.locks.request(entry.name, { ifAvailable: true }, async (lock) => {
42465
+ if (lock) {
42466
+ this.log?.(`Deleting temporary directory ${entry.name}`);
42467
+ await root.removeEntry(entry.name, { recursive: true });
42468
+ }
42469
+ else {
42470
+ this.log?.(`Temporary directory ${entry.name} is in use`);
42471
+ }
42472
+ });
42473
+ }
42474
+ }
42475
+ // Create our temporary directory.
42476
+ const tmpDirName = `.ahp-${Math.random().toString(36).slice(2)}`;
42477
+ this.releaser = await new Promise((resolve) => {
42478
+ navigator.locks.request(tmpDirName, () => {
42479
+ return new Promise((release) => {
42480
+ resolve(release);
42481
+ });
42482
+ });
42483
+ });
42484
+ const releaseHandle = async () => {
42485
+ await Promise.all(this.persistentFiles.values().map(async (file) => {
42486
+ try {
42487
+ await this.#releaseAccessHandle(file);
42488
+ }
42489
+ catch (e) {
42490
+ this.log?.('error releasing access handle', e);
42491
+ }
42492
+ finally {
42493
+ release();
42494
+ }
42495
+ }));
42496
+ };
42497
+ finalizationRegistry.register(this, releaseHandle);
42498
+ finalizationRegistry.register(this, this.releaser);
42499
+ const tmpDir = await root.getDirectoryHandle(tmpDirName, { create: true });
42500
+ // Populate temporary directory.
42501
+ for (let i = 0; i < nTemporaryFiles; i++) {
42502
+ const tmpFile = await tmpDir.getFileHandle(`${i}.tmp`, { create: true });
42503
+ const tmpAccessHandle = await tmpFile.createSyncAccessHandle();
42504
+ this.unboundAccessHandles.add(tmpAccessHandle);
42505
+ }
42506
+ }
42507
+ /**
42508
+ * @param {string?} zName
42509
+ * @param {number} fileId
42510
+ * @param {number} flags
42511
+ * @param {DataView} pOutFlags
42512
+ * @returns {number}
42513
+ */
42514
+ jOpen(zName, fileId, flags, pOutFlags) {
42515
+ try {
42516
+ const url = new URL(zName || Math.random().toString(36).slice(2), 'file://');
42517
+ const path = url.pathname;
42518
+ if (flags & _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OPEN_MAIN_DB) {
42519
+ const persistentFile = this.persistentFiles.get(path);
42520
+ if (persistentFile?.isRequestInProgress) {
42521
+ // Should not reach here unless SQLite itself retries an open.
42522
+ // Otherwise, asynchronous operations started on a previous
42523
+ // open try should have completed.
42524
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_BUSY;
42525
+ }
42526
+ else if (!persistentFile) {
42527
+ // This is the usual starting point for opening a database.
42528
+ // Register a Promise that resolves when the database and related
42529
+ // files are ready to be used.
42530
+ this.log?.(`creating persistent file for ${path}`);
42531
+ const create = !!(flags & _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OPEN_CREATE);
42532
+ this._module.retryOps.push((async () => {
42533
+ try {
42534
+ // Get the path directory handle.
42535
+ let dirHandle = await navigator.storage.getDirectory();
42536
+ const directories = path.split('/').filter((d) => d);
42537
+ const filename = directories.pop();
42538
+ for (const directory of directories) {
42539
+ dirHandle = await dirHandle.getDirectoryHandle(directory, { create });
42540
+ }
42541
+ // Get file handles for the database and related files,
42542
+ // and create persistent file instances.
42543
+ for (const suffix of DB_RELATED_FILE_SUFFIXES) {
42544
+ const fileHandle = await dirHandle.getFileHandle(filename + suffix, { create });
42545
+ await this.#createPersistentFile(fileHandle);
42546
+ }
42547
+ // Get access handles for the files.
42548
+ const file = new File(path, flags);
42549
+ file.persistentFile = this.persistentFiles.get(path);
42550
+ await this.#requestAccessHandle(file);
42551
+ }
42552
+ catch (e) {
42553
+ // Use an invalid persistent file to signal this error
42554
+ // for the retried open.
42555
+ const persistentFile = new PersistentFile(null);
42556
+ this.persistentFiles.set(path, persistentFile);
42557
+ console.error(e);
42558
+ }
42559
+ })());
42560
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_BUSY;
42561
+ }
42562
+ else if (!persistentFile.fileHandle) {
42563
+ // The asynchronous open operation failed.
42564
+ this.persistentFiles.delete(path);
42565
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_CANTOPEN;
42566
+ }
42567
+ else if (!persistentFile.accessHandle) {
42568
+ // This branch is reached if the database was previously opened
42569
+ // and closed.
42570
+ this._module.retryOps.push((async () => {
42571
+ const file = new File(path, flags);
42572
+ file.persistentFile = this.persistentFiles.get(path);
42573
+ await this.#requestAccessHandle(file);
42574
+ })());
42575
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_BUSY;
42576
+ }
42577
+ }
42578
+ if (!this.accessiblePaths.has(path) && !(flags & _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OPEN_CREATE)) {
42579
+ throw new Error(`File ${path} not found`);
42580
+ }
42581
+ const file = new File(path, flags);
42582
+ this.mapIdToFile.set(fileId, file);
42583
+ if (this.persistentFiles.has(path)) {
42584
+ file.persistentFile = this.persistentFiles.get(path);
42585
+ }
42586
+ else if (this.boundAccessHandles.has(path)) {
42587
+ // This temporary file was previously created and closed. Reopen
42588
+ // the same access handle.
42589
+ file.accessHandle = this.boundAccessHandles.get(path);
42590
+ }
42591
+ else if (this.unboundAccessHandles.size) {
42592
+ // Associate an unbound access handle to this file.
42593
+ file.accessHandle = this.unboundAccessHandles.values().next().value;
42594
+ file.accessHandle.truncate(0);
42595
+ this.unboundAccessHandles.delete(file.accessHandle);
42596
+ this.boundAccessHandles.set(path, file.accessHandle);
42597
+ }
42598
+ this.accessiblePaths.add(path);
42599
+ pOutFlags.setInt32(0, flags, true);
42600
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42601
+ }
42602
+ catch (e) {
42603
+ this.lastError = e;
42604
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_CANTOPEN;
42605
+ }
42606
+ }
42607
+ /**
42608
+ * @param {string} zName
42609
+ * @param {number} syncDir
42610
+ * @returns {number}
42611
+ */
42612
+ jDelete(zName, syncDir) {
42613
+ try {
42614
+ const url = new URL(zName, 'file://');
42615
+ const path = url.pathname;
42616
+ if (this.persistentFiles.has(path)) {
42617
+ const persistentFile = this.persistentFiles.get(path);
42618
+ persistentFile.accessHandle.truncate(0);
42619
+ }
42620
+ else {
42621
+ this.boundAccessHandles.get(path)?.truncate(0);
42622
+ }
42623
+ this.accessiblePaths.delete(path);
42624
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42625
+ }
42626
+ catch (e) {
42627
+ this.lastError = e;
42628
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_IOERR_DELETE;
42629
+ }
42630
+ }
42631
+ /**
42632
+ * @param {string} zName
42633
+ * @param {number} flags
42634
+ * @param {DataView} pResOut
42635
+ * @returns {number}
42636
+ */
42637
+ jAccess(zName, flags, pResOut) {
42638
+ try {
42639
+ const url = new URL(zName, 'file://');
42640
+ const path = url.pathname;
42641
+ pResOut.setInt32(0, this.accessiblePaths.has(path) ? 1 : 0, true);
42642
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42643
+ }
42644
+ catch (e) {
42645
+ this.lastError = e;
42646
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_IOERR_ACCESS;
42647
+ }
42648
+ }
42649
+ /**
42650
+ * @param {number} fileId
42651
+ * @returns {number}
42652
+ */
42653
+ jClose(fileId) {
42654
+ try {
42655
+ const file = this.mapIdToFile.get(fileId);
42656
+ this.mapIdToFile.delete(fileId);
42657
+ if (file?.flags & _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OPEN_MAIN_DB) {
42658
+ if (file.persistentFile?.accessHandle) {
42659
+ this.#releaseAccessHandle(file);
42660
+ }
42661
+ }
42662
+ else if (file?.flags & _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OPEN_DELETEONCLOSE) {
42663
+ file.accessHandle.truncate(0);
42664
+ this.accessiblePaths.delete(file.path);
42665
+ if (!this.persistentFiles.has(file.path)) {
42666
+ this.boundAccessHandles.delete(file.path);
42667
+ this.unboundAccessHandles.add(file.accessHandle);
42668
+ }
42669
+ }
42670
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42671
+ }
42672
+ catch (e) {
42673
+ this.lastError = e;
42674
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_IOERR_CLOSE;
42675
+ }
42676
+ }
42677
+ /**
42678
+ * @param {number} fileId
42679
+ * @param {Uint8Array} pData
42680
+ * @param {number} iOffset
42681
+ * @returns {number}
42682
+ */
42683
+ jRead(fileId, pData, iOffset) {
42684
+ try {
42685
+ const file = this.mapIdToFile.get(fileId);
42686
+ // On Chrome (at least), passing pData to accessHandle.read() is
42687
+ // an error because pData is a Proxy of a Uint8Array. Calling
42688
+ // subarray() produces a real Uint8Array and that works.
42689
+ const accessHandle = file.accessHandle || file.persistentFile.accessHandle;
42690
+ const bytesRead = accessHandle.read(pData.subarray(), { at: iOffset });
42691
+ // Opening a database file performs one read without a xLock call.
42692
+ if (file.flags & _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OPEN_MAIN_DB && !file.persistentFile.isFileLocked) {
42693
+ this.#releaseAccessHandle(file);
42694
+ }
42695
+ if (bytesRead < pData.byteLength) {
42696
+ pData.fill(0, bytesRead);
42697
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_IOERR_SHORT_READ;
42698
+ }
42699
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42700
+ }
42701
+ catch (e) {
42702
+ this.lastError = e;
42703
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_IOERR_READ;
42704
+ }
42705
+ }
42706
+ /**
42707
+ * @param {number} fileId
42708
+ * @param {Uint8Array} pData
42709
+ * @param {number} iOffset
42710
+ * @returns {number}
42711
+ */
42712
+ jWrite(fileId, pData, iOffset) {
42713
+ try {
42714
+ const file = this.mapIdToFile.get(fileId);
42715
+ // On Chrome (at least), passing pData to accessHandle.write() is
42716
+ // an error because pData is a Proxy of a Uint8Array. Calling
42717
+ // subarray() produces a real Uint8Array and that works.
42718
+ const accessHandle = file.accessHandle || file.persistentFile.accessHandle;
42719
+ const nBytes = accessHandle.write(pData.subarray(), { at: iOffset });
42720
+ if (nBytes !== pData.byteLength)
42721
+ throw new Error('short write');
42722
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42723
+ }
42724
+ catch (e) {
42725
+ this.lastError = e;
42726
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_IOERR_WRITE;
42727
+ }
42728
+ }
42729
+ /**
42730
+ * @param {number} fileId
42731
+ * @param {number} iSize
42732
+ * @returns {number}
42733
+ */
42734
+ jTruncate(fileId, iSize) {
42735
+ try {
42736
+ const file = this.mapIdToFile.get(fileId);
42737
+ const accessHandle = file.accessHandle || file.persistentFile.accessHandle;
42738
+ accessHandle.truncate(iSize);
42739
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42740
+ }
42741
+ catch (e) {
42742
+ this.lastError = e;
42743
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_IOERR_TRUNCATE;
42744
+ }
42745
+ }
42746
+ /**
42747
+ * @param {number} fileId
42748
+ * @param {number} flags
42749
+ * @returns {number}
42750
+ */
42751
+ jSync(fileId, flags) {
42752
+ try {
42753
+ const file = this.mapIdToFile.get(fileId);
42754
+ const accessHandle = file.accessHandle || file.persistentFile.accessHandle;
42755
+ accessHandle.flush();
42756
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42757
+ }
42758
+ catch (e) {
42759
+ this.lastError = e;
42760
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_IOERR_FSYNC;
42761
+ }
42762
+ }
42763
+ /**
42764
+ * @param {number} fileId
42765
+ * @param {DataView} pSize64
42766
+ * @returns {number}
42767
+ */
42768
+ jFileSize(fileId, pSize64) {
42769
+ try {
42770
+ const file = this.mapIdToFile.get(fileId);
42771
+ const accessHandle = file.accessHandle || file.persistentFile.accessHandle;
42772
+ const size = accessHandle.getSize();
42773
+ pSize64.setBigInt64(0, BigInt(size), true);
42774
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42775
+ }
42776
+ catch (e) {
42777
+ this.lastError = e;
42778
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_IOERR_FSTAT;
42779
+ }
42780
+ }
42781
+ /**
42782
+ * @param {number} fileId
42783
+ * @param {number} lockType
42784
+ * @returns {number}
42785
+ */
42786
+ jLock(fileId, lockType) {
42787
+ const file = this.mapIdToFile.get(fileId);
42788
+ if (file.persistentFile.isRequestInProgress) {
42789
+ file.persistentFile.isLockBusy = true;
42790
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_BUSY;
42791
+ }
42792
+ file.persistentFile.isFileLocked = true;
42793
+ if (!file.persistentFile.handleLockReleaser) {
42794
+ // Start listening for notifications from other connections.
42795
+ // This is before we actually get access handles, but waiting to
42796
+ // listen until then allows a race condition where notifications
42797
+ // are missed.
42798
+ file.persistentFile.handleRequestChannel.onmessage = () => {
42799
+ this.log?.(`received notification for ${file.path}`);
42800
+ if (file.persistentFile.isFileLocked) {
42801
+ // We're still using the access handle, so mark it to be
42802
+ // released when we're done.
42803
+ file.persistentFile.isHandleRequested = true;
42804
+ }
42805
+ else {
42806
+ // Release the access handles immediately.
42807
+ this.#releaseAccessHandle(file);
42808
+ }
42809
+ file.persistentFile.handleRequestChannel.onmessage = null;
42810
+ };
42811
+ this.#requestAccessHandle(file);
42812
+ this.log?.('returning SQLITE_BUSY');
42813
+ file.persistentFile.isLockBusy = true;
42814
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_BUSY;
42815
+ }
42816
+ file.persistentFile.isLockBusy = false;
42817
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42818
+ }
42819
+ /**
42820
+ * @param {number} fileId
42821
+ * @param {number} lockType
42822
+ * @returns {number}
42823
+ */
42824
+ jUnlock(fileId, lockType) {
42825
+ const file = this.mapIdToFile.get(fileId);
42826
+ if (lockType === _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_LOCK_NONE) {
42827
+ // Don't change any state if this unlock is because xLock returned
42828
+ // SQLITE_BUSY.
42829
+ if (!file.persistentFile.isLockBusy) {
42830
+ if (file.persistentFile.isHandleRequested) {
42831
+ // Another connection wants the access handle.
42832
+ this.#releaseAccessHandle(file);
42833
+ file.persistentFile.isHandleRequested = false;
42834
+ }
42835
+ file.persistentFile.isFileLocked = false;
42836
+ }
42837
+ }
42838
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42839
+ }
42840
+ /**
42841
+ * @param {number} fileId
42842
+ * @param {number} op
42843
+ * @param {DataView} pArg
42844
+ * @returns {number|Promise<number>}
42845
+ */
42846
+ jFileControl(fileId, op, pArg) {
42847
+ try {
42848
+ const file = this.mapIdToFile.get(fileId);
42849
+ switch (op) {
42850
+ case _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_FCNTL_PRAGMA:
42851
+ const key = extractString(pArg, 4);
42852
+ const value = extractString(pArg, 8);
42853
+ this.log?.('xFileControl', file.path, 'PRAGMA', key, value);
42854
+ switch (key.toLowerCase()) {
42855
+ case 'journal_mode':
42856
+ if (value && !['off', 'memory', 'delete', 'wal'].includes(value.toLowerCase())) {
42857
+ throw new Error('journal_mode must be "off", "memory", "delete", or "wal"');
42858
+ }
42859
+ break;
42860
+ }
42861
+ break;
42862
+ }
42863
+ }
42864
+ catch (e) {
42865
+ this.lastError = e;
42866
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_IOERR;
42867
+ }
42868
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_NOTFOUND;
42869
+ }
42870
+ /**
42871
+ * @param {Uint8Array} zBuf
42872
+ * @returns
42873
+ */
42874
+ jGetLastError(zBuf) {
42875
+ if (this.lastError) {
42876
+ console.error(this.lastError);
42877
+ const outputArray = zBuf.subarray(0, zBuf.byteLength - 1);
42878
+ const { written } = new TextEncoder().encodeInto(this.lastError.message, outputArray);
42879
+ zBuf[written] = 0;
42880
+ }
42881
+ return _journeyapps_wa_sqlite_src_VFS_js__WEBPACK_IMPORTED_MODULE_1__.SQLITE_OK;
42882
+ }
42883
+ /**
42884
+ * @param {FileSystemFileHandle} fileHandle
42885
+ * @returns {Promise<PersistentFile>}
42886
+ */
42887
+ async #createPersistentFile(fileHandle) {
42888
+ const persistentFile = new PersistentFile(fileHandle);
42889
+ const root = await navigator.storage.getDirectory();
42890
+ const relativePath = await root.resolve(fileHandle);
42891
+ const path = `/${relativePath.join('/')}`;
42892
+ persistentFile.handleRequestChannel = new BroadcastChannel(`ahp:${path}`);
42893
+ this.persistentFiles.set(path, persistentFile);
42894
+ const f = await fileHandle.getFile();
42895
+ if (f.size) {
42896
+ this.accessiblePaths.add(path);
42897
+ }
42898
+ return persistentFile;
42899
+ }
42900
+ /**
42901
+ * @param {File} file
42902
+ */
42903
+ #requestAccessHandle(file) {
42904
+ console.assert(!file.persistentFile.handleLockReleaser);
42905
+ if (!file.persistentFile.isRequestInProgress) {
42906
+ file.persistentFile.isRequestInProgress = true;
42907
+ this._module.retryOps.push((async () => {
42908
+ // Acquire the Web Lock.
42909
+ file.persistentFile.handleLockReleaser = await this.#acquireLock(file.persistentFile);
42910
+ try {
42911
+ // Get access handles for the database and releated files in parallel.
42912
+ this.log?.(`creating access handles for ${file.path}`);
42913
+ await Promise.all(DB_RELATED_FILE_SUFFIXES.map(async (suffix) => {
42914
+ const persistentFile = this.persistentFiles.get(file.path + suffix);
42915
+ if (persistentFile) {
42916
+ persistentFile.accessHandle = await persistentFile.fileHandle.createSyncAccessHandle();
42917
+ }
42918
+ }));
42919
+ }
42920
+ catch (e) {
42921
+ this.log?.(`failed to create access handles for ${file.path}`, e);
42922
+ // Close any of the potentially opened access handles
42923
+ DB_RELATED_FILE_SUFFIXES.forEach(async (suffix) => {
42924
+ const persistentFile = this.persistentFiles.get(file.path + suffix);
42925
+ if (persistentFile) {
42926
+ persistentFile.accessHandle?.close();
42927
+ }
42928
+ });
42929
+ // Release the lock, if we failed here, we'd need to obtain the lock later in order to retry
42930
+ file.persistentFile.handleLockReleaser();
42931
+ throw e;
42932
+ }
42933
+ finally {
42934
+ file.persistentFile.isRequestInProgress = false;
42935
+ }
42936
+ })());
42937
+ return this._module.retryOps.at(-1);
42938
+ }
42939
+ return Promise.resolve();
42940
+ }
42941
+ /**
42942
+ * @param {File} file
42943
+ */
42944
+ async #releaseAccessHandle(file) {
42945
+ DB_RELATED_FILE_SUFFIXES.forEach(async (suffix) => {
42946
+ const persistentFile = this.persistentFiles.get(file.path + suffix);
42947
+ if (persistentFile) {
42948
+ persistentFile.accessHandle?.close();
42949
+ persistentFile.accessHandle = null;
42950
+ }
42951
+ });
42952
+ this.log?.(`access handles closed for ${file.path}`);
42953
+ file.persistentFile.handleLockReleaser?.();
42954
+ file.persistentFile.handleLockReleaser = null;
42955
+ this.log?.(`lock released for ${file.path}`);
42956
+ }
42957
+ /**
42958
+ * @param {PersistentFile} persistentFile
42959
+ * @returns {Promise<function>} lock releaser
42960
+ */
42961
+ #acquireLock(persistentFile) {
42962
+ return new Promise((resolve) => {
42963
+ // Tell other connections we want the access handle.
42964
+ const lockName = persistentFile.handleRequestChannel.name;
42965
+ const notify = () => {
42966
+ this.log?.(`notifying for ${lockName}`);
42967
+ persistentFile.handleRequestChannel.postMessage(null);
42968
+ };
42969
+ const notifyId = setInterval(notify, LOCK_NOTIFY_INTERVAL);
42970
+ setTimeout(notify);
42971
+ this.log?.(`lock requested: ${lockName}`);
42972
+ navigator.locks.request(lockName, (lock) => {
42973
+ // We have the lock. Stop asking other connections for it.
42974
+ this.log?.(`lock acquired: ${lockName}`, lock);
42975
+ clearInterval(notifyId);
42976
+ return new Promise(resolve);
42977
+ });
42978
+ });
42979
+ }
42980
+ }
42981
+ function extractString(dataView, offset) {
42982
+ const p = dataView.getUint32(offset, true);
42983
+ if (p) {
42984
+ const chars = new Uint8Array(dataView.buffer, p);
42985
+ return new TextDecoder().decode(chars.subarray(0, chars.indexOf(0)));
42986
+ }
42987
+ return null;
42988
+ }
42989
+
42990
+
40642
42991
  /***/ }),
40643
42992
 
40644
42993
  /***/ "./lib/src/worker/sync/AbstractSharedSyncClientProvider.js":
@@ -41229,7 +43578,13 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
41229
43578
  }
41230
43579
  };
41231
43580
  client.closeListeners.push(closeListener);
41232
- const workerPort = await withAbort(() => client.clientProvider.getDBWorkerPort(), abortController.signal).catch((ex) => {
43581
+ const workerPort = await withAbort({
43582
+ action: () => client.clientProvider.getDBWorkerPort(),
43583
+ signal: abortController.signal,
43584
+ cleanupOnAbort: (port) => {
43585
+ port.close();
43586
+ }
43587
+ }).catch((ex) => {
41233
43588
  removeCloseListener();
41234
43589
  throw ex;
41235
43590
  });
@@ -41241,7 +43596,13 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
41241
43596
  * We typically execute the closeListeners using the portMutex in a different context.
41242
43597
  * We can't rely on the closeListeners to abort the operation if the tab is closed.
41243
43598
  */
41244
- const db = await withAbort(() => remote(this.syncParams.dbParams), abortController.signal).finally(() => {
43599
+ const db = await withAbort({
43600
+ action: () => remote(this.syncParams.dbParams),
43601
+ signal: abortController.signal,
43602
+ cleanupOnAbort: (db) => {
43603
+ db.close();
43604
+ }
43605
+ }).finally(() => {
41245
43606
  // We can remove the close listener here since we no longer need it past this point.
41246
43607
  removeCloseListener();
41247
43608
  });
@@ -41284,7 +43645,8 @@ class SharedSyncImplementation extends _powersync_common__WEBPACK_IMPORTED_MODUL
41284
43645
  /**
41285
43646
  * Runs the action with an abort controller.
41286
43647
  */
41287
- function withAbort(action, signal) {
43648
+ function withAbort(options) {
43649
+ const { action, signal, cleanupOnAbort } = options;
41288
43650
  return new Promise((resolve, reject) => {
41289
43651
  if (signal.aborted) {
41290
43652
  reject(new _powersync_common__WEBPACK_IMPORTED_MODULE_0__.AbortOperation('Operation aborted by abort controller'));
@@ -41300,7 +43662,13 @@ function withAbort(action, signal) {
41300
43662
  action();
41301
43663
  }
41302
43664
  action()
41303
- .then((data) => completePromise(() => resolve(data)))
43665
+ .then((data) => {
43666
+ // We already rejected due to the abort, allow for cleanup
43667
+ if (signal.aborted) {
43668
+ return completePromise(() => cleanupOnAbort?.(data));
43669
+ }
43670
+ completePromise(() => resolve(data));
43671
+ })
41304
43672
  .catch((e) => completePromise(() => reject(e)));
41305
43673
  });
41306
43674
  }
@@ -41421,17 +43789,6 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__journeyapps_wa_sqlite_src_examples_I
41421
43789
 
41422
43790
  /***/ }),
41423
43791
 
41424
- /***/ "@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js":
41425
- /*!*************************************************************************!*\
41426
- !*** external "@journeyapps/wa-sqlite/src/examples/OPFSCoopSyncVFS.js" ***!
41427
- \*************************************************************************/
41428
- /***/ ((module) => {
41429
-
41430
- "use strict";
41431
- module.exports = __WEBPACK_EXTERNAL_MODULE__journeyapps_wa_sqlite_src_examples_OPFSCoopSyncVFS_js__;
41432
-
41433
- /***/ }),
41434
-
41435
43792
  /***/ "@powersync/common":
41436
43793
  /*!************************************!*\
41437
43794
  !*** external "@powersync/common" ***!