devflare 1.0.0-next.3 → 1.0.0-next.30
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/LLM.md +15961 -1751
- package/README.md +389 -605
- package/bin/devflare.js +24 -14
- package/dist/account-fvf5gxc9.js +475 -0
- package/dist/api-2n6dd2ws.js +33 -0
- package/dist/bridge/client.d.ts +48 -6
- package/dist/bridge/client.d.ts.map +1 -1
- package/dist/bridge/gateway-runtime.d.ts +8 -0
- package/dist/bridge/gateway-runtime.d.ts.map +1 -0
- package/dist/bridge/index.d.ts +3 -3
- package/dist/bridge/index.d.ts.map +1 -1
- package/dist/bridge/log.d.ts +5 -0
- package/dist/bridge/log.d.ts.map +1 -0
- package/dist/bridge/miniflare.d.ts +74 -1
- package/dist/bridge/miniflare.d.ts.map +1 -1
- package/dist/bridge/proxy.d.ts +11 -10
- package/dist/bridge/proxy.d.ts.map +1 -1
- package/dist/bridge/server.d.ts +2 -1
- package/dist/bridge/server.d.ts.map +1 -1
- package/dist/bridge/v2/body-streams.d.ts +53 -0
- package/dist/bridge/v2/body-streams.d.ts.map +1 -0
- package/dist/bridge/v2/codec.d.ts +106 -0
- package/dist/bridge/v2/codec.d.ts.map +1 -0
- package/dist/bridge/v2/control-messages.d.ts +51 -0
- package/dist/bridge/v2/control-messages.d.ts.map +1 -0
- package/dist/bridge/v2/frames.d.ts +109 -0
- package/dist/bridge/v2/frames.d.ts.map +1 -0
- package/dist/bridge/v2/index.d.ts +11 -0
- package/dist/bridge/v2/index.d.ts.map +1 -0
- package/dist/bridge/v2/serialization.d.ts +48 -0
- package/dist/bridge/v2/serialization.d.ts.map +1 -0
- package/dist/bridge/v2/transport.d.ts +31 -0
- package/dist/bridge/v2/transport.d.ts.map +1 -0
- package/dist/bridge/v2/value-codec.d.ts +61 -0
- package/dist/bridge/v2/value-codec.d.ts.map +1 -0
- package/dist/bridge/{serialization.d.ts → v2/value-serialization.d.ts} +40 -18
- package/dist/bridge/v2/value-serialization.d.ts.map +1 -0
- package/dist/bridge/{protocol.d.ts → v2/wire.d.ts} +28 -4
- package/dist/bridge/v2/wire.d.ts.map +1 -0
- package/dist/bridge/v2/ws-relay.d.ts +53 -0
- package/dist/bridge/v2/ws-relay.d.ts.map +1 -0
- package/dist/browser-shim/handler.d.ts +1 -1
- package/dist/browser-shim/handler.d.ts.map +1 -1
- package/dist/browser-shim/server.d.ts +63 -0
- package/dist/browser-shim/server.d.ts.map +1 -1
- package/dist/browser.d.ts +4585 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +147 -0
- package/dist/build-x1fhfsgs.js +54 -0
- package/dist/bundler/defaults.d.ts +23 -0
- package/dist/bundler/defaults.d.ts.map +1 -0
- package/dist/bundler/do-bundler.d.ts +7 -0
- package/dist/bundler/do-bundler.d.ts.map +1 -1
- package/dist/bundler/index.d.ts +2 -0
- package/dist/bundler/index.d.ts.map +1 -1
- package/dist/bundler/rolldown-shared.d.ts +53 -0
- package/dist/bundler/rolldown-shared.d.ts.map +1 -0
- package/dist/bundler/worker-bundler.d.ts +13 -0
- package/dist/bundler/worker-bundler.d.ts.map +1 -0
- package/dist/bundler/worker-compat.d.ts +4 -0
- package/dist/bundler/worker-compat.d.ts.map +1 -0
- package/dist/cli/build-manifest.d.ts +66 -0
- package/dist/cli/build-manifest.d.ts.map +1 -0
- package/dist/cli/command-utils.d.ts +18 -0
- package/dist/cli/command-utils.d.ts.map +1 -0
- package/dist/cli/commands/account.d.ts +1 -1
- package/dist/cli/commands/account.d.ts.map +1 -1
- package/dist/cli/commands/build-artifacts.d.ts +40 -0
- package/dist/cli/commands/build-artifacts.d.ts.map +1 -0
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/config.d.ts +4 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/deploy/metadata.d.ts +18 -0
- package/dist/cli/commands/deploy/metadata.d.ts.map +1 -0
- package/dist/cli/commands/deploy/prepare.d.ts +23 -0
- package/dist/cli/commands/deploy/prepare.d.ts.map +1 -0
- package/dist/cli/commands/deploy/runtime.d.ts +4 -0
- package/dist/cli/commands/deploy/runtime.d.ts.map +1 -0
- package/dist/cli/commands/deploy/verification.d.ts +36 -0
- package/dist/cli/commands/deploy/verification.d.ts.map +1 -0
- package/dist/cli/commands/deploy.d.ts +2 -2
- package/dist/cli/commands/deploy.d.ts.map +1 -1
- package/dist/cli/commands/dev.d.ts +8 -0
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/login.d.ts +4 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/previews-support/cleanup.d.ts +9 -0
- package/dist/cli/commands/previews-support/cleanup.d.ts.map +1 -0
- package/dist/cli/commands/previews-support/family.d.ts +10 -0
- package/dist/cli/commands/previews-support/family.d.ts.map +1 -0
- package/dist/cli/commands/previews-support/render.d.ts +8 -0
- package/dist/cli/commands/previews-support/render.d.ts.map +1 -0
- package/dist/cli/commands/previews-support/theme.d.ts +10 -0
- package/dist/cli/commands/previews-support/theme.d.ts.map +1 -0
- package/dist/cli/commands/previews-support/types.d.ts +70 -0
- package/dist/cli/commands/previews-support/types.d.ts.map +1 -0
- package/dist/cli/commands/previews.d.ts +4 -0
- package/dist/cli/commands/previews.d.ts.map +1 -0
- package/dist/cli/commands/productions.d.ts +4 -0
- package/dist/cli/commands/productions.d.ts.map +1 -0
- package/dist/cli/commands/secrets.d.ts +4 -0
- package/dist/cli/commands/secrets.d.ts.map +1 -0
- package/dist/cli/commands/token.d.ts +4 -0
- package/dist/cli/commands/token.d.ts.map +1 -0
- package/dist/cli/commands/type-generation/discovery.d.ts +7 -0
- package/dist/cli/commands/type-generation/discovery.d.ts.map +1 -0
- package/dist/cli/commands/type-generation/generator.d.ts +112 -0
- package/dist/cli/commands/type-generation/generator.d.ts.map +1 -0
- package/dist/cli/commands/type-generation/models.d.ts +27 -0
- package/dist/cli/commands/type-generation/models.d.ts.map +1 -0
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/commands/worker.d.ts +4 -0
- package/dist/cli/commands/worker.d.ts.map +1 -0
- package/dist/cli/config-path.d.ts +6 -0
- package/dist/cli/config-path.d.ts.map +1 -0
- package/dist/cli/dependencies.d.ts +1 -0
- package/dist/cli/dependencies.d.ts.map +1 -1
- package/dist/cli/deploy-strategy.d.ts +17 -0
- package/dist/cli/deploy-strategy.d.ts.map +1 -0
- package/dist/cli/deploy-target.d.ts +17 -0
- package/dist/cli/deploy-target.d.ts.map +1 -0
- package/dist/cli/generated-artifacts.d.ts +12 -0
- package/dist/cli/generated-artifacts.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/account.d.ts +3 -0
- package/dist/cli/help-pages/pages/account.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/core.d.ts +4 -0
- package/dist/cli/help-pages/pages/core.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/index.d.ts +3 -0
- package/dist/cli/help-pages/pages/index.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/misc.d.ts +3 -0
- package/dist/cli/help-pages/pages/misc.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/previews.d.ts +3 -0
- package/dist/cli/help-pages/pages/previews.d.ts.map +1 -0
- package/dist/cli/help-pages/pages/productions.d.ts +3 -0
- package/dist/cli/help-pages/pages/productions.d.ts.map +1 -0
- package/dist/cli/help-pages/render.d.ts +12 -0
- package/dist/cli/help-pages/render.d.ts.map +1 -0
- package/dist/cli/help-pages/shared.d.ts +15 -0
- package/dist/cli/help-pages/shared.d.ts.map +1 -0
- package/dist/cli/help-pages/types.d.ts +23 -0
- package/dist/cli/help-pages/types.d.ts.map +1 -0
- package/dist/cli/help.d.ts +6 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +12 -0
- package/dist/cli/package-metadata.d.ts +16 -0
- package/dist/cli/package-metadata.d.ts.map +1 -0
- package/dist/cli/preview-bindings.d.ts +49 -0
- package/dist/cli/preview-bindings.d.ts.map +1 -0
- package/dist/cli/preview.d.ts +10 -0
- package/dist/cli/preview.d.ts.map +1 -0
- package/dist/cli/ui.d.ts +37 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/workspace-build-guard.d.ts +14 -0
- package/dist/cli/workspace-build-guard.d.ts.map +1 -0
- package/dist/cloudflare/account-core.d.ts +6 -0
- package/dist/cloudflare/account-core.d.ts.map +1 -0
- package/dist/cloudflare/account-resources.d.ts +40 -0
- package/dist/cloudflare/account-resources.d.ts.map +1 -0
- package/dist/cloudflare/account-status.d.ts +11 -0
- package/dist/cloudflare/account-status.d.ts.map +1 -0
- package/dist/cloudflare/account-workers.d.ts +14 -0
- package/dist/cloudflare/account-workers.d.ts.map +1 -0
- package/dist/cloudflare/account.d.ts +7 -64
- package/dist/cloudflare/account.d.ts.map +1 -1
- package/dist/cloudflare/api.d.ts +71 -3
- package/dist/cloudflare/api.d.ts.map +1 -1
- package/dist/cloudflare/auth.d.ts.map +1 -1
- package/dist/cloudflare/index.d.ts +57 -2
- package/dist/cloudflare/index.d.ts.map +1 -1
- package/dist/cloudflare/index.js +49 -2
- package/dist/cloudflare/known-permission-group-ids.generated.d.ts +10 -0
- package/dist/cloudflare/known-permission-group-ids.generated.d.ts.map +1 -0
- package/dist/cloudflare/kv-namespace.d.ts +4 -0
- package/dist/cloudflare/kv-namespace.d.ts.map +1 -0
- package/dist/cloudflare/preferences.d.ts +7 -0
- package/dist/cloudflare/preferences.d.ts.map +1 -1
- package/dist/cloudflare/preview-registry-cache.d.ts +6 -0
- package/dist/cloudflare/preview-registry-cache.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry-inference.d.ts +14 -0
- package/dist/cloudflare/preview-registry-inference.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry-records.d.ts +4 -0
- package/dist/cloudflare/preview-registry-records.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry-shape.d.ts +47 -0
- package/dist/cloudflare/preview-registry-shape.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry-store.d.ts +14 -0
- package/dist/cloudflare/preview-registry-store.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry-transport.d.ts +4 -0
- package/dist/cloudflare/preview-registry-transport.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry-types.d.ts +103 -0
- package/dist/cloudflare/preview-registry-types.d.ts.map +1 -0
- package/dist/cloudflare/preview-registry.d.ts +42 -0
- package/dist/cloudflare/preview-registry.d.ts.map +1 -0
- package/dist/cloudflare/preview-urls.d.ts +3 -0
- package/dist/cloudflare/preview-urls.d.ts.map +1 -0
- package/dist/cloudflare/registry-schema.d.ts +253 -0
- package/dist/cloudflare/registry-schema.d.ts.map +1 -0
- package/dist/cloudflare/tokens.d.ts +44 -0
- package/dist/cloudflare/tokens.d.ts.map +1 -0
- package/dist/cloudflare/types.d.ts +124 -7
- package/dist/cloudflare/types.d.ts.map +1 -1
- package/dist/cloudflare/usage.d.ts +30 -2
- package/dist/cloudflare/usage.d.ts.map +1 -1
- package/dist/config/binding-resolution-helpers.d.ts +41 -0
- package/dist/config/binding-resolution-helpers.d.ts.map +1 -0
- package/dist/config/compatibility.d.ts +3 -0
- package/dist/config/compatibility.d.ts.map +1 -0
- package/dist/config/compiler/bindings.d.ts +14 -0
- package/dist/config/compiler/bindings.d.ts.map +1 -0
- package/dist/config/compiler/core-helpers.d.ts +6 -0
- package/dist/config/compiler/core-helpers.d.ts.map +1 -0
- package/dist/config/compiler/do-workers.d.ts +34 -0
- package/dist/config/compiler/do-workers.d.ts.map +1 -0
- package/dist/config/compiler/paths.d.ts +18 -0
- package/dist/config/compiler/paths.d.ts.map +1 -0
- package/dist/config/compiler/types.d.ts +267 -0
- package/dist/config/compiler/types.d.ts.map +1 -0
- package/dist/config/compiler.d.ts +22 -134
- package/dist/config/compiler.d.ts.map +1 -1
- package/dist/config/define.d.ts +7 -4
- package/dist/config/define.d.ts.map +1 -1
- package/dist/config/deploy-resources.d.ts +58 -0
- package/dist/config/deploy-resources.d.ts.map +1 -0
- package/dist/config/env-vars.d.ts +309 -0
- package/dist/config/env-vars.d.ts.map +1 -0
- package/dist/config/framework-providers.d.ts +9 -0
- package/dist/config/framework-providers.d.ts.map +1 -0
- package/dist/config/index.d.ts +12 -5
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/loader.d.ts +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/local-dev-vars.d.ts +15 -0
- package/dist/config/local-dev-vars.d.ts.map +1 -0
- package/dist/config/preview-resources.d.ts +83 -0
- package/dist/config/preview-resources.d.ts.map +1 -0
- package/dist/config/preview.d.ts +31 -0
- package/dist/config/preview.d.ts.map +1 -0
- package/dist/config/ref.d.ts +14 -23
- package/dist/config/ref.d.ts.map +1 -1
- package/dist/config/resolve-phased.d.ts +72 -0
- package/dist/config/resolve-phased.d.ts.map +1 -0
- package/dist/config/resolve.d.ts +11 -0
- package/dist/config/resolve.d.ts.map +1 -0
- package/dist/config/resource-resolution.d.ts +80 -0
- package/dist/config/resource-resolution.d.ts.map +1 -0
- package/dist/config/schema-bindings.d.ts +1495 -0
- package/dist/config/schema-bindings.d.ts.map +1 -0
- package/dist/config/schema-build.d.ts +67 -0
- package/dist/config/schema-build.d.ts.map +1 -0
- package/dist/config/schema-env.d.ts +3005 -0
- package/dist/config/schema-env.d.ts.map +1 -0
- package/dist/config/schema-normalization.d.ts +184 -0
- package/dist/config/schema-normalization.d.ts.map +1 -0
- package/dist/config/schema-runtime.d.ts +500 -0
- package/dist/config/schema-runtime.d.ts.map +1 -0
- package/dist/config/schema-types-bindings-platform.d.ts +378 -0
- package/dist/config/schema-types-bindings-platform.d.ts.map +1 -0
- package/dist/config/schema-types-bindings-resources.d.ts +551 -0
- package/dist/config/schema-types-bindings-resources.d.ts.map +1 -0
- package/dist/config/schema-types-bindings.d.ts +254 -0
- package/dist/config/schema-types-bindings.d.ts.map +1 -0
- package/dist/config/schema-types-build.d.ts +86 -0
- package/dist/config/schema-types-build.d.ts.map +1 -0
- package/dist/config/schema-types-runtime.d.ts +917 -0
- package/dist/config/schema-types-runtime.d.ts.map +1 -0
- package/dist/config/schema-types.d.ts +390 -0
- package/dist/config/schema-types.d.ts.map +1 -0
- package/dist/config/schema.d.ts +4495 -2214
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/service-bindings-validation.d.ts +36 -0
- package/dist/config/service-bindings-validation.d.ts.map +1 -0
- package/dist/config-2d6x21jn.js +105 -0
- package/dist/config-entry.d.ts +7 -0
- package/dist/config-entry.d.ts.map +1 -0
- package/dist/config-entry.js +16 -0
- package/dist/decorators/durable-object.d.ts.map +1 -1
- package/dist/deploy-g85w9drn.js +1066 -0
- package/dist/dev-server/d1-migrations.d.ts +36 -0
- package/dist/dev-server/d1-migrations.d.ts.map +1 -0
- package/dist/dev-server/dev-server-state.d.ts +59 -0
- package/dist/dev-server/dev-server-state.d.ts.map +1 -0
- package/dist/dev-server/gateway-script.d.ts +21 -0
- package/dist/dev-server/gateway-script.d.ts.map +1 -0
- package/dist/dev-server/miniflare-bindings.d.ts +59 -0
- package/dist/dev-server/miniflare-bindings.d.ts.map +1 -0
- package/dist/dev-server/miniflare-dev-config.d.ts +36 -0
- package/dist/dev-server/miniflare-dev-config.d.ts.map +1 -0
- package/dist/dev-server/miniflare-log.d.ts +20 -0
- package/dist/dev-server/miniflare-log.d.ts.map +1 -0
- package/dist/dev-server/miniflare-worker-config.d.ts +74 -0
- package/dist/dev-server/miniflare-worker-config.d.ts.map +1 -0
- package/dist/dev-server/reload-queue.d.ts +13 -0
- package/dist/dev-server/reload-queue.d.ts.map +1 -0
- package/dist/dev-server/runtime-stdio.d.ts +8 -0
- package/dist/dev-server/runtime-stdio.d.ts.map +1 -0
- package/dist/dev-server/server-startup-helpers.d.ts +84 -0
- package/dist/dev-server/server-startup-helpers.d.ts.map +1 -0
- package/dist/dev-server/server.d.ts +2 -0
- package/dist/dev-server/server.d.ts.map +1 -1
- package/dist/dev-server/vite-process.d.ts +15 -0
- package/dist/dev-server/vite-process.d.ts.map +1 -0
- package/dist/dev-server/vite-utils.d.ts +19 -1
- package/dist/dev-server/vite-utils.d.ts.map +1 -1
- package/dist/dev-server/worker-source-watcher.d.ts +17 -0
- package/dist/dev-server/worker-source-watcher.d.ts.map +1 -0
- package/dist/dev-server/worker-surface-paths.d.ts +6 -0
- package/dist/dev-server/worker-surface-paths.d.ts.map +1 -0
- package/dist/dev-ymkq3thq.js +2609 -0
- package/dist/{doctor-fmgb3d28.js → doctor-sjrcz7x9.js} +104 -35
- package/dist/{durable-object-t4kbb0yt.js → durable-object-v3gsnybk.js} +1 -1
- package/dist/env.d.ts +10 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/index-0gtmnw0m.js +895 -0
- package/dist/index-11p28kxx.js +256 -0
- package/dist/index-15fpa5tx.js +232 -0
- package/dist/index-1d4jg11n.js +542 -0
- package/dist/index-2sc756r1.js +1578 -0
- package/dist/index-3edvz3hs.js +124 -0
- package/dist/index-3jme4hgw.js +1234 -0
- package/dist/index-467tm7r4.js +1033 -0
- package/dist/index-5yvpk954.js +699 -0
- package/dist/index-627srx16.js +45 -0
- package/dist/index-62b3gt2g.js +12 -0
- package/dist/index-6sj0v0dk.js +2284 -0
- package/dist/index-706k4606.js +52 -0
- package/dist/index-7zfv1g9m.js +147 -0
- package/dist/index-85yjb686.js +413 -0
- package/dist/index-aabgympv.js +39 -0
- package/dist/{index-z14anrqp.js → index-aqrwyy57.js} +93 -31
- package/dist/index-c4jmfzz7.js +109 -0
- package/dist/index-c8p4njqy.js +479 -0
- package/dist/index-dm9q84c7.js +360 -0
- package/dist/index-fjmdb57t.js +581 -0
- package/dist/index-g4fcnwhc.js +1205 -0
- package/dist/{index-18hvb6gb.js → index-gn5wy09x.js} +13 -2
- package/dist/index-hpwa6vsw.js +239 -0
- package/dist/index-mg8vwqxf.js +514 -0
- package/dist/index-pmeashfz.js +476 -0
- package/dist/{index-07q6yxyc.js → index-q8f4kawk.js} +68 -32
- package/dist/index-qmmqww7h.js +133 -0
- package/dist/{index-rbht7m9r.js → index-qwgr4q7s.js} +2 -1
- package/dist/index-qz6nbwpw.js +111 -0
- package/dist/index-sqkbyw0c.js +1428 -0
- package/dist/index-stgn34cr.js +148 -0
- package/dist/index-t9y0sve5.js +155 -0
- package/dist/index-thwacc28.js +74 -0
- package/dist/index-vhqww6tt.js +307 -0
- package/dist/{index-1xpj0m4r.js → index-z9gy8w6b.js} +1 -1
- package/dist/index-za0r01bx.js +588 -0
- package/dist/index-zwmphmc5.js +185 -0
- package/dist/index.d.ts +3 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -269
- package/dist/{init-f9mgmew3.js → init-cwpergap.js} +63 -69
- package/dist/login-fthspvbx.js +77 -0
- package/dist/previews-aa16z2hj.js +1337 -0
- package/dist/productions-vemjgfz0.js +505 -0
- package/dist/runtime/context-events.d.ts +13 -0
- package/dist/runtime/context-events.d.ts.map +1 -0
- package/dist/runtime/context-types.d.ts +82 -0
- package/dist/runtime/context-types.d.ts.map +1 -0
- package/dist/runtime/context.d.ts +20 -44
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/exports.d.ts +70 -55
- package/dist/runtime/exports.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +8 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +108 -99
- package/dist/runtime/middleware.d.ts +102 -60
- package/dist/runtime/middleware.d.ts.map +1 -1
- package/dist/runtime/router/index.d.ts +7 -0
- package/dist/runtime/router/index.d.ts.map +1 -0
- package/dist/runtime/router/types.d.ts +24 -0
- package/dist/runtime/router/types.d.ts.map +1 -0
- package/dist/runtime/validation.d.ts +17 -3
- package/dist/runtime/validation.d.ts.map +1 -1
- package/dist/secrets/local-secrets.d.ts +46 -0
- package/dist/secrets/local-secrets.d.ts.map +1 -0
- package/dist/secrets-b0x50dd1.js +91 -0
- package/dist/shims/local-hyperdrive.d.ts +12 -0
- package/dist/shims/local-hyperdrive.d.ts.map +1 -0
- package/dist/shims/local-media-bindings.d.ts +19 -0
- package/dist/shims/local-media-bindings.d.ts.map +1 -0
- package/dist/shims/local-worker-loader.d.ts +3 -0
- package/dist/shims/local-worker-loader.d.ts.map +1 -0
- package/dist/sveltekit/index.js +169 -75
- package/dist/sveltekit/local-bindings.d.ts +4 -0
- package/dist/sveltekit/local-bindings.d.ts.map +1 -0
- package/dist/sveltekit/platform.d.ts +19 -1
- package/dist/sveltekit/platform.d.ts.map +1 -1
- package/dist/test/ai-search.d.ts +39 -0
- package/dist/test/ai-search.d.ts.map +1 -0
- package/dist/test/binding-hints.d.ts +11 -0
- package/dist/test/binding-hints.d.ts.map +1 -0
- package/dist/test/cf.d.ts +35 -21
- package/dist/test/cf.d.ts.map +1 -1
- package/dist/test/containers.d.ts +87 -0
- package/dist/test/containers.d.ts.map +1 -0
- package/dist/test/email.d.ts +16 -7
- package/dist/test/email.d.ts.map +1 -1
- package/dist/test/index.d.ts +5 -8
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +4641 -43
- package/dist/test/offline-bindings.d.ts +65 -0
- package/dist/test/offline-bindings.d.ts.map +1 -0
- package/dist/test/queue.d.ts.map +1 -1
- package/dist/test/remote-ai.d.ts.map +1 -1
- package/dist/test/remote-cloudflare.d.ts +13 -0
- package/dist/test/remote-cloudflare.d.ts.map +1 -0
- package/dist/test/remote-vectorize.d.ts.map +1 -1
- package/dist/test/resolve-service-bindings.d.ts +63 -3
- package/dist/test/resolve-service-bindings.d.ts.map +1 -1
- package/dist/test/scheduled.d.ts.map +1 -1
- package/dist/test/should-skip.d.ts +14 -18
- package/dist/test/should-skip.d.ts.map +1 -1
- package/dist/test/simple-context-bindings.d.ts +13 -0
- package/dist/test/simple-context-bindings.d.ts.map +1 -0
- package/dist/test/simple-context-durable-objects.d.ts +6 -0
- package/dist/test/simple-context-durable-objects.d.ts.map +1 -0
- package/dist/test/simple-context-env.d.ts +35 -0
- package/dist/test/simple-context-env.d.ts.map +1 -0
- package/dist/test/simple-context-gateway-script.d.ts +2 -0
- package/dist/test/simple-context-gateway-script.d.ts.map +1 -0
- package/dist/test/simple-context-handlers.d.ts +12 -0
- package/dist/test/simple-context-handlers.d.ts.map +1 -0
- package/dist/test/simple-context-lifecycle.d.ts +32 -0
- package/dist/test/simple-context-lifecycle.d.ts.map +1 -0
- package/dist/test/simple-context-mfconfig.d.ts +10 -0
- package/dist/test/simple-context-mfconfig.d.ts.map +1 -0
- package/dist/test/simple-context-multi-worker.d.ts +16 -0
- package/dist/test/simple-context-multi-worker.d.ts.map +1 -0
- package/dist/test/simple-context-paths.d.ts +40 -0
- package/dist/test/simple-context-paths.d.ts.map +1 -0
- package/dist/test/simple-context-runtime.d.ts +19 -0
- package/dist/test/simple-context-runtime.d.ts.map +1 -0
- package/dist/test/simple-context-startup.d.ts +11 -0
- package/dist/test/simple-context-startup.d.ts.map +1 -0
- package/dist/test/simple-context-transport.d.ts +14 -0
- package/dist/test/simple-context-transport.d.ts.map +1 -0
- package/dist/test/simple-context.d.ts +7 -26
- package/dist/test/simple-context.d.ts.map +1 -1
- package/dist/test/tail.d.ts +2 -1
- package/dist/test/tail.d.ts.map +1 -1
- package/dist/test/utilities/artifacts.d.ts +11 -0
- package/dist/test/utilities/artifacts.d.ts.map +1 -0
- package/dist/test/utilities/context.d.ts +39 -0
- package/dist/test/utilities/context.d.ts.map +1 -0
- package/dist/test/utilities/d1.d.ts +21 -0
- package/dist/test/utilities/d1.d.ts.map +1 -0
- package/dist/test/utilities/env.d.ts +40 -0
- package/dist/test/utilities/env.d.ts.map +1 -0
- package/dist/test/utilities/kv.d.ts +11 -0
- package/dist/test/utilities/kv.d.ts.map +1 -0
- package/dist/test/utilities/media.d.ts +16 -0
- package/dist/test/utilities/media.d.ts.map +1 -0
- package/dist/test/utilities/platform.d.ts +41 -0
- package/dist/test/utilities/platform.d.ts.map +1 -0
- package/dist/test/utilities/queue.d.ts +5 -0
- package/dist/test/utilities/queue.d.ts.map +1 -0
- package/dist/test/utilities/r2.d.ts +2 -0
- package/dist/test/utilities/r2.d.ts.map +1 -0
- package/dist/test/utilities/workflows.d.ts +26 -0
- package/dist/test/utilities/workflows.d.ts.map +1 -0
- package/dist/test/utilities.d.ts +10 -98
- package/dist/test/utilities.d.ts.map +1 -1
- package/dist/test/worker.d.ts +6 -0
- package/dist/test/worker.d.ts.map +1 -1
- package/dist/token-35jcdqq8.js +419 -0
- package/dist/transform/durable-object.d.ts.map +1 -1
- package/dist/transform/worker-entrypoint.d.ts +5 -0
- package/dist/transform/worker-entrypoint.d.ts.map +1 -1
- package/dist/types-03w8zkg6.js +705 -0
- package/dist/utils/entrypoint-discovery.d.ts +6 -3
- package/dist/utils/entrypoint-discovery.d.ts.map +1 -1
- package/dist/utils/resolve-package.d.ts.map +1 -1
- package/dist/utils/send-email.d.ts +15 -0
- package/dist/utils/send-email.d.ts.map +1 -0
- package/dist/utils/send-email.js +19 -0
- package/dist/vite/config-file.d.ts +25 -0
- package/dist/vite/config-file.d.ts.map +1 -0
- package/dist/vite/index.d.ts +1 -0
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +25 -331
- package/dist/vite/plugin-config-hook.d.ts +28 -0
- package/dist/vite/plugin-config-hook.d.ts.map +1 -0
- package/dist/vite/plugin-context.d.ts +27 -0
- package/dist/vite/plugin-context.d.ts.map +1 -0
- package/dist/vite/plugin-durable-objects.d.ts +18 -0
- package/dist/vite/plugin-durable-objects.d.ts.map +1 -0
- package/dist/vite/plugin-programmatic.d.ts +44 -0
- package/dist/vite/plugin-programmatic.d.ts.map +1 -0
- package/dist/vite/plugin-service-bindings.d.ts +13 -0
- package/dist/vite/plugin-service-bindings.d.ts.map +1 -0
- package/dist/vite/plugin-transform.d.ts +41 -0
- package/dist/vite/plugin-transform.d.ts.map +1 -0
- package/dist/vite/plugin.d.ts +10 -41
- package/dist/vite/plugin.d.ts.map +1 -1
- package/dist/worker-55q6b8nc.js +513 -0
- package/dist/worker-entry/composed-worker.d.ts +7 -0
- package/dist/worker-entry/composed-worker.d.ts.map +1 -0
- package/dist/worker-entry/durable-object-discovery.d.ts +20 -0
- package/dist/worker-entry/durable-object-discovery.d.ts.map +1 -0
- package/dist/worker-entry/extensions.d.ts +5 -0
- package/dist/worker-entry/extensions.d.ts.map +1 -0
- package/dist/worker-entry/routes.d.ts +22 -0
- package/dist/worker-entry/routes.d.ts.map +1 -0
- package/dist/worker-entry/surface-paths.d.ts +26 -0
- package/dist/worker-entry/surface-paths.d.ts.map +1 -0
- package/dist/{worker-entrypoint-m9th0rg0.js → worker-entrypoint-3rmzd4c1.js} +3 -1
- package/dist/workflows/local-workflow-entrypoints.d.ts +7 -0
- package/dist/workflows/local-workflow-entrypoints.d.ts.map +1 -0
- package/package.json +154 -115
- package/dist/account-rvrj687w.js +0 -397
- package/dist/bridge/protocol.d.ts.map +0 -1
- package/dist/bridge/serialization.d.ts.map +0 -1
- package/dist/browser-shim/worker.d.ts +0 -14
- package/dist/browser-shim/worker.d.ts.map +0 -1
- package/dist/build-mnf6v8gd.js +0 -53
- package/dist/deploy-nhceck39.js +0 -70
- package/dist/dev-pa8dhm20.js +0 -2162
- package/dist/index-67qcae0f.js +0 -183
- package/dist/index-ep3445yc.js +0 -2225
- package/dist/index-gz1gndna.js +0 -307
- package/dist/index-hcex3rgh.js +0 -266
- package/dist/index-m2q41jwa.js +0 -462
- package/dist/index-n7rs26ft.js +0 -77
- package/dist/index-pf5s73n9.js +0 -1413
- package/dist/index-tfyxa77h.js +0 -850
- package/dist/index-tk6ej9dj.js +0 -94
- package/dist/test/bridge-context.d.ts +0 -76
- package/dist/test/bridge-context.d.ts.map +0 -1
- package/dist/test/multi-worker-context.d.ts +0 -114
- package/dist/test/multi-worker-context.d.ts.map +0 -1
- package/dist/types-5nyrz1sz.js +0 -454
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared gateway helpers (base64, R2 serializers, email) and the RPC method
|
|
3
|
+
* dispatcher. Designed to be embedded verbatim at the top level of a worker
|
|
4
|
+
* module. All symbols are declared with `function`/`const` so they are
|
|
5
|
+
* hoisted in both embedding sites.
|
|
6
|
+
*/
|
|
7
|
+
export declare const GATEWAY_RUNTIME_JS = "\nconst RAW_EMAIL = 'EmailMessage::raw'\n\nfunction arrayBufferToBase64(buffer) {\n\tconst bytes = new Uint8Array(buffer)\n\tlet binary = ''\n\tfor (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i])\n\treturn btoa(binary)\n}\n\nfunction base64ToArrayBuffer(base64) {\n\tconst binary = atob(base64)\n\tconst bytes = new Uint8Array(binary.length)\n\tfor (let i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i)\n\treturn bytes.buffer\n}\n\nfunction serializeR2Object(obj) {\n\tif (!obj) return null\n\treturn {\n\t\t__type: 'R2Object',\n\t\tkey: obj.key,\n\t\tversion: obj.version,\n\t\tsize: obj.size,\n\t\tetag: obj.etag,\n\t\thttpEtag: obj.httpEtag,\n\t\tchecksums: obj.checksums,\n\t\tuploaded: obj.uploaded?.toISOString(),\n\t\thttpMetadata: obj.httpMetadata,\n\t\tcustomMetadata: obj.customMetadata,\n\t\trange: obj.range,\n\t\tstorageClass: obj.storageClass\n\t}\n}\n\nfunction serializeR2ObjectBody(obj, bodyData) {\n\tif (!obj) return null\n\treturn {\n\t\t__type: 'R2ObjectBody',\n\t\tkey: obj.key,\n\t\tversion: obj.version,\n\t\tsize: obj.size,\n\t\tetag: obj.etag,\n\t\thttpEtag: obj.httpEtag,\n\t\tchecksums: obj.checksums,\n\t\tuploaded: obj.uploaded?.toISOString(),\n\t\thttpMetadata: obj.httpMetadata,\n\t\tcustomMetadata: obj.customMetadata,\n\t\trange: obj.range,\n\t\tstorageClass: obj.storageClass,\n\t\tbodyData\n\t}\n}\n\nfunction serializeR2Objects(result) {\n\tif (!result) return null\n\treturn {\n\t\tobjects: result.objects.map(serializeR2Object),\n\t\ttruncated: result.truncated,\n\t\tcursor: result.cursor,\n\t\tdelimitedPrefixes: result.delimitedPrefixes\n\t}\n}\n\nasync function serializeResponse(response) {\n\tlet body = null\n\tif (response.body) {\n\t\tconst bytes = await response.arrayBuffer()\n\t\tif (bytes.byteLength > 0) {\n\t\t\tbody = { type: 'bytes', data: arrayBufferToBase64(bytes) }\n\t\t}\n\t}\n\treturn {\n\t\tstatus: response.status,\n\t\tstatusText: response.statusText,\n\t\theaders: [...response.headers.entries()],\n\t\tbody\n\t}\n}\n\nfunction deserializeRequest(serializedReq) {\n\treturn new Request(serializedReq.url, {\n\t\tmethod: serializedReq.method,\n\t\theaders: serializedReq.headers,\n\t\tbody: serializedReq.body?.type === 'bytes'\n\t\t\t? base64ToArrayBuffer(serializedReq.body.data)\n\t\t\t: undefined,\n\t\tredirect: serializedReq.redirect\n\t})\n}\n\nfunction createEmailMessageRaw(raw) {\n\tif (typeof raw === 'string' || raw instanceof ReadableStream) {\n\t\treturn raw\n\t}\n\tif (raw instanceof ArrayBuffer || raw instanceof Uint8Array) {\n\t\treturn new Response(raw).body\n\t}\n\tthrow new Error('Unsupported EmailMessage raw payload')\n}\n\nfunction isDurableObjectNamespace(binding) {\n\treturn !!binding\n\t\t&& typeof binding.idFromName === 'function'\n\t\t&& typeof binding.idFromString === 'function'\n\t\t&& typeof binding.newUniqueId === 'function'\n}\n\n/**\n * Resolve a (possibly jurisdiction-scoped) DurableObjectNamespace.\n * Forwards the jurisdiction faithfully when the binding supports it\n * (real Cloudflare), and degrades to the plain binding otherwise\n * (miniflare/workerd local emulation, which does not pin jurisdictions).\n */\nfunction resolveDoNamespace(binding, jurisdiction) {\n\tif (jurisdiction && typeof binding.jurisdiction === 'function') {\n\t\treturn binding.jurisdiction(jurisdiction)\n\t}\n\treturn binding\n}\n\n/**\n * Execute an RPC method against the gateway's bindings.\n *\n * Method format: \"binding.operation\". Operations must be namespaced by\n * binding kind (e.g. \"kv.get\", \"r2.head\", \"d1.stmt.first\", \"do.fetch\",\n * \"service.fetch\", \"queue.send\", \"email.send\", \"ai.run\"). Bare verbs and the legacy\n * \"stmt.*\" / \"stub.*\" sub-prefixes were removed in B3-final and now throw.\n * Method vocabulary must stay in sync with the canonical server in\n * src/bridge/server.ts.\n */\nasync function executeRpcMethod(method, params, env, _ctx) {\n\tconst parts = method.split('.')\n\tif (parts.length < 2) throw new Error('Invalid method format: ' + method)\n\n\tconst bindingName = parts[0]\n\tconst operation = parts.slice(1).join('.')\n\tconst binding = env[bindingName]\n\n\tif (!binding) throw new Error('Binding not found: ' + bindingName)\n\n\tconst isNamespaced =\n\t\toperation.indexOf('kv.') === 0 ||\n\t\toperation.indexOf('r2.') === 0 ||\n\t\toperation.indexOf('d1.') === 0 ||\n\t\toperation.indexOf('do.') === 0 ||\n\t\toperation.indexOf('service.') === 0 ||\n\t\toperation.indexOf('queue.') === 0 ||\n\t\toperation.indexOf('email.') === 0 ||\n\t\toperation.indexOf('ai.') === 0 ||\n\t\toperation.indexOf('workflow.') === 0 ||\n\t\toperation.indexOf('var.') === 0\n\tif (!isNamespaced) {\n\t\tthrow new Error(createUnsupportedBridgeOperationErrorMessage(bindingName, operation))\n\t}\n\n\t// KV\n\tif (operation === 'kv.get') return binding.get(params[0], params[1])\n\tif (operation === 'kv.put') return binding.put(params[0], params[1], params[2])\n\tif (operation === 'kv.delete') return binding.delete(params[0])\n\tif (operation === 'kv.list') return binding.list(params[0])\n\tif (operation === 'kv.getWithMetadata') return binding.getWithMetadata(params[0], params[1])\n\n\t// DO get (returns DOStub reference)\n\tif (operation === 'do.get') {\n\t\treturn { __type: 'DOStub', binding: bindingName, id: params[0] }\n\t}\n\n\t// R2\n\tif (operation === 'r2.head') return serializeR2Object(await binding.head(params[0]))\n\tif (operation === 'r2.get') {\n\t\tconst obj = await binding.get(params[0], params[1])\n\t\tif (!obj) return null\n\t\tconst body = await obj.arrayBuffer()\n\t\treturn serializeR2ObjectBody(obj, arrayBufferToBase64(body))\n\t}\n\tif (operation === 'r2.put') {\n\t\tlet value = params[1]\n\t\tif (value && typeof value === 'object') {\n\t\t\tif (value.__type === 'ArrayBuffer' || value.__type === 'Uint8Array') {\n\t\t\t\tvalue = base64ToArrayBuffer(value.data)\n\t\t\t}\n\t\t}\n\t\treturn serializeR2Object(await binding.put(params[0], value, params[2]))\n\t}\n\tif (operation === 'r2.delete') return binding.delete(params[0])\n\tif (operation === 'r2.list') return serializeR2Objects(await binding.list(params[0]))\n\n\t// D1\n\tif (operation === 'd1.exec') return binding.exec(params[0])\n\tif (operation === 'd1.batch') {\n\t\tconst statements = params[0].map((s) => binding.prepare(s.sql).bind(...(s.bindings || [])))\n\t\treturn binding.batch(statements)\n\t}\n\tif (operation.indexOf('d1.stmt.') === 0) {\n\t\tconst mode = operation.split('.')[2]\n\t\tconst [sql, ...rest] = params\n\t\tlet bindings = rest\n\t\tlet extraParam\n\t\tif (mode === 'first' || mode === 'raw') {\n\t\t\textraParam = rest[rest.length - 1]\n\t\t\tbindings = rest.slice(0, -1)\n\t\t}\n\t\tlet stmt = binding.prepare(sql)\n\t\tif (bindings.length > 0) stmt = stmt.bind(...bindings)\n\t\tif (mode === 'first') {\n\t\t\tif (typeof extraParam === 'string' && extraParam.length > 0) return stmt.first(extraParam)\n\t\t\treturn stmt.first()\n\t\t}\n\t\tif (mode === 'all') return stmt.all()\n\t\tif (mode === 'run') return stmt.run()\n\t\tif (mode === 'raw') return stmt.raw(extraParam)\n\t\tthrow new Error('Unknown stmt mode: ' + mode)\n\t}\n\n\t// Durable Objects\n\tif (operation === 'do.idFromName') {\n\t\tconst ns = resolveDoNamespace(binding, params[1])\n\t\tconst id = ns.idFromName(params[0])\n\t\treturn { __type: 'DOId', hex: id.toString() }\n\t}\n\tif (operation === 'do.idFromString') {\n\t\tconst id = binding.idFromString(params[0])\n\t\treturn { __type: 'DOId', hex: id.toString() }\n\t}\n\tif (operation === 'do.newUniqueId') {\n\t\tconst ns = resolveDoNamespace(binding, params[1])\n\t\tconst id = ns.newUniqueId(params[0])\n\t\treturn { __type: 'DOId', hex: id.toString() }\n\t}\n\tif (operation === 'do.fetch') {\n\t\tconst [, serializedId, serializedReq] = params\n\t\tconst id = binding.idFromString(serializedId.hex)\n\t\tconst stub = binding.get(id)\n\t\tconst response = await stub.fetch(new Request(serializedReq.url, {\n\t\t\tmethod: serializedReq.method,\n\t\t\theaders: serializedReq.headers,\n\t\t\tbody: serializedReq.body?.type === 'bytes'\n\t\t\t\t? base64ToArrayBuffer(serializedReq.body.data)\n\t\t\t\t: undefined\n\t\t}))\n\t\treturn serializeResponse(response)\n\t}\n\tif (operation === 'do.rpc') {\n\t\tconst [, serializedId, methodName, args] = params\n\t\tconst id = binding.idFromString(serializedId.hex)\n\t\tconst stub = binding.get(id)\n\t\tconst response = await stub.fetch(new Request('http://do/_rpc', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\tbody: JSON.stringify({ method: methodName, params: args })\n\t\t}))\n\t\tconst result = await response.json()\n\t\tif (!result.ok) throw new Error(result.error?.message || 'RPC failed')\n\t\treturn result.result\n\t}\n\n\t// Service Bindings\n\tif (operation === 'service.fetch') {\n\t\tif (!binding || typeof binding.fetch !== 'function') {\n\t\t\tthrow new Error('Service binding ' + bindingName + ' does not support fetch()')\n\t\t}\n\t\tconst response = await binding.fetch(deserializeRequest(params[0]))\n\t\treturn serializeResponse(response)\n\t}\n\tif (operation === 'service.rpc') {\n\t\tconst methodName = params[0]\n\t\tif (typeof methodName !== 'string') {\n\t\t\tthrow new Error('Service binding ' + bindingName + ' RPC method name must be a string')\n\t\t}\n\t\tconst args = Array.isArray(params[1]) ? params[1] : []\n\t\tconst method = binding && binding[methodName]\n\t\tif (typeof method !== 'function') {\n\t\t\tthrow new Error('Service binding ' + bindingName + ' does not support ' + methodName + '()')\n\t\t}\n\t\treturn method.apply(binding, args)\n\t}\n\n\t// Queues\n\tif (operation === 'queue.send') return binding.send(params[0], params[1])\n\tif (operation === 'queue.sendBatch') return binding.sendBatch(params[0], params[1])\n\n\t// Send Email\n\tif (operation === 'email.send') {\n\t\tif (binding && typeof binding.send === 'function') {\n\t\t\tconst message = params[0]\n\t\t\tif (message && typeof message === 'object' && 'from' in message && 'to' in message && 'raw' in message) {\n\t\t\t\treturn binding.send({\n\t\t\t\t\tfrom: message.from,\n\t\t\t\t\tto: message.to,\n\t\t\t\t\t[RAW_EMAIL]: createEmailMessageRaw(message.raw)\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn binding.send(message)\n\t\t}\n\t\treturn { ok: true, simulated: true }\n\t}\n\n\t// Workflows\n\tif (operation === 'workflow.create') {\n\t\treturn serializeWorkflowInstance(await binding.create(params[0]))\n\t}\n\tif (operation === 'workflow.get') {\n\t\treturn serializeWorkflowInstance(await binding.get(params[0]))\n\t}\n\tif (operation === 'workflow.status') {\n\t\treturn (await binding.get(params[0])).status()\n\t}\n\tif (operation === 'workflow.pause') {\n\t\treturn (await binding.get(params[0])).pause()\n\t}\n\tif (operation === 'workflow.resume') {\n\t\treturn (await binding.get(params[0])).resume()\n\t}\n\tif (operation === 'workflow.terminate') {\n\t\treturn (await binding.get(params[0])).terminate()\n\t}\n\tif (operation === 'workflow.restart') {\n\t\treturn (await binding.get(params[0])).restart()\n\t}\n\tif (operation === 'workflow.sendEvent') {\n\t\treturn (await binding.get(params[0])).sendEvent(params[1])\n\t}\n\n\t// AI / generic run()\n\tif (operation === 'ai.run') {\n\t\tif (typeof binding.run !== 'function') {\n\t\t\tthrow new Error('Binding ' + bindingName + ' does not support run(): ' + method)\n\t\t}\n\t\treturn binding.run(params[0], params[1])\n\t}\n\n\tthrow new Error('Unknown operation: ' + method)\n}\n\nfunction createUnsupportedBridgeOperationErrorMessage(bindingName, operation) {\n\tconst base = \"[devflare][bridge] Unsupported bridge operation '\" + operation + \"' for binding '\" + bindingName + \"'.\"\n\tif (operation === 'fetch') {\n\t\treturn base + ' Devflare could not dispatch fetch() for this binding through the local bridge. '\n\t\t\t+ 'Expected Cloudflare API: env.' + bindingName + '.fetch(request). '\n\t\t\t+ 'If this came from SvelteKit platform.env, make sure the binding is declared as a service binding; '\n\t\t\t+ 'this is a Devflare local bridge issue when service bindings fall back to a bare fetch operation.'\n\t}\n\tif (operation === 'toString') {\n\t\treturn base + ' A platform.env value was coerced to a string through the bridge. '\n\t\t\t+ 'For SvelteKit local dev, declared vars should be plain string values and missing env names should read as undefined.'\n\t}\n\treturn base + ' Bare verbs and the legacy stmt.*/stub.* sub-prefixes are not supported; '\n\t\t+ 'use the namespaced form (e.g. kv.get, r2.put, d1.stmt.first, do.fetch, service.fetch).'\n}\n\nfunction serializeWorkflowInstance(instance) {\n\treturn {\n\t\t__type: 'WorkflowInstance',\n\t\tid: instance.id\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// WebSocket bridge (shared with src/bridge/server.ts in shape)\n// ---------------------------------------------------------------------------\n// NOTE: wsProxies is intentionally created per handleBridgeWebSocket call so\n// state never leaks across connections or across gateway-script regenerations.\n\nasync function handleBridgeRpcCall(msg, ws, env, ctx) {\n\ttry {\n\t\tconst result = await executeRpcMethod(msg.method, msg.params, env, ctx)\n\t\tws.send(JSON.stringify({ t: 'rpc.ok', id: msg.id, result }))\n\t} catch (error) {\n\t\tws.send(JSON.stringify({\n\t\t\tt: 'rpc.err',\n\t\t\tid: msg.id,\n\t\t\terror: {\n\t\t\t\tcode: error?.code || 'INTERNAL_ERROR',\n\t\t\t\tmessage: error?.message || String(error)\n\t\t\t}\n\t\t}))\n\t}\n}\n\nasync function handleBridgeWsOpen(msg, ws, env, wsProxies) {\n\ttry {\n\t\tconst binding = env[msg.target.binding]\n\t\tconst id = binding.idFromString(msg.target.id)\n\t\tconst stub = binding.get(id)\n\n\t\tconst headers = new Headers(msg.target.headers || [])\n\t\theaders.set('Upgrade', 'websocket')\n\n\t\tconst response = await stub.fetch(new Request(msg.target.url, { method: 'GET', headers }))\n\t\tconst doWs = response.webSocket\n\n\t\tif (!doWs) {\n\t\t\tws.send(JSON.stringify({\n\t\t\t\tt: 'rpc.err',\n\t\t\t\tid: 'ws_' + msg.wid,\n\t\t\t\terror: { code: 'WS_FAILED', message: 'No WebSocket returned' }\n\t\t\t}))\n\t\t\treturn\n\t\t}\n\n\t\tdoWs.accept()\n\t\twsProxies.set(msg.wid, { doWs })\n\n\t\tdoWs.addEventListener('message', (event) => {\n\t\t\tconst isText = typeof event.data === 'string'\n\t\t\tconst data = isText ? event.data : arrayBufferToBase64(event.data)\n\t\t\tws.send(JSON.stringify({ t: 'ws.data', wid: msg.wid, data, isText }))\n\t\t})\n\n\t\tdoWs.addEventListener('close', (event) => {\n\t\t\tws.send(JSON.stringify({ t: 'ws.close', wid: msg.wid, code: event.code, reason: event.reason }))\n\t\t\twsProxies.delete(msg.wid)\n\t\t})\n\n\t\tws.send(JSON.stringify({ t: 'ws.opened', wid: msg.wid }))\n\t} catch (error) {\n\t\tws.send(JSON.stringify({\n\t\t\tt: 'rpc.err',\n\t\t\tid: 'ws_' + msg.wid,\n\t\t\terror: { code: 'WS_FAILED', message: error.message }\n\t\t}))\n\t}\n}\n\nfunction handleBridgeWsClose(msg, wsProxies) {\n\tconst proxy = wsProxies.get(msg.wid)\n\tif (proxy) {\n\t\tproxy.doWs.close(msg.code, msg.reason)\n\t\twsProxies.delete(msg.wid)\n\t}\n}\n\nasync function handleBridgeJsonMessage(data, ws, env, ctx, wsProxies) {\n\tconst msg = JSON.parse(data)\n\tswitch (msg.t) {\n\t\tcase 'hello':\n\t\t\t// v2 handshake \u2014 acknowledge with welcome echoing the negotiated\n\t\t\t// capability intersection. Capabilities advertised by the gateway\n\t\t\t// are kept in sync with src/bridge/client.ts (BRIDGE_CLIENT_CAPABILITIES).\n\t\t\tws.send(JSON.stringify({\n\t\t\t\tt: 'welcome',\n\t\t\t\tprotocolVersion: 2,\n\t\t\t\tcapabilities: ['streams', 'ws-relay', 'http-transfer']\n\t\t\t\t\t.filter((c) => Array.isArray(msg.capabilities) && msg.capabilities.includes(c))\n\t\t\t\t\t.sort()\n\t\t\t}))\n\t\t\tbreak\n\t\tcase 'rpc.call':\n\t\t\tawait handleBridgeRpcCall(msg, ws, env, ctx)\n\t\t\tbreak\n\t\tcase 'ws.open':\n\t\t\tawait handleBridgeWsOpen(msg, ws, env, wsProxies)\n\t\t\tbreak\n\t\tcase 'ws.close':\n\t\t\thandleBridgeWsClose(msg, wsProxies)\n\t\t\tbreak\n\t}\n}\n\nfunction handleBridgeWebSocket(request, env, ctx) {\n\tconst { 0: client, 1: server } = new WebSocketPair()\n\tserver.accept()\n\n\t// Per-connection state: recreated for every bridge client so reloads and\n\t// concurrent clients never share WS proxy entries.\n\tconst wsProxies = new Map()\n\n\tserver.addEventListener('message', async (event) => {\n\t\ttry {\n\t\t\tif (typeof event.data === 'string') {\n\t\t\t\tawait handleBridgeJsonMessage(event.data, server, env, ctx, wsProxies)\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('[Gateway] Error:', error)\n\t\t}\n\t})\n\n\tserver.addEventListener('close', () => {\n\t\tfor (const proxy of wsProxies.values()) {\n\t\t\t// Best-effort cleanup: the DO-side WS may already be closed or in an\n\t\t\t// invalid state; any throw here would abort sibling closes. Surface\n\t\t\t// the swallowed error when DEVFLARE_DEBUG_BRIDGE is enabled.\n\t\t\ttry { proxy.doWs.close() } catch (error) {\n\t\t\t\tif (globalThis.DEVFLARE_DEBUG_BRIDGE) {\n\t\t\t\t\tconsole.warn('[devflare:bridge] proxy.doWs.close() failed', error)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\twsProxies.clear()\n\t})\n\n\treturn new Response(null, { status: 101, webSocket: client })\n}\n\n// ---------------------------------------------------------------------------\n// HTTP transfer for R2 bodies (shared with src/bridge/server.ts in shape)\n// ---------------------------------------------------------------------------\n\nasync function handleHttpTransfer(request, env, url) {\n\tconst transferIdEncoded = url.pathname.split('/').pop()\n\tconst transferId = decodeURIComponent(transferIdEncoded || '')\n\tconst [binding, ...keyParts] = transferId.split(':')\n\tconst key = keyParts.join(':')\n\tconst bucket = env[binding]\n\n\tif (!bucket) return new Response('Bucket not found: ' + binding, { status: 404 })\n\n\tif (request.method === 'PUT' || request.method === 'POST') {\n\t\tconst result = await bucket.put(key, request.body)\n\t\treturn new Response(JSON.stringify(serializeR2Object(result)), {\n\t\t\theaders: { 'Content-Type': 'application/json' }\n\t\t})\n\t}\n\n\tif (request.method === 'GET') {\n\t\tconst object = await bucket.get(key)\n\t\tif (!object) return new Response('Not found', { status: 404 })\n\t\treturn new Response(object.body, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': object.httpMetadata?.contentType || 'application/octet-stream',\n\t\t\t\t'Content-Length': String(object.size)\n\t\t\t}\n\t\t})\n\t}\n\n\treturn new Response('Method not allowed', { status: 405 })\n}\n";
|
|
8
|
+
//# sourceMappingURL=gateway-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-runtime.d.ts","sourceRoot":"","sources":["../../src/bridge/gateway-runtime.ts"],"names":[],"mappings":"AAcA;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,mpkBAghB9B,CAAA"}
|
package/dist/bridge/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { type JsonMsg, type RpcCall, type RpcOk, type RpcErr, type StreamPull, type StreamOpen, type StreamEnd, type StreamAbort, type WsOpen, type WsOpened, type WsClose, type EventMsg, type HttpTransfer, type DecodedBinaryFrame, BinaryKind, BinaryFlags, BINARY_HEADER_SIZE, encodeBinaryFrame, decodeBinaryFrame, isFin, isText, parseJsonMsg, stringifyJsonMsg, nextRpcId, nextStreamId, nextWsId, resetIdCounters, DEFAULT_CHUNK_SIZE, HTTP_TRANSFER_THRESHOLD, DEFAULT_BRIDGE_PORT, DEFAULT_HTTP_PORT } from './
|
|
2
|
-
export { type SerializedRequest, type SerializedResponse, type BodyRef, serializeRequest, deserializeRequest, serializeResponse, deserializeResponse, serializeValue, deserializeValue, serializeDOId } from './serialization';
|
|
1
|
+
export { type JsonMsg, type RpcCall, type RpcOk, type RpcErr, type StreamPull, type StreamOpen, type StreamEnd, type StreamAbort, type WsOpen, type WsOpened, type WsClose, type EventMsg, type HttpTransfer, type DecodedBinaryFrame, BinaryKind, BinaryFlags, BINARY_HEADER_SIZE, encodeBinaryFrame, decodeBinaryFrame, isFin, isText, parseJsonMsg, stringifyJsonMsg, nextRpcId, nextStreamId, nextWsId, resetIdCounters, DEFAULT_CHUNK_SIZE, HTTP_TRANSFER_THRESHOLD, DEFAULT_BRIDGE_PORT, DEFAULT_HTTP_PORT } from './v2/wire';
|
|
2
|
+
export { type SerializedRequest, type SerializedResponse, type BodyRef, serializeRequest, deserializeRequest, serializeResponse, deserializeResponse, serializeValue, deserializeValue, serializeDOId } from './v2/value-serialization';
|
|
3
3
|
export { type BridgeClientOptions, type PendingCall, BridgeClient, getClient } from './client';
|
|
4
|
-
export { type EnvProxyOptions, type BindingHints, createEnvProxy, bridgeEnv,
|
|
4
|
+
export { type EnvProxyOptions, type BindingHints, createEnvProxy, bridgeEnv, initEnv, setBindingHints } from './proxy';
|
|
5
5
|
export { startMiniflare, startMiniflareFromConfig, getMiniflare, stopMiniflare, type MiniflareInstance, type MiniflareOptions } from './miniflare';
|
|
6
6
|
export { default as gateway } from './server';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,WAAW,CAAA;AAGlB,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EACN,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,YAAY,EACZ,SAAS,EACT,MAAM,UAAU,CAAA;AAGjB,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,cAAc,EACd,SAAS,EACT,OAAO,EACP,eAAe,EACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EACN,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/bridge/log.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,SAAS;IACrB,IAAI,UAAU,MAAM,UAAU,OAAO,GAAG,IAAI;IAI5C,KAAK,UAAU,MAAM,UAAU,OAAO,GAAG,IAAI;CAI7C,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Miniflare as MiniflareType } from 'miniflare';
|
|
2
2
|
import { type DevflareConfig } from '../config';
|
|
3
|
+
import { type LocalSecretWrappedBindingConfig } from '../secrets/local-secrets';
|
|
3
4
|
export interface MiniflareInstance {
|
|
4
5
|
/** Ready promise - resolves when Miniflare is ready */
|
|
5
6
|
ready: Promise<void>;
|
|
@@ -20,6 +21,7 @@ export interface MiniflareInstance {
|
|
|
20
21
|
/** The underlying Miniflare instance */
|
|
21
22
|
_mf: MiniflareType;
|
|
22
23
|
}
|
|
24
|
+
export declare function isIgnorableMiniflareDisposeError(error: unknown): boolean;
|
|
23
25
|
export interface MiniflareOptions {
|
|
24
26
|
/** Devflare config to derive bindings from */
|
|
25
27
|
config?: DevflareConfig;
|
|
@@ -44,13 +46,84 @@ export interface MiniflareOptions {
|
|
|
44
46
|
d1Databases?: string[] | Record<string, string>;
|
|
45
47
|
/** Queue bindings */
|
|
46
48
|
queues?: string[];
|
|
49
|
+
/** Rate Limiting bindings */
|
|
50
|
+
rateLimits?: Record<string, {
|
|
51
|
+
simple: {
|
|
52
|
+
limit: number;
|
|
53
|
+
period: 10 | 60;
|
|
54
|
+
};
|
|
55
|
+
}>;
|
|
56
|
+
/** Version Metadata binding name */
|
|
57
|
+
versionMetadata?: string;
|
|
58
|
+
/** Worker Loader bindings */
|
|
59
|
+
workerLoaders?: Record<string, Record<string, never>>;
|
|
60
|
+
/** mTLS Certificate bindings */
|
|
61
|
+
mtlsCertificates?: Record<string, {
|
|
62
|
+
certificate_id: string;
|
|
63
|
+
}>;
|
|
64
|
+
/** Dispatch Namespace bindings */
|
|
65
|
+
dispatchNamespaces?: Record<string, {
|
|
66
|
+
namespace: string;
|
|
67
|
+
}>;
|
|
68
|
+
/** Workflow bindings */
|
|
69
|
+
workflows?: Record<string, {
|
|
70
|
+
name: string;
|
|
71
|
+
className: string;
|
|
72
|
+
scriptName?: string;
|
|
73
|
+
stepLimit?: number;
|
|
74
|
+
}>;
|
|
75
|
+
/** Pipeline bindings */
|
|
76
|
+
pipelines?: Record<string, string | {
|
|
77
|
+
pipeline: string;
|
|
78
|
+
}>;
|
|
79
|
+
/** Images binding */
|
|
80
|
+
images?: {
|
|
81
|
+
binding: string;
|
|
82
|
+
};
|
|
83
|
+
/** Media Transformations binding */
|
|
84
|
+
media?: {
|
|
85
|
+
binding: string;
|
|
86
|
+
};
|
|
87
|
+
/** Artifacts bindings */
|
|
88
|
+
artifacts?: Record<string, {
|
|
89
|
+
namespace: string;
|
|
90
|
+
}>;
|
|
91
|
+
/** Secrets Store bindings */
|
|
92
|
+
secretsStore?: Record<string, {
|
|
93
|
+
store_id: string;
|
|
94
|
+
secret_name: string;
|
|
95
|
+
}>;
|
|
96
|
+
/** Send Email bindings */
|
|
97
|
+
sendEmail?: Record<string, {
|
|
98
|
+
destinationAddress?: string;
|
|
99
|
+
allowedDestinationAddresses?: string[];
|
|
100
|
+
allowedSenderAddresses?: string[];
|
|
101
|
+
}>;
|
|
47
102
|
/** Environment variables */
|
|
48
|
-
bindings?: Record<string,
|
|
103
|
+
bindings?: Record<string, unknown>;
|
|
104
|
+
/** Service bindings */
|
|
105
|
+
serviceBindings?: Record<string, {
|
|
106
|
+
name: string;
|
|
107
|
+
entrypoint?: string;
|
|
108
|
+
}>;
|
|
109
|
+
/** Wrapped bindings to expose object-shaped local binding shims */
|
|
110
|
+
wrappedBindings?: LocalSecretWrappedBindingConfig['wrappedBindings'];
|
|
111
|
+
/** Additional module workers needed by wrapped bindings */
|
|
112
|
+
auxiliaryWorkers?: LocalSecretWrappedBindingConfig['workers'];
|
|
113
|
+
/** Node-side binding shims merged into `getBindings()` results */
|
|
114
|
+
nodeBindingOverrides?: Record<string, unknown>;
|
|
115
|
+
/** Project root used to load `.dev.vars`/`.env*` for config-based Miniflare */
|
|
116
|
+
cwd?: string;
|
|
117
|
+
/** Config file path used as the anchor for `.dev.vars`/`.env*` */
|
|
118
|
+
configPath?: string;
|
|
119
|
+
/** Cloudflare environment name used for local dev var file selection */
|
|
120
|
+
environment?: string;
|
|
49
121
|
/** Compatibility date */
|
|
50
122
|
compatibilityDate?: string;
|
|
51
123
|
/** Compatibility flags */
|
|
52
124
|
compatibilityFlags?: string[];
|
|
53
125
|
}
|
|
126
|
+
export declare function createMiniflareInstanceHandle(mf: MiniflareType, primaryWorkerName?: string, nodeBindingOverrides?: Record<string, unknown>): MiniflareInstance;
|
|
54
127
|
/**
|
|
55
128
|
* Start a Miniflare instance with the given configuration
|
|
56
129
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"miniflare.d.ts","sourceRoot":"","sources":["../../src/bridge/miniflare.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,WAAW,CAAA;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"miniflare.d.ts","sourceRoot":"","sources":["../../src/bridge/miniflare.ts"],"names":[],"mappings":"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"}
|
package/dist/bridge/proxy.d.ts
CHANGED
|
@@ -4,12 +4,15 @@ export interface EnvProxyOptions {
|
|
|
4
4
|
client?: BridgeClient;
|
|
5
5
|
/** Lazily connect on first access */
|
|
6
6
|
lazy?: boolean;
|
|
7
|
+
/** Return undefined for names that are not present in binding hints */
|
|
8
|
+
strict?: boolean;
|
|
7
9
|
/** Transform results before returning (e.g., for transport decoding) */
|
|
8
10
|
transformResult?: (result: unknown) => unknown;
|
|
9
11
|
}
|
|
10
12
|
/** Binding type hints for better proxy creation */
|
|
13
|
+
export type BindingHint = 'kv' | 'r2' | 'd1' | 'do' | 'queue' | 'ai' | 'service' | 'sendEmail' | 'workflow' | 'secret' | 'var';
|
|
11
14
|
export interface BindingHints {
|
|
12
|
-
[key: string]:
|
|
15
|
+
[key: string]: BindingHint;
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
15
18
|
* Create an env proxy that routes all binding access through the bridge
|
|
@@ -18,12 +21,14 @@ export declare function createEnvProxy(options?: EnvProxyOptions & {
|
|
|
18
21
|
hints?: BindingHints;
|
|
19
22
|
}): Record<string, unknown>;
|
|
20
23
|
/**
|
|
21
|
-
* Get the global env proxy for bridge RPC
|
|
24
|
+
* Get the global env proxy for bridge RPC.
|
|
22
25
|
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
26
|
+
* @internal
|
|
27
|
+
* Internal bridge surface — not part of the documented public API. Prefer
|
|
28
|
+
* `import { env } from 'devflare'`, which transparently picks the right
|
|
29
|
+
* source (request context, test context, or bridge) for the current
|
|
30
|
+
* environment. `bridgeEnv` is retained as an internal escape hatch for the
|
|
31
|
+
* bridge implementation itself and may change without a major version bump.
|
|
27
32
|
*
|
|
28
33
|
* @example
|
|
29
34
|
* ```ts
|
|
@@ -32,10 +37,6 @@ export declare function createEnvProxy(options?: EnvProxyOptions & {
|
|
|
32
37
|
* ```
|
|
33
38
|
*/
|
|
34
39
|
export declare const bridgeEnv: Record<string, unknown>;
|
|
35
|
-
/**
|
|
36
|
-
* @deprecated Use `bridgeEnv` instead to avoid confusion with runtime `env`
|
|
37
|
-
*/
|
|
38
|
-
export declare const env: Record<string, unknown>;
|
|
39
40
|
/**
|
|
40
41
|
* Initialize the env proxy with specific options
|
|
41
42
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/bridge/proxy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/bridge/proxy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,UAAU,CAAA;AAavD,MAAM,WAAW,eAAe;IAC/B,0DAA0D;IAC1D,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,qCAAqC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,wEAAwE;IACxE,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAA;CAC9C;AAqmBD,mDAAmD;AACnD,MAAM,MAAM,WAAW,GACpB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,OAAO,GACP,IAAI,GACJ,SAAS,GACT,WAAW,GACX,UAAU,GACV,QAAQ,GACR,KAAK,CAAA;AAER,MAAM,WAAW,YAAY;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAA;CAC1B;AAKD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAe,GAAG;IAAE,KAAK,CAAC,EAAE,YAAY,CAAA;CAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoFhH;AAoFD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAO5C,CAAA;AAEF;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,eAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAG9E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAIzD"}
|
package/dist/bridge/server.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ export interface GatewayEnv {
|
|
|
2
2
|
[key: string]: unknown;
|
|
3
3
|
}
|
|
4
4
|
declare const _default: {
|
|
5
|
-
fetch(request: Request
|
|
5
|
+
fetch(request: Request, env: GatewayEnv, ctx: ExecutionContext): Promise<Response>;
|
|
6
6
|
};
|
|
7
7
|
export default _default;
|
|
8
|
+
export declare function executeRpcMethod(method: string, params: unknown[], env: GatewayEnv, ctx: ExecutionContext): Promise<unknown>;
|
|
8
9
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/bridge/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/bridge/server.ts"],"names":[],"mappings":"AAuCA,MAAM,WAAW,UAAU;IAE1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB;;IAiBM,KAAK,UAAU,OAAO,OAAO,UAAU,OAAO,gBAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;;;AA8KzF,wBAAsB,gBAAgB,CACrC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EAAE,EACjB,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,gBAAgB,GACnB,OAAO,CAAC,OAAO,CAAC,CA+JlB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { TransportV2BodyKind, TransportV2DecodedBinaryFrame } from './frames';
|
|
2
|
+
/** Default maximum payload size per body chunk frame (256 KiB). */
|
|
3
|
+
export declare const TRANSPORT_V2_DEFAULT_BODY_CHUNK_SIZE: number;
|
|
4
|
+
export interface TransportV2BodyWriterOptions {
|
|
5
|
+
/** Maximum payload bytes per `BodyChunk` frame. Defaults to 256 KiB. */
|
|
6
|
+
chunkSize?: number;
|
|
7
|
+
/** Optional content-length hint to include in `body.open`. */
|
|
8
|
+
contentLength?: number;
|
|
9
|
+
/** Optional content-type hint to include in `body.open`. */
|
|
10
|
+
contentType?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface TransportV2BodyWriterIo {
|
|
13
|
+
sendText(message: string): void;
|
|
14
|
+
sendBinary(frame: Uint8Array): void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Stream a `ReadableStream<Uint8Array>` over the v2 wire as `body.open` +
|
|
18
|
+
* `BodyChunk` frames + `body.end`. Returns once the source stream is
|
|
19
|
+
* exhausted or has been cancelled by the writer.
|
|
20
|
+
*
|
|
21
|
+
* The returned promise rejects if either the source stream errors or one of
|
|
22
|
+
* the I/O calls throws; in both cases a `body.abort` frame is emitted before
|
|
23
|
+
* the promise rejects so the reader side can release resources.
|
|
24
|
+
*/
|
|
25
|
+
export declare function writeTransportV2Body(source: ReadableStream<Uint8Array>, options: {
|
|
26
|
+
bid: number;
|
|
27
|
+
kind: TransportV2BodyKind;
|
|
28
|
+
rpcId: string;
|
|
29
|
+
io: TransportV2BodyWriterIo;
|
|
30
|
+
writerOptions?: TransportV2BodyWriterOptions;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Tracks in-flight v2 body streams on the reader side. The codec routes
|
|
34
|
+
* incoming `body.open` / `body.end` / `body.abort` control messages and
|
|
35
|
+
* `BodyChunk` binary frames here; consumers of v2 RPC results obtain a
|
|
36
|
+
* `ReadableStream<Uint8Array>` to attach to a `Request` / `Response`.
|
|
37
|
+
*/
|
|
38
|
+
export declare class TransportV2BodyReaderRegistry {
|
|
39
|
+
#private;
|
|
40
|
+
/** Register a new body stream and return the reader-side `ReadableStream`. Idempotent: returns the existing stream if `bid` is already registered. */
|
|
41
|
+
getOrOpen(bid: number): ReadableStream<Uint8Array>;
|
|
42
|
+
/** Register a new body stream and return the reader-side `ReadableStream`. Throws if `bid` is already registered. */
|
|
43
|
+
open(bid: number): ReadableStream<Uint8Array>;
|
|
44
|
+
/** Push a decoded BodyChunk frame to the matching reader. */
|
|
45
|
+
pushChunk(frame: TransportV2DecodedBinaryFrame): void;
|
|
46
|
+
/** Handle a `body.end` control message (writer signalled clean end). */
|
|
47
|
+
end(bid: number): void;
|
|
48
|
+
/** Handle a `body.abort` control message. */
|
|
49
|
+
abort(bid: number, reason?: string): void;
|
|
50
|
+
/** Number of currently open reader-side body streams (for tests/diagnostics). */
|
|
51
|
+
get size(): number;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=body-streams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body-streams.d.ts","sourceRoot":"","sources":["../../../src/bridge/v2/body-streams.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAGX,mBAAmB,EAEnB,6BAA6B,EAC7B,MAAM,UAAU,CAAA;AAEjB,mEAAmE;AACnE,eAAO,MAAM,oCAAoC,QAAa,CAAA;AAE9D,MAAM,WAAW,4BAA4B;IAC5C,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,OAAO,EAAE;IACR,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,mBAAmB,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,uBAAuB,CAAA;IAC3B,aAAa,CAAC,EAAE,4BAA4B,CAAA;CAC5C,GACC,OAAO,CAAC,IAAI,CAAC,CA8Ef;AAQD;;;;;GAKG;AACH,qBAAa,6BAA6B;;IAGzC,sJAAsJ;IACtJ,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAIjD;IAED,qHAAqH;IACrH,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAoB5C;IAED,6DAA6D;IAC7D,SAAS,CAAC,KAAK,EAAE,6BAA6B,GAAG,IAAI,CA4BpD;IAED,wEAAwE;IACxE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAMrB;IAED,6CAA6C;IAC7C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAMxC;IAED,iFAAiF;IACjF,IAAI,IAAI,IAAI,MAAM,CAEjB;CACD"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { TransportV2BodyReaderRegistry } from './body-streams';
|
|
2
|
+
import { TRANSPORT_V2_PROTOCOL_VERSION } from './frames';
|
|
3
|
+
import type { TransportV2DecodedBinaryFrame } from './frames';
|
|
4
|
+
import type { WebSocketLike } from './transport';
|
|
5
|
+
export interface TransportV2HandshakeOk {
|
|
6
|
+
protocolVersion: typeof TRANSPORT_V2_PROTOCOL_VERSION;
|
|
7
|
+
capabilities: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface TransportV2RpcCall {
|
|
10
|
+
t: 'rpc.call';
|
|
11
|
+
id: string;
|
|
12
|
+
method: string;
|
|
13
|
+
params: unknown[];
|
|
14
|
+
}
|
|
15
|
+
export interface TransportV2RpcOk {
|
|
16
|
+
t: 'rpc.ok';
|
|
17
|
+
id: string;
|
|
18
|
+
result: unknown;
|
|
19
|
+
}
|
|
20
|
+
export interface TransportV2RpcErr {
|
|
21
|
+
t: 'rpc.err';
|
|
22
|
+
id: string;
|
|
23
|
+
error: {
|
|
24
|
+
code: string;
|
|
25
|
+
message: string;
|
|
26
|
+
details?: unknown;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Out-of-band structured error frame (B5-frame). See
|
|
31
|
+
* `src/bridge/v2/wire.ts#WireError` for the canonical vocabulary spec.
|
|
32
|
+
*/
|
|
33
|
+
export interface TransportV2WireError {
|
|
34
|
+
t: 'error';
|
|
35
|
+
scope: 'transport' | 'rpc' | 'stream' | 'ws';
|
|
36
|
+
error: {
|
|
37
|
+
code: string;
|
|
38
|
+
message: string;
|
|
39
|
+
details?: unknown;
|
|
40
|
+
};
|
|
41
|
+
refId?: string | number;
|
|
42
|
+
}
|
|
43
|
+
export type TransportV2RpcMsg = TransportV2RpcCall | TransportV2RpcOk | TransportV2RpcErr;
|
|
44
|
+
export interface TransportV2CodecOptions {
|
|
45
|
+
/** Capability strings this side supports. Both halves of the bridge advertise these in `hello`/`welcome`. */
|
|
46
|
+
capabilities?: readonly string[];
|
|
47
|
+
/** Called when an RPC call arrives (server-side handler). */
|
|
48
|
+
onRpcCall?: (call: TransportV2RpcCall) => void;
|
|
49
|
+
/** Called when a non-v2 control message arrives. Used during the dual-mode period to keep handling v1 messages. */
|
|
50
|
+
onUnknownControl?: (data: string) => void;
|
|
51
|
+
/** Called when a non-BodyChunk binary frame arrives. Used during dual-mode for v1 stream/ws frames. */
|
|
52
|
+
onUnknownBinary?: (frame: TransportV2DecodedBinaryFrame) => void;
|
|
53
|
+
/**
|
|
54
|
+
* Called when an out-of-band `error` frame (B5-frame) arrives — i.e.
|
|
55
|
+
* a structured failure that is not pinned to a single RPC call id.
|
|
56
|
+
* Useful for surfacing transport/stream/ws errors that previously fell
|
|
57
|
+
* through silent `catch {}` blocks.
|
|
58
|
+
*/
|
|
59
|
+
onWireError?: (err: TransportV2WireError) => void;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* v2 codec attached to a single `WebSocketLike`. Owns handshake state, the
|
|
63
|
+
* frame demultiplexer, RPC pending-call table, and the body-stream registry.
|
|
64
|
+
*/
|
|
65
|
+
export declare class TransportV2Codec {
|
|
66
|
+
#private;
|
|
67
|
+
readonly bodyReaders: TransportV2BodyReaderRegistry;
|
|
68
|
+
constructor(socket: WebSocketLike, options?: TransportV2CodecOptions);
|
|
69
|
+
/** Allocate a fresh body id (writer side). */
|
|
70
|
+
allocateBid(): number;
|
|
71
|
+
/** Allocate a fresh RPC id (caller side). */
|
|
72
|
+
allocateRpcId(): string;
|
|
73
|
+
/** Send the `hello` frame. Called once by the side that initiates the handshake. */
|
|
74
|
+
sendHello(): void;
|
|
75
|
+
/** Promise that resolves once the handshake completes. */
|
|
76
|
+
get handshake(): Promise<TransportV2HandshakeOk>;
|
|
77
|
+
/** Negotiated capabilities once the handshake completes. */
|
|
78
|
+
get negotiated(): TransportV2HandshakeOk | null;
|
|
79
|
+
sendText(message: string): void;
|
|
80
|
+
sendBinary(frame: Uint8Array): void;
|
|
81
|
+
/** Send a typed RPC call and resolve with the peer's `rpc.ok` result. */
|
|
82
|
+
call(method: string, params?: unknown[]): Promise<unknown>;
|
|
83
|
+
/** Send an `rpc.ok` reply for a previously-received call. */
|
|
84
|
+
respondOk(id: string, result: unknown): void;
|
|
85
|
+
/** Send an `rpc.err` reply for a previously-received call. */
|
|
86
|
+
respondErr(id: string, error: {
|
|
87
|
+
code: string;
|
|
88
|
+
message: string;
|
|
89
|
+
details?: unknown;
|
|
90
|
+
}): void;
|
|
91
|
+
/**
|
|
92
|
+
* Send an out-of-band structured `error` frame (B5-frame). Use for
|
|
93
|
+
* failures that are not scoped to a single RPC call id — e.g. malformed
|
|
94
|
+
* incoming frames, stream/ws aborts that need a typed cause, or gateway
|
|
95
|
+
* bookkeeping errors. Replaces silent `catch {}` fallthroughs.
|
|
96
|
+
*/
|
|
97
|
+
sendWireError(err: Omit<TransportV2WireError, 't'>): void;
|
|
98
|
+
/** Register a reader-side body stream. Returns the `ReadableStream`. Idempotent across the codec's `body.open` arrival. */
|
|
99
|
+
openBodyReader(bid: number): ReadableStream<Uint8Array>;
|
|
100
|
+
/** Replace the `onRpcCall` handler after construction. Useful for one-shot tests and for higher RPC layers that build the handler lazily. */
|
|
101
|
+
setRpcCallHandler(handler: (call: TransportV2RpcCall) => void): void;
|
|
102
|
+
/** Close the underlying transport with an optional code/reason. */
|
|
103
|
+
close(code?: number, reason?: string): void;
|
|
104
|
+
get isClosed(): boolean;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=codec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../../src/bridge/v2/codec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface TransportV2WsOpenMsg {
|
|
2
|
+
t: 'ws.open';
|
|
3
|
+
id: string;
|
|
4
|
+
binding: string;
|
|
5
|
+
path: string;
|
|
6
|
+
headers: Record<string, string>;
|
|
7
|
+
doId?: string;
|
|
8
|
+
doName?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface TransportV2WsOpenedMsg {
|
|
11
|
+
t: 'ws.opened';
|
|
12
|
+
id: string;
|
|
13
|
+
subprotocol?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface TransportV2WsOpenErrMsg {
|
|
16
|
+
t: 'ws.openerr';
|
|
17
|
+
id: string;
|
|
18
|
+
error: {
|
|
19
|
+
message: string;
|
|
20
|
+
code?: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface TransportV2WsTextMsg {
|
|
24
|
+
t: 'ws.text';
|
|
25
|
+
id: string;
|
|
26
|
+
data: string;
|
|
27
|
+
}
|
|
28
|
+
export interface TransportV2WsCloseMsg {
|
|
29
|
+
t: 'ws.close';
|
|
30
|
+
id: string;
|
|
31
|
+
code?: number;
|
|
32
|
+
reason?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface TransportV2EventMsg {
|
|
35
|
+
t: 'event';
|
|
36
|
+
channel: string;
|
|
37
|
+
payload: unknown;
|
|
38
|
+
}
|
|
39
|
+
export interface TransportV2HttpTransferMsg {
|
|
40
|
+
t: 'http.transfer';
|
|
41
|
+
id: string;
|
|
42
|
+
url: string;
|
|
43
|
+
method: 'GET' | 'PUT';
|
|
44
|
+
headers?: Record<string, string>;
|
|
45
|
+
bytes: number;
|
|
46
|
+
}
|
|
47
|
+
export type TransportV2AuxMsg = TransportV2WsOpenMsg | TransportV2WsOpenedMsg | TransportV2WsOpenErrMsg | TransportV2WsTextMsg | TransportV2WsCloseMsg | TransportV2EventMsg | TransportV2HttpTransferMsg;
|
|
48
|
+
export declare function isTransportV2AuxMsg(value: unknown): value is TransportV2AuxMsg;
|
|
49
|
+
export declare function parseTransportV2AuxMsg(text: string): TransportV2AuxMsg | null;
|
|
50
|
+
export declare function stringifyTransportV2AuxMsg(msg: TransportV2AuxMsg): string;
|
|
51
|
+
//# sourceMappingURL=control-messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-messages.d.ts","sourceRoot":"","sources":["../../../src/bridge/v2/control-messages.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,oBAAoB;IACpC,CAAC,EAAE,SAAS,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,sBAAsB;IACtC,CAAC,EAAE,WAAW,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,uBAAuB;IACvC,CAAC,EAAE,YAAY,CAAA;IACf,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACzC;AAED,MAAM,WAAW,oBAAoB;IACpC,CAAC,EAAE,SAAS,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,qBAAqB;IACrC,CAAC,EAAE,UAAU,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IACnC,CAAC,EAAE,OAAO,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,0BAA0B;IAC1C,CAAC,EAAE,eAAe,CAAA;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,KAAK,GAAG,KAAK,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,KAAK,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,iBAAiB,GAC1B,oBAAoB,GACpB,sBAAsB,GACtB,uBAAuB,GACvB,oBAAoB,GACpB,qBAAqB,GACrB,mBAAmB,GACnB,0BAA0B,CAAA;AAY7B,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAI9E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAO7E;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAEzE"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/** Wire protocol version emitted in `hello` / `welcome` handshakes. */
|
|
2
|
+
export declare const TRANSPORT_V2_PROTOCOL_VERSION: 2;
|
|
3
|
+
/** WebSocket close code used when v2 ↔ v1 mismatch is detected at handshake. */
|
|
4
|
+
export declare const TRANSPORT_V2_UNSUPPORTED_VERSION_CLOSE_CODE: 4001;
|
|
5
|
+
/** Initial handshake sent by the side that opens the WebSocket. */
|
|
6
|
+
export interface TransportV2Hello {
|
|
7
|
+
t: 'hello';
|
|
8
|
+
protocolVersion: typeof TRANSPORT_V2_PROTOCOL_VERSION;
|
|
9
|
+
capabilities: string[];
|
|
10
|
+
}
|
|
11
|
+
/** Handshake reply with the negotiated capability intersection. */
|
|
12
|
+
export interface TransportV2Welcome {
|
|
13
|
+
t: 'welcome';
|
|
14
|
+
protocolVersion: typeof TRANSPORT_V2_PROTOCOL_VERSION;
|
|
15
|
+
capabilities: string[];
|
|
16
|
+
}
|
|
17
|
+
/** Side that owns a body stream. `'value'` is used for free-standing
|
|
18
|
+
* ReadableStream parameters/results that are not tied to a Request/Response. */
|
|
19
|
+
export type TransportV2BodyKind = 'request' | 'response' | 'value';
|
|
20
|
+
/** Declares a streaming body for an in-flight request or response. */
|
|
21
|
+
export interface TransportV2BodyOpen {
|
|
22
|
+
t: 'body.open';
|
|
23
|
+
bid: number;
|
|
24
|
+
kind: TransportV2BodyKind;
|
|
25
|
+
rpcId: string;
|
|
26
|
+
contentType?: string;
|
|
27
|
+
contentLength?: number;
|
|
28
|
+
}
|
|
29
|
+
/** Signals that a body stream has finished cleanly. */
|
|
30
|
+
export interface TransportV2BodyEnd {
|
|
31
|
+
t: 'body.end';
|
|
32
|
+
bid: number;
|
|
33
|
+
kind: TransportV2BodyKind;
|
|
34
|
+
}
|
|
35
|
+
/** Signals that a body stream was cancelled or errored. */
|
|
36
|
+
export interface TransportV2BodyAbort {
|
|
37
|
+
t: 'body.abort';
|
|
38
|
+
bid: number;
|
|
39
|
+
kind: TransportV2BodyKind;
|
|
40
|
+
error?: string;
|
|
41
|
+
}
|
|
42
|
+
/** Union of v2-specific JSON control messages. */
|
|
43
|
+
export type TransportV2ControlMsg = TransportV2Hello | TransportV2Welcome | TransportV2BodyOpen | TransportV2BodyEnd | TransportV2BodyAbort;
|
|
44
|
+
/**
|
|
45
|
+
* Binary frame kinds for v2. Values 1 (StreamChunk) and 2 (WsData) are
|
|
46
|
+
* deliberately stable with v1 so a future shared decoder can route either
|
|
47
|
+
* version's frames. Value 3 (BodyChunk) is new in v2 for HTTP body streams.
|
|
48
|
+
*/
|
|
49
|
+
export declare const TransportV2BinaryKind: {
|
|
50
|
+
readonly StreamChunk: 1;
|
|
51
|
+
readonly WsData: 2;
|
|
52
|
+
readonly BodyChunk: 3;
|
|
53
|
+
};
|
|
54
|
+
export type TransportV2BinaryKind = (typeof TransportV2BinaryKind)[keyof typeof TransportV2BinaryKind];
|
|
55
|
+
/** Binary frame flags for v2. */
|
|
56
|
+
export declare const TransportV2BinaryFlags: {
|
|
57
|
+
readonly FIN: 1;
|
|
58
|
+
readonly TEXT: 2;
|
|
59
|
+
readonly ABORT: 4;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Binary frame header layout (10 bytes, identical to v1 so wire shape stays
|
|
63
|
+
* compatible at the byte level for shared frame kinds):
|
|
64
|
+
*
|
|
65
|
+
* u8 kind — TransportV2BinaryKind
|
|
66
|
+
* u32 id — stream / ws / body id (little-endian)
|
|
67
|
+
* u32 seq — sequence number for ordering
|
|
68
|
+
* u8 flags — TransportV2BinaryFlags bitset
|
|
69
|
+
* … payload — opaque bytes
|
|
70
|
+
*/
|
|
71
|
+
export declare const TRANSPORT_V2_BINARY_HEADER_SIZE = 10;
|
|
72
|
+
/** A decoded v2 binary frame. */
|
|
73
|
+
export interface TransportV2DecodedBinaryFrame {
|
|
74
|
+
kind: TransportV2BinaryKind;
|
|
75
|
+
id: number;
|
|
76
|
+
seq: number;
|
|
77
|
+
flags: number;
|
|
78
|
+
payload: Uint8Array;
|
|
79
|
+
}
|
|
80
|
+
/** Encode a v2 binary frame. Pure; allocates a single Uint8Array. */
|
|
81
|
+
export declare function encodeTransportV2BinaryFrame(kind: TransportV2BinaryKind, id: number, seq: number, flags: number, payload: Uint8Array): Uint8Array;
|
|
82
|
+
/** Decode a v2 binary frame. Pure; returns a view that aliases the input bytes. */
|
|
83
|
+
export declare function decodeTransportV2BinaryFrame(frame: Uint8Array): TransportV2DecodedBinaryFrame;
|
|
84
|
+
/** True when the FIN flag is set on a v2 binary frame. */
|
|
85
|
+
export declare function transportV2IsFin(flags: number): boolean;
|
|
86
|
+
/** True when the TEXT flag is set on a v2 binary frame. */
|
|
87
|
+
export declare function transportV2IsText(flags: number): boolean;
|
|
88
|
+
/** True when the ABORT flag is set on a v2 binary frame. */
|
|
89
|
+
export declare function transportV2IsAbort(flags: number): boolean;
|
|
90
|
+
/**
|
|
91
|
+
* Parse a JSON string as a v2-specific control message. Returns the typed
|
|
92
|
+
* message or throws if the payload is not a recognised v2 control type.
|
|
93
|
+
*
|
|
94
|
+
* Callers that need to multiplex v1 `JsonMsg` and v2 control messages should
|
|
95
|
+
* inspect the `t` field first and dispatch accordingly; this helper is
|
|
96
|
+
* deliberately strict so that v2-only code paths never silently accept v1
|
|
97
|
+
* payloads.
|
|
98
|
+
*/
|
|
99
|
+
export declare function parseTransportV2ControlMsg(data: string): TransportV2ControlMsg;
|
|
100
|
+
/** Stringify a v2 control message. Pure. */
|
|
101
|
+
export declare function stringifyTransportV2ControlMsg(msg: TransportV2ControlMsg): string;
|
|
102
|
+
/**
|
|
103
|
+
* Compute the capability intersection a server should announce in its
|
|
104
|
+
* `welcome` reply, given its own supported set and the client's `hello`
|
|
105
|
+
* advertisement. Order is deterministic (sorted) so the wire output is
|
|
106
|
+
* reproducible across runs.
|
|
107
|
+
*/
|
|
108
|
+
export declare function negotiateTransportV2Capabilities(supported: readonly string[], advertised: readonly string[]): string[];
|
|
109
|
+
//# sourceMappingURL=frames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../src/bridge/v2/frames.ts"],"names":[],"mappings":"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"}
|