@volter/tabnode 0.2.14-volter.88

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +78 -0
  3. package/THIRD-PARTY-NOTICES.md +12 -0
  4. package/dist/__sw__.js +526 -0
  5. package/dist/assets/runtime-worker-4MKaHFVb.js +75221 -0
  6. package/dist/assets/runtime-worker-4MKaHFVb.js.map +1 -0
  7. package/dist/code-transforms.d.ts +21 -0
  8. package/dist/code-transforms.d.ts.map +1 -0
  9. package/dist/config/cdn.d.ts +12 -0
  10. package/dist/config/cdn.d.ts.map +1 -0
  11. package/dist/create-runtime.d.ts +22 -0
  12. package/dist/create-runtime.d.ts.map +1 -0
  13. package/dist/host-globals.d.ts +62 -0
  14. package/dist/host-globals.d.ts.map +1 -0
  15. package/dist/index.cjs +36021 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.ts +127 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.mjs +36020 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/node-internals.d.ts +68 -0
  22. package/dist/node-internals.d.ts.map +1 -0
  23. package/dist/node-lib/binding/blob.d.ts +12 -0
  24. package/dist/node-lib/binding/blob.d.ts.map +1 -0
  25. package/dist/node-lib/binding/buffer.d.ts +144 -0
  26. package/dist/node-lib/binding/buffer.d.ts.map +1 -0
  27. package/dist/node-lib/binding/cares_wrap.d.ts +14 -0
  28. package/dist/node-lib/binding/cares_wrap.d.ts.map +1 -0
  29. package/dist/node-lib/binding/fds.d.ts +30 -0
  30. package/dist/node-lib/binding/fds.d.ts.map +1 -0
  31. package/dist/node-lib/binding/fs.d.ts +157 -0
  32. package/dist/node-lib/binding/fs.d.ts.map +1 -0
  33. package/dist/node-lib/binding/handles.d.ts +81 -0
  34. package/dist/node-lib/binding/handles.d.ts.map +1 -0
  35. package/dist/node-lib/binding/http_parser.d.ts +122 -0
  36. package/dist/node-lib/binding/http_parser.d.ts.map +1 -0
  37. package/dist/node-lib/binding/index.d.ts +3 -0
  38. package/dist/node-lib/binding/index.d.ts.map +1 -0
  39. package/dist/node-lib/binding/llhttp-wasm.d.ts +22 -0
  40. package/dist/node-lib/binding/llhttp-wasm.d.ts.map +1 -0
  41. package/dist/node-lib/binding/misc.d.ts +123 -0
  42. package/dist/node-lib/binding/misc.d.ts.map +1 -0
  43. package/dist/node-lib/binding/pipe_wrap.d.ts +84 -0
  44. package/dist/node-lib/binding/pipe_wrap.d.ts.map +1 -0
  45. package/dist/node-lib/binding/process_wrap.d.ts +173 -0
  46. package/dist/node-lib/binding/process_wrap.d.ts.map +1 -0
  47. package/dist/node-lib/binding/spawn_sync.d.ts +30 -0
  48. package/dist/node-lib/binding/spawn_sync.d.ts.map +1 -0
  49. package/dist/node-lib/binding/stream_wrap.d.ts +191 -0
  50. package/dist/node-lib/binding/stream_wrap.d.ts.map +1 -0
  51. package/dist/node-lib/binding/stubs.d.ts +23 -0
  52. package/dist/node-lib/binding/stubs.d.ts.map +1 -0
  53. package/dist/node-lib/binding/tcp_wrap.d.ts +98 -0
  54. package/dist/node-lib/binding/tcp_wrap.d.ts.map +1 -0
  55. package/dist/node-lib/binding/tty_wrap.d.ts +36 -0
  56. package/dist/node-lib/binding/tty_wrap.d.ts.map +1 -0
  57. package/dist/node-lib/binding/util.d.ts +126 -0
  58. package/dist/node-lib/binding/util.d.ts.map +1 -0
  59. package/dist/node-lib/binding/uv.d.ts +32 -0
  60. package/dist/node-lib/binding/uv.d.ts.map +1 -0
  61. package/dist/node-lib/binding/zlib-pako.d.ts +22 -0
  62. package/dist/node-lib/binding/zlib-pako.d.ts.map +1 -0
  63. package/dist/node-lib/binding/zlib.d.ts +38 -0
  64. package/dist/node-lib/binding/zlib.d.ts.map +1 -0
  65. package/dist/node-lib/buffer-module.d.ts +51 -0
  66. package/dist/node-lib/buffer-module.d.ts.map +1 -0
  67. package/dist/node-lib/child-process-module.d.ts +26 -0
  68. package/dist/node-lib/child-process-module.d.ts.map +1 -0
  69. package/dist/node-lib/events-module.d.ts +58 -0
  70. package/dist/node-lib/events-module.d.ts.map +1 -0
  71. package/dist/node-lib/fs-module.d.ts +5 -0
  72. package/dist/node-lib/fs-module.d.ts.map +1 -0
  73. package/dist/node-lib/http-bridge.d.ts +43 -0
  74. package/dist/node-lib/http-bridge.d.ts.map +1 -0
  75. package/dist/node-lib/http-module.d.ts +35 -0
  76. package/dist/node-lib/http-module.d.ts.map +1 -0
  77. package/dist/node-lib/internals/addresses.d.ts +40 -0
  78. package/dist/node-lib/internals/addresses.d.ts.map +1 -0
  79. package/dist/node-lib/internals/buffer-and-streams.d.ts +96 -0
  80. package/dist/node-lib/internals/buffer-and-streams.d.ts.map +1 -0
  81. package/dist/node-lib/internals/child-process.d.ts +27 -0
  82. package/dist/node-lib/internals/child-process.d.ts.map +1 -0
  83. package/dist/node-lib/internals/events-util.d.ts +83 -0
  84. package/dist/node-lib/internals/events-util.d.ts.map +1 -0
  85. package/dist/node-lib/internals/index.d.ts +2 -0
  86. package/dist/node-lib/internals/index.d.ts.map +1 -0
  87. package/dist/node-lib/internals/modules.d.ts +67 -0
  88. package/dist/node-lib/internals/modules.d.ts.map +1 -0
  89. package/dist/node-lib/internals/readline-access.d.ts +2 -0
  90. package/dist/node-lib/internals/readline-access.d.ts.map +1 -0
  91. package/dist/node-lib/internals/runtime.d.ts +150 -0
  92. package/dist/node-lib/internals/runtime.d.ts.map +1 -0
  93. package/dist/node-lib/internals/util.d.ts +33 -0
  94. package/dist/node-lib/internals/util.d.ts.map +1 -0
  95. package/dist/node-lib/lazy.d.ts +31 -0
  96. package/dist/node-lib/lazy.d.ts.map +1 -0
  97. package/dist/node-lib/load.d.ts +27 -0
  98. package/dist/node-lib/load.d.ts.map +1 -0
  99. package/dist/node-lib/module-hooks.d.ts +89 -0
  100. package/dist/node-lib/module-hooks.d.ts.map +1 -0
  101. package/dist/node-lib/net-module.d.ts +181 -0
  102. package/dist/node-lib/net-module.d.ts.map +1 -0
  103. package/dist/node-lib/node-versions.d.ts +27 -0
  104. package/dist/node-lib/node-versions.d.ts.map +1 -0
  105. package/dist/node-lib/public-modules.d.ts +2 -0
  106. package/dist/node-lib/public-modules.d.ts.map +1 -0
  107. package/dist/node-lib/require-hook.d.ts +15 -0
  108. package/dist/node-lib/require-hook.d.ts.map +1 -0
  109. package/dist/node-lib/small-modules.d.ts +16 -0
  110. package/dist/node-lib/small-modules.d.ts.map +1 -0
  111. package/dist/node-lib/sources.d.ts +4 -0
  112. package/dist/node-lib/sources.d.ts.map +1 -0
  113. package/dist/node-lib/stream-module.d.ts +77 -0
  114. package/dist/node-lib/stream-module.d.ts.map +1 -0
  115. package/dist/node-lib/timers.d.ts +19 -0
  116. package/dist/node-lib/timers.d.ts.map +1 -0
  117. package/dist/node-lib/util-module.d.ts +76 -0
  118. package/dist/node-lib/util-module.d.ts.map +1 -0
  119. package/dist/node-resolution.d.ts +50 -0
  120. package/dist/node-resolution.d.ts.map +1 -0
  121. package/dist/node-resolver.d.ts +7 -0
  122. package/dist/node-resolver.d.ts.map +1 -0
  123. package/dist/npm/index.d.ts +73 -0
  124. package/dist/npm/index.d.ts.map +1 -0
  125. package/dist/npm/registry.d.ts +111 -0
  126. package/dist/npm/registry.d.ts.map +1 -0
  127. package/dist/npm/resolver.d.ts +79 -0
  128. package/dist/npm/resolver.d.ts.map +1 -0
  129. package/dist/npm/tarball.d.ts +28 -0
  130. package/dist/npm/tarball.d.ts.map +1 -0
  131. package/dist/process-tokens.d.ts +77 -0
  132. package/dist/process-tokens.d.ts.map +1 -0
  133. package/dist/punycode-source.d.ts +3 -0
  134. package/dist/punycode-source.d.ts.map +1 -0
  135. package/dist/runtime-interface.d.ts +74 -0
  136. package/dist/runtime-interface.d.ts.map +1 -0
  137. package/dist/runtime.d.ts +144 -0
  138. package/dist/runtime.d.ts.map +1 -0
  139. package/dist/server-bridge.d.ts +147 -0
  140. package/dist/server-bridge.d.ts.map +1 -0
  141. package/dist/shims/async_hooks.d.ts +50 -0
  142. package/dist/shims/async_hooks.d.ts.map +1 -0
  143. package/dist/shims/child_process.d.ts +104 -0
  144. package/dist/shims/child_process.d.ts.map +1 -0
  145. package/dist/shims/cluster.d.ts +52 -0
  146. package/dist/shims/cluster.d.ts.map +1 -0
  147. package/dist/shims/command-line.d.ts +43 -0
  148. package/dist/shims/command-line.d.ts.map +1 -0
  149. package/dist/shims/constants.d.ts +222 -0
  150. package/dist/shims/constants.d.ts.map +1 -0
  151. package/dist/shims/crypto-constants.d.ts +12 -0
  152. package/dist/shims/crypto-constants.d.ts.map +1 -0
  153. package/dist/shims/crypto.d.ts +144 -0
  154. package/dist/shims/crypto.d.ts.map +1 -0
  155. package/dist/shims/dgram.d.ts +34 -0
  156. package/dist/shims/dgram.d.ts.map +1 -0
  157. package/dist/shims/dns.d.ts +91 -0
  158. package/dist/shims/dns.d.ts.map +1 -0
  159. package/dist/shims/domain.d.ts +25 -0
  160. package/dist/shims/domain.d.ts.map +1 -0
  161. package/dist/shims/esbuild.d.ts +205 -0
  162. package/dist/shims/esbuild.d.ts.map +1 -0
  163. package/dist/shims/fs.d.ts +25 -0
  164. package/dist/shims/fs.d.ts.map +1 -0
  165. package/dist/shims/http2.d.ts +81 -0
  166. package/dist/shims/http2.d.ts.map +1 -0
  167. package/dist/shims/inspector.d.ts +25 -0
  168. package/dist/shims/inspector.d.ts.map +1 -0
  169. package/dist/shims/module.d.ts +22 -0
  170. package/dist/shims/module.d.ts.map +1 -0
  171. package/dist/shims/os.d.ts +159 -0
  172. package/dist/shims/os.d.ts.map +1 -0
  173. package/dist/shims/path.d.ts +52 -0
  174. package/dist/shims/path.d.ts.map +1 -0
  175. package/dist/shims/perf_hooks.d.ts +50 -0
  176. package/dist/shims/perf_hooks.d.ts.map +1 -0
  177. package/dist/shims/process.d.ts +226 -0
  178. package/dist/shims/process.d.ts.map +1 -0
  179. package/dist/shims/rollup.d.ts +71 -0
  180. package/dist/shims/rollup.d.ts.map +1 -0
  181. package/dist/shims/string_decoder.d.ts +41 -0
  182. package/dist/shims/string_decoder.d.ts.map +1 -0
  183. package/dist/shims/sync-child.d.ts +64 -0
  184. package/dist/shims/sync-child.d.ts.map +1 -0
  185. package/dist/shims/tls.d.ts +53 -0
  186. package/dist/shims/tls.d.ts.map +1 -0
  187. package/dist/shims/url.d.ts +84 -0
  188. package/dist/shims/url.d.ts.map +1 -0
  189. package/dist/shims/v8.d.ts +73 -0
  190. package/dist/shims/v8.d.ts.map +1 -0
  191. package/dist/shims/vfs-adapter.d.ts +126 -0
  192. package/dist/shims/vfs-adapter.d.ts.map +1 -0
  193. package/dist/shims/vm.d.ts +52 -0
  194. package/dist/shims/vm.d.ts.map +1 -0
  195. package/dist/shims/wasi.d.ts +78 -0
  196. package/dist/shims/wasi.d.ts.map +1 -0
  197. package/dist/shims/worker_threads.d.ts +66 -0
  198. package/dist/shims/worker_threads.d.ts.map +1 -0
  199. package/dist/shims/zlib-constants.d.ts +66 -0
  200. package/dist/shims/zlib-constants.d.ts.map +1 -0
  201. package/dist/shims/zlib.d.ts +102 -0
  202. package/dist/shims/zlib.d.ts.map +1 -0
  203. package/dist/transform.d.ts +24 -0
  204. package/dist/transform.d.ts.map +1 -0
  205. package/dist/types/package-json.d.ts +18 -0
  206. package/dist/types/package-json.d.ts.map +1 -0
  207. package/dist/utils/binary-encoding.d.ts +13 -0
  208. package/dist/utils/binary-encoding.d.ts.map +1 -0
  209. package/dist/utils/glob.d.ts +19 -0
  210. package/dist/utils/glob.d.ts.map +1 -0
  211. package/dist/utils/hash.d.ts +6 -0
  212. package/dist/utils/hash.d.ts.map +1 -0
  213. package/dist/virtual-fs.d.ts +259 -0
  214. package/dist/virtual-fs.d.ts.map +1 -0
  215. package/dist/vite-plugin.cjs +50 -0
  216. package/dist/vite-plugin.cjs.map +1 -0
  217. package/dist/vite-plugin.d.ts +36 -0
  218. package/dist/vite-plugin.d.ts.map +1 -0
  219. package/dist/vite-plugin.mjs +31 -0
  220. package/dist/vite-plugin.mjs.map +1 -0
  221. package/dist/worker/runtime-worker.d.ts +8 -0
  222. package/dist/worker/runtime-worker.d.ts.map +1 -0
  223. package/dist/worker-runtime.d.ts +50 -0
  224. package/dist/worker-runtime.d.ts.map +1 -0
  225. package/package.json +88 -0
  226. package/src/code-transforms.ts +560 -0
  227. package/src/config/cdn.ts +13 -0
  228. package/src/create-runtime.ts +89 -0
  229. package/src/host-globals.ts +121 -0
  230. package/src/index.ts +235 -0
  231. package/src/node-internals.ts +283 -0
  232. package/src/node-lib/LICENSE +47 -0
  233. package/src/node-lib/_http_agent.js +547 -0
  234. package/src/node-lib/_http_client.js +996 -0
  235. package/src/node-lib/_http_common.js +269 -0
  236. package/src/node-lib/_http_incoming.js +453 -0
  237. package/src/node-lib/_http_outgoing.js +1262 -0
  238. package/src/node-lib/_http_server.js +1230 -0
  239. package/src/node-lib/assert/strict.js +3 -0
  240. package/src/node-lib/assert.js +844 -0
  241. package/src/node-lib/binding/blob.ts +35 -0
  242. package/src/node-lib/binding/buffer.ts +465 -0
  243. package/src/node-lib/binding/cares_wrap.ts +57 -0
  244. package/src/node-lib/binding/fds.ts +80 -0
  245. package/src/node-lib/binding/fs.ts +857 -0
  246. package/src/node-lib/binding/handles.ts +187 -0
  247. package/src/node-lib/binding/http_parser.ts +536 -0
  248. package/src/node-lib/binding/index.ts +77 -0
  249. package/src/node-lib/binding/llhttp-wasm.ts +670 -0
  250. package/src/node-lib/binding/misc.ts +252 -0
  251. package/src/node-lib/binding/pipe_wrap.ts +166 -0
  252. package/src/node-lib/binding/process_wrap.ts +371 -0
  253. package/src/node-lib/binding/spawn_sync.ts +141 -0
  254. package/src/node-lib/binding/stream_wrap.ts +413 -0
  255. package/src/node-lib/binding/stubs.ts +19 -0
  256. package/src/node-lib/binding/tcp_wrap.ts +254 -0
  257. package/src/node-lib/binding/tty_wrap.ts +56 -0
  258. package/src/node-lib/binding/util.ts +274 -0
  259. package/src/node-lib/binding/uv.ts +102 -0
  260. package/src/node-lib/binding/zlib-pako.ts +50 -0
  261. package/src/node-lib/binding/zlib.ts +259 -0
  262. package/src/node-lib/buffer-module.ts +70 -0
  263. package/src/node-lib/buffer.js +1373 -0
  264. package/src/node-lib/child-process-module.ts +58 -0
  265. package/src/node-lib/child_process.js +1046 -0
  266. package/src/node-lib/constants.js +41 -0
  267. package/src/node-lib/diagnostics_channel.js +438 -0
  268. package/src/node-lib/events-module.ts +80 -0
  269. package/src/node-lib/events.js +1223 -0
  270. package/src/node-lib/fs-module.ts +43 -0
  271. package/src/node-lib/fs.js +3377 -0
  272. package/src/node-lib/http-bridge.ts +299 -0
  273. package/src/node-lib/http-module.ts +53 -0
  274. package/src/node-lib/http.js +198 -0
  275. package/src/node-lib/https.js +429 -0
  276. package/src/node-lib/internal/assert/assertion_error.js +417 -0
  277. package/src/node-lib/internal/assert/calltracker.js +153 -0
  278. package/src/node-lib/internal/assert/myers_diff.js +177 -0
  279. package/src/node-lib/internal/assert/utils.js +278 -0
  280. package/src/node-lib/internal/buffer.js +1120 -0
  281. package/src/node-lib/internal/child_process/serialization.js +169 -0
  282. package/src/node-lib/internal/child_process.js +1135 -0
  283. package/src/node-lib/internal/constants.js +56 -0
  284. package/src/node-lib/internal/deps/minimatch/index.js +1628 -0
  285. package/src/node-lib/internal/errors.js +1912 -0
  286. package/src/node-lib/internal/events/abort_listener.js +54 -0
  287. package/src/node-lib/internal/events/symbols.js +11 -0
  288. package/src/node-lib/internal/fixed_queue.js +119 -0
  289. package/src/node-lib/internal/freelist.js +30 -0
  290. package/src/node-lib/internal/fs/cp/cp-sync.js +242 -0
  291. package/src/node-lib/internal/fs/cp/cp.js +382 -0
  292. package/src/node-lib/internal/fs/dir.js +369 -0
  293. package/src/node-lib/internal/fs/glob.js +763 -0
  294. package/src/node-lib/internal/fs/promises.js +1312 -0
  295. package/src/node-lib/internal/fs/read/context.js +129 -0
  296. package/src/node-lib/internal/fs/recursive_watch.js +275 -0
  297. package/src/node-lib/internal/fs/rimraf.js +311 -0
  298. package/src/node-lib/internal/fs/streams.js +571 -0
  299. package/src/node-lib/internal/fs/sync_write_stream.js +49 -0
  300. package/src/node-lib/internal/fs/utils.js +987 -0
  301. package/src/node-lib/internal/fs/watchers.js +418 -0
  302. package/src/node-lib/internal/http.js +62 -0
  303. package/src/node-lib/internal/mime.js +389 -0
  304. package/src/node-lib/internal/modules/customization_hooks.js +406 -0
  305. package/src/node-lib/internal/net.js +95 -0
  306. package/src/node-lib/internal/querystring.js +119 -0
  307. package/src/node-lib/internal/readline/callbacks.js +132 -0
  308. package/src/node-lib/internal/readline/emitKeypressEvents.js +99 -0
  309. package/src/node-lib/internal/readline/interface.js +1418 -0
  310. package/src/node-lib/internal/readline/promises.js +144 -0
  311. package/src/node-lib/internal/readline/utils.js +405 -0
  312. package/src/node-lib/internal/socket_list.js +108 -0
  313. package/src/node-lib/internal/stream_base_commons.js +280 -0
  314. package/src/node-lib/internal/streams/add-abort-signal.js +60 -0
  315. package/src/node-lib/internal/streams/compose.js +257 -0
  316. package/src/node-lib/internal/streams/destroy.js +361 -0
  317. package/src/node-lib/internal/streams/duplex.js +203 -0
  318. package/src/node-lib/internal/streams/duplexify.js +379 -0
  319. package/src/node-lib/internal/streams/duplexpair.js +62 -0
  320. package/src/node-lib/internal/streams/end-of-stream.js +331 -0
  321. package/src/node-lib/internal/streams/from.js +208 -0
  322. package/src/node-lib/internal/streams/lazy_transform.js +57 -0
  323. package/src/node-lib/internal/streams/legacy.js +125 -0
  324. package/src/node-lib/internal/streams/operators.js +436 -0
  325. package/src/node-lib/internal/streams/passthrough.js +47 -0
  326. package/src/node-lib/internal/streams/pipeline.js +465 -0
  327. package/src/node-lib/internal/streams/readable.js +1762 -0
  328. package/src/node-lib/internal/streams/state.js +51 -0
  329. package/src/node-lib/internal/streams/transform.js +204 -0
  330. package/src/node-lib/internal/streams/utils.js +363 -0
  331. package/src/node-lib/internal/streams/writable.js +1163 -0
  332. package/src/node-lib/internal/tty.js +260 -0
  333. package/src/node-lib/internal/util/colors.js +40 -0
  334. package/src/node-lib/internal/util/comparisons.js +1028 -0
  335. package/src/node-lib/internal/util/debuglog.js +524 -0
  336. package/src/node-lib/internal/util/inspect.js +2535 -0
  337. package/src/node-lib/internal/util/parse_args/parse_args.js +412 -0
  338. package/src/node-lib/internal/util/parse_args/utils.js +197 -0
  339. package/src/node-lib/internal/util.js +1003 -0
  340. package/src/node-lib/internal/validators.js +654 -0
  341. package/src/node-lib/internals/addresses.ts +159 -0
  342. package/src/node-lib/internals/buffer-and-streams.ts +224 -0
  343. package/src/node-lib/internals/child-process.ts +64 -0
  344. package/src/node-lib/internals/events-util.ts +105 -0
  345. package/src/node-lib/internals/index.ts +66 -0
  346. package/src/node-lib/internals/modules.ts +117 -0
  347. package/src/node-lib/internals/readline-access.ts +16 -0
  348. package/src/node-lib/internals/runtime.ts +277 -0
  349. package/src/node-lib/internals/util.ts +98 -0
  350. package/src/node-lib/lazy.ts +158 -0
  351. package/src/node-lib/load.ts +390 -0
  352. package/src/node-lib/module-hooks.ts +281 -0
  353. package/src/node-lib/net-module.ts +248 -0
  354. package/src/node-lib/net.js +2540 -0
  355. package/src/node-lib/node-versions.ts +34 -0
  356. package/src/node-lib/os.js +356 -0
  357. package/src/node-lib/path.js +1694 -0
  358. package/src/node-lib/primordials.js +743 -0
  359. package/src/node-lib/public-modules.ts +109 -0
  360. package/src/node-lib/punycode.js +455 -0
  361. package/src/node-lib/querystring.js +484 -0
  362. package/src/node-lib/readline/promises.js +73 -0
  363. package/src/node-lib/readline.js +523 -0
  364. package/src/node-lib/require-hook.ts +27 -0
  365. package/src/node-lib/small-modules.ts +35 -0
  366. package/src/node-lib/sources.ts +200 -0
  367. package/src/node-lib/stream/promises.js +44 -0
  368. package/src/node-lib/stream-module.ts +101 -0
  369. package/src/node-lib/stream.js +152 -0
  370. package/src/node-lib/timers.ts +33 -0
  371. package/src/node-lib/tty.js +168 -0
  372. package/src/node-lib/util-module.ts +104 -0
  373. package/src/node-lib/util.js +689 -0
  374. package/src/node-lib/wasi.js +179 -0
  375. package/src/node-lib/zlib.js +1036 -0
  376. package/src/node-resolution.ts +241 -0
  377. package/src/node-resolver.ts +33 -0
  378. package/src/npm/index.ts +425 -0
  379. package/src/npm/registry.ts +235 -0
  380. package/src/npm/resolver.ts +589 -0
  381. package/src/npm/tarball.ts +246 -0
  382. package/src/process-tokens.ts +156 -0
  383. package/src/punycode-source.ts +6 -0
  384. package/src/runtime-interface.ts +85 -0
  385. package/src/runtime.ts +3073 -0
  386. package/src/server-bridge.ts +971 -0
  387. package/src/shims/async_hooks.ts +181 -0
  388. package/src/shims/child_process.ts +1591 -0
  389. package/src/shims/cluster.ts +79 -0
  390. package/src/shims/command-line.ts +79 -0
  391. package/src/shims/constants.ts +68 -0
  392. package/src/shims/crypto-constants.ts +11 -0
  393. package/src/shims/crypto.ts +1061 -0
  394. package/src/shims/dgram.ts +47 -0
  395. package/src/shims/dns.ts +185 -0
  396. package/src/shims/domain.ts +58 -0
  397. package/src/shims/esbuild.ts +1638 -0
  398. package/src/shims/fs.ts +82 -0
  399. package/src/shims/http2.ts +96 -0
  400. package/src/shims/inspector.ts +30 -0
  401. package/src/shims/module.ts +86 -0
  402. package/src/shims/os.ts +195 -0
  403. package/src/shims/path.ts +246 -0
  404. package/src/shims/perf_hooks.ts +92 -0
  405. package/src/shims/process.ts +804 -0
  406. package/src/shims/rollup.ts +149 -0
  407. package/src/shims/string_decoder.ts +396 -0
  408. package/src/shims/sync-child.ts +469 -0
  409. package/src/shims/tls.ts +94 -0
  410. package/src/shims/url.ts +217 -0
  411. package/src/shims/v8.ts +113 -0
  412. package/src/shims/vfs-adapter.ts +408 -0
  413. package/src/shims/vm.ts +132 -0
  414. package/src/shims/wasi.ts +1440 -0
  415. package/src/shims/worker_threads.ts +114 -0
  416. package/src/shims/zlib-constants.ts +65 -0
  417. package/src/shims/zlib.ts +228 -0
  418. package/src/transform.ts +324 -0
  419. package/src/types/external.d.ts +55 -0
  420. package/src/types/package-json.ts +17 -0
  421. package/src/types/pako-zlib.d.ts +30 -0
  422. package/src/types/sha.js.d.ts +14 -0
  423. package/src/utils/binary-encoding.ts +43 -0
  424. package/src/utils/glob.ts +54 -0
  425. package/src/utils/hash.ts +12 -0
  426. package/src/virtual-fs.ts +1048 -0
  427. package/src/vite-plugin.ts +76 -0
  428. package/src/worker/runtime-worker.ts +128 -0
  429. package/src/worker-runtime.ts +145 -0
