@xylabs/threads 4.12.44 → 4.13.1

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.
Files changed (116) hide show
  1. package/dist/browser/common-Cuiya5FG.d.ts +21 -0
  2. package/dist/browser/index-browser-B8TCfn7g.d.ts +20 -0
  3. package/dist/browser/index-browser.d.ts +8 -0
  4. package/dist/browser/index-browser.mjs +209 -119
  5. package/dist/browser/index-browser.mjs.map +1 -1
  6. package/dist/browser/master/implementation.browser.d.ts +9 -0
  7. package/dist/browser/master/implementation.browser.mjs +36 -11
  8. package/dist/browser/master/implementation.browser.mjs.map +1 -1
  9. package/dist/browser/master/index-browser.d.ts +7 -0
  10. package/dist/browser/master/index-browser.mjs +201 -117
  11. package/dist/browser/master/index-browser.mjs.map +1 -1
  12. package/dist/browser/master/pool-browser.d.ts +104 -0
  13. package/dist/browser/master/pool-browser.mjs +65 -53
  14. package/dist/browser/master/pool-browser.mjs.map +1 -1
  15. package/dist/browser/master-D4MAqspp.d.ts +109 -0
  16. package/dist/browser/transferable-Cv9t618f.d.ts +15 -0
  17. package/dist/{types → browser}/worker/worker.browser.d.ts +8 -8
  18. package/dist/browser/worker/worker.browser.mjs +79 -43
  19. package/dist/browser/worker/worker.browser.mjs.map +1 -1
  20. package/dist/{types/types/worker.d.ts → browser/worker-04t9iwDh.d.ts} +5 -5
  21. package/dist/neutral/master/register.d.ts +2 -0
  22. package/dist/neutral/master/register.mjs +223 -33
  23. package/dist/neutral/master/register.mjs.map +1 -1
  24. package/dist/neutral/master/spawn.d.ts +19 -0
  25. package/dist/neutral/master/spawn.mjs +106 -53
  26. package/dist/neutral/master/spawn.mjs.map +1 -1
  27. package/dist/neutral/master/thread.d.ts +12 -0
  28. package/dist/neutral/master/thread.mjs +4 -0
  29. package/dist/neutral/master/thread.mjs.map +1 -1
  30. package/dist/neutral/master-DDdg1BKb.d.ts +74 -0
  31. package/dist/{types → neutral}/observable-promise.d.ts +5 -18
  32. package/dist/neutral/observable-promise.mjs +27 -20
  33. package/dist/neutral/observable-promise.mjs.map +1 -1
  34. package/dist/neutral/observable.d.ts +13 -0
  35. package/dist/neutral/observable.mjs +12 -3
  36. package/dist/neutral/observable.mjs.map +1 -1
  37. package/dist/{types → neutral}/types/messages.d.ts +12 -11
  38. package/dist/neutral/types/messages.mjs +19 -0
  39. package/dist/neutral/types/messages.mjs.map +1 -0
  40. package/dist/node/common-Cuiya5FG.d.ts +21 -0
  41. package/dist/node/index-node-DB1sNl0d.d.ts +66 -0
  42. package/dist/node/index-node.d.ts +8 -0
  43. package/dist/node/index-node.mjs +396 -141
  44. package/dist/node/index-node.mjs.map +1 -1
  45. package/dist/node/master/implementation.node.d.ts +9 -0
  46. package/dist/node/master/implementation.node.mjs +223 -33
  47. package/dist/node/master/implementation.node.mjs.map +1 -1
  48. package/dist/node/master/index-node.d.ts +7 -0
  49. package/dist/node/master/index-node.mjs +388 -139
  50. package/dist/node/master/index-node.mjs.map +1 -1
  51. package/dist/node/master/pool-node.d.ts +51 -0
  52. package/dist/node/master/pool-node.mjs +285 -86
  53. package/dist/node/master/pool-node.mjs.map +1 -1
  54. package/dist/node/master-BjjSaJAj.d.ts +109 -0
  55. package/dist/{types/master/pool-types.d.ts → node/pool-types-Bzei07Nj.d.ts} +16 -24
  56. package/dist/node/transferable-Cv9t618f.d.ts +15 -0
  57. package/dist/{types → node}/worker/worker.node.d.ts +11 -10
  58. package/dist/node/worker/worker.node.mjs +80 -43
  59. package/dist/node/worker/worker.node.mjs.map +1 -1
  60. package/dist/node/worker-04t9iwDh.d.ts +12 -0
  61. package/package.json +29 -22
  62. package/src/master/invocation-proxy.ts +2 -0
  63. package/src/transferable.ts +2 -0
  64. package/src/types/worker.ts +1 -0
  65. package/src/worker/WorkerGlobalScope.ts +1 -0
  66. package/src/worker/worker.browser.ts +1 -1
  67. package/dist/types/common.d.ts +0 -8
  68. package/dist/types/common.d.ts.map +0 -1
  69. package/dist/types/index-browser.d.ts +0 -9
  70. package/dist/types/index-browser.d.ts.map +0 -1
  71. package/dist/types/index-node.d.ts +0 -9
  72. package/dist/types/index-node.d.ts.map +0 -1
  73. package/dist/types/master/get-bundle-url.browser.d.ts +0 -3
  74. package/dist/types/master/get-bundle-url.browser.d.ts.map +0 -1
  75. package/dist/types/master/implementation.browser.d.ts +0 -5
  76. package/dist/types/master/implementation.browser.d.ts.map +0 -1
  77. package/dist/types/master/implementation.node.d.ts +0 -5
  78. package/dist/types/master/implementation.node.d.ts.map +0 -1
  79. package/dist/types/master/index-browser.d.ts +0 -13
  80. package/dist/types/master/index-browser.d.ts.map +0 -1
  81. package/dist/types/master/index-node.d.ts +0 -13
  82. package/dist/types/master/index-node.d.ts.map +0 -1
  83. package/dist/types/master/invocation-proxy.d.ts +0 -4
  84. package/dist/types/master/invocation-proxy.d.ts.map +0 -1
  85. package/dist/types/master/pool-browser.d.ts +0 -93
  86. package/dist/types/master/pool-browser.d.ts.map +0 -1
  87. package/dist/types/master/pool-node.d.ts +0 -93
  88. package/dist/types/master/pool-node.d.ts.map +0 -1
  89. package/dist/types/master/pool-types.d.ts.map +0 -1
  90. package/dist/types/master/register.d.ts +0 -2
  91. package/dist/types/master/register.d.ts.map +0 -1
  92. package/dist/types/master/spawn.d.ts +0 -21
  93. package/dist/types/master/spawn.d.ts.map +0 -1
  94. package/dist/types/master/thread.d.ts +0 -13
  95. package/dist/types/master/thread.d.ts.map +0 -1
  96. package/dist/types/observable-promise.d.ts.map +0 -1
  97. package/dist/types/observable.d.ts +0 -21
  98. package/dist/types/observable.d.ts.map +0 -1
  99. package/dist/types/promise.d.ts +0 -6
  100. package/dist/types/promise.d.ts.map +0 -1
  101. package/dist/types/serializers.d.ts +0 -17
  102. package/dist/types/serializers.d.ts.map +0 -1
  103. package/dist/types/symbols.d.ts +0 -6
  104. package/dist/types/symbols.d.ts.map +0 -1
  105. package/dist/types/transferable.d.ts +0 -43
  106. package/dist/types/transferable.d.ts.map +0 -1
  107. package/dist/types/types/master.d.ts +0 -99
  108. package/dist/types/types/master.d.ts.map +0 -1
  109. package/dist/types/types/messages.d.ts.map +0 -1
  110. package/dist/types/types/worker.d.ts.map +0 -1
  111. package/dist/types/worker/WorkerGlobalScope.d.ts +0 -6
  112. package/dist/types/worker/WorkerGlobalScope.d.ts.map +0 -1
  113. package/dist/types/worker/expose.d.ts +0 -4
  114. package/dist/types/worker/expose.d.ts.map +0 -1
  115. package/dist/types/worker/worker.browser.d.ts.map +0 -1
  116. package/dist/types/worker/worker.node.d.ts.map +0 -1
@@ -1,3 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/worker/worker.node.ts
2
5
  import { parentPort as optionalParentPort } from "worker_threads";
3
6
  import { assertEx } from "@xylabs/assert";
@@ -18,6 +21,7 @@ function extendSerializer(extend, implementation) {
18
21
  }
19
22
  };
20
23
  }
