@xylabs/threads 4.12.43 → 4.13.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.
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,9 +1,166 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
1
4
  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
5
  get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
6
  }) : x)(function(x) {
4
7
  if (typeof require !== "undefined") return require.apply(this, arguments);
5
8
  throw Error('Dynamic require of "' + x + '" is not supported');
6
9
  });
10
+ var __commonJS = (cb, mod) => function __require2() {
11
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
12
+ };
13
+
14
+ // ../../node_modules/.store/tiny-worker-npm-2.3.0-38c7100e1d/package/lib/index.js
15
+ var require_lib = __commonJS({
16
+ "../../node_modules/.store/tiny-worker-npm-2.3.0-38c7100e1d/package/lib/index.js"(exports, module) {
17
+ "use strict";
18
+ var _createClass = /* @__PURE__ */ function() {
19
+ function defineProperties(target, props) {
20
+ for (var i = 0; i < props.length; i++) {
21
+ var descriptor = props[i];
22
+ descriptor.enumerable = descriptor.enumerable || false;
23
+ descriptor.configurable = true;
24
+ if ("value" in descriptor) descriptor.writable = true;
25
+ Object.defineProperty(target, descriptor.key, descriptor);
26
+ }
27
+ }
28
+ __name(defineProperties, "defineProperties");
29
+ return function(Constructor, protoProps, staticProps) {
30
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
31
+ if (staticProps) defineProperties(Constructor, staticProps);
32
+ return Constructor;
33
+ };
34
+ }();
35
+ function _classCallCheck(instance, Constructor) {
36
+ if (!(instance instanceof Constructor)) {
37
+ throw new TypeError("Cannot call a class as a function");
38
+ }
39
+ }
40
+ __name(_classCallCheck, "_classCallCheck");
41
+ var path2 = __require("path");
42
+ var fork = __require("child_process").fork;
43
+ var worker = path2.join(__dirname, "worker.js");
44
+ var events = /^(error|message)$/;
45
+ var defaultPorts = {
46
+ inspect: 9229,
47
+ debug: 5858
48
+ };
49
+ var range = {
50
+ min: 1,
51
+ max: 300
52
+ };
53
+ var Worker3 = function() {
54
+ function Worker4(arg) {
55
+ var _this = this;
56
+ var args = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
57
+ var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
58
+ cwd: process.cwd()
59
+ };
60
+ _classCallCheck(this, Worker4);
61
+ var isfn = typeof arg === "function", input = isfn ? arg.toString() : arg;
62
+ if (!options.cwd) {
63
+ options.cwd = process.cwd();
64
+ }
65
+ var debugVars = process.execArgv.filter(function(execArg) {
66
+ return /(debug|inspect)/.test(execArg);
67
+ });
68
+ if (debugVars.length > 0 && !options.noDebugRedirection) {
69
+ if (!options.execArgv) {
70
+ debugVars = Array.from(process.execArgv);
71
+ options.execArgv = [];
72
+ }
73
+ var inspectIndex = debugVars.findIndex(function(debugArg) {
74
+ return /^--inspect(-brk)?(=\d+)?$/.test(debugArg);
75
+ });
76
+ var debugIndex = debugVars.findIndex(function(debugArg) {
77
+ return /^--debug(-brk)?(=\d+)?$/.test(debugArg);
78
+ });
79
+ var portIndex = inspectIndex >= 0 ? inspectIndex : debugIndex;
80
+ if (portIndex >= 0) {
81
+ var match = /^--(debug|inspect)(?:-brk)?(?:=(\d+))?$/.exec(debugVars[portIndex]);
82
+ var port = defaultPorts[match[1]];
83
+ if (match[2]) {
84
+ port = parseInt(match[2]);
85
+ }
86
+ debugVars[portIndex] = "--" + match[1] + "=" + (port + range.min + Math.floor(Math.random() * (range.max - range.min)));
87
+ if (debugIndex >= 0 && debugIndex !== portIndex) {
88
+ match = /^(--debug)(?:-brk)?(.*)/.exec(debugVars[debugIndex]);
89
+ debugVars[debugIndex] = match[1] + (match[2] ? match[2] : "");
90
+ }
91
+ }
92
+ options.execArgv = options.execArgv.concat(debugVars);
93
+ }
94
+ delete options.noDebugRedirection;
95
+ this.child = fork(worker, args, options);
96
+ this.onerror = void 0;
97
+ this.onmessage = void 0;
98
+ this.child.on("error", function(e) {
99
+ if (_this.onerror) {
100
+ _this.onerror.call(_this, e);
101
+ }
102
+ });
103
+ this.child.on("message", function(msg) {
104
+ var message = JSON.parse(msg);
105
+ var error = void 0;
106
+ if (!message.error && _this.onmessage) {
107
+ _this.onmessage.call(_this, message);
108
+ }
109
+ if (message.error && _this.onerror) {
110
+ error = new Error(message.error);
111
+ error.stack = message.stack;
112
+ _this.onerror.call(_this, error);
113
+ }
114
+ });
115
+ this.child.send({
116
+ input,
117
+ isfn,
118
+ cwd: options.cwd,
119
+ esm: options.esm
120
+ });
121
+ }
122
+ __name(Worker4, "Worker");
123
+ _createClass(Worker4, [
124
+ {
125
+ key: "addEventListener",
126
+ value: /* @__PURE__ */ __name(function addEventListener(event, fn) {
127
+ if (events.test(event)) {
128
+ this["on" + event] = fn;
129
+ }
130
+ }, "addEventListener")
131
+ },
132
+ {
133
+ key: "postMessage",
134
+ value: /* @__PURE__ */ __name(function postMessage(msg) {
135
+ this.child.send(JSON.stringify({
136
+ data: msg
137
+ }, null, 0));
138
+ }, "postMessage")
139
+ },
140
+ {
141
+ key: "terminate",
142
+ value: /* @__PURE__ */ __name(function terminate() {
143
+ this.child.kill("SIGINT");
144
+ }, "terminate")
145
+ }
146
+ ], [
147
+ {
148
+ key: "setRange",
149
+ value: /* @__PURE__ */ __name(function setRange(min, max) {
150
+ if (min >= max) {
151
+ return false;
152
+ }
153
+ range.min = min;
154
+ range.max = max;
155
+ return true;
156
+ }, "setRange")
157
+ }
158
+ ]);
159
+ return Worker4;
160
+ }();
161
+ module.exports = Worker3;
162
+ }
163
+ });
7
164
 
