@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,3 +1,6 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
1
4
  // src/master/get-bundle-url.browser.ts
2
5
  var bundleURL;
3
6
  function getBundleURLCached() {
@@ -6,6 +9,7 @@ function getBundleURLCached() {
6
9
  }
7
10
  return bundleURL;
8
11
  }
12
+ __name(getBundleURLCached, "getBundleURLCached");
9
13
  function getBundleURL() {
10
14
  try {
11
15
  throw new Error("getBundleURL failed");
@@ -18,28 +22,39 @@ function getBundleURL() {
18
22
  }
19
23
  return "/";
20
24
  }
25
+ __name(getBundleURL, "getBundleURL");
21
26
  function getBaseURL(url) {
22
27
  return ("" + url).replace(/^((?:https?|file|ftp|chrome-extension|moz-extension):\/\/.+)?\/[^/]+(?:\?.*)?$/, "$1") + "/";
23
28
  }
29
+ __name(getBaseURL, "getBaseURL");
24
30
 
25
31
  // src/master/implementation.browser.ts
26
32
  var defaultPoolSize = typeof navigator !== "undefined" && navigator.hardwareConcurrency ? navigator.hardwareConcurrency : 4;
27
- var isAbsoluteURL = (value) => /^[A-Za-z][\d+.A-Za-z\-]*:/.test(value);
33
+ var isAbsoluteURL = /* @__PURE__ */ __name((value) => /^[A-Za-z][\d+.A-Za-z\-]*:/.test(value), "isAbsoluteURL");
28
34
  function createSourceBlobURL(code) {
29
- const blob = new Blob([code], { type: "application/javascript" });
35
+ const blob = new Blob([
36
+ code
37
+ ], {
38
+ type: "application/javascript"
39
+ });
30
40
  return URL.createObjectURL(blob);
31
41
  }
42
+ __name(createSourceBlobURL, "createSourceBlobURL");
32
43
  function selectWorkerImplementation() {
33
44
  if (typeof Worker === "undefined") {
34
45
  return class NoWebWorker {
46
+ static {
47
+ __name(this, "NoWebWorker");
48
+ }
35
49
  constructor() {
36
- throw new Error(
37
- "No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn't support workers in workers."
38
- );
50
+ throw new Error("No web worker implementation available. You might have tried to spawn a worker within a worker in a browser that doesn't support workers in workers.");
39
51
  }
40
52
  };
41
53
  }
42
- class WebWorker extends Worker {
54
+ let WebWorker = class WebWorker extends Worker {
55
+ static {
56
+ __name(this, "WebWorker");
57
+ }
43
58
  constructor(url, options) {
44
59
  if (typeof url === "string" && options && options._baseURL) {
45
60
  url = new URL(url, options._baseURL);
@@ -54,22 +69,30 @@ function selectWorkerImplementation() {
54
69
  }
55
70
  super(url, options);
56
71
  }
57
- }
58
- class BlobWorker2 extends WebWorker {
72
+ };
73
+ let BlobWorker2 = class BlobWorker3 extends WebWorker {
74
+ static {
75
+ __name(this, "BlobWorker");
76
+ }
59
77
  constructor(blob, options) {
60
78
  const url = globalThis.URL.createObjectURL(blob);
61
79
  super(url, options);
62
80
  }
63
81
  static fromText(source, options) {
64
- const blob = new globalThis.Blob([source], { type: "text/javascript" });
65
- return new BlobWorker2(blob, options);
82
+ const blob = new globalThis.Blob([
83
+ source
84
+ ], {
85
+ type: "text/javascript"
86
+ });
87
+ return new BlobWorker3(blob, options);
66
88
  }
67
- }
89
+ };
68
90
  return {
69
91
  blob: BlobWorker2,
70
92
  default: WebWorker
71
93
  };
72
94
  }
95
+ __name(selectWorkerImplementation, "selectWorkerImplementation");
73
96
  var implementation;
74
97
  function getWorkerImplementation() {
75
98
  if (!implementation) {
@@ -77,21 +100,19 @@ function getWorkerImplementation() {
77
100
  }
78
101
  return implementation;
79
102
  }
103
+ __name(getWorkerImplementation, "getWorkerImplementation");
80
104
  function isWorkerRuntime() {
81
105
  const isWindowContext = typeof globalThis !== "undefined" && typeof Window !== "undefined" && globalThis instanceof Window;
82
106
  return typeof globalThis !== "undefined" && self["postMessage"] && !isWindowContext ? true : false;
83
107
  }
108
+ __name(isWorkerRuntime, "isWorkerRuntime");
84
109
 
85
110
  // src/master/pool-browser.ts
86
111
  import DebugLogger from "debug";
87
- import {
88
- multicast,
89
- Observable,
90
- Subject
91
- } from "observable-fns";
112
+ import { multicast, Observable, Subject } from "observable-fns";
92
113
 
93
114
  // src/master/pool-types.ts
94
- var PoolEventType = /* @__PURE__ */ ((PoolEventType2) => {
115
+ var PoolEventType = /* @__PURE__ */ function(PoolEventType2) {
95
116
  PoolEventType2["initialized"] = "initialized";
96
117
  PoolEventType2["taskCanceled"] = "taskCanceled";
97
118
  PoolEventType2["taskCompleted"] = "taskCompleted";
@@ -101,7 +122,7 @@ var PoolEventType = /* @__PURE__ */ ((PoolEventType2) => {
101
122
  PoolEventType2["taskStart"] = "taskStart";
102
123
  PoolEventType2["terminated"] = "terminated";
103
124
  return PoolEventType2;
104
- })(PoolEventType || {});
125
+ }({});
105
126
 
106
127
  // src/symbols.ts
107
128
  var $errors = Symbol("thread.errors");
@@ -114,6 +135,7 @@ var $worker = Symbol("thread.worker");
114
135
  function fail(message) {
115
136
  throw new Error(message);
116
137
  }
138
+ __name(fail, "fail");
117
139
  var Thread = {
118
140
  /** Return an observable that can be used to subscribe to all errors happening in the thread. */
119
141
  errors(thread) {
@@ -138,24 +160,33 @@ function createArray(size) {
138
160
  }
139
161
  return array;
140
162
  }
163
+ __name(createArray, "createArray");
141
164
  function delay(ms) {
142
165
  return new Promise((resolve) => setTimeout(resolve, ms));
143
166
  }
167
+ __name(delay, "delay");
144
168
  function flatMap(array, mapper) {
145
- return array.reduce((flattened, element) => [...flattened, ...mapper(element)], []);
169
+ return array.reduce((flattened, element) => [
170
+ ...flattened,
171
+ ...mapper(element)
172
+ ], []);
146
173
  }
174
+ __name(flatMap, "flatMap");
147
175
  function slugify(text) {
148
176
  return text.replaceAll(/\W/g, " ").trim().replaceAll(/\s+/g, "-");
149
177
  }
178
+ __name(slugify, "slugify");
150
179
  function spawnWorkers(spawnWorker, count) {
151
- return createArray(count).map(
152
- () => ({
153
- init: spawnWorker(),
154
- runningTasks: []
155
- })
156
- );
180
+ return createArray(count).map(() => ({
181
+ init: spawnWorker(),
182
+ runningTasks: []
183
+ }));
157
184
  }
158
- var WorkerPool = class {
185
+ __name(spawnWorkers, "spawnWorkers");
186
+ var WorkerPool = class WorkerPool2 {
187
+ static {
188
+ __name(this, "WorkerPool");
189
+ }
159
190
  static EventType = PoolEventType;
160
191
  debug;
161
192
  eventObservable;
@@ -167,23 +198,22 @@ var WorkerPool = class {
167
198
  nextTaskID = 1;
168
199
  taskQueue = [];
169
200
  constructor(spawnWorker, optionsOrSize) {
170
- const options = typeof optionsOrSize === "number" ? { size: optionsOrSize } : optionsOrSize || {};
201
+ const options = typeof optionsOrSize === "number" ? {
202
+ size: optionsOrSize
203
+ } : optionsOrSize || {};
171
204
  const { size = defaultPoolSize } = options;
172
205
  this.debug = DebugLogger(`threads:pool:${slugify(options.name || String(nextPoolID++))}`);
173
206
  this.options = options;
174
207
  this.workers = spawnWorkers(spawnWorker, size);
175
208
  this.eventObservable = multicast(Observable.from(this.eventSubject));
176
- Promise.all(this.workers.map((worker) => worker.init)).then(
177
- () => this.eventSubject.next({
178
- size: this.workers.length,
179
- type: "initialized" /* initialized */
180
- }),
181
- (error) => {
182
- this.debug("Error while initializing pool worker:", error);
183
- this.eventSubject.error(error);
184
- this.initErrors.push(error);
185
- }
186
- );
209
+ Promise.all(this.workers.map((worker) => worker.init)).then(() => this.eventSubject.next({
210
+ size: this.workers.length,
211
+ type: PoolEventType.initialized
212
+ }), (error) => {
213
+ this.debug("Error while initializing pool worker:", error);
214
+ this.eventSubject.error(error);
215
+ this.initErrors.push(error);
216
+ });
187
217
  }
188
218
  findIdlingWorker() {
189
219
  const { concurrency = 1 } = this.options;
@@ -194,7 +224,7 @@ var WorkerPool = class {
194
224
  this.debug(`Running task #${task.id} on worker #${workerID}...`);
195
225
  this.eventSubject.next({
196
226
  taskID: task.id,
197
- type: "taskStart" /* taskStart */,
227
+ type: PoolEventType.taskStart,
198
228
  workerID
199
229
  });
200
230
  try {
@@ -203,7 +233,7 @@ var WorkerPool = class {
203
233
  this.eventSubject.next({
204
234
  returnValue,
205
235
  taskID: task.id,
206
- type: "taskCompleted" /* taskCompleted */,
236
+ type: PoolEventType.taskCompleted,
207
237
  workerID
208
238
  });
209
239
  } catch (ex) {
@@ -212,16 +242,16 @@ var WorkerPool = class {
212
242
  this.eventSubject.next({
213
243
  error,
214
244
  taskID: task.id,
215
- type: "taskFailed" /* taskFailed */,
245
+ type: PoolEventType.taskFailed,
216
246
  workerID
217
247
  });
218
248
  }
219
249
  }
220
250
  run(worker, task) {
221
251
  const runPromise = (async () => {
222
- const removeTaskFromWorkersRunningTasks = () => {
252
+ const removeTaskFromWorkersRunningTasks = /* @__PURE__ */ __name(() => {
223
253
  worker.runningTasks = worker.runningTasks.filter((someRunPromise) => someRunPromise !== runPromise);
224
- };
254
+ }, "removeTaskFromWorkersRunningTasks");
225
255
  await delay(0);
226
256
  try {
227
257
  await this.runPoolTask(worker, task);
@@ -241,7 +271,9 @@ var WorkerPool = class {
241
271
  const nextTask = this.taskQueue.shift();
242
272
  if (!nextTask) {
243
273
  this.debug("Task queue is empty");
244
- this.eventSubject.next({ type: "taskQueueDrained" /* taskQueueDrained */ });
274
+ this.eventSubject.next({
275
+ type: PoolEventType.taskQueueDrained
276
+ });
245
277
  return;
246
278
  }
247
279
  this.run(availableWorker, nextTask);
@@ -249,13 +281,13 @@ var WorkerPool = class {
249
281
  taskCompletion(taskID) {
250
282
  return new Promise((resolve, reject) => {
251
283
  const eventSubscription = this.events().subscribe((event) => {
252
- if (event.type === "taskCompleted" /* taskCompleted */ && event.taskID === taskID) {
284
+ if (event.type === PoolEventType.taskCompleted && event.taskID === taskID) {
253
285
  eventSubscription.unsubscribe();
254
286
  resolve(event.returnValue);
255
- } else if (event.type === "taskFailed" /* taskFailed */ && event.taskID === taskID) {
287
+ } else if (event.type === PoolEventType.taskFailed && event.taskID === taskID) {
256
288
  eventSubscription.unsubscribe();
257
289
  reject(event.error);
258
- } else if (event.type === "terminated" /* terminated */) {
290
+ } else if (event.type === PoolEventType.terminated) {
259
291
  eventSubscription.unsubscribe();
260
292
  reject(new Error("Pool has been terminated before task was run."));
261
293
  }
@@ -263,10 +295,10 @@ var WorkerPool = class {
263
295
  });
264
296
  }
265
297
  async settled(allowResolvingImmediately = false) {
266
- const getCurrentlyRunningTasks = () => flatMap(this.workers, (worker) => worker.runningTasks);
298
+ const getCurrentlyRunningTasks = /* @__PURE__ */ __name(() => flatMap(this.workers, (worker) => worker.runningTasks), "getCurrentlyRunningTasks");
267
299
  const taskFailures = [];
268
300
  const failureSubscription = this.eventObservable.subscribe((event) => {
269
- if (event.type === "taskFailed" /* taskFailed */) {
301
+ if (event.type === PoolEventType.taskFailed) {
270
302
  taskFailures.push(event.error);
271
303
  }
272
304
  });
@@ -281,12 +313,11 @@ var WorkerPool = class {
281
313
  const subscription = this.eventObservable.subscribe({
282
314
  error: reject,
283
315
  next(event) {
284
- if (event.type === "taskQueueDrained" /* taskQueueDrained */) {
316
+ if (event.type === PoolEventType.taskQueueDrained) {
285
317
  subscription.unsubscribe();
286
318
  resolve(void 0);
287
319
  }
288
320
  }
289
- // make a pool-wide error reject the completed() result promise
290
321
  });
291
322
  });
292
323
  await Promise.allSettled(getCurrentlyRunningTasks());
@@ -299,18 +330,20 @@ var WorkerPool = class {
299
330
  const subscription = this.eventObservable.subscribe({
300
331
  error: reject,
301
332
  next(event) {
302
- if (event.type === "taskQueueDrained" /* taskQueueDrained */) {
333
+ if (event.type === PoolEventType.taskQueueDrained) {
303
334
  subscription.unsubscribe();
304
335
  resolve(settlementPromise);
305
- } else if (event.type === "taskFailed" /* taskFailed */) {
336
+ } else if (event.type === PoolEventType.taskFailed) {
306
337
  subscription.unsubscribe();
307
338
  reject(event.error);
308
339
  }
309
340
  }
310
- // make a pool-wide error reject the completed() result promise
311
341
  });
312
342
  });
313
- const errors = await Promise.race([settlementPromise, earlyExitPromise]);
343
+ const errors = await Promise.race([
344
+ settlementPromise,
345
+ earlyExitPromise
346
+ ]);
314
347
  if (errors.length > 0) {
315
348
  throw errors[0];
316
349
  }
@@ -332,28 +365,26 @@ var WorkerPool = class {
332
365
  this.debug(`Task #${taskID} errored:`, error);
333
366
  });
334
367
  const task = {
335
- cancel: () => {
368
+ cancel: /* @__PURE__ */ __name(() => {
336
369
  if (!this.taskQueue.includes(task)) return;
337
370
  this.taskQueue = this.taskQueue.filter((someTask) => someTask !== task);
338
371
  this.eventSubject.next({
339
372
  taskID: task.id,
340
- type: "taskCanceled" /* taskCanceled */
373
+ type: PoolEventType.taskCanceled
341
374
  });
342
- },
375
+ }, "cancel"),
343
376
  id: taskID,
344
377
  run: taskFunction,
345
378
  then: taskCompletion.then.bind(taskCompletion)
346
379
  };
347
380
  if (this.taskQueue.length >= maxQueuedJobs) {
348
- throw new Error(
349
- "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."
350
- );
381
+ 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.");
351
382
  }
352
383
  this.debug(`Queueing task #${task.id}...`);
353
384
  this.taskQueue.push(task);
354
385
  this.eventSubject.next({
355
386
  taskID: task.id,
356
- type: "taskQueued" /* taskQueued */
387
+ type: PoolEventType.taskQueued
357
388
  });
358
389
  this.scheduleWork();
359
390
  return task;
@@ -364,8 +395,10 @@ var WorkerPool = class {
364
395
  await this.completed(true);
365
396
  }
366
397
  this.eventSubject.next({
367
- remainingQueue: [...this.taskQueue],
368
- type: "terminated" /* terminated */
398
+ remainingQueue: [
399
+ ...this.taskQueue
400
+ ],
401
+ type: PoolEventType.terminated
369
402
  });
370
403
  this.eventSubject.complete();
371
404
  await Promise.all(this.workers.map(async (worker) => Thread.terminate(await worker.init)));
@@ -374,6 +407,7 @@ var WorkerPool = class {
374
407
  function PoolConstructor(spawnWorker, optionsOrSize) {
375
408
  return new WorkerPool(spawnWorker, optionsOrSize);
376
409
  }
410
+ __name(PoolConstructor, "PoolConstructor");
377
411
  PoolConstructor.EventType = PoolEventType;
378
412
  var Pool = PoolConstructor;
379
413
 
@@ -398,7 +432,7 @@ var DefaultErrorSerializer = {
398
432
  };
399
433
  }
400
434
  };
401
- var isSerializedError = (thing) => thing && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error";
435
+ var isSerializedError = /* @__PURE__ */ __name((thing) => thing && typeof thing === "object" && "__error_marker" in thing && thing.__error_marker === "$$error", "isSerializedError");
402
436
  var DefaultSerializer = {
403
437
  deserialize(message) {
404
438
  return isSerializedError(message) ? DefaultErrorSerializer.deserialize(message) : message;
@@ -413,12 +447,14 @@ globalThis.registeredSerializer = globalThis.registeredSerializer ?? DefaultSeri
413
447
  function deserialize(message) {
414
448
  return globalThis.registeredSerializer.deserialize(message);
415
449
  }
450
+ __name(deserialize, "deserialize");
416
451
  function serialize(input) {
417
452
  return globalThis.registeredSerializer.serialize(input);
418
453
  }
454
+ __name(serialize, "serialize");
419
455
 
420
456
  // src/promise.ts
421
- var doNothing = () => void 0;
457
+ var doNothing = /* @__PURE__ */ __name(() => void 0, "doNothing");
422
458
  function createPromiseWithResolver() {
423
459
  let alreadyResolved = false;
424
460
  let resolvedTo;
@@ -430,13 +466,25 @@ function createPromiseWithResolver() {
430
466
  resolver = resolve;
431
467
  }
432
468
  });
433
- const exposedResolver = (value) => {
469
+ const exposedResolver = /* @__PURE__ */ __name((value) => {
434
470
  alreadyResolved = true;
435
471
  resolvedTo = value;
436
472
  resolver(resolvedTo);
437
- };
438
- return [promise, exposedResolver];
473
+ }, "exposedResolver");
474
+ return [
475
+ promise,
476
+ exposedResolver
477
+ ];
439
478
  }
479
+ __name(createPromiseWithResolver, "createPromiseWithResolver");
480
+
481
+ // src/types/master.ts
482
+ var WorkerEventType = /* @__PURE__ */ function(WorkerEventType2) {
483
+ WorkerEventType2["internalError"] = "internalError";
484
+ WorkerEventType2["message"] = "message";
485
+ WorkerEventType2["termination"] = "termination";
486
+ return WorkerEventType2;
487
+ }({});
440
488
 
441
489
  // src/master/invocation-proxy.ts
442
490
  import DebugLogger2 from "debug";
@@ -444,17 +492,22 @@ import { multicast as multicast2, Observable as Observable3 } from "observable-f
444
492
 
445
493
  // src/observable-promise.ts
446
494
  import { Observable as Observable2 } from "observable-fns";
447
- var doNothing2 = () => {
448
- };
449
- var returnInput = (input) => input;
450
- var runDeferred = (fn) => Promise.resolve().then(fn);
495
+ var doNothing2 = /* @__PURE__ */ __name(() => {
496
+ }, "doNothing");
497
+ var returnInput = /* @__PURE__ */ __name((input) => input, "returnInput");
498
+ var runDeferred = /* @__PURE__ */ __name((fn) => Promise.resolve().then(fn), "runDeferred");
451
499
  function fail2(error) {
452
500
  throw error;
453
501
  }
502
+ __name(fail2, "fail");
454
503
  function isThenable(thing) {
455
504
  return thing && typeof thing.then === "function";
456
505
  }
506
+ __name(isThenable, "isThenable");
457
507
  var ObservablePromise = class _ObservablePromise extends Observable2 {
508
+ static {
509
+ __name(this, "ObservablePromise");
510
+ }
458
511
  [Symbol.toStringTag] = "[object ObservablePromise]";
459
512
  initHasRun = false;
460
513
  fulfillmentCallbacks = [];
@@ -513,7 +566,7 @@ var ObservablePromise = class _ObservablePromise extends Observable2 {
513
566
  const onRejected = onRejectedRaw || fail2;
514
567
  let onRejectedCalled = false;
515
568
  return new Promise((resolve, reject) => {
516
- const rejectionCallback = (error) => {
569
+ const rejectionCallback = /* @__PURE__ */ __name((error) => {
517
570
  if (onRejectedCalled) return;
518
571
  onRejectedCalled = true;
519
572
  try {
@@ -521,17 +574,19 @@ var ObservablePromise = class _ObservablePromise extends Observable2 {
521
574
  } catch (anotherError) {
522
575
  reject(anotherError);
523
576
  }
524
- };
525
- const fulfillmentCallback = (value) => {
577
+ }, "rejectionCallback");
578
+ const fulfillmentCallback = /* @__PURE__ */ __name((value) => {
526
579
  try {
527
580
  resolve(onFulfilled(value));
528
581
  } catch (ex) {
529
582
  const error = ex;
530
583
  rejectionCallback(error);
531
584
  }
532
- };
585
+ }, "fulfillmentCallback");
533
586
  if (!this.initHasRun) {
534
- this.subscribe({ error: rejectionCallback });
587
+ this.subscribe({
588
+ error: rejectionCallback
589
+ });
535
590
  }
536
591
  if (this.state === "fulfilled") {
537
592
  return resolve(onFulfilled(this.firstValue));
@@ -549,23 +604,20 @@ var ObservablePromise = class _ObservablePromise extends Observable2 {
549
604
  }
550
605
  finally(onCompleted) {
551
606
  const handler = onCompleted || doNothing2;
552
- return this.then(
553
- (value) => {
554
- handler();
555
- return value;
556
- },
557
- () => handler()
558
- );
607
+ return this.then((value) => {
608
+ handler();
609
+ return value;
610
+ }, () => handler());
559
611
  }
560
612
  static from(thing) {
561
613
  return isThenable(thing) ? new _ObservablePromise((observer) => {
562
- const onFulfilled = (value) => {
614
+ const onFulfilled = /* @__PURE__ */ __name((value) => {
563
615
  observer.next(value);
564
616
  observer.complete();
565
- };
566
- const onRejected = (error) => {
617
+ }, "onFulfilled");
618
+ const onRejected = /* @__PURE__ */ __name((error) => {
567
619
  observer.error(error);
568
- };
620
+ }, "onRejected");
569
621
  thing.then(onFulfilled, onRejected);
570
622
  }) : super.from(thing);
571
623
  }
@@ -575,18 +627,36 @@ var ObservablePromise = class _ObservablePromise extends Observable2 {
575
627
  function isTransferDescriptor(thing) {
576
628
  return thing && typeof thing === "object" && thing[$transferable];
577
629
  }
630
+ __name(isTransferDescriptor, "isTransferDescriptor");
631
+
632
+ // src/types/messages.ts
633
+ var MasterMessageType = /* @__PURE__ */ function(MasterMessageType2) {
634
+ MasterMessageType2["cancel"] = "cancel";
635
+ MasterMessageType2["run"] = "run";
636
+ return MasterMessageType2;
637
+ }({});
638
+ var WorkerMessageType = /* @__PURE__ */ function(WorkerMessageType2) {
639
+ WorkerMessageType2["error"] = "error";
640
+ WorkerMessageType2["init"] = "init";
641
+ WorkerMessageType2["result"] = "result";
642
+ WorkerMessageType2["running"] = "running";
643
+ WorkerMessageType2["uncaughtError"] = "uncaughtError";
644
+ return WorkerMessageType2;
645
+ }({});
578
646
 
579
647
  // src/master/invocation-proxy.ts
580
648
  var debugMessages = DebugLogger2("threads:master:messages");
581
649
  var nextJobUID = 1;
582
- var dedupe = (array) => [...new Set(array)];
583
- var isJobErrorMessage = (data) => data && data.type === "error" /* error */;
584
- var isJobResultMessage = (data) => data && data.type === "result" /* result */;
585
- var isJobStartMessage = (data) => data && data.type === "running" /* running */;
650
+ var dedupe = /* @__PURE__ */ __name((array) => [
651
+ ...new Set(array)
652
+ ], "dedupe");
653
+ var isJobErrorMessage = /* @__PURE__ */ __name((data) => data && data.type === WorkerMessageType.error, "isJobErrorMessage");
654
+ var isJobResultMessage = /* @__PURE__ */ __name((data) => data && data.type === WorkerMessageType.result, "isJobResultMessage");
655
+ var isJobStartMessage = /* @__PURE__ */ __name((data) => data && data.type === WorkerMessageType.running, "isJobStartMessage");
586
656
  function createObservableForJob(worker, jobUID) {
587
657
  return new Observable3((observer) => {
588
658
  let asyncType;
589
- const messageHandler = (event) => {
659
+ const messageHandler = /* @__PURE__ */ __name((event) => {
590
660
  debugMessages("Message from worker:", event.data);
591
661
  if (!event.data || event.data.uid !== jobUID) return;
592
662
  if (isJobStartMessage(event.data)) {
@@ -616,12 +686,12 @@ function createObservableForJob(worker, jobUID) {
616
686
  }
617
687
  worker.removeEventListener("message", messageHandler);
618
688
  }
619
- };
689
+ }, "messageHandler");
620
690
  worker.addEventListener("message", messageHandler);
621
691
  return () => {
622
692
  if (asyncType === "observable" || !asyncType) {
623
693
  const cancelMessage = {
624
- type: "cancel" /* cancel */,
694
+ type: MasterMessageType.cancel,
625
695
  uid: jobUID
626
696
  };
627
697
  worker.postMessage(cancelMessage);
@@ -630,6 +700,7 @@ function createObservableForJob(worker, jobUID) {
630
700
  };
631
701
  });
632
702
  }
703
+ __name(createObservableForJob, "createObservableForJob");
633
704
  function prepareArguments(rawArgs) {
634
705
  if (rawArgs.length === 0) {
635
706
  return {
@@ -652,6 +723,7 @@ function prepareArguments(rawArgs) {
652
723
  transferables: transferables.length === 0 ? transferables : dedupe(transferables)
653
724
  };
654
725
  }
726
+ __name(prepareArguments, "prepareArguments");
655
727
  function createProxyFunction(worker, method) {
656
728
  return (...rawArgs) => {
657
729
  const uid = nextJobUID++;
@@ -659,7 +731,7 @@ function createProxyFunction(worker, method) {
659
731
  const runMessage = {
660
732
  args,
661
733
  method,
662
- type: "run" /* run */,
734
+ type: MasterMessageType.run,
663
735
  uid
664
736
  };
665
737
  debugMessages("Sending command to run function to worker:", runMessage);
@@ -671,6 +743,7 @@ function createProxyFunction(worker, method) {
671
743
  return ObservablePromise.from(multicast2(createObservableForJob(worker, uid)));
672
744
  };
673
745
  }
746
+ __name(createProxyFunction, "createProxyFunction");
674
747
  function createProxyModule(worker, methodNames) {
675
748
  const proxy = {};
676
749
  for (const methodName of methodNames) {
@@ -678,26 +751,31 @@ function createProxyModule(worker, methodNames) {
678
751
  }
679
752
  return proxy;
680
753
  }
754
+ __name(createProxyModule, "createProxyModule");
681
755
 
682
756
  // src/master/spawn.ts
683
757
  var debugMessages2 = DebugLogger3("threads:master:messages");
684
758
  var debugSpawn = DebugLogger3("threads:master:spawn");
685
759
  var debugThreadUtils = DebugLogger3("threads:master:thread-utils");
686
- var isInitMessage = (data) => data && data.type === "init";
687
- var isUncaughtErrorMessage = (data) => data && data.type === "uncaughtError";
760
+ var isInitMessage = /* @__PURE__ */ __name((data) => data && data.type === "init", "isInitMessage");
761
+ var isUncaughtErrorMessage = /* @__PURE__ */ __name((data) => data && data.type === "uncaughtError", "isUncaughtErrorMessage");
688
762
  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;
689
763
  async function withTimeout(promise, timeoutInMs, errorMessage) {
690
764
  let timeoutHandle;
691
765
  const timeout = new Promise((resolve, reject) => {
692
766
  timeoutHandle = setTimeout(() => reject(new Error(errorMessage)), timeoutInMs);
693
767
  });
694
- const result = await Promise.race([promise, timeout]);
768
+ const result = await Promise.race([
769
+ promise,
770
+ timeout
771
+ ]);
695
772
  clearTimeout(timeoutHandle);
696
773
  return result;
697
774
  }
775
+ __name(withTimeout, "withTimeout");
698
776
  function receiveInitMessage(worker) {
699
777
  return new Promise((resolve, reject) => {
700
- const messageHandler = (event) => {
778
+ const messageHandler = /* @__PURE__ */ __name((event) => {
701
779
  debugMessages2("Message from worker before finishing initialization:", event.data);
702
780
  if (isInitMessage(event.data)) {
703
781
  worker.removeEventListener("message", messageHandler);
@@ -706,31 +784,34 @@ function receiveInitMessage(worker) {
706
784
  worker.removeEventListener("message", messageHandler);
707
785
  reject(deserialize(event.data.error));
708
786
  }
709
- };
787
+ }, "messageHandler");
710
788
  worker.addEventListener("message", messageHandler);
711
789
  });
712
790
  }
791
+ __name(receiveInitMessage, "receiveInitMessage");
713
792
  function createEventObservable(worker, workerTermination) {
714
793
  return new Observable4((observer) => {
715
- const messageHandler = (messageEvent) => {
794
+ const messageHandler = /* @__PURE__ */ __name((messageEvent) => {
716
795
  const workerEvent = {
717
796
  data: messageEvent.data,
718
- type: "message" /* message */
797
+ type: WorkerEventType.message
719
798
  };
720
799
  observer.next(workerEvent);
721
- };
722
- const rejectionHandler = (errorEvent) => {
800
+ }, "messageHandler");
801
+ const rejectionHandler = /* @__PURE__ */ __name((errorEvent) => {
723
802
  debugThreadUtils("Unhandled promise rejection event in thread:", errorEvent);
724
803
  const workerEvent = {
725
804
  error: new Error(errorEvent.reason),
726
- type: "internalError" /* internalError */
805
+ type: WorkerEventType.internalError
727
806
  };
728
807
  observer.next(workerEvent);
729
- };
808
+ }, "rejectionHandler");
730
809
  worker.addEventListener("message", messageHandler);
731
810
  worker.addEventListener("unhandledrejection", rejectionHandler);
732
811
  workerTermination.then(() => {
733
- const terminationEvent = { type: "termination" /* termination */ };
812
+ const terminationEvent = {
813
+ type: WorkerEventType.termination
814
+ };
734
815
  worker.removeEventListener("message", messageHandler);
735
816
  worker.removeEventListener("unhandledrejection", rejectionHandler);
736
817
  observer.next(terminationEvent);
@@ -738,17 +819,22 @@ function createEventObservable(worker, workerTermination) {
738
819
  });
739
820
  });
740
821
  }
822
+ __name(createEventObservable, "createEventObservable");
741
823
  function createTerminator(worker) {
742
824
  const [termination, resolver] = createPromiseWithResolver();
743
- const terminate = async () => {
825
+ const terminate = /* @__PURE__ */ __name(async () => {
744
826
  debugThreadUtils("Terminating worker");
745
827
  await worker.terminate();
746
828
  resolver();
829
+ }, "terminate");
830
+ return {
831
+ terminate,
832
+ termination
747
833
  };
748
- return { terminate, termination };
749
834
  }
835
+ __name(createTerminator, "createTerminator");
750
836
  function setPrivateThreadProps(raw, worker, workerEvents, terminate) {
751
- const workerErrors = workerEvents.filter((event) => event.type === "internalError" /* internalError */).map((errorEvent) => errorEvent.error);
837
+ const workerErrors = workerEvents.filter((event) => event.type === WorkerEventType.internalError).map((errorEvent) => errorEvent.error);
752
838
  return Object.assign(raw, {
753
839
  [$errors]: workerErrors,
754
840
  [$events]: workerEvents,
@@ -756,14 +842,11 @@ function setPrivateThreadProps(raw, worker, workerEvents, terminate) {
756
842
  [$worker]: worker
757
843
  });
758
844
  }
845
+ __name(setPrivateThreadProps, "setPrivateThreadProps");
759
846
  async function spawn(worker, options) {
760
847
  debugSpawn("Initializing new thread");
761
848
  const timeout = options && options.timeout ? options.timeout : initMessageTimeout;
762
- const initMessage = await withTimeout(
763
- receiveInitMessage(worker),
764
- timeout,
765
- `Timeout: Did not receive an init message from worker after ${timeout}ms. Make sure the worker calls expose().`
766
- );
849
+ 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().`);
767
850
  const exposed = initMessage.exposed;
768
851
  const { termination, terminate } = createTerminator(worker);
769
852
  const events = createEventObservable(worker, termination);
@@ -778,6 +861,7 @@ async function spawn(worker, options) {
778
861
  throw new Error(`Worker init message states unexpected type of expose(): ${type}`);
779
862
  }
780
863
  }
864
+ __name(spawn, "spawn");
781
865
 
782
866
  // src/master/index-browser.ts
783
867
  var BlobWorker = getWorkerImplementation().blob;