@@ -0,0 +1,1223 @@
1
+ // Copyright Joyent, Inc. and other Node contributors.
2
+ //
3
+ // Permission is hereby granted, free of charge, to any person obtaining a
4
+ // copy of this software and associated documentation files (the
5
+ // "Software"), to deal in the Software without restriction, including
6
+ // without limitation the rights to use, copy, modify, merge, publish,
7
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
8
+ // persons to whom the Software is furnished to do so, subject to the
9
+ // following conditions:
10
+ //
11
+ // The above copyright notice and this permission notice shall be included
12
+ // in all copies or substantial portions of the Software.
13
+ //
14
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
22
+ 'use strict';
23
+
24
+ const {
25
+ ArrayPrototypeJoin,
26
+ ArrayPrototypePop,
27
+ ArrayPrototypePush,
28
+ ArrayPrototypeSlice,
29
+ ArrayPrototypeSplice,
30
+ ArrayPrototypeUnshift,
31
+ Boolean,
32
+ Error,
33
+ ErrorCaptureStackTrace,
34
+ FunctionPrototypeBind,
35
+ FunctionPrototypeCall,
36
+ NumberMAX_SAFE_INTEGER,
37
+ ObjectDefineProperties,
38
+ ObjectDefineProperty,
39
+ ObjectGetPrototypeOf,
40
+ ObjectSetPrototypeOf,
41
+ Promise,
42
+ PromiseReject,
43
+ PromiseResolve,
44
+ ReflectApply,
45
+ ReflectOwnKeys,
46
+ String,
47
+ StringPrototypeSplit,
48
+ Symbol,
49
+ SymbolAsyncIterator,
50
+ SymbolFor,
51
+ } = primordials;
52
+ const kRejection = SymbolFor('nodejs.rejection');
53
+
54
+ const { SymbolDispose, kEmptyObject, spliceOne } = require('internal/util');
55
+
56
+ const {
57
+ inspect,
58
+ identicalSequenceRange,
59
+ } = require('internal/util/inspect');
60
+
61
+ let FixedQueue;
62
+ let kFirstEventParam;
63
+ let kResistStopPropagation;
64
+
65
+ const {
66
+ AbortError,
67
+ codes: {
68
+ ERR_INVALID_ARG_TYPE,
69
+ ERR_INVALID_THIS,
70
+ ERR_UNHANDLED_ERROR,
71
+ },
72
+ genericNodeError,
73
+ kEnhanceStackBeforeInspector,
74
+ } = require('internal/errors');
75
+
76
+ const {
77
+ validateInteger,
78
+ validateAbortSignal,
79
+ validateBoolean,
80
+ validateFunction,
81
+ validateNumber,
82
+ validateObject,
83
+ validateString,
84
+ } = require('internal/validators');
85
+ const { addAbortListener } = require('internal/events/abort_listener');
86
+
87
+ const kCapture = Symbol('kCapture');
88
+ const kErrorMonitor = Symbol('events.errorMonitor');
89
+ const kShapeMode = Symbol('shapeMode');
90
+ const kMaxEventTargetListeners = Symbol('events.maxEventTargetListeners');
91
+ const kMaxEventTargetListenersWarned =
92
+ Symbol('events.maxEventTargetListenersWarned');
93
+ const kWatermarkData = SymbolFor('nodejs.watermarkData');
94
+
95
+ let EventEmitterAsyncResource;
96
+ // The EventEmitterAsyncResource has to be initialized lazily because event.js
97
+ // is loaded so early in the bootstrap process, before async_hooks is available.
98
+ //
99
+ // This implementation was adapted straight from addaleax's
100
+ // eventemitter-asyncresource MIT-licensed userland module.
101
+ // https://github.com/addaleax/eventemitter-asyncresource
102
+ function lazyEventEmitterAsyncResource() {
103
+ if (EventEmitterAsyncResource === undefined) {
104
+ const {
105
+ AsyncResource,
106
+ } = require('async_hooks');
107
+
108
+ const kEventEmitter = Symbol('kEventEmitter');
109
+ const kAsyncResource = Symbol('kAsyncResource');
110
+ class EventEmitterReferencingAsyncResource extends AsyncResource {
111
+ /**
112
+ * @param {EventEmitter} ee
113
+ * @param {string} [type]
114
+ * @param {{
115
+ * triggerAsyncId?: number,
116
+ * requireManualDestroy?: boolean,
117
+ * }} [options]
118
+ */
119
+ constructor(ee, type, options) {
120
+ super(type, options);
121
+ this[kEventEmitter] = ee;
122
+ }
123
+
124
+ /**
125
+ * @type {EventEmitter}
126
+ */
127
+ get eventEmitter() {
128
+ if (this[kEventEmitter] === undefined)
129
+ throw new ERR_INVALID_THIS('EventEmitterReferencingAsyncResource');
130
+ return this[kEventEmitter];
131
+ }
132
+ }
133
+
134
+ EventEmitterAsyncResource =
135
+ class EventEmitterAsyncResource extends EventEmitter {
136
+ /**
137
+ * @param {{
138
+ * name?: string,
139
+ * triggerAsyncId?: number,
140
+ * requireManualDestroy?: boolean,
141
+ * }} [options]
142
+ */
143
+ constructor(options = undefined) {
144
+ let name;
145
+ if (typeof options === 'string') {
146
+ name = options;
147
+ options = undefined;
148
+ } else {
149
+ if (new.target === EventEmitterAsyncResource) {
150
+ validateString(options?.name, 'options.name');
151
+ }
152
+ name = options?.name || new.target.name;
153
+ }
154
+ super(options);
155
+
156
+ this[kAsyncResource] =
157
+ new EventEmitterReferencingAsyncResource(this, name, options);
158
+ }
159
+
160
+ /**
161
+ * @param {symbol,string} event
162
+ * @param {...any} args
163
+ * @returns {boolean}
164
+ */
165
+ emit(event, ...args) {
166
+ if (this[kAsyncResource] === undefined)
167
+ throw new ERR_INVALID_THIS('EventEmitterAsyncResource');
168
+ const { asyncResource } = this;
169
+ ArrayPrototypeUnshift(args, super.emit, this, event);
170
+ return ReflectApply(asyncResource.runInAsyncScope, asyncResource,
171
+ args);
172
+ }
173
+
174
+ /**
175
+ * @returns {void}
176
+ */
177
+ emitDestroy() {
178
+ if (this[kAsyncResource] === undefined)
179
+ throw new ERR_INVALID_THIS('EventEmitterAsyncResource');
180
+ this.asyncResource.emitDestroy();
181
+ }
182
+
183
+ /**
184
+ * @type {number}
185
+ */
186
+ get asyncId() {
187
+ if (this[kAsyncResource] === undefined)
188
+ throw new ERR_INVALID_THIS('EventEmitterAsyncResource');
189
+ return this.asyncResource.asyncId();
190
+ }
191
+
192
+ /**
193
+ * @type {number}
194
+ */
195
+ get triggerAsyncId() {
196
+ if (this[kAsyncResource] === undefined)
197
+ throw new ERR_INVALID_THIS('EventEmitterAsyncResource');
198
+ return this.asyncResource.triggerAsyncId();
199
+ }
200
+
201
+ /**
202
+ * @type {EventEmitterReferencingAsyncResource}
203
+ */
204
+ get asyncResource() {
205
+ if (this[kAsyncResource] === undefined)
206
+ throw new ERR_INVALID_THIS('EventEmitterAsyncResource');
207
+ return this[kAsyncResource];
208
+ }
209
+ };
210
+ }
211
+ return EventEmitterAsyncResource;
212
+ }
213
+
214
+ /**
215
+ * Creates a new `EventEmitter` instance.
216
+ * @param {{ captureRejections?: boolean; }} [opts]
217
+ * @constructs {EventEmitter}
218
+ */
219
+ function EventEmitter(opts) {
220
+ EventEmitter.init.call(this, opts);
221
+ }
222
+ module.exports = EventEmitter;
223
+ module.exports.addAbortListener = addAbortListener;
224
+ module.exports.once = once;
225
+ module.exports.on = on;
226
+ module.exports.getEventListeners = getEventListeners;
227
+ module.exports.getMaxListeners = getMaxListeners;
228
+ // Backwards-compat with node 0.10.x
229
+ EventEmitter.EventEmitter = EventEmitter;
230
+
231
+ EventEmitter.usingDomains = false;
232
+
233
+ EventEmitter.captureRejectionSymbol = kRejection;
234
+ ObjectDefineProperty(EventEmitter, 'captureRejections', {
235
+ __proto__: null,
236
+ get() {
237
+ return EventEmitter.prototype[kCapture];
238
+ },
239
+ set(value) {
240
+ validateBoolean(value, 'EventEmitter.captureRejections');
241
+
242
+ EventEmitter.prototype[kCapture] = value;
243
+ },
244
+ enumerable: true,
245
+ });
246
+
247
+ ObjectDefineProperty(EventEmitter, 'EventEmitterAsyncResource', {
248
+ __proto__: null,
249
+ enumerable: true,
250
+ get: lazyEventEmitterAsyncResource,
251
+ set: undefined,
252
+ configurable: true,
253
+ });
254
+
255
+ EventEmitter.errorMonitor = kErrorMonitor;
256
+
257
+ // The default for captureRejections is false
258
+ ObjectDefineProperty(EventEmitter.prototype, kCapture, {
259
+ __proto__: null,
260
+ value: false,
261
+ writable: true,
262
+ enumerable: false,
263
+ });
264
+
265
+ EventEmitter.prototype._events = undefined;
266
+ EventEmitter.prototype._eventsCount = 0;
267
+ EventEmitter.prototype._maxListeners = undefined;
268
+
269
+ // By default EventEmitters will print a warning if more than 10 listeners are
270
+ // added to it. This is a useful default which helps finding memory leaks.
271
+ let defaultMaxListeners = 10;
272
+ let isEventTarget;
273
+
274
+ function checkListener(listener) {
275
+ validateFunction(listener, 'listener');
276
+ }
277
+
278
+ ObjectDefineProperty(EventEmitter, 'defaultMaxListeners', {
279
+ __proto__: null,
280
+ enumerable: true,
281
+ get: function() {
282
+ return defaultMaxListeners;
283
+ },
284
+ set: function(arg) {
285
+ validateNumber(arg, 'defaultMaxListeners', 0);
286
+ defaultMaxListeners = arg;
287
+ },
288
+ });
289
+
290
+ ObjectDefineProperties(EventEmitter, {
291
+ kMaxEventTargetListeners: {
292
+ __proto__: null,
293
+ value: kMaxEventTargetListeners,
294
+ enumerable: false,
295
+ configurable: false,
296
+ writable: false,
297
+ },
298
+ kMaxEventTargetListenersWarned: {
299
+ __proto__: null,
300
+ value: kMaxEventTargetListenersWarned,
301
+ enumerable: false,
302
+ configurable: false,
303
+ writable: false,
304
+ },
305
+ });
306
+
307
+ /**
308
+ * Sets the max listeners.
309
+ * @param {number} n
310
+ * @param {EventTarget[] | EventEmitter[]} [eventTargets]
311
+ * @returns {void}
312
+ */
313
+ EventEmitter.setMaxListeners =
314
+ function(n = defaultMaxListeners, ...eventTargets) {
315
+ validateNumber(n, 'setMaxListeners', 0);
316
+ if (eventTargets.length === 0) {
317
+ defaultMaxListeners = n;
318
+ } else {
319
+ if (isEventTarget === undefined)
320
+ isEventTarget = require('internal/event_target').isEventTarget;
321
+
322
+ for (let i = 0; i < eventTargets.length; i++) {
323
+ const target = eventTargets[i];
324
+ if (isEventTarget(target)) {
325
+ target[kMaxEventTargetListeners] = n;
326
+ target[kMaxEventTargetListenersWarned] = false;
327
+ } else if (typeof target.setMaxListeners === 'function') {
328
+ target.setMaxListeners(n);
329
+ } else {
330
+ throw new ERR_INVALID_ARG_TYPE(
331
+ 'eventTargets',
332
+ ['EventEmitter', 'EventTarget'],
333
+ target);
334
+ }
335
+ }
336
+ }
337
+ };
338
+
339
+ // If you're updating this function definition, please also update any
340
+ // re-definitions, such as the one in the Domain module (lib/domain.js).
341
+ EventEmitter.init = function(opts) {
342
+
343
+ if (this._events === undefined ||
344
+ this._events === ObjectGetPrototypeOf(this)._events) {
345
+ this._events = { __proto__: null };
346
+ this._eventsCount = 0;
347
+ this[kShapeMode] = false;
348
+ } else {
349
+ this[kShapeMode] = true;
350
+ }
351
+
352
+ this._maxListeners ||= undefined;
353
+
354
+
355
+ if (opts?.captureRejections) {
356
+ validateBoolean(opts.captureRejections, 'options.captureRejections');
357
+ this[kCapture] = Boolean(opts.captureRejections);
358
+ } else {
359
+ // Assigning the kCapture property directly saves an expensive
360
+ // prototype lookup in a very sensitive hot path.
361
+ this[kCapture] = EventEmitter.prototype[kCapture];
362
+ }
363
+ };
364
+
365
+ function addCatch(that, promise, type, args) {
366
+ if (!that[kCapture]) {
367
+ return;
368
+ }
369
+
370
+ // Handle Promises/A+ spec, then could be a getter
371
+ // that throws on second use.
372
+ try {
373
+ const then = promise.then;
374
+
375
+ if (typeof then === 'function') {
376
+ then.call(promise, undefined, function(err) {
377
+ // The callback is called with nextTick to avoid a follow-up
378
+ // rejection from this promise.
379
+ process.nextTick(emitUnhandledRejectionOrErr, that, err, type, args);
380
+ });
381
+ }
382
+ } catch (err) {
383
+ that.emit('error', err);
384
+ }
385
+ }
386
+
387
+ function emitUnhandledRejectionOrErr(ee, err, type, args) {
388
+ if (typeof ee[kRejection] === 'function') {
389
+ ee[kRejection](err, type, ...args);
390
+ } else {
391
+ // We have to disable the capture rejections mechanism, otherwise
392
+ // we might end up in an infinite loop.
393
+ const prev = ee[kCapture];
394
+
395
+ // If the error handler throws, it is not catchable and it
396
+ // will end up in 'uncaughtException'. We restore the previous
397
+ // value of kCapture in case the uncaughtException is present
398
+ // and the exception is handled.
399
+ try {
400
+ ee[kCapture] = false;
401
+ ee.emit('error', err);
402
+ } finally {
403
+ ee[kCapture] = prev;
404
+ }
405
+ }
406
+ }
407
+
408
+ /**
409
+ * Increases the max listeners of the event emitter.
410
+ * @param {number} n
411
+ * @returns {EventEmitter}
412
+ */
413
+ EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {
414
+ validateNumber(n, 'setMaxListeners', 0);
415
+ this._maxListeners = n;
416
+ return this;
417
+ };
418
+
419
+ function _getMaxListeners(that) {
420
+ if (that._maxListeners === undefined)
421
+ return EventEmitter.defaultMaxListeners;
422
+ return that._maxListeners;
423
+ }
424
+
425
+ /**
426
+ * Returns the current max listener value for the event emitter.
427
+ * @returns {number}
428
+ */
429
+ EventEmitter.prototype.getMaxListeners = function getMaxListeners() {
430
+ return _getMaxListeners(this);
431
+ };
432
+
433
+ function enhanceStackTrace(err, own) {
434
+ let ctorInfo = '';
435
+ try {
436
+ const { name } = this.constructor;
437
+ if (name !== 'EventEmitter')
438
+ ctorInfo = ` on ${name} instance`;
439
+ } catch {
440
+ // Continue regardless of error.
441
+ }
442
+ const sep = `\nEmitted 'error' event${ctorInfo} at:\n`;
443
+
444
+ const errStack = ArrayPrototypeSlice(
445
+ StringPrototypeSplit(err.stack, '\n'), 1);
446
+ const ownStack = ArrayPrototypeSlice(
447
+ StringPrototypeSplit(own.stack, '\n'), 1);
448
+
449
+ const { len, offset } = identicalSequenceRange(ownStack, errStack);
450
+ if (len > 0) {
451
+ ArrayPrototypeSplice(ownStack, offset + 1, len - 2,
452
+ ' [... lines matching original stack trace ...]');
453
+ }
454
+
455
+ return err.stack + sep + ArrayPrototypeJoin(ownStack, '\n');
456
+ }
457
+
458
+ /**
459
+ * Synchronously calls each of the listeners registered
460
+ * for the event.
461
+ * @param {string | symbol} type
462
+ * @param {...any} [args]
463
+ * @returns {boolean}
464
+ */
465
+ EventEmitter.prototype.emit = function emit(type, ...args) {
466
+ let doError = (type === 'error');
467
+
468
+ const events = this._events;
469
+ if (events !== undefined) {
470
+ if (doError && events[kErrorMonitor] !== undefined)
471
+ this.emit(kErrorMonitor, ...args);
472
+ doError &&= events.error === undefined;
473
+ } else if (!doError)
474
+ return false;
475
+
476
+ // If there is no 'error' event listener then throw.
477
+ if (doError) {
478
+ let er;
479
+ if (args.length > 0)
480
+ er = args[0];
481
+ if (er instanceof Error) {
482
+ try {
483
+ const capture = {};
484
+ ErrorCaptureStackTrace(capture, EventEmitter.prototype.emit);
485
+ ObjectDefineProperty(er, kEnhanceStackBeforeInspector, {
486
+ __proto__: null,
487
+ value: FunctionPrototypeBind(enhanceStackTrace, this, er, capture),
488
+ configurable: true,
489
+ });
490
+ } catch {
491
+ // Continue regardless of error.
492
+ }
493
+
494
+ // Note: The comments on the `throw` lines are intentional, they show
495
+ // up in Node's output if this results in an unhandled exception.
496
+ throw er; // Unhandled 'error' event
497
+ }
498
+
499
+ let stringifiedEr;
500
+ try {
501
+ stringifiedEr = inspect(er);
502
+ } catch {
503
+ stringifiedEr = er;
504
+ }
505
+
506
+ // At least give some kind of context to the user
507
+ const err = new ERR_UNHANDLED_ERROR(stringifiedEr);
508
+ err.context = er;
509
+ throw err; // Unhandled 'error' event
510
+ }
511
+
512
+ const handler = events[type];
513
+
514
+ if (handler === undefined)
515
+ return false;
516
+
517
+ if (typeof handler === 'function') {
518
+ const result = handler.apply(this, args);
519
+
520
+ // We check if result is undefined first because that
521
+ // is the most common case so we do not pay any perf
522
+ // penalty
523
+ if (result !== undefined && result !== null) {
524
+ addCatch(this, result, type, args);
525
+ }
526
+ } else {
527
+ const len = handler.length;
528
+ const listeners = arrayClone(handler);
529
+ for (let i = 0; i < len; ++i) {
530
+ const result = listeners[i].apply(this, args);
531
+
532
+ // We check if result is undefined first because that
533
+ // is the most common case so we do not pay any perf
534
+ // penalty.
535
+ // This code is duplicated because extracting it away
536
+ // would make it non-inlineable.
537
+ if (result !== undefined && result !== null) {
538
+ addCatch(this, result, type, args);
539
+ }
540
+ }
541
+ }
542
+
543
+ return true;
544
+ };
545
+
546
+ function _addListener(target, type, listener, prepend) {
547
+ let m;
548
+ let events;
549
+ let existing;
550
+
551
+ checkListener(listener);
552
+
553
+ events = target._events;
554
+ if (events === undefined) {
555
+ events = target._events = { __proto__: null };
556
+ target._eventsCount = 0;
557
+ } else {
558
+ // To avoid recursion in the case that type === "newListener"! Before
559
+ // adding it to the listeners, first emit "newListener".
560
+ if (events.newListener !== undefined) {
561
+ target.emit('newListener', type,
562
+ listener.listener ?? listener);
563
+
564
+ // Re-assign `events` because a newListener handler could have caused the
565
+ // this._events to be assigned to a new object
566
+ events = target._events;
567
+ }
568
+ existing = events[type];
569
+ }
570
+
571
+ if (existing === undefined) {
572
+ // Optimize the case of one listener. Don't need the extra array object.
573
+ events[type] = listener;
574
+ ++target._eventsCount;
575
+ } else {
576
+ if (typeof existing === 'function') {
577
+ // Adding the second element, need to change to array.
578
+ existing = events[type] =
579
+ prepend ? [listener, existing] : [existing, listener];
580
+ // If we've already got an array, just append.
581
+ } else if (prepend) {
582
+ existing.unshift(listener);
583
+ } else {
584
+ existing.push(listener);
585
+ }
586
+
587
+ // Check for listener leak
588
+ m = _getMaxListeners(target);
589
+ if (m > 0 && existing.length > m && !existing.warned) {
590
+ existing.warned = true;
591
+ // No error code for this since it is a Warning
592
+ const w = genericNodeError(
593
+ `Possible EventEmitter memory leak detected. ${existing.length} ${String(type)} listeners ` +
594
+ `added to ${inspect(target, { depth: -1 })}. MaxListeners is ${m}. Use emitter.setMaxListeners() to increase limit`,
595
+ { name: 'MaxListenersExceededWarning', emitter: target, type: type, count: existing.length });
596
+ process.emitWarning(w);
597
+ }
598
+ }
599
+
600
+ return target;
601
+ }
602
+
603
+ /**
604
+ * Adds a listener to the event emitter.
605
+ * @param {string | symbol} type
606
+ * @param {Function} listener
607
+ * @returns {EventEmitter}
608
+ */
609
+ EventEmitter.prototype.addListener = function addListener(type, listener) {
610
+ return _addListener(this, type, listener, false);
611
+ };
612
+
613
+ EventEmitter.prototype.on = EventEmitter.prototype.addListener;
614
+
615
+ /**
616
+ * Adds the `listener` function to the beginning of
617
+ * the listeners array.
618
+ * @param {string | symbol} type
619
+ * @param {Function} listener
620
+ * @returns {EventEmitter}
621
+ */
622
+ EventEmitter.prototype.prependListener =
623
+ function prependListener(type, listener) {
624
+ return _addListener(this, type, listener, true);
625
+ };
626
+
627
+ function onceWrapper() {
628
+ if (!this.fired) {
629
+ this.target.removeListener(this.type, this.wrapFn);
630
+ this.fired = true;
631
+ if (arguments.length === 0)
632
+ return this.listener.call(this.target);
633
+ return this.listener.apply(this.target, arguments);
634
+ }
635
+ }
636
+
637
+ function _onceWrap(target, type, listener) {
638
+ const state = { fired: false, wrapFn: undefined, target, type, listener };
639
+ const wrapped = onceWrapper.bind(state);
640
+ wrapped.listener = listener;
641
+ state.wrapFn = wrapped;
642
+ return wrapped;
643
+ }
644
+
645
+ /**
646
+ * Adds a one-time `listener` function to the event emitter.
647
+ * @param {string | symbol} type
648
+ * @param {Function} listener
649
+ * @returns {EventEmitter}
650
+ */
651
+ EventEmitter.prototype.once = function once(type, listener) {
652
+ checkListener(listener);
653
+
654
+ this.on(type, _onceWrap(this, type, listener));
655
+ return this;
656
+ };
657
+
658
+ /**
659
+ * Adds a one-time `listener` function to the beginning of
660
+ * the listeners array.
661
+ * @param {string | symbol} type
662
+ * @param {Function} listener
663
+ * @returns {EventEmitter}
664
+ */
665
+ EventEmitter.prototype.prependOnceListener =
666
+ function prependOnceListener(type, listener) {
667
+ checkListener(listener);
668
+
669
+ this.prependListener(type, _onceWrap(this, type, listener));
670
+ return this;
671
+ };
672
+
673
+ /**
674
+ * Removes the specified `listener` from the listeners array.
675
+ * @param {string | symbol} type
676
+ * @param {Function} listener
677
+ * @returns {EventEmitter}
678
+ */
679
+ EventEmitter.prototype.removeListener =
680
+ function removeListener(type, listener) {
681
+ checkListener(listener);
682
+
683
+ const events = this._events;
684
+ if (events === undefined)
685
+ return this;
686
+
687
+ const list = events[type];
688
+ if (list === undefined)
689
+ return this;
690
+
691
+ if (list === listener || list.listener === listener) {
692
+ this._eventsCount -= 1;
693
+
694
+ if (this[kShapeMode]) {
695
+ events[type] = undefined;
696
+ } else if (this._eventsCount === 0) {
697
+ this._events = { __proto__: null };
698
+ } else {
699
+ delete events[type];
700
+ if (events.removeListener)
701
+ this.emit('removeListener', type, list.listener || listener);
702
+ }
703
+ } else if (typeof list !== 'function') {
704
+ let position = -1;
705
+
706
+ for (let i = list.length - 1; i >= 0; i--) {
707
+ if (list[i] === listener || list[i].listener === listener) {
708
+ position = i;
709
+ break;
710
+ }
711
+ }
712
+
713
+ if (position < 0)
714
+ return this;
715
+
716
+ if (position === 0)
717
+ list.shift();
718
+ else {
719
+ spliceOne(list, position);
720
+ }
721
+
722
+ if (list.length === 1)
723
+ events[type] = list[0];
724
+
725
+ if (events.removeListener !== undefined)
726
+ this.emit('removeListener', type, listener);
727
+ }
728
+
729
+ return this;
730
+ };
731
+
732
+ EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
733
+
734
+ /**
735
+ * Removes all listeners from the event emitter. (Only
736
+ * removes listeners for a specific event name if specified
737
+ * as `type`).
738
+ * @param {string | symbol} [type]
739
+ * @returns {EventEmitter}
740
+ */
741
+ EventEmitter.prototype.removeAllListeners =
742
+ function removeAllListeners(type) {
743
+ const events = this._events;
744
+ if (events === undefined)
745
+ return this;
746
+
747
+ // Not listening for removeListener, no need to emit
748
+ if (events.removeListener === undefined) {
749
+ if (arguments.length === 0) {
750
+ this._events = { __proto__: null };
751
+ this._eventsCount = 0;
752
+ } else if (events[type] !== undefined) {
753
+ if (--this._eventsCount === 0)
754
+ this._events = { __proto__: null };
755
+ else
756
+ delete events[type];
757
+ }
758
+ this[kShapeMode] = false;
759
+ return this;
760
+ }
761
+
762
+ // Emit removeListener for all listeners on all events
763
+ if (arguments.length === 0) {
764
+ for (const key of ReflectOwnKeys(events)) {
765
+ if (key === 'removeListener') continue;
766
+ this.removeAllListeners(key);
767
+ }
768
+ this.removeAllListeners('removeListener');
769
+ this._events = { __proto__: null };
770
+ this._eventsCount = 0;
771
+ this[kShapeMode] = false;
772
+ return this;
773
+ }
774
+
775
+ const listeners = events[type];
776
+
777
+ if (typeof listeners === 'function') {
778
+ this.removeListener(type, listeners);
779
+ } else if (listeners !== undefined) {
780
+ // LIFO order
781
+ for (let i = listeners.length - 1; i >= 0; i--) {
782
+ this.removeListener(type, listeners[i]);
783
+ }
784
+ }
785
+
786
+ return this;
787
+ };
788
+
789
+ function _listeners(target, type, unwrap) {
790
+ const events = target._events;
791
+
792
+ if (events === undefined)
793
+ return [];
794
+
795
+ const evlistener = events[type];
796
+ if (evlistener === undefined)
797
+ return [];
798
+
799
+ if (typeof evlistener === 'function')
800
+ return unwrap ? [evlistener.listener || evlistener] : [evlistener];
801
+
802
+ return unwrap ?
803
+ unwrapListeners(evlistener) : arrayClone(evlistener);
804
+ }
805
+
806
+ /**
807
+ * Returns a copy of the array of listeners for the event name
808
+ * specified as `type`.
809
+ * @param {string | symbol} type
810
+ * @returns {Function[]}
811
+ */
812
+ EventEmitter.prototype.listeners = function listeners(type) {
813
+ return _listeners(this, type, true);
814
+ };
815
+
816
+ /**
817
+ * Returns a copy of the array of listeners and wrappers for
818
+ * the event name specified as `type`.
819
+ * @param {string | symbol} type
820
+ * @returns {Function[]}
821
+ */
822
+ EventEmitter.prototype.rawListeners = function rawListeners(type) {
823
+ return _listeners(this, type, false);
824
+ };
825
+
826
+ /**
827
+ * Returns the number of listeners listening to the event name
828
+ * specified as `type`.
829
+ * @deprecated since v3.2.0
830
+ * @param {EventEmitter} emitter
831
+ * @param {string | symbol} type
832
+ * @returns {number}
833
+ */
834
+ EventEmitter.listenerCount = function(emitter, type) {
835
+ if (typeof emitter.listenerCount === 'function') {
836
+ return emitter.listenerCount(type);
837
+ }
838
+ return FunctionPrototypeCall(listenerCount, emitter, type);
839
+ };
840
+
841
+ EventEmitter.prototype.listenerCount = listenerCount;
842
+
843
+ /**
844
+ * Returns the number of listeners listening to event name
845
+ * specified as `type`.
846
+ * @param {string | symbol} type
847
+ * @param {Function} listener
848
+ * @returns {number}
849
+ */
850
+ function listenerCount(type, listener) {
851
+ const events = this._events;
852
+
853
+ if (events !== undefined) {
854
+ const evlistener = events[type];
855
+
856
+ if (typeof evlistener === 'function') {
857
+ if (listener != null) {
858
+ return listener === evlistener || listener === evlistener.listener ? 1 : 0;
859
+ }
860
+
861
+ return 1;
862
+ } else if (evlistener !== undefined) {
863
+ if (listener != null) {
864
+ let matching = 0;
865
+
866
+ for (let i = 0, l = evlistener.length; i < l; i++) {
867
+ if (evlistener[i] === listener || evlistener[i].listener === listener) {
868
+ matching++;
869
+ }
870
+ }
871
+
872
+ return matching;
873
+ }
874
+
875
+ return evlistener.length;
876
+ }
877
+ }
878
+
879
+ return 0;
880
+ }
881
+
882
+ /**
883
+ * Returns an array listing the events for which
884
+ * the emitter has registered listeners.
885
+ * @returns {(string | symbol)[]}
886
+ */
887
+ EventEmitter.prototype.eventNames = function eventNames() {
888
+ return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];
889
+ };
890
+
891
+ function arrayClone(arr) {
892
+ // At least since V8 8.3, this implementation is faster than the previous
893
+ // which always used a simple for-loop
894
+ switch (arr.length) {
895
+ case 2: return [arr[0], arr[1]];
896
+ case 3: return [arr[0], arr[1], arr[2]];
897
+ case 4: return [arr[0], arr[1], arr[2], arr[3]];
898
+ case 5: return [arr[0], arr[1], arr[2], arr[3], arr[4]];
899
+ case 6: return [arr[0], arr[1], arr[2], arr[3], arr[4], arr[5]];
900
+ }
901
+ return ArrayPrototypeSlice(arr);
902
+ }
903
+
904
+ function unwrapListeners(arr) {
905
+ const ret = arrayClone(arr);
906
+ for (let i = 0; i < ret.length; ++i) {
907
+ const orig = ret[i].listener;
908
+ if (typeof orig === 'function')
909
+ ret[i] = orig;
910
+ }
911
+ return ret;
912
+ }
913
+
914
+ /**
915
+ * Returns a copy of the array of listeners for the event name
916
+ * specified as `type`.
917
+ * @param {EventEmitter | EventTarget} emitterOrTarget
918
+ * @param {string | symbol} type
919
+ * @returns {Function[]}
920
+ */
921
+ function getEventListeners(emitterOrTarget, type) {
922
+ // First check if EventEmitter
923
+ if (typeof emitterOrTarget.listeners === 'function') {
924
+ return emitterOrTarget.listeners(type);
925
+ }
926
+ // Require event target lazily to avoid always loading it
927
+ const { isEventTarget, kEvents } = require('internal/event_target');
928
+ if (isEventTarget(emitterOrTarget)) {
929
+ const root = emitterOrTarget[kEvents].get(type);
930
+ const listeners = [];
931
+ let handler = root?.next;
932
+ while (handler?.listener !== undefined) {
933
+ const listener = handler.listener?.deref ?
934
+ handler.listener.deref() : handler.listener;
935
+ listeners.push(listener);
936
+ handler = handler.next;
937
+ }
938
+ return listeners;
939
+ }
940
+ throw new ERR_INVALID_ARG_TYPE('emitter',
941
+ ['EventEmitter', 'EventTarget'],
942
+ emitterOrTarget);
943
+ }
944
+
945
+ /**
946
+ * Returns the max listeners set.
947
+ * @param {EventEmitter | EventTarget} emitterOrTarget
948
+ * @returns {number}
949
+ */
950
+ function getMaxListeners(emitterOrTarget) {
951
+ if (typeof emitterOrTarget?.getMaxListeners === 'function') {
952
+ return _getMaxListeners(emitterOrTarget);
953
+ } else if (typeof emitterOrTarget?.[kMaxEventTargetListeners] === 'number') {
954
+ return emitterOrTarget[kMaxEventTargetListeners];
955
+ }
956
+
957
+ throw new ERR_INVALID_ARG_TYPE('emitter',
958
+ ['EventEmitter', 'EventTarget'],
959
+ emitterOrTarget);
960
+ }
961
+
962
+ /**
963
+ * Creates a `Promise` that is fulfilled when the emitter
964
+ * emits the given event.
965
+ * @param {EventEmitter} emitter
966
+ * @param {string | symbol} name
967
+ * @param {{ signal: AbortSignal; }} [options]
968
+ * @returns {Promise}
969
+ */
970
+ async function once(emitter, name, options = kEmptyObject) {
971
+ validateObject(options, 'options');
972
+ const { signal } = options;
973
+ validateAbortSignal(signal, 'options.signal');
974
+ if (signal?.aborted)
975
+ throw new AbortError(undefined, { cause: signal.reason });
976
+ return new Promise((resolve, reject) => {
977
+ const errorListener = (err) => {
978
+ emitter.removeListener(name, resolver);
979
+ if (signal != null) {
980
+ eventTargetAgnosticRemoveListener(signal, 'abort', abortListener);
981
+ }
982
+ reject(err);
983
+ };
984
+ const resolver = (...args) => {
985
+ if (typeof emitter.removeListener === 'function') {
986
+ emitter.removeListener('error', errorListener);
987
+ }
988
+ if (signal != null) {
989
+ eventTargetAgnosticRemoveListener(signal, 'abort', abortListener);
990
+ }
991
+ resolve(args);
992
+ };
993
+
994
+ kResistStopPropagation ??= require('internal/event_target').kResistStopPropagation;
995
+ const opts = { __proto__: null, once: true, [kResistStopPropagation]: true };
996
+ eventTargetAgnosticAddListener(emitter, name, resolver, opts);
997
+ if (name !== 'error' && typeof emitter.once === 'function') {
998
+ // EventTarget does not have `error` event semantics like Node
999
+ // EventEmitters, we listen to `error` events only on EventEmitters.
1000
+ emitter.once('error', errorListener);
1001
+ }
1002
+ function abortListener() {
1003
+ eventTargetAgnosticRemoveListener(emitter, name, resolver);
1004
+ eventTargetAgnosticRemoveListener(emitter, 'error', errorListener);
1005
+ reject(new AbortError(undefined, { cause: signal?.reason }));
1006
+ }
1007
+ if (signal != null) {
1008
+ eventTargetAgnosticAddListener(
1009
+ signal, 'abort', abortListener, { __proto__: null, once: true, [kResistStopPropagation]: true });
1010
+ }
1011
+ });
1012
+ }
1013
+
1014
+ const AsyncIteratorPrototype = ObjectGetPrototypeOf(
1015
+ ObjectGetPrototypeOf(async function* () {}).prototype);
1016
+
1017
+ function createIterResult(value, done) {
1018
+ return { value, done };
1019
+ }
1020
+
1021
+ function eventTargetAgnosticRemoveListener(emitter, name, listener, flags) {
1022
+ if (typeof emitter.removeListener === 'function') {
1023
+ emitter.removeListener(name, listener);
1024
+ } else if (typeof emitter.removeEventListener === 'function') {
1025
+ emitter.removeEventListener(name, listener, flags);
1026
+ } else {
1027
+ throw new ERR_INVALID_ARG_TYPE('emitter', 'EventEmitter', emitter);
1028
+ }
1029
+ }
1030
+
1031
+ function eventTargetAgnosticAddListener(emitter, name, listener, flags) {
1032
+ if (typeof emitter.on === 'function') {
1033
+ if (flags?.once) {
1034
+ emitter.once(name, listener);
1035
+ } else {
1036
+ emitter.on(name, listener);
1037
+ }
1038
+ } else if (typeof emitter.addEventListener === 'function') {
1039
+ emitter.addEventListener(name, listener, flags);
1040
+ } else {
1041
+ throw new ERR_INVALID_ARG_TYPE('emitter', 'EventEmitter', emitter);
1042
+ }
1043
+ }
1044
+
1045
+ /**
1046
+ * Returns an `AsyncIterator` that iterates `event` events.
1047
+ * @param {EventEmitter} emitter
1048
+ * @param {string | symbol} event
1049
+ * @param {{
1050
+ * signal: AbortSignal;
1051
+ * close?: string[];
1052
+ * highWaterMark?: number,
1053
+ * lowWaterMark?: number
1054
+ * }} [options]
1055
+ * @returns {AsyncIterator}
1056
+ */
1057
+ function on(emitter, event, options = kEmptyObject) {
1058
+ // Parameters validation
1059
+ validateObject(options, 'options');
1060
+ const signal = options.signal;
1061
+ validateAbortSignal(signal, 'options.signal');
1062
+ if (signal?.aborted)
1063
+ throw new AbortError(undefined, { cause: signal.reason });
1064
+ // Support both highWaterMark and highWatermark for backward compatibility
1065
+ const highWatermark = options.highWaterMark ?? options.highWatermark ?? NumberMAX_SAFE_INTEGER;
1066
+ validateInteger(highWatermark, 'options.highWaterMark', 1);
1067
+ // Support both lowWaterMark and lowWatermark for backward compatibility
1068
+ const lowWatermark = options.lowWaterMark ?? options.lowWatermark ?? 1;
1069
+ validateInteger(lowWatermark, 'options.lowWaterMark', 1);
1070
+
1071
+ // Preparing controlling queues and variables
1072
+ FixedQueue ??= require('internal/fixed_queue');
1073
+ const unconsumedEvents = new FixedQueue();
1074
+ const unconsumedPromises = new FixedQueue();
1075
+ let paused = false;
1076
+ let error = null;
1077
+ let finished = false;
1078
+ let size = 0;
1079
+
1080
+ const iterator = ObjectSetPrototypeOf({
1081
+ next() {
1082
+ // First, we consume all unread events
1083
+ if (size) {
1084
+ const value = unconsumedEvents.shift();
1085
+ size--;
1086
+ if (paused && size < lowWatermark) {
1087
+ emitter.resume();
1088
+ paused = false;
1089
+ }
1090
+ return PromiseResolve(createIterResult(value, false));
1091
+ }
1092
+
1093
+ // Then we error, if an error happened
1094
+ // This happens one time if at all, because after 'error'
1095
+ // we stop listening
1096
+ if (error) {
1097
+ const p = PromiseReject(error);
1098
+ // Only the first element errors
1099
+ error = null;
1100
+ return p;
1101
+ }
1102
+
1103
+ // If the iterator is finished, resolve to done
1104
+ if (finished) return closeHandler();
1105
+
1106
+ // Wait until an event happens
1107
+ return new Promise(function(resolve, reject) {
1108
+ unconsumedPromises.push({ resolve, reject });
1109
+ });
1110
+ },
1111
+
1112
+ return() {
1113
+ return closeHandler();
1114
+ },
1115
+
1116
+ throw(err) {
1117
+ if (!err || !(err instanceof Error)) {
1118
+ throw new ERR_INVALID_ARG_TYPE('EventEmitter.AsyncIterator',
1119
+ 'Error', err);
1120
+ }
1121
+ errorHandler(err);
1122
+ },
1123
+ [SymbolAsyncIterator]() {
1124
+ return this;
1125
+ },
1126
+ [kWatermarkData]: {
1127
+ /**
1128
+ * The current queue size
1129
+ */
1130
+ get size() {
1131
+ return size;
1132
+ },
1133
+ /**
1134
+ * The low watermark. The emitter is resumed every time size is lower than it
1135
+ */
1136
+ get low() {
1137
+ return lowWatermark;
1138
+ },
1139
+ /**
1140
+ * The high watermark. The emitter is paused every time size is higher than it
1141
+ */
1142
+ get high() {
1143
+ return highWatermark;
1144
+ },
1145
+ /**
1146
+ * It checks whether the emitter is paused by the watermark controller or not
1147
+ */
1148
+ get isPaused() {
1149
+ return paused;
1150
+ },
1151
+ },
1152
+ }, AsyncIteratorPrototype);
1153
+
1154
+ // Adding event handlers
1155
+ const { addEventListener, removeAll } = listenersController();
1156
+ kFirstEventParam ??= require('internal/events/symbols').kFirstEventParam;
1157
+ addEventListener(emitter, event, options[kFirstEventParam] ? eventHandler : function(...args) {
1158
+ return eventHandler(args);
1159
+ });
1160
+ if (event !== 'error' && typeof emitter.on === 'function') {
1161
+ addEventListener(emitter, 'error', errorHandler);
1162
+ }
1163
+ const closeEvents = options?.close;
1164
+ if (closeEvents?.length) {
1165
+ for (let i = 0; i < closeEvents.length; i++) {
1166
+ addEventListener(emitter, closeEvents[i], closeHandler);
1167
+ }
1168
+ }
1169
+
1170
+ const abortListenerDisposable = signal ? addAbortListener(signal, abortListener) : null;
1171
+
1172
+ return iterator;
1173
+
1174
+ function abortListener() {
1175
+ errorHandler(new AbortError(undefined, { cause: signal?.reason }));
1176
+ }
1177
+
1178
+ function eventHandler(value) {
1179
+ if (unconsumedPromises.isEmpty()) {
1180
+ size++;
1181
+ if (!paused && size > highWatermark) {
1182
+ paused = true;
1183
+ emitter.pause();
1184
+ }
1185
+ unconsumedEvents.push(value);
1186
+ } else unconsumedPromises.shift().resolve(createIterResult(value, false));
1187
+ }
1188
+
1189
+ function errorHandler(err) {
1190
+ if (unconsumedPromises.isEmpty()) error = err;
1191
+ else unconsumedPromises.shift().reject(err);
1192
+
1193
+ closeHandler();
1194
+ }
1195
+
1196
+ function closeHandler() {
1197
+ abortListenerDisposable?.[SymbolDispose]();
1198
+ removeAll();
1199
+ finished = true;
1200
+ const doneResult = createIterResult(undefined, true);
1201
+ while (!unconsumedPromises.isEmpty()) {
1202
+ unconsumedPromises.shift().resolve(doneResult);
1203
+ }
1204
+
1205
+ return PromiseResolve(doneResult);
1206
+ }
1207
+ }
1208
+
1209
+ function listenersController() {
1210
+ const listeners = [];
1211
+
1212
+ return {
1213
+ addEventListener(emitter, event, handler, flags) {
1214
+ eventTargetAgnosticAddListener(emitter, event, handler, flags);
1215
+ ArrayPrototypePush(listeners, [emitter, event, handler, flags]);
1216
+ },
1217
+ removeAll() {
1218
+ while (listeners.length > 0) {
1219
+ ReflectApply(eventTargetAgnosticRemoveListener, undefined, ArrayPrototypePop(listeners));
1220
+ }
1221
+ },
1222
+ };
1223
+ }