@livestore/sqlite-wasm 0.4.0-dev.2 → 0.4.0-dev.20

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 (97) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/FacadeVFS.d.ts.map +1 -1
  3. package/dist/FacadeVFS.js +4 -0
  4. package/dist/FacadeVFS.js.map +1 -1
  5. package/dist/browser/mod.d.ts +15 -7
  6. package/dist/browser/mod.d.ts.map +1 -1
  7. package/dist/browser/mod.js +49 -43
  8. package/dist/browser/mod.js.map +1 -1
  9. package/dist/browser/opfs/AccessHandlePoolVFS.d.ts +40 -17
  10. package/dist/browser/opfs/AccessHandlePoolVFS.d.ts.map +1 -1
  11. package/dist/browser/opfs/AccessHandlePoolVFS.js +211 -143
  12. package/dist/browser/opfs/AccessHandlePoolVFS.js.map +1 -1
  13. package/dist/browser/opfs/index.d.ts +3 -2
  14. package/dist/browser/opfs/index.d.ts.map +1 -1
  15. package/dist/browser/opfs/index.js +1 -1
  16. package/dist/browser/opfs/index.js.map +1 -1
  17. package/dist/browser/opfs/opfs-sah-pool.d.ts +1 -1
  18. package/dist/browser/opfs/opfs-sah-pool.d.ts.map +1 -1
  19. package/dist/browser/opfs/opfs-sah-pool.js +1 -1
  20. package/dist/browser/opfs/opfs-sah-pool.js.map +1 -1
  21. package/dist/cf/BlockManager.d.ts +61 -0
  22. package/dist/cf/BlockManager.d.ts.map +1 -0
  23. package/dist/cf/BlockManager.js +157 -0
  24. package/dist/cf/BlockManager.js.map +1 -0
  25. package/dist/cf/CloudflareSqlVFS.d.ts +51 -0
  26. package/dist/cf/CloudflareSqlVFS.d.ts.map +1 -0
  27. package/dist/cf/CloudflareSqlVFS.js +351 -0
  28. package/dist/cf/CloudflareSqlVFS.js.map +1 -0
  29. package/dist/cf/CloudflareWorkerVFS.d.ts +72 -0
  30. package/dist/cf/CloudflareWorkerVFS.d.ts.map +1 -0
  31. package/dist/cf/CloudflareWorkerVFS.js +552 -0
  32. package/dist/cf/CloudflareWorkerVFS.js.map +1 -0
  33. package/dist/cf/mod.d.ts +43 -0
  34. package/dist/cf/mod.d.ts.map +1 -0
  35. package/dist/cf/mod.js +74 -0
  36. package/dist/cf/mod.js.map +1 -0
  37. package/dist/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.d.ts +2 -0
  38. package/dist/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.d.ts.map +1 -0
  39. package/dist/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.js +314 -0
  40. package/dist/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.js.map +1 -0
  41. package/dist/cf/test/async-storage/cloudflare-worker-vfs-core.test.d.ts +2 -0
  42. package/dist/cf/test/async-storage/cloudflare-worker-vfs-core.test.d.ts.map +1 -0
  43. package/dist/cf/test/async-storage/cloudflare-worker-vfs-core.test.js +266 -0
  44. package/dist/cf/test/async-storage/cloudflare-worker-vfs-core.test.js.map +1 -0
  45. package/dist/cf/test/async-storage/cloudflare-worker-vfs-integration.test.d.ts +2 -0
  46. package/dist/cf/test/async-storage/cloudflare-worker-vfs-integration.test.d.ts.map +1 -0
  47. package/dist/cf/test/async-storage/cloudflare-worker-vfs-integration.test.js +462 -0
  48. package/dist/cf/test/async-storage/cloudflare-worker-vfs-integration.test.js.map +1 -0
  49. package/dist/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.d.ts +2 -0
  50. package/dist/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.d.ts.map +1 -0
  51. package/dist/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.js +334 -0
  52. package/dist/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.js.map +1 -0
  53. package/dist/cf/test/sql/cloudflare-sql-vfs-core.test.d.ts +2 -0
  54. package/dist/cf/test/sql/cloudflare-sql-vfs-core.test.d.ts.map +1 -0
  55. package/dist/cf/test/sql/cloudflare-sql-vfs-core.test.js +354 -0
  56. package/dist/cf/test/sql/cloudflare-sql-vfs-core.test.js.map +1 -0
  57. package/dist/load-wasm/mod.node.d.ts.map +1 -1
  58. package/dist/load-wasm/mod.node.js +1 -2
  59. package/dist/load-wasm/mod.node.js.map +1 -1
  60. package/dist/load-wasm/mod.workerd.d.ts +2 -0
  61. package/dist/load-wasm/mod.workerd.d.ts.map +1 -0
  62. package/dist/load-wasm/mod.workerd.js +28 -0
  63. package/dist/load-wasm/mod.workerd.js.map +1 -0
  64. package/dist/make-sqlite-db.d.ts +1 -0
  65. package/dist/make-sqlite-db.d.ts.map +1 -1
  66. package/dist/make-sqlite-db.js +29 -8
  67. package/dist/make-sqlite-db.js.map +1 -1
  68. package/dist/node/NodeFS.d.ts +1 -2
  69. package/dist/node/NodeFS.d.ts.map +1 -1
  70. package/dist/node/NodeFS.js +1 -6
  71. package/dist/node/NodeFS.js.map +1 -1
  72. package/dist/node/mod.d.ts.map +1 -1
  73. package/dist/node/mod.js +5 -10
  74. package/dist/node/mod.js.map +1 -1
  75. package/package.json +21 -8
  76. package/src/FacadeVFS.ts +5 -0
  77. package/src/browser/mod.ts +39 -13
  78. package/src/browser/opfs/AccessHandlePoolVFS.ts +387 -225
  79. package/src/browser/opfs/index.ts +4 -3
  80. package/src/browser/opfs/opfs-sah-pool.ts +1 -1
  81. package/src/cf/BlockManager.ts +225 -0
  82. package/src/cf/CloudflareSqlVFS.ts +450 -0
  83. package/src/cf/CloudflareWorkerVFS.ts +664 -0
  84. package/src/cf/README.md +60 -0
  85. package/src/cf/mod.ts +143 -0
  86. package/src/cf/test/README.md +224 -0
  87. package/src/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.ts +389 -0
  88. package/src/cf/test/async-storage/cloudflare-worker-vfs-core.test.ts +322 -0
  89. package/src/cf/test/async-storage/cloudflare-worker-vfs-integration.test.ts +585 -0
  90. package/src/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.ts +403 -0
  91. package/src/cf/test/sql/cloudflare-sql-vfs-core.test.ts +433 -0
  92. package/src/load-wasm/mod.node.ts +1 -2
  93. package/src/load-wasm/mod.workerd.ts +28 -0
  94. package/src/make-sqlite-db.ts +39 -8
  95. package/src/node/NodeFS.ts +1 -9
  96. package/src/node/mod.ts +5 -12
  97. package/src/ambient.d.ts +0 -18
