@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,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* binding-kv.ts — KV namespace emulator for nimbus-wrangler.
|
|
3
|
+
*
|
|
4
|
+
* Implements the Workers KV runtime API
|
|
5
|
+
* (https://developers.cloudflare.com/kv/api/) backed by SqliteVFS file
|
|
6
|
+
* blobs. The emulator is constructed inline by NimbusWrangler.buildInnerEnv()
|
|
7
|
+
* and attached as `env.<binding>` on the inner Worker.
|
|
8
|
+
*
|
|
9
|
+
* Storage layout:
|
|
10
|
+
* <root>/.nimbus/kv/<binding>/<key> — body (raw bytes)
|
|
11
|
+
* <root>/.nimbus/kv/<binding>/<key>.meta — sidecar JSON:
|
|
12
|
+
* { exp?: number, // unix seconds, absolute expiration
|
|
13
|
+
* meta?: any, // user-supplied metadata
|
|
14
|
+
* v: 1 } // schema version
|
|
15
|
+
*
|
|
16
|
+
* Keys are URL-encoded so that '/' / '\\' / '\0' / '#' / etc. don't break
|
|
17
|
+
* the VFS path. We then add ".meta" to derive the sidecar path.
|
|
18
|
+
*
|
|
19
|
+
* Concurrency: KV semantics permit eventual consistency. We do not use
|
|
20
|
+
* VFS writeBatch for the body+meta pair (a torn write surfaces as a meta
|
|
21
|
+
* read mismatch which we treat as no-metadata; the body still resolves).
|
|
22
|
+
*
|
|
23
|
+
* Test seam: `_setKvNow(() => ts)` replaces the wall clock (Date.now/1000)
|
|
24
|
+
* for TTL probes. Production reads Date.now() / 1000.
|
|
25
|
+
*/
|
|
26
|
+
// ── Test seam: clock ────────────────────────────────────────────────────
|
|
27
|
+
let _kvNow = () => Math.floor(Date.now() / 1000);
|
|
28
|
+
export function _setKvNow(fn) { _kvNow = fn; }
|
|
29
|
+
// ── Path helpers ────────────────────────────────────────────────────────
|
|
30
|
+
function encKey(key) {
|
|
31
|
+
// Match KV's accepted key alphabet: any UTF-8 string up to 512 bytes. We
|
|
32
|
+
// URL-encode to make every key VFS-path-safe.
|
|
33
|
+
return encodeURIComponent(key);
|
|
34
|
+
}
|
|
35
|
+
function decKey(encoded) {
|
|
36
|
+
try {
|
|
37
|
+
return decodeURIComponent(encoded);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return encoded;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// ── KvEmulator ─────────────────────────────────────────────────────────
|
|
44
|
+
export class KvEmulator {
|
|
45
|
+
vfs;
|
|
46
|
+
dir;
|
|
47
|
+
metaCache = new Map();
|
|
48
|
+
onLog;
|
|
49
|
+
constructor(opts) {
|
|
50
|
+
this.vfs = opts.vfs;
|
|
51
|
+
const root = String(opts.root).replace(/^\/+/, '').replace(/\/+$/, '');
|
|
52
|
+
this.dir = (root ? root + '/' : '') + '.nimbus/kv/' + opts.binding;
|
|
53
|
+
this.onLog = opts.onLog || (() => { });
|
|
54
|
+
}
|
|
55
|
+
// ── public API ────────────────────────────────────────────────────────
|
|
56
|
+
async get(key, options) {
|
|
57
|
+
const opts = typeof options === 'string' ? { type: options } : (options || {});
|
|
58
|
+
const r = await this._readResolved(key);
|
|
59
|
+
if (r == null)
|
|
60
|
+
return null;
|
|
61
|
+
return this._project(r.body, opts.type);
|
|
62
|
+
}
|
|
63
|
+
async getWithMetadata(key, options) {
|
|
64
|
+
const opts = typeof options === 'string' ? { type: options } : (options || {});
|
|
65
|
+
const r = await this._readResolved(key);
|
|
66
|
+
if (r == null)
|
|
67
|
+
return { value: null, metadata: null, cacheStatus: null };
|
|
68
|
+
const value = this._project(r.body, opts.type);
|
|
69
|
+
return { value, metadata: (r.meta?.meta ?? null), cacheStatus: null };
|
|
70
|
+
}
|
|
71
|
+
async put(key, value, options) {
|
|
72
|
+
const enc = encKey(key);
|
|
73
|
+
const bodyBlob = await this._coerceBody(value);
|
|
74
|
+
this._ensureDir();
|
|
75
|
+
this.vfs.writeFile(this.dir + '/' + enc, bodyBlob);
|
|
76
|
+
// Build sidecar
|
|
77
|
+
const meta = { v: 1 };
|
|
78
|
+
if (options?.expiration != null)
|
|
79
|
+
meta.exp = options.expiration;
|
|
80
|
+
else if (options?.expirationTtl != null)
|
|
81
|
+
meta.exp = _kvNow() + options.expirationTtl;
|
|
82
|
+
if (options?.metadata !== undefined)
|
|
83
|
+
meta.meta = options.metadata;
|
|
84
|
+
const metaPath = this.dir + '/' + enc + '.meta';
|
|
85
|
+
if (meta.exp != null || meta.meta !== undefined) {
|
|
86
|
+
this.vfs.writeFile(metaPath, JSON.stringify(meta));
|
|
87
|
+
this.metaCache.set(enc, meta);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Overwrite-without-metadata clears the sidecar (per probe contract:
|
|
91
|
+
// 'overwrite WITHOUT metadata clears metadata').
|
|
92
|
+
try {
|
|
93
|
+
if (this.vfs.exists(metaPath))
|
|
94
|
+
this.vfs.unlink(metaPath);
|
|
95
|
+
}
|
|
96
|
+
catch { }
|
|
97
|
+
this.metaCache.delete(enc);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async delete(key) {
|
|
101
|
+
const enc = encKey(key);
|
|
102
|
+
const bp = this.dir + '/' + enc;
|
|
103
|
+
const mp = bp + '.meta';
|
|
104
|
+
try {
|
|
105
|
+
if (this.vfs.exists(bp))
|
|
106
|
+
this.vfs.unlink(bp);
|
|
107
|
+
}
|
|
108
|
+
catch { }
|
|
109
|
+
try {
|
|
110
|
+
if (this.vfs.exists(mp))
|
|
111
|
+
this.vfs.unlink(mp);
|
|
112
|
+
}
|
|
113
|
+
catch { }
|
|
114
|
+
this.metaCache.delete(enc);
|
|
115
|
+
}
|
|
116
|
+
async list(options) {
|
|
117
|
+
const prefix = options?.prefix || '';
|
|
118
|
+
const limit = options?.limit ?? 1000;
|
|
119
|
+
const cursorOff = options?.cursor ? this._decodeCursor(options.cursor) : 0;
|
|
120
|
+
let entries = [];
|
|
121
|
+
try {
|
|
122
|
+
const dirents = this.vfs.readdir(this.dir);
|
|
123
|
+
for (const e of dirents) {
|
|
124
|
+
if (e.type === 'directory')
|
|
125
|
+
continue;
|
|
126
|
+
if (e.name.endsWith('.meta'))
|
|
127
|
+
continue;
|
|
128
|
+
const decoded = decKey(e.name);
|
|
129
|
+
if (!decoded.startsWith(prefix))
|
|
130
|
+
continue;
|
|
131
|
+
const meta = this._readMeta(e.name);
|
|
132
|
+
// Skip expired
|
|
133
|
+
if (meta?.exp != null && meta.exp <= _kvNow()) {
|
|
134
|
+
this._lazyDelete(e.name);
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
const out = { name: decoded };
|
|
138
|
+
if (meta?.exp != null)
|
|
139
|
+
out.expiration = meta.exp;
|
|
140
|
+
if (meta?.meta !== undefined)
|
|
141
|
+
out.metadata = meta.meta;
|
|
142
|
+
entries.push(out);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Empty dir: no keys
|
|
147
|
+
entries = [];
|
|
148
|
+
}
|
|
149
|
+
entries.sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
|
|
150
|
+
const slice = entries.slice(cursorOff, cursorOff + limit);
|
|
151
|
+
const next = cursorOff + slice.length;
|
|
152
|
+
const list_complete = next >= entries.length;
|
|
153
|
+
const out = {
|
|
154
|
+
keys: slice,
|
|
155
|
+
list_complete,
|
|
156
|
+
cacheStatus: null,
|
|
157
|
+
};
|
|
158
|
+
if (!list_complete)
|
|
159
|
+
out.cursor = this._encodeCursor(next);
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
// ── internals ─────────────────────────────────────────────────────────
|
|
163
|
+
_ensureDir() {
|
|
164
|
+
if (!this.vfs.exists(this.dir)) {
|
|
165
|
+
this.vfs.mkdir(this.dir, { recursive: true });
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async _coerceBody(value) {
|
|
169
|
+
if (value == null)
|
|
170
|
+
return new Uint8Array(0);
|
|
171
|
+
if (typeof value === 'string')
|
|
172
|
+
return new TextEncoder().encode(value);
|
|
173
|
+
if (value instanceof Uint8Array)
|
|
174
|
+
return value;
|
|
175
|
+
if (value instanceof ArrayBuffer)
|
|
176
|
+
return new Uint8Array(value);
|
|
177
|
+
if (ArrayBuffer.isView(value))
|
|
178
|
+
return new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
|
|
179
|
+
if (typeof value === 'object' && typeof value.getReader === 'function') {
|
|
180
|
+
// ReadableStream — drain
|
|
181
|
+
const chunks = [];
|
|
182
|
+
let total = 0;
|
|
183
|
+
const reader = value.getReader();
|
|
184
|
+
while (true) {
|
|
185
|
+
const { value: chunk, done } = await reader.read();
|
|
186
|
+
if (done)
|
|
187
|
+
break;
|
|
188
|
+
const u = chunk instanceof Uint8Array ? chunk : new Uint8Array(chunk);
|
|
189
|
+
chunks.push(u);
|
|
190
|
+
total += u.length;
|
|
191
|
+
}
|
|
192
|
+
const out = new Uint8Array(total);
|
|
193
|
+
let off = 0;
|
|
194
|
+
for (const c of chunks) {
|
|
195
|
+
out.set(c, off);
|
|
196
|
+
off += c.length;
|
|
197
|
+
}
|
|
198
|
+
return out;
|
|
199
|
+
}
|
|
200
|
+
// Fallback — try toString
|
|
201
|
+
return new TextEncoder().encode(String(value));
|
|
202
|
+
}
|
|
203
|
+
_project(body, type) {
|
|
204
|
+
const t = type || 'text';
|
|
205
|
+
if (t === 'text')
|
|
206
|
+
return new TextDecoder().decode(body);
|
|
207
|
+
if (t === 'json') {
|
|
208
|
+
const txt = new TextDecoder().decode(body);
|
|
209
|
+
return JSON.parse(txt);
|
|
210
|
+
}
|
|
211
|
+
if (t === 'arrayBuffer') {
|
|
212
|
+
// Return a fresh ArrayBuffer (not a view into a shared buffer).
|
|
213
|
+
const ab = new ArrayBuffer(body.byteLength);
|
|
214
|
+
new Uint8Array(ab).set(body);
|
|
215
|
+
return ab;
|
|
216
|
+
}
|
|
217
|
+
if (t === 'stream') {
|
|
218
|
+
const u = body;
|
|
219
|
+
return new ReadableStream({
|
|
220
|
+
type: 'bytes',
|
|
221
|
+
start(controller) {
|
|
222
|
+
controller.enqueue(u);
|
|
223
|
+
controller.close();
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
return new TextDecoder().decode(body);
|
|
228
|
+
}
|
|
229
|
+
async _readResolved(key) {
|
|
230
|
+
const enc = encKey(key);
|
|
231
|
+
const path = this.dir + '/' + enc;
|
|
232
|
+
if (!this.vfs.exists(path))
|
|
233
|
+
return null;
|
|
234
|
+
const meta = this._readMeta(enc);
|
|
235
|
+
if (meta?.exp != null && meta.exp <= _kvNow()) {
|
|
236
|
+
this._lazyDelete(enc);
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
const body = this.vfs.readFileBytes ? this.vfs.readFileBytes(path) : this.vfs.readFile(path);
|
|
240
|
+
return { body, meta };
|
|
241
|
+
}
|
|
242
|
+
_readMeta(encName) {
|
|
243
|
+
if (this.metaCache.has(encName))
|
|
244
|
+
return this.metaCache.get(encName);
|
|
245
|
+
const mp = this.dir + '/' + encName + '.meta';
|
|
246
|
+
if (!this.vfs.exists(mp))
|
|
247
|
+
return null;
|
|
248
|
+
try {
|
|
249
|
+
const raw = this.vfs.readFileString(mp);
|
|
250
|
+
const m = JSON.parse(raw);
|
|
251
|
+
this.metaCache.set(encName, m);
|
|
252
|
+
return m;
|
|
253
|
+
}
|
|
254
|
+
catch (e) {
|
|
255
|
+
// Torn meta — treat as absent
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
_lazyDelete(encName) {
|
|
260
|
+
const bp = this.dir + '/' + encName;
|
|
261
|
+
const mp = bp + '.meta';
|
|
262
|
+
try {
|
|
263
|
+
if (this.vfs.exists(bp))
|
|
264
|
+
this.vfs.unlink(bp);
|
|
265
|
+
}
|
|
266
|
+
catch { }
|
|
267
|
+
try {
|
|
268
|
+
if (this.vfs.exists(mp))
|
|
269
|
+
this.vfs.unlink(mp);
|
|
270
|
+
}
|
|
271
|
+
catch { }
|
|
272
|
+
this.metaCache.delete(encName);
|
|
273
|
+
}
|
|
274
|
+
_encodeCursor(off) {
|
|
275
|
+
// base64url-encode the offset record. We use btoa (Web Standard,
|
|
276
|
+
// available in workerd and Bun) and patch base64 → base64url.
|
|
277
|
+
const b64 = btoa(JSON.stringify({ off }));
|
|
278
|
+
return b64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
|
|
279
|
+
}
|
|
280
|
+
_decodeCursor(c) {
|
|
281
|
+
try {
|
|
282
|
+
const b64 = String(c).replace(/-/g, '+').replace(/_/g, '/');
|
|
283
|
+
const j = JSON.parse(atob(b64));
|
|
284
|
+
return Number(j.off) || 0;
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
return 0;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* binding-r2.ts — R2 bucket emulator for nimbus-wrangler.
|
|
3
|
+
*
|
|
4
|
+
* Implements the Workers R2 runtime API
|
|
5
|
+
* (https://developers.cloudflare.com/r2/api/workers/workers-api-reference/)
|
|
6
|
+
* backed by SqliteVFS file blobs. Mirrors KV's storage layout:
|
|
7
|
+
*
|
|
8
|
+
* <root>/.nimbus/r2/<binding>/<key> — body (raw bytes)
|
|
9
|
+
* <root>/.nimbus/r2/<binding>/<key>.meta — sidecar JSON:
|
|
10
|
+
* { etag: string, // sha256 hex of body
|
|
11
|
+
* size: number,
|
|
12
|
+
* uploaded: number, // unix ms
|
|
13
|
+
* httpMetadata?: R2HTTPMetadata,
|
|
14
|
+
* customMetadata?: Record<string,string>,
|
|
15
|
+
* v: 1 }
|
|
16
|
+
*
|
|
17
|
+
* Out of scope for W10 (W10.5 candidates):
|
|
18
|
+
* - Multipart uploads (createMultipartUpload / resumeMultipartUpload
|
|
19
|
+
* throw "not supported" errors with a clear message)
|
|
20
|
+
* - Server-side checksums (md5/sha1/sha256/sha512 verifies passed via
|
|
21
|
+
* `options` are honored only loosely — we compute sha256 ourselves
|
|
22
|
+
* and compare; mismatched verify hashes cause put() to throw)
|
|
23
|
+
*
|
|
24
|
+
* Range reads return bodies sliced from the in-memory Uint8Array.
|
|
25
|
+
*
|
|
26
|
+
* The `R2ObjectBody` returned by get() carries a fresh ReadableStream on
|
|
27
|
+
* every call (the body is one-shot per real-R2 contract), plus convenience
|
|
28
|
+
* helpers text() / arrayBuffer() / json() / blob().
|
|
29
|
+
*/
|
|
30
|
+
import type { SqliteVFS } from '../vfs/sqlite-vfs.js';
|
|
31
|
+
export interface R2HTTPMetadata {
|
|
32
|
+
contentType?: string;
|
|
33
|
+
contentLanguage?: string;
|
|
34
|
+
contentDisposition?: string;
|
|
35
|
+
contentEncoding?: string;
|
|
36
|
+
cacheControl?: string;
|
|
37
|
+
cacheExpiry?: Date;
|
|
38
|
+
}
|
|
39
|
+
export interface R2Conditional {
|
|
40
|
+
etagMatches?: string;
|
|
41
|
+
etagDoesNotMatch?: string;
|
|
42
|
+
uploadedBefore?: Date;
|
|
43
|
+
uploadedAfter?: Date;
|
|
44
|
+
}
|
|
45
|
+
export interface R2Range {
|
|
46
|
+
offset?: number;
|
|
47
|
+
length?: number;
|
|
48
|
+
suffix?: number;
|
|
49
|
+
}
|
|
50
|
+
export interface R2PutOptions {
|
|
51
|
+
httpMetadata?: R2HTTPMetadata;
|
|
52
|
+
customMetadata?: Record<string, string>;
|
|
53
|
+
md5?: string | ArrayBuffer;
|
|
54
|
+
sha1?: string | ArrayBuffer;
|
|
55
|
+
sha256?: string | ArrayBuffer;
|
|
56
|
+
sha512?: string | ArrayBuffer;
|
|
57
|
+
onlyIf?: R2Conditional;
|
|
58
|
+
}
|
|
59
|
+
export interface R2GetOptions {
|
|
60
|
+
onlyIf?: R2Conditional;
|
|
61
|
+
range?: R2Range;
|
|
62
|
+
}
|
|
63
|
+
export interface R2ListOptions {
|
|
64
|
+
prefix?: string;
|
|
65
|
+
delimiter?: string;
|
|
66
|
+
cursor?: string;
|
|
67
|
+
limit?: number;
|
|
68
|
+
include?: ('httpMetadata' | 'customMetadata')[];
|
|
69
|
+
}
|
|
70
|
+
export interface R2EmulatorOptions {
|
|
71
|
+
vfs: SqliteVFS | any;
|
|
72
|
+
root: string;
|
|
73
|
+
binding: string;
|
|
74
|
+
onLog?: (msg: string) => void;
|
|
75
|
+
}
|
|
76
|
+
interface R2Sidecar {
|
|
77
|
+
etag: string;
|
|
78
|
+
size: number;
|
|
79
|
+
uploaded: number;
|
|
80
|
+
httpMetadata?: R2HTTPMetadata;
|
|
81
|
+
customMetadata?: Record<string, string>;
|
|
82
|
+
v: 1;
|
|
83
|
+
}
|
|
84
|
+
export declare class R2Object {
|
|
85
|
+
key: string;
|
|
86
|
+
version: string;
|
|
87
|
+
size: number;
|
|
88
|
+
etag: string;
|
|
89
|
+
httpEtag: string;
|
|
90
|
+
uploaded: Date;
|
|
91
|
+
httpMetadata: R2HTTPMetadata;
|
|
92
|
+
customMetadata: Record<string, string>;
|
|
93
|
+
constructor(key: string, side: R2Sidecar);
|
|
94
|
+
}
|
|
95
|
+
export declare class R2ObjectBody extends R2Object {
|
|
96
|
+
/** @internal */
|
|
97
|
+
private _body;
|
|
98
|
+
constructor(key: string, side: R2Sidecar, body: Uint8Array);
|
|
99
|
+
get body(): ReadableStream<Uint8Array>;
|
|
100
|
+
get bodyUsed(): boolean;
|
|
101
|
+
text(): Promise<string>;
|
|
102
|
+
arrayBuffer(): Promise<ArrayBuffer>;
|
|
103
|
+
json<T = any>(): Promise<T>;
|
|
104
|
+
blob(): Promise<Blob>;
|
|
105
|
+
}
|
|
106
|
+
export declare class R2Emulator {
|
|
107
|
+
private vfs;
|
|
108
|
+
private dir;
|
|
109
|
+
private onLog;
|
|
110
|
+
constructor(opts: R2EmulatorOptions);
|
|
111
|
+
head(key: string): Promise<R2Object | null>;
|
|
112
|
+
get(key: string, options?: R2GetOptions): Promise<R2ObjectBody | null>;
|
|
113
|
+
put(key: string, value: ReadableStream | ArrayBuffer | ArrayBufferView | Uint8Array | string | null, options?: R2PutOptions): Promise<R2Object | null>;
|
|
114
|
+
delete(keys: string | string[]): Promise<void>;
|
|
115
|
+
list(options?: R2ListOptions): Promise<{
|
|
116
|
+
objects: R2Object[];
|
|
117
|
+
truncated: boolean;
|
|
118
|
+
cursor?: string;
|
|
119
|
+
delimitedPrefixes: string[];
|
|
120
|
+
}>;
|
|
121
|
+
createMultipartUpload(_key: string, _options?: any): Promise<never>;
|
|
122
|
+
resumeMultipartUpload(_key: string, _uploadId: string): Promise<never>;
|
|
123
|
+
private _ensureDir;
|
|
124
|
+
private _coerceBody;
|
|
125
|
+
private _readSide;
|
|
126
|
+
private _readSideEnc;
|
|
127
|
+
private _readBody;
|
|
128
|
+
private _evalConditional;
|
|
129
|
+
private _normalizeEtag;
|
|
130
|
+
private _applyRange;
|
|
131
|
+
private _sha256Hex;
|
|
132
|
+
private _normalizeHash;
|
|
133
|
+
private _encodeCursor;
|
|
134
|
+
private _decodeCursor;
|
|
135
|
+
}
|
|
136
|
+
export {};
|
|
137
|
+
//# sourceMappingURL=r2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"r2.d.ts","sourceRoot":"","sources":["../../src/bindings/r2.ts"],"names":[],"mappings":"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"}
|