@effect/sql-sqlite-wasm 4.0.0-beta.9 → 4.0.0-beta.90

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,16 +1,20 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import { SqlError } from "effect/unstable/sql/SqlError";
3
3
  /**
4
+ * Configuration for the SQLite OPFS worker, including the message port used for the client protocol and the OPFS database name to open.
5
+ *
4
6
  * @category models
5
- * @since 1.0.0
7
+ * @since 4.0.0
6
8
  */
7
9
  export interface OpfsWorkerConfig {
8
10
  readonly port: EventTarget & Pick<MessagePort, "postMessage" | "close">;
9
11
  readonly dbName: string;
10
12
  }
11
13
  /**
12
- * @category constructor
13
- * @since 1.0.0
14
+ * Runs the SQLite OPFS worker loop, opening the configured database, posting a ready message, handling query/import/export/update-hook messages, and closing when a close message is received.
15
+ *
16
+ * @category constructors
17
+ * @since 4.0.0
14
18
  */
15
19
  export declare const run: (options: OpfsWorkerConfig) => Effect.Effect<void, SqlError>;
16
20
  //# sourceMappingURL=OpfsWorker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpfsWorker.d.ts","sourceRoot":"","sources":["../src/OpfsWorker.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAGvD;;;GAGG;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;;;GAGG;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":"AAiBA,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,5 +1,14 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Runs the worker side of the browser SQLite WASM client that stores data in
3
+ * OPFS.
4
+ *
5
+ * This module opens `@effect/wa-sqlite` with the OPFS access-handle VFS, then
6
+ * listens on a `MessagePort`-compatible port for the protocol used by
7
+ * `SqliteClient`. It sends a ready message, executes SQL messages, imports and
8
+ * exports database bytes, forwards update-hook notifications, and closes when
9
+ * requested. It is meant to run in a dedicated worker or a `SharedWorker`.
10
+ *
11
+ * @since 4.0.0
3
12
  */
4
13
  /// <reference lib="webworker" />
5
14
  // oxlint-disable-next-line effect/no-import-from-barrel-package
@@ -7,10 +16,16 @@ import * as WaSqlite from "@effect/wa-sqlite";
7
16
  import SQLiteESMFactory from "@effect/wa-sqlite/dist/wa-sqlite.mjs";
8
17
  import { AccessHandlePoolVFS } from "@effect/wa-sqlite/src/examples/AccessHandlePoolVFS.js";
9
18
  import * as Effect from "effect/Effect";
10
- import { SqlError } from "effect/unstable/sql/SqlError";
19
+ import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError";
20
+ const classifyError = (cause, message, operation) => classifySqliteError(cause, {
21
+ message,
22
+ operation
23
+ });
11
24
  /**
12
- * @category constructor
13
- * @since 1.0.0
25
+ * Runs the SQLite OPFS worker loop, opening the configured database, posting a ready message, handling query/import/export/update-hook messages, and closing when a close message is received.
26
+ *
27
+ * @category constructors
28
+ * @since 4.0.0
14
29
  */
