@nimbus-sh/worker 0.1.0

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 (408) hide show
  1. package/README.md +219 -0
  2. package/dist/_shared/bytes.d.ts +18 -0
  3. package/dist/_shared/bytes.d.ts.map +1 -0
  4. package/dist/_shared/bytes.js +17 -0
  5. package/dist/_shared/cache-stats.d.ts +146 -0
  6. package/dist/_shared/cache-stats.d.ts.map +1 -0
  7. package/dist/_shared/cache-stats.js +162 -0
  8. package/dist/_shared/exports-resolver.d.ts +76 -0
  9. package/dist/_shared/exports-resolver.d.ts.map +1 -0
  10. package/dist/_shared/exports-resolver.js +284 -0
  11. package/dist/_shared/install-phase.d.ts +47 -0
  12. package/dist/_shared/install-phase.d.ts.map +1 -0
  13. package/dist/_shared/install-phase.js +1 -0
  14. package/dist/_shared/real-node-imports.d.ts +38 -0
  15. package/dist/_shared/real-node-imports.d.ts.map +1 -0
  16. package/dist/_shared/real-node-imports.js +46 -0
  17. package/dist/_shared/retry.d.ts +93 -0
  18. package/dist/_shared/retry.d.ts.map +1 -0
  19. package/dist/_shared/retry.js +161 -0
  20. package/dist/_shared/session-id.d.ts +39 -0
  21. package/dist/_shared/session-id.d.ts.map +1 -0
  22. package/dist/_shared/session-id.js +127 -0
  23. package/dist/_shared/session-router.d.ts +104 -0
  24. package/dist/_shared/session-router.d.ts.map +1 -0
  25. package/dist/_shared/session-router.js +165 -0
  26. package/dist/_shared/w7-frame.d.ts +93 -0
  27. package/dist/_shared/w7-frame.d.ts.map +1 -0
  28. package/dist/_shared/w7-frame.js +402 -0
  29. package/dist/auth/index.d.ts +16 -0
  30. package/dist/auth/index.d.ts.map +1 -0
  31. package/dist/auth/index.js +15 -0
  32. package/dist/auth/middleware.d.ts +85 -0
  33. package/dist/auth/middleware.d.ts.map +1 -0
  34. package/dist/auth/middleware.js +150 -0
  35. package/dist/auth/token.d.ts +96 -0
  36. package/dist/auth/token.d.ts.map +1 -0
  37. package/dist/auth/token.js +226 -0
  38. package/dist/auth/types.d.ts +141 -0
  39. package/dist/auth/types.d.ts.map +1 -0
  40. package/dist/auth/types.js +114 -0
  41. package/dist/bindings/d1.d.ts +102 -0
  42. package/dist/bindings/d1.d.ts.map +1 -0
  43. package/dist/bindings/d1.js +549 -0
  44. package/dist/bindings/kv.d.ts +82 -0
  45. package/dist/bindings/kv.d.ts.map +1 -0
  46. package/dist/bindings/kv.js +290 -0
  47. package/dist/bindings/r2.d.ts +137 -0
  48. package/dist/bindings/r2.d.ts.map +1 -0
  49. package/dist/bindings/r2.js +379 -0
  50. package/dist/cirrus-npm-cjs.generated.d.ts +17 -0
  51. package/dist/cirrus-npm-cjs.generated.d.ts.map +1 -0
  52. package/dist/cirrus-npm-cjs.generated.js +41 -0
  53. package/dist/cirrus-plugin-react.generated.d.ts +34 -0
  54. package/dist/cirrus-plugin-react.generated.d.ts.map +1 -0
  55. package/dist/cirrus-plugin-react.generated.js +33 -0
  56. package/dist/constants.d.ts +34 -0
  57. package/dist/constants.d.ts.map +1 -0
  58. package/dist/constants.js +116 -0
  59. package/dist/esbuild-wasm-bundle.generated.d.ts +41 -0
  60. package/dist/esbuild-wasm-bundle.generated.d.ts.map +1 -0
  61. package/dist/esbuild-wasm-bundle.generated.js +40 -0
  62. package/dist/facets/cirrus-real.d.ts +147 -0
  63. package/dist/facets/cirrus-real.d.ts.map +1 -0
  64. package/dist/facets/cirrus-real.js +981 -0
  65. package/dist/facets/inner-do-registry.d.ts +41 -0
  66. package/dist/facets/inner-do-registry.d.ts.map +1 -0
  67. package/dist/facets/inner-do-registry.js +51 -0
  68. package/dist/facets/manager.d.ts +314 -0
  69. package/dist/facets/manager.d.ts.map +1 -0
  70. package/dist/facets/manager.js +2681 -0
  71. package/dist/facets/process.d.ts +318 -0
  72. package/dist/facets/process.d.ts.map +1 -0
  73. package/dist/facets/process.js +567 -0
  74. package/dist/facets/real-vite-fs-shim.d.ts +151 -0
  75. package/dist/facets/real-vite-fs-shim.d.ts.map +1 -0
  76. package/dist/facets/real-vite-fs-shim.js +1279 -0
  77. package/dist/facets/real-vite-hmr.d.ts +142 -0
  78. package/dist/facets/real-vite-hmr.d.ts.map +1 -0
  79. package/dist/facets/real-vite-hmr.js +476 -0
  80. package/dist/facets/vite-dev-server.d.ts +293 -0
  81. package/dist/facets/vite-dev-server.d.ts.map +1 -0
  82. package/dist/facets/vite-dev-server.js +2580 -0
  83. package/dist/facets/wasm-swap-registry.d.ts +261 -0
  84. package/dist/facets/wasm-swap-registry.d.ts.map +1 -0
  85. package/dist/facets/wasm-swap-registry.js +551 -0
  86. package/dist/facets/ws-terminal.d.ts +107 -0
  87. package/dist/facets/ws-terminal.d.ts.map +1 -0
  88. package/dist/facets/ws-terminal.js +207 -0
  89. package/dist/git/commands.d.ts +13 -0
  90. package/dist/git/commands.d.ts.map +1 -0
  91. package/dist/git/commands.js +633 -0
  92. package/dist/git/network-facet.d.ts +61 -0
  93. package/dist/git/network-facet.d.ts.map +1 -0
  94. package/dist/git/network-facet.js +700 -0
  95. package/dist/git-bundle.generated.d.ts +16 -0
  96. package/dist/git-bundle.generated.d.ts.map +1 -0
  97. package/dist/git-bundle.generated.js +15 -0
  98. package/dist/index.d.ts +41 -0
  99. package/dist/index.d.ts.map +1 -0
  100. package/dist/index.js +73 -0
  101. package/dist/loaders/child-process/spawn-facet.d.ts +90 -0
  102. package/dist/loaders/child-process/spawn-facet.d.ts.map +1 -0
  103. package/dist/loaders/child-process/spawn-facet.js +103 -0
  104. package/dist/loaders/child-process/spawn-pool.d.ts +110 -0
  105. package/dist/loaders/child-process/spawn-pool.d.ts.map +1 -0
  106. package/dist/loaders/child-process/spawn-pool.js +161 -0
  107. package/dist/loaders/fanout-pool.d.ts +195 -0
  108. package/dist/loaders/fanout-pool.d.ts.map +1 -0
  109. package/dist/loaders/fanout-pool.js +326 -0
  110. package/dist/loaders/generated-workers.d.ts +26 -0
  111. package/dist/loaders/generated-workers.d.ts.map +1 -0
  112. package/dist/loaders/generated-workers.js +25 -0
  113. package/dist/loaders/index.d.ts +15 -0
  114. package/dist/loaders/index.d.ts.map +1 -0
  115. package/dist/loaders/index.js +13 -0
  116. package/dist/loaders/loader-pool.d.ts +273 -0
  117. package/dist/loaders/loader-pool.d.ts.map +1 -0
  118. package/dist/loaders/loader-pool.js +624 -0
  119. package/dist/loaders/npm-resolve-preamble.d.ts +34 -0
  120. package/dist/loaders/npm-resolve-preamble.d.ts.map +1 -0
  121. package/dist/loaders/npm-resolve-preamble.js +237 -0
  122. package/dist/loaders/pre-bundle-preamble.d.ts +41 -0
  123. package/dist/loaders/pre-bundle-preamble.d.ts.map +1 -0
  124. package/dist/loaders/pre-bundle-preamble.js +114 -0
  125. package/dist/loaders/vendor/codegen.d.ts +24 -0
  126. package/dist/loaders/vendor/codegen.d.ts.map +1 -0
  127. package/dist/loaders/vendor/codegen.js +44 -0
  128. package/dist/loaders/vendor/errors.d.ts +24 -0
  129. package/dist/loaders/vendor/errors.d.ts.map +1 -0
  130. package/dist/loaders/vendor/errors.js +46 -0
  131. package/dist/loaders/vendor/index.d.ts +16 -0
  132. package/dist/loaders/vendor/index.d.ts.map +1 -0
  133. package/dist/loaders/vendor/index.js +11 -0
  134. package/dist/loaders/vendor/pool.d.ts +88 -0
  135. package/dist/loaders/vendor/pool.d.ts.map +1 -0
  136. package/dist/loaders/vendor/pool.js +353 -0
  137. package/dist/loaders/vendor/primitives.d.ts +11 -0
  138. package/dist/loaders/vendor/primitives.d.ts.map +1 -0
  139. package/dist/loaders/vendor/primitives.js +33 -0
  140. package/dist/loaders/vendor/serialize.d.ts +3 -0
  141. package/dist/loaders/vendor/serialize.d.ts.map +1 -0
  142. package/dist/loaders/vendor/serialize.js +25 -0
  143. package/dist/loaders/vendor/types.d.ts +60 -0
  144. package/dist/loaders/vendor/types.d.ts.map +1 -0
  145. package/dist/loaders/vendor/types.js +4 -0
  146. package/dist/npm/cache.d.ts +136 -0
  147. package/dist/npm/cache.d.ts.map +1 -0
  148. package/dist/npm/cache.js +429 -0
  149. package/dist/npm/install-batch-facet.d.ts +129 -0
  150. package/dist/npm/install-batch-facet.d.ts.map +1 -0
  151. package/dist/npm/install-batch-facet.js +598 -0
  152. package/dist/npm/install-facet.d.ts +29 -0
  153. package/dist/npm/install-facet.d.ts.map +1 -0
  154. package/dist/npm/install-facet.js +9 -0
  155. package/dist/npm/installer.d.ts +239 -0
  156. package/dist/npm/installer.d.ts.map +1 -0
  157. package/dist/npm/installer.js +2022 -0
  158. package/dist/npm/npx-install.d.ts +74 -0
  159. package/dist/npm/npx-install.d.ts.map +1 -0
  160. package/dist/npm/npx-install.js +302 -0
  161. package/dist/npm/pre-bundle-facet.d.ts +168 -0
  162. package/dist/npm/pre-bundle-facet.d.ts.map +1 -0
  163. package/dist/npm/pre-bundle-facet.js +653 -0
  164. package/dist/npm/r2-cache.d.ts +286 -0
  165. package/dist/npm/r2-cache.d.ts.map +1 -0
  166. package/dist/npm/r2-cache.js +506 -0
  167. package/dist/npm/resolve-facet.d.ts +202 -0
  168. package/dist/npm/resolve-facet.d.ts.map +1 -0
  169. package/dist/npm/resolve-facet.js +833 -0
  170. package/dist/npm/resolve-one-facet.d.ts +204 -0
  171. package/dist/npm/resolve-one-facet.d.ts.map +1 -0
  172. package/dist/npm/resolve-one-facet.js +437 -0
  173. package/dist/npm/resolver.d.ts +109 -0
  174. package/dist/npm/resolver.d.ts.map +1 -0
  175. package/dist/npm/resolver.js +899 -0
  176. package/dist/npm/tarball-stream.d.ts +85 -0
  177. package/dist/npm/tarball-stream.d.ts.map +1 -0
  178. package/dist/npm/tarball-stream.js +205 -0
  179. package/dist/npm/tarball.d.ts +51 -0
  180. package/dist/npm/tarball.d.ts.map +1 -0
  181. package/dist/npm/tarball.js +185 -0
  182. package/dist/observability/diag-counters.d.ts +292 -0
  183. package/dist/observability/diag-counters.d.ts.map +1 -0
  184. package/dist/observability/diag-counters.js +302 -0
  185. package/dist/observability/heap-estimate.d.ts +166 -0
  186. package/dist/observability/heap-estimate.d.ts.map +1 -0
  187. package/dist/observability/heap-estimate.js +192 -0
  188. package/dist/observability/heavy-alloc-coord.d.ts +95 -0
  189. package/dist/observability/heavy-alloc-coord.d.ts.map +1 -0
  190. package/dist/observability/heavy-alloc-coord.js +149 -0
  191. package/dist/observability/oom-classify.d.ts +56 -0
  192. package/dist/observability/oom-classify.d.ts.map +1 -0
  193. package/dist/observability/oom-classify.js +118 -0
  194. package/dist/observability/oom-discriminator.d.ts +192 -0
  195. package/dist/observability/oom-discriminator.d.ts.map +1 -0
  196. package/dist/observability/oom-discriminator.js +233 -0
  197. package/dist/real-vite-bundle.generated.d.ts +46 -0
  198. package/dist/real-vite-bundle.generated.d.ts.map +1 -0
  199. package/dist/real-vite-bundle.generated.js +53 -0
  200. package/dist/replica/routing.d.ts +171 -0
  201. package/dist/replica/routing.d.ts.map +1 -0
  202. package/dist/replica/routing.js +288 -0
  203. package/dist/replica/suspension.d.ts +36 -0
  204. package/dist/replica/suspension.d.ts.map +1 -0
  205. package/dist/replica/suspension.js +49 -0
  206. package/dist/router/index.d.ts +156 -0
  207. package/dist/router/index.d.ts.map +1 -0
  208. package/dist/router/index.js +220 -0
  209. package/dist/runtime/assets-loader.d.ts +71 -0
  210. package/dist/runtime/assets-loader.d.ts.map +1 -0
  211. package/dist/runtime/assets-loader.js +128 -0
  212. package/dist/runtime/barrel-detect.d.ts +46 -0
  213. package/dist/runtime/barrel-detect.d.ts.map +1 -0
  214. package/dist/runtime/barrel-detect.js +73 -0
  215. package/dist/runtime/barrel-synthesizer.d.ts +181 -0
  216. package/dist/runtime/barrel-synthesizer.d.ts.map +1 -0
  217. package/dist/runtime/barrel-synthesizer.js +541 -0
  218. package/dist/runtime/bun-repl.d.ts +46 -0
  219. package/dist/runtime/bun-repl.d.ts.map +1 -0
  220. package/dist/runtime/bun-repl.js +326 -0
  221. package/dist/runtime/bun-runner.d.ts +66 -0
  222. package/dist/runtime/bun-runner.d.ts.map +1 -0
  223. package/dist/runtime/bun-runner.js +219 -0
  224. package/dist/runtime/clang-runner.d.ts +38 -0
  225. package/dist/runtime/clang-runner.d.ts.map +1 -0
  226. package/dist/runtime/clang-runner.js +1033 -0
  227. package/dist/runtime/comment-strip.d.ts +37 -0
  228. package/dist/runtime/comment-strip.d.ts.map +1 -0
  229. package/dist/runtime/comment-strip.js +74 -0
  230. package/dist/runtime/esbuild-service.d.ts +201 -0
  231. package/dist/runtime/esbuild-service.d.ts.map +1 -0
  232. package/dist/runtime/esbuild-service.js +1444 -0
  233. package/dist/runtime/esbuild-wasm-bytes.d.ts +87 -0
  234. package/dist/runtime/esbuild-wasm-bytes.d.ts.map +1 -0
  235. package/dist/runtime/esbuild-wasm-bytes.js +131 -0
  236. package/dist/runtime/framework-detect.d.ts +71 -0
  237. package/dist/runtime/framework-detect.d.ts.map +1 -0
  238. package/dist/runtime/framework-detect.js +178 -0
  239. package/dist/runtime/long-running-handle.d.ts +133 -0
  240. package/dist/runtime/long-running-handle.d.ts.map +1 -0
  241. package/dist/runtime/long-running-handle.js +192 -0
  242. package/dist/runtime/node-repl.d.ts +36 -0
  243. package/dist/runtime/node-repl.d.ts.map +1 -0
  244. package/dist/runtime/node-repl.js +293 -0
  245. package/dist/runtime/node-runner.d.ts +111 -0
  246. package/dist/runtime/node-runner.d.ts.map +1 -0
  247. package/dist/runtime/node-runner.js +194 -0
  248. package/dist/runtime/node-shims.d.ts +24 -0
  249. package/dist/runtime/node-shims.d.ts.map +1 -0
  250. package/dist/runtime/node-shims.js +3019 -0
  251. package/dist/runtime/package-manager.d.ts +118 -0
  252. package/dist/runtime/package-manager.d.ts.map +1 -0
  253. package/dist/runtime/package-manager.js +420 -0
  254. package/dist/runtime/port-registry.d.ts +80 -0
  255. package/dist/runtime/port-registry.d.ts.map +1 -0
  256. package/dist/runtime/port-registry.js +166 -0
  257. package/dist/runtime/process-logs-api.d.ts +102 -0
  258. package/dist/runtime/process-logs-api.d.ts.map +1 -0
  259. package/dist/runtime/process-logs-api.js +253 -0
  260. package/dist/runtime/process-logs.d.ts +311 -0
  261. package/dist/runtime/process-logs.d.ts.map +1 -0
  262. package/dist/runtime/process-logs.js +656 -0
  263. package/dist/runtime/process-table.d.ts +65 -0
  264. package/dist/runtime/process-table.d.ts.map +1 -0
  265. package/dist/runtime/process-table.js +107 -0
  266. package/dist/runtime/project-detect.d.ts +21 -0
  267. package/dist/runtime/project-detect.d.ts.map +1 -0
  268. package/dist/runtime/project-detect.js +46 -0
  269. package/dist/runtime/python-repl.d.ts +66 -0
  270. package/dist/runtime/python-repl.d.ts.map +1 -0
  271. package/dist/runtime/python-repl.js +563 -0
  272. package/dist/runtime/python-runner.d.ts +50 -0
  273. package/dist/runtime/python-runner.d.ts.map +1 -0
  274. package/dist/runtime/python-runner.js +870 -0
  275. package/dist/runtime/repl-session.d.ts +160 -0
  276. package/dist/runtime/repl-session.d.ts.map +1 -0
  277. package/dist/runtime/repl-session.js +393 -0
  278. package/dist/runtime/require-resolver.d.ts +52 -0
  279. package/dist/runtime/require-resolver.d.ts.map +1 -0
  280. package/dist/runtime/require-resolver.js +690 -0
  281. package/dist/runtime/router-basename.d.ts +36 -0
  282. package/dist/runtime/router-basename.d.ts.map +1 -0
  283. package/dist/runtime/router-basename.js +310 -0
  284. package/dist/runtime/ruby-repl.d.ts +43 -0
  285. package/dist/runtime/ruby-repl.d.ts.map +1 -0
  286. package/dist/runtime/ruby-repl.js +229 -0
  287. package/dist/runtime/ruby-runner.d.ts +62 -0
  288. package/dist/runtime/ruby-runner.d.ts.map +1 -0
  289. package/dist/runtime/ruby-runner.js +737 -0
  290. package/dist/runtime/runtime-catalog.d.ts +99 -0
  291. package/dist/runtime/runtime-catalog.d.ts.map +1 -0
  292. package/dist/runtime/runtime-catalog.js +183 -0
  293. package/dist/runtime/runtime-registry.d.ts +136 -0
  294. package/dist/runtime/runtime-registry.d.ts.map +1 -0
  295. package/dist/runtime/runtime-registry.js +318 -0
  296. package/dist/runtime/streams.d.ts +13 -0
  297. package/dist/runtime/streams.d.ts.map +1 -0
  298. package/dist/runtime/streams.js +402 -0
  299. package/dist/runtime/wasi-instance.d.ts +190 -0
  300. package/dist/runtime/wasi-instance.d.ts.map +1 -0
  301. package/dist/runtime/wasi-instance.js +2044 -0
  302. package/dist/runtime/wasm-runner.d.ts +117 -0
  303. package/dist/runtime/wasm-runner.d.ts.map +1 -0
  304. package/dist/runtime/wasm-runner.js +705 -0
  305. package/dist/session/bindings.d.ts +168 -0
  306. package/dist/session/bindings.d.ts.map +1 -0
  307. package/dist/session/bindings.js +524 -0
  308. package/dist/session/ctx-exports.d.ts +16 -0
  309. package/dist/session/ctx-exports.d.ts.map +1 -0
  310. package/dist/session/ctx-exports.js +22 -0
  311. package/dist/session/diag.d.ts +62 -0
  312. package/dist/session/diag.d.ts.map +1 -0
  313. package/dist/session/diag.js +118 -0
  314. package/dist/session/fs-watch.d.ts +132 -0
  315. package/dist/session/fs-watch.d.ts.map +1 -0
  316. package/dist/session/fs-watch.js +255 -0
  317. package/dist/session/helpers.d.ts +150 -0
  318. package/dist/session/helpers.d.ts.map +1 -0
  319. package/dist/session/helpers.js +472 -0
  320. package/dist/session/hibernation.d.ts +145 -0
  321. package/dist/session/hibernation.d.ts.map +1 -0
  322. package/dist/session/hibernation.js +385 -0
  323. package/dist/session/init-phases.d.ts +87 -0
  324. package/dist/session/init-phases.d.ts.map +1 -0
  325. package/dist/session/init-phases.js +137 -0
  326. package/dist/session/init.d.ts +46 -0
  327. package/dist/session/init.d.ts.map +1 -0
  328. package/dist/session/init.js +3579 -0
  329. package/dist/session/keys.d.ts +56 -0
  330. package/dist/session/keys.d.ts.map +1 -0
  331. package/dist/session/keys.js +55 -0
  332. package/dist/session/nimbus-session.d.ts +434 -0
  333. package/dist/session/nimbus-session.d.ts.map +1 -0
  334. package/dist/session/nimbus-session.js +1084 -0
  335. package/dist/session/programmatic.d.ts +105 -0
  336. package/dist/session/programmatic.d.ts.map +1 -0
  337. package/dist/session/programmatic.js +326 -0
  338. package/dist/session/replica-routes.d.ts +68 -0
  339. package/dist/session/replica-routes.d.ts.map +1 -0
  340. package/dist/session/replica-routes.js +77 -0
  341. package/dist/session/routes.d.ts +29 -0
  342. package/dist/session/routes.d.ts.map +1 -0
  343. package/dist/session/routes.js +1331 -0
  344. package/dist/session/rpc.d.ts +323 -0
  345. package/dist/session/rpc.d.ts.map +1 -0
  346. package/dist/session/rpc.js +808 -0
  347. package/dist/session/state-store.d.ts +210 -0
  348. package/dist/session/state-store.d.ts.map +1 -0
  349. package/dist/session/state-store.js +459 -0
  350. package/dist/session/supervisor-rpc.d.ts +269 -0
  351. package/dist/session/supervisor-rpc.d.ts.map +1 -0
  352. package/dist/session/supervisor-rpc.js +437 -0
  353. package/dist/session/ws-hibernation-config.d.ts +64 -0
  354. package/dist/session/ws-hibernation-config.d.ts.map +1 -0
  355. package/dist/session/ws-hibernation-config.js +89 -0
  356. package/dist/session/ws.d.ts +95 -0
  357. package/dist/session/ws.d.ts.map +1 -0
  358. package/dist/session/ws.js +395 -0
  359. package/dist/shell/features.d.ts +410 -0
  360. package/dist/shell/features.d.ts.map +1 -0
  361. package/dist/shell/features.js +1885 -0
  362. package/dist/shell/unix-commands.d.ts +15 -0
  363. package/dist/shell/unix-commands.d.ts.map +1 -0
  364. package/dist/shell/unix-commands.js +3703 -0
  365. package/dist/stubs/lifo-ui.d.ts +10 -0
  366. package/dist/stubs/lifo-ui.d.ts.map +1 -0
  367. package/dist/stubs/lifo-ui.js +1 -0
  368. package/dist/tailwind-play.generated.d.ts +19 -0
  369. package/dist/tailwind-play.generated.d.ts.map +1 -0
  370. package/dist/tailwind-play.generated.js +18 -0
  371. package/dist/vfs/dev-provider.d.ts +64 -0
  372. package/dist/vfs/dev-provider.d.ts.map +1 -0
  373. package/dist/vfs/dev-provider.js +191 -0
  374. package/dist/vfs/events.d.ts +51 -0
  375. package/dist/vfs/events.d.ts.map +1 -0
  376. package/dist/vfs/events.js +127 -0
  377. package/dist/vfs/path.d.ts +30 -0
  378. package/dist/vfs/path.d.ts.map +1 -0
  379. package/dist/vfs/path.js +41 -0
  380. package/dist/vfs/seed-project.d.ts +62 -0
  381. package/dist/vfs/seed-project.d.ts.map +1 -0
  382. package/dist/vfs/seed-project.js +1045 -0
  383. package/dist/vfs/sqlite-vfs.d.ts +435 -0
  384. package/dist/vfs/sqlite-vfs.d.ts.map +1 -0
  385. package/dist/vfs/sqlite-vfs.js +1670 -0
  386. package/dist/vfs/symlink-registry.d.ts +64 -0
  387. package/dist/vfs/symlink-registry.d.ts.map +1 -0
  388. package/dist/vfs/symlink-registry.js +137 -0
  389. package/dist/wrangler/nimbus-wrangler.d.ts +157 -0
  390. package/dist/wrangler/nimbus-wrangler.d.ts.map +1 -0
  391. package/dist/wrangler/nimbus-wrangler.js +931 -0
  392. package/package.json +77 -0
  393. package/public/_assets/cirrus-plugin-react.bundle.js +70740 -0
  394. package/public/_assets/esbuild-0.24.2.wasm +0 -0
  395. package/public/_assets/real-vite-bundle.js +101478 -0
  396. package/public/_assets/rollup.wasm +0 -0
  397. package/public/favicon.svg +8 -0
  398. package/public/index.html +565 -0
  399. package/public/s/index.html +2379 -0
  400. package/scripts/bundle-esbuild-wasm.mjs +244 -0
  401. package/scripts/bundle-facet-workers.mjs +137 -0
  402. package/scripts/bundle-git.mjs +118 -0
  403. package/scripts/bundle-npm-cjs.mjs +363 -0
  404. package/scripts/bundle-plugin-react.mjs +480 -0
  405. package/scripts/bundle-real-vite.mjs +959 -0
  406. package/scripts/bundle-runtime.mjs +600 -0
  407. package/scripts/bundle-tailwind-play.mjs +130 -0
  408. package/scripts/patch-lifo-ui.mjs +131 -0
