@atlaspack/workers 2.14.5-canary.26 → 2.14.5-canary.262

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 (68) hide show
  1. package/CHANGELOG.md +306 -0
  2. package/dist/Handle.js +33 -0
  3. package/dist/Worker.js +180 -0
  4. package/dist/WorkerFarm.js +539 -0
  5. package/dist/backend.js +34 -0
  6. package/dist/bus.js +24 -0
  7. package/dist/child.js +290 -0
  8. package/dist/childState.js +11 -0
  9. package/dist/cpuCount.js +72 -0
  10. package/dist/index.js +44 -0
  11. package/dist/process/ProcessChild.js +48 -0
  12. package/dist/process/ProcessWorker.js +68 -0
  13. package/dist/threads/ThreadsChild.js +31 -0
  14. package/dist/threads/ThreadsWorker.js +47 -0
  15. package/dist/types.js +2 -0
  16. package/dist/web/WebChild.js +34 -0
  17. package/dist/web/WebWorker.js +70 -0
  18. package/index.d.ts +96 -3
  19. package/lib/Handle.js +0 -3
  20. package/lib/Worker.js +7 -1
  21. package/lib/WorkerFarm.js +12 -7
  22. package/lib/backend.js +5 -1
  23. package/lib/bus.js +1 -1
  24. package/lib/child.js +11 -4
  25. package/lib/cpuCount.js +6 -2
  26. package/lib/process/ProcessChild.js +6 -1
  27. package/lib/process/ProcessWorker.js +9 -2
  28. package/lib/threads/ThreadsChild.js +3 -0
  29. package/lib/threads/ThreadsWorker.js +10 -2
  30. package/lib/types/Handle.d.ts +19 -0
  31. package/lib/types/Worker.d.ts +40 -0
  32. package/lib/types/WorkerFarm.d.ts +93 -0
  33. package/lib/types/backend.d.ts +4 -0
  34. package/lib/types/bus.d.ts +6 -0
  35. package/lib/types/child.d.ts +43 -0
  36. package/lib/types/childState.d.ts +3 -0
  37. package/lib/types/cpuCount.d.ts +2 -0
  38. package/lib/types/index.d.ts +6 -0
  39. package/lib/types/process/ProcessChild.d.ts +9 -0
  40. package/lib/types/process/ProcessWorker.d.ts +16 -0
  41. package/lib/types/threads/ThreadsChild.d.ts +8 -0
  42. package/lib/types/threads/ThreadsWorker.d.ts +15 -0
  43. package/lib/types/types.d.ts +52 -0
  44. package/lib/types/web/WebChild.d.ts +8 -0
  45. package/lib/types/web/WebWorker.d.ts +15 -0
  46. package/lib/web/WebChild.js +6 -1
  47. package/lib/web/WebWorker.js +19 -4
  48. package/package.json +15 -19
  49. package/src/{Handle.js → Handle.ts} +11 -11
  50. package/src/{Worker.js → Worker.ts} +66 -54
  51. package/src/{WorkerFarm.js → WorkerFarm.ts} +195 -142
  52. package/src/{backend.js → backend.ts} +6 -3
  53. package/src/{bus.js → bus.ts} +2 -3
  54. package/src/{child.js → child.ts} +55 -43
  55. package/src/{childState.js → childState.ts} +1 -2
  56. package/src/{cpuCount.js → cpuCount.ts} +10 -7
  57. package/src/{index.js → index.ts} +0 -1
  58. package/src/process/{ProcessChild.js → ProcessChild.ts} +5 -3
  59. package/src/process/{ProcessWorker.js → ProcessWorker.ts} +10 -7
  60. package/src/threads/{ThreadsChild.js → ThreadsChild.ts} +2 -2
  61. package/src/threads/{ThreadsWorker.js → ThreadsWorker.ts} +14 -8
  62. package/src/{types.js → types.ts} +34 -35
  63. package/src/web/{WebChild.js → WebChild.ts} +6 -2
  64. package/src/web/{WebWorker.js → WebWorker.ts} +19 -7
  65. package/test/{cpuCount.test.js → cpuCount.test.ts} +0 -1
  66. package/test/{workerfarm.test.cjs → workerfarm.test.js} +9 -2
  67. package/tsconfig.json +27 -0
  68. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,93 @@
