@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.
- package/README.md +219 -0
- package/dist/_shared/bytes.d.ts +18 -0
- package/dist/_shared/bytes.d.ts.map +1 -0
- package/dist/_shared/bytes.js +17 -0
- package/dist/_shared/cache-stats.d.ts +146 -0
- package/dist/_shared/cache-stats.d.ts.map +1 -0
- package/dist/_shared/cache-stats.js +162 -0
- package/dist/_shared/exports-resolver.d.ts +76 -0
- package/dist/_shared/exports-resolver.d.ts.map +1 -0
- package/dist/_shared/exports-resolver.js +284 -0
- package/dist/_shared/install-phase.d.ts +47 -0
- package/dist/_shared/install-phase.d.ts.map +1 -0
- package/dist/_shared/install-phase.js +1 -0
- package/dist/_shared/real-node-imports.d.ts +38 -0
- package/dist/_shared/real-node-imports.d.ts.map +1 -0
- package/dist/_shared/real-node-imports.js +46 -0
- package/dist/_shared/retry.d.ts +93 -0
- package/dist/_shared/retry.d.ts.map +1 -0
- package/dist/_shared/retry.js +161 -0
- package/dist/_shared/session-id.d.ts +39 -0
- package/dist/_shared/session-id.d.ts.map +1 -0
- package/dist/_shared/session-id.js +127 -0
- package/dist/_shared/session-router.d.ts +104 -0
- package/dist/_shared/session-router.d.ts.map +1 -0
- package/dist/_shared/session-router.js +165 -0
- package/dist/_shared/w7-frame.d.ts +93 -0
- package/dist/_shared/w7-frame.d.ts.map +1 -0
- package/dist/_shared/w7-frame.js +402 -0
- package/dist/auth/index.d.ts +16 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +15 -0
- package/dist/auth/middleware.d.ts +85 -0
- package/dist/auth/middleware.d.ts.map +1 -0
- package/dist/auth/middleware.js +150 -0
- package/dist/auth/token.d.ts +96 -0
- package/dist/auth/token.d.ts.map +1 -0
- package/dist/auth/token.js +226 -0
- package/dist/auth/types.d.ts +141 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +114 -0
- package/dist/bindings/d1.d.ts +102 -0
- package/dist/bindings/d1.d.ts.map +1 -0
- package/dist/bindings/d1.js +549 -0
- package/dist/bindings/kv.d.ts +82 -0
- package/dist/bindings/kv.d.ts.map +1 -0
- package/dist/bindings/kv.js +290 -0
- package/dist/bindings/r2.d.ts +137 -0
- package/dist/bindings/r2.d.ts.map +1 -0
- package/dist/bindings/r2.js +379 -0
- package/dist/cirrus-npm-cjs.generated.d.ts +17 -0
- package/dist/cirrus-npm-cjs.generated.d.ts.map +1 -0
- package/dist/cirrus-npm-cjs.generated.js +41 -0
- package/dist/cirrus-plugin-react.generated.d.ts +34 -0
- package/dist/cirrus-plugin-react.generated.d.ts.map +1 -0
- package/dist/cirrus-plugin-react.generated.js +33 -0
- package/dist/constants.d.ts +34 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +116 -0
- package/dist/esbuild-wasm-bundle.generated.d.ts +41 -0
- package/dist/esbuild-wasm-bundle.generated.d.ts.map +1 -0
- package/dist/esbuild-wasm-bundle.generated.js +40 -0
- package/dist/facets/cirrus-real.d.ts +147 -0
- package/dist/facets/cirrus-real.d.ts.map +1 -0
- package/dist/facets/cirrus-real.js +981 -0
- package/dist/facets/inner-do-registry.d.ts +41 -0
- package/dist/facets/inner-do-registry.d.ts.map +1 -0
- package/dist/facets/inner-do-registry.js +51 -0
- package/dist/facets/manager.d.ts +314 -0
- package/dist/facets/manager.d.ts.map +1 -0
- package/dist/facets/manager.js +2681 -0
- package/dist/facets/process.d.ts +318 -0
- package/dist/facets/process.d.ts.map +1 -0
- package/dist/facets/process.js +567 -0
- package/dist/facets/real-vite-fs-shim.d.ts +151 -0
- package/dist/facets/real-vite-fs-shim.d.ts.map +1 -0
- package/dist/facets/real-vite-fs-shim.js +1279 -0
- package/dist/facets/real-vite-hmr.d.ts +142 -0
- package/dist/facets/real-vite-hmr.d.ts.map +1 -0
- package/dist/facets/real-vite-hmr.js +476 -0
- package/dist/facets/vite-dev-server.d.ts +293 -0
- package/dist/facets/vite-dev-server.d.ts.map +1 -0
- package/dist/facets/vite-dev-server.js +2580 -0
- package/dist/facets/wasm-swap-registry.d.ts +261 -0
- package/dist/facets/wasm-swap-registry.d.ts.map +1 -0
- package/dist/facets/wasm-swap-registry.js +551 -0
- package/dist/facets/ws-terminal.d.ts +107 -0
- package/dist/facets/ws-terminal.d.ts.map +1 -0
- package/dist/facets/ws-terminal.js +207 -0
- package/dist/git/commands.d.ts +13 -0
- package/dist/git/commands.d.ts.map +1 -0
- package/dist/git/commands.js +633 -0
- package/dist/git/network-facet.d.ts +61 -0
- package/dist/git/network-facet.d.ts.map +1 -0
- package/dist/git/network-facet.js +700 -0
- package/dist/git-bundle.generated.d.ts +16 -0
- package/dist/git-bundle.generated.d.ts.map +1 -0
- package/dist/git-bundle.generated.js +15 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/loaders/child-process/spawn-facet.d.ts +90 -0
- package/dist/loaders/child-process/spawn-facet.d.ts.map +1 -0
- package/dist/loaders/child-process/spawn-facet.js +103 -0
- package/dist/loaders/child-process/spawn-pool.d.ts +110 -0
- package/dist/loaders/child-process/spawn-pool.d.ts.map +1 -0
- package/dist/loaders/child-process/spawn-pool.js +161 -0
- package/dist/loaders/fanout-pool.d.ts +195 -0
- package/dist/loaders/fanout-pool.d.ts.map +1 -0
- package/dist/loaders/fanout-pool.js +326 -0
- package/dist/loaders/generated-workers.d.ts +26 -0
- package/dist/loaders/generated-workers.d.ts.map +1 -0
- package/dist/loaders/generated-workers.js +25 -0
- package/dist/loaders/index.d.ts +15 -0
- package/dist/loaders/index.d.ts.map +1 -0
- package/dist/loaders/index.js +13 -0
- package/dist/loaders/loader-pool.d.ts +273 -0
- package/dist/loaders/loader-pool.d.ts.map +1 -0
- package/dist/loaders/loader-pool.js +624 -0
- package/dist/loaders/npm-resolve-preamble.d.ts +34 -0
- package/dist/loaders/npm-resolve-preamble.d.ts.map +1 -0
- package/dist/loaders/npm-resolve-preamble.js +237 -0
- package/dist/loaders/pre-bundle-preamble.d.ts +41 -0
- package/dist/loaders/pre-bundle-preamble.d.ts.map +1 -0
- package/dist/loaders/pre-bundle-preamble.js +114 -0
- package/dist/loaders/vendor/codegen.d.ts +24 -0
- package/dist/loaders/vendor/codegen.d.ts.map +1 -0
- package/dist/loaders/vendor/codegen.js +44 -0
- package/dist/loaders/vendor/errors.d.ts +24 -0
- package/dist/loaders/vendor/errors.d.ts.map +1 -0
- package/dist/loaders/vendor/errors.js +46 -0
- package/dist/loaders/vendor/index.d.ts +16 -0
- package/dist/loaders/vendor/index.d.ts.map +1 -0
- package/dist/loaders/vendor/index.js +11 -0
- package/dist/loaders/vendor/pool.d.ts +88 -0
- package/dist/loaders/vendor/pool.d.ts.map +1 -0
- package/dist/loaders/vendor/pool.js +353 -0
- package/dist/loaders/vendor/primitives.d.ts +11 -0
- package/dist/loaders/vendor/primitives.d.ts.map +1 -0
- package/dist/loaders/vendor/primitives.js +33 -0
- package/dist/loaders/vendor/serialize.d.ts +3 -0
- package/dist/loaders/vendor/serialize.d.ts.map +1 -0
- package/dist/loaders/vendor/serialize.js +25 -0
- package/dist/loaders/vendor/types.d.ts +60 -0
- package/dist/loaders/vendor/types.d.ts.map +1 -0
- package/dist/loaders/vendor/types.js +4 -0
- package/dist/npm/cache.d.ts +136 -0
- package/dist/npm/cache.d.ts.map +1 -0
- package/dist/npm/cache.js +429 -0
- package/dist/npm/install-batch-facet.d.ts +129 -0
- package/dist/npm/install-batch-facet.d.ts.map +1 -0
- package/dist/npm/install-batch-facet.js +598 -0
- package/dist/npm/install-facet.d.ts +29 -0
- package/dist/npm/install-facet.d.ts.map +1 -0
- package/dist/npm/install-facet.js +9 -0
- package/dist/npm/installer.d.ts +239 -0
- package/dist/npm/installer.d.ts.map +1 -0
- package/dist/npm/installer.js +2022 -0
- package/dist/npm/npx-install.d.ts +74 -0
- package/dist/npm/npx-install.d.ts.map +1 -0
- package/dist/npm/npx-install.js +302 -0
- package/dist/npm/pre-bundle-facet.d.ts +168 -0
- package/dist/npm/pre-bundle-facet.d.ts.map +1 -0
- package/dist/npm/pre-bundle-facet.js +653 -0
- package/dist/npm/r2-cache.d.ts +286 -0
- package/dist/npm/r2-cache.d.ts.map +1 -0
- package/dist/npm/r2-cache.js +506 -0
- package/dist/npm/resolve-facet.d.ts +202 -0
- package/dist/npm/resolve-facet.d.ts.map +1 -0
- package/dist/npm/resolve-facet.js +833 -0
- package/dist/npm/resolve-one-facet.d.ts +204 -0
- package/dist/npm/resolve-one-facet.d.ts.map +1 -0
- package/dist/npm/resolve-one-facet.js +437 -0
- package/dist/npm/resolver.d.ts +109 -0
- package/dist/npm/resolver.d.ts.map +1 -0
- package/dist/npm/resolver.js +899 -0
- package/dist/npm/tarball-stream.d.ts +85 -0
- package/dist/npm/tarball-stream.d.ts.map +1 -0
- package/dist/npm/tarball-stream.js +205 -0
- package/dist/npm/tarball.d.ts +51 -0
- package/dist/npm/tarball.d.ts.map +1 -0
- package/dist/npm/tarball.js +185 -0
- package/dist/observability/diag-counters.d.ts +292 -0
- package/dist/observability/diag-counters.d.ts.map +1 -0
- package/dist/observability/diag-counters.js +302 -0
- package/dist/observability/heap-estimate.d.ts +166 -0
- package/dist/observability/heap-estimate.d.ts.map +1 -0
- package/dist/observability/heap-estimate.js +192 -0
- package/dist/observability/heavy-alloc-coord.d.ts +95 -0
- package/dist/observability/heavy-alloc-coord.d.ts.map +1 -0
- package/dist/observability/heavy-alloc-coord.js +149 -0
- package/dist/observability/oom-classify.d.ts +56 -0
- package/dist/observability/oom-classify.d.ts.map +1 -0
- package/dist/observability/oom-classify.js +118 -0
- package/dist/observability/oom-discriminator.d.ts +192 -0
- package/dist/observability/oom-discriminator.d.ts.map +1 -0
- package/dist/observability/oom-discriminator.js +233 -0
- package/dist/real-vite-bundle.generated.d.ts +46 -0
- package/dist/real-vite-bundle.generated.d.ts.map +1 -0
- package/dist/real-vite-bundle.generated.js +53 -0
- package/dist/replica/routing.d.ts +171 -0
- package/dist/replica/routing.d.ts.map +1 -0
- package/dist/replica/routing.js +288 -0
- package/dist/replica/suspension.d.ts +36 -0
- package/dist/replica/suspension.d.ts.map +1 -0
- package/dist/replica/suspension.js +49 -0
- package/dist/router/index.d.ts +156 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +220 -0
- package/dist/runtime/assets-loader.d.ts +71 -0
- package/dist/runtime/assets-loader.d.ts.map +1 -0
- package/dist/runtime/assets-loader.js +128 -0
- package/dist/runtime/barrel-detect.d.ts +46 -0
- package/dist/runtime/barrel-detect.d.ts.map +1 -0
- package/dist/runtime/barrel-detect.js +73 -0
- package/dist/runtime/barrel-synthesizer.d.ts +181 -0
- package/dist/runtime/barrel-synthesizer.d.ts.map +1 -0
- package/dist/runtime/barrel-synthesizer.js +541 -0
- package/dist/runtime/bun-repl.d.ts +46 -0
- package/dist/runtime/bun-repl.d.ts.map +1 -0
- package/dist/runtime/bun-repl.js +326 -0
- package/dist/runtime/bun-runner.d.ts +66 -0
- package/dist/runtime/bun-runner.d.ts.map +1 -0
- package/dist/runtime/bun-runner.js +219 -0
- package/dist/runtime/clang-runner.d.ts +38 -0
- package/dist/runtime/clang-runner.d.ts.map +1 -0
- package/dist/runtime/clang-runner.js +1033 -0
- package/dist/runtime/comment-strip.d.ts +37 -0
- package/dist/runtime/comment-strip.d.ts.map +1 -0
- package/dist/runtime/comment-strip.js +74 -0
- package/dist/runtime/esbuild-service.d.ts +201 -0
- package/dist/runtime/esbuild-service.d.ts.map +1 -0
- package/dist/runtime/esbuild-service.js +1444 -0
- package/dist/runtime/esbuild-wasm-bytes.d.ts +87 -0
- package/dist/runtime/esbuild-wasm-bytes.d.ts.map +1 -0
- package/dist/runtime/esbuild-wasm-bytes.js +131 -0
- package/dist/runtime/framework-detect.d.ts +71 -0
- package/dist/runtime/framework-detect.d.ts.map +1 -0
- package/dist/runtime/framework-detect.js +178 -0
- package/dist/runtime/long-running-handle.d.ts +133 -0
- package/dist/runtime/long-running-handle.d.ts.map +1 -0
- package/dist/runtime/long-running-handle.js +192 -0
- package/dist/runtime/node-repl.d.ts +36 -0
- package/dist/runtime/node-repl.d.ts.map +1 -0
- package/dist/runtime/node-repl.js +293 -0
- package/dist/runtime/node-runner.d.ts +111 -0
- package/dist/runtime/node-runner.d.ts.map +1 -0
- package/dist/runtime/node-runner.js +194 -0
- package/dist/runtime/node-shims.d.ts +24 -0
- package/dist/runtime/node-shims.d.ts.map +1 -0
- package/dist/runtime/node-shims.js +3019 -0
- package/dist/runtime/package-manager.d.ts +118 -0
- package/dist/runtime/package-manager.d.ts.map +1 -0
- package/dist/runtime/package-manager.js +420 -0
- package/dist/runtime/port-registry.d.ts +80 -0
- package/dist/runtime/port-registry.d.ts.map +1 -0
- package/dist/runtime/port-registry.js +166 -0
- package/dist/runtime/process-logs-api.d.ts +102 -0
- package/dist/runtime/process-logs-api.d.ts.map +1 -0
- package/dist/runtime/process-logs-api.js +253 -0
- package/dist/runtime/process-logs.d.ts +311 -0
- package/dist/runtime/process-logs.d.ts.map +1 -0
- package/dist/runtime/process-logs.js +656 -0
- package/dist/runtime/process-table.d.ts +65 -0
- package/dist/runtime/process-table.d.ts.map +1 -0
- package/dist/runtime/process-table.js +107 -0
- package/dist/runtime/project-detect.d.ts +21 -0
- package/dist/runtime/project-detect.d.ts.map +1 -0
- package/dist/runtime/project-detect.js +46 -0
- package/dist/runtime/python-repl.d.ts +66 -0
- package/dist/runtime/python-repl.d.ts.map +1 -0
- package/dist/runtime/python-repl.js +563 -0
- package/dist/runtime/python-runner.d.ts +50 -0
- package/dist/runtime/python-runner.d.ts.map +1 -0
- package/dist/runtime/python-runner.js +870 -0
- package/dist/runtime/repl-session.d.ts +160 -0
- package/dist/runtime/repl-session.d.ts.map +1 -0
- package/dist/runtime/repl-session.js +393 -0
- package/dist/runtime/require-resolver.d.ts +52 -0
- package/dist/runtime/require-resolver.d.ts.map +1 -0
- package/dist/runtime/require-resolver.js +690 -0
- package/dist/runtime/router-basename.d.ts +36 -0
- package/dist/runtime/router-basename.d.ts.map +1 -0
- package/dist/runtime/router-basename.js +310 -0
- package/dist/runtime/ruby-repl.d.ts +43 -0
- package/dist/runtime/ruby-repl.d.ts.map +1 -0
- package/dist/runtime/ruby-repl.js +229 -0
- package/dist/runtime/ruby-runner.d.ts +62 -0
- package/dist/runtime/ruby-runner.d.ts.map +1 -0
- package/dist/runtime/ruby-runner.js +737 -0
- package/dist/runtime/runtime-catalog.d.ts +99 -0
- package/dist/runtime/runtime-catalog.d.ts.map +1 -0
- package/dist/runtime/runtime-catalog.js +183 -0
- package/dist/runtime/runtime-registry.d.ts +136 -0
- package/dist/runtime/runtime-registry.d.ts.map +1 -0
- package/dist/runtime/runtime-registry.js +318 -0
- package/dist/runtime/streams.d.ts +13 -0
- package/dist/runtime/streams.d.ts.map +1 -0
- package/dist/runtime/streams.js +402 -0
- package/dist/runtime/wasi-instance.d.ts +190 -0
- package/dist/runtime/wasi-instance.d.ts.map +1 -0
- package/dist/runtime/wasi-instance.js +2044 -0
- package/dist/runtime/wasm-runner.d.ts +117 -0
- package/dist/runtime/wasm-runner.d.ts.map +1 -0
- package/dist/runtime/wasm-runner.js +705 -0
- package/dist/session/bindings.d.ts +168 -0
- package/dist/session/bindings.d.ts.map +1 -0
- package/dist/session/bindings.js +524 -0
- package/dist/session/ctx-exports.d.ts +16 -0
- package/dist/session/ctx-exports.d.ts.map +1 -0
- package/dist/session/ctx-exports.js +22 -0
- package/dist/session/diag.d.ts +62 -0
- package/dist/session/diag.d.ts.map +1 -0
- package/dist/session/diag.js +118 -0
- package/dist/session/fs-watch.d.ts +132 -0
- package/dist/session/fs-watch.d.ts.map +1 -0
- package/dist/session/fs-watch.js +255 -0
- package/dist/session/helpers.d.ts +150 -0
- package/dist/session/helpers.d.ts.map +1 -0
- package/dist/session/helpers.js +472 -0
- package/dist/session/hibernation.d.ts +145 -0
- package/dist/session/hibernation.d.ts.map +1 -0
- package/dist/session/hibernation.js +385 -0
- package/dist/session/init-phases.d.ts +87 -0
- package/dist/session/init-phases.d.ts.map +1 -0
- package/dist/session/init-phases.js +137 -0
- package/dist/session/init.d.ts +46 -0
- package/dist/session/init.d.ts.map +1 -0
- package/dist/session/init.js +3579 -0
- package/dist/session/keys.d.ts +56 -0
- package/dist/session/keys.d.ts.map +1 -0
- package/dist/session/keys.js +55 -0
- package/dist/session/nimbus-session.d.ts +434 -0
- package/dist/session/nimbus-session.d.ts.map +1 -0
- package/dist/session/nimbus-session.js +1084 -0
- package/dist/session/programmatic.d.ts +105 -0
- package/dist/session/programmatic.d.ts.map +1 -0
- package/dist/session/programmatic.js +326 -0
- package/dist/session/replica-routes.d.ts +68 -0
- package/dist/session/replica-routes.d.ts.map +1 -0
- package/dist/session/replica-routes.js +77 -0
- package/dist/session/routes.d.ts +29 -0
- package/dist/session/routes.d.ts.map +1 -0
- package/dist/session/routes.js +1331 -0
- package/dist/session/rpc.d.ts +323 -0
- package/dist/session/rpc.d.ts.map +1 -0
- package/dist/session/rpc.js +808 -0
- package/dist/session/state-store.d.ts +210 -0
- package/dist/session/state-store.d.ts.map +1 -0
- package/dist/session/state-store.js +459 -0
- package/dist/session/supervisor-rpc.d.ts +269 -0
- package/dist/session/supervisor-rpc.d.ts.map +1 -0
- package/dist/session/supervisor-rpc.js +437 -0
- package/dist/session/ws-hibernation-config.d.ts +64 -0
- package/dist/session/ws-hibernation-config.d.ts.map +1 -0
- package/dist/session/ws-hibernation-config.js +89 -0
- package/dist/session/ws.d.ts +95 -0
- package/dist/session/ws.d.ts.map +1 -0
- package/dist/session/ws.js +395 -0
- package/dist/shell/features.d.ts +410 -0
- package/dist/shell/features.d.ts.map +1 -0
- package/dist/shell/features.js +1885 -0
- package/dist/shell/unix-commands.d.ts +15 -0
- package/dist/shell/unix-commands.d.ts.map +1 -0
- package/dist/shell/unix-commands.js +3703 -0
- package/dist/stubs/lifo-ui.d.ts +10 -0
- package/dist/stubs/lifo-ui.d.ts.map +1 -0
- package/dist/stubs/lifo-ui.js +1 -0
- package/dist/tailwind-play.generated.d.ts +19 -0
- package/dist/tailwind-play.generated.d.ts.map +1 -0
- package/dist/tailwind-play.generated.js +18 -0
- package/dist/vfs/dev-provider.d.ts +64 -0
- package/dist/vfs/dev-provider.d.ts.map +1 -0
- package/dist/vfs/dev-provider.js +191 -0
- package/dist/vfs/events.d.ts +51 -0
- package/dist/vfs/events.d.ts.map +1 -0
- package/dist/vfs/events.js +127 -0
- package/dist/vfs/path.d.ts +30 -0
- package/dist/vfs/path.d.ts.map +1 -0
- package/dist/vfs/path.js +41 -0
- package/dist/vfs/seed-project.d.ts +62 -0
- package/dist/vfs/seed-project.d.ts.map +1 -0
- package/dist/vfs/seed-project.js +1045 -0
- package/dist/vfs/sqlite-vfs.d.ts +435 -0
- package/dist/vfs/sqlite-vfs.d.ts.map +1 -0
- package/dist/vfs/sqlite-vfs.js +1670 -0
- package/dist/vfs/symlink-registry.d.ts +64 -0
- package/dist/vfs/symlink-registry.d.ts.map +1 -0
- package/dist/vfs/symlink-registry.js +137 -0
- package/dist/wrangler/nimbus-wrangler.d.ts +157 -0
- package/dist/wrangler/nimbus-wrangler.d.ts.map +1 -0
- package/dist/wrangler/nimbus-wrangler.js +931 -0
- package/package.json +77 -0
- package/public/_assets/cirrus-plugin-react.bundle.js +70740 -0
- package/public/_assets/esbuild-0.24.2.wasm +0 -0
- package/public/_assets/real-vite-bundle.js +101478 -0
- package/public/_assets/rollup.wasm +0 -0
- package/public/favicon.svg +8 -0
- package/public/index.html +565 -0
- package/public/s/index.html +2379 -0
- package/scripts/bundle-esbuild-wasm.mjs +244 -0
- package/scripts/bundle-facet-workers.mjs +137 -0
- package/scripts/bundle-git.mjs +118 -0
- package/scripts/bundle-npm-cjs.mjs +363 -0
- package/scripts/bundle-plugin-react.mjs +480 -0
- package/scripts/bundle-real-vite.mjs +959 -0
- package/scripts/bundle-runtime.mjs +600 -0
- package/scripts/bundle-tailwind-play.mjs +130 -0
- package/scripts/patch-lifo-ui.mjs +131 -0
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* bundle-esbuild-wasm.mjs — package esbuild-wasm for facet consumption.
|
|
4
|
+
*
|
|
5
|
+
* Why this exists
|
|
6
|
+
* ───────────────
|
|
7
|
+
* Pre-bundling npm packages (the `Pre-bundling N modules…` step in
|
|
8
|
+
* src/npm/installer.ts) runs inside NimbusLoaderPool isolates so each
|
|
9
|
+
* `esbuild.build()` allocation hits a fresh 128 MiB envelope rather
|
|
10
|
+
* than the supervisor's. The facet needs two pieces of esbuild-wasm
|
|
11
|
+
* at module-load time:
|
|
12
|
+
*
|
|
13
|
+
* 1. The JS adapter (`esbuild-wasm/esm/browser.js`) — small, stays
|
|
14
|
+
* in the worker bundle as a string constant.
|
|
15
|
+
*
|
|
16
|
+
* 2. The wasm binary (`esbuild.wasm`) — 12 MiB. Lives in the
|
|
17
|
+
* static-assets layer (Workers ASSETS binding) at
|
|
18
|
+
* `public/_assets/esbuild-<version>.wasm` and is fetched on
|
|
19
|
+
* demand by the supervisor at pool-construction time. NEVER
|
|
20
|
+
* bundled into the worker code object — keeping the bytes out
|
|
21
|
+
* of the supervisor's static baseline drops ~21 MiB of resident
|
|
22
|
+
* heap (verified via src/observability/heap-estimate.ts).
|
|
23
|
+
*
|
|
24
|
+
* Pre-A'.5 design (this script's prior form) embedded the wasm bytes
|
|
25
|
+
* as a base64 string in src/esbuild-wasm-bundle.generated.ts. That
|
|
26
|
+
* had two problems:
|
|
27
|
+
* • The 16 MiB base64 string lived in supervisor module scope for
|
|
28
|
+
* the lifetime of the isolate (~21 MiB UTF-16 overhead).
|
|
29
|
+
* • Decoding to a Uint8Array allocated another 12 MiB which the
|
|
30
|
+
* prior esbuild-wasm-bytes.ts cached for the same lifetime.
|
|
31
|
+
* Combined: ~37 MiB resident in supervisor for esbuild that almost
|
|
32
|
+
* never used it directly. Phase 2 A'.5 moved that out.
|
|
33
|
+
*
|
|
34
|
+
* Workarounds tried & rejected (kept here as institutional memory):
|
|
35
|
+
* 1. The default CJS entry (`lib/main.js`) calls
|
|
36
|
+
* `createRequire(import.meta.url)('fs')` at module init.
|
|
37
|
+
* `nodejs_compat` only satisfies static `import 'node:fs'`,
|
|
38
|
+
* so dynamic-require throws on dynamic-worker isolates.
|
|
39
|
+
* 2. The `import esbuildWasmUrl from 'esbuild-wasm/esbuild.wasm'`
|
|
40
|
+
* asset binding is a wrangler bundling feature — facets built
|
|
41
|
+
* from inline `modules:` strings have no asset resolver, so
|
|
42
|
+
* that import fails in the facet.
|
|
43
|
+
* 3. Fetching the wasm from R2 at facet boot — adds an RPC hop
|
|
44
|
+
* per dispatch, costs more than the in-supervisor fetch we do
|
|
45
|
+
* now (which happens once per pool construction, not per
|
|
46
|
+
* dispatch).
|
|
47
|
+
*
|
|
48
|
+
* Output:
|
|
49
|
+
* src/esbuild-wasm-bundle.generated.ts
|
|
50
|
+
* export const ESBUILD_WASM_VERSION: string;
|
|
51
|
+
* export const ESBUILD_WASM_JS_FN_BODY: string; // ESM browser source
|
|
52
|
+
*
|
|
53
|
+
* public/_assets/esbuild-<version>.wasm
|
|
54
|
+
* The raw wasm, picked up by the wrangler ASSETS binding.
|
|
55
|
+
*
|
|
56
|
+
* Run via:
|
|
57
|
+
* node scripts/bundle-esbuild-wasm.mjs
|
|
58
|
+
* (also wired into package.json predev/predeploy/postinstall)
|
|
59
|
+
*
|
|
60
|
+
* If a future esbuild-wasm release breaks `esm/browser.js` (e.g.
|
|
61
|
+
* reintroduces a dynamic require), this script bails loud rather
|
|
62
|
+
* than shipping a broken bundle to prod.
|
|
63
|
+
*/
|
|
64
|
+
|
|
65
|
+
import { promises as fs } from 'node:fs';
|
|
66
|
+
import path from 'node:path';
|
|
67
|
+
import { fileURLToPath } from 'node:url';
|
|
68
|
+
|
|
69
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
70
|
+
const ROOT = path.resolve(__dirname, '..');
|
|
71
|
+
// Walk up looking for node_modules/esbuild-wasm. Handles both
|
|
72
|
+
// packages/worker/node_modules/esbuild-wasm (legacy single-pkg layout)
|
|
73
|
+
// and ../../node_modules/esbuild-wasm (monorepo hoist).
|
|
74
|
+
function resolvePkgDir(start, pkgName) {
|
|
75
|
+
let dir = start;
|
|
76
|
+
while (true) {
|
|
77
|
+
const candidate = path.join(dir, 'node_modules', pkgName);
|
|
78
|
+
try {
|
|
79
|
+
// Throws if missing; cheap stat.
|
|
80
|
+
// eslint-disable-next-line n/no-sync
|
|
81
|
+
require('node:fs').statSync(candidate);
|
|
82
|
+
return candidate;
|
|
83
|
+
} catch { /* fall through */ }
|
|
84
|
+
const parent = path.dirname(dir);
|
|
85
|
+
if (parent === dir) break;
|
|
86
|
+
dir = parent;
|
|
87
|
+
}
|
|
88
|
+
throw new Error(`Cannot locate node_modules/${pkgName} starting at ${start}`);
|
|
89
|
+
}
|
|
90
|
+
const { createRequire } = await import('node:module');
|
|
91
|
+
const require = createRequire(import.meta.url);
|
|
92
|
+
const PKG_DIR = resolvePkgDir(ROOT, 'esbuild-wasm');
|
|
93
|
+
const JS_SRC = path.join(PKG_DIR, 'esm', 'browser.js');
|
|
94
|
+
const WASM_SRC = path.join(PKG_DIR, 'esbuild.wasm');
|
|
95
|
+
const PKG_JSON = path.join(PKG_DIR, 'package.json');
|
|
96
|
+
const OUT_TS = path.join(ROOT, 'src', 'esbuild-wasm-bundle.generated.ts');
|
|
97
|
+
const OUT_ASSETS_DIR = path.join(ROOT, 'public', '_assets');
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Patterns that, if present in the JS source, mean the browser build
|
|
101
|
+
* has been changed and is no longer safe to run inside a dynamic
|
|
102
|
+
* worker. The script bails rather than silently shipping a broken
|
|
103
|
+
* bundle to prod.
|
|
104
|
+
*/
|
|
105
|
+
const FORBIDDEN_PATTERNS = [
|
|
106
|
+
/createRequire\s*\(/,
|
|
107
|
+
/require\(["'](fs|path|os|child_process|module|crypto|stream)["']\)/,
|
|
108
|
+
/process\.binding\s*\(/,
|
|
109
|
+
];
|
|
110
|
+
|
|
111
|
+
async function main() {
|
|
112
|
+
const pkgJson = JSON.parse(await fs.readFile(PKG_JSON, 'utf8'));
|
|
113
|
+
const version = pkgJson.version;
|
|
114
|
+
console.log(`[bundle-esbuild-wasm] version: ${version}`);
|
|
115
|
+
|
|
116
|
+
// ── 1. Read & rewrite the ESM browser entry ─────────────────────────
|
|
117
|
+
// We rewrite the trailing `export { ... }` into `return { ... };` so
|
|
118
|
+
// the entire file becomes the body of a function. The facet
|
|
119
|
+
// evaluates it via `new Function(body)()`, which workerd permits
|
|
120
|
+
// inside dynamic workers at startup-time (precedent:
|
|
121
|
+
// src/facet-manager.ts).
|
|
122
|
+
const jsRaw = await fs.readFile(JS_SRC, 'utf8');
|
|
123
|
+
console.log(`[bundle-esbuild-wasm] esm/browser.js: ${(jsRaw.length / 1024).toFixed(1)} KiB`);
|
|
124
|
+
|
|
125
|
+
for (const re of FORBIDDEN_PATTERNS) {
|
|
126
|
+
if (re.test(jsRaw)) {
|
|
127
|
+
throw new Error(
|
|
128
|
+
`[bundle-esbuild-wasm] esm/browser.js contains forbidden pattern ${re}\n` +
|
|
129
|
+
` The browser build is no longer safe for facet consumption.\n` +
|
|
130
|
+
` Update this script to patch the offending call site or pin\n` +
|
|
131
|
+
` esbuild-wasm to the prior version.`,
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
const exportRe = /\nexport\s*\{([\s\S]+?)\};?\s*$/;
|
|
137
|
+
const m = jsRaw.match(exportRe);
|
|
138
|
+
if (!m) {
|
|
139
|
+
throw new Error(
|
|
140
|
+
`[bundle-esbuild-wasm] could not locate trailing 'export {…}' block\n` +
|
|
141
|
+
` in esm/browser.js — esbuild-wasm may have changed shape.`,
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
const exportBody = m[1];
|
|
145
|
+
const objectMembers = exportBody
|
|
146
|
+
.split(',')
|
|
147
|
+
.map((s) => s.trim())
|
|
148
|
+
.filter(Boolean)
|
|
149
|
+
.map((entry) => {
|
|
150
|
+
const asMatch = entry.match(/^(\S+)\s+as\s+(\S+)$/);
|
|
151
|
+
if (asMatch) return `${asMatch[2]}: ${asMatch[1]}`;
|
|
152
|
+
return entry;
|
|
153
|
+
})
|
|
154
|
+
.join(', ');
|
|
155
|
+
const jsFn = jsRaw.replace(exportRe, '\n') + `\nreturn { ${objectMembers} };\n`;
|
|
156
|
+
console.log(
|
|
157
|
+
`[bundle-esbuild-wasm] rewrote ${exportBody.split(',').length} exports → object-return shape`,
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
// ── 2. Stage the wasm into public/_assets/ ──────────────────────────
|
|
161
|
+
// The ASSETS binding picks up everything under `assets.directory`
|
|
162
|
+
// (./public per wrangler.jsonc). We version-name the file so a
|
|
163
|
+
// future esbuild-wasm bump produces a different asset filename and
|
|
164
|
+
// forces a fresh fetch (no stale-cache risk; cf. ESBUILD_WASM_ASSET_PATH
|
|
165
|
+
// in src/esbuild-wasm-bytes.ts).
|
|
166
|
+
await fs.mkdir(OUT_ASSETS_DIR, { recursive: true });
|
|
167
|
+
const assetName = `esbuild-${version}.wasm`;
|
|
168
|
+
const assetOut = path.join(OUT_ASSETS_DIR, assetName);
|
|
169
|
+
const wasmBytes = await fs.readFile(WASM_SRC);
|
|
170
|
+
await fs.writeFile(assetOut, wasmBytes);
|
|
171
|
+
console.log(
|
|
172
|
+
`[bundle-esbuild-wasm] copied esbuild.wasm → ${path.relative(ROOT, assetOut)} (${(wasmBytes.length / (1024 * 1024)).toFixed(1)} MiB)`,
|
|
173
|
+
);
|
|
174
|
+
|
|
175
|
+
// ── 3. Clean up any stale-versioned wasm assets in public/_assets/ ──
|
|
176
|
+
// Keeps the deploy lean: a developer who bumped the esbuild-wasm
|
|
177
|
+
// version locally won't accidentally ship two copies.
|
|
178
|
+
for (const entry of await fs.readdir(OUT_ASSETS_DIR)) {
|
|
179
|
+
if (entry.startsWith('esbuild-') && entry.endsWith('.wasm') && entry !== assetName) {
|
|
180
|
+
const stale = path.join(OUT_ASSETS_DIR, entry);
|
|
181
|
+
await fs.unlink(stale);
|
|
182
|
+
console.log(`[bundle-esbuild-wasm] removed stale asset: ${entry}`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// ── 4. Emit the JS-only generated TS module ──────────────────────────
|
|
187
|
+
// No ESBUILD_WASM_BASE64 export. The base64 string was 16 MiB and
|
|
188
|
+
// sat in supervisor module scope for the isolate's lifetime; A'.5
|
|
189
|
+
// moved the bytes to env.ASSETS to drop that residency.
|
|
190
|
+
const header = `/**
|
|
191
|
+
* esbuild-wasm-bundle.generated.ts — AUTO-GENERATED by scripts/bundle-esbuild-wasm.mjs
|
|
192
|
+
* DO NOT EDIT.
|
|
193
|
+
*
|
|
194
|
+
* Bundled esbuild-wasm ${version} adapter for use inside NimbusLoaderPool
|
|
195
|
+
* isolates. Only the JS adapter is bundled here (~117 KiB); the wasm
|
|
196
|
+
* binary itself lives in the static-assets layer at
|
|
197
|
+
* public/_assets/esbuild-${version}.wasm and is fetched on demand by
|
|
198
|
+
* src/esbuild-wasm-bytes.ts.
|
|
199
|
+
*
|
|
200
|
+
* Phase 2 A'.5 moved the base64 wasm string OUT of the supervisor
|
|
201
|
+
* bundle (was 16 MiB UTF-8 → 21 MiB UTF-16 in JS string overhead).
|
|
202
|
+
* If you're reading this and wondering where the bytes are: env.ASSETS.
|
|
203
|
+
*/
|
|
204
|
+
|
|
205
|
+
export const ESBUILD_WASM_VERSION: string = ${JSON.stringify(version)};
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Function body that, when wrapped in \`new Function(...)()\`, returns
|
|
209
|
+
* the esbuild-wasm namespace (build, transform, initialize, ...).
|
|
210
|
+
*
|
|
211
|
+
* Source: node_modules/esbuild-wasm/esm/browser.js with the trailing
|
|
212
|
+
* \`export { ... }\` rewritten to \`return { ... };\`. Why the browser
|
|
213
|
+
* build:
|
|
214
|
+
* - Pure ESM with no \`createRequire\`, no \`require("fs")\`, and
|
|
215
|
+
* no \`process.binding\` — safe to evaluate inside a workerd
|
|
216
|
+
* dynamic-worker isolate.
|
|
217
|
+
* - The supported public surface for "esbuild inside a worker" is
|
|
218
|
+
* exactly this build.
|
|
219
|
+
*
|
|
220
|
+
* Why \`new Function(body)()\` (rather than \`import('data:...')\`):
|
|
221
|
+
* - data: URL imports across workerd versions are not contractual
|
|
222
|
+
* and we don't want a deploy that worked yesterday to silently
|
|
223
|
+
* break tomorrow when the runtime is upgraded.
|
|
224
|
+
* - new Function is documented as supported inside dynamic workers
|
|
225
|
+
* (src/facet-manager.ts has been doing this since 2025).
|
|
226
|
+
*
|
|
227
|
+
* The bundle script verifies the file does NOT contain the forbidden
|
|
228
|
+
* patterns (createRequire / dynamic node-builtin require / process.binding)
|
|
229
|
+
* and bails loud if a future release reintroduces them.
|
|
230
|
+
*/
|
|
231
|
+
export const ESBUILD_WASM_JS_FN_BODY: string = ${JSON.stringify(jsFn)};
|
|
232
|
+
`;
|
|
233
|
+
|
|
234
|
+
await fs.writeFile(OUT_TS, header, 'utf8');
|
|
235
|
+
const stat = await fs.stat(OUT_TS);
|
|
236
|
+
console.log(
|
|
237
|
+
`[bundle-esbuild-wasm] wrote ${path.relative(ROOT, OUT_TS)} (${(stat.size / 1024).toFixed(1)} KiB — JS adapter only)`,
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
main().catch((e) => {
|
|
242
|
+
console.error('[bundle-esbuild-wasm] failed:', e);
|
|
243
|
+
process.exit(1);
|
|
244
|
+
});
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* bundle-facet-workers.mjs — Produce the preamble string that
|
|
4
|
+
* NimbusFacetPool injects into dynamic workers.
|
|
5
|
+
*
|
|
6
|
+
* WHY this exists:
|
|
7
|
+
* NimbusFacetPool's user functions get wrapped by cloudflare-parallel's
|
|
8
|
+
* codegen into a module source. Inside that module the user function
|
|
9
|
+
* can reference closure-variables only through the `context` option,
|
|
10
|
+
* which is JSON-only — you cannot pass a helper function through it.
|
|
11
|
+
*
|
|
12
|
+
* For the npm install facet we need the streaming tar parser
|
|
13
|
+
* (src/npm/tarball-stream.ts) available as a top-level named export
|
|
14
|
+
* the user function can call. We esbuild-bundle that source file into
|
|
15
|
+
* a self-contained ES module string, and NimbusFacetPool's `preamble`
|
|
16
|
+
* option splices it into the generated module between the
|
|
17
|
+
* WorkerEntrypoint import and the user function.
|
|
18
|
+
*
|
|
19
|
+
* Output:
|
|
20
|
+
* src/loaders/generated-workers.ts — exports
|
|
21
|
+
* TAR_STREAM_PREAMBLE: string
|
|
22
|
+
* TAR_STREAM_PREAMBLE_SIZE: number
|
|
23
|
+
* W7_FRAME_PREAMBLE: string (W7 — streaming bulk-write encoder)
|
|
24
|
+
* W7_FRAME_PREAMBLE_SIZE: number
|
|
25
|
+
*
|
|
26
|
+
* Runs as a postinstall + predev + predeploy step via package.json.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
import { build } from 'esbuild';
|
|
30
|
+
import { writeFileSync, mkdirSync } from 'node:fs';
|
|
31
|
+
import { dirname, join } from 'node:path';
|
|
32
|
+
import { fileURLToPath } from 'node:url';
|
|
33
|
+
|
|
34
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
35
|
+
const root = join(__dirname, '..');
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Bundle one TS source into a self-contained ESM string suitable for
|
|
39
|
+
* inlining as a facet preamble. Strips the leading `export` on
|
|
40
|
+
* declarations and the aggregate `export { ... };` block so the
|
|
41
|
+
* blob is inlinable into another module without re-export errors.
|
|
42
|
+
*/
|
|
43
|
+
async function bundleAsPreamble(entryPath, label) {
|
|
44
|
+
const result = await build({
|
|
45
|
+
entryPoints: [entryPath],
|
|
46
|
+
bundle: true,
|
|
47
|
+
format: 'esm',
|
|
48
|
+
target: 'esnext',
|
|
49
|
+
platform: 'neutral',
|
|
50
|
+
write: false,
|
|
51
|
+
logLevel: 'warning',
|
|
52
|
+
legalComments: 'none',
|
|
53
|
+
// Strip TypeScript-only imports (e.g. `import type {…}`) — esbuild
|
|
54
|
+
// already drops these, but leave the option default.
|
|
55
|
+
});
|
|
56
|
+
if (!result.outputFiles || result.outputFiles.length === 0) {
|
|
57
|
+
throw new Error(`[bundle-facet-workers/${label}] esbuild produced no output`);
|
|
58
|
+
}
|
|
59
|
+
let stripped = result.outputFiles[0].text;
|
|
60
|
+
stripped = stripped.replace(/^export\s+(async\s+function|function|const|class)\b/gm, '$1');
|
|
61
|
+
stripped = stripped.replace(/\n?export\s*\{[^}]*\}\s*;\s*$/g, '');
|
|
62
|
+
return stripped;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
async function main() {
|
|
66
|
+
// 1. Tar-parser preamble (existing W2.5/W4 hot-path helpers).
|
|
67
|
+
const tarStripped = await bundleAsPreamble(
|
|
68
|
+
join(root, 'src', 'npm', 'tarball-stream.ts'),
|
|
69
|
+
'tar-stream',
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
// 2. W7 frame encoder preamble. The npm-install-batch-facet calls
|
|
73
|
+
// encodeWriteBatchStream() to wrap its writeBatch payload as a
|
|
74
|
+
// type:'bytes' ReadableStream, then passes the stream to
|
|
75
|
+
// env.SUPERVISOR.writeBatchStream(). Without this preamble the
|
|
76
|
+
// facet has no access to the encoder symbol (cloudflare-parallel
|
|
77
|
+
// serialises via fn.toString() — no runtime imports).
|
|
78
|
+
//
|
|
79
|
+
// The W7-frame module imports a TypeScript type from sqlite-vfs,
|
|
80
|
+
// which esbuild's type-stripping handles transparently. The
|
|
81
|
+
// runtime output has no imports.
|
|
82
|
+
const w7Stripped = await bundleAsPreamble(
|
|
83
|
+
join(root, 'src', '_shared', 'w7-frame.ts'),
|
|
84
|
+
'w7-frame',
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
const tarEncoded = JSON.stringify(tarStripped);
|
|
88
|
+
const w7Encoded = JSON.stringify(w7Stripped);
|
|
89
|
+
const outPath = join(root, 'src', 'loaders', 'generated-workers.ts');
|
|
90
|
+
|
|
91
|
+
const tsWrapper = [
|
|
92
|
+
'/**',
|
|
93
|
+
' * generated-workers.ts — AUTO-GENERATED. DO NOT EDIT.',
|
|
94
|
+
' *',
|
|
95
|
+
' * Produced by scripts/bundle-facet-workers.mjs from:',
|
|
96
|
+
' * - src/npm/tarball-stream.ts (streaming tar primitives)',
|
|
97
|
+
' * - src/_shared/w7-frame.ts (W7 streaming bulk-write encoder)',
|
|
98
|
+
' *',
|
|
99
|
+
' * Consumed by src/loaders/loader-pool.ts callers via the `preamble`',
|
|
100
|
+
' * option. The preamble is injected at the top of every generated',
|
|
101
|
+
' * worker module so user functions can reference the exported',
|
|
102
|
+
' * helpers by name.',
|
|
103
|
+
' *',
|
|
104
|
+
' * Tar-stream symbols: parseTarHeader, streamTarEntries,',
|
|
105
|
+
' * readableStreamToAsyncIterable, MAX_FILE_BYTES.',
|
|
106
|
+
' * W7-frame symbols: encodeWriteBatchStream, decodeWriteBatchStream,',
|
|
107
|
+
' * W7_MAGIC, W7_TRAILER.',
|
|
108
|
+
' *',
|
|
109
|
+
` * Generated at: ${new Date().toISOString()}`,
|
|
110
|
+
` * Tar size: ${(tarStripped.length / 1024).toFixed(2)} KiB`,
|
|
111
|
+
` * W7 size: ${(w7Stripped.length / 1024).toFixed(2)} KiB`,
|
|
112
|
+
' */',
|
|
113
|
+
'',
|
|
114
|
+
`export const TAR_STREAM_PREAMBLE: string = ${tarEncoded};`,
|
|
115
|
+
'',
|
|
116
|
+
`export const TAR_STREAM_PREAMBLE_SIZE: number = ${tarStripped.length};`,
|
|
117
|
+
'',
|
|
118
|
+
`export const W7_FRAME_PREAMBLE: string = ${w7Encoded};`,
|
|
119
|
+
'',
|
|
120
|
+
`export const W7_FRAME_PREAMBLE_SIZE: number = ${w7Stripped.length};`,
|
|
121
|
+
'',
|
|
122
|
+
].join('\n');
|
|
123
|
+
|
|
124
|
+
mkdirSync(dirname(outPath), { recursive: true });
|
|
125
|
+
writeFileSync(outPath, tsWrapper);
|
|
126
|
+
|
|
127
|
+
console.log(
|
|
128
|
+
`[bundle-facet-workers] wrote ${outPath} ` +
|
|
129
|
+
`(tar=${(tarStripped.length / 1024).toFixed(2)} KiB, ` +
|
|
130
|
+
`w7=${(w7Stripped.length / 1024).toFixed(2)} KiB)`,
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
main().catch((e) => {
|
|
135
|
+
console.error('[bundle-facet-workers] FAILED:', e?.message || e);
|
|
136
|
+
process.exitCode = 1;
|
|
137
|
+
});
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* bundle-git.mjs — Pre-bundle isomorphic-git for the git-network-facet.
|
|
4
|
+
*
|
|
5
|
+
* WHY this exists:
|
|
6
|
+
* The git-network-facet runs inside a dynamic worker loaded via
|
|
7
|
+
* env.LOADER.load(). Dynamic workers have NO access to node_modules —
|
|
8
|
+
* they only see modules explicitly passed in the `modules` object.
|
|
9
|
+
*
|
|
10
|
+
* The main Worker's bundler (wrangler) inlines isomorphic-git into the
|
|
11
|
+
* supervisor, but that bundle is unreachable from the facet isolate.
|
|
12
|
+
*
|
|
13
|
+
* This script bundles isomorphic-git + isomorphic-git/http/web into ONE
|
|
14
|
+
* ESM string that we can pass as a module to LOADER.load(). The facet
|
|
15
|
+
* imports it via `import('./isomorphic-git.js')`.
|
|
16
|
+
*
|
|
17
|
+
* Output:
|
|
18
|
+
* src/git-bundle.generated.ts — exports GIT_BUNDLE_CODE: string
|
|
19
|
+
*
|
|
20
|
+
* Runs as a postinstall step AND on every `bun run dev` / `bun run deploy`
|
|
21
|
+
* via the "bundle:git" npm script.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
import { build } from 'esbuild';
|
|
25
|
+
import { writeFileSync, mkdirSync, existsSync } from 'node:fs';
|
|
26
|
+
import { dirname, join } from 'node:path';
|
|
27
|
+
import { fileURLToPath } from 'node:url';
|
|
28
|
+
|
|
29
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
30
|
+
const root = join(__dirname, '..');
|
|
31
|
+
|
|
32
|
+
// Entry that aggregates both namespaces into a single ESM bundle.
|
|
33
|
+
const ENTRY_CONTENTS = [
|
|
34
|
+
"export * as git from 'isomorphic-git';",
|
|
35
|
+
"export * as gitHttp from 'isomorphic-git/http/web';",
|
|
36
|
+
].join('\n');
|
|
37
|
+
|
|
38
|
+
const ENTRY_FILE = join(root, '.git-bundle-entry.js');
|
|
39
|
+
|
|
40
|
+
async function main() {
|
|
41
|
+
try {
|
|
42
|
+
writeFileSync(ENTRY_FILE, ENTRY_CONTENTS);
|
|
43
|
+
|
|
44
|
+
const result = await build({
|
|
45
|
+
entryPoints: [ENTRY_FILE],
|
|
46
|
+
bundle: true,
|
|
47
|
+
format: 'esm',
|
|
48
|
+
target: 'esnext',
|
|
49
|
+
platform: 'browser',
|
|
50
|
+
conditions: ['worker', 'browser', 'import'],
|
|
51
|
+
// Map bare node built-ins → node: prefixed (works with nodejs_compat).
|
|
52
|
+
alias: {
|
|
53
|
+
crypto: 'node:crypto',
|
|
54
|
+
},
|
|
55
|
+
// Anything else that might leak: leave as external. nodejs_compat
|
|
56
|
+
// provides these at runtime in the dynamic worker.
|
|
57
|
+
external: [
|
|
58
|
+
'node:*',
|
|
59
|
+
'cloudflare:workers',
|
|
60
|
+
],
|
|
61
|
+
write: false,
|
|
62
|
+
logLevel: 'warning',
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
if (!result.outputFiles || result.outputFiles.length === 0) {
|
|
66
|
+
throw new Error('esbuild produced no output');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const code = result.outputFiles[0].text;
|
|
70
|
+
|
|
71
|
+
// Emit as a TS module that exports the bundle as a string constant.
|
|
72
|
+
// Using String.raw-equivalent: JSON-encode to preserve backticks/$/etc.
|
|
73
|
+
const outPath = join(root, 'src', 'git-bundle.generated.ts');
|
|
74
|
+
|
|
75
|
+
// We JSON.stringify the code to produce a valid JS string literal.
|
|
76
|
+
// Then wrap in a TS const export. The supervisor imports this at build.
|
|
77
|
+
const encoded = JSON.stringify(code);
|
|
78
|
+
|
|
79
|
+
const tsWrapper = [
|
|
80
|
+
'/**',
|
|
81
|
+
' * git-bundle.generated.ts — AUTO-GENERATED. DO NOT EDIT.',
|
|
82
|
+
' *',
|
|
83
|
+
' * Produced by scripts/bundle-git.mjs from:',
|
|
84
|
+
" * - isomorphic-git (github:AshishKumar4/cf-git)",
|
|
85
|
+
" * - isomorphic-git/http/web",
|
|
86
|
+
' *',
|
|
87
|
+
' * Consumed by git-network-facet.ts: passed to LOADER.load()\'s',
|
|
88
|
+
' * `modules` record so the facet can `import` isomorphic-git.',
|
|
89
|
+
' *',
|
|
90
|
+
` * Generated at: ${new Date().toISOString()}`,
|
|
91
|
+
` * Size: ${(code.length / 1024).toFixed(1)} KiB`,
|
|
92
|
+
' */',
|
|
93
|
+
'',
|
|
94
|
+
`export const GIT_BUNDLE_CODE: string = ${encoded};`,
|
|
95
|
+
'',
|
|
96
|
+
`export const GIT_BUNDLE_SIZE = ${code.length};`,
|
|
97
|
+
'',
|
|
98
|
+
].join('\n');
|
|
99
|
+
|
|
100
|
+
mkdirSync(dirname(outPath), { recursive: true });
|
|
101
|
+
writeFileSync(outPath, tsWrapper);
|
|
102
|
+
|
|
103
|
+
console.log(`[bundle-git] wrote ${outPath} (${(code.length / 1024).toFixed(1)} KiB bundled)`);
|
|
104
|
+
} finally {
|
|
105
|
+
// Clean up the temp entry file
|
|
106
|
+
try {
|
|
107
|
+
if (existsSync(ENTRY_FILE)) {
|
|
108
|
+
const { unlinkSync } = await import('node:fs');
|
|
109
|
+
unlinkSync(ENTRY_FILE);
|
|
110
|
+
}
|
|
111
|
+
} catch {}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
main().catch((e) => {
|
|
116
|
+
console.error('[bundle-git] FAILED:', e?.message || e);
|
|
117
|
+
process.exitCode = 1;
|
|
118
|
+
});
|