node-cqrs 1.1.0-beta.2 → 1.2.0-alpha.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.
Files changed (55) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/CqrsContainerBuilder.js.map +1 -1
  3. package/dist/cjs/sqlite-workers/AsyncSqliteStatement.js +22 -0
  4. package/dist/cjs/sqlite-workers/AsyncSqliteStatement.js.map +1 -0
  5. package/dist/cjs/sqlite-workers/SqliteWorkerProxy.js +121 -0
  6. package/dist/cjs/sqlite-workers/SqliteWorkerProxy.js.map +1 -0
  7. package/dist/cjs/sqlite-workers/SqliteWorkerRunner.js +115 -0
  8. package/dist/cjs/sqlite-workers/SqliteWorkerRunner.js.map +1 -0
  9. package/dist/cjs/sqlite-workers/index.js +19 -0
  10. package/dist/cjs/sqlite-workers/index.js.map +1 -0
  11. package/dist/cjs/sqlite-workers/protocol.js +20 -0
  12. package/dist/cjs/sqlite-workers/protocol.js.map +1 -0
  13. package/dist/cjs/sqlite-workers/utils/createSqliteWorker.js +39 -0
  14. package/dist/cjs/sqlite-workers/utils/createSqliteWorker.js.map +1 -0
  15. package/dist/cjs/sqlite-workers/utils/createWorkerDb.js +79 -0
  16. package/dist/cjs/sqlite-workers/utils/createWorkerDb.js.map +1 -0
  17. package/dist/cjs/sqlite-workers/utils/index.js +21 -0
  18. package/dist/cjs/sqlite-workers/utils/index.js.map +1 -0
  19. package/dist/cjs/sqlite-workers/utils/nodeEndpoint.js +46 -0
  20. package/dist/cjs/sqlite-workers/utils/nodeEndpoint.js.map +1 -0
  21. package/dist/cjs/sqlite-workers/utils/resolveCurrentFileLocationFromStack.js +12 -0
  22. package/dist/cjs/sqlite-workers/utils/resolveCurrentFileLocationFromStack.js.map +1 -0
  23. package/dist/esm/CqrsContainerBuilder.js.map +1 -1
  24. package/dist/esm/sqlite-workers/AsyncSqliteStatement.js +18 -0
  25. package/dist/esm/sqlite-workers/AsyncSqliteStatement.js.map +1 -0
  26. package/dist/esm/sqlite-workers/SqliteWorkerProxy.js +84 -0
  27. package/dist/esm/sqlite-workers/SqliteWorkerProxy.js.map +1 -0
  28. package/dist/esm/sqlite-workers/SqliteWorkerRunner.js +78 -0
  29. package/dist/esm/sqlite-workers/SqliteWorkerRunner.js.map +1 -0
  30. package/dist/esm/sqlite-workers/index.js +3 -0
  31. package/dist/esm/sqlite-workers/index.js.map +1 -0
  32. package/dist/esm/sqlite-workers/protocol.js +16 -0
  33. package/dist/esm/sqlite-workers/protocol.js.map +1 -0
  34. package/dist/esm/sqlite-workers/utils/createSqliteWorker.js +36 -0
  35. package/dist/esm/sqlite-workers/utils/createSqliteWorker.js.map +1 -0
  36. package/dist/esm/sqlite-workers/utils/createWorkerDb.js +40 -0
  37. package/dist/esm/sqlite-workers/utils/createWorkerDb.js.map +1 -0
  38. package/dist/esm/sqlite-workers/utils/index.js +5 -0
  39. package/dist/esm/sqlite-workers/utils/index.js.map +1 -0
  40. package/dist/esm/sqlite-workers/utils/nodeEndpoint.js +10 -0
  41. package/dist/esm/sqlite-workers/utils/nodeEndpoint.js.map +1 -0
  42. package/dist/esm/sqlite-workers/utils/resolveCurrentFileLocationFromStack.js +9 -0
  43. package/dist/esm/sqlite-workers/utils/resolveCurrentFileLocationFromStack.js.map +1 -0
  44. package/dist/types/CqrsContainerBuilder.d.ts +6 -6
  45. package/dist/types/sqlite-workers/AsyncSqliteStatement.d.ts +11 -0
  46. package/dist/types/sqlite-workers/SqliteWorkerProxy.d.ts +13 -0
  47. package/dist/types/sqlite-workers/SqliteWorkerRunner.d.ts +12 -0
  48. package/dist/types/sqlite-workers/index.d.ts +3 -0
  49. package/dist/types/sqlite-workers/protocol.d.ts +35 -0
  50. package/dist/types/sqlite-workers/utils/createSqliteWorker.d.ts +3 -0
  51. package/dist/types/sqlite-workers/utils/createWorkerDb.d.ts +3 -0
  52. package/dist/types/sqlite-workers/utils/index.d.ts +4 -0
  53. package/dist/types/sqlite-workers/utils/nodeEndpoint.d.ts +2 -0
  54. package/dist/types/sqlite-workers/utils/resolveCurrentFileLocationFromStack.d.ts +1 -0
  55. package/package.json +6 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ # [1.2.0-alpha.1](https://github.com/snatalenko/node-cqrs/compare/v1.2.0-alpha.0...v1.2.0-alpha.1) (2026-04-28)