1
+ import type { ErrorWithCode, FilePath } from '@atlaspack/types-internal';
2
+ import type { CallRequest, HandleCallRequest, WorkerRequest, BackendType } from './types';
3
+ import type { HandleFunction } from './Handle';
4
+ import EventEmitter from 'events';
5
+ import Worker, { WorkerCall } from './Worker';
6
+ import Handle from './Handle';
7
+ import { SamplingProfiler } from '@atlaspack/profiler';
8
+ export type SharedReference = number;
9
+ export type FarmOptions = {
10
+ maxConcurrentWorkers: number;
11
+ maxConcurrentCallsPerWorker: number;
12
+ forcedKillTime: number;
13
+ useLocalWorker: boolean;
14
+ warmWorkers: boolean;
15
+ workerPath?: FilePath;
16
+ backend: BackendType;
17
+ shouldPatchConsole?: boolean;
18
+ shouldTrace?: boolean;
19
+ };
20
+ type WorkerModule = {
21
+ readonly [key: string]: (...args: Array<unknown>) => Promise<unknown>;
22
+ };
23
+ export type WorkerApi = {
24
+ callMaster(arg1: CallRequest, arg2?: boolean | null | undefined): Promise<unknown>;
25
+ createReverseHandle(fn: HandleFunction): Handle;
26
+ getSharedReference(ref: SharedReference): unknown;
27
+ resolveSharedReference(value: unknown): SharedReference | null | undefined;
28
+ callChild?: (childId: number, request: HandleCallRequest) => Promise<unknown>;
29
+ };
30
+ export { Handle };
31
+ /**
32
+ * workerPath should always be defined inside farmOptions
33
+ */
34
+ export default class WorkerFarm extends EventEmitter {
35
+ callQueue: Array<WorkerCall>;
36
+ ending: boolean;
37
+ localWorker: WorkerModule;
38
+ localWorkerInit: Promise<undefined> | null | undefined;
39
+ options: FarmOptions;
40
+ run: HandleFunction;
41
+ warmWorkers: number;
42
+ readyWorkers: number;
43
+ workers: Map<number, Worker>;
44
+ handles: Map<number, Handle>;
45
+ sharedReferences: Map<SharedReference, unknown>;
46
+ sharedReferencesByValue: Map<unknown, SharedReference>;
47
+ serializedSharedReferences: Map<SharedReference, ArrayBufferLike | null | undefined>;
48
+ profiler: SamplingProfiler | null | undefined;
49
+ constructor(farmOptions?: Partial<FarmOptions>);
50
+ workerApi: {
51
+ callChild: (childId: number, request: HandleCallRequest) => Promise<unknown>;
52
+ callMaster: (request: CallRequest, awaitResponse?: boolean | null | undefined) => Promise<unknown>;
53
+ createReverseHandle: (fn: HandleFunction) => Handle;
54
+ getSharedReference: (ref: SharedReference) => unknown;
55
+ resolveSharedReference: (value: unknown) => undefined | SharedReference;
56
+ runHandle: (handle: Handle, args: Array<any>) => Promise<unknown>;
57
+ };
58
+ warmupWorker(method: string, args: Array<any>): void;
59
+ shouldStartRemoteWorkers(): boolean;
60
+ createHandle(method: string, useMainThread?: boolean): HandleFunction;
61
+ onError(error: ErrorWithCode, worker: Worker): undefined | Promise<undefined>;
62
+ startChild(): void;
63
+ stopWorker(worker: Worker): Promise<void>;
64
+ processQueue(): void;
65
+ callWorker(worker: Worker, call: WorkerCall): Promise<void>;
66
+ processRequest(data: {
67
+ location: FilePath;
68
+ } & Partial<WorkerRequest>, worker?: Worker): Promise<string | null | undefined>;
69
+ addCall(method: string, args: Array<any>): Promise<any>;
70
+ end(): Promise<void>;
71
+ startMaxWorkers(): void;
72
+ shouldUseRemoteWorkers(): boolean;
73
+ createReverseHandle(fn: HandleFunction): Handle;
74
+ createSharedReference(value: unknown, isCacheable?: boolean): {
75
+ ref: SharedReference;
76
+ dispose(): Promise<unknown>;
77
+ };
78
+ getSerializedSharedReference(ref: SharedReference): ArrayBufferLike;
79
+ startProfile(): Promise<void>;
80
+ endProfile(): Promise<void>;
81
+ callAllWorkers(method: string, args: Array<any>): Promise<void>;
82
+ takeHeapSnapshot(): Promise<void>;
83
+ static getNumWorkers(): number;
84
+ static isWorker(): boolean;
85
+ static getWorkerApi(): {
86
+ callMaster: (request: CallRequest, awaitResponse?: boolean | null | undefined) => Promise<unknown>;
87
+ createReverseHandle: (fn: (...args: Array<any>) => unknown) => Handle;
88
+ getSharedReference: (ref: SharedReference) => unknown;
89
+ resolveSharedReference: (value: unknown) => undefined | SharedReference;
90
+ runHandle: (handle: Handle, args: Array<any>) => Promise<unknown>;
91
+ };
92
+ static getConcurrentCallsPerWorker(defaultValue?: number): number;
93
+ }
@@ -0,0 +1,4 @@
1
+ import type { BackendType, WorkerImpl } from './types';
2
+ export type Class<T> = new (...args: any[]) => T;
3
+ export declare function detectBackend(): BackendType;
4
+ export declare function getWorkerBackend(backend: BackendType): Class<WorkerImpl>;
@@ -0,0 +1,6 @@
1
+ import EventEmitter from 'events';
2
+ declare class Bus extends EventEmitter {
3
+ emit(event: string, ...args: Array<any>): boolean;
4
+ }
5
+ declare const _default: Bus;
6
+ export default _default;
@@ -0,0 +1,43 @@
1
+ import type { CallRequest, WorkerMessage, WorkerRequest, WorkerResponse, ChildImpl } from './types';
2
+ import type { Async, IDisposable } from '@atlaspack/types-internal';
3
+ import type { SharedReference } from './WorkerFarm';
4
+ import { SamplingProfiler } from '@atlaspack/profiler';
5
+ export type Class<T> = new (...args: any[]) => T;
6
+ type ChildCall = WorkerRequest & {
7
+ resolve: (result: Promise<any> | any) => void;
8
+ reject: (error?: any) => void;
9
+ };
10
+ export declare class Child {
11
+ callQueue: Array<ChildCall>;
12
+ childId: number | null | undefined;
13
+ maxConcurrentCalls: number;
14
+ module: any | null | undefined;
15
+ responseId: number;
16
+ responseQueue: Map<number, ChildCall>;
17
+ loggerDisposable: IDisposable;
18
+ tracerDisposable: IDisposable;
19
+ child: ChildImpl;
20
+ profiler: SamplingProfiler | null | undefined;
21
+ handles: Map<number, Handle>;
22
+ sharedReferences: Map<SharedReference, unknown>;
23
+ sharedReferencesByValue: Map<unknown, SharedReference>;
24
+ constructor(ChildBackend: Class<ChildImpl>);
25
+ workerApi: {
26
+ callMaster: (request: CallRequest, awaitResponse?: boolean | null | undefined) => Promise<unknown>;
27
+ createReverseHandle: (fn: (...args: Array<any>) => unknown) => Handle;
28
+ getSharedReference: (ref: SharedReference) => unknown;
29
+ resolveSharedReference: (value: unknown) => undefined | SharedReference;
30
+ runHandle: (handle: Handle, args: Array<any>) => Promise<unknown>;
31
+ };
32
+ messageListener(message: WorkerMessage): Async<void>;
33
+ send(data: WorkerMessage): void;
34
+ childInit(module: string, childId: number): Promise<void>;
35
+ handleRequest(data: WorkerRequest): Promise<void>;
36
+ handleResponse(data: WorkerResponse): void;
37
+ addCall(request: CallRequest, awaitResponse?: boolean | null): Promise<unknown>;
38
+ sendRequest(call: ChildCall): void;
39
+ processQueue(): void;
40
+ handleEnd(): void;
41
+ createReverseHandle(fn: (...args: Array<any>) => unknown): Handle;
42
+ }
43
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { Child } from './child';
2
+ export declare let child: Child | null | undefined;
3
+ export declare function setChild(c: Child): void;
@@ -0,0 +1,2 @@
1
+ export declare function detectRealCores(): number;
2
+ export default function getCores(bypassCache?: boolean): number;
@@ -0,0 +1,6 @@
1
+ import WorkerFarm from './WorkerFarm';
2
+ import bus from './bus';
3
+ export default WorkerFarm;
4
+ export { bus };
5
+ export { Handle } from './WorkerFarm';
6
+ export type { WorkerApi, FarmOptions, SharedReference } from './WorkerFarm';
@@ -0,0 +1,9 @@
1
+ import type { ChildImpl, MessageHandler, ExitHandler, WorkerMessage } from '../types';
2
+ export default class ProcessChild implements ChildImpl {
3
+ onMessage: MessageHandler;
4
+ onExit: ExitHandler;
5
+ constructor(onMessage: MessageHandler, onExit: ExitHandler);
6
+ handleMessage(data: string): void;
7
+ send(data: WorkerMessage): void;
8
+ stop(): void;
9
+ }
@@ -0,0 +1,16 @@
1
+ import type { WorkerImpl, MessageHandler, ErrorHandler, ExitHandler, WorkerMessage } from '../types';
2
+ import { ChildProcess } from 'child_process';
3
+ export declare let WORKER_PATH: string;
4
+ export default class ProcessWorker implements WorkerImpl {
5
+ execArgv: any;
6
+ onMessage: MessageHandler;
7
+ onError: ErrorHandler;
8
+ onExit: ExitHandler;
9
+ child: ChildProcess;
10
+ processQueue: boolean;
11
+ sendQueue: Array<any>;
12
+ constructor(execArgv: any, onMessage: MessageHandler, onError: ErrorHandler, onExit: ExitHandler);
13
+ start(): Promise<void>;
14
+ stop(): Promise<void>;
15
+ send(data: WorkerMessage): void;
16
+ }
@@ -0,0 +1,8 @@
1
+ import type { ChildImpl, MessageHandler, ExitHandler, WorkerMessage } from '../types';
2
+ export default class ThreadsChild 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,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,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';
@@ -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,15 @@
1
+ import type { WorkerImpl, MessageHandler, ErrorHandler, ExitHandler, WorkerMessage } from '../types';
2
+ export declare let WORKER_PATH: 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
+ }
@@ -14,6 +14,10 @@ function _buildCache() {
14
14
  var _child = require("../child");
15
15
  var _childState = require("../childState");
16
16
  /* eslint-env worker*/
17
+
18
+ // Type declarations for Web Worker environment
19
+
20
+ // @ts-expect-error TS2420
17
21
  class WebChild {
18
22
  constructor(onMessage, onExit) {
19
23
  if (!(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)) {
@@ -28,7 +32,6 @@ class WebChild {
28
32
  this.onExit(0);
29
33
  self.postMessage('stopped');
30
34
  }
31
- // $FlowFixMe assume WorkerMessage as data
32
35
  this.handleMessage(data);
33
36
  });
34
37
  self.postMessage('online');
@@ -40,5 +43,7 @@ class WebChild {
40
43
  self.postMessage((0, _buildCache().prepareForSerialization)(data));
41
44
  }
42
45
  }
46
+
47
+ // @ts-expect-error TS2345
43
48
  exports.default = WebChild;
44
49
  (0, _childState.setChild)(new _child.Child(WebChild));
@@ -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'
@@ -40,21 +51,23 @@ class WebWorker {
40
51
  data
41
52
  }) => {
42
53
  if (data === 'online') {
54
+ // @ts-expect-error TS2554
43
55
  deferred.resolve();
44
56
  return;
45
57
  }
46
-
47
- // $FlowFixMe assume WorkerMessage as data
48
58
  this.handleMessage(data);
49
59
  };
