@welshman/store 0.14.2 → 0.14.3
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/dist/store/src/repository/adapters/sqlite/serve.d.ts.map +1 -1
- package/dist/store/src/repository/adapters/sqlite/serve.js +20 -15
- package/dist/store/src/repository/adapters/sqlite/serve.js.map +1 -1
- package/dist/store/src/repository/adapters/sqlite/wasm.d.ts +7 -0
- package/dist/store/src/repository/adapters/sqlite/wasm.d.ts.map +1 -1
- package/dist/store/src/repository/adapters/sqlite/wasm.js +77 -8
- package/dist/store/src/repository/adapters/sqlite/wasm.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/serve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAIhB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/serve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAIhB,MAAM,eAAe,CAAA;AAiBtB,iGAAiG;AACjG,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,eAAe,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,SAiD9E,CAAA"}
|
|
@@ -1,23 +1,16 @@
|
|
|
1
1
|
import { sleep } from "@welshman/lib";
|
|
2
2
|
import { SqliteEngine } from "./engine.js";
|
|
3
3
|
import { createSqliteHandler } from "./protocol.js";
|
|
4
|
-
import { openWasmDatabase } from "./wasm.js";
|
|
5
|
-
//
|
|
6
|
-
const canOpen = (error) => typeof FileSystemFileHandle !== "undefined" &&
|
|
7
|
-
"createSyncAccessHandle" in FileSystemFileHandle.prototype &&
|
|
8
|
-
!(error instanceof DOMException && error.name === "SecurityError");
|
|
9
|
-
// The tab that led before may not have let go of the database yet
|
|
4
|
+
import { isCorrupt, isPoolFree, openWasmDatabase } from "./wasm.js";
|
|
5
|
+
// The worker that led before may not have let go of the database yet
|
|
10
6
|
const open = async (name) => {
|
|
11
|
-
for (let attempt = 0
|
|
12
|
-
|
|
13
|
-
return
|
|
14
|
-
}
|
|
15
|
-
catch (e) {
|
|
16
|
-
if (attempt >= 10 || !canOpen(e))
|
|
17
|
-
throw e;
|
|
18
|
-
await sleep(100 * 2 ** Math.min(attempt, 5));
|
|
7
|
+
for (let attempt = 0; attempt <= 10; attempt++) {
|
|
8
|
+
if (await isPoolFree(name)) {
|
|
9
|
+
return openWasmDatabase(name);
|
|
19
10
|
}
|
|
11
|
+
await sleep(100 * 2 ** Math.min(attempt, 5));
|
|
20
12
|
}
|
|
13
|
+
throw new Error(`The sqlite database ${name} is still open in another worker`);
|
|
21
14
|
};
|
|
22
15
|
/** Serves `connectSqlite` from a dedicated worker, with `extend`'s methods over the database. */
|
|
23
16
|
export const serveSqlite = (extend) => {
|
|
@@ -25,11 +18,23 @@ export const serveSqlite = (extend) => {
|
|
|
25
18
|
respond: createSqliteHandler(new SqliteEngine(db), extend),
|
|
26
19
|
wipe,
|
|
27
20
|
});
|
|
21
|
+
// quick_check skips some of the image, so damage can first show when the schema is built
|
|
22
|
+
const startHealed = async (connection) => {
|
|
23
|
+
try {
|
|
24
|
+
return start(connection);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
if (isCorrupt(e)) {
|
|
28
|
+
return start({ db: await connection.wipe(), wipe: connection.wipe });
|
|
29
|
+
}
|
|
30
|
+
throw e;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
28
33
|
// A wipe replaces the file, so the engine and the handler over it go with it
|
|
29
34
|
let serving;
|
|
30
35
|
self.onmessage = async ({ data }) => {
|
|
31
36
|
if ("type" in data) {
|
|
32
|
-
serving = open(data.name).then(
|
|
37
|
+
serving = open(data.name).then(startHealed);
|
|
33
38
|
}
|
|
34
39
|
else if (serving) {
|
|
35
40
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/serve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,eAAe,CAAA;AACnC,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,eAAe,CAAA;AAQjD,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,13 @@ export type WasmConnection = {
|
|
|
7
7
|
/** Discard the file, and serve an empty one in its place. */
|
|
8
8
|
wipe: () => Promise<SqliteDatabase>;
|
|
9
9
|
};
|
|
10
|
+
/** Whether sqlite failed because the file is damaged, whichever extended code it gave. */
|
|
11
|
+
export declare const isCorrupt: (error: unknown) => boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Whether no other worker holds a file of `name`'s pool. sqlite-wasm opens them all at once, and
|
|
14
|
+
* when one is held it leaks the rest and deletes the pool on its way out, so they're tried singly.
|
|
15
|
+
*/
|
|
16
|
+
export declare const isPoolFree: (name: string) => Promise<boolean>;
|
|
10
17
|
/** Open `name` in OPFS through its own SAH pool, so tabs can lead different databases at once. */
|
|
11
18
|
export declare const openWasmDatabase: (name: string) => Promise<WasmConnection>;
|
|
12
19
|
//# sourceMappingURL=wasm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/wasm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,QAAQ,EAAoB,MAAM,yBAAyB,CAAA;AACxE,OAAO,KAAK,EAAW,cAAc,EAAC,MAAM,aAAa,CAAA;AAEzD,iFAAiF;AACjF,eAAO,MAAM,YAAY,GAAI,IAAI,QAAQ,KAAG,cAuD3C,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,cAAc,CAAA;IAClB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAA;CACpC,CAAA;
|
|
1
|
+
{"version":3,"file":"wasm.d.ts","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/wasm.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,QAAQ,EAAoB,MAAM,yBAAyB,CAAA;AACxE,OAAO,KAAK,EAAW,cAAc,EAAC,MAAM,aAAa,CAAA;AAEzD,iFAAiF;AACjF,eAAO,MAAM,YAAY,GAAI,IAAI,QAAQ,KAAG,cAuD3C,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,cAAc,CAAA;IAClB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAA;CACpC,CAAA;AAKD,0FAA0F;AAC1F,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,YAI2B,CAAA;AAyCnE;;;GAGG;AACH,eAAO,MAAM,UAAU,GAAU,MAAM,MAAM,qBAgB5C,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,gBAAgB,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,cAAc,CAuD3E,CAAA"}
|
|
@@ -50,6 +50,13 @@ export const wasmDatabase = (db) => {
|
|
|
50
50
|
},
|
|
51
51
|
};
|
|
52
52
|
};
|
|
53
|
+
const SQLITE_CORRUPT = 11;
|
|
54
|
+
const SQLITE_NOTADB = 26;
|
|
55
|
+
/** Whether sqlite failed because the file is damaged, whichever extended code it gave. */
|
|
56
|
+
export const isCorrupt = (error) => error instanceof Error &&
|
|
57
|
+
"resultCode" in error &&
|
|
58
|
+
typeof error.resultCode === "number" &&
|
|
59
|
+
[SQLITE_CORRUPT, SQLITE_NOTADB].includes(error.resultCode & 0xff);
|
|
53
60
|
// A file sqlite refuses to even read is as unusable as a malformed one
|
|
54
61
|
const isReadable = (db) => {
|
|
55
62
|
try {
|
|
@@ -59,27 +66,89 @@ const isReadable = (db) => {
|
|
|
59
66
|
return false;
|
|
60
67
|
}
|
|
61
68
|
};
|
|
69
|
+
const isBusy = (error) => error instanceof DOMException && error.name === "NoModificationAllowedError";
|
|
70
|
+
const isMissing = (error) => error instanceof DOMException && error.name === "NotFoundError";
|
|
71
|
+
const getPoolFiles = async (name) => {
|
|
72
|
+
const root = await navigator.storage.getDirectory();
|
|
73
|
+
try {
|
|
74
|
+
const pool = await root.getDirectoryHandle(`.welshman-${name}`);
|
|
75
|
+
const opaque = await pool.getDirectoryHandle(".opaque");
|
|
76
|
+
const files = [];
|
|
77
|
+
for await (const handle of opaque.values()) {
|
|
78
|
+
if (handle instanceof FileSystemFileHandle) {
|
|
79
|
+
files.push(handle);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return files;
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
if (isMissing(e)) {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
throw e;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Whether no other worker holds a file of `name`'s pool. sqlite-wasm opens them all at once, and
|
|
93
|
+
* when one is held it leaks the rest and deletes the pool on its way out, so they're tried singly.
|
|
94
|
+
*/
|
|
95
|
+
export const isPoolFree = async (name) => {
|
|
96
|
+
for (const file of await getPoolFiles(name)) {
|
|
97
|
+
try {
|
|
98
|
+
const handle = await file.createSyncAccessHandle();
|
|
99
|
+
handle.close();
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
if (isBusy(e)) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
throw e;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
};
|
|
62
110
|
/** Open `name` in OPFS through its own SAH pool, so tabs can lead different databases at once. */
|
|
63
111
|
export const openWasmDatabase = async (name) => {
|
|
64
112
|
const sqlite3 = await sqlite3InitModule();
|
|
65
113
|
const pool = await sqlite3.installOpfsSAHPoolVfs({ name: `welshman-${name}` });
|
|
114
|
+
// A database left open would keep its file through the wipe
|
|
66
115
|
const connect = () => {
|
|
67
116
|
const db = new pool.OpfsSAHPoolDb(`/${name}.sqlite3`);
|
|
68
|
-
|
|
117
|
+
try {
|
|
118
|
+
db.exec("PRAGMA journal_mode = TRUNCATE; PRAGMA synchronous = NORMAL; PRAGMA temp_store = MEMORY");
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
db.close();
|
|
122
|
+
throw e;
|
|
123
|
+
}
|
|
69
124
|
return db;
|
|
70
125
|
};
|
|
71
|
-
|
|
126
|
+
const connectReadable = () => {
|
|
127
|
+
try {
|
|
128
|
+
const db = connect();
|
|
129
|
+
if (isReadable(db)) {
|
|
130
|
+
return db;
|
|
131
|
+
}
|
|
132
|
+
db.close();
|
|
133
|
+
}
|
|
134
|
+
catch (e) {
|
|
135
|
+
if (!isCorrupt(e)) {
|
|
136
|
+
throw e;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
const reconnect = async () => {
|
|
141
|
+
await pool.wipeFiles();
|
|
142
|
+
return connect();
|
|
143
|
+
};
|
|
144
|
+
// A malformed image fails every read for as long as it's kept, and the cache rebuilds from relays
|
|
145
|
+
let db = connectReadable() ?? (await reconnect());
|
|
72
146
|
const wipe = async () => {
|
|
73
147
|
// Prepared statements belong to the file they were built against, so the wrapper goes too
|
|
74
148
|
db.close();
|
|
75
|
-
await
|
|
76
|
-
db = connect();
|
|
149
|
+
db = await reconnect();
|
|
77
150
|
return wasmDatabase(db);
|
|
78
151
|
};
|
|
79
|
-
// A malformed image fails every read for as long as it's kept, and the cache rebuilds from relays
|
|
80
|
-
if (!isReadable(db)) {
|
|
81
|
-
await wipe();
|
|
82
|
-
}
|
|
83
152
|
return { db: wasmDatabase(db), wipe };
|
|
84
153
|
};
|
|
85
154
|
//# sourceMappingURL=wasm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/wasm.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"wasm.js","sourceRoot":"","sources":["../../../../../../src/repository/adapters/sqlite/wasm.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/derive.ts","../src/index.ts","../src/misc.ts","../src/svelte.ts","../src/synced.ts","../src/throttle.ts","../src/tracker.ts","../src/repository/core.ts","../src/repository/adapters/memory.ts","../src/repository/adapters/sqlite/engine.ts","../src/repository/adapters/sqlite/leader.ts","../src/repository/adapters/sqlite/protocol.ts","../src/repository/adapters/sqlite/repository.ts","../src/repository/adapters/sqlite/serve.ts","../src/repository/adapters/sqlite/wasm.ts","../src/repository/adapters/sqlite/worker.ts"],"version":"5.8.3"}
|
|
1
|
+
{"root":["../src/derive.ts","../src/index.ts","../src/misc.ts","../src/svelte.ts","../src/synced.ts","../src/throttle.ts","../src/tracker.ts","../src/repository/core.ts","../src/repository/adapters/memory.ts","../src/repository/adapters/sqlite/engine.ts","../src/repository/adapters/sqlite/leader.ts","../src/repository/adapters/sqlite/opfs.d.ts","../src/repository/adapters/sqlite/protocol.ts","../src/repository/adapters/sqlite/repository.ts","../src/repository/adapters/sqlite/serve.ts","../src/repository/adapters/sqlite/wasm.ts","../src/repository/adapters/sqlite/worker.ts"],"version":"5.8.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@welshman/store",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.3",
|
|
4
4
|
"author": "hodlbod",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Event storage and reactive stores for welshman",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
],
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"@sqlite.org/sqlite-wasm": "^3.53.4-build1",
|
|
35
|
-
"@welshman/lib": "0.14.
|
|
36
|
-
"@welshman/util": "0.14.
|
|
35
|
+
"@welshman/lib": "0.14.3",
|
|
36
|
+
"@welshman/util": "0.14.3"
|
|
37
37
|
},
|
|
38
38
|
"peerDependenciesMeta": {
|
|
39
39
|
"@sqlite.org/sqlite-wasm": {
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@sqlite.org/sqlite-wasm": "3.53.4-build1",
|
|
45
|
-
"@welshman/lib": "0.14.
|
|
46
|
-
"@welshman/util": "0.14.
|
|
45
|
+
"@welshman/lib": "0.14.3",
|
|
46
|
+
"@welshman/util": "0.14.3",
|
|
47
47
|
"rimraf": "~6.0.0",
|
|
48
48
|
"typescript": "~5.8.0"
|
|
49
49
|
},
|