Projekt

Obecné

Profil

Stáhnout (8.26 KB) Statistiky
| Větev: | Revize:
1
declare 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 SHARE_ENV: unique symbol;
9
    const threadId: number;
10
    const workerData: any;
11

    
12
    class MessageChannel {
13
        readonly port1: MessagePort;
14
        readonly port2: MessagePort;
15
    }
16

    
17
    class MessagePort extends EventEmitter {
18
        close(): void;
19
        postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
20
        ref(): void;
21
        unref(): void;
22
        start(): void;
23

    
24
        addListener(event: "close", listener: () => void): this;
25
        addListener(event: "message", listener: (value: any) => void): this;
26
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
27

    
28
        emit(event: "close"): boolean;
29
        emit(event: "message", value: any): boolean;
30
        emit(event: string | symbol, ...args: any[]): boolean;
31

    
32
        on(event: "close", listener: () => void): this;
33
        on(event: "message", listener: (value: any) => void): this;
34
        on(event: string | symbol, listener: (...args: any[]) => void): this;
35

    
36
        once(event: "close", listener: () => void): this;
37
        once(event: "message", listener: (value: any) => void): this;
38
        once(event: string | symbol, listener: (...args: any[]) => void): this;
39

    
40
        prependListener(event: "close", listener: () => void): this;
41
        prependListener(event: "message", listener: (value: any) => void): this;
42
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
43

    
44
        prependOnceListener(event: "close", listener: () => void): this;
45
        prependOnceListener(event: "message", listener: (value: any) => void): this;
46
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
47

    
48
        removeListener(event: "close", listener: () => void): this;
49
        removeListener(event: "message", listener: (value: any) => void): this;
50
        removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
51

    
52
        off(event: "close", listener: () => void): this;
53
        off(event: "message", listener: (value: any) => void): this;
54
        off(event: string | symbol, listener: (...args: any[]) => void): this;
55
    }
56

    
57
    interface WorkerOptions {
58
        /**
59
         * List of arguments which would be stringified and appended to
60
         * `process.argv` in the worker. This is mostly similar to the `workerData`
61
         * but the values will be available on the global `process.argv` as if they
62
         * were passed as CLI options to the script.
63
         */
64
        argv?: any[];
65
        env?: NodeJS.ProcessEnv | typeof SHARE_ENV;
66
        eval?: boolean;
67
        workerData?: any;
68
        stdin?: boolean;
69
        stdout?: boolean;
70
        stderr?: boolean;
71
        execArgv?: string[];
72
        resourceLimits?: ResourceLimits;
73
    }
74

    
75
    interface ResourceLimits {
76
        maxYoungGenerationSizeMb?: number;
77
        maxOldGenerationSizeMb?: number;
78
        codeRangeSizeMb?: number;
79
    }
80

    
81
    class Worker extends EventEmitter {
82
        readonly stdin: Writable | null;
83
        readonly stdout: Readable;
84
        readonly stderr: Readable;
85
        readonly threadId: number;
86
        readonly resourceLimits?: ResourceLimits;
87

    
88
        constructor(filename: string, options?: WorkerOptions);
89

    
90
        postMessage(value: any, transferList?: Array<ArrayBuffer | MessagePort>): void;
91
        ref(): void;
92
        unref(): void;
93
        /**
94
         * Stop all JavaScript execution in the worker thread as soon as possible.
95
         * Returns a Promise for the exit code that is fulfilled when the `exit` event is emitted.
96
         */
97
        terminate(): Promise<number>;
98
        /**
99
         * Transfer a `MessagePort` to a different `vm` Context. The original `port`
100
         * object will be rendered unusable, and the returned `MessagePort` instance will
101
         * take its place.
102
         *
103
         * The returned `MessagePort` will be an object in the target context, and will
104
         * inherit from its global `Object` class. Objects passed to the
105
         * `port.onmessage()` listener will also be created in the target context
106
         * and inherit from its global `Object` class.
107
         *
108
         * However, the created `MessagePort` will no longer inherit from
109
         * `EventEmitter`, and only `port.onmessage()` can be used to receive
110
         * events using it.
111
         */
112
        moveMessagePortToContext(port: MessagePort, context: Context): MessagePort;
113

    
114
        /**
115
         * Receive a single message from a given `MessagePort`. If no message is available,
116
         * `undefined` is returned, otherwise an object with a single `message` property
117
         * that contains the message payload, corresponding to the oldest message in the
118
         * `MessagePort`’s queue.
119
         */
120
        receiveMessageOnPort(port: MessagePort): {} | undefined;
121

    
122
        /**
123
         * Returns a readable stream for a V8 snapshot of the current state of the Worker.
124
         * See [`v8.getHeapSnapshot()`][] for more details.
125
         *
126
         * If the Worker thread is no longer running, which may occur before the
127
         * [`'exit'` event][] is emitted, the returned `Promise` will be rejected
128
         * immediately with an [`ERR_WORKER_NOT_RUNNING`][] error
129
         */
130
        getHeapSnapshot(): Promise<Readable>;
131

    
132
        addListener(event: "error", listener: (err: Error) => void): this;
133
        addListener(event: "exit", listener: (exitCode: number) => void): this;
134
        addListener(event: "message", listener: (value: any) => void): this;
135
        addListener(event: "online", listener: () => void): this;
136
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
137

    
138
        emit(event: "error", err: Error): boolean;
139
        emit(event: "exit", exitCode: number): boolean;
140
        emit(event: "message", value: any): boolean;
141
        emit(event: "online"): boolean;
142
        emit(event: string | symbol, ...args: any[]): boolean;
143

    
144
        on(event: "error", listener: (err: Error) => void): this;
145
        on(event: "exit", listener: (exitCode: number) => void): this;
146
        on(event: "message", listener: (value: any) => void): this;
147
        on(event: "online", listener: () => void): this;
148
        on(event: string | symbol, listener: (...args: any[]) => void): this;
149

    
150
        once(event: "error", listener: (err: Error) => void): this;
151
        once(event: "exit", listener: (exitCode: number) => void): this;
152
        once(event: "message", listener: (value: any) => void): this;
153
        once(event: "online", listener: () => void): this;
154
        once(event: string | symbol, listener: (...args: any[]) => void): this;
155

    
156
        prependListener(event: "error", listener: (err: Error) => void): this;
157
        prependListener(event: "exit", listener: (exitCode: number) => void): this;
158
        prependListener(event: "message", listener: (value: any) => void): this;
159
        prependListener(event: "online", listener: () => void): this;
160
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
161

    
162
        prependOnceListener(event: "error", listener: (err: Error) => void): this;
163
        prependOnceListener(event: "exit", listener: (exitCode: number) => void): this;
164
        prependOnceListener(event: "message", listener: (value: any) => void): this;
165
        prependOnceListener(event: "online", listener: () => void): this;
166
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
167

    
168
        removeListener(event: "error", listener: (err: Error) => void): this;
169
        removeListener(event: "exit", listener: (exitCode: number) => void): this;
170
        removeListener(event: "message", listener: (value: any) => void): this;
171
        removeListener(event: "online", listener: () => void): this;
172
        removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
173

    
174
        off(event: "error", listener: (err: Error) => void): this;
175
        off(event: "exit", listener: (exitCode: number) => void): this;
176
        off(event: "message", listener: (value: any) => void): this;
177
        off(event: "online", listener: () => void): this;
178
        off(event: string | symbol, listener: (...args: any[]) => void): this;
179
    }
180
}
(44-44/45)