@@ -0,0 +1,204 @@
1
+ /**
2
+ * resolve-one-facet.ts — F-2 frontier-coordinator per-package task body.
3
+ *
4
+ * Why this exists
5
+ * ───────────────
6
+ * F-2 (cleanup-not-done wave) replaces the single resolve-facet that
7
+ * runs the WHOLE BFS in one isolate with a frontier-coordinator at the
8
+ * supervisor that submits each layer of N packages as N independent
9
+ * fanout tasks. This file is the per-task body — one packument fetch +
10
+ * version pick + edge-extraction.
11
+ *
12
+ * Each task runs inside a Worker Loader isolate (NimbusFanoutPool routes
13
+ * automatically: <5 = in-DO, ≥5 = peer-DO). The isolate is short-lived;
14
+ * task body has its own ~128 MiB envelope. Parallelism = layer width
15
+ * (capped at 32 by NimbusFanoutPool's MAX_PEER_FANOUT).
16
+ *
17
+ * Stability invariants (cloudflare-parallel serialises via fn.toString)
18
+ * ───────────────────────────────────────────────────────────────────
19
+ * - No `this` references.
20
+ * - No closure capture other than args + preamble names.
21
+ * - All helpers (semver, exports, skip-list, registry decisions) are
22
+ * accessed via bare identifiers from the preamble:
23
+ *
24
+ * SHOULD_SKIP_PACKAGE(name, frameworkAware) → boolean
25
+ * SHOULD_SWAP(name) → { from, to } | null
26
+ * SHOULD_WARN_SKIP_TRANSITIVE(name) → { from, reason } | null
27
+ * SHOULD_REJECT_FAIL(name) → { from, reason, suggest? } | null
28
+ * PARSE_SEMVER(v) → [maj, min, patch] | null
29
+ * COMPARE_SEMVER(a, b) → number
30
+ * RESOLVE_VERSION(versions, range) → string | null
31
+ *
32
+ * What the task does NOT do (supervisor responsibility)
33
+ * ─────────────────────────────────────────────────────
34
+ * - Edge extraction: the supervisor pulls deps/peerDeps/optionalDeps
35
+ * out of the returned `pkg` and decides what goes in layer N+1.
36
+ * - Cycle detection: the supervisor maintains the `seen` set across
37
+ * layers. The task only sees one (name, range) per call.
38
+ * - X.5-drizzle best-effort tagging: the supervisor maintains the
39
+ * bestEffortNames set; the task returns the `pkg` raw and the
40
+ * supervisor decides whether a downstream reject silent-skips or
41
+ * propagates.
42
+ * - X.5-F top-level handling: the supervisor maintains topLevelNames.
43
+ * `topLevel` is passed in per task so SKIP_PACKAGES bypass works.
44
+ *
45
+ * What the task DOES do
46
+ * ─────────────────────
47
+ * 1. Apply SKIP_PACKAGES filter (unless `topLevel`).
48
+ * 2. Apply W6 swap / warn-skip / reject-fail registry policy.
49
+ * 3. Try in-task cache from `cachedHit` (one entry shipped from
50
+ * supervisor's NpmCache).
51
+ * 4. R2 packument cache race (250 ms timeout) via env.SUPERVISOR
52
+ * bindings.
53
+ * 5. Fetch packument with retry/backoff if no cache hit.
54
+ * 6. Pick version via preamble's RESOLVE_VERSION.
55
+ * 7. Materialise ResolvedPackage shape (versionToResolved-style).
56
+ * 8. Stage cache writes for this version + top-5 recent versions
57
+ * (mirrors resolve-facet.ts:580). Returns them in `cacheWrites`
58
+ * so the supervisor can flush in one batched RPC.
59
+ * 9. Return {pkg, deps, peerDeps, optionalDeps, allPeerDependencies,
60
+ * cacheWrites, messages, events, packumentBytesDecoded,
61
+ * packumentSource, error?}.
62
+ */
63
+ import type { ResolvedPackage } from './resolver.js';
64
+ import type { FacetCachedEntry, FacetRegistryEvent } from './resolve-facet.js';
65
+ /**
66
+ * Argument shape: ONE package's resolution work.
67
+ *
68
+ * cachedHit (optional): a FacetCachedEntry the supervisor already has
69
+ * for this name. The task uses it to short-circuit the fetch when
70
+ * it satisfies the requested range. If null/missing, the task fetches
71
+ * the packument directly (or hits the R2 packument cache via the
72
+ * env binding).
73
+ */
74
+ export interface ResolveOneSpec {
75
+ name: string;
76
+ range: string;
77
+ /**
78
+ * Pre-shipped cache entries for THIS name only. Bounded to ≤16 (top
79
+ * versions) so the per-task RPC payload stays small. The task picks
80
+ * the best version that satisfies range.
81
+ */
82
+ cachedEntries: FacetCachedEntry[];
83
+ /**
84
+ * X.5-F R1: when true, this package was either user-typed OR a
85
+ * required peer-dep enqueued by the supervisor. Bypasses
86
+ * SKIP_PACKAGES. The supervisor decides the flag at enqueue time.
87
+ */
88
+ topLevel: boolean;
89
+ /** Same X.5-G G1 semantics as resolve-facet.ts. */
90
+ isOptional: boolean;
91
+ /** W11 framework-aware skip. */
92
+ frameworkAware: boolean;
93
+ /** Per-fetch timeout (ms). Default 15_000. */
94
+ fetchTimeoutMs: number;
95
+ /** Retries for transient failures. Default 3. */
96
+ retries: number;
97
+ }
98
+ export interface ResolveOneResult {
99
+ /** Resolved package, or null if a registry policy filtered it out. */
100
+ pkg: ResolvedPackage | null;
101
+ /**
102
+ * Edge sets that the supervisor uses to build layer N+1.
103
+ * Empty when pkg === null.
104
+ */
105
+ deps: Record<string, string>;
106
+ peerDeps: Record<string, string>;
107
+ optionalDeps: Record<string, string>;
108
+ allPeerDependencies: Record<string, string>;
109
+ /**
110
+ * Cache writes the task is asking the supervisor to flush. Includes
111
+ * the resolved version + up to 5 recent versions seen in the
112
+ * packument (mirrors resolve-facet.ts:580). Empty for cache-hit-
113
+ * only resolutions.
114
+ */
115
+ cacheWrites: any[];
116
+ /** [npm] log lines, forwarded by the supervisor. */
117
+ messages: string[];
118
+ /** W6.5 telemetry events to emitRegistryEvent. */
119
+ events: FacetRegistryEvent[];
120
+ /**
121
+ * Diagnostic: how many bytes the task fetched/decoded. Folded into
122
+ * supervisor's facetCounters for parity with resolve-facet.ts.
123
+ */
124
+ packumentBytesDecoded: number;
125
+ packumentSource: 'cache-hit' | 'r2-cache' | 'network' | 'skipped';
126
+ /**
127
+ * cache-obs-2: per-tier cache events captured during this resolve.
128
+ *
129
+ * Each entry records a single L2/L3/L4 hit-or-miss observed when
130
+ * fetching the packument. L2/L3 events flow from the supervisor RPC
131
+ * return (getCachedPackument.events). L4 events are pushed when the
132
+ * resolver itself fetches from registry.npmjs.org.
133
+ *
134
+ * Folded into the DO-side cache-stats singleton by installer.ts via
135
+ * recordCacheStatEvents on the resolveTree-via-facet return path
136
+ * (same pattern as recordR2RaceCounters).
137
+ *
138
+ * Optional in the type to keep the wire compatible with older
139
+ * resolver-facet bundles; default to [] when consumed supervisor-side.
140
+ */
141
+ cacheStatEvents?: Array<{
142
+ kind: 'hit';
143
+ tier: 'L2' | 'L3' | 'L4';
144
+ cacheKind: 'packument';
145
+ bytes: number;
146
+ } | {
147
+ kind: 'miss';
148
+ tier: 'L2' | 'L3' | 'L4';
149
+ cacheKind: 'packument';
150
+ }>;
151
+ /**
152
+ * W6 reject. The supervisor inspects this and either propagates
153
+ * (regular path) or silent-skips (X.5-drizzle best-effort path) —
154
+ * the task doesn't see bestEffortNames.
155
+ */
156
+ error?: {
157
+ type: 'w6-reject';
158
+ from: string;
159
+ reason: string;
160
+ suggest?: string;
161
+ } | {
162
+ type: 'fetch-exhausted';
163
+ message: string;
164
+ };
165
+ }
166
+ /**
167
+ * Per-package fanout task body. Serialised via fn.toString() and
168
+ * dispatched by NimbusFanoutPool.submitMany — see installer.ts
169
+ * resolveTreeViaFanout.
170
+ *
171
+ * Function signature MUST be `(spec, env)` so NimbusFanoutPool's
172
+ * submitMany invocation `fn(item, env)` lines up.
173
+ *
174
+ * `env` is the loader-isolate env supplied by NimbusFanoutPool.
175
+ * `env.SUPERVISOR` is the supervisor-rpc binding (putRegistryEntries,
176
+ * getCachedPackument, putCachedPackument).
177
+ */
178
+ export declare const resolveOnePackumentInFacet: (spec: ResolveOneSpec, env: {
179
+ SUPERVISOR: {
180
+ getCachedPackument?: (name: string) => Promise<{
181
+ json: string;
182
+ ageMs: number;
183
+ expired: boolean;
184
+ } | null | {
185
+ cached: {
186
+ json: string;
187
+ ageMs: number;
188
+ expired: boolean;
189
+ } | null;
190
+ events: Array<{
191
+ kind: "hit";
192
+ tier: string;
193
+ cacheKind: string;
194
+ bytes: number;
195
+ } | {
196
+ kind: "miss";
197
+ tier: string;
198
+ cacheKind: string;
199
+ }>;
200
+ }>;
201
+ putCachedPackument?: (name: string, json: string) => Promise<boolean>;
202
+ };
203
+ }) => Promise<ResolveOneResult>;
204
+ //# sourceMappingURL=resolve-one-facet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-one-facet.d.ts","sourceRoot":"","sources":["../../src/npm/resolve-one-facet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,437 @@
1
+ /**
2
+ * resolve-one-facet.ts — F-2 frontier-coordinator per-package task body.
3
+ *
4
+ * Why this exists
5
+ * ───────────────
6
+ * F-2 (cleanup-not-done wave) replaces the single resolve-facet that
7
+ * runs the WHOLE BFS in one isolate with a frontier-coordinator at the
8
+ * supervisor that submits each layer of N packages as N independent
9
+ * fanout tasks. This file is the per-task body — one packument fetch +
10
+ * version pick + edge-extraction.
11
+ *
12
+ * Each task runs inside a Worker Loader isolate (NimbusFanoutPool routes
13
+ * automatically: <5 = in-DO, ≥5 = peer-DO). The isolate is short-lived;
14
+ * task body has its own ~128 MiB envelope. Parallelism = layer width
15
+ * (capped at 32 by NimbusFanoutPool's MAX_PEER_FANOUT).
16
+ *
17
+ * Stability invariants (cloudflare-parallel serialises via fn.toString)
18
+ * ───────────────────────────────────────────────────────────────────
19
+ * - No `this` references.
20
+ * - No closure capture other than args + preamble names.
21
+ * - All helpers (semver, exports, skip-list, registry decisions) are
22
+ * accessed via bare identifiers from the preamble:
23
+ *
24
+ * SHOULD_SKIP_PACKAGE(name, frameworkAware) → boolean
25
+ * SHOULD_SWAP(name) → { from, to } | null
26
+ * SHOULD_WARN_SKIP_TRANSITIVE(name) → { from, reason } | null
27
+ * SHOULD_REJECT_FAIL(name) → { from, reason, suggest? } | null
28
+ * PARSE_SEMVER(v) → [maj, min, patch] | null
29
+ * COMPARE_SEMVER(a, b) → number
30
+ * RESOLVE_VERSION(versions, range) → string | null
31
+ *
32
+ * What the task does NOT do (supervisor responsibility)
33
+ * ─────────────────────────────────────────────────────
34
+ * - Edge extraction: the supervisor pulls deps/peerDeps/optionalDeps
35
+ * out of the returned `pkg` and decides what goes in layer N+1.
36
+ * - Cycle detection: the supervisor maintains the `seen` set across
37
+ * layers. The task only sees one (name, range) per call.
38
+ * - X.5-drizzle best-effort tagging: the supervisor maintains the
39
+ * bestEffortNames set; the task returns the `pkg` raw and the
40
+ * supervisor decides whether a downstream reject silent-skips or
41
+ * propagates.
42
+ * - X.5-F top-level handling: the supervisor maintains topLevelNames.
43
+ * `topLevel` is passed in per task so SKIP_PACKAGES bypass works.
44
+ *
45
+ * What the task DOES do
46
+ * ─────────────────────
47
+ * 1. Apply SKIP_PACKAGES filter (unless `topLevel`).
48
+ * 2. Apply W6 swap / warn-skip / reject-fail registry policy.
49
+ * 3. Try in-task cache from `cachedHit` (one entry shipped from
50
+ * supervisor's NpmCache).
51
+ * 4. R2 packument cache race (250 ms timeout) via env.SUPERVISOR
52
+ * bindings.
53
+ * 5. Fetch packument with retry/backoff if no cache hit.
54
+ * 6. Pick version via preamble's RESOLVE_VERSION.
55
+ * 7. Materialise ResolvedPackage shape (versionToResolved-style).
56
+ * 8. Stage cache writes for this version + top-5 recent versions
57
+ * (mirrors resolve-facet.ts:580). Returns them in `cacheWrites`
58
+ * so the supervisor can flush in one batched RPC.
59
+ * 9. Return {pkg, deps, peerDeps, optionalDeps, allPeerDependencies,
60
+ * cacheWrites, messages, events, packumentBytesDecoded,
61
+ * packumentSource, error?}.
62
+ */
63
+ /**
64
+ * Per-package fanout task body. Serialised via fn.toString() and
65
+ * dispatched by NimbusFanoutPool.submitMany — see installer.ts
66
+ * resolveTreeViaFanout.
67
+ *
68
+ * Function signature MUST be `(spec, env)` so NimbusFanoutPool's
69
+ * submitMany invocation `fn(item, env)` lines up.
70
+ *
71
+ * `env` is the loader-isolate env supplied by NimbusFanoutPool.
72
+ * `env.SUPERVISOR` is the supervisor-rpc binding (putRegistryEntries,
73
+ * getCachedPackument, putCachedPackument).
74
+ */
75
+ export const resolveOnePackumentInFacet = async function resolveOnePackumentInFacet(spec, env) {
76
+ const messages = [];
77
+ const events = [];
78
+ const cacheWrites = [];
79
+ // cache-obs-2: per-resolve cache events. Filled by the L2/L3 path
80
+ // (spliced from supervisor RPC return.events) and the L4 path
81
+ // (post-network-fetch). Threaded through `out()` into the result.
82
+ const cacheStatEvents = [];
83
+ const out = (pkg, bytes, source, error) => ({
84
+ pkg,
85
+ deps: pkg?.dependencies ?? {},
86
+ peerDeps: pkg?.peerDependencies ?? {},
87
+ optionalDeps: pkg?.optionalDependencies ?? {},
88
+ allPeerDependencies: pkg?.__allPeerDependencies ?? {},
89
+ cacheWrites,
90
+ messages,
91
+ events,
92
+ packumentBytesDecoded: bytes,
93
+ packumentSource: source,
94
+ cacheStatEvents,
95
+ error,
96
+ });
97
+ // 1. SKIP_PACKAGES gate.
98
+ // @ts-ignore — preamble.
99
+ if (!spec.topLevel && SHOULD_SKIP_PACKAGE(spec.name, !!spec.frameworkAware)) {
100
+ return out(null, 0, 'skipped');
101
+ }
102
+ // 2. W6 registry policy.
103
+ let effName = spec.name;
104
+ // @ts-ignore — preamble.
105
+ const __swap = SHOULD_SWAP(spec.name);
106
+ if (__swap) {
107
+ messages.push(`[npm] \x1b[33m[swap]\x1b[0m ${__swap.from} → ${__swap.to}`);
108
+ events.push({ type: 'swap', from: __swap.from, to: __swap.to, ctx: 'transitive' });
109
+ effName = __swap.to;
110
+ }
111
+ else {
112
+ // @ts-ignore — preamble.
113
+ const __warn = SHOULD_WARN_SKIP_TRANSITIVE(spec.name);
114
+ if (__warn) {
115
+ messages.push(`[npm] \x1b[33m[skip]\x1b[0m ${__warn.from} — ${__warn.reason}`);
116
+ events.push({ type: 'transitive-skip', from: __warn.from, reason: __warn.reason });
117
+ return out(null, 0, 'skipped');
118
+ }
119
+ // @ts-ignore — preamble.
120
+ const __fail = SHOULD_REJECT_FAIL(spec.name);
121
+ if (__fail) {
122
+ events.push({
123
+ type: 'reject',
124
+ from: __fail.from,
125
+ reason: __fail.reason,
126
+ suggest: __fail.suggest,
127
+ ctx: 'transitive',
128
+ });
129
+ return out(null, 0, 'skipped', {
130
+ type: 'w6-reject',
131
+ from: __fail.from,
132
+ reason: __fail.reason,
133
+ suggest: __fail.suggest,
134
+ });
135
+ }
136
+ }
137
+ // 3. cachedHit fast-path.
138
+ const cached = (() => {
139
+ const entries = spec.cachedEntries || [];
140
+ if (entries.length === 0)
141
+ return null;
142
+ const cleanRange = (spec.range || '').replace(/^[~^>=<\s]+/, '');
143
+ if (/^\d+\.\d+\.\d+$/.test(cleanRange)) {
144
+ const exact = entries.find((e) => e.name === effName && e.version === cleanRange);
145
+ if (exact)
146
+ return exact;
147
+ }
148
+ const candidates = entries.filter((e) => e.name === effName);
149
+ if (candidates.length === 0)
150
+ return null;
151
+ const versions = candidates.map((e) => e.version);
152
+ // @ts-ignore — preamble.
153
+ const picked = RESOLVE_VERSION(versions, spec.range);
154
+ if (!picked)
155
+ return null;
156
+ return candidates.find((e) => e.version === picked) || null;
157
+ })();
158
+ if (cached) {
159
+ let deps = {}, peers = {}, exp = null, bin = {};
160
+ try {
161
+ deps = JSON.parse(cached.depsJson);
162
+ }
163
+ catch { }
164
+ try {
165
+ peers = cached.peerDepsJson ? JSON.parse(cached.peerDepsJson) : {};
166
+ }
167
+ catch { }
168
+ try {
169
+ exp = JSON.parse(cached.exportsJson);
170
+ }
171
+ catch { }
172
+ try {
173
+ bin = JSON.parse(cached.binJson);
174
+ }
175
+ catch { }
176
+ const pkgFromCache = {
177
+ name: cached.name,
178
+ version: cached.version,
179
+ tarballUrl: cached.tarballUrl,
180
+ integrity: cached.integrity,
181
+ dependencies: deps,
182
+ peerDependencies: Object.keys(peers).length > 0 ? peers : undefined,
183
+ exports: exp,
184
+ main: cached.main,
185
+ module: cached.moduleField,
186
+ bin,
187
+ };
188
+ return out(pkgFromCache, 0, 'cache-hit');
189
+ }
190
+ // 4 + 5. R2 race + network fetch.
191
+ const NPM_REGISTRY = 'https://registry.npmjs.org';
192
+ const safeName = effName.startsWith('@')
193
+ ? '@' + encodeURIComponent(effName.slice(1))
194
+ : encodeURIComponent(effName);
195
+ const url = NPM_REGISTRY + '/' + safeName;
196
+ const R2_RACE_MS = 250;
197
+ const totalRetries = Math.max(0, spec.retries ?? 3);
198
+ const fetchTimeoutMs = spec.fetchTimeoutMs ?? 15_000;
199
+ // [W4 + cache-obs-2] R2 race. Adapts to either supervisor return
200
+ // shape: v1 bare `{json, ageMs, expired} | null` OR v2 envelope
201
+ // `{ cached, events }`.
202
+ let packumentText = null;
203
+ let packumentSource = 'network';
204
+ if (env?.SUPERVISOR && typeof env.SUPERVISOR.getCachedPackument === 'function') {
205
+ try {
206
+ const r2P = Promise.race([
207
+ env.SUPERVISOR.getCachedPackument(effName),
208
+ new Promise((rs) => setTimeout(() => rs(null), R2_RACE_MS)),
209
+ ]).catch(() => null);
210
+ const r2Raw = await r2P;
211
+ // Adapt to BOTH shapes.
212
+ let cachedEntry = null;
213
+ if (r2Raw && typeof r2Raw === 'object') {
214
+ if ('cached' in r2Raw && 'events' in r2Raw) {
215
+ // v2 envelope
216
+ cachedEntry = r2Raw.cached;
217
+ // Splice supervisor's L2/L3 events into our accumulator.
218
+ const supEvents = r2Raw.events;
219
+ if (Array.isArray(supEvents)) {
220
+ for (const e of supEvents) {
221
+ if (!e || (e.kind !== 'hit' && e.kind !== 'miss'))
222
+ continue;
223
+ if (e.tier !== 'L2' && e.tier !== 'L3')
224
+ continue;
225
+ if (e.cacheKind !== 'packument')
226
+ continue;
227
+ if (e.kind === 'hit') {
228
+ cacheStatEvents.push({
229
+ kind: 'hit',
230
+ tier: e.tier,
231
+ cacheKind: 'packument',
232
+ bytes: typeof e.bytes === 'number' ? e.bytes : 0,
233
+ });
234
+ }
235
+ else {
236
+ cacheStatEvents.push({ kind: 'miss', tier: e.tier, cacheKind: 'packument' });
237
+ }
238
+ }
239
+ }
240
+ }
241
+ else if ('json' in r2Raw) {
242
+ // v1 bare shape
243
+ cachedEntry = r2Raw;
244
+ }
245
+ }
246
+ if (cachedEntry && !cachedEntry.expired && cachedEntry.json) {
247
+ packumentText = cachedEntry.json;
248
+ packumentSource = 'r2-cache';
249
+ }
250
+ }
251
+ catch { /* best-effort, fall through */ }
252
+ }
253
+ if (packumentText === null) {
254
+ const BACKOFF = [500, 1500, 4500];
255
+ let lastErr;
256
+ for (let attempt = 0; attempt <= totalRetries; attempt++) {
257
+ try {
258
+ const ctl = new AbortController();
259
+ const t = setTimeout(() => ctl.abort(), fetchTimeoutMs);
260
+ let resp;
261
+ try {
262
+ resp = await fetch(url, { headers: { Accept: 'application/json' }, signal: ctl.signal });
263
+ }
264
+ finally {
265
+ clearTimeout(t);
266
+ }
267
+ if (resp.ok) {
268
+ packumentText = await resp.text();
269
+ // cache-obs-2: record the L4 hit. byte count is the
270
+ // packument JSON length (authoritative, post-read).
271
+ cacheStatEvents.push({
272
+ kind: 'hit',
273
+ tier: 'L4',
274
+ cacheKind: 'packument',
275
+ bytes: packumentText.length,
276
+ });
277
+ // [W4] Best-effort R2 write-back. Awaited per W4-plan §11.
278
+ if (env?.SUPERVISOR && typeof env.SUPERVISOR.putCachedPackument === 'function') {
279
+ try {
280
+ await env.SUPERVISOR.putCachedPackument(effName, packumentText);
281
+ }
282
+ catch { /* swallow */ }
283
+ }
284
+ break;
285
+ }
286
+ if (resp.status >= 400 && resp.status < 500) {
287
+ // 4xx — package or version doesn't exist. Treat as null.
288
+ messages.push(`[resolve-one] ${effName}: HTTP ${resp.status}`);
289
+ return out(null, 0, 'network');
290
+ }
291
+ try {
292
+ await resp.body?.cancel();
293
+ }
294
+ catch { }
295
+ lastErr = new Error('HTTP ' + resp.status);
296
+ }
297
+ catch (e) {
298
+ lastErr = e;
299
+ }
300
+ if (attempt < totalRetries) {
301
+ const base = BACKOFF[Math.min(attempt, BACKOFF.length - 1)];
302
+ const jitter = Math.round(base + (Math.random() * 2 - 1) * base * 0.25);
303
+ await new Promise((r) => setTimeout(r, Math.max(0, jitter)));
304
+ }
305
+ }
306
+ if (packumentText === null) {
307
+ messages.push(`[resolve-one] ${effName}: fetch exhausted: ${lastErr?.message ?? lastErr}`);
308
+ return out(null, 0, 'network', { type: 'fetch-exhausted', message: String(lastErr?.message ?? lastErr) });
309
+ }
310
+ }
311
+ const bytes = packumentText.length;
312
+ let data;
313
+ try {
314
+ data = JSON.parse(packumentText);
315
+ }
316
+ catch (e) {
317
+ messages.push(`[resolve-one] ${effName}: malformed packument: ${e?.message ?? e}`);
318
+ return out(null, bytes, packumentSource);
319
+ }
320
+ if (!data || !data.versions) {
321
+ return out(null, bytes, packumentSource);
322
+ }
323
+ // 6. Pick version.
324
+ let version = null;
325
+ if (spec.range && data.versions[spec.range])
326
+ version = spec.range;
327
+ if (!version && spec.range && spec.range !== 'latest') {
328
+ const allVersions = Object.keys(data.versions);
329
+ // @ts-ignore — preamble.
330
+ version = RESOLVE_VERSION(allVersions, spec.range);
331
+ }
332
+ if (!version) {
333
+ version = data['dist-tags']?.[spec.range] || data['dist-tags']?.latest || null;
334
+ }
335
+ if (!version || !data.versions[version]) {
336
+ messages.push(`[resolve-one] ${effName}: no version satisfies ${spec.range}`);
337
+ return out(null, bytes, packumentSource);
338
+ }
339
+ // 7. Materialise ResolvedPackage.
340
+ const vData = data.versions[version];
341
+ const versionToResolved = (v) => {
342
+ const binField = v.bin || {};
343
+ const bin = typeof binField === 'string'
344
+ ? { [String(v.name).split('/').pop()]: binField }
345
+ : binField;
346
+ let peerDependencies;
347
+ let allPeers;
348
+ const peers = v.peerDependencies;
349
+ if (peers && typeof peers === 'object') {
350
+ const meta = v.peerDependenciesMeta;
351
+ const required = {};
352
+ const all = {};
353
+ for (const [n, r] of Object.entries(peers)) {
354
+ if (typeof r !== 'string')
355
+ continue;
356
+ all[n] = r;
357
+ if (meta && meta[n] && meta[n].optional === true)
358
+ continue;
359
+ required[n] = r;
360
+ }
361
+ if (Object.keys(required).length > 0)
362
+ peerDependencies = required;
363
+ if (Object.keys(all).length > 0)
364
+ allPeers = all;
365
+ }
366
+ const optionalDependencies = v.optionalDependencies && typeof v.optionalDependencies === 'object'
367
+ ? Object.fromEntries(Object.entries(v.optionalDependencies).filter(([, r]) => typeof r === 'string'))
368
+ : undefined;
369
+ const resolvedOut = {
370
+ name: v.name,
371
+ version: v.version,
372
+ tarballUrl: v.dist?.tarball || '',
373
+ integrity: v.dist?.integrity || v.dist?.shasum || '',
374
+ dependencies: v.dependencies || {},
375
+ peerDependencies,
376
+ optionalDependencies,
377
+ os: Array.isArray(v.os) ? v.os : undefined,
378
+ cpu: Array.isArray(v.cpu) ? v.cpu : undefined,
379
+ libc: Array.isArray(v.libc) ? v.libc : undefined,
380
+ exports: v.exports ?? null,
381
+ main: v.main || '',
382
+ module: v.module || '',
383
+ bin,
384
+ };
385
+ if (allPeers)
386
+ resolvedOut.__allPeerDependencies = allPeers;
387
+ return resolvedOut;
388
+ };
389
+ const pkg = versionToResolved(vData);
390
+ // 8. Stage cache writes.
391
+ cacheWrites.push({
392
+ name: pkg.name,
393
+ version: pkg.version,
394
+ tarballUrl: pkg.tarballUrl,
395
+ integrity: pkg.integrity,
396
+ depsJson: JSON.stringify(pkg.dependencies),
397
+ peerDepsJson: JSON.stringify(pkg.peerDependencies ?? {}),
398
+ exportsJson: JSON.stringify(pkg.exports ?? {}),
399
+ main: pkg.main,
400
+ moduleField: pkg.module,
401
+ binJson: JSON.stringify(pkg.bin),
402
+ fetchedAt: Date.now(),
403
+ });
404
+ // Top-5 sibling versions, mirrors resolve-facet.ts:580.
405
+ const sorted = Object.keys(data.versions)
406
+ // @ts-ignore — preamble.
407
+ .map((v) => ({ v, p: PARSE_SEMVER(v) }))
408
+ .filter((x) => x.p !== null)
409
+ // @ts-ignore — preamble.
410
+ .sort((a, b) => COMPARE_SEMVER(b.p, a.p));
411
+ for (let i = 0; i < Math.min(5, sorted.length); i++) {
412
+ const otherVer = sorted[i].v;
413
+ if (otherVer === pkg.version)
414
+ continue;
415
+ const otherData = data.versions[otherVer];
416
+ if (!otherData)
417
+ continue;
418
+ try {
419
+ const otherPkg = versionToResolved(otherData);
420
+ cacheWrites.push({
421
+ name: otherPkg.name,
422
+ version: otherPkg.version,
423
+ tarballUrl: otherPkg.tarballUrl,
424
+ integrity: otherPkg.integrity,
425
+ depsJson: JSON.stringify(otherPkg.dependencies),
426
+ peerDepsJson: JSON.stringify(otherPkg.peerDependencies ?? {}),
427
+ exportsJson: JSON.stringify(otherPkg.exports ?? {}),
428
+ main: otherPkg.main,
429
+ moduleField: otherPkg.module,
430
+ binJson: JSON.stringify(otherPkg.bin),
431
+ fetchedAt: Date.now(),
432
+ });
433
+ }
434
+ catch { /* skip malformed */ }
435
+ }
436
+ return out(pkg, bytes, packumentSource);
437
+ };