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} 154