@loaders.gl/worker-utils 4.2.0-alpha.4 → 4.2.0-alpha.6

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 (81) hide show
  1. package/dist/index.cjs +225 -86
  2. package/dist/index.cjs.map +7 -0
  3. package/dist/index.d.ts +18 -18
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +19 -8
  6. package/dist/lib/async-queue/async-queue.js +83 -68
  7. package/dist/lib/env-utils/assert.js +10 -4
  8. package/dist/lib/env-utils/globals.js +19 -7
  9. package/dist/lib/env-utils/version.js +20 -11
  10. package/dist/lib/library-utils/library-utils.js +148 -73
  11. package/dist/lib/node/require-utils.node.js +72 -43
  12. package/dist/lib/node/worker_threads-browser.js +9 -2
  13. package/dist/lib/node/worker_threads.js +4 -2
  14. package/dist/lib/process-utils/child-process-proxy.d.ts +1 -3
  15. package/dist/lib/process-utils/child-process-proxy.d.ts.map +1 -1
  16. package/dist/lib/process-utils/child-process-proxy.js +103 -93
  17. package/dist/lib/process-utils/process-utils.js +28 -23
  18. package/dist/lib/worker-api/create-worker.d.ts +1 -1
  19. package/dist/lib/worker-api/create-worker.d.ts.map +1 -1
  20. package/dist/lib/worker-api/create-worker.js +77 -74
  21. package/dist/lib/worker-api/get-worker-url.d.ts +1 -1
  22. package/dist/lib/worker-api/get-worker-url.d.ts.map +1 -1
  23. package/dist/lib/worker-api/get-worker-url.js +52 -26
  24. package/dist/lib/worker-api/process-on-worker.d.ts +1 -1
  25. package/dist/lib/worker-api/process-on-worker.d.ts.map +1 -1
  26. package/dist/lib/worker-api/process-on-worker.js +70 -67
  27. package/dist/lib/worker-api/validate-worker-version.d.ts +1 -1
  28. package/dist/lib/worker-api/validate-worker-version.d.ts.map +1 -1
  29. package/dist/lib/worker-api/validate-worker-version.js +29 -14
  30. package/dist/lib/worker-farm/worker-body.d.ts +1 -1
  31. package/dist/lib/worker-farm/worker-body.d.ts.map +1 -1
  32. package/dist/lib/worker-farm/worker-body.js +109 -68
  33. package/dist/lib/worker-farm/worker-farm.d.ts +1 -1
  34. package/dist/lib/worker-farm/worker-farm.d.ts.map +1 -1
  35. package/dist/lib/worker-farm/worker-farm.js +80 -62
  36. package/dist/lib/worker-farm/worker-job.d.ts +2 -2
  37. package/dist/lib/worker-farm/worker-job.d.ts.map +1 -1
  38. package/dist/lib/worker-farm/worker-job.js +48 -32
  39. package/dist/lib/worker-farm/worker-pool.d.ts +3 -3
  40. package/dist/lib/worker-farm/worker-pool.d.ts.map +1 -1
  41. package/dist/lib/worker-farm/worker-pool.js +153 -111
  42. package/dist/lib/worker-farm/worker-thread.d.ts +1 -1
  43. package/dist/lib/worker-farm/worker-thread.d.ts.map +1 -1
  44. package/dist/lib/worker-farm/worker-thread.js +126 -94
  45. package/dist/lib/worker-utils/get-loadable-worker-url.js +54 -24
  46. package/dist/lib/worker-utils/get-transfer-list.js +79 -44
  47. package/dist/lib/worker-utils/remove-nontransferable-options.js +23 -14
  48. package/dist/null-worker-node.js +6 -1
  49. package/dist/null-worker-node.js.map +2 -2
  50. package/dist/null-worker.js +3 -1
  51. package/dist/null-worker.js.map +2 -2
  52. package/dist/types.js +3 -1
  53. package/dist/workers/null-worker.js +6 -3
  54. package/package.json +11 -11
  55. package/src/lib/process-utils/child-process-proxy.ts +1 -1
  56. package/src/lib/worker-farm/worker-body.ts +7 -2
  57. package/dist/index.js.map +0 -1
  58. package/dist/lib/async-queue/async-queue.js.map +0 -1
  59. package/dist/lib/env-utils/assert.js.map +0 -1
  60. package/dist/lib/env-utils/globals.js.map +0 -1
  61. package/dist/lib/env-utils/version.js.map +0 -1
  62. package/dist/lib/library-utils/library-utils.js.map +0 -1
  63. package/dist/lib/node/require-utils.node.js.map +0 -1
  64. package/dist/lib/node/worker_threads-browser.js.map +0 -1
  65. package/dist/lib/node/worker_threads.js.map +0 -1
  66. package/dist/lib/process-utils/child-process-proxy.js.map +0 -1
  67. package/dist/lib/process-utils/process-utils.js.map +0 -1
  68. package/dist/lib/worker-api/create-worker.js.map +0 -1
  69. package/dist/lib/worker-api/get-worker-url.js.map +0 -1
  70. package/dist/lib/worker-api/process-on-worker.js.map +0 -1
  71. package/dist/lib/worker-api/validate-worker-version.js.map +0 -1
  72. package/dist/lib/worker-farm/worker-body.js.map +0 -1
  73. package/dist/lib/worker-farm/worker-farm.js.map +0 -1
  74. package/dist/lib/worker-farm/worker-job.js.map +0 -1
  75. package/dist/lib/worker-farm/worker-pool.js.map +0 -1
  76. package/dist/lib/worker-farm/worker-thread.js.map +0 -1
  77. package/dist/lib/worker-utils/get-loadable-worker-url.js.map +0 -1
  78. package/dist/lib/worker-utils/get-transfer-list.js.map +0 -1
  79. package/dist/lib/worker-utils/remove-nontransferable-options.js.map +0 -1
  80. package/dist/types.js.map +0 -1
  81. package/dist/workers/null-worker.js.map +0 -1
