@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,17 +1,170 @@
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 Worker = function() {
54
+ function Worker2(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, Worker2);
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(Worker2, "Worker");
123
+ _createClass(Worker2, [
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 Worker2;
160
+ }();
161
+ module.exports = Worker;
162
+ }
163
+ });
7
164
 
8
165
  // src/master/pool-node.ts
9
166
  import DebugLogger from "debug";
10
- import {
11
- multicast,
12
- Observable,
13
- Subject
14
- } from "observable-fns";
167
+ import { multicast, Observable, Subject } from "observable-fns";
15
168
 
16
169
  // src/master/implementation.node.ts
17
170
  import { EventEmitter } from "events";
@@ -21,15 +174,19 @@ import { cwd } from "process";
21
174
  import { Worker as NativeWorker } from "worker_threads";
22
175
  var defaultPoolSize = cpus().length;
23
176
  function resolveScriptPath(scriptPath, baseURL) {
24
- const makeAbsolute = (filePath) => {
177
+ const makeAbsolute = /* @__PURE__ */ __name((filePath) => {
25
178
  return path.isAbsolute(filePath) ? filePath : path.join(baseURL ?? cwd(), filePath);
26
- };
179
+ }, "makeAbsolute");
27
180
  const absolutePath = makeAbsolute(scriptPath);
28
181
  return absolutePath;
29
182
  }
