threadsx 2.0.2 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/errors.d.ts +16 -0
- package/dist/errors.js +31 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -1
- package/dist/master/implementation.node.js +34 -18
- package/dist/master/invocation-proxy.js +45 -11
- package/dist/master/pool.d.ts +1 -24
- package/dist/master/pool.js +41 -8
- package/dist/master/spawn.js +24 -7
- package/dist/node-require.d.ts +13 -0
- package/dist/node-require.js +87 -0
- package/dist/transferable.d.ts +1 -0
- package/dist/types/master.d.ts +22 -1
- package/dist/types/master.js +0 -1
- package/dist/types/worker.d.ts +1 -0
- package/dist/worker/implementation.browser.d.ts +1 -1
- package/dist/worker/implementation.worker_threads.d.ts +1 -1
- package/dist/worker_threads.d.ts +3 -7
- package/dist/worker_threads.js +35 -11
- package/dist-esm/common.js +1 -0
- package/dist-esm/common.js.map +1 -0
- package/dist-esm/errors.js +27 -0
- package/dist-esm/errors.js.map +1 -0
- package/dist-esm/index.js +2 -0
- package/dist-esm/index.js.map +1 -0
- package/dist-esm/master/get-bundle-url.browser.js +1 -0
- package/dist-esm/master/get-bundle-url.browser.js.map +1 -0
- package/dist-esm/master/implementation.browser.js +1 -0
- package/dist-esm/master/implementation.browser.js.map +1 -0
- package/dist-esm/master/implementation.js +1 -0
- package/dist-esm/master/implementation.js.map +1 -0
- package/dist-esm/master/implementation.node.js +35 -18
- package/dist-esm/master/implementation.node.js.map +1 -0
- package/dist-esm/master/index.js +1 -0
- package/dist-esm/master/index.js.map +1 -0
- package/dist-esm/master/invocation-proxy.js +46 -11
- package/dist-esm/master/invocation-proxy.js.map +1 -0
- package/dist-esm/master/pool-types.js +1 -0
- package/dist-esm/master/pool-types.js.map +1 -0
- package/dist-esm/master/pool.js +42 -8
- package/dist-esm/master/pool.js.map +1 -0
- package/dist-esm/master/register.js +1 -0
- package/dist-esm/master/register.js.map +1 -0
- package/dist-esm/master/spawn.js +25 -7
- package/dist-esm/master/spawn.js.map +1 -0
- package/dist-esm/master/thread.js +1 -0
- package/dist-esm/master/thread.js.map +1 -0
- package/dist-esm/node-require.js +50 -0
- package/dist-esm/node-require.js.map +1 -0
- package/dist-esm/observable-promise.js +1 -0
- package/dist-esm/observable-promise.js.map +1 -0
- package/dist-esm/observable.js +1 -0
- package/dist-esm/observable.js.map +1 -0
- package/dist-esm/ponyfills.js +1 -0
- package/dist-esm/ponyfills.js.map +1 -0
- package/dist-esm/promise.js +1 -0
- package/dist-esm/promise.js.map +1 -0
- package/dist-esm/serializers.js +1 -0
- package/dist-esm/serializers.js.map +1 -0
- package/dist-esm/symbols.js +1 -0
- package/dist-esm/symbols.js.map +1 -0
- package/dist-esm/transferable.js +1 -0
- package/dist-esm/transferable.js.map +1 -0
- package/dist-esm/types/master.js +1 -1
- package/dist-esm/types/master.js.map +1 -0
- package/dist-esm/types/messages.js +1 -0
- package/dist-esm/types/messages.js.map +1 -0
- package/dist-esm/types/worker.js +1 -0
- package/dist-esm/types/worker.js.map +1 -0
- package/dist-esm/worker/bundle-entry.js +1 -0
- package/dist-esm/worker/bundle-entry.js.map +1 -0
- package/dist-esm/worker/implementation.browser.js +1 -0
- package/dist-esm/worker/implementation.browser.js.map +1 -0
- package/dist-esm/worker/implementation.js +1 -0
- package/dist-esm/worker/implementation.js.map +1 -0
- package/dist-esm/worker/implementation.worker_threads.js +1 -0
- package/dist-esm/worker/implementation.worker_threads.js.map +1 -0
- package/dist-esm/worker/index.js +1 -0
- package/dist-esm/worker/index.js.map +1 -0
- package/dist-esm/worker_threads.js +3 -11
- package/dist-esm/worker_threads.js.map +1 -0
- package/esm/common.mjs +20 -0
- package/esm/errors.mjs +34 -0
- package/esm/index.mjs +16 -0
- package/esm/master/get-bundle-url.browser.mjs +32 -0
- package/esm/master/implementation.browser.mjs +76 -0
- package/esm/master/implementation.mjs +24 -0
- package/esm/master/implementation.node.mjs +186 -0
- package/esm/master/index.mjs +17 -0
- package/esm/master/invocation-proxy.mjs +164 -0
- package/esm/master/pool-types.mjs +20 -0
- package/esm/master/pool.mjs +324 -0
- package/esm/master/register.mjs +14 -0
- package/esm/master/spawn.mjs +179 -0
- package/esm/master/thread.mjs +28 -0
- package/esm/node-require.mjs +58 -0
- package/esm/observable-promise.mjs +155 -0
- package/esm/observable.mjs +45 -0
- package/esm/ponyfills.mjs +26 -0
- package/esm/promise.mjs +32 -0
- package/esm/serializers.mjs +55 -0
- package/esm/symbols.mjs +13 -0
- package/esm/transferable.mjs +31 -0
- package/esm/types/master.mjs +15 -0
- package/esm/types/messages.mjs +25 -0
- package/esm/worker/implementation.browser.mjs +31 -0
- package/esm/worker/implementation.mjs +21 -0
- package/esm/worker/implementation.worker_threads.mjs +44 -0
- package/esm/worker/index.mjs +224 -0
- package/esm/worker_threads.mjs +13 -0
- package/package.json +32 -24
- package/index.mjs +0 -4
- package/observable.mjs +0 -1
- package/register.mjs +0 -2
- package/worker.mjs +0 -1
package/dist/worker_threads.d.ts
CHANGED
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
isMainThread: boolean;
|
|
5
|
-
parentPort: MessagePort;
|
|
6
|
-
}
|
|
7
|
-
export default function getImplementation(): WorkerThreadsModule;
|
|
1
|
+
import * as WorkerThreadsModule from "worker_threads";
|
|
2
|
+
type WorkerThreadsInterface = typeof WorkerThreadsModule;
|
|
3
|
+
export default function getImplementation(): WorkerThreadsInterface;
|
|
8
4
|
export {};
|
package/dist/worker_threads.js
CHANGED
|
@@ -1,16 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
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
|
+
})();
|
|
3
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
36
|
exports.default = getImplementation;
|
|
5
|
-
|
|
6
|
-
function selectImplementation() {
|
|
7
|
-
return typeof __non_webpack_require__ === "function"
|
|
8
|
-
? __non_webpack_require__("worker_threads")
|
|
9
|
-
: eval("require")("worker_threads");
|
|
10
|
-
}
|
|
37
|
+
const WorkerThreadsModule = __importStar(require("worker_threads"));
|
|
11
38
|
function getImplementation() {
|
|
12
|
-
|
|
13
|
-
implementation = selectImplementation();
|
|
14
|
-
}
|
|
15
|
-
return implementation;
|
|
39
|
+
return WorkerThreadsModule;
|
|
16
40
|
}
|
package/dist-esm/common.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAIlB,MAAM,eAAe,CAAA;AAEtB,IAAI,oBAAoB,GAAiC,iBAAiB,CAAA;AAE1E,MAAM,UAAU,kBAAkB,CAAC,UAAsD;IACvF,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAyB;IACnD,OAAO,oBAAoB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAU;IAClC,OAAO,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when a value passed to a thread cannot be cloned by the structured
|
|
3
|
+
* clone algorithm (e.g. functions, class instances with methods, or other
|
|
4
|
+
* non-serializable values). Wraps the underlying `DataCloneError` / `DOMException`
|
|
5
|
+
* with an actionable message. Access the original error via `.cause`.
|
|
6
|
+
*/
|
|
7
|
+
export class ThreadCloneError extends Error {
|
|
8
|
+
constructor(message, cause) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "ThreadCloneError";
|
|
11
|
+
this.cause = cause;
|
|
12
|
+
// Restore the prototype chain — extending built-ins breaks `instanceof`
|
|
13
|
+
// when compiled down to ES2015 without this.
|
|
14
|
+
Object.setPrototypeOf(this, ThreadCloneError.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Whether an error is a structured-clone failure. Both browsers and Node's
|
|
19
|
+
* `worker_threads` throw a `DOMException`/error named `"DataCloneError"` when a
|
|
20
|
+
* value cannot be cloned across the thread boundary.
|
|
21
|
+
*/
|
|
22
|
+
export function isDataCloneError(error) {
|
|
23
|
+
return Boolean(error &&
|
|
24
|
+
typeof error === "object" &&
|
|
25
|
+
error.name === "DataCloneError");
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAGzC,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;QAC9B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,wEAAwE;QACxE,6CAA6C;QAC7C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAA;IACzD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,CACZ,KAAK;QACL,OAAO,KAAK,KAAK,QAAQ;QACxB,KAA4B,CAAC,IAAI,KAAK,gBAAgB,CACxD,CAAA;AACH,CAAC"}
|
package/dist-esm/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { registerSerializer } from "./common";
|
|
2
|
+
export { ThreadCloneError } from "./errors";
|
|
2
3
|
export * from "./master/index";
|
|
3
4
|
export { expose } from "./worker/index";
|
|
4
5
|
export { DefaultSerializer } from "./serializers";
|
|
5
6
|
export { Transfer } from "./transferable";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAA0D,MAAM,eAAe,CAAA;AACzG,OAAO,EAAE,QAAQ,EAAsB,MAAM,gBAAgB,CAAA"}
|
|
@@ -23,3 +23,4 @@ function getBaseURL(url) {
|
|
|
23
23
|
return ("" + url).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\/\/.+)?\/[^/]+(?:\?.*)?$/, '$1') + '/';
|
|
24
24
|
}
|
|
25
25
|
export { getBaseURL, getBundleURLCached as getBundleURL };
|
|
26
|
+
//# sourceMappingURL=get-bundle-url.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-bundle-url.browser.js","sourceRoot":"","sources":["../../src/master/get-bundle-url.browser.ts"],"names":[],"mappings":"AAAA,yHAAyH;AAEzH,IAAI,SAA6B,CAAA;AAEjC,SAAS,kBAAkB;IACzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,YAAY,EAAE,CAAA;IAC5B,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,YAAY;IACnB,6EAA6E;IAC7E,IAAI,CAAC;QACH,MAAM,IAAI,KAAK,CAAA;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,CAAC,EAAE,GAAI,GAAa,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAA;QAClH,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,gFAAgF,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;AAC1H,CAAC;AAED,OAAO,EACL,UAAU,EACV,kBAAkB,IAAI,YAAY,EACnC,CAAA"}
|
|
@@ -65,3 +65,4 @@ export function isWorkerRuntime() {
|
|
|
65
65
|
const isWindowContext = typeof self !== "undefined" && typeof Window !== "undefined" && self instanceof Window;
|
|
66
66
|
return typeof self !== "undefined" && typeof self.postMessage === "function" && !isWindowContext;
|
|
67
67
|
}
|
|
68
|
+
//# sourceMappingURL=implementation.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implementation.browser.js","sourceRoot":"","sources":["../../src/master/implementation.browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,CAAC,mBAAmB;IAC9F,CAAC,CAAC,SAAS,CAAC,mBAAmB;IAC/B,CAAC,CAAC,CAAC,CAAA;AAEL,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAEhF,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,IAAI,GAAG,IAAI,IAAI,CACnB,CAAC,IAAI,CAAC,EACN,EAAE,IAAI,EAAE,wBAAwB,EAAE,CACnC,CAAA;IACD,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,uCAAuC;QACvC,+DAA+D;QAC/D,OAAO,MAAM,WAAW;YACtB;gBACE,MAAM,KAAK,CAAC,sJAAsJ,CAAC,CAAA;YACrK,CAAC;SACK,CAAA;IACV,CAAC;IAED,MAAM,SAAU,SAAQ,MAAM;QAC5B,YAAY,GAAiB,EAAE,OAA8B;;YAC3D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC3D,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;YACtC,CAAC;iBAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,YAAY,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;gBACjG,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;gBAC3D,IAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,IAAI,EAAE,CAAC;oBACpC,GAAG,GAAG,mBAAmB,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACrE,CAAC;YACH,CAAC;YACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClD,gEAAgE;gBAChE,yCAAyC;gBACzC,IAAI,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,IAAI,EAAE,CAAC;oBACpC,GAAG,GAAG,mBAAmB,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;gBACrE,CAAC;YACH,CAAC;YACD,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACrB,CAAC;KACF;IAED,MAAM,UAAW,SAAQ,SAAS;QAChC,YAAY,IAAU,EAAE,OAA8B;YACpD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;YAC5C,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACrB,CAAC;QAEM,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,OAA8B;YACnE,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAA;YACnE,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACtC,CAAC;KACF;IAED,OAAO;QACL,IAAI,EAAE,UAAiB;QACvB,OAAO,EAAE,SAAgB;KAC1B,CAAA;AACH,CAAC;AAED,IAAI,cAAoC,CAAA;AAExC,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,cAAc,GAAG,0BAA0B,EAAE,CAAA;IAC/C,CAAC;IACD,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,eAAe,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,IAAI,YAAY,MAAM,CAAA;IAC9G,OAAO,OAAO,IAAI,KAAK,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,UAAU,IAAI,CAAC,eAAe,CAAA;AAClG,CAAC"}
|
|
@@ -13,3 +13,4 @@ export const defaultPoolSize = implementation.defaultPoolSize;
|
|
|
13
13
|
export const getWorkerImplementation = implementation.getWorkerImplementation;
|
|
14
14
|
/** Returns `true` if this code is currently running in a worker. */
|
|
15
15
|
export const isWorkerRuntime = implementation.isWorkerRuntime;
|
|
16
|
+
//# sourceMappingURL=implementation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implementation.js","sourceRoot":"","sources":["../../src/master/implementation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,sFAAsF;AACtF,sFAAsF;AACtF,sBAAsB;AAEtB,OAAO,KAAK,qBAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,kBAAkB,MAAM,uBAAuB,CAAA;AAE3D,MAAM,aAAa,GAAG,OAAO,OAAO,KAAK,WAAW,IAAK,OAAO,CAAC,IAAe,KAAK,SAAS,IAAI,KAAK,IAAI,OAAO,CAAA;AAClH,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,qBAAqB,CAAA;AAEjF,mGAAmG;AACnG,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAA;AAE7D,MAAM,CAAC,MAAM,uBAAuB,GAAG,cAAc,CAAC,uBAAuB,CAAA;AAE7E,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAC,eAAe,CAAA"}
|
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
/// <reference lib="dom" />
|
|
2
|
+
// NOTE: `callsites` is intentionally pinned to ^3. v4+ is ESM-only and would
|
|
3
|
+
// break the CommonJS (dist/) build. Do not bump it to v4 without moving the
|
|
4
|
+
// package to ESM-first output. (See .github/dependabot.yml, which also ignores
|
|
5
|
+
// its major updates.)
|
|
2
6
|
import getCallsites from "callsites";
|
|
3
7
|
import { cpus } from 'os';
|
|
4
8
|
import * as path from "path";
|
|
5
9
|
import { fileURLToPath } from "url";
|
|
10
|
+
import { getModuleDirname, getNodeRequire, isWebpackBundle } from "../node-require";
|
|
11
|
+
import getWorkerThreads from "../worker_threads";
|
|
6
12
|
let detectedTsRuntime;
|
|
7
13
|
export const defaultPoolSize = cpus().length;
|
|
14
|
+
/**
|
|
15
|
+
* Whether the application opted out of threadsx installing SIGINT/SIGTERM
|
|
16
|
+
* handlers (which call `process.exit()`), via `THREADS_SKIP_SIGNAL_HANDLERS`.
|
|
17
|
+
*/
|
|
18
|
+
function signalHandlersDisabled() {
|
|
19
|
+
const value = typeof process !== "undefined" && process.env
|
|
20
|
+
? process.env.THREADS_SKIP_SIGNAL_HANDLERS
|
|
21
|
+
: undefined;
|
|
22
|
+
return value === "1" || value === "true";
|
|
23
|
+
}
|
|
8
24
|
/**
|
|
9
25
|
* Detects an available TypeScript runtime so `.ts`/`.tsx` worker files can be
|
|
10
26
|
* spawned directly during development. Prefers `tsx`, falls back to `ts-node`.
|
|
11
27
|
*/
|
|
12
28
|
function detectTsRuntime() {
|
|
13
|
-
if (
|
|
29
|
+
if (isWebpackBundle()) {
|
|
14
30
|
// Webpack build: => No TS runtime required or possible
|
|
15
31
|
return null;
|
|
16
32
|
}
|
|
@@ -20,7 +36,7 @@ function detectTsRuntime() {
|
|
|
20
36
|
detectedTsRuntime = null;
|
|
21
37
|
for (const candidate of ["tsx", "ts-node"]) {
|
|
22
38
|
try {
|
|
23
|
-
|
|
39
|
+
getNodeRequire().resolve(candidate);
|
|
24
40
|
detectedTsRuntime = candidate;
|
|
25
41
|
break;
|
|
26
42
|
}
|
|
@@ -68,19 +84,17 @@ function rebaseScriptPath(scriptPath, ignoreRegex) {
|
|
|
68
84
|
}
|
|
69
85
|
function resolveScriptPath(scriptPath, baseURL) {
|
|
70
86
|
const makeRelative = (filePath) => {
|
|
71
|
-
|
|
72
|
-
return path.isAbsolute(filePath) ? filePath : path.join(baseURL || eval("__dirname"), filePath);
|
|
87
|
+
return path.isAbsolute(filePath) ? filePath : path.join(baseURL || getModuleDirname(), filePath);
|
|
73
88
|
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
89
|
+
// In a webpack bundle, walking the call stack is useless (every caller lives
|
|
90
|
+
// inside the bundle), so relative paths resolve without rebasing.
|
|
91
|
+
const workerFilePath = isWebpackBundle()
|
|
92
|
+
? getNodeRequire().resolve(makeRelative(scriptPath))
|
|
93
|
+
: getNodeRequire().resolve(makeRelative(rebaseScriptPath(scriptPath, /[/\\]worker_threads[/\\]/)));
|
|
77
94
|
return workerFilePath;
|
|
78
95
|
}
|
|
79
96
|
function initWorkerThreadsWorker() {
|
|
80
|
-
|
|
81
|
-
const NativeWorker = typeof __non_webpack_require__ === "function"
|
|
82
|
-
? __non_webpack_require__("worker_threads").Worker
|
|
83
|
-
: eval("require")("worker_threads").Worker;
|
|
97
|
+
const NativeWorker = getWorkerThreads().Worker;
|
|
84
98
|
let allWorkers = [];
|
|
85
99
|
class Worker extends NativeWorker {
|
|
86
100
|
constructor(scriptPath, options) {
|
|
@@ -127,8 +141,14 @@ function initWorkerThreadsWorker() {
|
|
|
127
141
|
allWorkers = [];
|
|
128
142
|
};
|
|
129
143
|
// Take care to not leave orphaned processes behind. See #147.
|
|
130
|
-
|
|
131
|
-
process.
|
|
144
|
+
//
|
|
145
|
+
// These handlers call process.exit(), which hijacks the host application's
|
|
146
|
+
// own shutdown. Applications that manage their own graceful shutdown can opt
|
|
147
|
+
// out by setting THREADS_SKIP_SIGNAL_HANDLERS. See upstream #388 / #484.
|
|
148
|
+
if (!signalHandlersDisabled()) {
|
|
149
|
+
process.on("SIGINT", () => terminateWorkersAndMaster());
|
|
150
|
+
process.on("SIGTERM", () => terminateWorkersAndMaster());
|
|
151
|
+
}
|
|
132
152
|
class BlobWorker extends Worker {
|
|
133
153
|
constructor(blob, options) {
|
|
134
154
|
super(Buffer.from(blob).toString("utf-8"), Object.assign(Object.assign({}, options), { fromSource: true }));
|
|
@@ -153,9 +173,6 @@ export function getWorkerImplementation() {
|
|
|
153
173
|
return implementation;
|
|
154
174
|
}
|
|
155
175
|
export function isWorkerRuntime() {
|
|
156
|
-
|
|
157
|
-
const isMainThread = typeof __non_webpack_require__ === "function"
|
|
158
|
-
? __non_webpack_require__("worker_threads").isMainThread
|
|
159
|
-
: eval("require")("worker_threads").isMainThread;
|
|
160
|
-
return !isMainThread;
|
|
176
|
+
return !getWorkerThreads().isMainThread;
|
|
161
177
|
}
|
|
178
|
+
//# sourceMappingURL=implementation.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implementation.node.js","sourceRoot":"","sources":["../../src/master/implementation.node.ts"],"names":[],"mappings":"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"}
|
package/dist-esm/master/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/master/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAG3E,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,eAAe,EAAE,CAAA;AAK1B,yEAAyE;AACzE,MAAM,CAAC,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAC,IAAI,CAAA;AAExD,0EAA0E;AAC1E,MAAM,CAAC,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC,OAAO,CAAA"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import DebugLogger from "debug";
|
|
8
8
|
import { multicast, Observable } from "observable-fns";
|
|
9
9
|
import { deserialize, serialize } from "../common";
|
|
10
|
+
import { isDataCloneError, ThreadCloneError } from "../errors";
|
|
10
11
|
import { ObservablePromise } from "../observable-promise";
|
|
11
12
|
import { isTransferDescriptor } from "../transferable";
|
|
12
13
|
import { MasterMessageType, WorkerMessageType } from "../types/messages";
|
|
@@ -19,6 +20,12 @@ const isJobStartMessage = (data) => data && data.type === WorkerMessageType.runn
|
|
|
19
20
|
function createObservableForJob(worker, jobUID) {
|
|
20
21
|
return new Observable(observer => {
|
|
21
22
|
let asyncType;
|
|
23
|
+
let settled = false;
|
|
24
|
+
const cleanup = () => {
|
|
25
|
+
worker.removeEventListener("message", messageHandler);
|
|
26
|
+
worker.removeEventListener("error", errorHandler);
|
|
27
|
+
worker.removeEventListener("exit", exitHandler);
|
|
28
|
+
};
|
|
22
29
|
const messageHandler = ((event) => {
|
|
23
30
|
debugMessages("Message from worker:", event.data);
|
|
24
31
|
if (!event.data || event.data.uid !== jobUID)
|
|
@@ -31,31 +38,52 @@ function createObservableForJob(worker, jobUID) {
|
|
|
31
38
|
if (typeof event.data.payload !== "undefined") {
|
|
32
39
|
observer.next(deserialize(event.data.payload));
|
|
33
40
|
}
|
|
41
|
+
settled = true;
|
|
34
42
|
observer.complete();
|
|
35
|
-
|
|
43
|
+
cleanup();
|
|
36
44
|
}
|
|
37
45
|
else {
|
|
38
|
-
if (event.data.payload) {
|
|
46
|
+
if (typeof event.data.payload !== "undefined") {
|
|
39
47
|
observer.next(deserialize(event.data.payload));
|
|
40
48
|
}
|
|
41
49
|
if (event.data.complete) {
|
|
50
|
+
settled = true;
|
|
42
51
|
observer.complete();
|
|
43
|
-
|
|
52
|
+
cleanup();
|
|
44
53
|
}
|
|
45
54
|
}
|
|
46
55
|
}
|
|
47
56
|
else if (isJobErrorMessage(event.data)) {
|
|
48
57
|
const error = deserialize(event.data.error);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
else {
|
|
53
|
-
observer.error(error);
|
|
54
|
-
}
|
|
55
|
-
worker.removeEventListener("message", messageHandler);
|
|
58
|
+
settled = true;
|
|
59
|
+
observer.error(error);
|
|
60
|
+
cleanup();
|
|
56
61
|
}
|
|
57
62
|
});
|
|
63
|
+
// If the worker crashes or is terminated before the job produces a result,
|
|
64
|
+
// reject the pending job instead of leaving the promise hanging forever.
|
|
65
|
+
// See #386.
|
|
66
|
+
const errorHandler = ((event) => {
|
|
67
|
+
if (settled)
|
|
68
|
+
return;
|
|
69
|
+
settled = true;
|
|
70
|
+
const error = event && event.data instanceof Error
|
|
71
|
+
? event.data
|
|
72
|
+
: Error(String((event && event.data) || "Worker errored before the job completed."));
|
|
73
|
+
observer.error(error);
|
|
74
|
+
cleanup();
|
|
75
|
+
});
|
|
76
|
+
const exitHandler = ((event) => {
|
|
77
|
+
if (settled)
|
|
78
|
+
return;
|
|
79
|
+
settled = true;
|
|
80
|
+
const exitCode = event ? event.data : undefined;
|
|
81
|
+
observer.error(Error(`Worker terminated before the job completed (exit code: ${exitCode}).`));
|
|
82
|
+
cleanup();
|
|
83
|
+
});
|
|
58
84
|
worker.addEventListener("message", messageHandler);
|
|
85
|
+
worker.addEventListener("error", errorHandler);
|
|
86
|
+
worker.addEventListener("exit", exitHandler);
|
|
59
87
|
return () => {
|
|
60
88
|
if (asyncType === "observable" || !asyncType) {
|
|
61
89
|
const cancelMessage = {
|
|
@@ -64,7 +92,7 @@ function createObservableForJob(worker, jobUID) {
|
|
|
64
92
|
};
|
|
65
93
|
worker.postMessage(cancelMessage);
|
|
66
94
|
}
|
|
67
|
-
|
|
95
|
+
cleanup();
|
|
68
96
|
};
|
|
69
97
|
});
|
|
70
98
|
}
|
|
@@ -107,6 +135,12 @@ export function createProxyFunction(worker, method) {
|
|
|
107
135
|
worker.postMessage(runMessage, transferables);
|
|
108
136
|
}
|
|
109
137
|
catch (error) {
|
|
138
|
+
if (isDataCloneError(error)) {
|
|
139
|
+
const cloneError = new ThreadCloneError(`Cannot send arguments to the worker thread: a value is not structured-cloneable. ` +
|
|
140
|
+
`Functions, class instances and other non-serializable values cannot be passed to a thread. ` +
|
|
141
|
+
`Original error: ${error.message}`, error);
|
|
142
|
+
return ObservablePromise.from(Promise.reject(cloneError));
|
|
143
|
+
}
|
|
110
144
|
return ObservablePromise.from(Promise.reject(error));
|
|
111
145
|
}
|
|
112
146
|
return ObservablePromise.from(multicast(createObservableForJob(worker, uid)));
|
|
@@ -119,3 +153,4 @@ export function createProxyModule(worker, methodNames) {
|
|
|
119
153
|
}
|
|
120
154
|
return proxy;
|
|
121
155
|
}
|
|
156
|
+
//# sourceMappingURL=invocation-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation-proxy.js","sourceRoot":"","sources":["../../src/master/invocation-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool-types.js","sourceRoot":"","sources":["../../src/master/pool-types.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,4CAA2B,CAAA;IAC3B,8CAA6B,CAAA;IAC7B,gDAA+B,CAAA;IAC/B,0CAAyB,CAAA;IACzB,0CAAyB,CAAA;IACzB,sDAAqC,CAAA;IACrC,wCAAuB,CAAA;IACvB,0CAAyB,CAAA;AAC3B,CAAC,EATW,aAAa,KAAb,aAAa,QASxB"}
|
package/dist-esm/master/pool.js
CHANGED
|
@@ -140,6 +140,13 @@ class WorkerPool {
|
|
|
140
140
|
eventSubscription.unsubscribe();
|
|
141
141
|
reject(event.error);
|
|
142
142
|
}
|
|
143
|
+
else if (event.type === PoolEventType.taskCanceled && event.taskID === taskID) {
|
|
144
|
+
// Without this branch a canceled task would keep its event
|
|
145
|
+
// subscription alive for the pool's whole lifetime and its promise
|
|
146
|
+
// would never settle.
|
|
147
|
+
eventSubscription.unsubscribe();
|
|
148
|
+
reject(Error("Task has been canceled."));
|
|
149
|
+
}
|
|
143
150
|
else if (event.type === PoolEventType.terminated) {
|
|
144
151
|
eventSubscription.unsubscribe();
|
|
145
152
|
reject(Error("Pool has been terminated before task was run."));
|
|
@@ -157,20 +164,27 @@ class WorkerPool {
|
|
|
157
164
|
}
|
|
158
165
|
});
|
|
159
166
|
if (this.initErrors.length > 0) {
|
|
167
|
+
failureSubscription.unsubscribe();
|
|
160
168
|
return Promise.reject(this.initErrors[0]);
|
|
161
169
|
}
|
|
162
170
|
if (allowResolvingImmediately && this.taskQueue.length === 0) {
|
|
163
171
|
yield allSettled(getCurrentlyRunningTasks());
|
|
172
|
+
failureSubscription.unsubscribe();
|
|
164
173
|
return taskFailures;
|
|
165
174
|
}
|
|
166
175
|
yield new Promise((resolve, reject) => {
|
|
167
176
|
const subscription = this.eventObservable.subscribe({
|
|
168
177
|
next(event) {
|
|
169
|
-
if (event.type === PoolEventType.taskQueueDrained) {
|
|
178
|
+
if (event.type === PoolEventType.taskQueueDrained || event.type === PoolEventType.terminated) {
|
|
170
179
|
subscription.unsubscribe();
|
|
171
180
|
resolve(void 0);
|
|
172
181
|
}
|
|
173
182
|
},
|
|
183
|
+
complete() {
|
|
184
|
+
// The pool was terminated while we were waiting; resolve instead of hanging.
|
|
185
|
+
subscription.unsubscribe();
|
|
186
|
+
resolve(void 0);
|
|
187
|
+
},
|
|
174
188
|
error: reject // make a pool-wide error reject the completed() result promise
|
|
175
189
|
});
|
|
176
190
|
});
|
|
@@ -185,7 +199,7 @@ class WorkerPool {
|
|
|
185
199
|
const earlyExitPromise = new Promise((resolve, reject) => {
|
|
186
200
|
const subscription = this.eventObservable.subscribe({
|
|
187
201
|
next(event) {
|
|
188
|
-
if (event.type === PoolEventType.taskQueueDrained) {
|
|
202
|
+
if (event.type === PoolEventType.taskQueueDrained || event.type === PoolEventType.terminated) {
|
|
189
203
|
subscription.unsubscribe();
|
|
190
204
|
resolve(settlementPromise);
|
|
191
205
|
}
|
|
@@ -194,6 +208,11 @@ class WorkerPool {
|
|
|
194
208
|
reject(event.error);
|
|
195
209
|
}
|
|
196
210
|
},
|
|
211
|
+
complete() {
|
|
212
|
+
// The pool was terminated while we were waiting; resolve instead of hanging.
|
|
213
|
+
subscription.unsubscribe();
|
|
214
|
+
resolve(settlementPromise);
|
|
215
|
+
},
|
|
197
216
|
error: reject // make a pool-wide error reject the completed() result promise
|
|
198
217
|
});
|
|
199
218
|
});
|
|
@@ -217,6 +236,13 @@ class WorkerPool {
|
|
|
217
236
|
if (this.initErrors.length > 0) {
|
|
218
237
|
throw this.initErrors[0];
|
|
219
238
|
}
|
|
239
|
+
// Check the queue limit before taskCompletion() below subscribes to the
|
|
240
|
+
// pool events — throwing after would leak that subscription.
|
|
241
|
+
if (this.taskQueue.length >= maxQueuedJobs) {
|
|
242
|
+
throw Error("Maximum number of pool tasks queued. Refusing to queue another one.\n" +
|
|
243
|
+
"This usually happens for one of two reasons: We are either at peak " +
|
|
244
|
+
"workload right now or some tasks just won't finish, thus blocking the pool.");
|
|
245
|
+
}
|
|
220
246
|
const taskID = this.nextTaskID++;
|
|
221
247
|
const taskCompletion = this.taskCompletion(taskID);
|
|
222
248
|
taskCompletion.catch((error) => {
|
|
@@ -238,11 +264,6 @@ class WorkerPool {
|
|
|
238
264
|
},
|
|
239
265
|
then: taskCompletion.then.bind(taskCompletion)
|
|
240
266
|
};
|
|
241
|
-
if (this.taskQueue.length >= maxQueuedJobs) {
|
|
242
|
-
throw Error("Maximum number of pool tasks queued. Refusing to queue another one.\n" +
|
|
243
|
-
"This usually happens for one of two reasons: We are either at peak " +
|
|
244
|
-
"workload right now or some tasks just won't finish, thus blocking the pool.");
|
|
245
|
-
}
|
|
246
267
|
this.debug(`Queueing task #${task.id}...`);
|
|
247
268
|
this.taskQueue.push(task);
|
|
248
269
|
this.eventSubject.next({
|
|
@@ -263,7 +284,17 @@ class WorkerPool {
|
|
|
263
284
|
remainingQueue: [...this.taskQueue]
|
|
264
285
|
});
|
|
265
286
|
this.eventSubject.complete();
|
|
266
|
-
yield Promise.all(this.workers.map((worker) => __awaiter(this, void 0, void 0, function* () {
|
|
287
|
+
yield Promise.all(this.workers.map((worker) => __awaiter(this, void 0, void 0, function* () {
|
|
288
|
+
try {
|
|
289
|
+
yield Thread.terminate(yield worker.init);
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
// The worker never finished initializing (e.g. it hit the init
|
|
293
|
+
// timeout), so `worker.init` rejected and there is no thread to
|
|
294
|
+
// terminate here — spawn() already tore down the underlying worker.
|
|
295
|
+
this.debug("Worker did not initialize; nothing to terminate:", error);
|
|
296
|
+
}
|
|
297
|
+
})));
|
|
267
298
|
});
|
|
268
299
|
}
|
|
269
300
|
}
|
|
@@ -274,6 +305,8 @@ WorkerPool.EventType = PoolEventType;
|
|
|
274
305
|
function PoolConstructor(spawnWorker, optionsOrSize) {
|
|
275
306
|
// The function exists only so we don't need to use `new` to create a pool (we still can, though).
|
|
276
307
|
// If the Pool is a class or not is an implementation detail that should not concern the user.
|
|
308
|
+
// The explicit `Pool<ThreadType>` return type keeps the private `WorkerPool` class out of the
|
|
309
|
+
// public type surface, so consumers can name/re-export the pool type (#417).
|
|
277
310
|
return new WorkerPool(spawnWorker, optionsOrSize);
|
|
278
311
|
}
|
|
279
312
|
PoolConstructor.EventType = PoolEventType;
|
|
@@ -281,3 +314,4 @@ PoolConstructor.EventType = PoolEventType;
|
|
|
281
314
|
* Thread pool constructor. Creates a new pool and spawns its worker threads.
|
|
282
315
|
*/
|
|
283
316
|
export const Pool = PoolConstructor;
|
|
317
|
+
//# sourceMappingURL=pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../../src/master/pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/master/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIxD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAc,CAAC,MAAM,GAAG,oBAAoB,CAAA;AAC/C,CAAC;KAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACxC,MAAc,CAAC,MAAM,GAAG,oBAAoB,CAAA;AAC/C,CAAC"}
|
package/dist-esm/master/spawn.js
CHANGED
|
@@ -75,17 +75,32 @@ function createEventObservable(worker, workerTermination) {
|
|
|
75
75
|
};
|
|
76
76
|
observer.next(workerEvent);
|
|
77
77
|
});
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
let finished = false;
|
|
79
|
+
const removeListeners = () => {
|
|
80
|
+
worker.removeEventListener("message", messageHandler);
|
|
81
|
+
worker.removeEventListener("unhandledrejection", rejectionHandler);
|
|
82
|
+
worker.removeEventListener("exit", exitHandler);
|
|
83
|
+
};
|
|
84
|
+
const finish = () => {
|
|
85
|
+
if (finished)
|
|
86
|
+
return;
|
|
87
|
+
finished = true;
|
|
81
88
|
const terminationEvent = {
|
|
82
89
|
type: WorkerEventType.termination
|
|
83
90
|
};
|
|
84
|
-
|
|
85
|
-
worker.removeEventListener("unhandledrejection", rejectionHandler);
|
|
91
|
+
removeListeners();
|
|
86
92
|
observer.next(terminationEvent);
|
|
87
93
|
observer.complete();
|
|
88
|
-
}
|
|
94
|
+
};
|
|
95
|
+
// A worker can also go away without Thread.terminate() being called (crash,
|
|
96
|
+
// process.exit() in the worker). Complete the observable and detach the
|
|
97
|
+
// listeners in that case, too, instead of leaving them behind forever.
|
|
98
|
+
const exitHandler = (() => finish());
|
|
99
|
+
worker.addEventListener("message", messageHandler);
|
|
100
|
+
worker.addEventListener("unhandledrejection", rejectionHandler);
|
|
101
|
+
worker.addEventListener("exit", exitHandler);
|
|
102
|
+
workerTermination.then(finish);
|
|
103
|
+
return removeListeners;
|
|
89
104
|
});
|
|
90
105
|
}
|
|
91
106
|
function createTerminator(worker) {
|
|
@@ -120,7 +135,7 @@ function setPrivateThreadProps(raw, worker, workerEvents, terminate) {
|
|
|
120
135
|
*/
|
|
121
136
|
export function spawn(worker, options) {
|
|
122
137
|
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
var _a, _b;
|
|
138
|
+
var _a, _b, _c, _d;
|
|
124
139
|
debugSpawn("Initializing new thread");
|
|
125
140
|
const timeout = options && options.timeout ? options.timeout : initMessageTimeout;
|
|
126
141
|
let initMessage;
|
|
@@ -147,7 +162,10 @@ export function spawn(worker, options) {
|
|
|
147
162
|
}
|
|
148
163
|
else {
|
|
149
164
|
const type = exposed.type;
|
|
165
|
+
// Same teardown as a failed init: don't leak a live worker handle.
|
|
166
|
+
yield Promise.resolve((_d = (_c = worker).terminate) === null || _d === void 0 ? void 0 : _d.call(_c)).catch(() => undefined);
|
|
150
167
|
throw Error(`Worker init message states unexpected type of expose(): ${type}`);
|
|
151
168
|
}
|
|
152
169
|
});
|
|
153
170
|
}
|
|
171
|
+
//# sourceMappingURL=spawn.js.map
|