@effect/sql-sqlite-wasm 0.20.5 → 0.21.0

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,15 +1,19 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
+ import * as Reactivity from "@effect/experimental/Reactivity";
4
5
  import * as Client from "@effect/sql/SqlClient";
5
6
  import { SqlError } from "@effect/sql/SqlError";
6
- import type { OpenMode } from "@sqlite.org/sqlite-wasm";
7
7
  import * as Config from "effect/Config";
8
8
  import type { ConfigError } from "effect/ConfigError";
9
9
  import * as Context from "effect/Context";
10
10
  import * as Effect from "effect/Effect";
11
+ import * as FiberRef from "effect/FiberRef";
11
12
  import * as Layer from "effect/Layer";
13
+ import type * as Mailbox from "effect/Mailbox";
14
+ import type { ReadonlyRecord } from "effect/Record";
12
15
  import * as Scope from "effect/Scope";
16
+ import * as Stream from "effect/Stream";
13
17
  /**
14
18
  * @category type ids
15
19
  * @since 1.0.0
@@ -26,8 +30,11 @@ export type TypeId = typeof TypeId;
26
30
  */
27
31
  export interface SqliteClient extends Client.SqlClient {
28
32
  readonly [TypeId]: TypeId;
29
- readonly config: SqliteClientConfig;
33
+ readonly config: SqliteClientMemoryConfig;
34
+ readonly reactive: <A, E, R>(keys: ReadonlyArray<string> | ReadonlyRecord<string, ReadonlyArray<number>>, effect: Effect.Effect<A, E, R>) => Stream.Stream<A, E, R>;
35
+ readonly reactiveMailbox: <A, E, R>(keys: ReadonlyArray<string> | ReadonlyRecord<string, ReadonlyArray<number>>, effect: Effect.Effect<A, E, R>) => Effect.Effect<Mailbox.ReadonlyMailbox<A>, E, R | Scope.Scope>;
30
36
  readonly export: Effect.Effect<Uint8Array, SqlError>;
37
+ readonly import: (data: Uint8Array) => Effect.Effect<void, SqlError>;
31
38
  /** Not supported in sqlite */
32
39
  readonly updateValues: never;
33
40
  }
@@ -40,34 +47,61 @@ export declare const SqliteClient: Context.Tag<SqliteClient, SqliteClient>;
40
47
  * @category models
41
48
  * @since 1.0.0
42
49
  */
43
- export type SqliteClientConfig = {
44
- readonly mode?: "vfs";
45
- readonly dbName?: string;
46
- readonly openMode?: OpenMode;
50
+ export interface SqliteClientMemoryConfig {
51
+ readonly installReactivityHooks?: boolean;
47
52
  readonly spanAttributes?: Record<string, unknown>;
48
53
  readonly transformResultNames?: (str: string) => string;
49
54
  readonly transformQueryNames?: (str: string) => string;
50
- } | {
51
- readonly mode: "opfs";
52
- readonly dbName: string;
53
- readonly openMode?: OpenMode;
55
+ }
56
+ /**
57
+ * @category models
58
+ * @since 1.0.0
59
+ */
60
+ export interface SqliteClientConfig {
61
+ readonly worker: Effect.Effect<Worker | SharedWorker | MessagePort, never, Scope.Scope>;
62
+ readonly installReactivityHooks?: boolean;
54
63
  readonly spanAttributes?: Record<string, unknown>;
55
64
  readonly transformResultNames?: (str: string) => string;
56
65
  readonly transformQueryNames?: (str: string) => string;
57
- };
66
+ }
58
67
  /**
59
68
  * @category constructor
60
69
  * @since 1.0.0
61
70
  */
