@livestore/sqlite-wasm 0.0.0-snapshot-1d99fea7d2ce2c7a5d9ed0a3752f8a7bda6bc3db

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 (69) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/FacadeVFS.d.ts +243 -0
  3. package/dist/FacadeVFS.d.ts.map +1 -0
  4. package/dist/FacadeVFS.js +474 -0
  5. package/dist/FacadeVFS.js.map +1 -0
  6. package/dist/browser/mod.d.ts +44 -0
  7. package/dist/browser/mod.d.ts.map +1 -0
  8. package/dist/browser/mod.js +51 -0
  9. package/dist/browser/mod.js.map +1 -0
  10. package/dist/browser/opfs/AccessHandlePoolVFS.d.ts +47 -0
  11. package/dist/browser/opfs/AccessHandlePoolVFS.d.ts.map +1 -0
  12. package/dist/browser/opfs/AccessHandlePoolVFS.js +355 -0
  13. package/dist/browser/opfs/AccessHandlePoolVFS.js.map +1 -0
  14. package/dist/browser/opfs/index.d.ts +12 -0
  15. package/dist/browser/opfs/index.d.ts.map +1 -0
  16. package/dist/browser/opfs/index.js +19 -0
  17. package/dist/browser/opfs/index.js.map +1 -0
  18. package/dist/browser/opfs/opfs-sah-pool.d.ts +3 -0
  19. package/dist/browser/opfs/opfs-sah-pool.d.ts.map +1 -0
  20. package/dist/browser/opfs/opfs-sah-pool.js +55 -0
  21. package/dist/browser/opfs/opfs-sah-pool.js.map +1 -0
  22. package/dist/in-memory-vfs.d.ts +7 -0
  23. package/dist/in-memory-vfs.d.ts.map +1 -0
  24. package/dist/in-memory-vfs.js +15 -0
  25. package/dist/in-memory-vfs.js.map +1 -0
  26. package/dist/index.d.ts +2 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +2 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/index_.d.ts +3 -0
  31. package/dist/index_.d.ts.map +1 -0
  32. package/dist/index_.js +3 -0
  33. package/dist/index_.js.map +1 -0
  34. package/dist/load-wasm/mod.browser.d.ts +2 -0
  35. package/dist/load-wasm/mod.browser.d.ts.map +1 -0
  36. package/dist/load-wasm/mod.browser.js +12 -0
  37. package/dist/load-wasm/mod.browser.js.map +1 -0
  38. package/dist/load-wasm/mod.node.d.ts +2 -0
  39. package/dist/load-wasm/mod.node.d.ts.map +1 -0
  40. package/dist/load-wasm/mod.node.js +13 -0
  41. package/dist/load-wasm/mod.node.js.map +1 -0
  42. package/dist/make-sqlite-db.d.ts +11 -0
  43. package/dist/make-sqlite-db.d.ts.map +1 -0
  44. package/dist/make-sqlite-db.js +181 -0
  45. package/dist/make-sqlite-db.js.map +1 -0
  46. package/dist/node/NodeFS.d.ts +20 -0
  47. package/dist/node/NodeFS.d.ts.map +1 -0
  48. package/dist/node/NodeFS.js +174 -0
  49. package/dist/node/NodeFS.js.map +1 -0
  50. package/dist/node/mod.d.ts +41 -0
  51. package/dist/node/mod.d.ts.map +1 -0
  52. package/dist/node/mod.js +61 -0
  53. package/dist/node/mod.js.map +1 -0
  54. package/package.json +38 -0
  55. package/src/FacadeVFS.ts +510 -0
  56. package/src/ambient.d.ts +18 -0
  57. package/src/browser/mod.ts +109 -0
  58. package/src/browser/opfs/AccessHandlePoolVFS.ts +404 -0
  59. package/src/browser/opfs/index.ts +35 -0
  60. package/src/browser/opfs/opfs-sah-pool.ts +68 -0
  61. package/src/in-memory-vfs.ts +20 -0
  62. package/src/index.ts +1 -0
  63. package/src/index_.ts +2 -0
  64. package/src/load-wasm/mod.browser.ts +12 -0
  65. package/src/load-wasm/mod.node.ts +13 -0
  66. package/src/make-sqlite-db.ts +220 -0
  67. package/src/node/NodeFS.ts +190 -0
  68. package/src/node/mod.ts +132 -0
  69. package/tsconfig.json +10 -0