package/dist/index.cjs CHANGED
@@ -5,9 +5,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __commonJS = (cb, mod) => function __require() {
9
- return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
- };
8
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
9
  var __export = (target, all) => {
12
10
  for (var name in all)
13
11
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -29,26 +27,16 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
29
27
  mod
30
28
  ));
31
29
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
+ var __publicField = (obj, key, value) => {
31
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
32
+ return value;
33
+ };
32
34
 
33
- // (disabled):src/lib/node/require-utils.node
34
- var require_require_utils = __commonJS({
35
- "(disabled):src/lib/node/require-utils.node"() {
36
- "use strict";
37
- }
38
- });
39
-
40
- // (disabled):src/lib/process-utils/child-process-proxy
41
- var require_child_process_proxy = __commonJS({
42
- "(disabled):src/lib/process-utils/child-process-proxy"() {
43
- "use strict";
44
- }
45
- });
46
-
47
- // src/index.ts
48
- var src_exports = {};
49
- __export(src_exports, {
35
+ // dist/index.js
36
+ var dist_exports = {};
37
+ __export(dist_exports, {
50
38
  AsyncQueue: () => AsyncQueue,
51
- ChildProcessProxy: () => import_child_process_proxy.default,
39
+ ChildProcessProxy: () => ChildProcessProxy,
52
40
  NullWorker: () => NullWorker,
53
41
  WorkerBody: () => WorkerBody,
54
42
  WorkerFarm: () => WorkerFarm,
@@ -68,35 +56,33 @@ __export(src_exports, {
68
56
  processOnWorker: () => processOnWorker,
69
57
  validateWorkerVersion: () => validateWorkerVersion
70
58
  });
71
- module.exports = __toCommonJS(src_exports);
59
+ module.exports = __toCommonJS(dist_exports);
72
60
 
73
- // src/lib/env-utils/version.ts
61
+ // dist/lib/env-utils/version.js
74
62
  var NPM_TAG = "latest";
75
63
  function getVersion() {
76
64
  var _a;
77
65
  if (!((_a = globalThis._loadersgl_) == null ? void 0 : _a.version)) {
78
66
  globalThis._loadersgl_ = globalThis._loadersgl_ || {};
79
- if (typeof __VERSION__ === "undefined") {
80
- console.warn(
81
- "loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN."
82
- );
67
+ if (false) {
68
+ console.warn("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
83
69
  globalThis._loadersgl_.version = NPM_TAG;
84
70
  } else {
85
- globalThis._loadersgl_.version = __VERSION__;
71
+ globalThis._loadersgl_.version = "4.2.0-alpha.5";
86
72
  }
87
73
  }
88
74
  return globalThis._loadersgl_.version;
89
75
  }
90
76
  var VERSION = getVersion();
91
77
 
92
- // src/lib/env-utils/assert.ts
78
+ // dist/lib/env-utils/assert.js
93
79
  function assert(condition, message) {
94
80
  if (!condition) {
95
81
  throw new Error(message || "loaders.gl assertion failed.");
96
82
  }
97
83
  }
98
84
 
99
- // src/lib/env-utils/globals.ts
85
+ // dist/lib/env-utils/globals.js
100
86
  var globals = {
101
87
  self: typeof self !== "undefined" && self,
102
88
  window: typeof window !== "undefined" && window,
@@ -116,14 +102,18 @@ var isMobile = typeof window !== "undefined" && typeof window.orientation !== "u
116
102
  var matches = typeof process !== "undefined" && process.version && /v([0-9]*)/.exec(process.version);
117
103
  var nodeVersion = matches && parseFloat(matches[1]) || 0;
118
104
 
119
- // src/lib/worker-farm/worker-job.ts
105
+ // dist/lib/worker-farm/worker-job.js
120
106
  var WorkerJob = class {
107
+ name;
108
+ workerThread;
109
+ isRunning = true;
110
+ /** Promise that resolves when Job is done */
111
+ result;
112
+ _resolve = () => {
113
+ };
114
+ _reject = () => {
115
+ };
121
116
  constructor(jobName, workerThread) {
122
- this.isRunning = true;
123
- this._resolve = () => {
124
- };
125
- this._reject = () => {
126
- };
127
117
  this.name = jobName;
128
118
  this.workerThread = workerThread;
129
119
  this.result = new Promise((resolve, reject) => {
@@ -161,14 +151,14 @@ var WorkerJob = class {
161
151
  }
162
152
  };
163
153
 
164
- // src/lib/node/worker_threads-browser.ts
154
+ // dist/lib/node/worker_threads-browser.js
165
155
  var NodeWorker = class {
166
156
  terminate() {
167
157
  }
168
158
  };
169
159
  var parentPort = null;
170
160
 
171
- // src/lib/worker-utils/get-loadable-worker-url.ts
161
+ // dist/lib/worker-utils/get-loadable-worker-url.js
172
162
  var workerURLCache = /* @__PURE__ */ new Map();
173
163
  function getLoadableWorkerURL(props) {
174
164
  assert(props.source && !props.url || !props.source && props.url);
@@ -206,7 +196,7 @@ function buildScriptSource(workerUrl) {
206
196
  }`;
207
197
  }
208
198
 
209
- // src/lib/worker-utils/get-transfer-list.ts
199
+ // dist/lib/worker-utils/get-transfer-list.js
210
200
  function getTransferList(object, recursive = true, transfers) {
211
201
  const transfersSet = transfers || /* @__PURE__ */ new Set();
212
202
  if (!object) {
@@ -257,13 +247,23 @@ function getTransferListForWriter(object) {
257
247
  return clone;
258
248
  }
259
249
 
260
- // src/lib/worker-farm/worker-thread.ts
250
+ // dist/lib/worker-farm/worker-thread.js
261
251
  var NOOP = () => {
262
252
  };
263
253
  var WorkerThread = class {
254
+ name;
255
+ source;
256
+ url;
257
+ terminated = false;
258
+ worker;
259
+ onMessage;
260
+ onError;
261
+ _loadableURL = "";
262
+ /** Checks if workers are supported on this platform */
263
+ static isSupported() {
264
+ return typeof Worker !== "undefined" && isBrowser || typeof NodeWorker !== "undefined" && !isBrowser;
265
+ }
264
266
  constructor(props) {
265
- this.terminated = false;
266
- this._loadableURL = "";
267
267
  const { name, source, url } = props;
268
268
  assert(source || url);
269
269
  this.name = name;
@@ -273,10 +273,6 @@ var WorkerThread = class {
273
273
  this.onError = (error) => console.log(error);
274
274
  this.worker = isBrowser ? this._createBrowserWorker() : this._createNodeWorker();
275
275
  }
276
- /** Checks if workers are supported on this platform */
277
- static isSupported() {
278
- return typeof Worker !== "undefined" && isBrowser || typeof NodeWorker !== "undefined" && !isBrowser;
279
- }
280
276
  /**
281
277
  * Terminate this worker thread
282
278
  * @note Can free up significant memory
@@ -362,32 +358,35 @@ var WorkerThread = class {
362
358
  }
363
359
  };
364
360
 
365
- // src/lib/worker-farm/worker-pool.ts
361
+ // dist/lib/worker-farm/worker-pool.js
366
362
  var WorkerPool = class {
363
+ name = "unnamed";
364
+ source;
365
+ // | Function;
366
+ url;
367
+ maxConcurrency = 1;
368
+ maxMobileConcurrency = 1;
369
+ onDebug = () => {
370
+ };
371
+ reuseWorkers = true;
372
+ props = {};
373
+ jobQueue = [];
374
+ idleQueue = [];
375
+ count = 0;
376
+ isDestroyed = false;
377
+ /** Checks if workers are supported on this platform */
378
+ static isSupported() {
379
+ return WorkerThread.isSupported();
380
+ }
367
381
  /**
368
382
  * @param processor - worker function
369
383
  * @param maxConcurrency - max count of workers
370
384
  */
371
385
  constructor(props) {
372
- this.name = "unnamed";
373
- this.maxConcurrency = 1;
374
- this.maxMobileConcurrency = 1;
375
- this.onDebug = () => {
376
- };
377
- this.reuseWorkers = true;
378
- this.props = {};
379
- this.jobQueue = [];
380
- this.idleQueue = [];
381
- this.count = 0;
382
- this.isDestroyed = false;
383
386
  this.source = props.source;
384
387
  this.url = props.url;
385
388
  this.setProps(props);
386
389
  }
387
- /** Checks if workers are supported on this platform */
388
- static isSupported() {
389
- return WorkerThread.isSupported();
390
- }
391
390
  /**
392
391
  * Terminates all workers in the pool
393
392
  * @note Can free up significant memory
@@ -502,7 +501,7 @@ var WorkerPool = class {
502
501
  }
503
502
  };
504
503
 
505
- // src/lib/worker-farm/worker-farm.ts
504
+ // dist/lib/worker-farm/worker-farm.js
506
505
  var DEFAULT_PROPS = {
507
506
  maxConcurrency: 3,
508
507
  maxMobileConcurrency: 1,
@@ -510,23 +509,24 @@ var DEFAULT_PROPS = {
510
509
  onDebug: () => {
511
510
  }
512
511
  };
513
- var WorkerFarm = class {
514
- /** get global instance with WorkerFarm.getWorkerFarm() */
515
- constructor(props) {
516
- this.workerPools = /* @__PURE__ */ new Map();
517
- this.props = { ...DEFAULT_PROPS };
518
- this.setProps(props);
519
- this.workerPools = /* @__PURE__ */ new Map();
520
- }
512
+ var _WorkerFarm = class {
513
+ props;
514
+ workerPools = /* @__PURE__ */ new Map();
521
515
  /** Checks if workers are supported on this platform */
522
516
  static isSupported() {
523
517
  return WorkerThread.isSupported();
524
518
  }
525
519
  /** Get the singleton instance of the global worker farm */
526
520
  static getWorkerFarm(props = {}) {
527
- WorkerFarm._workerFarm = WorkerFarm._workerFarm || new WorkerFarm({});
528
- WorkerFarm._workerFarm.setProps(props);
529
- return WorkerFarm._workerFarm;
521
+ _WorkerFarm._workerFarm = _WorkerFarm._workerFarm || new _WorkerFarm({});
522
+ _WorkerFarm._workerFarm.setProps(props);
523
+ return _WorkerFarm._workerFarm;
524
+ }
525
+ /** get global instance with WorkerFarm.getWorkerFarm() */
526
+ constructor(props) {
527
+ this.props = { ...DEFAULT_PROPS };
528
+ this.setProps(props);
529
+ this.workerPools = /* @__PURE__ */ new Map();
530
530
  }
531
531
  /**
532
532
  * Terminate all workers in the farm
@@ -580,8 +580,11 @@ var WorkerFarm = class {
580
580
  };
581
581
  }
582
582
  };
583
+ var WorkerFarm = _WorkerFarm;
584
+ // singleton
585
+ __publicField(WorkerFarm, "_workerFarm");
583
586
 
584
- // src/lib/worker-farm/worker-body.ts
587
+ // dist/lib/worker-farm/worker-body.js
585
588
  async function getParentPort() {
586
589
  return parentPort;
587
590
  }
@@ -602,7 +605,9 @@ var WorkerBody = class {
602
605
  }
603
606
  getParentPort().then((parentPort2) => {
604
607
  if (parentPort2) {
605
- parentPort2.on("message", handleMessage);
608
+ parentPort2.on("message", (message) => {
609
+ handleMessage(message);
610
+ });
606
611
  parentPort2.on("exit", () => console.debug("Node worker closing"));
607
612
  } else {
608
613
  globalThis.onmessage = handleMessage;
@@ -659,7 +664,7 @@ function isKnownMessage(message) {
659
664
  return type === "message" && data && typeof data.source === "string" && data.source.startsWith("loaders.gl");
660
665
  }
661
666
 
662
- // src/lib/worker-api/get-worker-url.ts
667
+ // dist/lib/worker-api/get-worker-url.js
663
668
  function getWorkerName(worker) {
664
669
  const warning = worker.version !== VERSION ? ` (worker-utils@${VERSION})` : "";
665
670
  return `${worker.name}@${worker.version}${warning}`;
@@ -690,7 +695,7 @@ function getWorkerURL(worker, options2 = {}) {
690
695
  return url;
691
696
  }
692
697
 
693
- // src/lib/worker-api/process-on-worker.ts
698
+ // dist/lib/worker-api/process-on-worker.js
694
699
  function canProcessOnWorker(worker, options2) {
695
700
  if (!WorkerFarm.isSupported()) {
696
701
  return false;
@@ -744,8 +749,11 @@ async function onMessage(context, job, type, payload) {
744
749
  }
745
750
  }
746
751
 
747
- // src/lib/async-queue/async-queue.ts
752
+ // dist/lib/async-queue/async-queue.js
748
753
  var AsyncQueue = class {
754
+ _values;
755
+ _settlers;
756
+ _closed;
749
757
  constructor() {
750
758
  this._values = [];
751
759
  this._settlers = [];
@@ -811,7 +819,7 @@ var AsyncQueue = class {
811
819
  }
812
820
  };
813
821
 
814
- // src/lib/worker-api/create-worker.ts
822
+ // dist/lib/worker-api/create-worker.js
815
823
  var requestId = 0;
816
824
  var inputBatches;
817
825
  var options;
@@ -883,7 +891,7 @@ function processOnMainThread(arrayBuffer, options2 = {}) {
883
891
  });
884
892
  }
885
893
 
886
- // src/lib/worker-api/validate-worker-version.ts
894
+ // dist/lib/worker-api/validate-worker-version.js
887
895
  function validateWorkerVersion(worker, coreVersion = VERSION) {
888
896
  assert(worker, "no worker provided");
889
897
  const workerVersion = worker.version;
@@ -893,8 +901,10 @@ function validateWorkerVersion(worker, coreVersion = VERSION) {
893
901
  return true;
894
902
  }
895
903
 
896
- // src/lib/library-utils/library-utils.ts
897
- var node = __toESM(require_require_utils(), 1);
904
+ // (disabled):dist/lib/node/require-utils.node.js
905
+ var require_utils_node_exports = {};
906
+
907
+ // dist/lib/library-utils/library-utils.js
898
908
  var loadLibraryPromises = {};
899
909
  async function loadLibrary(libraryUrl, moduleName = null, options2 = {}, libraryName = null) {
900
910
  if (moduleName) {
@@ -931,7 +941,7 @@ async function loadLibraryFromFile(libraryUrl) {
931
941
  }
932
942
  if (!isBrowser) {
933
943
  try {
934
- return node && void 0 && await (void 0)(libraryUrl);
944
+ return require_utils_node_exports && void 0 && await (void 0)(libraryUrl);
935
945
  } catch (error) {
936
946
  console.error(error);
937
947
  return null;
@@ -976,8 +986,136 @@ async function loadAsText(url) {
976
986
  return await (void 0)(url);
977
987
  }
978
988
 
979
- // src/index.ts
980
- var import_child_process_proxy = __toESM(require_child_process_proxy(), 1);
989
+ // dist/lib/process-utils/child-process-proxy.js
990
+ var ChildProcess2 = __toESM(require("child_process"), 1);
991
+
992
+ // dist/lib/process-utils/process-utils.js
993
+ var import_child_process = __toESM(require("child_process"), 1);
994
+ function getAvailablePort(defaultPort = 3e3) {
995
+ return new Promise((resolve) => {
996
+ import_child_process.default.exec("lsof -i -P -n | grep LISTEN", (error, stdout) => {
997
+ if (error) {
998
+ resolve(defaultPort);
999
+ return;
1000
+ }
1001
+ const portsInUse = [];
1002
+ const regex = /:(\d+) \(LISTEN\)/;
1003
+ stdout.split("\n").forEach((line) => {
1004
+ const match = regex.exec(line);
1005
+ if (match) {
1006
+ portsInUse.push(Number(match[1]));
1007
+ }
1008
+ });
1009
+ let port = defaultPort;
1010
+ while (portsInUse.includes(port)) {
1011
+ port++;
1012
+ }
1013
+ resolve(port);
1014
+ });
1015
+ });
1016
+ }
1017
+
1018
+ // dist/lib/process-utils/child-process-proxy.js
1019
+ var DEFAULT_PROPS2 = {
1020
+ command: "",
1021
+ arguments: [],
1022
+ port: 5e3,
1023
+ autoPort: true,
1024
+ wait: 2e3,
1025
+ onSuccess: (processProxy) => {
1026
+ console.log(`Started ${processProxy.props.command}`);
1027
+ }
1028
+ };
1029
+ var ChildProcessProxy = class {
1030
+ id;
1031
+ props = { ...DEFAULT_PROPS2 };
1032
+ childProcess = null;
1033
+ port = 0;
1034
+ successTimer;
1035
+ // NodeJS.Timeout;
1036
+ // constructor(props?: {id?: string});
1037
+ constructor({ id = "browser-driver" } = {}) {
1038
+ this.id = id;
1039
+ }
1040
+ /** Starts a child process with the provided props */
1041
+ async start(props) {
1042
+ props = { ...DEFAULT_PROPS2, ...props };
1043
+ this.props = props;
1044
+ const args = [...props.arguments];
1045
+ this.port = Number(props.port);
1046
+ if (props.portArg) {
1047
+ if (props.autoPort) {
1048
+ this.port = await getAvailablePort(props.port);
1049
+ }
1050
+ args.push(props.portArg, String(this.port));
1051
+ }
1052
+ return await new Promise((resolve, reject) => {
1053
+ try {
1054
+ this._setTimeout(() => {
1055
+ if (props.onSuccess) {
1056
+ props.onSuccess(this);
1057
+ }
1058
+ resolve({});
1059
+ });
1060
+ console.log(`Spawning ${props.command} ${props.arguments.join(" ")}`);
1061
+ const childProcess = ChildProcess2.spawn(props.command, args, props.spawn);
1062
+ this.childProcess = childProcess;
1063
+ childProcess.stdout.on("data", (data) => {
1064
+ console.log(data.toString());
1065
+ });
1066
+ childProcess.stderr.on("data", (data) => {
1067
+ console.log(`Child process wrote to stderr: "${data}".`);
1068
+ if (!props.ignoreStderr) {
1069
+ this._clearTimeout();
1070
+ reject(new Error(data));
1071
+ }
1072
+ });
1073
+ childProcess.on("error", (error) => {
1074
+ console.log(`Child process errored with ${error}`);
1075
+ this._clearTimeout();
1076
+ reject(error);
1077
+ });
1078
+ childProcess.on("close", (code) => {
1079
+ console.log(`Child process exited with ${code}`);
1080
+ this.childProcess = null;
1081
+ this._clearTimeout();
1082
+ resolve({});
1083
+ });
1084
+ } catch (error) {
1085
+ reject(error);
1086
+ }
1087
+ });
1088
+ }
1089
+ /** Stops a running child process */
1090
+ async stop() {
1091
+ if (this.childProcess) {
1092
+ this.childProcess.kill();
1093
+ this.childProcess = null;
1094
+ }
1095
+ }
1096
+ /** Exits this process */
1097
+ async exit(statusCode = 0) {
1098
+ try {
1099
+ await this.stop();
1100
+ process.exit(statusCode);
1101
+ } catch (error) {
1102
+ console.error(error.message || error);
1103
+ process.exit(1);
1104
+ }
1105
+ }
1106
+ _setTimeout(callback) {
1107
+ if (Number(this.props.wait) > 0) {
1108
+ this.successTimer = setTimeout(callback, this.props.wait);
1109
+ }
1110
+ }
1111
+ _clearTimeout() {
1112
+ if (this.successTimer) {
1113
+ clearTimeout(this.successTimer);
1114
+ }
1115
+ }
1116
+ };
1117
+
1118
+ // dist/index.js
981
1119
  var NullWorker = {
982
1120
  id: "null",
983
1121
  name: "null",
@@ -987,3 +1125,4 @@ var NullWorker = {
987
1125
  null: {}
988
1126
  }
989
1127
  };
1128
+ //# sourceMappingURL=index.cjs.map