@atlaspack/workers 2.14.21-typescript-bc4459c37.0 → 2.14.21

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 (52) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/index.d.ts +2 -94
  3. package/lib/Handle.js +3 -0
  4. package/lib/Worker.js +1 -7
  5. package/lib/WorkerFarm.js +7 -17
  6. package/lib/backend.js +1 -5
  7. package/lib/bus.js +1 -1
  8. package/lib/child.js +4 -11
  9. package/lib/cpuCount.js +2 -6
  10. package/lib/process/ProcessChild.js +1 -6
  11. package/lib/process/ProcessWorker.js +2 -9
  12. package/lib/threads/ThreadsChild.js +0 -3
  13. package/lib/threads/ThreadsWorker.js +2 -10
  14. package/lib/web/WebChild.js +1 -6
  15. package/lib/web/WebWorker.js +4 -20
  16. package/package.json +12 -16
  17. package/src/{Handle.ts → Handle.js} +11 -11
  18. package/src/{Worker.ts → Worker.js} +54 -66
  19. package/src/{WorkerFarm.ts → WorkerFarm.js} +141 -198
  20. package/src/{backend.ts → backend.js} +3 -6
  21. package/src/{bus.ts → bus.js} +3 -2
  22. package/src/{child.ts → child.js} +43 -55
  23. package/src/{childState.ts → childState.js} +2 -1
  24. package/src/{cpuCount.ts → cpuCount.js} +7 -10
  25. package/src/{index.ts → index.js} +1 -0
  26. package/src/process/{ProcessChild.ts → ProcessChild.js} +3 -5
  27. package/src/process/{ProcessWorker.ts → ProcessWorker.js} +7 -10
  28. package/src/threads/{ThreadsChild.ts → ThreadsChild.js} +2 -2
  29. package/src/threads/{ThreadsWorker.ts → ThreadsWorker.js} +8 -14
  30. package/src/{types.ts → types.js} +35 -34
  31. package/src/web/{WebChild.ts → WebChild.js} +2 -6
  32. package/src/web/{WebWorker.ts → WebWorker.js} +7 -19
  33. package/test/{cpuCount.test.ts → cpuCount.test.js} +1 -0
  34. package/test/{workerfarm.test.js → workerfarm.test.cjs} +2 -4
  35. package/LICENSE +0 -201
  36. package/lib/Handle.d.ts +0 -19
  37. package/lib/Worker.d.ts +0 -40
  38. package/lib/WorkerFarm.d.ts +0 -93
  39. package/lib/backend.d.ts +0 -4
  40. package/lib/bus.d.ts +0 -6
  41. package/lib/child.d.ts +0 -43
  42. package/lib/childState.d.ts +0 -3
  43. package/lib/cpuCount.d.ts +0 -2
  44. package/lib/index.d.ts +0 -6
  45. package/lib/process/ProcessChild.d.ts +0 -9
  46. package/lib/process/ProcessWorker.d.ts +0 -16
  47. package/lib/threads/ThreadsChild.d.ts +0 -8
  48. package/lib/threads/ThreadsWorker.d.ts +0 -15
  49. package/lib/types.d.ts +0 -52
  50. package/lib/web/WebChild.d.ts +0 -8
  51. package/lib/web/WebWorker.d.ts +0 -15
  52. package/tsconfig.json +0 -4
@@ -1,3 +1,5 @@
1
+ // @flow
2
+
1
3
  import type {ErrorWithCode, FilePath} from '@atlaspack/types-internal';
