@livestore/sqlite-wasm 0.4.0-dev.9 → 0.5.0-dev.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 -4
- package/dist/FacadeVFS.d.ts.map +1 -1
- package/dist/FacadeVFS.js +13 -17
- 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 +48 -42
- package/dist/browser/mod.js.map +1 -1
- package/dist/browser/opfs/AccessHandlePoolVFS.d.ts +24 -18
- package/dist/browser/opfs/AccessHandlePoolVFS.d.ts.map +1 -1
- package/dist/browser/opfs/AccessHandlePoolVFS.js +178 -166
- 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 +3 -3
- 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 +283 -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 +6 -5
- 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 +4 -4
- 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 +4 -4
- 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 +4 -4
- 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 +195 -180
- 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 +18 -9
- package/dist/make-sqlite-db.js.map +1 -1
- package/dist/node/NodeFS.d.ts.map +1 -1
- package/dist/node/NodeFS.js +14 -14
- package/dist/node/NodeFS.js.map +1 -1
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +3 -3
- package/dist/node/mod.js.map +1 -1
- package/package.json +48 -18
- package/src/FacadeVFS.ts +13 -17
- package/src/browser/mod.ts +38 -13
- package/src/browser/opfs/AccessHandlePoolVFS.ts +374 -268
- package/src/browser/opfs/index.ts +5 -4
- package/src/browser/opfs/opfs-sah-pool.ts +4 -4
- package/src/cf/CloudflareDurableObjectVFS.ts +324 -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 +63 -37
- package/src/cf/test/async-storage/cloudflare-worker-vfs-advanced.test.ts +8 -5
- package/src/cf/test/async-storage/cloudflare-worker-vfs-core.test.ts +6 -4
- package/src/cf/test/async-storage/cloudflare-worker-vfs-integration.test.ts +6 -4
- package/src/cf/test/async-storage/cloudflare-worker-vfs-reliability.test.ts +6 -4
- package/src/cf/test/sql/cloudflare-sql-vfs-core.test.ts +232 -198
- 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 +21 -9
- package/src/node/NodeFS.ts +25 -24
- package/src/node/mod.ts +3 -3
- 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,CA4PrB,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) {
|
|
@@ -198,9 +195,21 @@ export const makeSqliteDb = ({ sqlite3, metadata, }) => {
|
|
|
198
195
|
},
|
|
199
196
|
apply: () => {
|
|
200
197
|
try {
|
|
201
|
-
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
|
+
});
|
|
202
211
|
// @ts-expect-error data should be garbage collected after use
|
|
203
|
-
//
|
|
212
|
+
// oxlint-disable-next-line eslint(no-param-reassign)
|
|
204
213
|
data = undefined;
|
|
205
214
|
}
|
|
206
215
|
catch (cause) {
|
|
@@ -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
|
@@ -5,7 +5,7 @@ import * as VFS from '@livestore/wa-sqlite/src/VFS.js';
|
|
|
5
5
|
import { FacadeVFS } from "../FacadeVFS.js";
|
|
6
6
|
export class NodeFS extends FacadeVFS {
|
|
7
7
|
mapIdToFile = new Map();
|
|
8
|
-
//
|
|
8
|
+
// For debugging.
|
|
9
9
|
lastError = null;
|
|
10
10
|
directory;
|
|
11
11
|
constructor(name, sqlite3, directory) {
|
|
@@ -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,
|
|
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,10 +1,10 @@
|
|
|
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";
|
|
6
6
|
import { NodeFS } from "./NodeFS.js";
|
|
7
|
-
export const sqliteDbFactory = ({ sqlite3, }) => Effect.
|
|
7
|
+
export const sqliteDbFactory = ({ sqlite3, }) => Effect.map(FileSystem.FileSystem, (fs) => (input) => Effect.gen(function* () {
|
|
8
8
|
if (input._tag === 'in-memory') {
|
|
9
9
|
const { dbPointer, vfs } = makeInMemoryDb(sqlite3);
|
|
10
10
|
return makeSqliteDb({
|
|
@@ -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.
|
|
3
|
+
"version": "0.5.0-dev.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,47 @@
|
|
|
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.
|
|
34
|
-
"@livestore/
|
|
35
|
-
"@livestore/utils": "0.
|
|
36
|
-
"@livestore/
|
|
46
|
+
"@cloudflare/workers-types": "4.20251118.0",
|
|
47
|
+
"@livestore/common": "^0.5.0-dev.0",
|
|
48
|
+
"@livestore/common-cf": "^0.5.0-dev.0",
|
|
49
|
+
"@livestore/utils": "^0.5.0-dev.0",
|
|
50
|
+
"@livestore/wa-sqlite": "^0.5.0-dev.0"
|
|
37
51
|
},
|
|
38
52
|
"devDependencies": {
|
|
39
53
|
"@types/chrome": "0.1.4",
|
|
40
|
-
"@types/node": "
|
|
41
|
-
"@types/wicg-file-system-access": "
|
|
42
|
-
"vitest": "
|
|
43
|
-
"wrangler": "4.
|
|
54
|
+
"@types/node": "25.3.3",
|
|
55
|
+
"@types/wicg-file-system-access": "2023.10.6",
|
|
56
|
+
"vitest": "4.1.9",
|
|
57
|
+
"wrangler": "4.42.2"
|
|
44
58
|
},
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"
|
|
59
|
+
"peerDependencies": {
|
|
60
|
+
"@effect/opentelemetry": "^4.0.0-rc.111",
|
|
61
|
+
"@effect/platform-browser": "^4.0.0-rc.111",
|
|
62
|
+
"@effect/platform-bun": "^4.0.0-rc.111",
|
|
63
|
+
"@effect/platform-node": "^4.0.0-rc.111",
|
|
64
|
+
"@effect/platform-node-shared": "^4.0.0-rc.111",
|
|
65
|
+
"@effect/vitest": "^4.0.0-rc.111",
|
|
66
|
+
"@opentelemetry/api": "^1.9.0",
|
|
67
|
+
"@opentelemetry/resources": "^2.2.0",
|
|
68
|
+
"@standard-schema/spec": "^1.1.0",
|
|
69
|
+
"effect": "^4.0.0-rc.111"
|
|
70
|
+
},
|
|
71
|
+
"$genie": {
|
|
72
|
+
"source": "package.json.genie.ts",
|
|
73
|
+
"warning": "DO NOT EDIT - changes will be overwritten",
|
|
74
|
+
"workspaceClosureDirs": [
|
|
75
|
+
"packages/@livestore/common",
|
|
76
|
+
"packages/@livestore/common-cf",
|
|
77
|
+
"packages/@livestore/sqlite-wasm",
|
|
78
|
+
"packages/@livestore/utils",
|
|
79
|
+
"packages/@livestore/utils-dev",
|
|
80
|
+
"packages/@livestore/wa-sqlite",
|
|
81
|
+
"packages/@livestore/webmesh"
|
|
82
|
+
]
|
|
53
83
|
},
|
|
54
84
|
"scripts": {
|
|
55
85
|
"test": "vitest",
|
package/src/FacadeVFS.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
// Based on https://github.com/rhashimoto/wa-sqlite/blob/master/src/FacadeVFS.js
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
|
5
6
|
|
|
6
7
|
// @ts-nocheck
|
|
7
8
|
import * as VFS from '@livestore/wa-sqlite/src/VFS.js'
|
|
@@ -13,9 +14,6 @@ export class FacadeVFS extends VFS.Base {
|
|
|
13
14
|
* @param {string} name
|
|
14
15
|
* @param {object} module
|
|
15
16
|
*/
|
|
16
|
-
constructor(name, module) {
|
|
17
|
-
super(name, module)
|
|
18
|
-
}
|
|
19
17
|
|
|
20
18
|
/**
|
|
21
19
|
* Override to indicate which methods are asynchronous.
|
|
@@ -424,17 +422,17 @@ export class FacadeVFS extends VFS.Base {
|
|
|
424
422
|
}
|
|
425
423
|
if (prop === getter) {
|
|
426
424
|
return (byteOffset, littleEndian) => {
|
|
427
|
-
if (
|
|
425
|
+
if (littleEndian === false) throw new Error('must be little endian')
|
|
428
426
|
return dataView[prop](byteOffset, littleEndian)
|
|
429
427
|
}
|
|
430
428
|
}
|
|
431
429
|
if (prop === setter) {
|
|
432
430
|
return (byteOffset, value, littleEndian) => {
|
|
433
|
-
if (
|
|
431
|
+
if (littleEndian === false) throw new Error('must be little endian')
|
|
434
432
|
return dataView[prop](byteOffset, value, littleEndian)
|
|
435
433
|
}
|
|
436
434
|
}
|
|
437
|
-
if (typeof prop === 'string' && /^(get)|(set)/.test(prop)) {
|
|
435
|
+
if (typeof prop === 'string' && /^(get)|(set)/.test(prop) === true) {
|
|
438
436
|
throw new Error('invalid type')
|
|
439
437
|
}
|
|
440
438
|
const result = dataView[prop]
|
|
@@ -462,19 +460,19 @@ export class FacadeVFS extends VFS.Base {
|
|
|
462
460
|
}
|
|
463
461
|
|
|
464
462
|
#decodeFilename(zName, flags) {
|
|
465
|
-
if (flags & VFS.SQLITE_OPEN_URI) {
|
|
463
|
+
if ((flags & VFS.SQLITE_OPEN_URI) !== 0) {
|
|
466
464
|
// The first null-terminated string is the URI path. Subsequent
|
|
467
465
|
// strings are query parameter keys and values.
|
|
468
466
|
// https://www.sqlite.org/c3ref/open.html#urifilenamesinsqlite3open
|
|
469
467
|
let pName = zName
|
|
470
468
|
let state = 1
|
|
471
469
|
const charCodes = []
|
|
472
|
-
while (state) {
|
|
470
|
+
while (state !== null) {
|
|
473
471
|
const charCode = this._module.HEAPU8[pName++]
|
|
474
|
-
if (charCode) {
|
|
472
|
+
if (charCode !== 0) {
|
|
475
473
|
charCodes.push(charCode)
|
|
476
474
|
} else {
|
|
477
|
-
if (
|
|
475
|
+
if (this._module.HEAPU8[pName] === 0) state = null
|
|
478
476
|
switch (state) {
|
|
479
477
|
case 1: {
|
|
480
478
|
// path
|
|
@@ -499,11 +497,9 @@ export class FacadeVFS extends VFS.Base {
|
|
|
499
497
|
}
|
|
500
498
|
return new TextDecoder().decode(new Uint8Array(charCodes))
|
|
501
499
|
}
|
|
502
|
-
return zName ? this._module.UTF8ToString(zName) : null
|
|
500
|
+
return zName !== 0 ? this._module.UTF8ToString(zName) : null
|
|
503
501
|
}
|
|
504
502
|
}
|
|
505
503
|
// Emscripten "legalizes" 64-bit integer arguments by passing them as
|
|
506
504
|
// two 32-bit signed integers.
|
|
507
|
-
|
|
508
|
-
return hi32 * 0x1_00_00_00_00 + lo32 + (lo32 < 0 ? 2 ** 32 : 0)
|
|
509
|
-
}
|
|
505
|
+
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, 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 services = yield* Effect.context<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(Effect.runSyncWith(services)),
|
|
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>
|