2
+
3
+
4
+ ### Features
5
+
6
+ * Allow SQLite worker connections to be created with a custom factory ([fb39cf1](https://github.com/snatalenko/node-cqrs/commit/fb39cf1e3be51c279de6571262c360bf057dea28))
7
+
8
+
9
+ # [1.2.0-alpha.0](https://github.com/snatalenko/node-cqrs/compare/v1.1.0-beta.2...v1.2.0-alpha.0) (2026-04-27)
10
+
11
+
12
+ ### Features
13
+
14
+ * Add sqlite-workers submodule for async SQLite reads ([1987a40](https://github.com/snatalenko/node-cqrs/commit/1987a403fdfd38a57cf4b2c82bc79e88568bc32e))
15
+
16
+
1
17
  # [1.1.0-beta.2](https://github.com/snatalenko/node-cqrs/compare/v1.1.0-beta.1...v1.1.0-beta.2) (2026-04-25)
2
18
 
3
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"CqrsContainerBuilder.js","sourceRoot":"","sources":["../../src/CqrsContainerBuilder.ts"],"names":[],"mappings":";;;AAAA,6BAA6E;AAC7E,6EAAuE;AACvE,mDAA6C;AAC7C,+DAAyD;AACzD,6DAAuD;AACvD,mDAA0D;AAC1D,oDAY+B;AAC/B,iDAAgE;AAEhE,MAAa,oBACZ,SAAQ,sBAAqC;IAE7C,YAAY,OAA2D;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,KAAK,CAAC,WAAW,CAAC,+BAAoB,EAAE,oBAAoB,CAAC,CAAC;QAE9D,kDAAkD;QAClD,KAAK,CAAC,WAAW,CAAC,+BAAoB,EAAE,oBAAoB,CAAC,CAAC;QAE9D,gEAAgE;QAChE,KAAK,CAAC,WAAW,CAAC,+BAAoB,EAAE,cAAc,CAAC,CAAC;QACxD,KAAK,CAAC,WAAW,CAAC,qCAA0B,EAAE,iBAAiB,CAAC,CAAC;QACjE,KAAK,CAAC,WAAW,CAAC,4BAAiB,EAAE,iBAAiB,CAAC,CAAC;QAExD,KAAK,CAAC,QAAQ,CAAC,6BAAkB,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QACpD,KAAK,CAAC,QAAQ,CAAC,6BAAkB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;QAClD,KAAK,CAAC,QAAQ,CAAC,0BAAU,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAC5C,KAAK,CAAC,QAAQ,CAAC,oCAAe,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;QAEtD,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,sFAAsF;YACtF,qFAAqF;YACrF,GAAG,IAAA,sCAA2B,EAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9E,GAAG,IAAA,sCAA2B,EAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;YACtE,GAAG,IAAA,sCAA2B,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;SAC5E,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC;QAE/B,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAqB,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC;IACnE,CAAC;IAED,8FAA8F;IAC9F,sBAAsB,CAAC,aAAmE;QACzF,OAAO,KAAK,CAAC,QAAQ,CACpB,CAAC,SAA8B,EAAE,EAAE;YAClC,MAAM,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACxD,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACxC,OAAO,OAAO,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6FAA6F;IAC7F,qBAAqB,CAAC,aAAkE;QACvF,OAAO,KAAK,CAAC,QAAQ,CACpB,CAAC,SAA8B,EAAE,EAAE;YAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACzD,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACzC,OAAO,QAAQ,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,kBAAkB,CACjB,aAAoE,EACpE,gBAA4C;QAE5C,IAAA,0BAAc,EAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAE/C,MAAM,iBAAiB,GAAG,CAAC,SAA8B,EAAoB,EAAE;YAC9E,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC3D,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAE3C,mCAAmC;YACnC,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC/D,IAAI,aAAa,EAAE,CAAC;gBACnB,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,4CAA4C;gBAC3E,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,gBAAgB;gBACnB,OAAO,UAAU,CAAC,IAAI,CAAC;YAExB,OAAO,UAAU,CAAC;QACnB,CAAC,CAAC;QAEF,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAE/D,IAAI,gBAAgB;YACnB,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC;QAExB,OAAO,CAAC,CAAC;IACV,CAAC;IAED,+CAA+C;IAC/C,iBAAiB,CAAC,aAA8C;QAC/D,IAAA,uBAAW,EAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAE5C,MAAM,qBAAqB,GAAG,CAAC,SAA8B,EAAmB,EAAE,CACjF,SAAS,CAAC,cAAc,CAAC,oDAAuB,EAAE;YACjD,gBAAgB,EAAE,CAAC,OAAY,EAAE,EAAE,CAClC,SAAS,CAAC,cAAc,CAAC,aAAa,EAAE,OAAO,CAAC;YACjD,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,GAAG,aAAa,CAAC,uBAAuB,KAAK,SAAS,IAAI;gBACzD,uBAAuB,EAAE,aAAa,CAAC,uBAAuB;aAC9D;SACD,CAAC,CAAC;QAEJ,OAAO,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC;IAC3D,CAAC;IAGD,0CAA0C;IAC1C,YAAY,CAAC,QAA0B;QACtC,IAAA,uBAAW,EAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAElC,MAAM,oBAAoB,GAAG,CAAC,SAA8B,EAAkB,EAAE,CAC/E,SAAS,CAAC,cAAc,CAAC,sCAAgB,EAAE;YAC1C,WAAW,EAAE,CAAC,OAAY,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC;YAC1E,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,QAAQ,CAAC,IAAI;YACxD,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,SAAS,EAAE,QAAQ,CAAC,IAAI;SACxB,CAAC,CAAC;QAEJ,OAAO,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;IACzD,CAAC;CACD;AAzHD,oDAyHC"}
1
+ {"version":3,"file":"CqrsContainerBuilder.js","sourceRoot":"","sources":["../../src/CqrsContainerBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AsyncSqliteStatement = void 0;
4
+ class AsyncSqliteStatement {
5
+ #workerApi;
6
+ #handle;
7
+ constructor(workerApi, handle) {
8
+ this.#workerApi = workerApi;
9
+ this.#handle = handle;
10
+ }
11
+ async all(params) {
12
+ return this.#workerApi.allPrepared(this.#handle, params);
13
+ }
14
+ async get(params) {
15
+ return this.#workerApi.getPrepared(this.#handle, params);
16
+ }
17
+ async run(params) {
18
+ return this.#workerApi.runPrepared(this.#handle, params);
19
+ }
20
+ }
21
+ exports.AsyncSqliteStatement = AsyncSqliteStatement;
22
+ //# sourceMappingURL=AsyncSqliteStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncSqliteStatement.js","sourceRoot":"","sources":["../../../src/sqlite-workers/AsyncSqliteStatement.ts"],"names":[],"mappings":";;;AAWA,MAAa,oBAAoB;IAKvB,UAAU,CAAmC;IAC7C,OAAO,CAA8B;IAE9C,YACC,SAA2C,EAC3C,MAAmC;QAEnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,GAAG,CAAgB,MAAmD;QAC3E,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAoB,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,GAAG,CAAgB,MAAmD;QAC3E,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAA8B,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAmD;QAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;CACD;AA3BD,oDA2BC"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SqliteWorkerProxy = void 0;
37
+ const Comlink = __importStar(require("comlink"));
38
+ const index_ts_1 = require("./utils/index.js");
39
+ const AsyncSqliteStatement_ts_1 = require("./AsyncSqliteStatement.js");
40
+ class SqliteWorkerProxy {
41
+ #config;
42
+ #worker;
43
+ #workerPromise;
44
+ #workerApi;
45
+ #workerApiPromise;
46
+ #disposePromise;
47
+ constructor(config) {
48
+ this.#config = config;
49
+ }
50
+ async all(sql, params) {
51
+ const workerApi = await this.#assertWorkerApi();
52
+ return workerApi.all(sql, params);
53
+ }
54
+ async get(sql, params) {
55
+ const workerApi = await this.#assertWorkerApi();
56
+ return workerApi.get(sql, params);
57
+ }
58
+ async run(sql, params) {
59
+ const workerApi = await this.#assertWorkerApi();
60
+ return workerApi.run(sql, params);
61
+ }
62
+ async prepare(sql) {
63
+ const workerApi = await this.#assertWorkerApi();
64
+ const handle = await workerApi.prepare(sql);
65
+ return new AsyncSqliteStatement_ts_1.AsyncSqliteStatement(workerApi, handle);
66
+ }
67
+ async dispose() {
68
+ this.#disposePromise ??= this.#disposeWorker()
69
+ .finally(() => {
70
+ this.#disposePromise = undefined;
71
+ });
72
+ return this.#disposePromise;
73
+ }
74
+ /** @internal */
75
+ async assertWorker() {
76
+ if (this.#worker)
77
+ return this.#worker;
78
+ this.#workerPromise ??= (0, index_ts_1.createSqliteWorker)(this.#config)
79
+ .then(worker => {
80
+ this.#worker = worker;
81
+ worker.once('error', this.handleWorkerError);
82
+ worker.once('exit', this.handleWorkerExit);
83
+ return worker;
84
+ });
85
+ return this.#workerPromise;
86
+ }
87
+ async #assertWorkerApi() {
88
+ if (this.#workerApi)
89
+ return this.#workerApi;
90
+ this.#workerApiPromise ??= this.assertWorker()
91
+ .then(worker => {
92
+ this.#workerApi = Comlink.wrap((0, index_ts_1.nodeEndpoint)(worker));
93
+ return this.#workerApi;
94
+ });
95
+ return this.#workerApiPromise;
96
+ }
97
+ async #disposeWorker() {
98
+ if (!this.#worker && !this.#workerPromise)
99
+ return;
100
+ const workerApi = this.#workerApi ?? await this.#workerApiPromise?.catch(() => undefined);
101
+ const worker = this.#worker ?? await this.#workerPromise?.catch(() => undefined);
102
+ this.#worker = undefined;
103
+ this.#workerPromise = undefined;
104
+ this.#workerApi = undefined;
105
+ this.#workerApiPromise = undefined;
106
+ workerApi?.[Comlink.releaseProxy]();
107
+ if (!worker)
108
+ return;
109
+ worker.off('error', this.handleWorkerError);
110
+ worker.off('exit', this.handleWorkerExit);
111
+ await worker.terminate();
112
+ }
113
+ handleWorkerError = (_err) => {
114
+ void this.dispose().catch(() => undefined);
115
+ };
116
+ handleWorkerExit = (_exitCode) => {
117
+ void this.dispose().catch(() => undefined);
118
+ };
119
+ }
120
+ exports.SqliteWorkerProxy = SqliteWorkerProxy;
121
+ //# sourceMappingURL=SqliteWorkerProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteWorkerProxy.js","sourceRoot":"","sources":["../../../src/sqlite-workers/SqliteWorkerProxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SqliteWorkerRunner = void 0;
37
+ const node_worker_threads_1 = require("node:worker_threads");
38
+ const path = __importStar(require("node:path"));
39
+ const Comlink = __importStar(require("comlink"));
40
+ const protocol_ts_1 = require("./protocol.js");
41
+ const index_ts_1 = require("./utils/index.js");
42
+ function all(statement, params) {
43
+ return params === undefined ? statement.all() : statement.all(params);
44
+ }
45
+ function get(statement, params) {
46
+ return params === undefined ? statement.get() : statement.get(params);
47
+ }
48
+ function run(statement, params) {
49
+ return params === undefined ? statement.run() : statement.run(params);
50
+ }
51
+ class SqliteWorkerRunner {
52
+ static get location() {
53
+ if (typeof __filename !== 'undefined' && path.isAbsolute(__filename))
54
+ return __filename;
55
+ /* istanbul ignore next -- exercised by ESM consumers, not ts-jest's CJS transform */
56
+ return (0, index_ts_1.resolveCurrentFileLocationFromStack)();
57
+ }
58
+ #db;
59
+ #nextStatementHandle = 1;
60
+ #statements = new Map();
61
+ static async create(dbParams) {
62
+ return new SqliteWorkerRunner(await (0, index_ts_1.createWorkerDb)(dbParams));
63
+ }
64
+ constructor(db) {
65
+ this.#db = db;
66
+ }
67
+ all(sql, params) {
68
+ const statement = this.#db.prepare(sql);
69
+ return all(statement, params);
70
+ }
71
+ get(sql, params) {
72
+ const statement = this.#db.prepare(sql);
73
+ return get(statement, params);
74
+ }
75
+ run(sql, params) {
76
+ const statement = this.#db.prepare(sql);
77
+ return run(statement, params);
78
+ }
79
+ prepare(sql) {
80
+ const handle = this.#nextStatementHandle++;
81
+ this.#statements.set(handle, this.#db.prepare(sql));
82
+ return handle;
83
+ }
84
+ /** @internal */
85
+ allPrepared(handle, params) {
86
+ return all(this.#getStatement(handle), params);
87
+ }
88
+ /** @internal */
89
+ getPrepared(handle, params) {
90
+ return get(this.#getStatement(handle), params);
91
+ }
92
+ /** @internal */
93
+ runPrepared(handle, params) {
94
+ return run(this.#getStatement(handle), params);
95
+ }
96
+ #getStatement(handle) {
97
+ const statement = this.#statements.get(handle);
98
+ if (!statement)
99
+ throw new Error(`SQLite worker statement '${handle}' does not exist`);
100
+ return statement;
101
+ }
102
+ }
103
+ exports.SqliteWorkerRunner = SqliteWorkerRunner;
104
+ /* istanbul ignore next -- this branch runs inside the spawned worker process */
105
+ if (node_worker_threads_1.parentPort) {
106
+ const port = node_worker_threads_1.parentPort;
107
+ if (!(0, protocol_ts_1.isSqliteWorkerData)(node_worker_threads_1.workerData))
108
+ throw new Error('workerData does not contain SQLite worker db parameters');
109
+ void SqliteWorkerRunner.create(node_worker_threads_1.workerData.dbConfig)
110
+ .then(runner => {
111
+ port.postMessage({ type: 'ready' });
112
+ Comlink.expose(runner, (0, index_ts_1.nodeEndpoint)(port));
113
+ });
114
+ }
115
+ //# sourceMappingURL=SqliteWorkerRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteWorkerRunner.js","sourceRoot":"","sources":["../../../src/sqlite-workers/SqliteWorkerRunner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA6D;AAC7D,gDAAkC;AAClC,iDAAmC;AAEnC,+CAOuB;AACvB,+CAI0B;AAI1B,SAAS,GAAG,CAAO,SAAqC,EAAE,MAAgC;IACzF,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,GAAG,CAAO,SAAqC,EAAE,MAAgC;IACzF,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,GAAG,CAAC,SAAoB,EAAE,MAAgC;IAClE,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACvE,CAAC;AAED,MAAa,kBAAkB;IAE9B,MAAM,KAAK,QAAQ;QAClB,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YACnE,OAAO,UAAU,CAAC;QAEnB,qFAAqF;QACrF,OAAO,IAAA,8CAAmC,GAAE,CAAC;IAC9C,CAAC;IAEQ,GAAG,CAAC;IACb,oBAAoB,GAAG,CAAC,CAAC;IAChB,WAAW,GAAG,IAAI,GAAG,EAA8D,CAAC;IAE7F,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAoC;QACvD,OAAO,IAAI,kBAAkB,CAAC,MAAM,IAAA,yBAAc,EAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY,EAAY;QACvB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IACf,CAAC;IAED,GAAG,CAAO,GAAW,EAAE,MAAgC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAkB,GAAG,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAO,GAAW,EAAE,MAAgC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAkB,GAAG,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,MAAgC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,GAAW;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAEpD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,WAAW,CAAO,MAAmC,EAAE,MAAgC;QACtF,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,CAAO,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,gBAAgB;IAChB,WAAW,CAAO,MAAmC,EAAE,MAAgC;QACtF,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,CAAO,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,gBAAgB;IAChB,WAAW,CAAC,MAAmC,EAAE,MAAgC;QAChF,OAAO,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,aAAa,CAAO,MAAmC;QACtD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,kBAAkB,CAAC,CAAC;QAEvE,OAAO,SAAuC,CAAC;IAChD,CAAC;CACD;AAlED,gDAkEC;AAED,gFAAgF;AAChF,IAAI,gCAAU,EAAE,CAAC;IAChB,MAAM,IAAI,GAAG,gCAAU,CAAC;IAExB,IAAI,CAAC,IAAA,gCAAkB,EAAC,gCAAU,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAE5E,KAAK,kBAAkB,CAAC,MAAM,CAAC,gCAAU,CAAC,QAAQ,CAAC;SACjD,IAAI,CAAC,MAAM,CAAC,EAAE;QACd,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,IAAA,uBAAY,EAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./AsyncSqliteStatement.js"), exports);
18
+ __exportStar(require("./SqliteWorkerProxy.js"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sqlite-workers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,yDAAuC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSqliteWorkerData = isSqliteWorkerData;
4
+ exports.isSqliteWorkerReadyMessage = isSqliteWorkerReadyMessage;
5
+ const isObject = (obj) => typeof obj === 'object'
6
+ && obj !== null
7
+ && !Array.isArray(obj)
8
+ && !(obj instanceof Date);
9
+ function isSqliteWorkerData(value) {
10
+ return isObject(value)
11
+ && 'dbConfig' in value
12
+ && isObject(value.dbConfig);
13
+ }
14
+ function isSqliteWorkerReadyMessage(value) {
15
+ return typeof value === 'object' &&
16
+ value !== null &&
17
+ 'type' in value &&
18
+ value.type === 'ready';
19
+ }
20
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/sqlite-workers/protocol.ts"],"names":[],"mappings":";;AAiEA,gDAIC;AAED,gEAKC;AAjBD,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAa,EAAE,CAC5C,OAAO,GAAG,KAAK,QAAQ;OACpB,GAAG,KAAK,IAAI;OACZ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;OACnB,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC;AAE3B,SAAgB,kBAAkB,CAAC,KAAc;IAChD,OAAO,QAAQ,CAAC,KAAK,CAAC;WAClB,UAAU,IAAI,KAAK;WACnB,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,0BAA0B,CAAC,KAAc;IACxD,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC/B,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AACzB,CAAC"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSqliteWorker = createSqliteWorker;
4
+ const node_worker_threads_1 = require("node:worker_threads");
5
+ const protocol_ts_1 = require("../protocol.js");
6
+ const SqliteWorkerRunner_ts_1 = require("../SqliteWorkerRunner.js");
7
+ async function createSqliteWorker(params) {
8
+ const { sqliteWorkerRunnerLocation = SqliteWorkerRunner_ts_1.SqliteWorkerRunner.location, ...workerData } = params;
9
+ const worker = new node_worker_threads_1.Worker(sqliteWorkerRunnerLocation, { workerData });
10
+ await new Promise((resolve, reject) => {
11
+ let onError;
12
+ let onMessage;
13
+ let onExit;
14
+ const cleanup = () => {
15
+ worker.off('error', onError);
16
+ worker.off('message', onMessage);
17
+ worker.off('exit', onExit);
18
+ };
19
+ onMessage = (message) => {
20
+ if (!(0, protocol_ts_1.isSqliteWorkerReadyMessage)(message))
21
+ return;
22
+ cleanup();
23
+ resolve();
24
+ };
25
+ onError = (err) => {
26
+ cleanup();
27
+ reject(err);
28
+ };
29
+ onExit = (exitCode) => {
30
+ cleanup();
31
+ reject(new Error(`SQLite worker exited prematurely with exit code ${exitCode}`));
32
+ };
33
+ worker.on('message', onMessage);
34
+ worker.once('error', onError);
35
+ worker.once('exit', onExit);
36
+ });
37
+ return worker;
38
+ }
39
+ //# sourceMappingURL=createSqliteWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSqliteWorker.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/createSqliteWorker.ts"],"names":[],"mappings":";;AAIA,gDA2CC;AA/CD,6DAA6C;AAC7C,gDAA0F;AAC1F,oEAA8D;AAEvD,KAAK,UAAU,kBAAkB,CAAC,MAA+B;IACvE,MAAM,EACL,0BAA0B,GAAG,0CAAkB,CAAC,QAAQ,EACxD,GAAG,UAAU,EACb,GAAG,MAAM,CAAC;IAEX,MAAM,MAAM,GAAG,IAAI,4BAAM,CAAC,0BAA0B,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAEtE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,OAA+B,CAAC;QACpC,IAAI,SAAqC,CAAC;QAC1C,IAAI,MAAkC,CAAC;QAEvC,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEF,SAAS,GAAG,CAAC,OAAgB,EAAE,EAAE;YAChC,IAAI,CAAC,IAAA,wCAA0B,EAAC,OAAO,CAAC;gBACvC,OAAO;YAER,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE;YAC1B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,GAAG,CAAC,QAAgB,EAAE,EAAE;YAC7B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
39
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
40
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
41
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
42
+ });
43
+ }
44
+ return path;
45
+ };
46
+ Object.defineProperty(exports, "__esModule", { value: true });
47
+ exports.createWorkerDb = createWorkerDb;
48
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
49
+ const index_ts_1 = require("../../utils/index.js");
50
+ function resolveImportLocation(location) {
51
+ if (location instanceof URL)
52
+ /* istanbul ignore next -- file URL imports are exercised by Node workers outside ts-jest */
53
+ return location.href;
54
+ return location;
55
+ }
56
+ async function createWorkerDb(params) {
57
+ if ('dbFactoryLocation' in params && !!params.dbFactoryLocation) {
58
+ const factoryModule = await Promise.resolve(`${__rewriteRelativeImportExtension(resolveImportLocation(params.dbFactoryLocation))}`).then(s => __importStar(require(s)));
59
+ const createSqliteWorkerDb = factoryModule.createSqliteWorkerDb ??
60
+ factoryModule.default?.createSqliteWorkerDb ??
61
+ factoryModule.default;
62
+ (0, index_ts_1.assertFunction)(createSqliteWorkerDb, 'createSqliteWorkerDb');
63
+ return createSqliteWorkerDb(params.dbFactoryParams);
64
+ }
65
+ else if ('dbLocation' in params && !!params.dbLocation) {
66
+ (0, index_ts_1.assertString)(params.dbLocation, 'dbLocation');
67
+ const db = (0, better_sqlite3_1.default)(params.dbLocation, { readonly: true, fileMustExist: true });
68
+ if (params.pragmas?.length) {
69
+ (0, index_ts_1.assertStringArray)(params.pragmas, 'pragmas');
70
+ for (const pragma of params.pragmas)
71
+ db.pragma(pragma);
72
+ }
73
+ return db;
74
+ }
75
+ else {
76
+ throw new Error('Either dbLocation or dbFactoryLocation is required');
77
+ }
78
+ }
79
+ //# sourceMappingURL=createWorkerDb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createWorkerDb.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/createWorkerDb.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,wCA6BC;AAzCD,oEAAyD;AACzD,mDAAuF;AAGvF,SAAS,qBAAqB,CAAC,QAAsB;IACpD,IAAI,QAAQ,YAAY,GAAG;QAC1B,4FAA4F;QAC5F,OAAO,QAAQ,CAAC,IAAI,CAAC;IAEtB,OAAO,QAAQ,CAAC;AACjB,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,MAAkC;IACtE,IAAI,mBAAmB,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACjE,MAAM,aAAa,GAAG,0DAAa,qBAAqB,CAAC,MAAM,CAAC,iBAAiB,CAAC,wCAAC,CAAC;QACpF,MAAM,oBAAoB,GACzB,aAAa,CAAC,oBAAoB;YAClC,aAAa,CAAC,OAAO,EAAE,oBAAoB;YAC3C,aAAa,CAAC,OAAO,CAAC;QAEvB,IAAA,yBAAc,EAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;QAE7D,OAAO,oBAAoB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;SACI,IAAI,YAAY,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACxD,IAAA,uBAAY,EAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAE9C,MAAM,EAAE,GAAG,IAAA,wBAAQ,EAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhF,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAC5B,IAAA,4BAAiB,EAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAE7C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO;gBAClC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,EAAE,CAAC;IACX,CAAC;SACI,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;AACF,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./createSqliteWorker.js"), exports);
18
+ __exportStar(require("./createWorkerDb.js"), exports);
19
+ __exportStar(require("./nodeEndpoint.js"), exports);
20
+ __exportStar(require("./resolveCurrentFileLocationFromStack.js"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,sDAAoC;AACpC,oDAAkC;AAClC,2EAAyD"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.nodeEndpoint = void 0;
37
+ const node_module_1 = require("node:module");
38
+ const path = __importStar(require("node:path"));
39
+ // Jest (CJS) cannot import the ESM adapter;
40
+ // the UMD build is CJS/UMD but the default export shape varies by loader
41
+ const requireFromHere = (0, node_module_1.createRequire)(typeof __filename === 'undefined' || !path.isAbsolute(__filename) ?
42
+ `${process.cwd()}/package.json` :
43
+ __filename);
44
+ const nodeEndpointModule = requireFromHere('comlink/dist/umd/node-adapter');
45
+ exports.nodeEndpoint = (nodeEndpointModule?.default ?? nodeEndpointModule);
46
+ //# sourceMappingURL=nodeEndpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeEndpoint.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/nodeEndpoint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA4C;AAC5C,gDAAkC;AAKlC,4CAA4C;AAC5C,yEAAyE;AACzE,MAAM,eAAe,GAAG,IAAA,2BAAa,EAAC,OAAO,UAAU,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACxG,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACjC,UAAU,CAAC,CAAC;AACb,MAAM,kBAAkB,GAAG,eAAe,CAAC,+BAA+B,CAAC,CAAC;AAC/D,QAAA,YAAY,GACxB,CAAC,kBAAkB,EAAE,OAAO,IAAI,kBAAkB,CAAQ,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveCurrentFileLocationFromStack = resolveCurrentFileLocationFromStack;
4
+ const node_url_1 = require("node:url");
5
+ /** @internal */
6
+ function resolveCurrentFileLocationFromStack(stack = new Error().stack) {
7
+ const stackFilename = stack?.match(/\((file:\/\/[^)]+SqliteWorkerRunner\.js):\d+:\d+\)/)?.[1];
8
+ if (!stackFilename)
9
+ throw new Error('Worker location could not be resolved from Error stack, pass sqliteWorkerRunnerLocation');
10
+ return (0, node_url_1.fileURLToPath)(stackFilename);
11
+ }
12
+ //# sourceMappingURL=resolveCurrentFileLocationFromStack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveCurrentFileLocationFromStack.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/resolveCurrentFileLocationFromStack.ts"],"names":[],"mappings":";;AAGA,kFAMC;AATD,uCAAyC;AAEzC,gBAAgB;AAChB,SAAgB,mCAAmC,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK;IAC5E,MAAM,aAAa,GAAG,KAAK,EAAE,KAAK,CAAC,oDAAoD,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9F,IAAI,CAAC,aAAa;QACjB,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;IAE5G,OAAO,IAAA,wBAAa,EAAC,aAAa,CAAC,CAAC;AACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CqrsContainerBuilder.js","sourceRoot":"","sources":["../../src/CqrsContainerBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CqrsContainerBuilder.js","sourceRoot":"","sources":["../../src/CqrsContainerBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export class AsyncSqliteStatement {
2
+ #workerApi;
3
+ #handle;
4
+ constructor(workerApi, handle) {
5
+ this.#workerApi = workerApi;
6
+ this.#handle = handle;
7
+ }
8
+ async all(params) {
9
+ return this.#workerApi.allPrepared(this.#handle, params);
10
+ }
11
+ async get(params) {
12
+ return this.#workerApi.getPrepared(this.#handle, params);
13
+ }
14
+ async run(params) {
15
+ return this.#workerApi.runPrepared(this.#handle, params);
16
+ }
17
+ }
18
+ //# sourceMappingURL=AsyncSqliteStatement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncSqliteStatement.js","sourceRoot":"","sources":["../../../src/sqlite-workers/AsyncSqliteStatement.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,oBAAoB;IAKvB,UAAU,CAAmC;IAC7C,OAAO,CAA8B;IAE9C,YACC,SAA2C,EAC3C,MAAmC;QAEnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,GAAG,CAAgB,MAAmD;QAC3E,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAoB,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,GAAG,CAAgB,MAAmD;QAC3E,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAA8B,CAAC;IACvF,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAmD;QAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;CACD"}
@@ -0,0 +1,84 @@
1
+ import * as Comlink from 'comlink';
2
+ import { createSqliteWorker, nodeEndpoint } from "./utils/index.js";
3
+ import { AsyncSqliteStatement } from "./AsyncSqliteStatement.js";
4
+ export class SqliteWorkerProxy {
5
+ #config;
6
+ #worker;
7
+ #workerPromise;
8
+ #workerApi;
9
+ #workerApiPromise;
10
+ #disposePromise;
11
+ constructor(config) {
12
+ this.#config = config;
13
+ }
14
+ async all(sql, params) {
15
+ const workerApi = await this.#assertWorkerApi();
16
+ return workerApi.all(sql, params);
17
+ }
18
+ async get(sql, params) {
19
+ const workerApi = await this.#assertWorkerApi();
20
+ return workerApi.get(sql, params);
21
+ }
22
+ async run(sql, params) {
23
+ const workerApi = await this.#assertWorkerApi();
24
+ return workerApi.run(sql, params);
25
+ }
26
+ async prepare(sql) {
27
+ const workerApi = await this.#assertWorkerApi();
28
+ const handle = await workerApi.prepare(sql);
29
+ return new AsyncSqliteStatement(workerApi, handle);
30
+ }
31
+ async dispose() {
32
+ this.#disposePromise ??= this.#disposeWorker()
33
+ .finally(() => {
34
+ this.#disposePromise = undefined;
35
+ });
36
+ return this.#disposePromise;
37
+ }
38
+ /** @internal */
39
+ async assertWorker() {
40
+ if (this.#worker)
41
+ return this.#worker;
42
+ this.#workerPromise ??= createSqliteWorker(this.#config)
43
+ .then(worker => {
44
+ this.#worker = worker;
45
+ worker.once('error', this.handleWorkerError);
46
+ worker.once('exit', this.handleWorkerExit);
47
+ return worker;
48
+ });
49
+ return this.#workerPromise;
50
+ }
51
+ async #assertWorkerApi() {
52
+ if (this.#workerApi)
53
+ return this.#workerApi;
54
+ this.#workerApiPromise ??= this.assertWorker()
55
+ .then(worker => {
56
+ this.#workerApi = Comlink.wrap(nodeEndpoint(worker));
57
+ return this.#workerApi;
58
+ });
59
+ return this.#workerApiPromise;
60
+ }
61
+ async #disposeWorker() {
62
+ if (!this.#worker && !this.#workerPromise)
63
+ return;
64
+ const workerApi = this.#workerApi ?? await this.#workerApiPromise?.catch(() => undefined);
65
+ const worker = this.#worker ?? await this.#workerPromise?.catch(() => undefined);
66
+ this.#worker = undefined;
67
+ this.#workerPromise = undefined;
68
+ this.#workerApi = undefined;
69
+ this.#workerApiPromise = undefined;
70
+ workerApi?.[Comlink.releaseProxy]();
71
+ if (!worker)
72
+ return;
73
+ worker.off('error', this.handleWorkerError);
74
+ worker.off('exit', this.handleWorkerExit);
75
+ await worker.terminate();
76
+ }
77
+ handleWorkerError = (_err) => {
78
+ void this.dispose().catch(() => undefined);
79
+ };
80
+ handleWorkerExit = (_exitCode) => {
81
+ void this.dispose().catch(() => undefined);
82
+ };
83
+ }
84
+ //# sourceMappingURL=SqliteWorkerProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteWorkerProxy.js","sourceRoot":"","sources":["../../../src/sqlite-workers/SqliteWorkerProxy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAOnC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,MAAM,OAAO,iBAAiB;IAEpB,OAAO,CAA0B;IAC1C,OAAO,CAAqB;IAC5B,cAAc,CAA8B;IAC5C,UAAU,CAA+C;IACzD,iBAAiB,CAAwD;IACzE,eAAe,CAA4B;IAE3C,YAAY,MAA+B;QAC1C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,GAAG,CAAO,GAAW,EAAE,MAAgC;QAC5D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAoB,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,GAAG,CAAO,GAAW,EAAE,MAAgC;QAC5D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAA8B,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,MAAgC;QACtD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CACZ,GAAW;QAKX,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAE5C,OAAO,IAAI,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAEF,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,cAAc,EAAE;aAC5C,OAAO,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAClC,CAAC,CAAC,CAAC;QAEJ,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED,gBAAgB;IAChB,KAAK,CAAC,YAAY;QACjB,IAAI,IAAI,CAAC,OAAO;YACf,OAAO,IAAI,CAAC,OAAO,CAAC;QAErB,IAAI,CAAC,cAAc,KAAK,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;aACtD,IAAI,CAAC,MAAM,CAAC,EAAE;YACd,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAE3C,OAAO,MAAM,CAAC;QACf,CAAC,CAAC,CAAC;QAEJ,OAAO,IAAI,CAAC,cAAc,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,gBAAgB;QACrB,IAAI,IAAI,CAAC,UAAU;YAClB,OAAO,IAAI,CAAC,UAAU,CAAC;QAExB,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,YAAY,EAAE;aAC5C,IAAI,CAAC,MAAM,CAAC,EAAE;YACd,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAmB,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC,UAAU,CAAC;QACxB,CAAC,CAAC,CAAC;QAEJ,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,cAAc;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc;YACxC,OAAO;QAER,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,MAAM,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAEjF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QAEnC,SAAS,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAEpC,IAAI,CAAC,MAAM;YACV,OAAO;QAER,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC1C,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,iBAAiB,GAAG,CAAC,IAAW,EAAE,EAAE;QACnC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,gBAAgB,GAAG,CAAC,SAAiB,EAAE,EAAE;QACxC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC;CACF"}
@@ -0,0 +1,78 @@
1
+ import { parentPort, workerData } from 'node:worker_threads';
2
+ import * as path from 'node:path';
3
+ import * as Comlink from 'comlink';
4
+ import { isSqliteWorkerData } from "./protocol.js";
5
+ import { createWorkerDb, nodeEndpoint, resolveCurrentFileLocationFromStack } from "./utils/index.js";
6
+ function all(statement, params) {
7
+ return params === undefined ? statement.all() : statement.all(params);
8
+ }
9
+ function get(statement, params) {
10
+ return params === undefined ? statement.get() : statement.get(params);
11
+ }
12
+ function run(statement, params) {
13
+ return params === undefined ? statement.run() : statement.run(params);
14
+ }
15
+ export class SqliteWorkerRunner {
16
+ static get location() {
17
+ if (typeof __filename !== 'undefined' && path.isAbsolute(__filename))
18
+ return __filename;
19
+ /* istanbul ignore next -- exercised by ESM consumers, not ts-jest's CJS transform */
20
+ return resolveCurrentFileLocationFromStack();
21
+ }
22
+ #db;
23
+ #nextStatementHandle = 1;
24
+ #statements = new Map();
25
+ static async create(dbParams) {
26
+ return new SqliteWorkerRunner(await createWorkerDb(dbParams));
27
+ }
28
+ constructor(db) {
29
+ this.#db = db;
30
+ }
31
+ all(sql, params) {
32
+ const statement = this.#db.prepare(sql);
33
+ return all(statement, params);
34
+ }
35
+ get(sql, params) {
36
+ const statement = this.#db.prepare(sql);
37
+ return get(statement, params);
38
+ }
39
+ run(sql, params) {
40
+ const statement = this.#db.prepare(sql);
41
+ return run(statement, params);
42
+ }
43
+ prepare(sql) {
44
+ const handle = this.#nextStatementHandle++;
45
+ this.#statements.set(handle, this.#db.prepare(sql));
46
+ return handle;
47
+ }
48
+ /** @internal */
49
+ allPrepared(handle, params) {
50
+ return all(this.#getStatement(handle), params);
51
+ }
52
+ /** @internal */
53
+ getPrepared(handle, params) {
54
+ return get(this.#getStatement(handle), params);
55
+ }
56
+ /** @internal */
57
+ runPrepared(handle, params) {
58
+ return run(this.#getStatement(handle), params);
59
+ }
60
+ #getStatement(handle) {
61
+ const statement = this.#statements.get(handle);
62
+ if (!statement)
63
+ throw new Error(`SQLite worker statement '${handle}' does not exist`);
64
+ return statement;
65
+ }
66
+ }
67
+ /* istanbul ignore next -- this branch runs inside the spawned worker process */
68
+ if (parentPort) {
69
+ const port = parentPort;
70
+ if (!isSqliteWorkerData(workerData))
71
+ throw new Error('workerData does not contain SQLite worker db parameters');
72
+ void SqliteWorkerRunner.create(workerData.dbConfig)
73
+ .then(runner => {
74
+ port.postMessage({ type: 'ready' });
75
+ Comlink.expose(runner, nodeEndpoint(port));
76
+ });
77
+ }
78
+ //# sourceMappingURL=SqliteWorkerRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteWorkerRunner.js","sourceRoot":"","sources":["../../../src/sqlite-workers/SqliteWorkerRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./AsyncSqliteStatement.js";
2
+ export * from "./SqliteWorkerProxy.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sqlite-workers/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,16 @@
1
+ const isObject = (obj) => typeof obj === 'object'
2
+ && obj !== null
3
+ && !Array.isArray(obj)
4
+ && !(obj instanceof Date);
5
+ export function isSqliteWorkerData(value) {
6
+ return isObject(value)
7
+ && 'dbConfig' in value
8
+ && isObject(value.dbConfig);
9
+ }
10
+ export function isSqliteWorkerReadyMessage(value) {
11
+ return typeof value === 'object' &&
12
+ value !== null &&
13
+ 'type' in value &&
14
+ value.type === 'ready';
15
+ }
16
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../../src/sqlite-workers/protocol.ts"],"names":[],"mappings":"AA2DA,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAa,EAAE,CAC5C,OAAO,GAAG,KAAK,QAAQ;OACpB,GAAG,KAAK,IAAI;OACZ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;OACnB,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC;AAE3B,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAChD,OAAO,QAAQ,CAAC,KAAK,CAAC;WAClB,UAAU,IAAI,KAAK;WACnB,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,KAAc;IACxD,OAAO,OAAO,KAAK,KAAK,QAAQ;QAC/B,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;AACzB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { Worker } from 'node:worker_threads';
2
+ import { isSqliteWorkerReadyMessage } from "../protocol.js";
3
+ import { SqliteWorkerRunner } from "../SqliteWorkerRunner.js";
4
+ export async function createSqliteWorker(params) {
5
+ const { sqliteWorkerRunnerLocation = SqliteWorkerRunner.location, ...workerData } = params;
6
+ const worker = new Worker(sqliteWorkerRunnerLocation, { workerData });
7
+ await new Promise((resolve, reject) => {
8
+ let onError;
9
+ let onMessage;
10
+ let onExit;
11
+ const cleanup = () => {
12
+ worker.off('error', onError);
13
+ worker.off('message', onMessage);
14
+ worker.off('exit', onExit);
15
+ };
16
+ onMessage = (message) => {
17
+ if (!isSqliteWorkerReadyMessage(message))
18
+ return;
19
+ cleanup();
20
+ resolve();
21
+ };
22
+ onError = (err) => {
23
+ cleanup();
24
+ reject(err);
25
+ };
26
+ onExit = (exitCode) => {
27
+ cleanup();
28
+ reject(new Error(`SQLite worker exited prematurely with exit code ${exitCode}`));
29
+ };
30
+ worker.on('message', onMessage);
31
+ worker.once('error', onError);
32
+ worker.once('exit', onExit);
33
+ });
34
+ return worker;
35
+ }
36
+ //# sourceMappingURL=createSqliteWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createSqliteWorker.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/createSqliteWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAgC,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAA+B;IACvE,MAAM,EACL,0BAA0B,GAAG,kBAAkB,CAAC,QAAQ,EACxD,GAAG,UAAU,EACb,GAAG,MAAM,CAAC;IAEX,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,0BAA0B,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAEtE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,OAA+B,CAAC;QACpC,IAAI,SAAqC,CAAC;QAC1C,IAAI,MAAkC,CAAC;QAEvC,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEF,SAAS,GAAG,CAAC,OAAgB,EAAE,EAAE;YAChC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC;gBACvC,OAAO;YAER,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE;YAC1B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,GAAG,CAAC,QAAgB,EAAE,EAAE;YAC7B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,QAAQ,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC;QAEF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,40 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import createDb from 'better-sqlite3';
10
+ import { assertFunction, assertString, assertStringArray } from "../../utils/index.js";
11
+ function resolveImportLocation(location) {
12
+ if (location instanceof URL)
13
+ /* istanbul ignore next -- file URL imports are exercised by Node workers outside ts-jest */
14
+ return location.href;
15
+ return location;
16
+ }
17
+ export async function createWorkerDb(params) {
18
+ if ('dbFactoryLocation' in params && !!params.dbFactoryLocation) {
19
+ const factoryModule = await import(__rewriteRelativeImportExtension(resolveImportLocation(params.dbFactoryLocation)));
20
+ const createSqliteWorkerDb = factoryModule.createSqliteWorkerDb ??
21
+ factoryModule.default?.createSqliteWorkerDb ??
22
+ factoryModule.default;
23
+ assertFunction(createSqliteWorkerDb, 'createSqliteWorkerDb');
24
+ return createSqliteWorkerDb(params.dbFactoryParams);
25
+ }
26
+ else if ('dbLocation' in params && !!params.dbLocation) {
27
+ assertString(params.dbLocation, 'dbLocation');
28
+ const db = createDb(params.dbLocation, { readonly: true, fileMustExist: true });
29
+ if (params.pragmas?.length) {
30
+ assertStringArray(params.pragmas, 'pragmas');
31
+ for (const pragma of params.pragmas)
32
+ db.pragma(pragma);
33
+ }
34
+ return db;
35
+ }
36
+ else {
37
+ throw new Error('Either dbLocation or dbFactoryLocation is required');
38
+ }
39
+ }
40
+ //# sourceMappingURL=createWorkerDb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createWorkerDb.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/createWorkerDb.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,QAA2B,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGvF,SAAS,qBAAqB,CAAC,QAAsB;IACpD,IAAI,QAAQ,YAAY,GAAG;QAC1B,4FAA4F;QAC5F,OAAO,QAAQ,CAAC,IAAI,CAAC;IAEtB,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAkC;IACtE,IAAI,mBAAmB,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QACjE,MAAM,aAAa,GAAG,MAAM,MAAM,kCAAC,qBAAqB,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAC,CAAC;QACpF,MAAM,oBAAoB,GACzB,aAAa,CAAC,oBAAoB;YAClC,aAAa,CAAC,OAAO,EAAE,oBAAoB;YAC3C,aAAa,CAAC,OAAO,CAAC;QAEvB,cAAc,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;QAE7D,OAAO,oBAAoB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC;SACI,IAAI,YAAY,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACxD,YAAY,CAAC,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAE9C,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhF,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAC5B,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAE7C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO;gBAClC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,EAAE,CAAC;IACX,CAAC;SACI,CAAC;QACL,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACvE,CAAC;AACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./createSqliteWorker.js";
2
+ export * from "./createWorkerDb.js";
3
+ export * from "./nodeEndpoint.js";
4
+ export * from "./resolveCurrentFileLocationFromStack.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0CAA0C,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { createRequire } from 'node:module';
2
+ import * as path from 'node:path';
3
+ // Jest (CJS) cannot import the ESM adapter;
4
+ // the UMD build is CJS/UMD but the default export shape varies by loader
5
+ const requireFromHere = createRequire(typeof __filename === 'undefined' || !path.isAbsolute(__filename) ?
6
+ `${process.cwd()}/package.json` :
7
+ __filename);
8
+ const nodeEndpointModule = requireFromHere('comlink/dist/umd/node-adapter');
9
+ export const nodeEndpoint = (nodeEndpointModule?.default ?? nodeEndpointModule);
10
+ //# sourceMappingURL=nodeEndpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeEndpoint.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/nodeEndpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAKlC,4CAA4C;AAC5C,yEAAyE;AACzE,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,UAAU,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACxG,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IACjC,UAAU,CAAC,CAAC;AACb,MAAM,kBAAkB,GAAG,eAAe,CAAC,+BAA+B,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,YAAY,GACxB,CAAC,kBAAkB,EAAE,OAAO,IAAI,kBAAkB,CAAQ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { fileURLToPath } from 'node:url';
2
+ /** @internal */
3
+ export function resolveCurrentFileLocationFromStack(stack = new Error().stack) {
4
+ const stackFilename = stack?.match(/\((file:\/\/[^)]+SqliteWorkerRunner\.js):\d+:\d+\)/)?.[1];
5
+ if (!stackFilename)
6
+ throw new Error('Worker location could not be resolved from Error stack, pass sqliteWorkerRunnerLocation');
7
+ return fileURLToPath(stackFilename);
8
+ }
9
+ //# sourceMappingURL=resolveCurrentFileLocationFromStack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveCurrentFileLocationFromStack.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/resolveCurrentFileLocationFromStack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,gBAAgB;AAChB,MAAM,UAAU,mCAAmC,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK;IAC5E,MAAM,aAAa,GAAG,KAAK,EAAE,KAAK,CAAC,oDAAoD,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9F,IAAI,CAAC,aAAa;QACjB,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;IAE5G,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC;AACrC,CAAC"}
@@ -1,18 +1,18 @@
1
- import { ContainerBuilder, type TypeConfig, type ClassOrFactory } from 'di0';
1
+ import { ContainerBuilder, type ClassOrFactory } from 'di0';
2
2
  import { type IAggregateConstructor, type ICommandHandler, type IContainer, type IEventReceptor, type IProjection, type ISagaConstructor } from './interfaces/index.ts';
3
3
  export declare class CqrsContainerBuilder<TContainerInterface extends IContainer = IContainer> extends ContainerBuilder<TContainerInterface> {
4
4
  constructor(options?: ConstructorParameters<typeof ContainerBuilder>[0]);
5
5
  /** Register command handler, which will be subscribed to commandBus upon instance creation */
6
- registerCommandHandler(typeOrFactory: ClassOrFactory<ICommandHandler, TContainerInterface>): TypeConfig<ICommandHandler, TContainerInterface>;
6
+ registerCommandHandler(typeOrFactory: ClassOrFactory<ICommandHandler, TContainerInterface>): import("di0").TypeConfig<ICommandHandler, TContainerInterface>;
7
7
  /** Register event receptor, which will be subscribed to eventStore upon instance creation */
8
- registerEventReceptor(typeOrFactory: ClassOrFactory<IEventReceptor, TContainerInterface>): TypeConfig<IEventReceptor, TContainerInterface>;
8
+ registerEventReceptor(typeOrFactory: ClassOrFactory<IEventReceptor, TContainerInterface>): import("di0").TypeConfig<IEventReceptor, TContainerInterface>;
9
9
  /**
10
10
  * Register projection, which will expose view and will be subscribed
11
11
  * to eventStore and will restore its state upon instance creation
12
12
  */
13
- registerProjection(typeOrFactory: ClassOrFactory<IProjection<any>, TContainerInterface>, exposedViewAlias?: keyof TContainerInterface): TypeConfig<IProjection<any>, TContainerInterface>;
13
+ registerProjection(typeOrFactory: ClassOrFactory<IProjection<any>, TContainerInterface>, exposedViewAlias?: keyof TContainerInterface): import("di0").TypeConfig<IProjection<any>, TContainerInterface>;
14
14
  /** Register aggregate type in the container */
15
- registerAggregate(AggregateType: IAggregateConstructor<any, any>): TypeConfig<ICommandHandler, TContainerInterface>;
15
+ registerAggregate(AggregateType: IAggregateConstructor<any, any>): import("di0").TypeConfig<ICommandHandler, TContainerInterface>;
16
16
  /** Register saga type in the container */
17
- registerSaga(SagaType: ISagaConstructor): TypeConfig<IEventReceptor, TContainerInterface>;
17
+ registerSaga(SagaType: ISagaConstructor): import("di0").TypeConfig<IEventReceptor, TContainerInterface>;
18
18
  }
@@ -0,0 +1,11 @@
1
+ import * as Comlink from 'comlink';
2
+ import type { SqliteRunResult, ISqliteWorkerApi, SqliteWorkerQueryParams, SqliteWorkerStatementHandle } from './protocol.ts';
3
+ type AsyncSqliteStatementParams<BindParameters extends unknown[]> = SqliteWorkerQueryParams & (BindParameters | Record<string, unknown>);
4
+ export declare class AsyncSqliteStatement<BindParameters extends unknown[] = unknown[], Result = unknown> {
5
+ #private;
6
+ constructor(workerApi: Comlink.Remote<ISqliteWorkerApi>, handle: SqliteWorkerStatementHandle);
7
+ all<TRow = Result>(params?: AsyncSqliteStatementParams<BindParameters>): Promise<TRow[]>;
8
+ get<TRow = Result>(params?: AsyncSqliteStatementParams<BindParameters>): Promise<TRow | undefined>;
9
+ run(params?: AsyncSqliteStatementParams<BindParameters>): Promise<SqliteRunResult>;
10
+ }
11
+ export {};
@@ -0,0 +1,13 @@
1
+ import type { SqliteWorkerProxyParams, SqliteWorkerQueryParams, SqliteRunResult } from './protocol.ts';
2
+ import { AsyncSqliteStatement } from './AsyncSqliteStatement.ts';
3
+ export declare class SqliteWorkerProxy {
4
+ #private;
5
+ constructor(config: SqliteWorkerProxyParams);
6
+ all<TRow>(sql: string, params?: SqliteWorkerQueryParams): Promise<TRow[]>;
7
+ get<TRow>(sql: string, params?: SqliteWorkerQueryParams): Promise<TRow | undefined>;
8
+ run(sql: string, params?: SqliteWorkerQueryParams): Promise<SqliteRunResult>;
9
+ prepare<BindParameters extends unknown[] | {} = unknown[], Result = unknown>(sql: string): Promise<BindParameters extends unknown[] ? AsyncSqliteStatement<BindParameters, Result> : AsyncSqliteStatement<[BindParameters], Result>>;
10
+ dispose(): Promise<void>;
11
+ handleWorkerError: (_err: Error) => void;
12
+ handleWorkerExit: (_exitCode: number) => void;
13
+ }
@@ -0,0 +1,12 @@
1
+ import type { Database } from 'better-sqlite3';
2
+ import { type SqliteRunResult, type ISqliteWorkerApi, type SqliteWorkerRunnerDbParams, type SqliteWorkerQueryParams, type SqliteWorkerStatementHandle } from './protocol.ts';
3
+ export declare class SqliteWorkerRunner implements ISqliteWorkerApi {
4
+ #private;
5
+ static get location(): string;
6
+ static create(dbParams: SqliteWorkerRunnerDbParams): Promise<SqliteWorkerRunner>;
7
+ constructor(db: Database);
8
+ all<TRow>(sql: string, params?: SqliteWorkerQueryParams): TRow[];
9
+ get<TRow>(sql: string, params?: SqliteWorkerQueryParams): TRow | undefined;
10
+ run(sql: string, params?: SqliteWorkerQueryParams): SqliteRunResult;
11
+ prepare(sql: string): SqliteWorkerStatementHandle;
12
+ }
@@ -0,0 +1,3 @@
1
+ export * from './AsyncSqliteStatement.ts';
2
+ export * from './SqliteWorkerProxy.ts';
3
+ export type { SqliteRunResult, SqliteWorkerProxyParams, SqliteWorkerQueryParams } from './protocol.ts';
@@ -0,0 +1,35 @@
1
+ import type { Database, Statement } from 'better-sqlite3';
2
+ export type SqliteWorkerProxyParams = {
3
+ /** Worker runner script location; defaults to the bundled runner. */
4
+ sqliteWorkerRunnerLocation?: string | URL;
5
+ dbConfig: SqliteWorkerRunnerDbParams;
6
+ };
7
+ export type SqliteWorkerRunnerDbParams = {
8
+ /** SQLite database file opened readonly by the worker. */
9
+ dbLocation: string;
10
+ /** PRAGMA statements applied to the worker connection. */
11
+ pragmas?: readonly string[];
12
+ } | {
13
+ /** Module exporting createSqliteWorkerDb for custom worker-side DB creation. */
14
+ dbFactoryLocation: string | URL;
15
+ /** Structured-cloneable params passed to the custom worker DB factory. */
16
+ dbFactoryParams: unknown;
17
+ };
18
+ export type SqliteWorkerDbFactory = (params: unknown) => Database | Promise<Database>;
19
+ export type SqliteWorkerData = {
20
+ dbConfig: SqliteWorkerRunnerDbParams;
21
+ };
22
+ export type SqliteWorkerQueryParams = readonly unknown[] | Record<string, unknown>;
23
+ export type SqliteWorkerStatementHandle = number;
24
+ export type SqliteRunResult = ReturnType<Statement['run']>;
25
+ export interface ISqliteWorkerApi {
26
+ all<TRow>(sql: string, params?: SqliteWorkerQueryParams): TRow[];
27
+ get<TRow>(sql: string, params?: SqliteWorkerQueryParams): TRow | undefined;
28
+ run(sql: string, params?: SqliteWorkerQueryParams): SqliteRunResult;
29
+ prepare(sql: string): SqliteWorkerStatementHandle;
30
+ }
31
+ export type SqliteWorkerReadyMessage = {
32
+ type: 'ready';
33
+ };
34
+ export declare function isSqliteWorkerData(value: unknown): value is SqliteWorkerData;
35
+ export declare function isSqliteWorkerReadyMessage(value: unknown): value is SqliteWorkerReadyMessage;
@@ -0,0 +1,3 @@
1
+ import { Worker } from 'node:worker_threads';
2
+ import { type SqliteWorkerProxyParams } from '../protocol.ts';
3
+ export declare function createSqliteWorker(params: SqliteWorkerProxyParams): Promise<Worker>;
@@ -0,0 +1,3 @@
1
+ import { type Database } from 'better-sqlite3';
2
+ import type { SqliteWorkerRunnerDbParams } from '../protocol.ts';
3
+ export declare function createWorkerDb(params: SqliteWorkerRunnerDbParams): Promise<Database>;
@@ -0,0 +1,4 @@
1
+ export * from './createSqliteWorker.ts';
2
+ export * from './createWorkerDb.ts';
3
+ export * from './nodeEndpoint.ts';
4
+ export * from './resolveCurrentFileLocationFromStack.ts';
@@ -0,0 +1,2 @@
1
+ import * as Comlink from 'comlink';
2
+ export declare const nodeEndpoint: (arg: any) => Comlink.Endpoint;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-cqrs",
3
- "version": "1.1.0-beta.2",
3
+ "version": "1.2.0-alpha.1",
4
4
  "description": "TypeScript CQRS/Event Sourcing toolkit for Node.js with DI, sagas, projections, and optional Worker, RabbitMQ, and SQLite adapters",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -48,6 +48,11 @@
48
48
  "require": "./dist/cjs/sqlite/index.js",
49
49
  "import": "./dist/esm/sqlite/index.js"
50
50
  },
51
+ "./sqlite-workers": {
52
+ "types": "./dist/types/sqlite-workers/index.d.ts",
53
+ "require": "./dist/cjs/sqlite-workers/index.js",
54
+ "import": "./dist/esm/sqlite-workers/index.js"
55
+ },
51
56
  "./redis": {
52
57
  "types": "./dist/types/redis/index.d.ts",
53
58
  "require": "./dist/cjs/redis/index.js",