@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,589 @@
1
+ /**
2
+ * Dependency Resolver
3
+ * Resolves full dependency tree with semver version constraints
4
+ */
5
+
6
+ import { Registry, PackageVersion, encodePackageName } from './registry';
7
+
8
+ declare global {
9
+ /**
10
+ * The lockfile the page read for the project being installed, name to the
11
+ * version it pinned. The engine builds its package manager itself, with no
12
+ * options of ours, so the page hands the records over through globals.
13
+ */
14
+ // eslint-disable-next-line no-var
15
+ var __browserRuntimeLockfilePins: Map<string, string> | undefined;
16
+ /** Every version the lockfile recorded, by package name and then version. */
17
+ // eslint-disable-next-line no-var
18
+ var __browserRuntimeLockfileRecords: Map<string, Map<string, LockfileRecord>> | undefined;
19
+ }
20
+
21
+ /** One version as a lockfile wrote it down. */
22
+ export interface LockfileRecord {
23
+ resolved?: string;
24
+ dependencies?: Record<string, string>;
25
+ peerDependencies?: Record<string, string>;
26
+ peerDependenciesMeta?: Record<string, { optional?: boolean }>;
27
+ optionalDependencies?: Record<string, string>;
28
+ }
29
+
30
+ export interface ResolvedPackage {
31
+ name: string;
32
+ version: string;
33
+ tarballUrl: string;
34
+ dependencies: Record<string, string>;
35
+ }
36
+
37
+ /**
38
+ * Every package at the top of the tree, plus, under `__nested`, the ones a
39
+ * dependent gets under its own `node_modules`, keyed by their placement.
40
+ */
41
+ export interface ResolvedTree extends Map<string, ResolvedPackage> {
42
+ __nested?: Map<string, ResolvedPackage>;
43
+ }
44
+
45
+ export interface ResolveOptions {
46
+ registry?: Registry;
47
+ includeDev?: boolean;
48
+ includeOptional?: boolean;
49
+ onProgress?: (message: string) => void;
50
+ }
51
+
52
+ interface ResolveContext {
53
+ registry: Registry;
54
+ resolved: ResolvedTree;
55
+ resolving: Set<string>;
56
+ options: ResolveOptions;
57
+ /** A dependent's own `node_modules`, by placement; see `__browserRuntimeNest`. */
58
+ nested?: Map<string, ResolvedPackage>;
59
+ /** The dependencies of each root package chosen in the first pass, descended in the second. */
60
+ rootDeps?: Map<string, Record<string, string>>;
61
+ }
62
+
63
+ /**
64
+ * Parse a semver version string into components
65
+ */
66
+ function parseVersion(version: string): {
67
+ major: number;
68
+ minor: number;
69
+ patch: number;
70
+ prerelease?: string;
71
+ } | null {
72
+ const match = version.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);
73
+ if (!match) return null;
74
+
75
+ return {
76
+ major: parseInt(match[1], 10),
77
+ minor: parseInt(match[2], 10),
78
+ patch: parseInt(match[3], 10),
79
+ prerelease: match[4],
80
+ };
81
+ }
82
+
83
+ /**
84
+ * Compare two semver versions
85
+ * Returns: -1 if a < b, 0 if a == b, 1 if a > b
86
+ */
87
+ function compareVersions(a: string, b: string): number {
88
+ const parsedA = parseVersion(a);
89
+ const parsedB = parseVersion(b);
90
+
91
+ if (!parsedA || !parsedB) {
92
+ return a.localeCompare(b);
93
+ }
94
+
95
+ if (parsedA.major !== parsedB.major) {
96
+ return parsedA.major - parsedB.major;
97
+ }
98
+ if (parsedA.minor !== parsedB.minor) {
99
+ return parsedA.minor - parsedB.minor;
100
+ }
101
+ if (parsedA.patch !== parsedB.patch) {
102
+ return parsedA.patch - parsedB.patch;
103
+ }
104
+
105
+ // Prerelease versions are lower than release versions
106
+ if (parsedA.prerelease && !parsedB.prerelease) return -1;
107
+ if (!parsedA.prerelease && parsedB.prerelease) return 1;
108
+ if (parsedA.prerelease && parsedB.prerelease) {
109
+ return parsedA.prerelease.localeCompare(parsedB.prerelease);
110
+ }
111
+
112
+ return 0;
113
+ }
114
+
115
+ /**
116
+ * Check if a version satisfies a semver range
117
+ */
118
+ function satisfies(version: string, range: string): boolean {
119
+ const parsed = parseVersion(version);
120
+ if (!parsed) return false;
121
+
122
+ // Skip prerelease versions unless explicitly requested
123
+ if (parsed.prerelease && !range.includes('-')) {
124
+ return false;
125
+ }
126
+
127
+ range = range.trim();
128
+ // A lone `=` or `v` before a whole version means that version: SvelteKit's tree
129
+ // pins `@oxc-project/types@=0.148.0`, which fell through every branch below.
130
+ range = range.replace(/^=\s*/, "").replace(/^v(?=\d)/, "");
131
+ range = range.replace(/(>=|<=|>|<|=)\s*(\d+)(\.\d+)?(?![.\d])/g, (__m: string, __op: string, __major: string, __minor: string | undefined) => __op + " " + __major + (__minor === void 0 ? ".0.0" : __minor + ".0"));
132
+ // Real packages also write partial caret/tilde ranges (`^1`, `~1.2`), which
133
+ // the whole-version branches below never matched.
134
+ const __browserRuntimePartialRange = range.match(/^([~^])(\d+)(?:\.(\d+))?(?:\.(\d+))?$/);
135
+ if (__browserRuntimePartialRange) {
136
+ const operator = __browserRuntimePartialRange[1];
137
+ const major = Number(__browserRuntimePartialRange[2]);
138
+ const hasMinor = __browserRuntimePartialRange[3] !== void 0;
139
+ const hasPatch = __browserRuntimePartialRange[4] !== void 0;
140
+ const minor = Number(__browserRuntimePartialRange[3] ?? 0);
141
+ const patch = Number(__browserRuntimePartialRange[4] ?? 0);
142
+ const lower = major + "." + minor + "." + patch;
143
+ let upper: string;
144
+ if (operator === "~") {
145
+ upper = hasMinor ? major + "." + (minor + 1) + ".0" : major + 1 + ".0.0";
146
+ } else if (major > 0 || !hasMinor) {
147
+ upper = major + 1 + ".0.0";
148
+ } else if (minor > 0 || !hasPatch) {
149
+ upper = "0." + (minor + 1) + ".0";
150
+ } else {
151
+ upper = "0.0." + (patch + 1);
152
+ }
153
+ return compareVersions(version, lower) >= 0 && compareVersions(version, upper) < 0;
154
+ }
155
+
156
+ // Exact version
157
+ if (/^\d+\.\d+\.\d+/.test(range) && !range.includes(' ')) {
158
+ const rangeMatch = range.match(/^(\d+\.\d+\.\d+(?:-[^\s]+)?)/);
159
+ if (rangeMatch) {
160
+ return compareVersions(version, rangeMatch[1]) === 0;
161
+ }
162
+ }
163
+
164
+ // Latest or * - any version
165
+ if (range === '*' || range === 'latest' || range === '') {
166
+ return true;
167
+ }
168
+
169
+ // Multiple ranges with ||
170
+ if (range.includes('||')) {
171
+ return range.split('||').some((r) => satisfies(version, r.trim()));
172
+ }
173
+
174
+ // Range with hyphen: 1.0.0 - 2.0.0
175
+ if (range.includes(' - ')) {
176
+ const [min, max] = range.split(' - ').map((s) => s.trim());
177
+ return compareVersions(version, min) >= 0 && compareVersions(version, max) <= 0;
178
+ }
179
+
180
+ // Compound ranges with operators: >= 2.1.2 < 3.0.0
181
+ // Parse all operators and versions from the range
182
+ const operatorMatches = range.match(/(>=|<=|>|<|=)?\s*(\d+\.\d+\.\d+(?:-[^\s]*)?)/g);
183
+ if (operatorMatches && operatorMatches.length > 1) {
184
+ return operatorMatches.every((match) => {
185
+ const m = match.match(/^(>=|<=|>|<|=)?\s*(\d+\.\d+\.\d+(?:-[^\s]*)?)$/);
186
+ if (!m) return true;
187
+ const op = m[1] || '=';
188
+ const ver = m[2];
189
+ switch (op) {
190
+ case '>=': return compareVersions(version, ver) >= 0;
191
+ case '<=': return compareVersions(version, ver) <= 0;
192
+ case '>': return compareVersions(version, ver) > 0;
193
+ case '<': return compareVersions(version, ver) < 0;
194
+ case '=': return compareVersions(version, ver) === 0;
195
+ default: return compareVersions(version, ver) === 0;
196
+ }
197
+ });
198
+ }
199
+
200
+ // Caret range: ^1.2.3 means >=1.2.3 <2.0.0 (or <1.3.0 if major is 0)
201
+ if (range.startsWith('^')) {
202
+ const base = range.slice(1);
203
+ const baseParsed = parseVersion(base);
204
+ if (!baseParsed) return false;
205
+
206
+ if (parsed.major !== baseParsed.major) {
207
+ return false;
208
+ }
209
+
210
+ if (baseParsed.major === 0) {
211
+ // ^0.x.y is more restrictive
212
+ if (baseParsed.minor !== 0 && parsed.minor !== baseParsed.minor) {
213
+ return false;
214
+ }
215
+ if (baseParsed.minor === 0 && parsed.minor !== 0) {
216
+ return false;
217
+ }
218
+ }
219
+
220
+ return compareVersions(version, base) >= 0;
221
+ }
222
+
223
+ // Tilde range: ~1.2.3 means >=1.2.3 <1.3.0
224
+ if (range.startsWith('~')) {
225
+ const base = range.slice(1);
226
+ const baseParsed = parseVersion(base);
227
+ if (!baseParsed) return false;
228
+
229
+ if (parsed.major !== baseParsed.major || parsed.minor !== baseParsed.minor) {
230
+ return false;
231
+ }
232
+
233
+ return compareVersions(version, base) >= 0;
234
+ }
235
+
236
+ // Greater than or equal: >=1.2.3
237
+ if (range.startsWith('>=')) {
238
+ const base = range.slice(2).trim();
239
+ return compareVersions(version, base) >= 0;
240
+ }
241
+
242
+ // Greater than: >1.2.3
243
+ if (range.startsWith('>')) {
244
+ const base = range.slice(1).trim();
245
+ return compareVersions(version, base) > 0;
246
+ }
247
+
248
+ // Less than or equal: <=1.2.3
249
+ if (range.startsWith('<=')) {
250
+ const base = range.slice(2).trim();
251
+ return compareVersions(version, base) <= 0;
252
+ }
253
+
254
+ // Less than: <1.2.3
255
+ if (range.startsWith('<')) {
256
+ const base = range.slice(1).trim();
257
+ return compareVersions(version, base) < 0;
258
+ }
259
+
260
+ // X-ranges: 1.x, 1.2.x, 1, 1.2
261
+ if (range.includes('x') || range.includes('X') || /^\d+$/.test(range) || /^\d+\.\d+$/.test(range)) {
262
+ const parts = range.replace(/[xX]/g, '').split('.').filter(Boolean);
263
+
264
+ if (parts.length === 1) {
265
+ return parsed.major === parseInt(parts[0], 10);
266
+ }
267
+ if (parts.length === 2) {
268
+ return (
269
+ parsed.major === parseInt(parts[0], 10) &&
270
+ parsed.minor === parseInt(parts[1], 10)
271
+ );
272
+ }
273
+ }
274
+
275
+ // Multiple conditions with space (AND) - handle simple cases
276
+ if (range.includes(' ')) {
277
+ const conditions = range.split(/\s+/).filter(Boolean);
278
+ return conditions.every((r) => satisfies(version, r));
279
+ }
280
+
281
+ // Fallback: try exact match
282
+ return compareVersions(version, range) === 0;
283
+ }
284
+
285
+ /**
286
+ * Find the best matching version from available versions
287
+ */
288
+ function findBestVersion(versions: string[], range: string): string | null {
289
+ // Sort versions in descending order
290
+ const sorted = [...versions].sort((a, b) => compareVersions(b, a));
291
+
292
+ // Find the first version that satisfies the range
293
+ for (const version of sorted) {
294
+ if (satisfies(version, range)) {
295
+ return version;
296
+ }
297
+ }
298
+
299
+ return null;
300
+ }
301
+
302
+ /**
303
+ * Resolve all dependencies for a package
304
+ */
305
+ export async function resolveDependencies(
306
+ packageName: string,
307
+ versionRange: string = 'latest',
308
+ options: ResolveOptions = {}
309
+ ): Promise<Map<string, ResolvedPackage>> {
310
+ const registry = options.registry || new Registry();
311
+ const context: ResolveContext = {
312
+ registry,
313
+ resolved: new Map(),
314
+ resolving: new Set(),
315
+ options,
316
+ };
317
+
318
+ await resolvePackage(packageName, versionRange, context);
319
+
320
+ context.resolved.__nested = context.nested;
321
+ return context.resolved;
322
+ }
323
+
324
+ /**
325
+ * Resolve dependencies from a package.json
326
+ */
327
+ export async function resolveFromPackageJson(
328
+ packageJson: {
329
+ dependencies?: Record<string, string>;
330
+ devDependencies?: Record<string, string>;
331
+ },
332
+ options: ResolveOptions = {}
333
+ ): Promise<Map<string, ResolvedPackage>> {
334
+ const registry = options.registry || new Registry();
335
+ const context: ResolveContext = {
336
+ registry,
337
+ resolved: new Map(),
338
+ resolving: new Set(),
339
+ options,
340
+ };
341
+
342
+ const deps = { ...packageJson.dependencies };
343
+
344
+ if (options.includeDev && packageJson.devDependencies) {
345
+ Object.assign(deps, packageJson.devDependencies);
346
+ }
347
+
348
+ // A lockfile names every version up front, so every manifest the walk will
349
+ // ask for is known before it starts. Asked for one at a time, each a
350
+ // registry round trip, a 700-package tree spent a hundred seconds on
351
+ // metadata before a single tarball arrived. With pins in hand they are
352
+ // fetched together, thirty-two at a time, into the registry client's cache;
353
+ // the walk then finds each one already there. A pin whose manifest cannot
354
+ // be fetched is left to the walk, which reports it.
355
+ const __pins = globalThis.__browserRuntimeLockfilePins;
356
+ if (__pins instanceof Map && __pins.size > 0) {
357
+ const __names = [...__pins.keys()];
358
+ for (let __index = 0; __index < __names.length; __index += 32) {
359
+ await Promise.all(__names.slice(__index, __index + 32).map((name3) => registry.getPackageManifest(name3).catch(() => void 0)));
360
+ }
361
+ }
362
+ // The root's own dependencies are chosen first, each at the best version
363
+ // its own range allows, and only then are their dependencies walked. Walked
364
+ // in one pass, a dependency's narrower range for a name the root also
365
+ // names was met first and the root's range accepted what it had chosen:
366
+ // one package asked `>=19 <19.3` of react and the root's `^19.2.4` took
367
+ // 19.2.8 while react-dom went to 19.3.0, which React refuses to run. npm
368
+ // gives the root its version and nests the dependent's.
369
+ context.rootDeps = new Map();
370
+ for (const [name, range] of Object.entries(deps)) {
371
+ await resolvePackage(name, range, context, undefined, "choose");
372
+ }
373
+ for (const [name, range] of Object.entries(deps)) {
374
+ await resolvePackage(name, range, context, undefined, "descend");
375
+ }
376
+
377
+ context.resolved.__nested = context.nested;
378
+ return context.resolved;
379
+ }
380
+
381
+ /**
382
+ * Two versions of one package in one tree. The engine installs one version
383
+ * per name, flat, and a dependent whose range the top of the tree does not
384
+ * satisfy got the wrong one: React Router's build found semver 6 where
385
+ * normalize-package-data wanted 7. A lockfile records every version; a range
386
+ * the top does not satisfy takes the highest recorded version that does,
387
+ * installed under the dependent's own `node_modules`, where Node's walk up
388
+ * finds it first, and its own dependencies resolve from there.
389
+ */
390
+ async function __browserRuntimeNest(packageName: string, versionRange: string, context: ResolveContext, parentKey: string | undefined, registryName: string = packageName): Promise<void> {
391
+ const records = globalThis.__browserRuntimeLockfileRecords;
392
+ const versions = records instanceof Map ? records.get(packageName) : void 0;
393
+ if (!versions) return;
394
+ const candidates = [...versions.keys()].filter((version2) => satisfies(version2, versionRange)).sort((a, b) => compareVersions(b, a));
395
+ const version = candidates[0];
396
+ if (!version) return;
397
+ const nestedKey = parentKey ? `${parentKey}/node_modules/${packageName}` : packageName;
398
+ context.nested ??= new Map();
399
+ if (context.nested.has(nestedKey) || context.resolving.has(nestedKey)) return;
400
+ context.resolving.add(nestedKey);
401
+ try {
402
+ const doc = versions.get(version)!;
403
+ // The lockfile's own tarball where it recorded one; else the registry's place for the name the registry knows, which an alias differs from.
404
+ const tarballUrl = doc.resolved || `${context.registry.registryFor(registryName)}/${encodePackageName(registryName)}/-/${registryName.slice(registryName.lastIndexOf("/") + 1)}-${version}.tgz`;
405
+ context.nested.set(nestedKey, { name: packageName, version, tarballUrl, dependencies: doc.dependencies || {} });
406
+ const deps: Record<string, string> = {};
407
+ if (doc.peerDependencies) {
408
+ const meta = doc.peerDependenciesMeta || {};
409
+ for (const [name2, range] of Object.entries(doc.peerDependencies)) {
410
+ if (!(meta[name2] && meta[name2].optional)) deps[name2] = range;
411
+ }
412
+ }
413
+ Object.assign(deps, doc.dependencies);
414
+ if (context.options.includeOptional && doc.optionalDependencies) Object.assign(deps, doc.optionalDependencies);
415
+ for (const [depName, depRange] of Object.entries(deps)) {
416
+ await resolvePackage(depName, depRange, context, nestedKey);
417
+ }
418
+ } finally {
419
+ context.resolving.delete(nestedKey);
420
+ }
421
+ }
422
+
423
+ /**
424
+ * Recursively resolve a single package and its dependencies
425
+ */
426
+ async function resolvePackage(
427
+ packageName: string,
428
+ versionRange: string,
429
+ context: ResolveContext,
430
+ __parent?: string,
431
+ phase?: "choose" | "descend"
432
+ ): Promise<void> {
433
+ // The second pass over a root dependency: its dependencies, chosen in the first.
434
+ if (phase === "descend") {
435
+ const chosen = context.rootDeps?.get(packageName);
436
+ if (!chosen) return;
437
+ context.rootDeps!.delete(packageName);
438
+ await descendInto(packageName, chosen, context);
439
+ return;
440
+ }
441
+ // `"wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"` installs wrap-ansi under the name
442
+ // wrap-ansi-cjs; dependency trees lean on this shape, and the range was read
443
+ // as a whole version range. The registry is asked for the package the alias
444
+ // names, its version chosen by the range after the `@`, and the result
445
+ // recorded under the alias, which is where the code that imports it looks.
446
+ let __registryName = packageName;
447
+ if (typeof versionRange === "string" && versionRange.startsWith("npm:")) {
448
+ const __spec = versionRange.slice(4);
449
+ const __at = __spec.lastIndexOf("@");
450
+ __registryName = __at > 0 ? __spec.slice(0, __at) : __spec;
451
+ versionRange = __at > 0 ? __spec.slice(__at + 1) : "latest";
452
+ }
453
+ const { registry, resolved, resolving, options } = context;
454
+
455
+ // Create a key for this package request
456
+ const key = `${packageName}@${versionRange}`;
457
+
458
+ // Check if we're already resolving this (circular dependency)
459
+ if (resolving.has(key)) {
460
+ return;
461
+ }
462
+
463
+ // Check if we've already resolved a compatible version
464
+ if (resolved.has(packageName)) {
465
+ const existing = resolved.get(packageName)!;
466
+ if (satisfies(existing.version, versionRange)) {
467
+ return;
468
+ }
469
+ await __browserRuntimeNest(packageName, versionRange, context, __parent, typeof __registryName === "string" ? __registryName : packageName);
470
+ return;
471
+ }
472
+
473
+ resolving.add(key);
474
+
475
+ try {
476
+ options.onProgress?.(`Resolving ${packageName}@${versionRange}`);
477
+
478
+ // Fetch package manifest
479
+ const manifest = await registry.getPackageManifest(__registryName);
480
+
481
+ // Find best matching version
482
+ const versions = Object.keys(manifest.versions);
483
+ let targetVersion: string;
484
+
485
+ // A lockfile pins this walk. Where the page has read a lockfile for the
486
+ // project being installed, the version it recorded is taken instead of
487
+ // the best match for the range, so an install is the install the project
488
+ // recorded, whichever manager wrote it. A name the lockfile does not
489
+ // carry resolves by range, below, as before.
490
+ const __pinned = globalThis.__browserRuntimeLockfilePins;
491
+ const __pin = __pinned instanceof Map ? __pinned.get(__registryName) : void 0;
492
+ if (typeof __pin === "string" && manifest.versions[__pin]) {
493
+ const versionData2 = manifest.versions[__pin];
494
+ const resolvedPackage2: ResolvedPackage = {
495
+ name: packageName,
496
+ version: __pin,
497
+ tarballUrl: versionData2.dist.tarball,
498
+ dependencies: versionData2.dependencies || {}
499
+ };
500
+ resolved.set(packageName, resolvedPackage2);
501
+ const deps2: Record<string, string> = {};
502
+ if (versionData2.peerDependencies) {
503
+ const meta2 = versionData2.peerDependenciesMeta || {};
504
+ for (const [name3, range2] of Object.entries(versionData2.peerDependencies)) {
505
+ if (!(meta2[name3] == null ? void 0 : meta2[name3].optional)) deps2[name3] = range2;
506
+ }
507
+ }
508
+ Object.assign(deps2, versionData2.dependencies);
509
+ if (options.includeOptional && versionData2.optionalDependencies) {
510
+ Object.assign(deps2, versionData2.optionalDependencies);
511
+ }
512
+ if (phase === "choose") context.rootDeps!.set(packageName, deps2);
513
+ else await descendInto(packageName, deps2, context);
514
+ // The top of the tree is the lockfile's pin; a dependent whose range
515
+ // it does not satisfy gets the version the lockfile recorded for it, nested.
516
+ if (!satisfies(__pin, versionRange)) await __browserRuntimeNest(packageName, versionRange, context, __parent, __registryName);
517
+ return;
518
+ }
519
+
520
+ if (versionRange === 'latest' || versionRange === '*') {
521
+ targetVersion = manifest['dist-tags'].latest;
522
+ } else if (manifest['dist-tags'][versionRange]) {
523
+ targetVersion = manifest['dist-tags'][versionRange];
524
+ } else {
525
+ const best = findBestVersion(versions, versionRange);
526
+ if (!best) {
527
+ throw new Error(
528
+ `No matching version found for ${packageName}@${versionRange}`
529
+ );
530
+ }
531
+ targetVersion = best;
532
+ }
533
+
534
+ // Get version metadata
535
+ const versionData = manifest.versions[targetVersion];
536
+
537
+ // Store resolved package
538
+ const resolvedPackage: ResolvedPackage = {
539
+ name: packageName,
540
+ version: targetVersion,
541
+ tarballUrl: versionData.dist.tarball,
542
+ dependencies: versionData.dependencies || {},
543
+ };
544
+
545
+ resolved.set(packageName, resolvedPackage);
546
+
547
+ // Resolve dependencies in parallel
548
+ // Include non-optional peerDependencies (npm v7+ behavior).
549
+ // Peer deps marked optional in peerDependenciesMeta are skipped.
550
+ const deps: Record<string, string> = {};
551
+
552
+ if (versionData.peerDependencies) {
553
+ const meta = versionData.peerDependenciesMeta || {};
554
+ for (const [name, range] of Object.entries(versionData.peerDependencies)) {
555
+ if (!meta[name]?.optional) {
556
+ deps[name] = range;
557
+ }
558
+ }
559
+ }
560
+
561
+ // Regular dependencies override peer deps
562
+ Object.assign(deps, versionData.dependencies);
563
+
564
+ if (options.includeOptional && versionData.optionalDependencies) {
565
+ Object.assign(deps, versionData.optionalDependencies);
566
+ }
567
+
568
+ if (phase === "choose") context.rootDeps!.set(packageName, deps);
569
+ else await descendInto(packageName, deps, context);
570
+ } finally {
571
+ resolving.delete(key);
572
+ }
573
+ }
574
+
575
+ /** Resolves a package's dependencies, a few at a time. */
576
+ async function descendInto(packageName: string, deps: Record<string, string>, context: ResolveContext): Promise<void> {
577
+ const depEntries = Object.entries(deps);
578
+ if (depEntries.length === 0) return;
579
+ const CONCURRENCY = 8;
580
+ for (let i = 0; i < depEntries.length; i += CONCURRENCY) {
581
+ const batch = depEntries.slice(i, i + CONCURRENCY);
582
+ await Promise.all(
583
+ batch.map(([depName, depRange]) => resolvePackage(depName, depRange, context, packageName))
584
+ );
585
+ }
586
+ }
587
+
588
+ // Export utilities for testing
589
+ export { parseVersion, compareVersions, satisfies, findBestVersion };