threadsx 2.0.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/LICENSE +21 -0
- package/README.md +164 -0
- package/dist/common.d.ts +4 -0
- package/dist/common.js +16 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +26 -0
- package/dist/master/get-bundle-url.browser.d.ts +3 -0
- package/dist/master/get-bundle-url.browser.js +28 -0
- package/dist/master/implementation.browser.d.ts +4 -0
- package/dist/master/implementation.browser.js +72 -0
- package/dist/master/implementation.d.ts +6 -0
- package/dist/master/implementation.js +51 -0
- package/dist/master/implementation.node.d.ts +4 -0
- package/dist/master/implementation.node.js +196 -0
- package/dist/master/index.d.ts +14 -0
- package/dist/master/index.js +15 -0
- package/dist/master/invocation-proxy.d.ts +3 -0
- package/dist/master/invocation-proxy.js +128 -0
- package/dist/master/pool-types.d.ts +65 -0
- package/dist/master/pool-types.js +15 -0
- package/dist/master/pool.d.ts +89 -0
- package/dist/master/pool.js +290 -0
- package/dist/master/register.d.ts +1 -0
- package/dist/master/register.js +9 -0
- package/dist/master/spawn.d.ts +20 -0
- package/dist/master/spawn.js +159 -0
- package/dist/master/thread.d.ts +12 -0
- package/dist/master/thread.js +22 -0
- package/dist/observable-promise.d.ts +38 -0
- package/dist/observable-promise.js +150 -0
- package/dist/observable.d.ts +19 -0
- package/dist/observable.js +40 -0
- package/dist/ponyfills.d.ts +8 -0
- package/dist/ponyfills.js +21 -0
- package/dist/promise.d.ts +5 -0
- package/dist/promise.js +27 -0
- package/dist/serializers.d.ts +16 -0
- package/dist/serializers.js +51 -0
- package/dist/symbols.d.ts +5 -0
- package/dist/symbols.js +8 -0
- package/dist/transferable.d.ts +42 -0
- package/dist/transferable.js +26 -0
- package/dist/types/master.d.ts +98 -0
- package/dist/types/master.js +12 -0
- package/dist/types/messages.d.ts +62 -0
- package/dist/types/messages.js +20 -0
- package/dist/types/worker.d.ts +11 -0
- package/dist/types/worker.js +2 -0
- package/dist/worker/bundle-entry.d.ts +1 -0
- package/dist/worker/bundle-entry.js +24 -0
- package/dist/worker/implementation.browser.d.ts +6 -0
- package/dist/worker/implementation.browser.js +25 -0
- package/dist/worker/implementation.d.ts +3 -0
- package/dist/worker/implementation.js +18 -0
- package/dist/worker/implementation.worker_threads.d.ts +8 -0
- package/dist/worker/implementation.worker_threads.js +42 -0
- package/dist/worker/index.d.ts +13 -0
- package/dist/worker/index.js +224 -0
- package/dist/worker_threads.d.ts +8 -0
- package/dist/worker_threads.js +16 -0
- package/dist-esm/common.js +11 -0
- package/dist-esm/index.js +5 -0
- package/dist-esm/master/get-bundle-url.browser.js +25 -0
- package/dist-esm/master/implementation.browser.js +67 -0
- package/dist-esm/master/implementation.js +15 -0
- package/dist-esm/master/implementation.node.js +155 -0
- package/dist-esm/master/index.js +9 -0
- package/dist-esm/master/invocation-proxy.js +121 -0
- package/dist-esm/master/pool-types.js +12 -0
- package/dist-esm/master/pool.js +283 -0
- package/dist-esm/master/register.js +7 -0
- package/dist-esm/master/spawn.js +153 -0
- package/dist-esm/master/thread.js +19 -0
- package/dist-esm/observable-promise.js +146 -0
- package/dist-esm/observable.js +36 -0
- package/dist-esm/ponyfills.js +18 -0
- package/dist-esm/promise.js +24 -0
- package/dist-esm/serializers.js +47 -0
- package/dist-esm/symbols.js +5 -0
- package/dist-esm/transferable.js +22 -0
- package/dist-esm/types/master.js +9 -0
- package/dist-esm/types/messages.js +17 -0
- package/dist-esm/types/worker.js +1 -0
- package/dist-esm/worker/bundle-entry.js +8 -0
- package/dist-esm/worker/implementation.browser.js +23 -0
- package/dist-esm/worker/implementation.js +13 -0
- package/dist-esm/worker/implementation.worker_threads.js +37 -0
- package/dist-esm/worker/index.js +215 -0
- package/dist-esm/worker_threads.js +13 -0
- package/index.mjs +4 -0
- package/observable.mjs +1 -0
- package/package.json +168 -0
- package/register.mjs +2 -0
- package/worker.mjs +1 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { deserialize, serialize } from "../common";
|
|
11
|
+
import { isTransferDescriptor } from "../transferable";
|
|
12
|
+
import { MasterMessageType, WorkerMessageType } from "../types/messages";
|
|
13
|
+
import Implementation from "./implementation";
|
|
14
|
+
export { registerSerializer } from "../common";
|
|
15
|
+
export { Transfer } from "../transferable";
|
|
16
|
+
/** Returns `true` if this code is currently running in a worker. */
|
|
17
|
+
export const isWorkerRuntime = Implementation.isWorkerRuntime;
|
|
18
|
+
let exposeCalled = false;
|
|
19
|
+
const activeSubscriptions = new Map();
|
|
20
|
+
const isMasterJobCancelMessage = (thing) => thing && thing.type === MasterMessageType.cancel;
|
|
21
|
+
const isMasterJobRunMessage = (thing) => thing && thing.type === MasterMessageType.run;
|
|
22
|
+
/**
|
|
23
|
+
* Detects observables via the `Symbol.observable` / `@@observable` interop protocol.
|
|
24
|
+
* Inlined from the `is-observable` package (which is now ESM-only) to keep the
|
|
25
|
+
* CommonJS build working without an extra dependency.
|
|
26
|
+
*/
|
|
27
|
+
function isInteropObservable(thing) {
|
|
28
|
+
if (!thing) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const observableSymbol = Symbol.observable;
|
|
32
|
+
if (typeof observableSymbol === "symbol" && typeof thing[observableSymbol] === "function") {
|
|
33
|
+
return thing === thing[observableSymbol]();
|
|
34
|
+
}
|
|
35
|
+
if (typeof thing["@@observable"] === "function") {
|
|
36
|
+
return thing === thing["@@observable"]();
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* There are issues with interop observable detection not recognizing zen-observable's instances.
|
|
42
|
+
* We are using `observable-fns`, but it's based on zen-observable, too.
|
|
43
|
+
*/
|
|
44
|
+
const isObservable = (thing) => isInteropObservable(thing) || isZenObservable(thing);
|
|
45
|
+
function isZenObservable(thing) {
|
|
46
|
+
return thing && typeof thing === "object" && typeof thing.subscribe === "function";
|
|
47
|
+
}
|
|
48
|
+
function deconstructTransfer(thing) {
|
|
49
|
+
return isTransferDescriptor(thing)
|
|
50
|
+
? { payload: thing.send, transferables: thing.transferables }
|
|
51
|
+
: { payload: thing, transferables: undefined };
|
|
52
|
+
}
|
|
53
|
+
function postFunctionInitMessage() {
|
|
54
|
+
const initMessage = {
|
|
55
|
+
type: WorkerMessageType.init,
|
|
56
|
+
exposed: {
|
|
57
|
+
type: "function"
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
Implementation.postMessageToMaster(initMessage);
|
|
61
|
+
}
|
|
62
|
+
function postModuleInitMessage(methodNames) {
|
|
63
|
+
const initMessage = {
|
|
64
|
+
type: WorkerMessageType.init,
|
|
65
|
+
exposed: {
|
|
66
|
+
type: "module",
|
|
67
|
+
methods: methodNames
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
Implementation.postMessageToMaster(initMessage);
|
|
71
|
+
}
|
|
72
|
+
function postJobErrorMessage(uid, rawError) {
|
|
73
|
+
const { payload: error, transferables } = deconstructTransfer(rawError);
|
|
74
|
+
const errorMessage = {
|
|
75
|
+
type: WorkerMessageType.error,
|
|
76
|
+
uid,
|
|
77
|
+
error: serialize(error)
|
|
78
|
+
};
|
|
79
|
+
Implementation.postMessageToMaster(errorMessage, transferables);
|
|
80
|
+
}
|
|
81
|
+
function postJobResultMessage(uid, completed, resultValue) {
|
|
82
|
+
const { payload, transferables } = deconstructTransfer(resultValue);
|
|
83
|
+
const resultMessage = {
|
|
84
|
+
type: WorkerMessageType.result,
|
|
85
|
+
uid,
|
|
86
|
+
complete: completed ? true : undefined,
|
|
87
|
+
payload
|
|
88
|
+
};
|
|
89
|
+
Implementation.postMessageToMaster(resultMessage, transferables);
|
|
90
|
+
}
|
|
91
|
+
function postJobStartMessage(uid, resultType) {
|
|
92
|
+
const startMessage = {
|
|
93
|
+
type: WorkerMessageType.running,
|
|
94
|
+
uid,
|
|
95
|
+
resultType
|
|
96
|
+
};
|
|
97
|
+
Implementation.postMessageToMaster(startMessage);
|
|
98
|
+
}
|
|
99
|
+
function postUncaughtErrorMessage(error) {
|
|
100
|
+
try {
|
|
101
|
+
const errorMessage = {
|
|
102
|
+
type: WorkerMessageType.uncaughtError,
|
|
103
|
+
error: serialize(error)
|
|
104
|
+
};
|
|
105
|
+
Implementation.postMessageToMaster(errorMessage);
|
|
106
|
+
}
|
|
107
|
+
catch (subError) {
|
|
108
|
+
console.error("Not reporting uncaught error back to master thread as it " +
|
|
109
|
+
"occured while reporting an uncaught error already." +
|
|
110
|
+
"\nLatest error:", subError, "\nOriginal error:", error);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
function runFunction(jobUID, fn, args) {
|
|
114
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
115
|
+
let syncResult;
|
|
116
|
+
try {
|
|
117
|
+
syncResult = fn(...args);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
return postJobErrorMessage(jobUID, error);
|
|
121
|
+
}
|
|
122
|
+
const resultType = isObservable(syncResult) ? "observable" : "promise";
|
|
123
|
+
postJobStartMessage(jobUID, resultType);
|
|
124
|
+
if (isObservable(syncResult)) {
|
|
125
|
+
const subscription = syncResult.subscribe(value => postJobResultMessage(jobUID, false, serialize(value)), error => {
|
|
126
|
+
postJobErrorMessage(jobUID, serialize(error));
|
|
127
|
+
activeSubscriptions.delete(jobUID);
|
|
128
|
+
}, () => {
|
|
129
|
+
postJobResultMessage(jobUID, true);
|
|
130
|
+
activeSubscriptions.delete(jobUID);
|
|
131
|
+
});
|
|
132
|
+
activeSubscriptions.set(jobUID, subscription);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
try {
|
|
136
|
+
const result = yield syncResult;
|
|
137
|
+
postJobResultMessage(jobUID, true, serialize(result));
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
postJobErrorMessage(jobUID, serialize(error));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Expose a function or a module (an object whose values are functions)
|
|
147
|
+
* to the main thread. Must be called exactly once in every worker thread
|
|
148
|
+
* to signal its API to the main thread.
|
|
149
|
+
*
|
|
150
|
+
* @param exposed Function or object whose values are functions
|
|
151
|
+
*/
|
|
152
|
+
export function expose(exposed) {
|
|
153
|
+
if (!Implementation.isWorkerRuntime()) {
|
|
154
|
+
throw Error("expose() called in the master thread.");
|
|
155
|
+
}
|
|
156
|
+
if (exposeCalled) {
|
|
157
|
+
throw Error("expose() called more than once. This is not possible. Pass an object to expose() if you want to expose multiple functions.");
|
|
158
|
+
}
|
|
159
|
+
exposeCalled = true;
|
|
160
|
+
if (typeof exposed === "function") {
|
|
161
|
+
Implementation.subscribeToMasterMessages(messageData => {
|
|
162
|
+
if (isMasterJobRunMessage(messageData) && !messageData.method) {
|
|
163
|
+
runFunction(messageData.uid, exposed, messageData.args.map(deserialize));
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
postFunctionInitMessage();
|
|
167
|
+
}
|
|
168
|
+
else if (typeof exposed === "object" && exposed) {
|
|
169
|
+
Implementation.subscribeToMasterMessages(messageData => {
|
|
170
|
+
if (isMasterJobRunMessage(messageData) && messageData.method) {
|
|
171
|
+
runFunction(messageData.uid, exposed[messageData.method], messageData.args.map(deserialize));
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
const methodNames = Object.keys(exposed).filter(key => typeof exposed[key] === "function");
|
|
175
|
+
postModuleInitMessage(methodNames);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
throw Error(`Invalid argument passed to expose(). Expected a function or an object, got: ${exposed}`);
|
|
179
|
+
}
|
|
180
|
+
Implementation.subscribeToMasterMessages(messageData => {
|
|
181
|
+
if (isMasterJobCancelMessage(messageData)) {
|
|
182
|
+
const jobUID = messageData.uid;
|
|
183
|
+
const subscription = activeSubscriptions.get(jobUID);
|
|
184
|
+
if (subscription) {
|
|
185
|
+
subscription.unsubscribe();
|
|
186
|
+
activeSubscriptions.delete(jobUID);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
if (typeof self !== "undefined" && typeof self.addEventListener === "function" && Implementation.isWorkerRuntime()) {
|
|
192
|
+
self.addEventListener("error", event => {
|
|
193
|
+
// Post with some delay, so the master had some time to subscribe to messages
|
|
194
|
+
setTimeout(() => postUncaughtErrorMessage(event.error || event), 250);
|
|
195
|
+
});
|
|
196
|
+
self.addEventListener("unhandledrejection", event => {
|
|
197
|
+
const error = event.reason;
|
|
198
|
+
if (error && typeof error.message === "string") {
|
|
199
|
+
// Post with some delay, so the master had some time to subscribe to messages
|
|
200
|
+
setTimeout(() => postUncaughtErrorMessage(error), 250);
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
if (typeof process !== "undefined" && typeof process.on === "function" && Implementation.isWorkerRuntime()) {
|
|
205
|
+
process.on("uncaughtException", (error) => {
|
|
206
|
+
// Post with some delay, so the master had some time to subscribe to messages
|
|
207
|
+
setTimeout(() => postUncaughtErrorMessage(error), 250);
|
|
208
|
+
});
|
|
209
|
+
process.on("unhandledRejection", (error) => {
|
|
210
|
+
if (error && typeof error.message === "string") {
|
|
211
|
+
// Post with some delay, so the master had some time to subscribe to messages
|
|
212
|
+
setTimeout(() => postUncaughtErrorMessage(error), 250);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Webpack hack
|
|
2
|
+
let implementation;
|
|
3
|
+
function selectImplementation() {
|
|
4
|
+
return typeof __non_webpack_require__ === "function"
|
|
5
|
+
? __non_webpack_require__("worker_threads")
|
|
6
|
+
: eval("require")("worker_threads");
|
|
7
|
+
}
|
|
8
|
+
export default function getImplementation() {
|
|
9
|
+
if (!implementation) {
|
|
10
|
+
implementation = selectImplementation();
|
|
11
|
+
}
|
|
12
|
+
return implementation;
|
|
13
|
+
}
|
package/index.mjs
ADDED
package/observable.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./dist/observable.js"
|
package/package.json
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "threadsx",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Web workers & worker threads as simple as a function call",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"module": "dist-esm/index.js",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"clean": "rimraf dist/ dist-esm/",
|
|
10
|
+
"dev": "npm run clean && tsc -p tsconfig.json --watch",
|
|
11
|
+
"build": "npm run clean && npm run build:cjs && npm run build:es",
|
|
12
|
+
"build:cjs": "tsc -p tsconfig.json",
|
|
13
|
+
"build:es": "tsc -p tsconfig-esm.json",
|
|
14
|
+
"postbuild": "npm run bundle",
|
|
15
|
+
"bundle": "rollup -c -f umd --file=bundle/worker.js --name=threads --silent -- dist-esm/worker/bundle-entry.js",
|
|
16
|
+
"lint": "eslint .",
|
|
17
|
+
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
18
|
+
"test": "npm run lint && npm run test:library && npm run test:tooling && npm run test:browser",
|
|
19
|
+
"test:library": "ava ./test/**/*.test.ts",
|
|
20
|
+
"test:tooling": "ava ./test-tooling/**/*.test.ts",
|
|
21
|
+
"test:browser": "playwright test",
|
|
22
|
+
"test:coverage": "c8 ava ./test/**/*.test.ts",
|
|
23
|
+
"prepare": "npm run build"
|
|
24
|
+
},
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"module": "./dist-esm/index.js",
|
|
29
|
+
"import": "./index.mjs",
|
|
30
|
+
"require": "./dist/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./observable": {
|
|
33
|
+
"types": "./dist/observable.d.ts",
|
|
34
|
+
"module": "./dist-esm/observable.js",
|
|
35
|
+
"import": "./observable.mjs",
|
|
36
|
+
"require": "./dist/observable.js"
|
|
37
|
+
},
|
|
38
|
+
"./register": {
|
|
39
|
+
"module": "./dist-esm/master/register.js",
|
|
40
|
+
"import": "./register.mjs",
|
|
41
|
+
"require": "./dist/master/register.js"
|
|
42
|
+
},
|
|
43
|
+
"./worker": {
|
|
44
|
+
"types": "./dist/worker/index.d.ts",
|
|
45
|
+
"module": "./dist-esm/worker/index.js",
|
|
46
|
+
"import": "./worker.mjs",
|
|
47
|
+
"require": "./dist/worker/index.js"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"sideEffects": [
|
|
51
|
+
"./dist*/master/register.js",
|
|
52
|
+
"./dist*/worker/index.js",
|
|
53
|
+
"./register.mjs",
|
|
54
|
+
"./worker.mjs"
|
|
55
|
+
],
|
|
56
|
+
"repository": {
|
|
57
|
+
"type": "git",
|
|
58
|
+
"url": "git+https://github.com/jmaleonard/threadsx.git"
|
|
59
|
+
},
|
|
60
|
+
"author": "Andy Wermke (https://github.com/andywer)",
|
|
61
|
+
"bugs": {
|
|
62
|
+
"url": "https://github.com/jmaleonard/threadsx/issues"
|
|
63
|
+
},
|
|
64
|
+
"homepage": "https://threadsx.jmaleonard.com",
|
|
65
|
+
"keywords": [
|
|
66
|
+
"thread",
|
|
67
|
+
"worker",
|
|
68
|
+
"pool",
|
|
69
|
+
"spawn",
|
|
70
|
+
"isomorphic",
|
|
71
|
+
"parallel",
|
|
72
|
+
"observable",
|
|
73
|
+
"worker_threads"
|
|
74
|
+
],
|
|
75
|
+
"dependencies": {
|
|
76
|
+
"callsites": "^3.1.0",
|
|
77
|
+
"debug": "^4.4.3",
|
|
78
|
+
"observable-fns": "^0.6.1"
|
|
79
|
+
},
|
|
80
|
+
"devDependencies": {
|
|
81
|
+
"@eslint/js": "^10.0.1",
|
|
82
|
+
"@playwright/test": "^1.61.0",
|
|
83
|
+
"@rollup/plugin-commonjs": "^29.0.3",
|
|
84
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
85
|
+
"@types/debug": "^4.1.12",
|
|
86
|
+
"@types/execa": "^2.0.0",
|
|
87
|
+
"@types/node": "^20.19.0",
|
|
88
|
+
"ava": "^7.0.0",
|
|
89
|
+
"c8": "^10.1.3",
|
|
90
|
+
"esbuild": "^0.25.12",
|
|
91
|
+
"eslint": "^10.5.0",
|
|
92
|
+
"eslint-config-prettier": "^9.1.2",
|
|
93
|
+
"execa": "^4.0.3",
|
|
94
|
+
"globals": "^16.5.0",
|
|
95
|
+
"prettier": "^3.8.4",
|
|
96
|
+
"rimraf": "^6.0.1",
|
|
97
|
+
"rollup": "^4.62.0",
|
|
98
|
+
"ts-loader": "^9.6.1",
|
|
99
|
+
"tsx": "^4.22.4",
|
|
100
|
+
"typescript": "^5.9.3",
|
|
101
|
+
"typescript-eslint": "^8.61.1",
|
|
102
|
+
"webpack": "^5.107.2"
|
|
103
|
+
},
|
|
104
|
+
"ava": {
|
|
105
|
+
"extensions": {
|
|
106
|
+
"ts": "module"
|
|
107
|
+
},
|
|
108
|
+
"nodeArguments": [
|
|
109
|
+
"--import=tsx"
|
|
110
|
+
],
|
|
111
|
+
"workerThreads": false,
|
|
112
|
+
"files": [
|
|
113
|
+
"./test/**/*.test.ts",
|
|
114
|
+
"./test-tooling/**/*.test.ts"
|
|
115
|
+
],
|
|
116
|
+
"serial": true
|
|
117
|
+
},
|
|
118
|
+
"c8": {
|
|
119
|
+
"all": true,
|
|
120
|
+
"src": [
|
|
121
|
+
"src"
|
|
122
|
+
],
|
|
123
|
+
"include": [
|
|
124
|
+
"src/**/*.ts"
|
|
125
|
+
],
|
|
126
|
+
"exclude": [
|
|
127
|
+
"src/**/*.browser.ts",
|
|
128
|
+
"src/worker/bundle-entry.ts",
|
|
129
|
+
"src/types/worker.ts"
|
|
130
|
+
],
|
|
131
|
+
"reporter": [
|
|
132
|
+
"text-summary",
|
|
133
|
+
"text",
|
|
134
|
+
"lcov"
|
|
135
|
+
],
|
|
136
|
+
"check-coverage": true,
|
|
137
|
+
"lines": 91,
|
|
138
|
+
"branches": 80,
|
|
139
|
+
"functions": 90
|
|
140
|
+
},
|
|
141
|
+
"browser": {
|
|
142
|
+
"callsites": false,
|
|
143
|
+
"tsx": false,
|
|
144
|
+
"tsx/cjs": false,
|
|
145
|
+
"ts-node": false,
|
|
146
|
+
"ts-node/register": false,
|
|
147
|
+
"worker_threads": false,
|
|
148
|
+
"./dist/master/implementation.js": "./dist/master/implementation.browser.js",
|
|
149
|
+
"./dist/master/implementation.node.js": false,
|
|
150
|
+
"./dist/worker/implementation.js": "./dist/worker/implementation.browser.js",
|
|
151
|
+
"./dist/worker/implementation.worker_threads.js": false,
|
|
152
|
+
"./dist-esm/master/implementation.js": "./dist-esm/master/implementation.browser.js",
|
|
153
|
+
"./dist-esm/master/implementation.node.js": false,
|
|
154
|
+
"./dist-esm/worker/implementation.js": "./dist-esm/worker/implementation.browser.js",
|
|
155
|
+
"./dist-esm/worker/implementation.worker_threads.js": false
|
|
156
|
+
},
|
|
157
|
+
"engines": {
|
|
158
|
+
"node": ">=20"
|
|
159
|
+
},
|
|
160
|
+
"files": [
|
|
161
|
+
"dist/**",
|
|
162
|
+
"dist-esm/**",
|
|
163
|
+
"index.mjs",
|
|
164
|
+
"observable.mjs",
|
|
165
|
+
"register.mjs",
|
|
166
|
+
"worker.mjs"
|
|
167
|
+
]
|
|
168
|
+
}
|
package/register.mjs
ADDED
package/worker.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./dist/worker/index.js"
|