@effect/sql-sqlite-wasm 4.0.0-beta.8 → 4.0.0-beta.80

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":"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"}
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({
@@ -125,23 +144,20 @@ export const makeMemory = options => Effect.gen(function* () {
125
144
  }
126
145
  }
127
146
  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"
147
+ reason: classifyError(cause, "Failed to execute statement", "stream")
130
148
  })));
131
149
  },
132
150
  export: Effect.try({
133
151
  try: () => sqlite3.serialize(db, "main"),
134
152
  catch: cause => new SqlError({
135
- cause,
136
- message: "Failed to export database"
153
+ reason: classifyError(cause, "Failed to export database", "export")
137
154
  })
138
155
  }),
139
156
  import(data) {
140
157
  return Effect.try({
141
158
  try: () => sqlite3.deserialize(db, "main", data, data.length, data.length, 1 | 2),
142
159
  catch: cause => new SqlError({
143
- cause,
144
- message: "Failed to import database"
160
+ reason: classifyError(cause, "Failed to import database", "import")
145
161
  })
146
162
  });
147
163
  }
@@ -152,7 +168,7 @@ export const makeMemory = options => Effect.gen(function* () {
152
168
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
153
169
  const transactionAcquirer = Effect.uninterruptibleMask(restore => {
154
170
  const fiber = Fiber.getCurrent();
155
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);
171
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope);
156
172
  return Effect.as(Effect.tap(restore(semaphore.take(1)), () => Scope.addFinalizer(scope, semaphore.release(1))), connection);
157
173
  });
