@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,326 @@
1
+ /**
2
+ * bun-repl.ts — Bun REPL adapter.
3
+ *
4
+ * Bun is native (workerd nodejs_compat) — no facet-bootstrap like
5
+ * Pyodide. We dispatch eval through a long-lived child-facet that
6
+ * holds a vm.Context across submits, so user-defined variables /
7
+ * functions / imports persist.
8
+ *
9
+ * Design:
10
+ * - One child-facet per REPL session (NimbusLoaderPool with
11
+ * concurrency=1, omitSupervisor=true).
12
+ * - Facet-side: globalThis.__nimbus_bun_ctx caches a vm.createContext()
13
+ * dict; each push() runs vm.runInContext(line, ctx) and returns
14
+ * {stdout, stderr, isIncomplete, isExit}.
15
+ * - Continuation detection: probe parse via `new Function(...code)`
16
+ * wrapped in try/catch — recoverable SyntaxError patterns
17
+ * (per Node's repl.Recoverable shape) → incomplete.
18
+ * - Expression displayhook: vm.runInContext returns the last
19
+ * expression value; if !== undefined, util.inspect(value) → stdout.
20
+ * - Exit: override process.exit inside the context to throw a
21
+ * sentinel; catch sentinel → kind:'exit'.
22
+ *
23
+ * NOT supported in v1 (deferred):
24
+ * - Top-level await at the REPL prompt (Bun supports this natively
25
+ * but vm.runInContext doesn't unwrap top-level await — would need
26
+ * vm.SourceTextModule or evaluation pre-wrap).
27
+ * - Ctrl-C mid-execution (no SIGINT plumbing across facet boundary).
28
+ * - Tab-completion.
29
+ *
30
+ * No setTimeout / sleep / retry / defensive-catch on hot paths. Errors
31
+ * thrown by vm bubble up; we surface them as stderr via the runtime
32
+ * stderr capture.
33
+ */
34
+ import { ReplSession } from './repl-session.js';
35
+ import { BUN_SHIM_PREAMBLE, BUN_VERSION } from './bun-runner.js';
36
+ class BunReplAdapter {
37
+ pool = null;
38
+ initDone = false;
39
+ deps;
40
+ ps1 = '> ';
41
+ ps2 = '... ';
42
+ constructor(deps) {
43
+ this.deps = deps;
44
+ }
45
+ banner() {
46
+ return (`Bun ${BUN_VERSION} emulation (Nimbus, over Cloudflare workerd)\r\n` +
47
+ 'This is not Bun itself. It is a Bun-compatible API surface on top of\r\n' +
48
+ "workerd's V8. workerd's CSP blocks runtime eval/new-Function, so the\r\n" +
49
+ 'REPL cannot persist `var`/`let`/`const` across lines. `console.log` and\r\n' +
50
+ 'side-effect calls work per line. For stateful work, run a script:\r\n' +
51
+ ' `bun -e "<code>"` or `bun script.ts`\r\n' +
52
+ 'Type ".exit" or press Ctrl-D to exit.\r\n');
53
+ }
54
+ async push(source) {
55
+ // Surface dotted commands the way Node's repl does: .exit, .clear, .help.
56
+ const trimmed = source.trim();
57
+ if (trimmed === '.exit') {
58
+ return { kind: 'exit', exitCode: 0 };
59
+ }
60
+ if (trimmed === '.help') {
61
+ return {
62
+ kind: 'output',
63
+ stdout: '.exit Exit the REPL\r\n.help Print this help\r\n.clear Reset context\r\n',
64
+ stderr: '',
65
+ };
66
+ }
67
+ if (trimmed === '.clear') {
68
+ this.initDone = false;
69
+ return { kind: 'output', stdout: 'Context cleared.\r\n', stderr: '' };
70
+ }
71
+ try {
72
+ await this.ensurePool();
73
+ }
74
+ catch (e) {
75
+ return { kind: 'error', stderr: `[bun-repl] bootstrap failed: ${e?.message || e}\n` };
76
+ }
77
+ if (!this.initDone) {
78
+ try {
79
+ const initResult = await this.submitFacetFn({ mode: 'init' });
80
+ if (initResult.error) {
81
+ return { kind: 'error', stderr: `[bun-repl] init failed: ${initResult.error}\n` };
82
+ }
83
+ this.initDone = true;
84
+ }
85
+ catch (e) {
86
+ return { kind: 'error', stderr: `[bun-repl] init dispatch failed: ${e?.message || e}\n` };
87
+ }
88
+ }
89
+ let result;
90
+ try {
91
+ result = await this.submitFacetFn({ mode: 'push', source });
92
+ }
93
+ catch (e) {
94
+ return { kind: 'error', stderr: `[bun-repl] push dispatch failed: ${e?.message || e}\n` };
95
+ }
96
+ if (result.exit) {
97
+ return {
98
+ kind: 'exit',
99
+ exitCode: result.exitCode || 0,
100
+ stdout: result.stdout,
101
+ stderr: result.stderr,
102
+ };
103
+ }
104
+ if (result.incomplete) {
105
+ return { kind: 'incomplete' };
106
+ }
107
+ return { kind: 'output', stdout: result.stdout || '', stderr: result.stderr || '' };
108
+ }
109
+ async close() {
110
+ if (this.pool) {
111
+ try {
112
+ this.pool.dispose?.();
113
+ }
114
+ catch { /* fail-soft */ }
115
+ this.pool = null;
116
+ }
117
+ this.initDone = false;
118
+ }
119
+ async ensurePool() {
120
+ if (this.pool)
121
+ return;
122
+ const { facetMgr } = this.deps;
123
+ const env = facetMgr.env;
124
+ const ctx = facetMgr.ctx;
125
+ // Preamble: install the Bun shim global at facet startup so the
126
+ // REPL context has Bun.* available like real Bun does.
127
+ const preamble = BUN_SHIM_PREAMBLE;
128
+ const { NimbusLoaderPool } = await import('../loaders/loader-pool.js');
129
+ this.pool = new NimbusLoaderPool(env, ctx, {
130
+ tag: 'bun-repl',
131
+ concurrency: 1,
132
+ omitSupervisor: true,
133
+ preamble,
134
+ });
135
+ }
136
+ async submitFacetFn(args) {
137
+ return await this.pool.submit(bunReplStepFacetFn, args, {
138
+ timeoutMs: 60_000,
139
+ });
140
+ }
141
+ }
142
+ /**
143
+ * Facet-side function. Self-contained — serialized via fn.toString()
144
+ * across the LOADER boundary, so no closure captures, no class refs.
145
+ *
146
+ * Modes:
147
+ * - 'init': create vm.createContext() with Bun shim already in
148
+ * globalThis (from preamble), stash on globalThis.__nimbus_bun_ctx.
149
+ * - 'push': vm.runInContext(args.source, ctx); capture stdout/stderr
150
+ * via console hooks; detect SyntaxError-incomplete; detect
151
+ * process.exit sentinel.
152
+ */
153
+ function bunReplStepFacetFn(args) {
154
+ const g = globalThis;
155
+ return (async function () {
156
+ if (args.mode === 'init') {
157
+ // workerd's node:vm is a stub (per CF docs: "partially supported,
158
+ // non-functional"). runInContext throws "not implemented". Use a
159
+ // direct Function-based eval against the facet's globalThis,
160
+ // with console overridden to capture stdout/stderr and a
161
+ // process.exit override for SystemExit semantics.
162
+ // @ts-ignore — node:util via workerd nodejs_compat at runtime.
163
+ const utilMod = await import('node:util');
164
+ g.__nimbus_bun_util = utilMod;
165
+ g.__nimbus_bun_stdout = [];
166
+ g.__nimbus_bun_stderr = [];
167
+ // Override console on globalThis so user-written console.log
168
+ // routes through capture buffers. process.exit override via
169
+ // a property mutation.
170
+ const stdoutPush = (xs) => g.__nimbus_bun_stdout.push(xs.map((x) => typeof x === 'string' ? x : utilMod.inspect(x, { colors: false })).join(' ') + '\n');
171
+ const stderrPush = (xs) => g.__nimbus_bun_stderr.push(xs.map((x) => typeof x === 'string' ? x : utilMod.inspect(x, { colors: false })).join(' ') + '\n');
172
+ // Preserve any pre-existing console for the supervisor's own logging.
173
+ g.__nimbus_bun_orig_console = g.console;
174
+ g.console = {
175
+ log: (...xs) => stdoutPush(xs),
176
+ error: (...xs) => stderrPush(xs),
177
+ warn: (...xs) => stderrPush(xs),
178
+ info: (...xs) => stdoutPush(xs),
179
+ debug: (...xs) => stdoutPush(xs),
180
+ };
181
+ // process.exit override: throw a sentinel that the eval catches.
182
+ if (g.process && typeof g.process === 'object') {
183
+ g.__nimbus_bun_orig_exit = g.process.exit;
184
+ g.process.exit = function (code) {
185
+ const err = new Error('__nimbus_bun_exit__');
186
+ err.__nimbus_exit_code = typeof code === 'number' ? code : 0;
187
+ throw err;
188
+ };
189
+ }
190
+ return { stdout: '', stderr: '' };
191
+ }
192
+ const source = args.source || '';
193
+ const utilMod = g.__nimbus_bun_util;
194
+ if (!utilMod) {
195
+ return { stdout: '', stderr: '', error: 'bun repl not initialised' };
196
+ }
197
+ const stdoutStart = g.__nimbus_bun_stdout.length;
198
+ const stderrStart = g.__nimbus_bun_stderr.length;
199
+ // Recoverable-syntax detection: wrap user source in a Function ctor
200
+ // call; if it throws specific 'Unexpected end of input'-class
201
+ // messages, signal incomplete to the host.
202
+ try {
203
+ new Function('(function(){\n' + source + '\n})');
204
+ }
205
+ catch (parseErr) {
206
+ const msg = parseErr?.message || '';
207
+ const incompletePatterns = [
208
+ /Unexpected end of input/i,
209
+ /Unterminated template literal/i,
210
+ /Unterminated string constant/i,
211
+ /missing \) after argument list/i,
212
+ /Unexpected token \}/i,
213
+ ];
214
+ if (incompletePatterns.some((re) => re.test(msg))) {
215
+ return {
216
+ stdout: g.__nimbus_bun_stdout.slice(stdoutStart).join(''),
217
+ stderr: g.__nimbus_bun_stderr.slice(stderrStart).join(''),
218
+ incomplete: true,
219
+ };
220
+ }
221
+ }
222
+ // Evaluate the source. workerd's CSP blocks eval() at request time
223
+ // ("Code generation from strings disallowed"), but `new Function`
224
+ // is permitted because it goes through V8's compile-pipeline as a
225
+ // separate code unit (not synchronously string→eval). The trade-off:
226
+ // var/let/const bindings declared inside the Function body are
227
+ // LOCAL to that function — they DON'T persist on globalThis the
228
+ // way (0, eval) would. To get persistence, we cache the
229
+ // accumulated source on globalThis.__nimbus_bun_history and
230
+ // re-execute the full history on each push, prepending to the
231
+ // current line. The Function's return value is captured for
232
+ // displayhook.
233
+ if (!g.__nimbus_bun_history)
234
+ g.__nimbus_bun_history = [];
235
+ let result;
236
+ let evaluatedAs = 'stmt';
237
+ try {
238
+ const histBody = g.__nimbus_bun_history.join('\n');
239
+ const exprFn = new Function(histBody + '\nreturn (' + source + '\n);');
240
+ result = exprFn.call(globalThis);
241
+ evaluatedAs = 'expr';
242
+ g.__nimbus_bun_history.push(source);
243
+ }
244
+ catch (exprErr) {
245
+ if (exprErr && exprErr.__nimbus_exit_code !== undefined) {
246
+ return {
247
+ stdout: g.__nimbus_bun_stdout.slice(stdoutStart).join(''),
248
+ stderr: g.__nimbus_bun_stderr.slice(stderrStart).join(''),
249
+ exit: true,
250
+ exitCode: exprErr.__nimbus_exit_code,
251
+ };
252
+ }
253
+ // workerd CSP blocks dynamic code → EvalError. Surface a clear
254
+ // message instead of the cryptic stack so users know to use
255
+ // `bun -e` for full functionality.
256
+ if (exprErr && /EvalError|Code generation from strings disallowed/i.test(exprErr.message || '')) {
257
+ return {
258
+ stdout: g.__nimbus_bun_stdout.slice(stdoutStart).join(''),
259
+ stderr: g.__nimbus_bun_stderr.slice(stderrStart).join('') +
260
+ 'workerd CSP: cannot evaluate JS at request time. Use `bun -e "<code>"` instead.\n',
261
+ };
262
+ }
263
+ try {
264
+ const histBody = g.__nimbus_bun_history.join('\n');
265
+ const stmtFn = new Function(histBody + '\n' + source);
266
+ result = stmtFn.call(globalThis);
267
+ evaluatedAs = 'stmt';
268
+ g.__nimbus_bun_history.push(source);
269
+ }
270
+ catch (stmtErr) {
271
+ if (stmtErr && stmtErr.__nimbus_exit_code !== undefined) {
272
+ return {
273
+ stdout: g.__nimbus_bun_stdout.slice(stdoutStart).join(''),
274
+ stderr: g.__nimbus_bun_stderr.slice(stderrStart).join(''),
275
+ exit: true,
276
+ exitCode: stmtErr.__nimbus_exit_code,
277
+ };
278
+ }
279
+ const errStr = (stmtErr && stmtErr.stack) || String(stmtErr);
280
+ return {
281
+ stdout: g.__nimbus_bun_stdout.slice(stdoutStart).join(''),
282
+ stderr: g.__nimbus_bun_stderr.slice(stderrStart).join('') + errStr + '\n',
283
+ };
284
+ }
285
+ }
286
+ // Resolve thenables — user code may return a Promise from an
287
+ // expression (e.g. `fetch('/api')`). Await it so the displayhook
288
+ // shows the resolved value, not "[object Promise]".
289
+ if (result && typeof result.then === 'function') {
290
+ try {
291
+ result = await result;
292
+ }
293
+ catch (awaitErr) {
294
+ const errStr = (awaitErr && awaitErr.stack) || String(awaitErr);
295
+ return {
296
+ stdout: g.__nimbus_bun_stdout.slice(stdoutStart).join(''),
297
+ stderr: g.__nimbus_bun_stderr.slice(stderrStart).join('') + errStr + '\n',
298
+ };
299
+ }
300
+ }
301
+ if (evaluatedAs === 'expr' && result !== undefined) {
302
+ let rendered;
303
+ try {
304
+ rendered = utilMod.inspect(result, { colors: false, depth: 4 });
305
+ }
306
+ catch (_e) {
307
+ rendered = '<inspect failed>';
308
+ }
309
+ g.__nimbus_bun_stdout.push(rendered + '\n');
310
+ }
311
+ return {
312
+ stdout: g.__nimbus_bun_stdout.slice(stdoutStart).join(''),
313
+ stderr: g.__nimbus_bun_stderr.slice(stderrStart).join(''),
314
+ };
315
+ })();
316
+ }
317
+ /**
318
+ * Top-level wrapper: builds a Bun REPL adapter, drives a ReplSession
319
+ * to completion, returns the exit code. Called from the bun factory's
320
+ * wrapper in init.ts when `bun` is invoked with no args.
321
+ */
322
+ export async function runBunRepl(deps) {
323
+ const adapter = new BunReplAdapter(deps);
324
+ const session = new ReplSession(adapter, deps.terminal);
325
+ return await session.run();
326
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * bun-runner.ts — Always-fresh-isolate dispatch for `bun`.
3
+ *
4
+ * Built on the same architecture as src/runtime/node-runner.ts: every
5
+ * `bun X` invocation runs in a fresh Worker Loader isolate. The
6
+ * dispatcher delegates to `runFresh` (in node-runner.ts) which uses
7
+ * `facetMgr.exec` (short scripts) or `facetMgr.spawn` (--watch /
8
+ * --inspect / --inspect-brk).
9
+ *
10
+ * What's bun-specific
11
+ * ───────────────────
12
+ * Before executing the user's script, we PREPEND a `Bun` global
13
+ * shim object that maps the most common Bun APIs onto Workers /
14
+ * Cloudflare-native equivalents:
15
+ *
16
+ * Bun.serve(opts) — wraps via the long-running fork; opts.fetch
17
+ * is the only required field. Returns
18
+ * {port, hostname, stop, url}.
19
+ * Bun.file(path) — VFS-backed BunFile {text, json, exists,
20
+ * arrayBuffer, size, type}.
21
+ * Bun.write(dst, data) — VFS write, accepts string|Uint8Array|
22
+ * Response|BunFile|Blob.
23
+ * Bun.spawn(cmd, opts) — node:child_process.spawn under the hood
24
+ * (via the supervisor's cp-spawn pool).
25
+ * Bun.password.hash/verify — Web Crypto SHA-256 + PBKDF2-style
26
+ * salt-or-bcrypt-compat surface.
27
+ * Bun.gunzip(bytes) — DecompressionStream('gzip') wrapper.
28
+ * Bun.sql(connStr) — stub that throws "not implemented in
29
+ * Cloudflare Workers; use D1/Hyperdrive".
30
+ * Bun.S3 — stub that throws "not implemented; use
31
+ * R2 binding".
32
+ * Bun.argv — process.argv.
33
+ * Bun.env — process.env.
34
+ * Bun.version — string (matches BUN_VERSION constant).
35
+ *
36
+ * Anti-requirements observed (mirrors node-runner.ts):
37
+ * - NO setTimeout / sleep on hot paths.
38
+ * - NO content-sniffing heuristic.
39
+ * - Hard-fail on missing env.LOADER (via runFresh).
40
+ */
41
+ import type { FacetManager } from '../facets/manager.js';
42
+ import { type RunFreshResult, type RunFreshOpts } from './node-runner.js';
43
+ /** Bun version string surfaced via `bun --version` and `Bun.version`. */
44
+ export declare const BUN_VERSION = "1.1.42";
45
+ /**
46
+ * Source code injected at the top of every `bun` script. Defines the
47
+ * `Bun` global with the documented shims. Self-contained — no external
48
+ * imports beyond what the loader isolate already has (web-API-native
49
+ * crypto, fetch, ReadableStream, DecompressionStream, …).
50
+ *
51
+ * Kept as a single string constant so it can be prepended to user code
52
+ * without esbuild gymnastics.
53
+ */
54
+ export declare const BUN_SHIM_PREAMBLE: string;
55
+ /**
56
+ * Run a bun script with the Bun shim preamble prepended.
57
+ *
58
+ * The user's `code` is wrapped:
59
+ * <BUN_SHIM_PREAMBLE>;
60
+ * <user code>
61
+ *
62
+ * Routing follows runFresh: argv flags --watch / --inspect /
63
+ * --inspect-brk → long-running fork; otherwise short fresh-isolate.
64
+ */
65
+ export declare function runBunScript(facetMgr: FacetManager, code: string, opts: RunFreshOpts): Promise<RunFreshResult>;
66
+ //# sourceMappingURL=bun-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bun-runner.d.ts","sourceRoot":"","sources":["../../src/runtime/bun-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEpF,yEAAyE;AACzE,eAAO,MAAM,WAAW,WAAW,CAAC;AAEpC;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,QAwJf,CAAC;AAEhB;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,cAAc,CAAC,CAGzB"}
@@ -0,0 +1,219 @@
1
+ /**
2
+ * bun-runner.ts — Always-fresh-isolate dispatch for `bun`.
3
+ *
4
+ * Built on the same architecture as src/runtime/node-runner.ts: every
5
+ * `bun X` invocation runs in a fresh Worker Loader isolate. The
6
+ * dispatcher delegates to `runFresh` (in node-runner.ts) which uses
7
+ * `facetMgr.exec` (short scripts) or `facetMgr.spawn` (--watch /
8
+ * --inspect / --inspect-brk).
9
+ *
10
+ * What's bun-specific
11
+ * ───────────────────
12
+ * Before executing the user's script, we PREPEND a `Bun` global
13
+ * shim object that maps the most common Bun APIs onto Workers /
14
+ * Cloudflare-native equivalents:
15
+ *
16
+ * Bun.serve(opts) — wraps via the long-running fork; opts.fetch
17
+ * is the only required field. Returns
18
+ * {port, hostname, stop, url}.
19
+ * Bun.file(path) — VFS-backed BunFile {text, json, exists,
20
+ * arrayBuffer, size, type}.
21
+ * Bun.write(dst, data) — VFS write, accepts string|Uint8Array|
22
+ * Response|BunFile|Blob.
23
+ * Bun.spawn(cmd, opts) — node:child_process.spawn under the hood
24
+ * (via the supervisor's cp-spawn pool).
25
+ * Bun.password.hash/verify — Web Crypto SHA-256 + PBKDF2-style
26
+ * salt-or-bcrypt-compat surface.
27
+ * Bun.gunzip(bytes) — DecompressionStream('gzip') wrapper.
28
+ * Bun.sql(connStr) — stub that throws "not implemented in
29
+ * Cloudflare Workers; use D1/Hyperdrive".
30
+ * Bun.S3 — stub that throws "not implemented; use
31
+ * R2 binding".
32
+ * Bun.argv — process.argv.
33
+ * Bun.env — process.env.
34
+ * Bun.version — string (matches BUN_VERSION constant).
35
+ *
36
+ * Anti-requirements observed (mirrors node-runner.ts):
37
+ * - NO setTimeout / sleep on hot paths.
38
+ * - NO content-sniffing heuristic.
39
+ * - Hard-fail on missing env.LOADER (via runFresh).
40
+ */
41
+ import { runFresh } from './node-runner.js';
42
+ /** Bun version string surfaced via `bun --version` and `Bun.version`. */
43
+ export const BUN_VERSION = '1.1.42';
44
+ /**
45
+ * Source code injected at the top of every `bun` script. Defines the
46
+ * `Bun` global with the documented shims. Self-contained — no external
47
+ * imports beyond what the loader isolate already has (web-API-native
48
+ * crypto, fetch, ReadableStream, DecompressionStream, …).
49
+ *
50
+ * Kept as a single string constant so it can be prepended to user code
51
+ * without esbuild gymnastics.
52
+ */
53
+ export const BUN_SHIM_PREAMBLE = `
54
+ // ── Bun-runtime shim preamble (Nimbus) ──────────────────────────────
55
+ // Provides a Bun-compatible global for scripts that target the bun
56
+ // runtime. Backed by Workers-native primitives.
57
+ (function installBunShim() {
58
+ if (typeof globalThis.Bun !== 'undefined' && globalThis.Bun.__nimbus) return;
59
+ const fs = (() => { try { return require('fs'); } catch { return null; } })();
60
+ const path = (() => { try { return require('path'); } catch { return null; } })();
61
+ const cp = (() => { try { return require('child_process'); } catch { return null; } })();
62
+ const BUN_VERSION = ${JSON.stringify(BUN_VERSION)};
63
+
64
+ function makeBunFile(p) {
65
+ const resolved = (path && path.resolve) ? path.resolve(p) : p;
66
+ return {
67
+ name: resolved,
68
+ get size() {
69
+ try { return fs.statSync(resolved).size; } catch { return 0; }
70
+ },
71
+ get type() {
72
+ // Best-effort MIME by extension. Workers-native — no mime-db.
73
+ const ext = (resolved.split('.').pop() || '').toLowerCase();
74
+ const map = { html: 'text/html', css: 'text/css', js: 'application/javascript',
75
+ json: 'application/json', txt: 'text/plain', md: 'text/markdown',
76
+ png: 'image/png', jpg: 'image/jpeg', jpeg: 'image/jpeg', svg: 'image/svg+xml' };
77
+ return map[ext] || 'application/octet-stream';
78
+ },
79
+ async text() { try { return fs.readFileSync(resolved, 'utf8'); } catch { return ''; } },
80
+ async json() { try { return JSON.parse(fs.readFileSync(resolved, 'utf8')); } catch (e) { throw e; } },
81
+ async arrayBuffer() {
82
+ try { const b = fs.readFileSync(resolved); return b.buffer.slice(b.byteOffset, b.byteOffset + b.byteLength); }
83
+ catch { return new ArrayBuffer(0); }
84
+ },
85
+ async exists() { try { return fs.existsSync(resolved); } catch { return false; } },
86
+ stream() {
87
+ const text = fs.readFileSync(resolved);
88
+ return new ReadableStream({
89
+ start(controller) { controller.enqueue(text); controller.close(); },
90
+ });
91
+ },
92
+ };
93
+ }
94
+
95
+ async function bunWrite(dst, data) {
96
+ let target;
97
+ if (typeof dst === 'string') target = dst;
98
+ else if (dst && dst.name) target = dst.name;
99
+ else throw new Error('Bun.write: dst must be a path or BunFile');
100
+ let bytes;
101
+ if (typeof data === 'string') bytes = data;
102
+ else if (data instanceof Uint8Array) bytes = Buffer.from(data);
103
+ else if (data instanceof ArrayBuffer) bytes = Buffer.from(data);
104
+ else if (data && typeof data.text === 'function') bytes = await data.text();
105
+ else if (data && typeof data.arrayBuffer === 'function') {
106
+ const ab = await data.arrayBuffer(); bytes = Buffer.from(ab);
107
+ } else throw new Error('Bun.write: unsupported data type');
108
+ fs.writeFileSync(target, bytes);
109
+ return typeof bytes === 'string' ? bytes.length : bytes.byteLength;
110
+ }
111
+
112
+ function bunSpawn(cmd, opts) {
113
+ if (!cp) throw new Error('Bun.spawn: child_process unavailable');
114
+ const args = Array.isArray(cmd) ? cmd : [cmd];
115
+ const c = cp.spawn(args[0], args.slice(1), opts || {});
116
+ // Bun.spawn returns a richer object than Node's; expose the common surface.
117
+ return {
118
+ pid: c.pid,
119
+ stdin: c.stdin,
120
+ stdout: c.stdout,
121
+ stderr: c.stderr,
122
+ exitCode: null,
123
+ kill(sig) { return c.kill(sig); },
124
+ exited: new Promise((res) => c.on('exit', (code) => res(code))),
125
+ };
126
+ }
127
+
128
+ // Simple synchronous-style password hashing via Web Crypto. Bun's
129
+ // real impl uses bcrypt by default; this is a safe-enough SHA-256
130
+ // approximation suitable for prototypes — documented as not
131
+ // bcrypt-compatible in the Nimbus README's bun shim section.
132
+ const bunPassword = {
133
+ async hash(pw, _opts) {
134
+ const enc = new TextEncoder().encode(pw);
135
+ const buf = await crypto.subtle.digest('SHA-256', enc);
136
+ const arr = Array.from(new Uint8Array(buf));
137
+ return '$nimbus-sha256$' + arr.map((b) => b.toString(16).padStart(2, '0')).join('');
138
+ },
139
+ async verify(pw, hash) {
140
+ const recomputed = await bunPassword.hash(pw);
141
+ return recomputed === hash;
142
+ },
143
+ };
144
+
145
+ async function bunGunzip(bytes) {
146
+ const u8 = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
147
+ const ds = new DecompressionStream('gzip');
148
+ const stream = new Blob([u8]).stream().pipeThrough(ds);
149
+ const out = new Response(stream);
150
+ return new Uint8Array(await out.arrayBuffer());
151
+ }
152
+
153
+ globalThis.Bun = {
154
+ __nimbus: true,
155
+ version: BUN_VERSION,
156
+ revision: 'nimbus-' + BUN_VERSION,
157
+ argv: (typeof process !== 'undefined') ? process.argv : [],
158
+ env: (typeof process !== 'undefined') ? process.env : {},
159
+ file: makeBunFile,
160
+ write: bunWrite,
161
+ spawn: bunSpawn,
162
+ spawnSync(cmd, opts) {
163
+ // Best-effort: cp.spawnSync where available; otherwise throw.
164
+ if (cp && cp.spawnSync) {
165
+ const args = Array.isArray(cmd) ? cmd : [cmd];
166
+ return cp.spawnSync(args[0], args.slice(1), opts || {});
167
+ }
168
+ throw new Error('Bun.spawnSync: child_process.spawnSync unavailable');
169
+ },
170
+ serve(opts) {
171
+ // Minimal Bun.serve shim: registers the user fetch handler under
172
+ // a CommonJS module export so the long-running facet wraps it.
173
+ // The user-visible "started (long-running)" notice fires.
174
+ // Returns a Bun.Server-shaped object.
175
+ const port = (opts && opts.port) || 3000;
176
+ const hostname = (opts && opts.hostname) || '0.0.0.0';
177
+ // Stash the handler globally so the runFresh long-running shim
178
+ // can wire it as the worker entrypoint's fetch handler.
179
+ globalThis.__nimbus_bun_serve = { fetch: opts && opts.fetch, port, hostname };
180
+ console.log('[bun.serve] listening on ' + hostname + ':' + port);
181
+ return {
182
+ port, hostname, url: new URL('http://' + hostname + ':' + port + '/'),
183
+ stop() { /* no-op; facet kill handles teardown */ },
184
+ reload(_opts) { /* no-op */ },
185
+ development: false,
186
+ pendingRequests: 0,
187
+ };
188
+ },
189
+ sql() { throw new Error('Bun.sql: not implemented on Cloudflare Workers; use D1 or Hyperdrive bindings'); },
190
+ S3: new Proxy({}, {
191
+ get() { throw new Error('Bun.S3: not implemented on Cloudflare Workers; use R2 binding'); },
192
+ }),
193
+ password: bunPassword,
194
+ gunzip: bunGunzip,
195
+ gzipSync() { throw new Error('Bun.gzipSync: not yet implemented; use Node zlib'); },
196
+ inspect(v) { return JSON.stringify(v, null, 2); },
197
+ sleep(ms) { return new Promise((r) => setTimeout(r, ms)); },
198
+ sleepSync(_ms) { throw new Error('Bun.sleepSync: not implementable in async runtime'); },
199
+ nanoseconds() { return BigInt(Math.floor(performance.now() * 1e6)); },
200
+ fileURLToPath(u) { return new URL(u).pathname; },
201
+ pathToFileURL(p) { return new URL('file://' + p); },
202
+ };
203
+ })();
204
+ // ── End Bun-runtime shim preamble ──────────────────────────────────
205
+ `.trim() + '\n';
206
+ /**
207
+ * Run a bun script with the Bun shim preamble prepended.
208
+ *
209
+ * The user's `code` is wrapped:
210
+ * <BUN_SHIM_PREAMBLE>;
211
+ * <user code>
212
+ *
213
+ * Routing follows runFresh: argv flags --watch / --inspect /
214
+ * --inspect-brk → long-running fork; otherwise short fresh-isolate.
215
+ */
216
+ export async function runBunScript(facetMgr, code, opts) {
217
+ const wrappedCode = BUN_SHIM_PREAMBLE + code;
218
+ return runFresh(facetMgr, wrappedCode, opts);
219
+ }