@atlaspack/workers 2.14.20 → 2.14.21-typescript-80839fbd5.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 (34) hide show
  1. package/LICENSE +201 -0
  2. package/lib/Handle.js +0 -3
  3. package/lib/Worker.js +7 -1
  4. package/lib/WorkerFarm.js +17 -7
  5. package/lib/backend.js +1 -1
  6. package/lib/bus.js +1 -1
  7. package/lib/child.js +8 -4
  8. package/lib/cpuCount.js +6 -2
  9. package/lib/process/ProcessChild.js +6 -1
  10. package/lib/process/ProcessWorker.js +9 -2
  11. package/lib/threads/ThreadsChild.js +3 -0
  12. package/lib/threads/ThreadsWorker.js +10 -2
  13. package/lib/web/WebChild.js +6 -1
  14. package/lib/web/WebWorker.js +20 -4
  15. package/package.json +14 -10
  16. package/src/{Handle.js → Handle.ts} +11 -11
  17. package/src/{Worker.js → Worker.ts} +66 -54
  18. package/src/{WorkerFarm.js → WorkerFarm.ts} +198 -141
  19. package/src/{backend.js → backend.ts} +4 -4
  20. package/src/{bus.js → bus.ts} +2 -3
  21. package/src/{child.js → child.ts} +53 -43
  22. package/src/{childState.js → childState.ts} +1 -2
  23. package/src/{cpuCount.js → cpuCount.ts} +10 -7
  24. package/src/{index.js → index.ts} +0 -1
  25. package/src/process/{ProcessChild.js → ProcessChild.ts} +5 -3
  26. package/src/process/{ProcessWorker.js → ProcessWorker.ts} +10 -7
  27. package/src/threads/{ThreadsChild.js → ThreadsChild.ts} +2 -2
  28. package/src/threads/{ThreadsWorker.js → ThreadsWorker.ts} +14 -8
  29. package/src/{types.js → types.ts} +34 -35
  30. package/src/web/{WebChild.js → WebChild.ts} +6 -2
  31. package/src/web/{WebWorker.js → WebWorker.ts} +19 -7
  32. package/test/{cpuCount.test.js → cpuCount.test.ts} +0 -1
  33. package/test/{workerfarm.test.cjs → workerfarm.test.js} +4 -2
  34. package/tsconfig.json +4 -0
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = exports.WORKER_PATH = void 0;
7
7
  function _buildCache() {
8
8
  const data = require("@atlaspack/build-cache");
9
9
  _buildCache = function () {
@@ -19,7 +19,18 @@ function _utils() {
19
19
  return data;
20
20
  }
21
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
22
31
  class WebWorker {
32
+ // @ts-expect-error TS2564
33
+
23
34
  constructor(execArgv, onMessage, onError, onExit) {
24
35
  this.execArgv = execArgv;
25
36
  this.onMessage = onMessage;
@@ -27,7 +38,7 @@ class WebWorker {
27
38
  this.onExit = onExit;
28
39
  }
29
40
  start() {
30
- // $FlowFixMe[incompatible-call]
41
+ // @ts-expect-error TS1470
31
42
  this.worker = new Worker(new URL('./WebChild.js', import.meta.url), {
32
43
  name: `Parcel Worker ${id++}`,
33
44
  type: 'module'
@@ -36,25 +47,28 @@ class WebWorker {
36
47
  deferred,
37
48
  promise
38
49
  } = (0, _utils().makeDeferredWithPromise)();
50
+
51
+ // @ts-expect-error TS7031
39
52
  this.worker.onmessage = ({
40
53
  data
41
54
  }) => {
42
55
  if (data === 'online') {
56
+ // @ts-expect-error TS2554
43
57
  deferred.resolve();
44
58
  return;
45
59
  }
46
-
47
- // $FlowFixMe assume WorkerMessage as data
48
60
  this.handleMessage(data);
49
61
  };
50
62
  this.worker.onerror = this.onError;
51
63
  // Web workers can't crash or intentionally stop on their own, apart from stop() below
52
64
  // this.worker.on('exit', this.onExit);
53
65
 
66
+ // @ts-expect-error TS2322
54
67
  return promise;
55
68
  }
56
69
  stop() {
57
70
  if (!this.stopping) {
71
+ // @ts-expect-error TS2322
58
72
  this.stopping = (async () => {
59
73
  this.worker.postMessage('stop');
60
74
  let {
@@ -65,6 +79,7 @@ class WebWorker {
65
79
  data
66
80
  }) => {
67
81
  if (data === 'stopped') {
82
+ // @ts-expect-error TS2554
68
83
  deferred.resolve();
69
84
  }
70
85
  });
@@ -73,6 +88,7 @@ class WebWorker {
73
88
  this.onExit(0);
74
89
  })();
75
90
  }
91
+ // @ts-expect-error TS2322
76
92
  return this.stopping;
77
93
  }
78
94
  handleMessage(data) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaspack/workers",
3
- "version": "2.14.20",
3
+ "version": "2.14.21-typescript-80839fbd5.0",
4
4
  "description": "Blazing fast, zero configuration web application bundler",
5
5
  "license": "(MIT OR Apache-2.0)",
6
6
  "publishConfig": {
@@ -11,23 +11,27 @@
11
11
  "url": "https://github.com/atlassian-labs/atlaspack.git"
12
12
  },
13
13
  "main": "lib/index.js",
14
- "source": "src/index.js",
15
- "types": "index.d.ts",
14
+ "source": "src/index.ts",
15
+ "types": "src/index.ts",
16
16
  "engines": {
17
17
  "node": ">= 16.0.0"
18
18
  },
19
19
  "dependencies": {
20
- "@atlaspack/build-cache": "2.13.3",
21
- "@atlaspack/diagnostic": "2.14.1",
22
- "@atlaspack/logger": "2.14.13",
23
- "@atlaspack/profiler": "2.14.17",
24
- "@atlaspack/types-internal": "2.15.2",
25
- "@atlaspack/utils": "2.17.2",
20
+ "@atlaspack/build-cache": "2.13.4-typescript-80839fbd5.0",
21
+ "@atlaspack/diagnostic": "2.14.2-typescript-80839fbd5.0",
22
+ "@atlaspack/logger": "2.14.14-typescript-80839fbd5.0",
23
+ "@atlaspack/profiler": "2.14.18-typescript-80839fbd5.0",
24
+ "@atlaspack/types-internal": "2.15.3-typescript-80839fbd5.0",
25
+ "@atlaspack/utils": "2.17.3-typescript-80839fbd5.0",
26
26
  "nullthrows": "^1.1.1"
27
27
  },
28
28
  "browser": {
29
29
  "./src/process/ProcessWorker.js": false,
30
30
  "./src/threads/ThreadsWorker.js": false
31
31
  },
32
- "type": "commonjs"
32
+ "type": "commonjs",
33
+ "scripts": {
34
+ "check-ts": "tsc --noEmit"
35
+ },
36
+ "gitHead": "80839fbd5c6d6668c2622849856a4b25601354a8"
33
37
  }
@@ -1,24 +1,21 @@
1
- // @flow strict-local
2
1
  import {registerSerializableClass} from '@atlaspack/build-cache';
3
- // $FlowFixMe
4
2
  import packageJson from '../package.json';
5
3
 
6
4
  let HANDLE_ID = 0;
7
- // $FlowFixMe
8
5
  export type HandleFunction = (...args: Array<any>) => any;
9
6
 
10
- type HandleOpts = {|
11
- fn?: HandleFunction,
12
- childId?: ?number,
13
- id?: number,
14
- |};
7
+ type HandleOpts = {
8
+ fn?: HandleFunction;
9
+ childId?: number | null | undefined;
10
+ id?: number;
11
+ };
15
12
 
16
13
  const handleById: Map<number, Handle> = new Map();
17
14
 
18
15
  export default class Handle {
19
16
  id: number;
20
- childId: ?number;
21
- fn: ?HandleFunction;
17
+ childId: number | null | undefined;
18
+ fn: HandleFunction | null | undefined;
22
19
 
23
20
  constructor(opts: HandleOpts) {
24
21
  this.id = opts.id ?? ++HANDLE_ID;
@@ -31,7 +28,10 @@ export default class Handle {
31
28
  handleById.delete(this.id);
32
29
  }
33
30
 
34
- serialize(): {|childId: ?number, id: number|} {
31
+ serialize(): {
32
+ childId: number | null | undefined;
33
+ id: number;
34
+ } {
35
35
  return {
36
36
  id: this.id,
37
37
  childId: this.childId,
@@ -1,5 +1,3 @@
1
- // @flow
2
-
3
1
  import type {FilePath} from '@atlaspack/types-internal';
4
2
  import type {BackendType, WorkerImpl, WorkerMessage} from './types';
5
3
  import type {SharedReference} from './WorkerFarm';
@@ -9,33 +7,34 @@ import EventEmitter from 'events';
9
7
  import ThrowableDiagnostic from '@atlaspack/diagnostic';
10
8
  import {getWorkerBackend} from './backend';
11
9
 
12
- export type WorkerCall = {|
13
- method?: string,
14
- handle?: number,
15
- args: $ReadOnlyArray<any>,
16
- retries: number,
17
- skipReadyCheck?: boolean,
18
- resolve: (result: Promise<any> | any) => void,
19
- reject: (error: any) => void,
20
- |};
21
-
22
- type WorkerOpts = {|
23
- forcedKillTime: number,
24
- backend: BackendType,
25
- shouldPatchConsole?: boolean,
26
- shouldTrace?: boolean,
27
- sharedReferences: $ReadOnlyMap<SharedReference, mixed>,
28
- |};
10
+ export type WorkerCall = {
11
+ method?: string;
12
+ handle?: number;
13
+ args: ReadonlyArray<any>;
14
+ retries: number;
15
+ skipReadyCheck?: boolean;
16
+ resolve: (result: Promise<any> | any) => void;
17
+ reject: (error?: any) => void;
18
+ };
19
+
20
+ type WorkerOpts = {
21
+ forcedKillTime: number;
22
+ backend: BackendType;
23
+ shouldPatchConsole?: boolean;
24
+ shouldTrace?: boolean;
25
+ sharedReferences: ReadonlyMap<SharedReference, unknown>;
26
+ };
29
27
 
30
28
  let WORKER_ID = 0;
31
29
  export default class Worker extends EventEmitter {
32
- +options: WorkerOpts;
30
+ readonly options: WorkerOpts;
31
+ // @ts-expect-error TS2564
33
32
  worker: WorkerImpl;
34
33
  id: number = WORKER_ID++;
35
34
  sentSharedReferences: Set<SharedReference> = new Set();
36
35
 
37
36
  calls: Map<number, WorkerCall> = new Map();
38
- exitCode: ?number = null;
37
+ exitCode: number | null | undefined = null;
39
38
  callId: number = 0;
40
39
 
41
40
  ready: boolean = false;
@@ -48,7 +47,7 @@ export default class Worker extends EventEmitter {
48
47
  }
49
48
 
50
49
  async fork(forkModule: FilePath) {
51
- let filteredArgs = [];
50
+ let filteredArgs: Array<string> | Array<any | string> = [];
52
51
  if (process.execArgv) {
53
52
  filteredArgs = process.execArgv.filter(
54
53
  (v) =>
@@ -94,13 +93,13 @@ export default class Worker extends EventEmitter {
94
93
  }
95
94
  }
96
95
 
97
- let onMessage = (data) => this.receive(data);
98
- let onExit = (code) => {
96
+ let onMessage = (data: WorkerMessage) => this.receive(data);
97
+ let onExit = (code: number) => {
99
98
  this.exitCode = code;
100
99
  this.emit('exit', code);
101
100
  };
102
101
 
103
- let onError = (err) => {
102
+ let onError = (err: Error) => {
104
103
  this.emit('error', err);
105
104
  };
106
105
 
@@ -108,22 +107,27 @@ export default class Worker extends EventEmitter {
108
107
  this.worker = new WorkerBackend(filteredArgs, onMessage, onError, onExit);
109
108
  await this.worker.start();
110
109
 
111
- await new Promise((resolve, reject) => {
112
- this.call({
113
- method: 'childInit',
114
- args: [
115
- forkModule,
116
- {
117
- shouldPatchConsole: !!this.options.shouldPatchConsole,
118
- shouldTrace: !!this.options.shouldTrace,
119
- },
120
- ],
121
- retries: 0,
122
- skipReadyCheck: true,
123
- resolve,
124
- reject,
125
- });
126
- });
110
+ await new Promise(
111
+ (
112
+ resolve: (result: Promise<any> | any) => void,
113
+ reject: (error?: any) => void,
114
+ ) => {
115
+ this.call({
116
+ method: 'childInit',
117
+ args: [
118
+ forkModule,
119
+ {
120
+ shouldPatchConsole: !!this.options.shouldPatchConsole,
121
+ shouldTrace: !!this.options.shouldTrace,
122
+ },
123
+ ],
124
+ retries: 0,
125
+ skipReadyCheck: true,
126
+ resolve,
127
+ reject,
128
+ });
129
+ },
130
+ );
127
131
 
128
132
  let sharedRefs = this.options.sharedReferences;
129
133
  let refsShared = new Set();
@@ -131,8 +135,9 @@ export default class Worker extends EventEmitter {
131
135
  while (refsShared.size < sharedRefs.size) {
132
136
  await Promise.all(
133
137
  [...sharedRefs]
134
- .filter(([ref]) => !refsShared.has(ref))
135
- .map(async ([ref, value]) => {
138
+ // @ts-expect-error TS2769
139
+ .filter(([ref]: [any]) => !refsShared.has(ref))
140
+ .map(async ([ref, value]: [any, any]) => {
136
141
  await this.sendSharedReference(ref, value);
137
142
  refsShared.add(ref);
138
143
  }),
@@ -143,18 +148,23 @@ export default class Worker extends EventEmitter {
143
148
  this.emit('ready');
144
149
  }
145
150
 
146
- sendSharedReference(ref: SharedReference, value: mixed): Promise<any> {
151
+ sendSharedReference(ref: SharedReference, value: unknown): Promise<any> {
147
152
  this.sentSharedReferences.add(ref);
148
- return new Promise((resolve, reject) => {
149
- this.call({
150
- method: 'createSharedReference',
151
- args: [ref, value],
152
- resolve,
153
- reject,
154
- retries: 0,
155
- skipReadyCheck: true,
156
- });
157
- });
153
+ return new Promise(
154
+ (
155
+ resolve: (result: Promise<any> | any) => void,
156
+ reject: (error?: any) => void,
157
+ ) => {
158
+ this.call({
159
+ method: 'createSharedReference',
160
+ args: [ref, value],
161
+ resolve,
162
+ reject,
163
+ retries: 0,
164
+ skipReadyCheck: true,
165
+ });
166
+ },
167
+ );
158
168
  }
159
169
 
160
170
  send(data: WorkerMessage): void {
@@ -179,8 +189,10 @@ export default class Worker extends EventEmitter {
179
189
  };
180
190
 
181
191
  if (this.ready || call.skipReadyCheck === true) {
192
+ // @ts-expect-error TS2345
182
193
  this.send(msg);
183
194
  } else {
195
+ // @ts-expect-error TS2345
184
196
  this.once('ready', () => this.send(msg));
185
197
  }
186
198
  }