@atlaspack/workers 2.14.21 → 2.14.22-typescript-5ad950d33.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 (51) hide show
  1. package/LICENSE +201 -0
  2. package/index.d.ts +94 -2
  3. package/lib/Handle.d.ts +19 -0
  4. package/lib/Handle.js +0 -3
  5. package/lib/Worker.d.ts +40 -0
  6. package/lib/Worker.js +7 -1
  7. package/lib/WorkerFarm.d.ts +93 -0
  8. package/lib/WorkerFarm.js +17 -7
  9. package/lib/backend.d.ts +4 -0
  10. package/lib/backend.js +5 -1
  11. package/lib/bus.d.ts +6 -0
  12. package/lib/bus.js +1 -1
  13. package/lib/child.d.ts +43 -0
  14. package/lib/child.js +11 -4
  15. package/lib/childState.d.ts +3 -0
  16. package/lib/cpuCount.d.ts +2 -0
  17. package/lib/cpuCount.js +6 -2
  18. package/lib/index.d.ts +6 -0
  19. package/lib/process/ProcessChild.d.ts +9 -0
  20. package/lib/process/ProcessChild.js +6 -1
  21. package/lib/process/ProcessWorker.d.ts +16 -0
  22. package/lib/process/ProcessWorker.js +9 -2
  23. package/lib/threads/ThreadsChild.d.ts +8 -0
  24. package/lib/threads/ThreadsChild.js +3 -0
  25. package/lib/threads/ThreadsWorker.d.ts +15 -0
  26. package/lib/threads/ThreadsWorker.js +10 -2
  27. package/lib/types.d.ts +52 -0
  28. package/lib/web/WebChild.d.ts +8 -0
  29. package/lib/web/WebChild.js +6 -1
  30. package/lib/web/WebWorker.d.ts +15 -0
  31. package/lib/web/WebWorker.js +20 -4
  32. package/package.json +16 -12
  33. package/src/{Handle.js → Handle.ts} +11 -11
  34. package/src/{Worker.js → Worker.ts} +66 -54
  35. package/src/{WorkerFarm.js → WorkerFarm.ts} +198 -141
  36. package/src/{backend.js → backend.ts} +6 -3
  37. package/src/{bus.js → bus.ts} +2 -3
  38. package/src/{child.js → child.ts} +55 -43
  39. package/src/{childState.js → childState.ts} +1 -2
  40. package/src/{cpuCount.js → cpuCount.ts} +10 -7
  41. package/src/{index.js → index.ts} +0 -1
  42. package/src/process/{ProcessChild.js → ProcessChild.ts} +5 -3
  43. package/src/process/{ProcessWorker.js → ProcessWorker.ts} +10 -7
  44. package/src/threads/{ThreadsChild.js → ThreadsChild.ts} +2 -2
  45. package/src/threads/{ThreadsWorker.js → ThreadsWorker.ts} +14 -8
  46. package/src/{types.js → types.ts} +34 -35
  47. package/src/web/{WebChild.js → WebChild.ts} +6 -2
  48. package/src/web/{WebWorker.js → WebWorker.ts} +19 -7
  49. package/test/{cpuCount.test.js → cpuCount.test.ts} +0 -1
  50. package/test/{workerfarm.test.cjs → workerfarm.test.js} +4 -2
  51. package/tsconfig.json +4 -0
@@ -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
  }