UNPKG

6.76 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 terminate(callback?: (err: Error, exitCode: number) => void): void;
77 /**
78 * Transfer a `MessagePort` to a different `vm` Context. The original `port`
79 * object will be rendered unusable, and the returned `MessagePort` instance will
80 * take its place.
81 *
82 * The returned `MessagePort` will be an object in the target context, and will
83 * inherit from its global `Object` class. Objects passed to the
84 * `port.onmessage()` listener will also be created in the target context
85 * and inherit from its global `Object` class.
86 *
87 * However, the created `MessagePort` will no longer inherit from
88 * `EventEmitter`, and only `port.onmessage()` can be used to receive
89 * events using it.
90 */
91 moveMessagePortToContext(port: MessagePort, context: Context): MessagePort;
92
93 addListener(event: "error", listener: (err: Error) => void): this;
94 addListener(event: "exit", listener: (exitCode: number) => void): this;
95 addListener(event: "message", listener: (value: any) => void): this;
96 addListener(event: "online", listener: () => void): this;
97 addListener(event: string | symbol, listener: (...args: any[]) => void): this;
98
99 emit(event: "error", err: Error): boolean;
100 emit(event: "exit", exitCode: number): boolean;
101 emit(event: "message", value: any): boolean;
102 emit(event: "online"): boolean;
103 emit(event: string | symbol, ...args: any[]): boolean;
104
105 on(event: "error", listener: (err: Error) => void): this;
106 on(event: "exit", listener: (exitCode: number) => void): this;
107 on(event: "message", listener: (value: any) => void): this;
108 on(event: "online", listener: () => void): this;
109 on(event: string | symbol, listener: (...args: any[]) => void): this;
110
111 once(event: "error", listener: (err: Error) => void): this;
112 once(event: "exit", listener: (exitCode: number) => void): this;
113 once(event: "message", listener: (value: any) => void): this;
114 once(event: "online", listener: () => void): this;
115 once(event: string | symbol, listener: (...args: any[]) => void): this;
116
117 prependListener(event: "error", listener: (err: Error) => void): this;
118 prependListener(event: "exit", listener: (exitCode: number) => void): this;
119 prependListener(event: "message", listener: (value: any) => void): this;
120 prependListener(event: "online", listener: () => void): this;
121 prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
122
123 prependOnceListener(event: "error", listener: (err: Error) => void): this;
124 prependOnceListener(event: "exit", listener: (exitCode: number) => void): this;
125 prependOnceListener(event: "message", listener: (value: any) => void): this;
126 prependOnceListener(event: "online", listener: () => void): this;
127 prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
128
129 removeListener(event: "error", listener: (err: Error) => void): this;
130 removeListener(event: "exit", listener: (exitCode: number) => void): this;
131 removeListener(event: "message", listener: (value: any) => void): this;
132 removeListener(event: "online", listener: () => void): this;
133 removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
134
135 off(event: "error", listener: (err: Error) => void): this;
136 off(event: "exit", listener: (exitCode: number) => void): this;
137 off(event: "message", listener: (value: any) => void): this;
138 off(event: "online", listener: () => void): this;
139 off(event: string | symbol, listener: (...args: any[]) => void): this;
140 }
141}