62
- export declare const make: (options: SqliteClientConfig) => Effect.Effect<SqliteClient, never, Scope.Scope>;
71
+ export declare const makeMemory: (options: SqliteClientMemoryConfig) => Effect.Effect<SqliteClient, SqlError, Scope.Scope | Reactivity.Reactivity>;
72
+ /**
73
+ * @category constructor
74
+ * @since 1.0.0
75
+ */
76
+ export declare const make: (options: SqliteClientConfig) => Effect.Effect<SqliteClient, SqlError, Scope.Scope | Reactivity.Reactivity>;
77
+ /**
78
+ * @category tranferables
79
+ * @since 1.0.0
80
+ */
81
+ export declare const currentTransferables: FiberRef.FiberRef<ReadonlyArray<Transferable>>;
82
+ /**
83
+ * @category tranferables
84
+ * @since 1.0.0
85
+ */
86
+ export declare const withTransferables: (transferables: ReadonlyArray<Transferable>) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
87
+ /**
88
+ * @category layers
89
+ * @since 1.0.0
90
+ */
91
+ export declare const layerMemoryConfig: (config: Config.Config.Wrap<SqliteClientMemoryConfig>) => Layer.Layer<SqliteClient | Client.SqlClient, ConfigError | SqlError>;
92
+ /**
93
+ * @category layers
94
+ * @since 1.0.0
95
+ */
96
+ export declare const layerMemory: (config: SqliteClientMemoryConfig) => Layer.Layer<SqliteClient | Client.SqlClient, ConfigError | SqlError>;
63
97
  /**
64
98
  * @category layers
65
99
  * @since 1.0.0
66
100
  */
67
- export declare const layerConfig: (config: Config.Config.Wrap<SqliteClientConfig>) => Layer.Layer<SqliteClient | Client.SqlClient, ConfigError>;
101
+ export declare const layer: (config: SqliteClientConfig) => Layer.Layer<SqliteClient | Client.SqlClient, ConfigError | SqlError>;
68
102
  /**
69
103
  * @category layers
70
104
  * @since 1.0.0
71
105
  */
72
- export declare const layer: (config: SqliteClientConfig) => Layer.Layer<SqliteClient | Client.SqlClient, ConfigError>;
106
+ export declare const layerConfig: (config: Config.Config.Wrap<SqliteClientConfig>) => Layer.Layer<SqliteClient | Client.SqlClient, ConfigError | SqlError>;
73
107
  //# sourceMappingURL=SqliteClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../../src/SqliteClient.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAG/C,OAAO,KAAK,EAAM,QAAQ,EAAW,MAAM,yBAAyB,CAAA;AAEpE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,MAA2D,CAAA;AAEvF;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC;;;GAGG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,SAAS;IACpD,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAA;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAEpD,8BAA8B;IAC9B,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAA;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,yCAA2E,CAAA;AAEpG;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IACA,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACvD,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;IACvD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAA;CACvD,CAAA;AAUH;;;GAGG;AACH,eAAO,MAAM,IAAI,YACN,kBAAkB,KAC1B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAwG7C,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,WAAW,WACd,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAC7C,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,WAAW,CAUxD,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,KAAK,WACR,kBAAkB,KACzB,KAAK,CAAC,KAAK,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,EAAE,WAAW,CAMxD,CAAA"}
