@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.
@@ -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;AAuBtB,iGAAiG;AACjG,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,eAAe,EAAE,SAAS,YAAY,CAAC,CAAC,CAAC,SAoC9E,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
- // Without OPFS sync access handles, or barred from OPFS as in Firefox's private windows, no wait helps
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;; attempt++) {
12
- try {
13
- return await openWasmDatabase(name);
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(start);
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,gBAAgB,EAAC,MAAM,WAAW,CAAA;AAG1C,uGAAuG;AACvG,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE,CACjC,OAAO,oBAAoB,KAAK,WAAW;IAC3C,wBAAwB,IAAI,oBAAoB,CAAC,SAAS;IAC1D,CAAC,CAAC,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,CAAC,CAAA;AAEpE,kEAAkE;AAClE,MAAM,IAAI,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAClC,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,OAAO,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,CAAA;YAEzC,MAAM,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,iGAAiG;AACjG,MAAM,CAAC,MAAM,WAAW,GAAG,CAA4B,MAAwB,EAAE,EAAE;IACjF,MAAM,KAAK,GAAG,CAAC,EAAC,EAAE,EAAE,IAAI,EAAiB,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,EAAE,mBAAmB,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAC1D,IAAI;KACL,CAAC,CAAA;IAEF,6EAA6E;IAC7E,IAAI,OAAsD,CAAA;IAE1D,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,EAAC,IAAI,EAA2C,EAAE,EAAE;QAC1E,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvC,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,EAAC,OAAO,EAAE,IAAI,EAAC,GAAG,MAAM,OAAO,CAAA;gBAErC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAC3B,OAAO,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC,CAAC,CAAA;oBAE9C,MAAM,OAAO,CAAA;oBAEb,2DAA2D;oBAC3D,MAAM,MAAM,GAAG,EAAC,IAAI,EAAE,OAAO,EAAU,CAAA;oBAEvC,IAAI,CAAC,WAAW,CAAC;wBACf,QAAQ,EAAE,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAC;wBAC1C,MAAM;qBACe,CAAC,CAAA;gBAC1B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;gBACjC,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAC,EAAuB,CAAC,CAAA;YACrF,CAAC;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC,CAAA"}
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;AAWD,kGAAkG;AAClG,eAAO,MAAM,gBAAgB,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,cAAc,CAgC3E,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
- db.exec("PRAGMA journal_mode = TRUNCATE; PRAGMA synchronous = NORMAL; PRAGMA temp_store = MEMORY");
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
- let db = connect();
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 pool.wipeFiles();
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.2",
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.2",
36
- "@welshman/util": "0.14.2"
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.2",
46
- "@welshman/util": "0.14.2",
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
  },