60
+ // @ts-expect-error TS2322
50
61
  this.worker.onerror = this.onError;
51
62
  // Web workers can't crash or intentionally stop on their own, apart from stop() below
52
63
  // this.worker.on('exit', this.onExit);
53
64
 
65
+ // @ts-expect-error TS2322
54
66
  return promise;
55
67
  }
56
68
  stop() {
57
69
  if (!this.stopping) {
70
+ // @ts-expect-error TS2322
58
71
  this.stopping = (async () => {
59
72
  this.worker.postMessage('stop');
60
73
  let {
@@ -65,6 +78,7 @@ class WebWorker {
65
78
  data
66
79
  }) => {
67
80
  if (data === 'stopped') {
81
+ // @ts-expect-error TS2554
68
82
  deferred.resolve();
69
83
  }
70
84
  });
@@ -73,6 +87,7 @@ class WebWorker {
73
87
  this.onExit(0);
74
88
  })();
75
89
  }
90
+ // @ts-expect-error TS2322
76
91
  return this.stopping;
77
92
  }
78
93
  handleMessage(data) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaspack/workers",
3
- "version": "2.14.5-canary.26+87211c647",
3
+ "version": "2.14.5-canary.262+2ae993f14",
4
4
  "description": "Blazing fast, zero configuration web application bundler",
