@effect/sql-sqlite-wasm 0.20.6 → 0.21.1
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/OpfsWorker/package.json +6 -0
- package/dist/cjs/OpfsWorker.js +103 -0
- package/dist/cjs/OpfsWorker.js.map +1 -0
- package/dist/cjs/SqliteClient.js +254 -32
- package/dist/cjs/SqliteClient.js.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/internal/opfsWorker.js +6 -0
- package/dist/cjs/internal/opfsWorker.js.map +1 -0
- package/dist/dts/OpfsWorker.d.ts +19 -0
- package/dist/dts/OpfsWorker.d.ts.map +1 -0
- package/dist/dts/SqliteClient.d.ts +48 -14
- package/dist/dts/SqliteClient.d.ts.map +1 -1
- package/dist/dts/index.d.ts +4 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/opfsWorker.d.ts +2 -0
- package/dist/dts/internal/opfsWorker.d.ts.map +1 -0
- package/dist/esm/OpfsWorker.js +92 -0
- package/dist/esm/OpfsWorker.js.map +1 -0
- package/dist/esm/SqliteClient.js +247 -29
- package/dist/esm/SqliteClient.js.map +1 -1
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/opfsWorker.js +2 -0
- package/dist/esm/internal/opfsWorker.js.map +1 -0
- package/package.json +12 -4
- package/src/OpfsWorker.ts +101 -0
- package/src/SqliteClient.ts +360 -57
- package/src/index.ts +5 -0
- package/src/internal/opfsWorker.ts +9 -0
- package/src/sqlite-wasm.d.ts +10 -38
|
@@ -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:
|
|
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
|
|
44
|
-
readonly
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
1
|
+
{"version":3,"file":"SqliteClient.d.ts","sourceRoot":"","sources":["../../src/SqliteClient.ts"],"names":[],"mappings":"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"}
|
package/dist/dts/index.d.ts
CHANGED
package/dist/dts/index.d.ts.map
CHANGED
|
@@ -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 @@
|
|
|
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":[]}
|
package/dist/esm/SqliteClient.js
CHANGED
|
@@ -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
|
|
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
|
|
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*
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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.
|
|
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.
|
|
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*
|
|
91
|
-
const connection = yield*
|
|
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
|
-
|
|
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
|
|
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
|
|
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":"AAAA;;;AAGA,OAAO,KAAKA,UAAU,MAAM,iCAAiC;AAC7D,OAAO,KAAKC,MAAM,MAAM,uBAAuB;AAE/C,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,OAAO,KAAKC,SAAS,MAAM,uBAAuB;AAClD,OAAO,KAAKC,QAAQ,MAAM,mBAAmB;AAC7C,OAAOC,gBAAgB,MAAM,sCAAsC;AACnE,SAASC,SAAS,QAAQ,6CAA6C;AACvE,OAAO,KAAKC,IAAI,MAAM,qCAAqC;AAC3D,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,IAAI,MAAM,aAAa;AACnC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,WAAW,QAAQ,oBAAoB;AAChD,OAAO,KAAKC,KAAK,MAAM,cAAc;AAGrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,MAAM,MAAM,eAAe;AAGvC;;;;AAIA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,sCAAsC,CAAC;AA8BvF;;;;AAIA,OAAO,MAAMC,YAAY,gBAAGd,OAAO,CAACe,UAAU,CAAe,sCAAsC,CAAC;AA8BpG,MAAMC,UAAU,gBAAGd,MAAM,CAACe,OAAO,eAC/Bf,MAAM,CAACgB,MAAM,eAAChB,MAAM,CAACiB,OAAO,CAAC,MAAMvB,gBAAgB,EAAE,CAAC,CAAC,CACxD;AAED,MAAMwB,UAAU,gBAAGlB,MAAM,CAACe,OAAO,eAC/Bf,MAAM,CAACgB,MAAM,eAACF,UAAU,CAACK,IAAI,eAACnB,MAAM,CAACoB,GAAG,CAAEC,MAAM,IAAK5B,QAAQ,CAAC6B,OAAO,CAACD,MAAM,CAAC,CAAC,CAAC,CAAC,CACjF;AAED,MAAME,UAAU,gBAAGnB,WAAW,CAAC,oCAAoC,EAAE,MAAM,IAAIoB,GAAG,EAAU,CAAC;AAE7F;;;;AAIA,OAAO,MAAMC,UAAU,GACrBC,OAAiC,IAEjC1B,MAAM,CAAC2B,GAAG,CAAC,aAAS;EAClB,MAAMC,UAAU,GAAG,OAAOvC,UAAU,CAACA,UAAU;EAC/C,MAAMwC,QAAQ,GAAGrC,SAAS,CAACsC,kBAAkB,CAACJ,OAAO,CAACK,mBAAmB,CAAC;EAC1E,MAAMC,aAAa,GAAGxC,SAAS,CAACyC,iBAAiB,CAC/CP,OAAO,CAACQ,oBAAqB,CAC9B,CAACC,KAAK;EAEP,MAAMC,cAAc,GAAGpC,MAAM,CAAC2B,GAAG,CAAC,aAAS;IACzC,MAAMU,OAAO,GAAG,OAAOnB,UAAU;IAEjC,IAAIK,UAAU,CAACe,GAAG,CAAC,YAAY,CAAC,KAAK,KAAK,EAAE;MAC1Cf,UAAU,CAACgB,GAAG,CAAC,YAAY,CAAC;MAC5B,MAAMlB,MAAM,GAAG,OAAOP,UAAU;MAChC;MACA,MAAM0B,GAAG,GAAG,IAAI7C,SAAS,CAAC,YAAY,EAAE0B,MAAM,CAAC;MAC/CgB,OAAO,CAACI,YAAY,CAACD,GAAU,EAAE,KAAK,CAAC;IACzC;IACA,MAAME,EAAE,GAAG,OAAO1C,MAAM,CAAC2C,cAAc,CACrC3C,MAAM,CAAC4C,GAAG,CAAC;MACTA,GAAG,EAAEA,CAAA,KAAMP,OAAO,CAACQ,OAAO,CAAC,UAAU,EAAEC,SAAS,EAAE,YAAY,CAAC;MAC/DC,KAAK,EAAGC,KAAK,IAAK,IAAIzD,QAAQ,CAAC;QAAEyD,KAAK;QAAEC,OAAO,EAAE;MAAyB,CAAE;KAC7E,CAAC,EACDP,EAAE,IAAK1C,MAAM,CAACkD,IAAI,CAAC,MAAMb,OAAO,CAACc,KAAK,CAACT,EAAE,CAAC,CAAC,CAC7C;IAED,IAAIhB,OAAO,CAAC0B,sBAAsB,EAAE;MAClCf,OAAO,CAACgB,WAAW,CAACX,EAAE,EAAE,CAACY,GAAG,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,KAAI;QACjD,IAAI,CAACD,KAAK,EAAE;QACZ,MAAME,EAAE,GAAGC,MAAM,CAACF,KAAK,CAAC;QACxB7B,UAAU,CAACgC,gBAAgB,CAAC;UAAE,CAACJ,KAAK,GAAG,CAACE,EAAE;QAAC,CAAE,CAAC;MAChD,CAAC,CAAC;IACJ;IAEA,MAAMG,GAAG,GAAGA,CACVC,GAAW,EACXC,MAAA,GAA6C,EAAE,EAC/CC,OAAA,GAA8B,QAAQ,KAEtChE,MAAM,CAAC4C,GAAG,CAAC;MACTA,GAAG,EAAEA,CAAA,KAAK;QACR,MAAMqB,OAAO,GAAe,EAAE;QAC9B,KAAK,MAAMC,IAAI,IAAI7B,OAAO,CAAC8B,UAAU,CAACzB,EAAE,EAAEoB,GAAG,CAAC,EAAE;UAC9C,IAAIM,OAAkC;UACtC/B,OAAO,CAACgC,eAAe,CAACH,IAAI,EAAEH,MAAa,CAAC;UAC5C,OAAO1B,OAAO,CAACiC,IAAI,CAACJ,IAAI,CAAC,KAAKzE,QAAQ,CAAC8E,UAAU,EAAE;YACjDH,OAAO,GAAGA,OAAO,IAAI/B,OAAO,CAACmC,YAAY,CAACN,IAAI,CAAC;YAC/C,MAAMO,GAAG,GAAGpC,OAAO,CAACoC,GAAG,CAACP,IAAI,CAAC;YAC7B,IAAIF,OAAO,KAAK,QAAQ,EAAE;cACxB,MAAMU,GAAG,GAAwB,EAAE;cACnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,OAAO,CAACQ,MAAM,EAAED,CAAC,EAAE,EAAE;gBACvCD,GAAG,CAACN,OAAO,CAACO,CAAC,CAAC,CAAC,GAAGF,GAAG,CAACE,CAAC,CAAC;cAC1B;cACAV,OAAO,CAACY,IAAI,CAACH,GAAG,CAAC;YACnB,CAAC,MAAM;cACLT,OAAO,CAACY,IAAI,CAACJ,GAAG,CAAC;YACnB;UACF;QACF;QACA,OAAOR,OAAO;MAChB,CAAC;MACDlB,KAAK,EAAGC,KAAK,IAAK,IAAIzD,QAAQ,CAAC;QAAEyD,KAAK;QAAEC,OAAO,EAAE;MAA6B,CAAE;KACjF,CAAC;IAEJ,MAAM6B,YAAY,GAAGpD,OAAO,CAACQ,oBAAoB,GAC7C,CAAC4B,GAAW,EAAEC,MAA2C,KAAK/D,MAAM,CAACoB,GAAG,CAACyC,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC,EAAE/B,aAAa,CAAC,GACzG6B,GAAG;IAEP,OAAO1D,QAAQ,CAAmB;MAChC4E,OAAOA,CAACjB,GAAG,EAAEC,MAAM;QACjB,OAAOe,YAAY,CAAChB,GAAG,EAAEC,MAAM,CAAC;MAClC,CAAC;MACDiB,UAAUA,CAAClB,GAAG,EAAEC,MAAM;QACpB,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC;MACzB,CAAC;MACDkB,aAAaA,CAACnB,GAAG,EAAEC,MAAM;QACvB,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,EAAE,OAAO,CAAC;MAClC,CAAC;MACDmB,uBAAuBA,CAACpB,GAAG,EAAEC,MAAM;QACjC,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC;MACzB,CAAC;MACDoB,iBAAiBA,CAACrB,GAAG,EAAEC,MAAM;QAC3B,OAAOe,YAAY,CAAChB,GAAG,EAAEC,MAAM,CAAC;MAClC,CAAC;MACDqB,aAAaA,CAACtB,GAAG,EAAEC,MAAM;QACvB,OAAOvD,MAAM,CAAC6E,kBAAkB,CAACrF,MAAM,CAAC4C,GAAG,CAAC;UAC1C,CAACA,GAAGA,CAAA;YACF,KAAK,MAAMsB,IAAI,IAAI7B,OAAO,CAAC8B,UAAU,CAACzB,EAAE,EAAEoB,GAAG,CAAC,EAAE;cAC9C,IAAIM,OAAkC;cACtC/B,OAAO,CAACgC,eAAe,CAACH,IAAI,EAAEH,MAAa,CAAC;cAC5C,OAAO1B,OAAO,CAACiC,IAAI,CAACJ,IAAI,CAAC,KAAKzE,QAAQ,CAAC8E,UAAU,EAAE;gBACjDH,OAAO,GAAGA,OAAO,IAAI/B,OAAO,CAACmC,YAAY,CAACN,IAAI,CAAC;gBAC/C,MAAMO,GAAG,GAAGpC,OAAO,CAACoC,GAAG,CAACP,IAAI,CAAC;gBAC7B,MAAMQ,GAAG,GAAwB,EAAE;gBACnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,OAAO,CAACQ,MAAM,EAAED,CAAC,EAAE,EAAE;kBACvCD,GAAG,CAACN,OAAO,CAACO,CAAC,CAAC,CAAC,GAAGF,GAAG,CAACE,CAAC,CAAC;gBAC1B;gBACA,MAAMD,GAAG;cACX;YACF;UACF,CAAC;UACD3B,KAAK,EAAGC,KAAK,IAAK,IAAIzD,QAAQ,CAAC;YAAEyD,KAAK;YAAEC,OAAO,EAAE;UAA6B,CAAE;SACjF,CAAC,CAAC;MACL,CAAC;MACDqC,MAAM,EAAEtF,MAAM,CAAC4C,GAAG,CAAC;QACjBA,GAAG,EAAEA,CAAA,KAAMP,OAAO,CAACkD,SAAS,CAAC7C,EAAE,EAAE,MAAM,CAAC;QACxCK,KAAK,EAAGC,KAAK,IAAK,IAAIzD,QAAQ,CAAC;UAAEyD,KAAK;UAAEC,OAAO,EAAE;QAA2B,CAAE;OAC/E,CAAC;MACFuC,MAAMA,CAACC,IAAI;QACT,OAAOzF,MAAM,CAAC4C,GAAG,CAAC;UAChBA,GAAG,EAAEA,CAAA,KAAMP,OAAO,CAACqD,WAAW,CAAChD,EAAE,EAAE,MAAM,EAAE+C,IAAI,EAAEA,IAAI,CAACb,MAAM,EAAEa,IAAI,CAACb,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;UACjF7B,KAAK,EAAGC,KAAK,IAAK,IAAIzD,QAAQ,CAAC;YAAEyD,KAAK;YAAEC,OAAO,EAAE;UAA2B,CAAE;SAC/E,CAAC;MACJ;KACD,CAAC;EACJ,CAAC,CAAC;EAEF,MAAM0C,SAAS,GAAG,OAAO3F,MAAM,CAAC4F,aAAa,CAAC,CAAC,CAAC;EAChD,MAAMC,UAAU,GAAG,OAAOzD,cAAc;EAExC,MAAM0D,QAAQ,GAAGH,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAAC/F,MAAM,CAACgG,OAAO,CAACH,UAAU,CAAC,CAAC;EACrE,MAAMI,mBAAmB,GAAGjG,MAAM,CAACkG,mBAAmB,CAAEC,OAAO,IAC7DnG,MAAM,CAACoG,EAAE,CACPpG,MAAM,CAACqG,QAAQ,CACbF,OAAO,CAACR,SAAS,CAACW,IAAI,CAAC,CAAC,CAAC,CAAC,EAC1BtG,MAAM,CAACuG,GAAG,CACRvG,MAAM,CAACwG,KAAK,EACXA,KAAK,IAAKlG,KAAK,CAACmG,YAAY,CAACD,KAAK,EAAEb,SAAS,CAACe,OAAO,CAAC,CAAC,CAAC,CAAC,CAC3D,CACF,EACDb,UAAU,CACX,CACF;EAED,OAAOc,MAAM,CAACC,MAAM,CAClBtH,MAAM,CAACuH,IAAI,CAAC;IACVf,QAAQ;IACRjE,QAAQ;IACRoE,mBAAmB;IACnBa,cAAc,EAAE,CACd,IAAIpF,OAAO,CAACoF,cAAc,GAAGH,MAAM,CAACI,OAAO,CAACrF,OAAO,CAACoF,cAAc,CAAC,GAAG,EAAE,CAAC,EACzE,CAAClH,IAAI,CAACoH,kBAAkB,EAAEpH,IAAI,CAACqH,qBAAqB,CAAC;GAExD,CAAiB,EAClB;IACE,CAACxG,MAAM,GAAGA,MAAgB;IAC1ByG,MAAM,EAAExF,OAAO;IACfyF,QAAQ,EAAEvF,UAAU,CAACwF,MAAM;IAC3BC,eAAe,EAAEzF,UAAU,CAAC0F,KAAK;IACjChC,MAAM,EAAEK,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAACF,UAAU,CAACP,MAAM,CAAC;IACnDE,MAAMA,CAACC,IAAgB;MACrB,OAAOE,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAACF,UAAU,CAACL,MAAM,CAACC,IAAI,CAAC,CAAC;IAC1D;GACD,CACF;AACH,CAAC,CAAC;AAEJ;;;;AAIA,OAAO,MAAMoB,IAAI,GACfnF,OAA2B,IAE3B1B,MAAM,CAAC2B,GAAG,CAAC,aAAS;EAClB,MAAMC,UAAU,GAAG,OAAOvC,UAAU,CAACA,UAAU;EAC/C,MAAMwC,QAAQ,GAAGrC,SAAS,CAACsC,kBAAkB,CAACJ,OAAO,CAACK,mBAAmB,CAAC;EAC1E,MAAMC,aAAa,GAAGxC,SAAS,CAACyC,iBAAiB,CAC/CP,OAAO,CAACQ,oBAAqB,CAC9B,CAACC,KAAK;EACP,MAAMoF,OAAO,GAAG,IAAIC,GAAG,EAAsD;EAE7E,MAAMpF,cAAc,GAAGpC,MAAM,CAAC2B,GAAG,CAAC,aAAS;IACzC,IAAI8F,SAAS,GAAG,CAAC;IACjB,MAAMjB,KAAK,GAAG,OAAOxG,MAAM,CAACwG,KAAK;IACjC,MAAMkB,aAAa,GAAG,OAAO3H,QAAQ,CAAC8G,IAAI,EAAQ;IAElD,MAAMc,MAAM,GAAG,OAAOjG,OAAO,CAACiG,MAAM;IACpC,MAAMC,IAAI,GAAG,MAAM,IAAID,MAAM,GAAGA,MAAM,CAACC,IAAI,GAAGD,MAAM;IACpD,MAAME,WAAW,GAAGA,CAAC5E,OAA0B,EAAE6E,aAAkC,KACjFF,IAAI,CAACC,WAAW,CAAC5E,OAAO,EAAE6E,aAAoB,CAAC;IAEjD,OAAOxH,KAAK,CAACmG,YAAY,CAACD,KAAK,EAAExG,MAAM,CAACkD,IAAI,CAAC,MAAM2E,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE3E,MAAME,SAAS,GAAIC,KAAU,IAAI;MAC/B,MAAM,CAACtE,EAAE,EAAEuE,KAAK,EAAEhE,OAAO,CAAC,GAAG+D,KAAK,CAACvC,IAAI;MACvC,IAAI/B,EAAE,KAAK,OAAO,EAAE;QAClB3D,QAAQ,CAACmI,UAAU,CAACR,aAAa,EAAEzH,IAAI,CAACkI,IAAI,CAAC;QAC7C;MACF,CAAC,MAAM,IAAIzE,EAAE,KAAK,aAAa,EAAE;QAC/B9B,UAAU,CAACgC,gBAAgB,CAAC;UAAE,CAACqE,KAAK,GAAG,CAAChE,OAAO;QAAC,CAAE,CAAC;QACnD;MACF,CAAC,MAAM;QACL,MAAMmE,MAAM,GAAGb,OAAO,CAACc,GAAG,CAAC3E,EAAE,CAAC;QAC9B,IAAI,CAAC0E,MAAM,EAAE;QACbb,OAAO,CAACe,MAAM,CAAC5E,EAAE,CAAC;QAClB,IAAIuE,KAAK,EAAE;UACTG,MAAM,CAACnI,IAAI,CAACsI,IAAI,CAAC,IAAIhJ,QAAQ,CAAC;YAAEyD,KAAK,EAAEiF,KAAe;YAAEhF,OAAO,EAAE;UAA6B,CAAE,CAAC,CAAC,CAAC;QACrG,CAAC,MAAM;UACLmF,MAAM,CAACnI,IAAI,CAAC+F,OAAO,CAAC/B,OAAO,CAAC,CAAC;QAC/B;MACF;IACF,CAAC;IACD2D,IAAI,CAACY,gBAAgB,CAAC,SAAS,EAAET,SAAS,CAAC;IAE3C,SAASU,OAAOA,CAAA;MACdzI,MAAM,CAAC0I,OAAO,CAACnI,SAAS,CAACoI,GAAG,CAACC,aAAa,EAAExG,cAAc,CAAC,CAAC;IAC9D;IACA,IAAI,SAAS,IAAIuF,MAAM,EAAE;MACvBA,MAAM,CAACa,gBAAgB,CAAC,OAAO,EAAEC,OAAO,CAAC;IAC3C;IAEA,OAAOnI,KAAK,CAACmG,YAAY,CACvBD,KAAK,EACLxG,MAAM,CAACkD,IAAI,CAAC,MAAK;MACfyE,MAAM,CAACkB,mBAAmB,CAAC,SAAS,EAAEd,SAAS,CAAC;MAChDJ,MAAM,CAACkB,mBAAmB,CAAC,OAAO,EAAEJ,OAAO,CAAC;IAC9C,CAAC,CAAC,CACH;IAED,OAAO1I,QAAQ,CAAC+I,KAAK,CAACpB,aAAa,CAAC;IAEpC,IAAIhG,OAAO,CAAC0B,sBAAsB,EAAE;MAClCyE,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC;IAC9B;IAEA,MAAMkB,IAAI,GAAGA,CAACrF,EAAU,EAAET,OAA0B,EAAE6E,aAAkC,KACtF9H,MAAM,CAACgJ,KAAK,CAAiBZ,MAAM,IAAI;MACrCb,OAAO,CAACoB,GAAG,CAACjF,EAAE,EAAE0E,MAAM,CAAC;MACvBP,WAAW,CAAC5E,OAAO,EAAE6E,aAAa,CAAC;IACrC,CAAC,CAAC;IAEJ,MAAMjE,GAAG,GAAGA,CACVC,GAAW,EACXC,MAAA,GAA6C,EAAE,EAC/CC,OAAA,GAA8B,QAAQ,KACQ;MAC9C,MAAMiF,IAAI,GAAGjJ,MAAM,CAACkJ,gBAAgB,CAAyCC,KAAK,IAAI;QACpF,MAAMzF,EAAE,GAAG+D,SAAS,EAAE;QACtB,OAAOsB,IAAI,CAACrF,EAAE,EAAE,CAACA,EAAE,EAAEI,GAAG,EAAEC,MAAM,CAAC,EAAEoF,KAAK,CAACC,WAAW,CAACC,oBAAoB,CAAC,CAAC;MAC7E,CAAC,CAAC;MACF,OAAOrF,OAAO,KAAK,QAAQ,GACvBhE,MAAM,CAACoB,GAAG,CAAC6H,IAAI,EAAEK,aAAa,CAAC,GAC/BtJ,MAAM,CAACoB,GAAG,CAAC6H,IAAI,EAAEM,WAAW,CAAC;IACnC,CAAC;IAED,MAAMzE,YAAY,GAAGpD,OAAO,CAACQ,oBAAoB,GAC7C,CAAC4B,GAAW,EAAEC,MAA2C,KAAK/D,MAAM,CAACoB,GAAG,CAACyC,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC,EAAE/B,aAAa,CAAC,GACzG6B,GAAG;IAEP,OAAO1D,QAAQ,CAAmB;MAChC4E,OAAOA,CAACjB,GAAG,EAAEC,MAAM;QACjB,OAAOe,YAAY,CAAChB,GAAG,EAAEC,MAAM,CAAC;MAClC,CAAC;MACDiB,UAAUA,CAAClB,GAAG,EAAEC,MAAM;QACpB,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC;MACzB,CAAC;MACDkB,aAAaA,CAACnB,GAAG,EAAEC,MAAM;QACvB,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,EAAE,OAAO,CAAC;MAClC,CAAC;MACDmB,uBAAuBA,CAACpB,GAAG,EAAEC,MAAM;QACjC,OAAOF,GAAG,CAACC,GAAG,EAAEC,MAAM,CAAC;MACzB,CAAC;MACDoB,iBAAiBA,CAACrB,GAAG,EAAEC,MAAM;QAC3B,OAAOe,YAAY,CAAChB,GAAG,EAAEC,MAAM,CAAC;MAClC,CAAC;MACDqB,aAAaA,CAAA;QACX,OAAOpF,MAAM,CAACwJ,UAAU,CAAC,+BAA+B,CAAC;MAC3D,CAAC;MACDlE,MAAM,EAAEtF,MAAM,CAACyJ,OAAO,CAAC,MAAK;QAC1B,MAAM/F,EAAE,GAAG+D,SAAS,EAAE;QACtB,OAAOsB,IAAI,CAACrF,EAAE,EAAE,CAAC,QAAQ,EAAEA,EAAE,CAAC,CAAC;MACjC,CAAC,CAAC;MACF8B,MAAMA,CAACC,IAAI;QACT,OAAOzF,MAAM,CAACyJ,OAAO,CAAC,MAAK;UACzB,MAAM/F,EAAE,GAAG+D,SAAS,EAAE;UACtB,OAAOsB,IAAI,CAACrF,EAAE,EAAE,CAAC,QAAQ,EAAEA,EAAE,EAAE+B,IAAI,CAAC,EAAE,CAACA,IAAI,CAACiE,MAAM,CAAC,CAAC;QACtD,CAAC,CAAC;MACJ;KACD,CAAC;EACJ,CAAC,CAAC;EAEF,MAAMd,aAAa,GAAG,OAAOrI,SAAS,CAACoJ,WAAW,CAACvH,cAAc,CAAC;EAElE,MAAMuD,SAAS,GAAG,OAAO3F,MAAM,CAAC4F,aAAa,CAAC,CAAC,CAAC;EAChD,MAAME,QAAQ,GAAGH,SAAS,CAACI,WAAW,CAAC,CAAC,CAAC,CAACxF,SAAS,CAAC8H,GAAG,CAACO,aAAa,CAAC,CAAC;EACvE,MAAM3C,mBAAmB,GAAGjG,MAAM,CAACkG,mBAAmB,CAAEC,OAAO,IAC7DnG,MAAM,CAACqG,QAAQ,CACbrG,MAAM,CAACqG,QAAQ,CACbF,OAAO,CAACR,SAAS,CAACW,IAAI,CAAC,CAAC,CAAC,CAAC,EAC1BtG,MAAM,CAACuG,GAAG,CACRvG,MAAM,CAACwG,KAAK,EACXA,KAAK,IAAKlG,KAAK,CAACmG,YAAY,CAACD,KAAK,EAAEb,SAAS,CAACe,OAAO,CAAC,CAAC,CAAC,CAAC,CAC3D,CACF,EACDnG,SAAS,CAAC8H,GAAG,CAACO,aAAa,CAAC,CAC7B,CACF;EAED,OAAOjC,MAAM,CAACC,MAAM,CAClBtH,MAAM,CAACuH,IAAI,CAAC;IACVf,QAAQ;IACRjE,QAAQ;IACRoE,mBAAmB;IACnBa,cAAc,EAAE,CACd,IAAIpF,OAAO,CAACoF,cAAc,GAAGH,MAAM,CAACI,OAAO,CAACrF,OAAO,CAACoF,cAAc,CAAC,GAAG,EAAE,CAAC,EACzE,CAAClH,IAAI,CAACoH,kBAAkB,EAAEpH,IAAI,CAACqH,qBAAqB,CAAC;GAExD,CAAiB,EAClB;IACE,CAACxG,MAAM,GAAGA,MAAgB;IAC1ByG,MAAM,EAAExF,OAAO;IACfyF,QAAQ,EAAEvF,UAAU,CAACwF,MAAM;IAC3BC,eAAe,EAAEzF,UAAU,CAAC0F,KAAK;IACjChC,MAAM,EAAEtF,MAAM,CAAC4J,OAAO,CAAC9D,QAAQ,EAAGD,UAAU,IAAKA,UAAU,CAACP,MAAM,CAAC;IACnEE,MAAMA,CAACC,IAAgB;MACrB,OAAOzF,MAAM,CAAC4J,OAAO,CAAC9D,QAAQ,EAAGD,UAAU,IAAKA,UAAU,CAACL,MAAM,CAACC,IAAI,CAAC,CAAC;IAC1E;GACD,CACF;AACH,CAAC,CAAC;AAEJ,SAASoE,WAAWA,CAACzF,OAAsB,EAAEK,GAAe;EAC1D,MAAMC,GAAG,GAAwB,EAAE;EACnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGP,OAAO,CAACQ,MAAM,EAAED,CAAC,EAAE,EAAE;IACvCD,GAAG,CAACN,OAAO,CAACO,CAAC,CAAC,CAAC,GAAGF,GAAG,CAACE,CAAC,CAAC;EAC1B;EACA,OAAOD,GAAG;AACZ;AACA,MAAM4E,aAAa,GAAIL,IAAiC,IAAKA,IAAI,CAAC,CAAC,CAAC,CAAC7H,GAAG,CAAEqD,GAAG,IAAKoF,WAAW,CAACZ,IAAI,CAAC,CAAC,CAAC,EAAExE,GAAG,CAAC,CAAC;AAC5G,MAAM8E,WAAW,GAAIN,IAAiC,IAAKA,IAAI,CAAC,CAAC,CAAC;AAElE;;;;AAIA,OAAO,MAAMI,oBAAoB,gBAAmDjJ,WAAW,CAC7F,8CAA8C,EAC9C,MAAMF,QAAQ,CAAC4J,UAAU,CAA8B,EAAE,CAAC,CAC3D;AAED;;;;AAIA,OAAO,MAAMC,iBAAiB,GAC3BjC,aAA0C,IAAekC,MAA8B,IACtFhK,MAAM,CAACiK,OAAO,CAACD,MAAM,EAAEX,oBAAoB,EAAEvB,aAAa,CAAC;AAE/D;;;;AAIA,OAAO,MAAMoC,iBAAiB,GAC5BhD,MAAoD,IAEpD7G,KAAK,CAAC8J,aAAa,CACjBtK,MAAM,CAACuK,MAAM,CAAClD,MAAM,CAAC,CAAC/F,IAAI,CACxBnB,MAAM,CAAC4J,OAAO,CAACnI,UAAU,CAAC,EAC1BzB,MAAM,CAACoB,GAAG,CAAEiJ,MAAM,IAChBvK,OAAO,CAAC+G,IAAI,CAACjG,YAAY,EAAEyJ,MAAM,CAAC,CAAClJ,IAAI,CACrCrB,OAAO,CAACyC,GAAG,CAACjD,MAAM,CAACgL,SAAS,EAAED,MAAM,CAAC,CACtC,CACF,CACF,CACF,CAAClJ,IAAI,CAACd,KAAK,CAACkK,OAAO,CAAClL,UAAU,CAACmL,KAAK,CAAC,CAAC;AAEzC;;;;AAIA,OAAO,MAAMC,WAAW,GACtBvD,MAAgC,IAEhC7G,KAAK,CAAC8J,aAAa,CACjBnK,MAAM,CAACoB,GAAG,CAACK,UAAU,CAACyF,MAAM,CAAC,EAAGmD,MAAM,IACpCvK,OAAO,CAAC+G,IAAI,CAACjG,YAAY,EAAEyJ,MAAM,CAAC,CAAClJ,IAAI,CACrCrB,OAAO,CAACyC,GAAG,CAACjD,MAAM,CAACgL,SAAS,EAAED,MAAM,CAAC,CACtC,CAAC,CACL,CAAClJ,IAAI,CAACd,KAAK,CAACkK,OAAO,CAAClL,UAAU,CAACmL,KAAK,CAAC,CAAC;AAEzC;;;;AAIA,OAAO,MAAMA,KAAK,GAChBtD,MAA0B,IAE1B7G,KAAK,CAAC8J,aAAa,CACjBnK,MAAM,CAACoB,GAAG,CAACyF,IAAI,CAACK,MAAM,CAAC,EAAGmD,MAAM,IAC9BvK,OAAO,CAAC+G,IAAI,CAACjG,YAAY,EAAEyJ,MAAM,CAAC,CAAClJ,IAAI,CACrCrB,OAAO,CAACyC,GAAG,CAACjD,MAAM,CAACgL,SAAS,EAAED,MAAM,CAAC,CACtC,CAAC,CACL,CAAClJ,IAAI,CAACd,KAAK,CAACkK,OAAO,CAAClL,UAAU,CAACmL,KAAK,CAAC,CAAC;AAEzC;;;;AAIA,OAAO,MAAME,WAAW,GACtBxD,MAA8C,IAE9C7G,KAAK,CAAC8J,aAAa,CACjBtK,MAAM,CAACuK,MAAM,CAAClD,MAAM,CAAC,CAAC/F,IAAI,CACxBnB,MAAM,CAAC4J,OAAO,CAAC/C,IAAI,CAAC,EACpB7G,MAAM,CAACoB,GAAG,CAAEiJ,MAAM,IAChBvK,OAAO,CAAC+G,IAAI,CAACjG,YAAY,EAAEyJ,MAAM,CAAC,CAAClJ,IAAI,CACrCrB,OAAO,CAACyC,GAAG,CAACjD,MAAM,CAACgL,SAAS,EAAED,MAAM,CAAC,CACtC,CACF,CACF,CACF,CAAClJ,IAAI,CAACd,KAAK,CAACkK,OAAO,CAAClL,UAAU,CAACmL,KAAK,CAAC,CAAC","ignoreList":[]}
|