UNPKG

7.33 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 }
64
65 class Worker extends EventEmitter {
66 readonly stdin: Writable | null;
67 readonly stdout: Readable;
68 readonly stderr: Readable;
69 readonly threadId: number;
70
71 constructor(filename: string, options?: WorkerOptions);
72
73 postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
74 ref(): void;
75 unref(): void;
76 /**
77 * Stop all JavaScript execution in the worker thread as soon as possible.
78 * Returns a Promise for the exit code that is fulfilled when the `exit` event is emitted.
79 */
80 terminate(): Promise<number>;
81 /**
82 * Transfer a `MessagePort` to a different `vm` Context. The original `port`
83 * object will be rendered unusable, and the returned `MessagePort` instance will
84 * take its place.
85 *
86 * The returned `MessagePort` will be an object in the target context, and will
87 * inherit from its global `Object` class. Objects passed to the
88 * `port.onmessage()` listener will also be created in the target context
89 * and inherit from its global `Object` class.
90 *
91 * However, the created `MessagePort` will no longer inherit from
92 * `EventEmitter`, and only `port.onmessage()` can be used to receive
93 * events using it.
94 */
95 moveMessagePortToContext(port: MessagePort, context: Context): MessagePort;
96
97 /**
98 * Receive a single message from a given `MessagePort`. If no message is available,
99 * `undefined` is returned, otherwise an object with a single `message` property
100 * that contains the message payload, corresponding to the oldest message in the
101 * `MessagePort`’s queue.
102 */
103 receiveMessageOnPort(port: MessagePort): {} | undefined;
104
105 addListener(event: "error", listener: (err: Error) => void): this;
106 addListener(event: "exit", listener: (exitCode: number) => void): this;
107 addListener(event: "message", listener: (value: any) => void): this;
108 addListener(event: "online", listener: () => void): this;
109 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
110
111 emit(event: "error", err: Error): boolean;
112 emit(event: "exit", exitCode: number): boolean;
113 emit(event: "message", value: any): boolean;
114 emit(event: "online"): boolean;
115 emit(event: string | symbol, ...args: any[]): boolean;
116
117 on(event: "error", listener: (err: Error) => void): this;
118 on(event: "exit", listener: (exitCode: number) => void): this;
119 on(event: "message", listener: (value: any) => void): this;
120 on(event: "online", listener: () => void): this;
121 on(event: string | symbol, listener: (...args: any[]) => void): this;
122
123 once(event: "error", listener: (err: Error) => void): this;
124 once(event: "exit", listener: (exitCode: number) => void): this;
125 once(event: "message", listener: (value: any) => void): this;
126 once(event: "online", listener: () => void): this;
127 once(event: string | symbol, listener: (...args: any[]) => void): this;
128
129 prependListener(event: "error", listener: (err: Error) => void): this;
130 prependListener(event: "exit", listener: (exitCode: number) => void): this;
131 prependListener(event: "message", listener: (value: any) => void): this;
132 prependListener(event: "online", listener: () => void): this;
133 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
134
135 prependOnceListener(event: "error", listener: (err: Error) => void): this;
136 prependOnceListener(event: "exit", listener: (exitCode: number) => void): this;
137 prependOnceListener(event: "message", listener: (value: any) => void): this;
138 prependOnceListener(event: "online", listener: () => void): this;
139 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
140
141 removeListener(event: "error", listener: (err: Error) => void): this;
142 removeListener(event: "exit", listener: (exitCode: number) => void): this;
143 removeListener(event: "message", listener: (value: any) => void): this;
144 removeListener(event: "online", listener: () => void): this;
145 removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
146
147 off(event: "error", listener: (err: Error) => void): this;
148 off(event: "exit", listener: (exitCode: number) => void): this;
149 off(event: "message", listener: (value: any) => void): this;
150 off(event: "online", listener: () => void): this;
151 off(event: string | symbol, listener: (...args: any[]) => void): this;
152 }
153}