@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.
- package/dist/index.cjs +225 -86
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +18 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -8
- package/dist/lib/async-queue/async-queue.js +83 -68
- package/dist/lib/env-utils/assert.js +10 -4
- package/dist/lib/env-utils/globals.js +19 -7
- package/dist/lib/env-utils/version.js +20 -11
- package/dist/lib/library-utils/library-utils.js +148 -73
- package/dist/lib/node/require-utils.node.js +72 -43
- package/dist/lib/node/worker_threads-browser.js +9 -2
- package/dist/lib/node/worker_threads.js +4 -2
- package/dist/lib/process-utils/child-process-proxy.d.ts +1 -3
- package/dist/lib/process-utils/child-process-proxy.d.ts.map +1 -1
- package/dist/lib/process-utils/child-process-proxy.js +103 -93
- package/dist/lib/process-utils/process-utils.js +28 -23
- package/dist/lib/worker-api/create-worker.d.ts +1 -1
- package/dist/lib/worker-api/create-worker.d.ts.map +1 -1
- package/dist/lib/worker-api/create-worker.js +77 -74
- package/dist/lib/worker-api/get-worker-url.d.ts +1 -1
- package/dist/lib/worker-api/get-worker-url.d.ts.map +1 -1
- package/dist/lib/worker-api/get-worker-url.js +52 -26
- package/dist/lib/worker-api/process-on-worker.d.ts +1 -1
- package/dist/lib/worker-api/process-on-worker.d.ts.map +1 -1
- package/dist/lib/worker-api/process-on-worker.js +70 -67
- package/dist/lib/worker-api/validate-worker-version.d.ts +1 -1
- package/dist/lib/worker-api/validate-worker-version.d.ts.map +1 -1
- package/dist/lib/worker-api/validate-worker-version.js +29 -14
- package/dist/lib/worker-farm/worker-body.d.ts +1 -1
- package/dist/lib/worker-farm/worker-body.d.ts.map +1 -1
- package/dist/lib/worker-farm/worker-body.js +109 -68
- package/dist/lib/worker-farm/worker-farm.d.ts +1 -1
- package/dist/lib/worker-farm/worker-farm.d.ts.map +1 -1
- package/dist/lib/worker-farm/worker-farm.js +80 -62
- package/dist/lib/worker-farm/worker-job.d.ts +2 -2
- package/dist/lib/worker-farm/worker-job.d.ts.map +1 -1
- package/dist/lib/worker-farm/worker-job.js +48 -32
- package/dist/lib/worker-farm/worker-pool.d.ts +3 -3
- package/dist/lib/worker-farm/worker-pool.d.ts.map +1 -1
- package/dist/lib/worker-farm/worker-pool.js +153 -111
- package/dist/lib/worker-farm/worker-thread.d.ts +1 -1
- package/dist/lib/worker-farm/worker-thread.d.ts.map +1 -1
- package/dist/lib/worker-farm/worker-thread.js +126 -94
- package/dist/lib/worker-utils/get-loadable-worker-url.js +54 -24
- package/dist/lib/worker-utils/get-transfer-list.js +79 -44
- package/dist/lib/worker-utils/remove-nontransferable-options.js +23 -14
- package/dist/null-worker-node.js +6 -1
- package/dist/null-worker-node.js.map +2 -2
- package/dist/null-worker.js +3 -1
- package/dist/null-worker.js.map +2 -2
- package/dist/types.js +3 -1
- package/dist/workers/null-worker.js +6 -3
- package/package.json +11 -11
- package/src/lib/process-utils/child-process-proxy.ts +1 -1
- package/src/lib/worker-farm/worker-body.ts +7 -2
- package/dist/index.js.map +0 -1
- package/dist/lib/async-queue/async-queue.js.map +0 -1
- package/dist/lib/env-utils/assert.js.map +0 -1
- package/dist/lib/env-utils/globals.js.map +0 -1
- package/dist/lib/env-utils/version.js.map +0 -1
- package/dist/lib/library-utils/library-utils.js.map +0 -1
- package/dist/lib/node/require-utils.node.js.map +0 -1
- package/dist/lib/node/worker_threads-browser.js.map +0 -1
- package/dist/lib/node/worker_threads.js.map +0 -1
- package/dist/lib/process-utils/child-process-proxy.js.map +0 -1
- package/dist/lib/process-utils/process-utils.js.map +0 -1
- package/dist/lib/worker-api/create-worker.js.map +0 -1
- package/dist/lib/worker-api/get-worker-url.js.map +0 -1
- package/dist/lib/worker-api/process-on-worker.js.map +0 -1
- package/dist/lib/worker-api/validate-worker-version.js.map +0 -1
- package/dist/lib/worker-farm/worker-body.js.map +0 -1
- package/dist/lib/worker-farm/worker-farm.js.map +0 -1
- package/dist/lib/worker-farm/worker-job.js.map +0 -1
- package/dist/lib/worker-farm/worker-pool.js.map +0 -1
- package/dist/lib/worker-farm/worker-thread.js.map +0 -1
- package/dist/lib/worker-utils/get-loadable-worker-url.js.map +0 -1
- package/dist/lib/worker-utils/get-transfer-list.js.map +0 -1
- package/dist/lib/worker-utils/remove-nontransferable-options.js.map +0 -1
- package/dist/types.js.map +0 -1
- 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
|
|
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
|
-
//
|
|
34
|
-
var
|
|
35
|
-
|
|
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: () =>
|
|
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(
|
|
59
|
+
module.exports = __toCommonJS(dist_exports);
|
|
72
60
|
|
|
73
|
-
//
|
|
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 (
|
|
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 =
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
|
514
|
-
|
|
515
|
-
|
|
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
|
-
|
|
528
|
-
|
|
529
|
-
return
|
|
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
|
-
//
|
|
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",
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
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
|
-
//
|
|
897
|
-
var
|
|
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
|
|
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
|
-
//
|
|
980
|
-
var
|
|
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
|