15
30
  export const run = options => Effect.gen(function* () {
16
31
  const factory = yield* Effect.promise(() => SQLiteESMFactory());
@@ -20,8 +35,7 @@ export const run = options => Effect.gen(function* () {
20
35
  const db = yield* Effect.acquireRelease(Effect.try({
21
36
  try: () => sqlite3.open_v2(options.dbName, undefined, "opfs"),
22
37
  catch: cause => new SqlError({
23
- cause,
24
- message: "Failed to open database"
38
+ reason: classifyError(cause, "Failed to open database", "openDatabase")
25
39
  })
26
40
  }), db => Effect.sync(() => sqlite3.close(db)));
27
41
  return yield* Effect.callback(resume => {
@@ -1 +1 @@
1
- {"version":3,"file":"OpfsWorker.js","names":["WaSqlite","SQLiteESMFactory","AccessHandlePoolVFS","Effect","SqlError","run","options","gen","factory","promise","sqlite3","Factory","vfs","create","vfs_register","db","acquireRelease","try","open_v2","dbName","undefined","catch","cause","message","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":[]}
@@ -1,24 +1,30 @@
1
1
  import * as Config from "effect/Config";
2
+ import * as Context from "effect/Context";
2
3
  import * as Effect from "effect/Effect";
3
4
  import * as Layer from "effect/Layer";
4
5
  import * as Scope from "effect/Scope";
5
- import * as ServiceMap from "effect/ServiceMap";
6
6
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
7
7
  import * as Client from "effect/unstable/sql/SqlClient";
8
8
  import { SqlError } from "effect/unstable/sql/SqlError";
9
9
  /**
10
- * @category type ids
11
- * @since 1.0.0
10
+ * Runtime identifier attached to SQLite WASM client values.
11
+ *
12
+ * @category type IDs
13
+ * @since 4.0.0
12
14
  */
13
15
  export declare const TypeId: TypeId;
14
16
  /**
15
- * @category type ids
16
- * @since 1.0.0
17
+ * Type-level identifier for SQLite WASM client values.
18
+ *
19
+ * @category type IDs
20
+ * @since 4.0.0
17
21
  */
18
22
  export type TypeId = "~@effect/sql-sqlite-wasm/SqliteClient";
19
23
  /**
24
+ * SQLite WASM client service interface, extending `SqlClient` with database `export` and `import` operations and marking `updateValues` as unsupported for SQLite.
25
+ *
20
26
  * @category models
21
- * @since 1.0.0
27
+ * @since 4.0.0
22
28
  */
23
29
  export interface SqliteClient extends Client.SqlClient {
24
30
  readonly [TypeId]: TypeId;
@@ -29,13 +35,17 @@ export interface SqliteClient extends Client.SqlClient {
29
35
  readonly updateValues: never;
30
36
  }
31
37
  /**
32
- * @category tags
33
- * @since 1.0.0
38
+ * Service tag for the SQLite WASM client.
39
+ *
40
+ * @category services
41
+ * @since 4.0.0
34
42
  */
35
- export declare const SqliteClient: ServiceMap.Service<SqliteClient, SqliteClient>;
43
+ export declare const SqliteClient: Context.Service<SqliteClient, SqliteClient>;
36
44
  /**
45
+ * Configuration for an in-memory SQLite WASM client, including optional reactivity hooks, span attributes, and query/result name transforms.
46
+ *
37
47
  * @category models
38
- * @since 1.0.0
48
+ * @since 4.0.0
39
49
  */
40
50
  export interface SqliteClientMemoryConfig {
41
51
  readonly installReactivityHooks?: boolean;
@@ -44,8 +54,10 @@ export interface SqliteClientMemoryConfig {
44
54
  readonly transformQueryNames?: (str: string) => string;
45
55
  }
46
56
  /**
57
+ * Configuration for a worker-backed SQLite WASM client, including the scoped worker or message port, optional reactivity hooks, span attributes, and query/result name transforms.
58
+ *
47
59
  * @category models
48
- * @since 1.0.0
60
+ * @since 4.0.0
49
61
  */
50
62
  export interface SqliteClientConfig {
51
63
  readonly worker: Effect.Effect<Worker | SharedWorker | MessagePort, never, Scope.Scope>;
@@ -55,43 +67,59 @@ export interface SqliteClientConfig {
55
67
  readonly transformQueryNames?: (str: string) => string;
56
68
  }
57
69
  /**
58
- * @category constructor
59
- * @since 1.0.0
70
+ * Creates a scoped in-memory SQLite WASM client using the memory VFS, serializing access through a semaphore and exposing database `export` and `import` operations.
71
+ *
72
+ * @category constructors
73
+ * @since 4.0.0
60
74
  */
61
75
  export declare const makeMemory: (options: SqliteClientMemoryConfig) => Effect.Effect<SqliteClient, SqlError, Scope.Scope | Reactivity.Reactivity>;
62
76
  /**
63
- * @category constructor
64
- * @since 1.0.0
77
+ * Creates a scoped worker-backed SQLite WASM client, communicating with the configured worker or message port, restarting the scoped connection on worker errors, and exposing database `export` and `import` operations.
78
+ *
79
+ * @category constructors
80
+ * @since 4.0.0
65
81
  */
66
82
  export declare const make: (options: SqliteClientConfig) => Effect.Effect<SqliteClient, SqlError, Scope.Scope | Reactivity.Reactivity>;
67
83
  /**
68
- * @category tranferables
69
- * @since 1.0.0
84
+ * Fiber reference that stores transferables to include with worker-backed SQLite WASM query messages.
85
+ *
86
+ * @category transferables
87
+ * @since 4.0.0
70
88
  */
71
- export declare const Transferables: ServiceMap.Reference<readonly Transferable[]>;
89
+ export declare const Transferables: Context.Reference<readonly Transferable[]>;
72
90
  /**
73
- * @category tranferables
74
- * @since 1.0.0
91
+ * Runs an effect with the supplied transferables attached to worker-backed SQLite WASM query messages.
92
+ *
93
+ * @category transferables
94
+ * @since 4.0.0
75
95
  */
76
96
  export declare const withTransferables: (transferables: ReadonlyArray<Transferable>) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
77
97
  /**
98
+ * Builds a layer from an Effect `Config` value, providing both the in-memory SQLite WASM `SqliteClient` service and the generic `SqlClient` service.
99
+ *
78
100
  * @category layers
79
- * @since 1.0.0
101
+ * @since 4.0.0
80
102
  */
81
103
  export declare const layerMemoryConfig: (config: Config.Wrap<SqliteClientMemoryConfig>) => Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError | SqlError>;
82
104
  /**
105
+ * Builds a layer from an in-memory SQLite WASM client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
106
+ *
83
107
  * @category layers
84
- * @since 1.0.0
108
+ * @since 4.0.0
85
109
  */
86
110
  export declare const layerMemory: (config: SqliteClientMemoryConfig) => Layer.Layer<SqliteClient | Client.SqlClient, SqlError>;
87
111
  /**
112
+ * Builds a layer from a worker-backed SQLite WASM client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
113
+ *
88
114
  * @category layers
89
- * @since 1.0.0
115
+ * @since 4.0.0
90
116
  */
91
117
  export declare const layer: (config: SqliteClientConfig) => Layer.Layer<SqliteClient | Client.SqlClient, SqlError>;
92
118
  /**
119
+ * Builds a layer from an Effect `Config` value, providing both the worker-backed SQLite WASM `SqliteClient` service and the generic `SqlClient` service.
120
+ *
93
121
  * @category layers
94
- * @since 1.0.0
122
+ * @since 4.0.0
95
123
  */
96
124
  export declare const layerConfig: (config: Config.Wrap<SqliteClientConfig>) => Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError | SqlError>;
97
125
  //# sourceMappingURL=SqliteClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,KAAK,UAAU,MAAM,uCAAuC,CAAA;AACnE,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAEvD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAMvD;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAAgD,CAAA;AAErE;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,uCAAuC,CAAA;AAE5D;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,SAAS;IACpD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAA;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACpD,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IAEpE,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,gDAA2E,CAAA;AAEpG;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACvD;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,GAAG,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IACvF,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACvD;AAiBD;;;GAGG;AACH,eAAO,MAAM,UAAU,GACrB,SAAS,wBAAwB,KAChC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAyJxE,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,IAAI,GACf,SAAS,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,UAAU,CAAC,UAAU,CAkJxE,CAAA;AAYJ;;;GAGG;AACH,eAAO,MAAM,aAAa,+CAGzB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC3B,eAAe,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CACnD,CAAA;AAE/D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAC5C,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,GAAG,QAAQ,CAUpC,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,wBAAwB,KAC/B,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,CAMf,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,KAAK,GAChB,QAAQ,kBAAkB,KACzB,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,CAMf,CAAA;AAEzC;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KACtC,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,WAAW,GAAG,QAAQ,CAUpC,CAAA"}
1
+ {"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,23 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Connects Effect SQL to SQLite compiled to WebAssembly with
3
+ * `@effect/wa-sqlite`.
4
+ *
5
+ * This module can create an in-memory SQLite database in the current runtime or
6
+ * connect to a worker-backed database, such as the OPFS worker from
7
+ * `OpfsWorker`. Both clients are exposed as `SqliteClient` and the generic
8
+ * Effect SQL client, serialize access, support database import and export, and
9
+ * can install reactivity hooks from SQLite update notifications. In-memory
10
+ * clients can stream query rows; worker-backed clients cannot. `updateValues`
11
+ * is not supported by this driver.
12
+ *
13
+ * @since 4.0.0
3
14
  */
4
15
  // oxlint-disable-next-line effect/no-import-from-barrel-package
5
16
  import * as WaSqlite from "@effect/wa-sqlite";
6
17
  import SQLiteESMFactory from "@effect/wa-sqlite/dist/wa-sqlite.mjs";
7
18
  import { MemoryVFS } from "@effect/wa-sqlite/src/examples/MemoryVFS.js";
8
19
  import * as Config from "effect/Config";
20
+ import * as Context from "effect/Context";
9
21
  import * as Deferred from "effect/Deferred";
10
22
  import * as Effect from "effect/Effect";
11
23
  import * as Exit from "effect/Exit";
@@ -15,29 +27,38 @@ import * as Layer from "effect/Layer";
15
27
  import * as Scope from "effect/Scope";
16
28
  import * as ScopedRef from "effect/ScopedRef";
17
29
  import * as Semaphore from "effect/Semaphore";
18
- import * as ServiceMap from "effect/ServiceMap";
19
30
  import * as Stream from "effect/Stream";
20
31
  import * as Reactivity from "effect/unstable/reactivity/Reactivity";
21
32
  import * as Client from "effect/unstable/sql/SqlClient";
22
- import { SqlError } from "effect/unstable/sql/SqlError";
33
+ import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError";
23
34
  import * as Statement from "effect/unstable/sql/Statement";
24
35
  const ATTR_DB_SYSTEM_NAME = "db.system.name";
36
+ const classifyError = (cause, message, operation) => classifySqliteError(cause, {
37
+ message,
38
+ operation
39
+ });
25
40
  /**
26
- * @category type ids
27
- * @since 1.0.0
41
+ * Runtime identifier attached to SQLite WASM client values.
42
+ *
43
+ * @category type IDs
44
+ * @since 4.0.0
28
45
  */
29
46
  export const TypeId = "~@effect/sql-sqlite-wasm/SqliteClient";
30
47
  /**
31
- * @category tags
32
- * @since 1.0.0
48
+ * Service tag for the SQLite WASM client.
49
+ *
50
+ * @category services
51
+ * @since 4.0.0
33
52
  */
34
- export const SqliteClient = /*#__PURE__*/ServiceMap.Service("@effect/sql-sqlite-wasm/SqliteClient");
53
+ export const SqliteClient = /*#__PURE__*/Context.Service("@effect/sql-sqlite-wasm/SqliteClient");
35
54
  const initModule = /*#__PURE__*/Effect.runSync(/*#__PURE__*/Effect.cached(/*#__PURE__*/Effect.promise(() => SQLiteESMFactory())));
36
55
  const initEffect = /*#__PURE__*/Effect.runSync(/*#__PURE__*/Effect.cached(/*#__PURE__*/initModule.pipe(/*#__PURE__*/Effect.map(module => WaSqlite.Factory(module)))));
37
56
  const registered = /*#__PURE__*/new Set();
38
57
  /**
39
- * @category constructor
40
- * @since 1.0.0
58
+ * Creates a scoped in-memory SQLite WASM client using the memory VFS, serializing access through a semaphore and exposing database `export` and `import` operations.
59
+ *
60
+ * @category constructors
61
+ * @since 4.0.0
41
62
  */
42
63
  export const makeMemory = options => Effect.gen(function* () {
43
64
  const reactivity = yield* Reactivity.Reactivity;
@@ -55,8 +76,7 @@ export const makeMemory = options => Effect.gen(function* () {
55
76
  const db = yield* Effect.acquireRelease(Effect.try({
56
77
  try: () => sqlite3.open_v2(":memory:", undefined, "memory-vfs"),
57
78
  catch: cause => new SqlError({
58
- cause,
59
- message: "Failed to open database"
79
+ reason: classifyError(cause, "Failed to open database", "openDatabase")
60
80
  })
61
81
  }), db => Effect.sync(() => sqlite3.close(db)));
62
82
  if (options.installReactivityHooks) {
@@ -91,8 +111,7 @@ export const makeMemory = options => Effect.gen(function* () {
91
111
  return results;
92
112
  },
93
113
  catch: cause => new SqlError({
94
- cause,
95
- message: "Failed to execute statement"
114
+ reason: classifyError(cause, "Failed to execute statement", "execute")
96
115
  })
97
116
  });
98
117
  return identity({
@@ -105,6 +124,9 @@ export const makeMemory = options => Effect.gen(function* () {
105
124
  executeValues(sql, params) {
106
125
  return run(sql, params, "array");
107
126
  },
127
+ executeValuesUnprepared(sql, params) {
128
+ return run(sql, params, "array");
129
+ },
108
130
  executeUnprepared(sql, params, transformRows) {
109
131
  return this.execute(sql, params, transformRows);
110
132
  },
@@ -125,23 +147,20 @@ export const makeMemory = options => Effect.gen(function* () {
125
147
  }
126
148
  }
127
149
  return Stream.suspend(() => Stream.fromIteratorSucceed(stream()[Symbol.iterator]())).pipe(transformRows ? Stream.mapArray(chunk => transformRows(chunk)) : identity, Stream.mapError(cause => new SqlError({
128
- cause,
129
- message: "Failed to execute statement"
150
+ reason: classifyError(cause, "Failed to execute statement", "stream")
130
151
  })));
131
152
  },
132
153
  export: Effect.try({
133
154
  try: () => sqlite3.serialize(db, "main"),
134
155
  catch: cause => new SqlError({
135
- cause,
136
- message: "Failed to export database"
156
+ reason: classifyError(cause, "Failed to export database", "export")
137
157
  })
138
158
  }),
139
159
  import(data) {
140
160
  return Effect.try({
141
161
  try: () => sqlite3.deserialize(db, "main", data, data.length, data.length, 1 | 2),
142
162
  catch: cause => new SqlError({
143
- cause,
144
- message: "Failed to import database"
163
+ reason: classifyError(cause, "Failed to import database", "import")
145
164
  })
146
165
  });
147
166
  }
@@ -152,7 +171,7 @@ export const makeMemory = options => Effect.gen(function* () {
152
171
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
153
172
  const transactionAcquirer = Effect.uninterruptibleMask(restore => {
154
173
  const fiber = Fiber.getCurrent();
155
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);
174
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope);
156
175
  return Effect.as(Effect.tap(restore(semaphore.take(1)), () => Scope.addFinalizer(scope, semaphore.release(1))), connection);
157
176
  });
158
177
  return Object.assign(yield* Client.make({
@@ -171,8 +190,10 @@ export const makeMemory = options => Effect.gen(function* () {
171
190
  });
172
191
  });
173
192
  /**
174
- * @category constructor
175
- * @since 1.0.0
193
+ * Creates a scoped worker-backed SQLite WASM client, communicating with the configured worker or message port, restarting the scoped connection on worker errors, and exposing database `export` and `import` operations.
194
+ *
195
+ * @category constructors
196
+ * @since 4.0.0
176
197
  */
177
198
  export const make = options => Effect.gen(function* () {
178
199
  const reactivity = yield* Reactivity.Reactivity;
@@ -203,8 +224,7 @@ export const make = options => Effect.gen(function* () {
203
224
  pending.delete(id);
204
225
  if (error) {
205
226
  resume(Exit.fail(new SqlError({
206
- cause: error,
207
- message: "Failed to execute statement"
227
+ reason: classifyError(error, "Failed to execute statement", "execute")
208
228
  })));
209
229
  } else {
210
230
  resume(Exit.succeed(results));
@@ -247,6 +267,9 @@ export const make = options => Effect.gen(function* () {
247
267
  executeValues(sql, params) {
248
268
  return run(sql, params, "array");
249
269
  },
270
+ executeValuesUnprepared(sql, params) {
271
+ return run(sql, params, "array");
272
+ },
250
273
  executeUnprepared(sql, params, transformRows) {
251
274
  return this.execute(sql, params, transformRows);
252
275
  },
@@ -270,7 +293,7 @@ export const make = options => Effect.gen(function* () {
270
293
  const acquirer = semaphore.withPermits(1)(ScopedRef.get(connectionRef));
271
294
  const transactionAcquirer = Effect.uninterruptibleMask(Effect.fnUntraced(function* (restore) {
272
295
  const fiber = Fiber.getCurrent();
273
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);
296
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope);
274
297
  yield* restore(semaphore.take(1));
275
298
  yield* Scope.addFinalizer(scope, semaphore.release(1));
276
299
  return yield* ScopedRef.get(connectionRef);
@@ -300,35 +323,47 @@ function rowToObject(columns, row) {
300
323
  const extractObject = rows => rows[1].map(row => rowToObject(rows[0], row));
301
324
  const extractRows = rows => rows[1];
302
325
  /**
303
- * @category tranferables
304
- * @since 1.0.0
326
+ * Fiber reference that stores transferables to include with worker-backed SQLite WASM query messages.
327
+ *
328
+ * @category transferables
329
+ * @since 4.0.0
305
330
  */
306
- export const Transferables = /*#__PURE__*/ServiceMap.Reference("@effect/sql-sqlite-wasm/currentTransferables", {
331
+ export const Transferables = /*#__PURE__*/Context.Reference("@effect/sql-sqlite-wasm/currentTransferables", {
307
332
  defaultValue: () => []
308
333
  });
309
334
  /**
310
- * @category tranferables
311
- * @since 1.0.0
335
+ * Runs an effect with the supplied transferables attached to worker-backed SQLite WASM query messages.
336
+ *
337
+ * @category transferables
338
+ * @since 4.0.0
312
339
  */
313
340
  export const withTransferables = transferables => effect => Effect.provideService(effect, Transferables, transferables);
314
341
  /**
342
+ * Builds a layer from an Effect `Config` value, providing both the in-memory SQLite WASM `SqliteClient` service and the generic `SqlClient` service.
343
+ *
315
344
  * @category layers
316
- * @since 1.0.0
345
+ * @since 4.0.0
317
346
  */
318
- export const layerMemoryConfig = config => Layer.effectServices(Config.unwrap(config).asEffect().pipe(Effect.flatMap(makeMemory), Effect.map(client => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
347
+ export const layerMemoryConfig = config => Layer.effectContext(Config.unwrap(config).pipe(Effect.flatMap(makeMemory), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
319
348
  /**
349
+ * Builds a layer from an in-memory SQLite WASM client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
350
+ *
320
351
  * @category layers
321
- * @since 1.0.0
352
+ * @since 4.0.0
322
353
  */
323
- export const layerMemory = config => Layer.effectServices(Effect.map(makeMemory(config), client => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
354
+ export const layerMemory = config => Layer.effectContext(Effect.map(makeMemory(config), client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
324
355
  /**
356
+ * Builds a layer from a worker-backed SQLite WASM client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
357
+ *
325
358
  * @category layers
326
- * @since 1.0.0
359
+ * @since 4.0.0
327
360
  */
328
- export const layer = config => Layer.effectServices(Effect.map(make(config), client => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
361
+ export const layer = config => Layer.effectContext(Effect.map(make(config), client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
329
362
  /**
363
+ * Builds a layer from an Effect `Config` value, providing both the worker-backed SQLite WASM `SqliteClient` service and the generic `SqlClient` service.
364
+ *
330
365
  * @category layers
331
- * @since 1.0.0
366
+ * @since 4.0.0
332
367
  */
333
- export const layerConfig = config => Layer.effectServices(Config.unwrap(config).asEffect().pipe(Effect.flatMap(make), Effect.map(client => ServiceMap.make(SqliteClient, client).pipe(ServiceMap.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
368
+ export const layerConfig = config => Layer.effectContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client))))).pipe(Layer.provide(Reactivity.layer));
334
369
  //# sourceMappingURL=SqliteClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteClient.js","names":["WaSqlite","SQLiteESMFactory","MemoryVFS","Config","Deferred","Effect","Exit","Fiber","identity","Layer","Scope","ScopedRef","Semaphore","ServiceMap","Stream","Reactivity","Client","SqlError","Statement","ATTR_DB_SYSTEM_NAME","TypeId","SqliteClient","Service","initModule","runSync","cached","promise","initEffect","pipe","map","module","Factory","registered","Set","makeMemory","options","gen","reactivity","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","sqlite3","has","add","vfs","vfs_register","db","acquireRelease","try","open_v2","catch","cause","message","sync","close","installReactivityHooks","update_hook","_op","_db","table","rowid","id","String","Number","invalidateUnsafe","run","sql","params","rowMode","results","stmt","statements","columns","bind_collection","step","SQLITE_ROW","column_names","row","obj","i","length","push","execute","executeRaw","executeValues","executeUnprepared","executeStream","stream","suspend","fromIteratorSucceed","Symbol","iterator","mapArray","chunk","mapError","export","serialize","import","data","deserialize","semaphore","make","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","fiber","getCurrent","scope","getUnsafe","services","as","tap","take","addFinalizer","release","Object","assign","spanAttributes","entries","config","pending","Map","currentId","readyDeferred","worker","port","postMessage","transferables","onMessage","event","error","doneUnsafe","void","resume","get","delete","fail","addEventListener","onError","runFork","set","connectionRef","removeEventListener","await","send","callback","rows","withFiber","getRef","Transferables","extractObject","extractRows","die","buffer","fromAcquire","fnUntraced","flatMap","rowToObject","Reference","defaultValue","withTransferables","effect","provideService","layerMemoryConfig","effectServices","unwrap","asEffect","client","SqlClient","provide","layer","layerMemory","layerConfig"],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SqliteClient.js","names":["WaSqlite","SQLiteESMFactory","MemoryVFS","Config","Context","Deferred","Effect","Exit","Fiber","identity","Layer","Scope","ScopedRef","Semaphore","Stream","Reactivity","Client","classifySqliteError","SqlError","Statement","ATTR_DB_SYSTEM_NAME","classifyError","cause","message","operation","TypeId","SqliteClient","Service","initModule","runSync","cached","promise","initEffect","pipe","map","module","Factory","registered","Set","makeMemory","options","gen","reactivity","compiler","makeCompilerSqlite","transformQueryNames","transformRows","transformResultNames","defaultTransforms","array","undefined","makeConnection","sqlite3","has","add","vfs","vfs_register","db","acquireRelease","try","open_v2","catch","reason","sync","close","installReactivityHooks","update_hook","_op","_db","table","rowid","id","String","Number","invalidateUnsafe","run","sql","params","rowMode","results","stmt","statements","columns","bind_collection","step","SQLITE_ROW","column_names","row","obj","i","length","push","execute","executeRaw","executeValues","executeValuesUnprepared","executeUnprepared","executeStream","stream","suspend","fromIteratorSucceed","Symbol","iterator","mapArray","chunk","mapError","export","serialize","import","data","deserialize","semaphore","make","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","fiber","getCurrent","scope","getUnsafe","context","as","tap","take","addFinalizer","release","Object","assign","spanAttributes","entries","config","pending","Map","currentId","readyDeferred","worker","port","postMessage","transferables","onMessage","event","error","doneUnsafe","void","resume","get","delete","fail","addEventListener","onError","runFork","set","connectionRef","removeEventListener","await","send","callback","rows","withFiber","getRef","Transferables","extractObject","extractRows","die","buffer","fromAcquire","fnUntraced","flatMap","rowToObject","Reference","defaultValue","withTransferables","effect","provideService","layerMemoryConfig","effectContext","unwrap","client","SqlClient","provide","layer","layerMemory","layerConfig"],"sources":["../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;AAcA;AACA,OAAO,KAAKA,QAAQ,MAAM,mBAAmB;AAC7C,OAAOC,gBAAgB,MAAM,sCAAsC;AACnE,SAASC,SAAS,QAAQ,6CAA6C;AACvE,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,UAAU,MAAM,uCAAuC;AACnE,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AAEvD,SAASC,mBAAmB,EAAEC,QAAQ,QAAQ,8BAA8B;AAC5E,OAAO,KAAKC,SAAS,MAAM,+BAA+B;AAG1D,MAAMC,mBAAmB,GAAG,gBAAgB;AAE5C,MAAMC,aAAa,GAAGA,CAACC,KAAc,EAAEC,OAAe,EAAEC,SAAiB,KACvEP,mBAAmB,CAACK,KAAK,EAAE;EAAEC,OAAO;EAAEC;AAAS,CAAE,CAAC;AAEpD;;;;;;AAMA,OAAO,MAAMC,MAAM,GAAW,uCAAuC;AA0BrE;;;;;;AAMA,OAAO,MAAMC,YAAY,gBAAGtB,OAAO,CAACuB,OAAO,CAAe,sCAAsC,CAAC;AAkCjG,MAAMC,UAAU,gBAAGtB,MAAM,CAACuB,OAAO,cAC/BvB,MAAM,CAACwB,MAAM,cAACxB,MAAM,CAACyB,OAAO,CAAC,MAAM9B,gBAAgB,EAAE,CAAC,CAAC,CACxD;AAED,MAAM+B,UAAU,gBAAG1B,MAAM,CAACuB,OAAO,cAC/BvB,MAAM,CAACwB,MAAM,cAACF,UAAU,CAACK,IAAI,cAAC3B,MAAM,CAAC4B,GAAG,CAAEC,MAAM,IAAKnC,QAAQ,CAACoC,OAAO,CAACD,MAAM,CAAC,CAAC,CAAC,CAAC,CACjF;AAED,MAAME,UAAU,gBAAG,IAAIC,GAAG,EAAU;AAEpC;;;;;;AAMA,OAAO,MAAMC,UAAU,GACrBC,OAAiC,IAEjClC,MAAM,CAACmC,GAAG,CAAC,aAAS;EAClB,MAAMC,UAAU,GAAG,OAAO3B,UAAU,CAACA,UAAU;EAC/C,MAAM4B,QAAQ,GAAGxB,SAAS,CAACyB,kBAAkB,CAACJ,OAAO,CAACK,mBAAmB,CAAC;EAC1E,MAAMC,aAAa,GAAGN,OAAO,CAACO,oBAAoB,GAChD5B,SAAS,CAAC6B,iBAAiB,CACzBR,OAAO,CAACO,oBAAoB,CAC7B,CAACE,KAAK,GACPC,SAAS;EAEX,MAAMC,cAAc,GAAG7C,MAAM,CAACmC,GAAG,CAAC,aAAS;IACzC,MAAMW,OAAO,GAAG,OAAOpB,UAAU;IAEjC,IAAIK,UAAU,CAACgB,GAAG,CAAC,YAAY,CAAC,KAAK,KAAK,EAAE;MAC1ChB,UAAU,CAACiB,GAAG,CAAC,YAAY,CAAC;MAC5B,MAAMnB,MAAM,GAAG,OAAOP,UAAU;MAChC;MACA,MAAM2B,GAAG,GAAG,IAAIrD,SAAS,CAAC,YAAY,EAAEiC,MAAM,CAAC;MAC/CiB,OAAO,CAACI,YAAY,CAACD,GAAU,EAAE,KAAK,CAAC;IACzC;IACA,MAAME,EAAE,GAAG,OAAOnD,MAAM,CAACoD,cAAc,CACrCpD,MAAM,CAACqD,GAAG,CAAC;MACTA,GAAG,EAAEA,CAAA,KAAMP,OAAO,CAACQ,OAAO,CAAC,UAAU,EAAEV,SAAS,EAAE,YAAY,CAAC;MAC/DW,KAAK,EAAGvC,KAAK,IAAK,IAAIJ,QAAQ,CAAC;QAAE4C,MAAM,EAAEzC,aAAa,CAACC,KAAK,EAAE,yBAAyB,EAAE,cAAc;MAAC,CAAE;KAC3G,CAAC,EACDmC,EAAE,IAAKnD,MAAM,CAACyD,IAAI,CAAC,MAAMX,OAAO,CAACY,KAAK,CAACP,EAAE,CAAC,CAAC,CAC7C;IAED,IAAIjB,OAAO,CAACyB,sBAAsB,EAAE;MAClCb,OAAO,CAACc,WAAW,CAACT,EAAE,EAAE,CAACU,GAAG,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,KAAI;QACjD,IAAI,CAACD,KAAK,EAAE;QACZ,MAAME,EAAE,GAAGC,MAAM,CAACC,MAAM,CAACH,KAAK,CAAC,CAAC;QAChC5B,UAAU,CAACgC,gBAAgB,CAAC;UAAE,CAACL,KAAK,GAAG,CAACE,EAAE;QAAC,CAAE,CAAC;MAChD,CAAC,CAAC;IACJ;IAEA,MAAMI,GAAG,GAAGA,CACVC,GAAW,EACXC,MAAA,GAAiC,EAAE,EACnCC,OAAA,GAA8B,QAAQ,KAEtCxE,MAAM,CAACqD,GAAG,CAAC;MACTA,GAAG,EAAEA,CAAA,KAAK;QACR,MAAMoB,OAAO,GAAe,EAAE;QAC9B,KAAK,MAAMC,IAAI,IAAI5B,OAAO,CAAC6B,UAAU,CAACxB,EAAE,EAAEmB,GAAG,CAAC,EAAE;UAC9C,IAAIM,OAAkC;UACtC9B,OAAO,CAAC+B,eAAe,CAACH,IAAI,EAAEH,MAAa,CAAC;UAC5C,OAAOzB,OAAO,CAACgC,IAAI,CAACJ,IAAI,CAAC,KAAKhF,QAAQ,CAACqF,UAAU,EAAE;YACjDH,OAAO,GAAGA,OAAO,IAAI9B,OAAO,CAACkC,YAAY,CAACN,IAAI,CAAC;YAC/C,MAAMO,GAAG,GAAGnC,OAAO,CAACmC,GAAG,CAACP,IAAI,CAAC;YAC7B,IAAIF,OAAO,KAAK,QAAQ,EAAE;cACxB,MAAMU,GAAG,GAAwB,EAAE;cACnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,OAAO,CAACQ,MAAM,EAAED,CAAC,EAAE,EAAE;gBACvCD,GAAG,CAACN,OAAO,CAACO,CAAC,CAAC,CAAC,GAAGF,GAAG,CAACE,CAAC,CAAC;cAC1B;cACAV,OAAO,CAACY,IAAI,CAACH,GAAG,CAAC;YACnB,CAAC,MAAM;cACLT,OAAO,CAACY,IAAI,CAACJ,GAAG,CAAC;YACnB;UACF;QACF;QACA,OAAOR,OAAO;MAChB,CAAC;MACDlB,KAAK,EAAGvC,KAAK,IAAK,IAAIJ,QAAQ,CAAC;QAAE4C,MAAM,EAAEzC,aAAa,CAACC,KAAK,EAAE,6BAA6B,EAAE,SAAS;MAAC,CAAE;KAC1G,CAAC;IAEJ,OAAOb,QAAQ,CAAmB;MAChCmF,OAAOA,CAAChB,GAAG,EAAEC,MAAM,EAAE/B,aAAa;QAChC,OAAOA,aAAa,GAChBxC,MAAM,CAAC4B,GAAG,CAACyC,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC,EAAE/B,aAAa,CAAC,GAC3C6B,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC;MACtB,CAAC;MACDgB,UAAUA,CAACjB,GAAG,EAAEC,MAAM;QACpB,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC;MACzB,CAAC;MACDiB,aAAaA,CAAClB,GAAG,EAAEC,MAAM;QACvB,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,EAAE,OAAO,CAAC;MAClC,CAAC;MACDkB,uBAAuBA,CAACnB,GAAG,EAAEC,MAAM;QACjC,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,EAAE,OAAO,CAAC;MAClC,CAAC;MACDmB,iBAAiBA,CAACpB,GAAG,EAAEC,MAAM,EAAE/B,aAAa;QAC1C,OAAO,IAAI,CAAC8C,OAAO,CAAChB,GAAG,EAAEC,MAAM,EAAE/B,aAAa,CAAC;MACjD,CAAC;MACDmD,aAAaA,CAACrB,GAAG,EAAEC,MAAM,EAAE/B,aAAa;QACtC,UAAUoD,MAAMA,CAAA;UACd,KAAK,MAAMlB,IAAI,IAAI5B,OAAO,CAAC6B,UAAU,CAACxB,EAAE,EAAEmB,GAAG,CAAC,EAAE;YAC9C,IAAIM,OAAkC;YACtC9B,OAAO,CAAC+B,eAAe,CAACH,IAAI,EAAEH,MAAa,CAAC;YAC5C,OAAOzB,OAAO,CAACgC,IAAI,CAACJ,IAAI,CAAC,KAAKhF,QAAQ,CAACqF,UAAU,EAAE;cACjDH,OAAO,GAAGA,OAAO,IAAI9B,OAAO,CAACkC,YAAY,CAACN,IAAI,CAAC;cAC/C,MAAMO,GAAG,GAAGnC,OAAO,CAACmC,GAAG,CAACP,IAAI,CAAC;cAC7B,MAAMQ,GAAG,GAAwB,EAAE;cACnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,OAAO,CAACQ,MAAM,EAAED,CAAC,EAAE,EAAE;gBACvCD,GAAG,CAACN,OAAO,CAACO,CAAC,CAAC,CAAC,GAAGF,GAAG,CAACE,CAAC,CAAC;cAC1B;cACA,MAAMD,GAAG;YACX;UACF;QACF;QACA,OAAO1E,MAAM,CAACqF,OAAO,CAAC,MAAMrF,MAAM,CAACsF,mBAAmB,CAACF,MAAM,EAAE,CAACG,MAAM,CAACC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAACrE,IAAI,CACvFa,aAAa,GACThC,MAAM,CAACyF,QAAQ,CAAEC,KAAK,IAAK1D,aAAa,CAAC0D,KAAK,CAAQ,CAAC,GACvD/F,QAAQ,EACZK,MAAM,CAAC2F,QAAQ,CAAEnF,KAAK,IACpB,IAAIJ,QAAQ,CAAC;UAAE4C,MAAM,EAAEzC,aAAa,CAACC,KAAK,EAAE,6BAA6B,EAAE,QAAQ;QAAC,CAAE,CAAC,CACxF,CACF;MACH,CAAC;MACDoF,MAAM,EAAEpG,MAAM,CAACqD,GAAG,CAAC;QACjBA,GAAG,EAAEA,CAAA,KAAMP,OAAO,CAACuD,SAAS,CAAClD,EAAE,EAAE,MAAM,CAAC;QACxCI,KAAK,EAAGvC,KAAK,IAAK,IAAIJ,QAAQ,CAAC;UAAE4C,MAAM,EAAEzC,aAAa,CAACC,KAAK,EAAE,2BAA2B,EAAE,QAAQ;QAAC,CAAE;OACvG,CAAC;MACFsF,MAAMA,CAACC,IAAI;QACT,OAAOvG,MAAM,CAACqD,GAAG,CAAC;UAChBA,GAAG,EAAEA,CAAA,KAAMP,OAAO,CAAC0D,WAAW,CAACrD,EAAE,EAAE,MAAM,EAAEoD,IAAI,EAAEA,IAAI,CAACnB,MAAM,EAAEmB,IAAI,CAACnB,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;UACjF7B,KAAK,EAAGvC,KAAK,IAAK,IAAIJ,QAAQ,CAAC;YAAE4C,MAAM,EAAEzC,aAAa,CAACC,KAAK,EAAE,2BAA2B,EAAE,QAAQ;UAAC,CAAE;SACvG,CAAC;MACJ;KACD,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMyF,SAAS,GAAG,OAAOlG,SAAS,CAACmG,IAAI,CAAC,CAAC,CAAC;EAC1C,MAAMC,UAAU,GAAG,OAAO9D,cAAc;EAExC,MAAM+D,QAAQ,GAAGH,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAAC7G,MAAM,CAAC8G,OAAO,CAACH,UAAU,CAAC,CAAC;EACrE,MAAMI,mBAAmB,GAAG/G,MAAM,CAACgH,mBAAmB,CAAEC,OAAO,IAAI;IACjE,MAAMC,KAAK,GAAGhH,KAAK,CAACiH,UAAU,EAAG;IACjC,MAAMC,KAAK,GAAGtH,OAAO,CAACuH,SAAS,CAACH,KAAK,CAACI,OAAO,EAAEjH,KAAK,CAACA,KAAK,CAAC;IAC3D,OAAOL,MAAM,CAACuH,EAAE,CACdvH,MAAM,CAACwH,GAAG,CACRP,OAAO,CAACR,SAAS,CAACgB,IAAI,CAAC,CAAC,CAAC,CAAC,EAC1B,MAAMpH,KAAK,CAACqH,YAAY,CAACN,KAAK,EAAEX,SAAS,CAACkB,OAAO,CAAC,CAAC,CAAC,CAAC,CACtD,EACDhB,UAAU,CACX;EACH,CAAC,CAAC;EAEF,OAAOiB,MAAM,CAACC,MAAM,CACjB,OAAOnH,MAAM,CAACgG,IAAI,CAAC;IAClBE,QAAQ;IACRvE,QAAQ;IACR0E,mBAAmB;IACnBe,cAAc,EAAE,CACd,IAAI5F,OAAO,CAAC4F,cAAc,GAAGF,MAAM,CAACG,OAAO,CAAC7F,OAAO,CAAC4F,cAAc,CAAC,GAAG,EAAE,CAAC,EACzE,CAAChH,mBAAmB,EAAE,QAAQ,CAAC,CAChC;IACD0B;GACD,CAAC,EACF;IACE,CAACrB,MAAM,GAAGA,MAAgB;IAC1B6G,MAAM,EAAE9F,OAAO;IACfkE,MAAM,EAAEK,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAACF,UAAU,CAACP,MAAM,CAAC;IACnDE,MAAMA,CAACC,IAAgB;MACrB,OAAOE,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAACF,UAAU,CAACL,MAAM,CAACC,IAAI,CAAC,CAAC;IAC1D;GACD,CACF;AACH,CAAC,CAAC;AAEJ;;;;;;AAMA,OAAO,MAAMG,IAAI,GACfxE,OAA2B,IAE3BlC,MAAM,CAACmC,GAAG,CAAC,aAAS;EAClB,MAAMC,UAAU,GAAG,OAAO3B,UAAU,CAACA,UAAU;EAC/C,MAAM4B,QAAQ,GAAGxB,SAAS,CAACyB,kBAAkB,CAACJ,OAAO,CAACK,mBAAmB,CAAC;EAC1E,MAAMC,aAAa,GAAGN,OAAO,CAACO,oBAAoB,GAChD5B,SAAS,CAAC6B,iBAAiB,CAACR,OAAO,CAACO,oBAAoB,CAAC,CAACE,KAAK,GAC/DC,SAAS;EACX,MAAMqF,OAAO,GAAG,IAAIC,GAAG,EAAsD;EAE7E,MAAMrF,cAAc,GAAG7C,MAAM,CAACmC,GAAG,CAAC,aAAS;IACzC,IAAIgG,SAAS,GAAG,CAAC;IACjB,MAAMf,KAAK,GAAG,OAAOpH,MAAM,CAACoH,KAAK;IACjC,MAAMgB,aAAa,GAAG,OAAOrI,QAAQ,CAAC2G,IAAI,EAAQ;IAElD,MAAM2B,MAAM,GAAG,OAAOnG,OAAO,CAACmG,MAAM;IACpC,MAAMC,IAAI,GAAG,MAAM,IAAID,MAAM,GAAGA,MAAM,CAACC,IAAI,GAAGD,MAAM;IACpD,MAAME,WAAW,GAAGA,CAACtH,OAA0B,EAAEuH,aAAkC,KACjFF,IAAI,CAACC,WAAW,CAACtH,OAAO,EAAEuH,aAAoB,CAAC;IAEjD,OAAOnI,KAAK,CAACqH,YAAY,CAACN,KAAK,EAAEpH,MAAM,CAACyD,IAAI,CAAC,MAAM8E,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE3E,MAAME,SAAS,GAAIC,KAAU,IAAI;MAC/B,MAAM,CAACzE,EAAE,EAAE0E,KAAK,EAAElE,OAAO,CAAC,GAAGiE,KAAK,CAACnC,IAAI;MACvC,IAAItC,EAAE,KAAK,OAAO,EAAE;QAClBlE,QAAQ,CAAC6I,UAAU,CAACR,aAAa,EAAEnI,IAAI,CAAC4I,IAAI,CAAC;QAC7C;MACF,CAAC,MAAM,IAAI5E,EAAE,KAAK,aAAa,EAAE;QAC/B7B,UAAU,CAACgC,gBAAgB,CAAC;UAAE,CAACuE,KAAK,GAAG,CAAClE,OAAO;QAAC,CAAE,CAAC;QACnD;MACF,CAAC,MAAM;QACL,MAAMqE,MAAM,GAAGb,OAAO,CAACc,GAAG,CAAC9E,EAAE,CAAC;QAC9B,IAAI,CAAC6E,MAAM,EAAE;QACbb,OAAO,CAACe,MAAM,CAAC/E,EAAE,CAAC;QAClB,IAAI0E,KAAK,EAAE;UACTG,MAAM,CACJ7I,IAAI,CAACgJ,IAAI,CACP,IAAIrI,QAAQ,CAAC;YAAE4C,MAAM,EAAEzC,aAAa,CAAC4H,KAAe,EAAE,6BAA6B,EAAE,SAAS;UAAC,CAAE,CAAC,CACnG,CACF;QACH,CAAC,MAAM;UACLG,MAAM,CAAC7I,IAAI,CAAC6G,OAAO,CAACrC,OAAO,CAAC,CAAC;QAC/B;MACF;IACF,CAAC;IACD6D,IAAI,CAACY,gBAAgB,CAAC,SAAS,EAAET,SAAS,CAAC;IAE3C,SAASU,OAAOA,CAAA;MACdnJ,MAAM,CAACoJ,OAAO,CAAC9I,SAAS,CAAC+I,GAAG,CAACC,aAAa,EAAEzG,cAAc,CAAC,CAAC;IAC9D;IACA,IAAI,SAAS,IAAIwF,MAAM,EAAE;MACvBA,MAAM,CAACa,gBAAgB,CAAC,OAAO,EAAEC,OAAO,CAAC;IAC3C;IAEA,OAAO9I,KAAK,CAACqH,YAAY,CACvBN,KAAK,EACLpH,MAAM,CAACyD,IAAI,CAAC,MAAK;MACf4E,MAAM,CAACkB,mBAAmB,CAAC,SAAS,EAAEd,SAAS,CAAC;MAChDJ,MAAM,CAACkB,mBAAmB,CAAC,OAAO,EAAEJ,OAAO,CAAC;IAC9C,CAAC,CAAC,CACH;IAED,OAAOpJ,QAAQ,CAACyJ,KAAK,CAACpB,aAAa,CAAC;IAEpC,IAAIlG,OAAO,CAACyB,sBAAsB,EAAE;MAClC4E,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC;IAC9B;IAEA,MAAMkB,IAAI,GAAGA,CAACxF,EAAU,EAAEhD,OAA0B,EAAEuH,aAAkC,KACtFxI,MAAM,CAAC0J,QAAQ,CAAiBZ,MAAM,IAAI;MACxCb,OAAO,CAACoB,GAAG,CAACpF,EAAE,EAAE6E,MAAM,CAAC;MACvBP,WAAW,CAACtH,OAAO,EAAEuH,aAAa,CAAC;IACrC,CAAC,CAAC;IAEJ,MAAMnE,GAAG,GAAGA,CACVC,GAAW,EACXC,MAAA,GAAiC,EAAE,EACnCC,OAAA,GAA8B,QAAQ,KACQ;MAC9C,MAAMmF,IAAI,GAAG3J,MAAM,CAAC4J,SAAS,CAAyC1C,KAAK,IAAI;QAC7E,MAAMjD,EAAE,GAAGkE,SAAS,EAAE;QACtB,OAAOsB,IAAI,CAACxF,EAAE,EAAE,CAACA,EAAE,EAAEK,GAAG,EAAEC,MAAM,CAAC,EAAE2C,KAAK,CAAC2C,MAAM,CAACC,aAAa,CAAC,CAAC;MACjE,CAAC,CAAC;MACF,OAAOtF,OAAO,KAAK,QAAQ,GACvBxE,MAAM,CAAC4B,GAAG,CAAC+H,IAAI,EAAEI,aAAa,CAAC,GAC/B/J,MAAM,CAAC4B,GAAG,CAAC+H,IAAI,EAAEK,WAAW,CAAC;IACnC,CAAC;IAED,OAAO7J,QAAQ,CAAmB;MAChCmF,OAAOA,CAAChB,GAAG,EAAEC,MAAM,EAAE/B,aAAa;QAChC,OAAOA,aAAa,GAChBxC,MAAM,CAAC4B,GAAG,CAACyC,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC,EAAE/B,aAAa,CAAC,GAC3C6B,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC;MACtB,CAAC;MACDgB,UAAUA,CAACjB,GAAG,EAAEC,MAAM;QACpB,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC;MACzB,CAAC;MACDiB,aAAaA,CAAClB,GAAG,EAAEC,MAAM;QACvB,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,EAAE,OAAO,CAAC;MAClC,CAAC;MACDkB,uBAAuBA,CAACnB,GAAG,EAAEC,MAAM;QACjC,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,EAAE,OAAO,CAAC;MAClC,CAAC;MACDmB,iBAAiBA,CAACpB,GAAG,EAAEC,MAAM,EAAE/B,aAAa;QAC1C,OAAO,IAAI,CAAC8C,OAAO,CAAChB,GAAG,EAAEC,MAAM,EAAE/B,aAAa,CAAC;MACjD,CAAC;MACDmD,aAAaA,CAAA;QACX,OAAOnF,MAAM,CAACyJ,GAAG,CAAC,+BAA+B,CAAC;MACpD,CAAC;MACD7D,MAAM,EAAEpG,MAAM,CAAC6F,OAAO,CAAC,MAAK;QAC1B,MAAM5B,EAAE,GAAGkE,SAAS,EAAE;QACtB,OAAOsB,IAAI,CAACxF,EAAE,EAAE,CAAC,QAAQ,EAAEA,EAAE,CAAC,CAAC;MACjC,CAAC,CAAC;MACFqC,MAAMA,CAACC,IAAI;QACT,OAAOvG,MAAM,CAAC6F,OAAO,CAAC,MAAK;UACzB,MAAM5B,EAAE,GAAGkE,SAAS,EAAE;UACtB,OAAOsB,IAAI,CAACxF,EAAE,EAAE,CAAC,QAAQ,EAAEA,EAAE,EAAEsC,IAAI,CAAC,EAAE,CAACA,IAAI,CAAC2D,MAAM,CAAC,CAAC;QACtD,CAAC,CAAC;MACJ;KACD,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMZ,aAAa,GAAG,OAAOhJ,SAAS,CAAC6J,WAAW,CAACtH,cAAc,CAAC;EAElE,MAAM4D,SAAS,GAAG,OAAOlG,SAAS,CAACmG,IAAI,CAAC,CAAC,CAAC;EAC1C,MAAME,QAAQ,GAAGH,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAACvG,SAAS,CAACyI,GAAG,CAACO,aAAa,CAAC,CAAC;EACvE,MAAMvC,mBAAmB,GAAG/G,MAAM,CAACgH,mBAAmB,CAAChH,MAAM,CAACoK,UAAU,CAAC,WAAUnD,OAAO;IACxF,MAAMC,KAAK,GAAGhH,KAAK,CAACiH,UAAU,EAAG;IACjC,MAAMC,KAAK,GAAGtH,OAAO,CAACuH,SAAS,CAACH,KAAK,CAACI,OAAO,EAAEjH,KAAK,CAACA,KAAK,CAAC;IAC3D,OAAO4G,OAAO,CAACR,SAAS,CAACgB,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,OAAOpH,KAAK,CAACqH,YAAY,CAACN,KAAK,EAAEX,SAAS,CAACkB,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,OAAO,OAAOrH,SAAS,CAACyI,GAAG,CAACO,aAAa,CAAC;EAC5C,CAAC,CAAC,CAAC;EAEH,OAAO1B,MAAM,CAACC,MAAM,CACjB,OAAOnH,MAAM,CAACgG,IAAI,CAAC;IAClBE,QAAQ;IACRvE,QAAQ;IACR0E,mBAAmB;IACnBe,cAAc,EAAE,CACd,IAAI5F,OAAO,CAAC4F,cAAc,GAAGF,MAAM,CAACG,OAAO,CAAC7F,OAAO,CAAC4F,cAAc,CAAC,GAAG,EAAE,CAAC,EACzE,CAAChH,mBAAmB,EAAE,QAAQ,CAAC,CAChC;IACD0B;GACD,CAAC,EACF;IACE,CAACrB,MAAM,GAAGA,MAAgB;IAC1B6G,MAAM,EAAE9F,OAAO;IACfkE,MAAM,EAAEpG,MAAM,CAACqK,OAAO,CAACzD,QAAQ,EAAGD,UAAU,IAAKA,UAAU,CAACP,MAAM,CAAC;IACnEE,MAAMA,CAACC,IAAgB;MACrB,OAAOvG,MAAM,CAACqK,OAAO,CAACzD,QAAQ,EAAGD,UAAU,IAAKA,UAAU,CAACL,MAAM,CAACC,IAAI,CAAC,CAAC;IAC1E;GACD,CACF;AACH,CAAC,CAAC;AAEJ,SAAS+D,WAAWA,CAAC1F,OAAsB,EAAEK,GAAe;EAC1D,MAAMC,GAAG,GAAwB,EAAE;EACnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,OAAO,CAACQ,MAAM,EAAED,CAAC,EAAE,EAAE;IACvCD,GAAG,CAACN,OAAO,CAACO,CAAC,CAAC,CAAC,GAAGF,GAAG,CAACE,CAAC,CAAC;EAC1B;EACA,OAAOD,GAAG;AACZ;AACA,MAAM6E,aAAa,GAAIJ,IAAiC,IAAKA,IAAI,CAAC,CAAC,CAAC,CAAC/H,GAAG,CAAEqD,GAAG,IAAKqF,WAAW,CAACX,IAAI,CAAC,CAAC,CAAC,EAAE1E,GAAG,CAAC,CAAC;AAC5G,MAAM+E,WAAW,GAAIL,IAAiC,IAAKA,IAAI,CAAC,CAAC,CAAC;AAElE;;;;;;AAMA,OAAO,MAAMG,aAAa,gBAAGhK,OAAO,CAACyK,SAAS,CAC5C,8CAA8C,EAC9C;EAAEC,YAAY,EAAEA,CAAA,KAAM;AAAE,CAAE,CAC3B;AAED;;;;;;AAMA,OAAO,MAAMC,iBAAiB,GAC3BjC,aAA0C,IAAekC,MAA8B,IACtF1K,MAAM,CAAC2K,cAAc,CAACD,MAAM,EAAEZ,aAAa,EAAEtB,aAAa,CAAC;AAE/D;;;;;;AAMA,OAAO,MAAMoC,iBAAiB,GAC5B5C,MAA6C,IAE7C5H,KAAK,CAACyK,aAAa,CACjBhL,MAAM,CAACiL,MAAM,CAAC9C,MAAM,CAAC,CAACrG,IAAI,CACxB3B,MAAM,CAACqK,OAAO,CAACpI,UAAU,CAAC,EAC1BjC,MAAM,CAAC4B,GAAG,CAAEmJ,MAAM,IAChBjL,OAAO,CAAC4G,IAAI,CAACtF,YAAY,EAAE2J,MAAM,CAAC,CAACpJ,IAAI,CACrC7B,OAAO,CAACkD,GAAG,CAACtC,MAAM,CAACsK,SAAS,EAAED,MAAM,CAAC,CACtC,CACF,CACF,CACF,CAACpJ,IAAI,CAACvB,KAAK,CAAC6K,OAAO,CAACxK,UAAU,CAACyK,KAAK,CAAC,CAAC;AAEzC;;;;;;AAMA,OAAO,MAAMC,WAAW,GACtBnD,MAAgC,IAEhC5H,KAAK,CAACyK,aAAa,CACjB7K,MAAM,CAAC4B,GAAG,CAACK,UAAU,CAAC+F,MAAM,CAAC,EAAG+C,MAAM,IACpCjL,OAAO,CAAC4G,IAAI,CAACtF,YAAY,EAAE2J,MAAM,CAAC,CAACpJ,IAAI,CACrC7B,OAAO,CAACkD,GAAG,CAACtC,MAAM,CAACsK,SAAS,EAAED,MAAM,CAAC,CACtC,CAAC,CACL,CAACpJ,IAAI,CAACvB,KAAK,CAAC6K,OAAO,CAACxK,UAAU,CAACyK,KAAK,CAAC,CAAC;AAEzC;;;;;;AAMA,OAAO,MAAMA,KAAK,GAChBlD,MAA0B,IAE1B5H,KAAK,CAACyK,aAAa,CACjB7K,MAAM,CAAC4B,GAAG,CAAC8E,IAAI,CAACsB,MAAM,CAAC,EAAG+C,MAAM,IAC9BjL,OAAO,CAAC4G,IAAI,CAACtF,YAAY,EAAE2J,MAAM,CAAC,CAACpJ,IAAI,CACrC7B,OAAO,CAACkD,GAAG,CAACtC,MAAM,CAACsK,SAAS,EAAED,MAAM,CAAC,CACtC,CAAC,CACL,CAACpJ,IAAI,CAACvB,KAAK,CAAC6K,OAAO,CAACxK,UAAU,CAACyK,KAAK,CAAC,CAAC;AAEzC;;;;;;AAMA,OAAO,MAAME,WAAW,GACtBpD,MAAuC,IAEvC5H,KAAK,CAACyK,aAAa,CACjBhL,MAAM,CAACiL,MAAM,CAAC9C,MAAM,CAAC,CAACrG,IAAI,CACxB3B,MAAM,CAACqK,OAAO,CAAC3D,IAAI,CAAC,EACpB1G,MAAM,CAAC4B,GAAG,CAAEmJ,MAAM,IAChBjL,OAAO,CAAC4G,IAAI,CAACtF,YAAY,EAAE2J,MAAM,CAAC,CAACpJ,IAAI,CACrC7B,OAAO,CAACkD,GAAG,CAACtC,MAAM,CAACsK,SAAS,EAAED,MAAM,CAAC,CACtC,CACF,CACF,CACF,CAACpJ,IAAI,CAACvB,KAAK,CAAC6K,OAAO,CAACxK,UAAU,CAACyK,KAAK,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,23 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Utilities for applying Effect SQL migrations to SQLite WASM databases.
3
+ *
4
+ * This module re-exports the shared `Migrator` loaders and error types, then
5
+ * provides `run` and `layer` helpers that execute ordered migrations through the
6
+ * current SQLite WASM `SqlClient`. Use it when a browser, worker, or test
7
+ * runtime needs to create or upgrade a local SQLite schema before repositories,
8
+ * caches, sync services, or other database-backed services start.
9
+ *
10
+ * The migrator operates on whichever WASM client is in the environment. With
11
+ * `SqliteClient.makeMemory`, migrations update an in-memory database, so the
12
+ * resulting schema is transient unless you persist it with the client's
13
+ * `export` and `import` operations. With worker-backed OPFS databases, run the
14
+ * migrator against the same worker configuration and OPFS database name used by
15
+ * the rest of the application, and coordinate startup across tabs or workers so
16
+ * only one migrator upgrades a given database at a time. OPFS availability is
17
+ * browser- and origin-dependent, and this adapter does not currently write
18
+ * SQLite schema dumps for `schemaDirectory`.
19
+ *
20
+ * @since 4.0.0
3
21
  */
4
22
  import type * as Effect from "effect/Effect";
5
23
  import * as Layer from "effect/Layer";
@@ -7,17 +25,21 @@ import * as Migrator from "effect/unstable/sql/Migrator";
7
25
  import type * as Client from "effect/unstable/sql/SqlClient";
8
26
  import type { SqlError } from "effect/unstable/sql/SqlError";
9
27
  /**
10
- * @since 1.0.0
28
+ * @since 4.0.0
11
29
  */
12
30
  export * from "effect/unstable/sql/Migrator";
13
31
  /**
14
- * @category constructor
15
- * @since 1.0.0
32
+ * Runs SQL migrations for a SQLite WASM database using the shared `Migrator` implementation and the current `SqlClient`.
33
+ *
34
+ * @category constructors
35
+ * @since 4.0.0
16
36
  */
17
37
  export declare const run: <R>(options: Migrator.MigratorOptions<R>) => Effect.Effect<ReadonlyArray<readonly [id: number, name: string]>, SqlError | Migrator.MigrationError, Client.SqlClient | R>;
18
38
  /**
19
- * @category constructor
20
- * @since 1.0.0
39
+ * Creates a layer that runs the configured SQLite WASM migrations during layer construction and provides no services.
40
+ *
41
+ * @category constructors
42
+ * @since 4.0.0
21
43
  */
22
44
  export declare const layer: <R>(options: Migrator.MigratorOptions<R>) => Layer.Layer<never, SqlError | Migrator.MigrationError, R | Client.SqlClient>;
23
45
  //# sourceMappingURL=SqliteMigrator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteMigrator.d.ts","sourceRoot":"","sources":["../src/SqliteMigrator.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAA;AACxD,OAAO,KAAK,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D;;GAEG;AACH,cAAc,8BAA8B,CAAA;AAE5C;;;GAGG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,CAAC,EAClB,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACjC,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAClC,MAAM,CAAC,SAAS,GAAG,CAAC,CACD,CAAA;AAErB;;;GAGG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,SAAS,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACnC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAsC,CAAA"}
1
+ {"version":3,"file":"SqliteMigrator.d.ts","sourceRoot":"","sources":["../src/SqliteMigrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAA;AACxD,OAAO,KAAK,KAAK,MAAM,MAAM,+BAA+B,CAAA;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D;;GAEG;AACH,cAAc,8BAA8B,CAAA;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,GAAG,EAAE,CAAC,CAAC,EAClB,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACjC,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAClD,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAClC,MAAM,CAAC,SAAS,GAAG,CAAC,CACD,CAAA;AAErB;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,SAAS,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,KACnC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAsC,CAAA"}
@@ -1,17 +1,21 @@
1
1
  import * as Layer from "effect/Layer";
2
2
  import * as Migrator from "effect/unstable/sql/Migrator";
3
3
  /**
4
- * @since 1.0.0
4
+ * @since 4.0.0
5
5
  */
6
6
  export * from "effect/unstable/sql/Migrator";
7
7
  /**
8
- * @category constructor
9
- * @since 1.0.0
8
+ * Runs SQL migrations for a SQLite WASM database using the shared `Migrator` implementation and the current `SqlClient`.
9
+ *
10
+ * @category constructors
11
+ * @since 4.0.0
10
12
  */
11
13
  export const run = /*#__PURE__*/Migrator.make({});
12
14
  /**
13
- * @category constructor
14
- * @since 1.0.0
15
+ * Creates a layer that runs the configured SQLite WASM migrations during layer construction and provides no services.
16
+ *
17
+ * @category constructors
18
+ * @since 4.0.0
15
19
  */
16
20
  export const layer = options => Layer.effectDiscard(run(options));
17
21
  //# sourceMappingURL=SqliteMigrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteMigrator.js","names":["Layer","Migrator","run","make","layer","options","effectDiscard"],"sources":["../src/SqliteMigrator.ts"],"sourcesContent":[null],"mappings":"AAIA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,8BAA8B;AAIxD;;;AAGA,cAAc,8BAA8B;AAE5C;;;;AAIA,OAAO,MAAMC,GAAG,gBAMZD,QAAQ,CAACE,IAAI,CAAC,EAAE,CAAC;AAErB;;;;AAIA,OAAO,MAAMC,KAAK,GAChBC,OAAoC,IAC6CL,KAAK,CAACM,aAAa,CAACJ,GAAG,CAACG,OAAO,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"SqliteMigrator.js","names":["Layer","Migrator","run","make","layer","options","effectDiscard"],"sources":["../src/SqliteMigrator.ts"],"sourcesContent":[null],"mappings":"AAsBA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,8BAA8B;AAIxD;;;AAGA,cAAc,8BAA8B;AAE5C;;;;;;AAMA,OAAO,MAAMC,GAAG,gBAMZD,QAAQ,CAACE,IAAI,CAAC,EAAE,CAAC;AAErB;;;;;;AAMA,OAAO,MAAMC,KAAK,GAChBC,OAAoC,IAC6CL,KAAK,CAACM,aAAa,CAACJ,GAAG,CAACG,OAAO,CAAC,CAAC","ignoreList":[]}
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
  export * as OpfsWorker from "./OpfsWorker.ts";
5
5
  /**
6
- * @since 1.0.0
6
+ * @since 4.0.0
7
7
  */
8
8
  export * as SqliteClient from "./SqliteClient.ts";
9
9
  /**
10
- * @since 1.0.0
10
+ * @since 4.0.0
11
11
  */
12
12
  export * as SqliteMigrator from "./SqliteMigrator.ts";
13
13
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
  export * as OpfsWorker from "./OpfsWorker.js";
5
5
  /**
6
- * @since 1.0.0
6
+ * @since 4.0.0
7
7
  */
8
8
  export * as SqliteClient from "./SqliteClient.js";
9
9
  /**
10
- * @since 1.0.0
10
+ * @since 4.0.0
11
11
  */
12
12
  export * as SqliteMigrator from "./SqliteMigrator.js";
13
13
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect/sql-sqlite-wasm",
3
- "version": "4.0.0-beta.9",
3
+ "version": "4.0.0-beta.90",
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.9"
47
+ "effect": "^4.0.0-beta.90"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "@effect/wa-sqlite": "^0.1.2",
51
- "effect": "^4.0.0-beta.9"
51
+ "effect": "^4.0.0-beta.90"
52
52
  },
53
53
  "scripts": {
54
54
  "codegen": "effect-utils codegen",
package/src/OpfsWorker.ts CHANGED
@@ -1,5 +1,14 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Runs the worker side of the browser SQLite WASM client that stores data in
3
+ * OPFS.
4
+ *
5
+ * This module opens `@effect/wa-sqlite` with the OPFS access-handle VFS, then
6
+ * listens on a `MessagePort`-compatible port for the protocol used by
7
+ * `SqliteClient`. It sends a ready message, executes SQL messages, imports and
8
+ * exports database bytes, forwards update-hook notifications, and closes when
9
+ * requested. It is meant to run in a dedicated worker or a `SharedWorker`.
10
+ *
11
+ * @since 4.0.0
3
12
  */
4
13
  /// <reference lib="webworker" />
5
14
  // oxlint-disable-next-line effect/no-import-from-barrel-package
@@ -7,12 +16,17 @@ import * as WaSqlite from "@effect/wa-sqlite"
7
16
  import SQLiteESMFactory from "@effect/wa-sqlite/dist/wa-sqlite.mjs"
8
17
  import { AccessHandlePoolVFS } from "@effect/wa-sqlite/src/examples/AccessHandlePoolVFS.js"
9
18
  import * as Effect from "effect/Effect"
10
- import { SqlError } from "effect/unstable/sql/SqlError"
19
+ import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
11
20
  import type { OpfsWorkerMessage } from "./internal/opfsWorker.ts"
12
21
 
22
+ const classifyError = (cause: unknown, message: string, operation: string) =>
23
+ classifySqliteError(cause, { message, operation })
24
+
13
25
  /**
26
+ * Configuration for the SQLite OPFS worker, including the message port used for the client protocol and the OPFS database name to open.
27
+ *
14
28
  * @category models
15
- * @since 1.0.0
29
+ * @since 4.0.0
16
30
  */
17
31
  export interface OpfsWorkerConfig {
18
32
  readonly port: EventTarget & Pick<MessagePort, "postMessage" | "close">
@@ -20,8 +34,10 @@ export interface OpfsWorkerConfig {
20
34
  }
21
35
 
22
36
  /**
23
- * @category constructor
24
- * @since 1.0.0
37
+ * Runs the SQLite OPFS worker loop, opening the configured database, posting a ready message, handling query/import/export/update-hook messages, and closing when a close message is received.
38
+ *
39
+ * @category constructors
40
+ * @since 4.0.0
25
41
  */
26
42
  export const run = (
27
43
  options: OpfsWorkerConfig
@@ -34,7 +50,7 @@ export const run = (
34
50
  const db = yield* Effect.acquireRelease(
35
51
  Effect.try({
36
52
  try: () => sqlite3.open_v2(options.dbName, undefined, "opfs"),
37
- catch: (cause) => new SqlError({ cause, message: "Failed to open database" })
53
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to open database", "openDatabase") })
38
54
  }),
39
55
  (db) => Effect.sync(() => sqlite3.close(db))
40
56
  )
@@ -1,11 +1,23 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Connects Effect SQL to SQLite compiled to WebAssembly with
3
+ * `@effect/wa-sqlite`.
4
+ *
5
+ * This module can create an in-memory SQLite database in the current runtime or
6
+ * connect to a worker-backed database, such as the OPFS worker from
7
+ * `OpfsWorker`. Both clients are exposed as `SqliteClient` and the generic
8
+ * Effect SQL client, serialize access, support database import and export, and
9
+ * can install reactivity hooks from SQLite update notifications. In-memory
10
+ * clients can stream query rows; worker-backed clients cannot. `updateValues`
11
+ * is not supported by this driver.
12
+ *
13
+ * @since 4.0.0
3
14
  */
4
15
  // oxlint-disable-next-line effect/no-import-from-barrel-package
5
16
  import * as WaSqlite from "@effect/wa-sqlite"
6
17
  import SQLiteESMFactory from "@effect/wa-sqlite/dist/wa-sqlite.mjs"
7
18
  import { MemoryVFS } from "@effect/wa-sqlite/src/examples/MemoryVFS.js"
8
19
  import * as Config from "effect/Config"
20
+ import * as Context from "effect/Context"
9
21
  import * as Deferred from "effect/Deferred"
10
22
  import * as Effect from "effect/Effect"
11
23
  import * as Exit from "effect/Exit"
@@ -15,32 +27,40 @@ import * as Layer from "effect/Layer"
15
27
  import * as Scope from "effect/Scope"
16
28
  import * as ScopedRef from "effect/ScopedRef"
17
29
  import * as Semaphore from "effect/Semaphore"
18
- import * as ServiceMap from "effect/ServiceMap"
19
30
  import * as Stream from "effect/Stream"
20
31
  import * as Reactivity from "effect/unstable/reactivity/Reactivity"
21
32
  import * as Client from "effect/unstable/sql/SqlClient"
22
33
  import type { Connection } from "effect/unstable/sql/SqlConnection"
23
- import { SqlError } from "effect/unstable/sql/SqlError"
34
+ import { classifySqliteError, SqlError } from "effect/unstable/sql/SqlError"
24
35
  import * as Statement from "effect/unstable/sql/Statement"
25
36
  import type { OpfsWorkerMessage } from "./internal/opfsWorker.ts"
26
37
 
27
38
  const ATTR_DB_SYSTEM_NAME = "db.system.name"
28
39
 
40
+ const classifyError = (cause: unknown, message: string, operation: string) =>
41
+ classifySqliteError(cause, { message, operation })
42
+
29
43
  /**
30
- * @category type ids
31
- * @since 1.0.0
44
+ * Runtime identifier attached to SQLite WASM client values.
45
+ *
46
+ * @category type IDs
47
+ * @since 4.0.0
32
48
  */
33
49
  export const TypeId: TypeId = "~@effect/sql-sqlite-wasm/SqliteClient"
34
50
 
35
51
  /**
36
- * @category type ids
37
- * @since 1.0.0
52
+ * Type-level identifier for SQLite WASM client values.
53
+ *
54
+ * @category type IDs
55
+ * @since 4.0.0
38
56
  */
39
57
  export type TypeId = "~@effect/sql-sqlite-wasm/SqliteClient"
40
58
 
41
59
  /**
60
+ * SQLite WASM client service interface, extending `SqlClient` with database `export` and `import` operations and marking `updateValues` as unsupported for SQLite.
61
+ *
42
62
  * @category models
43
- * @since 1.0.0
63
+ * @since 4.0.0
44
64
  */
45
65
  export interface SqliteClient extends Client.SqlClient {
46
66
  readonly [TypeId]: TypeId
@@ -53,14 +73,18 @@ export interface SqliteClient extends Client.SqlClient {
53
73
  }
54
74
 
55
75
  /**
56
- * @category tags
57
- * @since 1.0.0
76
+ * Service tag for the SQLite WASM client.
77
+ *
78
+ * @category services
79
+ * @since 4.0.0
58
80
  */
59
- export const SqliteClient = ServiceMap.Service<SqliteClient>("@effect/sql-sqlite-wasm/SqliteClient")
81
+ export const SqliteClient = Context.Service<SqliteClient>("@effect/sql-sqlite-wasm/SqliteClient")
60
82
 
61
83
  /**
84
+ * Configuration for an in-memory SQLite WASM client, including optional reactivity hooks, span attributes, and query/result name transforms.
85
+ *
62
86
  * @category models
63
- * @since 1.0.0
87
+ * @since 4.0.0
64
88
  */
65
89
  export interface SqliteClientMemoryConfig {
66
90
  readonly installReactivityHooks?: boolean
@@ -70,8 +94,10 @@ export interface SqliteClientMemoryConfig {
70
94
  }
71
95
 
72
96
  /**
97
+ * Configuration for a worker-backed SQLite WASM client, including the scoped worker or message port, optional reactivity hooks, span attributes, and query/result name transforms.
98
+ *
73
99
  * @category models
74
- * @since 1.0.0
100
+ * @since 4.0.0
75
101
  */
76
102
  export interface SqliteClientConfig {
77
103
  readonly worker: Effect.Effect<Worker | SharedWorker | MessagePort, never, Scope.Scope>
@@ -97,8 +123,10 @@ const initEffect = Effect.runSync(
97
123
  const registered = new Set<string>()
98
124
 
99
125
  /**
100
- * @category constructor
101
- * @since 1.0.0
126
+ * Creates a scoped in-memory SQLite WASM client using the memory VFS, serializing access through a semaphore and exposing database `export` and `import` operations.
127
+ *
128
+ * @category constructors
129
+ * @since 4.0.0
102
130
  */
103
131
  export const makeMemory = (
104
132
  options: SqliteClientMemoryConfig
@@ -125,7 +153,7 @@ export const makeMemory = (
125
153
  const db = yield* Effect.acquireRelease(
126
154
  Effect.try({
127
155
  try: () => sqlite3.open_v2(":memory:", undefined, "memory-vfs"),
128
- catch: (cause) => new SqlError({ cause, message: "Failed to open database" })
156
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to open database", "openDatabase") })
129
157
  }),
130
158
  (db) => Effect.sync(() => sqlite3.close(db))
131
159
  )
@@ -165,7 +193,7 @@ export const makeMemory = (
165
193
  }
166
194
  return results
167
195
  },
168
- catch: (cause) => new SqlError({ cause, message: "Failed to execute statement" })
196
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to execute statement", "execute") })
169
197
  })
170
198
 
171
199
  return identity<SqliteConnection>({
@@ -180,6 +208,9 @@ export const makeMemory = (
180
208
  executeValues(sql, params) {
181
209
  return run(sql, params, "array")
182
210
  },
211
+ executeValuesUnprepared(sql, params) {
212
+ return run(sql, params, "array")
213
+ },
183
214
  executeUnprepared(sql, params, transformRows) {
184
215
  return this.execute(sql, params, transformRows)
185
216
  },
@@ -203,17 +234,19 @@ export const makeMemory = (
203
234
  transformRows
204
235
  ? Stream.mapArray((chunk) => transformRows(chunk) as any)
205
236
  : identity,
206
- Stream.mapError((cause) => new SqlError({ cause, message: "Failed to execute statement" }))
237
+ Stream.mapError((cause) =>
238
+ new SqlError({ reason: classifyError(cause, "Failed to execute statement", "stream") })
239
+ )
207
240
  )
208
241
  },
209
242
  export: Effect.try({
210
243
  try: () => sqlite3.serialize(db, "main"),
211
- catch: (cause) => new SqlError({ cause, message: "Failed to export database" })
244
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to export database", "export") })
212
245
  }),
213
246
  import(data) {
214
247
  return Effect.try({
215
248
  try: () => sqlite3.deserialize(db, "main", data, data.length, data.length, 1 | 2),
216
- catch: (cause) => new SqlError({ cause, message: "Failed to import database" })
249
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to import database", "import") })
217
250
  })
218
251
  }
219
252
  })
@@ -225,7 +258,7 @@ export const makeMemory = (
225
258
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection))
226
259
  const transactionAcquirer = Effect.uninterruptibleMask((restore) => {
227
260
  const fiber = Fiber.getCurrent()!
228
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope)
261
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope)
229
262
  return Effect.as(
230
263
  Effect.tap(
231
264
  restore(semaphore.take(1)),
@@ -258,8 +291,10 @@ export const makeMemory = (
258
291
  })
259
292
 
260
293
  /**
261
- * @category constructor
262
- * @since 1.0.0
294
+ * Creates a scoped worker-backed SQLite WASM client, communicating with the configured worker or message port, restarting the scoped connection on worker errors, and exposing database `export` and `import` operations.
295
+ *
296
+ * @category constructors
297
+ * @since 4.0.0
263
298
  */
264
299
  export const make = (
265
300
  options: SqliteClientConfig
@@ -297,7 +332,11 @@ export const make = (
297
332
  if (!resume) return
298
333
  pending.delete(id)
299
334
  if (error) {
300
- resume(Exit.fail(new SqlError({ cause: error as string, message: "Failed to execute statement" })))
335
+ resume(
336
+ Exit.fail(
337
+ new SqlError({ reason: classifyError(error as string, "Failed to execute statement", "execute") })
338
+ )
339
+ )
301
340
  } else {
302
341
  resume(Exit.succeed(results))
303
342
  }
@@ -358,6 +397,9 @@ export const make = (
358
397
  executeValues(sql, params) {
359
398
  return run(sql, params, "array")
360
399
  },
400
+ executeValuesUnprepared(sql, params) {
401
+ return run(sql, params, "array")
402
+ },
361
403
  executeUnprepared(sql, params, transformRows) {
362
404
  return this.execute(sql, params, transformRows)
363
405
  },
@@ -383,7 +425,7 @@ export const make = (
383
425
  const acquirer = semaphore.withPermits(1)(ScopedRef.get(connectionRef))
384
426
  const transactionAcquirer = Effect.uninterruptibleMask(Effect.fnUntraced(function*(restore) {
385
427
  const fiber = Fiber.getCurrent()!
386
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope)
428
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope)
387
429
  yield* restore(semaphore.take(1))
388
430
  yield* Scope.addFinalizer(scope, semaphore.release(1))
389
431
  return yield* ScopedRef.get(connectionRef)
@@ -422,81 +464,93 @@ const extractObject = (rows: [Array<string>, Array<any>]) => rows[1].map((row) =
422
464
  const extractRows = (rows: [Array<string>, Array<any>]) => rows[1]
423
465
 
424
466
  /**
425
- * @category tranferables
426
- * @since 1.0.0
467
+ * Fiber reference that stores transferables to include with worker-backed SQLite WASM query messages.
468
+ *
469
+ * @category transferables
470
+ * @since 4.0.0
427
471
  */
428
- export const Transferables = ServiceMap.Reference<ReadonlyArray<Transferable>>(
472
+ export const Transferables = Context.Reference<ReadonlyArray<Transferable>>(
429
473
  "@effect/sql-sqlite-wasm/currentTransferables",
430
474
  { defaultValue: () => [] }
431
475
  )
432
476
 
433
477
  /**
434
- * @category tranferables
435
- * @since 1.0.0
478
+ * Runs an effect with the supplied transferables attached to worker-backed SQLite WASM query messages.
479
+ *
480
+ * @category transferables
481
+ * @since 4.0.0
436
482
  */
437
483
  export const withTransferables =
438
484
  (transferables: ReadonlyArray<Transferable>) => <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
439
485
  Effect.provideService(effect, Transferables, transferables)
440
486
 
441
487
  /**
488
+ * Builds a layer from an Effect `Config` value, providing both the in-memory SQLite WASM `SqliteClient` service and the generic `SqlClient` service.
489
+ *
442
490
  * @category layers
443
- * @since 1.0.0
491
+ * @since 4.0.0
444
492
  */
445
493
  export const layerMemoryConfig = (
446
494
  config: Config.Wrap<SqliteClientMemoryConfig>
447
495
  ): Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError | SqlError> =>
448
- Layer.effectServices(
449
- Config.unwrap(config).asEffect().pipe(
496
+ Layer.effectContext(
497
+ Config.unwrap(config).pipe(
450
498
  Effect.flatMap(makeMemory),
451
499
  Effect.map((client) =>
452
- ServiceMap.make(SqliteClient, client).pipe(
453
- ServiceMap.add(Client.SqlClient, client)
500
+ Context.make(SqliteClient, client).pipe(
501
+ Context.add(Client.SqlClient, client)
454
502
  )
455
503
  )
456
504
  )
457
505
  ).pipe(Layer.provide(Reactivity.layer))
458
506
 
459
507
  /**
508
+ * Builds a layer from an in-memory SQLite WASM client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
509
+ *
460
510
  * @category layers
461
- * @since 1.0.0
511
+ * @since 4.0.0
462
512
  */
463
513
  export const layerMemory = (
464
514
  config: SqliteClientMemoryConfig
465
515
  ): Layer.Layer<SqliteClient | Client.SqlClient, SqlError> =>
466
- Layer.effectServices(
516
+ Layer.effectContext(
467
517
  Effect.map(makeMemory(config), (client) =>
468
- ServiceMap.make(SqliteClient, client).pipe(
469
- ServiceMap.add(Client.SqlClient, client)
518
+ Context.make(SqliteClient, client).pipe(
519
+ Context.add(Client.SqlClient, client)
470
520
  ))
471
521
  ).pipe(Layer.provide(Reactivity.layer))
472
522
 
473
523
  /**
524
+ * Builds a layer from a worker-backed SQLite WASM client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
525
+ *
474
526
  * @category layers
475
- * @since 1.0.0
527
+ * @since 4.0.0
476
528
  */
477
529
  export const layer = (
478
530
  config: SqliteClientConfig
479
531
  ): Layer.Layer<SqliteClient | Client.SqlClient, SqlError> =>
480
- Layer.effectServices(
532
+ Layer.effectContext(
481
533
  Effect.map(make(config), (client) =>
482
- ServiceMap.make(SqliteClient, client).pipe(
483
- ServiceMap.add(Client.SqlClient, client)
534
+ Context.make(SqliteClient, client).pipe(
535
+ Context.add(Client.SqlClient, client)
484
536
  ))
485
537
  ).pipe(Layer.provide(Reactivity.layer))
486
538
 
487
539
  /**
540
+ * Builds a layer from an Effect `Config` value, providing both the worker-backed SQLite WASM `SqliteClient` service and the generic `SqlClient` service.
541
+ *
488
542
  * @category layers
489
- * @since 1.0.0
543
+ * @since 4.0.0
490
544
  */
491
545
  export const layerConfig = (
492
546
  config: Config.Wrap<SqliteClientConfig>
493
547
  ): Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError | SqlError> =>
494
- Layer.effectServices(
495
- Config.unwrap(config).asEffect().pipe(
548
+ Layer.effectContext(
549
+ Config.unwrap(config).pipe(
496
550
  Effect.flatMap(make),
497
551
  Effect.map((client) =>
498
- ServiceMap.make(SqliteClient, client).pipe(
499
- ServiceMap.add(Client.SqlClient, client)
552
+ Context.make(SqliteClient, client).pipe(
553
+ Context.add(Client.SqlClient, client)
500
554
  )
501
555
  )
502
556
  )
@@ -1,5 +1,23 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Utilities for applying Effect SQL migrations to SQLite WASM databases.
3
+ *
4
+ * This module re-exports the shared `Migrator` loaders and error types, then
5
+ * provides `run` and `layer` helpers that execute ordered migrations through the
6
+ * current SQLite WASM `SqlClient`. Use it when a browser, worker, or test
7
+ * runtime needs to create or upgrade a local SQLite schema before repositories,
8
+ * caches, sync services, or other database-backed services start.
9
+ *
10
+ * The migrator operates on whichever WASM client is in the environment. With
11
+ * `SqliteClient.makeMemory`, migrations update an in-memory database, so the
12
+ * resulting schema is transient unless you persist it with the client's
13
+ * `export` and `import` operations. With worker-backed OPFS databases, run the
14
+ * migrator against the same worker configuration and OPFS database name used by
15
+ * the rest of the application, and coordinate startup across tabs or workers so
16
+ * only one migrator upgrades a given database at a time. OPFS availability is
17
+ * browser- and origin-dependent, and this adapter does not currently write
18
+ * SQLite schema dumps for `schemaDirectory`.
19
+ *
20
+ * @since 4.0.0
3
21
  */
4
22
  import type * as Effect from "effect/Effect"
5
23
  import * as Layer from "effect/Layer"
@@ -8,13 +26,15 @@ import type * as Client from "effect/unstable/sql/SqlClient"
8
26
  import type { SqlError } from "effect/unstable/sql/SqlError"
9
27
 
10
28
  /**
11
- * @since 1.0.0
29
+ * @since 4.0.0
12
30
  */
13
31
  export * from "effect/unstable/sql/Migrator"
14
32
 
15
33
  /**
16
- * @category constructor
17
- * @since 1.0.0
34
+ * Runs SQL migrations for a SQLite WASM database using the shared `Migrator` implementation and the current `SqlClient`.
35
+ *
36
+ * @category constructors
37
+ * @since 4.0.0
18
38
  */
19
39
  export const run: <R>(
20
40
  options: Migrator.MigratorOptions<R>
@@ -25,8 +45,10 @@ export const run: <R>(
25
45
  > = Migrator.make({})
26
46
 
27
47
  /**
28
- * @category constructor
29
- * @since 1.0.0
48
+ * Creates a layer that runs the configured SQLite WASM migrations during layer construction and provides no services.
49
+ *
50
+ * @category constructors
51
+ * @since 4.0.0
30
52
  */
31
53
  export const layer = <R>(
32
54
  options: Migrator.MigratorOptions<R>
package/src/index.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * @since 4.0.0
3
3
  */
4
4
  export * as OpfsWorker from "./OpfsWorker.ts"
5
5
 
6
6
  /**
7
- * @since 1.0.0
7
+ * @since 4.0.0
8
8
  */
9
9
  export * as SqliteClient from "./SqliteClient.ts"
10
10
 
11
11
  /**
12
- * @since 1.0.0
12
+ * @since 4.0.0
13
13
  */
14
14
  export * as SqliteMigrator from "./SqliteMigrator.ts"
@@ -1,19 +1,47 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * Declares the wa-sqlite IndexedDB batch-atomic VFS example module.
3
+ *
4
+ * @since 4.0.0
3
5
  */
4
6
  declare module "@effect/wa-sqlite/src/examples/IDBBatchAtomicVFS.js" {
7
+ /**
8
+ * IndexedDB-backed wa-sqlite virtual file system that batches writes and
9
+ * commits them atomically.
10
+ *
11
+ * @category models
12
+ * @since 4.0.0
13
+ */
5
14
  // oxlint-disable-next-line @typescript-eslint/no-extraneous-class
6
15
  export class IDBBatchAtomicVFS {
16
+ /**
17
+ * Creates a batch-atomic IndexedDB VFS registered under `name` for the
18
+ * provided wa-sqlite module. The optional `options` value is forwarded to
19
+ * the upstream VFS implementation.
20
+ */
7
21
  static async create(name: string, module: any, options?: any): Promise<any>
8
22
  }
9
23
  }
10
24
 
11
25
  /**
12
- * @since 1.0.0
26
+ * Declares the wa-sqlite OPFS access-handle pool VFS example module.
27
+ *
28
+ * @since 4.0.0
13
29
  */
14
30
  declare module "@effect/wa-sqlite/src/examples/AccessHandlePoolVFS.js" {
31
+ /**
32
+ * OPFS-backed wa-sqlite virtual file system that pools file-system access
33
+ * handles for persistent browser storage.
34
+ *
35
+ * @category models
36
+ * @since 4.0.0
37
+ */
15
38
  // oxlint-disable-next-line @typescript-eslint/no-extraneous-class
16
39
  export class AccessHandlePoolVFS {
40
+ /**
41
+ * Creates an OPFS access-handle pool VFS registered under `name` for the
42
+ * provided wa-sqlite module. The optional `options` value is forwarded to
43
+ * the upstream VFS implementation.
44
+ */
17
45
  static async create(name: string, module: any, options?: any): Promise<any>
18
46
  }
19
47
  }