24
+ __name(extendSerializer, "extendSerializer");
21
25
  var DefaultErrorSerializer = {
22
26
  deserialize(message) {
23
27
  return Object.assign(new Error(message.message), {
@@ -34,7 +38,7 @@ var DefaultErrorSerializer = {
34
38
  };
35
39
  }
36
40
  };
37
- var isSerializedError = (thing) => thing && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error";
41
+ var isSerializedError = /* @__PURE__ */ __name((thing) => thing && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error", "isSerializedError");
38
42
  var DefaultSerializer = {
39
43
  deserialize(message) {
40
44
  return isSerializedError(message) ? DefaultErrorSerializer.deserialize(message) : message;
@@ -49,12 +53,15 @@ globalThis.registeredSerializer = globalThis.registeredSerializer ?? DefaultSeri
49
53
  function registerSerializer(serializer) {
50
54
  globalThis.registeredSerializer = extendSerializer(globalThis.registeredSerializer, serializer);
51
55
  }
56
+ __name(registerSerializer, "registerSerializer");
52
57
  function deserialize(message) {
53
58
  return globalThis.registeredSerializer.deserialize(message);
54
59
  }
60
+ __name(deserialize, "deserialize");
55
61
  function serialize(input) {
56
62
  return globalThis.registeredSerializer.serialize(input);
57
63
  }
64
+ __name(serialize, "serialize");
58
65
 
59
66
  // src/symbols.ts
60
67
  var $errors = Symbol("thread.errors");
@@ -68,14 +75,18 @@ function isTransferable(thing) {
68
75
  if (!thing || typeof thing !== "object") return false;
69
76
  return true;
70
77
  }
78
+ __name(isTransferable, "isTransferable");
71
79
  function isTransferDescriptor(thing) {
72
80
  return thing && typeof thing === "object" && thing[$transferable];
73
81
  }
82
+ __name(isTransferDescriptor, "isTransferDescriptor");
74
83
  function Transfer(payload, transferables) {
75
84
  console.log("Transfer");
76
85
  if (!transferables) {
77
86
  if (!isTransferable(payload)) throw new Error("Not transferable");
78
- transferables = [payload];
87
+ transferables = [
88
+ payload
89
+ ];
79
90
  }
80
91
  return {
81
92
  [$transferable]: true,
@@ -83,81 +94,108 @@ function Transfer(payload, transferables) {
83
94
  transferables
84
95
  };
85
96
  }
97
+ __name(Transfer, "Transfer");
98
+
99
+ // src/types/messages.ts
100
+ var MasterMessageType = /* @__PURE__ */ function(MasterMessageType2) {
101
+ MasterMessageType2["cancel"] = "cancel";
102
+ MasterMessageType2["run"] = "run";
103
+ return MasterMessageType2;
104
+ }({});
105
+ var WorkerMessageType = /* @__PURE__ */ function(WorkerMessageType2) {
106
+ WorkerMessageType2["error"] = "error";
107
+ WorkerMessageType2["init"] = "init";
108
+ WorkerMessageType2["result"] = "result";
109
+ WorkerMessageType2["running"] = "running";
110
+ WorkerMessageType2["uncaughtError"] = "uncaughtError";
111
+ return WorkerMessageType2;
112
+ }({});
86
113
 
87
114
  // src/worker/expose.ts
88
- var isErrorEvent = (value) => value && value.error;
115
+ var isErrorEvent = /* @__PURE__ */ __name((value) => value && value.error, "isErrorEvent");
89
116
  function createExpose(implementation, self) {
90
117
  let exposeCalled = false;
91
118
  const activeSubscriptions = /* @__PURE__ */ new Map();
92
- const isMasterJobCancelMessage = (thing) => thing && thing.type === "cancel" /* cancel */;
93
- const isMasterJobRunMessage = (thing) => thing && thing.type === "run" /* run */;
94
- const isObservable = (thing) => isSomeObservable(thing) || isZenObservable(thing);
119
+ const isMasterJobCancelMessage = /* @__PURE__ */ __name((thing) => thing && thing.type === MasterMessageType.cancel, "isMasterJobCancelMessage");
120
+ const isMasterJobRunMessage = /* @__PURE__ */ __name((thing) => thing && thing.type === MasterMessageType.run, "isMasterJobRunMessage");
121
+ const isObservable = /* @__PURE__ */ __name((thing) => isSomeObservable(thing) || isZenObservable(thing), "isObservable");
95
122
  function isZenObservable(thing) {
96
123
  return thing && typeof thing === "object" && typeof thing.subscribe === "function";
97
124
  }
125
+ __name(isZenObservable, "isZenObservable");
98
126
  function deconstructTransfer(thing) {
99
- return isTransferDescriptor(thing) ? { payload: thing.send, transferables: thing.transferables } : { payload: thing, transferables: void 0 };
127
+ return isTransferDescriptor(thing) ? {
128
+ payload: thing.send,
129
+ transferables: thing.transferables
130
+ } : {
131
+ payload: thing,
132
+ transferables: void 0
133
+ };
100
134
  }
135
+ __name(deconstructTransfer, "deconstructTransfer");
101
136
  function postFunctionInitMessage() {
102
137
  const initMessage = {
103
- exposed: { type: "function" },
104
- type: "init" /* init */
138
+ exposed: {
139
+ type: "function"
140
+ },
141
+ type: WorkerMessageType.init
105
142
  };
106
143
  implementation.postMessageToMaster(initMessage);
107
144
  }
145
+ __name(postFunctionInitMessage, "postFunctionInitMessage");
108
146
  function postModuleInitMessage(methodNames) {
109
147
  const initMessage = {
110
148
  exposed: {
111
149
  methods: methodNames,
112
150
  type: "module"
113
151
  },
114
- type: "init" /* init */
152
+ type: WorkerMessageType.init
115
153
  };
116
154
  implementation.postMessageToMaster(initMessage);
117
155
  }
156
+ __name(postModuleInitMessage, "postModuleInitMessage");
118
157
  function postJobErrorMessage(uid, rawError) {
119
158
  const { payload: error, transferables } = deconstructTransfer(rawError);
120
159
  const errorMessage = {
121
160
  error: serialize(error),
122
- type: "error" /* error */,
161
+ type: WorkerMessageType.error,
123
162
  uid
124
163
  };
125
164
  implementation.postMessageToMaster(errorMessage, transferables);
126
165
  }
166
+ __name(postJobErrorMessage, "postJobErrorMessage");
127
167
  function postJobResultMessage(uid, completed, resultValue) {
128
168
  const { payload, transferables } = deconstructTransfer(resultValue);
129
169
  const resultMessage = {
130
170
  complete: completed ? true : void 0,
131
171
  payload,
132
- type: "result" /* result */,
172
+ type: WorkerMessageType.result,
133
173
  uid
134
174
  };
135
175
  implementation.postMessageToMaster(resultMessage, transferables);
136
176
  }
177
+ __name(postJobResultMessage, "postJobResultMessage");
137
178
  function postJobStartMessage(uid, resultType) {
138
179
  const startMessage = {
139
180
  resultType,
140
- type: "running" /* running */,
181
+ type: WorkerMessageType.running,
141
182
  uid
142
183
  };
143
184
  implementation.postMessageToMaster(startMessage);
144
185
  }
186
+ __name(postJobStartMessage, "postJobStartMessage");
145
187
  function postUncaughtErrorMessage(error) {
146
188
  try {
147
189
  const errorMessage = {
148
190
  error: serialize(error),
149
- type: "uncaughtError" /* uncaughtError */
191
+ type: WorkerMessageType.uncaughtError
150
192
  };
151
193
  implementation.postMessageToMaster(errorMessage);
152
194
  } catch (subError) {
153
- console.error(
154
- "Not reporting uncaught error back to master thread as it occured while reporting an uncaught error already.\nLatest error:",
155
- subError,
156
- "\nOriginal error:",
157
- error
158
- );
195
+ console.error("Not reporting uncaught error back to master thread as it occured while reporting an uncaught error already.\nLatest error:", subError, "\nOriginal error:", error);
159
196
  }
160
197
  }
198
+ __name(postUncaughtErrorMessage, "postUncaughtErrorMessage");
161
199
  async function runFunction(jobUID, fn, args) {
162
200
  let syncResult;
163
201
  try {
@@ -169,17 +207,13 @@ function createExpose(implementation, self) {
169
207
  const resultType = isObservable(syncResult) ? "observable" : "promise";
170
208
  postJobStartMessage(jobUID, resultType);
171
209
  if (isObservable(syncResult)) {
172
- const subscription = syncResult.subscribe(
173
- (value) => postJobResultMessage(jobUID, false, serialize(value)),
174
- (error) => {
175
- postJobErrorMessage(jobUID, serialize(error));
176
- activeSubscriptions.delete(jobUID);
177
- },
178
- () => {
179
- postJobResultMessage(jobUID, true);
180
- activeSubscriptions.delete(jobUID);
181
- }
182
- );
210
+ const subscription = syncResult.subscribe((value) => postJobResultMessage(jobUID, false, serialize(value)), (error) => {
211
+ postJobErrorMessage(jobUID, serialize(error));
212
+ activeSubscriptions.delete(jobUID);
213
+ }, () => {
214
+ postJobResultMessage(jobUID, true);
215
+ activeSubscriptions.delete(jobUID);
216
+ });
183
217
  activeSubscriptions.set(jobUID, subscription);
184
218
  } else {
185
219
  try {
@@ -190,7 +224,8 @@ function createExpose(implementation, self) {
190
224
  }
191
225
  }
192
226
  }
193
- const expose2 = (exposed) => {
227
+ __name(runFunction, "runFunction");
228
+ const expose2 = /* @__PURE__ */ __name((exposed) => {
194
229
  if (!implementation.isWorkerRuntime()) {
195
230
  throw new Error("expose() called in the master thread.");
196
231
  }
@@ -226,7 +261,7 @@ function createExpose(implementation, self) {
226
261
  }
227
262
  }
228
263
  });
229
- };
264
+ }, "expose");
230
265
  if (typeof globalThis !== "undefined" && typeof self.addEventListener === "function" && implementation.isWorkerRuntime()) {
231
266
  self.addEventListener("error", (event) => {
232
267
  setTimeout(() => postUncaughtErrorMessage(isErrorEvent(event) ? event.error : event), 250);
@@ -250,6 +285,7 @@ function createExpose(implementation, self) {
250
285
  }
251
286
  return expose2;
252
287
  }
288
+ __name(createExpose, "createExpose");
253
289
 
254
290
  // src/worker/worker.node.ts
255
291
  var parentPort = assertEx(optionalParentPort, () => "Invariant violation: MessagePort to parent is not available.");
@@ -259,25 +295,26 @@ function assertMessagePort(port) {
259
295
  }
260
296
  return port;
261
297
  }
262
- var isWorkerRuntime = function isWorkerRuntime2() {
298
+ __name(assertMessagePort, "assertMessagePort");
299
+ var isWorkerRuntime = /* @__PURE__ */ __name(function isWorkerRuntime2() {
263
300
  return true;
264
- };
265
- var postMessageToMaster = function postMessageToMaster2(data, transferList) {
301
+ }, "isWorkerRuntime");
302
+ var postMessageToMaster = /* @__PURE__ */ __name(function postMessageToMaster2(data, transferList) {
266
303
  assertMessagePort(parentPort).postMessage(data, transferList);
267
- };
268
- var subscribeToMasterMessages = function subscribeToMasterMessages2(onMessage) {
304
+ }, "postMessageToMaster");
305
+ var subscribeToMasterMessages = /* @__PURE__ */ __name(function subscribeToMasterMessages2(onMessage) {
269
306
  if (!parentPort) {
270
307
  throw new Error("Invariant violation: MessagePort to parent is not available.");
271
308
  }
272
- const messageHandler = (message) => {
309
+ const messageHandler = /* @__PURE__ */ __name((message) => {
273
310
  onMessage(message);
274
- };
275
- const unsubscribe = () => {
311
+ }, "messageHandler");
312
+ const unsubscribe = /* @__PURE__ */ __name(() => {
276
313
  assertMessagePort(parentPort).off("message", messageHandler);
277
- };
314
+ }, "unsubscribe");
278
315
  assertMessagePort(parentPort).on("message", messageHandler);
279
316
  return unsubscribe;
280
- };
317
+ }, "subscribeToMasterMessages");
281
318
  var addEventListener = parentPort?.on.bind(parentPort);
282
319
  var postMessage = parentPort?.postMessage.bind(parentPort);
283
320
  var removeEventListener = parentPort?.off.bind(parentPort);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/worker/worker.node.ts","../../../src/worker/expose.ts","../../../src/serializers.ts","../../../src/common.ts","../../../src/symbols.ts","../../../src/transferable.ts"],"sourcesContent":["/* eslint-disable import-x/no-internal-modules */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// tslint:disable no-shadowed-variable\n\nimport type { MessagePort, TransferListItem } from 'node:worker_threads'\nimport { parentPort as optionalParentPort } from 'node:worker_threads'\n\nimport { assertEx } from '@xylabs/assert'\n\nimport type { AbstractedWorkerAPI } from '../types/worker.ts'\nimport { createExpose } from './expose.ts'\n\nconst parentPort = assertEx(optionalParentPort, () => 'Invariant violation: MessagePort to parent is not available.')\n\nfunction assertMessagePort(port: MessagePort | null | undefined): MessagePort {\n if (!port) {\n throw new Error('Invariant violation: MessagePort to parent is not available.')\n }\n return port\n}\n\nconst isWorkerRuntime: AbstractedWorkerAPI['isWorkerRuntime'] = function isWorkerRuntime() {\n return true // isMainThread\n}\n\nconst postMessageToMaster: AbstractedWorkerAPI['postMessageToMaster'] = function postMessageToMaster(data, transferList) {\n assertMessagePort(parentPort).postMessage(data, transferList as TransferListItem[])\n}\n\nconst subscribeToMasterMessages: AbstractedWorkerAPI['subscribeToMasterMessages'] = function subscribeToMasterMessages(onMessage) {\n if (!parentPort) {\n throw new Error('Invariant violation: MessagePort to parent is not available.')\n }\n const messageHandler = (message: any) => {\n onMessage(message)\n }\n const unsubscribe = () => {\n assertMessagePort(parentPort).off('message', messageHandler)\n }\n assertMessagePort(parentPort).on('message', messageHandler)\n return unsubscribe\n}\n\nconst addEventListener = parentPort?.on.bind(parentPort)\nconst postMessage = parentPort?.postMessage.bind(parentPort)\nconst removeEventListener = parentPort?.off.bind(parentPort)\n\nexport {\n addEventListener,\n postMessage,\n removeEventListener,\n}\n\nconst expose = createExpose({\n isWorkerRuntime, postMessageToMaster, subscribeToMasterMessages,\n}, {\n addEventListener, postMessage, removeEventListener,\n})\n\nexport {\n isWorkerRuntime,\n postMessageToMaster,\n subscribeToMasterMessages,\n}\n\nexport { registerSerializer } from '../common.ts'\nexport { Transfer } from '../transferable.ts'\nexport { expose }\n","/* eslint-disable import-x/no-internal-modules */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-floating-promises */\n\nimport isSomeObservable from 'is-observable-2-1-0'\nimport type { Observable, Subscription } from 'observable-fns'\n\nimport { deserialize, serialize } from '../common.ts'\nimport type { TransferDescriptor } from '../transferable.ts'\nimport { isTransferDescriptor } from '../transferable.ts'\nimport type {\n MasterJobCancelMessage,\n MasterJobRunMessage,\n SerializedError,\n WorkerInitMessage,\n WorkerJobErrorMessage,\n WorkerJobResultMessage,\n WorkerJobStartMessage,\n WorkerUncaughtErrorMessage,\n} from '../types/messages.ts'\nimport {\n MasterMessageType,\n WorkerMessageType,\n} from '../types/messages.ts'\nimport type {\n AbstractedWorkerAPI, WorkerFunction, WorkerModule,\n} from '../types/worker.ts'\nimport type { WorkerGlobalScope } from './WorkerGlobalScope.ts'\n\nconst isErrorEvent = (value: Event): value is ErrorEvent => value && (value as ErrorEvent).error\n\nexport function createExpose(implementation: AbstractedWorkerAPI, self: WorkerGlobalScope) {\n let exposeCalled = false\n\n const activeSubscriptions = new Map<number, Subscription<any>>()\n\n const isMasterJobCancelMessage = (thing: any): thing is MasterJobCancelMessage => thing && thing.type === MasterMessageType.cancel\n const isMasterJobRunMessage = (thing: any): thing is MasterJobRunMessage => thing && thing.type === MasterMessageType.run\n\n /**\n * There are issues with `is-observable` not recognizing zen-observable's instances.\n * We are using `observable-fns`, but it's based on zen-observable, too.\n */\n const isObservable = (thing: any): thing is Observable<any> => isSomeObservable(thing) || isZenObservable(thing)\n\n function isZenObservable(thing: any): thing is Observable<any> {\n return thing && typeof thing === 'object' && typeof thing.subscribe === 'function'\n }\n\n function deconstructTransfer(thing: any) {\n return isTransferDescriptor(thing) ? { payload: thing.send, transferables: thing.transferables } : { payload: thing, transferables: undefined }\n }\n\n function postFunctionInitMessage() {\n const initMessage: WorkerInitMessage = {\n exposed: { type: 'function' },\n type: WorkerMessageType.init,\n }\n implementation.postMessageToMaster(initMessage)\n }\n\n function postModuleInitMessage(methodNames: string[]) {\n const initMessage: WorkerInitMessage = {\n exposed: {\n methods: methodNames,\n type: 'module',\n },\n type: WorkerMessageType.init,\n }\n implementation.postMessageToMaster(initMessage)\n }\n\n function postJobErrorMessage(uid: number, rawError: Error | TransferDescriptor<Error>) {\n const { payload: error, transferables } = deconstructTransfer(rawError)\n const errorMessage: WorkerJobErrorMessage = {\n error: serialize(error) as any as SerializedError,\n type: WorkerMessageType.error,\n uid,\n }\n implementation.postMessageToMaster(errorMessage, transferables)\n }\n\n function postJobResultMessage(uid: number, completed: boolean, resultValue?: any) {\n const { payload, transferables } = deconstructTransfer(resultValue)\n const resultMessage: WorkerJobResultMessage = {\n complete: completed ? true : undefined,\n payload,\n type: WorkerMessageType.result,\n uid,\n }\n implementation.postMessageToMaster(resultMessage, transferables)\n }\n\n function postJobStartMessage(uid: number, resultType: WorkerJobStartMessage['resultType']) {\n const startMessage: WorkerJobStartMessage = {\n resultType,\n type: WorkerMessageType.running,\n uid,\n }\n implementation.postMessageToMaster(startMessage)\n }\n\n function postUncaughtErrorMessage(error: Error) {\n try {\n const errorMessage: WorkerUncaughtErrorMessage = {\n error: serialize(error) as any as SerializedError,\n type: WorkerMessageType.uncaughtError,\n }\n implementation.postMessageToMaster(errorMessage)\n } catch (subError) {\n // tslint:disable-next-line no-console\n console.error(\n 'Not reporting uncaught error back to master thread as it ' + 'occured while reporting an uncaught error already.' + '\\nLatest error:',\n subError,\n '\\nOriginal error:',\n error,\n )\n }\n }\n\n async function runFunction(jobUID: number, fn: WorkerFunction, args: any[]) {\n let syncResult: any\n\n try {\n syncResult = fn(...args)\n } catch (ex) {\n const error = ex as Error\n return postJobErrorMessage(jobUID, error)\n }\n\n const resultType = isObservable(syncResult) ? 'observable' : 'promise'\n postJobStartMessage(jobUID, resultType)\n\n if (isObservable(syncResult)) {\n const subscription = syncResult.subscribe(\n value => postJobResultMessage(jobUID, false, serialize(value)),\n (error) => {\n postJobErrorMessage(jobUID, serialize(error) as any)\n activeSubscriptions.delete(jobUID)\n },\n () => {\n postJobResultMessage(jobUID, true)\n activeSubscriptions.delete(jobUID)\n },\n )\n activeSubscriptions.set(jobUID, subscription)\n } else {\n try {\n const result = await syncResult\n postJobResultMessage(jobUID, true, serialize(result))\n } catch (error) {\n postJobErrorMessage(jobUID, serialize(error) as any)\n }\n }\n }\n\n /**\n * Expose a function or a module (an object whose values are functions)\n * to the main thread. Must be called exactly once in every worker thread\n * to signal its API to the main thread.\n *\n * @param exposed Function or object whose values are functions\n */\n const expose = (exposed: WorkerFunction | WorkerModule<any>) => {\n if (!implementation.isWorkerRuntime()) {\n throw new Error('expose() called in the master thread.')\n }\n if (exposeCalled) {\n throw new Error('expose() called more than once. This is not possible. Pass an object to expose() if you want to expose multiple functions.')\n }\n exposeCalled = true\n\n if (typeof exposed === 'function') {\n implementation.subscribeToMasterMessages((messageData: unknown) => {\n if (isMasterJobRunMessage(messageData) && !messageData.method) {\n runFunction(messageData.uid, exposed, messageData.args.map(deserialize))\n }\n })\n postFunctionInitMessage()\n } else if (typeof exposed === 'object' && exposed) {\n implementation.subscribeToMasterMessages((messageData: unknown) => {\n if (isMasterJobRunMessage(messageData) && messageData.method) {\n runFunction(messageData.uid, exposed[messageData.method], messageData.args.map(deserialize))\n }\n })\n\n const methodNames = Object.keys(exposed).filter(key => typeof exposed[key] === 'function')\n postModuleInitMessage(methodNames)\n } else {\n throw new Error(`Invalid argument passed to expose(). Expected a function or an object, got: ${exposed}`)\n }\n\n implementation.subscribeToMasterMessages((messageData: unknown) => {\n if (isMasterJobCancelMessage(messageData)) {\n const jobUID = messageData.uid\n const subscription = activeSubscriptions.get(jobUID)\n\n if (subscription) {\n subscription.unsubscribe()\n activeSubscriptions.delete(jobUID)\n }\n }\n })\n }\n\n if (typeof globalThis !== 'undefined' && typeof self.addEventListener === 'function' && implementation.isWorkerRuntime()) {\n self.addEventListener('error', (event) => {\n // Post with some delay, so the master had some time to subscribe to messages\n setTimeout(() => postUncaughtErrorMessage(isErrorEvent(event) ? event.error : event), 250)\n })\n self.addEventListener('unhandledrejection', (event) => {\n const error = (event as any).reason\n if (error && typeof (error as any).message === 'string') {\n // Post with some delay, so the master had some time to subscribe to messages\n setTimeout(() => postUncaughtErrorMessage(error), 250)\n }\n })\n }\n\n if (typeof process !== 'undefined' && typeof process.on === 'function' && implementation.isWorkerRuntime()) {\n process.on('uncaughtException', (error) => {\n // Post with some delay, so the master had some time to subscribe to messages\n setTimeout(() => postUncaughtErrorMessage(error), 250)\n })\n process.on('unhandledRejection', (error) => {\n if (error && typeof (error as any).message === 'string') {\n // Post with some delay, so the master had some time to subscribe to messages\n setTimeout(() => postUncaughtErrorMessage(error as any), 250)\n }\n })\n }\n\n return expose\n}\n","/* eslint-disable import-x/no-internal-modules */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { SerializedError } from './types/messages.ts'\n\nexport interface Serializer<Msg = JsonSerializable, Input = any> {\n deserialize(message: Msg): Input\n serialize(input: Input): Msg\n}\n\nexport interface SerializerImplementation<Msg = JsonSerializable, Input = any> {\n deserialize(message: Msg, defaultDeserialize: (msg: Msg) => Input): Input\n serialize(input: Input, defaultSerialize: (inp: Input) => Msg): Msg\n}\n\nexport function extendSerializer<MessageType, InputType = any>(\n extend: Serializer<MessageType, InputType>,\n implementation: SerializerImplementation<MessageType, InputType>,\n): Serializer<MessageType, InputType> {\n const fallbackDeserializer = extend.deserialize.bind(extend)\n const fallbackSerializer = extend.serialize.bind(extend)\n\n return {\n deserialize(message: MessageType): InputType {\n return implementation.deserialize(message, fallbackDeserializer)\n },\n\n serialize(input: InputType): MessageType {\n return implementation.serialize(input, fallbackSerializer)\n },\n }\n}\n\ntype JsonSerializablePrimitive = string | number | boolean | null\n\ntype JsonSerializableObject = {\n [key: string]: JsonSerializablePrimitive | JsonSerializablePrimitive[] | JsonSerializableObject | JsonSerializableObject[] | undefined\n}\n\nexport type JsonSerializable = JsonSerializablePrimitive | JsonSerializablePrimitive[] | JsonSerializableObject | JsonSerializableObject[]\n\nconst DefaultErrorSerializer: Serializer<SerializedError, Error> = {\n deserialize(message: SerializedError): Error {\n return Object.assign(new Error(message.message), {\n name: message.name,\n stack: message.stack,\n })\n },\n serialize(error: Error): SerializedError {\n return {\n __error_marker: '$$error',\n message: error.message,\n name: error.name,\n stack: error.stack,\n }\n },\n}\n\nconst isSerializedError = (thing: any): thing is SerializedError =>\n thing && typeof thing === 'object' && '__error_marker' in thing && thing.__error_marker === '$$error'\n\nexport const DefaultSerializer: Serializer<JsonSerializable> = {\n deserialize(message: JsonSerializable): any {\n return isSerializedError(message) ? DefaultErrorSerializer.deserialize(message) : message\n },\n serialize(input: any): JsonSerializable {\n return input instanceof Error ? (DefaultErrorSerializer.serialize(input) as any as JsonSerializable) : input\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n JsonSerializable, Serializer, SerializerImplementation,\n} from './serializers.ts'\nimport { DefaultSerializer, extendSerializer } from './serializers.ts'\n\ndeclare global {\n var registeredSerializer: Serializer<JsonSerializable>\n}\n\nglobalThis.registeredSerializer = globalThis.registeredSerializer ?? DefaultSerializer\n\nexport function registerSerializer(serializer: SerializerImplementation<JsonSerializable>) {\n globalThis.registeredSerializer = extendSerializer(globalThis.registeredSerializer, serializer)\n}\n\nexport function deserialize(message: JsonSerializable): any {\n return globalThis.registeredSerializer.deserialize(message)\n}\n\nexport function serialize(input: any): JsonSerializable {\n return globalThis.registeredSerializer.serialize(input)\n}\n","export const $errors = Symbol('thread.errors')\nexport const $events = Symbol('thread.events')\nexport const $terminate = Symbol('thread.terminate')\nexport const $transferable = Symbol('thread.transferable')\nexport const $worker = Symbol('thread.worker')\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { $transferable } from './symbols.ts'\n\nexport interface TransferDescriptor<T = any> {\n [$transferable]: true\n send: T\n transferables: Transferable[]\n}\n\nfunction isTransferable(thing: any): thing is Transferable {\n if (!thing || typeof thing !== 'object') return false\n // Don't check too thoroughly, since the list of transferable things in JS might grow over time\n return true\n}\n\nexport function isTransferDescriptor(thing: any): thing is TransferDescriptor {\n return thing && typeof thing === 'object' && thing[$transferable]\n}\n\n/**\n * Mark a transferable object as such, so it will no be serialized and\n * deserialized on messaging with the main thread, but to transfer\n * ownership of it to the receiving thread.\n *\n * Only works with array buffers, message ports and few more special\n * types of objects, but it's much faster than serializing and\n * deserializing them.\n *\n * Note:\n * The transferable object cannot be accessed by this thread again\n * unless the receiving thread transfers it back again!\n *\n * @param transferable Array buffer, message port or similar.\n * @see <https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast>\n */\nexport function Transfer(transferable: Transferable): TransferDescriptor\n\n/**\n * Mark transferable objects within an arbitrary object or array as\n * being a transferable object. They will then not be serialized\n * and deserialized on messaging with the main thread, but ownership\n * of them will be tranferred to the receiving thread.\n *\n * Only array buffers, message ports and few more special types of\n * objects can be transferred, but it's much faster than serializing and\n * deserializing them.\n *\n * Note:\n * The transferable object cannot be accessed by this thread again\n * unless the receiving thread transfers it back again!\n *\n * @param transferable Array buffer, message port or similar.\n * @see <https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast>\n */\nexport function Transfer<T>(payload: T, transferables: Transferable[]): TransferDescriptor\n\nexport function Transfer<T>(payload: T, transferables?: Transferable[]): TransferDescriptor {\n console.log('Transfer')\n if (!transferables) {\n if (!isTransferable(payload)) throw new Error('Not transferable')\n transferables = [payload]\n }\n\n return {\n [$transferable]: true,\n send: payload,\n transferables,\n }\n}\n"],"mappings":"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","names":["expose","isWorkerRuntime","postMessageToMaster","subscribeToMasterMessages"]}
1
+ {"version":3,"sources":["../../../src/worker/worker.node.ts","../../../src/worker/expose.ts","../../../src/serializers.ts","../../../src/common.ts","../../../src/symbols.ts","../../../src/transferable.ts","../../../src/types/messages.ts"],"sourcesContent":["/* eslint-disable import-x/no-internal-modules */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// tslint:disable no-shadowed-variable\n\nimport type { MessagePort, TransferListItem } from 'node:worker_threads'\nimport { parentPort as optionalParentPort } from 'node:worker_threads'\n\nimport { assertEx } from '@xylabs/assert'\n\nimport type { AbstractedWorkerAPI } from '../types/worker.ts'\nimport { createExpose } from './expose.ts'\n\nconst parentPort = assertEx(optionalParentPort, () => 'Invariant violation: MessagePort to parent is not available.')\n\nfunction assertMessagePort(port: MessagePort | null | undefined): MessagePort {\n if (!port) {\n throw new Error('Invariant violation: MessagePort to parent is not available.')\n }\n return port\n}\n\nconst isWorkerRuntime: AbstractedWorkerAPI['isWorkerRuntime'] = function isWorkerRuntime() {\n return true // isMainThread\n}\n\nconst postMessageToMaster: AbstractedWorkerAPI['postMessageToMaster'] = function postMessageToMaster(data, transferList) {\n assertMessagePort(parentPort).postMessage(data, transferList as TransferListItem[])\n}\n\nconst subscribeToMasterMessages: AbstractedWorkerAPI['subscribeToMasterMessages'] = function subscribeToMasterMessages(onMessage) {\n if (!parentPort) {\n throw new Error('Invariant violation: MessagePort to parent is not available.')\n }\n const messageHandler = (message: any) => {\n onMessage(message)\n }\n const unsubscribe = () => {\n assertMessagePort(parentPort).off('message', messageHandler)\n }\n assertMessagePort(parentPort).on('message', messageHandler)\n return unsubscribe\n}\n\nconst addEventListener = parentPort?.on.bind(parentPort)\nconst postMessage = parentPort?.postMessage.bind(parentPort)\nconst removeEventListener = parentPort?.off.bind(parentPort)\n\nexport {\n addEventListener,\n postMessage,\n removeEventListener,\n}\n\nconst expose = createExpose({\n isWorkerRuntime, postMessageToMaster, subscribeToMasterMessages,\n}, {\n addEventListener, postMessage, removeEventListener,\n})\n\nexport {\n isWorkerRuntime,\n postMessageToMaster,\n subscribeToMasterMessages,\n}\n\nexport { registerSerializer } from '../common.ts'\nexport { Transfer } from '../transferable.ts'\nexport { expose }\n","/* eslint-disable import-x/no-internal-modules */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-floating-promises */\n\nimport isSomeObservable from 'is-observable-2-1-0'\nimport type { Observable, Subscription } from 'observable-fns'\n\nimport { deserialize, serialize } from '../common.ts'\nimport type { TransferDescriptor } from '../transferable.ts'\nimport { isTransferDescriptor } from '../transferable.ts'\nimport type {\n MasterJobCancelMessage,\n MasterJobRunMessage,\n SerializedError,\n WorkerInitMessage,\n WorkerJobErrorMessage,\n WorkerJobResultMessage,\n WorkerJobStartMessage,\n WorkerUncaughtErrorMessage,\n} from '../types/messages.ts'\nimport {\n MasterMessageType,\n WorkerMessageType,\n} from '../types/messages.ts'\nimport type {\n AbstractedWorkerAPI, WorkerFunction, WorkerModule,\n} from '../types/worker.ts'\nimport type { WorkerGlobalScope } from './WorkerGlobalScope.ts'\n\nconst isErrorEvent = (value: Event): value is ErrorEvent => value && (value as ErrorEvent).error\n\nexport function createExpose(implementation: AbstractedWorkerAPI, self: WorkerGlobalScope) {\n let exposeCalled = false\n\n const activeSubscriptions = new Map<number, Subscription<any>>()\n\n const isMasterJobCancelMessage = (thing: any): thing is MasterJobCancelMessage => thing && thing.type === MasterMessageType.cancel\n const isMasterJobRunMessage = (thing: any): thing is MasterJobRunMessage => thing && thing.type === MasterMessageType.run\n\n /**\n * There are issues with `is-observable` not recognizing zen-observable's instances.\n * We are using `observable-fns`, but it's based on zen-observable, too.\n */\n const isObservable = (thing: any): thing is Observable<any> => isSomeObservable(thing) || isZenObservable(thing)\n\n function isZenObservable(thing: any): thing is Observable<any> {\n return thing && typeof thing === 'object' && typeof thing.subscribe === 'function'\n }\n\n function deconstructTransfer(thing: any) {\n return isTransferDescriptor(thing) ? { payload: thing.send, transferables: thing.transferables } : { payload: thing, transferables: undefined }\n }\n\n function postFunctionInitMessage() {\n const initMessage: WorkerInitMessage = {\n exposed: { type: 'function' },\n type: WorkerMessageType.init,\n }\n implementation.postMessageToMaster(initMessage)\n }\n\n function postModuleInitMessage(methodNames: string[]) {\n const initMessage: WorkerInitMessage = {\n exposed: {\n methods: methodNames,\n type: 'module',\n },\n type: WorkerMessageType.init,\n }\n implementation.postMessageToMaster(initMessage)\n }\n\n function postJobErrorMessage(uid: number, rawError: Error | TransferDescriptor<Error>) {\n const { payload: error, transferables } = deconstructTransfer(rawError)\n const errorMessage: WorkerJobErrorMessage = {\n error: serialize(error) as any as SerializedError,\n type: WorkerMessageType.error,\n uid,\n }\n implementation.postMessageToMaster(errorMessage, transferables)\n }\n\n function postJobResultMessage(uid: number, completed: boolean, resultValue?: any) {\n const { payload, transferables } = deconstructTransfer(resultValue)\n const resultMessage: WorkerJobResultMessage = {\n complete: completed ? true : undefined,\n payload,\n type: WorkerMessageType.result,\n uid,\n }\n implementation.postMessageToMaster(resultMessage, transferables)\n }\n\n function postJobStartMessage(uid: number, resultType: WorkerJobStartMessage['resultType']) {\n const startMessage: WorkerJobStartMessage = {\n resultType,\n type: WorkerMessageType.running,\n uid,\n }\n implementation.postMessageToMaster(startMessage)\n }\n\n function postUncaughtErrorMessage(error: Error) {\n try {\n const errorMessage: WorkerUncaughtErrorMessage = {\n error: serialize(error) as any as SerializedError,\n type: WorkerMessageType.uncaughtError,\n }\n implementation.postMessageToMaster(errorMessage)\n } catch (subError) {\n // tslint:disable-next-line no-console\n console.error(\n 'Not reporting uncaught error back to master thread as it ' + 'occured while reporting an uncaught error already.' + '\\nLatest error:',\n subError,\n '\\nOriginal error:',\n error,\n )\n }\n }\n\n async function runFunction(jobUID: number, fn: WorkerFunction, args: any[]) {\n let syncResult: any\n\n try {\n syncResult = fn(...args)\n } catch (ex) {\n const error = ex as Error\n return postJobErrorMessage(jobUID, error)\n }\n\n const resultType = isObservable(syncResult) ? 'observable' : 'promise'\n postJobStartMessage(jobUID, resultType)\n\n if (isObservable(syncResult)) {\n const subscription = syncResult.subscribe(\n value => postJobResultMessage(jobUID, false, serialize(value)),\n (error) => {\n postJobErrorMessage(jobUID, serialize(error) as any)\n activeSubscriptions.delete(jobUID)\n },\n () => {\n postJobResultMessage(jobUID, true)\n activeSubscriptions.delete(jobUID)\n },\n )\n activeSubscriptions.set(jobUID, subscription)\n } else {\n try {\n const result = await syncResult\n postJobResultMessage(jobUID, true, serialize(result))\n } catch (error) {\n postJobErrorMessage(jobUID, serialize(error) as any)\n }\n }\n }\n\n /**\n * Expose a function or a module (an object whose values are functions)\n * to the main thread. Must be called exactly once in every worker thread\n * to signal its API to the main thread.\n *\n * @param exposed Function or object whose values are functions\n */\n const expose = (exposed: WorkerFunction | WorkerModule<any>) => {\n if (!implementation.isWorkerRuntime()) {\n throw new Error('expose() called in the master thread.')\n }\n if (exposeCalled) {\n throw new Error('expose() called more than once. This is not possible. Pass an object to expose() if you want to expose multiple functions.')\n }\n exposeCalled = true\n\n if (typeof exposed === 'function') {\n implementation.subscribeToMasterMessages((messageData: unknown) => {\n if (isMasterJobRunMessage(messageData) && !messageData.method) {\n runFunction(messageData.uid, exposed, messageData.args.map(deserialize))\n }\n })\n postFunctionInitMessage()\n } else if (typeof exposed === 'object' && exposed) {\n implementation.subscribeToMasterMessages((messageData: unknown) => {\n if (isMasterJobRunMessage(messageData) && messageData.method) {\n runFunction(messageData.uid, exposed[messageData.method], messageData.args.map(deserialize))\n }\n })\n\n const methodNames = Object.keys(exposed).filter(key => typeof exposed[key] === 'function')\n postModuleInitMessage(methodNames)\n } else {\n throw new Error(`Invalid argument passed to expose(). Expected a function or an object, got: ${exposed}`)\n }\n\n implementation.subscribeToMasterMessages((messageData: unknown) => {\n if (isMasterJobCancelMessage(messageData)) {\n const jobUID = messageData.uid\n const subscription = activeSubscriptions.get(jobUID)\n\n if (subscription) {\n subscription.unsubscribe()\n activeSubscriptions.delete(jobUID)\n }\n }\n })\n }\n\n if (typeof globalThis !== 'undefined' && typeof self.addEventListener === 'function' && implementation.isWorkerRuntime()) {\n self.addEventListener('error', (event) => {\n // Post with some delay, so the master had some time to subscribe to messages\n setTimeout(() => postUncaughtErrorMessage(isErrorEvent(event) ? event.error : event), 250)\n })\n self.addEventListener('unhandledrejection', (event) => {\n const error = (event as any).reason\n if (error && typeof (error as any).message === 'string') {\n // Post with some delay, so the master had some time to subscribe to messages\n setTimeout(() => postUncaughtErrorMessage(error), 250)\n }\n })\n }\n\n if (typeof process !== 'undefined' && typeof process.on === 'function' && implementation.isWorkerRuntime()) {\n process.on('uncaughtException', (error) => {\n // Post with some delay, so the master had some time to subscribe to messages\n setTimeout(() => postUncaughtErrorMessage(error), 250)\n })\n process.on('unhandledRejection', (error) => {\n if (error && typeof (error as any).message === 'string') {\n // Post with some delay, so the master had some time to subscribe to messages\n setTimeout(() => postUncaughtErrorMessage(error as any), 250)\n }\n })\n }\n\n return expose\n}\n","/* eslint-disable import-x/no-internal-modules */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { SerializedError } from './types/messages.ts'\n\nexport interface Serializer<Msg = JsonSerializable, Input = any> {\n deserialize(message: Msg): Input\n serialize(input: Input): Msg\n}\n\nexport interface SerializerImplementation<Msg = JsonSerializable, Input = any> {\n deserialize(message: Msg, defaultDeserialize: (msg: Msg) => Input): Input\n serialize(input: Input, defaultSerialize: (inp: Input) => Msg): Msg\n}\n\nexport function extendSerializer<MessageType, InputType = any>(\n extend: Serializer<MessageType, InputType>,\n implementation: SerializerImplementation<MessageType, InputType>,\n): Serializer<MessageType, InputType> {\n const fallbackDeserializer = extend.deserialize.bind(extend)\n const fallbackSerializer = extend.serialize.bind(extend)\n\n return {\n deserialize(message: MessageType): InputType {\n return implementation.deserialize(message, fallbackDeserializer)\n },\n\n serialize(input: InputType): MessageType {\n return implementation.serialize(input, fallbackSerializer)\n },\n }\n}\n\ntype JsonSerializablePrimitive = string | number | boolean | null\n\ntype JsonSerializableObject = {\n [key: string]: JsonSerializablePrimitive | JsonSerializablePrimitive[] | JsonSerializableObject | JsonSerializableObject[] | undefined\n}\n\nexport type JsonSerializable = JsonSerializablePrimitive | JsonSerializablePrimitive[] | JsonSerializableObject | JsonSerializableObject[]\n\nconst DefaultErrorSerializer: Serializer<SerializedError, Error> = {\n deserialize(message: SerializedError): Error {\n return Object.assign(new Error(message.message), {\n name: message.name,\n stack: message.stack,\n })\n },\n serialize(error: Error): SerializedError {\n return {\n __error_marker: '$$error',\n message: error.message,\n name: error.name,\n stack: error.stack,\n }\n },\n}\n\nconst isSerializedError = (thing: any): thing is SerializedError =>\n thing && typeof thing === 'object' && '__error_marker' in thing && thing.__error_marker === '$$error'\n\nexport const DefaultSerializer: Serializer<JsonSerializable> = {\n deserialize(message: JsonSerializable): any {\n return isSerializedError(message) ? DefaultErrorSerializer.deserialize(message) : message\n },\n serialize(input: any): JsonSerializable {\n return input instanceof Error ? (DefaultErrorSerializer.serialize(input) as any as JsonSerializable) : input\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type {\n JsonSerializable, Serializer, SerializerImplementation,\n} from './serializers.ts'\nimport { DefaultSerializer, extendSerializer } from './serializers.ts'\n\ndeclare global {\n var registeredSerializer: Serializer<JsonSerializable>\n}\n\nglobalThis.registeredSerializer = globalThis.registeredSerializer ?? DefaultSerializer\n\nexport function registerSerializer(serializer: SerializerImplementation<JsonSerializable>) {\n globalThis.registeredSerializer = extendSerializer(globalThis.registeredSerializer, serializer)\n}\n\nexport function deserialize(message: JsonSerializable): any {\n return globalThis.registeredSerializer.deserialize(message)\n}\n\nexport function serialize(input: any): JsonSerializable {\n return globalThis.registeredSerializer.serialize(input)\n}\n","export const $errors = Symbol('thread.errors')\nexport const $events = Symbol('thread.events')\nexport const $terminate = Symbol('thread.terminate')\nexport const $transferable = Symbol('thread.transferable')\nexport const $worker = Symbol('thread.worker')\n","/// <reference lib=\"webworker\" />\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { $transferable } from './symbols.ts'\n\nexport interface TransferDescriptor<T = any> {\n [$transferable]: true\n send: T\n transferables: Transferable[]\n}\n\nfunction isTransferable(thing: any): thing is Transferable {\n if (!thing || typeof thing !== 'object') return false\n // Don't check too thoroughly, since the list of transferable things in JS might grow over time\n return true\n}\n\nexport function isTransferDescriptor(thing: any): thing is TransferDescriptor {\n return thing && typeof thing === 'object' && thing[$transferable]\n}\n\n/**\n * Mark a transferable object as such, so it will no be serialized and\n * deserialized on messaging with the main thread, but to transfer\n * ownership of it to the receiving thread.\n *\n * Only works with array buffers, message ports and few more special\n * types of objects, but it's much faster than serializing and\n * deserializing them.\n *\n * Note:\n * The transferable object cannot be accessed by this thread again\n * unless the receiving thread transfers it back again!\n *\n * @param transferable Array buffer, message port or similar.\n * @see <https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast>\n */\nexport function Transfer(transferable: Transferable): TransferDescriptor\n\n/**\n * Mark transferable objects within an arbitrary object or array as\n * being a transferable object. They will then not be serialized\n * and deserialized on messaging with the main thread, but ownership\n * of them will be tranferred to the receiving thread.\n *\n * Only array buffers, message ports and few more special types of\n * objects can be transferred, but it's much faster than serializing and\n * deserializing them.\n *\n * Note:\n * The transferable object cannot be accessed by this thread again\n * unless the receiving thread transfers it back again!\n *\n * @param transferable Array buffer, message port or similar.\n * @see <https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast>\n */\nexport function Transfer<T>(payload: T, transferables: Transferable[]): TransferDescriptor\n\nexport function Transfer<T>(payload: T, transferables?: Transferable[]): TransferDescriptor {\n console.log('Transfer')\n if (!transferables) {\n if (!isTransferable(payload)) throw new Error('Not transferable')\n transferables = [payload]\n }\n\n return {\n [$transferable]: true,\n send: payload,\n transferables,\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/member-ordering */\nexport interface SerializedError {\n __error_marker: '$$error'\n message: string\n name: string\n stack?: string\n}\n\n/////////////////////////////\n// Messages sent by master:\n\nexport enum MasterMessageType {\n cancel = 'cancel',\n run = 'run',\n}\n\nexport type MasterJobCancelMessage = {\n type: MasterMessageType.cancel\n uid: number\n}\n\nexport type MasterJobRunMessage = {\n type: MasterMessageType.run\n uid: number\n method?: string\n args: any[]\n}\n\n////////////////////////////\n// Messages sent by worker:\n\nexport enum WorkerMessageType {\n error = 'error',\n init = 'init',\n result = 'result',\n running = 'running',\n uncaughtError = 'uncaughtError',\n}\n\nexport type WorkerUncaughtErrorMessage = {\n type: WorkerMessageType.uncaughtError\n error: {\n message: string\n name: string\n stack?: string\n }\n}\n\nexport type WorkerInitMessage = {\n type: WorkerMessageType.init\n exposed: { type: 'function' } | { type: 'module'; methods: string[] }\n}\n\nexport type WorkerJobErrorMessage = {\n type: WorkerMessageType.error\n uid: number\n error: SerializedError\n}\n\nexport type WorkerJobResultMessage = {\n type: WorkerMessageType.result\n uid: number\n complete?: true\n payload?: any\n}\n\nexport type WorkerJobStartMessage = {\n type: WorkerMessageType.running\n uid: number\n resultType: 'observable' | 'promise'\n}\n"],"mappings":"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","names":["parentPort","optionalParentPort","assertEx","isSomeObservable","extendSerializer","extend","implementation","fallbackDeserializer","deserialize","bind","fallbackSerializer","serialize","message","input","DefaultErrorSerializer","Object","assign","Error","name","stack","error","__error_marker","isSerializedError","thing","DefaultSerializer","globalThis","registeredSerializer","DefaultSerializer","registerSerializer","serializer","extendSerializer","deserialize","message","serialize","input","$errors","Symbol","$events","$terminate","$transferable","$worker","isTransferable","thing","isTransferDescriptor","$transferable","Transfer","payload","transferables","console","log","Error","send","MasterMessageType","WorkerMessageType","isErrorEvent","value","error","createExpose","implementation","self","exposeCalled","activeSubscriptions","Map","isMasterJobCancelMessage","thing","type","MasterMessageType","cancel","isMasterJobRunMessage","run","isObservable","isSomeObservable","isZenObservable","subscribe","deconstructTransfer","isTransferDescriptor","payload","send","transferables","undefined","postFunctionInitMessage","initMessage","exposed","WorkerMessageType","init","postMessageToMaster","postModuleInitMessage","methodNames","methods","postJobErrorMessage","uid","rawError","errorMessage","serialize","postJobResultMessage","completed","resultValue","resultMessage","complete","result","postJobStartMessage","resultType","startMessage","running","postUncaughtErrorMessage","uncaughtError","subError","console","runFunction","jobUID","fn","args","syncResult","ex","subscription","delete","set","expose","isWorkerRuntime","Error","subscribeToMasterMessages","messageData","method","map","deserialize","Object","keys","filter","key","get","unsubscribe","globalThis","addEventListener","event","setTimeout","reason","message","process","on","parentPort","assertEx","optionalParentPort","assertMessagePort","port","Error","isWorkerRuntime","postMessageToMaster","data","transferList","postMessage","subscribeToMasterMessages","onMessage","messageHandler","message","unsubscribe","off","on","addEventListener","bind","removeEventListener","expose","createExpose","isWorkerRuntime","postMessageToMaster","subscribeToMasterMessages","addEventListener","postMessage","removeEventListener"]}
@@ -0,0 +1,12 @@
1
+ type UnsubscribeFn = () => void;
2
+ interface AbstractedWorkerAPI {
3
+ isWorkerRuntime(): boolean;
4
+ postMessageToMaster(message: any, transferList?: Transferable[]): void;
5
+ subscribeToMasterMessages(onMessage: (data: any) => void): UnsubscribeFn;
6
+ }
7
+ type WorkerFunction = ((...args: any[]) => any) | (() => any);
8
+ type WorkerModule<Keys extends string> = {
9
+ [key in Keys]: WorkerFunction;
10
+ };
11
+
12
+ export type { AbstractedWorkerAPI as A, WorkerFunction as W, WorkerModule as a };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/threads",
3
- "version": "4.12.44",
3
+ "version": "4.13.1",
4
4
  "description": "Web workers & worker threads as simple as a function call",
5
5
  "keywords": [
6
6
  "thread",
@@ -28,97 +28,104 @@
28
28
  "exports": {
29
29
  ".": {
30
30
  "browser": {
31
- "types": "./dist/types/index-browser.d.ts",
31
+ "types": "./dist/browser/index-browser.d.ts",
32
32
  "import": "./dist/browser/index-browser.mjs"
33
33
  },
34
34
  "node": {
35
- "types": "./dist/types/index-node.d.ts",
35
+ "types": "./dist/node/index-node.d.ts",
36
36
  "import": "./dist/node/index-node.mjs"
37
37
  }
38
38
  },
39
39
  "./implementation": {
40
40
  "browser": {
41
- "types": "./dist/types/master/implementation.browser.d.ts",
41
+ "types": "./dist/browser/master/implementation.browser.d.ts",
42
42
  "import": "./dist/browser/master/implementation.browser.mjs"
43
43
  },
44
44
  "node": {
45
- "types": "./dist/types/master/implementation.node.d.ts",
45
+ "types": "./dist/node/master/implementation.node.d.ts",
46
46
  "import": "./dist/node/master/implementation.node.mjs"
47
47
  }
48
48
  },
49
49
  "./master": {
50
50
  "browser": {
51
- "types": "./dist/types/master/index-browser.d.ts",
51
+ "types": "./dist/browser/master/index-browser.d.ts",
52
52
  "import": "./dist/browser/master/index-browser.mjs"
53
53
  },
54
54
  "node": {
55
- "types": "./dist/types/master/index-node.d.ts",
55
+ "types": "./dist/node/master/index-node.d.ts",
56
56
  "import": "./dist/node/master/index-node.mjs"
57
57
  }
58
58
  },
59
59
  "./spawn": {
60
- "types": "./dist/types/master/spawn.d.ts",
60
+ "types": "./dist/neutral/master/spawn.d.ts",
61
61
  "import": "./dist/neutral/master/spawn.mjs"
62
62
  },
63
63
  "./thread": {
64
- "types": "./dist/types/master/thread.d.ts",
64
+ "types": "./dist/neutral/master/thread.d.ts",
65
65
  "import": "./dist/neutral/master/thread.mjs"
66
66
  },
67
67
  "./messenger": {
68
- "types": "./dist/types/types/messages.d.ts"
68
+ "types": "./dist/neutral/types/messages.d.ts"
69
69
  },
70
70
  "./observable": {
71
- "types": "./dist/types/observable.d.ts",
71
+ "types": "./dist/neutral/observable.d.ts",
72
72
  "import": "./dist/neutral/observable.mjs"
73
73
  },
74
74
  "./pool": {
75
75
  "browser": {
76
- "types": "./dist/types/master/pool-browser.d.ts",
76
+ "types": "./dist/browser/master/pool-browser.d.ts",
77
77
  "import": "./dist/browser/master/pool-browser.mjs"
78
78
  },
79
79
  "node": {
80
- "types": "./dist/types/master/pool-node.d.ts",
80
+ "types": "./dist/node/master/pool-node.d.ts",
81
81
  "import": "./dist/node/master/pool-node.mjs"
82
82
  }
83
83
  },
84
84
  "./observable-promise": {
85
- "types": "./dist/types/observable-promise.d.ts",
85
+ "types": "./dist/neutral/observable-promise.d.ts",
86
86
  "import": "./dist/neutral/observable-promise.mjs"
87
87
  },
88
88
  "./register": {
89
- "types": "./dist/types/master/register.d.ts",
89
+ "types": "./dist/neutral/master/register.d.ts",
90
90
  "import": "./dist/neutral/master/register.mjs"
91
91
  },
92
92
  "./worker": {
93
93
  "browser": {
94
- "types": "./dist/types/worker/worker.browser.d.ts",
94
+ "types": "./dist/browser/worker/worker.browser.d.ts",
95
95
  "import": "./dist/browser/worker/worker.browser.mjs"
96
96
  },
97
97
  "node": {
98
- "types": "./dist/types/worker/worker.node.d.ts",
98
+ "types": "./dist/node/worker/worker.node.d.ts",
99
99
  "import": "./dist/node/worker/worker.node.mjs"
100
100
  }
101
101
  }
102
102
  },
103
103
  "module": "dist/browser/index-browser.mjs",
104
- "types": "dist/types/index-browser.d.ts",
104
+ "types": "dist/browser/index-browser.d.ts",
105
105
  "files": [
106
106
  "dist",
107
107
  "src",
108
108
  "README.md",
109
109
  "LICENSE"
110
110
  ],
111
+ "scripts": {
112
+ "package-compile": "yarn package-compile-tsup",
113
+ "package-compile-tsup": "tsup --config tsup.browser.config.ts && tsup --config tsup.node.config.ts && tsup --config tsup.neutral.config.ts"
114
+ },
111
115
  "dependencies": {
112
- "@xylabs/assert": "^4.12.44",
116
+ "@xylabs/assert": "^4.13.1",
113
117
  "debug": "^4.4.1",
114
118
  "is-observable-2-1-0": "npm:is-observable@2.1.0",
115
119
  "observable-fns": "^0.6.1"
116
120
  },
117
121
  "devDependencies": {
122
+ "@swc/core": "^1.12.11",
118
123
  "@types/debug": "^4.1.12",
119
- "@types/node": "^24.0.10",
120
- "@xylabs/eslint-config-flat": "^6.5.12",
121
- "@xylabs/ts-scripts-yarn3": "^6.5.12",
124
+ "@types/node": "^24.0.13",
125
+ "@xylabs/eslint-config-flat": "^7.0.0-rc.7",
126
+ "@xylabs/ts-scripts-yarn3": "^7.0.0-rc.7",
127
+ "tiny-worker": "^2.3.0",
128
+ "tsup": "^8.5.0",
122
129
  "typescript": "^5.8.3"
123
130
  },
124
131
  "publishConfig": {
@@ -1,3 +1,5 @@
1
+ /// <reference lib="webworker" />
2
+
1
3
  /* eslint-disable import-x/no-internal-modules */
2
4
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
5
  /*
@@ -1,3 +1,5 @@
1
+ /// <reference lib="webworker" />
2
+
1
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
4
  import { $transferable } from './symbols.ts'
3
5
 
@@ -1,3 +1,4 @@
1
+ /// <reference lib="webworker" />
1
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
3
  type UnsubscribeFn = () => void
3
4
 
@@ -1,3 +1,4 @@
1
+ /// <reference lib="webworker" />
1
2
  export interface WorkerGlobalScope {
2
3
  addEventListener(eventName: string, listener: (event: Event) => void): void
3
4
  postMessage(message: unknown, transferList?: Readonly<Transferable[]>): void
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable import-x/no-internal-modules */
2
2
 
3
- /// <reference lib="webworker" />
3
+ /// <reference lib="dom" />
4
4
  // tslint:disable no-shadowed-variable
5
5
 
6
6
  import type { AbstractedWorkerAPI } from '../types/worker.ts'
@@ -1,8 +0,0 @@
1
- import type { JsonSerializable, Serializer, SerializerImplementation } from './serializers.ts';
2
- declare global {
3
- var registeredSerializer: Serializer<JsonSerializable>;
4
- }
5
- export declare function registerSerializer(serializer: SerializerImplementation<JsonSerializable>): void;
6
- export declare function deserialize(message: JsonSerializable): any;
7
- export declare function serialize(input: any): JsonSerializable;
8
- //# sourceMappingURL=common.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAAE,UAAU,EAAE,wBAAwB,EACvD,MAAM,kBAAkB,CAAA;AAGzB,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,oBAAoB,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAA;CACvD;AAID,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,wBAAwB,CAAC,gBAAgB,CAAC,QAExF;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG,CAE1D;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,gBAAgB,CAEtD"}
@@ -1,9 +0,0 @@
1
- export { registerSerializer } from './common.ts';
2
- export * from './master/index-browser.ts';
3
- export type { QueuedTask } from './master/pool-node.ts';
4
- export type { ExposedToThreadType as ExposedAs } from './master/spawn.ts';
5
- export type { JsonSerializable, Serializer, SerializerImplementation, } from './serializers.ts';
6
- export { DefaultSerializer } from './serializers.ts';
7
- export type { TransferDescriptor } from './transferable.ts';
8
- export { Transfer } from './transferable.ts';
9
- //# sourceMappingURL=index-browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-browser.d.ts","sourceRoot":"","sources":["../../src/index-browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,cAAc,2BAA2B,CAAA;AACzC,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACvD,YAAY,EAAE,mBAAmB,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACzE,YAAY,EACV,gBAAgB,EAAE,UAAU,EAAE,wBAAwB,GACvD,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA"}
@@ -1,9 +0,0 @@
1
- export { registerSerializer } from './common.ts';
2
- export * from './master/index-node.ts';
3
- export type { QueuedTask } from './master/pool-node.ts';
4
- export type { ExposedToThreadType as ExposedAs } from './master/spawn.ts';
5
- export type { JsonSerializable, Serializer, SerializerImplementation, } from './serializers.ts';
6
- export { DefaultSerializer } from './serializers.ts';
7
- export type { TransferDescriptor } from './transferable.ts';
8
- export { Transfer } from './transferable.ts';
9
- //# sourceMappingURL=index-node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-node.d.ts","sourceRoot":"","sources":["../../src/index-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,cAAc,wBAAwB,CAAA;AACtC,YAAY,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACvD,YAAY,EAAE,mBAAmB,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACzE,YAAY,EACV,gBAAgB,EAAE,UAAU,EAAE,wBAAwB,GACvD,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA"}
@@ -1,3 +0,0 @@
1
- declare function getBundleURLCached(): string;
2
- export { getBundleURLCached as getBundleURL };
3
- //# sourceMappingURL=get-bundle-url.browser.d.ts.map