5
5
  "license": "(MIT OR Apache-2.0)",
6
6
  "publishConfig": {
@@ -10,26 +10,19 @@
10
10
  "type": "git",
11
11
  "url": "https://github.com/atlassian-labs/atlaspack.git"
12
12
  },
13
- "main": "lib/index.js",
14
- "source": "src/index.js",
15
- "types": "index.d.ts",
13
+ "main": "./lib/index.js",
14
+ "source": "./src/index.ts",
15
+ "types": "./lib/types/index.d.ts",
16
16
  "engines": {
17
17
  "node": ">= 16.0.0"
18
18
  },
19
- "exports": {
20
- ".": {
21
- "types": "./index.d.ts",
22
- "@atlaspack::sources": "./src/index.js",
23
- "default": "./lib/index.js"
24
- }
25
- },
26
19
  "dependencies": {
27
- "@atlaspack/build-cache": "2.13.3-canary.94+87211c647",
28
- "@atlaspack/diagnostic": "2.14.1-canary.94+87211c647",
29
- "@atlaspack/logger": "2.14.5-canary.26+87211c647",
30
- "@atlaspack/profiler": "2.14.1-canary.94+87211c647",
31
- "@atlaspack/types-internal": "2.14.1-canary.94+87211c647",
32
- "@atlaspack/utils": "2.14.5-canary.26+87211c647",
20
+ "@atlaspack/build-cache": "2.13.3-canary.330+2ae993f14",
21
+ "@atlaspack/diagnostic": "2.14.1-canary.330+2ae993f14",
22
+ "@atlaspack/logger": "2.14.5-canary.262+2ae993f14",
23
+ "@atlaspack/profiler": "2.14.1-canary.330+2ae993f14",
24
+ "@atlaspack/types-internal": "2.14.1-canary.330+2ae993f14",
25
+ "@atlaspack/utils": "2.14.5-canary.262+2ae993f14",
33
26
  "nullthrows": "^1.1.1"
34
27
  },
35
28
  "browser": {
@@ -37,5 +30,8 @@
37
30
  "./src/threads/ThreadsWorker.js": false
38
31
  },
39
32
  "type": "commonjs",
40
- "gitHead": "87211c647df95663b4bca3af09e3b2d84500b8fa"
41
- }
33
+ "scripts": {
34
+ "build:lib": "gulp build --gulpfile ../../../gulpfile.js --cwd ."
35
+ },
36
+ "gitHead": "2ae993f141ed1ee17a6c3489a9e347d300231a87"
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,