@@ -1,5 +1,8 @@
1
- import { Effect, Schedule, Schema } from '@livestore/utils/effect';
2
1
  // Based on https://github.com/rhashimoto/wa-sqlite/blob/master/src/examples/AccessHandlePoolVFS.js
2
+ /// <reference lib="webworker" />
3
+ import { shouldNeverHappen } from '@livestore/utils';
4
+ import { Effect, Runtime, Schedule, Stream } from '@livestore/utils/effect';
5
+ import { Opfs } from '@livestore/utils/effect/browser';
3
6
  import * as VFS from '@livestore/wa-sqlite/src/VFS.js';
4
7
  import { FacadeVFS } from "../../FacadeVFS.js";
5
8
  const SECTOR_SIZE = 4096;
@@ -15,7 +18,33 @@ const HEADER_OFFSET_DATA = SECTOR_SIZE;
15
18
  // These file types are expected to persist in the file system outside
16
19
  // a session. Other files will be removed on VFS start.
17
20
  const PERSISTENT_FILE_TYPES = VFS.SQLITE_OPEN_MAIN_DB | VFS.SQLITE_OPEN_MAIN_JOURNAL | VFS.SQLITE_OPEN_SUPER_JOURNAL | VFS.SQLITE_OPEN_WAL;
18
- const DEFAULT_CAPACITY = 6;
21
+ // OPFS file pool capacity must be predicted rather than dynamically increased because
22
+ // capacity expansion (addCapacity) is async while SQLite operations are synchronous.
23
+ // We cannot await in the middle of sqlite3.step() calls without making the API async.
24
+ //
25
+ // We over-allocate because:
26
+ // 1. SQLite’s temporary file usage is not part of its API contract.
27
+ // Future SQLite versions may create additional temporary files without notice.
28
+ // See: https://www.sqlite.org/tempfiles.html
29
+ // 2. In the future, we may change how we operate the SQLite DBs,
30
+ // which may increase the number of files needed.
31
+ // e.g. enabling the WAL mode, using multi-DB transactions, etc.
32
+ //
33
+ // TRADEOFF: Higher capacity means the VFS opens and keeps more file handles, consuming
34
+ // browser resources. Lower capacity risks "SQLITE_CANTOPEN" errors during operations.
35
+ //
36
+ // CAPACITY CALCULATION:
37
+ // - 2 main databases (state + eventlog) × 4 files each (main, journal, WAL, shm) = 8 files
38
+ // - Up to 5 SQLite temporary files (super-journal, temp DB, materializations,
39
+ // transient indices, VACUUM temp DB) = 5 files
40
+ // - Transient state database archival operations = 1 file
41
+ // - Safety buffer for future SQLite versions and unpredictable usage = 6 files
42
+ // Total: 20 files
43
+ //
44
+ // References:
45
+ // - https://sqlite.org/forum/info/a3da1e34d8
46
+ // - https://www.sqlite.org/tempfiles.html
47
+ const DEFAULT_CAPACITY = 20;
19
48
  /**
20
49
  * This VFS uses the updated Access Handle API with all synchronous methods
21
50
  * on FileSystemSyncAccessHandle (instead of just read and write). It will
@@ -28,6 +57,8 @@ export class AccessHandlePoolVFS extends FacadeVFS {
28
57
  // specified in the constructor. No other files should be written here.
29
58
  #directoryPath;
30
59
  #directoryHandle;
60
+ // Runtime for executing Effect operations
61
+ #runtime;
31
62
  // The OPFS files all have randomly-generated names that do not match
32
63
  // the SQLite files whose data they contain. This map links those names
33
64
  // with their respective OPFS access handles.
@@ -38,29 +69,67 @@ export class AccessHandlePoolVFS extends FacadeVFS {
38
69
  #mapPathToAccessHandle = new Map();
39
70
  #availableAccessHandles = new Set();
40
71
  #mapIdToFile = new Map();
41
- static async create(name, directoryPath, module) {
42
- const vfs = new AccessHandlePoolVFS(name, directoryPath, module);
43
- await vfs.isReady();
72
+ static create = Effect.fn(function* (name, directoryPath, module) {
73
+ const runtime = yield* Effect.runtime();
74
+ const vfs = new AccessHandlePoolVFS({ name, directoryPath, module, runtime });
75
+ yield* Effect.promise(() => vfs.isReady());
44
76
  return vfs;
45
- }
46
- constructor(name, directoryPath, module) {
77
+ });
78
+ constructor({ name, directoryPath, module, runtime, }) {
47
79
  super(name, module);
48
80
  this.#directoryPath = directoryPath;
81
+ this.#runtime = runtime;
49
82
  }
50
- getOpfsFileName(zName) {
83
+ /**
84
+ * Get the OPFS file name that contains the data for the given SQLite file.
85
+ *
86
+ * @remarks
87
+ *
88
+ * This would be for one of the files in the pool managed by this VFS.
89
+ * It's not the same as the SQLite file name. It's a randomly-generated
90
+ * string that is not meaningful to the application.
91
+ */
92
+ getOpfsFileName = Effect.fn((zName) => Effect.gen(this, function* () {
51
93
  const path = this.#getPath(zName);
52
94
  const accessHandle = this.#mapPathToAccessHandle.get(path);
53
95
  return this.#mapAccessHandleToName.get(accessHandle);
54
- }
55
- resetAccessHandle(zName) {
96
+ }));
97
+ /**
98
+ * Reads the SQLite payload (without the OPFS header) for the given file.
99
+ *
100
+ * @privateRemarks
101
+ *
102
+ * Since the file's access handle is a FileSystemSyncAccessHandle — which
103
+ * acquires an exclusive lock — we don't need to handle short reads as
104
+ * the file cannot be modified by other threads.
105
+ */
106
+ readFilePayload = Effect.fn((zName) => Effect.gen(this, function* () {
56
107
  const path = this.#getPath(zName);
57
108
  const accessHandle = this.#mapPathToAccessHandle.get(path);
58
- accessHandle.truncate(HEADER_OFFSET_DATA);
109
+ if (accessHandle === undefined) {
110
+ return shouldNeverHappen('Cannot read payload for untracked OPFS path');
111
+ }
112
+ const fileSize = yield* Opfs.Opfs.syncGetSize(accessHandle);
113
+ if (fileSize <= HEADER_OFFSET_DATA) {
114
+ return shouldNeverHappen(`OPFS file too small to contain header and payload: size ${fileSize} < HEADER_OFFSET_DATA ${HEADER_OFFSET_DATA}`);
115
+ }
116
+ const payloadSize = fileSize - HEADER_OFFSET_DATA;
117
+ const payload = new Uint8Array(payloadSize);
118
+ const bytesRead = yield* Opfs.Opfs.syncRead(accessHandle, payload, { at: HEADER_OFFSET_DATA });
119
+ if (bytesRead !== payloadSize) {
120
+ return shouldNeverHappen(`Failed to read full payload from OPFS file: read ${bytesRead}/${payloadSize}`);
121
+ }
122
+ return payload.buffer;
123
+ }));
124
+ resetAccessHandle = Effect.fn((zName) => Effect.gen(this, function* () {
125
+ const path = this.#getPath(zName);
126
+ const accessHandle = this.#mapPathToAccessHandle.get(path);
127
+ yield* Opfs.Opfs.syncTruncate(accessHandle, HEADER_OFFSET_DATA);
59
128
  // accessHandle.write(new Uint8Array(), { at: HEADER_OFFSET_DATA })
60
129
  // accessHandle.flush()
61
- }
130
+ }));
62
131
  jOpen(zName, fileId, flags, pOutFlags) {
63
- try {
132
+ return Effect.gen(this, function* () {
64
133
  // First try to open a path that already exists in the file system.
65
134
  const path = zName ? this.#getPath(zName) : Math.random().toString(36);
66
135
  let accessHandle = this.#mapPathToAccessHandle.get(path);
@@ -70,73 +139,84 @@ export class AccessHandlePoolVFS extends FacadeVFS {
70
139
  // Choose an unassociated OPFS file from the pool.
71
140
  ;
72
141
  [accessHandle] = this.#availableAccessHandles.keys();
73
- this.#setAssociatedPath(accessHandle, path, flags);
142
+ yield* this.#setAssociatedPath(accessHandle, path, flags);
74
143
  }
75
144
  else {
76
145
  // Out of unassociated files. This can be fixed by calling
77
146
  // addCapacity() from the application.
78
- throw new Error('cannot create file');
147
+ return yield* Effect.dieMessage('cannot create file');
79
148
  }
80
149
  }
81
- if (!accessHandle) {
82
- throw new Error('file not found');
83
- }
150
+ if (!accessHandle)
151
+ return yield* Effect.dieMessage('file not found');
84
152
  // Subsequent methods are only passed the fileId, so make sure we have
85
153
  // a way to get the file resources.
86
154
  const file = { path, flags, accessHandle };
87
155
  this.#mapIdToFile.set(fileId, file);
88
156
  pOutFlags.setInt32(0, flags, true);
89
157
  return VFS.SQLITE_OK;
90
- }
91
- catch (e) {
92
- console.error(e.message);
93
- return VFS.SQLITE_CANTOPEN;
94
- }
158
+ }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(() => Effect.succeed(VFS.SQLITE_CANTOPEN)), Runtime.runSync(this.#runtime));
95
159
  }
96
160
  jClose(fileId) {
97
- const file = this.#mapIdToFile.get(fileId);
98
- if (file) {
99
- file.accessHandle.flush();
100
- this.#mapIdToFile.delete(fileId);
101
- if (file.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {
102
- this.#deletePath(file.path);
161
+ return Effect.gen(this, function* () {
162
+ const file = this.#mapIdToFile.get(fileId);
163
+ if (file) {
164
+ yield* Opfs.Opfs.syncFlush(file.accessHandle);
165
+ this.#mapIdToFile.delete(fileId);
166
+ if (file.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {
167
+ yield* this.#deletePath(file.path);
168
+ }
103
169
  }
104
- }
105
- return VFS.SQLITE_OK;
170
+ return VFS.SQLITE_OK;
171
+ }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(() => Effect.succeed(VFS.SQLITE_IOERR_CLOSE)), Runtime.runSync(this.#runtime));
106
172
  }
107
173
  jRead(fileId, pData, iOffset) {
108
- const file = this.#mapIdToFile.get(fileId);
109
- const nBytes = file.accessHandle.read(pData.subarray(), {
110
- at: HEADER_OFFSET_DATA + iOffset,
111
- });
112
- if (nBytes < pData.byteLength) {
113
- pData.fill(0, nBytes, pData.byteLength);
114
- return VFS.SQLITE_IOERR_SHORT_READ;
115
- }
116
- return VFS.SQLITE_OK;
174
+ return Effect.gen(this, function* () {
175
+ const file = this.#mapIdToFile.get(fileId);
176
+ const nBytes = yield* Opfs.Opfs.syncRead(file.accessHandle, pData.subarray(), {
177
+ at: HEADER_OFFSET_DATA + iOffset,
178
+ });
179
+ if (nBytes < pData.byteLength) {
180
+ pData.fill(0, nBytes, pData.byteLength);
181
+ return VFS.SQLITE_IOERR_SHORT_READ;
182
+ }
183
+ return VFS.SQLITE_OK;
184
+ }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(() => Effect.succeed(VFS.SQLITE_IOERR_READ)), Runtime.runSync(this.#runtime));
117
185
  }
118
186
  jWrite(fileId, pData, iOffset) {
119
- const file = this.#mapIdToFile.get(fileId);
120
- const nBytes = file.accessHandle.write(pData.subarray(), {
121
- at: HEADER_OFFSET_DATA + iOffset,
122
- });
123
- return nBytes === pData.byteLength ? VFS.SQLITE_OK : VFS.SQLITE_IOERR;
187
+ return Effect.gen(this, function* () {
188
+ const file = this.#mapIdToFile.get(fileId);
189
+ const nBytes = yield* Opfs.Opfs.syncWrite(file.accessHandle, pData.subarray(), {
190
+ at: HEADER_OFFSET_DATA + iOffset,
191
+ });
192
+ if (nBytes !== pData.byteLength) {
193
+ return yield* Effect.dieMessage(`Wrote ${nBytes} bytes, expected ${pData.byteLength}`);
194
+ }
195
+ return VFS.SQLITE_OK;
196
+ }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(() => Effect.succeed(VFS.SQLITE_IOERR_WRITE)), Runtime.runSync(this.#runtime));
124
197
  }
125
198
  jTruncate(fileId, iSize) {
126
- const file = this.#mapIdToFile.get(fileId);
127
- file.accessHandle.truncate(HEADER_OFFSET_DATA + iSize);
128
- return VFS.SQLITE_OK;
199
+ return Effect.gen(this, function* () {
200
+ const file = this.#mapIdToFile.get(fileId);
201
+ yield* Opfs.Opfs.syncTruncate(file.accessHandle, HEADER_OFFSET_DATA + iSize);
202
+ return VFS.SQLITE_OK;
203
+ }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(() => Effect.succeed(VFS.SQLITE_IOERR_TRUNCATE)), Runtime.runSync(this.#runtime));
129
204
  }
130
205
  jSync(fileId, _flags) {
131
- const file = this.#mapIdToFile.get(fileId);
132
- file.accessHandle.flush();
133
- return VFS.SQLITE_OK;
206
+ return Effect.gen(this, function* () {
207
+ const file = this.#mapIdToFile.get(fileId);
208
+ yield* Opfs.Opfs.syncFlush(file.accessHandle);
209
+ return VFS.SQLITE_OK;
210
+ }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(() => Effect.succeed(VFS.SQLITE_IOERR_FSYNC)), Runtime.runSync(this.#runtime));
134
211
  }
135
212
  jFileSize(fileId, pSize64) {
136
- const file = this.#mapIdToFile.get(fileId);
137
- const size = file.accessHandle.getSize() - HEADER_OFFSET_DATA;
138
- pSize64.setBigInt64(0, BigInt(size), true);
139
- return VFS.SQLITE_OK;
213
+ return Effect.gen(this, function* () {
214
+ const file = this.#mapIdToFile.get(fileId);
215
+ const opfsFileSize = yield* Opfs.Opfs.syncGetSize(file.accessHandle);
216
+ const size = opfsFileSize - HEADER_OFFSET_DATA;
217
+ pSize64.setBigInt64(0, BigInt(size), true);
218
+ return VFS.SQLITE_OK;
219
+ }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(() => Effect.succeed(VFS.SQLITE_IOERR_FSTAT)), Runtime.runSync(this.#runtime));
140
220
  }
141
221
  jSectorSize(_fileId) {
142
222
  return SECTOR_SIZE;
@@ -145,34 +225,34 @@ export class AccessHandlePoolVFS extends FacadeVFS {
145
225
  return VFS.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;
146
226
  }
147
227
  jAccess(zName, _flags, pResOut) {
148
- const path = this.#getPath(zName);
149
- pResOut.setInt32(0, this.#mapPathToAccessHandle.has(path) ? 1 : 0, true);
150
- return VFS.SQLITE_OK;
228
+ return Effect.gen(this, function* () {
229
+ const path = this.#getPath(zName);
230
+ pResOut.setInt32(0, this.#mapPathToAccessHandle.has(path) ? 1 : 0, true);
231
+ return VFS.SQLITE_OK;
232
+ }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(() => Effect.succeed(VFS.SQLITE_IOERR_ACCESS)), Runtime.runSync(this.#runtime));
151
233
  }
152
234
  jDelete(zName, _syncDir) {
153
- const path = this.#getPath(zName);
154
- this.#deletePath(path);
155
- return VFS.SQLITE_OK;
235
+ return Effect.gen(this, function* () {
236
+ const path = this.#getPath(zName);
237
+ yield* this.#deletePath(path);
238
+ return VFS.SQLITE_OK;
239
+ }).pipe(Effect.tapCauseLogPretty, Effect.catchAllCause(() => Effect.succeed(VFS.SQLITE_IOERR_DELETE)), Runtime.runSync(this.#runtime));
156
240
  }
157
- async close() {
158
- this.#releaseAccessHandles();
241
+ close() {
242
+ this.#releaseAccessHandles().pipe(Runtime.runPromise(this.#runtime));
159
243
  }
160
244
  async isReady() {
161
- if (!this.#directoryHandle) {
162
- // All files are stored in a single directory.
163
- let handle = await navigator.storage.getDirectory();
164
- for (const d of this.#directoryPath.split('/')) {
165
- if (d) {
166
- handle = await handle.getDirectoryHandle(d, { create: true });
245
+ return Effect.gen(this, function* () {
246
+ if (!this.#directoryHandle) {
247
+ // All files are stored in a single directory.
248
+ this.#directoryHandle = yield* Opfs.getDirectoryHandleByPath(this.#directoryPath, { create: true });
249
+ yield* this.#acquireAccessHandles();
250
+ if (this.getCapacity() === 0) {
251
+ yield* this.addCapacity(DEFAULT_CAPACITY);
167
252
  }
168
253
  }
169
- this.#directoryHandle = handle;
170
- await this.#acquireAccessHandles();
171
- if (this.getCapacity() === 0) {
172
- await this.addCapacity(DEFAULT_CAPACITY);
173
- }
174
- }
175
- return true;
254
+ return true;
255
+ }).pipe(Runtime.runPromise(this.#runtime));
176
256
  }
177
257
  /**
178
258
  * Returns the number of SQLite files in the file system.
@@ -187,93 +267,86 @@ export class AccessHandlePoolVFS extends FacadeVFS {
187
267
  return this.#mapAccessHandleToName.size;
188
268
  }
189
269
  /**
190
- * Increase the capacity of the file system by n.
270
+ * Get all currently tracked SQLite file paths.
271
+ * This can be used by higher-level components for file management operations.
272
+ *
273
+ * @returns Array of currently active SQLite file paths
191
274
  */
192
- async addCapacity(n) {
193
- for (let i = 0; i < n; ++i) {
194
- const name = Math.random().toString(36).replace('0.', '');
195
- const handle = await this.#directoryHandle.getFileHandle(name, {
196
- create: true,
197
- });
198
- const accessHandle = await Effect.tryPromise({
199
- try: () => handle.createSyncAccessHandle(),
200
- catch: (cause) => new OpfsError({ cause, path: name }),
201
- }).pipe(Effect.retry(Schedule.exponentialBackoff10Sec), Effect.runPromise);
202
- this.#mapAccessHandleToName.set(accessHandle, name);
203
- this.#setAssociatedPath(accessHandle, '', 0);
204
- }
205
- return n;
275
+ getTrackedFilePaths() {
276
+ return Array.from(this.#mapPathToAccessHandle.keys());
206
277
  }
278
+ /**
279
+ * Increase the capacity of the file system by n.
280
+ */
281
+ addCapacity = Effect.fn((n) => Effect.repeatN(Effect.gen(this, function* () {
282
+ const name = Math.random().toString(36).replace('0.', '');
283
+ const accessHandle = yield* Opfs.Opfs.getFileHandle(this.#directoryHandle, name, { create: true }).pipe(Effect.andThen((handle) => Opfs.Opfs.createSyncAccessHandle(handle)), Effect.retry(Schedule.exponentialBackoff10Sec));
284
+ this.#mapAccessHandleToName.set(accessHandle, name);
285
+ yield* this.#setAssociatedPath(accessHandle, '', 0);
286
+ }), n));
207
287
  /**
208
288
  * Decrease the capacity of the file system by n. The capacity cannot be
209
289
  * decreased to fewer than the current number of SQLite files in the
210
290
  * file system.
211
291
  */
212
- async removeCapacity(n) {
292
+ removeCapacity = Effect.fn((n) => Effect.gen(this, function* () {
213
293
  let nRemoved = 0;
214
- for (const accessHandle of Array.from(this.#availableAccessHandles)) {
294
+ yield* Effect.forEach(this.#availableAccessHandles, (accessHandle) => Effect.gen(this, function* () {
215
295
  if (nRemoved === n || this.getSize() === this.getCapacity())
216
296
  return nRemoved;
217
297
  const name = this.#mapAccessHandleToName.get(accessHandle);
218
298
  accessHandle.close();
219
- await this.#directoryHandle.removeEntry(name);
299
+ yield* Opfs.Opfs.removeEntry(this.#directoryHandle, name);
220
300
  this.#mapAccessHandleToName.delete(accessHandle);
221
301
  this.#availableAccessHandles.delete(accessHandle);
222
302
  ++nRemoved;
223
- }
303
+ }), { discard: true });
224
304
  return nRemoved;
225
- }
226
- async #acquireAccessHandles() {
227
- // Enumerate all the files in the directory.
228
- const files = [];
229
- for await (const [name, handle] of this.#directoryHandle) {
230
- if (handle.kind === 'file') {
231
- files.push([name, handle]);
232
- }
233
- }
234
- // Open access handles in parallel, separating associated and unassociated.
235
- await Promise.all(files.map(async ([name, handle]) => {
236
- const accessHandle = await Effect.tryPromise({
237
- try: () => handle.createSyncAccessHandle(),
238
- catch: (cause) => new OpfsError({ cause, path: name }),
239
- }).pipe(Effect.retry(Schedule.exponentialBackoff10Sec), Effect.runPromise);
240
- this.#mapAccessHandleToName.set(accessHandle, name);
241
- const path = this.#getAssociatedPath(accessHandle);
305
+ }));
306
+ #acquireAccessHandles = Effect.fn(() => Effect.gen(this, function* () {
307
+ const handlesStream = yield* Opfs.Opfs.values(this.#directoryHandle);
308
+ yield* handlesStream.pipe(Stream.filter((handle) => handle.kind === 'file'), Stream.mapEffect((fileHandle) => Effect.gen(this, function* () {
309
+ const accessHandle = yield* Opfs.Opfs.createSyncAccessHandle(fileHandle);
310
+ return {
311
+ accessHandle,
312
+ opfsFileName: fileHandle.name,
313
+ path: yield* this.#getAssociatedPath(accessHandle),
314
+ };
315
+ }), { concurrency: 'unbounded' }), Stream.runForEach(({ opfsFileName, accessHandle, path }) => Effect.gen(this, function* () {
316
+ this.#mapAccessHandleToName.set(accessHandle, opfsFileName);
242
317
  if (path) {
243
318
  this.#mapPathToAccessHandle.set(path, accessHandle);
244
319
  }
245
320
  else {
246
321
  this.#availableAccessHandles.add(accessHandle);
247
322
  }
248
- }));
249
- }
250
- #releaseAccessHandles() {
251
- for (const accessHandle of this.#mapAccessHandleToName.keys()) {
252
- accessHandle.close();
253
- }
323
+ })));
324
+ }));
325
+ #releaseAccessHandles = Effect.fn(() => Effect.gen(this, function* () {
326
+ yield* Effect.forEach(this.#mapAccessHandleToName.keys(), (accessHandle) => Effect.sync(() => accessHandle.close()), { concurrency: 'unbounded', discard: true });
254
327
  this.#mapAccessHandleToName.clear();
255
328
  this.#mapPathToAccessHandle.clear();
256
329
  this.#availableAccessHandles.clear();
257
- }
330
+ }));
258
331
  /**
259
332
  * Read and return the associated path from an OPFS file header.
260
333
  * Empty string is returned for an unassociated OPFS file.
261
334
  * @returns {string} path or empty string
262
335
  */
263
- #getAssociatedPath(accessHandle) {
336
+ #getAssociatedPath = Effect.fn((accessHandle) => Effect.gen(this, function* () {
264
337
  // Read the path and digest of the path from the file.
265
338
  const corpus = new Uint8Array(HEADER_CORPUS_SIZE);
266
- accessHandle.read(corpus, { at: 0 });
339
+ yield* Opfs.Opfs.syncRead(accessHandle, corpus, { at: 0 });
267
340
  // Delete files not expected to be present.
268
341
  const dataView = new DataView(corpus.buffer, corpus.byteOffset);
269
342
  const flags = dataView.getUint32(HEADER_OFFSET_FLAGS);
270
343
  if (corpus[0] && (flags & VFS.SQLITE_OPEN_DELETEONCLOSE || (flags & PERSISTENT_FILE_TYPES) === 0)) {
271
- console.warn(`Remove file with unexpected flags ${flags.toString(16)}`);
272
- this.#setAssociatedPath(accessHandle, '', 0);
344
+ yield* Effect.logWarning(`Remove file with unexpected flags ${flags.toString(16)}`);
345
+ yield* this.#setAssociatedPath(accessHandle, '', 0);
273
346
  return '';
274
347
  }
275
348
  const fileDigest = new Uint32Array(HEADER_DIGEST_SIZE / 4);
276
- accessHandle.read(fileDigest, { at: HEADER_OFFSET_DIGEST });
349
+ yield* Opfs.Opfs.syncRead(accessHandle, fileDigest, { at: HEADER_OFFSET_DIGEST });
277
350
  // Verify the digest.
278
351
  const computedDigest = this.#computeDigest(corpus);
279
352
  if (fileDigest.every((value, i) => value === computedDigest[i])) {
@@ -284,35 +357,35 @@ export class AccessHandlePoolVFS extends FacadeVFS {
284
357
  // truncated in #setAssociatedPath after the header is written. If
285
358
  // an interruption occurs right before the truncation then garbage
286
359
  // may remain in the file.
287
- accessHandle.truncate(HEADER_OFFSET_DATA);
360
+ yield* Opfs.Opfs.syncTruncate(accessHandle, HEADER_OFFSET_DATA);
288
361
  }
289
362
  return new TextDecoder().decode(corpus.subarray(0, pathBytes));
290
363
  }
291
364
  else {
292
365
  // Bad digest. Repair this header.
293
- console.warn('Disassociating file with bad digest.');
294
- this.#setAssociatedPath(accessHandle, '', 0);
366
+ yield* Effect.logWarning('Disassociating file with bad digest.');
367
+ yield* this.#setAssociatedPath(accessHandle, '', 0);
295
368
  return '';
296
369
  }
297
- }
370
+ }));
298
371
  /**
299
372
  * Set the path on an OPFS file header.
300
373
  */
301
- #setAssociatedPath(accessHandle, path, flags) {
374
+ #setAssociatedPath = Effect.fn((accessHandle, path, flags) => Effect.gen(this, function* () {
302
375
  // Convert the path string to UTF-8.
303
376
  const corpus = new Uint8Array(HEADER_CORPUS_SIZE);
304
377
  const encodedResult = new TextEncoder().encodeInto(path, corpus);
305
378
  if (encodedResult.written >= HEADER_MAX_PATH_SIZE) {
306
- throw new Error('path too long');
379
+ return yield* Effect.dieMessage('path too long');
307
380
  }
308
381
  // Add the creation flags.
309
382
  const dataView = new DataView(corpus.buffer, corpus.byteOffset);
310
383
  dataView.setUint32(HEADER_OFFSET_FLAGS, flags);
311
384
  // Write the OPFS file header, including the digest.
312
385
  const digest = this.#computeDigest(corpus);
313
- accessHandle.write(corpus, { at: 0 });
314
- accessHandle.write(digest, { at: HEADER_OFFSET_DIGEST });
315
- accessHandle.flush();
386
+ yield* Opfs.Opfs.syncWrite(accessHandle, corpus, { at: 0 });
387
+ yield* Opfs.Opfs.syncWrite(accessHandle, digest, { at: HEADER_OFFSET_DIGEST });
388
+ yield* Opfs.Opfs.syncFlush(accessHandle);
316
389
  if (path) {
317
390
  this.#mapPathToAccessHandle.set(path, accessHandle);
318
391
  this.#availableAccessHandles.delete(accessHandle);
@@ -320,10 +393,10 @@ export class AccessHandlePoolVFS extends FacadeVFS {
320
393
  else {
321
394
  // This OPFS file doesn't represent any SQLite file so it doesn't
322
395
  // need to keep any data.
323
- accessHandle.truncate(HEADER_OFFSET_DATA);
396
+ yield* Opfs.Opfs.syncTruncate(accessHandle, HEADER_OFFSET_DATA);
324
397
  this.#availableAccessHandles.add(accessHandle);
325
398
  }
326
- }
399
+ }));
327
400
  /**
328
401
  * We need a synchronous digest function so can't use WebCrypto.
329
402
  * Adapted from https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js
@@ -355,18 +428,13 @@ export class AccessHandlePoolVFS extends FacadeVFS {
355
428
  * Remove the association between a path and an OPFS file.
356
429
  * @param {string} path
357
430
  */
358
- #deletePath(path) {
431
+ #deletePath = Effect.fn((path) => Effect.gen(this, function* () {
359
432
  const accessHandle = this.#mapPathToAccessHandle.get(path);
360
433
  if (accessHandle) {
361
434
  // Un-associate the SQLite path from the OPFS file.
362
435
  this.#mapPathToAccessHandle.delete(path);
363
- this.#setAssociatedPath(accessHandle, '', 0);
436
+ yield* this.#setAssociatedPath(accessHandle, '', 0);
364
437
  }
365
- }
366
- }
367
- export class OpfsError extends Schema.TaggedError()('OpfsError', {
368
- cause: Schema.Defect,
369
- path: Schema.String,
370
- }) {
438
+ }));
371
439
  }
372
440
  //# sourceMappingURL=AccessHandlePoolVFS.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccessHandlePoolVFS.js","sourceRoot":"","sources":["../../../src/browser/opfs/AccessHandlePoolVFS.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAClE,mGAAmG;AACnG,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,MAAM,WAAW,GAAG,IAAI,CAAA;AAExB,oEAAoE;AACpE,4DAA4D;AAC5D,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAChC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAC3B,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAC5B,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,iBAAiB,CAAA;AACnE,MAAM,mBAAmB,GAAG,oBAAoB,CAAA;AAChD,MAAM,oBAAoB,GAAG,kBAAkB,CAAA;AAC/C,MAAM,kBAAkB,GAAG,WAAW,CAAA;AAEtC,sEAAsE;AACtE,uDAAuD;AACvD,MAAM,qBAAqB,GACzB,GAAG,CAAC,mBAAmB,GAAG,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC,yBAAyB,GAAG,GAAG,CAAC,eAAe,CAAA;AAE9G,MAAM,gBAAgB,GAAG,CAAC,CAAA;AAE1B;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAChD,GAAG,GAAG,IAAI,CAAA,CAAC,iEAAiE;IAE5E,sEAAsE;IACtE,uEAAuE;IACvE,cAAc,CAAA;IACd,gBAAgB,CAAuC;IAEvD,qEAAqE;IACrE,uEAAuE;IACvE,6CAA6C;IAC7C,sBAAsB,GAAG,IAAI,GAAG,EAAsC,CAAA;IAEtE,uEAAuE;IACvE,sEAAsE;IACtE,4DAA4D;IAC5D,sBAAsB,GAAG,IAAI,GAAG,EAAsC,CAAA;IACtE,uBAAuB,GAAG,IAAI,GAAG,EAA8B,CAAA;IAE/D,YAAY,GAAG,IAAI,GAAG,EAAqF,CAAA;IAE3G,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAY,EAAE,aAAqB,EAAE,MAAW;QAClE,MAAM,GAAG,GAAG,IAAI,mBAAmB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;QAChE,MAAM,GAAG,CAAC,OAAO,EAAE,CAAA;QACnB,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,YAAY,IAAY,EAAE,aAAqB,EAAE,MAAW;QAC1D,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACnB,IAAI,CAAC,cAAc,GAAG,aAAa,CAAA;IACrC,CAAC;IAED,eAAe,CAAC,KAAa;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;QAC3D,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAE,CAAA;IACvD,CAAC;IAED,iBAAiB,CAAC,KAAa;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;QAC3D,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QACzC,mEAAmE;QACnE,uBAAuB;IACzB,CAAC;IAED,KAAK,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa,EAAE,SAAmB;QACrE,IAAI,CAAC;YACH,mEAAmE;YACnE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YACtE,IAAI,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACxD,IAAI,CAAC,YAAY,IAAI,KAAK,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;gBACpD,sCAAsC;gBACtC,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxC,kDAAkD;oBAClD,CAAC;oBAAA,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAA;oBACrD,IAAI,CAAC,kBAAkB,CAAC,YAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;gBACrD,CAAC;qBAAM,CAAC;oBACN,0DAA0D;oBAC1D,sCAAsC;oBACtC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;gBACvC,CAAC;YACH,CAAC;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;YACnC,CAAC;YACD,sEAAsE;YACtE,mCAAmC;YACnC,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAA;YAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAEnC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;YAClC,OAAO,GAAG,CAAC,SAAS,CAAA;QACtB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YACxB,OAAO,GAAG,CAAC,eAAe,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,MAAc;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAC1C,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;YACzB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAChC,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,yBAAyB,EAAE,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,KAA8B,EAAE,OAAe;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;YACtD,EAAE,EAAE,kBAAkB,GAAG,OAAO;SACjC,CAAC,CAAA;QACF,IAAI,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;YACvC,OAAO,GAAG,CAAC,uBAAuB,CAAA;QACpC,CAAC;QACD,OAAO,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,KAA8B,EAAE,OAAe;QACpE,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE;YACvD,EAAE,EAAE,kBAAkB,GAAG,OAAO;SACjC,CAAC,CAAA;QACF,OAAO,MAAM,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAA;IACvE,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,KAAa;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAC3C,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,kBAAkB,GAAG,KAAK,CAAC,CAAA;QACtD,OAAO,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,MAAc;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAC3C,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;QACzB,OAAO,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;IAED,SAAS,CAAC,MAAc,EAAE,OAAiB;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,kBAAkB,CAAA;QAC7D,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;QAC1C,OAAO,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;IAED,WAAW,CAAC,OAAe;QACzB,OAAO,WAAW,CAAA;IACpB,CAAC;IAED,sBAAsB,CAAC,OAAe;QACpC,OAAO,GAAG,CAAC,kCAAkC,CAAA;IAC/C,CAAC;IAED,OAAO,CAAC,KAAa,EAAE,MAAc,EAAE,OAAiB;QACtD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QACxE,OAAO,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;IAED,OAAO,CAAC,KAAa,EAAE,QAAgB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QACtB,OAAO,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,qBAAqB,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,8CAA8C;YAC9C,IAAI,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAA;YACnD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,EAAE,CAAC;oBACN,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC/D,CAAC;YACH,CAAC;YACD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAA;YAE9B,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAClC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;YAC1C,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAA;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,CAAS;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YACzD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAiB,CAAC,aAAa,CAAC,IAAI,EAAE;gBAC9D,MAAM,EAAE,IAAI;aACb,CAAC,CAAA;YAEF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;gBAC3C,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,EAAE;gBAC1C,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aACvD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;YAC1E,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;YAEnD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9C,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,CAAS;QAC5B,IAAI,QAAQ,GAAG,CAAC,CAAA;QAChB,KAAK,MAAM,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACpE,IAAI,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO,QAAQ,CAAA;YAE5E,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAE,CAAA;YAC3D,YAAY,CAAC,KAAK,EAAE,CAAA;YACpB,MAAM,IAAI,CAAC,gBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;YAC9C,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAChD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YACjD,EAAE,QAAQ,CAAA;QACZ,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,4CAA4C;QAC5C,MAAM,KAAK,GAAG,EAAsC,CAAA;QACpD,IAAI,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,gBAAiB,EAAE,CAAC;YAC1D,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAA8B,CAAC,CAAC,CAAA;YACpD,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE;YACjC,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC;gBAC3C,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,EAAE;gBAC1C,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aACvD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;YAC1E,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAA;YAClD,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;YACrD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;YAChD,CAAC;QACH,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED,qBAAqB;QACnB,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9D,YAAY,CAAC,KAAK,EAAE,CAAA;QACtB,CAAC;QACD,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAA;QACnC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAA;QACnC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAA;IACtC,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,YAAwC;QACzD,sDAAsD;QACtD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAA;QACjD,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;QAEpC,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;QACrD,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,yBAAyB,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAClG,OAAO,CAAC,IAAI,CAAC,qCAAqC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YACvE,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,OAAO,EAAE,CAAA;QACX,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,WAAW,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAA;QAC1D,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAA;QAE3D,qBAAqB;QACrB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAClD,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,uDAAuD;YACvD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACnC,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBACpB,mEAAmE;gBACnE,kEAAkE;gBAClE,kEAAkE;gBAClE,0BAA0B;gBAC1B,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;YAC3C,CAAC;YACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;YACpD,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC5C,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,YAAwC,EAAE,IAAY,EAAE,KAAa;QACtF,oCAAoC;QACpC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAAA;QACjD,MAAM,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAChE,IAAI,aAAa,CAAC,OAAO,IAAI,oBAAoB,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;QAClC,CAAC;QAED,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QAC/D,QAAQ,CAAC,SAAS,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;QAE9C,oDAAoD;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QAC1C,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;QACrC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAA;QACxD,YAAY,CAAC,KAAK,EAAE,CAAA;QAEpB,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;YACnD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QACnD,CAAC;aAAM,CAAC;YACN,iEAAiE;YACjE,yBAAyB;YACzB,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;YACzC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,MAAkB;QAC/B,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,iCAAiC;YACjC,OAAO,IAAI,WAAW,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC,CAAA;QACxD,CAAC;QAED,IAAI,EAAE,GAAG,aAAa,CAAA;QACtB,IAAI,EAAE,GAAG,aAAa,CAAA;QAEtB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,aAAa,CAAC,CAAA;YACzC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,aAAa,CAAC,CAAA;QAC3C,CAAC;QAED,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,CAAC,CAAA;QAC5F,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,aAAa,CAAC,CAAA;QAE5F,OAAO,IAAI,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;IAC9C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,SAAuB;QAC9B,MAAM,GAAG,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAC/F,OAAO,GAAG,CAAC,QAAQ,CAAA;IACrB,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,IAAY;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC1D,IAAI,YAAY,EAAE,CAAC;YACjB,mDAAmD;YACnD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACxC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,WAAW,EAAa,CAAC,WAAW,EAAE;IAC1E,KAAK,EAAE,MAAM,CAAC,MAAM;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM;CACpB,CAAC;CAAG"}
1
+ {"version":3,"file":"AccessHandlePoolVFS.js","sourceRoot":"","sources":["../../../src/browser/opfs/AccessHandlePoolVFS.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { Effect } from '@livestore/utils/effect';
1
+ import { Effect, type Scope } from '@livestore/utils/effect';
2
+ import type { Opfs } from '@livestore/utils/effect/browser';
2
3
  import type * as WaSqlite from '@livestore/wa-sqlite';
3
4
  import { AccessHandlePoolVFS } from './AccessHandlePoolVFS.ts';
4
5
  export declare const makeOpfsDb: ({ sqlite3, directory, fileName, }: {
@@ -8,5 +9,5 @@ export declare const makeOpfsDb: ({ sqlite3, directory, fileName, }: {
8
9
  }) => Effect.Effect<{
9
10
  dbPointer: number;
10
11
  vfs: AccessHandlePoolVFS;
11
- }, never, never>;
12
+ }, never, Opfs.Opfs | Scope.Scope>;
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/opfs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAK9D,eAAO,MAAM,UAAU,GAAI,mCAIxB;IACD,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;;;gBAkBkC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/opfs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAA;AAC3D,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAK9D,eAAO,MAAM,UAAU,GAAI,mCAIxB;IACD,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB,KAAG,MAAM,CAAC,MAAM,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,mBAAmB,CAAA;CAAE,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAkB9D,CAAA"}
@@ -8,7 +8,7 @@ export const makeOpfsDb = ({ sqlite3, directory, fileName, }) => Effect.gen(func
8
8
  const pathSegment = safePath.length === 0 ? '' : `-${safePath}`;
9
9
  const vfsName = `opfs${pathSegment}`;
10
10
  if (sqlite3.vfs_registered.has(vfsName) === false) {
11
- const vfs = yield* Effect.promise(() => AccessHandlePoolVFS.create(vfsName, directory, sqlite3.module));
11
+ const vfs = yield* AccessHandlePoolVFS.create(vfsName, directory, sqlite3.module);
12
12
  sqlite3.vfs_register(vfs, false);
13
13
  opfsVfsMap.set(vfsName, vfs);
14
14
  }