redis-smq-common 3.0.0-rc.13 → 3.0.0-rc.14
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 +21 -0
- package/dist/cjs/src/env/environment.js +6 -2
- package/dist/cjs/src/env/environment.js.map +1 -1
- package/dist/cjs/src/event-bus/event-bus-redis.js +1 -1
- package/dist/cjs/src/event-bus/event-bus.js +1 -1
- package/dist/cjs/src/redis-client/clients/ioredis-client.js +1 -1
- package/dist/cjs/src/redis-client/clients/node-redis-client.js +1 -1
- package/dist/cjs/src/worker/errors/worker-thread.error.js +1 -1
- package/dist/cjs/src/worker/errors/worker-thread.error.js.map +1 -1
- package/dist/cjs/src/worker/types/index.js +1 -0
- package/dist/cjs/src/worker/types/index.js.map +1 -1
- package/dist/cjs/src/worker/types/worker-thread.js +26 -0
- package/dist/cjs/src/worker/types/worker-thread.js.map +1 -0
- package/dist/cjs/src/worker/types/worker.js +1 -17
- package/dist/cjs/src/worker/types/worker.js.map +1 -1
- package/dist/cjs/src/worker/worker-callable.js +8 -7
- package/dist/cjs/src/worker/worker-callable.js.map +1 -1
- package/dist/cjs/src/worker/worker-resource-group.js +4 -5
- package/dist/cjs/src/worker/worker-resource-group.js.map +1 -1
- package/dist/cjs/src/worker/worker-runnable.js +9 -16
- package/dist/cjs/src/worker/worker-runnable.js.map +1 -1
- package/dist/cjs/src/worker/worker-thread/worker-thread-callable.js +29 -0
- package/dist/cjs/src/worker/worker-thread/worker-thread-callable.js.map +1 -0
- package/dist/cjs/src/worker/worker-thread/worker-thread-message.js +33 -0
- package/dist/cjs/src/worker/worker-thread/worker-thread-message.js.map +1 -0
- package/dist/cjs/src/worker/worker-thread/worker-thread-runnable.js +45 -0
- package/dist/cjs/src/worker/worker-thread/worker-thread-runnable.js.map +1 -0
- package/dist/cjs/src/worker/worker-thread/worker-thread.js +79 -0
- package/dist/cjs/src/worker/worker-thread/worker-thread.js.map +1 -0
- package/dist/cjs/src/worker/worker.js +13 -10
- package/dist/cjs/src/worker/worker.js.map +1 -1
- package/dist/esm/src/env/environment.js +6 -2
- package/dist/esm/src/env/environment.js.map +1 -1
- package/dist/esm/src/event-bus/event-bus-redis.js +1 -1
- package/dist/esm/src/event-bus/event-bus.js +1 -1
- package/dist/esm/src/redis-client/clients/ioredis-client.js +1 -1
- package/dist/esm/src/redis-client/clients/node-redis-client.js +1 -1
- package/dist/esm/src/worker/errors/worker-thread.error.js +2 -2
- package/dist/esm/src/worker/errors/worker-thread.error.js.map +1 -1
- package/dist/esm/src/worker/types/index.js +1 -0
- package/dist/esm/src/worker/types/index.js.map +1 -1
- package/dist/esm/src/worker/types/worker-thread.js +23 -0
- package/dist/esm/src/worker/types/worker-thread.js.map +1 -0
- package/dist/esm/src/worker/types/worker.js +0 -16
- package/dist/esm/src/worker/types/worker.js.map +1 -1
- package/dist/esm/src/worker/worker-callable.js +6 -2
- package/dist/esm/src/worker/worker-callable.js.map +1 -1
- package/dist/esm/src/worker/worker-resource-group.js +4 -5
- package/dist/esm/src/worker/worker-resource-group.js.map +1 -1
- package/dist/esm/src/worker/worker-runnable.js +10 -17
- package/dist/esm/src/worker/worker-runnable.js.map +1 -1
- package/dist/esm/src/worker/worker-thread/worker-thread-callable.js +25 -0
- package/dist/esm/src/worker/worker-thread/worker-thread-callable.js.map +1 -0
- package/dist/esm/src/worker/worker-thread/worker-thread-message.js +28 -0
- package/dist/esm/src/worker/worker-thread/worker-thread-message.js.map +1 -0
- package/dist/esm/src/worker/worker-thread/worker-thread-runnable.js +41 -0
- package/dist/esm/src/worker/worker-thread/worker-thread-runnable.js.map +1 -0
- package/dist/esm/src/worker/worker-thread/worker-thread.js +54 -0
- package/dist/esm/src/worker/worker-thread/worker-thread.js.map +1 -0
- package/dist/esm/src/worker/worker.js +15 -11
- package/dist/esm/src/worker/worker.js.map +1 -1
- package/dist/types/src/env/environment.d.ts.map +1 -1
- package/dist/types/src/event-bus/event-bus-redis.d.ts +1 -1
- package/dist/types/src/event-bus/event-bus.d.ts +1 -1
- package/dist/types/src/event-bus/types/event-bus.d.ts +1 -1
- package/dist/types/src/redis-client/clients/ioredis-client.d.ts +1 -1
- package/dist/types/src/redis-client/clients/node-redis-client.d.ts +1 -1
- package/dist/types/src/redis-client/clients/redis-client-abstract.d.ts +1 -1
- package/dist/types/src/redis-client/types/redis-client.d.ts +1 -1
- package/dist/types/src/worker/errors/worker-thread.error.d.ts +2 -2
- package/dist/types/src/worker/errors/worker-thread.error.d.ts.map +1 -1
- package/dist/types/src/worker/types/index.d.ts +1 -0
- package/dist/types/src/worker/types/index.d.ts.map +1 -1
- package/dist/types/src/worker/types/worker-thread.d.ts +47 -0
- package/dist/types/src/worker/types/worker-thread.d.ts.map +1 -0
- package/dist/types/src/worker/types/worker.d.ts +7 -32
- package/dist/types/src/worker/types/worker.d.ts.map +1 -1
- package/dist/types/src/worker/worker-callable.d.ts +2 -1
- package/dist/types/src/worker/worker-callable.d.ts.map +1 -1
- package/dist/types/src/worker/worker-resource-group.d.ts +1 -4
- package/dist/types/src/worker/worker-resource-group.d.ts.map +1 -1
- package/dist/types/src/worker/worker-runnable.d.ts +4 -4
- package/dist/types/src/worker/worker-runnable.d.ts.map +1 -1
- package/dist/types/src/worker/worker-thread/worker-thread-callable.d.ts +5 -0
- package/dist/types/src/worker/worker-thread/worker-thread-callable.d.ts.map +1 -0
- package/dist/types/src/worker/worker-thread/worker-thread-message.d.ts +6 -0
- package/dist/types/src/worker/worker-thread/worker-thread-message.d.ts.map +1 -0
- package/dist/types/src/worker/worker-thread/worker-thread-runnable.d.ts +5 -0
- package/dist/types/src/worker/worker-thread/worker-thread-runnable.d.ts.map +1 -0
- package/dist/types/src/worker/worker-thread/worker-thread.d.ts.map +1 -0
- package/dist/types/src/worker/worker.d.ts +7 -6
- package/dist/types/src/worker/worker.d.ts.map +1 -1
- package/package.json +5 -4
- package/dist/cjs/src/worker/worker-thread.js +0 -114
- package/dist/cjs/src/worker/worker-thread.js.map +0 -1
- package/dist/esm/src/worker/worker-thread.js +0 -89
- package/dist/esm/src/worker/worker-thread.js.map +0 -1
- package/dist/types/src/worker/worker-thread.d.ts.map +0 -1
- /package/dist/types/src/worker/{worker-thread.d.ts → worker-thread/worker-thread.d.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
## [3.0.0-rc.14](https://github.com/weyoss/redis-smq-common/compare/v3.0.0-rc.13...v3.0.0-rc.14) (2024-03-23)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### ⚠ BREAKING CHANGES
|
|
7
|
+
|
|
8
|
+
* rewrite and optimize worker logic, clean up
|
|
9
|
+
|
|
10
|
+
### Bug Fixes
|
|
11
|
+
|
|
12
|
+
* strip 'file://' from filename ([39367b0](https://github.com/weyoss/redis-smq-common/commit/39367b01b19e2f5d5cdadb20d68d95dc9ab3f72e))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Documentation
|
|
16
|
+
|
|
17
|
+
* update API reference ([e79899a](https://github.com/weyoss/redis-smq-common/commit/e79899a6316d14042bee5eaa94be86f6816833e6))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Codebase Refactoring
|
|
21
|
+
|
|
22
|
+
* rewrite and optimize worker logic, clean up ([f9120de](https://github.com/weyoss/redis-smq-common/commit/f9120de0bc45929ab19aa4eb724ebc3b6159a0b3))
|
|
23
|
+
|
|
3
24
|
## [3.0.0-rc.13](https://github.com/weyoss/redis-smq-common/compare/v3.0.0-rc.12...v3.0.0-rc.13) (2024-03-08)
|
|
4
25
|
|
|
5
26
|
|
|
@@ -16,8 +16,12 @@ function getDirname() {
|
|
|
16
16
|
Error.prepareStackTrace = prepareStackTrace;
|
|
17
17
|
if (isStackTraces(stack)) {
|
|
18
18
|
const filename = stack[1].getFileName();
|
|
19
|
-
if (filename)
|
|
20
|
-
|
|
19
|
+
if (filename) {
|
|
20
|
+
const cleanFilename = filename.startsWith('file://')
|
|
21
|
+
? filename.substring(7)
|
|
22
|
+
: filename;
|
|
23
|
+
return (0, path_1.dirname)(cleanFilename);
|
|
24
|
+
}
|
|
21
25
|
}
|
|
22
26
|
throw new panic_error_js_1.PanicError(`Could not get current dir`);
|
|
23
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../src/env/environment.ts"],"names":[],"mappings":";;;AASA,6DAAsD;AACtD,+BAA+B;AAE/B,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,CAAC,iBAAiB,GAAG,CACxB,GAAU,EACV,WAA8B,EACX,EAAE;QACrB,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IACxB,MAAM,KAAK,GAAY,GAAG,CAAC,KAAK,CAAC;IACjC,KAAK,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC5C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,IAAI,QAAQ;
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../../../src/env/environment.ts"],"names":[],"mappings":";;;AASA,6DAAsD;AACtD,+BAA+B;AAE/B,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAClD,KAAK,CAAC,iBAAiB,GAAG,CACxB,GAAU,EACV,WAA8B,EACX,EAAE;QACrB,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;IACxB,MAAM,KAAK,GAAY,GAAG,CAAC,KAAK,CAAC;IACjC,KAAK,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC5C,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE;QACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,IAAI,QAAQ,EAAE;YACZ,MAAM,aAAa,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;gBAClD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvB,CAAC,CAAC,QAAQ,CAAC;YACb,OAAO,IAAA,cAAO,EAAC,aAAa,CAAC,CAAC;SAC/B;KACF;IACD,MAAM,IAAI,2BAAU,CAAC,2BAA2B,CAAC,CAAC;AACpD,CAAC;AArBD,gCAqBC"}
|
|
@@ -246,7 +246,7 @@ class IoredisClient extends redis_client_abstract_js_1.RedisClientAbstract {
|
|
|
246
246
|
this.client.disconnect(false);
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
|
-
|
|
249
|
+
shutdown(cb = () => void 0) {
|
|
250
250
|
if (!this.connectionClosed) {
|
|
251
251
|
this.client.once('end', cb);
|
|
252
252
|
this.client.quit();
|
|
@@ -341,7 +341,7 @@ class NodeRedisClient extends redis_client_abstract_js_1.RedisClientAbstract {
|
|
|
341
341
|
this.client.disconnect().catch(() => void 0);
|
|
342
342
|
}
|
|
343
343
|
}
|
|
344
|
-
|
|
344
|
+
shutdown(cb = () => void 0) {
|
|
345
345
|
if (!this.connectionClosed) {
|
|
346
346
|
this.client.once('end', cb);
|
|
347
347
|
this.client.quit();
|
|
@@ -7,7 +7,7 @@ class WorkerThreadError extends worker_error_js_1.WorkerError {
|
|
|
7
7
|
constructor(msg) {
|
|
8
8
|
var _a;
|
|
9
9
|
const { code, error } = msg;
|
|
10
|
-
const messageStr = `Error code: ${(_a = index_js_1.
|
|
10
|
+
const messageStr = `Error code: ${(_a = index_js_1.EWorkerThreadChildExitCode[code]) !== null && _a !== void 0 ? _a : index_js_1.EWorkerThreadChildExecutionCode[code]}.${error ? ` Cause: ${error.name}(${error.message})` : ''}`;
|
|
11
11
|
super(messageStr);
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-thread.error.js","sourceRoot":"","sources":["../../../../../src/worker/errors/worker-thread.error.ts"],"names":[],"mappings":";;;AASA,gDAI2B;AAC3B,uDAAgD;AAEhD,MAAa,iBAAkB,SAAQ,6BAAW;IAChD,YAAY,
|
|
1
|
+
{"version":3,"file":"worker-thread.error.js","sourceRoot":"","sources":["../../../../../src/worker/errors/worker-thread.error.ts"],"names":[],"mappings":";;;AASA,gDAI2B;AAC3B,uDAAgD;AAEhD,MAAa,iBAAkB,SAAQ,6BAAW;IAChD,YAAY,GAA8B;;QACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QAC5B,MAAM,UAAU,GAAG,eACjB,MAAA,qCAA0B,CAAC,IAAI,CAAC,mCAAI,0CAA+B,CAAC,IAAI,CAC1E,IAAI,KAAK,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC7D,KAAK,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC;CACF;AARD,8CAQC"}
|
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./worker.js"), exports);
|
|
18
|
+
__exportStar(require("./worker-thread.js"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/worker/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASA,8CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/worker/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AASA,8CAA4B;AAC5B,qDAAmC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EWorkerThreadParentMessage = exports.EWorkerThreadChildExecutionCode = exports.EWorkerThreadChildExitCode = void 0;
|
|
4
|
+
var EWorkerThreadChildExitCode;
|
|
5
|
+
(function (EWorkerThreadChildExitCode) {
|
|
6
|
+
EWorkerThreadChildExitCode[EWorkerThreadChildExitCode["WORKER_DATA_REQUIRED"] = 100] = "WORKER_DATA_REQUIRED";
|
|
7
|
+
EWorkerThreadChildExitCode[EWorkerThreadChildExitCode["INVALID_WORKER_TYPE"] = 101] = "INVALID_WORKER_TYPE";
|
|
8
|
+
EWorkerThreadChildExitCode[EWorkerThreadChildExitCode["FILE_IMPORT_ERROR"] = 102] = "FILE_IMPORT_ERROR";
|
|
9
|
+
EWorkerThreadChildExitCode[EWorkerThreadChildExitCode["UNCAUGHT_EXCEPTION"] = 103] = "UNCAUGHT_EXCEPTION";
|
|
10
|
+
EWorkerThreadChildExitCode[EWorkerThreadChildExitCode["FILE_EXTENSION_ERROR"] = 104] = "FILE_EXTENSION_ERROR";
|
|
11
|
+
EWorkerThreadChildExitCode[EWorkerThreadChildExitCode["FILE_READ_ERROR"] = 105] = "FILE_READ_ERROR";
|
|
12
|
+
EWorkerThreadChildExitCode[EWorkerThreadChildExitCode["TERMINATED"] = 106] = "TERMINATED";
|
|
13
|
+
})(EWorkerThreadChildExitCode = exports.EWorkerThreadChildExitCode || (exports.EWorkerThreadChildExitCode = {}));
|
|
14
|
+
var EWorkerThreadChildExecutionCode;
|
|
15
|
+
(function (EWorkerThreadChildExecutionCode) {
|
|
16
|
+
EWorkerThreadChildExecutionCode[EWorkerThreadChildExecutionCode["OK"] = 200] = "OK";
|
|
17
|
+
EWorkerThreadChildExecutionCode[EWorkerThreadChildExecutionCode["PROCESSING_ERROR"] = 201] = "PROCESSING_ERROR";
|
|
18
|
+
EWorkerThreadChildExecutionCode[EWorkerThreadChildExecutionCode["PROCESSING_CAUGHT_ERROR"] = 202] = "PROCESSING_CAUGHT_ERROR";
|
|
19
|
+
})(EWorkerThreadChildExecutionCode = exports.EWorkerThreadChildExecutionCode || (exports.EWorkerThreadChildExecutionCode = {}));
|
|
20
|
+
var EWorkerThreadParentMessage;
|
|
21
|
+
(function (EWorkerThreadParentMessage) {
|
|
22
|
+
EWorkerThreadParentMessage[EWorkerThreadParentMessage["CALL"] = 0] = "CALL";
|
|
23
|
+
EWorkerThreadParentMessage[EWorkerThreadParentMessage["RUN"] = 1] = "RUN";
|
|
24
|
+
EWorkerThreadParentMessage[EWorkerThreadParentMessage["SHUTDOWN"] = 2] = "SHUTDOWN";
|
|
25
|
+
})(EWorkerThreadParentMessage = exports.EWorkerThreadParentMessage || (exports.EWorkerThreadParentMessage = {}));
|
|
26
|
+
//# sourceMappingURL=worker-thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-thread.js","sourceRoot":"","sources":["../../../../../src/worker/types/worker-thread.ts"],"names":[],"mappings":";;;AAiBA,IAAY,0BAQX;AARD,WAAY,0BAA0B;IACpC,6GAA0B,CAAA;IAC1B,2GAAmB,CAAA;IACnB,uGAAiB,CAAA;IACjB,yGAAkB,CAAA;IAClB,6GAAoB,CAAA;IACpB,mGAAe,CAAA;IACf,yFAAU,CAAA;AACZ,CAAC,EARW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAQrC;AAED,IAAY,+BAIX;AAJD,WAAY,+BAA+B;IACzC,mFAAQ,CAAA;IACR,+GAAgB,CAAA;IAChB,6HAAuB,CAAA;AACzB,CAAC,EAJW,+BAA+B,GAA/B,uCAA+B,KAA/B,uCAA+B,QAI1C;AAiBD,IAAY,0BAIX;AAJD,WAAY,0BAA0B;IACpC,2EAAI,CAAA;IACJ,yEAAG,CAAA;IACH,mFAAQ,CAAA;AACV,CAAC,EAJW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAIrC"}
|
|
@@ -1,25 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.EWorkerType = void 0;
|
|
4
4
|
var EWorkerType;
|
|
5
5
|
(function (EWorkerType) {
|
|
6
6
|
EWorkerType[EWorkerType["CALLABLE"] = 0] = "CALLABLE";
|
|
7
7
|
EWorkerType[EWorkerType["RUNNABLE"] = 1] = "RUNNABLE";
|
|
8
8
|
})(EWorkerType = exports.EWorkerType || (exports.EWorkerType = {}));
|
|
9
|
-
var EWorkerThreadExitCode;
|
|
10
|
-
(function (EWorkerThreadExitCode) {
|
|
11
|
-
EWorkerThreadExitCode[EWorkerThreadExitCode["WORKER_DATA_REQUIRED"] = 100] = "WORKER_DATA_REQUIRED";
|
|
12
|
-
EWorkerThreadExitCode[EWorkerThreadExitCode["INVALID_WORKER_TYPE"] = 101] = "INVALID_WORKER_TYPE";
|
|
13
|
-
EWorkerThreadExitCode[EWorkerThreadExitCode["FILE_IMPORT_ERROR"] = 102] = "FILE_IMPORT_ERROR";
|
|
14
|
-
EWorkerThreadExitCode[EWorkerThreadExitCode["UNCAUGHT_EXCEPTION"] = 103] = "UNCAUGHT_EXCEPTION";
|
|
15
|
-
EWorkerThreadExitCode[EWorkerThreadExitCode["FILE_EXTENSION_ERROR"] = 104] = "FILE_EXTENSION_ERROR";
|
|
16
|
-
EWorkerThreadExitCode[EWorkerThreadExitCode["FILE_READ_ERROR"] = 105] = "FILE_READ_ERROR";
|
|
17
|
-
EWorkerThreadExitCode[EWorkerThreadExitCode["TERMINATED"] = 106] = "TERMINATED";
|
|
18
|
-
})(EWorkerThreadExitCode = exports.EWorkerThreadExitCode || (exports.EWorkerThreadExitCode = {}));
|
|
19
|
-
var EWorkerThreadExecutionCode;
|
|
20
|
-
(function (EWorkerThreadExecutionCode) {
|
|
21
|
-
EWorkerThreadExecutionCode[EWorkerThreadExecutionCode["OK"] = 200] = "OK";
|
|
22
|
-
EWorkerThreadExecutionCode[EWorkerThreadExecutionCode["PROCESSING_ERROR"] = 201] = "PROCESSING_ERROR";
|
|
23
|
-
EWorkerThreadExecutionCode[EWorkerThreadExecutionCode["PROCESSING_CAUGHT_ERROR"] = 202] = "PROCESSING_CAUGHT_ERROR";
|
|
24
|
-
})(EWorkerThreadExecutionCode = exports.EWorkerThreadExecutionCode || (exports.EWorkerThreadExecutionCode = {}));
|
|
25
9
|
//# sourceMappingURL=worker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../../src/worker/types/worker.ts"],"names":[],"mappings":";;;AAWA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,qDAAQ,CAAA;IACR,qDAAQ,CAAA;AACV,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../../src/worker/types/worker.ts"],"names":[],"mappings":";;;AAWA,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,qDAAQ,CAAA;IACR,qDAAQ,CAAA;AACV,CAAC,EAHW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAGtB"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WorkerCallable = void 0;
|
|
4
|
-
const index_js_1 = require("./
|
|
5
|
-
const index_js_2 = require("./
|
|
4
|
+
const index_js_1 = require("./errors/index.js");
|
|
5
|
+
const index_js_2 = require("./types/index.js");
|
|
6
6
|
const worker_js_1 = require("./worker.js");
|
|
7
7
|
class WorkerCallable extends worker_js_1.Worker {
|
|
8
|
-
constructor() {
|
|
9
|
-
super(
|
|
10
|
-
this.type =
|
|
8
|
+
constructor(workerFilename) {
|
|
9
|
+
super(workerFilename);
|
|
10
|
+
this.type = index_js_2.EWorkerType.CALLABLE;
|
|
11
11
|
}
|
|
12
12
|
call(payload, cb) {
|
|
13
13
|
if (payload === null || payload === undefined) {
|
|
14
|
-
cb(new
|
|
14
|
+
cb(new index_js_1.WorkerPayloadRequiredError());
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
|
-
this.
|
|
17
|
+
this.registerEvents(cb);
|
|
18
|
+
this.postMessage({ type: index_js_2.EWorkerThreadParentMessage.CALL, payload });
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-callable.js","sourceRoot":"","sources":["../../../../src/worker/worker-callable.ts"],"names":[],"mappings":";;;AAUA
|
|
1
|
+
{"version":3,"file":"worker-callable.js","sourceRoot":"","sources":["../../../../src/worker/worker-callable.ts"],"names":[],"mappings":";;;AAUA,gDAA+D;AAC/D,+CAI0B;AAC1B,2CAAqC;AAErC,MAAa,cACX,SAAQ,kBAAsB;IAK9B,YAAY,cAAsB;QAChC,KAAK,CAAC,cAAc,CAAC,CAAC;QAHL,SAAI,GAAgB,sBAAW,CAAC,QAAQ,CAAC;IAI5D,CAAC;IAED,IAAI,CAAC,OAAgB,EAAE,EAAoB;QACzC,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE;YAC7C,EAAE,CAAC,IAAI,qCAA0B,EAAE,CAAC,CAAC;SACtC;aAAM;YACL,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,qCAA0B,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;SACtE;IACH,CAAC;CACF;AAlBD,wCAkBC"}
|
|
@@ -31,8 +31,7 @@ class WorkerResourceGroup extends index_js_4.Runnable {
|
|
|
31
31
|
if (!this.runWorkersLocked) {
|
|
32
32
|
this.runWorkersLocked = true;
|
|
33
33
|
index_js_1.async.each(this.workers, (worker, _, done) => {
|
|
34
|
-
|
|
35
|
-
instance.run(payload, done);
|
|
34
|
+
worker.run(done);
|
|
36
35
|
}, (err) => {
|
|
37
36
|
this.runWorkersLocked = false;
|
|
38
37
|
cb(err);
|
|
@@ -45,7 +44,7 @@ class WorkerResourceGroup extends index_js_4.Runnable {
|
|
|
45
44
|
if (!this.runWorkersLocked) {
|
|
46
45
|
this.runWorkersLocked = true;
|
|
47
46
|
index_js_1.async.each(this.workers, (worker, _, done) => {
|
|
48
|
-
worker.
|
|
47
|
+
worker.shutdown(() => done());
|
|
49
48
|
}, () => {
|
|
50
49
|
this.workers = [];
|
|
51
50
|
this.runWorkersLocked = false;
|
|
@@ -59,9 +58,9 @@ class WorkerResourceGroup extends index_js_4.Runnable {
|
|
|
59
58
|
this.locker.releaseLock(cb);
|
|
60
59
|
};
|
|
61
60
|
this.addWorker = (filename, payload) => {
|
|
62
|
-
const worker = new worker_runnable_js_1.WorkerRunnable(filename);
|
|
61
|
+
const worker = new worker_runnable_js_1.WorkerRunnable(filename, payload);
|
|
63
62
|
worker.on('worker.error', (err) => this.handleError(err));
|
|
64
|
-
this.workers.push(
|
|
63
|
+
this.workers.push(worker);
|
|
65
64
|
};
|
|
66
65
|
this.loadFromDir = (workersDir, payload, cb) => {
|
|
67
66
|
if (this.isDown() && !this.isGoingUp()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-resource-group.js","sourceRoot":"","sources":["../../../../src/worker/worker-resource-group.ts"],"names":[],"mappings":";;;;;;AASA,2BAA6B;AAC7B,gDAAwB;AACxB,gDAA0C;AAE1C,iDAAgD;AAChD,mDAA6C;AAE7C,uDAAuD;AAEvD,mDAAgD;AAChD,6DAAsD;AAMtD,MAAa,mBAAoB,SAAQ,mBAAmC;
|
|
1
|
+
{"version":3,"file":"worker-resource-group.js","sourceRoot":"","sources":["../../../../src/worker/worker-resource-group.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,33 +6,26 @@ const power_switch_js_1 = require("../power-switch/power-switch.js");
|
|
|
6
6
|
const index_js_2 = require("./errors/index.js");
|
|
7
7
|
const worker_js_1 = require("./worker.js");
|
|
8
8
|
class WorkerRunnable extends worker_js_1.Worker {
|
|
9
|
-
constructor(workerFilename) {
|
|
10
|
-
super(workerFilename);
|
|
9
|
+
constructor(workerFilename, initialPayload) {
|
|
10
|
+
super(workerFilename, initialPayload);
|
|
11
11
|
this.type = index_js_1.EWorkerType.RUNNABLE;
|
|
12
12
|
this.powerSwitch = new power_switch_js_1.PowerSwitch();
|
|
13
13
|
}
|
|
14
|
-
run(
|
|
14
|
+
run(cb) {
|
|
15
15
|
const r = this.powerSwitch.goingUp();
|
|
16
16
|
if (r) {
|
|
17
|
-
this.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
this.powerSwitch.commit();
|
|
24
|
-
this.registerEvents(this);
|
|
25
|
-
cb();
|
|
26
|
-
}
|
|
27
|
-
});
|
|
17
|
+
this.registerEvents(this);
|
|
18
|
+
this.postMessage({ type: index_js_1.EWorkerThreadParentMessage.RUN });
|
|
19
|
+
this.powerSwitch.commit();
|
|
20
|
+
cb();
|
|
28
21
|
}
|
|
29
22
|
else
|
|
30
23
|
cb(new index_js_2.WorkerAlreadyRunningError());
|
|
31
24
|
}
|
|
32
|
-
|
|
25
|
+
shutdown(cb) {
|
|
33
26
|
const r = this.powerSwitch.goingDown();
|
|
34
27
|
if (r) {
|
|
35
|
-
super.
|
|
28
|
+
super.shutdown(() => {
|
|
36
29
|
this.powerSwitch.commit();
|
|
37
30
|
cb();
|
|
38
31
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-runnable.js","sourceRoot":"","sources":["../../../../src/worker/worker-runnable.ts"],"names":[],"mappings":";;;AAUA,+
|
|
1
|
+
{"version":3,"file":"worker-runnable.js","sourceRoot":"","sources":["../../../../src/worker/worker-runnable.ts"],"names":[],"mappings":";;;AAUA,+CAI0B;AAC1B,qEAA8D;AAC9D,gDAG2B;AAC3B,2CAAqC;AAErC,MAAa,cACX,SAAQ,kBAAkB;IAM1B,YAAY,cAAsB,EAAE,cAA+B;QACjE,KAAK,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAJrB,SAAI,GAAgB,sBAAW,CAAC,QAAQ,CAAC;QAK1D,IAAI,CAAC,WAAW,GAAG,IAAI,6BAAW,EAAE,CAAC;IACvC,CAAC;IAED,GAAG,CAAC,EAAmB;QACrB,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,qCAA0B,CAAC,GAAG,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;YAC1B,EAAE,EAAE,CAAC;SACN;;YAAM,EAAE,CAAC,IAAI,oCAAyB,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEQ,QAAQ,CAAC,EAAmB;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,CAAC,EAAE;YACL,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAClB,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC1B,EAAE,EAAE,CAAC;YACP,CAAC,CAAC,CAAC;SACJ;;YAAM,EAAE,CAAC,IAAI,iCAAsB,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF;AA/BD,wCA+BC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleWorkerCallable = void 0;
|
|
4
|
+
const index_js_1 = require("../types/index.js");
|
|
5
|
+
const worker_thread_message_js_1 = require("./worker-thread-message.js");
|
|
6
|
+
function handleWorkerCallable(worker, messagePort) {
|
|
7
|
+
const callback = (err, reply) => {
|
|
8
|
+
if (err) {
|
|
9
|
+
(0, worker_thread_message_js_1.postMessage)(messagePort, index_js_1.EWorkerThreadChildExecutionCode.PROCESSING_ERROR, err);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
(0, worker_thread_message_js_1.postMessage)(messagePort, index_js_1.EWorkerThreadChildExecutionCode.OK, null, reply);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const onMessage = (message) => {
|
|
16
|
+
if (message.type === index_js_1.EWorkerThreadParentMessage.CALL) {
|
|
17
|
+
const { payload } = message;
|
|
18
|
+
try {
|
|
19
|
+
worker(payload, callback);
|
|
20
|
+
}
|
|
21
|
+
catch (err) {
|
|
22
|
+
(0, worker_thread_message_js_1.postMessage)(messagePort, index_js_1.EWorkerThreadChildExecutionCode.PROCESSING_CAUGHT_ERROR, err);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
messagePort.on('message', onMessage);
|
|
27
|
+
}
|
|
28
|
+
exports.handleWorkerCallable = handleWorkerCallable;
|
|
29
|
+
//# sourceMappingURL=worker-thread-callable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-thread-callable.js","sourceRoot":"","sources":["../../../../../src/worker/worker-thread/worker-thread-callable.ts"],"names":[],"mappings":";;;AAUA,gDAK2B;AAC3B,yEAAyD;AAEzD,SAAgB,oBAAoB,CAClC,MAA+B,EAC/B,WAAwB;IAExB,MAAM,QAAQ,GAAG,CAAC,GAAkB,EAAE,KAAe,EAAE,EAAE;QACvD,IAAI,GAAG,EAAE;YACP,IAAA,sCAAW,EACT,WAAW,EACX,0CAA+B,CAAC,gBAAgB,EAChD,GAAG,CACJ,CAAC;SACH;aAAM;YACL,IAAA,sCAAW,EAAC,WAAW,EAAE,0CAA+B,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;SAC3E;IACH,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,CAAC,OAAmC,EAAE,EAAE;QACxD,IAAI,OAAO,CAAC,IAAI,KAAK,qCAA0B,CAAC,IAAI,EAAE;YACpD,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAC5B,IAAI;gBACF,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aAC3B;YAAC,OAAO,GAAY,EAAE;gBACrB,IAAA,sCAAW,EACT,WAAW,EACX,0CAA+B,CAAC,uBAAuB,EACvD,GAAG,CACJ,CAAC;aACH;SACF;IACH,CAAC,CAAC;IACF,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACvC,CAAC;AA9BD,oDA8BC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exit = exports.postMessage = void 0;
|
|
4
|
+
const worker_threads_1 = require("worker_threads");
|
|
5
|
+
const worker_thread_js_1 = require("../types/worker-thread.js");
|
|
6
|
+
function formatErrorMessage(code, err) {
|
|
7
|
+
const error = err && err instanceof Error
|
|
8
|
+
? { name: err.name, message: err.message }
|
|
9
|
+
: null;
|
|
10
|
+
return {
|
|
11
|
+
code,
|
|
12
|
+
error,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function formatOKMessage(data) {
|
|
16
|
+
return {
|
|
17
|
+
code: worker_thread_js_1.EWorkerThreadChildExecutionCode.OK,
|
|
18
|
+
data,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function postMessage(messagePort, code, err, data) {
|
|
22
|
+
const msg = code === worker_thread_js_1.EWorkerThreadChildExecutionCode.OK
|
|
23
|
+
? formatOKMessage(data)
|
|
24
|
+
: formatErrorMessage(code, err);
|
|
25
|
+
messagePort.postMessage(msg);
|
|
26
|
+
}
|
|
27
|
+
exports.postMessage = postMessage;
|
|
28
|
+
function exit(code, err) {
|
|
29
|
+
worker_threads_1.parentPort && postMessage(worker_threads_1.parentPort, code, err);
|
|
30
|
+
process.exit(code);
|
|
31
|
+
}
|
|
32
|
+
exports.exit = exit;
|
|
33
|
+
//# sourceMappingURL=worker-thread-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-thread-message.js","sourceRoot":"","sources":["../../../../../src/worker/worker-thread/worker-thread-message.ts"],"names":[],"mappings":";;;AAQA,mDAAyD;AACzD,gEAImC;AAEnC,SAAS,kBAAkB,CACzB,IAAmC,EACnC,GAAa;IAEb,MAAM,KAAK,GACT,GAAG,IAAI,GAAG,YAAY,KAAK;QACzB,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;QAC1C,CAAC,CAAC,IAAI,CAAC;IACX,OAAO;QACL,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAc;IACrC,OAAO;QACL,IAAI,EAAE,kDAA+B,CAAC,EAAE;QACxC,IAAI;KACL,CAAC;AACJ,CAAC;AAED,SAAgB,WAAW,CACzB,WAAwB,EACxB,IAAmC,EACnC,GAAa,EACb,IAAc;IAEd,MAAM,GAAG,GACP,IAAI,KAAK,kDAA+B,CAAC,EAAE;QACzC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;QACvB,CAAC,CAAC,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC/B,CAAC;AAXD,kCAWC;AAED,SAAgB,IAAI,CAAC,IAAmC,EAAE,GAAa;IACrE,2BAAU,IAAI,WAAW,CAAC,2BAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAHD,oBAGC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleWorkerRunnable = void 0;
|
|
4
|
+
const index_js_1 = require("../types/index.js");
|
|
5
|
+
const worker_thread_message_js_1 = require("./worker-thread-message.js");
|
|
6
|
+
function handleWorkerRunnable(worker, messagePort, initialPayload) {
|
|
7
|
+
let instance = null;
|
|
8
|
+
try {
|
|
9
|
+
instance = worker(initialPayload);
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
(0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExitCode.INVALID_WORKER_TYPE, err);
|
|
13
|
+
}
|
|
14
|
+
if (!instance ||
|
|
15
|
+
typeof instance !== 'object' ||
|
|
16
|
+
!(instance === null || instance === void 0 ? void 0 : instance.run) ||
|
|
17
|
+
!(instance === null || instance === void 0 ? void 0 : instance.shutdown)) {
|
|
18
|
+
(0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExitCode.INVALID_WORKER_TYPE);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
const run = () => {
|
|
22
|
+
try {
|
|
23
|
+
instance === null || instance === void 0 ? void 0 : instance.run((err) => {
|
|
24
|
+
if (err)
|
|
25
|
+
(0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExecutionCode.PROCESSING_ERROR, err);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
(0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExecutionCode.PROCESSING_CAUGHT_ERROR, err);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
const shutdown = () => {
|
|
33
|
+
instance === null || instance === void 0 ? void 0 : instance.shutdown(() => void 0);
|
|
34
|
+
};
|
|
35
|
+
const onMessage = (message) => {
|
|
36
|
+
if (message.type === index_js_1.EWorkerThreadParentMessage.RUN)
|
|
37
|
+
run();
|
|
38
|
+
if (message.type === index_js_1.EWorkerThreadParentMessage.SHUTDOWN)
|
|
39
|
+
shutdown();
|
|
40
|
+
};
|
|
41
|
+
messagePort.on('message', onMessage);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.handleWorkerRunnable = handleWorkerRunnable;
|
|
45
|
+
//# sourceMappingURL=worker-thread-runnable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-thread-runnable.js","sourceRoot":"","sources":["../../../../../src/worker/worker-thread/worker-thread-runnable.ts"],"names":[],"mappings":";;;AAUA,gDAO2B;AAC3B,yEAAkD;AAElD,SAAgB,oBAAoB,CAClC,MAAsC,EACtC,WAAwB,EACxB,cAAuB;IAEvB,IAAI,QAAQ,GAA2B,IAAI,CAAC;IAC5C,IAAI;QACF,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;KACnC;IAAC,OAAO,GAAY,EAAE;QACrB,IAAA,+BAAI,EAAC,qCAA0B,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;KAC3D;IACD,IACE,CAAC,QAAQ;QACT,OAAO,QAAQ,KAAK,QAAQ;QAC5B,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAA;QACd,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAA,EACnB;QACA,IAAA,+BAAI,EAAC,qCAA0B,CAAC,mBAAmB,CAAC,CAAC;KACtD;SAAM;QACL,MAAM,GAAG,GAAG,GAAG,EAAE;YACf,IAAI;gBACF,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE;oBACrC,IAAI,GAAG;wBAAE,IAAA,+BAAI,EAAC,0CAA+B,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;gBACvE,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,GAAY,EAAE;gBACrB,IAAA,+BAAI,EAAC,0CAA+B,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;aACpE;QACH,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,CAAC,OAAmC,EAAE,EAAE;YACxD,IAAI,OAAO,CAAC,IAAI,KAAK,qCAA0B,CAAC,GAAG;gBAAE,GAAG,EAAE,CAAC;YAC3D,IAAI,OAAO,CAAC,IAAI,KAAK,qCAA0B,CAAC,QAAQ;gBAAE,QAAQ,EAAE,CAAC;QACvE,CAAC,CAAC;QACF,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;KACtC;AACH,CAAC;AArCD,oDAqCC"}
|
|
@@ -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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const fs_1 = require("fs");
|
|
27
|
+
const path_1 = require("path");
|
|
28
|
+
const worker_threads_1 = require("worker_threads");
|
|
29
|
+
const index_js_1 = require("../types/index.js");
|
|
30
|
+
const worker_thread_callable_js_1 = require("./worker-thread-callable.js");
|
|
31
|
+
const worker_thread_message_js_1 = require("./worker-thread-message.js");
|
|
32
|
+
const worker_thread_runnable_js_1 = require("./worker-thread-runnable.js");
|
|
33
|
+
function importWorkerInstance(filename, cb) {
|
|
34
|
+
var _a;
|
|
35
|
+
if (!['.js', '.cjs'].includes((0, path_1.extname)(filename))) {
|
|
36
|
+
(0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExitCode.FILE_EXTENSION_ERROR);
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
(0, fs_1.statSync)(filename);
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
(0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExitCode.FILE_READ_ERROR, e);
|
|
43
|
+
}
|
|
44
|
+
(_a = filename, Promise.resolve().then(() => __importStar(require(_a)))).then((importedModule) => {
|
|
45
|
+
const fn = typeof importedModule !== 'function' && importedModule.default
|
|
46
|
+
? importedModule.default
|
|
47
|
+
: importedModule;
|
|
48
|
+
if (typeof fn !== 'function') {
|
|
49
|
+
(0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExitCode.INVALID_WORKER_TYPE);
|
|
50
|
+
}
|
|
51
|
+
else
|
|
52
|
+
cb(fn);
|
|
53
|
+
})
|
|
54
|
+
.catch(() => {
|
|
55
|
+
(0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExitCode.FILE_IMPORT_ERROR);
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function isRunnableFunctionFactory(worker, type) {
|
|
59
|
+
return type === index_js_1.EWorkerType.RUNNABLE;
|
|
60
|
+
}
|
|
61
|
+
if (!worker_threads_1.isMainThread && worker_threads_1.parentPort) {
|
|
62
|
+
if (!worker_threads_1.workerData) {
|
|
63
|
+
(0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExitCode.WORKER_DATA_REQUIRED);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
const messagePort = worker_threads_1.parentPort;
|
|
67
|
+
const { filename, initialPayload, type } = worker_threads_1.workerData;
|
|
68
|
+
importWorkerInstance(filename, (worker) => {
|
|
69
|
+
if (isRunnableFunctionFactory(worker, type))
|
|
70
|
+
(0, worker_thread_runnable_js_1.handleWorkerRunnable)(worker, messagePort, initialPayload);
|
|
71
|
+
else
|
|
72
|
+
(0, worker_thread_callable_js_1.handleWorkerCallable)(worker, messagePort);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
process.on('uncaughtException', (err) => {
|
|
76
|
+
(0, worker_thread_message_js_1.exit)(index_js_1.EWorkerThreadChildExitCode.UNCAUGHT_EXCEPTION, err);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=worker-thread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-thread.js","sourceRoot":"","sources":["../../../../../src/worker/worker-thread/worker-thread.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AASA,2BAA8B;AAC9B,+BAA+B;AAC/B,mDAMwB;AACxB,gDAM2B;AAC3B,2EAAmE;AACnE,yEAAkD;AAClD,2EAAmE;AAEnE,SAAS,oBAAoB,CAC3B,QAAgB,EAChB,EAAqC;;IAErC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,EAAE;QAChD,IAAA,+BAAI,EAAC,qCAA0B,CAAC,oBAAoB,CAAC,CAAC;KACvD;IACD,IAAI;QACF,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC;KACpB;IAAC,OAAO,CAAU,EAAE;QACnB,IAAA,+BAAI,EAAC,qCAA0B,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;KACrD;IACD,MAAO,QAAQ,2DACZ,IAAI,CAAC,CAAC,cAA+D,EAAE,EAAE;QACxE,MAAM,EAAE,GACN,OAAO,cAAc,KAAK,UAAU,IAAI,cAAc,CAAC,OAAO;YAC5D,CAAC,CAAC,cAAc,CAAC,OAAO;YACxB,CAAC,CAAC,cAAc,CAAC;QACrB,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE;YAC5B,IAAA,+BAAI,EAAC,qCAA0B,CAAC,mBAAmB,CAAC,CAAC;SACtD;;YAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE;QACV,IAAA,+BAAI,EAAC,qCAA0B,CAAC,iBAAiB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,yBAAyB,CAChC,MAAuB,EACvB,IAAiB;IAEjB,OAAO,IAAI,KAAK,sBAAW,CAAC,QAAQ,CAAC;AACvC,CAAC;AAED,IAAI,CAAC,6BAAY,IAAI,2BAAU,EAAE;IAE/B,IAAI,CAAC,2BAAU,EAAE;QACf,IAAA,+BAAI,EAAC,qCAA0B,CAAC,oBAAoB,CAAC,CAAC;KACvD;SAAM;QACL,MAAM,WAAW,GAAgB,2BAAU,CAAC;QAC5C,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,GAAsB,2BAAU,CAAC;QACzE,oBAAoB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YACxC,IAAI,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC;gBACzC,IAAA,gDAAoB,EAAC,MAAM,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;;gBACvD,IAAA,gDAAoB,EAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;QACtC,IAAA,+BAAI,EAAC,qCAA0B,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;CACJ"}
|
|
@@ -9,15 +9,20 @@ const index_js_2 = require("../event/index.js");
|
|
|
9
9
|
const index_js_3 = require("./errors/index.js");
|
|
10
10
|
const dir = (0, environment_js_1.getDirname)();
|
|
11
11
|
class Worker extends index_js_2.EventEmitter {
|
|
12
|
-
constructor(workerFilename) {
|
|
12
|
+
constructor(workerFilename, initialPayload) {
|
|
13
13
|
super();
|
|
14
14
|
this.workerThread = null;
|
|
15
15
|
this.workerFilename = workerFilename;
|
|
16
|
+
this.initialPayload = initialPayload;
|
|
16
17
|
}
|
|
17
18
|
getWorkerThread() {
|
|
18
19
|
if (!this.workerThread) {
|
|
19
|
-
this.workerThread = new worker_threads_1.Worker((0, path_1.resolve)(dir, './worker-thread.js'), {
|
|
20
|
-
workerData: {
|
|
20
|
+
this.workerThread = new worker_threads_1.Worker((0, path_1.resolve)(dir, './worker-thread/worker-thread.js'), {
|
|
21
|
+
workerData: {
|
|
22
|
+
filename: this.workerFilename,
|
|
23
|
+
initialPayload: this.initialPayload,
|
|
24
|
+
type: this.type,
|
|
25
|
+
},
|
|
21
26
|
});
|
|
22
27
|
this.workerThread.on('messageerror', (err) => {
|
|
23
28
|
console.error(err);
|
|
@@ -55,7 +60,7 @@ class Worker extends index_js_2.EventEmitter {
|
|
|
55
60
|
};
|
|
56
61
|
const onMessage = (msg) => {
|
|
57
62
|
cleanUp();
|
|
58
|
-
if (msg.code !== index_js_1.
|
|
63
|
+
if (msg.code !== index_js_1.EWorkerThreadChildExecutionCode.OK) {
|
|
59
64
|
callback(new index_js_3.WorkerThreadError(msg));
|
|
60
65
|
}
|
|
61
66
|
else
|
|
@@ -64,7 +69,7 @@ class Worker extends index_js_2.EventEmitter {
|
|
|
64
69
|
const onExit = () => {
|
|
65
70
|
cleanUp();
|
|
66
71
|
const msg = {
|
|
67
|
-
code: index_js_1.
|
|
72
|
+
code: index_js_1.EWorkerThreadChildExitCode.TERMINATED,
|
|
68
73
|
error: null,
|
|
69
74
|
};
|
|
70
75
|
callback(new index_js_3.WorkerThreadError(msg));
|
|
@@ -72,12 +77,10 @@ class Worker extends index_js_2.EventEmitter {
|
|
|
72
77
|
worker.once('message', onMessage);
|
|
73
78
|
worker.once('exit', onExit);
|
|
74
79
|
}
|
|
75
|
-
|
|
76
|
-
this.
|
|
77
|
-
if (!(payload === null || payload === undefined))
|
|
78
|
-
this.getWorkerThread().postMessage(payload);
|
|
80
|
+
postMessage(message) {
|
|
81
|
+
this.getWorkerThread().postMessage(message);
|
|
79
82
|
}
|
|
80
|
-
|
|
83
|
+
shutdown(cb) {
|
|
81
84
|
const callback = () => {
|
|
82
85
|
this.workerThread = null;
|
|
83
86
|
cb();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/worker/worker.ts"],"names":[],"mappings":";;;AASA,+BAA+B;AAC/B,mDAAwD;AAExD,+
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../../src/worker/worker.ts"],"names":[],"mappings":"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"}
|