@atlaspack/workers 2.12.1-dev.3443 → 2.12.1-dev.3478
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/package.json +8 -8
- package/src/Worker.js +4 -4
- package/src/WorkerFarm.js +7 -5
- package/src/child.js +3 -3
- package/src/cpuCount.js +1 -1
- package/src/process/ProcessChild.js +2 -2
- package/src/process/ProcessWorker.js +18 -15
- package/src/threads/ThreadsChild.js +1 -1
- package/src/threads/ThreadsWorker.js +2 -2
- package/test/workerfarm.js +3 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaspack/workers",
|
|
3
|
-
"version": "2.12.1-dev.
|
|
3
|
+
"version": "2.12.1-dev.3478+5fd2da535",
|
|
4
4
|
"description": "Blazing fast, zero configuration web application bundler",
|
|
5
5
|
"license": "(MIT OR Apache-2.0)",
|
|
6
6
|
"publishConfig": {
|
|
@@ -17,20 +17,20 @@
|
|
|
17
17
|
"node": ">= 16.0.0"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@atlaspack/diagnostic": "2.12.1-dev.
|
|
21
|
-
"@atlaspack/logger": "2.12.1-dev.
|
|
22
|
-
"@atlaspack/profiler": "2.12.1-dev.
|
|
23
|
-
"@atlaspack/types-internal": "2.12.1-dev.
|
|
24
|
-
"@atlaspack/utils": "2.12.1-dev.
|
|
20
|
+
"@atlaspack/diagnostic": "2.12.1-dev.3478+5fd2da535",
|
|
21
|
+
"@atlaspack/logger": "2.12.1-dev.3478+5fd2da535",
|
|
22
|
+
"@atlaspack/profiler": "2.12.1-dev.3478+5fd2da535",
|
|
23
|
+
"@atlaspack/types-internal": "2.12.1-dev.3478+5fd2da535",
|
|
24
|
+
"@atlaspack/utils": "2.12.1-dev.3478+5fd2da535",
|
|
25
25
|
"nullthrows": "^1.1.1"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
|
-
"@atlaspack/core": "^2.12.1-dev.
|
|
28
|
+
"@atlaspack/core": "^2.12.1-dev.3478+5fd2da535"
|
|
29
29
|
},
|
|
30
30
|
"browser": {
|
|
31
31
|
"./src/process/ProcessWorker.js": false,
|
|
32
32
|
"./src/threads/ThreadsWorker.js": false,
|
|
33
33
|
"./src/core-worker.js": "./src/core-worker.browser.js"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "5fd2da535ecbe096d57e03aec15e80bb1d7601f7"
|
|
36
36
|
}
|
package/src/Worker.js
CHANGED
|
@@ -51,7 +51,7 @@ export default class Worker extends EventEmitter {
|
|
|
51
51
|
let filteredArgs = [];
|
|
52
52
|
if (process.execArgv) {
|
|
53
53
|
filteredArgs = process.execArgv.filter(
|
|
54
|
-
v =>
|
|
54
|
+
(v) =>
|
|
55
55
|
!/^--(debug|inspect|no-opt|max-old-space-size=|max-semi-space-size=|expose-gc)/.test(
|
|
56
56
|
v,
|
|
57
57
|
),
|
|
@@ -94,13 +94,13 @@ export default class Worker extends EventEmitter {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
let onMessage = data => this.receive(data);
|
|
98
|
-
let onExit = code => {
|
|
97
|
+
let onMessage = (data) => this.receive(data);
|
|
98
|
+
let onExit = (code) => {
|
|
99
99
|
this.exitCode = code;
|
|
100
100
|
this.emit('exit', code);
|
|
101
101
|
};
|
|
102
102
|
|
|
103
|
-
let onError = err => {
|
|
103
|
+
let onError = (err) => {
|
|
104
104
|
this.emit('error', err);
|
|
105
105
|
};
|
|
106
106
|
|
package/src/WorkerFarm.js
CHANGED
|
@@ -266,7 +266,7 @@ export default class WorkerFarm extends EventEmitter {
|
|
|
266
266
|
|
|
267
267
|
worker.fork(nullthrows(this.options.workerPath));
|
|
268
268
|
|
|
269
|
-
worker.on('request', data => this.processRequest(data, worker));
|
|
269
|
+
worker.on('request', (data) => this.processRequest(data, worker));
|
|
270
270
|
|
|
271
271
|
worker.on('ready', () => {
|
|
272
272
|
this.readyWorkers++;
|
|
@@ -277,7 +277,7 @@ export default class WorkerFarm extends EventEmitter {
|
|
|
277
277
|
});
|
|
278
278
|
worker.on('response', () => this.processQueue());
|
|
279
279
|
|
|
280
|
-
worker.on('error', err => this.onError(err, worker));
|
|
280
|
+
worker.on('error', (err) => this.onError(err, worker));
|
|
281
281
|
worker.once('exit', () => this.stopWorker(worker));
|
|
282
282
|
|
|
283
283
|
this.workers.set(worker.id, worker);
|
|
@@ -438,7 +438,9 @@ export default class WorkerFarm extends EventEmitter {
|
|
|
438
438
|
this.ending = true;
|
|
439
439
|
|
|
440
440
|
await Promise.all(
|
|
441
|
-
Array.from(this.workers.values()).map(worker =>
|
|
441
|
+
Array.from(this.workers.values()).map((worker) =>
|
|
442
|
+
this.stopWorker(worker),
|
|
443
|
+
),
|
|
442
444
|
);
|
|
443
445
|
|
|
444
446
|
for (let handle of this.handles.values()) {
|
|
@@ -593,7 +595,7 @@ export default class WorkerFarm extends EventEmitter {
|
|
|
593
595
|
}
|
|
594
596
|
|
|
595
597
|
trace.flush();
|
|
596
|
-
await new Promise(resolve => {
|
|
598
|
+
await new Promise((resolve) => {
|
|
597
599
|
stream.once('finish', resolve);
|
|
598
600
|
});
|
|
599
601
|
|
|
@@ -629,7 +631,7 @@ export default class WorkerFarm extends EventEmitter {
|
|
|
629
631
|
try {
|
|
630
632
|
let snapshotPaths = await Promise.all(
|
|
631
633
|
[...this.workers.values()].map(
|
|
632
|
-
worker =>
|
|
634
|
+
(worker) =>
|
|
633
635
|
new Promise((resolve, reject) => {
|
|
634
636
|
worker.call({
|
|
635
637
|
method: 'takeHeapSnapshot',
|
package/src/child.js
CHANGED
|
@@ -47,7 +47,7 @@ export class Child {
|
|
|
47
47
|
|
|
48
48
|
constructor(ChildBackend: Class<ChildImpl>) {
|
|
49
49
|
this.child = new ChildBackend(
|
|
50
|
-
m => {
|
|
50
|
+
(m) => {
|
|
51
51
|
this.messageListener(m);
|
|
52
52
|
},
|
|
53
53
|
() => this.handleEnd(),
|
|
@@ -55,11 +55,11 @@ export class Child {
|
|
|
55
55
|
|
|
56
56
|
// Monitior all logging events inside this child process and forward to
|
|
57
57
|
// the main process via the bus.
|
|
58
|
-
this.loggerDisposable = Logger.onLog(event => {
|
|
58
|
+
this.loggerDisposable = Logger.onLog((event) => {
|
|
59
59
|
bus.emit('logEvent', event);
|
|
60
60
|
});
|
|
61
61
|
// .. and do the same for trace events
|
|
62
|
-
this.tracerDisposable = tracer.onTrace(event => {
|
|
62
|
+
this.tracerDisposable = tracer.onTrace((event) => {
|
|
63
63
|
bus.emit('traceEvent', event);
|
|
64
64
|
});
|
|
65
65
|
}
|
package/src/cpuCount.js
CHANGED
|
@@ -29,7 +29,7 @@ export function detectRealCores(): number {
|
|
|
29
29
|
} else if (platform === 'win32') {
|
|
30
30
|
const str = exec('wmic cpu get NumberOfCores').match(/\d+/g);
|
|
31
31
|
if (str !== null) {
|
|
32
|
-
amount = parseInt(str.filter(n => n !== '')[0], 10);
|
|
32
|
+
amount = parseInt(str.filter((n) => n !== '')[0], 10);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
@@ -22,7 +22,7 @@ export default class ProcessChild implements ChildImpl {
|
|
|
22
22
|
|
|
23
23
|
this.onMessage = onMessage;
|
|
24
24
|
this.onExit = onExit;
|
|
25
|
-
process.on('message', data => this.handleMessage(data));
|
|
25
|
+
process.on('message', (data) => this.handleMessage(data));
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
handleMessage(data: string): void {
|
|
@@ -35,7 +35,7 @@ export default class ProcessChild implements ChildImpl {
|
|
|
35
35
|
|
|
36
36
|
send(data: WorkerMessage) {
|
|
37
37
|
let processSend = nullthrows(process.send).bind(process);
|
|
38
|
-
processSend(serialize(data).toString('base64'), err => {
|
|
38
|
+
processSend(serialize(data).toString('base64'), (err) => {
|
|
39
39
|
if (err && err instanceof Error) {
|
|
40
40
|
// $FlowFixMe[prop-missing]
|
|
41
41
|
if (err.code === 'ERR_IPC_CHANNEL_CLOSED') {
|
|
@@ -55,7 +55,7 @@ export default class ProcessWorker implements WorkerImpl {
|
|
|
55
55
|
this.child.send('die');
|
|
56
56
|
|
|
57
57
|
let forceKill = setTimeout(() => this.child.kill('SIGINT'), 500);
|
|
58
|
-
await new Promise(resolve => {
|
|
58
|
+
await new Promise((resolve) => {
|
|
59
59
|
this.child.once('exit', resolve);
|
|
60
60
|
});
|
|
61
61
|
|
|
@@ -68,20 +68,23 @@ export default class ProcessWorker implements WorkerImpl {
|
|
|
68
68
|
return;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
let result = this.child.send(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
this.sendQueue
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
71
|
+
let result = this.child.send(
|
|
72
|
+
serialize(data).toString('base64'),
|
|
73
|
+
(error) => {
|
|
74
|
+
if (error && error instanceof Error) {
|
|
75
|
+
// Ignore this, the workerfarm handles child errors
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
this.processQueue = true;
|
|
80
|
+
|
|
81
|
+
if (this.sendQueue.length > 0) {
|
|
82
|
+
let queueCopy = this.sendQueue.slice(0);
|
|
83
|
+
this.sendQueue = [];
|
|
84
|
+
queueCopy.forEach((entry) => this.send(entry));
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
);
|
|
85
88
|
|
|
86
89
|
if (!result || /^win/.test(process.platform)) {
|
|
87
90
|
// Queue is handling too much messages throttle it
|
|
@@ -26,7 +26,7 @@ export default class ThreadsChild implements ChildImpl {
|
|
|
26
26
|
|
|
27
27
|
this.onMessage = onMessage;
|
|
28
28
|
this.onExit = onExit;
|
|
29
|
-
parentPort.on('message', data => this.handleMessage(data));
|
|
29
|
+
parentPort.on('message', (data) => this.handleMessage(data));
|
|
30
30
|
parentPort.on('close', this.onExit);
|
|
31
31
|
}
|
|
32
32
|
|
|
@@ -41,11 +41,11 @@ export default class ThreadsWorker implements WorkerImpl {
|
|
|
41
41
|
env: process.env,
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
-
this.worker.on('message', data => this.handleMessage(data));
|
|
44
|
+
this.worker.on('message', (data) => this.handleMessage(data));
|
|
45
45
|
this.worker.on('error', this.onError);
|
|
46
46
|
this.worker.on('exit', this.onExit);
|
|
47
47
|
|
|
48
|
-
return new Promise<void>(resolve => {
|
|
48
|
+
return new Promise<void>((resolve) => {
|
|
49
49
|
this.worker.on('online', resolve);
|
|
50
50
|
});
|
|
51
51
|
}
|
package/test/workerfarm.js
CHANGED
|
@@ -44,7 +44,7 @@ describe('WorkerFarm', function () {
|
|
|
44
44
|
assert.equal(await workerfarm.run(i), i);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
await new Promise(resolve => workerfarm.once('warmedup', resolve));
|
|
47
|
+
await new Promise((resolve) => workerfarm.once('warmedup', resolve));
|
|
48
48
|
|
|
49
49
|
assert(workerfarm.workers.size > 0, 'Should have spawned workers.');
|
|
50
50
|
assert(
|
|
@@ -134,7 +134,7 @@ describe('WorkerFarm', function () {
|
|
|
134
134
|
|
|
135
135
|
it('Forwards stdio from the child process and levels event source if shouldPatchConsole is true', async () => {
|
|
136
136
|
let events = [];
|
|
137
|
-
let logDisposable = Logger.onLog(event => events.push(event));
|
|
137
|
+
let logDisposable = Logger.onLog((event) => events.push(event));
|
|
138
138
|
|
|
139
139
|
let workerfarm = new WorkerFarm({
|
|
140
140
|
warmWorkers: true,
|
|
@@ -209,7 +209,7 @@ describe('WorkerFarm', function () {
|
|
|
209
209
|
|
|
210
210
|
it('Forwards logger events to the main process', async () => {
|
|
211
211
|
let events = [];
|
|
212
|
-
let logDisposable = Logger.onLog(event => events.push(event));
|
|
212
|
+
let logDisposable = Logger.onLog((event) => events.push(event));
|
|
213
213
|
|
|
214
214
|
let workerfarm = new WorkerFarm({
|
|
215
215
|
warmWorkers: true,
|