@effect/sql-sqlite-wasm 4.0.0-beta.70 → 4.0.0-beta.71

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":"OpfsWorker.d.ts","sourceRoot":"","sources":["../src/OpfsWorker.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAuB,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAM5E;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,OAAO,CAAC,CAAA;IACvE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED;;;;;GAKG;AACH,eAAO,MAAM,GAAG,GACd,SAAS,gBAAgB,KACxB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CA0EP,CAAA"}
1
+ {"version":3,"file":"OpfsWorker.d.ts","sourceRoot":"","sources":["../src/OpfsWorker.ts"],"names":[],"mappings":"AA+CA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAuB,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAM5E;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,OAAO,CAAC,CAAA;IACvE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED;;;;;GAKG;AACH,eAAO,MAAM,GAAG,GACd,SAAS,gBAAgB,KACxB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CA0EP,CAAA"}
@@ -1,22 +1,42 @@
1
1
  /**
2
- * Worker-side entry point for SQLite WASM databases stored in the browser
3
- * Origin Private File System.
2
+ * Worker-side entry point for SQLite WASM databases stored in the browser's
3
+ * Origin Private File System (OPFS).
4
4
  *
5
5
  * This module opens `@effect/wa-sqlite` with the OPFS access-handle VFS and
6
- * serves the message protocol used by `SqliteClient.make`. Run it from a
7
- * dedicated worker, or from a `SharedWorker` connection port, when an
8
- * application needs durable local SQLite storage for local-first data, offline
9
- * caches, client-side migrations, or import/export workflows that keep the
10
- * database off the main thread.
6
+ * serves the message protocol used by the worker-backed SQLite WASM client.
7
+ * Run it from a dedicated worker, or from a `SharedWorker` connection port, to
8
+ * keep durable local SQLite storage off the main thread while preserving the
9
+ * database in OPFS.
11
10
  *
12
- * The worker owns the SQLite connection for the lifetime of `run`: it posts a
13
- * `ready` message after opening the database, responds to query, import,
14
- * export, and update-hook messages, and releases the database when the client
15
- * sends `close` or the surrounding scope is interrupted. Because OPFS support
16
- * depends on the browser and origin, applications should start this worker only
17
- * in supported secure contexts, close unused ports so access handles are
18
- * released, and coordinate multiple tabs or workers before opening or migrating
19
- * the same OPFS database.
11
+ * **Mental model**
12
+ *
13
+ * - {@link run} owns one SQLite connection for one OPFS database name.
14
+ * - The worker posts `ready` after opening the database and then handles the
15
+ * client protocol for SQL statements, import, export, update hooks, and
16
+ * close.
17
+ * - The port in {@link OpfsWorkerConfig} is the only communication channel
18
+ * between the client and the worker loop.
19
+ * - Closing the port, sending `close`, or interrupting the surrounding scope
20
+ * releases the SQLite database handle.
21
+ *
22
+ * **Common tasks**
23
+ *
24
+ * Use this module for local-first browser data, offline caches,
25
+ * client-side migrations, and import/export workflows that need OPFS
26
+ * durability. Start {@link run} in the worker script, then connect the
27
+ * application through the worker-backed `SqliteClient` constructor.
28
+ *
29
+ * **Gotchas**
30
+ *
31
+ * OPFS requires browser support and a secure origin. Coordinate multiple tabs
32
+ * or workers before opening or migrating the same database, because this module
33
+ * owns a single connection and does not provide cross-tab locking. Close unused
34
+ * ports so access handles are released promptly.
35
+ *
36
+ * **See also**
37
+ *
38
+ * - {@link OpfsWorkerConfig} for the required worker port and database name.
39
+ * - {@link run} for starting the worker message loop.
20
40
  *
21
41
  * @since 4.0.0
22
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OpfsWorker.js","names":["WaSqlite","SQLiteESMFactory","AccessHandlePoolVFS","Effect","classifySqliteError","SqlError","classifyError","cause","message","operation","run","options","gen","factory","promise","sqlite3","Factory","vfs","create","vfs_register","db","acquireRelease","try","open_v2","dbName","undefined","catch","reason","sync","close","callback","resume","onMessage","event","messageId","data","port","void","id","deserialize","length","postMessage","serialize","buffer","update_hook","_op","_db","table","rowid","Number","sql","params","results","columns","stmt","statements","bind_collection","step","SQLITE_ROW","column_names","row","push","e","String","addEventListener","removeEventListener","pipe","scoped"],"sources":["../src/OpfsWorker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OpfsWorker.js","names":["WaSqlite","SQLiteESMFactory","AccessHandlePoolVFS","Effect","classifySqliteError","SqlError","classifyError","cause","message","operation","run","options","gen","factory","promise","sqlite3","Factory","vfs","create","vfs_register","db","acquireRelease","try","open_v2","dbName","undefined","catch","reason","sync","close","callback","resume","onMessage","event","messageId","data","port","void","id","deserialize","length","postMessage","serialize","buffer","update_hook","_op","_db","table","rowid","Number","sql","params","results","columns","stmt","statements","bind_collection","step","SQLITE_ROW","column_names","row","push","e","String","addEventListener","removeEventListener","pipe","scoped"],"sources":["../src/OpfsWorker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/sql-sqlite-wasm",
3
- "version": "4.0.0-beta.70",
3
+ "version": "4.0.0-beta.71",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "A SQLite toolkit for Effect",
@@ -44,11 +44,11 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@effect/wa-sqlite": "^0.2.1",
47
- "effect": "^4.0.0-beta.70"
47
+ "effect": "^4.0.0-beta.71"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "@effect/wa-sqlite": "^0.1.2",
51
- "effect": "^4.0.0-beta.70"
51
+ "effect": "^4.0.0-beta.71"
52
52
  },
53
53
  "scripts": {
54
54
  "codegen": "effect-utils codegen",
package/src/OpfsWorker.ts CHANGED
@@ -1,22 +1,42 @@
1
1
  /**
2
- * Worker-side entry point for SQLite WASM databases stored in the browser
3
- * Origin Private File System.
2
+ * Worker-side entry point for SQLite WASM databases stored in the browser's
3
+ * Origin Private File System (OPFS).
4
4
  *
5
5
  * This module opens `@effect/wa-sqlite` with the OPFS access-handle VFS and
6
- * serves the message protocol used by `SqliteClient.make`. Run it from a
7
- * dedicated worker, or from a `SharedWorker` connection port, when an
8
- * application needs durable local SQLite storage for local-first data, offline
9
- * caches, client-side migrations, or import/export workflows that keep the
10
- * database off the main thread.
6
+ * serves the message protocol used by the worker-backed SQLite WASM client.
7
+ * Run it from a dedicated worker, or from a `SharedWorker` connection port, to
8
+ * keep durable local SQLite storage off the main thread while preserving the
9
+ * database in OPFS.
11
10
  *
12
- * The worker owns the SQLite connection for the lifetime of `run`: it posts a
13
- * `ready` message after opening the database, responds to query, import,
14
- * export, and update-hook messages, and releases the database when the client
15
- * sends `close` or the surrounding scope is interrupted. Because OPFS support
16
- * depends on the browser and origin, applications should start this worker only
17
- * in supported secure contexts, close unused ports so access handles are
18
- * released, and coordinate multiple tabs or workers before opening or migrating
19
- * the same OPFS database.
11
+ * **Mental model**
12
+ *
13
+ * - {@link run} owns one SQLite connection for one OPFS database name.
14
+ * - The worker posts `ready` after opening the database and then handles the
15
+ * client protocol for SQL statements, import, export, update hooks, and
16
+ * close.
17
+ * - The port in {@link OpfsWorkerConfig} is the only communication channel
18
+ * between the client and the worker loop.
19
+ * - Closing the port, sending `close`, or interrupting the surrounding scope
20
+ * releases the SQLite database handle.
21
+ *
22
+ * **Common tasks**
23
+ *
24
+ * Use this module for local-first browser data, offline caches,
25
+ * client-side migrations, and import/export workflows that need OPFS
26
+ * durability. Start {@link run} in the worker script, then connect the
27
+ * application through the worker-backed `SqliteClient` constructor.
28
+ *
29
+ * **Gotchas**
30
+ *
31
+ * OPFS requires browser support and a secure origin. Coordinate multiple tabs
32
+ * or workers before opening or migrating the same database, because this module
33
+ * owns a single connection and does not provide cross-tab locking. Close unused
34
+ * ports so access handles are released promptly.
35
+ *
36
+ * **See also**
37
+ *
38
+ * - {@link OpfsWorkerConfig} for the required worker port and database name.
39
+ * - {@link run} for starting the worker message loop.
20
40
  *
21
41
  * @since 4.0.0
22
42
  */