UNPKG

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