node-cqrs 1.2.0-alpha.1 → 1.2.0-alpha.3
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/CHANGELOG.md +38 -10
- package/README.md +20 -3
- package/dist/cjs/shared/worker-utils/createWorker.js +85 -0
- package/dist/cjs/shared/worker-utils/createWorker.js.map +1 -0
- package/dist/cjs/shared/worker-utils/index.js +19 -0
- package/dist/cjs/shared/worker-utils/index.js.map +1 -0
- package/dist/cjs/shared/worker-utils/nodeEndpoint.js.map +1 -0
- package/dist/cjs/sqlite-workers/SqliteWorkerProxy.js +8 -2
- package/dist/cjs/sqlite-workers/SqliteWorkerProxy.js.map +1 -1
- package/dist/cjs/sqlite-workers/SqliteWorkerRunner.js +2 -1
- package/dist/cjs/sqlite-workers/SqliteWorkerRunner.js.map +1 -1
- package/dist/cjs/sqlite-workers/protocol.js +0 -7
- package/dist/cjs/sqlite-workers/protocol.js.map +1 -1
- package/dist/cjs/sqlite-workers/utils/index.js +0 -2
- package/dist/cjs/sqlite-workers/utils/index.js.map +1 -1
- package/dist/cjs/workers/AbstractWorkerProjection.js +5 -4
- package/dist/cjs/workers/AbstractWorkerProjection.js.map +1 -1
- package/dist/cjs/workers/WorkerProxyProjection.js +25 -8
- package/dist/cjs/workers/WorkerProxyProjection.js.map +1 -1
- package/dist/cjs/workers/utils/createWorker.js +8 -77
- package/dist/cjs/workers/utils/createWorker.js.map +1 -1
- package/dist/cjs/workers/utils/createWorkerInstance.js +1 -1
- package/dist/cjs/workers/utils/createWorkerInstance.js.map +1 -1
- package/dist/cjs/workers/utils/index.js +0 -2
- package/dist/cjs/workers/utils/index.js.map +1 -1
- package/dist/esm/shared/worker-utils/createWorker.js +49 -0
- package/dist/esm/shared/worker-utils/createWorker.js.map +1 -0
- package/dist/esm/shared/worker-utils/index.js +3 -0
- package/dist/esm/shared/worker-utils/index.js.map +1 -0
- package/dist/esm/shared/worker-utils/nodeEndpoint.js.map +1 -0
- package/dist/esm/sqlite-workers/SqliteWorkerProxy.js +8 -2
- package/dist/esm/sqlite-workers/SqliteWorkerProxy.js.map +1 -1
- package/dist/esm/sqlite-workers/SqliteWorkerRunner.js +2 -1
- package/dist/esm/sqlite-workers/SqliteWorkerRunner.js.map +1 -1
- package/dist/esm/sqlite-workers/protocol.js +0 -6
- package/dist/esm/sqlite-workers/protocol.js.map +1 -1
- package/dist/esm/sqlite-workers/utils/index.js +0 -2
- package/dist/esm/sqlite-workers/utils/index.js.map +1 -1
- package/dist/esm/workers/AbstractWorkerProjection.js +5 -4
- package/dist/esm/workers/AbstractWorkerProjection.js.map +1 -1
- package/dist/esm/workers/WorkerProxyProjection.js +25 -8
- package/dist/esm/workers/WorkerProxyProjection.js.map +1 -1
- package/dist/esm/workers/utils/createWorker.js +8 -44
- package/dist/esm/workers/utils/createWorker.js.map +1 -1
- package/dist/esm/workers/utils/createWorkerInstance.js +1 -1
- package/dist/esm/workers/utils/createWorkerInstance.js.map +1 -1
- package/dist/esm/workers/utils/index.js +0 -2
- package/dist/esm/workers/utils/index.js.map +1 -1
- package/dist/types/shared/worker-utils/createWorker.d.ts +14 -0
- package/dist/types/shared/worker-utils/index.d.ts +2 -0
- package/dist/types/{sqlite-workers/utils → shared/worker-utils}/nodeEndpoint.d.ts +1 -1
- package/dist/types/sqlite-workers/protocol.d.ts +0 -1
- package/dist/types/sqlite-workers/utils/index.d.ts +0 -2
- package/dist/types/workers/WorkerProxyProjection.d.ts +9 -3
- package/dist/types/workers/utils/createWorker.d.ts +6 -6
- package/dist/types/workers/utils/index.d.ts +0 -2
- package/package.json +1 -1
- package/dist/cjs/sqlite-workers/utils/createSqliteWorker.js +0 -39
- package/dist/cjs/sqlite-workers/utils/createSqliteWorker.js.map +0 -1
- package/dist/cjs/sqlite-workers/utils/nodeEndpoint.js.map +0 -1
- package/dist/cjs/workers/utils/nodeEndpoint.js +0 -8
- package/dist/cjs/workers/utils/nodeEndpoint.js.map +0 -1
- package/dist/esm/sqlite-workers/utils/createSqliteWorker.js +0 -36
- package/dist/esm/sqlite-workers/utils/createSqliteWorker.js.map +0 -1
- package/dist/esm/sqlite-workers/utils/nodeEndpoint.js.map +0 -1
- package/dist/esm/workers/utils/nodeEndpoint.js +0 -5
- package/dist/esm/workers/utils/nodeEndpoint.js.map +0 -1
- package/dist/types/sqlite-workers/utils/createSqliteWorker.d.ts +0 -3
- package/dist/types/workers/utils/nodeEndpoint.d.ts +0 -2
- /package/dist/cjs/{sqlite-workers/utils → shared/worker-utils}/nodeEndpoint.js +0 -0
- /package/dist/esm/{sqlite-workers/utils → shared/worker-utils}/nodeEndpoint.js +0 -0
|
@@ -1,87 +1,18 @@
|
|
|
1
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.createWorker = createWorker;
|
|
37
|
-
const
|
|
38
|
-
const path = __importStar(require("node:path"));
|
|
39
|
-
const protocol_ts_1 = require("../protocol.js");
|
|
4
|
+
const index_ts_1 = require("../../shared/worker-utils/index.js");
|
|
40
5
|
/**
|
|
41
|
-
* Create a worker instance, await a handshake or a failure
|
|
6
|
+
* Create a worker instance for a projection worker module, await a handshake or a failure.
|
|
42
7
|
*
|
|
43
|
-
* @param workerModulePath -
|
|
44
|
-
* @param ports -
|
|
45
|
-
* @returns Worker instance
|
|
8
|
+
* @param workerModulePath - Absolute or relative path to the worker module
|
|
9
|
+
* @param ports - MessagePorts for projection and view communication (transferred into the worker)
|
|
10
|
+
* @returns Resolved Worker instance after the ready handshake
|
|
46
11
|
*/
|
|
47
12
|
async function createWorker(workerModulePath, ports) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const worker = new node_worker_threads_1.Worker(workerEntrypoint, {
|
|
52
|
-
workerData: ports,
|
|
53
|
-
transferList: [
|
|
54
|
-
ports.projectionPort,
|
|
55
|
-
ports.viewPort
|
|
56
|
-
]
|
|
13
|
+
return (0, index_ts_1.createWorker)(workerModulePath, ports, {
|
|
14
|
+
transferList: [ports.projectionPort, ports.viewPort],
|
|
15
|
+
isReadyMessage: m => m?.type === 'ready'
|
|
57
16
|
});
|
|
58
|
-
await new Promise((resolve, reject) => {
|
|
59
|
-
const cleanup = () => {
|
|
60
|
-
// eslint-disable-next-line no-use-before-define
|
|
61
|
-
worker.off('error', onError);
|
|
62
|
-
// eslint-disable-next-line no-use-before-define
|
|
63
|
-
worker.off('message', onMessage);
|
|
64
|
-
// eslint-disable-next-line no-use-before-define
|
|
65
|
-
worker.off('exit', onExit);
|
|
66
|
-
};
|
|
67
|
-
const onMessage = (msg) => {
|
|
68
|
-
if (!(0, protocol_ts_1.isWorkerInitMessage)(msg))
|
|
69
|
-
return;
|
|
70
|
-
cleanup();
|
|
71
|
-
resolve(undefined);
|
|
72
|
-
};
|
|
73
|
-
const onError = (err) => {
|
|
74
|
-
cleanup();
|
|
75
|
-
reject(err);
|
|
76
|
-
};
|
|
77
|
-
const onExit = (exitCode) => {
|
|
78
|
-
cleanup();
|
|
79
|
-
reject(new Error(`Worker exited prematurely with exit code ${exitCode}`));
|
|
80
|
-
};
|
|
81
|
-
worker.on('message', onMessage);
|
|
82
|
-
worker.once('error', onError);
|
|
83
|
-
worker.once('exit', onExit);
|
|
84
|
-
});
|
|
85
|
-
return worker;
|
|
86
17
|
}
|
|
87
18
|
//# sourceMappingURL=createWorker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWorker.js","sourceRoot":"","sources":["../../../../src/workers/utils/createWorker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createWorker.js","sourceRoot":"","sources":["../../../../src/workers/utils/createWorker.ts"],"names":[],"mappings":";;AAWA,oCAKC;AAfD,iEAAyF;AAGzF;;;;;;GAMG;AACI,KAAK,UAAU,YAAY,CAAC,gBAAwB,EAAE,KAAkB;IAC9E,OAAO,IAAA,uBAAmB,EAAC,gBAAgB,EAAE,KAAK,EAAE;QACnD,YAAY,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC;QACpD,cAAc,EAAE,CAAC,CAAC,EAAE,CAAE,CAAS,EAAE,IAAI,KAAK,OAAO;KACjD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -38,7 +38,7 @@ const node_worker_threads_1 = require("node:worker_threads");
|
|
|
38
38
|
const Comlink = __importStar(require("comlink"));
|
|
39
39
|
const index_ts_1 = require("../../utils/index.js");
|
|
40
40
|
const protocol_ts_1 = require("../protocol.js");
|
|
41
|
-
const index_ts_2 = require("
|
|
41
|
+
const index_ts_2 = require("../../shared/worker-utils/index.js");
|
|
42
42
|
function createWorkerInstance(ProjectionFactoryOrType, projectionMethodsToWire) {
|
|
43
43
|
if (!node_worker_threads_1.parentPort)
|
|
44
44
|
throw new Error('createWorkerInstance can only be called from a Worker thread');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWorkerInstance.js","sourceRoot":"","sources":["../../../../src/workers/utils/createWorkerInstance.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,oDA0BC;AAnDD,6DAA6D;AAC7D,iDAAmC;AAEnC,mDAAuF;AACvF,gDAAsE;AACtE,
|
|
1
|
+
{"version":3,"file":"createWorkerInstance.js","sourceRoot":"","sources":["../../../../src/workers/utils/createWorkerInstance.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,oDA0BC;AAnDD,6DAA6D;AAC7D,iDAAmC;AAEnC,mDAAuF;AACvF,gDAAsE;AACtE,iEAAkE;AAoBlE,SAAgB,oBAAoB,CACnC,uBAAsE,EACtE,uBAAuE;IAEvE,IAAI,CAAC,gCAAU;QACd,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACjF,IAAI,CAAC,IAAA,0BAAY,EAAC,gCAAU,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAE5E,MAAM,UAAU,GAAG,IAAA,kBAAO,EAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;IAChH,MAAM,aAAa,GAAG,uBAAuB,IAAI,IAAA,iCAAsB,EAAC,UAAU,CAAC,CAAC;IACpF,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CACvC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QACtC,IAAA,yBAAc,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAEnC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,IAAA,uBAAY,EAAC,gCAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,IAAA,uBAAY,EAAC,gCAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEnE,gCAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAA8B,CAAC,CAAC;IAEtE,OAAO,UAAU,CAAC;AACnB,CAAC"}
|
|
@@ -14,8 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./createWorker.js"), exports);
|
|
18
17
|
__exportStar(require("./createWorkerInstance.js"), exports);
|
|
19
|
-
__exportStar(require("./nodeEndpoint.js"), exports);
|
|
20
18
|
__exportStar(require("./workerProxyFactory.js"), exports);
|
|
21
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/workers/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/workers/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,0DAAwC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Worker } from 'node:worker_threads';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* Create a worker instance and await a first message (or a specific ready message) or a failure.
|
|
5
|
+
*
|
|
6
|
+
* @param workerEntrypoint - Absolute path or URL to the worker module
|
|
7
|
+
* @param workerData - Structured-cloneable data passed to the worker via workerData
|
|
8
|
+
* @param options.transferList - Transferable objects to move (not copy) into the worker
|
|
9
|
+
* @param options.isReadyMessage - Predicate to identify the ready message; if omitted, any first message resolves
|
|
10
|
+
* @returns Resolved Worker instance after the ready handshake
|
|
11
|
+
*/
|
|
12
|
+
export async function createWorker(workerEntrypoint, workerData, options) {
|
|
13
|
+
const resolvedEntrypoint = workerEntrypoint instanceof URL ?
|
|
14
|
+
workerEntrypoint :
|
|
15
|
+
path.resolve(workerEntrypoint);
|
|
16
|
+
const worker = new Worker(resolvedEntrypoint, {
|
|
17
|
+
workerData,
|
|
18
|
+
transferList: options?.transferList
|
|
19
|
+
});
|
|
20
|
+
await new Promise((resolve, reject) => {
|
|
21
|
+
const cleanup = () => {
|
|
22
|
+
// eslint-disable-next-line no-use-before-define
|
|
23
|
+
worker.off('error', onError);
|
|
24
|
+
// eslint-disable-next-line no-use-before-define
|
|
25
|
+
worker.off('message', onMessage);
|
|
26
|
+
// eslint-disable-next-line no-use-before-define
|
|
27
|
+
worker.off('exit', onExit);
|
|
28
|
+
};
|
|
29
|
+
const onMessage = (msg) => {
|
|
30
|
+
if (options?.isReadyMessage && !options.isReadyMessage(msg))
|
|
31
|
+
return;
|
|
32
|
+
cleanup();
|
|
33
|
+
resolve();
|
|
34
|
+
};
|
|
35
|
+
const onError = (err) => {
|
|
36
|
+
cleanup();
|
|
37
|
+
reject(err);
|
|
38
|
+
};
|
|
39
|
+
const onExit = (exitCode) => {
|
|
40
|
+
cleanup();
|
|
41
|
+
reject(new Error(`Worker exited prematurely with exit code ${exitCode}`));
|
|
42
|
+
};
|
|
43
|
+
worker.on('message', onMessage);
|
|
44
|
+
worker.once('error', onError);
|
|
45
|
+
worker.once('exit', onExit);
|
|
46
|
+
});
|
|
47
|
+
return worker;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=createWorker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createWorker.js","sourceRoot":"","sources":["../../../../src/shared/worker-utils/createWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,gBAA8B,EAC9B,UAAmB,EACnB,OAGC;IAGD,MAAM,kBAAkB,GAAG,gBAAgB,YAAY,GAAG,CAAC,CAAC;QAC3D,gBAAgB,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,kBAAkB,EAAE;QAC7C,UAAU;QACV,YAAY,EAAE,OAAO,EAAE,YAAY;KACnC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAE3C,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,gDAAgD;YAChD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7B,gDAAgD;YAChD,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACjC,gDAAgD;YAChD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,GAAY,EAAE,EAAE;YAClC,IAAI,OAAO,EAAE,cAAc,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC;gBAC1D,OAAO;YAER,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE;YAChC,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACb,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAE,EAAE;YACnC,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC3E,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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/worker-utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeEndpoint.js","sourceRoot":"","sources":["../../../../src/shared/worker-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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Comlink from 'comlink';
|
|
2
|
-
import {
|
|
2
|
+
import { nodeEndpoint, createWorker } from "../shared/worker-utils/index.js";
|
|
3
|
+
import { SqliteWorkerRunner } from "./SqliteWorkerRunner.js";
|
|
3
4
|
import { AsyncSqliteStatement } from "./AsyncSqliteStatement.js";
|
|
4
5
|
export class SqliteWorkerProxy {
|
|
5
6
|
#config;
|
|
@@ -39,7 +40,12 @@ export class SqliteWorkerProxy {
|
|
|
39
40
|
async assertWorker() {
|
|
40
41
|
if (this.#worker)
|
|
41
42
|
return this.#worker;
|
|
42
|
-
this.#workerPromise ??=
|
|
43
|
+
this.#workerPromise ??= (() => {
|
|
44
|
+
const { sqliteWorkerRunnerLocation = SqliteWorkerRunner.location, ...workerData } = this.#config;
|
|
45
|
+
return createWorker(sqliteWorkerRunnerLocation, workerData, {
|
|
46
|
+
isReadyMessage: m => m?.type === 'ready'
|
|
47
|
+
});
|
|
48
|
+
})()
|
|
43
49
|
.then(worker => {
|
|
44
50
|
this.#worker = worker;
|
|
45
51
|
worker.once('error', this.handleWorkerError);
|
|
@@ -1 +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,
|
|
1
|
+
{"version":3,"file":"SqliteWorkerProxy.js","sourceRoot":"","sources":["../../../src/sqlite-workers/SqliteWorkerProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@ import { parentPort, workerData } from 'node:worker_threads';
|
|
|
2
2
|
import * as path from 'node:path';
|
|
3
3
|
import * as Comlink from 'comlink';
|
|
4
4
|
import { isSqliteWorkerData } from "./protocol.js";
|
|
5
|
-
import { createWorkerDb,
|
|
5
|
+
import { createWorkerDb, resolveCurrentFileLocationFromStack } from "./utils/index.js";
|
|
6
|
+
import { nodeEndpoint } from "../shared/worker-utils/index.js";
|
|
6
7
|
function all(statement, params) {
|
|
7
8
|
return params === undefined ? statement.all() : statement.all(params);
|
|
8
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqliteWorkerRunner.js","sourceRoot":"","sources":["../../../src/sqlite-workers/SqliteWorkerRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,EACN,kBAAkB,EAMlB,MAAM,eAAe,CAAC;AACvB,OAAO,
|
|
1
|
+
{"version":3,"file":"SqliteWorkerRunner.js","sourceRoot":"","sources":["../../../src/sqlite-workers/SqliteWorkerRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,4 @@ export function isSqliteWorkerData(value) {
|
|
|
7
7
|
&& 'dbConfig' in value
|
|
8
8
|
&& isObject(value.dbConfig);
|
|
9
9
|
}
|
|
10
|
-
export function isSqliteWorkerReadyMessage(value) {
|
|
11
|
-
return typeof value === 'object' &&
|
|
12
|
-
value !== null &&
|
|
13
|
-
'type' in value &&
|
|
14
|
-
value.type === 'ready';
|
|
15
|
-
}
|
|
16
10
|
//# sourceMappingURL=protocol.js.map
|
|
@@ -1 +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
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/sqlite-workers/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,0CAA0C,CAAC"}
|
|
@@ -14,7 +14,7 @@ export class AbstractWorkerProjection extends AbstractProjection {
|
|
|
14
14
|
return undefined;
|
|
15
15
|
const projectionMethodsToWire = [
|
|
16
16
|
'project',
|
|
17
|
-
'
|
|
17
|
+
'_projectBatch',
|
|
18
18
|
'ping',
|
|
19
19
|
'getLastProjectedEvent'
|
|
20
20
|
];
|
|
@@ -38,9 +38,10 @@ export class AbstractWorkerProjection extends AbstractProjection {
|
|
|
38
38
|
ping() {
|
|
39
39
|
return true;
|
|
40
40
|
}
|
|
41
|
-
/** @internal
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
/** @internal Project restore events in batches to avoid one Comlink roundtrip per event */
|
|
42
|
+
async _projectBatch(events) {
|
|
43
|
+
for (const event of events)
|
|
44
|
+
await this._project(event);
|
|
44
45
|
}
|
|
45
46
|
/**
|
|
46
47
|
* Returns the last projected event if the view implements IEventLocker, otherwise undefined.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractWorkerProjection.js","sourceRoot":"","sources":["../../../src/workers/AbstractWorkerProjection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACN,kBAAkB,IAAI,wBAAwB,EAC9C,oBAAoB,IAAI,8BAA8B,EAEtD,MAAM,kBAAkB,CAAC;AAI1B;;;GAGG;AACH,MAAM,OAAgB,wBACrB,SAAQ,kBAAyB;IAGjC;;OAEG;IACH,MAAM,CAAC,4BAA4B,CAElC,OAAiB;QAEjB,IAAI,YAAY;YACf,OAAO,SAAS,CAAC;QAElB,MAAM,uBAAuB,GAAG;YAC/B,SAAS;YACT,
|
|
1
|
+
{"version":3,"file":"AbstractWorkerProjection.js","sourceRoot":"","sources":["../../../src/workers/AbstractWorkerProjection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACN,kBAAkB,IAAI,wBAAwB,EAC9C,oBAAoB,IAAI,8BAA8B,EAEtD,MAAM,kBAAkB,CAAC;AAI1B;;;GAGG;AACH,MAAM,OAAgB,wBACrB,SAAQ,kBAAyB;IAGjC;;OAEG;IACH,MAAM,CAAC,4BAA4B,CAElC,OAAiB;QAEjB,IAAI,YAAY;YACf,OAAO,SAAS,CAAC;QAElB,MAAM,uBAAuB,GAAG;YAC/B,SAAS;YACT,eAAe;YACf,MAAM;YACN,uBAAuB;SACO,CAAC;QAEhC,IAAI,OAAO;YACV,OAAO,8BAA8B,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;QAEzE,OAAO,8BAA8B,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAI0B,SAAsB;QACxE,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,gBAAgB;QAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC;IAED,uFAAuF;IACvF,kDAAkD;IAC3C,IAAI;QACV,OAAO,IAAI,CAAC;IACb,CAAC;IAED,2FAA2F;IAC3F,KAAK,CAAC,aAAa,CAAC,MAAgB;QACnC,KAAK,MAAM,KAAK,IAAI,MAAM;YACzB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,qBAAqB;QACjC,OAAO,IAAI,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC;IAC1C,CAAC;CACD"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MessageChannel } from 'node:worker_threads';
|
|
2
2
|
import * as Comlink from 'comlink';
|
|
3
|
-
import { nodeEndpoint, createWorker } from "
|
|
3
|
+
import { nodeEndpoint, createWorker } from "../shared/worker-utils/index.js";
|
|
4
4
|
import { assertStringArray, assertString, extractErrorDetails, subscribe } from "../utils/index.js";
|
|
5
5
|
import { describe } from "../Event.js";
|
|
6
6
|
import { InMemoryLock } from "../in-memory/InMemoryLock.js";
|
|
@@ -9,12 +9,14 @@ import { InMemoryLock } from "../in-memory/InMemoryLock.js";
|
|
|
9
9
|
* and view calls to AbstractWorkerThreadProjection instance
|
|
10
10
|
*/
|
|
11
11
|
export class WorkerProxyProjection {
|
|
12
|
+
static RESTORE_BATCH_SIZE = 5_000;
|
|
12
13
|
#worker;
|
|
13
14
|
#workerInit;
|
|
14
15
|
#remoteProjection;
|
|
15
16
|
#remoteView;
|
|
16
17
|
#logger;
|
|
17
18
|
#messageTypes;
|
|
19
|
+
#disposed = false;
|
|
18
20
|
viewLocker = new InMemoryLock();
|
|
19
21
|
get remoteProjection() {
|
|
20
22
|
return this.#remoteProjection;
|
|
@@ -29,9 +31,9 @@ export class WorkerProxyProjection {
|
|
|
29
31
|
this.#logger = logger && 'child' in logger ? logger.child({ service: new.target.name }) : logger;
|
|
30
32
|
const { port1: projectionPortMain, port2: projectionPort } = new MessageChannel();
|
|
31
33
|
const { port1: viewPortMain, port2: viewPort } = new MessageChannel();
|
|
32
|
-
this.#workerInit = createWorker(workerModulePath, {
|
|
33
|
-
projectionPort,
|
|
34
|
-
|
|
34
|
+
this.#workerInit = createWorker(workerModulePath, { projectionPort, viewPort }, {
|
|
35
|
+
transferList: [projectionPort, viewPort],
|
|
36
|
+
isReadyMessage: m => m?.type === 'ready'
|
|
35
37
|
}).then(worker => {
|
|
36
38
|
this.#worker = worker;
|
|
37
39
|
worker.once('error', this._onWorkerError);
|
|
@@ -55,7 +57,12 @@ export class WorkerProxyProjection {
|
|
|
55
57
|
if (this.viewLocker)
|
|
56
58
|
this.viewLocker.unlock();
|
|
57
59
|
}
|
|
58
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Restore view state from not-yet-projected events.
|
|
62
|
+
*
|
|
63
|
+
* Events are projected in batches to reduce worker RPC overhead.
|
|
64
|
+
* The batch size can be configured through {@link WorkerProxyProjection.RESTORE_BATCH_SIZE}.
|
|
65
|
+
*/
|
|
59
66
|
async _restore(eventStore) {
|
|
60
67
|
if (!this.#worker)
|
|
61
68
|
await this.#workerInit;
|
|
@@ -65,10 +72,17 @@ export class WorkerProxyProjection {
|
|
|
65
72
|
const eventsIterable = eventStore.getEventsByTypes(this.#messageTypes, { afterEvent: lastEvent });
|
|
66
73
|
let eventsCount = 0;
|
|
67
74
|
const startTs = Date.now();
|
|
75
|
+
const batch = [];
|
|
68
76
|
for await (const event of eventsIterable) {
|
|
69
|
-
|
|
77
|
+
batch.push(event);
|
|
70
78
|
eventsCount += 1;
|
|
79
|
+
if (batch.length >= WorkerProxyProjection.RESTORE_BATCH_SIZE) {
|
|
80
|
+
await this._projectBatch(batch);
|
|
81
|
+
batch.length = 0;
|
|
82
|
+
}
|
|
71
83
|
}
|
|
84
|
+
if (batch.length)
|
|
85
|
+
await this._projectBatch(batch);
|
|
72
86
|
this.#logger?.info(`view restored from ${eventsCount} event(s) in ${Date.now() - startTs} ms`);
|
|
73
87
|
}
|
|
74
88
|
_onWorkerError = (error) => {
|
|
@@ -93,10 +107,13 @@ export class WorkerProxyProjection {
|
|
|
93
107
|
await this.#workerInit;
|
|
94
108
|
return this.#remoteProjection.project(event);
|
|
95
109
|
}
|
|
96
|
-
|
|
97
|
-
|
|
110
|
+
_projectBatch(batch) {
|
|
111
|
+
return this.remoteProjection._projectBatch(batch);
|
|
98
112
|
}
|
|
99
113
|
dispose() {
|
|
114
|
+
if (this.#disposed)
|
|
115
|
+
return;
|
|
116
|
+
this.#disposed = true;
|
|
100
117
|
this.#remoteProjection[Comlink.releaseProxy]();
|
|
101
118
|
this.#remoteView[Comlink.releaseProxy]();
|
|
102
119
|
this.#worker?.terminate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerProxyProjection.js","sourceRoot":"","sources":["../../../src/workers/WorkerProxyProjection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,cAAc,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkerProxyProjection.js","sourceRoot":"","sources":["../../../src/workers/WorkerProxyProjection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as path from 'node:path';
|
|
3
|
-
import { isWorkerInitMessage } from "../protocol.js";
|
|
1
|
+
import { createWorker as createWorkerGeneric } from "../../shared/worker-utils/index.js";
|
|
4
2
|
/**
|
|
5
|
-
* Create a worker instance, await a handshake or a failure
|
|
3
|
+
* Create a worker instance for a projection worker module, await a handshake or a failure.
|
|
6
4
|
*
|
|
7
|
-
* @param workerModulePath -
|
|
8
|
-
* @param ports -
|
|
9
|
-
* @returns Worker instance
|
|
5
|
+
* @param workerModulePath - Absolute or relative path to the worker module
|
|
6
|
+
* @param ports - MessagePorts for projection and view communication (transferred into the worker)
|
|
7
|
+
* @returns Resolved Worker instance after the ready handshake
|
|
10
8
|
*/
|
|
11
9
|
export async function createWorker(workerModulePath, ports) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const worker = new Worker(workerEntrypoint, {
|
|
16
|
-
workerData: ports,
|
|
17
|
-
transferList: [
|
|
18
|
-
ports.projectionPort,
|
|
19
|
-
ports.viewPort
|
|
20
|
-
]
|
|
10
|
+
return createWorkerGeneric(workerModulePath, ports, {
|
|
11
|
+
transferList: [ports.projectionPort, ports.viewPort],
|
|
12
|
+
isReadyMessage: m => m?.type === 'ready'
|
|
21
13
|
});
|
|
22
|
-
await new Promise((resolve, reject) => {
|
|
23
|
-
const cleanup = () => {
|
|
24
|
-
// eslint-disable-next-line no-use-before-define
|
|
25
|
-
worker.off('error', onError);
|
|
26
|
-
// eslint-disable-next-line no-use-before-define
|
|
27
|
-
worker.off('message', onMessage);
|
|
28
|
-
// eslint-disable-next-line no-use-before-define
|
|
29
|
-
worker.off('exit', onExit);
|
|
30
|
-
};
|
|
31
|
-
const onMessage = (msg) => {
|
|
32
|
-
if (!isWorkerInitMessage(msg))
|
|
33
|
-
return;
|
|
34
|
-
cleanup();
|
|
35
|
-
resolve(undefined);
|
|
36
|
-
};
|
|
37
|
-
const onError = (err) => {
|
|
38
|
-
cleanup();
|
|
39
|
-
reject(err);
|
|
40
|
-
};
|
|
41
|
-
const onExit = (exitCode) => {
|
|
42
|
-
cleanup();
|
|
43
|
-
reject(new Error(`Worker exited prematurely with exit code ${exitCode}`));
|
|
44
|
-
};
|
|
45
|
-
worker.on('message', onMessage);
|
|
46
|
-
worker.once('error', onError);
|
|
47
|
-
worker.once('exit', onExit);
|
|
48
|
-
});
|
|
49
|
-
return worker;
|
|
50
14
|
}
|
|
51
15
|
//# sourceMappingURL=createWorker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWorker.js","sourceRoot":"","sources":["../../../../src/workers/utils/createWorker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createWorker.js","sourceRoot":"","sources":["../../../../src/workers/utils/createWorker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAGzF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,gBAAwB,EAAE,KAAkB;IAC9E,OAAO,mBAAmB,CAAC,gBAAgB,EAAE,KAAK,EAAE;QACnD,YAAY,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC;QACpD,cAAc,EAAE,CAAC,CAAC,EAAE,CAAE,CAAS,EAAE,IAAI,KAAK,OAAO;KACjD,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { parentPort, workerData } from 'node:worker_threads';
|
|
|
2
2
|
import * as Comlink from 'comlink';
|
|
3
3
|
import { assertFunction, getMessageHandlerNames, isClass } from "../../utils/index.js";
|
|
4
4
|
import { isWorkerData } from "../protocol.js";
|
|
5
|
-
import { nodeEndpoint } from "
|
|
5
|
+
import { nodeEndpoint } from "../../shared/worker-utils/index.js";
|
|
6
6
|
export function createWorkerInstance(ProjectionFactoryOrType, projectionMethodsToWire) {
|
|
7
7
|
if (!parentPort)
|
|
8
8
|
throw new Error('createWorkerInstance can only be called from a Worker thread');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWorkerInstance.js","sourceRoot":"","sources":["../../../../src/workers/utils/createWorkerInstance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAA0B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"createWorkerInstance.js","sourceRoot":"","sources":["../../../../src/workers/utils/createWorkerInstance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAA0B,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAoBlE,MAAM,UAAU,oBAAoB,CACnC,uBAAsE,EACtE,uBAAuE;IAEvE,IAAI,CAAC,UAAU;QACd,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAE5E,MAAM,UAAU,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC;IAChH,MAAM,aAAa,GAAG,uBAAuB,IAAI,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACpF,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CACvC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;QAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;QACtC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAEnC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEnE,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAA8B,CAAC,CAAC;IAEtE,OAAO,UAAU,CAAC;AACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/workers/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/workers/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Worker, type Transferable } from 'node:worker_threads';
|
|
2
|
+
/**
|
|
3
|
+
* Create a worker instance and await a first message (or a specific ready message) or a failure.
|
|
4
|
+
*
|
|
5
|
+
* @param workerEntrypoint - Absolute path or URL to the worker module
|
|
6
|
+
* @param workerData - Structured-cloneable data passed to the worker via workerData
|
|
7
|
+
* @param options.transferList - Transferable objects to move (not copy) into the worker
|
|
8
|
+
* @param options.isReadyMessage - Predicate to identify the ready message; if omitted, any first message resolves
|
|
9
|
+
* @returns Resolved Worker instance after the ready handshake
|
|
10
|
+
*/
|
|
11
|
+
export declare function createWorker(workerEntrypoint: string | URL, workerData: unknown, options?: {
|
|
12
|
+
readonly transferList?: Transferable[];
|
|
13
|
+
readonly isReadyMessage?: (msg: unknown) => boolean;
|
|
14
|
+
}): Promise<Worker>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import * as Comlink from 'comlink';
|
|
1
|
+
import type * as Comlink from 'comlink';
|
|
2
2
|
export declare const nodeEndpoint: (arg: any) => Comlink.Endpoint;
|