@@ -0,0 +1,474 @@
1
+ // Based on https://github.com/rhashimoto/wa-sqlite/blob/master/src/FacadeVFS.js
2
+ /* eslint-disable unicorn/prefer-code-point */
3
+ /* eslint-disable @typescript-eslint/no-unused-vars */
4
+ /* eslint-disable prefer-arrow/prefer-arrow-functions */
5
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6
+ // @ts-nocheck
7
+ import * as VFS from '@livestore/wa-sqlite/src/VFS.js';
8
+ const AsyncFunction = Object.getPrototypeOf(async () => { }).constructor;
9
+ export class FacadeVFS extends VFS.Base {
10
+ /**
11
+ * @param {string} name
12
+ * @param {object} module
13
+ */
14
+ constructor(name, module) {
15
+ super(name, module);
16
+ }
17
+ /**
18
+ * Override to indicate which methods are asynchronous.
19
+ * @param {string} methodName
20
+ * @returns {boolean}
21
+ */
22
+ hasAsyncMethod(methodName) {
23
+ // The input argument is a string like "xOpen", so convert to "jOpen".
24
+ // Then check if the method exists and is async.
25
+ const jMethodName = `j${methodName.slice(1)}`;
26
+ return this[jMethodName] instanceof AsyncFunction;
27
+ }
28
+ /**
29
+ * Return the filename for a file id for use by mixins.
30
+ * @param {number} pFile
31
+ * @returns {string}
32
+ */
33
+ getFilename(pFile) {
34
+ throw new Error('unimplemented');
35
+ }
36
+ /**
37
+ * @param {string?} filename
38
+ * @param {number} pFile
39
+ * @param {number} flags
40
+ * @param {DataView} pOutFlags
41
+ * @returns {number|Promise<number>}
42
+ */
43
+ jOpen(filename, pFile, flags, pOutFlags) {
44
+ return VFS.SQLITE_CANTOPEN;
45
+ }
46
+ /**
47
+ * @param {string} filename
48
+ * @param {number} syncDir
49
+ * @returns {number|Promise<number>}
50
+ */
51
+ jDelete(filename, syncDir) {
52
+ return VFS.SQLITE_OK;
53
+ }
54
+ /**
55
+ * @param {string} filename
56
+ * @param {number} flags
57
+ * @param {DataView} pResOut
58
+ * @returns {number|Promise<number>}
59
+ */
60
+ jAccess(filename, flags, pResOut) {
61
+ return VFS.SQLITE_OK;
62
+ }
63
+ /**
64
+ * @param {string} filename
65
+ * @param {Uint8Array} zOut
66
+ * @returns {number|Promise<number>}
67
+ */
68
+ jFullPathname(filename, zOut) {
69
+ // Copy the filename to the output buffer.
70
+ const { read, written } = new TextEncoder().encodeInto(filename, zOut);
71
+ if (read < filename.length)
72
+ return VFS.SQLITE_IOERR;
73
+ if (written >= zOut.length)
74
+ return VFS.SQLITE_IOERR;
75
+ zOut[written] = 0;
76
+ return VFS.SQLITE_OK;
77
+ }
78
+ /**
79
+ * @param {Uint8Array} zBuf
80
+ * @returns {number|Promise<number>}
81
+ */
82
+ jGetLastError(zBuf) {
83
+ return VFS.SQLITE_OK;
84
+ }
85
+ /**
86
+ * @param {number} pFile
87
+ * @returns {number|Promise<number>}
88
+ */
89
+ jClose(pFile) {
90
+ return VFS.SQLITE_OK;
91
+ }
92
+ /**
93
+ * @param {number} pFile
94
+ * @param {Uint8Array} pData
95
+ * @param {number} iOffset
96
+ * @returns {number|Promise<number>}
97
+ */
98
+ jRead(pFile, pData, iOffset) {
99
+ pData.fill(0);
100
+ return VFS.SQLITE_IOERR_SHORT_READ;
101
+ }
102
+ /**
103
+ * @param {number} pFile
104
+ * @param {Uint8Array} pData
105
+ * @param {number} iOffset
106
+ * @returns {number|Promise<number>}
107
+ */
108
+ jWrite(pFile, pData, iOffset) {
109
+ return VFS.SQLITE_IOERR_WRITE;
110
+ }
111
+ /**
112
+ * @param {number} pFile
113
+ * @param {number} size
114
+ * @returns {number|Promise<number>}
115
+ */
116
+ jTruncate(pFile, size) {
117
+ return VFS.SQLITE_OK;
118
+ }
119
+ /**
120
+ * @param {number} pFile
121
+ * @param {number} flags
122
+ * @returns {number|Promise<number>}
123
+ */
124
+ jSync(pFile, flags) {
125
+ return VFS.SQLITE_OK;
126
+ }
127
+ /**
128
+ * @param {number} pFile
129
+ * @param {DataView} pSize
130
+ * @returns {number|Promise<number>}
131
+ */
132
+ jFileSize(pFile, pSize) {
133
+ return VFS.SQLITE_OK;
134
+ }
135
+ /**
136
+ * @param {number} pFile
137
+ * @param {number} lockType
138
+ * @returns {number|Promise<number>}
139
+ */
140
+ jLock(pFile, lockType) {
141
+ return VFS.SQLITE_OK;
142
+ }
143
+ /**
144
+ * @param {number} pFile
145
+ * @param {number} lockType
146
+ * @returns {number|Promise<number>}
147
+ */
148
+ jUnlock(pFile, lockType) {
149
+ return VFS.SQLITE_OK;
150
+ }
151
+ /**
152
+ * @param {number} pFile
153
+ * @param {DataView} pResOut
154
+ * @returns {number|Promise<number>}
155
+ */
156
+ jCheckReservedLock(pFile, pResOut) {
157
+ pResOut.setInt32(0, 0, true);
158
+ return VFS.SQLITE_OK;
159
+ }
160
+ /**
161
+ * @param {number} pFile
162
+ * @param {number} op
163
+ * @param {DataView} pArg
164
+ * @returns {number|Promise<number>}
165
+ */
166
+ jFileControl(pFile, op, pArg) {
167
+ return VFS.SQLITE_NOTFOUND;
168
+ }
169
+ /**
170
+ * @param {number} pFile
171
+ * @returns {number|Promise<number>}
172
+ */
173
+ jSectorSize(pFile) {
174
+ return super.xSectorSize(pFile);
175
+ }
176
+ /**
177
+ * @param {number} pFile
178
+ * @returns {number|Promise<number>}
179
+ */
180
+ jDeviceCharacteristics(pFile) {
181
+ return 0;
182
+ }
183
+ /**
184
+ * @param {number} pVfs
185
+ * @param {number} zName
186
+ * @param {number} pFile
187
+ * @param {number} flags
188
+ * @param {number} pOutFlags
189
+ * @returns {number|Promise<number>}
190
+ */
191
+ xOpen(pVfs, zName, pFile, flags, pOutFlags) {
192
+ const filename = this.#decodeFilename(zName, flags);
193
+ const pOutFlagsView = this.#makeTypedDataView('Int32', pOutFlags);
194
+ this['log']?.('jOpen', filename, pFile, '0x' + flags.toString(16));
195
+ return this.jOpen(filename, pFile, flags, pOutFlagsView);
196
+ }
197
+ /**
198
+ * @param {number} pVfs
199
+ * @param {number} zName
200
+ * @param {number} syncDir
201
+ * @returns {number|Promise<number>}
202
+ */
203
+ xDelete(pVfs, zName, syncDir) {
204
+ const filename = this._module.UTF8ToString(zName);
205
+ this['log']?.('jDelete', filename, syncDir);
206
+ return this.jDelete(filename, syncDir);
207
+ }
208
+ /**
209
+ * @param {number} pVfs
210
+ * @param {number} zName
211
+ * @param {number} flags
212
+ * @param {number} pResOut
213
+ * @returns {number|Promise<number>}
214
+ */
215
+ xAccess(pVfs, zName, flags, pResOut) {
216
+ const filename = this._module.UTF8ToString(zName);
217
+ const pResOutView = this.#makeTypedDataView('Int32', pResOut);
218
+ this['log']?.('jAccess', filename, flags);
219
+ return this.jAccess(filename, flags, pResOutView);
220
+ }
221
+ /**
222
+ * @param {number} pVfs
223
+ * @param {number} zName
224
+ * @param {number} nOut
225
+ * @param {number} zOut
226
+ * @returns {number|Promise<number>}
227
+ */
228
+ xFullPathname(pVfs, zName, nOut, zOut) {
229
+ const filename = this._module.UTF8ToString(zName);
230
+ const zOutArray = this._module.HEAPU8.subarray(zOut, zOut + nOut);
231
+ this['log']?.('jFullPathname', filename, nOut);
232
+ return this.jFullPathname(filename, zOutArray);
233
+ }
234
+ /**
235
+ * @param {number} pVfs
236
+ * @param {number} nBuf
237
+ * @param {number} zBuf
238
+ * @returns {number|Promise<number>}
239
+ */
240
+ xGetLastError(pVfs, nBuf, zBuf) {
241
+ const zBufArray = this._module.HEAPU8.subarray(zBuf, zBuf + nBuf);
242
+ this['log']?.('jGetLastError', nBuf);
243
+ return this.jGetLastError(zBufArray);
244
+ }
245
+ /**
246
+ * @param {number} pFile
247
+ * @returns {number|Promise<number>}
248
+ */
249
+ xClose(pFile) {
250
+ this['log']?.('jClose', pFile);
251
+ return this.jClose(pFile);
252
+ }
253
+ /**
254
+ * @param {number} pFile
255
+ * @param {number} pData
256
+ * @param {number} iAmt
257
+ * @param {number} iOffsetLo
258
+ * @param {number} iOffsetHi
259
+ * @returns {number|Promise<number>}
260
+ */
261
+ xRead(pFile, pData, iAmt, iOffsetLo, iOffsetHi) {
262
+ const pDataArray = this.#makeDataArray(pData, iAmt);
263
+ const iOffset = delegalize(iOffsetLo, iOffsetHi);
264
+ this['log']?.('jRead', pFile, iAmt, iOffset);
265
+ return this.jRead(pFile, pDataArray, iOffset);
266
+ }
267
+ /**
268
+ * @param {number} pFile
269
+ * @param {number} pData
270
+ * @param {number} iAmt
271
+ * @param {number} iOffsetLo
272
+ * @param {number} iOffsetHi
273
+ * @returns {number|Promise<number>}
274
+ */
275
+ xWrite(pFile, pData, iAmt, iOffsetLo, iOffsetHi) {
276
+ const pDataArray = this.#makeDataArray(pData, iAmt);
277
+ const iOffset = delegalize(iOffsetLo, iOffsetHi);
278
+ this['log']?.('jWrite', pFile, pDataArray, iOffset);
279
+ return this.jWrite(pFile, pDataArray, iOffset);
280
+ }
281
+ /**
282
+ * @param {number} pFile
283
+ * @param {number} sizeLo
284
+ * @param {number} sizeHi
285
+ * @returns {number|Promise<number>}
286
+ */
287
+ xTruncate(pFile, sizeLo, sizeHi) {
288
+ const size = delegalize(sizeLo, sizeHi);
289
+ this['log']?.('jTruncate', pFile, size);
290
+ return this.jTruncate(pFile, size);
291
+ }
292
+ /**
293
+ * @param {number} pFile
294
+ * @param {number} flags
295
+ * @returns {number|Promise<number>}
296
+ */
297
+ xSync(pFile, flags) {
298
+ this['log']?.('jSync', pFile, flags);
299
+ return this.jSync(pFile, flags);
300
+ }
301
+ /**
302
+ *
303
+ * @param {number} pFile
304
+ * @param {number} pSize
305
+ * @returns {number|Promise<number>}
306
+ */
307
+ xFileSize(pFile, pSize) {
308
+ const pSizeView = this.#makeTypedDataView('BigInt64', pSize);
309
+ this['log']?.('jFileSize', pFile);
310
+ return this.jFileSize(pFile, pSizeView);
311
+ }
312
+ /**
313
+ * @param {number} pFile
314
+ * @param {number} lockType
315
+ * @returns {number|Promise<number>}
316
+ */
317
+ xLock(pFile, lockType) {
318
+ this['log']?.('jLock', pFile, lockType);
319
+ return this.jLock(pFile, lockType);
320
+ }
321
+ /**
322
+ * @param {number} pFile
323
+ * @param {number} lockType
324
+ * @returns {number|Promise<number>}
325
+ */
326
+ xUnlock(pFile, lockType) {
327
+ this['log']?.('jUnlock', pFile, lockType);
328
+ return this.jUnlock(pFile, lockType);
329
+ }
330
+ /**
331
+ * @param {number} pFile
332
+ * @param {number} pResOut
333
+ * @returns {number|Promise<number>}
334
+ */
335
+ xCheckReservedLock(pFile, pResOut) {
336
+ const pResOutView = this.#makeTypedDataView('Int32', pResOut);
337
+ this['log']?.('jCheckReservedLock', pFile);
338
+ return this.jCheckReservedLock(pFile, pResOutView);
339
+ }
340
+ /**
341
+ * @param {number} pFile
342
+ * @param {number} op
343
+ * @param {number} pArg
344
+ * @returns {number|Promise<number>}
345
+ */
346
+ xFileControl(pFile, op, pArg) {
347
+ const pArgView = new DataView(this._module.HEAPU8.buffer, this._module.HEAPU8.byteOffset + pArg);
348
+ this['log']?.('jFileControl', pFile, op, pArgView);
349
+ return this.jFileControl(pFile, op, pArgView);
350
+ }
351
+ /**
352
+ * @param {number} pFile
353
+ * @returns {number|Promise<number>}
354
+ */
355
+ xSectorSize(pFile) {
356
+ this['log']?.('jSectorSize', pFile);
357
+ return this.jSectorSize(pFile);
358
+ }
359
+ /**
360
+ * @param {number} pFile
361
+ * @returns {number|Promise<number>}
362
+ */
363
+ xDeviceCharacteristics(pFile) {
364
+ this['log']?.('jDeviceCharacteristics', pFile);
365
+ return this.jDeviceCharacteristics(pFile);
366
+ }
367
+ /**
368
+ * Wrapped DataView for pointer arguments.
369
+ * Pointers to a single value are passed using DataView. A Proxy
370
+ * wrapper prevents use of incorrect type or endianness.
371
+ * @param {'Int32'|'BigInt64'} type
372
+ * @param {number} byteOffset
373
+ * @returns {DataView}
374
+ */
375
+ #makeTypedDataView(type, byteOffset) {
376
+ const byteLength = type === 'Int32' ? 4 : 8;
377
+ const getter = `get${type}`;
378
+ const setter = `set${type}`;
379
+ const makeDataView = () => new DataView(this._module.HEAPU8.buffer, this._module.HEAPU8.byteOffset + byteOffset, byteLength);
380
+ let dataView = makeDataView();
381
+ return new Proxy(dataView, {
382
+ get(_, prop) {
383
+ if (dataView.buffer.byteLength === 0) {
384
+ // WebAssembly memory resize detached the buffer.
385
+ dataView = makeDataView();
386
+ }
387
+ if (prop === getter) {
388
+ return function (byteOffset, littleEndian) {
389
+ if (!littleEndian)
390
+ throw new Error('must be little endian');
391
+ return dataView[prop](byteOffset, littleEndian);
392
+ };
393
+ }
394
+ if (prop === setter) {
395
+ return function (byteOffset, value, littleEndian) {
396
+ if (!littleEndian)
397
+ throw new Error('must be little endian');
398
+ return dataView[prop](byteOffset, value, littleEndian);
399
+ };
400
+ }
401
+ if (typeof prop === 'string' && /^(get)|(set)/.test(prop)) {
402
+ throw new Error('invalid type');
403
+ }
404
+ const result = dataView[prop];
405
+ return typeof result === 'function' ? result.bind(dataView) : result;
406
+ },
407
+ });
408
+ }
409
+ /**
410
+ * @param {number} byteOffset
411
+ * @param {number} byteLength
412
+ */
413
+ #makeDataArray(byteOffset, byteLength) {
414
+ let target = this._module.HEAPU8.subarray(byteOffset, byteOffset + byteLength);
415
+ return new Proxy(target, {
416
+ get: (_, prop, receiver) => {
417
+ if (target.buffer.byteLength === 0) {
418
+ // WebAssembly memory resize detached the buffer.
419
+ target = this._module.HEAPU8.subarray(byteOffset, byteOffset + byteLength);
420
+ }
421
+ const result = target[prop];
422
+ return typeof result === 'function' ? result.bind(target) : result;
423
+ },
424
+ });
425
+ }
426
+ #decodeFilename(zName, flags) {
427
+ if (flags & VFS.SQLITE_OPEN_URI) {
428
+ // The first null-terminated string is the URI path. Subsequent
429
+ // strings are query parameter keys and values.
430
+ // https://www.sqlite.org/c3ref/open.html#urifilenamesinsqlite3open
431
+ let pName = zName;
432
+ let state = 1;
433
+ const charCodes = [];
434
+ while (state) {
435
+ const charCode = this._module.HEAPU8[pName++];
436
+ if (charCode) {
437
+ charCodes.push(charCode);
438
+ }
439
+ else {
440
+ if (!this._module.HEAPU8[pName])
441
+ state = null;
442
+ switch (state) {
443
+ case 1: {
444
+ // path
445
+ charCodes.push('?'.charCodeAt(0));
446
+ state = 2;
447
+ break;
448
+ }
449
+ case 2: {
450
+ // key
451
+ charCodes.push('='.charCodeAt(0));
452
+ state = 3;
453
+ break;
454
+ }
455
+ case 3: {
456
+ // value
457
+ charCodes.push('&'.charCodeAt(0));
458
+ state = 2;
459
+ break;
460
+ }
461
+ }
462
+ }
463
+ }
464
+ return new TextDecoder().decode(new Uint8Array(charCodes));
465
+ }
466
+ return zName ? this._module.UTF8ToString(zName) : null;
467
+ }
468
+ }
469
+ // Emscripten "legalizes" 64-bit integer arguments by passing them as
470
+ // two 32-bit signed integers.
471
+ function delegalize(lo32, hi32) {
472
+ return hi32 * 0x1_00_00_00_00 + lo32 + (lo32 < 0 ? 2 ** 32 : 0);
473
+ }
474
+ //# sourceMappingURL=FacadeVFS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FacadeVFS.js","sourceRoot":"","sources":["../src/FacadeVFS.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { MakeSqliteDb, PersistenceInfo, SqliteDb } from '@livestore/common';
2
+ import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js';
3
+ import type { AccessHandlePoolVFS } from './opfs/AccessHandlePoolVFS.js';
4
+ export * from './opfs/opfs-sah-pool.js';
5
+ export type WebDatabaseMetadataInMemory = {
6
+ _tag: 'in-memory';
7
+ vfs: MemoryVFS;
8
+ dbPointer: number;
9
+ persistenceInfo: PersistenceInfo;
10
+ deleteDb: () => void;
11
+ configureDb: (db: SqliteDb) => void;
12
+ };
13
+ export type WebDatabaseMetadataOpfs = {
14
+ _tag: 'opfs';
15
+ vfs: AccessHandlePoolVFS;
16
+ dbPointer: number;
17
+ persistenceInfo: PersistenceInfo<{
18
+ opfsDirectory: string;
19
+ /** Actual filename used by OPFS */
20
+ opfsFileName: string;
21
+ }>;
22
+ deleteDb: () => void;
23
+ configureDb: (db: SqliteDb) => void;
24
+ };
25
+ export type WebDatabaseMetadata = WebDatabaseMetadataInMemory | WebDatabaseMetadataOpfs;
26
+ export type WebDatabaseInputInMemory = {
27
+ _tag: 'in-memory';
28
+ configureDb?: (db: SqliteDb) => void;
29
+ };
30
+ export type WebDatabaseInputOpfs = {
31
+ _tag: 'opfs';
32
+ /** Filename of the database file (only used when exporting/downloading the database) */
33
+ fileName: string;
34
+ opfsDirectory: string;
35
+ configureDb?: (db: SqliteDb) => void;
36
+ };
37
+ export type WebDatabaseInput = WebDatabaseInputInMemory | WebDatabaseInputOpfs;
38
+ export declare const sqliteDbFactory: ({ sqlite3, }: {
39
+ sqlite3: SQLiteAPI;
40
+ }) => MakeSqliteDb<{
41
+ dbPointer: number;
42
+ persistenceInfo: PersistenceInfo;
43
+ }, WebDatabaseInput, WebDatabaseMetadata>;
44
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/browser/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAI/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAGxE,cAAc,yBAAyB,CAAA;AAEvC,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,WAAW,CAAA;IACjB,GAAG,EAAE,SAAS,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,mBAAmB,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAC;QAC/B,aAAa,EAAE,MAAM,CAAA;QACrB,mCAAmC;QACnC,YAAY,EAAE,MAAM,CAAA;KACrB,CAAC,CAAA;IACF,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,2BAA2B,GAAG,uBAAuB,CAAA;AAEvF,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE,WAAW,CAAA;IACjB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,wBAAwB,GAAG,oBAAoB,CAAA;AAE9E,eAAO,MAAM,eAAe,iBAGvB;IACD,OAAO,EAAE,SAAS,CAAA;CACnB,KAAG,YAAY,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,EAAE,gBAAgB,EAAE,mBAAmB,CAqD3G,CAAA"}
@@ -0,0 +1,51 @@
1
+ import { Effect, Hash } from '@livestore/utils/effect';
2
+ import { makeInMemoryDb } from '../in-memory-vfs.js';
3
+ import { makeSqliteDb } from '../make-sqlite-db.js';
4
+ import { makeOpfsDb } from './opfs/index.js';
5
+ export * from './opfs/opfs-sah-pool.js';
6
+ export const sqliteDbFactory = ({ sqlite3, }) => (input) => Effect.gen(function* () {
7
+ if (input._tag === 'in-memory') {
8
+ const { dbPointer, vfs } = makeInMemoryDb(sqlite3);
9
+ return makeSqliteDb({
10
+ sqlite3,
11
+ metadata: {
12
+ _tag: 'in-memory',
13
+ vfs,
14
+ dbPointer,
15
+ deleteDb: () => { },
16
+ configureDb: input.configureDb ?? (() => { }),
17
+ persistenceInfo: {
18
+ fileName: ':memory:',
19
+ },
20
+ },
21
+ });
22
+ }
23
+ // TODO figure out the actual max length
24
+ const MAX_DB_FILENAME_LENGTH = 60;
25
+ let dbFilename = input.fileName;
26
+ if (input.fileName.length > MAX_DB_FILENAME_LENGTH) {
27
+ yield* Effect.logWarning(`dbFilename too long: '${input.fileName}'. Max ${MAX_DB_FILENAME_LENGTH} chars, got ${input.fileName.length}. Hashing...`);
28
+ dbFilename = `hash-${Hash.string(input.fileName)}.db`;
29
+ }
30
+ const { dbPointer, vfs } = yield* makeOpfsDb({
31
+ sqlite3,
32
+ directory: input.opfsDirectory,
33
+ fileName: dbFilename,
34
+ });
35
+ return makeSqliteDb({
36
+ sqlite3,
37
+ metadata: {
38
+ _tag: 'opfs',
39
+ vfs,
40
+ dbPointer,
41
+ deleteDb: () => vfs.resetAccessHandle(input.fileName),
42
+ configureDb: input.configureDb ?? (() => { }),
43
+ persistenceInfo: {
44
+ fileName: dbFilename,
45
+ opfsDirectory: input.opfsDirectory,
46
+ opfsFileName: vfs.getOpfsFileName(dbFilename),
47
+ },
48
+ },
49
+ });
50
+ });
51
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/browser/mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAGtD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,cAAc,yBAAyB,CAAA;AAyCvC,MAAM,CAAC,MAAM,eAAe,GAC1B,CAAC,EACC,OAAO,GAGR,EAAgH,EAAE,CACnH,CAAC,KAAuB,EAAE,EAAE,CAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;QAClD,OAAO,YAAY,CAA8B;YAC/C,OAAO;YACP,QAAQ,EAAE;gBACR,IAAI,EAAE,WAAW;gBACjB,GAAG;gBACH,SAAS;gBACT,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC;gBAClB,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;gBAC5C,eAAe,EAAE;oBACf,QAAQ,EAAE,UAAU;iBACrB;aACF;SACF,CAAQ,CAAA;IACX,CAAC;IAED,wCAAwC;IACxC,MAAM,sBAAsB,GAAG,EAAE,CAAA;IAEjC,IAAI,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAA;IAE/B,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,sBAAsB,EAAE,CAAC;QACnD,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CACtB,yBAAyB,KAAK,CAAC,QAAQ,UAAU,sBAAsB,eAAe,KAAK,CAAC,QAAQ,CAAC,MAAM,cAAc,CAC1H,CAAA;QACD,UAAU,GAAG,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAA;IACvD,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;QAC3C,OAAO;QACP,SAAS,EAAE,KAAK,CAAC,aAAa;QAC9B,QAAQ,EAAE,UAAU;KACrB,CAAC,CAAA;IAEF,OAAO,YAAY,CAA0B;QAC3C,OAAO;QACP,QAAQ,EAAE;YACR,IAAI,EAAE,MAAM;YACZ,GAAG;YACH,SAAS;YACT,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC;YAC5C,eAAe,EAAE;gBACf,QAAQ,EAAE,UAAU;gBACpB,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,YAAY,EAAE,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC;aAC9C;SACF;KACF,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,47 @@
1
+ import { FacadeVFS } from '../../FacadeVFS.js';
2
+ /**
3
+ * This VFS uses the updated Access Handle API with all synchronous methods
4
+ * on FileSystemSyncAccessHandle (instead of just read and write). It will
5
+ * work with the regular SQLite WebAssembly build, i.e. the one without
6
+ * Asyncify.
7
+ */
8
+ export declare class AccessHandlePoolVFS extends FacadeVFS {
9
+ #private;
10
+ log: null;
11
+ static create(name: string, directoryPath: string, module: any): Promise<AccessHandlePoolVFS>;
12
+ constructor(name: string, directoryPath: string, module: any);
13
+ getOpfsFileName(zName: string): string;
14
+ resetAccessHandle(zName: string): void;
15
+ jOpen(zName: string, fileId: number, flags: number, pOutFlags: DataView): number;
16
+ jClose(fileId: number): number;
17
+ jRead(fileId: number, pData: Uint8Array, iOffset: number): number;
18
+ jWrite(fileId: number, pData: Uint8Array, iOffset: number): number;
19
+ jTruncate(fileId: number, iSize: number): number;
20
+ jSync(fileId: number, _flags: number): number;
21
+ jFileSize(fileId: number, pSize64: DataView): number;
22
+ jSectorSize(_fileId: number): number;
23
+ jDeviceCharacteristics(_fileId: number): number;
24
+ jAccess(zName: string, flags: number, pResOut: DataView): number;
25
+ jDelete(zName: string, _syncDir: number): number;
26
+ close(): Promise<void>;
27
+ isReady(): Promise<boolean>;
28
+ /**
29
+ * Returns the number of SQLite files in the file system.
30
+ */
31
+ getSize(): number;
32
+ /**
33
+ * Returns the maximum number of SQLite files the file system can hold.
34
+ */
35
+ getCapacity(): number;
36
+ /**
37
+ * Increase the capacity of the file system by n.
38
+ */
39
+ addCapacity(n: number): Promise<number>;
40
+ /**
41
+ * Decrease the capacity of the file system by n. The capacity cannot be
42
+ * decreased to fewer than the current number of SQLite files in the
43
+ * file system.
44
+ */
45
+ removeCapacity(n: number): Promise<number>;
46
+ }
47
+ //# sourceMappingURL=AccessHandlePoolVFS.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessHandlePoolVFS.d.ts","sourceRoot":"","sources":["../../../src/browser/opfs/AccessHandlePoolVFS.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAqB9C;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,SAAS;;IAChD,GAAG,OAAO;WAoBG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;gBAMxD,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG;IAK5D,eAAe,CAAC,KAAK,EAAE,MAAM;IAM7B,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAQ/B,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,MAAM;IAiChF,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAY9B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAUjE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAMlE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAMhD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAM7C,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM;IAOpD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAIpC,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI/C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM;IAMhE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAM1C,KAAK;IAIL,OAAO;IAmBb;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,WAAW,IAAI,MAAM;IAIrB;;OAEG;IACG,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY7C;;;;OAIG;IACG,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAwKjD"}