@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,480 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* bundle-plugin-react.mjs — Pre-bundle @vitejs/plugin-react for the
|
|
4
|
+
* real-vite facet.
|
|
5
|
+
*
|
|
6
|
+
* Path C from PHASE1-BLOCKER.md §"Why this isn't trivially fixable":
|
|
7
|
+
* instead of asking the facet to runtime-resolve plugin-react's ESM
|
|
8
|
+
* dependencies (which failed because our userspace-require uses
|
|
9
|
+
* `new Function(code)`, a CJS wrapper that rejects ESM source text),
|
|
10
|
+
* we pre-bundle the WHOLE plugin — including @babel/core,
|
|
11
|
+
* react-refresh/babel, and the two babel JSX-helper plugins — into
|
|
12
|
+
* one self-contained ESM string.
|
|
13
|
+
*
|
|
14
|
+
* Two critical transformations happen here:
|
|
15
|
+
*
|
|
16
|
+
* 1. Asset inlining (module-top fs.readFileSync elimination).
|
|
17
|
+
* plugin-react reads react-refresh-runtime.development.js and
|
|
18
|
+
* refreshUtils.js at module-init via `fs.readFileSync(...)`.
|
|
19
|
+
* esbuild sees those calls literally — it can't replace them
|
|
20
|
+
* statically. So this script reads those files at bundle time
|
|
21
|
+
* and does TEXTUAL replacement of the template-literal
|
|
22
|
+
* substitutions INSIDE plugin-react's source, turning the
|
|
23
|
+
* fs.readFileSync calls into string constants. Same trick we
|
|
24
|
+
* used to inline the rollup-WASM binary in bundle-real-vite.mjs.
|
|
25
|
+
*
|
|
26
|
+
* 2. Dynamic-import rewiring. plugin-react lazily loads
|
|
27
|
+
* @babel/core and the babel plugins via `await import(path)`.
|
|
28
|
+
* In our facet the specifiers "react-refresh/babel", "@babel/core",
|
|
29
|
+
* etc. aren't resolvable at runtime (no LOADER module graph for
|
|
30
|
+
* user node_modules). So we replace `loadPlugin(path)` with a
|
|
31
|
+
* switch that does STATIC imports — esbuild sees those, follows
|
|
32
|
+
* them, and inlines the targets in the output.
|
|
33
|
+
*
|
|
34
|
+
* Output: src/cirrus-plugin-react.generated.ts, exporting
|
|
35
|
+
* - CIRRUS_PLUGIN_REACT_BUNDLE (ESM string, ~3 MB)
|
|
36
|
+
* - CIRRUS_PLUGIN_REACT_VERSION
|
|
37
|
+
*
|
|
38
|
+
* The facet imports this string via a LOADER module at spawn time
|
|
39
|
+
* (see src/cirrus-real.ts). The user-config bundle's
|
|
40
|
+
* `import react from '@vitejs/plugin-react'` is rewritten to point
|
|
41
|
+
* at the LOADER module.
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
import { promises as fs } from 'node:fs';
|
|
45
|
+
import path from 'node:path';
|
|
46
|
+
import { fileURLToPath } from 'node:url';
|
|
47
|
+
import esbuild from 'esbuild';
|
|
48
|
+
|
|
49
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
50
|
+
const ROOT = path.resolve(__dirname, '..');
|
|
51
|
+
const OUT = path.join(ROOT, 'src', 'cirrus-plugin-react.generated.ts');
|
|
52
|
+
// [sdk-phase-1] Large bundle (~3 MB) ships via ASSETS binding.
|
|
53
|
+
const ASSETS_DIR = path.join(ROOT, 'public', '_assets');
|
|
54
|
+
const ASSET_PATH = '/_assets/cirrus-plugin-react.bundle.js';
|
|
55
|
+
|
|
56
|
+
// Pinned to the version the Cirrus-shim React starter uses. If users
|
|
57
|
+
// specify a different version in their own project we'll still use this
|
|
58
|
+
// one for real-vite mode — Path C is a compatibility bridge, not a
|
|
59
|
+
// per-project bundler.
|
|
60
|
+
const PINNED_PLUGIN_REACT_VERSION = '~4.3.4';
|
|
61
|
+
const PINNED_REACT_REFRESH_VERSION = '^0.14.0';
|
|
62
|
+
const PINNED_BABEL_CORE_VERSION = '^7.25.0';
|
|
63
|
+
const PINNED_BABEL_PLUGIN_TRANSFORM_REACT_JSX_SELF = '^7.25.0';
|
|
64
|
+
const PINNED_BABEL_PLUGIN_TRANSFORM_REACT_JSX_SOURCE = '^7.25.0';
|
|
65
|
+
// Added by pathC step 7: plugin-react 4.x delegates JSX transform
|
|
66
|
+
// to Vite's esbuild. We disabled vite:esbuild for workerd, so we
|
|
67
|
+
// need Babel's JSX transformer bundled in instead.
|
|
68
|
+
const PINNED_BABEL_PLUGIN_TRANSFORM_REACT_JSX = '^7.25.0';
|
|
69
|
+
const PINNED_BABEL_PLUGIN_SYNTAX_JSX = '^7.25.0';
|
|
70
|
+
// Step 8: Vite's esbuild also lowered TypeScript syntax (interface,
|
|
71
|
+
// type annotations, `!` non-null assertions, enums, etc.). Same
|
|
72
|
+
// disablement kills that too. Bundle @babel/plugin-transform-typescript
|
|
73
|
+
// so plugin-react's Babel pass strips TS syntax from .ts/.tsx files.
|
|
74
|
+
const PINNED_BABEL_PLUGIN_TRANSFORM_TYPESCRIPT = '^7.25.0';
|
|
75
|
+
const PINNED_BABEL_PLUGIN_SYNTAX_TYPESCRIPT = '^7.25.0';
|
|
76
|
+
|
|
77
|
+
// Same NODE_BUILTINS list bundle-real-vite.mjs uses. workerd provides
|
|
78
|
+
// these via nodejs_compat.
|
|
79
|
+
const NODE_BUILTINS = [
|
|
80
|
+
'node:assert', 'node:buffer', 'node:child_process', 'node:crypto',
|
|
81
|
+
'node:dns', 'node:events', 'node:fs', 'node:fs/promises', 'node:http',
|
|
82
|
+
'node:https', 'node:module', 'node:net', 'node:os', 'node:path',
|
|
83
|
+
'node:perf_hooks', 'node:process', 'node:querystring', 'node:readline',
|
|
84
|
+
'node:stream', 'node:string_decoder', 'node:timers', 'node:timers/promises',
|
|
85
|
+
'node:tls', 'node:tty', 'node:url', 'node:util', 'node:v8',
|
|
86
|
+
'node:worker_threads', 'node:zlib',
|
|
87
|
+
'fs', 'path', 'url', 'util', 'os', 'net', 'crypto', 'child_process',
|
|
88
|
+
'dns', 'tty', 'worker_threads', 'assert', 'process', 'v8', 'events',
|
|
89
|
+
'http', 'https', 'zlib', 'stream', 'buffer', 'readline', 'module',
|
|
90
|
+
'string_decoder', 'timers', 'querystring', 'perf_hooks',
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
// Optional deps babel tries to require() to detect feature support but
|
|
94
|
+
// never actually USES in the transform path plugin-react exercises.
|
|
95
|
+
// Stubbing these keeps the bundle small and avoids esbuild resolution
|
|
96
|
+
// errors.
|
|
97
|
+
const STUB_AS_EMPTY = new Set([
|
|
98
|
+
'@babel/preset-typescript/package.json',
|
|
99
|
+
'@babel/preset-env/package.json',
|
|
100
|
+
'@babel/preset-react/package.json',
|
|
101
|
+
'@babel/preset-flow/package.json',
|
|
102
|
+
'lightningcss',
|
|
103
|
+
'fsevents',
|
|
104
|
+
]);
|
|
105
|
+
|
|
106
|
+
async function ensureInstalled(opts) {
|
|
107
|
+
// Does /tmp/cirrus-plugin-react-src already have everything?
|
|
108
|
+
const SRC_DIR = path.join(ROOT, '.cirrus-plugin-react-src');
|
|
109
|
+
const pkgPath = path.join(SRC_DIR, 'package.json');
|
|
110
|
+
const pluginPath = path.join(SRC_DIR, 'node_modules/@vitejs/plugin-react/package.json');
|
|
111
|
+
const babelPath = path.join(SRC_DIR, 'node_modules/@babel/core/package.json');
|
|
112
|
+
try {
|
|
113
|
+
await fs.access(pluginPath);
|
|
114
|
+
await fs.access(babelPath);
|
|
115
|
+
return SRC_DIR;
|
|
116
|
+
} catch { /* need install */ }
|
|
117
|
+
|
|
118
|
+
console.log(`[bundle-plugin-react] installing plugin-react + babel into ${SRC_DIR}...`);
|
|
119
|
+
await fs.mkdir(SRC_DIR, { recursive: true });
|
|
120
|
+
await fs.writeFile(pkgPath, JSON.stringify({
|
|
121
|
+
name: 'cirrus-plugin-react-build',
|
|
122
|
+
private: true,
|
|
123
|
+
version: '0.0.0',
|
|
124
|
+
dependencies: {
|
|
125
|
+
'@vitejs/plugin-react': PINNED_PLUGIN_REACT_VERSION,
|
|
126
|
+
'react-refresh': PINNED_REACT_REFRESH_VERSION,
|
|
127
|
+
'@babel/core': PINNED_BABEL_CORE_VERSION,
|
|
128
|
+
'@babel/plugin-transform-react-jsx-self': PINNED_BABEL_PLUGIN_TRANSFORM_REACT_JSX_SELF,
|
|
129
|
+
'@babel/plugin-transform-react-jsx-source': PINNED_BABEL_PLUGIN_TRANSFORM_REACT_JSX_SOURCE,
|
|
130
|
+
'@babel/plugin-transform-react-jsx': PINNED_BABEL_PLUGIN_TRANSFORM_REACT_JSX,
|
|
131
|
+
'@babel/plugin-syntax-jsx': PINNED_BABEL_PLUGIN_SYNTAX_JSX,
|
|
132
|
+
'@babel/plugin-transform-typescript': PINNED_BABEL_PLUGIN_TRANSFORM_TYPESCRIPT,
|
|
133
|
+
'@babel/plugin-syntax-typescript': PINNED_BABEL_PLUGIN_SYNTAX_TYPESCRIPT,
|
|
134
|
+
},
|
|
135
|
+
}, null, 2));
|
|
136
|
+
const { execSync } = await import('node:child_process');
|
|
137
|
+
execSync('bun install', { cwd: SRC_DIR, stdio: 'inherit' });
|
|
138
|
+
return SRC_DIR;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Read an asset file, returning empty-comment fallback if missing.
|
|
143
|
+
* Catches the "package installed without dist files" edge case.
|
|
144
|
+
*/
|
|
145
|
+
async function readAssetOrBlank(p, label) {
|
|
146
|
+
try { return await fs.readFile(p, 'utf8'); }
|
|
147
|
+
catch {
|
|
148
|
+
console.warn(`[bundle-plugin-react] WARN: ${label} at ${p} missing; bundling empty.`);
|
|
149
|
+
return `/* cirrus: ${label} missing at bundle time */`;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function makeInlineAssetsPlugin(srcDir) {
|
|
154
|
+
const pluginIndex = /@vitejs[\\/]plugin-react[\\/]dist[\\/]index\.(mjs|cjs)$/;
|
|
155
|
+
|
|
156
|
+
return {
|
|
157
|
+
name: 'cirrus-plugin-react-inline',
|
|
158
|
+
setup(build) {
|
|
159
|
+
// Stub optional-probing requires.
|
|
160
|
+
for (const s of STUB_AS_EMPTY) {
|
|
161
|
+
const re = new RegExp(
|
|
162
|
+
'^' + s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + '$',
|
|
163
|
+
);
|
|
164
|
+
build.onResolve({ filter: re }, (args) => ({
|
|
165
|
+
path: args.path, namespace: 'cirrus-stub-empty',
|
|
166
|
+
}));
|
|
167
|
+
}
|
|
168
|
+
build.onLoad({ filter: /.*/, namespace: 'cirrus-stub-empty' }, () => ({
|
|
169
|
+
contents: 'module.exports = {};', loader: 'js',
|
|
170
|
+
}));
|
|
171
|
+
|
|
172
|
+
// Source-level rewrites for plugin-react's index.mjs.
|
|
173
|
+
build.onLoad({ filter: pluginIndex }, async (args) => {
|
|
174
|
+
const src = await fs.readFile(args.path, 'utf8');
|
|
175
|
+
const pluginDir = args.path.replace(/[\\/]index\.(mjs|cjs)$/, '');
|
|
176
|
+
// react-refresh is a sibling of @vitejs in node_modules/.
|
|
177
|
+
// args.path = <srcDir>/node_modules/@vitejs/plugin-react/dist/index.mjs
|
|
178
|
+
// → node_modules_dir = <srcDir>/node_modules
|
|
179
|
+
// → reactRefreshDir = <srcDir>/node_modules/react-refresh
|
|
180
|
+
const vitejs_dir = path.dirname(path.dirname(pluginDir)); // .../node_modules/@vitejs
|
|
181
|
+
const nodeModulesDir = path.dirname(vitejs_dir); // .../node_modules
|
|
182
|
+
const reactRefreshDir = path.join(nodeModulesDir, 'react-refresh');
|
|
183
|
+
|
|
184
|
+
const rrRuntime = await readAssetOrBlank(
|
|
185
|
+
path.join(reactRefreshDir, 'cjs/react-refresh-runtime.development.js'),
|
|
186
|
+
'react-refresh-runtime.development.js',
|
|
187
|
+
);
|
|
188
|
+
const rrUtils = await readAssetOrBlank(
|
|
189
|
+
path.join(pluginDir, 'refreshUtils.js'),
|
|
190
|
+
'@vitejs/plugin-react/dist/refreshUtils.js',
|
|
191
|
+
);
|
|
192
|
+
|
|
193
|
+
const esc = (s) =>
|
|
194
|
+
s.replace(/\\/g, '\\\\').replace(/`/g, '\\`').replace(/\$\{/g, '\\${');
|
|
195
|
+
|
|
196
|
+
let patched = src;
|
|
197
|
+
|
|
198
|
+
// Inline the two fs.readFileSync calls that happen at module
|
|
199
|
+
// init. Both are template-literal substitutions, so we swap
|
|
200
|
+
// them for the escaped file contents.
|
|
201
|
+
patched = patched.replace(
|
|
202
|
+
/\$\{fs\.readFileSync\(runtimeFilePath,\s*"utf-8"\)\}/g,
|
|
203
|
+
esc(rrRuntime),
|
|
204
|
+
);
|
|
205
|
+
patched = patched.replace(
|
|
206
|
+
/\$\{fs\.readFileSync\(_require\.resolve\("\.\/refreshUtils\.js"\),\s*"utf-8"\)\}/g,
|
|
207
|
+
esc(rrUtils),
|
|
208
|
+
);
|
|
209
|
+
|
|
210
|
+
// The two path-computation calls that populate runtimeFilePath
|
|
211
|
+
// / reactRefreshDir are now dead — neutralise them so the
|
|
212
|
+
// remaining `path.join` / `path.dirname` don't trip on bundle-
|
|
213
|
+
// time `_require.resolve` (it won't exist at runtime).
|
|
214
|
+
patched = patched.replace(
|
|
215
|
+
/path\.dirname\(\s*_require\.resolve\("react-refresh\/package\.json"\)\s*\)/g,
|
|
216
|
+
'String("/__cirrus_stub_react_refresh_dir__")',
|
|
217
|
+
);
|
|
218
|
+
patched = patched.replace(
|
|
219
|
+
/path\.join\(\s*reactRefreshDir,\s*"cjs\/react-refresh-runtime\.development\.js"\s*\)/g,
|
|
220
|
+
'String("/__cirrus_stub_runtime_file__")',
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
// Rewire loadPlugin() to use static imports. esbuild will
|
|
224
|
+
// resolve these at bundle time and include the plugins inline.
|
|
225
|
+
// Also add a new well-known entry "@babel/plugin-transform-react-jsx"
|
|
226
|
+
// so our transform-patch (below) can load the JSX transformer.
|
|
227
|
+
patched = patched.replace(
|
|
228
|
+
/const loadedPlugin = [\s\S]*?return promise;\s*\}/,
|
|
229
|
+
`
|
|
230
|
+
const loadedPlugin = /* @__PURE__ */ new Map();
|
|
231
|
+
async function loadPlugin(path) {
|
|
232
|
+
if (loadedPlugin.has(path)) return loadedPlugin.get(path);
|
|
233
|
+
let value;
|
|
234
|
+
switch (path) {
|
|
235
|
+
case "react-refresh/babel":
|
|
236
|
+
value = (await import("react-refresh/babel")).default;
|
|
237
|
+
break;
|
|
238
|
+
case "@babel/plugin-transform-react-jsx-self":
|
|
239
|
+
value = (await import("@babel/plugin-transform-react-jsx-self")).default;
|
|
240
|
+
break;
|
|
241
|
+
case "@babel/plugin-transform-react-jsx-source":
|
|
242
|
+
value = (await import("@babel/plugin-transform-react-jsx-source")).default;
|
|
243
|
+
break;
|
|
244
|
+
case "@babel/plugin-transform-react-jsx":
|
|
245
|
+
value = (await import("@babel/plugin-transform-react-jsx")).default;
|
|
246
|
+
break;
|
|
247
|
+
case "@babel/plugin-transform-typescript":
|
|
248
|
+
value = (await import("@babel/plugin-transform-typescript")).default;
|
|
249
|
+
break;
|
|
250
|
+
default:
|
|
251
|
+
throw new Error("[cirrus-plugin-react] unknown loadPlugin spec: " + path);
|
|
252
|
+
}
|
|
253
|
+
loadedPlugin.set(path, value);
|
|
254
|
+
return value;
|
|
255
|
+
}
|
|
256
|
+
`.trim(),
|
|
257
|
+
);
|
|
258
|
+
|
|
259
|
+
// Step 7 critical fix: plugin-react 4.x delegates JSX syntax
|
|
260
|
+
// transformation to Vite's esbuild. In real-vite mode we
|
|
261
|
+
// disabled vite:esbuild (workerd forbids eval), so JSX
|
|
262
|
+
// reaches import-analysis unparsed and crashes. Inject the
|
|
263
|
+
// Babel JSX transformer into plugins[] right after the
|
|
264
|
+
// react-refresh/babel push — so every .jsx/.tsx file gets
|
|
265
|
+
// JSX syntax lowered BEFORE import-analysis sees it.
|
|
266
|
+
//
|
|
267
|
+
// We insert the JSX plugin BEFORE the refresh plugin so the
|
|
268
|
+
// refresh-sig detection (which runs on the post-JSX output
|
|
269
|
+
// via the refreshContentRE regex) sees jsx(...) call
|
|
270
|
+
// expressions, not raw JSX elements.
|
|
271
|
+
patched = patched.replace(
|
|
272
|
+
/const plugins = \[\.\.\.babelOptions\.plugins\];/,
|
|
273
|
+
`const plugins = [...babelOptions.plugins];
|
|
274
|
+
/* cirrus-real: inject Babel transforms for both JSX AND
|
|
275
|
+
TypeScript syntax. plugin-react 4.x normally delegates
|
|
276
|
+
both to Vite's esbuild — which we disabled because workerd
|
|
277
|
+
forbids eval. */
|
|
278
|
+
const filepath_cirrus = filepath;
|
|
279
|
+
const isTS_cirrus = /\\.tsx?$/.test(filepath_cirrus);
|
|
280
|
+
const isJSX_cirrus = filepath_cirrus.endsWith(".jsx") || filepath_cirrus.endsWith(".tsx");
|
|
281
|
+
if (isTS_cirrus) {
|
|
282
|
+
const tsPlugin = await loadPlugin("@babel/plugin-transform-typescript");
|
|
283
|
+
plugins.push([tsPlugin, {
|
|
284
|
+
isTSX: isJSX_cirrus,
|
|
285
|
+
allExtensions: true,
|
|
286
|
+
/* Allow namespace (required for some patterns). allowDeclareFields
|
|
287
|
+
is a default-true in Babel 7.25+; noops on older versions. */
|
|
288
|
+
allowNamespaces: true,
|
|
289
|
+
allowDeclareFields: true,
|
|
290
|
+
/* Preserve JSX — the jsx transform runs AFTER this plugin,
|
|
291
|
+
converting JSX to jsx() calls. */
|
|
292
|
+
onlyRemoveTypeImports: false,
|
|
293
|
+
}]);
|
|
294
|
+
}
|
|
295
|
+
if (isJSX_cirrus) {
|
|
296
|
+
const jsxPlugin = await loadPlugin("@babel/plugin-transform-react-jsx");
|
|
297
|
+
plugins.push([jsxPlugin, {
|
|
298
|
+
runtime: opts.jsxRuntime === "classic" ? "classic" : "automatic",
|
|
299
|
+
importSource: opts.jsxImportSource || "react",
|
|
300
|
+
development: !isProduction,
|
|
301
|
+
}]);
|
|
302
|
+
}`,
|
|
303
|
+
);
|
|
304
|
+
|
|
305
|
+
return { contents: patched, loader: 'js' };
|
|
306
|
+
});
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
async function main() {
|
|
312
|
+
const srcDir = await ensureInstalled();
|
|
313
|
+
const entry = path.join(
|
|
314
|
+
srcDir, 'node_modules/@vitejs/plugin-react/dist/index.mjs',
|
|
315
|
+
);
|
|
316
|
+
const pluginPkg = JSON.parse(
|
|
317
|
+
await fs.readFile(
|
|
318
|
+
path.join(srcDir, 'node_modules/@vitejs/plugin-react/package.json'),
|
|
319
|
+
'utf8',
|
|
320
|
+
),
|
|
321
|
+
);
|
|
322
|
+
const pluginReactVersion = pluginPkg.version;
|
|
323
|
+
|
|
324
|
+
console.log(`[bundle-plugin-react] bundling @vitejs/plugin-react@${pluginReactVersion}...`);
|
|
325
|
+
|
|
326
|
+
const result = await esbuild.build({
|
|
327
|
+
entryPoints: [entry],
|
|
328
|
+
bundle: true,
|
|
329
|
+
format: 'esm',
|
|
330
|
+
platform: 'neutral',
|
|
331
|
+
target: 'es2022',
|
|
332
|
+
write: false,
|
|
333
|
+
// `vite` is external — the facet provides vite-config-helper.js
|
|
334
|
+
// at runtime, pointing at the real bundled Vite.
|
|
335
|
+
external: [...NODE_BUILTINS, 'vite'],
|
|
336
|
+
conditions: ['import', 'node'],
|
|
337
|
+
mainFields: ['module', 'main'],
|
|
338
|
+
keepNames: true,
|
|
339
|
+
minify: false,
|
|
340
|
+
plugins: [makeInlineAssetsPlugin(srcDir)],
|
|
341
|
+
define: {
|
|
342
|
+
'process.env.NODE_ENV': JSON.stringify('development'),
|
|
343
|
+
// @babel/types / @babel/helper-validator flip these off in
|
|
344
|
+
// production builds; keep them off in our bundle too.
|
|
345
|
+
'process.env.BABEL_TYPES_8_BREAKING': JSON.stringify('false'),
|
|
346
|
+
'process.env.BABEL_8_BREAKING': JSON.stringify('false'),
|
|
347
|
+
'process.env.BABEL_DISABLE_CACHE': JSON.stringify('true'),
|
|
348
|
+
// Match bundle-real-vite.mjs's convention so any references to
|
|
349
|
+
// import.meta.url inside plugin-react's bundle dont crash.
|
|
350
|
+
'import.meta.url': JSON.stringify('file:///cirrus-plugin-react.js'),
|
|
351
|
+
},
|
|
352
|
+
logLevel: 'warning',
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
if (result.errors.length) {
|
|
356
|
+
console.error('[bundle-plugin-react] errors:', result.errors);
|
|
357
|
+
process.exit(1);
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
let bundle = result.outputFiles[0].text;
|
|
361
|
+
console.log(
|
|
362
|
+
`[bundle-plugin-react] pre-patch size: ${(bundle.length / 1024).toFixed(1)} KB`,
|
|
363
|
+
);
|
|
364
|
+
|
|
365
|
+
// Rewrite `import "vite"` / `from "vite"` → a facet-local helper.
|
|
366
|
+
// LOADER.load modules must end in .js, so the specifier has to
|
|
367
|
+
// resolve to a real filename. cirrus-real.ts provides
|
|
368
|
+
// 'vite-config-helper.js' that re-exports vite.bundle.js.
|
|
369
|
+
let viteRewrites = 0;
|
|
370
|
+
bundle = bundle.replace(/from\s*["']vite["']/g, () => {
|
|
371
|
+
viteRewrites++;
|
|
372
|
+
return 'from "./vite-config-helper.js"';
|
|
373
|
+
});
|
|
374
|
+
bundle = bundle.replace(/import\s*["']vite["']/g, () => {
|
|
375
|
+
viteRewrites++;
|
|
376
|
+
return 'import "./vite-config-helper.js"';
|
|
377
|
+
});
|
|
378
|
+
console.log(`[bundle-plugin-react] vite import rewrites: ${viteRewrites}`);
|
|
379
|
+
|
|
380
|
+
// Same esbuild __require polyfill replacement bundle-real-vite.mjs
|
|
381
|
+
// does. The bundled babel/core uses __require for optional deps at
|
|
382
|
+
// runtime; without replacement it throws on every lookup.
|
|
383
|
+
let requirePolyfillPatches = 0;
|
|
384
|
+
bundle = bundle.replace(
|
|
385
|
+
/var __require = [\s\S]*?throw Error\('Dynamic require of "' \+ x \+ '" is not supported'\);\s*\}\);/,
|
|
386
|
+
() => {
|
|
387
|
+
requirePolyfillPatches++;
|
|
388
|
+
return `var __require = /* @__PURE__ */ (function() {
|
|
389
|
+
let _cjsRequire = null;
|
|
390
|
+
function _getRequire() {
|
|
391
|
+
if (_cjsRequire) return _cjsRequire;
|
|
392
|
+
const cr = globalThis.__cirrusNodeCreateRequire;
|
|
393
|
+
if (cr) {
|
|
394
|
+
try { _cjsRequire = cr("file:///cirrus-plugin-react.js"); } catch {}
|
|
395
|
+
}
|
|
396
|
+
return _cjsRequire;
|
|
397
|
+
}
|
|
398
|
+
return function __require(name) {
|
|
399
|
+
if (globalThis.__cirrusNodeBuiltinTable && globalThis.__cirrusNodeBuiltinTable[name]) {
|
|
400
|
+
return globalThis.__cirrusNodeBuiltinTable[name];
|
|
401
|
+
}
|
|
402
|
+
if (globalThis.__cirrusRealRequireShim) {
|
|
403
|
+
try { return globalThis.__cirrusRealRequireShim(name); } catch {}
|
|
404
|
+
}
|
|
405
|
+
if (globalThis.__cirrusRealUserspaceRequire) {
|
|
406
|
+
try {
|
|
407
|
+
const mod = globalThis.__cirrusRealUserspaceRequire(name);
|
|
408
|
+
if (mod) return mod;
|
|
409
|
+
} catch {}
|
|
410
|
+
}
|
|
411
|
+
const req = _getRequire();
|
|
412
|
+
if (req) {
|
|
413
|
+
try { return req(name); }
|
|
414
|
+
catch (e) { throw Error('[cirrus-plugin-react __require] "' + name + '" failed: ' + (e?.message || e)); }
|
|
415
|
+
}
|
|
416
|
+
throw Error('[cirrus-plugin-react __require] "' + name + '" unresolved');
|
|
417
|
+
};
|
|
418
|
+
})();`;
|
|
419
|
+
},
|
|
420
|
+
);
|
|
421
|
+
console.log(
|
|
422
|
+
`[bundle-plugin-react] __require polyfill patches: ${requirePolyfillPatches}`,
|
|
423
|
+
);
|
|
424
|
+
console.log(
|
|
425
|
+
`[bundle-plugin-react] post-patch size: ${(bundle.length / 1024).toFixed(1)} KB`,
|
|
426
|
+
);
|
|
427
|
+
|
|
428
|
+
// [sdk-phase-1] Promote the big bundle string to a public asset.
|
|
429
|
+
await fs.mkdir(ASSETS_DIR, { recursive: true });
|
|
430
|
+
await fs.writeFile(path.join(ASSETS_DIR, 'cirrus-plugin-react.bundle.js'), bundle, 'utf8');
|
|
431
|
+
|
|
432
|
+
const header = `/**
|
|
433
|
+
* cirrus-plugin-react.generated.ts — AUTO-GENERATED by
|
|
434
|
+
* scripts/bundle-plugin-react.mjs. DO NOT EDIT.
|
|
435
|
+
*
|
|
436
|
+
* Self-contained @vitejs/plugin-react@${pluginReactVersion} bundle with
|
|
437
|
+
* @babel/core + react-refresh/babel + jsx-self/source plugins inlined.
|
|
438
|
+
* Module-top fs.readFileSync calls for refreshUtils.js and
|
|
439
|
+
* react-refresh-runtime.development.js are pre-resolved to string
|
|
440
|
+
* constants at bundle time.
|
|
441
|
+
*
|
|
442
|
+
* Consumed by src/cirrus-real.ts at facet spawn — injected as a
|
|
443
|
+
* LOADER module named 'cirrus-plugin-react.js'. User vite.config.ts'
|
|
444
|
+
* \`import react from '@vitejs/plugin-react'\` is rewritten to point
|
|
445
|
+
* at that module.
|
|
446
|
+
*
|
|
447
|
+
* [sdk-phase-1] The bundle string ships via the ASSETS binding instead
|
|
448
|
+
* of inline. Use {@link getCirrusPluginReactBundle}. Version constant
|
|
449
|
+
* stays inline.
|
|
450
|
+
*/
|
|
451
|
+
|
|
452
|
+
import { loadAssetText, type AssetsFetcher } from './runtime/assets-loader.js';
|
|
453
|
+
|
|
454
|
+
export const CIRRUS_PLUGIN_REACT_VERSION = ${JSON.stringify(pluginReactVersion)};
|
|
455
|
+
|
|
456
|
+
/** Asset path for the bundle. Use {@link getCirrusPluginReactBundle}. */
|
|
457
|
+
export const CIRRUS_PLUGIN_REACT_BUNDLE_PATH = ${JSON.stringify(ASSET_PATH)};
|
|
458
|
+
|
|
459
|
+
/**
|
|
460
|
+
* Fetch the bundle string from the ASSETS binding. Cached per-isolate.
|
|
461
|
+
*
|
|
462
|
+
* @param env Object with the \`ASSETS\` binding.
|
|
463
|
+
* @returns The plugin-react bundle as a UTF-8 string.
|
|
464
|
+
* @throws {NimbusAssetLoadError} when binding missing or fetch fails.
|
|
465
|
+
*/
|
|
466
|
+
export function getCirrusPluginReactBundle(env: { ASSETS: AssetsFetcher }): Promise<string> {
|
|
467
|
+
return loadAssetText(env.ASSETS, CIRRUS_PLUGIN_REACT_BUNDLE_PATH);
|
|
468
|
+
}
|
|
469
|
+
`;
|
|
470
|
+
|
|
471
|
+
await fs.writeFile(OUT, header, 'utf8');
|
|
472
|
+
console.log(
|
|
473
|
+
`[bundle-plugin-react] wrote ${OUT} (${(header.length / 1024).toFixed(1)} KB shim) + ${ASSETS_DIR}/cirrus-plugin-react.bundle.js (${(bundle.length / 1024 / 1024).toFixed(1)} MB)`,
|
|
474
|
+
);
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
main().catch((e) => {
|
|
478
|
+
console.error('[bundle-plugin-react] failed:', e);
|
|
479
|
+
process.exit(1);
|
|
480
|
+
});
|