@atlaspack/workers 2.14.21-typescript-e99c742e9.0 → 2.14.21-typescript-5b4d3ad41.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.
- package/lib/Handle.d.ts +19 -0
- package/lib/Handle.js +42 -0
- package/lib/Worker.d.ts +40 -0
- package/lib/Worker.js +194 -0
- package/lib/WorkerFarm.d.ts +93 -0
- package/lib/WorkerFarm.js +563 -0
- package/lib/backend.d.ts +4 -0
- package/lib/backend.js +38 -0
- package/lib/bus.d.ts +6 -0
- package/lib/bus.js +31 -0
- package/lib/child.d.ts +43 -0
- package/lib/child.js +291 -0
- package/lib/childState.d.ts +3 -0
- package/lib/childState.js +14 -0
- package/lib/cpuCount.d.ts +2 -0
- package/lib/cpuCount.js +83 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.js +75 -0
- package/lib/process/ProcessChild.d.ts +9 -0
- package/lib/process/ProcessChild.js +63 -0
- package/lib/process/ProcessWorker.d.ts +16 -0
- package/lib/process/ProcessWorker.js +90 -0
- package/lib/threads/ThreadsChild.d.ts +8 -0
- package/lib/threads/ThreadsChild.js +52 -0
- package/lib/threads/ThreadsWorker.d.ts +15 -0
- package/lib/threads/ThreadsWorker.js +69 -0
- package/lib/types.d.ts +52 -0
- package/lib/types.js +1 -0
- package/lib/web/WebChild.d.ts +8 -0
- package/lib/web/WebChild.js +49 -0
- package/lib/web/WebWorker.d.ts +15 -0
- package/lib/web/WebWorker.js +101 -0
- package/package.json +8 -8
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
function _worker_threads() {
|
|
8
|
+
const data = require("worker_threads");
|
|
9
|
+
_worker_threads = function () {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
function _buildCache() {
|
|
15
|
+
const data = require("@atlaspack/build-cache");
|
|
16
|
+
_buildCache = function () {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
function _nullthrows() {
|
|
22
|
+
const data = _interopRequireDefault(require("nullthrows"));
|
|
23
|
+
_nullthrows = function () {
|
|
24
|
+
return data;
|
|
25
|
+
};
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
var _child = require("../child");
|
|
29
|
+
var _childState = require("../childState");
|
|
30
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
+
// @ts-expect-error TS2420
|
|
32
|
+
class ThreadsChild {
|
|
33
|
+
constructor(onMessage, onExit) {
|
|
34
|
+
if (_worker_threads().isMainThread || !_worker_threads().parentPort) {
|
|
35
|
+
throw new Error('Only create ThreadsChild instances in a worker!');
|
|
36
|
+
}
|
|
37
|
+
this.onMessage = onMessage;
|
|
38
|
+
this.onExit = onExit;
|
|
39
|
+
_worker_threads().parentPort.on('message', data => this.handleMessage(data));
|
|
40
|
+
_worker_threads().parentPort.on('close', this.onExit);
|
|
41
|
+
}
|
|
42
|
+
handleMessage(data) {
|
|
43
|
+
this.onMessage((0, _buildCache().restoreDeserializedObject)(data));
|
|
44
|
+
}
|
|
45
|
+
send(data) {
|
|
46
|
+
(0, _nullthrows().default)(_worker_threads().parentPort).postMessage((0, _buildCache().prepareForSerialization)(data));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// @ts-expect-error TS2345
|
|
51
|
+
exports.default = ThreadsChild;
|
|
52
|
+
(0, _childState.setChild)(new _child.Child(ThreadsChild));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WorkerImpl, MessageHandler, ErrorHandler, ExitHandler, WorkerMessage } from '../types';
|
|
2
|
+
import { Worker } from 'worker_threads';
|
|
3
|
+
export declare let WORKER_PATH: string;
|
|
4
|
+
export default class ThreadsWorker implements WorkerImpl {
|
|
5
|
+
execArgv: any;
|
|
6
|
+
onMessage: MessageHandler;
|
|
7
|
+
onError: ErrorHandler;
|
|
8
|
+
onExit: ExitHandler;
|
|
9
|
+
worker: Worker;
|
|
10
|
+
constructor(execArgv: any, onMessage: MessageHandler, onError: ErrorHandler, onExit: ExitHandler);
|
|
11
|
+
start(): Promise<void>;
|
|
12
|
+
stop(): Promise<void>;
|
|
13
|
+
handleMessage(data: WorkerMessage): void;
|
|
14
|
+
send(data: WorkerMessage): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.WORKER_PATH = void 0;
|
|
7
|
+
function _worker_threads() {
|
|
8
|
+
const data = require("worker_threads");
|
|
9
|
+
_worker_threads = function () {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
function _path() {
|
|
15
|
+
const data = _interopRequireDefault(require("path"));
|
|
16
|
+
_path = function () {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
function _buildCache() {
|
|
22
|
+
const data = require("@atlaspack/build-cache");
|
|
23
|
+
_buildCache = function () {
|
|
24
|
+
return data;
|
|
25
|
+
};
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
+
let WORKER_PATH = exports.WORKER_PATH = _path().default.join(__dirname, 'ThreadsChild.js');
|
|
30
|
+
if (process.env.ATLASPACK_REGISTER_USE_SRC === 'true') {
|
|
31
|
+
exports.WORKER_PATH = WORKER_PATH = _path().default.join(__dirname, 'ThreadsChild.ts');
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// @ts-expect-error TS2420
|
|
35
|
+
class ThreadsWorker {
|
|
36
|
+
// @ts-expect-error TS2564
|
|
37
|
+
|
|
38
|
+
constructor(execArgv, onMessage, onError, onExit) {
|
|
39
|
+
this.execArgv = execArgv;
|
|
40
|
+
this.onMessage = onMessage;
|
|
41
|
+
this.onError = onError;
|
|
42
|
+
this.onExit = onExit;
|
|
43
|
+
}
|
|
44
|
+
start() {
|
|
45
|
+
this.worker = new (_worker_threads().Worker)(WORKER_PATH, {
|
|
46
|
+
execArgv: this.execArgv,
|
|
47
|
+
env: process.env
|
|
48
|
+
});
|
|
49
|
+
this.worker.on('message', data => this.handleMessage(data));
|
|
50
|
+
this.worker.on('error', this.onError);
|
|
51
|
+
this.worker.on('exit', this.onExit);
|
|
52
|
+
return new Promise(resolve => {
|
|
53
|
+
this.worker.on('online', resolve);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
stop() {
|
|
57
|
+
// In node 12, this returns a promise, but previously it accepted a callback
|
|
58
|
+
// TODO: Pass a callback in earlier versions of Node
|
|
59
|
+
// @ts-expect-error TS2322
|
|
60
|
+
return Promise.resolve(this.worker.terminate());
|
|
61
|
+
}
|
|
62
|
+
handleMessage(data) {
|
|
63
|
+
this.onMessage((0, _buildCache().restoreDeserializedObject)(data));
|
|
64
|
+
}
|
|
65
|
+
send(data) {
|
|
66
|
+
this.worker.postMessage((0, _buildCache().prepareForSerialization)(data));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.default = ThreadsWorker;
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { Diagnostic } from '@atlaspack/diagnostic';
|
|
2
|
+
import type { FilePath } from '@atlaspack/types-internal';
|
|
3
|
+
export type LocationCallRequest = {
|
|
4
|
+
args: ReadonlyArray<unknown>;
|
|
5
|
+
location: string;
|
|
6
|
+
method?: string;
|
|
7
|
+
};
|
|
8
|
+
export type HandleCallRequest = {
|
|
9
|
+
args: ReadonlyArray<unknown>;
|
|
10
|
+
handle: number;
|
|
11
|
+
};
|
|
12
|
+
export type CallRequest = LocationCallRequest | HandleCallRequest;
|
|
13
|
+
export type WorkerRequest = {
|
|
14
|
+
args: ReadonlyArray<any>;
|
|
15
|
+
awaitResponse?: boolean;
|
|
16
|
+
child?: number | null | undefined;
|
|
17
|
+
idx?: number;
|
|
18
|
+
location?: FilePath;
|
|
19
|
+
method?: string | null | undefined;
|
|
20
|
+
type: 'request';
|
|
21
|
+
handle?: number;
|
|
22
|
+
};
|
|
23
|
+
export type WorkerDataResponse = {
|
|
24
|
+
idx?: number;
|
|
25
|
+
child?: number;
|
|
26
|
+
type: 'response';
|
|
27
|
+
contentType: 'data';
|
|
28
|
+
content: string;
|
|
29
|
+
};
|
|
30
|
+
export type WorkerErrorResponse = {
|
|
31
|
+
idx?: number;
|
|
32
|
+
child?: number;
|
|
33
|
+
type: 'response';
|
|
34
|
+
contentType: 'error';
|
|
35
|
+
content: Diagnostic | Array<Diagnostic>;
|
|
36
|
+
};
|
|
37
|
+
export type WorkerResponse = WorkerDataResponse | WorkerErrorResponse;
|
|
38
|
+
export type WorkerMessage = WorkerRequest | WorkerResponse;
|
|
39
|
+
export type MessageHandler = (data: WorkerMessage) => void;
|
|
40
|
+
export type ErrorHandler = (err: Error) => void;
|
|
41
|
+
export type ExitHandler = (code: number) => void;
|
|
42
|
+
export interface WorkerImpl {
|
|
43
|
+
constructor(execArgv: any, onMessage: MessageHandler, onError: ErrorHandler, onExit: ExitHandler): void;
|
|
44
|
+
start(): Promise<void>;
|
|
45
|
+
stop(): Promise<void>;
|
|
46
|
+
send(data: WorkerMessage): void;
|
|
47
|
+
}
|
|
48
|
+
export interface ChildImpl {
|
|
49
|
+
constructor(onMessage: MessageHandler, onExit: ExitHandler): void;
|
|
50
|
+
send(data: WorkerMessage): void;
|
|
51
|
+
}
|
|
52
|
+
export type BackendType = 'threads' | 'process' | 'web';
|
package/lib/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ChildImpl, MessageHandler, ExitHandler, WorkerMessage } from '../types';
|
|
2
|
+
export default class WebChild implements ChildImpl {
|
|
3
|
+
onMessage: MessageHandler;
|
|
4
|
+
onExit: ExitHandler;
|
|
5
|
+
constructor(onMessage: MessageHandler, onExit: ExitHandler);
|
|
6
|
+
handleMessage(data: WorkerMessage): void;
|
|
7
|
+
send(data: WorkerMessage): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
function _buildCache() {
|
|
8
|
+
const data = require("@atlaspack/build-cache");
|
|
9
|
+
_buildCache = function () {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
var _child = require("../child");
|
|
15
|
+
var _childState = require("../childState");
|
|
16
|
+
/* eslint-env worker*/
|
|
17
|
+
|
|
18
|
+
// Type declarations for Web Worker environment
|
|
19
|
+
|
|
20
|
+
// @ts-expect-error TS2420
|
|
21
|
+
class WebChild {
|
|
22
|
+
constructor(onMessage, onExit) {
|
|
23
|
+
if (!(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)) {
|
|
24
|
+
throw new Error('Only create WebChild instances in a worker!');
|
|
25
|
+
}
|
|
26
|
+
this.onMessage = onMessage;
|
|
27
|
+
this.onExit = onExit;
|
|
28
|
+
self.addEventListener('message', ({
|
|
29
|
+
data
|
|
30
|
+
}) => {
|
|
31
|
+
if (data === 'stop') {
|
|
32
|
+
this.onExit(0);
|
|
33
|
+
self.postMessage('stopped');
|
|
34
|
+
}
|
|
35
|
+
this.handleMessage(data);
|
|
36
|
+
});
|
|
37
|
+
self.postMessage('online');
|
|
38
|
+
}
|
|
39
|
+
handleMessage(data) {
|
|
40
|
+
this.onMessage((0, _buildCache().restoreDeserializedObject)(data));
|
|
41
|
+
}
|
|
42
|
+
send(data) {
|
|
43
|
+
self.postMessage((0, _buildCache().prepareForSerialization)(data));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// @ts-expect-error TS2345
|
|
48
|
+
exports.default = WebChild;
|
|
49
|
+
(0, _childState.setChild)(new _child.Child(WebChild));
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WorkerImpl, MessageHandler, ErrorHandler, ExitHandler, WorkerMessage } from '../types';
|
|
2
|
+
export declare let WORKER_PATH: import("url").URL;
|
|
3
|
+
export default class WebWorker implements WorkerImpl {
|
|
4
|
+
execArgv: any;
|
|
5
|
+
onMessage: MessageHandler;
|
|
6
|
+
onError: ErrorHandler;
|
|
7
|
+
onExit: ExitHandler;
|
|
8
|
+
worker: Worker;
|
|
9
|
+
stopping: Promise<undefined> | null | undefined;
|
|
10
|
+
constructor(execArgv: any, onMessage: MessageHandler, onError: ErrorHandler, onExit: ExitHandler);
|
|
11
|
+
start(): Promise<void>;
|
|
12
|
+
stop(): Promise<void>;
|
|
13
|
+
handleMessage(data: WorkerMessage): void;
|
|
14
|
+
send(data: WorkerMessage): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.WORKER_PATH = void 0;
|
|
7
|
+
function _buildCache() {
|
|
8
|
+
const data = require("@atlaspack/build-cache");
|
|
9
|
+
_buildCache = function () {
|
|
10
|
+
return data;
|
|
11
|
+
};
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
function _utils() {
|
|
15
|
+
const data = require("@atlaspack/utils");
|
|
16
|
+
_utils = function () {
|
|
17
|
+
return data;
|
|
18
|
+
};
|
|
19
|
+
return data;
|
|
20
|
+
}
|
|
21
|
+
let id = 0;
|
|
22
|
+
|
|
23
|
+
// @ts-expect-error This is actually a module
|
|
24
|
+
let WORKER_PATH = exports.WORKER_PATH = new URL('./WebChild.js', import.meta.url);
|
|
25
|
+
if (process.env.ATLASPACK_REGISTER_USE_SRC === 'true') {
|
|
26
|
+
// @ts-expect-error This is actually a module
|
|
27
|
+
exports.WORKER_PATH = WORKER_PATH = new URL('./WebChild.ts', import.meta.url);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// @ts-expect-error TS2420
|
|
31
|
+
class WebWorker {
|
|
32
|
+
// @ts-expect-error TS2564
|
|
33
|
+
|
|
34
|
+
constructor(execArgv, onMessage, onError, onExit) {
|
|
35
|
+
this.execArgv = execArgv;
|
|
36
|
+
this.onMessage = onMessage;
|
|
37
|
+
this.onError = onError;
|
|
38
|
+
this.onExit = onExit;
|
|
39
|
+
}
|
|
40
|
+
start() {
|
|
41
|
+
// @ts-expect-error TS1470
|
|
42
|
+
this.worker = new Worker(new URL('./WebChild.js', import.meta.url), {
|
|
43
|
+
name: `Parcel Worker ${id++}`,
|
|
44
|
+
type: 'module'
|
|
45
|
+
});
|
|
46
|
+
let {
|
|
47
|
+
deferred,
|
|
48
|
+
promise
|
|
49
|
+
} = (0, _utils().makeDeferredWithPromise)();
|
|
50
|
+
|
|
51
|
+
// @ts-expect-error TS7031
|
|
52
|
+
this.worker.onmessage = ({
|
|
53
|
+
data
|
|
54
|
+
}) => {
|
|
55
|
+
if (data === 'online') {
|
|
56
|
+
// @ts-expect-error TS2554
|
|
57
|
+
deferred.resolve();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
this.handleMessage(data);
|
|
61
|
+
};
|
|
62
|
+
this.worker.onerror = this.onError;
|
|
63
|
+
// Web workers can't crash or intentionally stop on their own, apart from stop() below
|
|
64
|
+
// this.worker.on('exit', this.onExit);
|
|
65
|
+
|
|
66
|
+
// @ts-expect-error TS2322
|
|
67
|
+
return promise;
|
|
68
|
+
}
|
|
69
|
+
stop() {
|
|
70
|
+
if (!this.stopping) {
|
|
71
|
+
// @ts-expect-error TS2322
|
|
72
|
+
this.stopping = (async () => {
|
|
73
|
+
this.worker.postMessage('stop');
|
|
74
|
+
let {
|
|
75
|
+
deferred,
|
|
76
|
+
promise
|
|
77
|
+
} = (0, _utils().makeDeferredWithPromise)();
|
|
78
|
+
this.worker.addEventListener('message', ({
|
|
79
|
+
data
|
|
80
|
+
}) => {
|
|
81
|
+
if (data === 'stopped') {
|
|
82
|
+
// @ts-expect-error TS2554
|
|
83
|
+
deferred.resolve();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
await promise;
|
|
87
|
+
this.worker.terminate();
|
|
88
|
+
this.onExit(0);
|
|
89
|
+
})();
|
|
90
|
+
}
|
|
91
|
+
// @ts-expect-error TS2322
|
|
92
|
+
return this.stopping;
|
|
93
|
+
}
|
|
94
|
+
handleMessage(data) {
|
|
95
|
+
this.onMessage((0, _buildCache().restoreDeserializedObject)(data));
|
|
96
|
+
}
|
|
97
|
+
send(data) {
|
|
98
|
+
this.worker.postMessage((0, _buildCache().prepareForSerialization)(data));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.default = WebWorker;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaspack/workers",
|
|
3
|
-
"version": "2.14.21-typescript-
|
|
3
|
+
"version": "2.14.21-typescript-5b4d3ad41.0",
|
|
4
4
|
"description": "Blazing fast, zero configuration web application bundler",
|
|
5
5
|
"license": "(MIT OR Apache-2.0)",
|
|
6
6
|
"publishConfig": {
|
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
"node": ">= 16.0.0"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@atlaspack/build-cache": "2.13.4-typescript-
|
|
21
|
-
"@atlaspack/diagnostic": "2.14.2-typescript-
|
|
22
|
-
"@atlaspack/logger": "2.14.14-typescript-
|
|
23
|
-
"@atlaspack/profiler": "2.14.18-typescript-
|
|
24
|
-
"@atlaspack/types-internal": "2.15.3-typescript-
|
|
25
|
-
"@atlaspack/utils": "2.17.3-typescript-
|
|
20
|
+
"@atlaspack/build-cache": "2.13.4-typescript-5b4d3ad41.0",
|
|
21
|
+
"@atlaspack/diagnostic": "2.14.2-typescript-5b4d3ad41.0",
|
|
22
|
+
"@atlaspack/logger": "2.14.14-typescript-5b4d3ad41.0",
|
|
23
|
+
"@atlaspack/profiler": "2.14.18-typescript-5b4d3ad41.0",
|
|
24
|
+
"@atlaspack/types-internal": "2.15.3-typescript-5b4d3ad41.0",
|
|
25
|
+
"@atlaspack/utils": "2.17.3-typescript-5b4d3ad41.0",
|
|
26
26
|
"nullthrows": "^1.1.1"
|
|
27
27
|
},
|
|
28
28
|
"browser": {
|
|
@@ -33,5 +33,5 @@
|
|
|
33
33
|
"scripts": {
|
|
34
34
|
"check-ts": "tsc --emitDeclarationOnly --rootDir src"
|
|
35
35
|
},
|
|
36
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "5b4d3ad41ffa002b989ba77271bb3010a1f05b2a"
|
|
37
37
|
}
|