@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,363 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* bundle-npm-cjs.mjs — Pre-bundle user-space CJS packages as ESM.
|
|
4
|
+
*
|
|
5
|
+
* PHASE1-BLOCKER.md Path C was to pre-bundle @vitejs/plugin-react.
|
|
6
|
+
* Runtime probe revealed a deeper issue: react, react-dom, and
|
|
7
|
+
* scheduler ALL ship CJS entries (`module.exports = require(...)`).
|
|
8
|
+
* Browsers can't load CJS via `<script type="module">`, and
|
|
9
|
+
* workerd forbids runtime `new Function(src)` / `eval()` at
|
|
10
|
+
* request-handler time — so we can't transform CJS → ESM in the
|
|
11
|
+
* facet on the fly.
|
|
12
|
+
*
|
|
13
|
+
* Solution: bundle the common CJS packages at build time into ESM
|
|
14
|
+
* artifacts, emit them as LOADER modules alongside plugin-react,
|
|
15
|
+
* and rewrite the Vite resolver's output so that
|
|
16
|
+
* /home/user/app/node_modules/react/index.js
|
|
17
|
+
* maps to the pre-bundled
|
|
18
|
+
* cirrus-npm/react.js
|
|
19
|
+
* at facet load time.
|
|
20
|
+
*
|
|
21
|
+
* Packages we pre-bundle (the common React dev dependencies):
|
|
22
|
+
* - react (+ jsx-runtime)
|
|
23
|
+
* - react-dom (+ client)
|
|
24
|
+
* - scheduler
|
|
25
|
+
*
|
|
26
|
+
* Each is bundled via esbuild with CJS-interop (`module.exports`
|
|
27
|
+
* becomes `export default`, auto-detected named exports via
|
|
28
|
+
* cjs-module-lexer).
|
|
29
|
+
*
|
|
30
|
+
* Output: src/cirrus-npm-cjs.generated.ts exporting a
|
|
31
|
+
* Record<string, string> of virtual-path → ESM-bundle-string.
|
|
32
|
+
*/
|
|
33
|
+
|
|
34
|
+
import { promises as fs } from 'node:fs';
|
|
35
|
+
import path from 'node:path';
|
|
36
|
+
import { fileURLToPath } from 'node:url';
|
|
37
|
+
import { createRequire } from 'node:module';
|
|
38
|
+
import esbuild from 'esbuild';
|
|
39
|
+
|
|
40
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
41
|
+
const ROOT = path.resolve(__dirname, '..');
|
|
42
|
+
const OUT = path.join(ROOT, 'src', 'cirrus-npm-cjs.generated.ts');
|
|
43
|
+
|
|
44
|
+
// Packages to pre-bundle. Each entry: { subpath, moduleSuffix } is
|
|
45
|
+
// an exported entry. The bundler resolves each subpath against the
|
|
46
|
+
// installed package and produces a separate ESM bundle.
|
|
47
|
+
//
|
|
48
|
+
// `externalPeers` is the set of peer packages that MUST be kept
|
|
49
|
+
// external at bundle time, so they resolve to the SHARED pre-built
|
|
50
|
+
// bundle (same instance) instead of inlining a private copy. Without
|
|
51
|
+
// this, react-dom's inlined react copy and the user-facing react
|
|
52
|
+
// bundle would be two separate runtime instances — the classic
|
|
53
|
+
// "Invalid hook call" React error.
|
|
54
|
+
const TARGETS = [
|
|
55
|
+
{
|
|
56
|
+
pkg: 'react',
|
|
57
|
+
version: '^18.3.1',
|
|
58
|
+
externalPeers: [],
|
|
59
|
+
entries: [
|
|
60
|
+
{ subpath: '', moduleSuffix: '.js' },
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
// jsx-runtime + jsx-dev-runtime live alongside react but require
|
|
65
|
+
// the SAME react instance the user imports — so they get their
|
|
66
|
+
// own bundle target with react marked external.
|
|
67
|
+
pkg: 'react',
|
|
68
|
+
version: '^18.3.1',
|
|
69
|
+
externalPeers: ['react'],
|
|
70
|
+
entries: [
|
|
71
|
+
{ subpath: 'jsx-runtime', moduleSuffix: '.js' },
|
|
72
|
+
{ subpath: 'jsx-dev-runtime', moduleSuffix: '.js' },
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
pkg: 'react-dom',
|
|
77
|
+
version: '^18.3.1',
|
|
78
|
+
// react + scheduler are SHARED peers.
|
|
79
|
+
externalPeers: ['react', 'scheduler'],
|
|
80
|
+
entries: [
|
|
81
|
+
{ subpath: '', moduleSuffix: '.js' },
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
// react-dom/client is a tiny wrapper around react-dom. Keep
|
|
86
|
+
// `react-dom` itself external (shared with the bare react-dom
|
|
87
|
+
// import) so we don't ship two copies of react-doms 980 KB
|
|
88
|
+
// runtime.
|
|
89
|
+
pkg: 'react-dom',
|
|
90
|
+
version: '^18.3.1',
|
|
91
|
+
externalPeers: ['react', 'scheduler', 'react-dom'],
|
|
92
|
+
entries: [
|
|
93
|
+
{ subpath: 'client', moduleSuffix: '.js' },
|
|
94
|
+
],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
pkg: 'scheduler',
|
|
98
|
+
version: '*',
|
|
99
|
+
externalPeers: [],
|
|
100
|
+
entries: [
|
|
101
|
+
{ subpath: '', moduleSuffix: '.js' },
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
];
|
|
105
|
+
|
|
106
|
+
const NODE_BUILTINS = [
|
|
107
|
+
'node:assert', 'node:buffer', 'node:child_process', 'node:crypto',
|
|
108
|
+
'node:dns', 'node:events', 'node:fs', 'node:fs/promises', 'node:http',
|
|
109
|
+
'node:https', 'node:module', 'node:net', 'node:os', 'node:path',
|
|
110
|
+
'node:perf_hooks', 'node:process', 'node:querystring', 'node:readline',
|
|
111
|
+
'node:stream', 'node:string_decoder', 'node:timers', 'node:timers/promises',
|
|
112
|
+
'node:tls', 'node:tty', 'node:url', 'node:util', 'node:v8',
|
|
113
|
+
'node:worker_threads', 'node:zlib',
|
|
114
|
+
'fs', 'path', 'url', 'util', 'os', 'net', 'crypto', 'child_process',
|
|
115
|
+
'dns', 'tty', 'worker_threads', 'assert', 'process', 'v8', 'events',
|
|
116
|
+
'http', 'https', 'zlib', 'stream', 'buffer', 'readline', 'module',
|
|
117
|
+
'string_decoder', 'timers', 'querystring', 'perf_hooks',
|
|
118
|
+
];
|
|
119
|
+
|
|
120
|
+
async function ensureInstalled() {
|
|
121
|
+
const SRC_DIR = path.join(ROOT, '.cirrus-npm-cjs-src');
|
|
122
|
+
const haveReact = await fs.access(path.join(SRC_DIR, 'node_modules/react/package.json')).then(() => true).catch(() => false);
|
|
123
|
+
const haveLexer = await fs.access(path.join(SRC_DIR, 'node_modules/cjs-module-lexer/package.json')).then(() => true).catch(() => false);
|
|
124
|
+
if (haveReact && haveLexer) return SRC_DIR;
|
|
125
|
+
await fs.mkdir(SRC_DIR, { recursive: true });
|
|
126
|
+
await fs.writeFile(path.join(SRC_DIR, 'package.json'), JSON.stringify({
|
|
127
|
+
name: 'cirrus-npm-cjs-build', private: true, version: '0.0.0',
|
|
128
|
+
dependencies: {
|
|
129
|
+
...Object.fromEntries(
|
|
130
|
+
TARGETS.filter((t) => t.version !== '*').map((t) => [t.pkg, t.version]),
|
|
131
|
+
),
|
|
132
|
+
'cjs-module-lexer': '^2',
|
|
133
|
+
},
|
|
134
|
+
}, null, 2));
|
|
135
|
+
const { execSync } = await import('node:child_process');
|
|
136
|
+
console.log('[bundle-npm-cjs] installing react/react-dom/scheduler + cjs-module-lexer...');
|
|
137
|
+
execSync('bun install', { cwd: SRC_DIR, stdio: 'inherit' });
|
|
138
|
+
return SRC_DIR;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Walk the CJS entry + its `require(...)` transitive closure within
|
|
143
|
+
* the same package and union all their exports. Needed because react's
|
|
144
|
+
* `index.js` is `module.exports = require('./cjs/react.development.js')`
|
|
145
|
+
* — cjs-module-lexer parsing `index.js` finds only "default" reexport,
|
|
146
|
+
* so we have to follow the chain.
|
|
147
|
+
*
|
|
148
|
+
* We detect `module.exports = require(...)` and follow the referenced
|
|
149
|
+
* file to enumerate ITS exports (which are the real ones).
|
|
150
|
+
*/
|
|
151
|
+
async function discoverExports(srcDir, pkgName, subpath, lexer) {
|
|
152
|
+
const req = createRequire(path.join(srcDir, 'package.json'));
|
|
153
|
+
const spec = subpath ? `${pkgName}/${subpath}` : pkgName;
|
|
154
|
+
let entryPath;
|
|
155
|
+
try { entryPath = req.resolve(spec); }
|
|
156
|
+
catch (e) { console.warn('[bundle-npm-cjs] cant resolve', spec, e?.message); return []; }
|
|
157
|
+
return await walkExports(entryPath, lexer, new Set());
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
async function walkExports(filepath, lexer, seen) {
|
|
161
|
+
if (seen.has(filepath)) return [];
|
|
162
|
+
seen.add(filepath);
|
|
163
|
+
let src;
|
|
164
|
+
try { src = await fs.readFile(filepath, 'utf8'); }
|
|
165
|
+
catch { return []; }
|
|
166
|
+
let parsed;
|
|
167
|
+
try { parsed = lexer.parse(src); }
|
|
168
|
+
catch { return []; }
|
|
169
|
+
const names = new Set([...parsed.exports]);
|
|
170
|
+
// Follow re-exports (e.g. `module.exports = require('./dev.js')`).
|
|
171
|
+
for (const re of parsed.reexports) {
|
|
172
|
+
if (!re.startsWith('.')) continue; // bare-spec re-exports: skip
|
|
173
|
+
const dir = path.dirname(filepath);
|
|
174
|
+
const abs = path.resolve(dir, re);
|
|
175
|
+
for (const tryPath of [abs, abs + '.js', abs + '/index.js']) {
|
|
176
|
+
try { await fs.access(tryPath);
|
|
177
|
+
const nested = await walkExports(tryPath, lexer, seen);
|
|
178
|
+
for (const n of nested) names.add(n);
|
|
179
|
+
break;
|
|
180
|
+
} catch { continue; }
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return [...names];
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
async function bundleEntry(srcDir, pkgName, subpath, externalPeers, lexer) {
|
|
187
|
+
const exportNames = await discoverExports(srcDir, pkgName, subpath, lexer);
|
|
188
|
+
const filtered = exportNames.filter(
|
|
189
|
+
(n) => /^[a-zA-Z_$][\w$]*$/.test(n) && n !== 'default',
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
const fullSpec = subpath ? `${pkgName}/${subpath}` : pkgName;
|
|
193
|
+
const stubPath = path.join(srcDir, '.stub-' + pkgName.replace(/[^a-z0-9]/gi, '_') + '-' + (subpath || 'root').replace(/[^a-z0-9]/gi, '_') + '.mjs');
|
|
194
|
+
const namedLines = filtered.map(
|
|
195
|
+
(n) => `export const ${n} = _mod.${n} ?? _default?.${n};`,
|
|
196
|
+
).join('\n');
|
|
197
|
+
await fs.writeFile(stubPath, `
|
|
198
|
+
import * as _mod from ${JSON.stringify(fullSpec)};
|
|
199
|
+
const _default = _mod.default ?? _mod;
|
|
200
|
+
${namedLines}
|
|
201
|
+
export default _default;
|
|
202
|
+
`);
|
|
203
|
+
try {
|
|
204
|
+
// externalPeers: list of bare specifiers (e.g. 'react', 'scheduler')
|
|
205
|
+
// that must NOT be inlined — they'll be served as separate
|
|
206
|
+
// pre-built bundles from the same registry, ensuring a single
|
|
207
|
+
// runtime instance per session.
|
|
208
|
+
//
|
|
209
|
+
// Precise rule: peer matches the exact name OR any subpath of it,
|
|
210
|
+
// EXCEPT the current entry (we're building `pkgName/subpath`, so
|
|
211
|
+
// that specifier has to resolve to its actual file, not loop back
|
|
212
|
+
// to itself).
|
|
213
|
+
const currentEntry = subpath ? `${pkgName}/${subpath}` : pkgName;
|
|
214
|
+
const peerExternalPlugin = {
|
|
215
|
+
name: 'cirrus-peer-external',
|
|
216
|
+
setup(build) {
|
|
217
|
+
build.onResolve({ filter: /.*/ }, (args) => {
|
|
218
|
+
const spec = args.path;
|
|
219
|
+
// Never externalize our own entry.
|
|
220
|
+
if (spec === currentEntry) return null;
|
|
221
|
+
for (const peer of externalPeers) {
|
|
222
|
+
if (spec === peer || spec.startsWith(peer + '/')) {
|
|
223
|
+
return { path: spec, external: true };
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return null;
|
|
227
|
+
});
|
|
228
|
+
},
|
|
229
|
+
};
|
|
230
|
+
const result = await esbuild.build({
|
|
231
|
+
entryPoints: [stubPath],
|
|
232
|
+
bundle: true,
|
|
233
|
+
format: 'esm',
|
|
234
|
+
platform: 'neutral',
|
|
235
|
+
target: 'es2022',
|
|
236
|
+
write: false,
|
|
237
|
+
external: NODE_BUILTINS,
|
|
238
|
+
plugins: externalPeers.length > 0 ? [peerExternalPlugin] : [],
|
|
239
|
+
conditions: ['module', 'import', 'browser', 'default'],
|
|
240
|
+
mainFields: ['module', 'browser', 'main'],
|
|
241
|
+
keepNames: true,
|
|
242
|
+
minify: false,
|
|
243
|
+
define: {
|
|
244
|
+
'process.env.NODE_ENV': JSON.stringify('development'),
|
|
245
|
+
'import.meta.url': JSON.stringify(`file:///cirrus-npm/${pkgName}${subpath ? '/' + subpath : ''}.js`),
|
|
246
|
+
},
|
|
247
|
+
absWorkingDir: srcDir,
|
|
248
|
+
logLevel: 'warning',
|
|
249
|
+
});
|
|
250
|
+
if (result.errors.length) {
|
|
251
|
+
console.error(`[bundle-npm-cjs] ${fullSpec} errors:`, result.errors);
|
|
252
|
+
throw new Error('build failed');
|
|
253
|
+
}
|
|
254
|
+
let text = result.outputFiles[0].text;
|
|
255
|
+
|
|
256
|
+
// Post-process: replace every `__require("<peer>")` call with a
|
|
257
|
+
// direct reference to a module-top ESM import. esbuild emits
|
|
258
|
+
// __require() calls for EXTERNAL CJS requires (e.g.
|
|
259
|
+
// `var react_dom = require("react-dom")` in the source becomes
|
|
260
|
+
// `var react_dom = __require("react-dom")` in the bundle). The
|
|
261
|
+
// __require polyfill tries global `require`, which the browser
|
|
262
|
+
// doesn't have. We rewrite to a hoisted ESM import so the
|
|
263
|
+
// browser loads the shared react bundle.
|
|
264
|
+
if (externalPeers.length > 0) {
|
|
265
|
+
const imports = [];
|
|
266
|
+
const seen = new Map();
|
|
267
|
+
let counter = 0;
|
|
268
|
+
const peerRe = new RegExp(
|
|
269
|
+
`__require\\((["'])(${externalPeers
|
|
270
|
+
.map((p) => p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))
|
|
271
|
+
.join('|')}(?:/[\\w./@-]+)?)\\1\\)`,
|
|
272
|
+
'g',
|
|
273
|
+
);
|
|
274
|
+
text = text.replace(peerRe, (_, q, spec) => {
|
|
275
|
+
if (!seen.has(spec)) {
|
|
276
|
+
const name = `__cirrus_peer_${counter++}`;
|
|
277
|
+
seen.set(spec, name);
|
|
278
|
+
imports.push(
|
|
279
|
+
`import * as ${name}_ns from ${JSON.stringify(spec)};`,
|
|
280
|
+
`const ${name} = ${name}_ns.default ?? ${name}_ns;`,
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
return seen.get(spec);
|
|
284
|
+
});
|
|
285
|
+
if (imports.length > 0) {
|
|
286
|
+
text = imports.join('\n') + '\n' + text;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
return text;
|
|
291
|
+
} finally {
|
|
292
|
+
await fs.unlink(stubPath).catch(() => {});
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
async function main() {
|
|
297
|
+
const srcDir = await ensureInstalled();
|
|
298
|
+
const lexerReq = createRequire(path.join(srcDir, 'package.json'));
|
|
299
|
+
const lexer = lexerReq('cjs-module-lexer');
|
|
300
|
+
await lexer.init();
|
|
301
|
+
const bundles = {};
|
|
302
|
+
const versions = {};
|
|
303
|
+
let totalBytes = 0;
|
|
304
|
+
|
|
305
|
+
for (const target of TARGETS) {
|
|
306
|
+
const pkgPath = path.join(srcDir, 'node_modules', target.pkg, 'package.json');
|
|
307
|
+
try {
|
|
308
|
+
const pkg = JSON.parse(await fs.readFile(pkgPath, 'utf8'));
|
|
309
|
+
versions[target.pkg] = pkg.version;
|
|
310
|
+
} catch {
|
|
311
|
+
versions[target.pkg] = '(missing)';
|
|
312
|
+
}
|
|
313
|
+
for (const entry of target.entries) {
|
|
314
|
+
const label = entry.subpath ? `${target.pkg}/${entry.subpath}` : target.pkg;
|
|
315
|
+
console.log(`[bundle-npm-cjs] bundling ${label}...`);
|
|
316
|
+
try {
|
|
317
|
+
const text = await bundleEntry(srcDir, target.pkg, entry.subpath, target.externalPeers || [], lexer);
|
|
318
|
+
const moduleName = (entry.subpath ? `${target.pkg}-${entry.subpath}` : target.pkg).replace(/[^a-z0-9]/gi, '-') + entry.moduleSuffix;
|
|
319
|
+
bundles[label] = { moduleName, code: text };
|
|
320
|
+
totalBytes += text.length;
|
|
321
|
+
console.log(`[bundle-npm-cjs] ${label} → ${moduleName} (${(text.length / 1024).toFixed(1)} KB)`);
|
|
322
|
+
} catch (e) {
|
|
323
|
+
console.error(`[bundle-npm-cjs] FAILED ${label}:`, e?.message || e);
|
|
324
|
+
throw e;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
console.log(`[bundle-npm-cjs] total: ${(totalBytes / 1024).toFixed(1)} KB across ${Object.keys(bundles).length} entries`);
|
|
330
|
+
|
|
331
|
+
// Emit the generated TS file. Shape:
|
|
332
|
+
// CIRRUS_NPM_CJS_BUNDLES: Record<pkgEntrySpec, { moduleName, code }>
|
|
333
|
+
// CIRRUS_NPM_CJS_VERSIONS: Record<pkgName, version>
|
|
334
|
+
const header = `/**
|
|
335
|
+
* cirrus-npm-cjs.generated.ts — AUTO-GENERATED by
|
|
336
|
+
* scripts/bundle-npm-cjs.mjs. DO NOT EDIT.
|
|
337
|
+
*
|
|
338
|
+
* Pre-bundled ESM artifacts for CJS packages in the React ecosystem
|
|
339
|
+
* (react, react-dom, scheduler). Ships alongside cirrus-plugin-react.
|
|
340
|
+
* Consumed by src/cirrus-real.ts — injected as LOADER modules, and
|
|
341
|
+
* the Vite resolver's output (e.g. /home/user/app/node_modules/react/index.js)
|
|
342
|
+
* is rewritten to point at one of these bundles at request time.
|
|
343
|
+
*/
|
|
344
|
+
|
|
345
|
+
export interface CirrusNpmCjsBundle {
|
|
346
|
+
moduleName: string;
|
|
347
|
+
code: string;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
export const CIRRUS_NPM_CJS_VERSIONS: Record<string, string> = ${JSON.stringify(versions, null, 2)};
|
|
351
|
+
|
|
352
|
+
export const CIRRUS_NPM_CJS_BUNDLES: Record<string, CirrusNpmCjsBundle> = ${
|
|
353
|
+
JSON.stringify(bundles, null, 2)
|
|
354
|
+
};
|
|
355
|
+
`;
|
|
356
|
+
await fs.writeFile(OUT, header, 'utf8');
|
|
357
|
+
console.log(`[bundle-npm-cjs] wrote ${OUT} (${(header.length / 1024).toFixed(1)} KB)`);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
main().catch((e) => {
|
|
361
|
+
console.error('[bundle-npm-cjs] failed:', e);
|
|
362
|
+
process.exit(1);
|
|
363
|
+
});
|