158
174
  return Object.assign(yield* Client.make({
@@ -171,8 +187,10 @@ export const makeMemory = options => Effect.gen(function* () {
171
187
  });
172
188
  });
173
189
  /**
174
- * @category constructor
175
- * @since 1.0.0
190
+ * 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.
191
+ *
192
+ * @category constructors
193
+ * @since 4.0.0
176
194
  */
177
195
  export const make = options => Effect.gen(function* () {
178
196
  const reactivity = yield* Reactivity.Reactivity;
@@ -203,8 +221,7 @@ export const make = options => Effect.gen(function* () {
203
221
  pending.delete(id);
204
222
  if (error) {
205
223
  resume(Exit.fail(new SqlError({
206
- cause: error,
207
- message: "Failed to execute statement"
224
+ reason: classifyError(error, "Failed to execute statement", "execute")
208
225
  })));
209
226
  } else {
210
227
  resume(Exit.succeed(results));
@@ -270,7 +287,7 @@ export const make = options => Effect.gen(function* () {
270
287
  const acquirer = semaphore.withPermits(1)(ScopedRef.get(connectionRef));
271
288
  const transactionAcquirer = Effect.uninterruptibleMask(Effect.fnUntraced(function* (restore) {
272
289
  const fiber = Fiber.getCurrent();
273
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope);
290
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope);
274
291
  yield* restore(semaphore.take(1));
275
292
  yield* Scope.addFinalizer(scope, semaphore.release(1));
276
293
  return yield* ScopedRef.get(connectionRef);
@@ -300,35 +317,47 @@ function rowToObject(columns, row) {
300
317
  const extractObject = rows => rows[1].map(row => rowToObject(rows[0], row));
301
318
  const extractRows = rows => rows[1];
302
319
  /**
303
- * @category tranferables
304
- * @since 1.0.0
320
+ * Fiber reference that stores transferables to include with worker-backed SQLite WASM query messages.
321
+ *
322
+ * @category transferables
323
+ * @since 4.0.0
305
324
  */
306
- export const Transferables = /*#__PURE__*/ServiceMap.Reference("@effect/sql-sqlite-wasm/currentTransferables", {
325
+ export const Transferables = /*#__PURE__*/Context.Reference("@effect/sql-sqlite-wasm/currentTransferables", {
307
326
  defaultValue: () => []
308
327
  });
309
328
  /**
310
- * @category tranferables
311
- * @since 1.0.0
329
+ * Runs an effect with the supplied transferables attached to worker-backed SQLite WASM query messages.
330
+ *
331
+ * @category transferables
332
+ * @since 4.0.0
312
333
  */
313
334
  export const withTransferables = transferables => effect => Effect.provideService(effect, Transferables, transferables);
314
335
  /**
336
+ * Builds a layer from an Effect `Config` value, providing both the in-memory SQLite WASM `SqliteClient` service and the generic `SqlClient` service.
337
+ *
315
338
  * @category layers
316
- * @since 1.0.0
339
+ * @since 4.0.0
317
340
  */
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));
341
+ 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
342
  /**
343
+ * Builds a layer from an in-memory SQLite WASM client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
344
+ *
320
345
  * @category layers
321
- * @since 1.0.0
346
+ * @since 4.0.0
322
347
  */
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));
348
+ 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
349
  /**
350
+ * Builds a layer from a worker-backed SQLite WASM client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
351
+ *
325
352
  * @category layers
326
- * @since 1.0.0
353
+ * @since 4.0.0
327
354
  */
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));
355
+ 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
356
  /**
357
+ * Builds a layer from an Effect `Config` value, providing both the worker-backed SQLite WASM `SqliteClient` service and the generic `SqlClient` service.
358
+ *
330
359
  * @category layers
331
- * @since 1.0.0
360
+ * @since 4.0.0
332
361
  */
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));
362
+ 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
363
  //# 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","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":"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","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.8",
3
+ "version": "4.0.0-beta.80",
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.8"
47
+ "effect": "^4.0.0-beta.80"
48
48
  },
49
49
  "peerDependencies": {
50
50
  "@effect/wa-sqlite": "^0.1.2",
51
- "effect": "^4.0.0-beta.8"
51
+ "effect": "^4.0.0-beta.80"
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>({
@@ -203,17 +231,19 @@ export const makeMemory = (
203
231
  transformRows
204
232
  ? Stream.mapArray((chunk) => transformRows(chunk) as any)
205
233
  : identity,
206
- Stream.mapError((cause) => new SqlError({ cause, message: "Failed to execute statement" }))
234
+ Stream.mapError((cause) =>
235
+ new SqlError({ reason: classifyError(cause, "Failed to execute statement", "stream") })
236
+ )
207
237
  )
208
238
  },
209
239
  export: Effect.try({
210
240
  try: () => sqlite3.serialize(db, "main"),
211
- catch: (cause) => new SqlError({ cause, message: "Failed to export database" })
241
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to export database", "export") })
212
242
  }),
213
243
  import(data) {
214
244
  return Effect.try({
215
245
  try: () => sqlite3.deserialize(db, "main", data, data.length, data.length, 1 | 2),
216
- catch: (cause) => new SqlError({ cause, message: "Failed to import database" })
246
+ catch: (cause) => new SqlError({ reason: classifyError(cause, "Failed to import database", "import") })
217
247
  })
218
248
  }
219
249
  })
@@ -225,7 +255,7 @@ export const makeMemory = (
225
255
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection))
226
256
  const transactionAcquirer = Effect.uninterruptibleMask((restore) => {
227
257
  const fiber = Fiber.getCurrent()!
228
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope)
258
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope)
229
259
  return Effect.as(
230
260
  Effect.tap(
231
261
  restore(semaphore.take(1)),
@@ -258,8 +288,10 @@ export const makeMemory = (
258
288
  })
259
289
 
260
290
  /**
261
- * @category constructor
262
- * @since 1.0.0
291
+ * 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.
292
+ *
293
+ * @category constructors
294
+ * @since 4.0.0
263
295
  */
264
296
  export const make = (
265
297
  options: SqliteClientConfig
@@ -297,7 +329,11 @@ export const make = (
297
329
  if (!resume) return
298
330
  pending.delete(id)
299
331
  if (error) {
300
- resume(Exit.fail(new SqlError({ cause: error as string, message: "Failed to execute statement" })))
332
+ resume(
333
+ Exit.fail(
334
+ new SqlError({ reason: classifyError(error as string, "Failed to execute statement", "execute") })
335
+ )
336
+ )
301
337
  } else {
302
338
  resume(Exit.succeed(results))
303
339
  }
@@ -383,7 +419,7 @@ export const make = (
383
419
  const acquirer = semaphore.withPermits(1)(ScopedRef.get(connectionRef))
384
420
  const transactionAcquirer = Effect.uninterruptibleMask(Effect.fnUntraced(function*(restore) {
385
421
  const fiber = Fiber.getCurrent()!
386
- const scope = ServiceMap.getUnsafe(fiber.services, Scope.Scope)
422
+ const scope = Context.getUnsafe(fiber.context, Scope.Scope)
387
423
  yield* restore(semaphore.take(1))
388
424
  yield* Scope.addFinalizer(scope, semaphore.release(1))
389
425
  return yield* ScopedRef.get(connectionRef)
@@ -422,81 +458,93 @@ const extractObject = (rows: [Array<string>, Array<any>]) => rows[1].map((row) =
422
458
  const extractRows = (rows: [Array<string>, Array<any>]) => rows[1]
423
459
 
424
460
  /**
425
- * @category tranferables
426
- * @since 1.0.0
461
+ * Fiber reference that stores transferables to include with worker-backed SQLite WASM query messages.
462
+ *
463
+ * @category transferables
464
+ * @since 4.0.0
427
465
  */
428
- export const Transferables = ServiceMap.Reference<ReadonlyArray<Transferable>>(
466
+ export const Transferables = Context.Reference<ReadonlyArray<Transferable>>(
429
467
  "@effect/sql-sqlite-wasm/currentTransferables",
430
468
  { defaultValue: () => [] }
431
469
  )
432
470
 
433
471
  /**
434
- * @category tranferables
435
- * @since 1.0.0
472
+ * Runs an effect with the supplied transferables attached to worker-backed SQLite WASM query messages.
473
+ *
474
+ * @category transferables
475
+ * @since 4.0.0
436
476
  */
437
477
  export const withTransferables =
438
478
  (transferables: ReadonlyArray<Transferable>) => <A, E, R>(effect: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
439
479
  Effect.provideService(effect, Transferables, transferables)
440
480
 
441
481
  /**
482
+ * Builds a layer from an Effect `Config` value, providing both the in-memory SQLite WASM `SqliteClient` service and the generic `SqlClient` service.
483
+ *
442
484
  * @category layers
443
- * @since 1.0.0
485
+ * @since 4.0.0
444
486
  */
445
487
  export const layerMemoryConfig = (
446
488
  config: Config.Wrap<SqliteClientMemoryConfig>
447
489
  ): Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError | SqlError> =>
448
- Layer.effectServices(
449
- Config.unwrap(config).asEffect().pipe(
490
+ Layer.effectContext(
491
+ Config.unwrap(config).pipe(
450
492
  Effect.flatMap(makeMemory),
451
493
  Effect.map((client) =>
452
- ServiceMap.make(SqliteClient, client).pipe(
453
- ServiceMap.add(Client.SqlClient, client)
494
+ Context.make(SqliteClient, client).pipe(
495
+ Context.add(Client.SqlClient, client)
454
496
  )
455
497
  )
456
498
  )
457
499
  ).pipe(Layer.provide(Reactivity.layer))
458
500
 
459
501
  /**
502
+ * Builds a layer from an in-memory SQLite WASM client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
503
+ *
460
504
  * @category layers
461
- * @since 1.0.0
505
+ * @since 4.0.0
462
506
  */
463
507
  export const layerMemory = (
464
508
  config: SqliteClientMemoryConfig
465
509
  ): Layer.Layer<SqliteClient | Client.SqlClient, SqlError> =>
466
- Layer.effectServices(
510
+ Layer.effectContext(
467
511
  Effect.map(makeMemory(config), (client) =>
468
- ServiceMap.make(SqliteClient, client).pipe(
469
- ServiceMap.add(Client.SqlClient, client)
512
+ Context.make(SqliteClient, client).pipe(
513
+ Context.add(Client.SqlClient, client)
470
514
  ))
471
515
  ).pipe(Layer.provide(Reactivity.layer))
472
516
 
473
517
  /**
518
+ * Builds a layer from a worker-backed SQLite WASM client configuration, providing both `SqliteClient` and the generic `SqlClient` service.
519
+ *
474
520
  * @category layers
475
- * @since 1.0.0
521
+ * @since 4.0.0
476
522
  */
477
523
  export const layer = (
478
524
  config: SqliteClientConfig
479
525
  ): Layer.Layer<SqliteClient | Client.SqlClient, SqlError> =>
480
- Layer.effectServices(
526
+ Layer.effectContext(
481
527
  Effect.map(make(config), (client) =>
482
- ServiceMap.make(SqliteClient, client).pipe(
483
- ServiceMap.add(Client.SqlClient, client)
528
+ Context.make(SqliteClient, client).pipe(
529
+ Context.add(Client.SqlClient, client)
484
530
  ))
485
531
  ).pipe(Layer.provide(Reactivity.layer))
486
532
 
487
533
  /**
534
+ * Builds a layer from an Effect `Config` value, providing both the worker-backed SQLite WASM `SqliteClient` service and the generic `SqlClient` service.
535
+ *
488
536
  * @category layers
489
- * @since 1.0.0
537
+ * @since 4.0.0
490
538
  */
491
539
  export const layerConfig = (
492
540
  config: Config.Wrap<SqliteClientConfig>
493
541
  ): Layer.Layer<SqliteClient | Client.SqlClient, Config.ConfigError | SqlError> =>
494
- Layer.effectServices(
495
- Config.unwrap(config).asEffect().pipe(
542
+ Layer.effectContext(
543
+ Config.unwrap(config).pipe(
496
544
  Effect.flatMap(make),
497
545
  Effect.map((client) =>
498
- ServiceMap.make(SqliteClient, client).pipe(
499
- ServiceMap.add(Client.SqlClient, client)
546
+ Context.make(SqliteClient, client).pipe(
547
+ Context.add(Client.SqlClient, client)
500
548
  )
501
549
  )
502
550
  )
@@ -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
  }