@livestore/sqlite-wasm 0.4.0-dev.8 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/FacadeVFS.d.ts +0 -1
- package/dist/FacadeVFS.d.ts.map +1 -1
- package/dist/FacadeVFS.js +13 -14
- package/dist/FacadeVFS.js.map +1 -1
- package/dist/browser/mod.d.ts +13 -6
- package/dist/browser/mod.d.ts.map +1 -1
- package/dist/browser/mod.js +49 -43
- package/dist/browser/mod.js.map +1 -1
- package/dist/browser/opfs/AccessHandlePoolVFS.d.ts +33 -17
- package/dist/browser/opfs/AccessHandlePoolVFS.d.ts.map +1 -1
- package/dist/browser/opfs/AccessHandlePoolVFS.js +187 -152
- package/dist/browser/opfs/AccessHandlePoolVFS.js.map +1 -1
- package/dist/browser/opfs/index.d.ts +3 -2
- package/dist/browser/opfs/index.d.ts.map +1 -1
- package/dist/browser/opfs/index.js +1 -1
- package/dist/browser/opfs/index.js.map +1 -1
- package/dist/browser/opfs/opfs-sah-pool.d.ts +1 -1
- package/dist/browser/opfs/opfs-sah-pool.d.ts.map +1 -1
- package/dist/browser/opfs/opfs-sah-pool.js +4 -4
- package/dist/browser/opfs/opfs-sah-pool.js.map +1 -1
- package/dist/cf/CloudflareDurableObjectVFS.d.ts +104 -0
- package/dist/cf/CloudflareDurableObjectVFS.d.ts.map +1 -0
- package/dist/cf/CloudflareDurableObjectVFS.js +281 -0
- package/dist/cf/CloudflareDurableObjectVFS.js.map +1 -0
- package/dist/cf/CloudflareWorkerVFS.d.ts.map +1 -1
- package/dist/cf/CloudflareWorkerVFS.js +29 -28
- package/dist/cf/CloudflareWorkerVFS.js.map +1 -1
- package/dist/cf/mod.d.ts +3 -4
- package/dist/cf/mod.d.ts.map +1 -1
- package/dist/cf/mod.js +6 -14
- package/dist/cf/mod.js.map +1 -1
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.js +5 -4
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.js.map +1 -1
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-core.test.js +3 -3
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-core.test.js.map +1 -1
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-integration.test.js +21 -3
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-integration.test.js.map +1 -1
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.js +3 -3
- package/dist/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.js.map +1 -1
- package/dist/cf/test/sql/cloudflare-sql-vfs-core.test.js +194 -179
- package/dist/cf/test/sql/cloudflare-sql-vfs-core.test.js.map +1 -1
- package/dist/in-memory-vfs.d.ts.map +1 -1
- package/dist/in-memory-vfs.js +0 -1
- package/dist/in-memory-vfs.js.map +1 -1
- package/dist/load-wasm/mod.node.js +1 -1
- package/dist/load-wasm/mod.node.js.map +1 -1
- package/dist/load-wasm/mod.workerd.d.ts.map +1 -1
- package/dist/load-wasm/mod.workerd.js +2 -0
- package/dist/load-wasm/mod.workerd.js.map +1 -1
- package/dist/make-sqlite-db.d.ts.map +1 -1
- package/dist/make-sqlite-db.js +45 -12
- package/dist/make-sqlite-db.js.map +1 -1
- package/dist/node/NodeFS.d.ts.map +1 -1
- package/dist/node/NodeFS.js +13 -13
- package/dist/node/NodeFS.js.map +1 -1
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +2 -2
- package/dist/node/mod.js.map +1 -1
- package/package.json +56 -17
- package/src/FacadeVFS.ts +14 -14
- package/src/browser/mod.ts +38 -13
- package/src/browser/opfs/AccessHandlePoolVFS.ts +374 -240
- package/src/browser/opfs/index.ts +4 -3
- package/src/browser/opfs/opfs-sah-pool.ts +4 -4
- package/src/cf/CloudflareDurableObjectVFS.ts +325 -0
- package/src/cf/CloudflareWorkerVFS.ts +41 -39
- package/src/cf/README.md +3 -3
- package/src/cf/mod.ts +12 -17
- package/src/cf/test/README.md +55 -26
- package/src/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.ts +6 -4
- package/src/cf/test/async-storage/cloudflare-worker-vfs-core.test.ts +4 -3
- package/src/cf/test/async-storage/cloudflare-worker-vfs-integration.test.ts +22 -3
- package/src/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.ts +4 -3
- package/src/cf/test/sql/cloudflare-sql-vfs-core.test.ts +228 -197
- package/src/in-memory-vfs.ts +0 -1
- package/src/load-wasm/mod.node.ts +1 -1
- package/src/load-wasm/mod.workerd.ts +2 -1
- package/src/make-sqlite-db.ts +62 -12
- package/src/node/NodeFS.ts +24 -23
- package/src/node/mod.ts +2 -2
- package/dist/cf/BlockManager.d.ts +0 -61
- package/dist/cf/BlockManager.d.ts.map +0 -1
- package/dist/cf/BlockManager.js +0 -157
- package/dist/cf/BlockManager.js.map +0 -1
- package/dist/cf/CloudflareSqlVFS.d.ts +0 -51
- package/dist/cf/CloudflareSqlVFS.d.ts.map +0 -1
- package/dist/cf/CloudflareSqlVFS.js +0 -351
- package/dist/cf/CloudflareSqlVFS.js.map +0 -1
- package/src/ambient.d.ts +0 -18
- package/src/cf/BlockManager.ts +0 -225
- package/src/cf/CloudflareSqlVFS.ts +0 -450
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.workerd.d.ts","sourceRoot":"","sources":["../../src/load-wasm/mod.workerd.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"mod.workerd.d.ts","sourceRoot":"","sources":["../../src/load-wasm/mod.workerd.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,0BAoB3B,CAAA"}
|
|
@@ -2,8 +2,10 @@ import * as WaSqlite from '@livestore/wa-sqlite';
|
|
|
2
2
|
import WaSqliteFactory from '@livestore/wa-sqlite/dist/wa-sqlite.mjs';
|
|
3
3
|
// @ts-expect-error TODO fix types in wa-sqlite
|
|
4
4
|
import wasm from '@livestore/wa-sqlite/dist/wa-sqlite.wasm';
|
|
5
|
+
// Note that it's important that the `workerd` entry is the first one in the `exports` map in the `package.json` file.
|
|
5
6
|
export const loadSqlite3Wasm = async () => {
|
|
6
7
|
// It seems we need to pass in the wasm binary directly for workerd to work
|
|
8
|
+
// This is due to workerd not supporting the same patterns as Vite for automatically loading WASM.
|
|
7
9
|
const module = await WaSqliteFactory({
|
|
8
10
|
instantiateWasm: (info, receiveInstance) => {
|
|
9
11
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.workerd.js","sourceRoot":"","sources":["../../src/load-wasm/mod.workerd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAChD,OAAO,eAAe,MAAM,yCAAyC,CAAA;
|
|
1
|
+
{"version":3,"file":"mod.workerd.js","sourceRoot":"","sources":["../../src/load-wasm/mod.workerd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAChD,OAAO,eAAe,MAAM,yCAAyC,CAAA;AACrE,+CAA+C;AAC/C,OAAO,IAAI,MAAM,0CAA0C,CAAA;AAE3D,sHAAsH;AACtH,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;IACxC,2EAA2E;IAC3E,kGAAkG;IAClG,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,eAAe,EAAE,CAAC,IAAS,EAAE,eAAoB,EAAE,EAAE;YACnD,IAAI,CAAC;gBACH,uCAAuC;gBACvC,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;gBACrD,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;gBAC/B,OAAO,QAAQ,CAAC,OAAO,CAAA;YACzB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAA;gBACnD,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;KACF,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACxC,kCAAkC;IAClC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;IACvB,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-sqlite-db.d.ts","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,QAAQ,EAET,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"make-sqlite-db.d.ts","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGf,QAAQ,EAET,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAKrD,eAAO,MAAM,YAAY,GACvB,SAAS,SAAS;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAA;IAChC,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,CAAC,KAAK,IAAI,CAAA;CAC/C,EACD,wBAGC;IACD,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;CACpB,KAAG,QAAQ,CAAC,SAAS,CAiQrB,CAAA"}
|
package/dist/make-sqlite-db.js
CHANGED
|
@@ -11,7 +11,7 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
11
11
|
metadata,
|
|
12
12
|
debug: {
|
|
13
13
|
// Setting initially to root but will be set to correct value shortly after
|
|
14
|
-
head: EventSequenceNumber.ROOT,
|
|
14
|
+
head: EventSequenceNumber.Client.ROOT,
|
|
15
15
|
},
|
|
16
16
|
prepare: (queryStr) => {
|
|
17
17
|
try {
|
|
@@ -27,7 +27,7 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
27
27
|
sqlite3.step(stmt);
|
|
28
28
|
}
|
|
29
29
|
finally {
|
|
30
|
-
if (options?.onRowsChanged) {
|
|
30
|
+
if (options?.onRowsChanged !== undefined) {
|
|
31
31
|
options.onRowsChanged(sqlite3.changes(dbPointer));
|
|
32
32
|
}
|
|
33
33
|
sqlite3.reset(stmt); // Reset is needed for next execution
|
|
@@ -79,7 +79,7 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
79
79
|
},
|
|
80
80
|
finalize: () => {
|
|
81
81
|
// Avoid double finalization which leads to a crash
|
|
82
|
-
if (isFinalized) {
|
|
82
|
+
if (isFinalized === true) {
|
|
83
83
|
return;
|
|
84
84
|
}
|
|
85
85
|
isFinalized = true;
|
|
@@ -115,12 +115,9 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
115
115
|
destroy: () => {
|
|
116
116
|
sqliteDb.close();
|
|
117
117
|
metadata.deleteDb();
|
|
118
|
-
// if (metadata._tag === 'opfs') {
|
|
119
|
-
// metadata.vfs.resetAccessHandle(metadata.fileName)
|
|
120
|
-
// }
|
|
121
118
|
},
|
|
122
119
|
close: () => {
|
|
123
|
-
if (isClosed) {
|
|
120
|
+
if (isClosed === true) {
|
|
124
121
|
return;
|
|
125
122
|
}
|
|
126
123
|
for (const stmt of preparedStmts) {
|
|
@@ -140,16 +137,40 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
140
137
|
// if (readOnly === true) {
|
|
141
138
|
// sqlite3.deserialize(db, 'main', bytes, bytes.length, bytes.length, FREE_ON_CLOSE | RESIZEABLE)
|
|
142
139
|
// } else {
|
|
140
|
+
const ensureSuccess = (rc, operation) => {
|
|
141
|
+
if (rc !== SqliteConstants.SQLITE_OK) {
|
|
142
|
+
throw new SqliteError({
|
|
143
|
+
code: rc,
|
|
144
|
+
cause: new Error(`${operation} failed with rc=${rc}`),
|
|
145
|
+
note: 'Snapshot import failed during SQLite copy',
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
};
|
|
143
149
|
if (source instanceof Uint8Array) {
|
|
150
|
+
const WAL_FILE_FORMAT = 2;
|
|
151
|
+
if (source.length >= 24 && (source[18] === WAL_FILE_FORMAT || source[19] === WAL_FILE_FORMAT)) {
|
|
152
|
+
throw new SqliteError({
|
|
153
|
+
code: SqliteConstants.SQLITE_CANTOPEN,
|
|
154
|
+
cause: new Error('WAL snapshots are not supported'),
|
|
155
|
+
note: 'Import expects rollback-journal snapshots (journal_mode=DELETE). Please convert snapshot before importing.',
|
|
156
|
+
});
|
|
157
|
+
}
|
|
144
158
|
const tmpDb = makeInMemoryDb(sqlite3);
|
|
145
159
|
// TODO find a way to do this more efficiently with sqlite to avoid either of the deserialize + backup call
|
|
146
160
|
// Maybe this can be done via the VFS API
|
|
147
|
-
sqlite3.deserialize(tmpDb.dbPointer, 'main', source, source.length, source.length, FREE_ON_CLOSE | RESIZEABLE);
|
|
148
|
-
|
|
149
|
-
|
|
161
|
+
const rcDeserialize = sqlite3.deserialize(tmpDb.dbPointer, 'main', source, source.length, source.length, FREE_ON_CLOSE | RESIZEABLE);
|
|
162
|
+
ensureSuccess(rcDeserialize, 'sqlite3.deserialize');
|
|
163
|
+
try {
|
|
164
|
+
const rcBackup = sqlite3.backup(dbPointer, 'main', tmpDb.dbPointer, 'main');
|
|
165
|
+
ensureSuccess(rcBackup, 'sqlite3.backup');
|
|
166
|
+
}
|
|
167
|
+
finally {
|
|
168
|
+
sqlite3.close(tmpDb.dbPointer);
|
|
169
|
+
}
|
|
150
170
|
}
|
|
151
171
|
else {
|
|
152
|
-
sqlite3.backup(dbPointer, 'main', source.metadata.dbPointer, 'main');
|
|
172
|
+
const rcBackup = sqlite3.backup(dbPointer, 'main', source.metadata.dbPointer, 'main');
|
|
173
|
+
ensureSuccess(rcBackup, 'sqlite3.backup');
|
|
153
174
|
}
|
|
154
175
|
metadata.configureDb(sqliteDb);
|
|
155
176
|
},
|
|
@@ -174,7 +195,19 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
174
195
|
},
|
|
175
196
|
apply: () => {
|
|
176
197
|
try {
|
|
177
|
-
sqlite3.changeset_apply(dbPointer, data)
|
|
198
|
+
sqlite3.changeset_apply(dbPointer, data, null, (eConflict) => {
|
|
199
|
+
// During rollback we apply inverted changesets to undo local events
|
|
200
|
+
// before replaying them on top of remote state. We want the undo to
|
|
201
|
+
// succeed unconditionally: if the row was already changed by another
|
|
202
|
+
// tab (DATA) or reinserted (CONFLICT), force-overwrite it. For
|
|
203
|
+
// NOTFOUND, CONSTRAINT, and FOREIGN_KEY the row is already gone or
|
|
204
|
+
// can't be replaced, so we skip.
|
|
205
|
+
if (eConflict === SqliteConstants.SQLITE_CHANGESET_DATA ||
|
|
206
|
+
eConflict === SqliteConstants.SQLITE_CHANGESET_CONFLICT) {
|
|
207
|
+
return SqliteConstants.SQLITE_CHANGESET_REPLACE;
|
|
208
|
+
}
|
|
209
|
+
return SqliteConstants.SQLITE_CHANGESET_OMIT;
|
|
210
|
+
});
|
|
178
211
|
// @ts-expect-error data should be garbage collected after use
|
|
179
212
|
// biome-ignore lint/style/noParameterAssign: ...
|
|
180
213
|
data = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-sqlite-db.js","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,KAAK,eAAe,MAAM,8CAA8C,CAAA;
|
|
1
|
+
{"version":3,"file":"make-sqlite-db.js","sourceRoot":"","sources":["../src/make-sqlite-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeFS.d.ts","sourceRoot":"","sources":["../../src/node/NodeFS.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,qBAAa,MAAO,SAAQ,SAAS;IACnC,OAAO,CAAC,WAAW,CAAgC;IAEnD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBACtB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"NodeFS.d.ts","sourceRoot":"","sources":["../../src/node/NodeFS.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,qBAAa,MAAO,SAAQ,SAAS;IACnC,OAAO,CAAC,WAAW,CAAgC;IAEnD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBACtB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM;IAM/D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKnC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,MAAM;IAoCvF,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAoB9E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAe/E,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAoB9B,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM;IAcpD,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAahD,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAc7C,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAWhD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,GAAG,MAAM;IAY1E,QAAQ,CAAC,QAAQ,EAAE,MAAM;CAG1B"}
|
package/dist/node/NodeFS.js
CHANGED
|
@@ -18,19 +18,19 @@ export class NodeFS extends FacadeVFS {
|
|
|
18
18
|
}
|
|
19
19
|
jOpen(zName, fileId, flags, pOutFlags) {
|
|
20
20
|
try {
|
|
21
|
-
const pathname = zName ? path.resolve(this.directory, zName) : Math.random().toString(36).slice(2);
|
|
21
|
+
const pathname = zName !== null && zName !== '' ? path.resolve(this.directory, zName) : Math.random().toString(36).slice(2);
|
|
22
22
|
const file = { pathname, flags, fileHandle: null };
|
|
23
23
|
this.mapIdToFile.set(fileId, file);
|
|
24
24
|
const create = !!(flags & VFS.SQLITE_OPEN_CREATE);
|
|
25
25
|
const readwrite = !!(flags & VFS.SQLITE_OPEN_READWRITE);
|
|
26
26
|
// Convert SQLite flags to Node.js flags
|
|
27
27
|
let fsFlags = 'r';
|
|
28
|
-
if (create && readwrite) {
|
|
28
|
+
if (create === true && readwrite === true) {
|
|
29
29
|
// Check if file exists first
|
|
30
30
|
const exists = fs.existsSync(pathname);
|
|
31
|
-
fsFlags = exists ? 'r+' : 'w+'; // Use r+ for existing files, w+ only for new files
|
|
31
|
+
fsFlags = exists === true ? 'r+' : 'w+'; // Use r+ for existing files, w+ only for new files
|
|
32
32
|
}
|
|
33
|
-
else if (readwrite) {
|
|
33
|
+
else if (readwrite === true) {
|
|
34
34
|
fsFlags = 'r+'; // Open file for reading and writing
|
|
35
35
|
}
|
|
36
36
|
try {
|
|
@@ -39,7 +39,7 @@ export class NodeFS extends FacadeVFS {
|
|
|
39
39
|
return VFS.SQLITE_OK;
|
|
40
40
|
}
|
|
41
41
|
catch (err) {
|
|
42
|
-
if (err.code === 'ENOENT' &&
|
|
42
|
+
if (err.code === 'ENOENT' && create == null) {
|
|
43
43
|
return VFS.SQLITE_CANTOPEN;
|
|
44
44
|
}
|
|
45
45
|
throw err;
|
|
@@ -53,7 +53,7 @@ export class NodeFS extends FacadeVFS {
|
|
|
53
53
|
jRead(fileId, pData, iOffset) {
|
|
54
54
|
try {
|
|
55
55
|
const file = this.mapIdToFile.get(fileId);
|
|
56
|
-
if (
|
|
56
|
+
if (file?.fileHandle == null)
|
|
57
57
|
return VFS.SQLITE_IOERR_READ;
|
|
58
58
|
// const view = new DataView(pData.buffer, pData.byteOffset, pData.length)
|
|
59
59
|
// const bytesRead = fs.readSync(file.fileHandle, view, 0, pData.length, iOffset)
|
|
@@ -72,7 +72,7 @@ export class NodeFS extends FacadeVFS {
|
|
|
72
72
|
jWrite(fileId, pData, iOffset) {
|
|
73
73
|
try {
|
|
74
74
|
const file = this.mapIdToFile.get(fileId);
|
|
75
|
-
if (
|
|
75
|
+
if (file?.fileHandle == null)
|
|
76
76
|
return VFS.SQLITE_IOERR_WRITE;
|
|
77
77
|
// const view = new DataView(pData.buffer, pData.byteOffset, pData.length)
|
|
78
78
|
// fs.writeSync(file.fileHandle, view, 0, pData.length, iOffset)
|
|
@@ -87,13 +87,13 @@ export class NodeFS extends FacadeVFS {
|
|
|
87
87
|
jClose(fileId) {
|
|
88
88
|
try {
|
|
89
89
|
const file = this.mapIdToFile.get(fileId);
|
|
90
|
-
if (
|
|
90
|
+
if (file == null)
|
|
91
91
|
return VFS.SQLITE_OK;
|
|
92
92
|
this.mapIdToFile.delete(fileId);
|
|
93
93
|
if (file.fileHandle !== null) {
|
|
94
94
|
fs.closeSync(file.fileHandle);
|
|
95
95
|
}
|
|
96
|
-
if (file.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {
|
|
96
|
+
if ((file.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) !== 0) {
|
|
97
97
|
fs.unlinkSync(file.pathname);
|
|
98
98
|
}
|
|
99
99
|
return VFS.SQLITE_OK;
|
|
@@ -106,7 +106,7 @@ export class NodeFS extends FacadeVFS {
|
|
|
106
106
|
jFileSize(fileId, pSize64) {
|
|
107
107
|
try {
|
|
108
108
|
const file = this.mapIdToFile.get(fileId);
|
|
109
|
-
if (
|
|
109
|
+
if (file?.fileHandle == null)
|
|
110
110
|
return VFS.SQLITE_IOERR_FSTAT;
|
|
111
111
|
const stats = fs.fstatSync(file.fileHandle);
|
|
112
112
|
pSize64.setBigInt64(0, BigInt(stats.size), true);
|
|
@@ -120,7 +120,7 @@ export class NodeFS extends FacadeVFS {
|
|
|
120
120
|
jTruncate(fileId, iSize) {
|
|
121
121
|
try {
|
|
122
122
|
const file = this.mapIdToFile.get(fileId);
|
|
123
|
-
if (
|
|
123
|
+
if (file?.fileHandle == null)
|
|
124
124
|
return VFS.SQLITE_IOERR_TRUNCATE;
|
|
125
125
|
fs.ftruncateSync(file.fileHandle, iSize);
|
|
126
126
|
return VFS.SQLITE_OK;
|
|
@@ -133,7 +133,7 @@ export class NodeFS extends FacadeVFS {
|
|
|
133
133
|
jSync(fileId, _flags) {
|
|
134
134
|
try {
|
|
135
135
|
const file = this.mapIdToFile.get(fileId);
|
|
136
|
-
if (
|
|
136
|
+
if (file?.fileHandle == null)
|
|
137
137
|
return VFS.SQLITE_OK;
|
|
138
138
|
// TODO do this out of band (for now we disable it to speed up the node vfs)
|
|
139
139
|
// fs.fsyncSync(file.fileHandle)
|
|
@@ -159,7 +159,7 @@ export class NodeFS extends FacadeVFS {
|
|
|
159
159
|
try {
|
|
160
160
|
const pathname = path.resolve(this.directory, zName);
|
|
161
161
|
const exists = fs.existsSync(pathname);
|
|
162
|
-
pResOut.setInt32(0, exists ? 1 : 0, true);
|
|
162
|
+
pResOut.setInt32(0, exists === true ? 1 : 0, true);
|
|
163
163
|
return VFS.SQLITE_OK;
|
|
164
164
|
}
|
|
165
165
|
catch (e) {
|
package/dist/node/NodeFS.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeFS.js","sourceRoot":"","sources":["../../src/node/NodeFS.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,KAAK,GAAG,MAAM,iCAAiC,CAAA;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAQ3C,MAAM,OAAO,MAAO,SAAQ,SAAS;IAC3B,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAA;IACnD,2EAA2E;IACnE,SAAS,GAAiB,IAAI,CAAA;IACrB,SAAS,CAAQ;IAClC,YAAY,IAAY,EAAE,OAA2B,EAAE,SAAiB;QACtE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAEpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"NodeFS.js","sourceRoot":"","sources":["../../src/node/NodeFS.ts"],"names":[],"mappings":"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"}
|
package/dist/node/mod.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAgB,MAAM,mBAAmB,CAAA;AACxG,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAI/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,MAAM,4BAA4B,GAAG;IACzC,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,sBAAsB,GAAG;IACnC,IAAI,EAAE,IAAI,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,eAAe,EAAE,eAAe,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvD,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,WAAW,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,4BAA4B,GAAG,sBAAsB,CAAA;AAExF,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,EAAE,WAAW,CAAA;IACjB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,GAAG,mBAAmB,CAAA;AAE/E,MAAM,MAAM,gBAAgB,GAAG,YAAY,CACzC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,EACvD,iBAAiB,EACjB,oBAAoB,CACrB,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,cAE7B;IACD,OAAO,EAAE,SAAS,CAAA;CACnB,KAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CAyC7D,CAAA"}
|
package/dist/node/mod.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import {
|
|
2
|
+
import { UnknownError } from '@livestore/common';
|
|
3
3
|
import { Effect, FileSystem } from '@livestore/utils/effect';
|
|
4
4
|
import { makeInMemoryDb } from "../in-memory-vfs.js";
|
|
5
5
|
import { makeSqliteDb } from "../make-sqlite-db.js";
|
|
@@ -56,5 +56,5 @@ const makeNodeFsDb = ({ sqlite3, fileName, directory, fs, }) => Effect.gen(funct
|
|
|
56
56
|
// NOTE SQLite will return a "disk I/O error" if the file path is too long.
|
|
57
57
|
const dbPointer = sqlite3.open_v2Sync(fileName, undefined, vfsName);
|
|
58
58
|
return { dbPointer, vfs: {} };
|
|
59
|
-
}).pipe(
|
|
59
|
+
}).pipe(UnknownError.mapToUnknownError);
|
|
60
60
|
//# sourceMappingURL=mod.js.map
|
package/dist/node/mod.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAA0D,
|
|
1
|
+
{"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/sqlite-wasm",
|
|
3
|
-
"version": "0.4.0
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"license": "Apache-2.0",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/livestorejs/livestore.git"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"package.json",
|
|
12
|
+
"src"
|
|
13
|
+
],
|
|
4
14
|
"type": "module",
|
|
15
|
+
"sideEffects": false,
|
|
5
16
|
"exports": {
|
|
6
17
|
".": {
|
|
7
18
|
"types": "./dist/index.d.ts",
|
|
@@ -28,28 +39,56 @@
|
|
|
28
39
|
"default": "./dist/browser/mod.js"
|
|
29
40
|
}
|
|
30
41
|
},
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
},
|
|
31
45
|
"dependencies": {
|
|
32
|
-
"@cloudflare/workers-types": "4.
|
|
33
|
-
"@livestore/common": "0.4.0
|
|
34
|
-
"@livestore/
|
|
35
|
-
"@livestore/
|
|
36
|
-
"@livestore/
|
|
46
|
+
"@cloudflare/workers-types": "4.20251118.0",
|
|
47
|
+
"@livestore/common": "^0.4.0",
|
|
48
|
+
"@livestore/utils": "^0.4.0",
|
|
49
|
+
"@livestore/common-cf": "^0.4.0",
|
|
50
|
+
"@livestore/wa-sqlite": "^0.4.0"
|
|
37
51
|
},
|
|
38
52
|
"devDependencies": {
|
|
39
53
|
"@types/chrome": "0.1.4",
|
|
40
|
-
"@types/node": "
|
|
41
|
-
"@types/wicg-file-system-access": "
|
|
54
|
+
"@types/node": "25.3.3",
|
|
55
|
+
"@types/wicg-file-system-access": "2023.10.6",
|
|
42
56
|
"vitest": "3.2.4",
|
|
43
|
-
"wrangler": "4.
|
|
57
|
+
"wrangler": "4.42.2"
|
|
44
58
|
},
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"
|
|
59
|
+
"peerDependencies": {
|
|
60
|
+
"@effect/ai": "^0.35.0",
|
|
61
|
+
"@effect/cli": "^0.75.1",
|
|
62
|
+
"@effect/cluster": "^0.58.2",
|
|
63
|
+
"@effect/experimental": "^0.60.0",
|
|
64
|
+
"@effect/opentelemetry": "^0.63.0",
|
|
65
|
+
"@effect/platform": "^0.96.1",
|
|
66
|
+
"@effect/platform-browser": "^0.76.0",
|
|
67
|
+
"@effect/platform-bun": "^0.89.0",
|
|
68
|
+
"@effect/platform-node": "^0.106.0",
|
|
69
|
+
"@effect/printer": "^0.49.0",
|
|
70
|
+
"@effect/printer-ansi": "^0.49.0",
|
|
71
|
+
"@effect/rpc": "^0.75.1",
|
|
72
|
+
"@effect/sql": "^0.51.1",
|
|
73
|
+
"@effect/typeclass": "^0.40.0",
|
|
74
|
+
"@effect/vitest": "^0.29.0",
|
|
75
|
+
"@opentelemetry/api": "^1.9.0",
|
|
76
|
+
"@opentelemetry/resources": "^2.2.0",
|
|
77
|
+
"@standard-schema/spec": "^1.1.0",
|
|
78
|
+
"effect": "^3.21.2"
|
|
79
|
+
},
|
|
80
|
+
"$genie": {
|
|
81
|
+
"source": "package.json.genie.ts",
|
|
82
|
+
"warning": "DO NOT EDIT - changes will be overwritten",
|
|
83
|
+
"workspaceClosureDirs": [
|
|
84
|
+
"packages/@livestore/common",
|
|
85
|
+
"packages/@livestore/common-cf",
|
|
86
|
+
"packages/@livestore/sqlite-wasm",
|
|
87
|
+
"packages/@livestore/utils",
|
|
88
|
+
"packages/@livestore/utils-dev",
|
|
89
|
+
"packages/@livestore/wa-sqlite",
|
|
90
|
+
"packages/@livestore/webmesh"
|
|
91
|
+
]
|
|
53
92
|
},
|
|
54
93
|
"scripts": {
|
|
55
94
|
"test": "vitest",
|
package/src/FacadeVFS.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
// Based on https://github.com/rhashimoto/wa-sqlite/blob/master/src/FacadeVFS.js
|
|
2
|
+
//
|
|
3
|
+
// This TypeScript version lives in @livestore/sqlite-wasm instead of @livestore/wa-sqlite because:
|
|
4
|
+
// - @livestore/wa-sqlite is a direct wrapper of upstream wa-sqlite (kept as JavaScript for easier upstream sync)
|
|
5
|
+
// - @livestore/sqlite-wasm is where we add TypeScript abstractions on top of wa-sqlite
|
|
6
|
+
|
|
2
7
|
/** biome-ignore-all lint/complexity/useLiteralKeys: not needed for this file */
|
|
3
8
|
/** biome-ignore-all lint/correctness/noUnusedFunctionParameters: not needed for this file */
|
|
4
9
|
/** biome-ignore-all lint/complexity/noUselessConstructor: keep constructor for compatibility */
|
|
@@ -13,9 +18,6 @@ export class FacadeVFS extends VFS.Base {
|
|
|
13
18
|
* @param {string} name
|
|
14
19
|
* @param {object} module
|
|
15
20
|
*/
|
|
16
|
-
constructor(name, module) {
|
|
17
|
-
super(name, module)
|
|
18
|
-
}
|
|
19
21
|
|
|
20
22
|
/**
|
|
21
23
|
* Override to indicate which methods are asynchronous.
|
|
@@ -424,17 +426,17 @@ export class FacadeVFS extends VFS.Base {
|
|
|
424
426
|
}
|
|
425
427
|
if (prop === getter) {
|
|
426
428
|
return (byteOffset, littleEndian) => {
|
|
427
|
-
if (
|
|
429
|
+
if (littleEndian === false) throw new Error('must be little endian')
|
|
428
430
|
return dataView[prop](byteOffset, littleEndian)
|
|
429
431
|
}
|
|
430
432
|
}
|
|
431
433
|
if (prop === setter) {
|
|
432
434
|
return (byteOffset, value, littleEndian) => {
|
|
433
|
-
if (
|
|
435
|
+
if (littleEndian === false) throw new Error('must be little endian')
|
|
434
436
|
return dataView[prop](byteOffset, value, littleEndian)
|
|
435
437
|
}
|
|
436
438
|
}
|
|
437
|
-
if (typeof prop === 'string' && /^(get)|(set)/.test(prop)) {
|
|
439
|
+
if (typeof prop === 'string' && /^(get)|(set)/.test(prop) === true) {
|
|
438
440
|
throw new Error('invalid type')
|
|
439
441
|
}
|
|
440
442
|
const result = dataView[prop]
|
|
@@ -462,19 +464,19 @@ export class FacadeVFS extends VFS.Base {
|
|
|
462
464
|
}
|
|
463
465
|
|
|
464
466
|
#decodeFilename(zName, flags) {
|
|
465
|
-
if (flags & VFS.SQLITE_OPEN_URI) {
|
|
467
|
+
if ((flags & VFS.SQLITE_OPEN_URI) !== 0) {
|
|
466
468
|
// The first null-terminated string is the URI path. Subsequent
|
|
467
469
|
// strings are query parameter keys and values.
|
|
468
470
|
// https://www.sqlite.org/c3ref/open.html#urifilenamesinsqlite3open
|
|
469
471
|
let pName = zName
|
|
470
472
|
let state = 1
|
|
471
473
|
const charCodes = []
|
|
472
|
-
while (state) {
|
|
474
|
+
while (state !== null) {
|
|
473
475
|
const charCode = this._module.HEAPU8[pName++]
|
|
474
|
-
if (charCode) {
|
|
476
|
+
if (charCode !== 0) {
|
|
475
477
|
charCodes.push(charCode)
|
|
476
478
|
} else {
|
|
477
|
-
if (
|
|
479
|
+
if (this._module.HEAPU8[pName] === 0) state = null
|
|
478
480
|
switch (state) {
|
|
479
481
|
case 1: {
|
|
480
482
|
// path
|
|
@@ -499,11 +501,9 @@ export class FacadeVFS extends VFS.Base {
|
|
|
499
501
|
}
|
|
500
502
|
return new TextDecoder().decode(new Uint8Array(charCodes))
|
|
501
503
|
}
|
|
502
|
-
return zName ? this._module.UTF8ToString(zName) : null
|
|
504
|
+
return zName !== 0 ? this._module.UTF8ToString(zName) : null
|
|
503
505
|
}
|
|
504
506
|
}
|
|
505
507
|
// Emscripten "legalizes" 64-bit integer arguments by passing them as
|
|
506
508
|
// two 32-bit signed integers.
|
|
507
|
-
|
|
508
|
-
return hi32 * 0x1_00_00_00_00 + lo32 + (lo32 < 0 ? 2 ** 32 : 0)
|
|
509
|
-
}
|
|
509
|
+
const delegalize = (lo32, hi32) => hi32 * 0x1_00_00_00_00 + lo32 + (lo32 < 0 ? 2 ** 32 : 0)
|
package/src/browser/mod.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { MakeSqliteDb, PersistenceInfo, SqliteDb } from '@livestore/common'
|
|
2
|
-
import { Effect, Hash } from '@livestore/utils/effect'
|
|
2
|
+
import { Effect, Hash, Runtime, type Scope } from '@livestore/utils/effect'
|
|
3
|
+
import type { Opfs } from '@livestore/utils/effect/browser'
|
|
3
4
|
import type { SQLiteAPI } from '@livestore/wa-sqlite'
|
|
4
5
|
import type { MemoryVFS } from '@livestore/wa-sqlite/src/examples/MemoryVFS.js'
|
|
5
6
|
|
|
@@ -10,6 +11,11 @@ import { makeOpfsDb } from './opfs/index.ts'
|
|
|
10
11
|
|
|
11
12
|
export * from './opfs/opfs-sah-pool.ts'
|
|
12
13
|
|
|
14
|
+
type WebDatabaseReq = {
|
|
15
|
+
dbPointer: number
|
|
16
|
+
persistenceInfo: PersistenceInfo
|
|
17
|
+
}
|
|
18
|
+
|
|
13
19
|
export type WebDatabaseMetadataInMemory = {
|
|
14
20
|
_tag: 'in-memory'
|
|
15
21
|
vfs: MemoryVFS
|
|
@@ -47,18 +53,29 @@ export type WebDatabaseInputOpfs = {
|
|
|
47
53
|
configureDb?: (db: SqliteDb) => void
|
|
48
54
|
}
|
|
49
55
|
|
|
50
|
-
|
|
56
|
+
type MakeInMemoryWebDatabase = MakeSqliteDb<WebDatabaseReq, WebDatabaseInputInMemory, WebDatabaseMetadataInMemory>
|
|
51
57
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
58
|
+
type MakeOpfsWebDatabase = MakeSqliteDb<
|
|
59
|
+
WebDatabaseReq,
|
|
60
|
+
WebDatabaseInputOpfs,
|
|
61
|
+
WebDatabaseMetadataOpfs,
|
|
62
|
+
Opfs.Opfs | Scope.Scope
|
|
56
63
|
>
|
|
57
64
|
|
|
58
|
-
export const sqliteDbFactory =
|
|
59
|
-
(
|
|
60
|
-
(input:
|
|
61
|
-
|
|
65
|
+
export const sqliteDbFactory = ({ sqlite3 }: { sqlite3: SQLiteAPI }) => {
|
|
66
|
+
function makeDb(input: WebDatabaseInputInMemory): ReturnType<MakeInMemoryWebDatabase>
|
|
67
|
+
function makeDb(input: WebDatabaseInputOpfs): ReturnType<MakeOpfsWebDatabase>
|
|
68
|
+
function makeDb(
|
|
69
|
+
input: WebDatabaseInputInMemory | WebDatabaseInputOpfs,
|
|
70
|
+
): ReturnType<
|
|
71
|
+
MakeSqliteDb<
|
|
72
|
+
WebDatabaseReq,
|
|
73
|
+
WebDatabaseInputInMemory | WebDatabaseInputOpfs,
|
|
74
|
+
WebDatabaseMetadata,
|
|
75
|
+
Opfs.Opfs | Scope.Scope
|
|
76
|
+
>
|
|
77
|
+
> {
|
|
78
|
+
return Effect.gen(function* () {
|
|
62
79
|
if (input._tag === 'in-memory') {
|
|
63
80
|
const { dbPointer, vfs } = makeInMemoryDb(sqlite3)
|
|
64
81
|
return makeSqliteDb<WebDatabaseMetadataInMemory>({
|
|
@@ -73,7 +90,7 @@ export const sqliteDbFactory =
|
|
|
73
90
|
fileName: ':memory:',
|
|
74
91
|
},
|
|
75
92
|
},
|
|
76
|
-
})
|
|
93
|
+
})
|
|
77
94
|
}
|
|
78
95
|
|
|
79
96
|
// TODO figure out the actual max length
|
|
@@ -94,19 +111,27 @@ export const sqliteDbFactory =
|
|
|
94
111
|
fileName: dbFilename,
|
|
95
112
|
})
|
|
96
113
|
|
|
114
|
+
const runtime = yield* Effect.runtime<Opfs.Opfs>()
|
|
115
|
+
|
|
97
116
|
return makeSqliteDb<WebDatabaseMetadataOpfs>({
|
|
98
117
|
sqlite3,
|
|
99
118
|
metadata: {
|
|
100
119
|
_tag: 'opfs',
|
|
101
120
|
vfs,
|
|
102
121
|
dbPointer,
|
|
103
|
-
deleteDb: () => vfs.resetAccessHandle(input.fileName),
|
|
122
|
+
deleteDb: () => vfs.resetAccessHandle(input.fileName).pipe(Runtime.runSync(runtime)),
|
|
104
123
|
configureDb: input.configureDb ?? (() => {}),
|
|
105
124
|
persistenceInfo: {
|
|
106
125
|
fileName: dbFilename,
|
|
107
126
|
opfsDirectory: input.opfsDirectory,
|
|
108
|
-
opfsFileName: vfs.getOpfsFileName(dbFilename),
|
|
127
|
+
opfsFileName: yield* vfs.getOpfsFileName(dbFilename),
|
|
109
128
|
},
|
|
110
129
|
},
|
|
111
130
|
})
|
|
112
131
|
})
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
return makeDb
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export type MakeWebSqliteDb = ReturnType<typeof sqliteDbFactory>
|