alicezetion 1.9.7 → 1.9.8
Sign up to get free protection for your applications and to get access to all the features.
- package/.cache/replit/modules/nodejs-20.res +1 -0
- package/.cache/replit/modules/replit.res +1 -0
- package/.cache/typescript/5.4/node_modules/.package-lock.json +137 -0
- package/.cache/typescript/5.4/node_modules/@types/bluebird/LICENSE +21 -0
- package/.cache/typescript/5.4/node_modules/@types/bluebird/README.md +15 -0
- package/.cache/typescript/5.4/node_modules/@types/bluebird/index.d.ts +1365 -0
- package/.cache/typescript/5.4/node_modules/@types/bluebird/package.json +25 -0
- package/.cache/typescript/5.4/node_modules/@types/caseless/LICENSE +21 -0
- package/.cache/typescript/5.4/node_modules/@types/caseless/README.md +48 -0
- package/.cache/typescript/5.4/node_modules/@types/caseless/index.d.ts +29 -0
- package/.cache/typescript/5.4/node_modules/@types/caseless/package.json +35 -0
- package/.cache/typescript/5.4/node_modules/@types/cheerio/LICENSE +21 -0
- package/.cache/typescript/5.4/node_modules/@types/cheerio/README.md +15 -0
- package/.cache/typescript/5.4/node_modules/@types/cheerio/index.d.ts +318 -0
- package/.cache/typescript/5.4/node_modules/@types/cheerio/package.json +71 -0
- package/.cache/typescript/5.4/node_modules/@types/node/LICENSE +21 -0
- package/.cache/typescript/5.4/node_modules/@types/node/README.md +15 -0
- package/.cache/typescript/5.4/node_modules/@types/node/assert/strict.d.ts +8 -0
- package/.cache/typescript/5.4/node_modules/@types/node/assert.d.ts +1040 -0
- package/.cache/typescript/5.4/node_modules/@types/node/async_hooks.d.ts +541 -0
- package/.cache/typescript/5.4/node_modules/@types/node/buffer.d.ts +2363 -0
- package/.cache/typescript/5.4/node_modules/@types/node/child_process.d.ts +1544 -0
- package/.cache/typescript/5.4/node_modules/@types/node/cluster.d.ts +578 -0
- package/.cache/typescript/5.4/node_modules/@types/node/console.d.ts +452 -0
- package/.cache/typescript/5.4/node_modules/@types/node/constants.d.ts +19 -0
- package/.cache/typescript/5.4/node_modules/@types/node/crypto.d.ts +4523 -0
- package/.cache/typescript/5.4/node_modules/@types/node/dgram.d.ts +596 -0
- package/.cache/typescript/5.4/node_modules/@types/node/diagnostics_channel.d.ts +554 -0
- package/.cache/typescript/5.4/node_modules/@types/node/dns/promises.d.ts +476 -0
- package/.cache/typescript/5.4/node_modules/@types/node/dns.d.ts +864 -0
- package/.cache/typescript/5.4/node_modules/@types/node/dom-events.d.ts +124 -0
- package/.cache/typescript/5.4/node_modules/@types/node/domain.d.ts +170 -0
- package/.cache/typescript/5.4/node_modules/@types/node/events.d.ts +931 -0
- package/.cache/typescript/5.4/node_modules/@types/node/fs/promises.d.ts +1245 -0
- package/.cache/typescript/5.4/node_modules/@types/node/fs.d.ts +4317 -0
- package/.cache/typescript/5.4/node_modules/@types/node/globals.d.ts +412 -0
- package/.cache/typescript/5.4/node_modules/@types/node/globals.global.d.ts +1 -0
- package/.cache/typescript/5.4/node_modules/@types/node/http.d.ts +1908 -0
- package/.cache/typescript/5.4/node_modules/@types/node/http2.d.ts +2418 -0
- package/.cache/typescript/5.4/node_modules/@types/node/https.d.ts +550 -0
- package/.cache/typescript/5.4/node_modules/@types/node/index.d.ts +89 -0
- package/.cache/typescript/5.4/node_modules/@types/node/inspector.d.ts +2746 -0
- package/.cache/typescript/5.4/node_modules/@types/node/module.d.ts +315 -0
- package/.cache/typescript/5.4/node_modules/@types/node/net.d.ts +999 -0
- package/.cache/typescript/5.4/node_modules/@types/node/os.d.ts +495 -0
- package/.cache/typescript/5.4/node_modules/@types/node/package.json +217 -0
- package/.cache/typescript/5.4/node_modules/@types/node/path.d.ts +191 -0
- package/.cache/typescript/5.4/node_modules/@types/node/perf_hooks.d.ts +905 -0
- package/.cache/typescript/5.4/node_modules/@types/node/process.d.ts +1754 -0
- package/.cache/typescript/5.4/node_modules/@types/node/punycode.d.ts +117 -0
- package/.cache/typescript/5.4/node_modules/@types/node/querystring.d.ts +153 -0
- package/.cache/typescript/5.4/node_modules/@types/node/readline/promises.d.ts +150 -0
- package/.cache/typescript/5.4/node_modules/@types/node/readline.d.ts +540 -0
- package/.cache/typescript/5.4/node_modules/@types/node/repl.d.ts +430 -0
- package/.cache/typescript/5.4/node_modules/@types/node/sea.d.ts +153 -0
- package/.cache/typescript/5.4/node_modules/@types/node/stream/consumers.d.ts +12 -0
- package/.cache/typescript/5.4/node_modules/@types/node/stream/promises.d.ts +83 -0
- package/.cache/typescript/5.4/node_modules/@types/node/stream/web.d.ts +367 -0
- package/.cache/typescript/5.4/node_modules/@types/node/stream.d.ts +1707 -0
- package/.cache/typescript/5.4/node_modules/@types/node/string_decoder.d.ts +67 -0
- package/.cache/typescript/5.4/node_modules/@types/node/test.d.ts +1718 -0
- package/.cache/typescript/5.4/node_modules/@types/node/timers/promises.d.ts +97 -0
- package/.cache/typescript/5.4/node_modules/@types/node/timers.d.ts +240 -0
- package/.cache/typescript/5.4/node_modules/@types/node/tls.d.ts +1217 -0
- package/.cache/typescript/5.4/node_modules/@types/node/trace_events.d.ts +197 -0
- package/.cache/typescript/5.4/node_modules/@types/node/tty.d.ts +208 -0
- package/.cache/typescript/5.4/node_modules/@types/node/url.d.ts +952 -0
- package/.cache/typescript/5.4/node_modules/@types/node/util.d.ts +2292 -0
- package/.cache/typescript/5.4/node_modules/@types/node/v8.d.ts +808 -0
- package/.cache/typescript/5.4/node_modules/@types/node/vm.d.ts +924 -0
- package/.cache/typescript/5.4/node_modules/@types/node/wasi.d.ts +181 -0
- package/.cache/typescript/5.4/node_modules/@types/node/worker_threads.d.ts +694 -0
- package/.cache/typescript/5.4/node_modules/@types/node/zlib.d.ts +530 -0
- package/.cache/typescript/5.4/node_modules/@types/npmlog/LICENSE +21 -0
- package/.cache/typescript/5.4/node_modules/@types/npmlog/README.md +15 -0
- package/.cache/typescript/5.4/node_modules/@types/npmlog/index.d.ts +84 -0
- package/.cache/typescript/5.4/node_modules/@types/npmlog/package.json +32 -0
- package/.cache/typescript/5.4/node_modules/@types/request/LICENSE +21 -0
- package/.cache/typescript/5.4/node_modules/@types/request/README.md +15 -0
- package/.cache/typescript/5.4/node_modules/@types/request/index.d.ts +395 -0
- package/.cache/typescript/5.4/node_modules/@types/request/package.json +70 -0
- package/.cache/typescript/5.4/node_modules/@types/tough-cookie/LICENSE +21 -0
- package/.cache/typescript/5.4/node_modules/@types/tough-cookie/README.md +15 -0
- package/.cache/typescript/5.4/node_modules/@types/tough-cookie/index.d.ts +321 -0
- package/.cache/typescript/5.4/node_modules/@types/tough-cookie/package.json +35 -0
- package/.cache/typescript/5.4/node_modules/asynckit/LICENSE +21 -0
- package/.cache/typescript/5.4/node_modules/asynckit/README.md +233 -0
- package/.cache/typescript/5.4/node_modules/asynckit/bench.js +76 -0
- package/.cache/typescript/5.4/node_modules/asynckit/index.js +6 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/abort.js +29 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/async.js +34 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/defer.js +26 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/iterate.js +75 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_asynckit.js +91 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_parallel.js +25 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_serial.js +25 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/state.js +37 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/streamify.js +141 -0
- package/.cache/typescript/5.4/node_modules/asynckit/lib/terminator.js +29 -0
- package/.cache/typescript/5.4/node_modules/asynckit/package.json +63 -0
- package/.cache/typescript/5.4/node_modules/asynckit/parallel.js +43 -0
- package/.cache/typescript/5.4/node_modules/asynckit/serial.js +17 -0
- package/.cache/typescript/5.4/node_modules/asynckit/serialOrdered.js +75 -0
- package/.cache/typescript/5.4/node_modules/asynckit/stream.js +21 -0
- package/.cache/typescript/5.4/node_modules/combined-stream/License +19 -0
- package/.cache/typescript/5.4/node_modules/combined-stream/Readme.md +138 -0
- package/.cache/typescript/5.4/node_modules/combined-stream/lib/combined_stream.js +208 -0
- package/.cache/typescript/5.4/node_modules/combined-stream/package.json +25 -0
- package/.cache/typescript/5.4/node_modules/combined-stream/yarn.lock +17 -0
- package/.cache/typescript/5.4/node_modules/delayed-stream/License +19 -0
- package/.cache/typescript/5.4/node_modules/delayed-stream/Makefile +7 -0
- package/.cache/typescript/5.4/node_modules/delayed-stream/Readme.md +141 -0
- package/.cache/typescript/5.4/node_modules/delayed-stream/lib/delayed_stream.js +107 -0
- package/.cache/typescript/5.4/node_modules/delayed-stream/package.json +27 -0
- package/.cache/typescript/5.4/node_modules/form-data/License +19 -0
- package/.cache/typescript/5.4/node_modules/form-data/README.md +350 -0
- package/.cache/typescript/5.4/node_modules/form-data/README.md.bak +350 -0
- package/.cache/typescript/5.4/node_modules/form-data/index.d.ts +51 -0
- package/.cache/typescript/5.4/node_modules/form-data/lib/browser.js +2 -0
- package/.cache/typescript/5.4/node_modules/form-data/lib/form_data.js +483 -0
- package/.cache/typescript/5.4/node_modules/form-data/lib/populate.js +10 -0
- package/.cache/typescript/5.4/node_modules/form-data/package.json +68 -0
- package/.cache/typescript/5.4/node_modules/mime-db/HISTORY.md +507 -0
- package/.cache/typescript/5.4/node_modules/mime-db/LICENSE +23 -0
- package/.cache/typescript/5.4/node_modules/mime-db/README.md +100 -0
- package/.cache/typescript/5.4/node_modules/mime-db/db.json +8519 -0
- package/.cache/typescript/5.4/node_modules/mime-db/index.js +12 -0
- package/.cache/typescript/5.4/node_modules/mime-db/package.json +60 -0
- package/.cache/typescript/5.4/node_modules/mime-types/HISTORY.md +397 -0
- package/.cache/typescript/5.4/node_modules/mime-types/LICENSE +23 -0
- package/.cache/typescript/5.4/node_modules/mime-types/README.md +113 -0
- package/.cache/typescript/5.4/node_modules/mime-types/index.js +188 -0
- package/.cache/typescript/5.4/node_modules/mime-types/package.json +44 -0
- package/.cache/typescript/5.4/node_modules/types-registry/README.md +2 -0
- package/.cache/typescript/5.4/node_modules/types-registry/index.json +1 -0
- package/.cache/typescript/5.4/node_modules/types-registry/package.json +20 -0
- package/.cache/typescript/5.4/node_modules/undici-types/README.md +6 -0
- package/.cache/typescript/5.4/node_modules/undici-types/agent.d.ts +31 -0
- package/.cache/typescript/5.4/node_modules/undici-types/api.d.ts +43 -0
- package/.cache/typescript/5.4/node_modules/undici-types/balanced-pool.d.ts +18 -0
- package/.cache/typescript/5.4/node_modules/undici-types/cache.d.ts +36 -0
- package/.cache/typescript/5.4/node_modules/undici-types/client.d.ts +97 -0
- package/.cache/typescript/5.4/node_modules/undici-types/connector.d.ts +34 -0
- package/.cache/typescript/5.4/node_modules/undici-types/content-type.d.ts +21 -0
- package/.cache/typescript/5.4/node_modules/undici-types/cookies.d.ts +28 -0
- package/.cache/typescript/5.4/node_modules/undici-types/diagnostics-channel.d.ts +67 -0
- package/.cache/typescript/5.4/node_modules/undici-types/dispatcher.d.ts +241 -0
- package/.cache/typescript/5.4/node_modules/undici-types/errors.d.ts +128 -0
- package/.cache/typescript/5.4/node_modules/undici-types/fetch.d.ts +209 -0
- package/.cache/typescript/5.4/node_modules/undici-types/file.d.ts +39 -0
- package/.cache/typescript/5.4/node_modules/undici-types/filereader.d.ts +54 -0
- package/.cache/typescript/5.4/node_modules/undici-types/formdata.d.ts +108 -0
- package/.cache/typescript/5.4/node_modules/undici-types/global-dispatcher.d.ts +9 -0
- package/.cache/typescript/5.4/node_modules/undici-types/global-origin.d.ts +7 -0
- package/.cache/typescript/5.4/node_modules/undici-types/handlers.d.ts +9 -0
- package/.cache/typescript/5.4/node_modules/undici-types/header.d.ts +4 -0
- package/.cache/typescript/5.4/node_modules/undici-types/index.d.ts +63 -0
- package/.cache/typescript/5.4/node_modules/undici-types/interceptors.d.ts +5 -0
- package/.cache/typescript/5.4/node_modules/undici-types/mock-agent.d.ts +50 -0
- package/.cache/typescript/5.4/node_modules/undici-types/mock-client.d.ts +25 -0
- package/.cache/typescript/5.4/node_modules/undici-types/mock-errors.d.ts +12 -0
- package/.cache/typescript/5.4/node_modules/undici-types/mock-interceptor.d.ts +93 -0
- package/.cache/typescript/5.4/node_modules/undici-types/mock-pool.d.ts +25 -0
- package/.cache/typescript/5.4/node_modules/undici-types/package.json +55 -0
- package/.cache/typescript/5.4/node_modules/undici-types/patch.d.ts +71 -0
- package/.cache/typescript/5.4/node_modules/undici-types/pool-stats.d.ts +19 -0
- package/.cache/typescript/5.4/node_modules/undici-types/pool.d.ts +28 -0
- package/.cache/typescript/5.4/node_modules/undici-types/proxy-agent.d.ts +30 -0
- package/.cache/typescript/5.4/node_modules/undici-types/readable.d.ts +61 -0
- package/.cache/typescript/5.4/node_modules/undici-types/webidl.d.ts +220 -0
- package/.cache/typescript/5.4/node_modules/undici-types/websocket.d.ts +131 -0
- package/.cache/typescript/5.4/package-lock.json +149 -0
- package/.cache/typescript/5.4/package.json +1 -0
- package/index.js +291 -71
- package/leiamnash/addExternalModule.js +15 -0
- package/leiamnash/addUserToGroup.js +77 -0
- package/leiamnash/changeAdminStatus.js +47 -0
- package/leiamnash/changeArchivedStatus.js +41 -0
- package/{src → leiamnash}/changeAvatar.js +3 -2
- package/leiamnash/changeBio.js +64 -0
- package/leiamnash/changeBlockedStatus.js +36 -0
- package/leiamnash/changeGroupImage.js +105 -0
- package/leiamnash/changeNickname.js +43 -0
- package/leiamnash/changeThreadColor.js +61 -0
- package/leiamnash/changeThreadEmoji.js +41 -0
- package/{src → leiamnash}/chat.js +4 -29
- package/leiamnash/createNewGroup.js +70 -0
- package/leiamnash/createPoll.js +59 -0
- package/leiamnash/deleteMessage.js +44 -0
- package/leiamnash/deleteThread.js +42 -0
- package/leiamnash/editMessage.js +62 -0
- package/leiamnash/forwardAttachment.js +47 -0
- package/leiamnash/forwardMessage.js +0 -0
- package/leiamnash/getCurrentUserID.js +7 -0
- package/leiamnash/getEmojiUrl.js +27 -0
- package/leiamnash/getFriendsList.js +73 -0
- package/leiamnash/getInfoVideo.js +134 -0
- package/leiamnash/getThreadHistory.js +537 -0
- package/leiamnash/getThreadHistoryDeprecated.js +71 -0
- package/leiamnash/getThreadInfo.js +171 -0
- package/leiamnash/getThreadInfoDeprecated.js +56 -0
- package/leiamnash/getThreadList.js +213 -0
- package/leiamnash/getThreadListDeprecated.js +46 -0
- package/leiamnash/getThreadPictures.js +59 -0
- package/leiamnash/getUserID.js +61 -0
- package/leiamnash/getUserInfo.js +66 -0
- package/leiamnash/handleFriendRequest.js +46 -0
- package/leiamnash/handleMessageRequest.js +47 -0
- package/leiamnash/httpGet.js +47 -0
- package/leiamnash/httpPost.js +47 -0
- package/leiamnash/httpPostFormData.js +42 -0
- package/leiamnash/listenMqtt.js +843 -0
- package/leiamnash/logout.js +68 -0
- package/leiamnash/markAsDelivered.js +47 -0
- package/leiamnash/markAsRead.js +70 -0
- package/leiamnash/markAsReadAll.js +40 -0
- package/leiamnash/markAsSeen.js +48 -0
- package/leiamnash/muteThread.js +45 -0
- package/leiamnash/pinMessage.js +58 -0
- package/leiamnash/react.js +109 -0
- package/{src → leiamnash}/refreshFb_dtsg.js +1 -1
- package/leiamnash/removeUserFromGroup.js +45 -0
- package/leiamnash/resolvePhotoUrl.js +36 -0
- package/leiamnash/searchForThread.js +42 -0
- package/leiamnash/seen.js +40 -0
- package/leiamnash/sendMessage.js +315 -0
- package/leiamnash/sendTypingIndicator.js +70 -0
- package/leiamnash/setMessageReaction.js +103 -0
- package/leiamnash/setPostReaction.js +63 -0
- package/leiamnash/setTitle.js +70 -0
- package/leiamnash/threadColors.js +41 -0
- package/leiamnash/token.js +112 -0
- package/leiamnash/unfriend.js +42 -0
- package/leiamnash/unsendMessage.js +39 -0
- package/{src → leiamnash}/uploadAttachment.js +2 -1
- package/package.json +3 -2
- package/utils.js +1345 -1382
- package/.cache/replit/modules/nodejs-20:v32-20240401-269b323.res +0 -1
- package/.cache/replit/modules/replit:v8-20240329-787bc7d.res +0 -1
- package/.replit +0 -1
- package/src/addExternalModule.js +0 -19
- package/src/addUserToGroup.js +0 -113
- package/src/changeAdminStatus.js +0 -79
- package/src/changeArchivedStatus.js +0 -55
- package/src/changeBio.js +0 -77
- package/src/changeBlockedStatus.js +0 -47
- package/src/changeGroupImage.js +0 -132
- package/src/changeNickname.js +0 -59
- package/src/changeThreadColor.js +0 -65
- package/src/changeThreadEmoji.js +0 -55
- package/src/createNewGroup.js +0 -86
- package/src/createPoll.js +0 -71
- package/src/deleteMessage.js +0 -56
- package/src/deleteThread.js +0 -56
- package/src/edit.js +0 -66
- package/src/forwardAttachment.js +0 -60
- package/src/getCurrentUserID.js +0 -7
- package/src/getEmojiUrl.js +0 -29
- package/src/getFriendsList.js +0 -83
- package/src/getThreadHistory.js +0 -666
- package/src/getThreadInfo.js +0 -232
- package/src/getThreadList.js +0 -241
- package/src/getThreadPictures.js +0 -79
- package/src/getUserID.js +0 -66
- package/src/getUserInfo.js +0 -74
- package/src/handleFriendRequest.js +0 -61
- package/src/handleMessageRequest.js +0 -65
- package/src/httpGet.js +0 -57
- package/src/httpPost.js +0 -57
- package/src/httpPostFormData.js +0 -63
- package/src/listenMqtt.js +0 -854
- package/src/logout.js +0 -75
- package/src/markAsDelivered.js +0 -58
- package/src/markAsRead.js +0 -80
- package/src/markAsReadAll.js +0 -50
- package/src/markAsSeen.js +0 -59
- package/src/muteThread.js +0 -52
- package/src/react.js +0 -121
- package/src/removeUserFromGroup.js +0 -79
- package/src/resolvePhotoUrl.js +0 -45
- package/src/searchForThread.js +0 -53
- package/src/seen.js +0 -50
- package/src/sendMessage.js +0 -477
- package/src/sendTypingIndicator.js +0 -103
- package/src/setMessageReaction.js +0 -121
- package/src/setPostReaction.js +0 -109
- package/src/setTitle.js +0 -86
- package/src/threadColors.js +0 -131
- package/src/unfriend.js +0 -52
- package/src/unsendMessage.js +0 -49
- /package/{src → leiamnash}/getMessage.js +0 -0
@@ -0,0 +1,541 @@
|
|
1
|
+
/**
|
2
|
+
* We strongly discourage the use of the `async_hooks` API.
|
3
|
+
* Other APIs that can cover most of its use cases include:
|
4
|
+
*
|
5
|
+
* * [`AsyncLocalStorage`](https://nodejs.org/docs/latest-v20.x/api/async_context.html#class-asynclocalstorage) tracks async context
|
6
|
+
* * [`process.getActiveResourcesInfo()`](https://nodejs.org/docs/latest-v20.x/api/process.html#processgetactiveresourcesinfo) tracks active resources
|
7
|
+
*
|
8
|
+
* The `node:async_hooks` module provides an API to track asynchronous resources.
|
9
|
+
* It can be accessed using:
|
10
|
+
*
|
11
|
+
* ```js
|
12
|
+
* import async_hooks from 'node:async_hooks';
|
13
|
+
* ```
|
14
|
+
* @experimental
|
15
|
+
* @see [source](https://github.com/nodejs/node/blob/v20.13.1/lib/async_hooks.js)
|
16
|
+
*/
|
17
|
+
declare module "async_hooks" {
|
18
|
+
/**
|
19
|
+
* ```js
|
20
|
+
* import { executionAsyncId } from 'node:async_hooks';
|
21
|
+
* import fs from 'node:fs';
|
22
|
+
*
|
23
|
+
* console.log(executionAsyncId()); // 1 - bootstrap
|
24
|
+
* const path = '.';
|
25
|
+
* fs.open(path, 'r', (err, fd) => {
|
26
|
+
* console.log(executionAsyncId()); // 6 - open()
|
27
|
+
* });
|
28
|
+
* ```
|
29
|
+
*
|
30
|
+
* The ID returned from `executionAsyncId()` is related to execution timing, not
|
31
|
+
* causality (which is covered by `triggerAsyncId()`):
|
32
|
+
*
|
33
|
+
* ```js
|
34
|
+
* const server = net.createServer((conn) => {
|
35
|
+
* // Returns the ID of the server, not of the new connection, because the
|
36
|
+
* // callback runs in the execution scope of the server's MakeCallback().
|
37
|
+
* async_hooks.executionAsyncId();
|
38
|
+
*
|
39
|
+
* }).listen(port, () => {
|
40
|
+
* // Returns the ID of a TickObject (process.nextTick()) because all
|
41
|
+
* // callbacks passed to .listen() are wrapped in a nextTick().
|
42
|
+
* async_hooks.executionAsyncId();
|
43
|
+
* });
|
44
|
+
* ```
|
45
|
+
*
|
46
|
+
* Promise contexts may not get precise `executionAsyncIds` by default.
|
47
|
+
* See the section on [promise execution tracking](https://nodejs.org/docs/latest-v20.x/api/async_hooks.html#promise-execution-tracking).
|
48
|
+
* @since v8.1.0
|
49
|
+
* @return The `asyncId` of the current execution context. Useful to track when something calls.
|
50
|
+
*/
|
51
|
+
function executionAsyncId(): number;
|
52
|
+
/**
|
53
|
+
* Resource objects returned by `executionAsyncResource()` are most often internal
|
54
|
+
* Node.js handle objects with undocumented APIs. Using any functions or properties
|
55
|
+
* on the object is likely to crash your application and should be avoided.
|
56
|
+
*
|
57
|
+
* Using `executionAsyncResource()` in the top-level execution context will
|
58
|
+
* return an empty object as there is no handle or request object to use,
|
59
|
+
* but having an object representing the top-level can be helpful.
|
60
|
+
*
|
61
|
+
* ```js
|
62
|
+
* import { open } from 'node:fs';
|
63
|
+
* import { executionAsyncId, executionAsyncResource } from 'node:async_hooks';
|
64
|
+
*
|
65
|
+
* console.log(executionAsyncId(), executionAsyncResource()); // 1 {}
|
66
|
+
* open(new URL(import.meta.url), 'r', (err, fd) => {
|
67
|
+
* console.log(executionAsyncId(), executionAsyncResource()); // 7 FSReqWrap
|
68
|
+
* });
|
69
|
+
* ```
|
70
|
+
*
|
71
|
+
* This can be used to implement continuation local storage without the
|
72
|
+
* use of a tracking `Map` to store the metadata:
|
73
|
+
*
|
74
|
+
* ```js
|
75
|
+
* import { createServer } from 'node:http';
|
76
|
+
* import {
|
77
|
+
* executionAsyncId,
|
78
|
+
* executionAsyncResource,
|
79
|
+
* createHook,
|
80
|
+
* } from 'async_hooks';
|
81
|
+
* const sym = Symbol('state'); // Private symbol to avoid pollution
|
82
|
+
*
|
83
|
+
* createHook({
|
84
|
+
* init(asyncId, type, triggerAsyncId, resource) {
|
85
|
+
* const cr = executionAsyncResource();
|
86
|
+
* if (cr) {
|
87
|
+
* resource[sym] = cr[sym];
|
88
|
+
* }
|
89
|
+
* },
|
90
|
+
* }).enable();
|
91
|
+
*
|
92
|
+
* const server = createServer((req, res) => {
|
93
|
+
* executionAsyncResource()[sym] = { state: req.url };
|
94
|
+
* setTimeout(function() {
|
95
|
+
* res.end(JSON.stringify(executionAsyncResource()[sym]));
|
96
|
+
* }, 100);
|
97
|
+
* }).listen(3000);
|
98
|
+
* ```
|
99
|
+
* @since v13.9.0, v12.17.0
|
100
|
+
* @return The resource representing the current execution. Useful to store data within the resource.
|
101
|
+
*/
|
102
|
+
function executionAsyncResource(): object;
|
103
|
+
/**
|
104
|
+
* ```js
|
105
|
+
* const server = net.createServer((conn) => {
|
106
|
+
* // The resource that caused (or triggered) this callback to be called
|
107
|
+
* // was that of the new connection. Thus the return value of triggerAsyncId()
|
108
|
+
* // is the asyncId of "conn".
|
109
|
+
* async_hooks.triggerAsyncId();
|
110
|
+
*
|
111
|
+
* }).listen(port, () => {
|
112
|
+
* // Even though all callbacks passed to .listen() are wrapped in a nextTick()
|
113
|
+
* // the callback itself exists because the call to the server's .listen()
|
114
|
+
* // was made. So the return value would be the ID of the server.
|
115
|
+
* async_hooks.triggerAsyncId();
|
116
|
+
* });
|
117
|
+
* ```
|
118
|
+
*
|
119
|
+
* Promise contexts may not get valid `triggerAsyncId`s by default. See
|
120
|
+
* the section on [promise execution tracking](https://nodejs.org/docs/latest-v20.x/api/async_hooks.html#promise-execution-tracking).
|
121
|
+
* @return The ID of the resource responsible for calling the callback that is currently being executed.
|
122
|
+
*/
|
123
|
+
function triggerAsyncId(): number;
|
124
|
+
interface HookCallbacks {
|
125
|
+
/**
|
126
|
+
* Called when a class is constructed that has the possibility to emit an asynchronous event.
|
127
|
+
* @param asyncId A unique ID for the async resource
|
128
|
+
* @param type The type of the async resource
|
129
|
+
* @param triggerAsyncId The unique ID of the async resource in whose execution context this async resource was created
|
130
|
+
* @param resource Reference to the resource representing the async operation, needs to be released during destroy
|
131
|
+
*/
|
132
|
+
init?(asyncId: number, type: string, triggerAsyncId: number, resource: object): void;
|
133
|
+
/**
|
134
|
+
* When an asynchronous operation is initiated or completes a callback is called to notify the user.
|
135
|
+
* The before callback is called just before said callback is executed.
|
136
|
+
* @param asyncId the unique identifier assigned to the resource about to execute the callback.
|
137
|
+
*/
|
138
|
+
before?(asyncId: number): void;
|
139
|
+
/**
|
140
|
+
* Called immediately after the callback specified in `before` is completed.
|
141
|
+
*
|
142
|
+
* If an uncaught exception occurs during execution of the callback, then `after` will run after the `'uncaughtException'` event is emitted or a `domain`'s handler runs.
|
143
|
+
* @param asyncId the unique identifier assigned to the resource which has executed the callback.
|
144
|
+
*/
|
145
|
+
after?(asyncId: number): void;
|
146
|
+
/**
|
147
|
+
* Called when a promise has resolve() called. This may not be in the same execution id
|
148
|
+
* as the promise itself.
|
149
|
+
* @param asyncId the unique id for the promise that was resolve()d.
|
150
|
+
*/
|
151
|
+
promiseResolve?(asyncId: number): void;
|
152
|
+
/**
|
153
|
+
* Called after the resource corresponding to asyncId is destroyed
|
154
|
+
* @param asyncId a unique ID for the async resource
|
155
|
+
*/
|
156
|
+
destroy?(asyncId: number): void;
|
157
|
+
}
|
158
|
+
interface AsyncHook {
|
159
|
+
/**
|
160
|
+
* Enable the callbacks for a given AsyncHook instance. If no callbacks are provided enabling is a noop.
|
161
|
+
*/
|
162
|
+
enable(): this;
|
163
|
+
/**
|
164
|
+
* Disable the callbacks for a given AsyncHook instance from the global pool of AsyncHook callbacks to be executed. Once a hook has been disabled it will not be called again until enabled.
|
165
|
+
*/
|
166
|
+
disable(): this;
|
167
|
+
}
|
168
|
+
/**
|
169
|
+
* Registers functions to be called for different lifetime events of each async
|
170
|
+
* operation.
|
171
|
+
*
|
172
|
+
* The callbacks `init()`/`before()`/`after()`/`destroy()` are called for the
|
173
|
+
* respective asynchronous event during a resource's lifetime.
|
174
|
+
*
|
175
|
+
* All callbacks are optional. For example, if only resource cleanup needs to
|
176
|
+
* be tracked, then only the `destroy` callback needs to be passed. The
|
177
|
+
* specifics of all functions that can be passed to `callbacks` is in the `Hook Callbacks` section.
|
178
|
+
*
|
179
|
+
* ```js
|
180
|
+
* import { createHook } from 'node:async_hooks';
|
181
|
+
*
|
182
|
+
* const asyncHook = createHook({
|
183
|
+
* init(asyncId, type, triggerAsyncId, resource) { },
|
184
|
+
* destroy(asyncId) { },
|
185
|
+
* });
|
186
|
+
* ```
|
187
|
+
*
|
188
|
+
* The callbacks will be inherited via the prototype chain:
|
189
|
+
*
|
190
|
+
* ```js
|
191
|
+
* class MyAsyncCallbacks {
|
192
|
+
* init(asyncId, type, triggerAsyncId, resource) { }
|
193
|
+
* destroy(asyncId) {}
|
194
|
+
* }
|
195
|
+
*
|
196
|
+
* class MyAddedCallbacks extends MyAsyncCallbacks {
|
197
|
+
* before(asyncId) { }
|
198
|
+
* after(asyncId) { }
|
199
|
+
* }
|
200
|
+
*
|
201
|
+
* const asyncHook = async_hooks.createHook(new MyAddedCallbacks());
|
202
|
+
* ```
|
203
|
+
*
|
204
|
+
* Because promises are asynchronous resources whose lifecycle is tracked
|
205
|
+
* via the async hooks mechanism, the `init()`, `before()`, `after()`, and`destroy()` callbacks _must not_ be async functions that return promises.
|
206
|
+
* @since v8.1.0
|
207
|
+
* @param callbacks The `Hook Callbacks` to register
|
208
|
+
* @return Instance used for disabling and enabling hooks
|
209
|
+
*/
|
210
|
+
function createHook(callbacks: HookCallbacks): AsyncHook;
|
211
|
+
interface AsyncResourceOptions {
|
212
|
+
/**
|
213
|
+
* The ID of the execution context that created this async event.
|
214
|
+
* @default executionAsyncId()
|
215
|
+
*/
|
216
|
+
triggerAsyncId?: number | undefined;
|
217
|
+
/**
|
218
|
+
* Disables automatic `emitDestroy` when the object is garbage collected.
|
219
|
+
* This usually does not need to be set (even if `emitDestroy` is called
|
220
|
+
* manually), unless the resource's `asyncId` is retrieved and the
|
221
|
+
* sensitive API's `emitDestroy` is called with it.
|
222
|
+
* @default false
|
223
|
+
*/
|
224
|
+
requireManualDestroy?: boolean | undefined;
|
225
|
+
}
|
226
|
+
/**
|
227
|
+
* The class `AsyncResource` is designed to be extended by the embedder's async
|
228
|
+
* resources. Using this, users can easily trigger the lifetime events of their
|
229
|
+
* own resources.
|
230
|
+
*
|
231
|
+
* The `init` hook will trigger when an `AsyncResource` is instantiated.
|
232
|
+
*
|
233
|
+
* The following is an overview of the `AsyncResource` API.
|
234
|
+
*
|
235
|
+
* ```js
|
236
|
+
* import { AsyncResource, executionAsyncId } from 'node:async_hooks';
|
237
|
+
*
|
238
|
+
* // AsyncResource() is meant to be extended. Instantiating a
|
239
|
+
* // new AsyncResource() also triggers init. If triggerAsyncId is omitted then
|
240
|
+
* // async_hook.executionAsyncId() is used.
|
241
|
+
* const asyncResource = new AsyncResource(
|
242
|
+
* type, { triggerAsyncId: executionAsyncId(), requireManualDestroy: false },
|
243
|
+
* );
|
244
|
+
*
|
245
|
+
* // Run a function in the execution context of the resource. This will
|
246
|
+
* // * establish the context of the resource
|
247
|
+
* // * trigger the AsyncHooks before callbacks
|
248
|
+
* // * call the provided function `fn` with the supplied arguments
|
249
|
+
* // * trigger the AsyncHooks after callbacks
|
250
|
+
* // * restore the original execution context
|
251
|
+
* asyncResource.runInAsyncScope(fn, thisArg, ...args);
|
252
|
+
*
|
253
|
+
* // Call AsyncHooks destroy callbacks.
|
254
|
+
* asyncResource.emitDestroy();
|
255
|
+
*
|
256
|
+
* // Return the unique ID assigned to the AsyncResource instance.
|
257
|
+
* asyncResource.asyncId();
|
258
|
+
*
|
259
|
+
* // Return the trigger ID for the AsyncResource instance.
|
260
|
+
* asyncResource.triggerAsyncId();
|
261
|
+
* ```
|
262
|
+
*/
|
263
|
+
class AsyncResource {
|
264
|
+
/**
|
265
|
+
* AsyncResource() is meant to be extended. Instantiating a
|
266
|
+
* new AsyncResource() also triggers init. If triggerAsyncId is omitted then
|
267
|
+
* async_hook.executionAsyncId() is used.
|
268
|
+
* @param type The type of async event.
|
269
|
+
* @param triggerAsyncId The ID of the execution context that created
|
270
|
+
* this async event (default: `executionAsyncId()`), or an
|
271
|
+
* AsyncResourceOptions object (since v9.3.0)
|
272
|
+
*/
|
273
|
+
constructor(type: string, triggerAsyncId?: number | AsyncResourceOptions);
|
274
|
+
/**
|
275
|
+
* Binds the given function to the current execution context.
|
276
|
+
* @since v14.8.0, v12.19.0
|
277
|
+
* @param fn The function to bind to the current execution context.
|
278
|
+
* @param type An optional name to associate with the underlying `AsyncResource`.
|
279
|
+
*/
|
280
|
+
static bind<Func extends (this: ThisArg, ...args: any[]) => any, ThisArg>(
|
281
|
+
fn: Func,
|
282
|
+
type?: string,
|
283
|
+
thisArg?: ThisArg,
|
284
|
+
): Func;
|
285
|
+
/**
|
286
|
+
* Binds the given function to execute to this `AsyncResource`'s scope.
|
287
|
+
* @since v14.8.0, v12.19.0
|
288
|
+
* @param fn The function to bind to the current `AsyncResource`.
|
289
|
+
*/
|
290
|
+
bind<Func extends (...args: any[]) => any>(fn: Func): Func;
|
291
|
+
/**
|
292
|
+
* Call the provided function with the provided arguments in the execution context
|
293
|
+
* of the async resource. This will establish the context, trigger the AsyncHooks
|
294
|
+
* before callbacks, call the function, trigger the AsyncHooks after callbacks, and
|
295
|
+
* then restore the original execution context.
|
296
|
+
* @since v9.6.0
|
297
|
+
* @param fn The function to call in the execution context of this async resource.
|
298
|
+
* @param thisArg The receiver to be used for the function call.
|
299
|
+
* @param args Optional arguments to pass to the function.
|
300
|
+
*/
|
301
|
+
runInAsyncScope<This, Result>(
|
302
|
+
fn: (this: This, ...args: any[]) => Result,
|
303
|
+
thisArg?: This,
|
304
|
+
...args: any[]
|
305
|
+
): Result;
|
306
|
+
/**
|
307
|
+
* Call all `destroy` hooks. This should only ever be called once. An error will
|
308
|
+
* be thrown if it is called more than once. This **must** be manually called. If
|
309
|
+
* the resource is left to be collected by the GC then the `destroy` hooks will
|
310
|
+
* never be called.
|
311
|
+
* @return A reference to `asyncResource`.
|
312
|
+
*/
|
313
|
+
emitDestroy(): this;
|
314
|
+
/**
|
315
|
+
* @return The unique `asyncId` assigned to the resource.
|
316
|
+
*/
|
317
|
+
asyncId(): number;
|
318
|
+
/**
|
319
|
+
* @return The same `triggerAsyncId` that is passed to the `AsyncResource` constructor.
|
320
|
+
*/
|
321
|
+
triggerAsyncId(): number;
|
322
|
+
}
|
323
|
+
/**
|
324
|
+
* This class creates stores that stay coherent through asynchronous operations.
|
325
|
+
*
|
326
|
+
* While you can create your own implementation on top of the `node:async_hooks` module, `AsyncLocalStorage` should be preferred as it is a performant and memory
|
327
|
+
* safe implementation that involves significant optimizations that are non-obvious
|
328
|
+
* to implement.
|
329
|
+
*
|
330
|
+
* The following example uses `AsyncLocalStorage` to build a simple logger
|
331
|
+
* that assigns IDs to incoming HTTP requests and includes them in messages
|
332
|
+
* logged within each request.
|
333
|
+
*
|
334
|
+
* ```js
|
335
|
+
* import http from 'node:http';
|
336
|
+
* import { AsyncLocalStorage } from 'node:async_hooks';
|
337
|
+
*
|
338
|
+
* const asyncLocalStorage = new AsyncLocalStorage();
|
339
|
+
*
|
340
|
+
* function logWithId(msg) {
|
341
|
+
* const id = asyncLocalStorage.getStore();
|
342
|
+
* console.log(`${id !== undefined ? id : '-'}:`, msg);
|
343
|
+
* }
|
344
|
+
*
|
345
|
+
* let idSeq = 0;
|
346
|
+
* http.createServer((req, res) => {
|
347
|
+
* asyncLocalStorage.run(idSeq++, () => {
|
348
|
+
* logWithId('start');
|
349
|
+
* // Imagine any chain of async operations here
|
350
|
+
* setImmediate(() => {
|
351
|
+
* logWithId('finish');
|
352
|
+
* res.end();
|
353
|
+
* });
|
354
|
+
* });
|
355
|
+
* }).listen(8080);
|
356
|
+
*
|
357
|
+
* http.get('http://localhost:8080');
|
358
|
+
* http.get('http://localhost:8080');
|
359
|
+
* // Prints:
|
360
|
+
* // 0: start
|
361
|
+
* // 1: start
|
362
|
+
* // 0: finish
|
363
|
+
* // 1: finish
|
364
|
+
* ```
|
365
|
+
*
|
366
|
+
* Each instance of `AsyncLocalStorage` maintains an independent storage context.
|
367
|
+
* Multiple instances can safely exist simultaneously without risk of interfering
|
368
|
+
* with each other's data.
|
369
|
+
* @since v13.10.0, v12.17.0
|
370
|
+
*/
|
371
|
+
class AsyncLocalStorage<T> {
|
372
|
+
/**
|
373
|
+
* Binds the given function to the current execution context.
|
374
|
+
* @since v19.8.0
|
375
|
+
* @experimental
|
376
|
+
* @param fn The function to bind to the current execution context.
|
377
|
+
* @return A new function that calls `fn` within the captured execution context.
|
378
|
+
*/
|
379
|
+
static bind<Func extends (...args: any[]) => any>(fn: Func): Func;
|
380
|
+
/**
|
381
|
+
* Captures the current execution context and returns a function that accepts a
|
382
|
+
* function as an argument. Whenever the returned function is called, it
|
383
|
+
* calls the function passed to it within the captured context.
|
384
|
+
*
|
385
|
+
* ```js
|
386
|
+
* const asyncLocalStorage = new AsyncLocalStorage();
|
387
|
+
* const runInAsyncScope = asyncLocalStorage.run(123, () => AsyncLocalStorage.snapshot());
|
388
|
+
* const result = asyncLocalStorage.run(321, () => runInAsyncScope(() => asyncLocalStorage.getStore()));
|
389
|
+
* console.log(result); // returns 123
|
390
|
+
* ```
|
391
|
+
*
|
392
|
+
* AsyncLocalStorage.snapshot() can replace the use of AsyncResource for simple
|
393
|
+
* async context tracking purposes, for example:
|
394
|
+
*
|
395
|
+
* ```js
|
396
|
+
* class Foo {
|
397
|
+
* #runInAsyncScope = AsyncLocalStorage.snapshot();
|
398
|
+
*
|
399
|
+
* get() { return this.#runInAsyncScope(() => asyncLocalStorage.getStore()); }
|
400
|
+
* }
|
401
|
+
*
|
402
|
+
* const foo = asyncLocalStorage.run(123, () => new Foo());
|
403
|
+
* console.log(asyncLocalStorage.run(321, () => foo.get())); // returns 123
|
404
|
+
* ```
|
405
|
+
* @since v19.8.0
|
406
|
+
* @experimental
|
407
|
+
* @return A new function with the signature `(fn: (...args) : R, ...args) : R`.
|
408
|
+
*/
|
409
|
+
static snapshot(): <R, TArgs extends any[]>(fn: (...args: TArgs) => R, ...args: TArgs) => R;
|
410
|
+
/**
|
411
|
+
* Disables the instance of `AsyncLocalStorage`. All subsequent calls
|
412
|
+
* to `asyncLocalStorage.getStore()` will return `undefined` until `asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()` is called again.
|
413
|
+
*
|
414
|
+
* When calling `asyncLocalStorage.disable()`, all current contexts linked to the
|
415
|
+
* instance will be exited.
|
416
|
+
*
|
417
|
+
* Calling `asyncLocalStorage.disable()` is required before the `asyncLocalStorage` can be garbage collected. This does not apply to stores
|
418
|
+
* provided by the `asyncLocalStorage`, as those objects are garbage collected
|
419
|
+
* along with the corresponding async resources.
|
420
|
+
*
|
421
|
+
* Use this method when the `asyncLocalStorage` is not in use anymore
|
422
|
+
* in the current process.
|
423
|
+
* @since v13.10.0, v12.17.0
|
424
|
+
* @experimental
|
425
|
+
*/
|
426
|
+
disable(): void;
|
427
|
+
/**
|
428
|
+
* Returns the current store.
|
429
|
+
* If called outside of an asynchronous context initialized by
|
430
|
+
* calling `asyncLocalStorage.run()` or `asyncLocalStorage.enterWith()`, it
|
431
|
+
* returns `undefined`.
|
432
|
+
* @since v13.10.0, v12.17.0
|
433
|
+
*/
|
434
|
+
getStore(): T | undefined;
|
435
|
+
/**
|
436
|
+
* Runs a function synchronously within a context and returns its
|
437
|
+
* return value. The store is not accessible outside of the callback function.
|
438
|
+
* The store is accessible to any asynchronous operations created within the
|
439
|
+
* callback.
|
440
|
+
*
|
441
|
+
* The optional `args` are passed to the callback function.
|
442
|
+
*
|
443
|
+
* If the callback function throws an error, the error is thrown by `run()` too.
|
444
|
+
* The stacktrace is not impacted by this call and the context is exited.
|
445
|
+
*
|
446
|
+
* Example:
|
447
|
+
*
|
448
|
+
* ```js
|
449
|
+
* const store = { id: 2 };
|
450
|
+
* try {
|
451
|
+
* asyncLocalStorage.run(store, () => {
|
452
|
+
* asyncLocalStorage.getStore(); // Returns the store object
|
453
|
+
* setTimeout(() => {
|
454
|
+
* asyncLocalStorage.getStore(); // Returns the store object
|
455
|
+
* }, 200);
|
456
|
+
* throw new Error();
|
457
|
+
* });
|
458
|
+
* } catch (e) {
|
459
|
+
* asyncLocalStorage.getStore(); // Returns undefined
|
460
|
+
* // The error will be caught here
|
461
|
+
* }
|
462
|
+
* ```
|
463
|
+
* @since v13.10.0, v12.17.0
|
464
|
+
*/
|
465
|
+
run<R>(store: T, callback: () => R): R;
|
466
|
+
run<R, TArgs extends any[]>(store: T, callback: (...args: TArgs) => R, ...args: TArgs): R;
|
467
|
+
/**
|
468
|
+
* Runs a function synchronously outside of a context and returns its
|
469
|
+
* return value. The store is not accessible within the callback function or
|
470
|
+
* the asynchronous operations created within the callback. Any `getStore()` call done within the callback function will always return `undefined`.
|
471
|
+
*
|
472
|
+
* The optional `args` are passed to the callback function.
|
473
|
+
*
|
474
|
+
* If the callback function throws an error, the error is thrown by `exit()` too.
|
475
|
+
* The stacktrace is not impacted by this call and the context is re-entered.
|
476
|
+
*
|
477
|
+
* Example:
|
478
|
+
*
|
479
|
+
* ```js
|
480
|
+
* // Within a call to run
|
481
|
+
* try {
|
482
|
+
* asyncLocalStorage.getStore(); // Returns the store object or value
|
483
|
+
* asyncLocalStorage.exit(() => {
|
484
|
+
* asyncLocalStorage.getStore(); // Returns undefined
|
485
|
+
* throw new Error();
|
486
|
+
* });
|
487
|
+
* } catch (e) {
|
488
|
+
* asyncLocalStorage.getStore(); // Returns the same object or value
|
489
|
+
* // The error will be caught here
|
490
|
+
* }
|
491
|
+
* ```
|
492
|
+
* @since v13.10.0, v12.17.0
|
493
|
+
* @experimental
|
494
|
+
*/
|
495
|
+
exit<R, TArgs extends any[]>(callback: (...args: TArgs) => R, ...args: TArgs): R;
|
496
|
+
/**
|
497
|
+
* Transitions into the context for the remainder of the current
|
498
|
+
* synchronous execution and then persists the store through any following
|
499
|
+
* asynchronous calls.
|
500
|
+
*
|
501
|
+
* Example:
|
502
|
+
*
|
503
|
+
* ```js
|
504
|
+
* const store = { id: 1 };
|
505
|
+
* // Replaces previous store with the given store object
|
506
|
+
* asyncLocalStorage.enterWith(store);
|
507
|
+
* asyncLocalStorage.getStore(); // Returns the store object
|
508
|
+
* someAsyncOperation(() => {
|
509
|
+
* asyncLocalStorage.getStore(); // Returns the same object
|
510
|
+
* });
|
511
|
+
* ```
|
512
|
+
*
|
513
|
+
* This transition will continue for the _entire_ synchronous execution.
|
514
|
+
* This means that if, for example, the context is entered within an event
|
515
|
+
* handler subsequent event handlers will also run within that context unless
|
516
|
+
* specifically bound to another context with an `AsyncResource`. That is why `run()` should be preferred over `enterWith()` unless there are strong reasons
|
517
|
+
* to use the latter method.
|
518
|
+
*
|
519
|
+
* ```js
|
520
|
+
* const store = { id: 1 };
|
521
|
+
*
|
522
|
+
* emitter.on('my-event', () => {
|
523
|
+
* asyncLocalStorage.enterWith(store);
|
524
|
+
* });
|
525
|
+
* emitter.on('my-event', () => {
|
526
|
+
* asyncLocalStorage.getStore(); // Returns the same object
|
527
|
+
* });
|
528
|
+
*
|
529
|
+
* asyncLocalStorage.getStore(); // Returns undefined
|
530
|
+
* emitter.emit('my-event');
|
531
|
+
* asyncLocalStorage.getStore(); // Returns the same object
|
532
|
+
* ```
|
533
|
+
* @since v13.11.0, v12.17.0
|
534
|
+
* @experimental
|
535
|
+
*/
|
536
|
+
enterWith(store: T): void;
|
537
|
+
}
|
538
|
+
}
|
539
|
+
declare module "node:async_hooks" {
|
540
|
+
export * from "async_hooks";
|
541
|
+
}
|