devflare 1.0.0-next.2 → 1.0.0-next.21
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 +15743 -1751
- package/README.md +383 -605
- package/bin/devflare.js +14 -4
- package/dist/account-05zgta47.js +475 -0
- package/dist/account-0evqkmnc.js +475 -0
- package/dist/account-0v11zbzk.js +475 -0
- package/dist/account-2w85efas.js +475 -0
- package/dist/account-61gw9s7t.js +475 -0
- package/dist/account-65sk9q34.js +475 -0
- package/dist/account-77vx7q2f.js +475 -0
- package/dist/account-7z38mgqf.js +475 -0
- package/dist/account-8wgprpbt.js +475 -0
- package/dist/account-9gt3tej1.js +475 -0
- package/dist/account-b2ag1esh.js +475 -0
- package/dist/account-bxtcz61a.js +475 -0
- package/dist/account-d43d1eqs.js +475 -0
- package/dist/account-dtndtbad.js +475 -0
- package/dist/account-e95v7f4s.js +475 -0
- package/dist/account-fbyyptg7.js +475 -0
- package/dist/account-gnzhz1c9.js +475 -0
- package/dist/account-gyfqg964.js +475 -0
- package/dist/account-m6jq6fnp.js +475 -0
- package/dist/account-mvnfagh9.js +475 -0
- package/dist/account-p0crq2gh.js +475 -0
- package/dist/account-q6pvs9d9.js +475 -0
- package/dist/account-qkcevx7a.js +475 -0
- package/dist/account-rp4zbvw1.js +475 -0
- package/dist/account-txwqg1rx.js +475 -0
- package/dist/account-w5n5bjh2.js +475 -0
- package/dist/account-zd61t0ey.js +475 -0
- package/dist/api-11gkk043.js +33 -0
- package/dist/api-2n6dd2ws.js +33 -0
- package/dist/api-dbxvch9h.js +33 -0
- package/dist/api-p9hf69kr.js +33 -0
- package/dist/api-r10j00ev.js +33 -0
- package/dist/api-senf2569.js +33 -0
- package/dist/api-swcgnp72.js +33 -0
- package/dist/api-th82mps4.js +27 -0
- package/dist/bridge/client.d.ts +34 -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 +73 -0
- package/dist/bridge/miniflare.d.ts.map +1 -1
- package/dist/bridge/protocol.d.ts +1 -1
- package/dist/bridge/protocol.d.ts.map +1 -1
- package/dist/bridge/proxy.d.ts +9 -11
- package/dist/bridge/proxy.d.ts.map +1 -1
- package/dist/bridge/serialization.d.ts +36 -16
- package/dist/bridge/serialization.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/legacy-protocol.d.ts +146 -0
- package/dist/bridge/v2/legacy-protocol.d.ts.map +1 -0
- package/dist/bridge/v2/legacy-serialization.d.ts +103 -0
- package/dist/bridge/v2/legacy-serialization.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/v2/value-serialization.d.ts +103 -0
- package/dist/bridge/v2/value-serialization.d.ts.map +1 -0
- package/dist/bridge/v2/wire.d.ts +170 -0
- 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 +4505 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +145 -0
- package/dist/build-07mjrvsn.js +53 -0
- package/dist/build-0rfr8k1s.js +53 -0
- package/dist/build-1313sg73.js +52 -0
- package/dist/build-1hnntbks.js +53 -0
- package/dist/build-1r3myv0k.js +53 -0
- package/dist/build-28561w5v.js +54 -0
- package/dist/build-2s5paw5p.js +54 -0
- package/dist/build-4c350cp7.js +54 -0
- package/dist/build-50yqpwb3.js +54 -0
- package/dist/build-55z8psd6.js +53 -0
- package/dist/build-5b9wj2p0.js +53 -0
- package/dist/build-5frhzh1m.js +53 -0
- package/dist/build-6ye9vnab.js +52 -0
- package/dist/build-8gv18jrq.js +52 -0
- package/dist/build-9bgqypy6.js +53 -0
- package/dist/build-9em4ymqn.js +52 -0
- package/dist/build-b1z6wqet.js +54 -0
- package/dist/build-e7wym63t.js +54 -0
- package/dist/build-eh3x12qc.js +52 -0
- package/dist/build-emhyycp7.js +53 -0
- package/dist/build-f1m9jn7b.js +53 -0
- package/dist/build-ffe72jjv.js +54 -0
- package/dist/build-fx90y6za.js +53 -0
- package/dist/build-ge6qp3t4.js +54 -0
- package/dist/build-h31egsze.js +53 -0
- package/dist/build-hpczwagb.js +53 -0
- package/dist/build-hpkbanpw.js +54 -0
- package/dist/build-j2re91xe.js +54 -0
- package/dist/build-j78389rg.js +52 -0
- package/dist/build-m3kckn5g.js +53 -0
- package/dist/build-mf3thcjm.js +53 -0
- package/dist/build-n3n5bv37.js +52 -0
- package/dist/build-ngfy4v5x.js +53 -0
- package/dist/build-pr843h0d.js +52 -0
- package/dist/build-qyg2b45p.js +52 -0
- package/dist/build-r6884kyt.js +53 -0
- package/dist/build-re370wkf.js +53 -0
- package/dist/build-ta8c6t11.js +54 -0
- package/dist/build-vvndgwg0.js +52 -0
- package/dist/build-wp559jkf.js +54 -0
- package/dist/build-wvjj8f28.js +54 -0
- package/dist/build-x4r67275.js +52 -0
- package/dist/build-x7maz3eb.js +54 -0
- package/dist/build-xp4pfhvv.js +52 -0
- package/dist/build-y489r2h9.js +54 -0
- package/dist/build-y6g4bvx5.js +52 -0
- package/dist/build-ypg6f2kw.js +54 -0
- package/dist/build-yts8wwgf.js +54 -0
- package/dist/build-yvn0yhwx.js +52 -0
- package/dist/build-yzkdqexs.js +54 -0
- package/dist/build-z4vmhs5c.js +53 -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 +1 -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 +110 -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 +41 -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/deploy-resources.d.ts +58 -0
- package/dist/config/deploy-resources.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 +10 -4
- 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 +2949 -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 +468 -0
- package/dist/config/schema-runtime.d.ts.map +1 -0
- package/dist/config/schema.d.ts +4056 -1875
- 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-1japnjmx.js +59 -0
- package/dist/config-287wjn1m.js +59 -0
- package/dist/config-4x6vq82e.js +59 -0
- package/dist/config-5n0avhcx.js +59 -0
- package/dist/config-6m0n7d84.js +59 -0
- package/dist/config-70s2ap5j.js +59 -0
- package/dist/config-7cf004ag.js +59 -0
- package/dist/config-7hge8ze6.js +59 -0
- package/dist/config-7rbp7aek.js +59 -0
- package/dist/config-b8xbbmta.js +59 -0
- package/dist/config-b98dp58n.js +59 -0
- package/dist/config-baee5690.js +59 -0
- package/dist/config-bczpc1ey.js +59 -0
- package/dist/config-cf3djhqy.js +59 -0
- package/dist/config-entry.d.ts +5 -0
- package/dist/config-entry.d.ts.map +1 -0
- package/dist/config-entry.js +14 -0
- package/dist/config-fhmwzaw6.js +59 -0
- package/dist/config-g9vkfa4x.js +59 -0
- package/dist/config-gpexkzth.js +59 -0
- package/dist/config-nspw7sgv.js +59 -0
- package/dist/config-ntm4x9wt.js +59 -0
- package/dist/config-nv6hfpg6.js +59 -0
- package/dist/config-pjc33wew.js +59 -0
- package/dist/config-pnz2e8s3.js +59 -0
- package/dist/config-qj5jw8km.js +93 -0
- package/dist/config-qts6nh6g.js +59 -0
- package/dist/config-sg2xrdt4.js +59 -0
- package/dist/config-vzwckat3.js +59 -0
- package/dist/config-wa7hm0w9.js +59 -0
- package/dist/config-x90dkmm7.js +59 -0
- package/dist/decorators/durable-object.d.ts.map +1 -1
- package/dist/deploy-1jfagtn9.js +1055 -0
- package/dist/deploy-1s6nv5rp.js +921 -0
- package/dist/deploy-2afw0jfg.js +1055 -0
- package/dist/deploy-2fzj68kq.js +1055 -0
- package/dist/deploy-30ph1rrd.js +921 -0
- package/dist/deploy-39dmfn9d.js +921 -0
- package/dist/deploy-44n2pshy.js +1016 -0
- package/dist/deploy-45qxpsfe.js +921 -0
- package/dist/deploy-57nzn9wj.js +1045 -0
- package/dist/deploy-64e57w1g.js +1040 -0
- package/dist/deploy-82j43vta.js +1040 -0
- package/dist/deploy-99m8qhpa.js +1041 -0
- package/dist/deploy-9twkd32f.js +1040 -0
- package/dist/deploy-a2eq2c1n.js +1040 -0
- package/dist/deploy-a3pb1qs5.js +921 -0
- package/dist/deploy-agbtfm04.js +921 -0
- package/dist/deploy-aswbtbf3.js +921 -0
- package/dist/deploy-asyryrvm.js +1055 -0
- package/dist/deploy-bqf3kxy5.js +972 -0
- package/dist/deploy-fv4z648h.js +921 -0
- package/dist/deploy-gsybda2f.js +1038 -0
- package/dist/deploy-h17nzysm.js +921 -0
- package/dist/deploy-hc89h4wg.js +1045 -0
- package/dist/deploy-hc927rw6.js +1045 -0
- package/dist/deploy-jey5pnqn.js +1040 -0
- package/dist/deploy-jf3yczsz.js +1055 -0
- package/dist/deploy-jv0yfqvk.js +1040 -0
- package/dist/deploy-kn3z6spd.js +941 -0
- package/dist/deploy-m22xmz9w.js +921 -0
- package/dist/deploy-nefp2njy.js +1038 -0
- package/dist/deploy-pnnf8tgy.js +1045 -0
- package/dist/deploy-ppp8pg6w.js +1038 -0
- package/dist/deploy-q33bw715.js +1055 -0
- package/dist/deploy-qah2eag6.js +1041 -0
- package/dist/deploy-qdq2gpad.js +1045 -0
- package/dist/deploy-r1yf8913.js +1038 -0
- package/dist/deploy-r8nam9rr.js +1038 -0
- package/dist/deploy-rrm4a0xw.js +921 -0
- package/dist/deploy-s0tfnc12.js +1040 -0
- package/dist/deploy-s636ks9k.js +1041 -0
- package/dist/deploy-sany8t54.js +1045 -0
- package/dist/deploy-skqn61j3.js +1038 -0
- package/dist/deploy-smv2870h.js +921 -0
- package/dist/deploy-sp16nxs5.js +972 -0
- package/dist/deploy-sr805bvq.js +921 -0
- package/dist/deploy-t9dehmn0.js +1041 -0
- package/dist/deploy-taxt7njz.js +1041 -0
- package/dist/deploy-tmdgecs3.js +1055 -0
- package/dist/deploy-tnfvfh9m.js +1040 -0
- package/dist/deploy-v0y8kczr.js +1055 -0
- package/dist/deploy-w5f8db4s.js +1040 -0
- package/dist/deploy-wsxcectr.js +921 -0
- package/dist/deploy-xhj6zbcx.js +1055 -0
- package/dist/deploy-xqm869nf.js +1055 -0
- package/dist/deploy-xyfbhj3v.js +1038 -0
- package/dist/deploy-yv1y5xaa.js +921 -0
- package/dist/deploy-z3ejw37k.js +1040 -0
- package/dist/dev-02tgdc4f.js +2160 -0
- package/dist/dev-0tqhveye.js +2314 -0
- package/dist/dev-1mvcts8w.js +2515 -0
- package/dist/dev-2a283xts.js +2515 -0
- package/dist/dev-3dj2gkfq.js +2314 -0
- package/dist/dev-3e0etsww.js +2314 -0
- package/dist/dev-47dk7c13.js +2314 -0
- package/dist/dev-4a2a31cm.js +2314 -0
- package/dist/dev-4w1stcn8.js +2427 -0
- package/dist/dev-5wkh1z4a.js +2188 -0
- package/dist/dev-62nhytf8.js +2505 -0
- package/dist/dev-6t22zmey.js +2350 -0
- package/dist/dev-75acm2xj.js +2478 -0
- package/dist/dev-802rg9dp.js +2515 -0
- package/dist/dev-89p1sdv7.js +2395 -0
- package/dist/dev-8d1gxjky.js +2427 -0
- package/dist/dev-8yawx3cv.js +2314 -0
- package/dist/dev-9h4p8a0c.js +2393 -0
- package/dist/dev-9xmttj4c.js +2314 -0
- package/dist/dev-at6gy2td.js +2427 -0
- package/dist/dev-bgpxrwms.js +2551 -0
- package/dist/dev-bkbz97z0.js +2314 -0
- package/dist/dev-ct3344kv.js +2160 -0
- package/dist/dev-d1bb2t0f.js +2515 -0
- package/dist/{dev-qnxet3j9.js → dev-dg8dh5c1.js} +947 -809
- package/dist/dev-dr5jb965.js +2427 -0
- package/dist/dev-dwry8494.js +2489 -0
- package/dist/dev-e4sjqtbq.js +2314 -0
- package/dist/dev-ecq26mg4.js +2350 -0
- package/dist/dev-ef237vgp.js +2324 -0
- package/dist/dev-enbdg4st.js +2314 -0
- package/dist/dev-g6112y4w.js +2515 -0
- package/dist/dev-h2kneh95.js +2496 -0
- package/dist/dev-jcrxg8hq.js +2160 -0
- package/dist/dev-jk0gqges.js +2432 -0
- package/dist/dev-k62936am.js +2314 -0
- package/dist/dev-k8ptbvrs.js +2160 -0
- package/dist/dev-kqm107h4.js +2422 -0
- package/dist/dev-kybq3mwr.js +2489 -0
- package/dist/dev-kzs65xcr.js +2551 -0
- package/dist/dev-n0gx7eya.js +2350 -0
- package/dist/dev-n23m6rtb.js +2314 -0
- package/dist/dev-n8qndkyg.js +2512 -0
- package/dist/dev-ny8fmkzg.js +2432 -0
- package/dist/dev-p1c65cga.js +2386 -0
- package/dist/dev-p32fkbwf.js +2489 -0
- package/dist/dev-p4fjbb4h.js +2395 -0
- package/dist/dev-pnfcv79z.js +2160 -0
- package/dist/dev-qm9d4mfh.js +2478 -0
- package/dist/dev-qnrrv5ey.js +2393 -0
- package/dist/dev-qqysg50t.js +2427 -0
- package/dist/dev-r9f3n11q.js +2410 -0
- package/dist/dev-rcthnse5.js +2473 -0
- package/dist/dev-s0815dw4.js +2427 -0
- package/dist/dev-s4tpkg60.js +2314 -0
- package/dist/dev-s82fcesg.js +2314 -0
- package/dist/dev-s9sz53me.js +2401 -0
- package/dist/dev-sdka7z0d.js +2427 -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 +35 -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 +55 -0
- package/dist/dev-server/vite-utils.d.ts.map +1 -0
- 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-t3tjscah.js +2350 -0
- package/dist/dev-t50kdb1j.js +2338 -0
- package/dist/dev-t5xf55pt.js +2314 -0
- package/dist/dev-t63c44bb.js +2314 -0
- package/dist/dev-tgwja5mz.js +2496 -0
- package/dist/dev-wg3d38sy.js +2433 -0
- package/dist/dev-wh4rfgsh.js +2427 -0
- package/dist/dev-wjh8gdd1.js +2284 -0
- package/dist/dev-xzxy9qvq.js +2314 -0
- package/dist/dev-yymaq4ph.js +2392 -0
- package/dist/dev-zg2w2ve3.js +2422 -0
- package/dist/dev-zgx7fhe9.js +2553 -0
- package/dist/dev-zsb2xk1x.js +2427 -0
- package/dist/dev-zty3yhzg.js +2324 -0
- package/dist/doctor-0a2brpyz.js +259 -0
- package/dist/doctor-2shhdak6.js +245 -0
- package/dist/doctor-3mqavqg3.js +245 -0
- package/dist/doctor-5g73w40j.js +245 -0
- package/dist/doctor-5nek32fz.js +245 -0
- package/dist/doctor-7ra1w0sk.js +245 -0
- package/dist/doctor-ak830a0k.js +245 -0
- package/dist/doctor-bye3cs8a.js +245 -0
- package/dist/doctor-c5m9pmwq.js +245 -0
- package/dist/doctor-cqfkgxvw.js +245 -0
- package/dist/doctor-e1h9mhzp.js +245 -0
- package/dist/doctor-fmqsrafk.js +245 -0
- package/dist/doctor-gamefzcs.js +245 -0
- package/dist/doctor-hgs7wr5g.js +245 -0
- package/dist/doctor-j8ytsy94.js +245 -0
- package/dist/doctor-mcmkgp6e.js +245 -0
- package/dist/doctor-qb6m2exc.js +245 -0
- package/dist/doctor-qq4tsh8q.js +245 -0
- package/dist/doctor-rn53ctfs.js +245 -0
- package/dist/doctor-tecv869a.js +245 -0
- package/dist/doctor-wg0245pe.js +245 -0
- package/dist/doctor-z3jfqxtz.js +245 -0
- package/dist/{durable-object-t4kbb0yt.js → durable-object-4hey8fgy.js} +1 -1
- package/dist/durable-object-v3gsnybk.js +13 -0
- package/dist/durable-object-yt8v1dyn.js +13 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/index-01kehw41.js +348 -0
- package/dist/index-05pbj4hy.js +1193 -0
- package/dist/index-06bg0z9y.js +185 -0
- package/dist/index-0d7tw5r4.js +136 -0
- package/dist/index-0krb65s3.js +215 -0
- package/dist/index-0m6e4mxz.js +133 -0
- package/dist/index-0mantew0.js +513 -0
- package/dist/index-0mezg6ar.js +1372 -0
- package/dist/index-0tk2rs0q.js +185 -0
- package/dist/index-0vah20er.js +1410 -0
- package/dist/index-0wa0ebm1.js +68 -0
- package/dist/index-124e9t4t.js +232 -0
- package/dist/index-1546yrn0.js +74 -0
- package/dist/index-15fpa5tx.js +232 -0
- package/dist/index-1714y3cz.js +1410 -0
- package/dist/index-18mp5v50.js +538 -0
- package/dist/index-195tc6qh.js +1372 -0
- package/dist/index-1bg8w2gf.js +52 -0
- package/dist/index-1d4jg11n.js +542 -0
- package/dist/index-1e2qtrmj.js +188 -0
- package/dist/index-1ghhgb9d.js +74 -0
- package/dist/index-1nhd9nkd.js +232 -0
- package/dist/index-1p814k7s.js +227 -0
- package/dist/index-1qs5gcm7.js +895 -0
- package/dist/index-1wn8mjep.js +808 -0
- package/dist/index-1xhd5czz.js +185 -0
- package/dist/index-29k04v43.js +574 -0
- package/dist/index-2a2g4fwp.js +993 -0
- package/dist/index-2bmtj21z.js +192 -0
- package/dist/index-2dpmd14d.js +52 -0
- package/dist/index-2fa0afdp.js +1372 -0
- package/dist/index-2jywf4pz.js +1372 -0
- package/dist/index-2qhk9nbx.js +1372 -0
- package/dist/index-2rcrefqd.js +1372 -0
- package/dist/index-2t2m5148.js +1372 -0
- package/dist/index-2vbzamev.js +437 -0
- package/dist/index-2vdep9h0.js +993 -0
- package/dist/index-2vq6bveq.js +574 -0
- package/dist/index-2y90j9cz.js +74 -0
- package/dist/index-33ep0z9x.js +385 -0
- package/dist/index-36h8gkhb.js +1088 -0
- package/dist/index-37jgbaw6.js +1372 -0
- package/dist/index-380ncsqc.js +977 -0
- package/dist/index-38fq7pww.js +560 -0
- package/dist/index-3bxqn033.js +1410 -0
- package/dist/index-3e1x39fc.js +365 -0
- package/dist/index-3e7by9sy.js +223 -0
- package/dist/index-3edvz3hs.js +124 -0
- package/dist/index-3egad6wm.js +538 -0
- package/dist/index-3f8rzmjw.js +232 -0
- package/dist/index-3jme4hgw.js +1234 -0
- package/dist/index-3p7s9mk9.js +360 -0
- package/dist/index-3vd4r37r.js +1372 -0
- package/dist/index-3vgn5e89.js +1682 -0
- package/dist/index-3x7k3t0f.js +513 -0
- package/dist/index-3xfe2dst.js +399 -0
- package/dist/index-464j1zb4.js +513 -0
- package/dist/index-47w35sft.js +244 -0
- package/dist/index-48rxsj95.js +365 -0
- package/dist/index-4bezcdd1.js +385 -0
- package/dist/index-4by4c7rm.js +52 -0
- package/dist/index-4fp11z9e.js +973 -0
- package/dist/index-4knecthc.js +70 -0
- package/dist/index-4phjwd6h.js +412 -0
- package/dist/index-4z5jrw0j.js +594 -0
- package/dist/index-502y7w13.js +538 -0
- package/dist/index-50em8s6c.js +898 -0
- package/dist/index-50mxxb4q.js +185 -0
- package/dist/index-51mzqy0d.js +895 -0
- package/dist/index-53pqqpq9.js +74 -0
- package/dist/index-5achzspr.js +185 -0
- package/dist/index-5ef3jmv7.js +1372 -0
- package/dist/index-5enq8ntr.js +1766 -0
- package/dist/index-5eswe8yv.js +844 -0
- package/dist/index-5fnq9r9m.js +1410 -0
- package/dist/index-5gevxfgs.js +513 -0
- package/dist/index-5gmf048z.js +817 -0
- package/dist/index-5jtkxpjf.js +971 -0
- package/dist/index-5m85bd9x.js +168 -0
- package/dist/index-5n5nn0a8.js +264 -0
- package/dist/index-5p3bgjwr.js +808 -0
- package/dist/index-5vzcszr2.js +1230 -0
- package/dist/index-5w77r4w9.js +513 -0
- package/dist/index-5w9f2b17.js +695 -0
- package/dist/index-627srx16.js +45 -0
- package/dist/index-62b3gt2g.js +12 -0
- package/dist/index-62srkqcm.js +168 -0
- package/dist/index-63cgqe43.js +1372 -0
- package/dist/index-65e7xx1a.js +19 -0
- package/dist/index-65qrje14.js +185 -0
- package/dist/index-666tdx14.js +895 -0
- package/dist/index-66sx3b3v.js +385 -0
- package/dist/index-678j0n13.js +74 -0
- package/dist/index-6bqgf5x8.js +227 -0
- package/dist/index-6ftrth7n.js +1218 -0
- package/dist/index-6g90pvxa.js +215 -0
- package/dist/index-6h8xbs75.js +44 -0
- package/dist/index-6j4m5x2d.js +1372 -0
- package/dist/index-6jwpke14.js +385 -0
- package/dist/index-6knsjvxh.js +1372 -0
- package/dist/index-6kwq6yf8.js +979 -0
- package/dist/index-6mg4yvc6.js +74 -0
- package/dist/index-6phry941.js +133 -0
- package/dist/index-6r59wbek.js +232 -0
- package/dist/index-6sf815ps.js +74 -0
- package/dist/index-6xknvbyk.js +1088 -0
- package/dist/index-6zd89k6y.js +1230 -0
- package/dist/index-71rwg0cn.js +264 -0
- package/dist/index-75ex2m0x.js +695 -0
- package/dist/index-79exzs3q.js +1218 -0
- package/dist/index-7bxj118m.js +264 -0
- package/dist/index-7c6np4mq.js +397 -0
- package/dist/index-7cm339qz.js +133 -0
- package/dist/index-7e359eb5.js +895 -0
- package/dist/index-7ef3ktz5.js +1372 -0
- package/dist/index-7eqyr4j8.js +70 -0
- package/dist/index-7hpjfdzh.js +185 -0
- package/dist/index-7k278fgz.js +273 -0
- package/dist/index-7kazxkjt.js +1372 -0
- package/dist/index-7m0x8m9r.js +844 -0
- package/dist/index-7p74smg8.js +1372 -0
- package/dist/index-7q8fke3k.js +188 -0
- package/dist/index-7qk6eafn.js +1682 -0
- package/dist/index-7r7dfpcm.js +133 -0
- package/dist/index-7vbjt6ba.js +805 -0
- package/dist/index-7z4b0vgd.js +470 -0
- package/dist/index-8052df4m.js +627 -0
- package/dist/index-82epjzrr.js +1410 -0
- package/dist/index-82f1z98k.js +41 -0
- package/dist/index-82xn4azv.js +74 -0
- package/dist/index-82z7rvz6.js +1238 -0
- package/dist/index-83wns7cz.js +70 -0
- package/dist/index-852945d4.js +413 -0
- package/dist/index-86rvj79f.js +133 -0
- package/dist/index-88tcq0t4.js +542 -0
- package/dist/index-8atc1yb9.js +68 -0
- package/dist/index-8evn52g1.js +1218 -0
- package/dist/index-8jkf4nsd.js +695 -0
- package/dist/index-8nx4ce3e.js +133 -0
- package/dist/index-8p7rxkbs.js +1426 -0
- package/dist/index-8q1bcnrh.js +1372 -0
- package/dist/index-8t5gynct.js +971 -0
- package/dist/index-8tj0awnv.js +476 -0
- package/dist/index-8x745h59.js +1069 -0
- package/dist/index-905svbb6.js +470 -0
- package/dist/index-94cb0sac.js +1372 -0
- package/dist/index-95mmvbw7.js +538 -0
- package/dist/index-97x94h0m.js +438 -0
- package/dist/index-9an9qqr1.js +728 -0
- package/dist/index-9bawzcny.js +574 -0
- package/dist/index-9bjjqdfc.js +236 -0
- package/dist/index-9d125myk.js +1372 -0
- package/dist/index-9d7x3vfr.js +236 -0
- package/dist/index-9fbtk7gv.js +817 -0
- package/dist/index-9gg0kqw0.js +470 -0
- package/dist/index-9nf8zs4p.js +1069 -0
- package/dist/index-9ryw7mcw.js +971 -0
- package/dist/{index-gz1gndna.js → index-9wt9x09k.js} +42 -62
- package/dist/index-a3e13a7m.js +478 -0
- package/dist/index-a6j44jmr.js +1372 -0
- package/dist/index-a75ejnvt.js +1711 -0
- package/dist/index-aabgympv.js +39 -0
- package/dist/index-ab2nck1h.js +1372 -0
- package/dist/index-abrqnq3e.js +488 -0
- package/dist/index-acwbmagz.js +412 -0
- package/dist/index-afjbpgb1.js +1218 -0
- package/dist/index-aqjdaem7.js +74 -0
- package/dist/index-aqrwyy57.js +288 -0
- package/dist/index-at89fpde.js +470 -0
- package/dist/index-awr0tp6p.js +313 -0
- package/dist/index-b1be9bdh.js +1372 -0
- package/dist/index-b1xs3wc4.js +513 -0
- package/dist/index-b50x7seh.js +513 -0
- package/dist/index-b5ra8w3q.js +52 -0
- package/dist/index-b6448fd0.js +133 -0
- package/dist/index-b64sbzgv.js +884 -0
- package/dist/index-b7r8ntpm.js +1372 -0
- package/dist/index-b9j55r7q.js +240 -0
- package/dist/index-ba9gyy13.js +513 -0
- package/dist/index-bb66mn7p.js +52 -0
- package/dist/index-bc5pvbbd.js +1193 -0
- package/dist/index-bdatd1za.js +1372 -0
- package/dist/index-bj0mk3dw.js +74 -0
- package/dist/index-bj3a8dr0.js +1372 -0
- package/dist/index-bj5avaba.js +109 -0
- package/dist/index-bk3eez1g.js +513 -0
- package/dist/index-btjx137w.js +774 -0
- package/dist/index-btrfqp9h.js +133 -0
- package/dist/index-bx6gangy.js +402 -0
- package/dist/index-c0tc0yts.js +471 -0
- package/dist/index-c0whkev9.js +200 -0
- package/dist/index-c3nxftnp.js +699 -0
- package/dist/index-c643s0gv.js +488 -0
- package/dist/index-ca96qkva.js +1372 -0
- package/dist/index-cdtzkedk.js +993 -0
- package/dist/index-cejgenma.js +1372 -0
- package/dist/index-cp8jt5pr.js +52 -0
- package/dist/index-cpz69pek.js +1372 -0
- package/dist/index-crrdegk5.js +456 -0
- package/dist/index-cskszwkx.js +1372 -0
- package/dist/index-cxf22a0s.js +74 -0
- package/dist/index-cy3c3w81.js +270 -0
- package/dist/index-d2md1j3d.js +185 -0
- package/dist/index-d5dgb1j6.js +74 -0
- package/dist/index-da397xcx.js +1372 -0
- package/dist/index-damyy8bw.js +1372 -0
- package/dist/index-dbr6bfz6.js +528 -0
- package/dist/index-dd1g0g7e.js +360 -0
- package/dist/index-dd6fwwmq.js +456 -0
- package/dist/index-dgww0ewn.js +574 -0
- package/dist/index-dh1954bp.js +52 -0
- package/dist/index-djp2wd1f.js +1372 -0
- package/dist/index-dktb9az5.js +1372 -0
- package/dist/index-dm9q84c7.js +360 -0
- package/dist/index-dmbdj6va.js +805 -0
- package/dist/index-dmf76tac.js +1372 -0
- package/dist/index-dphr32gc.js +420 -0
- package/dist/index-dxh2qyyw.js +52 -0
- package/dist/index-dzayfxjy.js +492 -0
- package/dist/index-e05q77kt.js +397 -0
- package/dist/index-e11b1fb2.js +495 -0
- package/dist/index-e3zvspqj.js +968 -0
- package/dist/index-e4tzzbn9.js +1372 -0
- package/dist/index-e5ct1gwb.js +1372 -0
- package/dist/index-e7ptcz1a.js +1372 -0
- package/dist/index-e7wt0203.js +513 -0
- package/dist/index-ebwsvf9t.js +365 -0
- package/dist/index-ed73jn3d.js +185 -0
- package/dist/index-ed7n5d07.js +185 -0
- package/dist/index-ejs2a4kd.js +513 -0
- package/dist/index-esjrgt3y.js +467 -0
- package/dist/index-ev03khsd.js +513 -0
- package/dist/index-f1gsqm54.js +168 -0
- package/dist/index-f1yshy4s.js +412 -0
- package/dist/index-f51mkh13.js +1088 -0
- package/dist/index-f86n1fpd.js +55 -0
- package/dist/index-f90314kt.js +52 -0
- package/dist/index-f9mhsept.js +185 -0
- package/dist/index-fa6zwffw.js +70 -0
- package/dist/index-fama7kpt.js +52 -0
- package/dist/index-fgk87mk2.js +1067 -0
- package/dist/index-fkyvxe4b.js +968 -0
- package/dist/index-fnk0tkw7.js +412 -0
- package/dist/index-g0h40xke.js +513 -0
- package/dist/index-g0rqh52c.js +385 -0
- package/dist/index-g170d619.js +385 -0
- package/dist/index-g3qtxkms.js +881 -0
- package/dist/index-g5aq66bj.js +1534 -0
- package/dist/index-gactvqcs.js +467 -0
- package/dist/index-gaew61v4.js +470 -0
- package/dist/index-gba371j7.js +542 -0
- package/dist/index-gegyyfnw.js +1372 -0
- package/dist/index-get7he2s.js +133 -0
- package/dist/index-gj5qh491.js +54 -0
- package/dist/index-gn5wy09x.js +205 -0
- package/dist/index-gq39t0rx.js +895 -0
- package/dist/index-gtbgzwfs.js +264 -0
- package/dist/index-gtpz0gkz.js +185 -0
- package/dist/index-h1s66pmp.js +52 -0
- package/dist/index-h5dqna7q.js +1410 -0
- package/dist/index-h8r2d8y5.js +366 -0
- package/dist/index-heeqwrfd.js +385 -0
- package/dist/index-hheb5dyt.js +192 -0
- package/dist/index-hjs9j2g9.js +895 -0
- package/dist/index-hjz2x9nq.js +441 -0
- package/dist/index-hkex7ns5.js +513 -0
- package/dist/index-hmbctwv6.js +517 -0
- package/dist/index-hn5nbxbt.js +147 -0
- package/dist/index-hpjh0qjx.js +1723 -0
- package/dist/index-hpwa6vsw.js +239 -0
- package/dist/index-hpzasdhw.js +513 -0
- package/dist/index-hqdr9wdm.js +74 -0
- package/dist/index-hrvz8d26.js +1372 -0
- package/dist/index-hs6ekcfs.js +412 -0
- package/dist/index-hyvhnf6r.js +971 -0
- package/dist/index-j2kc5rbv.js +895 -0
- package/dist/index-j2xdxwsz.js +133 -0
- package/dist/index-j47hhb3r.js +694 -0
- package/dist/index-j5aphr5x.js +185 -0
- package/dist/index-j68v36q1.js +188 -0
- package/dist/index-j7cf22x7.js +968 -0
- package/dist/index-j7xxrbnr.js +694 -0
- package/dist/index-jdzrvnfj.js +52 -0
- package/dist/index-jg720mq7.js +476 -0
- package/dist/index-jptqxkew.js +470 -0
- package/dist/index-jrzddxvt.js +2167 -0
- package/dist/index-jsymy3mb.js +781 -0
- package/dist/index-jwvy32xk.js +188 -0
- package/dist/index-jxe1b19v.js +133 -0
- package/dist/index-jz96ry5g.js +513 -0
- package/dist/index-k6wtsgs1.js +971 -0
- package/dist/index-k7m5f1dg.js +200 -0
- package/dist/index-kawa49m8.js +371 -0
- package/dist/index-key4e5c9.js +168 -0
- package/dist/index-kgstnk6g.js +239 -0
- package/dist/index-khbmdrn2.js +884 -0
- package/dist/index-khnw972v.js +117 -0
- package/dist/index-kpzfwex6.js +264 -0
- package/dist/index-kse4gn99.js +74 -0
- package/dist/index-ktscz0r2.js +264 -0
- package/dist/index-kwqff3ba.js +1410 -0
- package/dist/index-kxc4gtyt.js +574 -0
- package/dist/index-kybmjvad.js +1212 -0
- package/dist/index-kzm9cea8.js +185 -0
- package/dist/index-m2d74gqg.js +808 -0
- package/dist/index-m2v0fj08.js +74 -0
- package/dist/index-m56w7mjt.js +513 -0
- package/dist/index-m95ha3n4.js +264 -0
- package/dist/index-ma151p8g.js +264 -0
- package/dist/index-mg8vwqxf.js +514 -0
- package/dist/index-mhdsywhs.js +264 -0
- package/dist/index-mjgx910r.js +895 -0
- package/dist/index-mjve6tqn.js +447 -0
- package/dist/index-mkrmaea3.js +185 -0
- package/dist/index-mkxnyyjn.js +264 -0
- package/dist/index-mkxzgn0q.js +1372 -0
- package/dist/index-mp5mrst6.js +1372 -0
- package/dist/index-ms15cr86.js +513 -0
- package/dist/index-mt99xkc6.js +133 -0
- package/dist/index-mttv6k25.js +881 -0
- package/dist/index-myxfx52v.js +385 -0
- package/dist/index-mzmq3v0d.js +1088 -0
- package/dist/index-mzw7732t.js +74 -0
- package/dist/index-n3mjwz22.js +188 -0
- package/dist/index-n3yksgz0.js +1372 -0
- package/dist/index-n4jr3dmk.js +484 -0
- package/dist/index-n5drt64b.js +74 -0
- package/dist/index-n8frmffg.js +264 -0
- package/dist/index-n8k8chde.js +694 -0
- package/dist/index-na796ka6.js +994 -0
- package/dist/index-nbs4q0qg.js +1218 -0
- package/dist/index-newpq2zf.js +968 -0
- package/dist/index-nexg9p7j.js +1271 -0
- package/dist/index-nfm8tb5n.js +74 -0
- package/dist/index-ng9n3znd.js +1372 -0
- package/dist/index-nga2tg9z.js +1372 -0
- package/dist/index-ngbzr9gz.js +805 -0
- package/dist/index-nh90nk7j.js +380 -0
- package/dist/index-nhbkm2ba.js +467 -0
- package/dist/index-njnmfxm5.js +1372 -0
- package/dist/index-nqma24j3.js +385 -0
- package/dist/index-nrfhk0k5.js +1088 -0
- package/dist/index-ntddf5d9.js +993 -0
- package/dist/index-nte9n8w9.js +538 -0
- package/dist/index-ntxp7ke1.js +264 -0
- package/dist/index-nwxnmw41.js +264 -0
- package/dist/index-nxkesg55.js +68 -0
- package/dist/index-p0zppqxm.js +467 -0
- package/dist/index-p1xe5eem.js +513 -0
- package/dist/index-p296ban8.js +191 -0
- package/dist/index-p477xm52.js +385 -0
- package/dist/index-p7q23nce.js +1031 -0
- package/dist/index-p8nmkrgw.js +470 -0
- package/dist/index-p97s12vf.js +904 -0
- package/dist/index-p9hvv0yd.js +401 -0
- package/dist/index-pac7wv88.js +307 -0
- package/dist/index-pkxf6h87.js +895 -0
- package/dist/index-pqp4312v.js +52 -0
- package/dist/index-pt49cgjv.js +1426 -0
- package/dist/index-ptp2pfq1.js +52 -0
- package/dist/index-pw9jn6kz.js +574 -0
- package/dist/index-pyeycp3f.js +74 -0
- package/dist/index-q23xf3vr.js +479 -0
- package/dist/index-q31ne0xa.js +412 -0
- package/dist/index-q34rvh5a.js +247 -0
- package/dist/index-q5errwrj.js +904 -0
- package/dist/index-q5nhzc9m.js +1217 -0
- package/dist/index-q8f4kawk.js +204 -0
- package/dist/index-qer8zv2r.js +997 -0
- package/dist/index-qf2dkqxh.js +249 -0
- package/dist/index-qhyy018y.js +467 -0
- package/dist/index-qmhdydwy.js +70 -0
- package/dist/index-qmtdf7k5.js +639 -0
- package/dist/index-qpmvca5j.js +470 -0
- package/dist/index-qr96vaj1.js +52 -0
- package/dist/index-qtyhg3dn.js +904 -0
- package/dist/index-qwgr4q7s.js +37 -0
- package/dist/index-qye17gq5.js +264 -0
- package/dist/index-r0839f5k.js +133 -0
- package/dist/index-r1rqg72v.js +1372 -0
- package/dist/index-rab2dfh3.js +494 -0
- package/dist/index-rbckga8p.js +971 -0
- package/dist/index-rbxb5x2w.js +1372 -0
- package/dist/index-rck779bj.js +739 -0
- package/dist/index-rfn2gt5f.js +1658 -0
- package/dist/index-rg21w26a.js +470 -0
- package/dist/index-rgcz45t0.js +1372 -0
- package/dist/index-rhnd376q.js +133 -0
- package/dist/index-rjc5z3w6.js +971 -0
- package/dist/index-rkhtayd6.js +385 -0
- package/dist/index-rm8srzmv.js +371 -0
- package/dist/index-rmhk5j03.js +968 -0
- package/dist/index-rp0aye39.js +1426 -0
- package/dist/index-rp4t86bt.js +993 -0
- package/dist/index-rpq5ktdy.js +264 -0
- package/dist/index-rpsmhdd4.js +1218 -0
- package/dist/index-rqpakjyr.js +470 -0
- package/dist/index-rttk33x6.js +232 -0
- package/dist/index-rwa82e89.js +385 -0
- package/dist/index-rz185crv.js +695 -0
- package/dist/index-rz7rx80s.js +1410 -0
- package/dist/index-s22verzj.js +1218 -0
- package/dist/index-s2s3g1nt.js +133 -0
- package/dist/index-s37h3jgk.js +572 -0
- package/dist/index-s7ytytth.js +781 -0
- package/dist/index-sb705m7d.js +52 -0
- package/dist/index-sefnpzwa.js +185 -0
- package/dist/index-sgxw0xzd.js +513 -0
- package/dist/index-stc0caq6.js +1009 -0
- package/dist/index-stgn34cr.js +148 -0
- package/dist/index-svz82w9h.js +513 -0
- package/dist/index-sx49e8x9.js +884 -0
- package/dist/index-sxadwvw9.js +185 -0
- package/dist/index-sxn223fz.js +1372 -0
- package/dist/index-sy0c2mh0.js +1372 -0
- package/dist/index-syeh1hca.js +264 -0
- package/dist/index-syscwrjp.js +1576 -0
- package/dist/index-t14zr0ys.js +1063 -0
- package/dist/index-t18wyhgf.js +418 -0
- package/dist/index-t4fhcx1n.js +71 -0
- package/dist/index-td4hbgj5.js +1372 -0
- package/dist/index-tjc99447.js +68 -0
- package/dist/index-tknbyxzn.js +2202 -0
- package/dist/index-tkvt9mmq.js +484 -0
- package/dist/index-tmmcf4m6.js +808 -0
- package/dist/index-tpgs5v64.js +366 -0
- package/dist/index-tt4fsv91.js +412 -0
- package/dist/{index-07q6yxyc.js → index-tte89s31.js} +30 -29
- package/dist/index-tvjg7swe.js +1372 -0
- package/dist/index-txndxr4w.js +513 -0
- package/dist/index-tyh5jc55.js +990 -0
- package/dist/index-tyt0wa52.js +470 -0
- package/dist/index-tyt3wcfr.js +1372 -0
- package/dist/index-v35460hf.js +574 -0
- package/dist/index-v3znz08m.js +968 -0
- package/dist/index-v78xbj6n.js +808 -0
- package/dist/index-v7q00d1e.js +1410 -0
- package/dist/index-v915brjk.js +1372 -0
- package/dist/index-v922fmsx.js +52 -0
- package/dist/index-v9w1bbfe.js +842 -0
- package/dist/index-vbbgtm8p.js +513 -0
- package/dist/index-vcjgrmzj.js +456 -0
- package/dist/{index-pf5s73n9.js → index-vdewcg1r.js} +243 -385
- package/dist/index-vhqww6tt.js +307 -0
- package/dist/index-vkkmx4xe.js +1372 -0
- package/dist/index-vrps1gky.js +2202 -0
- package/dist/index-vse8620z.js +1372 -0
- package/dist/index-vt803j3b.js +1372 -0
- package/dist/index-vtjp46c3.js +52 -0
- package/dist/index-vxhxk8mf.js +904 -0
- package/dist/index-w3azfsa0.js +695 -0
- package/dist/index-w4c9vmvg.js +1517 -0
- package/dist/index-w4tq35dn.js +52 -0
- package/dist/index-w5qxvxzq.js +991 -0
- package/dist/index-w5sedpqn.js +986 -0
- package/dist/index-waha3chv.js +1230 -0
- package/dist/index-wdxww0kj.js +1006 -0
- package/dist/index-wdy5y07x.js +1372 -0
- package/dist/index-wf9pnh6j.js +385 -0
- package/dist/{index-z14anrqp.js → index-wfbfz02q.js} +14 -15
- package/dist/index-wnnbbbkt.js +1192 -0
- package/dist/index-wqd8n2qk.js +574 -0
- package/dist/index-wvcmvtjf.js +1372 -0
- package/dist/index-x0jbntp0.js +470 -0
- package/dist/index-x12e6fzy.js +476 -0
- package/dist/index-x6scc3nx.js +70 -0
- package/dist/index-x8e2wsbv.js +971 -0
- package/dist/index-xagpz645.js +2199 -0
- package/dist/index-xbth1r6e.js +572 -0
- package/dist/index-xec4p3v5.js +560 -0
- package/dist/index-xgfyxpfs.js +1218 -0
- package/dist/index-xm9fqhcb.js +447 -0
- package/dist/index-xm9hp9xc.js +1372 -0
- package/dist/index-xp7zkxcx.js +1372 -0
- package/dist/index-xrbj0ebk.js +185 -0
- package/dist/index-xskax7r3.js +50 -0
- package/dist/index-xvk5n96q.js +694 -0
- package/dist/index-xy1jvt4w.js +1229 -0
- package/dist/index-xzg9hhf3.js +470 -0
- package/dist/index-xzpg0kaz.js +70 -0
- package/dist/index-y1d8za14.js +196 -0
- package/dist/index-y3q6qvv3.js +316 -0
- package/dist/index-y44ts1dk.js +52 -0
- package/dist/index-y59hnmd0.js +132 -0
- package/dist/index-y5nt1wjb.js +971 -0
- package/dist/index-y7mkb00x.js +133 -0
- package/dist/index-y82b8w14.js +1372 -0
- package/dist/index-yb07t3c5.js +1372 -0
- package/dist/index-yc3xz3vm.js +431 -0
- package/dist/index-yeaqrevg.js +1372 -0
- package/dist/index-ygwsd1nn.js +438 -0
- package/dist/index-yhdavjk7.js +371 -0
- package/dist/index-yjhns95b.js +188 -0
- package/dist/index-yk23p7he.js +1372 -0
- package/dist/index-ykfgpsmm.js +190 -0
- package/dist/index-ymz3cfab.js +968 -0
- package/dist/index-yq9g1sq7.js +264 -0
- package/dist/index-ys5q9ch9.js +366 -0
- package/dist/index-yt0n4p46.js +973 -0
- package/dist/index-ytq1t9jx.js +232 -0
- package/dist/index-ywmtmf3b.js +513 -0
- package/dist/index-yzb44q6d.js +1372 -0
- package/dist/index-z043xk61.js +133 -0
- package/dist/index-z0gsf674.js +431 -0
- package/dist/index-z32n0ndp.js +1372 -0
- package/dist/index-z40mjts9.js +212 -0
- package/dist/index-z4qgk76w.js +1372 -0
- package/dist/index-z5k5bjc7.js +1218 -0
- package/dist/index-z73sytma.js +895 -0
- package/dist/index-z8njfj2g.js +385 -0
- package/dist/index-z9fjnwa8.js +397 -0
- package/dist/{index-1xpj0m4r.js → index-z9gy8w6b.js} +1 -1
- package/dist/index-zapkc14c.js +264 -0
- package/dist/index-zes6w8yr.js +185 -0
- package/dist/index-zgrqest7.js +695 -0
- package/dist/index-zjv6apef.js +1410 -0
- package/dist/index-zsngz131.js +1372 -0
- package/dist/index-zt22fe2j.js +54 -0
- package/dist/index-zxhc6sb0.js +192 -0
- package/dist/index.d.ts +2 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -269
- package/dist/{init-f9mgmew3.js → init-cwpergap.js} +63 -69
- package/dist/init-wfh63bfz.js +180 -0
- package/dist/login-1amyp1jy.js +77 -0
- package/dist/login-1cdwn1dj.js +77 -0
- package/dist/login-456h8jk3.js +77 -0
- package/dist/login-4n470c4j.js +77 -0
- package/dist/login-4sh7s849.js +77 -0
- package/dist/login-5dmkf0pz.js +77 -0
- package/dist/login-7yex6ppq.js +77 -0
- package/dist/login-83bjfhvz.js +77 -0
- package/dist/login-88tp4gbb.js +77 -0
- package/dist/login-b51faqpc.js +77 -0
- package/dist/login-bxyjqmbj.js +77 -0
- package/dist/login-c4649qss.js +77 -0
- package/dist/login-d80a2qxd.js +77 -0
- package/dist/login-ddw888xb.js +77 -0
- package/dist/login-dp0napaz.js +77 -0
- package/dist/login-e7pytkdc.js +77 -0
- package/dist/login-fe0brfcr.js +77 -0
- package/dist/login-h7sm5trm.js +77 -0
- package/dist/login-j3r6z2t4.js +77 -0
- package/dist/login-jkfkdjg4.js +77 -0
- package/dist/login-kch6f2yj.js +77 -0
- package/dist/login-pmqh94ws.js +77 -0
- package/dist/login-rc82x5j8.js +77 -0
- package/dist/login-tvppwyx2.js +77 -0
- package/dist/login-vd0m3xr4.js +77 -0
- package/dist/login-w76jx22q.js +77 -0
- package/dist/login-ze7y36rc.js +77 -0
- package/dist/previews-02jmcwft.js +1214 -0
- package/dist/previews-2wfvsjfy.js +1337 -0
- package/dist/previews-31bq82km.js +1225 -0
- package/dist/previews-31feb8r3.js +1337 -0
- package/dist/previews-3w4pxqby.js +1337 -0
- package/dist/previews-62pcvvpe.js +1214 -0
- package/dist/previews-6fepv94a.js +1225 -0
- package/dist/previews-76fxkp59.js +1214 -0
- package/dist/previews-844bp6kf.js +1214 -0
- package/dist/previews-8amn46qv.js +1214 -0
- package/dist/previews-93ttrf5f.js +1337 -0
- package/dist/previews-a5xbkksy.js +1214 -0
- package/dist/previews-bdrefjzx.js +1337 -0
- package/dist/previews-bgnryzav.js +1214 -0
- package/dist/previews-bkhv9dnr.js +1214 -0
- package/dist/previews-c2c64z5m.js +1214 -0
- package/dist/previews-cfcn56b4.js +1337 -0
- package/dist/previews-e4wgscsb.js +1214 -0
- package/dist/previews-ew4reetn.js +1214 -0
- package/dist/previews-hzqke1fg.js +1214 -0
- package/dist/previews-j8wa3sge.js +1214 -0
- package/dist/previews-k5n6vhpm.js +1214 -0
- package/dist/previews-mssq1hrm.js +1337 -0
- package/dist/previews-n4sdyxa5.js +1214 -0
- package/dist/previews-npwrwb0b.js +1214 -0
- package/dist/previews-q8ph9wbe.js +1214 -0
- package/dist/previews-rfswrh7q.js +1214 -0
- package/dist/previews-s0y5yp8s.js +1214 -0
- package/dist/previews-s5b6mnz5.js +1214 -0
- package/dist/previews-sdte4984.js +1200 -0
- package/dist/previews-t5tdm6t0.js +1225 -0
- package/dist/previews-tcaz1gt8.js +1337 -0
- package/dist/previews-tk7vpzj9.js +1214 -0
- package/dist/previews-tqt4pk27.js +1214 -0
- package/dist/previews-vqg4psk2.js +1225 -0
- package/dist/productions-2t9q8f57.js +505 -0
- package/dist/productions-4abj58kx.js +505 -0
- package/dist/productions-4dpec71r.js +505 -0
- package/dist/productions-4h80j2c7.js +505 -0
- package/dist/productions-4nedsanh.js +505 -0
- package/dist/productions-5c58yafp.js +505 -0
- package/dist/productions-5xq5cjhx.js +505 -0
- package/dist/productions-6dr0bmd7.js +505 -0
- package/dist/productions-86jaqt7m.js +505 -0
- package/dist/productions-8f6s8dqr.js +505 -0
- package/dist/productions-a2hcwwzf.js +505 -0
- package/dist/productions-b7svyjp7.js +505 -0
- package/dist/productions-bf2cnr05.js +505 -0
- package/dist/productions-bn2q31my.js +505 -0
- package/dist/productions-dkgry3gv.js +505 -0
- package/dist/productions-dv8g7f6g.js +505 -0
- package/dist/productions-e2m9s4tr.js +505 -0
- package/dist/productions-eqh105tk.js +505 -0
- package/dist/productions-etvcm7yf.js +505 -0
- package/dist/productions-f1zpbmjz.js +505 -0
- package/dist/productions-fgshs1m7.js +505 -0
- package/dist/productions-hphmt68n.js +505 -0
- package/dist/productions-j14pvx93.js +505 -0
- package/dist/productions-j7s1ywvg.js +505 -0
- package/dist/productions-jp3v3q3p.js +505 -0
- package/dist/productions-m9p42amj.js +505 -0
- package/dist/productions-mxbneawa.js +505 -0
- package/dist/productions-np4exh9p.js +505 -0
- package/dist/productions-rr1hqgda.js +505 -0
- package/dist/productions-rtf9ksgg.js +505 -0
- package/dist/productions-vhq7yx86.js +505 -0
- package/dist/productions-w2nzftcz.js +505 -0
- package/dist/productions-wbks5h7e.js +505 -0
- package/dist/productions-y99ayk6h.js +505 -0
- package/dist/productions-zpqyw5gm.js +505 -0
- package/dist/router/types.d.ts +24 -0
- package/dist/router/types.d.ts.map +1 -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 +27 -40
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/exports.d.ts +47 -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/router.d.ts +7 -0
- package/dist/runtime/router.d.ts.map +1 -0
- package/dist/runtime/validation.d.ts +10 -2
- 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-8wcj47nh.js +91 -0
- package/dist/secrets-b2ww34ta.js +91 -0
- package/dist/secrets-b7g4z621.js +91 -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 +187 -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/bridge-context.d.ts +12 -2
- package/dist/test/bridge-context.d.ts.map +1 -1
- 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 +4595 -43
- package/dist/test/local-worker-loader.d.ts +3 -0
- package/dist/test/local-worker-loader.d.ts.map +1 -0
- 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 +38 -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 +12 -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-3b9wws58.js +419 -0
- package/dist/token-47kcz18j.js +419 -0
- package/dist/token-a2b38w0z.js +419 -0
- package/dist/token-exz78pth.js +419 -0
- package/dist/token-fcthx92c.js +419 -0
- package/dist/token-grwp8z4q.js +419 -0
- package/dist/token-jkmm44z2.js +419 -0
- package/dist/token-qxtvzm3b.js +419 -0
- package/dist/token-rq8mvtz9.js +419 -0
- package/dist/token-sct51r47.js +419 -0
- package/dist/token-sfgxcgen.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-5nyrz1sz.js → types-0qv4xces.js} +266 -148
- package/dist/types-2ejrbba1.js +695 -0
- package/dist/types-2nvrs9jg.js +572 -0
- package/dist/types-2pbe8kzw.js +572 -0
- package/dist/types-2zyt0m43.js +572 -0
- package/dist/types-4xxer9ep.js +572 -0
- package/dist/types-5t5y7a5n.js +572 -0
- package/dist/types-5wd2rygw.js +572 -0
- package/dist/types-7j3ykgx7.js +572 -0
- package/dist/types-7jkbm95a.js +695 -0
- package/dist/types-8g78x34n.js +572 -0
- package/dist/types-a2fk9yns.js +695 -0
- package/dist/types-dyb3c6zw.js +695 -0
- package/dist/types-e2n9f3pd.js +695 -0
- package/dist/types-e6d336q3.js +572 -0
- package/dist/types-hqh2fx0x.js +572 -0
- package/dist/types-j12xmdnd.js +572 -0
- package/dist/types-j4s6qcrc.js +695 -0
- package/dist/types-jqn26et3.js +572 -0
- package/dist/types-n0mxbq26.js +572 -0
- package/dist/types-naz9hvw5.js +572 -0
- package/dist/types-qjcd1jks.js +572 -0
- package/dist/types-r9zb8sw1.js +572 -0
- package/dist/types-rv5xwgsn.js +572 -0
- package/dist/types-t39njdqx.js +572 -0
- package/dist/types-tkgch3xv.js +572 -0
- package/dist/types-vhvt4hvm.js +693 -0
- package/dist/types-vvtb7rrh.js +572 -0
- package/dist/types-w1grncdj.js +572 -0
- package/dist/types-wmw49exb.js +572 -0
- package/dist/types-ymxz9jga.js +572 -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-18ceqscc.js +513 -0
- package/dist/worker-1yqpwte2.js +513 -0
- package/dist/worker-2aw27zxy.js +513 -0
- package/dist/worker-45tp4a8f.js +513 -0
- package/dist/worker-663em30d.js +513 -0
- package/dist/worker-68zttchg.js +513 -0
- package/dist/worker-729cf3fh.js +513 -0
- package/dist/worker-99tew196.js +513 -0
- package/dist/worker-argxc7fb.js +513 -0
- package/dist/worker-aydzxt4f.js +513 -0
- package/dist/worker-ejdxma7k.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-3rmzd4c1.js +15 -0
- package/dist/worker-entrypoint-4xp7msd7.js +16 -0
- package/dist/{worker-entrypoint-m9th0rg0.js → worker-entrypoint-c259fmfs.js} +1 -1
- package/dist/worker-entrypoint-f1v9y4s8.js +15 -0
- package/dist/worker-f6xqjg65.js +513 -0
- package/dist/worker-fcdsnj14.js +513 -0
- package/dist/worker-fdnn62de.js +513 -0
- package/dist/worker-fk42rzse.js +513 -0
- package/dist/worker-frnh95rg.js +513 -0
- package/dist/worker-jkemk8d2.js +513 -0
- package/dist/worker-k55nfrmp.js +513 -0
- package/dist/worker-kqc6w7ry.js +513 -0
- package/dist/worker-ksvcq8be.js +513 -0
- package/dist/worker-m4ze8djx.js +513 -0
- package/dist/worker-mjzfstv5.js +513 -0
- package/dist/worker-p4rtsndj.js +513 -0
- package/dist/worker-p6d53qan.js +513 -0
- package/dist/worker-qh2qbv97.js +513 -0
- package/dist/worker-r234vnv9.js +513 -0
- package/dist/worker-r47bv7gt.js +513 -0
- package/dist/worker-s4nvbqsm.js +513 -0
- package/dist/worker-ttj7vwce.js +513 -0
- package/dist/worker-wnan5dca.js +513 -0
- package/dist/worker-wv4jdneg.js +513 -0
- package/dist/worker-xcbscr75.js +513 -0
- package/dist/worker-yw3atfb1.js +513 -0
- package/dist/worker-ywwkf3cp.js +513 -0
- package/dist/worker-z8wtk0sh.js +513 -0
- package/dist/workflows/local-workflow-entrypoints.d.ts +7 -0
- package/dist/workflows/local-workflow-entrypoints.d.ts.map +1 -0
- package/package.json +140 -115
- package/dist/account-rvrj687w.js +0 -397
- 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/doctor-e8fy6fj5.js +0 -186
- package/dist/index-67qcae0f.js +0 -183
- package/dist/index-ep3445yc.js +0 -2225
- package/dist/index-hcex3rgh.js +0 -266
- package/dist/index-m2q41jwa.js +0 -462
- package/dist/index-n7rs26ft.js +0 -77
- package/dist/index-tfyxa77h.js +0 -850
- package/dist/index-tk6ej9dj.js +0 -94
- package/dist/test/multi-worker-context.d.ts +0 -114
- package/dist/test/multi-worker-context.d.ts.map +0 -1
|
@@ -0,0 +1,2202 @@
|
|
|
1
|
+
import {
|
|
2
|
+
wrapEnvSendEmailBindings
|
|
3
|
+
} from "./index-hpwa6vsw.js";
|
|
4
|
+
|
|
5
|
+
// src/runtime/validation.ts
|
|
6
|
+
class ContextAccessError extends Error {
|
|
7
|
+
contextName;
|
|
8
|
+
propertyName;
|
|
9
|
+
constructor(contextName, propertyName) {
|
|
10
|
+
super(`Cannot access ${contextName}.${propertyName} outside of an active Devflare handler trail.
|
|
11
|
+
|
|
12
|
+
` + `This typically happens when:
|
|
13
|
+
` + ` 1. Accessing ${contextName} at module top-level (during import)
|
|
14
|
+
` + ` 2. Accessing ${contextName} in a callback that runs after the handler ends
|
|
15
|
+
` + ` 3. Accessing ${contextName} in a setTimeout/setInterval callback
|
|
16
|
+
|
|
17
|
+
` + `Move the access inside your handler function or middleware.`);
|
|
18
|
+
this.name = "ContextAccessError";
|
|
19
|
+
this.contextName = contextName;
|
|
20
|
+
this.propertyName = propertyName;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function createContextProxy(getter, name, options = {}) {
|
|
24
|
+
const mutable = options.mutable ?? true;
|
|
25
|
+
return new Proxy({}, {
|
|
26
|
+
get(_target, prop) {
|
|
27
|
+
const ctx = getter();
|
|
28
|
+
if (ctx === undefined || ctx === null) {
|
|
29
|
+
throw new ContextAccessError(name, String(prop));
|
|
30
|
+
}
|
|
31
|
+
return ctx[prop];
|
|
32
|
+
},
|
|
33
|
+
set(_target, prop, value) {
|
|
34
|
+
if (!mutable) {
|
|
35
|
+
throw new TypeError(`Cannot assign to '${String(prop)}' on '${name}' because it is read-only.
|
|
36
|
+
` + `Use 'locals' for mutable request-scoped data.`);
|
|
37
|
+
}
|
|
38
|
+
const ctx = getter();
|
|
39
|
+
if (ctx === undefined || ctx === null) {
|
|
40
|
+
throw new ContextAccessError(name, String(prop));
|
|
41
|
+
}
|
|
42
|
+
ctx[prop] = value;
|
|
43
|
+
return true;
|
|
44
|
+
},
|
|
45
|
+
deleteProperty(_target, prop) {
|
|
46
|
+
if (!mutable) {
|
|
47
|
+
throw new TypeError(`Cannot delete property '${String(prop)}' from '${name}' because it is read-only.`);
|
|
48
|
+
}
|
|
49
|
+
const ctx = getter();
|
|
50
|
+
if (ctx === undefined || ctx === null) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
return Reflect.deleteProperty(ctx, prop);
|
|
54
|
+
},
|
|
55
|
+
has(_target, prop) {
|
|
56
|
+
const ctx = getter();
|
|
57
|
+
if (ctx === undefined || ctx === null) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
return prop in ctx;
|
|
61
|
+
},
|
|
62
|
+
ownKeys(_target) {
|
|
63
|
+
const ctx = getter();
|
|
64
|
+
if (ctx === undefined || ctx === null) {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
return Reflect.ownKeys(ctx);
|
|
68
|
+
},
|
|
69
|
+
getOwnPropertyDescriptor(_target, prop) {
|
|
70
|
+
const ctx = getter();
|
|
71
|
+
if (ctx === undefined || ctx === null) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const descriptor = Reflect.getOwnPropertyDescriptor(ctx, prop);
|
|
75
|
+
if (!descriptor) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (!mutable) {
|
|
79
|
+
return { ...descriptor, writable: false };
|
|
80
|
+
}
|
|
81
|
+
return descriptor;
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// src/runtime/context-events.ts
|
|
87
|
+
function createLocals(locals) {
|
|
88
|
+
return locals ?? {};
|
|
89
|
+
}
|
|
90
|
+
function prepareEventShell(env, options = {}) {
|
|
91
|
+
return {
|
|
92
|
+
env: wrapEnvSendEmailBindings(env),
|
|
93
|
+
locals: createLocals(options.locals)
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function createAugmentedTarget(target, extra) {
|
|
97
|
+
return new Proxy(target, {
|
|
98
|
+
get(target2, prop) {
|
|
99
|
+
if (prop in extra) {
|
|
100
|
+
return extra[prop];
|
|
101
|
+
}
|
|
102
|
+
const value = Reflect.get(target2, prop, target2);
|
|
103
|
+
return typeof value === "function" ? value.bind(target2) : value;
|
|
104
|
+
},
|
|
105
|
+
has(target2, prop) {
|
|
106
|
+
return prop in extra || prop in target2;
|
|
107
|
+
},
|
|
108
|
+
ownKeys(target2) {
|
|
109
|
+
return Array.from(new Set([
|
|
110
|
+
...Reflect.ownKeys(target2),
|
|
111
|
+
...Reflect.ownKeys(extra)
|
|
112
|
+
]));
|
|
113
|
+
},
|
|
114
|
+
getOwnPropertyDescriptor(target2, prop) {
|
|
115
|
+
if (prop in extra) {
|
|
116
|
+
return {
|
|
117
|
+
configurable: true,
|
|
118
|
+
enumerable: true,
|
|
119
|
+
writable: false,
|
|
120
|
+
value: extra[prop]
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
return Reflect.getOwnPropertyDescriptor(target2, prop);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function createBaseEvent(type, env, ctx, options = {}) {
|
|
128
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
129
|
+
return {
|
|
130
|
+
type,
|
|
131
|
+
ctx,
|
|
132
|
+
...shell,
|
|
133
|
+
request: options.request ?? null,
|
|
134
|
+
params: options.params
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function createFetchEvent(request, env, ctx, options = {}) {
|
|
138
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
139
|
+
return createAugmentedTarget(request, {
|
|
140
|
+
type: "fetch",
|
|
141
|
+
ctx,
|
|
142
|
+
...shell,
|
|
143
|
+
url: new URL(request.url),
|
|
144
|
+
request,
|
|
145
|
+
params: options.params ?? {}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
function createQueueEvent(batch, env, ctx, options = {}) {
|
|
149
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
150
|
+
return createAugmentedTarget(batch, {
|
|
151
|
+
type: "queue",
|
|
152
|
+
ctx,
|
|
153
|
+
...shell,
|
|
154
|
+
batch
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
function createScheduledEvent(controller, env, ctx, options = {}) {
|
|
158
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
159
|
+
return createAugmentedTarget(controller, {
|
|
160
|
+
type: "scheduled",
|
|
161
|
+
ctx,
|
|
162
|
+
...shell,
|
|
163
|
+
controller
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function createEmailEvent(message, env, ctx, options = {}) {
|
|
167
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
168
|
+
return createAugmentedTarget(message, {
|
|
169
|
+
type: "email",
|
|
170
|
+
ctx,
|
|
171
|
+
...shell,
|
|
172
|
+
message
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
function createTailEvent(events, env, ctx, options = {}) {
|
|
176
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
177
|
+
return createAugmentedTarget(events, {
|
|
178
|
+
type: "tail",
|
|
179
|
+
ctx,
|
|
180
|
+
...shell,
|
|
181
|
+
events
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
function createDurableObjectFetchEvent(request, env, state, options = {}) {
|
|
185
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
186
|
+
return createAugmentedTarget(request, {
|
|
187
|
+
type: "durable-object-fetch",
|
|
188
|
+
ctx: state,
|
|
189
|
+
state,
|
|
190
|
+
...shell,
|
|
191
|
+
request
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
function createDurableObjectAlarmEvent(env, state, options = {}) {
|
|
195
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
196
|
+
return {
|
|
197
|
+
type: "durable-object-alarm",
|
|
198
|
+
ctx: state,
|
|
199
|
+
state,
|
|
200
|
+
...shell
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
function createDurableObjectWebSocketMessageEvent(ws, message, env, state, options = {}) {
|
|
204
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
205
|
+
return createAugmentedTarget(ws, {
|
|
206
|
+
type: "durable-object-websocket-message",
|
|
207
|
+
ctx: state,
|
|
208
|
+
state,
|
|
209
|
+
...shell,
|
|
210
|
+
ws,
|
|
211
|
+
message
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
function createDurableObjectWebSocketCloseEvent(ws, code, reason, wasClean, env, state, options = {}) {
|
|
215
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
216
|
+
return createAugmentedTarget(ws, {
|
|
217
|
+
type: "durable-object-websocket-close",
|
|
218
|
+
ctx: state,
|
|
219
|
+
state,
|
|
220
|
+
...shell,
|
|
221
|
+
ws,
|
|
222
|
+
code,
|
|
223
|
+
reason,
|
|
224
|
+
wasClean
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
function createDurableObjectWebSocketErrorEvent(ws, error, env, state, options = {}) {
|
|
228
|
+
const shell = prepareEventShell(env, { locals: options.locals });
|
|
229
|
+
return createAugmentedTarget(ws, {
|
|
230
|
+
type: "durable-object-websocket-error",
|
|
231
|
+
ctx: state,
|
|
232
|
+
state,
|
|
233
|
+
...shell,
|
|
234
|
+
ws,
|
|
235
|
+
error
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
function createDefaultEvent(env, ctx, request, type, locals) {
|
|
239
|
+
switch (type) {
|
|
240
|
+
case "fetch": {
|
|
241
|
+
if (request && ctx) {
|
|
242
|
+
return createFetchEvent(request, env, ctx, { locals });
|
|
243
|
+
}
|
|
244
|
+
return createBaseEvent(type, env, ctx, { locals, request });
|
|
245
|
+
}
|
|
246
|
+
case "durable-object-fetch": {
|
|
247
|
+
if (request && ctx) {
|
|
248
|
+
return createDurableObjectFetchEvent(request, env, ctx, { locals });
|
|
249
|
+
}
|
|
250
|
+
return createBaseEvent(type, env, ctx, { locals, request });
|
|
251
|
+
}
|
|
252
|
+
case "durable-object-alarm": {
|
|
253
|
+
if (ctx) {
|
|
254
|
+
return createDurableObjectAlarmEvent(env, ctx, { locals });
|
|
255
|
+
}
|
|
256
|
+
return createBaseEvent(type, env, ctx, { locals });
|
|
257
|
+
}
|
|
258
|
+
case "queue":
|
|
259
|
+
case "scheduled":
|
|
260
|
+
case "email":
|
|
261
|
+
case "tail":
|
|
262
|
+
case "durable-object-websocket-message":
|
|
263
|
+
case "durable-object-websocket-close":
|
|
264
|
+
case "durable-object-websocket-error":
|
|
265
|
+
return createBaseEvent(type, env, ctx, { locals, request });
|
|
266
|
+
default: {
|
|
267
|
+
const exhaustive = type;
|
|
268
|
+
throw new Error(`createDefaultEvent: unknown event type ${String(exhaustive)}`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// src/runtime/context.ts
|
|
274
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
275
|
+
var storage = new AsyncLocalStorage;
|
|
276
|
+
function createLocals2() {
|
|
277
|
+
return {};
|
|
278
|
+
}
|
|
279
|
+
function runWithContext(env, ctx, request, fn, type = "fetch") {
|
|
280
|
+
const locals = createLocals2();
|
|
281
|
+
const event = createDefaultEvent(env, ctx, request, type, locals);
|
|
282
|
+
return runWithEventContext(event, fn);
|
|
283
|
+
}
|
|
284
|
+
function runWithEventContext(event, fn) {
|
|
285
|
+
const context = {
|
|
286
|
+
env: event.env,
|
|
287
|
+
ctx: event.ctx,
|
|
288
|
+
request: event.request ?? null,
|
|
289
|
+
locals: event.locals,
|
|
290
|
+
type: event.type,
|
|
291
|
+
event
|
|
292
|
+
};
|
|
293
|
+
return storage.run(context, fn);
|
|
294
|
+
}
|
|
295
|
+
function getContext() {
|
|
296
|
+
const context = storage.getStore();
|
|
297
|
+
if (!context) {
|
|
298
|
+
throw new ContextUnavailableError;
|
|
299
|
+
}
|
|
300
|
+
return context;
|
|
301
|
+
}
|
|
302
|
+
function getContextOrNull() {
|
|
303
|
+
const context = storage.getStore();
|
|
304
|
+
return context ?? null;
|
|
305
|
+
}
|
|
306
|
+
function getEventContext() {
|
|
307
|
+
return getContext().event;
|
|
308
|
+
}
|
|
309
|
+
function getEventContextOrNull() {
|
|
310
|
+
return getContextOrNull()?.event ?? null;
|
|
311
|
+
}
|
|
312
|
+
function hasContext() {
|
|
313
|
+
return storage.getStore() !== undefined;
|
|
314
|
+
}
|
|
315
|
+
function createEventAccessor(name, matcher) {
|
|
316
|
+
const accessor = () => {
|
|
317
|
+
const currentEvent = getEventContextOrNull();
|
|
318
|
+
if (!currentEvent) {
|
|
319
|
+
throw new ContextUnavailableError;
|
|
320
|
+
}
|
|
321
|
+
if (!matcher(currentEvent)) {
|
|
322
|
+
throw new ContextUnavailableError(`${name} is not available in the current '${currentEvent.type}' context.
|
|
323
|
+
|
|
324
|
+
Devflare stores event objects in AsyncLocalStorage so helpers called within a handler can reach the active event.
|
|
325
|
+
Use ${name}.safe() to return null instead of throwing, or call the getter that matches the active surface.`);
|
|
326
|
+
}
|
|
327
|
+
return currentEvent;
|
|
328
|
+
};
|
|
329
|
+
accessor.safe = () => {
|
|
330
|
+
const currentEvent = getEventContextOrNull();
|
|
331
|
+
return currentEvent && matcher(currentEvent) ? currentEvent : null;
|
|
332
|
+
};
|
|
333
|
+
return accessor;
|
|
334
|
+
}
|
|
335
|
+
function isFetchEvent(event) {
|
|
336
|
+
return event.type === "fetch" && event.request instanceof Request;
|
|
337
|
+
}
|
|
338
|
+
function isQueueEvent(event) {
|
|
339
|
+
return event.type === "queue" && "batch" in event;
|
|
340
|
+
}
|
|
341
|
+
function isScheduledEvent(event) {
|
|
342
|
+
return event.type === "scheduled" && "controller" in event;
|
|
343
|
+
}
|
|
344
|
+
function isEmailEvent(event) {
|
|
345
|
+
return event.type === "email" && "message" in event;
|
|
346
|
+
}
|
|
347
|
+
function isTailEvent(event) {
|
|
348
|
+
return event.type === "tail" && Array.isArray(event) && "events" in event;
|
|
349
|
+
}
|
|
350
|
+
function isDurableObjectEvent(event) {
|
|
351
|
+
return event.type.startsWith("durable-object-") && "state" in event;
|
|
352
|
+
}
|
|
353
|
+
function isDurableObjectFetchEvent(event) {
|
|
354
|
+
return event.type === "durable-object-fetch" && event.request instanceof Request;
|
|
355
|
+
}
|
|
356
|
+
function isDurableObjectAlarmEvent(event) {
|
|
357
|
+
return event.type === "durable-object-alarm" && "state" in event;
|
|
358
|
+
}
|
|
359
|
+
function isDurableObjectWebSocketMessageEvent(event) {
|
|
360
|
+
return event.type === "durable-object-websocket-message" && "ws" in event && "message" in event;
|
|
361
|
+
}
|
|
362
|
+
function isDurableObjectWebSocketCloseEvent(event) {
|
|
363
|
+
return event.type === "durable-object-websocket-close" && "ws" in event && "code" in event;
|
|
364
|
+
}
|
|
365
|
+
function isDurableObjectWebSocketErrorEvent(event) {
|
|
366
|
+
return event.type === "durable-object-websocket-error" && "ws" in event && "error" in event;
|
|
367
|
+
}
|
|
368
|
+
var getFetchEvent = createEventAccessor("getFetchEvent()", isFetchEvent);
|
|
369
|
+
var getQueueEvent = createEventAccessor("getQueueEvent()", isQueueEvent);
|
|
370
|
+
var getScheduledEvent = createEventAccessor("getScheduledEvent()", isScheduledEvent);
|
|
371
|
+
var getEmailEvent = createEventAccessor("getEmailEvent()", isEmailEvent);
|
|
372
|
+
var getTailEvent = createEventAccessor("getTailEvent()", isTailEvent);
|
|
373
|
+
var getDurableObjectEvent = createEventAccessor("getDurableObjectEvent()", isDurableObjectEvent);
|
|
374
|
+
var getDurableObjectFetchEvent = createEventAccessor("getDurableObjectFetchEvent()", isDurableObjectFetchEvent);
|
|
375
|
+
var getDurableObjectAlarmEvent = createEventAccessor("getDurableObjectAlarmEvent()", isDurableObjectAlarmEvent);
|
|
376
|
+
var getDurableObjectWebSocketMessageEvent = createEventAccessor("getDurableObjectWebSocketMessageEvent()", isDurableObjectWebSocketMessageEvent);
|
|
377
|
+
var getDurableObjectWebSocketCloseEvent = createEventAccessor("getDurableObjectWebSocketCloseEvent()", isDurableObjectWebSocketCloseEvent);
|
|
378
|
+
var getDurableObjectWebSocketErrorEvent = createEventAccessor("getDurableObjectWebSocketErrorEvent()", isDurableObjectWebSocketErrorEvent);
|
|
379
|
+
|
|
380
|
+
class ContextUnavailableError extends ContextAccessError {
|
|
381
|
+
code = "CONTEXT_UNAVAILABLE";
|
|
382
|
+
constructor(message) {
|
|
383
|
+
super("context", "<unavailable>");
|
|
384
|
+
if (message !== undefined) {
|
|
385
|
+
this.message = message;
|
|
386
|
+
} else {
|
|
387
|
+
this.message = `Context not available. Devflare uses AsyncLocalStorage to carry the active event through fetch, queue, scheduled, email, tail, and Durable Object handler call chains.
|
|
388
|
+
|
|
389
|
+
` + `This usually means one of:
|
|
390
|
+
|
|
391
|
+
` + `1. Accessing context at module top-level (runs at cold start, not per-request)
|
|
392
|
+
` + `2. Accessing context in setTimeout/setInterval callbacks
|
|
393
|
+
` + `3. Missing 'nodejs_compat' compatibility flag in your worker config
|
|
394
|
+
|
|
395
|
+
` + `Fix: Move the access inside your handler, middleware, or a helper called from that handler trail.
|
|
396
|
+
` + `Learn more: https://devflare.dev/docs/context-errors`;
|
|
397
|
+
}
|
|
398
|
+
this.name = "ContextUnavailableError";
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
// src/bridge/v2/wire.ts
|
|
403
|
+
var BinaryKind = {
|
|
404
|
+
StreamChunk: 1,
|
|
405
|
+
WsData: 2
|
|
406
|
+
};
|
|
407
|
+
var BinaryFlags = {
|
|
408
|
+
FIN: 1,
|
|
409
|
+
TEXT: 2
|
|
410
|
+
};
|
|
411
|
+
var BINARY_HEADER_SIZE = 10;
|
|
412
|
+
function encodeBinaryFrame(kind, id, seq, flags, payload) {
|
|
413
|
+
const frame = new Uint8Array(BINARY_HEADER_SIZE + payload.byteLength);
|
|
414
|
+
const view = new DataView(frame.buffer);
|
|
415
|
+
view.setUint8(0, kind);
|
|
416
|
+
view.setUint32(1, id, true);
|
|
417
|
+
view.setUint32(5, seq, true);
|
|
418
|
+
view.setUint8(9, flags);
|
|
419
|
+
frame.set(payload, BINARY_HEADER_SIZE);
|
|
420
|
+
return frame;
|
|
421
|
+
}
|
|
422
|
+
function parseJsonMsg(data) {
|
|
423
|
+
const msg = JSON.parse(data);
|
|
424
|
+
if (typeof msg !== "object" || msg === null || !("t" in msg)) {
|
|
425
|
+
throw new Error("Invalid message: missing type field");
|
|
426
|
+
}
|
|
427
|
+
return msg;
|
|
428
|
+
}
|
|
429
|
+
function stringifyJsonMsg(msg) {
|
|
430
|
+
return JSON.stringify(msg);
|
|
431
|
+
}
|
|
432
|
+
var streamIdCounter = 0;
|
|
433
|
+
var wsIdCounter = 0;
|
|
434
|
+
function nextStreamId() {
|
|
435
|
+
return ++streamIdCounter;
|
|
436
|
+
}
|
|
437
|
+
function nextWsId() {
|
|
438
|
+
return ++wsIdCounter;
|
|
439
|
+
}
|
|
440
|
+
var DEFAULT_CHUNK_SIZE = 256 * 1024;
|
|
441
|
+
var HTTP_TRANSFER_THRESHOLD = 512 * 1024;
|
|
442
|
+
var DEFAULT_BRIDGE_PORT = 8686;
|
|
443
|
+
|
|
444
|
+
// src/bridge/v2/value-serialization.ts
|
|
445
|
+
async function serializeRequest(request, options) {
|
|
446
|
+
const streams = [];
|
|
447
|
+
const threshold = options?.httpThreshold ?? 10 * 1024 * 1024;
|
|
448
|
+
const headers = [];
|
|
449
|
+
request.headers.forEach((value, key) => {
|
|
450
|
+
headers.push([key, value]);
|
|
451
|
+
});
|
|
452
|
+
let body = null;
|
|
453
|
+
if (request.body) {
|
|
454
|
+
const bytes = await request.arrayBuffer();
|
|
455
|
+
if (bytes.byteLength > threshold) {
|
|
456
|
+
throw new Error("http body transfer not implemented; caller should use inline or binary transfer");
|
|
457
|
+
} else if (bytes.byteLength > 0) {
|
|
458
|
+
body = { type: "bytes", data: base64Encode(new Uint8Array(bytes)) };
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
return {
|
|
462
|
+
serialized: {
|
|
463
|
+
url: request.url,
|
|
464
|
+
method: request.method,
|
|
465
|
+
headers,
|
|
466
|
+
body,
|
|
467
|
+
redirect: request.redirect
|
|
468
|
+
},
|
|
469
|
+
streams
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
function deserializeRequest(serialized, getStream) {
|
|
473
|
+
let body = null;
|
|
474
|
+
if (serialized.body) {
|
|
475
|
+
switch (serialized.body.type) {
|
|
476
|
+
case "bytes":
|
|
477
|
+
body = base64Decode(serialized.body.data);
|
|
478
|
+
break;
|
|
479
|
+
case "stream":
|
|
480
|
+
if (getStream) {
|
|
481
|
+
body = getStream(serialized.body.sid) ?? null;
|
|
482
|
+
}
|
|
483
|
+
break;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return new Request(serialized.url, {
|
|
487
|
+
method: serialized.method,
|
|
488
|
+
headers: serialized.headers,
|
|
489
|
+
body,
|
|
490
|
+
redirect: serialized.redirect
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
async function serializeResponse(response, options) {
|
|
494
|
+
const streams = [];
|
|
495
|
+
const threshold = options?.httpThreshold ?? 10 * 1024 * 1024;
|
|
496
|
+
const headers = [];
|
|
497
|
+
response.headers.forEach((value, key) => {
|
|
498
|
+
headers.push([key, value]);
|
|
499
|
+
});
|
|
500
|
+
let body = null;
|
|
501
|
+
if (response.body) {
|
|
502
|
+
const bytes = await response.arrayBuffer();
|
|
503
|
+
if (bytes.byteLength > threshold) {
|
|
504
|
+
throw new Error("http body transfer not implemented; caller should use inline or binary transfer");
|
|
505
|
+
} else if (bytes.byteLength > 0) {
|
|
506
|
+
body = { type: "bytes", data: base64Encode(new Uint8Array(bytes)) };
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
return {
|
|
510
|
+
serialized: {
|
|
511
|
+
status: response.status,
|
|
512
|
+
statusText: response.statusText,
|
|
513
|
+
headers,
|
|
514
|
+
body
|
|
515
|
+
},
|
|
516
|
+
streams
|
|
517
|
+
};
|
|
518
|
+
}
|
|
519
|
+
function deserializeResponse(serialized, getStream) {
|
|
520
|
+
let body = null;
|
|
521
|
+
if (serialized.body) {
|
|
522
|
+
switch (serialized.body.type) {
|
|
523
|
+
case "bytes":
|
|
524
|
+
body = base64Decode(serialized.body.data);
|
|
525
|
+
break;
|
|
526
|
+
case "stream":
|
|
527
|
+
if (getStream) {
|
|
528
|
+
body = getStream(serialized.body.sid) ?? null;
|
|
529
|
+
}
|
|
530
|
+
break;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
return new Response(body, {
|
|
534
|
+
status: serialized.status,
|
|
535
|
+
statusText: serialized.statusText,
|
|
536
|
+
headers: serialized.headers
|
|
537
|
+
});
|
|
538
|
+
}
|
|
539
|
+
async function serializeValue(value) {
|
|
540
|
+
const streams = [];
|
|
541
|
+
const result = await serializeValueInternal(value, streams);
|
|
542
|
+
return { value: result, streams };
|
|
543
|
+
}
|
|
544
|
+
async function serializeValueInternal(value, streams) {
|
|
545
|
+
if (value === null || value === undefined) {
|
|
546
|
+
return value;
|
|
547
|
+
}
|
|
548
|
+
if (value instanceof Request) {
|
|
549
|
+
const { serialized, streams: reqStreams } = await serializeRequest(value);
|
|
550
|
+
streams.push(...reqStreams);
|
|
551
|
+
return { __type: "Request", ...serialized };
|
|
552
|
+
}
|
|
553
|
+
if (value instanceof Response) {
|
|
554
|
+
const { serialized, streams: resStreams } = await serializeResponse(value);
|
|
555
|
+
streams.push(...resStreams);
|
|
556
|
+
return { __type: "Response", ...serialized };
|
|
557
|
+
}
|
|
558
|
+
if (value instanceof ReadableStream) {
|
|
559
|
+
const sid = nextStreamId();
|
|
560
|
+
streams.push({ sid, stream: value });
|
|
561
|
+
return { __type: "ReadableStream", sid };
|
|
562
|
+
}
|
|
563
|
+
if (value instanceof Uint8Array) {
|
|
564
|
+
return { __type: "Uint8Array", data: base64Encode(value) };
|
|
565
|
+
}
|
|
566
|
+
if (value instanceof ArrayBuffer) {
|
|
567
|
+
return { __type: "ArrayBuffer", data: base64Encode(new Uint8Array(value)) };
|
|
568
|
+
}
|
|
569
|
+
if (value instanceof Date) {
|
|
570
|
+
return { __devflare: "date", iso: value.toISOString() };
|
|
571
|
+
}
|
|
572
|
+
if (value instanceof URL) {
|
|
573
|
+
return { __devflare: "url", href: value.href };
|
|
574
|
+
}
|
|
575
|
+
if (value instanceof Error) {
|
|
576
|
+
const encoded = {
|
|
577
|
+
__devflare: "error",
|
|
578
|
+
name: value.name,
|
|
579
|
+
message: value.message
|
|
580
|
+
};
|
|
581
|
+
if (value.stack)
|
|
582
|
+
encoded.stack = value.stack;
|
|
583
|
+
return encoded;
|
|
584
|
+
}
|
|
585
|
+
if (value instanceof Map) {
|
|
586
|
+
const entries = [];
|
|
587
|
+
for (const [k, v] of value.entries()) {
|
|
588
|
+
entries.push([
|
|
589
|
+
await serializeValueInternal(k, streams),
|
|
590
|
+
await serializeValueInternal(v, streams)
|
|
591
|
+
]);
|
|
592
|
+
}
|
|
593
|
+
return { __devflare: "map", entries };
|
|
594
|
+
}
|
|
595
|
+
if (value instanceof Set) {
|
|
596
|
+
const values = [];
|
|
597
|
+
for (const v of value.values()) {
|
|
598
|
+
values.push(await serializeValueInternal(v, streams));
|
|
599
|
+
}
|
|
600
|
+
return { __devflare: "set", values };
|
|
601
|
+
}
|
|
602
|
+
if (Array.isArray(value)) {
|
|
603
|
+
return Promise.all(value.map((v) => serializeValueInternal(v, streams)));
|
|
604
|
+
}
|
|
605
|
+
if (typeof value === "object") {
|
|
606
|
+
const result = {};
|
|
607
|
+
for (const [k, v] of Object.entries(value)) {
|
|
608
|
+
result[k] = await serializeValueInternal(v, streams);
|
|
609
|
+
}
|
|
610
|
+
return result;
|
|
611
|
+
}
|
|
612
|
+
return value;
|
|
613
|
+
}
|
|
614
|
+
function deserializeValue(value, getStream) {
|
|
615
|
+
if (value === null || value === undefined) {
|
|
616
|
+
return value;
|
|
617
|
+
}
|
|
618
|
+
if (typeof value === "object" && value !== null) {
|
|
619
|
+
const obj = value;
|
|
620
|
+
if (typeof obj.__devflare === "string") {
|
|
621
|
+
switch (obj.__devflare) {
|
|
622
|
+
case "date":
|
|
623
|
+
return new Date(obj.iso);
|
|
624
|
+
case "url":
|
|
625
|
+
return new URL(obj.href);
|
|
626
|
+
case "error": {
|
|
627
|
+
const err = new Error(obj.message);
|
|
628
|
+
if (typeof obj.name === "string")
|
|
629
|
+
err.name = obj.name;
|
|
630
|
+
if (typeof obj.stack === "string")
|
|
631
|
+
err.stack = obj.stack;
|
|
632
|
+
return err;
|
|
633
|
+
}
|
|
634
|
+
case "map": {
|
|
635
|
+
const entries = obj.entries ?? [];
|
|
636
|
+
const map = new Map;
|
|
637
|
+
for (const [k, v] of entries) {
|
|
638
|
+
map.set(deserializeValue(k, getStream), deserializeValue(v, getStream));
|
|
639
|
+
}
|
|
640
|
+
return map;
|
|
641
|
+
}
|
|
642
|
+
case "set": {
|
|
643
|
+
const values = obj.values ?? [];
|
|
644
|
+
const set = new Set;
|
|
645
|
+
for (const v of values) {
|
|
646
|
+
set.add(deserializeValue(v, getStream));
|
|
647
|
+
}
|
|
648
|
+
return set;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
if (obj.__type === "Request") {
|
|
653
|
+
return deserializeRequest(obj, getStream);
|
|
654
|
+
}
|
|
655
|
+
if (obj.__type === "Response") {
|
|
656
|
+
return deserializeResponse(obj, getStream);
|
|
657
|
+
}
|
|
658
|
+
if (obj.__type === "ReadableStream") {
|
|
659
|
+
const sid = obj.sid;
|
|
660
|
+
return getStream?.(sid) ?? null;
|
|
661
|
+
}
|
|
662
|
+
if (obj.__type === "Uint8Array") {
|
|
663
|
+
return base64Decode(obj.data);
|
|
664
|
+
}
|
|
665
|
+
if (obj.__type === "ArrayBuffer") {
|
|
666
|
+
return base64Decode(obj.data).buffer;
|
|
667
|
+
}
|
|
668
|
+
if (obj.__type === "R2Object") {
|
|
669
|
+
return deserializeR2Object(obj);
|
|
670
|
+
}
|
|
671
|
+
if (obj.__type === "R2ObjectBody") {
|
|
672
|
+
return deserializeR2ObjectBody(obj);
|
|
673
|
+
}
|
|
674
|
+
if (Array.isArray(value)) {
|
|
675
|
+
return value.map((v) => deserializeValue(v, getStream));
|
|
676
|
+
}
|
|
677
|
+
const result = {};
|
|
678
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
679
|
+
result[k] = deserializeValue(v, getStream);
|
|
680
|
+
}
|
|
681
|
+
return result;
|
|
682
|
+
}
|
|
683
|
+
return value;
|
|
684
|
+
}
|
|
685
|
+
function applySerializedHttpMetadata(headers, httpMetadata) {
|
|
686
|
+
if (httpMetadata?.contentType) {
|
|
687
|
+
headers.set("Content-Type", httpMetadata.contentType);
|
|
688
|
+
}
|
|
689
|
+
if (httpMetadata?.contentLanguage) {
|
|
690
|
+
headers.set("Content-Language", httpMetadata.contentLanguage);
|
|
691
|
+
}
|
|
692
|
+
if (httpMetadata?.contentDisposition) {
|
|
693
|
+
headers.set("Content-Disposition", httpMetadata.contentDisposition);
|
|
694
|
+
}
|
|
695
|
+
if (httpMetadata?.contentEncoding) {
|
|
696
|
+
headers.set("Content-Encoding", httpMetadata.contentEncoding);
|
|
697
|
+
}
|
|
698
|
+
if (httpMetadata?.cacheControl) {
|
|
699
|
+
headers.set("Cache-Control", httpMetadata.cacheControl);
|
|
700
|
+
}
|
|
701
|
+
if (httpMetadata?.cacheExpiry) {
|
|
702
|
+
headers.set("Expires", new Date(httpMetadata.cacheExpiry).toUTCString());
|
|
703
|
+
}
|
|
704
|
+
}
|
|
705
|
+
function createSerializedR2Metadata(serialized) {
|
|
706
|
+
return {
|
|
707
|
+
key: serialized.key,
|
|
708
|
+
version: serialized.version,
|
|
709
|
+
size: serialized.size,
|
|
710
|
+
etag: serialized.etag,
|
|
711
|
+
httpEtag: serialized.httpEtag,
|
|
712
|
+
checksums: serialized.checksums,
|
|
713
|
+
uploaded: serialized.uploaded ? new Date(serialized.uploaded) : new Date,
|
|
714
|
+
httpMetadata: serialized.httpMetadata,
|
|
715
|
+
customMetadata: serialized.customMetadata,
|
|
716
|
+
range: serialized.range,
|
|
717
|
+
storageClass: serialized.storageClass,
|
|
718
|
+
writeHttpMetadata(headers) {
|
|
719
|
+
applySerializedHttpMetadata(headers, serialized.httpMetadata);
|
|
720
|
+
}
|
|
721
|
+
};
|
|
722
|
+
}
|
|
723
|
+
function deserializeR2Object(obj) {
|
|
724
|
+
const serialized = obj;
|
|
725
|
+
return {
|
|
726
|
+
...createSerializedR2Metadata(serialized)
|
|
727
|
+
};
|
|
728
|
+
}
|
|
729
|
+
function deserializeR2ObjectBody(obj) {
|
|
730
|
+
const serialized = obj;
|
|
731
|
+
const bodyBytes = serialized.bodyData ? base64Decode(serialized.bodyData) : new Uint8Array(0);
|
|
732
|
+
const r2ObjectBody = {
|
|
733
|
+
...createSerializedR2Metadata(serialized),
|
|
734
|
+
body: new ReadableStream({
|
|
735
|
+
start(controller) {
|
|
736
|
+
controller.enqueue(bodyBytes);
|
|
737
|
+
controller.close();
|
|
738
|
+
}
|
|
739
|
+
}),
|
|
740
|
+
bodyUsed: false,
|
|
741
|
+
async arrayBuffer() {
|
|
742
|
+
const copy = new Uint8Array(bodyBytes.byteLength);
|
|
743
|
+
copy.set(bodyBytes);
|
|
744
|
+
return copy.buffer;
|
|
745
|
+
},
|
|
746
|
+
async text() {
|
|
747
|
+
return new TextDecoder().decode(bodyBytes);
|
|
748
|
+
},
|
|
749
|
+
async json() {
|
|
750
|
+
const text = new TextDecoder().decode(bodyBytes);
|
|
751
|
+
return JSON.parse(text);
|
|
752
|
+
},
|
|
753
|
+
async blob() {
|
|
754
|
+
const contentType = serialized.httpMetadata?.contentType || "application/octet-stream";
|
|
755
|
+
const buffer = bodyBytes.buffer.slice(bodyBytes.byteOffset, bodyBytes.byteOffset + bodyBytes.byteLength);
|
|
756
|
+
return new Blob([buffer], { type: contentType });
|
|
757
|
+
}
|
|
758
|
+
};
|
|
759
|
+
return r2ObjectBody;
|
|
760
|
+
}
|
|
761
|
+
function base64Encode(bytes) {
|
|
762
|
+
if (typeof Buffer !== "undefined") {
|
|
763
|
+
return Buffer.from(bytes).toString("base64");
|
|
764
|
+
}
|
|
765
|
+
let binary = "";
|
|
766
|
+
for (let i = 0;i < bytes.byteLength; i++) {
|
|
767
|
+
binary += String.fromCharCode(bytes[i]);
|
|
768
|
+
}
|
|
769
|
+
return btoa(binary);
|
|
770
|
+
}
|
|
771
|
+
function base64Decode(str) {
|
|
772
|
+
if (typeof Buffer !== "undefined") {
|
|
773
|
+
return new Uint8Array(Buffer.from(str, "base64"));
|
|
774
|
+
}
|
|
775
|
+
const binary = atob(str);
|
|
776
|
+
const bytes = new Uint8Array(binary.length);
|
|
777
|
+
for (let i = 0;i < binary.length; i++) {
|
|
778
|
+
bytes[i] = binary.charCodeAt(i);
|
|
779
|
+
}
|
|
780
|
+
return bytes;
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
// src/bridge/v2/frames.ts
|
|
784
|
+
var TRANSPORT_V2_PROTOCOL_VERSION = 2;
|
|
785
|
+
var TRANSPORT_V2_UNSUPPORTED_VERSION_CLOSE_CODE = 4001;
|
|
786
|
+
var TransportV2BinaryKind = {
|
|
787
|
+
StreamChunk: 1,
|
|
788
|
+
WsData: 2,
|
|
789
|
+
BodyChunk: 3
|
|
790
|
+
};
|
|
791
|
+
var TransportV2BinaryFlags = {
|
|
792
|
+
FIN: 1,
|
|
793
|
+
TEXT: 2,
|
|
794
|
+
ABORT: 4
|
|
795
|
+
};
|
|
796
|
+
var TRANSPORT_V2_BINARY_HEADER_SIZE = 10;
|
|
797
|
+
function decodeTransportV2BinaryFrame(frame) {
|
|
798
|
+
if (frame.byteLength < TRANSPORT_V2_BINARY_HEADER_SIZE) {
|
|
799
|
+
throw new Error(`Invalid transport v2 binary frame: too short (${frame.byteLength} bytes, need at least ${TRANSPORT_V2_BINARY_HEADER_SIZE})`);
|
|
800
|
+
}
|
|
801
|
+
const view = new DataView(frame.buffer, frame.byteOffset, frame.byteLength);
|
|
802
|
+
const kind = view.getUint8(0);
|
|
803
|
+
if (kind !== TransportV2BinaryKind.StreamChunk && kind !== TransportV2BinaryKind.WsData && kind !== TransportV2BinaryKind.BodyChunk) {
|
|
804
|
+
throw new Error(`Invalid transport v2 binary frame: unknown kind ${kind}`);
|
|
805
|
+
}
|
|
806
|
+
return {
|
|
807
|
+
kind,
|
|
808
|
+
id: view.getUint32(1, true),
|
|
809
|
+
seq: view.getUint32(5, true),
|
|
810
|
+
flags: view.getUint8(9),
|
|
811
|
+
payload: frame.subarray(TRANSPORT_V2_BINARY_HEADER_SIZE)
|
|
812
|
+
};
|
|
813
|
+
}
|
|
814
|
+
function transportV2IsFin(flags) {
|
|
815
|
+
return (flags & TransportV2BinaryFlags.FIN) !== 0;
|
|
816
|
+
}
|
|
817
|
+
function transportV2IsAbort(flags) {
|
|
818
|
+
return (flags & TransportV2BinaryFlags.ABORT) !== 0;
|
|
819
|
+
}
|
|
820
|
+
var KNOWN_V2_CONTROL_TYPES = new Set([
|
|
821
|
+
"hello",
|
|
822
|
+
"welcome",
|
|
823
|
+
"body.open",
|
|
824
|
+
"body.end",
|
|
825
|
+
"body.abort"
|
|
826
|
+
]);
|
|
827
|
+
function parseTransportV2ControlMsg(data) {
|
|
828
|
+
const msg = JSON.parse(data);
|
|
829
|
+
if (typeof msg !== "object" || msg === null || !("t" in msg)) {
|
|
830
|
+
throw new Error("Invalid transport v2 control message: missing type field");
|
|
831
|
+
}
|
|
832
|
+
if (!KNOWN_V2_CONTROL_TYPES.has(msg.t)) {
|
|
833
|
+
throw new Error(`Invalid transport v2 control message: unknown type "${msg.t}"`);
|
|
834
|
+
}
|
|
835
|
+
if (msg.t === "hello" || msg.t === "welcome") {
|
|
836
|
+
if (msg.protocolVersion !== TRANSPORT_V2_PROTOCOL_VERSION) {
|
|
837
|
+
throw new Error(`Invalid transport v2 ${msg.t}: protocolVersion ${msg.protocolVersion} != ${TRANSPORT_V2_PROTOCOL_VERSION}`);
|
|
838
|
+
}
|
|
839
|
+
if (!Array.isArray(msg.capabilities)) {
|
|
840
|
+
throw new Error(`Invalid transport v2 ${msg.t}: capabilities must be an array`);
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
return msg;
|
|
844
|
+
}
|
|
845
|
+
function stringifyTransportV2ControlMsg(msg) {
|
|
846
|
+
return JSON.stringify(msg);
|
|
847
|
+
}
|
|
848
|
+
function negotiateTransportV2Capabilities(supported, advertised) {
|
|
849
|
+
const supportedSet = new Set(supported);
|
|
850
|
+
const intersection = advertised.filter((cap) => supportedSet.has(cap));
|
|
851
|
+
return [...new Set(intersection)].sort();
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
// src/bridge/v2/body-streams.ts
|
|
855
|
+
var TRANSPORT_V2_DEFAULT_BODY_CHUNK_SIZE = 256 * 1024;
|
|
856
|
+
class TransportV2BodyReaderRegistry {
|
|
857
|
+
#streams = new Map;
|
|
858
|
+
getOrOpen(bid) {
|
|
859
|
+
const existing = this.#streams.get(bid);
|
|
860
|
+
if (existing !== undefined)
|
|
861
|
+
return existing.stream;
|
|
862
|
+
return this.open(bid);
|
|
863
|
+
}
|
|
864
|
+
open(bid) {
|
|
865
|
+
if (this.#streams.has(bid)) {
|
|
866
|
+
throw new Error(`v2 body reader already registered for bid ${bid}`);
|
|
867
|
+
}
|
|
868
|
+
const state = {
|
|
869
|
+
controller: null,
|
|
870
|
+
stream: null,
|
|
871
|
+
closed: false
|
|
872
|
+
};
|
|
873
|
+
state.stream = new ReadableStream({
|
|
874
|
+
start: (controller) => {
|
|
875
|
+
state.controller = controller;
|
|
876
|
+
},
|
|
877
|
+
cancel: () => {
|
|
878
|
+
state.closed = true;
|
|
879
|
+
this.#streams.delete(bid);
|
|
880
|
+
}
|
|
881
|
+
});
|
|
882
|
+
this.#streams.set(bid, state);
|
|
883
|
+
return state.stream;
|
|
884
|
+
}
|
|
885
|
+
pushChunk(frame) {
|
|
886
|
+
if (frame.kind !== TransportV2BinaryKind.BodyChunk) {
|
|
887
|
+
throw new Error(`v2 body reader received non-BodyChunk frame (kind=${frame.kind})`);
|
|
888
|
+
}
|
|
889
|
+
const state = this.#streams.get(frame.id);
|
|
890
|
+
if (state === undefined || state.closed)
|
|
891
|
+
return;
|
|
892
|
+
const isFin = transportV2IsFin(frame.flags);
|
|
893
|
+
const isAbort = transportV2IsAbort(frame.flags);
|
|
894
|
+
if (isAbort) {
|
|
895
|
+
state.closed = true;
|
|
896
|
+
state.controller?.error(new Error(`v2 body stream ${frame.id} aborted by writer`));
|
|
897
|
+
this.#streams.delete(frame.id);
|
|
898
|
+
return;
|
|
899
|
+
}
|
|
900
|
+
if (frame.payload.byteLength > 0) {
|
|
901
|
+
state.controller?.enqueue(new Uint8Array(frame.payload));
|
|
902
|
+
}
|
|
903
|
+
if (isFin) {
|
|
904
|
+
state.closed = true;
|
|
905
|
+
state.controller?.close();
|
|
906
|
+
this.#streams.delete(frame.id);
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
end(bid) {
|
|
910
|
+
const state = this.#streams.get(bid);
|
|
911
|
+
if (state === undefined || state.closed)
|
|
912
|
+
return;
|
|
913
|
+
state.closed = true;
|
|
914
|
+
state.controller?.close();
|
|
915
|
+
this.#streams.delete(bid);
|
|
916
|
+
}
|
|
917
|
+
abort(bid, reason) {
|
|
918
|
+
const state = this.#streams.get(bid);
|
|
919
|
+
if (state === undefined || state.closed)
|
|
920
|
+
return;
|
|
921
|
+
state.closed = true;
|
|
922
|
+
state.controller?.error(new Error(reason ?? `v2 body stream ${bid} aborted`));
|
|
923
|
+
this.#streams.delete(bid);
|
|
924
|
+
}
|
|
925
|
+
get size() {
|
|
926
|
+
return this.#streams.size;
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
// src/bridge/v2/codec.ts
|
|
931
|
+
class TransportV2Codec {
|
|
932
|
+
bodyReaders = new TransportV2BodyReaderRegistry;
|
|
933
|
+
#socket;
|
|
934
|
+
#capabilities;
|
|
935
|
+
#options;
|
|
936
|
+
#handshakeResolver = null;
|
|
937
|
+
#handshakePromise;
|
|
938
|
+
#sentHello = false;
|
|
939
|
+
#receivedHello = false;
|
|
940
|
+
#receivedWelcome = false;
|
|
941
|
+
#negotiated = null;
|
|
942
|
+
#pendingRpc = new Map;
|
|
943
|
+
#nextBid = 1;
|
|
944
|
+
#nextRpcId = 1;
|
|
945
|
+
#closed = false;
|
|
946
|
+
constructor(socket, options = {}) {
|
|
947
|
+
this.#socket = socket;
|
|
948
|
+
this.#capabilities = options.capabilities ?? [];
|
|
949
|
+
this.#options = options;
|
|
950
|
+
this.#handshakePromise = new Promise((resolve, reject) => {
|
|
951
|
+
this.#handshakeResolver = { resolve, reject };
|
|
952
|
+
});
|
|
953
|
+
socket.onmessage = (event) => this.#onMessage(event);
|
|
954
|
+
socket.onclose = () => this.#onClose();
|
|
955
|
+
socket.onerror = (event) => this.#onError(event.error);
|
|
956
|
+
}
|
|
957
|
+
allocateBid() {
|
|
958
|
+
return this.#nextBid++;
|
|
959
|
+
}
|
|
960
|
+
allocateRpcId() {
|
|
961
|
+
return `v2_rpc_${this.#nextRpcId++}`;
|
|
962
|
+
}
|
|
963
|
+
sendHello() {
|
|
964
|
+
if (this.#sentHello)
|
|
965
|
+
return;
|
|
966
|
+
this.#sentHello = true;
|
|
967
|
+
const hello = {
|
|
968
|
+
t: "hello",
|
|
969
|
+
protocolVersion: TRANSPORT_V2_PROTOCOL_VERSION,
|
|
970
|
+
capabilities: [...this.#capabilities]
|
|
971
|
+
};
|
|
972
|
+
this.#socket.send(stringifyTransportV2ControlMsg(hello));
|
|
973
|
+
}
|
|
974
|
+
get handshake() {
|
|
975
|
+
return this.#handshakePromise;
|
|
976
|
+
}
|
|
977
|
+
get negotiated() {
|
|
978
|
+
return this.#negotiated;
|
|
979
|
+
}
|
|
980
|
+
sendText(message) {
|
|
981
|
+
if (this.#closed) {
|
|
982
|
+
throw new Error("cannot send on a closed v2 codec");
|
|
983
|
+
}
|
|
984
|
+
this.#socket.send(message);
|
|
985
|
+
}
|
|
986
|
+
sendBinary(frame) {
|
|
987
|
+
if (this.#closed) {
|
|
988
|
+
throw new Error("cannot send on a closed v2 codec");
|
|
989
|
+
}
|
|
990
|
+
this.#socket.send(frame);
|
|
991
|
+
}
|
|
992
|
+
call(method, params = []) {
|
|
993
|
+
const id = this.allocateRpcId();
|
|
994
|
+
const call = { t: "rpc.call", id, method, params };
|
|
995
|
+
const promise = new Promise((resolve, reject) => {
|
|
996
|
+
this.#pendingRpc.set(id, { resolve, reject });
|
|
997
|
+
});
|
|
998
|
+
this.sendText(JSON.stringify(call));
|
|
999
|
+
return promise;
|
|
1000
|
+
}
|
|
1001
|
+
respondOk(id, result) {
|
|
1002
|
+
const reply = { t: "rpc.ok", id, result };
|
|
1003
|
+
this.sendText(JSON.stringify(reply));
|
|
1004
|
+
}
|
|
1005
|
+
respondErr(id, error) {
|
|
1006
|
+
const reply = { t: "rpc.err", id, error };
|
|
1007
|
+
this.sendText(JSON.stringify(reply));
|
|
1008
|
+
}
|
|
1009
|
+
sendWireError(err) {
|
|
1010
|
+
const frame = { t: "error", ...err };
|
|
1011
|
+
this.sendText(JSON.stringify(frame));
|
|
1012
|
+
}
|
|
1013
|
+
openBodyReader(bid) {
|
|
1014
|
+
return this.bodyReaders.getOrOpen(bid);
|
|
1015
|
+
}
|
|
1016
|
+
setRpcCallHandler(handler) {
|
|
1017
|
+
this.#options = { ...this.#options, onRpcCall: handler };
|
|
1018
|
+
}
|
|
1019
|
+
close(code, reason) {
|
|
1020
|
+
if (this.#closed)
|
|
1021
|
+
return;
|
|
1022
|
+
this.#closed = true;
|
|
1023
|
+
this.#failPending(new Error("v2 transport closed"));
|
|
1024
|
+
this.#socket.close(code, reason);
|
|
1025
|
+
}
|
|
1026
|
+
get isClosed() {
|
|
1027
|
+
return this.#closed;
|
|
1028
|
+
}
|
|
1029
|
+
#onMessage(event) {
|
|
1030
|
+
const { data } = event;
|
|
1031
|
+
if (typeof data === "string") {
|
|
1032
|
+
this.#onText(data);
|
|
1033
|
+
} else if (data instanceof Uint8Array) {
|
|
1034
|
+
this.#onBinary(data);
|
|
1035
|
+
} else if (data instanceof ArrayBuffer) {
|
|
1036
|
+
this.#onBinary(new Uint8Array(data));
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
#onText(data) {
|
|
1040
|
+
let msg;
|
|
1041
|
+
try {
|
|
1042
|
+
msg = parseTransportV2ControlMsg(data);
|
|
1043
|
+
} catch {
|
|
1044
|
+
const rpc = tryParseRpcMsg(data);
|
|
1045
|
+
if (rpc !== null) {
|
|
1046
|
+
this.#onRpcMessage(rpc);
|
|
1047
|
+
return;
|
|
1048
|
+
}
|
|
1049
|
+
const wireErr = tryParseWireError(data);
|
|
1050
|
+
if (wireErr !== null) {
|
|
1051
|
+
this.#options.onWireError?.(wireErr);
|
|
1052
|
+
return;
|
|
1053
|
+
}
|
|
1054
|
+
this.#options.onUnknownControl?.(data);
|
|
1055
|
+
return;
|
|
1056
|
+
}
|
|
1057
|
+
switch (msg.t) {
|
|
1058
|
+
case "hello":
|
|
1059
|
+
this.#onHello(msg);
|
|
1060
|
+
break;
|
|
1061
|
+
case "welcome":
|
|
1062
|
+
this.#onWelcome(msg);
|
|
1063
|
+
break;
|
|
1064
|
+
case "body.open":
|
|
1065
|
+
this.bodyReaders.getOrOpen(msg.bid);
|
|
1066
|
+
break;
|
|
1067
|
+
case "body.end":
|
|
1068
|
+
this.bodyReaders.end(msg.bid);
|
|
1069
|
+
break;
|
|
1070
|
+
case "body.abort":
|
|
1071
|
+
this.bodyReaders.abort(msg.bid, msg.error);
|
|
1072
|
+
break;
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
#onBinary(data) {
|
|
1076
|
+
let frame;
|
|
1077
|
+
try {
|
|
1078
|
+
frame = decodeTransportV2BinaryFrame(data);
|
|
1079
|
+
} catch {
|
|
1080
|
+
return;
|
|
1081
|
+
}
|
|
1082
|
+
if (frame.kind === TransportV2BinaryKind.BodyChunk) {
|
|
1083
|
+
this.bodyReaders.pushChunk(frame);
|
|
1084
|
+
return;
|
|
1085
|
+
}
|
|
1086
|
+
this.#options.onUnknownBinary?.(frame);
|
|
1087
|
+
}
|
|
1088
|
+
#onRpcMessage(msg) {
|
|
1089
|
+
switch (msg.t) {
|
|
1090
|
+
case "rpc.call":
|
|
1091
|
+
this.#options.onRpcCall?.(msg);
|
|
1092
|
+
break;
|
|
1093
|
+
case "rpc.ok": {
|
|
1094
|
+
const pending = this.#pendingRpc.get(msg.id);
|
|
1095
|
+
if (pending !== undefined) {
|
|
1096
|
+
this.#pendingRpc.delete(msg.id);
|
|
1097
|
+
pending.resolve(msg.result);
|
|
1098
|
+
}
|
|
1099
|
+
break;
|
|
1100
|
+
}
|
|
1101
|
+
case "rpc.err": {
|
|
1102
|
+
const pending = this.#pendingRpc.get(msg.id);
|
|
1103
|
+
if (pending !== undefined) {
|
|
1104
|
+
this.#pendingRpc.delete(msg.id);
|
|
1105
|
+
const err = new Error(msg.error.message);
|
|
1106
|
+
Object.assign(err, { code: msg.error.code, details: msg.error.details });
|
|
1107
|
+
pending.reject(err);
|
|
1108
|
+
}
|
|
1109
|
+
break;
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1113
|
+
#onHello(msg) {
|
|
1114
|
+
if (this.#receivedHello) {
|
|
1115
|
+
this.close(TRANSPORT_V2_UNSUPPORTED_VERSION_CLOSE_CODE, "duplicate hello");
|
|
1116
|
+
return;
|
|
1117
|
+
}
|
|
1118
|
+
this.#receivedHello = true;
|
|
1119
|
+
const negotiated = negotiateTransportV2Capabilities(this.#capabilities, msg.capabilities);
|
|
1120
|
+
const welcome = {
|
|
1121
|
+
t: "welcome",
|
|
1122
|
+
protocolVersion: TRANSPORT_V2_PROTOCOL_VERSION,
|
|
1123
|
+
capabilities: negotiated
|
|
1124
|
+
};
|
|
1125
|
+
this.#socket.send(stringifyTransportV2ControlMsg(welcome));
|
|
1126
|
+
this.#completeHandshake({ protocolVersion: TRANSPORT_V2_PROTOCOL_VERSION, capabilities: negotiated });
|
|
1127
|
+
}
|
|
1128
|
+
#onWelcome(msg) {
|
|
1129
|
+
if (this.#receivedWelcome)
|
|
1130
|
+
return;
|
|
1131
|
+
this.#receivedWelcome = true;
|
|
1132
|
+
this.#completeHandshake({
|
|
1133
|
+
protocolVersion: TRANSPORT_V2_PROTOCOL_VERSION,
|
|
1134
|
+
capabilities: msg.capabilities
|
|
1135
|
+
});
|
|
1136
|
+
}
|
|
1137
|
+
#completeHandshake(result) {
|
|
1138
|
+
if (this.#negotiated !== null)
|
|
1139
|
+
return;
|
|
1140
|
+
this.#negotiated = result;
|
|
1141
|
+
this.#handshakeResolver?.resolve(result);
|
|
1142
|
+
this.#handshakeResolver = null;
|
|
1143
|
+
}
|
|
1144
|
+
#onClose() {
|
|
1145
|
+
if (this.#closed) {
|
|
1146
|
+
return;
|
|
1147
|
+
}
|
|
1148
|
+
this.#closed = true;
|
|
1149
|
+
this.#failPending(new Error("v2 transport closed"));
|
|
1150
|
+
}
|
|
1151
|
+
#onError(error) {
|
|
1152
|
+
const wrapped = error instanceof Error ? error : new Error(String(error));
|
|
1153
|
+
this.#failPending(wrapped);
|
|
1154
|
+
}
|
|
1155
|
+
#failPending(error) {
|
|
1156
|
+
const resolver = this.#handshakeResolver;
|
|
1157
|
+
if (resolver !== null) {
|
|
1158
|
+
this.#handshakeResolver = null;
|
|
1159
|
+
resolver.reject(error);
|
|
1160
|
+
}
|
|
1161
|
+
for (const pending of this.#pendingRpc.values()) {
|
|
1162
|
+
pending.reject(error);
|
|
1163
|
+
}
|
|
1164
|
+
this.#pendingRpc.clear();
|
|
1165
|
+
}
|
|
1166
|
+
}
|
|
1167
|
+
function tryParseRpcMsg(data) {
|
|
1168
|
+
let parsed;
|
|
1169
|
+
try {
|
|
1170
|
+
parsed = JSON.parse(data);
|
|
1171
|
+
} catch {
|
|
1172
|
+
return null;
|
|
1173
|
+
}
|
|
1174
|
+
if (typeof parsed !== "object" || parsed === null || !("t" in parsed))
|
|
1175
|
+
return null;
|
|
1176
|
+
const t = parsed.t;
|
|
1177
|
+
if (t === "rpc.call" || t === "rpc.ok" || t === "rpc.err") {
|
|
1178
|
+
return parsed;
|
|
1179
|
+
}
|
|
1180
|
+
return null;
|
|
1181
|
+
}
|
|
1182
|
+
function tryParseWireError(data) {
|
|
1183
|
+
let parsed;
|
|
1184
|
+
try {
|
|
1185
|
+
parsed = JSON.parse(data);
|
|
1186
|
+
} catch {
|
|
1187
|
+
return null;
|
|
1188
|
+
}
|
|
1189
|
+
if (typeof parsed !== "object" || parsed === null || !("t" in parsed))
|
|
1190
|
+
return null;
|
|
1191
|
+
const candidate = parsed;
|
|
1192
|
+
if (candidate.t !== "error")
|
|
1193
|
+
return null;
|
|
1194
|
+
const scope = candidate.scope;
|
|
1195
|
+
if (scope !== "transport" && scope !== "rpc" && scope !== "stream" && scope !== "ws")
|
|
1196
|
+
return null;
|
|
1197
|
+
const err = candidate.error;
|
|
1198
|
+
if (!err || typeof err.code !== "string" || typeof err.message !== "string")
|
|
1199
|
+
return null;
|
|
1200
|
+
return parsed;
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1203
|
+
// src/bridge/log.ts
|
|
1204
|
+
var isDebugEnabled = () => {
|
|
1205
|
+
try {
|
|
1206
|
+
const env = globalThis.process?.env;
|
|
1207
|
+
return Boolean(env?.DEVFLARE_DEBUG_BRIDGE);
|
|
1208
|
+
} catch {
|
|
1209
|
+
return false;
|
|
1210
|
+
}
|
|
1211
|
+
};
|
|
1212
|
+
var bridgeLog = {
|
|
1213
|
+
warn(message, error) {
|
|
1214
|
+
if (!isDebugEnabled())
|
|
1215
|
+
return;
|
|
1216
|
+
console.warn(`[devflare:bridge] ${message}`, error);
|
|
1217
|
+
},
|
|
1218
|
+
debug(message, error) {
|
|
1219
|
+
if (!isDebugEnabled())
|
|
1220
|
+
return;
|
|
1221
|
+
console.debug(`[devflare:bridge] ${message}`, error);
|
|
1222
|
+
}
|
|
1223
|
+
};
|
|
1224
|
+
|
|
1225
|
+
// src/bridge/client.ts
|
|
1226
|
+
class BridgeWsAdapter {
|
|
1227
|
+
onmessage = null;
|
|
1228
|
+
onclose = null;
|
|
1229
|
+
onerror = null;
|
|
1230
|
+
#ws;
|
|
1231
|
+
constructor(ws) {
|
|
1232
|
+
this.#ws = ws;
|
|
1233
|
+
}
|
|
1234
|
+
send(data) {
|
|
1235
|
+
this.#ws.send(data);
|
|
1236
|
+
}
|
|
1237
|
+
close(code, reason) {
|
|
1238
|
+
this.#ws.close(code, reason);
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
var BRIDGE_CLIENT_CAPABILITIES = ["streams", "ws-relay", "http-transfer"];
|
|
1242
|
+
var wsPackageConstructorPromise = null;
|
|
1243
|
+
async function importWsPackageConstructor() {
|
|
1244
|
+
if (!wsPackageConstructorPromise) {
|
|
1245
|
+
wsPackageConstructorPromise = (async () => {
|
|
1246
|
+
const dynamicImport = new Function("specifier", ["return ", "import", "(specifier)"].join(""));
|
|
1247
|
+
const wsModule = await dynamicImport("ws");
|
|
1248
|
+
const defaultExport = wsModule.default;
|
|
1249
|
+
const constructor = wsModule.WebSocket ?? (typeof defaultExport === "object" && defaultExport !== null ? defaultExport.WebSocket : undefined) ?? defaultExport;
|
|
1250
|
+
if (typeof constructor !== "function") {
|
|
1251
|
+
throw new Error("Could not load a WebSocket client implementation from the ws package");
|
|
1252
|
+
}
|
|
1253
|
+
return constructor;
|
|
1254
|
+
})();
|
|
1255
|
+
}
|
|
1256
|
+
return wsPackageConstructorPromise;
|
|
1257
|
+
}
|
|
1258
|
+
function getRuntimeWebSocketConstructor(runtimeWebSocket = globalThis.WebSocket) {
|
|
1259
|
+
if (typeof runtimeWebSocket === "function") {
|
|
1260
|
+
return runtimeWebSocket;
|
|
1261
|
+
}
|
|
1262
|
+
return null;
|
|
1263
|
+
}
|
|
1264
|
+
class BridgeClient {
|
|
1265
|
+
ws = null;
|
|
1266
|
+
codec = null;
|
|
1267
|
+
adapter = null;
|
|
1268
|
+
url;
|
|
1269
|
+
autoReconnect;
|
|
1270
|
+
reconnectDelay;
|
|
1271
|
+
connectTimeout;
|
|
1272
|
+
activeStreams = new Map;
|
|
1273
|
+
wsProxies = new Map;
|
|
1274
|
+
pendingWsOpens = new Map;
|
|
1275
|
+
outgoingStreams = new Map;
|
|
1276
|
+
connectPromise = null;
|
|
1277
|
+
isConnected = false;
|
|
1278
|
+
constructor(options = {}) {
|
|
1279
|
+
this.url = options.url ?? `ws://localhost:${DEFAULT_BRIDGE_PORT}`;
|
|
1280
|
+
this.autoReconnect = options.autoReconnect ?? true;
|
|
1281
|
+
this.reconnectDelay = options.reconnectDelay ?? 1000;
|
|
1282
|
+
this.connectTimeout = options.connectTimeout ?? 5000;
|
|
1283
|
+
}
|
|
1284
|
+
getUrl() {
|
|
1285
|
+
return this.url;
|
|
1286
|
+
}
|
|
1287
|
+
getHttpUrl() {
|
|
1288
|
+
return this.url.replace(/^ws:\/\//, "http://").replace(/^wss:\/\//, "https://");
|
|
1289
|
+
}
|
|
1290
|
+
async connect() {
|
|
1291
|
+
if (this.isConnected)
|
|
1292
|
+
return;
|
|
1293
|
+
if (this.connectPromise)
|
|
1294
|
+
return this.connectPromise;
|
|
1295
|
+
const WebSocketCtor = getRuntimeWebSocketConstructor();
|
|
1296
|
+
const promise = WebSocketCtor ? this.openConnection(WebSocketCtor) : this.openConnectionWithPackageFallback();
|
|
1297
|
+
this.connectPromise = promise;
|
|
1298
|
+
promise.catch(() => {
|
|
1299
|
+
if (this.connectPromise === promise) {
|
|
1300
|
+
this.connectPromise = null;
|
|
1301
|
+
}
|
|
1302
|
+
});
|
|
1303
|
+
return promise;
|
|
1304
|
+
}
|
|
1305
|
+
async openConnectionWithPackageFallback() {
|
|
1306
|
+
const WebSocketCtor = await importWsPackageConstructor();
|
|
1307
|
+
return this.openConnection(WebSocketCtor);
|
|
1308
|
+
}
|
|
1309
|
+
openConnection(WebSocketCtor) {
|
|
1310
|
+
return new Promise((resolve, reject) => {
|
|
1311
|
+
const timeout = setTimeout(() => {
|
|
1312
|
+
reject(new Error(`Connection timeout: ${this.url}`));
|
|
1313
|
+
this.ws?.close();
|
|
1314
|
+
}, this.connectTimeout);
|
|
1315
|
+
try {
|
|
1316
|
+
this.ws = new WebSocketCtor(this.url);
|
|
1317
|
+
this.ws.binaryType = "arraybuffer";
|
|
1318
|
+
const adapter = new BridgeWsAdapter(this.ws);
|
|
1319
|
+
this.adapter = adapter;
|
|
1320
|
+
this.ws.onopen = () => {
|
|
1321
|
+
clearTimeout(timeout);
|
|
1322
|
+
this.codec = new TransportV2Codec(adapter, {
|
|
1323
|
+
capabilities: [...BRIDGE_CLIENT_CAPABILITIES],
|
|
1324
|
+
onUnknownControl: (data) => this.handleJsonMessage(data),
|
|
1325
|
+
onUnknownBinary: (frame) => this.handleV2BinaryFrame(frame)
|
|
1326
|
+
});
|
|
1327
|
+
this.codec.sendHello();
|
|
1328
|
+
this.codec.handshake.catch(() => {});
|
|
1329
|
+
this.isConnected = true;
|
|
1330
|
+
this.connectPromise = null;
|
|
1331
|
+
resolve();
|
|
1332
|
+
};
|
|
1333
|
+
this.ws.onerror = (event) => {
|
|
1334
|
+
clearTimeout(timeout);
|
|
1335
|
+
this.connectPromise = null;
|
|
1336
|
+
adapter.onerror?.({ error: event.error });
|
|
1337
|
+
reject(new Error("WebSocket connection failed"));
|
|
1338
|
+
};
|
|
1339
|
+
this.ws.onclose = (event) => {
|
|
1340
|
+
adapter.onclose?.({
|
|
1341
|
+
code: event?.code ?? 1006,
|
|
1342
|
+
reason: event?.reason ?? ""
|
|
1343
|
+
});
|
|
1344
|
+
this.handleDisconnect();
|
|
1345
|
+
};
|
|
1346
|
+
this.ws.onmessage = (event) => {
|
|
1347
|
+
adapter.onmessage?.({ data: event.data });
|
|
1348
|
+
};
|
|
1349
|
+
} catch (error) {
|
|
1350
|
+
clearTimeout(timeout);
|
|
1351
|
+
this.connectPromise = null;
|
|
1352
|
+
reject(error);
|
|
1353
|
+
}
|
|
1354
|
+
});
|
|
1355
|
+
}
|
|
1356
|
+
disconnect() {
|
|
1357
|
+
this.autoReconnect = false;
|
|
1358
|
+
this.codec?.close();
|
|
1359
|
+
this.codec = null;
|
|
1360
|
+
this.adapter = null;
|
|
1361
|
+
this.ws?.close();
|
|
1362
|
+
this.ws = null;
|
|
1363
|
+
this.isConnected = false;
|
|
1364
|
+
this.cleanupPending(new Error("Bridge disconnected"));
|
|
1365
|
+
}
|
|
1366
|
+
close() {
|
|
1367
|
+
this.disconnect();
|
|
1368
|
+
}
|
|
1369
|
+
get connected() {
|
|
1370
|
+
return this.isConnected;
|
|
1371
|
+
}
|
|
1372
|
+
handleDisconnect() {
|
|
1373
|
+
this.isConnected = false;
|
|
1374
|
+
this.codec?.close();
|
|
1375
|
+
this.codec = null;
|
|
1376
|
+
this.adapter = null;
|
|
1377
|
+
this.ws = null;
|
|
1378
|
+
this.cleanupPending(new Error("Bridge disconnected"));
|
|
1379
|
+
if (this.autoReconnect) {
|
|
1380
|
+
setTimeout(() => {
|
|
1381
|
+
this.connect().catch((error) => {
|
|
1382
|
+
bridgeLog.warn("auto-reconnect attempt failed", error);
|
|
1383
|
+
});
|
|
1384
|
+
}, this.reconnectDelay);
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
cleanupPending(error) {
|
|
1388
|
+
for (const pending of this.pendingWsOpens.values()) {
|
|
1389
|
+
pending.reject(error);
|
|
1390
|
+
}
|
|
1391
|
+
this.pendingWsOpens.clear();
|
|
1392
|
+
for (const stream of this.activeStreams.values()) {
|
|
1393
|
+
stream.closed = true;
|
|
1394
|
+
if (stream.pendingPull) {
|
|
1395
|
+
stream.pendingPull.reject(error);
|
|
1396
|
+
stream.pendingPull = null;
|
|
1397
|
+
}
|
|
1398
|
+
try {
|
|
1399
|
+
stream.controller.error(error);
|
|
1400
|
+
} catch {}
|
|
1401
|
+
}
|
|
1402
|
+
this.activeStreams.clear();
|
|
1403
|
+
for (const proxy of this.wsProxies.values()) {
|
|
1404
|
+
try {
|
|
1405
|
+
proxy.onClose(1006, error.message);
|
|
1406
|
+
} catch {}
|
|
1407
|
+
}
|
|
1408
|
+
this.wsProxies.clear();
|
|
1409
|
+
this.outgoingStreams.clear();
|
|
1410
|
+
}
|
|
1411
|
+
async call(method, params, timeoutMs = 30000) {
|
|
1412
|
+
await this.ensureConnected();
|
|
1413
|
+
const codec = this.codec;
|
|
1414
|
+
if (!codec) {
|
|
1415
|
+
throw new Error("Bridge disconnected");
|
|
1416
|
+
}
|
|
1417
|
+
const { value: serializedParams, streams } = await serializeValue(params);
|
|
1418
|
+
for (const streamRef of streams) {
|
|
1419
|
+
this.outgoingStreams.set(streamRef.sid, streamRef);
|
|
1420
|
+
}
|
|
1421
|
+
const callPromise = codec.call(method, serializedParams);
|
|
1422
|
+
let timeoutHandle = null;
|
|
1423
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
1424
|
+
timeoutHandle = setTimeout(() => {
|
|
1425
|
+
reject(new Error(`RPC timeout: ${method}`));
|
|
1426
|
+
}, timeoutMs);
|
|
1427
|
+
});
|
|
1428
|
+
try {
|
|
1429
|
+
const rawResult = await Promise.race([callPromise, timeoutPromise]);
|
|
1430
|
+
return deserializeValue(rawResult, (sid) => this.createReadableStream(sid));
|
|
1431
|
+
} catch (error) {
|
|
1432
|
+
if (!this.isConnected && error instanceof Error && /v2 transport closed|transport/.test(error.message)) {
|
|
1433
|
+
throw new Error("Bridge disconnected");
|
|
1434
|
+
}
|
|
1435
|
+
throw error;
|
|
1436
|
+
} finally {
|
|
1437
|
+
if (timeoutHandle !== null)
|
|
1438
|
+
clearTimeout(timeoutHandle);
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
async createWsProxy(binding, id, url, headers) {
|
|
1442
|
+
await this.ensureConnected();
|
|
1443
|
+
const wid = nextWsId();
|
|
1444
|
+
const proxy = {
|
|
1445
|
+
clientWs: null,
|
|
1446
|
+
onMessage: () => {},
|
|
1447
|
+
onClose: () => {}
|
|
1448
|
+
};
|
|
1449
|
+
this.wsProxies.set(wid, proxy);
|
|
1450
|
+
const openedPromise = new Promise((resolve, reject) => {
|
|
1451
|
+
this.pendingWsOpens.set(wid, { resolve, reject });
|
|
1452
|
+
});
|
|
1453
|
+
const msg = {
|
|
1454
|
+
t: "ws.open",
|
|
1455
|
+
wid,
|
|
1456
|
+
target: { binding, id, url, headers }
|
|
1457
|
+
};
|
|
1458
|
+
this.send(msg);
|
|
1459
|
+
try {
|
|
1460
|
+
await openedPromise;
|
|
1461
|
+
} catch (error) {
|
|
1462
|
+
this.wsProxies.delete(wid);
|
|
1463
|
+
throw error;
|
|
1464
|
+
}
|
|
1465
|
+
return {
|
|
1466
|
+
wid,
|
|
1467
|
+
send: (data) => {
|
|
1468
|
+
const payload = typeof data === "string" ? new TextEncoder().encode(data) : data;
|
|
1469
|
+
const flags = typeof data === "string" ? BinaryFlags.TEXT : 0;
|
|
1470
|
+
const frame = encodeBinaryFrame(BinaryKind.WsData, wid, 0, flags, payload);
|
|
1471
|
+
this.sendBinary(frame);
|
|
1472
|
+
},
|
|
1473
|
+
close: (code, reason) => {
|
|
1474
|
+
const closeMsg = { t: "ws.close", wid, code, reason };
|
|
1475
|
+
this.send(closeMsg);
|
|
1476
|
+
this.wsProxies.delete(wid);
|
|
1477
|
+
},
|
|
1478
|
+
onMessage: (handler) => {
|
|
1479
|
+
proxy.onMessage = handler;
|
|
1480
|
+
},
|
|
1481
|
+
onClose: (handler) => {
|
|
1482
|
+
proxy.onClose = handler;
|
|
1483
|
+
}
|
|
1484
|
+
};
|
|
1485
|
+
}
|
|
1486
|
+
createReadableStream(sid) {
|
|
1487
|
+
return new ReadableStream({
|
|
1488
|
+
start: (controller) => {
|
|
1489
|
+
this.activeStreams.set(sid, {
|
|
1490
|
+
controller,
|
|
1491
|
+
buffer: [],
|
|
1492
|
+
creditRemaining: 0,
|
|
1493
|
+
pendingPull: null,
|
|
1494
|
+
ended: false,
|
|
1495
|
+
closed: false
|
|
1496
|
+
});
|
|
1497
|
+
},
|
|
1498
|
+
pull: async (controller) => {
|
|
1499
|
+
const stream = this.activeStreams.get(sid);
|
|
1500
|
+
if (!stream || stream.closed)
|
|
1501
|
+
return;
|
|
1502
|
+
if (stream.buffer.length > 0) {
|
|
1503
|
+
const chunk = stream.buffer.shift();
|
|
1504
|
+
controller.enqueue(chunk);
|
|
1505
|
+
return;
|
|
1506
|
+
}
|
|
1507
|
+
if (stream.ended) {
|
|
1508
|
+
controller.close();
|
|
1509
|
+
this.activeStreams.delete(sid);
|
|
1510
|
+
return;
|
|
1511
|
+
}
|
|
1512
|
+
const pullMsg = {
|
|
1513
|
+
t: "stream.pull",
|
|
1514
|
+
sid,
|
|
1515
|
+
creditBytes: DEFAULT_CHUNK_SIZE * 4
|
|
1516
|
+
};
|
|
1517
|
+
this.send(pullMsg);
|
|
1518
|
+
await new Promise((resolve, reject) => {
|
|
1519
|
+
stream.pendingPull = { resolve, reject };
|
|
1520
|
+
});
|
|
1521
|
+
stream.pendingPull = null;
|
|
1522
|
+
if (stream.closed)
|
|
1523
|
+
return;
|
|
1524
|
+
if (stream.buffer.length > 0) {
|
|
1525
|
+
const chunk = stream.buffer.shift();
|
|
1526
|
+
controller.enqueue(chunk);
|
|
1527
|
+
return;
|
|
1528
|
+
}
|
|
1529
|
+
if (stream.ended) {
|
|
1530
|
+
controller.close();
|
|
1531
|
+
this.activeStreams.delete(sid);
|
|
1532
|
+
}
|
|
1533
|
+
},
|
|
1534
|
+
cancel: () => {
|
|
1535
|
+
const stream = this.activeStreams.get(sid);
|
|
1536
|
+
if (stream) {
|
|
1537
|
+
stream.closed = true;
|
|
1538
|
+
if (stream.pendingPull) {
|
|
1539
|
+
stream.pendingPull.reject(new Error("Stream cancelled"));
|
|
1540
|
+
stream.pendingPull = null;
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
this.activeStreams.delete(sid);
|
|
1544
|
+
}
|
|
1545
|
+
});
|
|
1546
|
+
}
|
|
1547
|
+
handleJsonMessage(data) {
|
|
1548
|
+
try {
|
|
1549
|
+
const msg = parseJsonMsg(data);
|
|
1550
|
+
switch (msg.t) {
|
|
1551
|
+
case "event":
|
|
1552
|
+
this.handleEvent(msg);
|
|
1553
|
+
break;
|
|
1554
|
+
case "stream.pull":
|
|
1555
|
+
this.handleStreamPull(msg);
|
|
1556
|
+
break;
|
|
1557
|
+
case "stream.end":
|
|
1558
|
+
this.handleStreamEnd(msg);
|
|
1559
|
+
break;
|
|
1560
|
+
case "stream.abort":
|
|
1561
|
+
this.handleStreamAbort(msg);
|
|
1562
|
+
break;
|
|
1563
|
+
case "ws.opened":
|
|
1564
|
+
this.handleWsOpened(msg);
|
|
1565
|
+
break;
|
|
1566
|
+
case "ws.close":
|
|
1567
|
+
this.handleWsClose(msg);
|
|
1568
|
+
break;
|
|
1569
|
+
}
|
|
1570
|
+
} catch (error) {
|
|
1571
|
+
console.error("[devflare bridge client] parse error:", data, error);
|
|
1572
|
+
}
|
|
1573
|
+
}
|
|
1574
|
+
handleV2BinaryFrame(frame) {
|
|
1575
|
+
switch (frame.kind) {
|
|
1576
|
+
case BinaryKind.StreamChunk:
|
|
1577
|
+
this.handleStreamChunk(frame);
|
|
1578
|
+
break;
|
|
1579
|
+
case BinaryKind.WsData:
|
|
1580
|
+
this.handleWsData(frame);
|
|
1581
|
+
break;
|
|
1582
|
+
}
|
|
1583
|
+
}
|
|
1584
|
+
handleEvent(_msg) {}
|
|
1585
|
+
handleStreamPull(msg) {
|
|
1586
|
+
const streamRef = this.outgoingStreams.get(msg.sid);
|
|
1587
|
+
if (!streamRef)
|
|
1588
|
+
return;
|
|
1589
|
+
this.pumpStream(streamRef, msg.creditBytes);
|
|
1590
|
+
}
|
|
1591
|
+
async pumpStream(streamRef, creditBytes) {
|
|
1592
|
+
const reader = streamRef.stream.getReader();
|
|
1593
|
+
let sent = 0;
|
|
1594
|
+
let seq = 0;
|
|
1595
|
+
try {
|
|
1596
|
+
while (sent < creditBytes) {
|
|
1597
|
+
const { done, value } = await reader.read();
|
|
1598
|
+
if (done) {
|
|
1599
|
+
this.send({ t: "stream.end", sid: streamRef.sid });
|
|
1600
|
+
this.outgoingStreams.delete(streamRef.sid);
|
|
1601
|
+
break;
|
|
1602
|
+
}
|
|
1603
|
+
if (value) {
|
|
1604
|
+
const frame = encodeBinaryFrame(BinaryKind.StreamChunk, streamRef.sid, seq++, 0, value);
|
|
1605
|
+
this.sendBinary(frame);
|
|
1606
|
+
sent += value.byteLength;
|
|
1607
|
+
}
|
|
1608
|
+
}
|
|
1609
|
+
} catch (error) {
|
|
1610
|
+
this.send({
|
|
1611
|
+
t: "stream.abort",
|
|
1612
|
+
sid: streamRef.sid,
|
|
1613
|
+
error: String(error)
|
|
1614
|
+
});
|
|
1615
|
+
this.outgoingStreams.delete(streamRef.sid);
|
|
1616
|
+
} finally {
|
|
1617
|
+
reader.releaseLock();
|
|
1618
|
+
}
|
|
1619
|
+
}
|
|
1620
|
+
handleStreamChunk(decoded) {
|
|
1621
|
+
const stream = this.activeStreams.get(decoded.id);
|
|
1622
|
+
if (!stream || stream.closed)
|
|
1623
|
+
return;
|
|
1624
|
+
stream.buffer.push(decoded.payload);
|
|
1625
|
+
if (stream.pendingPull) {
|
|
1626
|
+
const pending = stream.pendingPull;
|
|
1627
|
+
stream.pendingPull = null;
|
|
1628
|
+
pending.resolve();
|
|
1629
|
+
}
|
|
1630
|
+
}
|
|
1631
|
+
handleStreamEnd(msg) {
|
|
1632
|
+
const stream = this.activeStreams.get(msg.sid);
|
|
1633
|
+
if (!stream)
|
|
1634
|
+
return;
|
|
1635
|
+
stream.ended = true;
|
|
1636
|
+
if (stream.pendingPull) {
|
|
1637
|
+
const pending = stream.pendingPull;
|
|
1638
|
+
stream.pendingPull = null;
|
|
1639
|
+
pending.resolve();
|
|
1640
|
+
}
|
|
1641
|
+
}
|
|
1642
|
+
handleStreamAbort(msg) {
|
|
1643
|
+
const stream = this.activeStreams.get(msg.sid);
|
|
1644
|
+
if (!stream)
|
|
1645
|
+
return;
|
|
1646
|
+
const err = new Error(msg.error ?? "Stream aborted");
|
|
1647
|
+
stream.closed = true;
|
|
1648
|
+
if (stream.pendingPull) {
|
|
1649
|
+
const pending = stream.pendingPull;
|
|
1650
|
+
stream.pendingPull = null;
|
|
1651
|
+
pending.reject(err);
|
|
1652
|
+
}
|
|
1653
|
+
try {
|
|
1654
|
+
stream.controller.error(err);
|
|
1655
|
+
} catch {}
|
|
1656
|
+
this.activeStreams.delete(msg.sid);
|
|
1657
|
+
}
|
|
1658
|
+
handleWsData(decoded) {
|
|
1659
|
+
const proxy = this.wsProxies.get(decoded.id);
|
|
1660
|
+
if (!proxy)
|
|
1661
|
+
return;
|
|
1662
|
+
const isText = (decoded.flags & BinaryFlags.TEXT) !== 0;
|
|
1663
|
+
const data = isText ? new TextDecoder().decode(decoded.payload) : decoded.payload;
|
|
1664
|
+
proxy.onMessage(data);
|
|
1665
|
+
}
|
|
1666
|
+
handleWsClose(msg) {
|
|
1667
|
+
const proxy = this.wsProxies.get(msg.wid);
|
|
1668
|
+
if (!proxy)
|
|
1669
|
+
return;
|
|
1670
|
+
proxy.onClose(msg.code, msg.reason);
|
|
1671
|
+
this.wsProxies.delete(msg.wid);
|
|
1672
|
+
}
|
|
1673
|
+
handleWsOpened(msg) {
|
|
1674
|
+
const pending = this.pendingWsOpens.get(msg.wid);
|
|
1675
|
+
if (!pending)
|
|
1676
|
+
return;
|
|
1677
|
+
this.pendingWsOpens.delete(msg.wid);
|
|
1678
|
+
pending.resolve();
|
|
1679
|
+
}
|
|
1680
|
+
async ensureConnected() {
|
|
1681
|
+
if (!this.isConnected) {
|
|
1682
|
+
await this.connect();
|
|
1683
|
+
}
|
|
1684
|
+
}
|
|
1685
|
+
send(msg) {
|
|
1686
|
+
const codec = this.codec;
|
|
1687
|
+
if (!codec || !this.isConnected) {
|
|
1688
|
+
throw new Error("Not connected to bridge");
|
|
1689
|
+
}
|
|
1690
|
+
codec.sendText(stringifyJsonMsg(msg));
|
|
1691
|
+
}
|
|
1692
|
+
sendBinary(frame) {
|
|
1693
|
+
const codec = this.codec;
|
|
1694
|
+
if (!codec || !this.isConnected) {
|
|
1695
|
+
throw new Error("Not connected to bridge");
|
|
1696
|
+
}
|
|
1697
|
+
codec.sendBinary(frame);
|
|
1698
|
+
}
|
|
1699
|
+
}
|
|
1700
|
+
var defaultClient = null;
|
|
1701
|
+
function getClient(options) {
|
|
1702
|
+
if (!defaultClient) {
|
|
1703
|
+
defaultClient = new BridgeClient(options);
|
|
1704
|
+
}
|
|
1705
|
+
return defaultClient;
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1708
|
+
// src/bridge/proxy.ts
|
|
1709
|
+
function createKVProxy(client, bindingName) {
|
|
1710
|
+
return {
|
|
1711
|
+
async get(key, options) {
|
|
1712
|
+
return client.call(`${bindingName}.kv.get`, [key, options]);
|
|
1713
|
+
},
|
|
1714
|
+
async put(key, value, options) {
|
|
1715
|
+
await client.call(`${bindingName}.kv.put`, [key, value, options]);
|
|
1716
|
+
},
|
|
1717
|
+
async delete(key) {
|
|
1718
|
+
await client.call(`${bindingName}.kv.delete`, [key]);
|
|
1719
|
+
},
|
|
1720
|
+
async list(options) {
|
|
1721
|
+
return client.call(`${bindingName}.kv.list`, [options]);
|
|
1722
|
+
},
|
|
1723
|
+
async getWithMetadata(key, options) {
|
|
1724
|
+
return client.call(`${bindingName}.kv.getWithMetadata`, [key, options]);
|
|
1725
|
+
}
|
|
1726
|
+
};
|
|
1727
|
+
}
|
|
1728
|
+
function createR2Proxy(client, bindingName) {
|
|
1729
|
+
return {
|
|
1730
|
+
async head(key) {
|
|
1731
|
+
return client.call(`${bindingName}.r2.head`, [key]);
|
|
1732
|
+
},
|
|
1733
|
+
async get(key, options) {
|
|
1734
|
+
return client.call(`${bindingName}.r2.get`, [key, options]);
|
|
1735
|
+
},
|
|
1736
|
+
async put(key, value, options) {
|
|
1737
|
+
const size = getValueSize(value);
|
|
1738
|
+
if (size > HTTP_TRANSFER_THRESHOLD) {
|
|
1739
|
+
const transferId = `${bindingName}:${key}`;
|
|
1740
|
+
const httpUrl = client.getHttpUrl();
|
|
1741
|
+
const transferUrl = httpUrl.replace(/\/$/, "") + `/_devflare/transfer/${encodeURIComponent(transferId)}`;
|
|
1742
|
+
const response = await fetch(transferUrl, {
|
|
1743
|
+
method: "PUT",
|
|
1744
|
+
body: value,
|
|
1745
|
+
headers: {
|
|
1746
|
+
...options?.httpMetadata?.contentType ? { "Content-Type": options.httpMetadata.contentType } : {}
|
|
1747
|
+
}
|
|
1748
|
+
});
|
|
1749
|
+
if (!response.ok) {
|
|
1750
|
+
const error = await response.text();
|
|
1751
|
+
throw new Error(`HTTP transfer failed: ${error}`);
|
|
1752
|
+
}
|
|
1753
|
+
const serialized = await response.json();
|
|
1754
|
+
return deserializeValue(serialized);
|
|
1755
|
+
}
|
|
1756
|
+
return client.call(`${bindingName}.r2.put`, [key, value, options]);
|
|
1757
|
+
},
|
|
1758
|
+
async delete(keys) {
|
|
1759
|
+
await client.call(`${bindingName}.r2.delete`, [keys]);
|
|
1760
|
+
},
|
|
1761
|
+
async list(options) {
|
|
1762
|
+
return client.call(`${bindingName}.r2.list`, [options]);
|
|
1763
|
+
},
|
|
1764
|
+
async createMultipartUpload(key, options) {
|
|
1765
|
+
return client.call(`${bindingName}.r2.createMultipartUpload`, [key, options]);
|
|
1766
|
+
},
|
|
1767
|
+
async resumeMultipartUpload(key, uploadId) {
|
|
1768
|
+
return client.call(`${bindingName}.r2.resumeMultipartUpload`, [key, uploadId]);
|
|
1769
|
+
}
|
|
1770
|
+
};
|
|
1771
|
+
}
|
|
1772
|
+
function getValueSize(value) {
|
|
1773
|
+
if (value instanceof Blob)
|
|
1774
|
+
return value.size;
|
|
1775
|
+
if (value instanceof ArrayBuffer)
|
|
1776
|
+
return value.byteLength;
|
|
1777
|
+
if (value instanceof Uint8Array)
|
|
1778
|
+
return value.byteLength;
|
|
1779
|
+
if (typeof value === "string")
|
|
1780
|
+
return new TextEncoder().encode(value).byteLength;
|
|
1781
|
+
if (value instanceof ReadableStream)
|
|
1782
|
+
return Infinity;
|
|
1783
|
+
return 0;
|
|
1784
|
+
}
|
|
1785
|
+
function createD1Proxy(client, bindingName) {
|
|
1786
|
+
return {
|
|
1787
|
+
prepare(sql) {
|
|
1788
|
+
return createD1StatementProxy(client, bindingName, sql, []);
|
|
1789
|
+
},
|
|
1790
|
+
async batch(statements) {
|
|
1791
|
+
const serialized = statements.map((stmt) => {
|
|
1792
|
+
const s = stmt;
|
|
1793
|
+
return { sql: s._sql, bindings: s._bindings };
|
|
1794
|
+
});
|
|
1795
|
+
return client.call(`${bindingName}.d1.batch`, [serialized]);
|
|
1796
|
+
},
|
|
1797
|
+
async exec(sql) {
|
|
1798
|
+
return client.call(`${bindingName}.d1.exec`, [sql]);
|
|
1799
|
+
},
|
|
1800
|
+
async dump() {
|
|
1801
|
+
return client.call(`${bindingName}.d1.dump`, []);
|
|
1802
|
+
}
|
|
1803
|
+
};
|
|
1804
|
+
}
|
|
1805
|
+
function createD1StatementProxy(client, bindingName, sql, bindings) {
|
|
1806
|
+
const stmt = {
|
|
1807
|
+
_sql: sql,
|
|
1808
|
+
_bindings: bindings,
|
|
1809
|
+
bind(...values) {
|
|
1810
|
+
return createD1StatementProxy(client, bindingName, sql, values);
|
|
1811
|
+
},
|
|
1812
|
+
async first(column) {
|
|
1813
|
+
return client.call(`${bindingName}.d1.stmt.first`, [sql, ...bindings, column]);
|
|
1814
|
+
},
|
|
1815
|
+
async all() {
|
|
1816
|
+
return client.call(`${bindingName}.d1.stmt.all`, [sql, ...bindings]);
|
|
1817
|
+
},
|
|
1818
|
+
async run() {
|
|
1819
|
+
return client.call(`${bindingName}.d1.stmt.run`, [sql, ...bindings]);
|
|
1820
|
+
},
|
|
1821
|
+
async raw(options) {
|
|
1822
|
+
return client.call(`${bindingName}.d1.stmt.raw`, [sql, ...bindings, options]);
|
|
1823
|
+
}
|
|
1824
|
+
};
|
|
1825
|
+
return stmt;
|
|
1826
|
+
}
|
|
1827
|
+
function createDOProxy(client, bindingName, proxyOptions = {}) {
|
|
1828
|
+
return {
|
|
1829
|
+
idFromName(name) {
|
|
1830
|
+
return createDOIdProxy(client, bindingName, { type: "name", value: name });
|
|
1831
|
+
},
|
|
1832
|
+
idFromString(hexId) {
|
|
1833
|
+
return createDOIdProxy(client, bindingName, { type: "hex", value: hexId });
|
|
1834
|
+
},
|
|
1835
|
+
newUniqueId(options) {
|
|
1836
|
+
const tempId = crypto.randomUUID().replace(/-/g, "");
|
|
1837
|
+
return createDOIdProxy(client, bindingName, { type: "unique", value: tempId, options });
|
|
1838
|
+
},
|
|
1839
|
+
get(id) {
|
|
1840
|
+
const idProxy = id;
|
|
1841
|
+
return createDOStubProxy(client, bindingName, idProxy._idInfo, proxyOptions);
|
|
1842
|
+
},
|
|
1843
|
+
getByName(name) {
|
|
1844
|
+
const id = this.idFromName(name);
|
|
1845
|
+
return this.get(id);
|
|
1846
|
+
},
|
|
1847
|
+
jurisdiction(jurisdiction) {
|
|
1848
|
+
return createDOProxy(client, bindingName, proxyOptions);
|
|
1849
|
+
}
|
|
1850
|
+
};
|
|
1851
|
+
}
|
|
1852
|
+
function createDOIdProxy(client, bindingName, idInfo) {
|
|
1853
|
+
return {
|
|
1854
|
+
_idInfo: idInfo,
|
|
1855
|
+
toString() {
|
|
1856
|
+
if (idInfo.type === "hex")
|
|
1857
|
+
return idInfo.value;
|
|
1858
|
+
return `${idInfo.type}:${idInfo.value}`;
|
|
1859
|
+
},
|
|
1860
|
+
equals(other) {
|
|
1861
|
+
return this.toString() === other.toString();
|
|
1862
|
+
}
|
|
1863
|
+
};
|
|
1864
|
+
}
|
|
1865
|
+
function createDOStubProxy(client, bindingName, idInfo, proxyOptions = {}) {
|
|
1866
|
+
const { transformResult } = proxyOptions;
|
|
1867
|
+
let resolvedId = null;
|
|
1868
|
+
const resolveId = async () => {
|
|
1869
|
+
if (resolvedId)
|
|
1870
|
+
return resolvedId;
|
|
1871
|
+
switch (idInfo.type) {
|
|
1872
|
+
case "name":
|
|
1873
|
+
resolvedId = await client.call(`${bindingName}.do.idFromName`, [idInfo.value]);
|
|
1874
|
+
break;
|
|
1875
|
+
case "hex":
|
|
1876
|
+
resolvedId = { __type: "DOId", hex: idInfo.value };
|
|
1877
|
+
break;
|
|
1878
|
+
case "unique":
|
|
1879
|
+
resolvedId = await client.call(`${bindingName}.do.newUniqueId`, [idInfo.options]);
|
|
1880
|
+
break;
|
|
1881
|
+
}
|
|
1882
|
+
return resolvedId;
|
|
1883
|
+
};
|
|
1884
|
+
const stubBase = {
|
|
1885
|
+
async fetch(input, init) {
|
|
1886
|
+
const id = await resolveId();
|
|
1887
|
+
const request = input instanceof Request ? input : new Request(input, init);
|
|
1888
|
+
const { serialized } = await serializeRequest(request);
|
|
1889
|
+
const result = await client.call(`${bindingName}.do.fetch`, [bindingName, id, serialized]);
|
|
1890
|
+
return deserializeResponse(result);
|
|
1891
|
+
},
|
|
1892
|
+
async connect(url, options) {
|
|
1893
|
+
const id = await resolveId();
|
|
1894
|
+
const headersList = [];
|
|
1895
|
+
if (options?.headers) {
|
|
1896
|
+
const headers = new Headers(options.headers);
|
|
1897
|
+
headers.forEach((value, key) => {
|
|
1898
|
+
headersList.push([key, value]);
|
|
1899
|
+
});
|
|
1900
|
+
}
|
|
1901
|
+
const wsProxy = await client.createWsProxy(bindingName, id.hex, url, headersList);
|
|
1902
|
+
let readController = null;
|
|
1903
|
+
const readable = new ReadableStream({
|
|
1904
|
+
start(controller) {
|
|
1905
|
+
readController = controller;
|
|
1906
|
+
},
|
|
1907
|
+
cancel() {
|
|
1908
|
+
wsProxy.close();
|
|
1909
|
+
}
|
|
1910
|
+
});
|
|
1911
|
+
wsProxy.onMessage((data) => {
|
|
1912
|
+
if (readController) {
|
|
1913
|
+
const chunk = typeof data === "string" ? new TextEncoder().encode(data) : data;
|
|
1914
|
+
readController.enqueue(chunk);
|
|
1915
|
+
}
|
|
1916
|
+
});
|
|
1917
|
+
wsProxy.onClose((code, reason) => {
|
|
1918
|
+
if (readController) {
|
|
1919
|
+
readController.close();
|
|
1920
|
+
}
|
|
1921
|
+
});
|
|
1922
|
+
const writable = new WritableStream({
|
|
1923
|
+
write(chunk) {
|
|
1924
|
+
wsProxy.send(chunk);
|
|
1925
|
+
},
|
|
1926
|
+
close() {
|
|
1927
|
+
wsProxy.close(1000, "Normal closure");
|
|
1928
|
+
},
|
|
1929
|
+
abort(reason) {
|
|
1930
|
+
wsProxy.close(1001, reason?.toString() ?? "Aborted");
|
|
1931
|
+
}
|
|
1932
|
+
});
|
|
1933
|
+
return {
|
|
1934
|
+
readable,
|
|
1935
|
+
writable,
|
|
1936
|
+
get opened() {
|
|
1937
|
+
return Promise.resolve({
|
|
1938
|
+
remoteAddress: "127.0.0.1",
|
|
1939
|
+
localAddress: "127.0.0.1"
|
|
1940
|
+
});
|
|
1941
|
+
},
|
|
1942
|
+
get closed() {
|
|
1943
|
+
return new Promise((resolve) => {
|
|
1944
|
+
wsProxy.onClose(() => resolve());
|
|
1945
|
+
});
|
|
1946
|
+
},
|
|
1947
|
+
close() {
|
|
1948
|
+
wsProxy.close(1000, "Normal closure");
|
|
1949
|
+
return Promise.resolve();
|
|
1950
|
+
},
|
|
1951
|
+
startTls() {
|
|
1952
|
+
throw new Error("startTls not supported on DO WebSocket proxy");
|
|
1953
|
+
}
|
|
1954
|
+
};
|
|
1955
|
+
},
|
|
1956
|
+
get id() {
|
|
1957
|
+
return createDOIdProxy(client, bindingName, idInfo);
|
|
1958
|
+
},
|
|
1959
|
+
get name() {
|
|
1960
|
+
return idInfo.type === "name" ? idInfo.value : undefined;
|
|
1961
|
+
}
|
|
1962
|
+
};
|
|
1963
|
+
return new Proxy(stubBase, {
|
|
1964
|
+
get(target, prop) {
|
|
1965
|
+
if (prop in target) {
|
|
1966
|
+
return target[prop];
|
|
1967
|
+
}
|
|
1968
|
+
if (typeof prop === "symbol") {
|
|
1969
|
+
return;
|
|
1970
|
+
}
|
|
1971
|
+
if (prop === "then" || prop === "catch" || prop === "finally") {
|
|
1972
|
+
return;
|
|
1973
|
+
}
|
|
1974
|
+
return async (...args) => {
|
|
1975
|
+
const id = await resolveId();
|
|
1976
|
+
let result = await client.call(`${bindingName}.do.rpc`, [
|
|
1977
|
+
bindingName,
|
|
1978
|
+
id,
|
|
1979
|
+
prop,
|
|
1980
|
+
args
|
|
1981
|
+
]);
|
|
1982
|
+
if (transformResult) {
|
|
1983
|
+
result = transformResult(result);
|
|
1984
|
+
}
|
|
1985
|
+
return result;
|
|
1986
|
+
};
|
|
1987
|
+
}
|
|
1988
|
+
});
|
|
1989
|
+
}
|
|
1990
|
+
var EMPTY_QUEUE_METRICS = {
|
|
1991
|
+
backlogCount: 0,
|
|
1992
|
+
backlogBytes: 0
|
|
1993
|
+
};
|
|
1994
|
+
function createQueueResponse() {
|
|
1995
|
+
return { metadata: { metrics: EMPTY_QUEUE_METRICS } };
|
|
1996
|
+
}
|
|
1997
|
+
function createQueueProxy(client, bindingName) {
|
|
1998
|
+
return {
|
|
1999
|
+
async metrics() {
|
|
2000
|
+
return EMPTY_QUEUE_METRICS;
|
|
2001
|
+
},
|
|
2002
|
+
async send(message, options) {
|
|
2003
|
+
await client.call(`${bindingName}.queue.send`, [message, options]);
|
|
2004
|
+
return createQueueResponse();
|
|
2005
|
+
},
|
|
2006
|
+
async sendBatch(messages, options) {
|
|
2007
|
+
await client.call(`${bindingName}.queue.sendBatch`, [messages, options]);
|
|
2008
|
+
return createQueueResponse();
|
|
2009
|
+
}
|
|
2010
|
+
};
|
|
2011
|
+
}
|
|
2012
|
+
function createAIProxy(client, bindingName) {
|
|
2013
|
+
return {
|
|
2014
|
+
async run(model, inputs, options) {
|
|
2015
|
+
return client.call(`${bindingName}.ai.run`, [model, inputs, options]);
|
|
2016
|
+
}
|
|
2017
|
+
};
|
|
2018
|
+
}
|
|
2019
|
+
function createSendEmailProxy(client, bindingName) {
|
|
2020
|
+
return {
|
|
2021
|
+
async send(message) {
|
|
2022
|
+
return client.call(`${bindingName}.email.send`, [message]);
|
|
2023
|
+
}
|
|
2024
|
+
};
|
|
2025
|
+
}
|
|
2026
|
+
function createWorkflowInstanceProxy(client, bindingName, id) {
|
|
2027
|
+
return {
|
|
2028
|
+
id,
|
|
2029
|
+
async pause() {
|
|
2030
|
+
await client.call(`${bindingName}.workflow.pause`, [id]);
|
|
2031
|
+
},
|
|
2032
|
+
async resume() {
|
|
2033
|
+
await client.call(`${bindingName}.workflow.resume`, [id]);
|
|
2034
|
+
},
|
|
2035
|
+
async terminate() {
|
|
2036
|
+
await client.call(`${bindingName}.workflow.terminate`, [id]);
|
|
2037
|
+
},
|
|
2038
|
+
async restart() {
|
|
2039
|
+
await client.call(`${bindingName}.workflow.restart`, [id]);
|
|
2040
|
+
},
|
|
2041
|
+
async status() {
|
|
2042
|
+
return client.call(`${bindingName}.workflow.status`, [id]);
|
|
2043
|
+
},
|
|
2044
|
+
async sendEvent(event) {
|
|
2045
|
+
await client.call(`${bindingName}.workflow.sendEvent`, [id, event]);
|
|
2046
|
+
}
|
|
2047
|
+
};
|
|
2048
|
+
}
|
|
2049
|
+
function createWorkflowProxy(client, bindingName) {
|
|
2050
|
+
const toInstance = (value) => {
|
|
2051
|
+
const id = value?.id;
|
|
2052
|
+
if (typeof id !== "string") {
|
|
2053
|
+
throw new Error(`Workflow ${bindingName} returned an instance without a string id.`);
|
|
2054
|
+
}
|
|
2055
|
+
return createWorkflowInstanceProxy(client, bindingName, id);
|
|
2056
|
+
};
|
|
2057
|
+
return {
|
|
2058
|
+
async create(options) {
|
|
2059
|
+
return toInstance(await client.call(`${bindingName}.workflow.create`, [options]));
|
|
2060
|
+
},
|
|
2061
|
+
async get(id) {
|
|
2062
|
+
return toInstance(await client.call(`${bindingName}.workflow.get`, [id]));
|
|
2063
|
+
}
|
|
2064
|
+
};
|
|
2065
|
+
}
|
|
2066
|
+
var globalBindingHints = {};
|
|
2067
|
+
function createEnvProxy(options = {}) {
|
|
2068
|
+
const client = options.client ?? getClient();
|
|
2069
|
+
const bindingProxies = new Map;
|
|
2070
|
+
const doProxyOptions = { transformResult: options.transformResult };
|
|
2071
|
+
const hints = { ...globalBindingHints, ...options.hints };
|
|
2072
|
+
return new Proxy({}, {
|
|
2073
|
+
get(target, prop) {
|
|
2074
|
+
if (typeof prop !== "string")
|
|
2075
|
+
return;
|
|
2076
|
+
if (bindingProxies.has(prop)) {
|
|
2077
|
+
return bindingProxies.get(prop);
|
|
2078
|
+
}
|
|
2079
|
+
const hint = hints[prop];
|
|
2080
|
+
let proxy;
|
|
2081
|
+
switch (hint) {
|
|
2082
|
+
case "kv":
|
|
2083
|
+
proxy = createKVProxy(client, prop);
|
|
2084
|
+
break;
|
|
2085
|
+
case "r2":
|
|
2086
|
+
proxy = createR2Proxy(client, prop);
|
|
2087
|
+
break;
|
|
2088
|
+
case "d1":
|
|
2089
|
+
proxy = createD1Proxy(client, prop);
|
|
2090
|
+
break;
|
|
2091
|
+
case "do":
|
|
2092
|
+
proxy = createDOProxy(client, prop, doProxyOptions);
|
|
2093
|
+
break;
|
|
2094
|
+
case "queue":
|
|
2095
|
+
proxy = createQueueProxy(client, prop);
|
|
2096
|
+
break;
|
|
2097
|
+
case "ai":
|
|
2098
|
+
proxy = createAIProxy(client, prop);
|
|
2099
|
+
break;
|
|
2100
|
+
case "sendEmail":
|
|
2101
|
+
proxy = createSendEmailProxy(client, prop);
|
|
2102
|
+
break;
|
|
2103
|
+
case "workflow":
|
|
2104
|
+
proxy = createWorkflowProxy(client, prop);
|
|
2105
|
+
break;
|
|
2106
|
+
case "secret":
|
|
2107
|
+
case "var":
|
|
2108
|
+
proxy = createSimpleBindingProxy(client, prop);
|
|
2109
|
+
break;
|
|
2110
|
+
default:
|
|
2111
|
+
proxy = createGenericBindingProxy(client, prop);
|
|
2112
|
+
}
|
|
2113
|
+
bindingProxies.set(prop, proxy);
|
|
2114
|
+
return proxy;
|
|
2115
|
+
},
|
|
2116
|
+
has(target, prop) {
|
|
2117
|
+
return typeof prop === "string";
|
|
2118
|
+
},
|
|
2119
|
+
ownKeys() {
|
|
2120
|
+
return Object.keys(hints);
|
|
2121
|
+
},
|
|
2122
|
+
getOwnPropertyDescriptor(target, prop) {
|
|
2123
|
+
if (typeof prop === "string") {
|
|
2124
|
+
return { configurable: true, enumerable: true, writable: false };
|
|
2125
|
+
}
|
|
2126
|
+
return;
|
|
2127
|
+
}
|
|
2128
|
+
});
|
|
2129
|
+
}
|
|
2130
|
+
function createGenericBindingProxy(client, bindingName) {
|
|
2131
|
+
return new Proxy({}, {
|
|
2132
|
+
get(target, prop) {
|
|
2133
|
+
if (typeof prop !== "string")
|
|
2134
|
+
return;
|
|
2135
|
+
if (["get", "put", "delete", "list", "getWithMetadata"].includes(prop)) {
|
|
2136
|
+
return createKVProxy(client, bindingName)[prop];
|
|
2137
|
+
}
|
|
2138
|
+
if (["idFromName", "idFromString", "newUniqueId", "get"].includes(prop)) {
|
|
2139
|
+
return createDOProxy(client, bindingName)[prop];
|
|
2140
|
+
}
|
|
2141
|
+
if (["prepare", "batch", "exec", "dump"].includes(prop)) {
|
|
2142
|
+
return createD1Proxy(client, bindingName)[prop];
|
|
2143
|
+
}
|
|
2144
|
+
if (["head"].includes(prop)) {
|
|
2145
|
+
return createR2Proxy(client, bindingName)[prop];
|
|
2146
|
+
}
|
|
2147
|
+
return async (...args) => {
|
|
2148
|
+
return client.call(`${bindingName}.${prop}`, args);
|
|
2149
|
+
};
|
|
2150
|
+
}
|
|
2151
|
+
});
|
|
2152
|
+
}
|
|
2153
|
+
function createSimpleBindingProxy(client, bindingName) {
|
|
2154
|
+
let cachedValue;
|
|
2155
|
+
let fetched = false;
|
|
2156
|
+
let pendingValue = null;
|
|
2157
|
+
const loadValue = () => {
|
|
2158
|
+
if (fetched) {
|
|
2159
|
+
return Promise.resolve(cachedValue);
|
|
2160
|
+
}
|
|
2161
|
+
if (!pendingValue) {
|
|
2162
|
+
pendingValue = client.call(`${bindingName}.var.value`, []).then((value) => {
|
|
2163
|
+
cachedValue = value;
|
|
2164
|
+
fetched = true;
|
|
2165
|
+
return value;
|
|
2166
|
+
}).catch((error) => {
|
|
2167
|
+
pendingValue = null;
|
|
2168
|
+
throw error;
|
|
2169
|
+
});
|
|
2170
|
+
}
|
|
2171
|
+
return pendingValue;
|
|
2172
|
+
};
|
|
2173
|
+
return {
|
|
2174
|
+
then(resolve, reject) {
|
|
2175
|
+
return loadValue().then(resolve ?? undefined, reject ?? undefined);
|
|
2176
|
+
},
|
|
2177
|
+
toString() {
|
|
2178
|
+
if (!fetched)
|
|
2179
|
+
throw new Error(`Binding ${bindingName} not yet fetched. Use await.`);
|
|
2180
|
+
return String(cachedValue);
|
|
2181
|
+
}
|
|
2182
|
+
};
|
|
2183
|
+
}
|
|
2184
|
+
var globalEnvProxy = null;
|
|
2185
|
+
var bridgeEnv = new Proxy({}, {
|
|
2186
|
+
get(target, prop) {
|
|
2187
|
+
if (!globalEnvProxy) {
|
|
2188
|
+
globalEnvProxy = createEnvProxy({ lazy: true });
|
|
2189
|
+
}
|
|
2190
|
+
return globalEnvProxy[prop];
|
|
2191
|
+
}
|
|
2192
|
+
});
|
|
2193
|
+
function initEnv(options = {}) {
|
|
2194
|
+
globalEnvProxy = createEnvProxy(options);
|
|
2195
|
+
return globalEnvProxy;
|
|
2196
|
+
}
|
|
2197
|
+
function setBindingHints(hints) {
|
|
2198
|
+
globalBindingHints = { ...globalBindingHints, ...hints };
|
|
2199
|
+
globalEnvProxy = null;
|
|
2200
|
+
}
|
|
2201
|
+
|
|
2202
|
+
export { ContextAccessError, createContextProxy, createFetchEvent, createQueueEvent, createScheduledEvent, createEmailEvent, createTailEvent, createDurableObjectFetchEvent, createDurableObjectAlarmEvent, createDurableObjectWebSocketMessageEvent, createDurableObjectWebSocketCloseEvent, createDurableObjectWebSocketErrorEvent, runWithContext, runWithEventContext, getContext, getContextOrNull, getEventContext, getEventContextOrNull, hasContext, getFetchEvent, getQueueEvent, getScheduledEvent, getEmailEvent, getTailEvent, getDurableObjectEvent, getDurableObjectFetchEvent, getDurableObjectAlarmEvent, getDurableObjectWebSocketMessageEvent, getDurableObjectWebSocketCloseEvent, getDurableObjectWebSocketErrorEvent, ContextUnavailableError, BridgeClient, getClient, createEnvProxy, bridgeEnv, initEnv, setBindingHints };
|