@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,286 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* r2-cache.ts — L3 cross-tenant npm cache backed by R2 [W4]
|
|
3
|
+
* + L2 colo cache via `caches.default` [cache-and-scrub P3]
|
|
4
|
+
*
|
|
5
|
+
* Purpose
|
|
6
|
+
* ───────
|
|
7
|
+
* Mirrors the Pyodide / Python Workers Package Bundling System pattern
|
|
8
|
+
* (EW/SPEC at wiki.cfdata.org). The supervisor DO already maintains a
|
|
9
|
+
* per-tenant SQLite cache (src/npm-cache.ts). This module adds an L3
|
|
10
|
+
* cross-tenant tier in R2 so that one tenant's first-install of a package
|
|
11
|
+
* benefits every subsequent tenant on the platform — the win that drops
|
|
12
|
+
* Mossaic-class cold installs from ~60 s to a target ≤ 15 s.
|
|
13
|
+
*
|
|
14
|
+
* Caching layers (top-down):
|
|
15
|
+
* L1 — per-DO SQLite (warmest, in-memory; ~1 ms per file)
|
|
16
|
+
* L2 — `caches.default` (per-colo; ~50-500 µs hit / ~5-30 ms cold) ← P3 wins
|
|
17
|
+
* L3 — R2 (global; ~30-100 ms regional) ← THIS MODULE
|
|
18
|
+
* L4 — registry.npmjs.org origin (~100-300 ms cross-region)
|
|
19
|
+
*
|
|
20
|
+
* Two buckets, two key shapes:
|
|
21
|
+
* tarball: `${R2_CACHE_PREFIX}/t/<name>/<version>.tgz`
|
|
22
|
+
* packument: `${R2_CACHE_PREFIX}/p/<name>.json`
|
|
23
|
+
*
|
|
24
|
+
* Why two buckets:
|
|
25
|
+
* Tarballs are immutable (npm name@version is content-fixed since 2018).
|
|
26
|
+
* Packuments must expire (5-min TTL). Different eviction policies →
|
|
27
|
+
* different buckets, so storage / quota / monitoring stay clean.
|
|
28
|
+
*
|
|
29
|
+
* Cache invalidation:
|
|
30
|
+
* 1. Time-based, packuments only — TTL encoded in customMetadata.expiresAt
|
|
31
|
+
* 2. Schema bump — bump R2_CACHE_PREFIX to invalidate everything atomically.
|
|
32
|
+
* Stale data is left in place; bucket lifecycle policy can sweep it.
|
|
33
|
+
* 3. Manual delete — deleteTarball / deletePackument; useful in incident
|
|
34
|
+
* response (a poisoned cache key needs purging).
|
|
35
|
+
*
|
|
36
|
+
* Graceful degrade:
|
|
37
|
+
* If env.NPM_TARBALL_CACHE / NPM_PACKUMENT_CACHE bindings are missing
|
|
38
|
+
* (deploy without buckets created, or wrangler dev without remote
|
|
39
|
+
* buckets), all R2 calls return null on read and no-op on write. The
|
|
40
|
+
* installer falls through to the existing network-fetch path with
|
|
41
|
+
* identical behaviour to today's main.
|
|
42
|
+
*
|
|
43
|
+
* NOT in W4 scope (deferred):
|
|
44
|
+
* - Streamed R2 reads via ReadableStream<Uint8Array> RPC return type
|
|
45
|
+
* (W7 — Streams over RPC). Today: bytes returned via structured-clone
|
|
46
|
+
* subject to the 32 MiB cap. Packages > 30 MiB skip the R2 path and
|
|
47
|
+
* stream directly from npm.
|
|
48
|
+
* - npm publish webhook → cache invalidation (CT2 future).
|
|
49
|
+
* - L2 Cache API (D3.5) — separate work.
|
|
50
|
+
*
|
|
51
|
+
* References:
|
|
52
|
+
* - audit/sections/CF-INTERNAL-OPTIMIZATION-RESEARCH.md §D
|
|
53
|
+
* - audit/_drafts/D-npm-install.md (per-section provenance)
|
|
54
|
+
* - audit/sections/W4-plan.md
|
|
55
|
+
*/
|
|
56
|
+
import type { CacheTier, CacheKind } from '../_shared/cache-stats.js';
|
|
57
|
+
/**
|
|
58
|
+
* Per-call cache-stat event (cache-observability wave). R2CacheClient
|
|
59
|
+
* accumulates these in instance state so the SupervisorRPC caller can
|
|
60
|
+
* drain + forward to the DO isolate (where /api/_diag/cache reads from).
|
|
61
|
+
* The local-singleton-write approach would be invisible to the DO's
|
|
62
|
+
* diag endpoint because WorkerEntrypoint instances live in a separate
|
|
63
|
+
* isolate. See src/session/supervisor-rpc.ts for the flush.
|
|
64
|
+
*/
|
|
65
|
+
export type R2CacheStatEvent = {
|
|
66
|
+
kind: 'hit';
|
|
67
|
+
tier: CacheTier;
|
|
68
|
+
cacheKind: CacheKind;
|
|
69
|
+
bytes: number;
|
|
70
|
+
} | {
|
|
71
|
+
kind: 'miss';
|
|
72
|
+
tier: CacheTier;
|
|
73
|
+
cacheKind: CacheKind;
|
|
74
|
+
};
|
|
75
|
+
/** Schema version baked into every cache key. Bump to invalidate
|
|
76
|
+
* everything atomically (e.g. if the storage shape changes or a bug
|
|
77
|
+
* poisoned a class of keys). */
|
|
78
|
+
export declare const R2_CACHE_PREFIX = "v1";
|
|
79
|
+
/** Packument TTL — 60 min (cache-observability wave; was 5 min pre-wave).
|
|
80
|
+
*
|
|
81
|
+
* Rationale for the bump (~12× longer than pre-wave):
|
|
82
|
+
*
|
|
83
|
+
* - npm registry packuments change ONLY when a new version of the
|
|
84
|
+
* package is published. For >99% of packages this is sub-weekly.
|
|
85
|
+
* - The 5-min TTL fired roughly once per minute on a long install
|
|
86
|
+
* session (resolver re-fetches as dep BFS re-encounters cached
|
|
87
|
+
* names with new range constraints). 12× fewer re-fetches at
|
|
88
|
+
* 60 min TTL means ~12× lower registry roundtrip count for an
|
|
89
|
+
* equivalent workload.
|
|
90
|
+
* - npm registry origin is shared across all Nimbus users; lower
|
|
91
|
+
* aggregate load is good citizenship and lowers our risk of being
|
|
92
|
+
* rate-limited at the L4 boundary.
|
|
93
|
+
*
|
|
94
|
+
* Trade-off (the cost of the bump):
|
|
95
|
+
*
|
|
96
|
+
* - A package version published less than 60 min ago may not be
|
|
97
|
+
* resolvable from a Nimbus session whose colo's L2 cache has a
|
|
98
|
+
* pre-publish entry. Worst case: a user `npm i my-fresh@1.0.1`
|
|
99
|
+
* seconds after publishing my-fresh@1.0.1 sees the cached 1.0.0
|
|
100
|
+
* entry for up to 60 min.
|
|
101
|
+
* - Workaround for users hitting freshness issues: open a new
|
|
102
|
+
* session in a different colo (cold L2), OR wait for the TTL,
|
|
103
|
+
* OR (future) add `NIMBUS_CACHE_TTL_MS` env override.
|
|
104
|
+
*
|
|
105
|
+
* Reversibility: redeploy with this constant restored to 5*60_000
|
|
106
|
+
* reverts the behavior instantly (next request reads the new TTL).
|
|
107
|
+
* No data migration; existing R2 packument entries' customMetadata
|
|
108
|
+
* .expiresAt stamps remain valid against either TTL. */
|
|
109
|
+
export declare const PACKUMENT_TTL_MS: number;
|
|
110
|
+
/** Cap on tarball bytes returned via this RPC. Workerd structured-clone
|
|
111
|
+
* cap is 32 MiB; we keep a comfortable margin to leave room for RPC
|
|
112
|
+
* framing + the call's own arg bytes. Tarballs above this size skip
|
|
113
|
+
* the R2 path and go straight to the network — they're the long tail
|
|
114
|
+
* for which W7 (streams over RPC) will close the gap. */
|
|
115
|
+
export declare const MAX_R2_TARBALL_BYTES: number;
|
|
116
|
+
export interface CachedPackument {
|
|
117
|
+
/** Raw packument JSON text. JSON.parse at call-site (caller already
|
|
118
|
+
* pays the parse cost on the network path; mirroring keeps the
|
|
119
|
+
* call-site interchangeable). */
|
|
120
|
+
json: string;
|
|
121
|
+
/** Approximate age in ms based on R2's `uploaded` timestamp. May be
|
|
122
|
+
* slightly skewed if customMetadata.expiresAt is set. */
|
|
123
|
+
ageMs: number;
|
|
124
|
+
/** Whether this entry has passed its TTL. Caller MUST honour this:
|
|
125
|
+
* expired entries are returned only as a stale-while-error fallback,
|
|
126
|
+
* never as a hot-path hit. */
|
|
127
|
+
expired: boolean;
|
|
128
|
+
}
|
|
129
|
+
/** Optional R2 binding shape (we treat null as "not provisioned"). */
|
|
130
|
+
type R2BucketLike = {
|
|
131
|
+
get(key: string): Promise<{
|
|
132
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
133
|
+
text(): Promise<string>;
|
|
134
|
+
uploaded?: Date;
|
|
135
|
+
customMetadata?: Record<string, string>;
|
|
136
|
+
} | null>;
|
|
137
|
+
put(key: string, body: Uint8Array | ArrayBuffer | string, opts?: {
|
|
138
|
+
httpMetadata?: {
|
|
139
|
+
contentType?: string;
|
|
140
|
+
};
|
|
141
|
+
customMetadata?: Record<string, string>;
|
|
142
|
+
}): Promise<unknown>;
|
|
143
|
+
delete(key: string): Promise<unknown>;
|
|
144
|
+
} | null;
|
|
145
|
+
/**
|
|
146
|
+
* Synthetic L2 cache-key host. RFC-6761 reserved TLD.
|
|
147
|
+
*
|
|
148
|
+
* CLN-1 (2026-05-11): exported so `session/routes.ts` cache-purge helpers
|
|
149
|
+
* can use the same constant instead of hardcoding the literal. Bumping
|
|
150
|
+
* the schema (e.g. `nimbus-cache-v2.invalid`) now only requires editing
|
|
151
|
+
* one line.
|
|
152
|
+
*/
|
|
153
|
+
export declare const L2_KEY_HOST = "https://nimbus-cache.invalid";
|
|
154
|
+
/**
|
|
155
|
+
* Compose the R2 object key for a tarball.
|
|
156
|
+
*
|
|
157
|
+
* Scheme A from W4-plan §3: `t/<name>/<version>.tgz`. Scope-prefixed
|
|
158
|
+
* names (`@scope/pkg`) keep their `@` and `/` because R2 keys allow any
|
|
159
|
+
* UTF-8; we don't URL-encode them. Examples:
|
|
160
|
+
*
|
|
161
|
+
* react@19.0.0 → `v1/t/react/19.0.0.tgz`
|
|
162
|
+
* @vitejs/plugin-react@4.3.4 → `v1/t/@vitejs/plugin-react/4.3.4.tgz`
|
|
163
|
+
*
|
|
164
|
+
* The integrity digest is NOT in the key (Scheme B was rejected per
|
|
165
|
+
* W4-plan §3; reads validate integrity post-fetch). Scheme A enables
|
|
166
|
+
* pipelining: as soon as the resolver yields {name, version}, the
|
|
167
|
+
* install facet can speculatively kick off getTarball() in parallel
|
|
168
|
+
* with the network fetch.
|
|
169
|
+
*/
|
|
170
|
+
export declare function tarballKey(name: string, version: string): string;
|
|
171
|
+
/** Compose the R2 object key for a packument. */
|
|
172
|
+
export declare function packumentKey(name: string): string;
|
|
173
|
+
/**
|
|
174
|
+
* Per-instance counters surfaced for tests / probes. Read via
|
|
175
|
+
* `R2CacheClient.stats()`. Track at the FUNCTION boundary level so a
|
|
176
|
+
* call that hits L2 bumps `l2HitsPackument` but NOT `l3GetsPackument`,
|
|
177
|
+
* and vice versa. The probe at audit/probes/cache-and-scrub/* asserts
|
|
178
|
+
* "after the first call, no more l3GetsPackument" — structurally
|
|
179
|
+
* proving the L2 layer is functional even when local-dev wall-clock
|
|
180
|
+
* latency is too noisy to demonstrate 5×.
|
|
181
|
+
*
|
|
182
|
+
* Diag counters (src/observability/diag-counters.ts) bump for the
|
|
183
|
+
* SupervisorRPC layer (RPC-perspective hit/miss). These per-instance
|
|
184
|
+
* counters bump for the R2CacheClient call surface itself (L2 vs L3
|
|
185
|
+
* vs miss), independent of who's calling.
|
|
186
|
+
*/
|
|
187
|
+
export interface R2CacheClientStats {
|
|
188
|
+
l2HitsPackument: number;
|
|
189
|
+
l3GetsPackument: number;
|
|
190
|
+
l2HitsTarball: number;
|
|
191
|
+
l3GetsTarball: number;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* R2-backed npm cache client. Wraps two R2 bindings (tarballs + packuments)
|
|
195
|
+
* with the get/put/delete shape the SupervisorRPC methods need, fronted
|
|
196
|
+
* by an L2 colo cache via `caches.default`.
|
|
197
|
+
*
|
|
198
|
+
* Constructed once per request-scope (typically inside SupervisorRPC
|
|
199
|
+
* methods). Cheap to instantiate — no async init.
|
|
200
|
+
*
|
|
201
|
+
* ALL methods are null-bucket safe: pass `null` for either binding and
|
|
202
|
+
* the corresponding read returns null / write is a no-op. The L2 layer
|
|
203
|
+
* is also null-safe: missing `caches.default` falls through to the
|
|
204
|
+
* graceful-degrade path that mirrors today's behaviour.
|
|
205
|
+
*/
|
|
206
|
+
export declare class R2CacheClient {
|
|
207
|
+
private readonly tarballBucket;
|
|
208
|
+
private readonly packumentBucket;
|
|
209
|
+
private _l2HitsPackument;
|
|
210
|
+
private _l3GetsPackument;
|
|
211
|
+
private _l2HitsTarball;
|
|
212
|
+
private _l3GetsTarball;
|
|
213
|
+
/**
|
|
214
|
+
* Cache-observability wave: per-call events accumulated for the
|
|
215
|
+
* caller (SupervisorRPC) to forward to the DO isolate's cache-stats
|
|
216
|
+
* singleton. Read via _cacheEvents and replaced with a fresh [] on
|
|
217
|
+
* drain. Public field so the caller in supervisor-rpc.ts can drain
|
|
218
|
+
* without an explicit method call (saves an indirection).
|
|
219
|
+
*/
|
|
220
|
+
_cacheEvents: R2CacheStatEvent[];
|
|
221
|
+
constructor(tarballBucket: R2BucketLike, packumentBucket: R2BucketLike);
|
|
222
|
+
private _recordHit;
|
|
223
|
+
private _recordMiss;
|
|
224
|
+
/** Per-instance counter snapshot. Used by the L2 cache probes. */
|
|
225
|
+
stats(): R2CacheClientStats;
|
|
226
|
+
/**
|
|
227
|
+
* Get a cached tarball, or null if absent / oversize-bypassed.
|
|
228
|
+
*
|
|
229
|
+
* Returns the gzipped tar bytes as Uint8Array. Caller is responsible
|
|
230
|
+
* for integrity verification before consuming — we do NOT verify here
|
|
231
|
+
* because the caller (batch-facet) has the integrity hash from the
|
|
232
|
+
* resolver's packument.
|
|
233
|
+
*
|
|
234
|
+
* L2 (cache-and-scrub W-B): we wrap the R2 read in `caches.default`
|
|
235
|
+
* with `Cache-Control: public, max-age=31536000, immutable` because
|
|
236
|
+
* `name@version` is content-addressed (immutable npm contract since
|
|
237
|
+
* 2018). On miss, fall through to R2 and write through to L2.
|
|
238
|
+
*/
|
|
239
|
+
getTarball(name: string, version: string): Promise<Uint8Array | null>;
|
|
240
|
+
/**
|
|
241
|
+
* Write a tarball to R2. Bytes are stored as-is (gzipped tar). No-op
|
|
242
|
+
* if the bucket binding is missing.
|
|
243
|
+
*
|
|
244
|
+
* Caller must ensure bytes have already passed integrity verification.
|
|
245
|
+
* We accept ArrayBuffer or Uint8Array. Returns true on success, false
|
|
246
|
+
* on failure (the cache is best-effort; failure must not break the
|
|
247
|
+
* install).
|
|
248
|
+
*/
|
|
249
|
+
putTarball(name: string, version: string, bytes: Uint8Array | ArrayBuffer): Promise<boolean>;
|
|
250
|
+
/** Delete a single tarball cache entry. Idempotent. */
|
|
251
|
+
deleteTarball(name: string, version: string): Promise<boolean>;
|
|
252
|
+
/**
|
|
253
|
+
* Get a cached packument with its TTL state.
|
|
254
|
+
*
|
|
255
|
+
* Returns CachedPackument with `expired` set true when the entry's
|
|
256
|
+
* customMetadata.expiresAt is in the past. Callers MUST honour
|
|
257
|
+
* `expired` — only treat as a hot hit when false. Stale-while-error
|
|
258
|
+
* is the only valid use of expired data.
|
|
259
|
+
*
|
|
260
|
+
* L2 (cache-and-scrub W-A): we wrap the R2 read in `caches.default`.
|
|
261
|
+
* On hit, we read both the packument JSON and the absolute
|
|
262
|
+
* `expiresAt` timestamp from the L2 entry's headers — the absolute
|
|
263
|
+
* timestamp matters because L2 may serve a cached response near
|
|
264
|
+
* the end of its 5-min TTL, and the caller's `expired` check still
|
|
265
|
+
* needs to fire correctly. On miss, we fall through to R2 and
|
|
266
|
+
* write back to L2 with a 5-min `Cache-Control: max-age=300`
|
|
267
|
+
* (matching the existing R2 customMetadata.expiresAt semantic).
|
|
268
|
+
*/
|
|
269
|
+
getPackument(name: string): Promise<CachedPackument | null>;
|
|
270
|
+
/**
|
|
271
|
+
* Write a packument JSON to R2 with a TTL stamp in customMetadata.
|
|
272
|
+
* No-op if the bucket binding is missing.
|
|
273
|
+
*
|
|
274
|
+
* Returns true on success, false on failure (same best-effort posture
|
|
275
|
+
* as putTarball).
|
|
276
|
+
*/
|
|
277
|
+
putPackument(name: string, json: string): Promise<boolean>;
|
|
278
|
+
/** Delete a single packument cache entry. Idempotent. */
|
|
279
|
+
deletePackument(name: string): Promise<boolean>;
|
|
280
|
+
/** Lightweight feature-detection for callers that want to log path. */
|
|
281
|
+
hasTarballBucket(): boolean;
|
|
282
|
+
/** Lightweight feature-detection for callers that want to log path. */
|
|
283
|
+
hasPackumentBucket(): boolean;
|
|
284
|
+
}
|
|
285
|
+
export {};
|
|
286
|
+
//# sourceMappingURL=r2-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"r2-cache.d.ts","sourceRoot":"","sources":["../../src/npm/r2-cache.ts"],"names":[],"mappings":"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"}
|