1
+ {"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../../src/SqliteClient.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ export * as OpfsWorker from "./OpfsWorker.js";
1
5
  /**
2
6
  * @since 1.0.0
3
7
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AAEjD;;GAEG;AACH,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=opfsWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opfsWorker.d.ts","sourceRoot":"","sources":["../../../src/internal/opfsWorker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ /// <reference lib="webworker" />
5
+ import { SqlError } from "@effect/sql/SqlError";
6
+ import * as WaSqlite from "@effect/wa-sqlite";
7
+ import SQLiteESMFactory from "@effect/wa-sqlite/dist/wa-sqlite.mjs";
8
+ import { AccessHandlePoolVFS } from "@effect/wa-sqlite/src/examples/AccessHandlePoolVFS.js";
9
+ import * as Effect from "effect/Effect";
10
+ /**
11
+ * @category constructor
12
+ * @since 1.0.0
13
+ */
14
+ export const run = options => Effect.gen(function* () {
15
+ const factory = yield* Effect.promise(() => SQLiteESMFactory());
16
+ const sqlite3 = WaSqlite.Factory(factory);
17
+ const vfs = yield* Effect.promise(() => AccessHandlePoolVFS.create("opfs", factory));
18
+ sqlite3.vfs_register(vfs, false);
19
+ const db = yield* Effect.acquireRelease(Effect.try({
20
+ try: () => sqlite3.open_v2(options.dbName, undefined, "opfs"),
21
+ catch: cause => new SqlError({
22
+ cause,
23
+ message: "Failed to open database"
24
+ })
25
+ }), db => Effect.sync(() => sqlite3.close(db)));
26
+ return yield* Effect.async(resume => {
27
+ const onMessage = event => {
28
+ let messageId;
29
+ const message = event.data;
30
+ try {
31
+ switch (message[0]) {
32
+ case "close":
33
+ {
34
+ options.port.close();
35
+ return resume(Effect.void);
36
+ }
37
+ case "import":
38
+ {
39
+ const [, id, data] = message;
40
+ messageId = id;
41
+ sqlite3.deserialize(db, "main", data, data.length, data.length, 1 | 2);
42
+ options.port.postMessage([id, void 0, void 0]);
43
+ return;
44
+ }
45
+ case "export":
46
+ {
47
+ const [, id] = message;
48
+ messageId = id;
49
+ const data = sqlite3.serialize(db, "main");
50
+ options.port.postMessage([id, undefined, data], [data.buffer]);
51
+ return;
52
+ }
53
+ case "update_hook":
54
+ {
55
+ messageId = -1;
56
+ sqlite3.update_hook(db, (_op, _db, table, rowid) => {
57
+ if (!table) return;
58
+ options.port.postMessage(["update_hook", table, Number(rowid)]);
59
+ });
60
+ return;
61
+ }
62
+ default:
63
+ {
64
+ const [id, sql, params] = message;
65
+ messageId = id;
66
+ const results = [];
67
+ let columns;
68
+ for (const stmt of sqlite3.statements(db, sql)) {
69
+ sqlite3.bind_collection(stmt, params);
70
+ while (sqlite3.step(stmt) === WaSqlite.SQLITE_ROW) {
71
+ columns = columns ?? sqlite3.column_names(stmt);
72
+ const row = sqlite3.row(stmt);
73
+ results.push(row);
74
+ }
75
+ }
76
+ options.port.postMessage([id, undefined, [columns, results]]);
77
+ return;
78
+ }
79
+ }
80
+ } catch (e) {
81
+ const message = "message" in e ? e.message : String(e);
82
+ options.port.postMessage([messageId, message, undefined]);
83
+ }
84
+ };
85
+ options.port.addEventListener("message", onMessage);
86
+ options.port.postMessage(["ready", undefined, undefined]);
87
+ return Effect.sync(() => {
88
+ options.port.removeEventListener("message", onMessage);
89
+ });
90
+ });
91
+ }).pipe(Effect.scoped);
92
+ //# sourceMappingURL=OpfsWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpfsWorker.js","names":["SqlError","WaSqlite","SQLiteESMFactory","AccessHandlePoolVFS","Effect","run","options","gen","factory","promise","sqlite3","Factory","vfs","create","vfs_register","db","acquireRelease","try","open_v2","dbName","undefined","catch","cause","message","sync","close","async","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,17 +1,26 @@
1
1
  /**
2
2
  * @since 1.0.0
3
3
  */
4
+ import * as Reactivity from "@effect/experimental/Reactivity";
4
5
  import * as Client from "@effect/sql/SqlClient";
5
6
  import { SqlError } from "@effect/sql/SqlError";
6
7
  import * as Statement from "@effect/sql/Statement";
8
+ import * as WaSqlite from "@effect/wa-sqlite";
9
+ import SQLiteESMFactory from "@effect/wa-sqlite/dist/wa-sqlite.mjs";
10
+ import { MemoryVFS } from "@effect/wa-sqlite/src/examples/MemoryVFS.js";
7
11
  import * as Otel from "@opentelemetry/semantic-conventions";
8
- import sqliteInit from "@sqlite.org/sqlite-wasm";
9
12
  import * as Config from "effect/Config";
10
13
  import * as Context from "effect/Context";
14
+ import * as Deferred from "effect/Deferred";
11
15
  import * as Effect from "effect/Effect";
16
+ import * as Exit from "effect/Exit";
17
+ import * as FiberRef from "effect/FiberRef";
12
18
  import { identity } from "effect/Function";
19
+ import { globalValue } from "effect/GlobalValue";
13
20
  import * as Layer from "effect/Layer";
14
21
  import * as Scope from "effect/Scope";
22
+ import * as ScopedRef from "effect/ScopedRef";
23
+ import * as Stream from "effect/Stream";
15
24
  /**
16
25
  * @category type ids
17
26
  * @since 1.0.0
@@ -22,35 +31,62 @@ export const TypeId = /*#__PURE__*/Symbol.for("@effect/sql-sqlite-wasm/SqliteCli
22
31
  * @since 1.0.0
23
32
  */
24
33
  export const SqliteClient = /*#__PURE__*/Context.GenericTag("@effect/sql-sqlite-wasm/SqliteClient");
25
- const initEffect = /*#__PURE__*/Effect.runSync( /*#__PURE__*/Effect.cached( /*#__PURE__*/Effect.promise(() => sqliteInit())));
34
+ const initModule = /*#__PURE__*/Effect.runSync( /*#__PURE__*/Effect.cached( /*#__PURE__*/Effect.promise(() => SQLiteESMFactory())));
35
+ const initEffect = /*#__PURE__*/Effect.runSync( /*#__PURE__*/Effect.cached( /*#__PURE__*/initModule.pipe( /*#__PURE__*/Effect.map(module => WaSqlite.Factory(module)))));
36
+ const registered = /*#__PURE__*/globalValue("@effect/sql-sqlite-wasm/registered", () => new Set());
26
37
  /**
27
38
  * @category constructor
28
39
  * @since 1.0.0
29
40
  */
30
- export const make = options => Effect.gen(function* (_) {
41
+ export const makeMemory = options => Effect.gen(function* () {
42
+ const reactivity = yield* Reactivity.Reactivity;
31
43
  const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);
32
44
  const transformRows = Statement.defaultTransforms(options.transformResultNames).array;
33
- const makeConnection = Effect.gen(function* (_) {
34
- const sqlite3 = yield* _(initEffect);
35
- let db;
36
- if (options.mode === "opfs") {
37
- if (!sqlite3.oo1.OpfsDb) {
38
- yield* _(Effect.dieMessage("opfs mode not available"));
39
- }
40
- db = new sqlite3.oo1.OpfsDb(options.dbName, options.openMode ?? "c");
41
- } else {
42
- db = new sqlite3.oo1.DB(options.dbName, options.openMode);
45
+ const makeConnection = Effect.gen(function* () {
46
+ const sqlite3 = yield* initEffect;
47
+ if (registered.has("memory-vfs") === false) {
48
+ registered.add("memory-vfs");
49
+ const module = yield* initModule;
50
+ // @ts-expect-error
51
+ const vfs = new MemoryVFS("memory-vfs", module);
52
+ sqlite3.vfs_register(vfs, false);
53
+ }
54
+ const db = yield* Effect.acquireRelease(Effect.try({
55
+ try: () => sqlite3.open_v2(":memory:", undefined, "memory-vfs"),
56
+ catch: cause => new SqlError({
57
+ cause,
58
+ message: "Failed to open database"
59
+ })
60
+ }), db => Effect.sync(() => sqlite3.close(db)));
61
+ if (options.installReactivityHooks) {
62
+ sqlite3.update_hook(db, (_op, _db, table, rowid) => {
63
+ if (!table) return;
64
+ const id = Number(rowid);
65
+ reactivity.unsafeInvalidate({
66
+ [table]: [id]
67
+ });
68
+ });
43
69
  }
44
- yield* _(Effect.addFinalizer(() => Effect.sync(() => db.close())));
45
70
  const run = (sql, params = [], rowMode = "object") => Effect.try({
46
71
  try: () => {
47
72
  const results = [];
48
- db.exec({
49
- sql,
50
- bind: params.length ? params : undefined,
51
- rowMode,
52
- resultRows: results
53
- });
73
+ for (const stmt of sqlite3.statements(db, sql)) {
74
+ let columns;
75
+ sqlite3.bind_collection(stmt, params);
76
+ while (sqlite3.step(stmt) === WaSqlite.SQLITE_ROW) {
77
+ columns = columns ?? sqlite3.column_names(stmt);
78
+ const row = sqlite3.row(stmt);
79
+ if (rowMode === "object") {
80
+ const obj = {};
81
+ for (let i = 0; i < columns.length; i++) {
82
+ obj[columns[i]] = row[i];
83
+ }
84
+ results.push(obj);
85
+ } else {
86
+ results.push(row);
87
+ }
88
+ }
89
+ }
54
90
  return results;
55
91
  },
56
92
  catch: cause => new SqlError({
@@ -75,20 +111,49 @@ export const make = options => Effect.gen(function* (_) {
75
111
  executeUnprepared(sql, params) {
76
112
  return runTransform(sql, params);
77
113
  },
78
- executeStream() {
79
- return Effect.dieMessage("executeStream not implemented");
114
+ executeStream(sql, params) {
115
+ return Stream.fromIterableEffect(Effect.try({
116
+ *try() {
117
+ for (const stmt of sqlite3.statements(db, sql)) {
118
+ let columns;
119
+ sqlite3.bind_collection(stmt, params);
120
+ while (sqlite3.step(stmt) === WaSqlite.SQLITE_ROW) {
121
+ columns = columns ?? sqlite3.column_names(stmt);
122
+ const row = sqlite3.row(stmt);
123
+ const obj = {};
124
+ for (let i = 0; i < columns.length; i++) {
125
+ obj[columns[i]] = row[i];
126
+ }
127
+ yield obj;
128
+ }
129
+ }
130
+ },
131
+ catch: cause => new SqlError({
132
+ cause,
133
+ message: "Failed to execute statement"
134
+ })
135
+ }));
80
136
  },
81
137
  export: Effect.try({
82
- try: () => sqlite3.capi.sqlite3_js_db_export(db.pointer),
138
+ try: () => sqlite3.serialize(db, "main"),
83
139
  catch: cause => new SqlError({
84
140
  cause,
85
141
  message: "Failed to export database"
86
142
  })
87
- })
143
+ }),
144
+ import(data) {
145
+ return Effect.try({
146
+ try: () => sqlite3.deserialize(db, "main", data, data.length, data.length, 1 | 2),
147
+ catch: cause => new SqlError({
148
+ cause,
149
+ message: "Failed to import database"
150
+ })
151
+ });
152
+ }
88
153
  });
89
154
  });
90
- const semaphore = yield* _(Effect.makeSemaphore(1));
91
- const connection = yield* _(makeConnection);
155
+ const semaphore = yield* Effect.makeSemaphore(1);
156
+ const connection = yield* makeConnection;
92
157
  const acquirer = semaphore.withPermits(1)(Effect.succeed(connection));
93
158
  const transactionAcquirer = Effect.uninterruptibleMask(restore => Effect.as(Effect.zipRight(restore(semaphore.take(1)), Effect.tap(Effect.scope, scope => Scope.addFinalizer(scope, semaphore.release(1)))), connection));
94
159
  return Object.assign(Client.make({
@@ -99,17 +164,170 @@ export const make = options => Effect.gen(function* (_) {
99
164
  }), {
100
165
  [TypeId]: TypeId,
101
166
  config: options,
102
- export: Effect.flatMap(acquirer, _ => _.export)
167
+ reactive: reactivity.stream,
168
+ reactiveMailbox: reactivity.query,
169
+ export: semaphore.withPermits(1)(connection.export),
170
+ import(data) {
171
+ return semaphore.withPermits(1)(connection.import(data));
172
+ }
173
+ });
174
+ });
175
+ /**
176
+ * @category constructor
177
+ * @since 1.0.0
178
+ */
179
+ export const make = options => Effect.gen(function* () {
180
+ const reactivity = yield* Reactivity.Reactivity;
181
+ const compiler = Statement.makeCompilerSqlite(options.transformQueryNames);
182
+ const transformRows = Statement.defaultTransforms(options.transformResultNames).array;
183
+ const pending = new Map();
184
+ const makeConnection = Effect.gen(function* () {
185
+ let currentId = 0;
186
+ const scope = yield* Effect.scope;
187
+ const readyDeferred = yield* Deferred.make();
188
+ const worker = yield* options.worker;
189
+ const port = "port" in worker ? worker.port : worker;
190
+ const postMessage = (message, transferables) => port.postMessage(message, transferables);
191
+ yield* Scope.addFinalizer(scope, Effect.sync(() => postMessage(["close"])));
192
+ const onMessage = event => {
193
+ const [id, error, results] = event.data;
194
+ if (id === "ready") {
195
+ Deferred.unsafeDone(readyDeferred, Exit.void);
196
+ return;
197
+ } else if (id === "update_hook") {
198
+ reactivity.unsafeInvalidate({
199
+ [error]: [results]
200
+ });
201
+ return;
202
+ } else {
203
+ const resume = pending.get(id);
204
+ if (!resume) return;
205
+ pending.delete(id);
206
+ if (error) {
207
+ resume(Exit.fail(new SqlError({
208
+ cause: error,
209
+ message: "Failed to execute statement"
210
+ })));
211
+ } else {
212
+ resume(Exit.succeed(results));
213
+ }
214
+ }
215
+ };
216
+ port.addEventListener("message", onMessage);
217
+ function onError() {
218
+ Effect.runFork(ScopedRef.set(connectionRef, makeConnection));
219
+ }
220
+ if ("onerror" in worker) {
221
+ worker.addEventListener("error", onError);
222
+ }
223
+ yield* Scope.addFinalizer(scope, Effect.sync(() => {
224
+ worker.removeEventListener("message", onMessage);
225
+ worker.removeEventListener("error", onError);
226
+ }));
227
+ yield* Deferred.await(readyDeferred);
228
+ if (options.installReactivityHooks) {
229
+ postMessage(["update_hook"]);
230
+ }
231
+ const send = (id, message, transferables) => Effect.async(resume => {
232
+ pending.set(id, resume);
233
+ postMessage(message, transferables);
234
+ });
235
+ const run = (sql, params = [], rowMode = "object") => {
236
+ const rows = Effect.withFiberRuntime(fiber => {
237
+ const id = currentId++;
238
+ return send(id, [id, sql, params], fiber.getFiberRef(currentTransferables));
239
+ });
240
+ return rowMode === "object" ? Effect.map(rows, extractObject) : Effect.map(rows, extractRows);
241
+ };
242
+ const runTransform = options.transformResultNames ? (sql, params) => Effect.map(run(sql, params), transformRows) : run;
243
+ return identity({
244
+ execute(sql, params) {
245
+ return runTransform(sql, params);
246
+ },
247
+ executeRaw(sql, params) {
248
+ return run(sql, params);
249
+ },
250
+ executeValues(sql, params) {
251
+ return run(sql, params, "array");
252
+ },
253
+ executeWithoutTransform(sql, params) {
254
+ return run(sql, params);
255
+ },
256
+ executeUnprepared(sql, params) {
257
+ return runTransform(sql, params);
258
+ },
259
+ executeStream() {
260
+ return Effect.dieMessage("executeStream not implemented");
261
+ },
262
+ export: Effect.suspend(() => {
263
+ const id = currentId++;
264
+ return send(id, ["export", id]);
265
+ }),
266
+ import(data) {
267
+ return Effect.suspend(() => {
268
+ const id = currentId++;
269
+ return send(id, ["import", id, data], [data.buffer]);
270
+ });
271
+ }
272
+ });
273
+ });
274
+ const connectionRef = yield* ScopedRef.fromAcquire(makeConnection);
275
+ const semaphore = yield* Effect.makeSemaphore(1);
276
+ const acquirer = semaphore.withPermits(1)(ScopedRef.get(connectionRef));
277
+ const transactionAcquirer = Effect.uninterruptibleMask(restore => Effect.zipRight(Effect.zipRight(restore(semaphore.take(1)), Effect.tap(Effect.scope, scope => Scope.addFinalizer(scope, semaphore.release(1)))), ScopedRef.get(connectionRef)));
278
+ return Object.assign(Client.make({
279
+ acquirer,
280
+ compiler,
281
+ transactionAcquirer,
282
+ spanAttributes: [...(options.spanAttributes ? Object.entries(options.spanAttributes) : []), [Otel.SEMATTRS_DB_SYSTEM, Otel.DBSYSTEMVALUES_SQLITE]]
283
+ }), {
284
+ [TypeId]: TypeId,
285
+ config: options,
286
+ reactive: reactivity.stream,
287
+ reactiveMailbox: reactivity.query,
288
+ export: Effect.flatMap(acquirer, connection => connection.export),
289
+ import(data) {
290
+ return Effect.flatMap(acquirer, connection => connection.import(data));
291
+ }
103
292
  });
104
293
  });
294
+ function rowToObject(columns, row) {
295
+ const obj = {};
296
+ for (let i = 0; i < columns.length; i++) {
297
+ obj[columns[i]] = row[i];
298
+ }
299
+ return obj;
300
+ }
301
+ const extractObject = rows => rows[1].map(row => rowToObject(rows[0], row));
302
+ const extractRows = rows => rows[1];
303
+ /**
304
+ * @category tranferables
305
+ * @since 1.0.0
306
+ */
307
+ export const currentTransferables = /*#__PURE__*/globalValue("@effect/sql-sqlite-wasm/currentTransferables", () => FiberRef.unsafeMake([]));
308
+ /**
309
+ * @category tranferables
310
+ * @since 1.0.0
311
+ */
312
+ export const withTransferables = transferables => effect => Effect.locally(effect, currentTransferables, transferables);
313
+ /**
314
+ * @category layers
315
+ * @since 1.0.0
316
+ */
317
+ export const layerMemoryConfig = config => Layer.scopedContext(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));
318
+ /**
319
+ * @category layers
320
+ * @since 1.0.0
321
+ */
322
+ export const layerMemory = config => Layer.scopedContext(Effect.map(makeMemory(config), client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
105
323
  /**
106
324
  * @category layers
107
325
  * @since 1.0.0
108
326
  */
109
- export const layerConfig = config => Layer.scopedContext(Config.unwrap(config).pipe(Effect.flatMap(make), Effect.map(client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client)))));
327
+ export const layer = config => Layer.scopedContext(Effect.map(make(config), client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client)))).pipe(Layer.provide(Reactivity.layer));
110
328
  /**
111
329
  * @category layers
112
330
  * @since 1.0.0
113
331
  */
114
- export const layer = config => Layer.scopedContext(Effect.map(make(config), client => Context.make(SqliteClient, client).pipe(Context.add(Client.SqlClient, client))));
332
+ export const layerConfig = config => Layer.scopedContext(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));
115
333
  //# sourceMappingURL=SqliteClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteClient.js","names":["Client","SqlError","Statement","Otel","sqliteInit","Config","Context","Effect","identity","Layer","Scope","TypeId","Symbol","for","SqliteClient","GenericTag","initEffect","runSync","cached","promise","make","options","gen","_","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","makeConnection","sqlite3","db","mode","oo1","OpfsDb","dieMessage","dbName","openMode","DB","addFinalizer","sync","close","run","sql","params","rowMode","try","results","exec","bind","length","undefined","resultRows","catch","cause","message","runTransform","map","execute","executeRaw","executeValues","executeWithoutTransform","executeUnprepared","executeStream","export","capi","sqlite3_js_db_export","pointer","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","tap","scope","release","Object","assign","spanAttributes","entries","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","flatMap","layerConfig","scopedContext","unwrap","pipe","client","add","SqlClient","layer"],"sources":["../../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SqliteClient.js","names":["Reactivity","Client","SqlError","Statement","WaSqlite","SQLiteESMFactory","MemoryVFS","Otel","Config","Context","Deferred","Effect","Exit","FiberRef","identity","globalValue","Layer","Scope","ScopedRef","Stream","TypeId","Symbol","for","SqliteClient","GenericTag","initModule","runSync","cached","promise","initEffect","pipe","map","module","Factory","registered","Set","makeMemory","options","gen","reactivity","compiler","makeCompilerSqlite","transformQueryNames","transformRows","defaultTransforms","transformResultNames","array","makeConnection","sqlite3","has","add","vfs","vfs_register","db","acquireRelease","try","open_v2","undefined","catch","cause","message","sync","close","installReactivityHooks","update_hook","_op","_db","table","rowid","id","Number","unsafeInvalidate","run","sql","params","rowMode","results","stmt","statements","columns","bind_collection","step","SQLITE_ROW","column_names","row","obj","i","length","push","runTransform","execute","executeRaw","executeValues","executeWithoutTransform","executeUnprepared","executeStream","fromIterableEffect","export","serialize","import","data","deserialize","semaphore","makeSemaphore","connection","acquirer","withPermits","succeed","transactionAcquirer","uninterruptibleMask","restore","as","zipRight","take","tap","scope","addFinalizer","release","Object","assign","make","spanAttributes","entries","SEMATTRS_DB_SYSTEM","DBSYSTEMVALUES_SQLITE","config","reactive","stream","reactiveMailbox","query","pending","Map","currentId","readyDeferred","worker","port","postMessage","transferables","onMessage","event","error","unsafeDone","void","resume","get","delete","fail","addEventListener","onError","runFork","set","connectionRef","removeEventListener","await","send","async","rows","withFiberRuntime","fiber","getFiberRef","currentTransferables","extractObject","extractRows","dieMessage","suspend","buffer","fromAcquire","flatMap","rowToObject","unsafeMake","withTransferables","effect","locally","layerMemoryConfig","scopedContext","unwrap","client","SqlClient","provide","layer","layerMemory","layerConfig"],"sources":["../../src/SqliteClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}