2
4
  import type {
3
5
  CallRequest,
@@ -20,7 +22,7 @@ import {
20
22
  serialize,
21
23
  } from '@atlaspack/build-cache';
22
24
  import ThrowableDiagnostic, {anyToDiagnostic, md} from '@atlaspack/diagnostic';
23
- import Worker, {WorkerCall} from './Worker';
25
+ import Worker, {type WorkerCall} from './Worker';
24
26
  import cpuCount from './cpuCount';
25
27
  import Handle from './Handle';
26
28
  import {child} from './childState';
@@ -31,34 +33,32 @@ import logger from '@atlaspack/logger';
31
33
 
32
34
  let referenceId = 1;
33
35
 
34
- export type SharedReference = number;
35
-
36
- export type FarmOptions = {
37
- maxConcurrentWorkers: number;
38
- maxConcurrentCallsPerWorker: number;
39
- forcedKillTime: number;
40
- useLocalWorker: boolean;
41
- warmWorkers: boolean;
42
- workerPath?: FilePath;
43
- backend: BackendType;
44
- shouldPatchConsole?: boolean;
45
- shouldTrace?: boolean;
46
- };
36
+ export opaque type SharedReference = number;
37
+
38
+ export type FarmOptions = {|
39
+ maxConcurrentWorkers: number,
40
+ maxConcurrentCallsPerWorker: number,
41
+ forcedKillTime: number,
42
+ useLocalWorker: boolean,
43
+ warmWorkers: boolean,
44
+ workerPath?: FilePath,
45
+ backend: BackendType,
46
+ shouldPatchConsole?: boolean,
47
+ shouldTrace?: boolean,
48
+ |};
47
49
 
48
50
  type WorkerModule = {
49
- readonly [key: string]: (...args: Array<unknown>) => Promise<unknown>;
51
+ +[string]: (...args: Array<mixed>) => Promise<mixed>,
52
+ ...
50
53
  };
51
54
 
52
- export type WorkerApi = {
53
- callMaster(
54
- arg1: CallRequest,
55
- arg2?: boolean | null | undefined,
56
- ): Promise<unknown>;
57
- createReverseHandle(fn: HandleFunction): Handle;
58
- getSharedReference(ref: SharedReference): unknown;
59
- resolveSharedReference(value: unknown): SharedReference | null | undefined;
60
- callChild?: (childId: number, request: HandleCallRequest) => Promise<unknown>;
61
- };
55
+ export type WorkerApi = {|
56
+ callMaster(CallRequest, ?boolean): Promise<mixed>,
57
+ createReverseHandle(fn: HandleFunction): Handle,
58
+ getSharedReference(ref: SharedReference): mixed,
59
+ resolveSharedReference(value: mixed): ?SharedReference,
60
+ callChild?: (childId: number, request: HandleCallRequest) => Promise<mixed>,
61
+ |};
62
62
 
63
63
  export {Handle};
64
64
 
@@ -72,22 +72,19 @@ export default class WorkerFarm extends EventEmitter {
72
72
  callQueue: Array<WorkerCall> = [];
73
73
  ending: boolean = false;
74
74
  localWorker: WorkerModule;
75
- localWorkerInit: Promise<undefined> | null | undefined;
75
+ localWorkerInit: ?Promise<void>;
76
76
  options: FarmOptions;
77
77
  run: HandleFunction;
78
78
  warmWorkers: number = 0;
79
79
  readyWorkers: number = 0;
80
80
  workers: Map<number, Worker> = new Map();
81
81
  handles: Map<number, Handle> = new Map();
82
- sharedReferences: Map<SharedReference, unknown> = new Map();
83
- sharedReferencesByValue: Map<unknown, SharedReference> = new Map();
84
- serializedSharedReferences: Map<
85
- SharedReference,
86
- ArrayBuffer | null | undefined
87
- > = new Map();
88
- profiler: SamplingProfiler | null | undefined;
89
-
90
- constructor(farmOptions: Partial<FarmOptions> = {}) {
82
+ sharedReferences: Map<SharedReference, mixed> = new Map();
83
+ sharedReferencesByValue: Map<mixed, SharedReference> = new Map();
84
+ serializedSharedReferences: Map<SharedReference, ?ArrayBuffer> = new Map();
85
+ profiler: ?SamplingProfiler;
86
+
87
+ constructor(farmOptions: $Shape<FarmOptions> = {}) {
91
88
  super();
92
89
  this.options = {
93
90
  maxConcurrentWorkers: WorkerFarm.getNumWorkers(),
@@ -105,9 +102,9 @@ export default class WorkerFarm extends EventEmitter {
105
102
  throw new Error('Please provide a worker path!');
106
103
  }
107
104
 
105
+ // $FlowFixMe
108
106
  this.localWorker = require(this.options.workerPath);
109
107
 
110
- // @ts-expect-error TS2322
111
108
  this.localWorkerInit =
112
109
  this.localWorker.childInit != null ? this.localWorker.childInit() : null;
113
110
 
@@ -131,58 +128,47 @@ export default class WorkerFarm extends EventEmitter {
131
128
  this.startMaxWorkers();
132
129
  }
133
130
 
134
- workerApi: {
135
- callChild: (
136
- childId: number,
137
- request: HandleCallRequest,
138
- ) => Promise<unknown>;
131
+ workerApi: {|
132
+ callChild: (childId: number, request: HandleCallRequest) => Promise<mixed>,
139
133
  callMaster: (
140
134
  request: CallRequest,
141
- awaitResponse?: boolean | null | undefined,
142
- ) => Promise<unknown>;
143
- createReverseHandle: (fn: HandleFunction) => Handle;
144
- getSharedReference: (ref: SharedReference) => unknown;
145
- resolveSharedReference: (value: unknown) => undefined | SharedReference;
146
- runHandle: (handle: Handle, args: Array<any>) => Promise<unknown>;
147
- } = {
135
+ awaitResponse?: ?boolean,
136
+ ) => Promise<mixed>,
137
+ createReverseHandle: (fn: HandleFunction) => Handle,
138
+ getSharedReference: (ref: SharedReference) => mixed,
139
+ resolveSharedReference: (value: mixed) => void | SharedReference,
140
+ runHandle: (handle: Handle, args: Array<any>) => Promise<mixed>,
141
+ |} = {
148
142
  callMaster: async (
149
143
  request: CallRequest,
150
- awaitResponse: boolean | null = true,
151
- ): Promise<unknown> => {
144
+ awaitResponse: ?boolean = true,
145
+ ): Promise<mixed> => {
146
+ // $FlowFixMe
152
147
  let result = await this.processRequest({
153
148
  ...request,
154
- // @ts-expect-error TS2322
155
149
  awaitResponse,
156
150
  });
157
151
  return deserialize(serialize(result));
158
152
  },
159
153
  createReverseHandle: (fn: HandleFunction): Handle =>
160
154
  this.createReverseHandle(fn),
161
- callChild: (
162
- childId: number,
163
- request: HandleCallRequest,
164
- ): Promise<unknown> =>
165
- new Promise(
166
- (
167
- resolve: (result: Promise<any> | any) => void,
168
- reject: (error?: any) => void,
169
- ) => {
170
- nullthrows(this.workers.get(childId)).call({
171
- ...request,
172
- resolve,
173
- reject,
174
- retries: 0,
175
- });
176
- },
177
- ),
178
- runHandle: (handle: Handle, args: Array<any>): Promise<unknown> =>
155
+ callChild: (childId: number, request: HandleCallRequest): Promise<mixed> =>
156
+ new Promise((resolve, reject) => {
157
+ nullthrows(this.workers.get(childId)).call({
158
+ ...request,
159
+ resolve,
160
+ reject,
161
+ retries: 0,
162
+ });
163
+ }),
164
+ runHandle: (handle: Handle, args: Array<any>): Promise<mixed> =>
179
165
  this.workerApi.callChild(nullthrows(handle.childId), {
180
166
  handle: handle.id,
181
167
  args,
182
168
  }),
183
169
  getSharedReference: (ref: SharedReference) =>
184
170
  this.sharedReferences.get(ref),
185
- resolveSharedReference: (value: unknown) =>
171
+ resolveSharedReference: (value: mixed) =>
186
172
  this.sharedReferencesByValue.get(value),
187
173
  };
188
174
 
@@ -248,13 +234,9 @@ export default class WorkerFarm extends EventEmitter {
248
234
  };
249
235
  }
250
236
 
251
- onError(
252
- error: ErrorWithCode,
253
- worker: Worker,
254
- ): undefined | Promise<undefined> {
237
+ onError(error: ErrorWithCode, worker: Worker): void | Promise<void> {
255
238
  // Handle ipc errors
256
239
  if (error.code === 'ERR_IPC_CHANNEL_CLOSED') {
257
- // @ts-expect-error TS2322
258
240
  return this.stopWorker(worker);
259
241
  } else {
260
242
  logger.error(error, '@atlaspack/workers');
@@ -332,7 +314,6 @@ export default class WorkerFarm extends EventEmitter {
332
314
  }
333
315
 
334
316
  if (worker.calls.size < this.options.maxConcurrentCallsPerWorker) {
335
- // @ts-expect-error TS2345
336
317
  this.callWorker(worker, this.callQueue.shift());
337
318
  }
338
319
  }
@@ -352,24 +333,25 @@ export default class WorkerFarm extends EventEmitter {
352
333
  }
353
334
 
354
335
  async processRequest(
355
- data: {
356
- location: FilePath;
357
- } & Partial<WorkerRequest>,
336
+ data: {|
337
+ location: FilePath,
338
+ |} & $Shape<WorkerRequest>,
358
339
  worker?: Worker,
359
- ): Promise<string | null | undefined> {
340
+ ): Promise<?string> {
360
341
  let {method, args, location, awaitResponse, idx, handle: handleId} = data;
361
342
  let mod;
362
343
  if (handleId != null) {
363
344
  mod = nullthrows(this.handles.get(handleId)?.fn);
364
345
  } else if (location) {
365
- // @ts-expect-error TS2339
346
+ // $FlowFixMe
366
347
  if (process.browser) {
367
348
  if (location === '@atlaspack/workers/bus') {
368
- mod = bus as any;
349
+ mod = (bus: any);
369
350
  } else {
370
351
  throw new Error('No dynamic require possible: ' + location);
371
352
  }
372
353
  } else {
354
+ // $FlowFixMe this must be dynamic
373
355
  mod = require(location);
374
356
  }
375
357
  } else {
@@ -393,9 +375,8 @@ export default class WorkerFarm extends EventEmitter {
393
375
  let result;
394
376
  if (method == null) {
395
377
  try {
396
- // @ts-expect-error TS2488
397
378
  result = responseFromContent(await mod(...args));
398
- } catch (e: any) {
379
+ } catch (e) {
399
380
  result = errorResponseFromError(e);
400
381
  }
401
382
  } else {
@@ -405,8 +386,9 @@ export default class WorkerFarm extends EventEmitter {
405
386
  }
406
387
 
407
388
  try {
389
+ // $FlowFixMe
408
390
  result = responseFromContent(await mod[method](...args));
409
- } catch (e: any) {
391
+ } catch (e) {
410
392
  result = errorResponseFromError(e);
411
393
  }
412
394
  }
@@ -428,21 +410,16 @@ export default class WorkerFarm extends EventEmitter {
428
410
  throw new Error('Cannot add a worker call if workerfarm is ending.');
429
411
  }
430
412
 
431
- return new Promise(
432
- (
433
- resolve: (result: Promise<any> | any) => void,
434
- reject: (error?: any) => void,
435
- ) => {
436
- this.callQueue.push({
437
- method,
438
- args: args,
439
- retries: 0,
440
- resolve,
441
- reject,
442
- });
443
- this.processQueue();
444
- },
445
- );
413
+ return new Promise((resolve, reject) => {
414
+ this.callQueue.push({
415
+ method,
416
+ args: args,
417
+ retries: 0,
418
+ resolve,
419
+ reject,
420
+ });
421
+ this.processQueue();
422
+ });
446
423
  }
447
424
 
448
425
  async end(): Promise<void> {
@@ -489,12 +466,9 @@ export default class WorkerFarm extends EventEmitter {
489
466
  }
490
467
 
491
468
  createSharedReference(
492
- value: unknown,
469
+ value: mixed,
493
470
  isCacheable: boolean = true,
494
- ): {
495
- ref: SharedReference;
496
- dispose(): Promise<unknown>;
497
- } {
471
+ ): {|ref: SharedReference, dispose(): Promise<mixed>|} {
498
472
  let ref = referenceId++;
499
473
  this.sharedReferences.set(ref, value);
500
474
  this.sharedReferencesByValue.set(value, ref);
@@ -509,7 +483,7 @@ export default class WorkerFarm extends EventEmitter {
509
483
  this.sharedReferencesByValue.delete(value);
510
484
  this.serializedSharedReferences.delete(ref);
511
485
 
512
- let promises: Array<Promise<any>> = [];
486
+ let promises = [];
513
487
  for (let worker of this.workers.values()) {
514
488
  if (!worker.sentSharedReferences.has(ref)) {
515
489
  continue;
@@ -517,21 +491,16 @@ export default class WorkerFarm extends EventEmitter {
517
491
 
518
492
  worker.sentSharedReferences.delete(ref);
519
493
  promises.push(
520
- new Promise(
521
- (
522
- resolve: (result: Promise<any> | any) => void,
523
- reject: (error?: any) => void,
524
- ) => {
525
- worker.call({
526
- method: 'deleteSharedReference',
527
- args: [ref],
528
- resolve,
529
- reject,
530
- skipReadyCheck: true,
531
- retries: 0,
532
- });
533
- },
534
- ),
494
+ new Promise((resolve, reject) => {
495
+ worker.call({
496
+ method: 'deleteSharedReference',
497
+ args: [ref],
498
+ resolve,
499
+ reject,
500
+ skipReadyCheck: true,
501
+ retries: 0,
502
+ });
503
+ }),
535
504
  );
536
505
  }
537
506
  return Promise.all(promises);
@@ -551,33 +520,26 @@ export default class WorkerFarm extends EventEmitter {
551
520
  // If the reference was created with the isCacheable option set to false,
552
521
  // serializedSharedReferences will contain `null` as the value.
553
522
  if (cached !== null) {
554
- // @ts-expect-error TS2345
555
523
  this.serializedSharedReferences.set(ref, buf);
556
524
  }
557
525
 
558
- // @ts-expect-error TS2322
559
526
  return buf;
560
527
  }
561
528
 
562
529
  async startProfile() {
563
- let promises: Array<Promise<unknown> | Promise<any>> = [];
530
+ let promises = [];
564
531
  for (let worker of this.workers.values()) {
565
532
  promises.push(
566
- new Promise(
567
- (
568
- resolve: (result: Promise<any> | any) => void,
569
- reject: (error?: any) => void,
570
- ) => {
571
- worker.call({
572
- method: 'startProfile',
573
- args: [],
574
- resolve,
575
- reject,
576
- retries: 0,
577
- skipReadyCheck: true,
578
- });
579
- },
580
- ),
533
+ new Promise((resolve, reject) => {
534
+ worker.call({
535
+ method: 'startProfile',
536
+ args: [],
537
+ resolve,
538
+ reject,
539
+ retries: 0,
540
+ skipReadyCheck: true,
541
+ });
542
+ }),
581
543
  );
582
544
  }
583
545
 
@@ -598,21 +560,16 @@ export default class WorkerFarm extends EventEmitter {
598
560
  for (let worker of this.workers.values()) {
599
561
  names.push('Worker ' + worker.id);
600
562
  promises.push(
601
- new Promise(
602
- (
603
- resolve: (result: Promise<any> | any) => void,
604
- reject: (error?: any) => void,
605
- ) => {
606
- worker.call({
607
- method: 'endProfile',
608
- args: [],
609
- resolve,
610
- reject,
611
- retries: 0,
612
- skipReadyCheck: true,
613
- });
614
- },
615
- ),
563
+ new Promise((resolve, reject) => {
564
+ worker.call({
565
+ method: 'endProfile',
566
+ args: [],
567
+ resolve,
568
+ reject,
569
+ retries: 0,
570
+ skipReadyCheck: true,
571
+ });
572
+ }),
616
573
  );
617
574
  }
618
575
 
@@ -622,40 +579,33 @@ export default class WorkerFarm extends EventEmitter {
622
579
  let stream = trace.pipe(fs.createWriteStream(filename));
623
580
 
624
581
  for (let profile of profiles) {
625
- // @ts-expect-error TS2345
626
582
  trace.addCPUProfile(names.shift(), profile);
627
583
  }
628
584
 
629
585
  trace.flush();
630
- await new Promise((resolve: (result: Promise<never>) => void) => {
586
+ await new Promise((resolve) => {
631
587
  stream.once('finish', resolve);
632
588
  });
633
589
 
634
590
  logger.info({
635
591
  origin: '@atlaspack/workers',
636
- // @ts-expect-error TS2345
637
592
  message: md`Wrote profile to ${filename}`,
638
593
  });
639
594
  }
640
595
 
641
596
  async callAllWorkers(method: string, args: Array<any>) {
642
- let promises: Array<Promise<unknown> | Promise<any>> = [];
597
+ let promises = [];
643
598
  for (let worker of this.workers.values()) {
644
599
  promises.push(
645
- new Promise(
646
- (
647
- resolve: (result: Promise<any> | any) => void,
648
- reject: (error?: any) => void,
649
- ) => {
650
- worker.call({
651
- method,
652
- args,
653
- resolve,
654
- reject,
655
- retries: 0,
656
- });
657
- },
658
- ),
600
+ new Promise((resolve, reject) => {
601
+ worker.call({
602
+ method,
603
+ args,
604
+ resolve,
605
+ reject,
606
+ retries: 0,
607
+ });
608
+ }),
659
609
  );
660
610
  }
661
611
 
@@ -670,27 +620,21 @@ export default class WorkerFarm extends EventEmitter {
670
620
  let snapshotPaths = await Promise.all(
671
621
  [...this.workers.values()].map(
672
622
  (worker) =>
673
- new Promise(
674
- (
675
- resolve: (result: Promise<any> | any) => void,
676
- reject: (error?: any) => void,
677
- ) => {
678
- worker.call({
679
- method: 'takeHeapSnapshot',
680
- args: [snapshotId],
681
- resolve,
682
- reject,
683
- retries: 0,
684
- skipReadyCheck: true,
685
- });
686
- },
687
- ),
623
+ new Promise((resolve, reject) => {
624
+ worker.call({
625
+ method: 'takeHeapSnapshot',
626
+ args: [snapshotId],
627
+ resolve,
628
+ reject,
629
+ retries: 0,
630
+ skipReadyCheck: true,
631
+ });
632
+ }),
688
633
  ),
689
634
  );
690
635
 
691
636
  logger.info({
692
637
  origin: '@atlaspack/workers',
693
- // @ts-expect-error TS2345
694
638
  message: md`Wrote heap snapshots to the following paths:\n${snapshotPaths.join(
695
639
  '\n',
696
640
  )}`,
@@ -713,16 +657,16 @@ export default class WorkerFarm extends EventEmitter {
713
657
  return !!child;
714
658
  }
715
659
 
716
- static getWorkerApi(): {
660
+ static getWorkerApi(): {|
717
661
  callMaster: (
718
662
  request: CallRequest,
719
- awaitResponse?: boolean | null | undefined,
720
- ) => Promise<unknown>;
721
- createReverseHandle: (fn: (...args: Array<any>) => unknown) => Handle;
722
- getSharedReference: (ref: SharedReference) => unknown;
723
- resolveSharedReference: (value: unknown) => undefined | SharedReference;
724
- runHandle: (handle: Handle, args: Array<any>) => Promise<unknown>;
725
- } {
663
+ awaitResponse?: ?boolean,
664
+ ) => Promise<mixed>,
665
+ createReverseHandle: (fn: (...args: Array<any>) => mixed) => Handle,
666
+ getSharedReference: (ref: SharedReference) => mixed,
667
+ resolveSharedReference: (value: mixed) => void | SharedReference,
668
+ runHandle: (handle: Handle, args: Array<any>) => Promise<mixed>,
669
+ |} {
726
670
  invariant(
727
671
  child != null,
728
672
  'WorkerFarm.getWorkerApi can only be called within workers',
@@ -731,10 +675,9 @@ export default class WorkerFarm extends EventEmitter {
731
675
  }
732
676
 
733
677
  static getConcurrentCallsPerWorker(
734
- defaultValue: number = DEFAULT_MAX_CONCURRENT_CALLS,
678
+ defaultValue?: number = DEFAULT_MAX_CONCURRENT_CALLS,
735
679
  ): number {
736
680
  return (
737
- // @ts-expect-error TS2345
738
681
  parseInt(process.env.ATLASPACK_MAX_CONCURRENT_CALLS, 10) || defaultValue
739
682
  );
740
683
  }
@@ -1,11 +1,8 @@
1
+ // @flow
1
2
  import type {BackendType, WorkerImpl} from './types';
2
3
 
3
- // flow-to-ts helpers
4
- export type Class<T> = new (...args: any[]) => T;
5
- // /flow-to-ts helpers
6
-
7
4
  export function detectBackend(): BackendType {
8
- // @ts-expect-error TS2339
5
+ // $FlowFixMe
9
6
  if (process.browser) return 'web';
10
7
 
11
8
  switch (process.env.ATLASPACK_WORKER_BACKEND) {
@@ -17,7 +14,7 @@ export function detectBackend(): BackendType {
17
14
  try {
18
15
  require('worker_threads');
19
16
  return 'threads';
20
- } catch (err: any) {
17
+ } catch (err) {
21
18
  return 'process';
22
19
  }
23
20
  }
@@ -1,3 +1,4 @@
1
+ // @flow
1
2
  import EventEmitter from 'events';
2
3
  import {child} from './childState';
3
4
 
@@ -6,7 +7,7 @@ class Bus extends EventEmitter {
6
7
  if (child) {
7
8
  child.workerApi.callMaster(
8
9
  {
9
- // @ts-expect-error TS2339
10
+ // $FlowFixMe
10
11
  location: process.browser ? '@atlaspack/workers/bus' : __filename,
11
12
  method: 'emit',
12
13
  args: [event, ...args],
@@ -20,4 +21,4 @@ class Bus extends EventEmitter {
20
21
  }
21
22
  }
22
23
 
23
- export default new Bus() as Bus;
24
+ export default (new Bus(): Bus);