alicezetion 1.9.7 → 1.9.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. package/.cache/replit/modules/nodejs-20.res +1 -0
  2. package/.cache/replit/modules/replit.res +1 -0
  3. package/.cache/typescript/5.4/node_modules/.package-lock.json +137 -0
  4. package/.cache/typescript/5.4/node_modules/@types/bluebird/LICENSE +21 -0
  5. package/.cache/typescript/5.4/node_modules/@types/bluebird/README.md +15 -0
  6. package/.cache/typescript/5.4/node_modules/@types/bluebird/index.d.ts +1365 -0
  7. package/.cache/typescript/5.4/node_modules/@types/bluebird/package.json +25 -0
  8. package/.cache/typescript/5.4/node_modules/@types/caseless/LICENSE +21 -0
  9. package/.cache/typescript/5.4/node_modules/@types/caseless/README.md +48 -0
  10. package/.cache/typescript/5.4/node_modules/@types/caseless/index.d.ts +29 -0
  11. package/.cache/typescript/5.4/node_modules/@types/caseless/package.json +35 -0
  12. package/.cache/typescript/5.4/node_modules/@types/cheerio/LICENSE +21 -0
  13. package/.cache/typescript/5.4/node_modules/@types/cheerio/README.md +15 -0
  14. package/.cache/typescript/5.4/node_modules/@types/cheerio/index.d.ts +318 -0
  15. package/.cache/typescript/5.4/node_modules/@types/cheerio/package.json +71 -0
  16. package/.cache/typescript/5.4/node_modules/@types/node/LICENSE +21 -0
  17. package/.cache/typescript/5.4/node_modules/@types/node/README.md +15 -0
  18. package/.cache/typescript/5.4/node_modules/@types/node/assert/strict.d.ts +8 -0
  19. package/.cache/typescript/5.4/node_modules/@types/node/assert.d.ts +1040 -0
  20. package/.cache/typescript/5.4/node_modules/@types/node/async_hooks.d.ts +541 -0
  21. package/.cache/typescript/5.4/node_modules/@types/node/buffer.d.ts +2363 -0
  22. package/.cache/typescript/5.4/node_modules/@types/node/child_process.d.ts +1544 -0
  23. package/.cache/typescript/5.4/node_modules/@types/node/cluster.d.ts +578 -0
  24. package/.cache/typescript/5.4/node_modules/@types/node/console.d.ts +452 -0
  25. package/.cache/typescript/5.4/node_modules/@types/node/constants.d.ts +19 -0
  26. package/.cache/typescript/5.4/node_modules/@types/node/crypto.d.ts +4523 -0
  27. package/.cache/typescript/5.4/node_modules/@types/node/dgram.d.ts +596 -0
  28. package/.cache/typescript/5.4/node_modules/@types/node/diagnostics_channel.d.ts +554 -0
  29. package/.cache/typescript/5.4/node_modules/@types/node/dns/promises.d.ts +476 -0
  30. package/.cache/typescript/5.4/node_modules/@types/node/dns.d.ts +864 -0
  31. package/.cache/typescript/5.4/node_modules/@types/node/dom-events.d.ts +124 -0
  32. package/.cache/typescript/5.4/node_modules/@types/node/domain.d.ts +170 -0
  33. package/.cache/typescript/5.4/node_modules/@types/node/events.d.ts +931 -0
  34. package/.cache/typescript/5.4/node_modules/@types/node/fs/promises.d.ts +1245 -0
  35. package/.cache/typescript/5.4/node_modules/@types/node/fs.d.ts +4317 -0
  36. package/.cache/typescript/5.4/node_modules/@types/node/globals.d.ts +412 -0
  37. package/.cache/typescript/5.4/node_modules/@types/node/globals.global.d.ts +1 -0
  38. package/.cache/typescript/5.4/node_modules/@types/node/http.d.ts +1908 -0
  39. package/.cache/typescript/5.4/node_modules/@types/node/http2.d.ts +2418 -0
  40. package/.cache/typescript/5.4/node_modules/@types/node/https.d.ts +550 -0
  41. package/.cache/typescript/5.4/node_modules/@types/node/index.d.ts +89 -0
  42. package/.cache/typescript/5.4/node_modules/@types/node/inspector.d.ts +2746 -0
  43. package/.cache/typescript/5.4/node_modules/@types/node/module.d.ts +315 -0
  44. package/.cache/typescript/5.4/node_modules/@types/node/net.d.ts +999 -0
  45. package/.cache/typescript/5.4/node_modules/@types/node/os.d.ts +495 -0
  46. package/.cache/typescript/5.4/node_modules/@types/node/package.json +217 -0
  47. package/.cache/typescript/5.4/node_modules/@types/node/path.d.ts +191 -0
  48. package/.cache/typescript/5.4/node_modules/@types/node/perf_hooks.d.ts +905 -0
  49. package/.cache/typescript/5.4/node_modules/@types/node/process.d.ts +1754 -0
  50. package/.cache/typescript/5.4/node_modules/@types/node/punycode.d.ts +117 -0
  51. package/.cache/typescript/5.4/node_modules/@types/node/querystring.d.ts +153 -0
  52. package/.cache/typescript/5.4/node_modules/@types/node/readline/promises.d.ts +150 -0
  53. package/.cache/typescript/5.4/node_modules/@types/node/readline.d.ts +540 -0
  54. package/.cache/typescript/5.4/node_modules/@types/node/repl.d.ts +430 -0
  55. package/.cache/typescript/5.4/node_modules/@types/node/sea.d.ts +153 -0
  56. package/.cache/typescript/5.4/node_modules/@types/node/stream/consumers.d.ts +12 -0
  57. package/.cache/typescript/5.4/node_modules/@types/node/stream/promises.d.ts +83 -0
  58. package/.cache/typescript/5.4/node_modules/@types/node/stream/web.d.ts +367 -0
  59. package/.cache/typescript/5.4/node_modules/@types/node/stream.d.ts +1707 -0
  60. package/.cache/typescript/5.4/node_modules/@types/node/string_decoder.d.ts +67 -0
  61. package/.cache/typescript/5.4/node_modules/@types/node/test.d.ts +1718 -0
  62. package/.cache/typescript/5.4/node_modules/@types/node/timers/promises.d.ts +97 -0
  63. package/.cache/typescript/5.4/node_modules/@types/node/timers.d.ts +240 -0
  64. package/.cache/typescript/5.4/node_modules/@types/node/tls.d.ts +1217 -0
  65. package/.cache/typescript/5.4/node_modules/@types/node/trace_events.d.ts +197 -0
  66. package/.cache/typescript/5.4/node_modules/@types/node/tty.d.ts +208 -0
  67. package/.cache/typescript/5.4/node_modules/@types/node/url.d.ts +952 -0
  68. package/.cache/typescript/5.4/node_modules/@types/node/util.d.ts +2292 -0
  69. package/.cache/typescript/5.4/node_modules/@types/node/v8.d.ts +808 -0
  70. package/.cache/typescript/5.4/node_modules/@types/node/vm.d.ts +924 -0
  71. package/.cache/typescript/5.4/node_modules/@types/node/wasi.d.ts +181 -0
  72. package/.cache/typescript/5.4/node_modules/@types/node/worker_threads.d.ts +694 -0
  73. package/.cache/typescript/5.4/node_modules/@types/node/zlib.d.ts +530 -0
  74. package/.cache/typescript/5.4/node_modules/@types/npmlog/LICENSE +21 -0
  75. package/.cache/typescript/5.4/node_modules/@types/npmlog/README.md +15 -0
  76. package/.cache/typescript/5.4/node_modules/@types/npmlog/index.d.ts +84 -0
  77. package/.cache/typescript/5.4/node_modules/@types/npmlog/package.json +32 -0
  78. package/.cache/typescript/5.4/node_modules/@types/request/LICENSE +21 -0
  79. package/.cache/typescript/5.4/node_modules/@types/request/README.md +15 -0
  80. package/.cache/typescript/5.4/node_modules/@types/request/index.d.ts +395 -0
  81. package/.cache/typescript/5.4/node_modules/@types/request/package.json +70 -0
  82. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/LICENSE +21 -0
  83. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/README.md +15 -0
  84. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/index.d.ts +321 -0
  85. package/.cache/typescript/5.4/node_modules/@types/tough-cookie/package.json +35 -0
  86. package/.cache/typescript/5.4/node_modules/asynckit/LICENSE +21 -0
  87. package/.cache/typescript/5.4/node_modules/asynckit/README.md +233 -0
  88. package/.cache/typescript/5.4/node_modules/asynckit/bench.js +76 -0
  89. package/.cache/typescript/5.4/node_modules/asynckit/index.js +6 -0
  90. package/.cache/typescript/5.4/node_modules/asynckit/lib/abort.js +29 -0
  91. package/.cache/typescript/5.4/node_modules/asynckit/lib/async.js +34 -0
  92. package/.cache/typescript/5.4/node_modules/asynckit/lib/defer.js +26 -0
  93. package/.cache/typescript/5.4/node_modules/asynckit/lib/iterate.js +75 -0
  94. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_asynckit.js +91 -0
  95. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_parallel.js +25 -0
  96. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_serial.js +25 -0
  97. package/.cache/typescript/5.4/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
  98. package/.cache/typescript/5.4/node_modules/asynckit/lib/state.js +37 -0
  99. package/.cache/typescript/5.4/node_modules/asynckit/lib/streamify.js +141 -0
  100. package/.cache/typescript/5.4/node_modules/asynckit/lib/terminator.js +29 -0
  101. package/.cache/typescript/5.4/node_modules/asynckit/package.json +63 -0
  102. package/.cache/typescript/5.4/node_modules/asynckit/parallel.js +43 -0
  103. package/.cache/typescript/5.4/node_modules/asynckit/serial.js +17 -0
  104. package/.cache/typescript/5.4/node_modules/asynckit/serialOrdered.js +75 -0
  105. package/.cache/typescript/5.4/node_modules/asynckit/stream.js +21 -0
  106. package/.cache/typescript/5.4/node_modules/combined-stream/License +19 -0
  107. package/.cache/typescript/5.4/node_modules/combined-stream/Readme.md +138 -0
  108. package/.cache/typescript/5.4/node_modules/combined-stream/lib/combined_stream.js +208 -0
  109. package/.cache/typescript/5.4/node_modules/combined-stream/package.json +25 -0
  110. package/.cache/typescript/5.4/node_modules/combined-stream/yarn.lock +17 -0
  111. package/.cache/typescript/5.4/node_modules/delayed-stream/License +19 -0
  112. package/.cache/typescript/5.4/node_modules/delayed-stream/Makefile +7 -0
  113. package/.cache/typescript/5.4/node_modules/delayed-stream/Readme.md +141 -0
  114. package/.cache/typescript/5.4/node_modules/delayed-stream/lib/delayed_stream.js +107 -0
  115. package/.cache/typescript/5.4/node_modules/delayed-stream/package.json +27 -0
  116. package/.cache/typescript/5.4/node_modules/form-data/License +19 -0
  117. package/.cache/typescript/5.4/node_modules/form-data/README.md +350 -0
  118. package/.cache/typescript/5.4/node_modules/form-data/README.md.bak +350 -0
  119. package/.cache/typescript/5.4/node_modules/form-data/index.d.ts +51 -0
  120. package/.cache/typescript/5.4/node_modules/form-data/lib/browser.js +2 -0
  121. package/.cache/typescript/5.4/node_modules/form-data/lib/form_data.js +483 -0
  122. package/.cache/typescript/5.4/node_modules/form-data/lib/populate.js +10 -0
  123. package/.cache/typescript/5.4/node_modules/form-data/package.json +68 -0
  124. package/.cache/typescript/5.4/node_modules/mime-db/HISTORY.md +507 -0
  125. package/.cache/typescript/5.4/node_modules/mime-db/LICENSE +23 -0
  126. package/.cache/typescript/5.4/node_modules/mime-db/README.md +100 -0
  127. package/.cache/typescript/5.4/node_modules/mime-db/db.json +8519 -0
  128. package/.cache/typescript/5.4/node_modules/mime-db/index.js +12 -0
  129. package/.cache/typescript/5.4/node_modules/mime-db/package.json +60 -0
  130. package/.cache/typescript/5.4/node_modules/mime-types/HISTORY.md +397 -0
  131. package/.cache/typescript/5.4/node_modules/mime-types/LICENSE +23 -0
  132. package/.cache/typescript/5.4/node_modules/mime-types/README.md +113 -0
  133. package/.cache/typescript/5.4/node_modules/mime-types/index.js +188 -0
  134. package/.cache/typescript/5.4/node_modules/mime-types/package.json +44 -0
  135. package/.cache/typescript/5.4/node_modules/types-registry/README.md +2 -0
  136. package/.cache/typescript/5.4/node_modules/types-registry/index.json +1 -0
  137. package/.cache/typescript/5.4/node_modules/types-registry/package.json +20 -0
  138. package/.cache/typescript/5.4/node_modules/undici-types/README.md +6 -0
  139. package/.cache/typescript/5.4/node_modules/undici-types/agent.d.ts +31 -0
  140. package/.cache/typescript/5.4/node_modules/undici-types/api.d.ts +43 -0
  141. package/.cache/typescript/5.4/node_modules/undici-types/balanced-pool.d.ts +18 -0
  142. package/.cache/typescript/5.4/node_modules/undici-types/cache.d.ts +36 -0
  143. package/.cache/typescript/5.4/node_modules/undici-types/client.d.ts +97 -0
  144. package/.cache/typescript/5.4/node_modules/undici-types/connector.d.ts +34 -0
  145. package/.cache/typescript/5.4/node_modules/undici-types/content-type.d.ts +21 -0
  146. package/.cache/typescript/5.4/node_modules/undici-types/cookies.d.ts +28 -0
  147. package/.cache/typescript/5.4/node_modules/undici-types/diagnostics-channel.d.ts +67 -0
  148. package/.cache/typescript/5.4/node_modules/undici-types/dispatcher.d.ts +241 -0
  149. package/.cache/typescript/5.4/node_modules/undici-types/errors.d.ts +128 -0
  150. package/.cache/typescript/5.4/node_modules/undici-types/fetch.d.ts +209 -0
  151. package/.cache/typescript/5.4/node_modules/undici-types/file.d.ts +39 -0
  152. package/.cache/typescript/5.4/node_modules/undici-types/filereader.d.ts +54 -0
  153. package/.cache/typescript/5.4/node_modules/undici-types/formdata.d.ts +108 -0
  154. package/.cache/typescript/5.4/node_modules/undici-types/global-dispatcher.d.ts +9 -0
  155. package/.cache/typescript/5.4/node_modules/undici-types/global-origin.d.ts +7 -0
  156. package/.cache/typescript/5.4/node_modules/undici-types/handlers.d.ts +9 -0
  157. package/.cache/typescript/5.4/node_modules/undici-types/header.d.ts +4 -0
  158. package/.cache/typescript/5.4/node_modules/undici-types/index.d.ts +63 -0
  159. package/.cache/typescript/5.4/node_modules/undici-types/interceptors.d.ts +5 -0
  160. package/.cache/typescript/5.4/node_modules/undici-types/mock-agent.d.ts +50 -0
  161. package/.cache/typescript/5.4/node_modules/undici-types/mock-client.d.ts +25 -0
  162. package/.cache/typescript/5.4/node_modules/undici-types/mock-errors.d.ts +12 -0
  163. package/.cache/typescript/5.4/node_modules/undici-types/mock-interceptor.d.ts +93 -0
  164. package/.cache/typescript/5.4/node_modules/undici-types/mock-pool.d.ts +25 -0
  165. package/.cache/typescript/5.4/node_modules/undici-types/package.json +55 -0
  166. package/.cache/typescript/5.4/node_modules/undici-types/patch.d.ts +71 -0
  167. package/.cache/typescript/5.4/node_modules/undici-types/pool-stats.d.ts +19 -0
  168. package/.cache/typescript/5.4/node_modules/undici-types/pool.d.ts +28 -0
  169. package/.cache/typescript/5.4/node_modules/undici-types/proxy-agent.d.ts +30 -0
  170. package/.cache/typescript/5.4/node_modules/undici-types/readable.d.ts +61 -0
  171. package/.cache/typescript/5.4/node_modules/undici-types/webidl.d.ts +220 -0
  172. package/.cache/typescript/5.4/node_modules/undici-types/websocket.d.ts +131 -0
  173. package/.cache/typescript/5.4/package-lock.json +149 -0
  174. package/.cache/typescript/5.4/package.json +1 -0
  175. package/index.js +291 -71
  176. package/leiamnash/addExternalModule.js +15 -0
  177. package/leiamnash/addUserToGroup.js +77 -0
  178. package/leiamnash/changeAdminStatus.js +47 -0
  179. package/leiamnash/changeArchivedStatus.js +41 -0
  180. package/{src → leiamnash}/changeAvatar.js +3 -2
  181. package/leiamnash/changeBio.js +64 -0
  182. package/leiamnash/changeBlockedStatus.js +36 -0
  183. package/leiamnash/changeGroupImage.js +105 -0
  184. package/leiamnash/changeNickname.js +43 -0
  185. package/leiamnash/changeThreadColor.js +61 -0
  186. package/leiamnash/changeThreadEmoji.js +41 -0
  187. package/{src → leiamnash}/chat.js +4 -29
  188. package/leiamnash/createNewGroup.js +70 -0
  189. package/leiamnash/createPoll.js +59 -0
  190. package/leiamnash/deleteMessage.js +44 -0
  191. package/leiamnash/deleteThread.js +42 -0
  192. package/leiamnash/editMessage.js +62 -0
  193. package/leiamnash/forwardAttachment.js +47 -0
  194. package/leiamnash/forwardMessage.js +0 -0
  195. package/leiamnash/getCurrentUserID.js +7 -0
  196. package/leiamnash/getEmojiUrl.js +27 -0
  197. package/leiamnash/getFriendsList.js +73 -0
  198. package/leiamnash/getInfoVideo.js +134 -0
  199. package/leiamnash/getThreadHistory.js +537 -0
  200. package/leiamnash/getThreadHistoryDeprecated.js +71 -0
  201. package/leiamnash/getThreadInfo.js +171 -0
  202. package/leiamnash/getThreadInfoDeprecated.js +56 -0
  203. package/leiamnash/getThreadList.js +213 -0
  204. package/leiamnash/getThreadListDeprecated.js +46 -0
  205. package/leiamnash/getThreadPictures.js +59 -0
  206. package/leiamnash/getUserID.js +61 -0
  207. package/leiamnash/getUserInfo.js +66 -0
  208. package/leiamnash/handleFriendRequest.js +46 -0
  209. package/leiamnash/handleMessageRequest.js +47 -0
  210. package/leiamnash/httpGet.js +47 -0
  211. package/leiamnash/httpPost.js +47 -0
  212. package/leiamnash/httpPostFormData.js +42 -0
  213. package/leiamnash/listenMqtt.js +843 -0
  214. package/leiamnash/logout.js +68 -0
  215. package/leiamnash/markAsDelivered.js +47 -0
  216. package/leiamnash/markAsRead.js +70 -0
  217. package/leiamnash/markAsReadAll.js +40 -0
  218. package/leiamnash/markAsSeen.js +48 -0
  219. package/leiamnash/muteThread.js +45 -0
  220. package/leiamnash/pinMessage.js +58 -0
  221. package/leiamnash/react.js +109 -0
  222. package/{src → leiamnash}/refreshFb_dtsg.js +1 -1
  223. package/leiamnash/removeUserFromGroup.js +45 -0
  224. package/leiamnash/resolvePhotoUrl.js +36 -0
  225. package/leiamnash/searchForThread.js +42 -0
  226. package/leiamnash/seen.js +40 -0
  227. package/leiamnash/sendMessage.js +315 -0
  228. package/leiamnash/sendTypingIndicator.js +70 -0
  229. package/leiamnash/setMessageReaction.js +103 -0
  230. package/leiamnash/setPostReaction.js +63 -0
  231. package/leiamnash/setTitle.js +70 -0
  232. package/leiamnash/threadColors.js +41 -0
  233. package/leiamnash/token.js +112 -0
  234. package/leiamnash/unfriend.js +42 -0
  235. package/leiamnash/unsendMessage.js +39 -0
  236. package/{src → leiamnash}/uploadAttachment.js +2 -1
  237. package/package.json +3 -2
  238. package/utils.js +1345 -1382
  239. package/.cache/replit/modules/nodejs-20:v32-20240401-269b323.res +0 -1
  240. package/.cache/replit/modules/replit:v8-20240329-787bc7d.res +0 -1
  241. package/.replit +0 -1
  242. package/src/addExternalModule.js +0 -19
  243. package/src/addUserToGroup.js +0 -113
  244. package/src/changeAdminStatus.js +0 -79
  245. package/src/changeArchivedStatus.js +0 -55
  246. package/src/changeBio.js +0 -77
  247. package/src/changeBlockedStatus.js +0 -47
  248. package/src/changeGroupImage.js +0 -132
  249. package/src/changeNickname.js +0 -59
  250. package/src/changeThreadColor.js +0 -65
  251. package/src/changeThreadEmoji.js +0 -55
  252. package/src/createNewGroup.js +0 -86
  253. package/src/createPoll.js +0 -71
  254. package/src/deleteMessage.js +0 -56
  255. package/src/deleteThread.js +0 -56
  256. package/src/edit.js +0 -66
  257. package/src/forwardAttachment.js +0 -60
  258. package/src/getCurrentUserID.js +0 -7
  259. package/src/getEmojiUrl.js +0 -29
  260. package/src/getFriendsList.js +0 -83
  261. package/src/getThreadHistory.js +0 -666
  262. package/src/getThreadInfo.js +0 -232
  263. package/src/getThreadList.js +0 -241
  264. package/src/getThreadPictures.js +0 -79
  265. package/src/getUserID.js +0 -66
  266. package/src/getUserInfo.js +0 -74
  267. package/src/handleFriendRequest.js +0 -61
  268. package/src/handleMessageRequest.js +0 -65
  269. package/src/httpGet.js +0 -57
  270. package/src/httpPost.js +0 -57
  271. package/src/httpPostFormData.js +0 -63
  272. package/src/listenMqtt.js +0 -854
  273. package/src/logout.js +0 -75
  274. package/src/markAsDelivered.js +0 -58
  275. package/src/markAsRead.js +0 -80
  276. package/src/markAsReadAll.js +0 -50
  277. package/src/markAsSeen.js +0 -59
  278. package/src/muteThread.js +0 -52
  279. package/src/react.js +0 -121
  280. package/src/removeUserFromGroup.js +0 -79
  281. package/src/resolvePhotoUrl.js +0 -45
  282. package/src/searchForThread.js +0 -53
  283. package/src/seen.js +0 -50
  284. package/src/sendMessage.js +0 -477
  285. package/src/sendTypingIndicator.js +0 -103
  286. package/src/setMessageReaction.js +0 -121
  287. package/src/setPostReaction.js +0 -109
  288. package/src/setTitle.js +0 -86
  289. package/src/threadColors.js +0 -131
  290. package/src/unfriend.js +0 -52
  291. package/src/unsendMessage.js +0 -49
  292. /package/{src → leiamnash}/getMessage.js +0 -0