8
165
  // src/serializers.ts
9
166
  function extendSerializer(extend, implementation2) {
@@ -18,6 +175,7 @@ function extendSerializer(extend, implementation2) {
18
175
  }
19
176
  };
20
177
  }
178
+ __name(extendSerializer, "extendSerializer");
21
179
  var DefaultErrorSerializer = {
22
180
  deserialize(message) {
23
181
  return Object.assign(new Error(message.message), {
@@ -34,7 +192,7 @@ var DefaultErrorSerializer = {
34
192
  };
35
193
  }
36
194
  };
37
- var isSerializedError = (thing) => thing && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error";
195
+ var isSerializedError = /* @__PURE__ */ __name((thing) => thing && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error", "isSerializedError");
38
196
  var DefaultSerializer = {
39
197
  deserialize(message) {
40
198
  return isSerializedError(message) ? DefaultErrorSerializer.deserialize(message) : message;
@@ -49,12 +207,15 @@ globalThis.registeredSerializer = globalThis.registeredSerializer ?? DefaultSeri
49
207
  function registerSerializer(serializer) {
50
208
  globalThis.registeredSerializer = extendSerializer(globalThis.registeredSerializer, serializer);
51
209
  }
210
+ __name(registerSerializer, "registerSerializer");
52
211
  function deserialize(message) {
53
212
  return globalThis.registeredSerializer.deserialize(message);
54
213
  }
214
+ __name(deserialize, "deserialize");
55
215
  function serialize(input) {
56
216
  return globalThis.registeredSerializer.serialize(input);
57
217
  }
218
+ __name(serialize, "serialize");
58
219
 
59
220
  // src/master/implementation.node.ts
60
221
  import { EventEmitter } from "events";
@@ -64,15 +225,19 @@ import { cwd } from "process";
64
225
  import { Worker as NativeWorker } from "worker_threads";
65
226
  var defaultPoolSize = cpus().length;
66
227
  function resolveScriptPath(scriptPath, baseURL) {
67
- const makeAbsolute = (filePath) => {
228
+ const makeAbsolute = /* @__PURE__ */ __name((filePath) => {
68
229
  return path.isAbsolute(filePath) ? filePath : path.join(baseURL ?? cwd(), filePath);
69
- };
230
+ }, "makeAbsolute");
70
231
  const absolutePath = makeAbsolute(scriptPath);
71
232
  return absolutePath;
72
233
  }
234
+ __name(resolveScriptPath, "resolveScriptPath");
73
235
  function initWorkerThreadsWorker() {
74
236
  let allWorkers = [];
75
- class Worker3 extends NativeWorker {
237
+ let Worker3 = class Worker extends NativeWorker {
238
+ static {
239
+ __name(this, "Worker");
240
+ }
76
241
  mappedEventListeners;
77
242
  constructor(scriptPath, options) {
78
243
  const resolvedScriptPath = options && options.fromSource ? null : resolveScriptPath(scriptPath, (options ?? {})._baseURL);
@@ -80,15 +245,20 @@ function initWorkerThreadsWorker() {
80
245
  super(resolvedScriptPath, options);
81
246
  } else {
82
247
  const sourceCode = scriptPath;
83
- super(sourceCode, { ...options, eval: true });
248
+ super(sourceCode, {
249
+ ...options,
250
+ eval: true
251
+ });
84
252
  }
85
253
  this.mappedEventListeners = /* @__PURE__ */ new WeakMap();
86
254
  allWorkers.push(this);
87
255
  }
88
256
  addEventListener(eventName, rawListener) {
89
- const listener = (message) => {
90
- rawListener({ data: message });
91
- };
257
+ const listener = /* @__PURE__ */ __name((message) => {
258
+ rawListener({
259
+ data: message
260
+ });
261
+ }, "listener");
92
262
  this.mappedEventListeners.set(rawListener, listener);
93
263
  this.on(eventName, listener);
94
264
  }
@@ -96,41 +266,55 @@ function initWorkerThreadsWorker() {
96
266
  const listener = this.mappedEventListeners.get(rawListener) || rawListener;
97
267
  this.off(eventName, listener);
98
268
  }
99
- }
100
- const terminateWorkersAndMaster = () => {
101
- Promise.all(allWorkers.map((worker) => worker.terminate())).then(
102
- () => process.exit(0),
103
- () => process.exit(1)
104
- );
105
- allWorkers = [];
106
269
  };
270
+ const terminateWorkersAndMaster = /* @__PURE__ */ __name(() => {
271
+ Promise.all(allWorkers.map((worker) => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
272
+ allWorkers = [];
273
+ }, "terminateWorkersAndMaster");
107
274
  process.on("SIGINT", () => terminateWorkersAndMaster());
108
275
  process.on("SIGTERM", () => terminateWorkersAndMaster());
109
- class BlobWorker2 extends Worker3 {
276
+ let BlobWorker2 = class BlobWorker extends Worker3 {
277
+ static {
278
+ __name(this, "BlobWorker");
279
+ }
110
280
  constructor(blob, options) {
111
- super(Buffer.from(blob).toString("utf-8"), { ...options, fromSource: true });
281
+ super(Buffer.from(blob).toString("utf-8"), {
282
+ ...options,
283
+ fromSource: true
284
+ });
112
285
  }
113
286
  static fromText(source, options) {
114
- return new Worker3(source, { ...options, fromSource: true });
287
+ return new Worker3(source, {
288
+ ...options,
289
+ fromSource: true
290
+ });
115
291
  }
116
- }
292
+ };
117
293
  return {
118
294
  blob: BlobWorker2,
119
295
  default: Worker3
120
296
  };
121
297
  }
298
+ __name(initWorkerThreadsWorker, "initWorkerThreadsWorker");
122
299
  function initTinyWorker() {
123
- const TinyWorker = __require("tiny-worker");
300
+ const TinyWorker = require_lib();
124
301
  let allWorkers = [];
125
- class Worker3 extends TinyWorker {
302
+ let Worker3 = class Worker extends TinyWorker {
303
+ static {
304
+ __name(this, "Worker");
305
+ }
126
306
  emitter;
127
307
  constructor(scriptPath, options) {
128
308
  const resolvedScriptPath = options && options.fromSource ? null : process.platform === "win32" ? `file:///${resolveScriptPath(scriptPath).replaceAll("\\", "/")}` : resolveScriptPath(scriptPath);
129
309
  if (resolvedScriptPath) {
130
- super(resolvedScriptPath, [], { esm: true });
310
+ super(resolvedScriptPath, [], {
311
+ esm: true
312
+ });
131
313
  } else {
132
314
  const sourceCode = scriptPath;
133
- super(new Function(sourceCode), [], { esm: true });
315
+ super(new Function(sourceCode), [], {
316
+ esm: true
317
+ });
134
318
  }
135
319
  allWorkers.push(this);
136
320
  this.emitter = new EventEmitter();
@@ -147,29 +331,36 @@ function initTinyWorker() {
147
331
  allWorkers = allWorkers.filter((worker) => worker !== this);
148
332
  return super.terminate();
149
333
  }
150
- }
151
- const terminateWorkersAndMaster = () => {
152
- Promise.all(allWorkers.map((worker) => worker.terminate())).then(
153
- () => process.exit(0),
154
- () => process.exit(1)
155
- );
156
- allWorkers = [];
157
334
  };
335
+ const terminateWorkersAndMaster = /* @__PURE__ */ __name(() => {
336
+ Promise.all(allWorkers.map((worker) => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
337
+ allWorkers = [];
338
+ }, "terminateWorkersAndMaster");
158
339
  process.on("SIGINT", () => terminateWorkersAndMaster());
159
340
  process.on("SIGTERM", () => terminateWorkersAndMaster());
160
- class BlobWorker2 extends Worker3 {
341
+ let BlobWorker2 = class BlobWorker extends Worker3 {
342
+ static {
343
+ __name(this, "BlobWorker");
344
+ }
161
345
  constructor(blob, options) {
162
- super(Buffer.from(blob).toString("utf-8"), { ...options, fromSource: true });
346
+ super(Buffer.from(blob).toString("utf-8"), {
347
+ ...options,
348
+ fromSource: true
349
+ });
163
350
  }
164
351
  static fromText(source, options) {
165
- return new Worker3(source, { ...options, fromSource: true });
352
+ return new Worker3(source, {
353
+ ...options,
354
+ fromSource: true
355
+ });
166
356
  }
167
- }
357
+ };
168
358
  return {
169
359
  blob: BlobWorker2,
170
360
  default: Worker3
171
361
  };
172
362
  }
363
+ __name(initTinyWorker, "initTinyWorker");
173
364
  var implementation;
174
365
  var isTinyWorker;
175
366
  function selectWorkerImplementation() {
@@ -183,12 +374,14 @@ function selectWorkerImplementation() {
183
374
  return initTinyWorker();
184
375
  }
185
376
  }
377
+ __name(selectWorkerImplementation, "selectWorkerImplementation");
186
378
  function getWorkerImplementation() {
187
379
  if (!implementation) {
188
380
  implementation = selectWorkerImplementation();
189
381
  }
190
382
  return implementation;
191
383
  }
384
+ __name(getWorkerImplementation, "getWorkerImplementation");
192
385
  function isWorkerRuntime() {
193
386
  if (isTinyWorker) {
194
387
  return globalThis !== void 0 && self["postMessage"] ? true : false;
@@ -197,20 +390,17 @@ function isWorkerRuntime() {
197
390
  return !isMainThread;
198
391
  }
199
392
  }
393
+ __name(isWorkerRuntime, "isWorkerRuntime");
200
394
 
201
395
  // src/master/pool-browser.ts
202
396
  import DebugLogger from "debug";
203
- import {
204
- multicast,
205
- Observable,
206
- Subject
207
- } from "observable-fns";
397
+ import { multicast, Observable, Subject } from "observable-fns";
208
398
 
209
399
  // src/master/implementation.browser.ts
210
400
  var defaultPoolSize2 = typeof navigator !== "undefined" && navigator.hardwareConcurrency ? navigator.hardwareConcurrency : 4;
211
401
 
212
402
  // src/master/pool-types.ts
213
- var PoolEventType = /* @__PURE__ */ ((PoolEventType2) => {
403
+ var PoolEventType = /* @__PURE__ */ function(PoolEventType2) {
214
404
  PoolEventType2["initialized"] = "initialized";
215
405
  PoolEventType2["taskCanceled"] = "taskCanceled";
216
406
  PoolEventType2["taskCompleted"] = "taskCompleted";
@@ -220,7 +410,7 @@ var PoolEventType = /* @__PURE__ */ ((PoolEventType2) => {
220
410
  PoolEventType2["taskStart"] = "taskStart";
221
411
  PoolEventType2["terminated"] = "terminated";
222
412
  return PoolEventType2;
223
- })(PoolEventType || {});
413
+ }({});
224
414
 
225
415
  // src/symbols.ts
226
416
  var $errors = Symbol("thread.errors");
@@ -233,6 +423,7 @@ var $worker = Symbol("thread.worker");
233
423
  function fail(message) {
234
424
  throw new Error(message);
235
425
  }
426
+ __name(fail, "fail");
236
427
  var Thread = {
237
428
  /** Return an observable that can be used to subscribe to all errors happening in the thread. */
238
429
  errors(thread) {
@@ -257,24 +448,33 @@ function createArray(size) {
257
448
  }
258
449
  return array;
259
450
  }
451
+ __name(createArray, "createArray");
260
452
  function delay(ms) {
261
453
  return new Promise((resolve) => setTimeout(resolve, ms));
262
454
  }
455
+ __name(delay, "delay");
263
456
  function flatMap(array, mapper) {
264
- return array.reduce((flattened, element) => [...flattened, ...mapper(element)], []);
457
+ return array.reduce((flattened, element) => [
458
+ ...flattened,
459
+ ...mapper(element)
460
+ ], []);
265
461
  }
462
+ __name(flatMap, "flatMap");
266
463
  function slugify(text) {
267
464
  return text.replaceAll(/\W/g, " ").trim().replaceAll(/\s+/g, "-");
268
465
  }
466
+ __name(slugify, "slugify");
269
467
  function spawnWorkers(spawnWorker, count) {
270
- return createArray(count).map(
271
- () => ({
272
- init: spawnWorker(),
273
- runningTasks: []
274
- })
275
- );
276
- }
277
- var WorkerPool = class {
468
+ return createArray(count).map(() => ({
469
+ init: spawnWorker(),
470
+ runningTasks: []
471
+ }));
472
+ }
473
+ __name(spawnWorkers, "spawnWorkers");
474
+ var WorkerPool = class WorkerPool2 {
475
+ static {
476
+ __name(this, "WorkerPool");
477
+ }
278
478
  static EventType = PoolEventType;
279
479
  debug;
280
480
  eventObservable;
@@ -286,23 +486,22 @@ var WorkerPool = class {
286
486
  nextTaskID = 1;
287
487
  taskQueue = [];
288
488
  constructor(spawnWorker, optionsOrSize) {
289
- const options = typeof optionsOrSize === "number" ? { size: optionsOrSize } : optionsOrSize || {};
489
+ const options = typeof optionsOrSize === "number" ? {
490
+ size: optionsOrSize
491
+ } : optionsOrSize || {};
290
492
  const { size = defaultPoolSize2 } = options;
291
493
  this.debug = DebugLogger(`threads:pool:${slugify(options.name || String(nextPoolID++))}`);
292
494
  this.options = options;
293
495
  this.workers = spawnWorkers(spawnWorker, size);
294
496
  this.eventObservable = multicast(Observable.from(this.eventSubject));
295
- Promise.all(this.workers.map((worker) => worker.init)).then(
296
- () => this.eventSubject.next({
297
- size: this.workers.length,
298
- type: "initialized" /* initialized */
299
- }),
300
- (error) => {
301
- this.debug("Error while initializing pool worker:", error);
302
- this.eventSubject.error(error);
303
- this.initErrors.push(error);
304
- }
305
- );
497
+ Promise.all(this.workers.map((worker) => worker.init)).then(() => this.eventSubject.next({
498
+ size: this.workers.length,
499
+ type: PoolEventType.initialized
500
+ }), (error) => {
501
+ this.debug("Error while initializing pool worker:", error);
502
+ this.eventSubject.error(error);
503
+ this.initErrors.push(error);
504
+ });
306
505
  }
307
506
  findIdlingWorker() {
308
507
  const { concurrency = 1 } = this.options;
@@ -313,7 +512,7 @@ var WorkerPool = class {
313
512
  this.debug(`Running task #${task.id} on worker #${workerID}...`);
314
513
  this.eventSubject.next({
315
514
  taskID: task.id,
316
- type: "taskStart" /* taskStart */,
515
+ type: PoolEventType.taskStart,
317
516
  workerID
318
517
  });
319
518
  try {
@@ -322,7 +521,7 @@ var WorkerPool = class {
322
521
  this.eventSubject.next({
323
522
  returnValue,
324
523
  taskID: task.id,
325
- type: "taskCompleted" /* taskCompleted */,
524
+ type: PoolEventType.taskCompleted,
326
525
  workerID
327
526
  });
328
527
  } catch (ex) {
@@ -331,16 +530,16 @@ var WorkerPool = class {
331
530
  this.eventSubject.next({
332
531
  error,
333
532
  taskID: task.id,
334
- type: "taskFailed" /* taskFailed */,
533
+ type: PoolEventType.taskFailed,
335
534
  workerID
336
535
  });
337
536
  }
338
537
  }
339
538
  run(worker, task) {
340
539
  const runPromise = (async () => {
341
- const removeTaskFromWorkersRunningTasks = () => {
540
+ const removeTaskFromWorkersRunningTasks = /* @__PURE__ */ __name(() => {
342
541
  worker.runningTasks = worker.runningTasks.filter((someRunPromise) => someRunPromise !== runPromise);
343
- };
542
+ }, "removeTaskFromWorkersRunningTasks");
344
543
  await delay(0);
345
544
  try {
346
545
  await this.runPoolTask(worker, task);
@@ -360,7 +559,9 @@ var WorkerPool = class {
360
559
  const nextTask = this.taskQueue.shift();
361
560
  if (!nextTask) {
362
561
  this.debug("Task queue is empty");
363
- this.eventSubject.next({ type: "taskQueueDrained" /* taskQueueDrained */ });
562
+ this.eventSubject.next({
563
+ type: PoolEventType.taskQueueDrained
564
+ });
364
565
  return;
365
566
  }
366
567
  this.run(availableWorker, nextTask);
@@ -368,13 +569,13 @@ var WorkerPool = class {
368
569
  taskCompletion(taskID) {
369
570
  return new Promise((resolve, reject) => {
370
571
  const eventSubscription = this.events().subscribe((event) => {
371
- if (event.type === "taskCompleted" /* taskCompleted */ && event.taskID === taskID) {
572
+ if (event.type === PoolEventType.taskCompleted && event.taskID === taskID) {
372
573
  eventSubscription.unsubscribe();
373
574
  resolve(event.returnValue);
374
- } else if (event.type === "taskFailed" /* taskFailed */ && event.taskID === taskID) {
575
+ } else if (event.type === PoolEventType.taskFailed && event.taskID === taskID) {
375
576
  eventSubscription.unsubscribe();
376
577
  reject(event.error);
377
- } else if (event.type === "terminated" /* terminated */) {
578
+ } else if (event.type === PoolEventType.terminated) {
378
579
  eventSubscription.unsubscribe();
379
580
  reject(new Error("Pool has been terminated before task was run."));
380
581
  }
@@ -382,10 +583,10 @@ var WorkerPool = class {
382
583
  });
383
584
  }
384
585
  async settled(allowResolvingImmediately = false) {
385
- const getCurrentlyRunningTasks = () => flatMap(this.workers, (worker) => worker.runningTasks);
586
+ const getCurrentlyRunningTasks = /* @__PURE__ */ __name(() => flatMap(this.workers, (worker) => worker.runningTasks), "getCurrentlyRunningTasks");
386
587
  const taskFailures = [];
387
588
  const failureSubscription = this.eventObservable.subscribe((event) => {
388
- if (event.type === "taskFailed" /* taskFailed */) {
589
+ if (event.type === PoolEventType.taskFailed) {
389
590
  taskFailures.push(event.error);
390
591
  }
391
592
  });
@@ -400,12 +601,11 @@ var WorkerPool = class {
400
601
  const subscription = this.eventObservable.subscribe({
401
602
  error: reject,
402
603
  next(event) {
403
- if (event.type === "taskQueueDrained" /* taskQueueDrained */) {
604
+ if (event.type === PoolEventType.taskQueueDrained) {
404
605
  subscription.unsubscribe();
405
606
  resolve(void 0);
406
607
  }
407
608
  }
408
- // make a pool-wide error reject the completed() result promise
409
609
  });
410
610
  });
411
611
  await Promise.allSettled(getCurrentlyRunningTasks());
@@ -418,18 +618,20 @@ var WorkerPool = class {
418
618
  const subscription = this.eventObservable.subscribe({
419
619
  error: reject,
420
620
  next(event) {
421
- if (event.type === "taskQueueDrained" /* taskQueueDrained */) {
621
+ if (event.type === PoolEventType.taskQueueDrained) {
422
622
  subscription.unsubscribe();
423
623
  resolve(settlementPromise);
424
- } else if (event.type === "taskFailed" /* taskFailed */) {
624
+ } else if (event.type === PoolEventType.taskFailed) {
425
625
  subscription.unsubscribe();
426
626
  reject(event.error);
427
627
  }
428
628
  }
429
- // make a pool-wide error reject the completed() result promise
430
629
  });
431
630
  });
432
- const errors = await Promise.race([settlementPromise, earlyExitPromise]);
631
+ const errors = await Promise.race([
632
+ settlementPromise,
633
+ earlyExitPromise
634
+ ]);
433
635
  if (errors.length > 0) {
434
636
  throw errors[0];
435
637
  }
@@ -451,28 +653,26 @@ var WorkerPool = class {
451
653
  this.debug(`Task #${taskID} errored:`, error);
452
654
  });
453
655
  const task = {
454
- cancel: () => {
656
+ cancel: /* @__PURE__ */ __name(() => {
455
657
  if (!this.taskQueue.includes(task)) return;
456
658
  this.taskQueue = this.taskQueue.filter((someTask) => someTask !== task);
457
659
  this.eventSubject.next({
458
660
  taskID: task.id,
459
- type: "taskCanceled" /* taskCanceled */
661
+ type: PoolEventType.taskCanceled
460
662
  });
461
- },
663
+ }, "cancel"),
462
664
  id: taskID,
463
665
  run: taskFunction,
464
666
  then: taskCompletion.then.bind(taskCompletion)
465
667
  };
466
668
  if (this.taskQueue.length >= maxQueuedJobs) {
467
- throw new Error(
468
- "Maximum number of pool tasks queued. Refusing to queue another one.\nThis usually happens for one of two reasons: We are either at peak workload right now or some tasks just won't finish, thus blocking the pool."
469
- );
669
+ throw new Error("Maximum number of pool tasks queued. Refusing to queue another one.\nThis usually happens for one of two reasons: We are either at peak workload right now or some tasks just won't finish, thus blocking the pool.");
470
670
  }
471
671
  this.debug(`Queueing task #${task.id}...`);
472
672
  this.taskQueue.push(task);
473
673
  this.eventSubject.next({
474
674
  taskID: task.id,
475
- type: "taskQueued" /* taskQueued */
675
+ type: PoolEventType.taskQueued
476
676
  });
477
677
  this.scheduleWork();
478
678
  return task;
@@ -483,8 +683,10 @@ var WorkerPool = class {
483
683
  await this.completed(true);
484
684
  }
485
685
  this.eventSubject.next({
486
- remainingQueue: [...this.taskQueue],
487
- type: "terminated" /* terminated */
686
+ remainingQueue: [
687
+ ...this.taskQueue
688
+ ],
689
+ type: PoolEventType.terminated
488
690
  });
489
691
  this.eventSubject.complete();
490
692
  await Promise.all(this.workers.map(async (worker) => Thread.terminate(await worker.init)));
@@ -493,6 +695,7 @@ var WorkerPool = class {
493
695
  function PoolConstructor(spawnWorker, optionsOrSize) {
494
696
  return new WorkerPool(spawnWorker, optionsOrSize);
495
697
  }
698
+ __name(PoolConstructor, "PoolConstructor");
496
699
  PoolConstructor.EventType = PoolEventType;
497
700
  var Pool = PoolConstructor;
498
701
 
@@ -501,7 +704,7 @@ import DebugLogger3 from "debug";
501
704
  import { Observable as Observable4 } from "observable-fns";
502
705
 
503
706
  // src/promise.ts
504
- var doNothing = () => void 0;
707
+ var doNothing = /* @__PURE__ */ __name(() => void 0, "doNothing");
505
708
  function createPromiseWithResolver() {
506
709
  let alreadyResolved = false;
507
710
  let resolvedTo;
@@ -513,13 +716,25 @@ function createPromiseWithResolver() {
513
716
  resolver = resolve;
514
717
  }
515
718
  });
516
- const exposedResolver = (value) => {
719
+ const exposedResolver = /* @__PURE__ */ __name((value) => {
517
720
  alreadyResolved = true;
518
721
  resolvedTo = value;
519
722
  resolver(resolvedTo);
520
- };
521
- return [promise, exposedResolver];
723
+ }, "exposedResolver");
724
+ return [
725
+ promise,
726
+ exposedResolver
727
+ ];
522
728
  }
729
+ __name(createPromiseWithResolver, "createPromiseWithResolver");
730
+
731
+ // src/types/master.ts
732
+ var WorkerEventType = /* @__PURE__ */ function(WorkerEventType2) {
733
+ WorkerEventType2["internalError"] = "internalError";
734
+ WorkerEventType2["message"] = "message";
735
+ WorkerEventType2["termination"] = "termination";
736
+ return WorkerEventType2;
737
+ }({});
523
738
 
524
739
  // src/master/invocation-proxy.ts
525
740
  import DebugLogger2 from "debug";
@@ -527,17 +742,22 @@ import { multicast as multicast2, Observable as Observable3 } from "observable-f
527
742
 
528
743
  // src/observable-promise.ts
529
744
  import { Observable as Observable2 } from "observable-fns";
530
- var doNothing2 = () => {
531
- };
532
- var returnInput = (input) => input;
533
- var runDeferred = (fn) => Promise.resolve().then(fn);
745
+ var doNothing2 = /* @__PURE__ */ __name(() => {
746
+ }, "doNothing");
747
+ var returnInput = /* @__PURE__ */ __name((input) => input, "returnInput");
748
+ var runDeferred = /* @__PURE__ */ __name((fn) => Promise.resolve().then(fn), "runDeferred");
534
749
  function fail2(error) {
535
750
  throw error;
536
751
  }
752
+ __name(fail2, "fail");
537
753
  function isThenable(thing) {
538
754
  return thing && typeof thing.then === "function";
539
755
  }
756
+ __name(isThenable, "isThenable");
540
757
  var ObservablePromise = class _ObservablePromise extends Observable2 {
758
+ static {
759
+ __name(this, "ObservablePromise");
760
+ }
541
761
  [Symbol.toStringTag] = "[object ObservablePromise]";
542
762
  initHasRun = false;
543
763
  fulfillmentCallbacks = [];
@@ -596,7 +816,7 @@ var ObservablePromise = class _ObservablePromise extends Observable2 {
596
816
  const onRejected = onRejectedRaw || fail2;
597
817
  let onRejectedCalled = false;
598
818
  return new Promise((resolve, reject) => {
599
- const rejectionCallback = (error) => {
819
+ const rejectionCallback = /* @__PURE__ */ __name((error) => {
600
820
  if (onRejectedCalled) return;
601
821
  onRejectedCalled = true;
602
822
  try {
@@ -604,17 +824,19 @@ var ObservablePromise = class _ObservablePromise extends Observable2 {
604
824
  } catch (anotherError) {
605
825
  reject(anotherError);
606
826
  }
607
- };
608
- const fulfillmentCallback = (value) => {
827
+ }, "rejectionCallback");
828
+ const fulfillmentCallback = /* @__PURE__ */ __name((value) => {
609
829
  try {
610
830
  resolve(onFulfilled(value));
611
831
  } catch (ex) {
612
832
  const error = ex;
613
833
  rejectionCallback(error);
614
834
  }
615
- };
835
+ }, "fulfillmentCallback");
616
836
  if (!this.initHasRun) {
617
- this.subscribe({ error: rejectionCallback });
837
+ this.subscribe({
838
+ error: rejectionCallback
839
+ });
618
840
  }
619
841
  if (this.state === "fulfilled") {
620
842
  return resolve(onFulfilled(this.firstValue));
@@ -632,23 +854,20 @@ var ObservablePromise = class _ObservablePromise extends Observable2 {
632
854
  }
633
855
  finally(onCompleted) {
634
856
  const handler = onCompleted || doNothing2;
635
- return this.then(
636
- (value) => {
637
- handler();
638
- return value;
639
- },
640
- () => handler()
641
- );
857
+ return this.then((value) => {
858
+ handler();
859
+ return value;
860
+ }, () => handler());
642
861
  }
643
862
  static from(thing) {
644
863
  return isThenable(thing) ? new _ObservablePromise((observer) => {
645
- const onFulfilled = (value) => {
864
+ const onFulfilled = /* @__PURE__ */ __name((value) => {
646
865
  observer.next(value);
647
866
  observer.complete();
648
- };
649
- const onRejected = (error) => {
867
+ }, "onFulfilled");
868
+ const onRejected = /* @__PURE__ */ __name((error) => {
650
869
  observer.error(error);
651
- };
870
+ }, "onRejected");
652
871
  thing.then(onFulfilled, onRejected);
653
872
  }) : super.from(thing);
654
873
  }
@@ -659,14 +878,18 @@ function isTransferable(thing) {
659
878
  if (!thing || typeof thing !== "object") return false;
660
879
  return true;
661
880
  }
881
+ __name(isTransferable, "isTransferable");
662
882
  function isTransferDescriptor(thing) {
663
883
  return thing && typeof thing === "object" && thing[$transferable];
664
884
  }
885
+ __name(isTransferDescriptor, "isTransferDescriptor");
665
886
  function Transfer(payload, transferables) {
666
887
  console.log("Transfer");
667
888
  if (!transferables) {
668
889
  if (!isTransferable(payload)) throw new Error("Not transferable");
669
- transferables = [payload];
890
+ transferables = [
891
+ payload
892
+ ];
670
893
  }
671
894
  return {
672
895
  [$transferable]: true,
@@ -674,18 +897,36 @@ function Transfer(payload, transferables) {
674
897
  transferables
675
898
  };
676
899
  }
900
+ __name(Transfer, "Transfer");
901
+
902
+ // src/types/messages.ts
903
+ var MasterMessageType = /* @__PURE__ */ function(MasterMessageType2) {
904
+ MasterMessageType2["cancel"] = "cancel";
905
+ MasterMessageType2["run"] = "run";
906
+ return MasterMessageType2;
907
+ }({});
908
+ var WorkerMessageType = /* @__PURE__ */ function(WorkerMessageType2) {
909
+ WorkerMessageType2["error"] = "error";
910
+ WorkerMessageType2["init"] = "init";
911
+ WorkerMessageType2["result"] = "result";
912
+ WorkerMessageType2["running"] = "running";
913
+ WorkerMessageType2["uncaughtError"] = "uncaughtError";
914
+ return WorkerMessageType2;
915
+ }({});
677
916
 
678
917
  // src/master/invocation-proxy.ts
679
918
  var debugMessages = DebugLogger2("threads:master:messages");
680
919
  var nextJobUID = 1;
681
- var dedupe = (array) => [...new Set(array)];
682
- var isJobErrorMessage = (data) => data && data.type === "error" /* error */;
683
- var isJobResultMessage = (data) => data && data.type === "result" /* result */;
684
- var isJobStartMessage = (data) => data && data.type === "running" /* running */;
920
+ var dedupe = /* @__PURE__ */ __name((array) => [
921
+ ...new Set(array)
922
+ ], "dedupe");
923
+ var isJobErrorMessage = /* @__PURE__ */ __name((data) => data && data.type === WorkerMessageType.error, "isJobErrorMessage");
924
+ var isJobResultMessage = /* @__PURE__ */ __name((data) => data && data.type === WorkerMessageType.result, "isJobResultMessage");
925
+ var isJobStartMessage = /* @__PURE__ */ __name((data) => data && data.type === WorkerMessageType.running, "isJobStartMessage");
685
926
  function createObservableForJob(worker, jobUID) {
686
927
  return new Observable3((observer) => {
687
928
  let asyncType;
688
- const messageHandler = (event) => {
929
+ const messageHandler = /* @__PURE__ */ __name((event) => {
689
930
  debugMessages("Message from worker:", event.data);
690
931
  if (!event.data || event.data.uid !== jobUID) return;
691
932
  if (isJobStartMessage(event.data)) {
@@ -715,12 +956,12 @@ function createObservableForJob(worker, jobUID) {
715
956
  }
716
957
  worker.removeEventListener("message", messageHandler);
717
958
  }
718
- };
959
+ }, "messageHandler");
719
960
  worker.addEventListener("message", messageHandler);
720
961
  return () => {
721
962
  if (asyncType === "observable" || !asyncType) {
722
963
  const cancelMessage = {
723
- type: "cancel" /* cancel */,
964
+ type: MasterMessageType.cancel,
724
965
  uid: jobUID
725
966
  };
726
967
  worker.postMessage(cancelMessage);
@@ -729,6 +970,7 @@ function createObservableForJob(worker, jobUID) {
729
970
  };
730
971
  });
731
972
  }
973
+ __name(createObservableForJob, "createObservableForJob");
732
974
  function prepareArguments(rawArgs) {
733
975
  if (rawArgs.length === 0) {
734
976
  return {
@@ -751,6 +993,7 @@ function prepareArguments(rawArgs) {
751
993
  transferables: transferables.length === 0 ? transferables : dedupe(transferables)
752
994
  };
753
995
  }
996
+ __name(prepareArguments, "prepareArguments");
754
997
  function createProxyFunction(worker, method) {
755
998
  return (...rawArgs) => {
756
999
  const uid = nextJobUID++;
@@ -758,7 +1001,7 @@ function createProxyFunction(worker, method) {
758
1001
  const runMessage = {
759
1002
  args,
760
1003
  method,
761
- type: "run" /* run */,
1004
+ type: MasterMessageType.run,
762
1005
  uid
763
1006
  };
764
1007
  debugMessages("Sending command to run function to worker:", runMessage);
@@ -770,6 +1013,7 @@ function createProxyFunction(worker, method) {
770
1013
  return ObservablePromise.from(multicast2(createObservableForJob(worker, uid)));
771
1014
  };
772
1015
  }
1016
+ __name(createProxyFunction, "createProxyFunction");
773
1017
  function createProxyModule(worker, methodNames) {
774
1018
  const proxy = {};
775
1019
  for (const methodName of methodNames) {
@@ -777,26 +1021,31 @@ function createProxyModule(worker, methodNames) {
777
1021
  }
778
1022
  return proxy;
779
1023
  }
1024
+ __name(createProxyModule, "createProxyModule");
780
1025
 
781
1026
  // src/master/spawn.ts
782
1027
  var debugMessages2 = DebugLogger3("threads:master:messages");
783
1028
  var debugSpawn = DebugLogger3("threads:master:spawn");
784
1029
  var debugThreadUtils = DebugLogger3("threads:master:thread-utils");
785
- var isInitMessage = (data) => data && data.type === "init";
786
- var isUncaughtErrorMessage = (data) => data && data.type === "uncaughtError";
1030
+ var isInitMessage = /* @__PURE__ */ __name((data) => data && data.type === "init", "isInitMessage");
1031
+ var isUncaughtErrorMessage = /* @__PURE__ */ __name((data) => data && data.type === "uncaughtError", "isUncaughtErrorMessage");
787
1032
  var initMessageTimeout = typeof process !== "undefined" && process.env !== void 0 && process.env.THREADS_WORKER_INIT_TIMEOUT ? Number.parseInt(process.env.THREADS_WORKER_INIT_TIMEOUT, 10) : 1e4;
788
1033
  async function withTimeout(promise, timeoutInMs, errorMessage) {
789
1034
  let timeoutHandle;
790
1035
  const timeout = new Promise((resolve, reject) => {
791
1036
  timeoutHandle = setTimeout(() => reject(new Error(errorMessage)), timeoutInMs);
792
1037
  });
793
- const result = await Promise.race([promise, timeout]);
1038
+ const result = await Promise.race([
1039
+ promise,
1040
+ timeout
1041
+ ]);
794
1042
  clearTimeout(timeoutHandle);
795
1043
  return result;
796
1044
  }
1045
+ __name(withTimeout, "withTimeout");
797
1046
  function receiveInitMessage(worker) {
798
1047
  return new Promise((resolve, reject) => {
799
- const messageHandler = (event) => {
1048
+ const messageHandler = /* @__PURE__ */ __name((event) => {
800
1049
  debugMessages2("Message from worker before finishing initialization:", event.data);
801
1050
  if (isInitMessage(event.data)) {
802
1051
  worker.removeEventListener("message", messageHandler);
@@ -805,31 +1054,34 @@ function receiveInitMessage(worker) {
805
1054
  worker.removeEventListener("message", messageHandler);
806
1055
  reject(deserialize(event.data.error));
807
1056
  }
808
- };
1057
+ }, "messageHandler");
809
1058
  worker.addEventListener("message", messageHandler);
810
1059
  });
811
1060
  }
1061
+ __name(receiveInitMessage, "receiveInitMessage");
812
1062
  function createEventObservable(worker, workerTermination) {
813
1063
  return new Observable4((observer) => {
814
- const messageHandler = (messageEvent) => {
1064
+ const messageHandler = /* @__PURE__ */ __name((messageEvent) => {
815
1065
  const workerEvent = {
816
1066
  data: messageEvent.data,
817
- type: "message" /* message */
1067
+ type: WorkerEventType.message
818
1068
  };
819
1069
  observer.next(workerEvent);
820
- };
821
- const rejectionHandler = (errorEvent) => {
1070
+ }, "messageHandler");
1071
+ const rejectionHandler = /* @__PURE__ */ __name((errorEvent) => {
822
1072
  debugThreadUtils("Unhandled promise rejection event in thread:", errorEvent);
823
1073
  const workerEvent = {
824
1074
  error: new Error(errorEvent.reason),
825
- type: "internalError" /* internalError */
1075
+ type: WorkerEventType.internalError
826
1076
  };
827
1077
  observer.next(workerEvent);
828
- };
1078
+ }, "rejectionHandler");
829
1079
  worker.addEventListener("message", messageHandler);
830
1080
  worker.addEventListener("unhandledrejection", rejectionHandler);
831
1081
  workerTermination.then(() => {
832
- const terminationEvent = { type: "termination" /* termination */ };
1082
+ const terminationEvent = {
1083
+ type: WorkerEventType.termination
1084
+ };
833
1085
  worker.removeEventListener("message", messageHandler);
834
1086
  worker.removeEventListener("unhandledrejection", rejectionHandler);
835
1087
  observer.next(terminationEvent);
@@ -837,17 +1089,22 @@ function createEventObservable(worker, workerTermination) {
837
1089
  });
838
1090
  });
839
1091
  }
1092
+ __name(createEventObservable, "createEventObservable");
840
1093
  function createTerminator(worker) {
841
1094
  const [termination, resolver] = createPromiseWithResolver();
842
- const terminate = async () => {
1095
+ const terminate = /* @__PURE__ */ __name(async () => {
843
1096
  debugThreadUtils("Terminating worker");
844
1097
  await worker.terminate();
845
1098
  resolver();
1099
+ }, "terminate");
1100
+ return {
1101
+ terminate,
1102
+ termination
846
1103
  };
847
- return { terminate, termination };
848
1104
  }
1105
+ __name(createTerminator, "createTerminator");
849
1106
  function setPrivateThreadProps(raw, worker, workerEvents, terminate) {
850
- const workerErrors = workerEvents.filter((event) => event.type === "internalError" /* internalError */).map((errorEvent) => errorEvent.error);
1107
+ const workerErrors = workerEvents.filter((event) => event.type === WorkerEventType.internalError).map((errorEvent) => errorEvent.error);
851
1108
  return Object.assign(raw, {
852
1109
  [$errors]: workerErrors,
853
1110
  [$events]: workerEvents,
@@ -855,14 +1112,11 @@ function setPrivateThreadProps(raw, worker, workerEvents, terminate) {
855
1112
  [$worker]: worker
856
1113
  });
857
1114
  }
1115
+ __name(setPrivateThreadProps, "setPrivateThreadProps");
858
1116
  async function spawn(worker, options) {
859
1117
  debugSpawn("Initializing new thread");
860
1118
  const timeout = options && options.timeout ? options.timeout : initMessageTimeout;
861
- const initMessage = await withTimeout(
862
- receiveInitMessage(worker),
863
- timeout,
864
- `Timeout: Did not receive an init message from worker after ${timeout}ms. Make sure the worker calls expose().`
865
- );
1119
+ 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().`);
866
1120
  const exposed = initMessage.exposed;
867
1121
  const { termination, terminate } = createTerminator(worker);
868
1122
  const events = createEventObservable(worker, termination);
@@ -877,6 +1131,7 @@ async function spawn(worker, options) {
877
1131
  throw new Error(`Worker init message states unexpected type of expose(): ${type}`);
878
1132
  }
879
1133
  }
1134
+ __name(spawn, "spawn");
880
1135
 
881
1136
  // src/master/index-node.ts
882
1137
  var BlobWorker = getWorkerImplementation().blob;