@xylabs/threads 4.6.4 → 4.7.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/browser/master/implementation.browser.mjs +89 -0
- package/dist/browser/master/implementation.browser.mjs.map +1 -0
- package/dist/browser/worker/worker.browser.mjs +291 -0
- package/dist/browser/worker/worker.browser.mjs.map +1 -0
- package/dist/neutral/index.mjs +1022 -0
- package/dist/neutral/index.mjs.map +1 -0
- package/dist/neutral/master/implementation.mjs +264 -0
- package/dist/neutral/master/implementation.mjs.map +1 -0
- package/dist/neutral/master/index.mjs +988 -0
- package/dist/neutral/master/index.mjs.map +1 -0
- package/dist/neutral/master/pool.mjs +579 -0
- package/dist/neutral/master/pool.mjs.map +1 -0
- package/dist/neutral/master/register.mjs +272 -0
- package/dist/neutral/master/register.mjs.map +1 -0
- package/dist/neutral/master/spawn.mjs +412 -0
- package/dist/neutral/master/spawn.mjs.map +1 -0
- package/dist/neutral/master/thread.mjs +29 -0
- package/dist/neutral/master/thread.mjs.map +1 -0
- package/dist/neutral/observable-promise.mjs +132 -0
- package/dist/neutral/observable-promise.mjs.map +1 -0
- package/dist/neutral/observable.mjs +31 -0
- package/dist/neutral/observable.mjs.map +1 -0
- package/dist/node/master/implementation.node.mjs +154 -0
- package/dist/node/master/implementation.node.mjs.map +1 -0
- package/dist/node/worker/worker.node.mjs +304 -0
- package/dist/node/worker/worker.node.mjs.map +1 -0
- package/dist/{common.d.ts → types/common.d.ts} +5 -1
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{master → types/master}/get-bundle-url.browser.d.ts +1 -0
- package/dist/types/master/get-bundle-url.browser.d.ts.map +1 -0
- package/dist/{master → types/master}/implementation.browser.d.ts +2 -1
- package/dist/types/master/implementation.browser.d.ts.map +1 -0
- package/dist/{master → types/master}/implementation.d.ts +4 -1
- package/dist/types/master/implementation.d.ts.map +1 -0
- package/dist/{master → types/master}/implementation.node.d.ts +2 -1
- package/dist/types/master/implementation.node.d.ts.map +1 -0
- package/dist/types/master/index.d.ts +13 -0
- package/dist/types/master/index.d.ts.map +1 -0
- package/dist/{master → types/master}/invocation-proxy.d.ts +2 -1
- package/dist/types/master/invocation-proxy.d.ts.map +1 -0
- package/dist/{master → types/master}/pool-types.d.ts +16 -1
- package/dist/types/master/pool-types.d.ts.map +1 -0
- package/dist/types/master/pool.d.ts +93 -0
- package/dist/types/master/pool.d.ts.map +1 -0
- package/dist/types/master/register.d.ts +2 -0
- package/dist/types/master/register.d.ts.map +1 -0
- package/dist/{master → types/master}/spawn.d.ts +12 -2
- package/dist/types/master/spawn.d.ts.map +1 -0
- package/dist/types/master/thread.d.ts +13 -0
- package/dist/types/master/thread.d.ts.map +1 -0
- package/dist/{observable-promise.d.ts → types/observable-promise.d.ts} +14 -0
- package/dist/types/observable-promise.d.ts.map +1 -0
- package/dist/types/observable.d.ts +21 -0
- package/dist/types/observable.d.ts.map +1 -0
- package/dist/{ponyfills.d.ts → types/ponyfills.d.ts} +1 -0
- package/dist/types/ponyfills.d.ts.map +1 -0
- package/dist/types/promise.d.ts +6 -0
- package/dist/types/promise.d.ts.map +1 -0
- package/dist/{serializers.d.ts → types/serializers.d.ts} +1 -0
- package/dist/types/serializers.d.ts.map +1 -0
- package/dist/{symbols.d.ts → types/symbols.d.ts} +1 -0
- package/dist/types/symbols.d.ts.map +1 -0
- package/dist/types/transferable.d.ts +43 -0
- package/dist/types/transferable.d.ts.map +1 -0
- package/dist/types/{master.d.ts → types/master.d.ts} +17 -3
- package/dist/types/types/master.d.ts.map +1 -0
- package/dist/types/{messages.d.ts → types/messages.d.ts} +1 -0
- package/dist/types/types/messages.d.ts.map +1 -0
- package/dist/types/{worker.d.ts → types/worker.d.ts} +1 -0
- package/dist/types/types/worker.d.ts.map +1 -0
- package/dist/types/worker/WorkerGlobalScope.d.ts +6 -0
- package/dist/types/worker/WorkerGlobalScope.d.ts.map +1 -0
- package/dist/types/worker/expose.d.ts +4 -0
- package/dist/types/worker/expose.d.ts.map +1 -0
- package/dist/types/worker/worker.browser.d.ts +14 -0
- package/dist/types/worker/worker.browser.d.ts.map +1 -0
- package/dist/types/worker/worker.node.d.ts +25 -0
- package/dist/types/worker/worker.node.d.ts.map +1 -0
- package/package.json +66 -77
- package/src/common.ts +10 -6
- package/src/index.ts +10 -9
- package/src/master/get-bundle-url.browser.ts +2 -1
- package/src/master/implementation.browser.ts +2 -2
- package/src/master/implementation.node.ts +19 -96
- package/src/master/implementation.ts +2 -2
- package/src/master/index.ts +7 -7
- package/src/master/invocation-proxy.ts +6 -6
- package/src/master/pool-types.ts +1 -1
- package/src/master/pool.ts +14 -13
- package/src/master/register.ts +2 -1
- package/src/master/spawn.ts +8 -8
- package/src/master/thread.ts +2 -2
- package/src/observable-promise.ts +3 -2
- package/src/serializers.ts +1 -1
- package/src/transferable.ts +2 -1
- package/src/types/master.ts +3 -3
- package/src/worker/WorkerGlobalScope.ts +5 -0
- package/src/worker/expose.ts +234 -0
- package/src/worker/is-observable.d.ts +7 -0
- package/src/worker/{implementation.browser.ts → worker.browser.ts} +26 -10
- package/src/worker/{implementation.worker_threads.ts → worker.node.ts} +30 -12
- package/types/is-observable.d.ts +1 -1
- package/xy.config.ts +24 -0
- package/dist/common.js +0 -16
- package/dist/esm/common.js +0 -16
- package/dist/esm/index.js +0 -26
- package/dist/esm/master/get-bundle-url.browser.js +0 -25
- package/dist/esm/master/implementation.browser.js +0 -65
- package/dist/esm/master/implementation.js +0 -43
- package/dist/esm/master/implementation.node.js +0 -205
- package/dist/esm/master/index.js +0 -14
- package/dist/esm/master/invocation-proxy.js +0 -121
- package/dist/esm/master/pool-types.js +0 -14
- package/dist/esm/master/pool.js +0 -262
- package/dist/esm/master/register.js +0 -11
- package/dist/esm/master/spawn.js +0 -114
- package/dist/esm/master/thread.js +0 -18
- package/dist/esm/observable-promise.js +0 -132
- package/dist/esm/observable.js +0 -33
- package/dist/esm/ponyfills.js +0 -20
- package/dist/esm/promise.js +0 -23
- package/dist/esm/serializers.js +0 -41
- package/dist/esm/symbols.js +0 -8
- package/dist/esm/transferable.js +0 -25
- package/dist/esm/types/master.js +0 -9
- package/dist/esm/types/messages.js +0 -16
- package/dist/esm/types/worker.js +0 -2
- package/dist/esm/worker/bundle-entry.js +0 -26
- package/dist/esm/worker/implementation.browser.js +0 -24
- package/dist/esm/worker/implementation.js +0 -19
- package/dist/esm/worker/implementation.tiny-worker.js +0 -37
- package/dist/esm/worker/implementation.worker_threads.js +0 -41
- package/dist/esm/worker/index.js +0 -174
- package/dist/esm/worker_threads.js +0 -13
- package/dist/index.d.ts +0 -7
- package/dist/index.js +0 -26
- package/dist/master/get-bundle-url.browser.js +0 -25
- package/dist/master/implementation.browser.js +0 -65
- package/dist/master/implementation.js +0 -43
- package/dist/master/implementation.node.js +0 -205
- package/dist/master/index.d.ts +0 -10
- package/dist/master/index.js +0 -14
- package/dist/master/invocation-proxy.js +0 -121
- package/dist/master/pool-types.js +0 -14
- package/dist/master/pool.d.ts +0 -50
- package/dist/master/pool.js +0 -262
- package/dist/master/register.d.ts +0 -1
- package/dist/master/register.js +0 -11
- package/dist/master/spawn.js +0 -114
- package/dist/master/thread.d.ts +0 -8
- package/dist/master/thread.js +0 -18
- package/dist/observable-promise.js +0 -132
- package/dist/observable.d.ts +0 -11
- package/dist/observable.js +0 -33
- package/dist/ponyfills.js +0 -20
- package/dist/promise.d.ts +0 -1
- package/dist/promise.js +0 -23
- package/dist/serializers.js +0 -41
- package/dist/symbols.js +0 -8
- package/dist/transferable.d.ts +0 -9
- package/dist/transferable.js +0 -25
- package/dist/types/master.js +0 -9
- package/dist/types/messages.js +0 -16
- package/dist/types/worker.js +0 -2
- package/dist/worker/bundle-entry.d.ts +0 -1
- package/dist/worker/bundle-entry.js +0 -26
- package/dist/worker/implementation.browser.d.ts +0 -6
- package/dist/worker/implementation.browser.js +0 -24
- package/dist/worker/implementation.d.ts +0 -3
- package/dist/worker/implementation.js +0 -19
- package/dist/worker/implementation.tiny-worker.d.ts +0 -6
- package/dist/worker/implementation.tiny-worker.js +0 -37
- package/dist/worker/implementation.worker_threads.d.ts +0 -8
- package/dist/worker/implementation.worker_threads.js +0 -41
- package/dist/worker/index.d.ts +0 -5
- package/dist/worker/index.js +0 -174
- package/dist/worker_threads.d.ts +0 -8
- package/dist/worker_threads.js +0 -13
- package/observable.d.ts +0 -2
- package/observable.js +0 -2
- package/observable.mjs +0 -4
- package/register.d.ts +0 -2
- package/register.js +0 -2
- package/register.mjs +0 -1
- package/rollup.config.js +0 -16
- package/src/worker/bundle-entry.ts +0 -10
- package/src/worker/implementation.tiny-worker.ts +0 -55
- package/src/worker/implementation.ts +0 -23
- package/src/worker/index.ts +0 -230
- package/src/worker_threads.ts +0 -27
- package/test/lib/index.ts +0 -1
- package/test/lib/serialization.ts +0 -38
- package/test/observable-promise.test.ts +0 -205
- package/test/observable.test.ts +0 -87
- package/test/pool.test.ts +0 -183
- package/test/serialization.test.ts +0 -23
- package/test/spawn.chromium.mocha.ts +0 -53
- package/test/spawn.test.ts +0 -87
- package/test/streaming.test.ts +0 -29
- package/test/transferables.test.ts +0 -71
- package/test/workers/arraybuffer-xor.ts +0 -10
- package/test/workers/count-to-five.ts +0 -12
- package/test/workers/counter.ts +0 -19
- package/test/workers/faulty-function.ts +0 -5
- package/test/workers/hello-world.ts +0 -5
- package/test/workers/increment.ts +0 -8
- package/test/workers/minmax.ts +0 -25
- package/test/workers/serialization.ts +0 -13
- package/test/workers/top-level-throw.ts +0 -1
- package/test-tooling/rollup/app.js +0 -21
- package/test-tooling/rollup/rollup.config.ts +0 -14
- package/test-tooling/rollup/worker.js +0 -7
- package/test-tooling/tsconfig/minimal.ts +0 -12
- package/test-tooling/webpack/addition-worker.ts +0 -9
- package/test-tooling/webpack/app-with-inlined-worker.ts +0 -28
- package/test-tooling/webpack/app.ts +0 -61
- package/test-tooling/webpack/pool-worker.ts +0 -5
- package/test-tooling/webpack/raw-loader.d.ts +0 -4
- package/test-tooling/webpack/webpack.chromium.mocha.ts +0 -21
- package/test-tooling/webpack/webpack.node.config.js +0 -29
- package/test-tooling/webpack/webpack.web.config.js +0 -28
- package/types/webworker.d.ts +0 -9
- package/worker.d.ts +0 -2
- package/worker.js +0 -2
- package/worker.mjs +0 -6
package/dist/esm/master/spawn.js
DELETED
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.spawn = spawn;
|
|
7
|
-
const debug_1 = __importDefault(require("debug"));
|
|
8
|
-
const observable_fns_1 = require("observable-fns");
|
|
9
|
-
const common_1 = require("../common");
|
|
10
|
-
const promise_1 = require("../promise");
|
|
11
|
-
const symbols_1 = require("../symbols");
|
|
12
|
-
const master_1 = require("../types/master");
|
|
13
|
-
const invocation_proxy_1 = require("./invocation-proxy");
|
|
14
|
-
const debugMessages = (0, debug_1.default)('threads:master:messages');
|
|
15
|
-
const debugSpawn = (0, debug_1.default)('threads:master:spawn');
|
|
16
|
-
const debugThreadUtils = (0, debug_1.default)('threads:master:thread-utils');
|
|
17
|
-
const isInitMessage = (data) => data && data.type === 'init';
|
|
18
|
-
const isUncaughtErrorMessage = (data) => data && data.type === 'uncaughtError';
|
|
19
|
-
const initMessageTimeout = typeof process !== 'undefined' && process.env !== undefined && process.env.THREADS_WORKER_INIT_TIMEOUT
|
|
20
|
-
? Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT, 10)
|
|
21
|
-
: 10_000;
|
|
22
|
-
async function withTimeout(promise, timeoutInMs, errorMessage) {
|
|
23
|
-
let timeoutHandle;
|
|
24
|
-
const timeout = new Promise((resolve, reject) => {
|
|
25
|
-
timeoutHandle = setTimeout(() => reject(new Error(errorMessage)), timeoutInMs);
|
|
26
|
-
});
|
|
27
|
-
const result = await Promise.race([promise, timeout]);
|
|
28
|
-
clearTimeout(timeoutHandle);
|
|
29
|
-
return result;
|
|
30
|
-
}
|
|
31
|
-
function receiveInitMessage(worker) {
|
|
32
|
-
return new Promise((resolve, reject) => {
|
|
33
|
-
const messageHandler = ((event) => {
|
|
34
|
-
debugMessages('Message from worker before finishing initialization:', event.data);
|
|
35
|
-
if (isInitMessage(event.data)) {
|
|
36
|
-
worker.removeEventListener('message', messageHandler);
|
|
37
|
-
resolve(event.data);
|
|
38
|
-
}
|
|
39
|
-
else if (isUncaughtErrorMessage(event.data)) {
|
|
40
|
-
worker.removeEventListener('message', messageHandler);
|
|
41
|
-
reject((0, common_1.deserialize)(event.data.error));
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
worker.addEventListener('message', messageHandler);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
function createEventObservable(worker, workerTermination) {
|
|
48
|
-
return new observable_fns_1.Observable((observer) => {
|
|
49
|
-
const messageHandler = ((messageEvent) => {
|
|
50
|
-
const workerEvent = {
|
|
51
|
-
data: messageEvent.data,
|
|
52
|
-
type: master_1.WorkerEventType.message,
|
|
53
|
-
};
|
|
54
|
-
observer.next(workerEvent);
|
|
55
|
-
});
|
|
56
|
-
const rejectionHandler = ((errorEvent) => {
|
|
57
|
-
debugThreadUtils('Unhandled promise rejection event in thread:', errorEvent);
|
|
58
|
-
const workerEvent = {
|
|
59
|
-
error: new Error(errorEvent.reason),
|
|
60
|
-
type: master_1.WorkerEventType.internalError,
|
|
61
|
-
};
|
|
62
|
-
observer.next(workerEvent);
|
|
63
|
-
});
|
|
64
|
-
worker.addEventListener('message', messageHandler);
|
|
65
|
-
worker.addEventListener('unhandledrejection', rejectionHandler);
|
|
66
|
-
workerTermination.then(() => {
|
|
67
|
-
const terminationEvent = { type: master_1.WorkerEventType.termination };
|
|
68
|
-
worker.removeEventListener('message', messageHandler);
|
|
69
|
-
worker.removeEventListener('unhandledrejection', rejectionHandler);
|
|
70
|
-
observer.next(terminationEvent);
|
|
71
|
-
observer.complete();
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
function createTerminator(worker) {
|
|
76
|
-
const [termination, resolver] = (0, promise_1.createPromiseWithResolver)();
|
|
77
|
-
const terminate = async () => {
|
|
78
|
-
debugThreadUtils('Terminating worker');
|
|
79
|
-
await worker.terminate();
|
|
80
|
-
resolver();
|
|
81
|
-
};
|
|
82
|
-
return { terminate, termination };
|
|
83
|
-
}
|
|
84
|
-
function setPrivateThreadProps(raw, worker, workerEvents, terminate) {
|
|
85
|
-
const workerErrors = workerEvents
|
|
86
|
-
.filter(event => event.type === master_1.WorkerEventType.internalError)
|
|
87
|
-
.map(errorEvent => errorEvent.error);
|
|
88
|
-
return Object.assign(raw, {
|
|
89
|
-
[symbols_1.$errors]: workerErrors,
|
|
90
|
-
[symbols_1.$events]: workerEvents,
|
|
91
|
-
[symbols_1.$terminate]: terminate,
|
|
92
|
-
[symbols_1.$worker]: worker,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
async function spawn(worker, options) {
|
|
96
|
-
debugSpawn('Initializing new thread');
|
|
97
|
-
const timeout = options && options.timeout ? options.timeout : initMessageTimeout;
|
|
98
|
-
const initMessage = await withTimeout(receiveInitMessage(worker), timeout, `Timeout: Did not receive an init message from worker after ${timeout}ms. Make sure the worker calls expose().`);
|
|
99
|
-
const exposed = initMessage.exposed;
|
|
100
|
-
const { termination, terminate } = createTerminator(worker);
|
|
101
|
-
const events = createEventObservable(worker, termination);
|
|
102
|
-
if (exposed.type === 'function') {
|
|
103
|
-
const proxy = (0, invocation_proxy_1.createProxyFunction)(worker);
|
|
104
|
-
return setPrivateThreadProps(proxy, worker, events, terminate);
|
|
105
|
-
}
|
|
106
|
-
else if (exposed.type === 'module') {
|
|
107
|
-
const proxy = (0, invocation_proxy_1.createProxyModule)(worker, exposed.methods);
|
|
108
|
-
return setPrivateThreadProps(proxy, worker, events, terminate);
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
const type = exposed.type;
|
|
112
|
-
throw new Error(`Worker init message states unexpected type of expose(): ${type}`);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Thread = void 0;
|
|
4
|
-
const symbols_1 = require("../symbols");
|
|
5
|
-
function fail(message) {
|
|
6
|
-
throw new Error(message);
|
|
7
|
-
}
|
|
8
|
-
exports.Thread = {
|
|
9
|
-
errors(thread) {
|
|
10
|
-
return thread[symbols_1.$errors] || fail('Error observable not found. Make sure to pass a thread instance as returned by the spawn() promise.');
|
|
11
|
-
},
|
|
12
|
-
events(thread) {
|
|
13
|
-
return thread[symbols_1.$events] || fail('Events observable not found. Make sure to pass a thread instance as returned by the spawn() promise.');
|
|
14
|
-
},
|
|
15
|
-
terminate(thread) {
|
|
16
|
-
return thread[symbols_1.$terminate]();
|
|
17
|
-
},
|
|
18
|
-
};
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ObservablePromise = void 0;
|
|
4
|
-
const observable_fns_1 = require("observable-fns");
|
|
5
|
-
const doNothing = () => { };
|
|
6
|
-
const returnInput = (input) => input;
|
|
7
|
-
const runDeferred = (fn) => Promise.resolve().then(fn);
|
|
8
|
-
function fail(error) {
|
|
9
|
-
throw error;
|
|
10
|
-
}
|
|
11
|
-
function isThenable(thing) {
|
|
12
|
-
return thing && typeof thing.then === 'function';
|
|
13
|
-
}
|
|
14
|
-
class ObservablePromise extends observable_fns_1.Observable {
|
|
15
|
-
[Symbol.toStringTag] = '[object ObservablePromise]';
|
|
16
|
-
initHasRun = false;
|
|
17
|
-
fulfillmentCallbacks = [];
|
|
18
|
-
rejectionCallbacks = [];
|
|
19
|
-
firstValue;
|
|
20
|
-
firstValueSet = false;
|
|
21
|
-
rejection;
|
|
22
|
-
state = 'pending';
|
|
23
|
-
constructor(init) {
|
|
24
|
-
super((originalObserver) => {
|
|
25
|
-
const self = this;
|
|
26
|
-
const observer = {
|
|
27
|
-
...originalObserver,
|
|
28
|
-
complete() {
|
|
29
|
-
originalObserver.complete();
|
|
30
|
-
self.onCompletion();
|
|
31
|
-
},
|
|
32
|
-
error(error) {
|
|
33
|
-
originalObserver.error(error);
|
|
34
|
-
self.onError(error);
|
|
35
|
-
},
|
|
36
|
-
next(value) {
|
|
37
|
-
originalObserver.next(value);
|
|
38
|
-
self.onNext(value);
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
try {
|
|
42
|
-
this.initHasRun = true;
|
|
43
|
-
return init(observer);
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
observer.error(error);
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
onNext(value) {
|
|
51
|
-
if (!this.firstValueSet) {
|
|
52
|
-
this.firstValue = value;
|
|
53
|
-
this.firstValueSet = true;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
onError(error) {
|
|
57
|
-
this.state = 'rejected';
|
|
58
|
-
this.rejection = error;
|
|
59
|
-
for (const onRejected of this.rejectionCallbacks) {
|
|
60
|
-
runDeferred(() => onRejected(error));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
onCompletion() {
|
|
64
|
-
this.state = 'fulfilled';
|
|
65
|
-
for (const onFulfilled of this.fulfillmentCallbacks) {
|
|
66
|
-
runDeferred(() => onFulfilled(this.firstValue));
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
then(onFulfilledRaw, onRejectedRaw) {
|
|
70
|
-
const onFulfilled = onFulfilledRaw || returnInput;
|
|
71
|
-
const onRejected = onRejectedRaw || fail;
|
|
72
|
-
let onRejectedCalled = false;
|
|
73
|
-
return new Promise((resolve, reject) => {
|
|
74
|
-
const rejectionCallback = (error) => {
|
|
75
|
-
if (onRejectedCalled)
|
|
76
|
-
return;
|
|
77
|
-
onRejectedCalled = true;
|
|
78
|
-
try {
|
|
79
|
-
resolve(onRejected(error));
|
|
80
|
-
}
|
|
81
|
-
catch (anotherError) {
|
|
82
|
-
reject(anotherError);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
const fulfillmentCallback = (value) => {
|
|
86
|
-
try {
|
|
87
|
-
resolve(onFulfilled(value));
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
rejectionCallback(error);
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
if (!this.initHasRun) {
|
|
94
|
-
this.subscribe({ error: rejectionCallback });
|
|
95
|
-
}
|
|
96
|
-
if (this.state === 'fulfilled') {
|
|
97
|
-
return resolve(onFulfilled(this.firstValue));
|
|
98
|
-
}
|
|
99
|
-
if (this.state === 'rejected') {
|
|
100
|
-
onRejectedCalled = true;
|
|
101
|
-
return resolve(onRejected(this.rejection));
|
|
102
|
-
}
|
|
103
|
-
this.fulfillmentCallbacks.push(fulfillmentCallback);
|
|
104
|
-
this.rejectionCallbacks.push(rejectionCallback);
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
catch(onRejected) {
|
|
108
|
-
return this.then(undefined, onRejected);
|
|
109
|
-
}
|
|
110
|
-
finally(onCompleted) {
|
|
111
|
-
const handler = onCompleted || doNothing;
|
|
112
|
-
return this.then((value) => {
|
|
113
|
-
handler();
|
|
114
|
-
return value;
|
|
115
|
-
}, () => handler());
|
|
116
|
-
}
|
|
117
|
-
static from(thing) {
|
|
118
|
-
return isThenable(thing)
|
|
119
|
-
? new ObservablePromise((observer) => {
|
|
120
|
-
const onFulfilled = (value) => {
|
|
121
|
-
observer.next(value);
|
|
122
|
-
observer.complete();
|
|
123
|
-
};
|
|
124
|
-
const onRejected = (error) => {
|
|
125
|
-
observer.error(error);
|
|
126
|
-
};
|
|
127
|
-
thing.then(onFulfilled, onRejected);
|
|
128
|
-
})
|
|
129
|
-
: super.from(thing);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
exports.ObservablePromise = ObservablePromise;
|
package/dist/esm/observable.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Observable = exports.Subject = void 0;
|
|
4
|
-
const observable_fns_1 = require("observable-fns");
|
|
5
|
-
const $observers = Symbol('observers');
|
|
6
|
-
class Subject extends observable_fns_1.Observable {
|
|
7
|
-
[$observers];
|
|
8
|
-
constructor() {
|
|
9
|
-
super((observer) => {
|
|
10
|
-
this[$observers] = [...(this[$observers] || []), observer];
|
|
11
|
-
const unsubscribe = () => {
|
|
12
|
-
this[$observers] = this[$observers].filter(someObserver => someObserver !== observer);
|
|
13
|
-
};
|
|
14
|
-
return unsubscribe;
|
|
15
|
-
});
|
|
16
|
-
this[$observers] = [];
|
|
17
|
-
}
|
|
18
|
-
complete() {
|
|
19
|
-
for (const observer of this[$observers])
|
|
20
|
-
observer.complete();
|
|
21
|
-
}
|
|
22
|
-
error(error) {
|
|
23
|
-
for (const observer of this[$observers])
|
|
24
|
-
observer.error(error);
|
|
25
|
-
}
|
|
26
|
-
next(value) {
|
|
27
|
-
for (const observer of this[$observers])
|
|
28
|
-
observer.next(value);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.Subject = Subject;
|
|
32
|
-
var observable_fns_2 = require("observable-fns");
|
|
33
|
-
Object.defineProperty(exports, "Observable", { enumerable: true, get: function () { return observable_fns_2.Observable; } });
|
package/dist/esm/ponyfills.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.allSettled = allSettled;
|
|
4
|
-
function allSettled(values) {
|
|
5
|
-
return Promise.all(values.map((item) => {
|
|
6
|
-
const onFulfill = (value) => {
|
|
7
|
-
return { status: 'fulfilled', value };
|
|
8
|
-
};
|
|
9
|
-
const onReject = (reason) => {
|
|
10
|
-
return { reason, status: 'rejected' };
|
|
11
|
-
};
|
|
12
|
-
const itemPromise = Promise.resolve(item);
|
|
13
|
-
try {
|
|
14
|
-
return itemPromise.then(onFulfill, onReject);
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
return Promise.reject(error);
|
|
18
|
-
}
|
|
19
|
-
}));
|
|
20
|
-
}
|
package/dist/esm/promise.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createPromiseWithResolver = createPromiseWithResolver;
|
|
4
|
-
const doNothing = () => undefined;
|
|
5
|
-
function createPromiseWithResolver() {
|
|
6
|
-
let alreadyResolved = false;
|
|
7
|
-
let resolvedTo;
|
|
8
|
-
let resolver = doNothing;
|
|
9
|
-
const promise = new Promise((resolve) => {
|
|
10
|
-
if (alreadyResolved) {
|
|
11
|
-
resolve(resolvedTo);
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
resolver = resolve;
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
const exposedResolver = (value) => {
|
|
18
|
-
alreadyResolved = true;
|
|
19
|
-
resolvedTo = value;
|
|
20
|
-
resolver(resolvedTo);
|
|
21
|
-
};
|
|
22
|
-
return [promise, exposedResolver];
|
|
23
|
-
}
|
package/dist/esm/serializers.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DefaultSerializer = void 0;
|
|
4
|
-
exports.extendSerializer = extendSerializer;
|
|
5
|
-
function extendSerializer(extend, implementation) {
|
|
6
|
-
const fallbackDeserializer = extend.deserialize.bind(extend);
|
|
7
|
-
const fallbackSerializer = extend.serialize.bind(extend);
|
|
8
|
-
return {
|
|
9
|
-
deserialize(message) {
|
|
10
|
-
return implementation.deserialize(message, fallbackDeserializer);
|
|
11
|
-
},
|
|
12
|
-
serialize(input) {
|
|
13
|
-
return implementation.serialize(input, fallbackSerializer);
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
const DefaultErrorSerializer = {
|
|
18
|
-
deserialize(message) {
|
|
19
|
-
return Object.assign(new Error(message.message), {
|
|
20
|
-
name: message.name,
|
|
21
|
-
stack: message.stack,
|
|
22
|
-
});
|
|
23
|
-
},
|
|
24
|
-
serialize(error) {
|
|
25
|
-
return {
|
|
26
|
-
__error_marker: '$$error',
|
|
27
|
-
message: error.message,
|
|
28
|
-
name: error.name,
|
|
29
|
-
stack: error.stack,
|
|
30
|
-
};
|
|
31
|
-
},
|
|
32
|
-
};
|
|
33
|
-
const isSerializedError = (thing) => thing && typeof thing === 'object' && '__error_marker' in thing && thing.__error_marker === '$$error';
|
|
34
|
-
exports.DefaultSerializer = {
|
|
35
|
-
deserialize(message) {
|
|
36
|
-
return isSerializedError(message) ? DefaultErrorSerializer.deserialize(message) : message;
|
|
37
|
-
},
|
|
38
|
-
serialize(input) {
|
|
39
|
-
return input instanceof Error ? DefaultErrorSerializer.serialize(input) : input;
|
|
40
|
-
},
|
|
41
|
-
};
|
package/dist/esm/symbols.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.$worker = exports.$transferable = exports.$terminate = exports.$events = exports.$errors = void 0;
|
|
4
|
-
exports.$errors = Symbol('thread.errors');
|
|
5
|
-
exports.$events = Symbol('thread.events');
|
|
6
|
-
exports.$terminate = Symbol('thread.terminate');
|
|
7
|
-
exports.$transferable = Symbol('thread.transferable');
|
|
8
|
-
exports.$worker = Symbol('thread.worker');
|
package/dist/esm/transferable.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isTransferDescriptor = isTransferDescriptor;
|
|
4
|
-
exports.Transfer = Transfer;
|
|
5
|
-
const symbols_1 = require("./symbols");
|
|
6
|
-
function isTransferable(thing) {
|
|
7
|
-
if (!thing || typeof thing !== 'object')
|
|
8
|
-
return false;
|
|
9
|
-
return true;
|
|
10
|
-
}
|
|
11
|
-
function isTransferDescriptor(thing) {
|
|
12
|
-
return thing && typeof thing === 'object' && thing[symbols_1.$transferable];
|
|
13
|
-
}
|
|
14
|
-
function Transfer(payload, transferables) {
|
|
15
|
-
if (!transferables) {
|
|
16
|
-
if (!isTransferable(payload))
|
|
17
|
-
throw new Error('Not transferable');
|
|
18
|
-
transferables = [payload];
|
|
19
|
-
}
|
|
20
|
-
return {
|
|
21
|
-
[symbols_1.$transferable]: true,
|
|
22
|
-
send: payload,
|
|
23
|
-
transferables,
|
|
24
|
-
};
|
|
25
|
-
}
|
package/dist/esm/types/master.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WorkerEventType = void 0;
|
|
4
|
-
var WorkerEventType;
|
|
5
|
-
(function (WorkerEventType) {
|
|
6
|
-
WorkerEventType["internalError"] = "internalError";
|
|
7
|
-
WorkerEventType["message"] = "message";
|
|
8
|
-
WorkerEventType["termination"] = "termination";
|
|
9
|
-
})(WorkerEventType || (exports.WorkerEventType = WorkerEventType = {}));
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WorkerMessageType = exports.MasterMessageType = void 0;
|
|
4
|
-
var MasterMessageType;
|
|
5
|
-
(function (MasterMessageType) {
|
|
6
|
-
MasterMessageType["cancel"] = "cancel";
|
|
7
|
-
MasterMessageType["run"] = "run";
|
|
8
|
-
})(MasterMessageType || (exports.MasterMessageType = MasterMessageType = {}));
|
|
9
|
-
var WorkerMessageType;
|
|
10
|
-
(function (WorkerMessageType) {
|
|
11
|
-
WorkerMessageType["error"] = "error";
|
|
12
|
-
WorkerMessageType["init"] = "init";
|
|
13
|
-
WorkerMessageType["result"] = "result";
|
|
14
|
-
WorkerMessageType["running"] = "running";
|
|
15
|
-
WorkerMessageType["uncaughtError"] = "uncaughtError";
|
|
16
|
-
})(WorkerMessageType || (exports.WorkerMessageType = WorkerMessageType = {}));
|
package/dist/esm/types/worker.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
const index_1 = require("./index");
|
|
18
|
-
__exportStar(require("./index"), exports);
|
|
19
|
-
if (typeof globalThis !== 'undefined') {
|
|
20
|
-
;
|
|
21
|
-
globalThis.expose = index_1.expose;
|
|
22
|
-
}
|
|
23
|
-
if (typeof globalThis !== 'undefined') {
|
|
24
|
-
;
|
|
25
|
-
globalThis.expose = index_1.expose;
|
|
26
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const isWorkerRuntime = function isWorkerRuntime() {
|
|
4
|
-
const isWindowContext = self !== undefined && typeof Window !== 'undefined' && self instanceof Window;
|
|
5
|
-
return self !== undefined && self['postMessage'] && !isWindowContext ? true : false;
|
|
6
|
-
};
|
|
7
|
-
const postMessageToMaster = function postMessageToMaster(data, transferList) {
|
|
8
|
-
self.postMessage(data, transferList);
|
|
9
|
-
};
|
|
10
|
-
const subscribeToMasterMessages = function subscribeToMasterMessages(onMessage) {
|
|
11
|
-
const messageHandler = (messageEvent) => {
|
|
12
|
-
onMessage(messageEvent.data);
|
|
13
|
-
};
|
|
14
|
-
const unsubscribe = () => {
|
|
15
|
-
self.removeEventListener('message', messageHandler);
|
|
16
|
-
};
|
|
17
|
-
self.addEventListener('message', messageHandler);
|
|
18
|
-
return unsubscribe;
|
|
19
|
-
};
|
|
20
|
-
exports.default = {
|
|
21
|
-
isWorkerRuntime,
|
|
22
|
-
postMessageToMaster,
|
|
23
|
-
subscribeToMasterMessages,
|
|
24
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const implementation_browser_1 = __importDefault(require("./implementation.browser"));
|
|
7
|
-
const implementation_tiny_worker_1 = __importDefault(require("./implementation.tiny-worker"));
|
|
8
|
-
const implementation_worker_threads_1 = __importDefault(require("./implementation.worker_threads"));
|
|
9
|
-
const runningInNode = typeof process !== 'undefined' && process.arch !== 'browser' && 'pid' in process;
|
|
10
|
-
function selectNodeImplementation() {
|
|
11
|
-
try {
|
|
12
|
-
implementation_worker_threads_1.default.testImplementation();
|
|
13
|
-
return implementation_worker_threads_1.default;
|
|
14
|
-
}
|
|
15
|
-
catch {
|
|
16
|
-
return implementation_tiny_worker_1.default;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.default = runningInNode ? selectNodeImplementation() : implementation_browser_1.default;
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
try {
|
|
4
|
-
if (self === undefined) {
|
|
5
|
-
;
|
|
6
|
-
globalThis.self = globalThis;
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
catch {
|
|
10
|
-
;
|
|
11
|
-
globalThis.self = globalThis;
|
|
12
|
-
}
|
|
13
|
-
const isWorkerRuntime = function isWorkerRuntime() {
|
|
14
|
-
return self !== undefined && self['postMessage'] ? true : false;
|
|
15
|
-
};
|
|
16
|
-
const postMessageToMaster = function postMessageToMaster(data) {
|
|
17
|
-
self.postMessage(data);
|
|
18
|
-
};
|
|
19
|
-
let muxingHandlerSetUp = false;
|
|
20
|
-
const messageHandlers = new Set();
|
|
21
|
-
const subscribeToMasterMessages = function subscribeToMasterMessages(onMessage) {
|
|
22
|
-
if (!muxingHandlerSetUp) {
|
|
23
|
-
self.addEventListener('message', ((event) => {
|
|
24
|
-
for (const handler of messageHandlers)
|
|
25
|
-
handler(event.data);
|
|
26
|
-
}));
|
|
27
|
-
muxingHandlerSetUp = true;
|
|
28
|
-
}
|
|
29
|
-
messageHandlers.add(onMessage);
|
|
30
|
-
const unsubscribe = () => messageHandlers.delete(onMessage);
|
|
31
|
-
return unsubscribe;
|
|
32
|
-
};
|
|
33
|
-
exports.default = {
|
|
34
|
-
isWorkerRuntime,
|
|
35
|
-
postMessageToMaster,
|
|
36
|
-
subscribeToMasterMessages,
|
|
37
|
-
};
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const worker_threads_1 = __importDefault(require("../worker_threads"));
|
|
7
|
-
function assertMessagePort(port) {
|
|
8
|
-
if (!port) {
|
|
9
|
-
throw new Error('Invariant violation: MessagePort to parent is not available.');
|
|
10
|
-
}
|
|
11
|
-
return port;
|
|
12
|
-
}
|
|
13
|
-
const isWorkerRuntime = function isWorkerRuntime() {
|
|
14
|
-
return !(0, worker_threads_1.default)().isMainThread;
|
|
15
|
-
};
|
|
16
|
-
const postMessageToMaster = function postMessageToMaster(data, transferList) {
|
|
17
|
-
assertMessagePort((0, worker_threads_1.default)().parentPort).postMessage(data, transferList);
|
|
18
|
-
};
|
|
19
|
-
const subscribeToMasterMessages = function subscribeToMasterMessages(onMessage) {
|
|
20
|
-
const parentPort = (0, worker_threads_1.default)().parentPort;
|
|
21
|
-
if (!parentPort) {
|
|
22
|
-
throw new Error('Invariant violation: MessagePort to parent is not available.');
|
|
23
|
-
}
|
|
24
|
-
const messageHandler = (message) => {
|
|
25
|
-
onMessage(message);
|
|
26
|
-
};
|
|
27
|
-
const unsubscribe = () => {
|
|
28
|
-
assertMessagePort(parentPort).off('message', messageHandler);
|
|
29
|
-
};
|
|
30
|
-
assertMessagePort(parentPort).on('message', messageHandler);
|
|
31
|
-
return unsubscribe;
|
|
32
|
-
};
|
|
33
|
-
function testImplementation() {
|
|
34
|
-
(0, worker_threads_1.default)();
|
|
35
|
-
}
|
|
36
|
-
exports.default = {
|
|
37
|
-
isWorkerRuntime,
|
|
38
|
-
postMessageToMaster,
|
|
39
|
-
subscribeToMasterMessages,
|
|
40
|
-
testImplementation,
|
|
41
|
-
};
|