183
+ __name(resolveScriptPath, "resolveScriptPath");
30
184
  function initWorkerThreadsWorker() {
31
185
  let allWorkers = [];
32
- class Worker extends NativeWorker {
186
+ let Worker = class Worker extends NativeWorker {
187
+ static {
188
+ __name(this, "Worker");
189
+ }
33
190
  mappedEventListeners;
34
191
  constructor(scriptPath, options) {
35
192
  const resolvedScriptPath = options && options.fromSource ? null : resolveScriptPath(scriptPath, (options ?? {})._baseURL);
@@ -37,15 +194,20 @@ function initWorkerThreadsWorker() {
37
194
  super(resolvedScriptPath, options);
38
195
  } else {
39
196
  const sourceCode = scriptPath;
40
- super(sourceCode, { ...options, eval: true });
197
+ super(sourceCode, {
198
+ ...options,
199
+ eval: true
200
+ });
41
201
  }
42
202
  this.mappedEventListeners = /* @__PURE__ */ new WeakMap();
43
203
  allWorkers.push(this);
44
204
  }
45
205
  addEventListener(eventName, rawListener) {
46
- const listener = (message) => {
47
- rawListener({ data: message });
48
- };
206
+ const listener = /* @__PURE__ */ __name((message) => {
207
+ rawListener({
208
+ data: message
209
+ });
210
+ }, "listener");
49
211
  this.mappedEventListeners.set(rawListener, listener);
50
212
  this.on(eventName, listener);
51
213
  }
@@ -53,41 +215,55 @@ function initWorkerThreadsWorker() {
53
215
  const listener = this.mappedEventListeners.get(rawListener) || rawListener;
54
216
  this.off(eventName, listener);
55
217
  }
56
- }
57
- const terminateWorkersAndMaster = () => {
58
- Promise.all(allWorkers.map((worker) => worker.terminate())).then(
59
- () => process.exit(0),
60
- () => process.exit(1)
61
- );
62
- allWorkers = [];
63
218
  };
219
+ const terminateWorkersAndMaster = /* @__PURE__ */ __name(() => {
220
+ Promise.all(allWorkers.map((worker) => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
221
+ allWorkers = [];
222
+ }, "terminateWorkersAndMaster");
64
223
  process.on("SIGINT", () => terminateWorkersAndMaster());
65
224
  process.on("SIGTERM", () => terminateWorkersAndMaster());
66
- class BlobWorker extends Worker {
225
+ let BlobWorker = class BlobWorker extends Worker {
226
+ static {
227
+ __name(this, "BlobWorker");
228
+ }
67
229
  constructor(blob, options) {
68
- super(Buffer.from(blob).toString("utf-8"), { ...options, fromSource: true });
230
+ super(Buffer.from(blob).toString("utf-8"), {
231
+ ...options,
232
+ fromSource: true
233
+ });
69
234
  }
70
235
  static fromText(source, options) {
71
- return new Worker(source, { ...options, fromSource: true });
236
+ return new Worker(source, {
237
+ ...options,
238
+ fromSource: true
239
+ });
72
240
  }
73
- }
241
+ };
74
242
  return {
75
243
  blob: BlobWorker,
76
244
  default: Worker
77
245
  };
78
246
  }
247
+ __name(initWorkerThreadsWorker, "initWorkerThreadsWorker");
79
248
  function initTinyWorker() {
80
- const TinyWorker = __require("tiny-worker");
249
+ const TinyWorker = require_lib();
81
250
  let allWorkers = [];
82
- class Worker extends TinyWorker {
251
+ let Worker = class Worker extends TinyWorker {
252
+ static {
253
+ __name(this, "Worker");
254
+ }
83
255
  emitter;
84
256
  constructor(scriptPath, options) {
85
257
  const resolvedScriptPath = options && options.fromSource ? null : process.platform === "win32" ? `file:///${resolveScriptPath(scriptPath).replaceAll("\\", "/")}` : resolveScriptPath(scriptPath);
86
258
  if (resolvedScriptPath) {
87
- super(resolvedScriptPath, [], { esm: true });
259
+ super(resolvedScriptPath, [], {
260
+ esm: true
261
+ });
88
262
  } else {
89
263
  const sourceCode = scriptPath;
90
- super(new Function(sourceCode), [], { esm: true });
264
+ super(new Function(sourceCode), [], {
265
+ esm: true
266
+ });
91
267
  }
92
268
  allWorkers.push(this);
93
269
  this.emitter = new EventEmitter();
@@ -104,29 +280,36 @@ function initTinyWorker() {
104
280
  allWorkers = allWorkers.filter((worker) => worker !== this);
105
281
  return super.terminate();
106
282
  }
107
- }
108
- const terminateWorkersAndMaster = () => {
109
- Promise.all(allWorkers.map((worker) => worker.terminate())).then(
110
- () => process.exit(0),
111
- () => process.exit(1)
112
- );
113
- allWorkers = [];
114
283
  };
284
+ const terminateWorkersAndMaster = /* @__PURE__ */ __name(() => {
285
+ Promise.all(allWorkers.map((worker) => worker.terminate())).then(() => process.exit(0), () => process.exit(1));
286
+ allWorkers = [];
287
+ }, "terminateWorkersAndMaster");
115
288
  process.on("SIGINT", () => terminateWorkersAndMaster());
116
289
  process.on("SIGTERM", () => terminateWorkersAndMaster());
117
- class BlobWorker extends Worker {
290
+ let BlobWorker = class BlobWorker extends Worker {
291
+ static {
292
+ __name(this, "BlobWorker");
293
+ }
118
294
  constructor(blob, options) {
119
- super(Buffer.from(blob).toString("utf-8"), { ...options, fromSource: true });
295
+ super(Buffer.from(blob).toString("utf-8"), {
296
+ ...options,
297
+ fromSource: true
298
+ });
120
299
  }
121
300
  static fromText(source, options) {
122
- return new Worker(source, { ...options, fromSource: true });
301
+ return new Worker(source, {
302
+ ...options,
303
+ fromSource: true
304
+ });
123
305
  }
124
- }
306
+ };
125
307
  return {
126
308
  blob: BlobWorker,
127
309
  default: Worker
128
310
  };
129
311
  }
312
+ __name(initTinyWorker, "initTinyWorker");
130
313
  var implementation;
131
314
  var isTinyWorker;
132
315
  function selectWorkerImplementation() {
@@ -140,12 +323,14 @@ function selectWorkerImplementation() {
140
323
  return initTinyWorker();
141
324
  }
142
325
  }
326
+ __name(selectWorkerImplementation, "selectWorkerImplementation");
143
327
  function getWorkerImplementation() {
144
328
  if (!implementation) {
145
329
  implementation = selectWorkerImplementation();
146
330
  }
147
331
  return implementation;
148
332
  }
333
+ __name(getWorkerImplementation, "getWorkerImplementation");
149
334
  function isWorkerRuntime() {
150
335
  if (isTinyWorker) {
151
336
  return globalThis !== void 0 && self["postMessage"] ? true : false;
@@ -154,9 +339,10 @@ function isWorkerRuntime() {
154
339
  return !isMainThread;
155
340
  }
156
341
  }
342
+ __name(isWorkerRuntime, "isWorkerRuntime");
157
343
 
158
344
  // src/master/pool-types.ts
159
- var PoolEventType = /* @__PURE__ */ ((PoolEventType2) => {
345
+ var PoolEventType = /* @__PURE__ */ function(PoolEventType2) {
160
346
  PoolEventType2["initialized"] = "initialized";
161
347
  PoolEventType2["taskCanceled"] = "taskCanceled";
162
348
  PoolEventType2["taskCompleted"] = "taskCompleted";
@@ -166,7 +352,7 @@ var PoolEventType = /* @__PURE__ */ ((PoolEventType2) => {
166
352
  PoolEventType2["taskStart"] = "taskStart";
167
353
  PoolEventType2["terminated"] = "terminated";
168
354
  return PoolEventType2;
169
- })(PoolEventType || {});
355
+ }({});
170
356
 
171
357
  // src/symbols.ts
172
358
  var $errors = Symbol("thread.errors");
@@ -179,6 +365,7 @@ var $worker = Symbol("thread.worker");
179
365
  function fail(message) {
180
366
  throw new Error(message);
181
367
  }
368
+ __name(fail, "fail");
182
369
  var Thread = {
183
370
  /** Return an observable that can be used to subscribe to all errors happening in the thread. */
184
371
  errors(thread) {
@@ -203,24 +390,33 @@ function createArray(size) {
203
390
  }
204
391
  return array;
205
392
  }
393
+ __name(createArray, "createArray");
206
394
  function delay(ms) {
207
395
  return new Promise((resolve) => setTimeout(resolve, ms));
208
396
  }
397
+ __name(delay, "delay");
209
398
  function flatMap(array, mapper) {
210
- return array.reduce((flattened, element) => [...flattened, ...mapper(element)], []);
399
+ return array.reduce((flattened, element) => [
400
+ ...flattened,
401
+ ...mapper(element)
402
+ ], []);
211
403
  }
404
+ __name(flatMap, "flatMap");
212
405
  function slugify(text) {
213
406
  return text.replaceAll(/\W/g, " ").trim().replaceAll(/\s+/g, "-");
214
407
  }
408
+ __name(slugify, "slugify");
215
409
  function spawnWorkers(spawnWorker, count) {
216
- return createArray(count).map(
217
- () => ({
218
- init: spawnWorker(),
219
- runningTasks: []
220
- })
221
- );
410
+ return createArray(count).map(() => ({
411
+ init: spawnWorker(),
412
+ runningTasks: []
413
+ }));
222
414
  }
223
- var WorkerPool = class {
415
+ __name(spawnWorkers, "spawnWorkers");
416
+ var WorkerPool = class WorkerPool2 {
417
+ static {
418
+ __name(this, "WorkerPool");
419
+ }
224
420
  static EventType = PoolEventType;
225
421
  debug;
226
422
  eventObservable;
@@ -232,23 +428,22 @@ var WorkerPool = class {
232
428
  nextTaskID = 1;
233
429
  taskQueue = [];
234
430
  constructor(spawnWorker, optionsOrSize) {
235
- const options = typeof optionsOrSize === "number" ? { size: optionsOrSize } : optionsOrSize || {};
431
+ const options = typeof optionsOrSize === "number" ? {
432
+ size: optionsOrSize
433
+ } : optionsOrSize || {};
236
434
  const { size = defaultPoolSize } = options;
237
435
  this.debug = DebugLogger(`threads:pool:${slugify(options.name || String(nextPoolID++))}`);
238
436
  this.options = options;
239
437
  this.workers = spawnWorkers(spawnWorker, size);
240
438
  this.eventObservable = multicast(Observable.from(this.eventSubject));
241
- Promise.all(this.workers.map((worker) => worker.init)).then(
242
- () => this.eventSubject.next({
243
- size: this.workers.length,
244
- type: "initialized" /* initialized */
245
- }),
246
- (error) => {
247
- this.debug("Error while initializing pool worker:", error);
248
- this.eventSubject.error(error);
249
- this.initErrors.push(error);
250
- }
251
- );
439
+ Promise.all(this.workers.map((worker) => worker.init)).then(() => this.eventSubject.next({
440
+ size: this.workers.length,
441
+ type: PoolEventType.initialized
442
+ }), (error) => {
443
+ this.debug("Error while initializing pool worker:", error);
444
+ this.eventSubject.error(error);
445
+ this.initErrors.push(error);
446
+ });
252
447
  }
253
448
  findIdlingWorker() {
254
449
  const { concurrency = 1 } = this.options;
@@ -259,7 +454,7 @@ var WorkerPool = class {
259
454
  this.debug(`Running task #${task.id} on worker #${workerID}...`);
260
455
  this.eventSubject.next({
261
456
  taskID: task.id,
262
- type: "taskStart" /* taskStart */,
457
+ type: PoolEventType.taskStart,
263
458
  workerID
264
459
  });
265
460
  try {
@@ -268,7 +463,7 @@ var WorkerPool = class {
268
463
  this.eventSubject.next({
269
464
  returnValue,
270
465
  taskID: task.id,
271
- type: "taskCompleted" /* taskCompleted */,
466
+ type: PoolEventType.taskCompleted,
272
467
  workerID
273
468
  });
274
469
  } catch (ex) {
@@ -277,16 +472,16 @@ var WorkerPool = class {
277
472
  this.eventSubject.next({
278
473
  error,
279
474
  taskID: task.id,
280
- type: "taskFailed" /* taskFailed */,
475
+ type: PoolEventType.taskFailed,
281
476
  workerID
282
477
  });
283
478
  }
284
479
  }
285
480
  run(worker, task) {
286
481
  const runPromise = (async () => {
287
- const removeTaskFromWorkersRunningTasks = () => {
482
+ const removeTaskFromWorkersRunningTasks = /* @__PURE__ */ __name(() => {
288
483
  worker.runningTasks = worker.runningTasks.filter((someRunPromise) => someRunPromise !== runPromise);
289
- };
484
+ }, "removeTaskFromWorkersRunningTasks");
290
485
  await delay(0);
291
486
  try {
292
487
  await this.runPoolTask(worker, task);
@@ -306,7 +501,9 @@ var WorkerPool = class {
306
501
  const nextTask = this.taskQueue.shift();
307
502
  if (!nextTask) {
308
503
  this.debug("Task queue is empty");
309
- this.eventSubject.next({ type: "taskQueueDrained" /* taskQueueDrained */ });
504
+ this.eventSubject.next({
505
+ type: PoolEventType.taskQueueDrained
506
+ });
310
507
  return;
311
508
  }
312
509
  this.run(availableWorker, nextTask);
@@ -314,13 +511,13 @@ var WorkerPool = class {
314
511
  taskCompletion(taskID) {
315
512
  return new Promise((resolve, reject) => {
316
513
  const eventSubscription = this.events().subscribe((event) => {
317
- if (event.type === "taskCompleted" /* taskCompleted */ && event.taskID === taskID) {
514
+ if (event.type === PoolEventType.taskCompleted && event.taskID === taskID) {
318
515
  eventSubscription.unsubscribe();
319
516
  resolve(event.returnValue);
320
- } else if (event.type === "taskFailed" /* taskFailed */ && event.taskID === taskID) {
517
+ } else if (event.type === PoolEventType.taskFailed && event.taskID === taskID) {
321
518
  eventSubscription.unsubscribe();
322
519
  reject(event.error);
323
- } else if (event.type === "terminated" /* terminated */) {
520
+ } else if (event.type === PoolEventType.terminated) {
324
521
  eventSubscription.unsubscribe();
325
522
  reject(new Error("Pool has been terminated before task was run."));
326
523
  }
@@ -328,10 +525,10 @@ var WorkerPool = class {
328
525
  });
329
526
  }
330
527
  async settled(allowResolvingImmediately = false) {
331
- const getCurrentlyRunningTasks = () => flatMap(this.workers, (worker) => worker.runningTasks);
528
+ const getCurrentlyRunningTasks = /* @__PURE__ */ __name(() => flatMap(this.workers, (worker) => worker.runningTasks), "getCurrentlyRunningTasks");
332
529
  const taskFailures = [];
333
530
  const failureSubscription = this.eventObservable.subscribe((event) => {
334
- if (event.type === "taskFailed" /* taskFailed */) {
531
+ if (event.type === PoolEventType.taskFailed) {
335
532
  taskFailures.push(event.error);
336
533
  }
337
534
  });
@@ -346,12 +543,11 @@ var WorkerPool = class {
346
543
  const subscription = this.eventObservable.subscribe({
347
544
  error: reject,
348
545
  next(event) {
349
- if (event.type === "taskQueueDrained" /* taskQueueDrained */) {
546
+ if (event.type === PoolEventType.taskQueueDrained) {
350
547
  subscription.unsubscribe();
351
548
  resolve(void 0);
352
549
  }
353
550
  }
354
- // make a pool-wide error reject the completed() result promise
355
551
  });
356
552
  });
357
553
  await Promise.allSettled(getCurrentlyRunningTasks());
@@ -364,18 +560,20 @@ var WorkerPool = class {
364
560
  const subscription = this.eventObservable.subscribe({
365
561
  error: reject,
366
562
  next(event) {
367
- if (event.type === "taskQueueDrained" /* taskQueueDrained */) {
563
+ if (event.type === PoolEventType.taskQueueDrained) {
368
564
  subscription.unsubscribe();
369
565
  resolve(settlementPromise);
370
- } else if (event.type === "taskFailed" /* taskFailed */) {
566
+ } else if (event.type === PoolEventType.taskFailed) {
371
567
  subscription.unsubscribe();
372
568
  reject(event.error);
373
569
  }
374
570
  }
375
- // make a pool-wide error reject the completed() result promise
376
571
  });
377
572
  });
378
- const errors = await Promise.race([settlementPromise, earlyExitPromise]);
573
+ const errors = await Promise.race([
574
+ settlementPromise,
575
+ earlyExitPromise
576
+ ]);
379
577
  if (errors.length > 0) {
380
578
  throw errors[0];
381
579
  }
@@ -397,28 +595,26 @@ var WorkerPool = class {
397
595
  this.debug(`Task #${taskID} errored:`, error);
398
596
  });
399
597
  const task = {
400
- cancel: () => {
598
+ cancel: /* @__PURE__ */ __name(() => {
401
599
  if (!this.taskQueue.includes(task)) return;
402
600
  this.taskQueue = this.taskQueue.filter((someTask) => someTask !== task);
403
601
  this.eventSubject.next({
404
602
  taskID: task.id,
405
- type: "taskCanceled" /* taskCanceled */
603
+ type: PoolEventType.taskCanceled
406
604
  });
407
- },
605
+ }, "cancel"),
408
606
  id: taskID,
409
607
  run: taskFunction,
410
608
  then: taskCompletion.then.bind(taskCompletion)
411
609
  };
412
610
  if (this.taskQueue.length >= maxQueuedJobs) {
413
- throw new Error(
414
- "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."
415
- );
611
+ 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.");
416
612
  }
417
613
  this.debug(`Queueing task #${task.id}...`);
418
614
  this.taskQueue.push(task);
419
615
  this.eventSubject.next({
420
616
  taskID: task.id,
421
- type: "taskQueued" /* taskQueued */
617
+ type: PoolEventType.taskQueued
422
618
  });
423
619
  this.scheduleWork();
424
620
  return task;
@@ -429,8 +625,10 @@ var WorkerPool = class {
429
625
  await this.completed(true);
430
626
  }
431
627
  this.eventSubject.next({
432
- remainingQueue: [...this.taskQueue],
433
- type: "terminated" /* terminated */
628
+ remainingQueue: [
629
+ ...this.taskQueue
630
+ ],
631
+ type: PoolEventType.terminated
434
632
  });
435
633
  this.eventSubject.complete();
436
634
  await Promise.all(this.workers.map(async (worker) => Thread.terminate(await worker.init)));
@@ -439,6 +637,7 @@ var WorkerPool = class {
439
637
  function PoolConstructor(spawnWorker, optionsOrSize) {
440
638
  return new WorkerPool(spawnWorker, optionsOrSize);
441
639
  }
640
+ __name(PoolConstructor, "PoolConstructor");
442
641
  PoolConstructor.EventType = PoolEventType;
443
642
  var Pool = PoolConstructor;
444
643
  export {