rahad-all-downloader 2.1.15 → 2.1.17
Sign up to get free protection for your applications and to get access to all the features.
- package/.github/workflows/Run.yml +20 -0
- package/README.md +0 -1
- package/index.js +1 -1
- package/package.json +4 -2
- package/.cache/nix/binary-cache-v6.sqlite +0 -0
- package/.cache/nix/binary-cache-v6.sqlite-journal +0 -0
- package/.cache/replit/modules/nix.res +0 -1
- package/.cache/replit/modules/nodejs-20.res +0 -1
- package/.cache/replit/modules/replit.res +0 -1
- package/.cache/replit/modules.stamp +0 -0
- package/.cache/replit/nix/env.json +0 -1
- package/.cache/typescript/5.4/node_modules/.package-lock.json +0 -137
- package/.cache/typescript/5.4/node_modules/@types/caseless/LICENSE +0 -21
- package/.cache/typescript/5.4/node_modules/@types/caseless/README.md +0 -48
- package/.cache/typescript/5.4/node_modules/@types/caseless/index.d.ts +0 -29
- package/.cache/typescript/5.4/node_modules/@types/caseless/package.json +0 -35
- package/.cache/typescript/5.4/node_modules/@types/node/LICENSE +0 -21
- package/.cache/typescript/5.4/node_modules/@types/node/README.md +0 -15
- package/.cache/typescript/5.4/node_modules/@types/node/assert/strict.d.ts +0 -8
- package/.cache/typescript/5.4/node_modules/@types/node/assert.d.ts +0 -1040
- package/.cache/typescript/5.4/node_modules/@types/node/async_hooks.d.ts +0 -541
- package/.cache/typescript/5.4/node_modules/@types/node/buffer.d.ts +0 -2363
- package/.cache/typescript/5.4/node_modules/@types/node/child_process.d.ts +0 -1544
- package/.cache/typescript/5.4/node_modules/@types/node/cluster.d.ts +0 -578
- package/.cache/typescript/5.4/node_modules/@types/node/console.d.ts +0 -452
- package/.cache/typescript/5.4/node_modules/@types/node/constants.d.ts +0 -19
- package/.cache/typescript/5.4/node_modules/@types/node/crypto.d.ts +0 -4523
- package/.cache/typescript/5.4/node_modules/@types/node/dgram.d.ts +0 -596
- package/.cache/typescript/5.4/node_modules/@types/node/diagnostics_channel.d.ts +0 -554
- package/.cache/typescript/5.4/node_modules/@types/node/dns/promises.d.ts +0 -474
- package/.cache/typescript/5.4/node_modules/@types/node/dns.d.ts +0 -864
- package/.cache/typescript/5.4/node_modules/@types/node/dom-events.d.ts +0 -124
- package/.cache/typescript/5.4/node_modules/@types/node/domain.d.ts +0 -170
- package/.cache/typescript/5.4/node_modules/@types/node/events.d.ts +0 -909
- package/.cache/typescript/5.4/node_modules/@types/node/fs/promises.d.ts +0 -1245
- package/.cache/typescript/5.4/node_modules/@types/node/fs.d.ts +0 -4317
- package/.cache/typescript/5.4/node_modules/@types/node/globals.d.ts +0 -411
- package/.cache/typescript/5.4/node_modules/@types/node/globals.global.d.ts +0 -1
- package/.cache/typescript/5.4/node_modules/@types/node/http.d.ts +0 -1908
- package/.cache/typescript/5.4/node_modules/@types/node/http2.d.ts +0 -2418
- package/.cache/typescript/5.4/node_modules/@types/node/https.d.ts +0 -550
- package/.cache/typescript/5.4/node_modules/@types/node/index.d.ts +0 -89
- package/.cache/typescript/5.4/node_modules/@types/node/inspector.d.ts +0 -2746
- package/.cache/typescript/5.4/node_modules/@types/node/module.d.ts +0 -315
- package/.cache/typescript/5.4/node_modules/@types/node/net.d.ts +0 -999
- package/.cache/typescript/5.4/node_modules/@types/node/os.d.ts +0 -495
- package/.cache/typescript/5.4/node_modules/@types/node/package.json +0 -217
- package/.cache/typescript/5.4/node_modules/@types/node/path.d.ts +0 -191
- package/.cache/typescript/5.4/node_modules/@types/node/perf_hooks.d.ts +0 -905
- package/.cache/typescript/5.4/node_modules/@types/node/process.d.ts +0 -1754
- package/.cache/typescript/5.4/node_modules/@types/node/punycode.d.ts +0 -117
- package/.cache/typescript/5.4/node_modules/@types/node/querystring.d.ts +0 -153
- package/.cache/typescript/5.4/node_modules/@types/node/readline/promises.d.ts +0 -150
- package/.cache/typescript/5.4/node_modules/@types/node/readline.d.ts +0 -540
- package/.cache/typescript/5.4/node_modules/@types/node/repl.d.ts +0 -430
- package/.cache/typescript/5.4/node_modules/@types/node/sea.d.ts +0 -153
- package/.cache/typescript/5.4/node_modules/@types/node/stream/consumers.d.ts +0 -12
- package/.cache/typescript/5.4/node_modules/@types/node/stream/promises.d.ts +0 -83
- package/.cache/typescript/5.4/node_modules/@types/node/stream/web.d.ts +0 -367
- package/.cache/typescript/5.4/node_modules/@types/node/stream.d.ts +0 -1707
- package/.cache/typescript/5.4/node_modules/@types/node/string_decoder.d.ts +0 -67
- package/.cache/typescript/5.4/node_modules/@types/node/test.d.ts +0 -1718
- package/.cache/typescript/5.4/node_modules/@types/node/timers/promises.d.ts +0 -97
- package/.cache/typescript/5.4/node_modules/@types/node/timers.d.ts +0 -240
- package/.cache/typescript/5.4/node_modules/@types/node/tls.d.ts +0 -1217
- package/.cache/typescript/5.4/node_modules/@types/node/trace_events.d.ts +0 -197
- package/.cache/typescript/5.4/node_modules/@types/node/tty.d.ts +0 -208
- package/.cache/typescript/5.4/node_modules/@types/node/url.d.ts +0 -952
- package/.cache/typescript/5.4/node_modules/@types/node/util.d.ts +0 -2292
- package/.cache/typescript/5.4/node_modules/@types/node/v8.d.ts +0 -808
- package/.cache/typescript/5.4/node_modules/@types/node/vm.d.ts +0 -924
- package/.cache/typescript/5.4/node_modules/@types/node/wasi.d.ts +0 -181
- package/.cache/typescript/5.4/node_modules/@types/node/worker_threads.d.ts +0 -691
- package/.cache/typescript/5.4/node_modules/@types/node/zlib.d.ts +0 -530
- package/.cache/typescript/5.4/node_modules/@types/node-fetch/LICENSE +0 -21
- package/.cache/typescript/5.4/node_modules/@types/node-fetch/README.md +0 -15
- package/.cache/typescript/5.4/node_modules/@types/node-fetch/externals.d.ts +0 -32
- package/.cache/typescript/5.4/node_modules/@types/node-fetch/index.d.ts +0 -238
- package/.cache/typescript/5.4/node_modules/@types/node-fetch/package.json +0 -83
- package/.cache/typescript/5.4/node_modules/@types/request/LICENSE +0 -21
- package/.cache/typescript/5.4/node_modules/@types/request/README.md +0 -15
- package/.cache/typescript/5.4/node_modules/@types/request/index.d.ts +0 -395
- package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/License +0 -19
- package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/README.md +0 -350
- package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/README.md.bak +0 -350
- package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/index.d.ts +0 -51
- package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/lib/browser.js +0 -2
- package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/lib/form_data.js +0 -483
- package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/lib/populate.js +0 -10
- package/.cache/typescript/5.4/node_modules/@types/request/node_modules/form-data/package.json +0 -68
- package/.cache/typescript/5.4/node_modules/@types/request/package.json +0 -70
- package/.cache/typescript/5.4/node_modules/@types/tough-cookie/LICENSE +0 -21
- package/.cache/typescript/5.4/node_modules/@types/tough-cookie/README.md +0 -15
- package/.cache/typescript/5.4/node_modules/@types/tough-cookie/index.d.ts +0 -321
- package/.cache/typescript/5.4/node_modules/@types/tough-cookie/package.json +0 -35
- package/.cache/typescript/5.4/node_modules/asynckit/LICENSE +0 -21
- package/.cache/typescript/5.4/node_modules/asynckit/README.md +0 -233
- package/.cache/typescript/5.4/node_modules/asynckit/bench.js +0 -76
- package/.cache/typescript/5.4/node_modules/asynckit/index.js +0 -6
- package/.cache/typescript/5.4/node_modules/asynckit/lib/abort.js +0 -29
- package/.cache/typescript/5.4/node_modules/asynckit/lib/async.js +0 -34
- package/.cache/typescript/5.4/node_modules/asynckit/lib/defer.js +0 -26
- package/.cache/typescript/5.4/node_modules/asynckit/lib/iterate.js +0 -75
- package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_asynckit.js +0 -91
- package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_parallel.js +0 -25
- package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_serial.js +0 -25
- package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_serial_ordered.js +0 -29
- package/.cache/typescript/5.4/node_modules/asynckit/lib/state.js +0 -37
- package/.cache/typescript/5.4/node_modules/asynckit/lib/streamify.js +0 -141
- package/.cache/typescript/5.4/node_modules/asynckit/lib/terminator.js +0 -29
- package/.cache/typescript/5.4/node_modules/asynckit/package.json +0 -63
- package/.cache/typescript/5.4/node_modules/asynckit/parallel.js +0 -43
- package/.cache/typescript/5.4/node_modules/asynckit/serial.js +0 -17
- package/.cache/typescript/5.4/node_modules/asynckit/serialOrdered.js +0 -75
- package/.cache/typescript/5.4/node_modules/asynckit/stream.js +0 -21
- package/.cache/typescript/5.4/node_modules/combined-stream/License +0 -19
- package/.cache/typescript/5.4/node_modules/combined-stream/Readme.md +0 -138
- package/.cache/typescript/5.4/node_modules/combined-stream/lib/combined_stream.js +0 -208
- package/.cache/typescript/5.4/node_modules/combined-stream/package.json +0 -25
- package/.cache/typescript/5.4/node_modules/combined-stream/yarn.lock +0 -17
- package/.cache/typescript/5.4/node_modules/delayed-stream/License +0 -19
- package/.cache/typescript/5.4/node_modules/delayed-stream/Makefile +0 -7
- package/.cache/typescript/5.4/node_modules/delayed-stream/Readme.md +0 -141
- package/.cache/typescript/5.4/node_modules/delayed-stream/lib/delayed_stream.js +0 -107
- package/.cache/typescript/5.4/node_modules/delayed-stream/package.json +0 -27
- package/.cache/typescript/5.4/node_modules/form-data/License +0 -19
- package/.cache/typescript/5.4/node_modules/form-data/README.md.bak +0 -358
- package/.cache/typescript/5.4/node_modules/form-data/Readme.md +0 -358
- package/.cache/typescript/5.4/node_modules/form-data/index.d.ts +0 -62
- package/.cache/typescript/5.4/node_modules/form-data/lib/browser.js +0 -2
- package/.cache/typescript/5.4/node_modules/form-data/lib/form_data.js +0 -501
- package/.cache/typescript/5.4/node_modules/form-data/lib/populate.js +0 -10
- package/.cache/typescript/5.4/node_modules/form-data/package.json +0 -68
- package/.cache/typescript/5.4/node_modules/mime-db/HISTORY.md +0 -507
- package/.cache/typescript/5.4/node_modules/mime-db/LICENSE +0 -23
- package/.cache/typescript/5.4/node_modules/mime-db/README.md +0 -100
- package/.cache/typescript/5.4/node_modules/mime-db/db.json +0 -8519
- package/.cache/typescript/5.4/node_modules/mime-db/index.js +0 -12
- package/.cache/typescript/5.4/node_modules/mime-db/package.json +0 -60
- package/.cache/typescript/5.4/node_modules/mime-types/HISTORY.md +0 -397
- package/.cache/typescript/5.4/node_modules/mime-types/LICENSE +0 -23
- package/.cache/typescript/5.4/node_modules/mime-types/README.md +0 -113
- package/.cache/typescript/5.4/node_modules/mime-types/index.js +0 -188
- package/.cache/typescript/5.4/node_modules/mime-types/package.json +0 -44
- package/.cache/typescript/5.4/node_modules/types-registry/README.md +0 -2
- package/.cache/typescript/5.4/node_modules/types-registry/index.json +0 -1
- package/.cache/typescript/5.4/node_modules/types-registry/package.json +0 -20
- package/.cache/typescript/5.4/node_modules/undici-types/README.md +0 -6
- package/.cache/typescript/5.4/node_modules/undici-types/agent.d.ts +0 -31
- package/.cache/typescript/5.4/node_modules/undici-types/api.d.ts +0 -43
- package/.cache/typescript/5.4/node_modules/undici-types/balanced-pool.d.ts +0 -18
- package/.cache/typescript/5.4/node_modules/undici-types/cache.d.ts +0 -36
- package/.cache/typescript/5.4/node_modules/undici-types/client.d.ts +0 -97
- package/.cache/typescript/5.4/node_modules/undici-types/connector.d.ts +0 -34
- package/.cache/typescript/5.4/node_modules/undici-types/content-type.d.ts +0 -21
- package/.cache/typescript/5.4/node_modules/undici-types/cookies.d.ts +0 -28
- package/.cache/typescript/5.4/node_modules/undici-types/diagnostics-channel.d.ts +0 -67
- package/.cache/typescript/5.4/node_modules/undici-types/dispatcher.d.ts +0 -241
- package/.cache/typescript/5.4/node_modules/undici-types/errors.d.ts +0 -128
- package/.cache/typescript/5.4/node_modules/undici-types/fetch.d.ts +0 -209
- package/.cache/typescript/5.4/node_modules/undici-types/file.d.ts +0 -39
- package/.cache/typescript/5.4/node_modules/undici-types/filereader.d.ts +0 -54
- package/.cache/typescript/5.4/node_modules/undici-types/formdata.d.ts +0 -108
- package/.cache/typescript/5.4/node_modules/undici-types/global-dispatcher.d.ts +0 -9
- package/.cache/typescript/5.4/node_modules/undici-types/global-origin.d.ts +0 -7
- package/.cache/typescript/5.4/node_modules/undici-types/handlers.d.ts +0 -9
- package/.cache/typescript/5.4/node_modules/undici-types/header.d.ts +0 -4
- package/.cache/typescript/5.4/node_modules/undici-types/index.d.ts +0 -63
- package/.cache/typescript/5.4/node_modules/undici-types/interceptors.d.ts +0 -5
- package/.cache/typescript/5.4/node_modules/undici-types/mock-agent.d.ts +0 -50
- package/.cache/typescript/5.4/node_modules/undici-types/mock-client.d.ts +0 -25
- package/.cache/typescript/5.4/node_modules/undici-types/mock-errors.d.ts +0 -12
- package/.cache/typescript/5.4/node_modules/undici-types/mock-interceptor.d.ts +0 -93
- package/.cache/typescript/5.4/node_modules/undici-types/mock-pool.d.ts +0 -25
- package/.cache/typescript/5.4/node_modules/undici-types/package.json +0 -55
- package/.cache/typescript/5.4/node_modules/undici-types/patch.d.ts +0 -71
- package/.cache/typescript/5.4/node_modules/undici-types/pool-stats.d.ts +0 -19
- package/.cache/typescript/5.4/node_modules/undici-types/pool.d.ts +0 -28
- package/.cache/typescript/5.4/node_modules/undici-types/proxy-agent.d.ts +0 -30
- package/.cache/typescript/5.4/node_modules/undici-types/readable.d.ts +0 -61
- package/.cache/typescript/5.4/node_modules/undici-types/webidl.d.ts +0 -220
- package/.cache/typescript/5.4/node_modules/undici-types/websocket.d.ts +0 -131
- package/.cache/typescript/5.4/package-lock.json +0 -146
- package/.cache/typescript/5.4/package.json +0 -1
- package/.replit +0 -21
- package/replit.nix +0 -3
@@ -1,691 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* The `node:worker_threads` module enables the use of threads that execute
|
3
|
-
* JavaScript in parallel. To access it:
|
4
|
-
*
|
5
|
-
* ```js
|
6
|
-
* const worker = require('node:worker_threads');
|
7
|
-
* ```
|
8
|
-
*
|
9
|
-
* Workers (threads) are useful for performing CPU-intensive JavaScript operations.
|
10
|
-
* They do not help much with I/O-intensive work. The Node.js built-in
|
11
|
-
* asynchronous I/O operations are more efficient than Workers can be.
|
12
|
-
*
|
13
|
-
* Unlike `child_process` or `cluster`, `worker_threads` can share memory. They do
|
14
|
-
* so by transferring `ArrayBuffer` instances or sharing `SharedArrayBuffer` instances.
|
15
|
-
*
|
16
|
-
* ```js
|
17
|
-
* const {
|
18
|
-
* Worker, isMainThread, parentPort, workerData,
|
19
|
-
* } = require('node:worker_threads');
|
20
|
-
*
|
21
|
-
* if (isMainThread) {
|
22
|
-
* module.exports = function parseJSAsync(script) {
|
23
|
-
* return new Promise((resolve, reject) => {
|
24
|
-
* const worker = new Worker(__filename, {
|
25
|
-
* workerData: script,
|
26
|
-
* });
|
27
|
-
* worker.on('message', resolve);
|
28
|
-
* worker.on('error', reject);
|
29
|
-
* worker.on('exit', (code) => {
|
30
|
-
* if (code !== 0)
|
31
|
-
* reject(new Error(`Worker stopped with exit code ${code}`));
|
32
|
-
* });
|
33
|
-
* });
|
34
|
-
* };
|
35
|
-
* } else {
|
36
|
-
* const { parse } = require('some-js-parsing-library');
|
37
|
-
* const script = workerData;
|
38
|
-
* parentPort.postMessage(parse(script));
|
39
|
-
* }
|
40
|
-
* ```
|
41
|
-
*
|
42
|
-
* The above example spawns a Worker thread for each `parseJSAsync()` call. In
|
43
|
-
* practice, use a pool of Workers for these kinds of tasks. Otherwise, the
|
44
|
-
* overhead of creating Workers would likely exceed their benefit.
|
45
|
-
*
|
46
|
-
* When implementing a worker pool, use the `AsyncResource` API to inform
|
47
|
-
* diagnostic tools (e.g. to provide asynchronous stack traces) about the
|
48
|
-
* correlation between tasks and their outcomes. See `"Using AsyncResource for a Worker thread pool"` in the `async_hooks` documentation for an example implementation.
|
49
|
-
*
|
50
|
-
* Worker threads inherit non-process-specific options by default. Refer to `Worker constructor options` to know how to customize worker thread options,
|
51
|
-
* specifically `argv` and `execArgv` options.
|
52
|
-
* @see [source](https://github.com/nodejs/node/blob/v20.13.1/lib/worker_threads.js)
|
53
|
-
*/
|
54
|
-
declare module "worker_threads" {
|
55
|
-
import { Blob } from "node:buffer";
|
56
|
-
import { Context } from "node:vm";
|
57
|
-
import { EventEmitter } from "node:events";
|
58
|
-
import { EventLoopUtilityFunction } from "node:perf_hooks";
|
59
|
-
import { FileHandle } from "node:fs/promises";
|
60
|
-
import { Readable, Writable } from "node:stream";
|
61
|
-
import { URL } from "node:url";
|
62
|
-
import { X509Certificate } from "node:crypto";
|
63
|
-
const isMainThread: boolean;
|
64
|
-
const parentPort: null | MessagePort;
|
65
|
-
const resourceLimits: ResourceLimits;
|
66
|
-
const SHARE_ENV: unique symbol;
|
67
|
-
const threadId: number;
|
68
|
-
const workerData: any;
|
69
|
-
/**
|
70
|
-
* Instances of the `worker.MessageChannel` class represent an asynchronous,
|
71
|
-
* two-way communications channel.
|
72
|
-
* The `MessageChannel` has no methods of its own. `new MessageChannel()` yields an object with `port1` and `port2` properties, which refer to linked `MessagePort` instances.
|
73
|
-
*
|
74
|
-
* ```js
|
75
|
-
* const { MessageChannel } = require('node:worker_threads');
|
76
|
-
*
|
77
|
-
* const { port1, port2 } = new MessageChannel();
|
78
|
-
* port1.on('message', (message) => console.log('received', message));
|
79
|
-
* port2.postMessage({ foo: 'bar' });
|
80
|
-
* // Prints: received { foo: 'bar' } from the `port1.on('message')` listener
|
81
|
-
* ```
|
82
|
-
* @since v10.5.0
|
83
|
-
*/
|
84
|
-
class MessageChannel {
|
85
|
-
readonly port1: MessagePort;
|
86
|
-
readonly port2: MessagePort;
|
87
|
-
}
|
88
|
-
interface WorkerPerformance {
|
89
|
-
eventLoopUtilization: EventLoopUtilityFunction;
|
90
|
-
}
|
91
|
-
type TransferListItem = ArrayBuffer | MessagePort | FileHandle | X509Certificate | Blob;
|
92
|
-
/**
|
93
|
-
* Instances of the `worker.MessagePort` class represent one end of an
|
94
|
-
* asynchronous, two-way communications channel. It can be used to transfer
|
95
|
-
* structured data, memory regions and other `MessagePort`s between different `Worker`s.
|
96
|
-
*
|
97
|
-
* This implementation matches [browser `MessagePort`](https://developer.mozilla.org/en-US/docs/Web/API/MessagePort) s.
|
98
|
-
* @since v10.5.0
|
99
|
-
*/
|
100
|
-
class MessagePort extends EventEmitter {
|
101
|
-
/**
|
102
|
-
* Disables further sending of messages on either side of the connection.
|
103
|
-
* This method can be called when no further communication will happen over this `MessagePort`.
|
104
|
-
*
|
105
|
-
* The `'close' event` is emitted on both `MessagePort` instances that
|
106
|
-
* are part of the channel.
|
107
|
-
* @since v10.5.0
|
108
|
-
*/
|
109
|
-
close(): void;
|
110
|
-
/**
|
111
|
-
* Sends a JavaScript value to the receiving side of this channel. `value` is transferred in a way which is compatible with
|
112
|
-
* the [HTML structured clone algorithm](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm).
|
113
|
-
*
|
114
|
-
* In particular, the significant differences to `JSON` are:
|
115
|
-
*
|
116
|
-
* * `value` may contain circular references.
|
117
|
-
* * `value` may contain instances of builtin JS types such as `RegExp`s, `BigInt`s, `Map`s, `Set`s, etc.
|
118
|
-
* * `value` may contain typed arrays, both using `ArrayBuffer`s
|
119
|
-
* and `SharedArrayBuffer`s.
|
120
|
-
* * `value` may contain [`WebAssembly.Module`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WebAssembly/Module) instances.
|
121
|
-
* * `value` may not contain native (C++-backed) objects other than:
|
122
|
-
*
|
123
|
-
* ```js
|
124
|
-
* const { MessageChannel } = require('node:worker_threads');
|
125
|
-
* const { port1, port2 } = new MessageChannel();
|
126
|
-
*
|
127
|
-
* port1.on('message', (message) => console.log(message));
|
128
|
-
*
|
129
|
-
* const circularData = {};
|
130
|
-
* circularData.foo = circularData;
|
131
|
-
* // Prints: { foo: [Circular] }
|
132
|
-
* port2.postMessage(circularData);
|
133
|
-
* ```
|
134
|
-
*
|
135
|
-
* `transferList` may be a list of [`ArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer), `MessagePort`, and `FileHandle` objects.
|
136
|
-
* After transferring, they are not usable on the sending side of the channel
|
137
|
-
* anymore (even if they are not contained in `value`). Unlike with `child processes`, transferring handles such as network sockets is currently
|
138
|
-
* not supported.
|
139
|
-
*
|
140
|
-
* If `value` contains [`SharedArrayBuffer`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer) instances, those are accessible
|
141
|
-
* from either thread. They cannot be listed in `transferList`.
|
142
|
-
*
|
143
|
-
* `value` may still contain `ArrayBuffer` instances that are not in `transferList`; in that case, the underlying memory is copied rather than moved.
|
144
|
-
*
|
145
|
-
* ```js
|
146
|
-
* const { MessageChannel } = require('node:worker_threads');
|
147
|
-
* const { port1, port2 } = new MessageChannel();
|
148
|
-
*
|
149
|
-
* port1.on('message', (message) => console.log(message));
|
150
|
-
*
|
151
|
-
* const uint8Array = new Uint8Array([ 1, 2, 3, 4 ]);
|
152
|
-
* // This posts a copy of `uint8Array`:
|
153
|
-
* port2.postMessage(uint8Array);
|
154
|
-
* // This does not copy data, but renders `uint8Array` unusable:
|
155
|
-
* port2.postMessage(uint8Array, [ uint8Array.buffer ]);
|
156
|
-
*
|
157
|
-
* // The memory for the `sharedUint8Array` is accessible from both the
|
158
|
-
* // original and the copy received by `.on('message')`:
|
159
|
-
* const sharedUint8Array = new Uint8Array(new SharedArrayBuffer(4));
|
160
|
-
* port2.postMessage(sharedUint8Array);
|
161
|
-
*
|
162
|
-
* // This transfers a freshly created message port to the receiver.
|
163
|
-
* // This can be used, for example, to create communication channels between
|
164
|
-
* // multiple `Worker` threads that are children of the same parent thread.
|
165
|
-
* const otherChannel = new MessageChannel();
|
166
|
-
* port2.postMessage({ port: otherChannel.port1 }, [ otherChannel.port1 ]);
|
167
|
-
* ```
|
168
|
-
*
|
169
|
-
* The message object is cloned immediately, and can be modified after
|
170
|
-
* posting without having side effects.
|
171
|
-
*
|
172
|
-
* For more information on the serialization and deserialization mechanisms
|
173
|
-
* behind this API, see the `serialization API of the node:v8 module`.
|
174
|
-
* @since v10.5.0
|
175
|
-
*/
|
176
|
-
postMessage(value: any, transferList?: readonly TransferListItem[]): void;
|
177
|
-
/**
|
178
|
-
* Opposite of `unref()`. Calling `ref()` on a previously `unref()`ed port does _not_ let the program exit if it's the only active handle left (the default
|
179
|
-
* behavior). If the port is `ref()`ed, calling `ref()` again has no effect.
|
180
|
-
*
|
181
|
-
* If listeners are attached or removed using `.on('message')`, the port
|
182
|
-
* is `ref()`ed and `unref()`ed automatically depending on whether
|
183
|
-
* listeners for the event exist.
|
184
|
-
* @since v10.5.0
|
185
|
-
*/
|
186
|
-
ref(): void;
|
187
|
-
/**
|
188
|
-
* Calling `unref()` on a port allows the thread to exit if this is the only
|
189
|
-
* active handle in the event system. If the port is already `unref()`ed calling `unref()` again has no effect.
|
190
|
-
*
|
191
|
-
* If listeners are attached or removed using `.on('message')`, the port is `ref()`ed and `unref()`ed automatically depending on whether
|
192
|
-
* listeners for the event exist.
|
193
|
-
* @since v10.5.0
|
194
|
-
*/
|
195
|
-
unref(): void;
|
196
|
-
/**
|
197
|
-
* Starts receiving messages on this `MessagePort`. When using this port
|
198
|
-
* as an event emitter, this is called automatically once `'message'` listeners are attached.
|
199
|
-
*
|
200
|
-
* This method exists for parity with the Web `MessagePort` API. In Node.js,
|
201
|
-
* it is only useful for ignoring messages when no event listener is present.
|
202
|
-
* Node.js also diverges in its handling of `.onmessage`. Setting it
|
203
|
-
* automatically calls `.start()`, but unsetting it lets messages queue up
|
204
|
-
* until a new handler is set or the port is discarded.
|
205
|
-
* @since v10.5.0
|
206
|
-
*/
|
207
|
-
start(): void;
|
208
|
-
addListener(event: "close", listener: () => void): this;
|
209
|
-
addListener(event: "message", listener: (value: any) => void): this;
|
210
|
-
addListener(event: "messageerror", listener: (error: Error) => void): this;
|
211
|
-
addListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
212
|
-
emit(event: "close"): boolean;
|
213
|
-
emit(event: "message", value: any): boolean;
|
214
|
-
emit(event: "messageerror", error: Error): boolean;
|
215
|
-
emit(event: string | symbol, ...args: any[]): boolean;
|
216
|
-
on(event: "close", listener: () => void): this;
|
217
|
-
on(event: "message", listener: (value: any) => void): this;
|
218
|
-
on(event: "messageerror", listener: (error: Error) => void): this;
|
219
|
-
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
220
|
-
once(event: "close", listener: () => void): this;
|
221
|
-
once(event: "message", listener: (value: any) => void): this;
|
222
|
-
once(event: "messageerror", listener: (error: Error) => void): this;
|
223
|
-
once(event: string | symbol, listener: (...args: any[]) => void): this;
|
224
|
-
prependListener(event: "close", listener: () => void): this;
|
225
|
-
prependListener(event: "message", listener: (value: any) => void): this;
|
226
|
-
prependListener(event: "messageerror", listener: (error: Error) => void): this;
|
227
|
-
prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
228
|
-
prependOnceListener(event: "close", listener: () => void): this;
|
229
|
-
prependOnceListener(event: "message", listener: (value: any) => void): this;
|
230
|
-
prependOnceListener(event: "messageerror", listener: (error: Error) => void): this;
|
231
|
-
prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
232
|
-
removeListener(event: "close", listener: () => void): this;
|
233
|
-
removeListener(event: "message", listener: (value: any) => void): this;
|
234
|
-
removeListener(event: "messageerror", listener: (error: Error) => void): this;
|
235
|
-
removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
236
|
-
off(event: "close", listener: () => void): this;
|
237
|
-
off(event: "message", listener: (value: any) => void): this;
|
238
|
-
off(event: "messageerror", listener: (error: Error) => void): this;
|
239
|
-
off(event: string | symbol, listener: (...args: any[]) => void): this;
|
240
|
-
}
|
241
|
-
interface WorkerOptions {
|
242
|
-
/**
|
243
|
-
* List of arguments which would be stringified and appended to
|
244
|
-
* `process.argv` in the worker. This is mostly similar to the `workerData`
|
245
|
-
* but the values will be available on the global `process.argv` as if they
|
246
|
-
* were passed as CLI options to the script.
|
247
|
-
*/
|
248
|
-
argv?: any[] | undefined;
|
249
|
-
env?: NodeJS.Dict<string> | typeof SHARE_ENV | undefined;
|
250
|
-
eval?: boolean | undefined;
|
251
|
-
workerData?: any;
|
252
|
-
stdin?: boolean | undefined;
|
253
|
-
stdout?: boolean | undefined;
|
254
|
-
stderr?: boolean | undefined;
|
255
|
-
execArgv?: string[] | undefined;
|
256
|
-
resourceLimits?: ResourceLimits | undefined;
|
257
|
-
/**
|
258
|
-
* Additional data to send in the first worker message.
|
259
|
-
*/
|
260
|
-
transferList?: TransferListItem[] | undefined;
|
261
|
-
/**
|
262
|
-
* @default true
|
263
|
-
*/
|
264
|
-
trackUnmanagedFds?: boolean | undefined;
|
265
|
-
/**
|
266
|
-
* An optional `name` to be appended to the worker title
|
267
|
-
* for debuggin/identification purposes, making the final title as
|
268
|
-
* `[worker ${id}] ${name}`.
|
269
|
-
*/
|
270
|
-
name?: string | undefined;
|
271
|
-
}
|
272
|
-
interface ResourceLimits {
|
273
|
-
/**
|
274
|
-
* The maximum size of a heap space for recently created objects.
|
275
|
-
*/
|
276
|
-
maxYoungGenerationSizeMb?: number | undefined;
|
277
|
-
/**
|
278
|
-
* The maximum size of the main heap in MB.
|
279
|
-
*/
|
280
|
-
maxOldGenerationSizeMb?: number | undefined;
|
281
|
-
/**
|
282
|
-
* The size of a pre-allocated memory range used for generated code.
|
283
|
-
*/
|
284
|
-
codeRangeSizeMb?: number | undefined;
|
285
|
-
/**
|
286
|
-
* The default maximum stack size for the thread. Small values may lead to unusable Worker instances.
|
287
|
-
* @default 4
|
288
|
-
*/
|
289
|
-
stackSizeMb?: number | undefined;
|
290
|
-
}
|
291
|
-
/**
|
292
|
-
* The `Worker` class represents an independent JavaScript execution thread.
|
293
|
-
* Most Node.js APIs are available inside of it.
|
294
|
-
*
|
295
|
-
* Notable differences inside a Worker environment are:
|
296
|
-
*
|
297
|
-
* * The `process.stdin`, `process.stdout`, and `process.stderr` streams may be redirected by the parent thread.
|
298
|
-
* * The `require('node:worker_threads').isMainThread` property is set to `false`.
|
299
|
-
* * The `require('node:worker_threads').parentPort` message port is available.
|
300
|
-
* * `process.exit()` does not stop the whole program, just the single thread,
|
301
|
-
* and `process.abort()` is not available.
|
302
|
-
* * `process.chdir()` and `process` methods that set group or user ids
|
303
|
-
* are not available.
|
304
|
-
* * `process.env` is a copy of the parent thread's environment variables,
|
305
|
-
* unless otherwise specified. Changes to one copy are not visible in other
|
306
|
-
* threads, and are not visible to native add-ons (unless `worker.SHARE_ENV` is passed as the `env` option to the `Worker` constructor). On Windows, unlike the main thread, a copy of the
|
307
|
-
* environment variables operates in a case-sensitive manner.
|
308
|
-
* * `process.title` cannot be modified.
|
309
|
-
* * Signals are not delivered through `process.on('...')`.
|
310
|
-
* * Execution may stop at any point as a result of `worker.terminate()` being invoked.
|
311
|
-
* * IPC channels from parent processes are not accessible.
|
312
|
-
* * The `trace_events` module is not supported.
|
313
|
-
* * Native add-ons can only be loaded from multiple threads if they fulfill `certain conditions`.
|
314
|
-
*
|
315
|
-
* Creating `Worker` instances inside of other `Worker`s is possible.
|
316
|
-
*
|
317
|
-
* Like [Web Workers](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API) and the `node:cluster module`, two-way communication
|
318
|
-
* can be achieved through inter-thread message passing. Internally, a `Worker` has
|
319
|
-
* a built-in pair of `MessagePort` s that are already associated with each
|
320
|
-
* other when the `Worker` is created. While the `MessagePort` object on the parent
|
321
|
-
* side is not directly exposed, its functionalities are exposed through `worker.postMessage()` and the `worker.on('message')` event
|
322
|
-
* on the `Worker` object for the parent thread.
|
323
|
-
*
|
324
|
-
* To create custom messaging channels (which is encouraged over using the default
|
325
|
-
* global channel because it facilitates separation of concerns), users can create
|
326
|
-
* a `MessageChannel` object on either thread and pass one of the`MessagePort`s on that `MessageChannel` to the other thread through a
|
327
|
-
* pre-existing channel, such as the global one.
|
328
|
-
*
|
329
|
-
* See `port.postMessage()` for more information on how messages are passed,
|
330
|
-
* and what kind of JavaScript values can be successfully transported through
|
331
|
-
* the thread barrier.
|
332
|
-
*
|
333
|
-
* ```js
|
334
|
-
* const assert = require('node:assert');
|
335
|
-
* const {
|
336
|
-
* Worker, MessageChannel, MessagePort, isMainThread, parentPort,
|
337
|
-
* } = require('node:worker_threads');
|
338
|
-
* if (isMainThread) {
|
339
|
-
* const worker = new Worker(__filename);
|
340
|
-
* const subChannel = new MessageChannel();
|
341
|
-
* worker.postMessage({ hereIsYourPort: subChannel.port1 }, [subChannel.port1]);
|
342
|
-
* subChannel.port2.on('message', (value) => {
|
343
|
-
* console.log('received:', value);
|
344
|
-
* });
|
345
|
-
* } else {
|
346
|
-
* parentPort.once('message', (value) => {
|
347
|
-
* assert(value.hereIsYourPort instanceof MessagePort);
|
348
|
-
* value.hereIsYourPort.postMessage('the worker is sending this');
|
349
|
-
* value.hereIsYourPort.close();
|
350
|
-
* });
|
351
|
-
* }
|
352
|
-
* ```
|
353
|
-
* @since v10.5.0
|
354
|
-
*/
|
355
|
-
class Worker extends EventEmitter {
|
356
|
-
/**
|
357
|
-
* If `stdin: true` was passed to the `Worker` constructor, this is a
|
358
|
-
* writable stream. The data written to this stream will be made available in
|
359
|
-
* the worker thread as `process.stdin`.
|
360
|
-
* @since v10.5.0
|
361
|
-
*/
|
362
|
-
readonly stdin: Writable | null;
|
363
|
-
/**
|
364
|
-
* This is a readable stream which contains data written to `process.stdout` inside the worker thread. If `stdout: true` was not passed to the `Worker` constructor, then data is piped to the
|
365
|
-
* parent thread's `process.stdout` stream.
|
366
|
-
* @since v10.5.0
|
367
|
-
*/
|
368
|
-
readonly stdout: Readable;
|
369
|
-
/**
|
370
|
-
* This is a readable stream which contains data written to `process.stderr` inside the worker thread. If `stderr: true` was not passed to the `Worker` constructor, then data is piped to the
|
371
|
-
* parent thread's `process.stderr` stream.
|
372
|
-
* @since v10.5.0
|
373
|
-
*/
|
374
|
-
readonly stderr: Readable;
|
375
|
-
/**
|
376
|
-
* An integer identifier for the referenced thread. Inside the worker thread,
|
377
|
-
* it is available as `require('node:worker_threads').threadId`.
|
378
|
-
* This value is unique for each `Worker` instance inside a single process.
|
379
|
-
* @since v10.5.0
|
380
|
-
*/
|
381
|
-
readonly threadId: number;
|
382
|
-
/**
|
383
|
-
* Provides the set of JS engine resource constraints for this Worker thread.
|
384
|
-
* If the `resourceLimits` option was passed to the `Worker` constructor,
|
385
|
-
* this matches its values.
|
386
|
-
*
|
387
|
-
* If the worker has stopped, the return value is an empty object.
|
388
|
-
* @since v13.2.0, v12.16.0
|
389
|
-
*/
|
390
|
-
readonly resourceLimits?: ResourceLimits | undefined;
|
391
|
-
/**
|
392
|
-
* An object that can be used to query performance information from a worker
|
393
|
-
* instance. Similar to `perf_hooks.performance`.
|
394
|
-
* @since v15.1.0, v14.17.0, v12.22.0
|
395
|
-
*/
|
396
|
-
readonly performance: WorkerPerformance;
|
397
|
-
/**
|
398
|
-
* @param filename The path to the Worker’s main script or module.
|
399
|
-
* Must be either an absolute path or a relative path (i.e. relative to the current working directory) starting with ./ or ../,
|
400
|
-
* or a WHATWG URL object using file: protocol. If options.eval is true, this is a string containing JavaScript code rather than a path.
|
401
|
-
*/
|
402
|
-
constructor(filename: string | URL, options?: WorkerOptions);
|
403
|
-
/**
|
404
|
-
* Send a message to the worker that is received via `require('node:worker_threads').parentPort.on('message')`.
|
405
|
-
* See `port.postMessage()` for more details.
|
406
|
-
* @since v10.5.0
|
407
|
-
*/
|
408
|
-
postMessage(value: any, transferList?: readonly TransferListItem[]): void;
|
409
|
-
/**
|
410
|
-
* Opposite of `unref()`, calling `ref()` on a previously `unref()`ed worker does _not_ let the program exit if it's the only active handle left (the default
|
411
|
-
* behavior). If the worker is `ref()`ed, calling `ref()` again has
|
412
|
-
* no effect.
|
413
|
-
* @since v10.5.0
|
414
|
-
*/
|
415
|
-
ref(): void;
|
416
|
-
/**
|
417
|
-
* Calling `unref()` on a worker allows the thread to exit if this is the only
|
418
|
-
* active handle in the event system. If the worker is already `unref()`ed calling `unref()` again has no effect.
|
419
|
-
* @since v10.5.0
|
420
|
-
*/
|
421
|
-
unref(): void;
|
422
|
-
/**
|
423
|
-
* Stop all JavaScript execution in the worker thread as soon as possible.
|
424
|
-
* Returns a Promise for the exit code that is fulfilled when the `'exit' event` is emitted.
|
425
|
-
* @since v10.5.0
|
426
|
-
*/
|
427
|
-
terminate(): Promise<number>;
|
428
|
-
/**
|
429
|
-
* Returns a readable stream for a V8 snapshot of the current state of the Worker.
|
430
|
-
* See `v8.getHeapSnapshot()` for more details.
|
431
|
-
*
|
432
|
-
* If the Worker thread is no longer running, which may occur before the `'exit' event` is emitted, the returned `Promise` is rejected
|
433
|
-
* immediately with an `ERR_WORKER_NOT_RUNNING` error.
|
434
|
-
* @since v13.9.0, v12.17.0
|
435
|
-
* @return A promise for a Readable Stream containing a V8 heap snapshot
|
436
|
-
*/
|
437
|
-
getHeapSnapshot(): Promise<Readable>;
|
438
|
-
addListener(event: "error", listener: (err: Error) => void): this;
|
439
|
-
addListener(event: "exit", listener: (exitCode: number) => void): this;
|
440
|
-
addListener(event: "message", listener: (value: any) => void): this;
|
441
|
-
addListener(event: "messageerror", listener: (error: Error) => void): this;
|
442
|
-
addListener(event: "online", listener: () => void): this;
|
443
|
-
addListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
444
|
-
emit(event: "error", err: Error): boolean;
|
445
|
-
emit(event: "exit", exitCode: number): boolean;
|
446
|
-
emit(event: "message", value: any): boolean;
|
447
|
-
emit(event: "messageerror", error: Error): boolean;
|
448
|
-
emit(event: "online"): boolean;
|
449
|
-
emit(event: string | symbol, ...args: any[]): boolean;
|
450
|
-
on(event: "error", listener: (err: Error) => void): this;
|
451
|
-
on(event: "exit", listener: (exitCode: number) => void): this;
|
452
|
-
on(event: "message", listener: (value: any) => void): this;
|
453
|
-
on(event: "messageerror", listener: (error: Error) => void): this;
|
454
|
-
on(event: "online", listener: () => void): this;
|
455
|
-
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
456
|
-
once(event: "error", listener: (err: Error) => void): this;
|
457
|
-
once(event: "exit", listener: (exitCode: number) => void): this;
|
458
|
-
once(event: "message", listener: (value: any) => void): this;
|
459
|
-
once(event: "messageerror", listener: (error: Error) => void): this;
|
460
|
-
once(event: "online", listener: () => void): this;
|
461
|
-
once(event: string | symbol, listener: (...args: any[]) => void): this;
|
462
|
-
prependListener(event: "error", listener: (err: Error) => void): this;
|
463
|
-
prependListener(event: "exit", listener: (exitCode: number) => void): this;
|
464
|
-
prependListener(event: "message", listener: (value: any) => void): this;
|
465
|
-
prependListener(event: "messageerror", listener: (error: Error) => void): this;
|
466
|
-
prependListener(event: "online", listener: () => void): this;
|
467
|
-
prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
468
|
-
prependOnceListener(event: "error", listener: (err: Error) => void): this;
|
469
|
-
prependOnceListener(event: "exit", listener: (exitCode: number) => void): this;
|
470
|
-
prependOnceListener(event: "message", listener: (value: any) => void): this;
|
471
|
-
prependOnceListener(event: "messageerror", listener: (error: Error) => void): this;
|
472
|
-
prependOnceListener(event: "online", listener: () => void): this;
|
473
|
-
prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
474
|
-
removeListener(event: "error", listener: (err: Error) => void): this;
|
475
|
-
removeListener(event: "exit", listener: (exitCode: number) => void): this;
|
476
|
-
removeListener(event: "message", listener: (value: any) => void): this;
|
477
|
-
removeListener(event: "messageerror", listener: (error: Error) => void): this;
|
478
|
-
removeListener(event: "online", listener: () => void): this;
|
479
|
-
removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
|
480
|
-
off(event: "error", listener: (err: Error) => void): this;
|
481
|
-
off(event: "exit", listener: (exitCode: number) => void): this;
|
482
|
-
off(event: "message", listener: (value: any) => void): this;
|
483
|
-
off(event: "messageerror", listener: (error: Error) => void): this;
|
484
|
-
off(event: "online", listener: () => void): this;
|
485
|
-
off(event: string | symbol, listener: (...args: any[]) => void): this;
|
486
|
-
}
|
487
|
-
interface BroadcastChannel extends NodeJS.RefCounted {}
|
488
|
-
/**
|
489
|
-
* Instances of `BroadcastChannel` allow asynchronous one-to-many communication
|
490
|
-
* with all other `BroadcastChannel` instances bound to the same channel name.
|
491
|
-
*
|
492
|
-
* ```js
|
493
|
-
* 'use strict';
|
494
|
-
*
|
495
|
-
* const {
|
496
|
-
* isMainThread,
|
497
|
-
* BroadcastChannel,
|
498
|
-
* Worker,
|
499
|
-
* } = require('node:worker_threads');
|
500
|
-
*
|
501
|
-
* const bc = new BroadcastChannel('hello');
|
502
|
-
*
|
503
|
-
* if (isMainThread) {
|
504
|
-
* let c = 0;
|
505
|
-
* bc.onmessage = (event) => {
|
506
|
-
* console.log(event.data);
|
507
|
-
* if (++c === 10) bc.close();
|
508
|
-
* };
|
509
|
-
* for (let n = 0; n < 10; n++)
|
510
|
-
* new Worker(__filename);
|
511
|
-
* } else {
|
512
|
-
* bc.postMessage('hello from every worker');
|
513
|
-
* bc.close();
|
514
|
-
* }
|
515
|
-
* ```
|
516
|
-
* @since v15.4.0
|
517
|
-
*/
|
518
|
-
class BroadcastChannel {
|
519
|
-
readonly name: string;
|
520
|
-
/**
|
521
|
-
* Invoked with a single \`MessageEvent\` argument when a message is received.
|
522
|
-
* @since v15.4.0
|
523
|
-
*/
|
524
|
-
onmessage: (message: unknown) => void;
|
525
|
-
/**
|
526
|
-
* Invoked with a received message cannot be deserialized.
|
527
|
-
* @since v15.4.0
|
528
|
-
*/
|
529
|
-
onmessageerror: (message: unknown) => void;
|
530
|
-
constructor(name: string);
|
531
|
-
/**
|
532
|
-
* Closes the `BroadcastChannel` connection.
|
533
|
-
* @since v15.4.0
|
534
|
-
*/
|
535
|
-
close(): void;
|
536
|
-
/**
|
537
|
-
* @since v15.4.0
|
538
|
-
* @param message Any cloneable JavaScript value.
|
539
|
-
*/
|
540
|
-
postMessage(message: unknown): void;
|
541
|
-
}
|
542
|
-
/**
|
543
|
-
* Mark an object as not transferable. If `object` occurs in the transfer list of
|
544
|
-
* a `port.postMessage()` call, it is ignored.
|
545
|
-
*
|
546
|
-
* In particular, this makes sense for objects that can be cloned, rather than
|
547
|
-
* transferred, and which are used by other objects on the sending side.
|
548
|
-
* For example, Node.js marks the `ArrayBuffer`s it uses for its `Buffer pool` with this.
|
549
|
-
*
|
550
|
-
* This operation cannot be undone.
|
551
|
-
*
|
552
|
-
* ```js
|
553
|
-
* const { MessageChannel, markAsUntransferable } = require('node:worker_threads');
|
554
|
-
*
|
555
|
-
* const pooledBuffer = new ArrayBuffer(8);
|
556
|
-
* const typedArray1 = new Uint8Array(pooledBuffer);
|
557
|
-
* const typedArray2 = new Float64Array(pooledBuffer);
|
558
|
-
*
|
559
|
-
* markAsUntransferable(pooledBuffer);
|
560
|
-
*
|
561
|
-
* const { port1 } = new MessageChannel();
|
562
|
-
* port1.postMessage(typedArray1, [ typedArray1.buffer ]);
|
563
|
-
*
|
564
|
-
* // The following line prints the contents of typedArray1 -- it still owns
|
565
|
-
* // its memory and has been cloned, not transferred. Without
|
566
|
-
* // `markAsUntransferable()`, this would print an empty Uint8Array.
|
567
|
-
* // typedArray2 is intact as well.
|
568
|
-
* console.log(typedArray1);
|
569
|
-
* console.log(typedArray2);
|
570
|
-
* ```
|
571
|
-
*
|
572
|
-
* There is no equivalent to this API in browsers.
|
573
|
-
* @since v14.5.0, v12.19.0
|
574
|
-
*/
|
575
|
-
function markAsUntransferable(object: object): void;
|
576
|
-
/**
|
577
|
-
* Transfer a `MessagePort` to a different `vm` Context. The original `port` object is rendered unusable, and the returned `MessagePort` instance
|
578
|
-
* takes its place.
|
579
|
-
*
|
580
|
-
* The returned `MessagePort` is an object in the target context and
|
581
|
-
* inherits from its global `Object` class. Objects passed to the [`port.onmessage()`](https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/onmessage) listener are also created in the
|
582
|
-
* target context
|
583
|
-
* and inherit from its global `Object` class.
|
584
|
-
*
|
585
|
-
* However, the created `MessagePort` no longer inherits from [`EventTarget`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget), and only
|
586
|
-
* [`port.onmessage()`](https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/onmessage) can be used to receive
|
587
|
-
* events using it.
|
588
|
-
* @since v11.13.0
|
589
|
-
* @param port The message port to transfer.
|
590
|
-
* @param contextifiedSandbox A `contextified` object as returned by the `vm.createContext()` method.
|
591
|
-
*/
|
592
|
-
function moveMessagePortToContext(port: MessagePort, contextifiedSandbox: Context): MessagePort;
|
593
|
-
/**
|
594
|
-
* Receive a single message from a given `MessagePort`. If no message is available,`undefined` is returned, otherwise an object with a single `message` property
|
595
|
-
* that contains the message payload, corresponding to the oldest message in the `MessagePort`'s queue.
|
596
|
-
*
|
597
|
-
* ```js
|
598
|
-
* const { MessageChannel, receiveMessageOnPort } = require('node:worker_threads');
|
599
|
-
* const { port1, port2 } = new MessageChannel();
|
600
|
-
* port1.postMessage({ hello: 'world' });
|
601
|
-
*
|
602
|
-
* console.log(receiveMessageOnPort(port2));
|
603
|
-
* // Prints: { message: { hello: 'world' } }
|
604
|
-
* console.log(receiveMessageOnPort(port2));
|
605
|
-
* // Prints: undefined
|
606
|
-
* ```
|
607
|
-
*
|
608
|
-
* When this function is used, no `'message'` event is emitted and the `onmessage` listener is not invoked.
|
609
|
-
* @since v12.3.0
|
610
|
-
*/
|
611
|
-
function receiveMessageOnPort(port: MessagePort):
|
612
|
-
| {
|
613
|
-
message: any;
|
614
|
-
}
|
615
|
-
| undefined;
|
616
|
-
type Serializable = string | object | number | boolean | bigint;
|
617
|
-
/**
|
618
|
-
* Within a worker thread, `worker.getEnvironmentData()` returns a clone
|
619
|
-
* of data passed to the spawning thread's `worker.setEnvironmentData()`.
|
620
|
-
* Every new `Worker` receives its own copy of the environment data
|
621
|
-
* automatically.
|
622
|
-
*
|
623
|
-
* ```js
|
624
|
-
* const {
|
625
|
-
* Worker,
|
626
|
-
* isMainThread,
|
627
|
-
* setEnvironmentData,
|
628
|
-
* getEnvironmentData,
|
629
|
-
* } = require('node:worker_threads');
|
630
|
-
*
|
631
|
-
* if (isMainThread) {
|
632
|
-
* setEnvironmentData('Hello', 'World!');
|
633
|
-
* const worker = new Worker(__filename);
|
634
|
-
* } else {
|
635
|
-
* console.log(getEnvironmentData('Hello')); // Prints 'World!'.
|
636
|
-
* }
|
637
|
-
* ```
|
638
|
-
* @since v15.12.0, v14.18.0
|
639
|
-
* @param key Any arbitrary, cloneable JavaScript value that can be used as a {Map} key.
|
640
|
-
*/
|
641
|
-
function getEnvironmentData(key: Serializable): Serializable;
|
642
|
-
/**
|
643
|
-
* The `worker.setEnvironmentData()` API sets the content of `worker.getEnvironmentData()` in the current thread and all new `Worker` instances spawned from the current context.
|
644
|
-
* @since v15.12.0, v14.18.0
|
645
|
-
* @param key Any arbitrary, cloneable JavaScript value that can be used as a {Map} key.
|
646
|
-
* @param value Any arbitrary, cloneable JavaScript value that will be cloned and passed automatically to all new `Worker` instances. If `value` is passed as `undefined`, any previously set value
|
647
|
-
* for the `key` will be deleted.
|
648
|
-
*/
|
649
|
-
function setEnvironmentData(key: Serializable, value: Serializable): void;
|
650
|
-
|
651
|
-
import {
|
652
|
-
BroadcastChannel as _BroadcastChannel,
|
653
|
-
MessageChannel as _MessageChannel,
|
654
|
-
MessagePort as _MessagePort,
|
655
|
-
} from "worker_threads";
|
656
|
-
global {
|
657
|
-
/**
|
658
|
-
* `BroadcastChannel` class is a global reference for `require('worker_threads').BroadcastChannel`
|
659
|
-
* https://nodejs.org/api/globals.html#broadcastchannel
|
660
|
-
* @since v18.0.0
|
661
|
-
*/
|
662
|
-
var BroadcastChannel: typeof globalThis extends {
|
663
|
-
onmessage: any;
|
664
|
-
BroadcastChannel: infer T;
|
665
|
-
} ? T
|
666
|
-
: typeof _BroadcastChannel;
|
667
|
-
/**
|
668
|
-
* `MessageChannel` class is a global reference for `require('worker_threads').MessageChannel`
|
669
|
-
* https://nodejs.org/api/globals.html#messagechannel
|
670
|
-
* @since v15.0.0
|
671
|
-
*/
|
672
|
-
var MessageChannel: typeof globalThis extends {
|
673
|
-
onmessage: any;
|
674
|
-
MessageChannel: infer T;
|
675
|
-
} ? T
|
676
|
-
: typeof _MessageChannel;
|
677
|
-
/**
|
678
|
-
* `MessagePort` class is a global reference for `require('worker_threads').MessagePort`
|
679
|
-
* https://nodejs.org/api/globals.html#messageport
|
680
|
-
* @since v15.0.0
|
681
|
-
*/
|
682
|
-
var MessagePort: typeof globalThis extends {
|
683
|
-
onmessage: any;
|
684
|
-
MessagePort: infer T;
|
685
|
-
} ? T
|
686
|
-
: typeof _MessagePort;
|
687
|
-
}
|
688
|
-
}
|
689
|
-
declare module "node:worker_threads" {
|
690
|
-
export * from "worker_threads";
|
691
|
-
}
|