@@ -0,0 +1,924 @@
1
+ /**
2
+ * The `node:vm` module enables compiling and running code within V8 Virtual
3
+ * Machine contexts.
4
+ *
5
+ * **The `node:vm` module is not a security**
6
+ * **mechanism. Do not use it to run untrusted code.**
7
+ *
8
+ * JavaScript code can be compiled and run immediately or
9
+ * compiled, saved, and run later.
10
+ *
11
+ * A common use case is to run the code in a different V8 Context. This means
12
+ * invoked code has a different global object than the invoking code.
13
+ *
14
+ * One can provide the context by `contextifying` an
15
+ * object. The invoked code treats any property in the context like a
16
+ * global variable. Any changes to global variables caused by the invoked
17
+ * code are reflected in the context object.
18
+ *
19
+ * ```js
20
+ * const vm = require('node:vm');
21
+ *
22
+ * const x = 1;
23
+ *
24
+ * const context = { x: 2 };
25
+ * vm.createContext(context); // Contextify the object.
26
+ *
27
+ * const code = 'x += 40; var y = 17;';
28
+ * // `x` and `y` are global variables in the context.
29
+ * // Initially, x has the value 2 because that is the value of context.x.
30
+ * vm.runInContext(code, context);
31
+ *
32
+ * console.log(context.x); // 42
33
+ * console.log(context.y); // 17
34
+ *
35
+ * console.log(x); // 1; y is not defined.
36
+ * ```
37
+ * @see [source](https://github.com/nodejs/node/blob/v20.13.1/lib/vm.js)
38
+ */
39
+ declare module "vm" {
40
+ import { ImportAttributes } from "node:module";
41
+ interface Context extends NodeJS.Dict<any> {}
42
+ interface BaseOptions {
43
+ /**
44
+ * Specifies the filename used in stack traces produced by this script.
45
+ * @default ''
46
+ */
47
+ filename?: string | undefined;
48
+ /**
49
+ * Specifies the line number offset that is displayed in stack traces produced by this script.
50
+ * @default 0
51
+ */
52
+ lineOffset?: number | undefined;
53
+ /**
54
+ * Specifies the column number offset that is displayed in stack traces produced by this script.
55
+ * @default 0
56
+ */
57
+ columnOffset?: number | undefined;
58
+ }
59
+ interface ScriptOptions extends BaseOptions {
60
+ /**
61
+ * V8's code cache data for the supplied source.
62
+ */
63
+ cachedData?: Buffer | NodeJS.ArrayBufferView | undefined;
64
+ /** @deprecated in favor of `script.createCachedData()` */
65
+ produceCachedData?: boolean | undefined;
66
+ /**
67
+ * Used to specify how the modules should be loaded during the evaluation of this script when `import()` is called. This option is
68
+ * part of the experimental modules API. We do not recommend using it in a production environment. For detailed information, see
69
+ * [Support of dynamic `import()` in compilation APIs](https://nodejs.org/docs/latest-v20.x/api/vm.html#support-of-dynamic-import-in-compilation-apis).
70
+ */
71
+ importModuleDynamically?:
72
+ | ((specifier: string, script: Script, importAttributes: ImportAttributes) => Module)
73
+ | typeof constants.USE_MAIN_CONTEXT_DEFAULT_LOADER
74
+ | undefined;
75
+ }
76
+ interface RunningScriptOptions extends BaseOptions {
77
+ /**
78
+ * When `true`, if an `Error` occurs while compiling the `code`, the line of code causing the error is attached to the stack trace.
79
+ * @default true
80
+ */
81
+ displayErrors?: boolean | undefined;
82
+ /**
83
+ * Specifies the number of milliseconds to execute code before terminating execution.
84
+ * If execution is terminated, an `Error` will be thrown. This value must be a strictly positive integer.
85
+ */
86
+ timeout?: number | undefined;
87
+ /**
88
+ * If `true`, the execution will be terminated when `SIGINT` (Ctrl+C) is received.
89
+ * Existing handlers for the event that have been attached via `process.on('SIGINT')` will be disabled during script execution, but will continue to work after that.
90
+ * If execution is terminated, an `Error` will be thrown.
91
+ * @default false
92
+ */
93
+ breakOnSigint?: boolean | undefined;
94
+ }
95
+ interface RunningScriptInNewContextOptions extends RunningScriptOptions {
96
+ /**
97
+ * Human-readable name of the newly created context.
98
+ */
99
+ contextName?: CreateContextOptions["name"];
100
+ /**
101
+ * Origin corresponding to the newly created context for display purposes. The origin should be formatted like a URL,
102
+ * but with only the scheme, host, and port (if necessary), like the value of the `url.origin` property of a `URL` object.
103
+ * Most notably, this string should omit the trailing slash, as that denotes a path.
104
+ */
105
+ contextOrigin?: CreateContextOptions["origin"];
106
+ contextCodeGeneration?: CreateContextOptions["codeGeneration"];
107
+ /**
108
+ * If set to `afterEvaluate`, microtasks will be run immediately after the script has run.
109
+ */
110
+ microtaskMode?: CreateContextOptions["microtaskMode"];
111
+ }
112
+ interface RunningCodeOptions extends RunningScriptOptions {
113
+ cachedData?: ScriptOptions["cachedData"];
114
+ importModuleDynamically?: ScriptOptions["importModuleDynamically"];
115
+ }
116
+ interface RunningCodeInNewContextOptions extends RunningScriptInNewContextOptions {
117
+ cachedData?: ScriptOptions["cachedData"];
118
+ importModuleDynamically?: ScriptOptions["importModuleDynamically"];
119
+ }
120
+ interface CompileFunctionOptions extends BaseOptions {
121
+ /**
122
+ * Provides an optional data with V8's code cache data for the supplied source.
123
+ */
124
+ cachedData?: Buffer | undefined;
125
+ /**
126
+ * Specifies whether to produce new cache data.
127
+ * @default false
128
+ */
129
+ produceCachedData?: boolean | undefined;
130
+ /**
131
+ * The sandbox/context in which the said function should be compiled in.
132
+ */
133
+ parsingContext?: Context | undefined;
134
+ /**
135
+ * An array containing a collection of context extensions (objects wrapping the current scope) to be applied while compiling
136
+ */
137
+ contextExtensions?: Object[] | undefined;
138
+ }
139
+ interface CreateContextOptions {
140
+ /**
141
+ * Human-readable name of the newly created context.
142
+ * @default 'VM Context i' Where i is an ascending numerical index of the created context.
143
+ */
144
+ name?: string | undefined;
145
+ /**
146
+ * Corresponds to the newly created context for display purposes.
147
+ * The origin should be formatted like a `URL`, but with only the scheme, host, and port (if necessary),
148
+ * like the value of the `url.origin` property of a URL object.
149
+ * Most notably, this string should omit the trailing slash, as that denotes a path.
150
+ * @default ''
151
+ */
152
+ origin?: string | undefined;
153
+ codeGeneration?:
154
+ | {
155
+ /**
156
+ * If set to false any calls to eval or function constructors (Function, GeneratorFunction, etc)
157
+ * will throw an EvalError.
158
+ * @default true
159
+ */
160
+ strings?: boolean | undefined;
161
+ /**
162
+ * If set to false any attempt to compile a WebAssembly module will throw a WebAssembly.CompileError.
163
+ * @default true
164
+ */
165
+ wasm?: boolean | undefined;
166
+ }
167
+ | undefined;
168
+ /**
169
+ * If set to `afterEvaluate`, microtasks will be run immediately after the script has run.
170
+ */
171
+ microtaskMode?: "afterEvaluate" | undefined;
172
+ }
173
+ type MeasureMemoryMode = "summary" | "detailed";
174
+ interface MeasureMemoryOptions {
175
+ /**
176
+ * @default 'summary'
177
+ */
178
+ mode?: MeasureMemoryMode | undefined;
179
+ /**
180
+ * @default 'default'
181
+ */
182
+ execution?: "default" | "eager" | undefined;
183
+ }
184
+ interface MemoryMeasurement {
185
+ total: {
186
+ jsMemoryEstimate: number;
187
+ jsMemoryRange: [number, number];
188
+ };
189
+ }
190
+ /**
191
+ * Instances of the `vm.Script` class contain precompiled scripts that can be
192
+ * executed in specific contexts.
193
+ * @since v0.3.1
194
+ */
195
+ class Script {
196
+ constructor(code: string, options?: ScriptOptions | string);
197
+ /**
198
+ * Runs the compiled code contained by the `vm.Script` object within the given `contextifiedObject` and returns the result. Running code does not have access
199
+ * to local scope.
200
+ *
201
+ * The following example compiles code that increments a global variable, sets
202
+ * the value of another global variable, then execute the code multiple times.
203
+ * The globals are contained in the `context` object.
204
+ *
205
+ * ```js
206
+ * const vm = require('node:vm');
207
+ *
208
+ * const context = {
209
+ * animal: 'cat',
210
+ * count: 2,
211
+ * };
212
+ *
213
+ * const script = new vm.Script('count += 1; name = "kitty";');
214
+ *
215
+ * vm.createContext(context);
216
+ * for (let i = 0; i < 10; ++i) {
217
+ * script.runInContext(context);
218
+ * }
219
+ *
220
+ * console.log(context);
221
+ * // Prints: { animal: 'cat', count: 12, name: 'kitty' }
222
+ * ```
223
+ *
224
+ * Using the `timeout` or `breakOnSigint` options will result in new event loops
225
+ * and corresponding threads being started, which have a non-zero performance
226
+ * overhead.
227
+ * @since v0.3.1
228
+ * @param contextifiedObject A `contextified` object as returned by the `vm.createContext()` method.
229
+ * @return the result of the very last statement executed in the script.
230
+ */
231
+ runInContext(contextifiedObject: Context, options?: RunningScriptOptions): any;
232
+ /**
233
+ * First contextifies the given `contextObject`, runs the compiled code contained
234
+ * by the `vm.Script` object within the created context, and returns the result.
235
+ * Running code does not have access to local scope.
236
+ *
237
+ * The following example compiles code that sets a global variable, then executes
238
+ * the code multiple times in different contexts. The globals are set on and
239
+ * contained within each individual `context`.
240
+ *
241
+ * ```js
242
+ * const vm = require('node:vm');
243
+ *
244
+ * const script = new vm.Script('globalVar = "set"');
245
+ *
246
+ * const contexts = [{}, {}, {}];
247
+ * contexts.forEach((context) => {
248
+ * script.runInNewContext(context);
249
+ * });
250
+ *
251
+ * console.log(contexts);
252
+ * // Prints: [{ globalVar: 'set' }, { globalVar: 'set' }, { globalVar: 'set' }]
253
+ * ```
254
+ * @since v0.3.1
255
+ * @param contextObject An object that will be `contextified`. If `undefined`, a new object will be created.
256
+ * @return the result of the very last statement executed in the script.
257
+ */
258
+ runInNewContext(contextObject?: Context, options?: RunningScriptInNewContextOptions): any;
259
+ /**
260
+ * Runs the compiled code contained by the `vm.Script` within the context of the
261
+ * current `global` object. Running code does not have access to local scope, but _does_ have access to the current `global` object.
262
+ *
263
+ * The following example compiles code that increments a `global` variable then
264
+ * executes that code multiple times:
265
+ *
266
+ * ```js
267
+ * const vm = require('node:vm');
268
+ *
269
+ * global.globalVar = 0;
270
+ *
271
+ * const script = new vm.Script('globalVar += 1', { filename: 'myfile.vm' });
272
+ *
273
+ * for (let i = 0; i < 1000; ++i) {
274
+ * script.runInThisContext();
275
+ * }
276
+ *
277
+ * console.log(globalVar);
278
+ *
279
+ * // 1000
280
+ * ```
281
+ * @since v0.3.1
282
+ * @return the result of the very last statement executed in the script.
283
+ */
284
+ runInThisContext(options?: RunningScriptOptions): any;
285
+ /**
286
+ * Creates a code cache that can be used with the `Script` constructor's `cachedData` option. Returns a `Buffer`. This method may be called at any
287
+ * time and any number of times.
288
+ *
289
+ * The code cache of the `Script` doesn't contain any JavaScript observable
290
+ * states. The code cache is safe to be saved along side the script source and
291
+ * used to construct new `Script` instances multiple times.
292
+ *
293
+ * Functions in the `Script` source can be marked as lazily compiled and they are
294
+ * not compiled at construction of the `Script`. These functions are going to be
295
+ * compiled when they are invoked the first time. The code cache serializes the
296
+ * metadata that V8 currently knows about the `Script` that it can use to speed up
297
+ * future compilations.
298
+ *
299
+ * ```js
300
+ * const script = new vm.Script(`
301
+ * function add(a, b) {
302
+ * return a + b;
303
+ * }
304
+ *
305
+ * const x = add(1, 2);
306
+ * `);
307
+ *
308
+ * const cacheWithoutAdd = script.createCachedData();
309
+ * // In `cacheWithoutAdd` the function `add()` is marked for full compilation
310
+ * // upon invocation.
311
+ *
312
+ * script.runInThisContext();
313
+ *
314
+ * const cacheWithAdd = script.createCachedData();
315
+ * // `cacheWithAdd` contains fully compiled function `add()`.
316
+ * ```
317
+ * @since v10.6.0
318
+ */
319
+ createCachedData(): Buffer;
320
+ /** @deprecated in favor of `script.createCachedData()` */
321
+ cachedDataProduced?: boolean | undefined;
322
+ /**
323
+ * When `cachedData` is supplied to create the `vm.Script`, this value will be set
324
+ * to either `true` or `false` depending on acceptance of the data by V8.
325
+ * Otherwise the value is `undefined`.
326
+ * @since v5.7.0
327
+ */
328
+ cachedDataRejected?: boolean | undefined;
329
+ cachedData?: Buffer | undefined;
330
+ /**
331
+ * When the script is compiled from a source that contains a source map magic
332
+ * comment, this property will be set to the URL of the source map.
333
+ *
334
+ * ```js
335
+ * import vm from 'node:vm';
336
+ *
337
+ * const script = new vm.Script(`
338
+ * function myFunc() {}
339
+ * //# sourceMappingURL=sourcemap.json
340
+ * `);
341
+ *
342
+ * console.log(script.sourceMapURL);
343
+ * // Prints: sourcemap.json
344
+ * ```
345
+ * @since v19.1.0, v18.13.0
346
+ */
347
+ sourceMapURL?: string | undefined;
348
+ }
349
+ /**
350
+ * If given a `contextObject`, the `vm.createContext()` method will
351
+ * [prepare that object](https://nodejs.org/docs/latest-v20.x/api/vm.html#what-does-it-mean-to-contextify-an-object)
352
+ * and return a reference to it so that it can be used in `{@link runInContext}` or
353
+ * [`script.runInContext()`](https://nodejs.org/docs/latest-v20.x/api/vm.html#scriptrunincontextcontextifiedobject-options). Inside such
354
+ * scripts, the `contextObject` will be the global object, retaining all of its
355
+ * existing properties but also having the built-in objects and functions any
356
+ * standard [global object](https://es5.github.io/#x15.1) has. Outside of scripts run by the vm module, global
357
+ * variables will remain unchanged.
358
+ *
359
+ * ```js
360
+ * const vm = require('node:vm');
361
+ *
362
+ * global.globalVar = 3;
363
+ *
364
+ * const context = { globalVar: 1 };
365
+ * vm.createContext(context);
366
+ *
367
+ * vm.runInContext('globalVar *= 2;', context);
368
+ *
369
+ * console.log(context);
370
+ * // Prints: { globalVar: 2 }
371
+ *
372
+ * console.log(global.globalVar);
373
+ * // Prints: 3
374
+ * ```
375
+ *
376
+ * If `contextObject` is omitted (or passed explicitly as `undefined`), a new,
377
+ * empty `contextified` object will be returned.
378
+ *
379
+ * The `vm.createContext()` method is primarily useful for creating a single
380
+ * context that can be used to run multiple scripts. For instance, if emulating a
381
+ * web browser, the method can be used to create a single context representing a
382
+ * window's global object, then run all `<script>` tags together within that
383
+ * context.
384
+ *
385
+ * The provided `name` and `origin` of the context are made visible through the
386
+ * Inspector API.
387
+ * @since v0.3.1
388
+ * @return contextified object.
389
+ */
390
+ function createContext(sandbox?: Context, options?: CreateContextOptions): Context;
391
+ /**
392
+ * Returns `true` if the given `object` object has been `contextified` using {@link createContext}.
393
+ * @since v0.11.7
394
+ */
395
+ function isContext(sandbox: Context): boolean;
396
+ /**
397
+ * The `vm.runInContext()` method compiles `code`, runs it within the context of
398
+ * the `contextifiedObject`, then returns the result. Running code does not have
399
+ * access to the local scope. The `contextifiedObject` object _must_ have been
400
+ * previously `contextified` using the {@link createContext} method.
401
+ *
402
+ * If `options` is a string, then it specifies the filename.
403
+ *
404
+ * The following example compiles and executes different scripts using a single `contextified` object:
405
+ *
406
+ * ```js
407
+ * const vm = require('node:vm');
408
+ *
409
+ * const contextObject = { globalVar: 1 };
410
+ * vm.createContext(contextObject);
411
+ *
412
+ * for (let i = 0; i < 10; ++i) {
413
+ * vm.runInContext('globalVar *= 2;', contextObject);
414
+ * }
415
+ * console.log(contextObject);
416
+ * // Prints: { globalVar: 1024 }
417
+ * ```
418
+ * @since v0.3.1
419
+ * @param code The JavaScript code to compile and run.
420
+ * @param contextifiedObject The `contextified` object that will be used as the `global` when the `code` is compiled and run.
421
+ * @return the result of the very last statement executed in the script.
422
+ */
423
+ function runInContext(code: string, contextifiedObject: Context, options?: RunningCodeOptions | string): any;
424
+ /**
425
+ * The `vm.runInNewContext()` first contextifies the given `contextObject` (or
426
+ * creates a new `contextObject` if passed as `undefined`), compiles the `code`,
427
+ * runs it within the created context, then returns the result. Running code
428
+ * does not have access to the local scope.
429
+ *
430
+ * If `options` is a string, then it specifies the filename.
431
+ *
432
+ * The following example compiles and executes code that increments a global
433
+ * variable and sets a new one. These globals are contained in the `contextObject`.
434
+ *
435
+ * ```js
436
+ * const vm = require('node:vm');
437
+ *
438
+ * const contextObject = {
439
+ * animal: 'cat',
440
+ * count: 2,
441
+ * };
442
+ *
443
+ * vm.runInNewContext('count += 1; name = "kitty"', contextObject);
444
+ * console.log(contextObject);
445
+ * // Prints: { animal: 'cat', count: 3, name: 'kitty' }
446
+ * ```
447
+ * @since v0.3.1
448
+ * @param code The JavaScript code to compile and run.
449
+ * @param contextObject An object that will be `contextified`. If `undefined`, a new object will be created.
450
+ * @return the result of the very last statement executed in the script.
451
+ */
452
+ function runInNewContext(
453
+ code: string,
454
+ contextObject?: Context,
455
+ options?: RunningCodeInNewContextOptions | string,
456
+ ): any;
457
+ /**
458
+ * `vm.runInThisContext()` compiles `code`, runs it within the context of the
459
+ * current `global` and returns the result. Running code does not have access to
460
+ * local scope, but does have access to the current `global` object.
461
+ *
462
+ * If `options` is a string, then it specifies the filename.
463
+ *
464
+ * The following example illustrates using both `vm.runInThisContext()` and
465
+ * the JavaScript [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) function to run the same code:
466
+ *
467
+ * ```js
468
+ * const vm = require('node:vm');
469
+ * let localVar = 'initial value';
470
+ *
471
+ * const vmResult = vm.runInThisContext('localVar = "vm";');
472
+ * console.log(`vmResult: '${vmResult}', localVar: '${localVar}'`);
473
+ * // Prints: vmResult: 'vm', localVar: 'initial value'
474
+ *
475
+ * const evalResult = eval('localVar = "eval";');
476
+ * console.log(`evalResult: '${evalResult}', localVar: '${localVar}'`);
477
+ * // Prints: evalResult: 'eval', localVar: 'eval'
478
+ * ```
479
+ *
480
+ * Because `vm.runInThisContext()` does not have access to the local scope, `localVar` is unchanged. In contrast,
481
+ * [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) _does_ have access to the
482
+ * local scope, so the value `localVar` is changed. In this way `vm.runInThisContext()` is much like an [indirect `eval()` call](https://es5.github.io/#x10.4.2), e.g.`(0,eval)('code')`.
483
+ *
484
+ * ## Example: Running an HTTP server within a VM
485
+ *
486
+ * When using either `script.runInThisContext()` or {@link runInThisContext}, the code is executed within the current V8 global
487
+ * context. The code passed to this VM context will have its own isolated scope.
488
+ *
489
+ * In order to run a simple web server using the `node:http` module the code passed
490
+ * to the context must either call `require('node:http')` on its own, or have a
491
+ * reference to the `node:http` module passed to it. For instance:
492
+ *
493
+ * ```js
494
+ * 'use strict';
495
+ * const vm = require('node:vm');
496
+ *
497
+ * const code = `
498
+ * ((require) => {
499
+ * const http = require('node:http');
500
+ *
501
+ * http.createServer((request, response) => {
502
+ * response.writeHead(200, { 'Content-Type': 'text/plain' });
503
+ * response.end('Hello World\\n');
504
+ * }).listen(8124);
505
+ *
506
+ * console.log('Server running at http://127.0.0.1:8124/');
507
+ * })`;
508
+ *
509
+ * vm.runInThisContext(code)(require);
510
+ * ```
511
+ *
512
+ * The `require()` in the above case shares the state with the context it is
513
+ * passed from. This may introduce risks when untrusted code is executed, e.g.
514
+ * altering objects in the context in unwanted ways.
515
+ * @since v0.3.1
516
+ * @param code The JavaScript code to compile and run.
517
+ * @return the result of the very last statement executed in the script.
518
+ */
519
+ function runInThisContext(code: string, options?: RunningCodeOptions | string): any;
520
+ /**
521
+ * Compiles the given code into the provided context (if no context is
522
+ * supplied, the current context is used), and returns it wrapped inside a
523
+ * function with the given `params`.
524
+ * @since v10.10.0
525
+ * @param code The body of the function to compile.
526
+ * @param params An array of strings containing all parameters for the function.
527
+ */
528
+ function compileFunction(
529
+ code: string,
530
+ params?: readonly string[],
531
+ options?: CompileFunctionOptions,
532
+ ): Function & {
533
+ cachedData?: Script["cachedData"] | undefined;
534
+ cachedDataProduced?: Script["cachedDataProduced"] | undefined;
535
+ cachedDataRejected?: Script["cachedDataRejected"] | undefined;
536
+ };
537
+ /**
538
+ * Measure the memory known to V8 and used by all contexts known to the
539
+ * current V8 isolate, or the main context.
540
+ *
541
+ * The format of the object that the returned Promise may resolve with is
542
+ * specific to the V8 engine and may change from one version of V8 to the next.
543
+ *
544
+ * The returned result is different from the statistics returned by `v8.getHeapSpaceStatistics()` in that `vm.measureMemory()` measure the
545
+ * memory reachable by each V8 specific contexts in the current instance of
546
+ * the V8 engine, while the result of `v8.getHeapSpaceStatistics()` measure
547
+ * the memory occupied by each heap space in the current V8 instance.
548
+ *
549
+ * ```js
550
+ * const vm = require('node:vm');
551
+ * // Measure the memory used by the main context.
552
+ * vm.measureMemory({ mode: 'summary' })
553
+ * // This is the same as vm.measureMemory()
554
+ * .then((result) => {
555
+ * // The current format is:
556
+ * // {
557
+ * // total: {
558
+ * // jsMemoryEstimate: 2418479, jsMemoryRange: [ 2418479, 2745799 ]
559
+ * // }
560
+ * // }
561
+ * console.log(result);
562
+ * });
563
+ *
564
+ * const context = vm.createContext({ a: 1 });
565
+ * vm.measureMemory({ mode: 'detailed', execution: 'eager' })
566
+ * .then((result) => {
567
+ * // Reference the context here so that it won't be GC'ed
568
+ * // until the measurement is complete.
569
+ * console.log(context.a);
570
+ * // {
571
+ * // total: {
572
+ * // jsMemoryEstimate: 2574732,
573
+ * // jsMemoryRange: [ 2574732, 2904372 ]
574
+ * // },
575
+ * // current: {
576
+ * // jsMemoryEstimate: 2438996,
577
+ * // jsMemoryRange: [ 2438996, 2768636 ]
578
+ * // },
579
+ * // other: [
580
+ * // {
581
+ * // jsMemoryEstimate: 135736,
582
+ * // jsMemoryRange: [ 135736, 465376 ]
583
+ * // }
584
+ * // ]
585
+ * // }
586
+ * console.log(result);
587
+ * });
588
+ * ```
589
+ * @since v13.10.0
590
+ * @experimental
591
+ */
592
+ function measureMemory(options?: MeasureMemoryOptions): Promise<MemoryMeasurement>;
593
+ interface ModuleEvaluateOptions {
594
+ timeout?: RunningScriptOptions["timeout"] | undefined;
595
+ breakOnSigint?: RunningScriptOptions["breakOnSigint"] | undefined;
596
+ }
597
+ type ModuleLinker = (
598
+ specifier: string,
599
+ referencingModule: Module,
600
+ extra: {
601
+ /** @deprecated Use `attributes` instead */
602
+ assert: ImportAttributes;
603
+ attributes: ImportAttributes;
604
+ },
605
+ ) => Module | Promise<Module>;
606
+ type ModuleStatus = "unlinked" | "linking" | "linked" | "evaluating" | "evaluated" | "errored";
607
+ /**
608
+ * This feature is only available with the `--experimental-vm-modules` command
609
+ * flag enabled.
610
+ *
611
+ * The `vm.Module` class provides a low-level interface for using
612
+ * ECMAScript modules in VM contexts. It is the counterpart of the `vm.Script` class that closely mirrors [Module Record](https://262.ecma-international.org/14.0/#sec-abstract-module-records) s as
613
+ * defined in the ECMAScript
614
+ * specification.
615
+ *
616
+ * Unlike `vm.Script` however, every `vm.Module` object is bound to a context from
617
+ * its creation. Operations on `vm.Module` objects are intrinsically asynchronous,
618
+ * in contrast with the synchronous nature of `vm.Script` objects. The use of
619
+ * 'async' functions can help with manipulating `vm.Module` objects.
620
+ *
621
+ * Using a `vm.Module` object requires three distinct steps: creation/parsing,
622
+ * linking, and evaluation. These three steps are illustrated in the following
623
+ * example.
624
+ *
625
+ * This implementation lies at a lower level than the `ECMAScript Module
626
+ * loader`. There is also no way to interact with the Loader yet, though
627
+ * support is planned.
628
+ *
629
+ * ```js
630
+ * import vm from 'node:vm';
631
+ *
632
+ * const contextifiedObject = vm.createContext({
633
+ * secret: 42,
634
+ * print: console.log,
635
+ * });
636
+ *
637
+ * // Step 1
638
+ * //
639
+ * // Create a Module by constructing a new `vm.SourceTextModule` object. This
640
+ * // parses the provided source text, throwing a `SyntaxError` if anything goes
641
+ * // wrong. By default, a Module is created in the top context. But here, we
642
+ * // specify `contextifiedObject` as the context this Module belongs to.
643
+ * //
644
+ * // Here, we attempt to obtain the default export from the module "foo", and
645
+ * // put it into local binding "secret".
646
+ *
647
+ * const bar = new vm.SourceTextModule(`
648
+ * import s from 'foo';
649
+ * s;
650
+ * print(s);
651
+ * `, { context: contextifiedObject });
652
+ *
653
+ * // Step 2
654
+ * //
655
+ * // "Link" the imported dependencies of this Module to it.
656
+ * //
657
+ * // The provided linking callback (the "linker") accepts two arguments: the
658
+ * // parent module (`bar` in this case) and the string that is the specifier of
659
+ * // the imported module. The callback is expected to return a Module that
660
+ * // corresponds to the provided specifier, with certain requirements documented
661
+ * // in `module.link()`.
662
+ * //
663
+ * // If linking has not started for the returned Module, the same linker
664
+ * // callback will be called on the returned Module.
665
+ * //
666
+ * // Even top-level Modules without dependencies must be explicitly linked. The
667
+ * // callback provided would never be called, however.
668
+ * //
669
+ * // The link() method returns a Promise that will be resolved when all the
670
+ * // Promises returned by the linker resolve.
671
+ * //
672
+ * // Note: This is a contrived example in that the linker function creates a new
673
+ * // "foo" module every time it is called. In a full-fledged module system, a
674
+ * // cache would probably be used to avoid duplicated modules.
675
+ *
676
+ * async function linker(specifier, referencingModule) {
677
+ * if (specifier === 'foo') {
678
+ * return new vm.SourceTextModule(`
679
+ * // The "secret" variable refers to the global variable we added to
680
+ * // "contextifiedObject" when creating the context.
681
+ * export default secret;
682
+ * `, { context: referencingModule.context });
683
+ *
684
+ * // Using `contextifiedObject` instead of `referencingModule.context`
685
+ * // here would work as well.
686
+ * }
687
+ * throw new Error(`Unable to resolve dependency: ${specifier}`);
688
+ * }
689
+ * await bar.link(linker);
690
+ *
691
+ * // Step 3
692
+ * //
693
+ * // Evaluate the Module. The evaluate() method returns a promise which will
694
+ * // resolve after the module has finished evaluating.
695
+ *
696
+ * // Prints 42.
697
+ * await bar.evaluate();
698
+ * ```
699
+ * @since v13.0.0, v12.16.0
700
+ * @experimental
701
+ */
702
+ class Module {
703
+ /**
704
+ * The specifiers of all dependencies of this module. The returned array is frozen
705
+ * to disallow any changes to it.
706
+ *
707
+ * Corresponds to the `[[RequestedModules]]` field of [Cyclic Module Record](https://tc39.es/ecma262/#sec-cyclic-module-records) s in
708
+ * the ECMAScript specification.
709
+ */
710
+ dependencySpecifiers: readonly string[];
711
+ /**
712
+ * If the `module.status` is `'errored'`, this property contains the exception
713
+ * thrown by the module during evaluation. If the status is anything else,
714
+ * accessing this property will result in a thrown exception.
715
+ *
716
+ * The value `undefined` cannot be used for cases where there is not a thrown
717
+ * exception due to possible ambiguity with `throw undefined;`.
718
+ *
719
+ * Corresponds to the `[[EvaluationError]]` field of [Cyclic Module Record](https://tc39.es/ecma262/#sec-cyclic-module-records) s
720
+ * in the ECMAScript specification.
721
+ */
722
+ error: any;
723
+ /**
724
+ * The identifier of the current module, as set in the constructor.
725
+ */
726
+ identifier: string;
727
+ context: Context;
728
+ /**
729
+ * The namespace object of the module. This is only available after linking
730
+ * (`module.link()`) has completed.
731
+ *
732
+ * Corresponds to the [GetModuleNamespace](https://tc39.es/ecma262/#sec-getmodulenamespace) abstract operation in the ECMAScript
733
+ * specification.
734
+ */
735
+ namespace: Object;
736
+ /**
737
+ * The current status of the module. Will be one of:
738
+ *
739
+ * * `'unlinked'`: `module.link()` has not yet been called.
740
+ * * `'linking'`: `module.link()` has been called, but not all Promises returned
741
+ * by the linker function have been resolved yet.
742
+ * * `'linked'`: The module has been linked successfully, and all of its
743
+ * dependencies are linked, but `module.evaluate()` has not yet been called.
744
+ * * `'evaluating'`: The module is being evaluated through a `module.evaluate()` on
745
+ * itself or a parent module.
746
+ * * `'evaluated'`: The module has been successfully evaluated.
747
+ * * `'errored'`: The module has been evaluated, but an exception was thrown.
748
+ *
749
+ * Other than `'errored'`, this status string corresponds to the specification's [Cyclic Module Record](https://tc39.es/ecma262/#sec-cyclic-module-records)'s `[[Status]]` field. `'errored'`
750
+ * corresponds to `'evaluated'` in the specification, but with `[[EvaluationError]]` set to a
751
+ * value that is not `undefined`.
752
+ */
753
+ status: ModuleStatus;
754
+ /**
755
+ * Evaluate the module.
756
+ *
757
+ * This must be called after the module has been linked; otherwise it will reject.
758
+ * It could be called also when the module has already been evaluated, in which
759
+ * case it will either do nothing if the initial evaluation ended in success
760
+ * (`module.status` is `'evaluated'`) or it will re-throw the exception that the
761
+ * initial evaluation resulted in (`module.status` is `'errored'`).
762
+ *
763
+ * This method cannot be called while the module is being evaluated
764
+ * (`module.status` is `'evaluating'`).
765
+ *
766
+ * Corresponds to the [Evaluate() concrete method](https://tc39.es/ecma262/#sec-moduleevaluation) field of [Cyclic Module Record](https://tc39.es/ecma262/#sec-cyclic-module-records) s in the
767
+ * ECMAScript specification.
768
+ * @return Fulfills with `undefined` upon success.
769
+ */
770
+ evaluate(options?: ModuleEvaluateOptions): Promise<void>;
771
+ /**
772
+ * Link module dependencies. This method must be called before evaluation, and
773
+ * can only be called once per module.
774
+ *
775
+ * The function is expected to return a `Module` object or a `Promise` that
776
+ * eventually resolves to a `Module` object. The returned `Module` must satisfy the
777
+ * following two invariants:
778
+ *
779
+ * * It must belong to the same context as the parent `Module`.
780
+ * * Its `status` must not be `'errored'`.
781
+ *
782
+ * If the returned `Module`'s `status` is `'unlinked'`, this method will be
783
+ * recursively called on the returned `Module` with the same provided `linker` function.
784
+ *
785
+ * `link()` returns a `Promise` that will either get resolved when all linking
786
+ * instances resolve to a valid `Module`, or rejected if the linker function either
787
+ * throws an exception or returns an invalid `Module`.
788
+ *
789
+ * The linker function roughly corresponds to the implementation-defined [HostResolveImportedModule](https://tc39.es/ecma262/#sec-hostresolveimportedmodule) abstract operation in the
790
+ * ECMAScript
791
+ * specification, with a few key differences:
792
+ *
793
+ * * The linker function is allowed to be asynchronous while [HostResolveImportedModule](https://tc39.es/ecma262/#sec-hostresolveimportedmodule) is synchronous.
794
+ *
795
+ * The actual [HostResolveImportedModule](https://tc39.es/ecma262/#sec-hostresolveimportedmodule) implementation used during module
796
+ * linking is one that returns the modules linked during linking. Since at
797
+ * that point all modules would have been fully linked already, the [HostResolveImportedModule](https://tc39.es/ecma262/#sec-hostresolveimportedmodule) implementation is fully synchronous per
798
+ * specification.
799
+ *
800
+ * Corresponds to the [Link() concrete method](https://tc39.es/ecma262/#sec-moduledeclarationlinking) field of [Cyclic Module Record](https://tc39.es/ecma262/#sec-cyclic-module-records) s in
801
+ * the ECMAScript specification.
802
+ */
803
+ link(linker: ModuleLinker): Promise<void>;
804
+ }
805
+ interface SourceTextModuleOptions {
806
+ /**
807
+ * String used in stack traces.
808
+ * @default 'vm:module(i)' where i is a context-specific ascending index.
809
+ */
810
+ identifier?: string | undefined;
811
+ cachedData?: ScriptOptions["cachedData"] | undefined;
812
+ context?: Context | undefined;
813
+ lineOffset?: BaseOptions["lineOffset"] | undefined;
814
+ columnOffset?: BaseOptions["columnOffset"] | undefined;
815
+ /**
816
+ * Called during evaluation of this module to initialize the `import.meta`.
817
+ */
818
+ initializeImportMeta?: ((meta: ImportMeta, module: SourceTextModule) => void) | undefined;
819
+ importModuleDynamically?: ScriptOptions["importModuleDynamically"] | undefined;
820
+ }
821
+ /**
822
+ * This feature is only available with the `--experimental-vm-modules` command
823
+ * flag enabled.
824
+ *
825
+ * The `vm.SourceTextModule` class provides the [Source Text Module Record](https://tc39.es/ecma262/#sec-source-text-module-records) as
826
+ * defined in the ECMAScript specification.
827
+ * @since v9.6.0
828
+ * @experimental
829
+ */
830
+ class SourceTextModule extends Module {
831
+ /**
832
+ * Creates a new `SourceTextModule` instance.
833
+ * @param code JavaScript Module code to parse
834
+ */
835
+ constructor(code: string, options?: SourceTextModuleOptions);
836
+ }
837
+ interface SyntheticModuleOptions {
838
+ /**
839
+ * String used in stack traces.
840
+ * @default 'vm:module(i)' where i is a context-specific ascending index.
841
+ */
842
+ identifier?: string | undefined;
843
+ /**
844
+ * The contextified object as returned by the `vm.createContext()` method, to compile and evaluate this module in.
845
+ */
846
+ context?: Context | undefined;
847
+ }
848
+ /**
849
+ * This feature is only available with the `--experimental-vm-modules` command
850
+ * flag enabled.
851
+ *
852
+ * The `vm.SyntheticModule` class provides the [Synthetic Module Record](https://heycam.github.io/webidl/#synthetic-module-records) as
853
+ * defined in the WebIDL specification. The purpose of synthetic modules is to
854
+ * provide a generic interface for exposing non-JavaScript sources to ECMAScript
855
+ * module graphs.
856
+ *
857
+ * ```js
858
+ * const vm = require('node:vm');
859
+ *
860
+ * const source = '{ "a": 1 }';
861
+ * const module = new vm.SyntheticModule(['default'], function() {
862
+ * const obj = JSON.parse(source);
863
+ * this.setExport('default', obj);
864
+ * });
865
+ *
866
+ * // Use `module` in linking...
867
+ * ```
868
+ * @since v13.0.0, v12.16.0
869
+ * @experimental
870
+ */
871
+ class SyntheticModule extends Module {
872
+ /**
873
+ * Creates a new `SyntheticModule` instance.
874
+ * @param exportNames Array of names that will be exported from the module.
875
+ * @param evaluateCallback Called when the module is evaluated.
876
+ */
877
+ constructor(
878
+ exportNames: string[],
879
+ evaluateCallback: (this: SyntheticModule) => void,
880
+ options?: SyntheticModuleOptions,
881
+ );
882
+ /**
883
+ * This method is used after the module is linked to set the values of exports. If
884
+ * it is called before the module is linked, an `ERR_VM_MODULE_STATUS` error
885
+ * will be thrown.
886
+ *
887
+ * ```js
888
+ * import vm from 'node:vm';
889
+ *
890
+ * const m = new vm.SyntheticModule(['x'], () => {
891
+ * m.setExport('x', 1);
892
+ * });
893
+ *
894
+ * await m.link(() => {});
895
+ * await m.evaluate();
896
+ *
897
+ * assert.strictEqual(m.namespace.x, 1);
898
+ * ```
899
+ * @since v13.0.0, v12.16.0
900
+ * @param name Name of the export to set.
901
+ * @param value The value to set the export to.
902
+ */
903
+ setExport(name: string, value: any): void;
904
+ }
905
+ /**
906
+ * Returns an object containing commonly used constants for VM operations.
907
+ * @since v20.12.0
908
+ */
909
+ namespace constants {
910
+ /**
911
+ * Stability: 1.1 - Active development
912
+ *
913
+ * A constant that can be used as the `importModuleDynamically` option to `vm.Script`
914
+ * and `vm.compileFunction()` so that Node.js uses the default ESM loader from the main
915
+ * context to load the requested module.
916
+ *
917
+ * For detailed information, see [Support of dynamic `import()` in compilation APIs](https://nodejs.org/docs/latest-v20.x/api/vm.html#support-of-dynamic-import-in-compilation-apis).
918
+ */
919
+ const USE_MAIN_CONTEXT_DEFAULT_LOADER: number;
920
+ }
921
+ }
922
+ declare module "node:vm" {
923
+ export * from "vm";
924
+ }