@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.
- package/dist/OpfsWorker.d.ts +7 -3
- package/dist/OpfsWorker.d.ts.map +1 -1
- package/dist/OpfsWorker.js +20 -6
- package/dist/OpfsWorker.js.map +1 -1
- package/dist/SqliteClient.d.ts +52 -24
- package/dist/SqliteClient.d.ts.map +1 -1
- package/dist/SqliteClient.js +68 -39
- package/dist/SqliteClient.js.map +1 -1
- package/dist/SqliteMigrator.d.ts +28 -6
- package/dist/SqliteMigrator.d.ts.map +1 -1
- package/dist/SqliteMigrator.js +9 -5
- package/dist/SqliteMigrator.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/package.json +3 -3
- package/src/OpfsWorker.ts +22 -6
- package/src/SqliteClient.ts +96 -48
- package/src/SqliteMigrator.ts +28 -6
- package/src/index.ts +3 -3
- package/src/sqlite-wasm.d.ts +30 -2
package/dist/OpfsWorker.d.ts
CHANGED
|
@@ -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
|
|
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
|
-
*
|
|
13
|
-
*
|
|
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
|
package/dist/OpfsWorker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpfsWorker.d.ts","sourceRoot":"","sources":["../src/OpfsWorker.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/OpfsWorker.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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
|
-
*
|
|
13
|
-
*
|
|
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 => {
|
package/dist/OpfsWorker.js.map
CHANGED
|
@@ -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","
|
|
1
|
+
{"version":3,"file":"OpfsWorker.js","names":["WaSqlite","SQLiteESMFactory","AccessHandlePoolVFS","Effect","classifySqliteError","SqlError","classifyError","cause","message","operation","run","options","gen","factory","promise","sqlite3","Factory","vfs","create","vfs_register","db","acquireRelease","try","open_v2","dbName","undefined","catch","reason","sync","close","callback","resume","onMessage","event","messageId","data","port","void","id","deserialize","length","postMessage","serialize","buffer","update_hook","_op","_db","table","rowid","Number","sql","params","results","columns","stmt","statements","bind_collection","step","SQLITE_ROW","column_names","row","push","e","String","addEventListener","removeEventListener","pipe","scoped"],"sources":["../src/OpfsWorker.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/SqliteClient.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
11
|
-
*
|
|
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
|
-
*
|
|
16
|
-
*
|
|
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
|
|
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
|
-
*
|
|
33
|
-
*
|
|
38
|
+
* Service tag for the SQLite WASM client.
|
|
39
|
+
*
|
|
40
|
+
* @category services
|
|
41
|
+
* @since 4.0.0
|
|
34
42
|
*/
|
|
35
|
-
export declare const 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
|
|
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
|
|
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
|
-
*
|
|
59
|
-
*
|
|
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
|
-
*
|
|
64
|
-
*
|
|
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
|
-
*
|
|
69
|
-
*
|
|
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:
|
|
89
|
+
export declare const Transferables: Context.Reference<readonly Transferable[]>;
|
|
72
90
|
/**
|
|
73
|
-
*
|
|
74
|
-
*
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../src/SqliteClient.ts"],"names":[],"mappings":"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"}
|
package/dist/SqliteClient.js
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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
|
-
*
|
|
27
|
-
*
|
|
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
|
-
*
|
|
32
|
-
*
|
|
48
|
+
* Service tag for the SQLite WASM client.
|
|
49
|
+
*
|
|
50
|
+
* @category services
|
|
51
|
+
* @since 4.0.0
|
|
33
52
|
*/
|
|
34
|
-
export const SqliteClient = /*#__PURE__*/
|
|
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
|
-
*
|
|
40
|
-
*
|
|
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 =
|
|
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
|
-
*
|
|
175
|
-
*
|
|
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
|
-
|
|
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 =
|
|
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
|
-
*
|
|
304
|
-
*
|
|
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__*/
|
|
325
|
+
export const Transferables = /*#__PURE__*/Context.Reference("@effect/sql-sqlite-wasm/currentTransferables", {
|
|
307
326
|
defaultValue: () => []
|
|
308
327
|
});
|
|
309
328
|
/**
|
|
310
|
-
*
|
|
311
|
-
*
|
|
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
|
|
339
|
+
* @since 4.0.0
|
|
317
340
|
*/
|
|
318
|
-
export const layerMemoryConfig = config => 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
|
|
346
|
+
* @since 4.0.0
|
|
322
347
|
*/
|
|
323
|
-
export const layerMemory = config => 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
|
|
353
|
+
* @since 4.0.0
|
|
327
354
|
*/
|
|
328
|
-
export const layer = config => 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
|
|
360
|
+
* @since 4.0.0
|
|
332
361
|
*/
|
|
333
|
-
export const layerConfig = config => 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
|
package/dist/SqliteClient.js.map
CHANGED
|
@@ -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":[]}
|
package/dist/SqliteMigrator.d.ts
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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
|
|
28
|
+
* @since 4.0.0
|
|
11
29
|
*/
|
|
12
30
|
export * from "effect/unstable/sql/Migrator";
|
|
13
31
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
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
|
-
*
|
|
20
|
-
*
|
|
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
|
|
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"}
|
package/dist/SqliteMigrator.js
CHANGED
|
@@ -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
|
|
4
|
+
* @since 4.0.0
|
|
5
5
|
*/
|
|
6
6
|
export * from "effect/unstable/sql/Migrator";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
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
|
-
*
|
|
14
|
-
*
|
|
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":"
|
|
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
|
|
2
|
+
* @since 4.0.0
|
|
3
3
|
*/
|
|
4
4
|
export * as OpfsWorker from "./OpfsWorker.ts";
|
|
5
5
|
/**
|
|
6
|
-
* @since
|
|
6
|
+
* @since 4.0.0
|
|
7
7
|
*/
|
|
8
8
|
export * as SqliteClient from "./SqliteClient.ts";
|
|
9
9
|
/**
|
|
10
|
-
* @since
|
|
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
|
|
2
|
+
* @since 4.0.0
|
|
3
3
|
*/
|
|
4
4
|
export * as OpfsWorker from "./OpfsWorker.js";
|
|
5
5
|
/**
|
|
6
|
-
* @since
|
|
6
|
+
* @since 4.0.0
|
|
7
7
|
*/
|
|
8
8
|
export * as SqliteClient from "./SqliteClient.js";
|
|
9
9
|
/**
|
|
10
|
-
* @since
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
*
|
|
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
|
|
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
|
-
*
|
|
24
|
-
*
|
|
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,
|
|
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
|
)
|
package/src/SqliteClient.ts
CHANGED
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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
|
-
*
|
|
31
|
-
*
|
|
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
|
-
*
|
|
37
|
-
*
|
|
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
|
|
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
|
-
*
|
|
57
|
-
*
|
|
76
|
+
* Service tag for the SQLite WASM client.
|
|
77
|
+
*
|
|
78
|
+
* @category services
|
|
79
|
+
* @since 4.0.0
|
|
58
80
|
*/
|
|
59
|
-
export const 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
|
|
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
|
|
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
|
-
*
|
|
101
|
-
*
|
|
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,
|
|
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,
|
|
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) =>
|
|
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,
|
|
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,
|
|
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 =
|
|
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
|
-
*
|
|
262
|
-
*
|
|
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(
|
|
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 =
|
|
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
|
-
*
|
|
426
|
-
*
|
|
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 =
|
|
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
|
-
*
|
|
435
|
-
*
|
|
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
|
|
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.
|
|
449
|
-
Config.unwrap(config).
|
|
490
|
+
Layer.effectContext(
|
|
491
|
+
Config.unwrap(config).pipe(
|
|
450
492
|
Effect.flatMap(makeMemory),
|
|
451
493
|
Effect.map((client) =>
|
|
452
|
-
|
|
453
|
-
|
|
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
|
|
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.
|
|
510
|
+
Layer.effectContext(
|
|
467
511
|
Effect.map(makeMemory(config), (client) =>
|
|
468
|
-
|
|
469
|
-
|
|
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
|
|
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.
|
|
526
|
+
Layer.effectContext(
|
|
481
527
|
Effect.map(make(config), (client) =>
|
|
482
|
-
|
|
483
|
-
|
|
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
|
|
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.
|
|
495
|
-
Config.unwrap(config).
|
|
542
|
+
Layer.effectContext(
|
|
543
|
+
Config.unwrap(config).pipe(
|
|
496
544
|
Effect.flatMap(make),
|
|
497
545
|
Effect.map((client) =>
|
|
498
|
-
|
|
499
|
-
|
|
546
|
+
Context.make(SqliteClient, client).pipe(
|
|
547
|
+
Context.add(Client.SqlClient, client)
|
|
500
548
|
)
|
|
501
549
|
)
|
|
502
550
|
)
|
package/src/SqliteMigrator.ts
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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
|
|
29
|
+
* @since 4.0.0
|
|
12
30
|
*/
|
|
13
31
|
export * from "effect/unstable/sql/Migrator"
|
|
14
32
|
|
|
15
33
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
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
|
-
*
|
|
29
|
-
*
|
|
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
|
|
2
|
+
* @since 4.0.0
|
|
3
3
|
*/
|
|
4
4
|
export * as OpfsWorker from "./OpfsWorker.ts"
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* @since
|
|
7
|
+
* @since 4.0.0
|
|
8
8
|
*/
|
|
9
9
|
export * as SqliteClient from "./SqliteClient.ts"
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* @since
|
|
12
|
+
* @since 4.0.0
|
|
13
13
|
*/
|
|
14
14
|
export * as SqliteMigrator from "./SqliteMigrator.ts"
|
package/src/sqlite-wasm.d.ts
CHANGED
|
@@ -1,19 +1,47 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
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
|
-
*
|
|
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
|
}
|