1 | declare module "worker_threads" {
|
2 | import { Context } from "vm";
|
3 | import { EventEmitter } from "events";
|
4 | import { Readable, Writable } from "stream";
|
5 | import { URL } from "url";
|
6 |
|
7 | const isMainThread: boolean;
|
8 | const parentPort: null | MessagePort;
|
9 | const SHARE_ENV: unique symbol;
|
10 | const threadId: number;
|
11 | const workerData: any;
|
12 |
|
13 | class MessageChannel {
|
14 | readonly port1: MessagePort;
|
15 | readonly port2: MessagePort;
|
16 | }
|
17 |
|
18 | class MessagePort extends EventEmitter {
|
19 | close(): void;
|
20 | postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
|
21 | ref(): void;
|
22 | unref(): void;
|
23 | start(): void;
|
24 |
|
25 | addListener(event: "close", listener: () => void): this;
|
26 | addListener(event: "message", listener: (value: any) => void): this;
|
27 | addListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
28 |
|
29 | emit(event: "close"): boolean;
|
30 | emit(event: "message", value: any): boolean;
|
31 | emit(event: string | symbol, ...args: any[]): boolean;
|
32 |
|
33 | on(event: "close", listener: () => void): this;
|
34 | on(event: "message", listener: (value: any) => void): this;
|
35 | on(event: string | symbol, listener: (...args: any[]) => void): this;
|
36 |
|
37 | once(event: "close", listener: () => void): this;
|
38 | once(event: "message", listener: (value: any) => void): this;
|
39 | once(event: string | symbol, listener: (...args: any[]) => void): this;
|
40 |
|
41 | prependListener(event: "close", listener: () => void): this;
|
42 | prependListener(event: "message", listener: (value: any) => void): this;
|
43 | prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
44 |
|
45 | prependOnceListener(event: "close", listener: () => void): this;
|
46 | prependOnceListener(event: "message", listener: (value: any) => void): this;
|
47 | prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
48 |
|
49 | removeListener(event: "close", listener: () => void): this;
|
50 | removeListener(event: "message", listener: (value: any) => void): this;
|
51 | removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
52 |
|
53 | off(event: "close", listener: () => void): this;
|
54 | off(event: "message", listener: (value: any) => void): this;
|
55 | off(event: string | symbol, listener: (...args: any[]) => void): this;
|
56 | }
|
57 |
|
58 | interface WorkerOptions {
|
59 | |
60 |
|
61 |
|
62 |
|
63 |
|
64 |
|
65 | argv?: any[];
|
66 | env?: NodeJS.Dict<string> | typeof SHARE_ENV;
|
67 | eval?: boolean;
|
68 | workerData?: any;
|
69 | stdin?: boolean;
|
70 | stdout?: boolean;
|
71 | stderr?: boolean;
|
72 | execArgv?: string[];
|
73 | resourceLimits?: ResourceLimits;
|
74 | |
75 |
|
76 |
|
77 | transferList?: Array<ArrayBuffer | MessagePort>;
|
78 | }
|
79 |
|
80 | interface ResourceLimits {
|
81 | maxYoungGenerationSizeMb?: number;
|
82 | maxOldGenerationSizeMb?: number;
|
83 | codeRangeSizeMb?: number;
|
84 | }
|
85 |
|
86 | class Worker extends EventEmitter {
|
87 | readonly stdin: Writable | null;
|
88 | readonly stdout: Readable;
|
89 | readonly stderr: Readable;
|
90 | readonly threadId: number;
|
91 | readonly resourceLimits?: ResourceLimits;
|
92 |
|
93 | |
94 |
|
95 |
|
96 |
|
97 |
|
98 | constructor(filename: string | URL, options?: WorkerOptions);
|
99 |
|
100 | postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
|
101 | ref(): void;
|
102 | unref(): void;
|
103 | /**
|
104 | * Stop all JavaScript execution in the worker thread as soon as possible.
|
105 | * Returns a Promise for the exit code that is fulfilled when the `exit` event is emitted.
|
106 | */
|
107 | terminate(): Promise<number>;
|
108 |
|
109 | /**
|
110 | * Returns a readable stream for a V8 snapshot of the current state of the Worker.
|
111 | * See [`v8.getHeapSnapshot()`][] for more details.
|
112 | *
|
113 | * If the Worker thread is no longer running, which may occur before the
|
114 | * [`'exit'` event][] is emitted, the returned `Promise` will be rejected
|
115 | * immediately with an [`ERR_WORKER_NOT_RUNNING`][] error
|
116 | */
|
117 | getHeapSnapshot(): Promise<Readable>;
|
118 |
|
119 | addListener(event: "error", listener: (err: Error) => void): this;
|
120 | addListener(event: "exit", listener: (exitCode: number) => void): this;
|
121 | addListener(event: "message", listener: (value: any) => void): this;
|
122 | addListener(event: "online", listener: () => void): this;
|
123 | addListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
124 |
|
125 | emit(event: "error", err: Error): boolean;
|
126 | emit(event: "exit", exitCode: number): boolean;
|
127 | emit(event: "message", value: any): boolean;
|
128 | emit(event: "online"): boolean;
|
129 | emit(event: string | symbol, ...args: any[]): boolean;
|
130 |
|
131 | on(event: "error", listener: (err: Error) => void): this;
|
132 | on(event: "exit", listener: (exitCode: number) => void): this;
|
133 | on(event: "message", listener: (value: any) => void): this;
|
134 | on(event: "online", listener: () => void): this;
|
135 | on(event: string | symbol, listener: (...args: any[]) => void): this;
|
136 |
|
137 | once(event: "error", listener: (err: Error) => void): this;
|
138 | once(event: "exit", listener: (exitCode: number) => void): this;
|
139 | once(event: "message", listener: (value: any) => void): this;
|
140 | once(event: "online", listener: () => void): this;
|
141 | once(event: string | symbol, listener: (...args: any[]) => void): this;
|
142 |
|
143 | prependListener(event: "error", listener: (err: Error) => void): this;
|
144 | prependListener(event: "exit", listener: (exitCode: number) => void): this;
|
145 | prependListener(event: "message", listener: (value: any) => void): this;
|
146 | prependListener(event: "online", listener: () => void): this;
|
147 | prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
148 |
|
149 | prependOnceListener(event: "error", listener: (err: Error) => void): this;
|
150 | prependOnceListener(event: "exit", listener: (exitCode: number) => void): this;
|
151 | prependOnceListener(event: "message", listener: (value: any) => void): this;
|
152 | prependOnceListener(event: "online", listener: () => void): this;
|
153 | prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
154 |
|
155 | removeListener(event: "error", listener: (err: Error) => void): this;
|
156 | removeListener(event: "exit", listener: (exitCode: number) => void): this;
|
157 | removeListener(event: "message", listener: (value: any) => void): this;
|
158 | removeListener(event: "online", listener: () => void): this;
|
159 | removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
160 |
|
161 | off(event: "error", listener: (err: Error) => void): this;
|
162 | off(event: "exit", listener: (exitCode: number) => void): this;
|
163 | off(event: "message", listener: (value: any) => void): this;
|
164 | off(event: "online", listener: () => void): this;
|
165 | off(event: string | symbol, listener: (...args: any[]) => void): this;
|
166 | }
|
167 |
|
168 | /**
|
169 | * Transfer a `MessagePort` to a different `vm` Context. The original `port`
|
170 | * object will be rendered unusable, and the returned `MessagePort` instance will
|
171 | * take its place.
|
172 | *
|
173 | * The returned `MessagePort` will be an object in the target context, and will
|
174 | * inherit from its global `Object` class. Objects passed to the
|
175 | * `port.onmessage()` listener will also be created in the target context
|
176 | * and inherit from its global `Object` class.
|
177 | *
|
178 | * However, the created `MessagePort` will no longer inherit from
|
179 | * `EventEmitter`, and only `port.onmessage()` can be used to receive
|
180 | * events using it.
|
181 | */
|
182 | function moveMessagePortToContext(port: MessagePort, context: Context): MessagePort;
|
183 |
|
184 | /**
|
185 | * Receive a single message from a given `MessagePort`. If no message is available,
|
186 | * `undefined` is returned, otherwise an object with a single `message` property
|
187 | * that contains the message payload, corresponding to the oldest message in the
|
188 | * `MessagePort`’s queue.
|
189 | */
|
190 | function receiveMessageOnPort(port: MessagePort): { message: any } | undefined;
|
191 | }
|