devflare 1.0.0-next.15 → 1.0.0-next.17
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 +9809 -1819
- package/README.md +376 -40
- package/bin/devflare.js +17 -7
- 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-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-m6jq6fnp.js +475 -0
- package/dist/account-mvnfagh9.js +475 -0
- package/dist/account-p0crq2gh.js +475 -0
- package/dist/account-qkcevx7a.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 +29 -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.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 +7 -9
- 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 +2007 -39
- package/dist/browser.d.ts.map +1 -1
- package/dist/{src/browser.js → browser.js} +22 -44
- 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-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-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-h31egsze.js +53 -0
- package/dist/build-hpczwagb.js +53 -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-vvndgwg0.js +52 -0
- package/dist/build-wp559jkf.js +54 -0
- package/dist/build-x4r67275.js +52 -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-yvn0yhwx.js +52 -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.map +1 -1
- package/dist/bundler/index.d.ts +1 -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 +0 -1
- package/dist/bundler/worker-bundler.d.ts.map +1 -1
- package/dist/bundler/worker-compat.d.ts.map +1 -1
- package/dist/cli/build-manifest.d.ts +54 -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 +27 -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/deploy.d.ts.map +1 -1
- 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/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 +44 -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 +2 -1
- package/dist/cli/config-path.d.ts.map +1 -1
- 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/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 +60 -0
- 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 +123 -6
- 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 +36 -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.d.ts +65 -20
- 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 +8 -4
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- 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 +8 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resource-resolution.d.ts +44 -8
- package/dist/config/resource-resolution.d.ts.map +1 -1
- package/dist/config/schema-bindings.d.ts +955 -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 +1677 -0
- package/dist/config/schema-env.d.ts.map +1 -0
- package/dist/config/schema-normalization.d.ts +88 -0
- package/dist/config/schema-normalization.d.ts.map +1 -0
- package/dist/config/schema-runtime.d.ts +230 -0
- package/dist/config/schema-runtime.d.ts.map +1 -0
- package/dist/config/schema.d.ts +1312 -3575
- 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-v9tr4rts.js → config-1japnjmx.js} +6 -4
- package/dist/config-287wjn1m.js +59 -0
- package/dist/config-4x6vq82e.js +59 -0
- package/dist/config-5n0avhcx.js +59 -0
- package/dist/config-70s2ap5j.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-baee5690.js +59 -0
- package/dist/config-bczpc1ey.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-qts6nh6g.js +59 -0
- package/dist/config-sg2xrdt4.js +59 -0
- package/dist/config-vzwckat3.js +59 -0
- package/dist/config-x90dkmm7.js +59 -0
- package/dist/decorators/durable-object.d.ts.map +1 -1
- package/dist/{src/decorators → decorators}/index.js +2 -2
- package/dist/deploy-1s6nv5rp.js +921 -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-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-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-jey5pnqn.js +1040 -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-ppp8pg6w.js +1038 -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-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-tnfvfh9m.js +1040 -0
- package/dist/deploy-w5f8db4s.js +1040 -0
- package/dist/deploy-wsxcectr.js +921 -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-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-6t22zmey.js +2350 -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-bkbz97z0.js +2314 -0
- package/dist/dev-ct3344kv.js +2160 -0
- package/dist/{dev-ymtphbkg.js → dev-dg8dh5c1.js} +479 -616
- package/dist/dev-dr5jb965.js +2427 -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-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-n0gx7eya.js +2350 -0
- package/dist/dev-n23m6rtb.js +2314 -0
- package/dist/dev-ny8fmkzg.js +2432 -0
- package/dist/dev-p1c65cga.js +2386 -0
- package/dist/dev-p4fjbb4h.js +2395 -0
- package/dist/dev-pnfcv79z.js +2160 -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-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 +56 -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 +16 -0
- package/dist/dev-server/miniflare-bindings.d.ts.map +1 -0
- package/dist/dev-server/miniflare-dev-config.d.ts +30 -0
- package/dist/dev-server/miniflare-dev-config.d.ts.map +1 -0
- package/dist/dev-server/miniflare-worker-config.d.ts +44 -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.map +1 -1
- 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.map +1 -1
- package/dist/dev-server/vite-process.d.ts +14 -0
- package/dist/dev-server/vite-process.d.ts.map +1 -0
- package/dist/dev-server/vite-utils.d.ts +19 -1
- package/dist/dev-server/vite-utils.d.ts.map +1 -1
- package/dist/dev-server/worker-source-watcher.d.ts +17 -0
- package/dist/dev-server/worker-source-watcher.d.ts.map +1 -0
- package/dist/dev-server/worker-surface-paths.d.ts +6 -0
- package/dist/dev-server/worker-surface-paths.d.ts.map +1 -0
- package/dist/dev-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-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-zsb2xk1x.js +2427 -0
- package/dist/dev-zty3yhzg.js +2324 -0
- package/dist/doctor-3mqavqg3.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-xv4gm1h4.js → doctor-c5m9pmwq.js} +67 -32
- package/dist/doctor-cqfkgxvw.js +245 -0
- package/dist/doctor-e1h9mhzp.js +245 -0
- package/dist/doctor-fmqsrafk.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-tecv869a.js +245 -0
- package/dist/doctor-wg0245pe.js +245 -0
- package/dist/doctor-z3jfqxtz.js +245 -0
- package/dist/durable-object-4hey8fgy.js +13 -0
- package/dist/durable-object-v3gsnybk.js +13 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/index-0krb65s3.js +215 -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-fef08w43.js → index-124e9t4t.js} +8 -7
- package/dist/index-1546yrn0.js +74 -0
- package/dist/index-15fpa5tx.js +232 -0
- package/dist/index-18mp5v50.js +538 -0
- package/dist/index-195tc6qh.js +1372 -0
- package/dist/{index-k8vh558d.js → index-1bg8w2gf.js} +15 -2
- 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-1wn8mjep.js +808 -0
- package/dist/index-1xhd5czz.js +185 -0
- package/dist/index-2a2g4fwp.js +993 -0
- package/dist/{index-7bq4xq84.js → index-2bmtj21z.js} +7 -12
- package/dist/index-2dpmd14d.js +52 -0
- package/dist/index-2fa0afdp.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-2y90j9cz.js +74 -0
- package/dist/index-33ep0z9x.js +385 -0
- package/dist/index-37jgbaw6.js +1372 -0
- package/dist/index-380ncsqc.js +977 -0
- package/dist/index-3e1x39fc.js +365 -0
- package/dist/index-3e7by9sy.js +223 -0
- package/dist/index-3egad6wm.js +538 -0
- package/dist/index-3f8rzmjw.js +232 -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-48rxsj95.js +365 -0
- package/dist/index-4bezcdd1.js +385 -0
- package/dist/index-4fp11z9e.js +973 -0
- package/dist/{index-vky23txa.js → index-4knecthc.js} +2 -2
- package/dist/index-502y7w13.js +538 -0
- package/dist/index-50mxxb4q.js +185 -0
- package/dist/index-5achzspr.js +185 -0
- package/dist/index-5ef3jmv7.js +1372 -0
- package/dist/index-5eswe8yv.js +844 -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-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-66sx3b3v.js +385 -0
- package/dist/index-678j0n13.js +74 -0
- package/dist/index-6ftrth7n.js +1218 -0
- package/dist/index-6g90pvxa.js +215 -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-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-7eqyr4j8.js +70 -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-7vbjt6ba.js +805 -0
- package/dist/index-7z4b0vgd.js +470 -0
- package/dist/index-82f1z98k.js +41 -0
- package/dist/index-82xn4azv.js +74 -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-8evn52g1.js +1218 -0
- package/dist/index-8jkf4nsd.js +695 -0
- package/dist/index-8nx4ce3e.js +133 -0
- package/dist/index-8q1bcnrh.js +1372 -0
- package/dist/index-8t5gynct.js +971 -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-9d125myk.js +1372 -0
- package/dist/{index-001mw014.js → index-9fbtk7gv.js} +134 -248
- package/dist/index-9gg0kqw0.js +470 -0
- package/dist/index-9ryw7mcw.js +971 -0
- 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-afjbpgb1.js +1218 -0
- package/dist/index-at89fpde.js +470 -0
- package/dist/{index-5yxg30va.js → index-awr0tp6p.js} +15 -6
- 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-b64sbzgv.js +884 -0
- package/dist/index-b7r8ntpm.js +1372 -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-bj0mk3dw.js +74 -0
- package/dist/index-bj3a8dr0.js +1372 -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-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-d5dgb1j6.js +74 -0
- package/dist/index-da397xcx.js +1372 -0
- package/dist/index-damyy8bw.js +1372 -0
- package/dist/index-dd6fwwmq.js +456 -0
- package/dist/index-dh1954bp.js +52 -0
- package/dist/index-djp2wd1f.js +1372 -0
- package/dist/index-dmbdj6va.js +805 -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-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-fkyvxe4b.js +968 -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-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-gn5wy09x.js +205 -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-h8r2d8y5.js +366 -0
- package/dist/index-heeqwrfd.js +385 -0
- package/dist/index-hheb5dyt.js +192 -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-hpzasdhw.js +513 -0
- package/dist/index-hqdr9wdm.js +74 -0
- package/dist/index-hrvz8d26.js +1372 -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-jptqxkew.js +470 -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-kawa49m8.js +371 -0
- package/dist/index-key4e5c9.js +168 -0
- package/dist/index-khbmdrn2.js +884 -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-kybmjvad.js +1212 -0
- package/dist/index-kzm9cea8.js +185 -0
- package/dist/index-m2d74gqg.js +808 -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-mkrmaea3.js +185 -0
- package/dist/index-mkxnyyjn.js +264 -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-mzw7732t.js +74 -0
- package/dist/index-n3mjwz22.js +188 -0
- package/dist/index-n3yksgz0.js +1372 -0
- package/dist/{index-8gtqgb3q.js → index-n4jr3dmk.js} +55 -100
- 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-nga2tg9z.js +1372 -0
- package/dist/index-ngbzr9gz.js +805 -0
- package/dist/index-nh90nk7j.js +380 -0
- package/dist/index-njnmfxm5.js +1372 -0
- package/dist/index-nqma24j3.js +385 -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-p1xe5eem.js +513 -0
- package/dist/index-p296ban8.js +191 -0
- package/dist/index-p477xm52.js +385 -0
- package/dist/index-p8nmkrgw.js +470 -0
- package/dist/{index-zvgc3e0c.js → index-p97s12vf.js} +200 -97
- package/dist/index-p9hvv0yd.js +401 -0
- package/dist/index-pac7wv88.js +307 -0
- package/dist/index-ptp2pfq1.js +52 -0
- package/dist/index-pyeycp3f.js +74 -0
- package/dist/index-q23xf3vr.js +479 -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-qhyy018y.js +467 -0
- package/dist/index-qmhdydwy.js +70 -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-qye17gq5.js +264 -0
- package/dist/index-r0839f5k.js +133 -0
- package/dist/index-r1rqg72v.js +1372 -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-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-s22verzj.js +1218 -0
- package/dist/index-s2s3g1nt.js +133 -0
- package/dist/index-s7ytytth.js +781 -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-t18wyhgf.js +418 -0
- package/dist/index-t4fhcx1n.js +71 -0
- package/dist/index-td4hbgj5.js +1372 -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-v8vvsn9x.js → index-tte89s31.js} +29 -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-v3znz08m.js +968 -0
- package/dist/index-v78xbj6n.js +808 -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-59df49vn.js → index-vdewcg1r.js} +233 -105
- package/dist/index-vhqww6tt.js +307 -0
- package/dist/index-vse8620z.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-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-wnnbbbkt.js +1192 -0
- package/dist/index-wvcmvtjf.js +1372 -0
- package/dist/index-x0jbntp0.js +470 -0
- package/dist/index-x6scc3nx.js +70 -0
- package/dist/index-x8e2wsbv.js +971 -0
- package/dist/index-xgfyxpfs.js +1218 -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-y3q6qvv3.js +316 -0
- package/dist/index-y44ts1dk.js +52 -0
- package/dist/index-y5nt1wjb.js +971 -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-z4qgk76w.js +1372 -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-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 +61 -0
- package/dist/{init-na2atvz2.js → init-wfh63bfz.js} +25 -18
- 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-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-dp0napaz.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-w76jx22q.js +77 -0
- package/dist/login-ze7y36rc.js +77 -0
- package/dist/previews-02jmcwft.js +1214 -0
- package/dist/previews-31bq82km.js +1225 -0
- package/dist/previews-62pcvvpe.js +1214 -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-a5xbkksy.js +1214 -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-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-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-tk7vpzj9.js +1214 -0
- package/dist/previews-tqt4pk27.js +1214 -0
- package/dist/previews-vqg4psk2.js +1225 -0
- package/dist/productions-4abj58kx.js +505 -0
- package/dist/productions-4dpec71r.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-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-dkgry3gv.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-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-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/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 +12 -266
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/exports.d.ts +4 -7
- package/dist/runtime/exports.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +3 -3
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/{src/runtime → runtime}/index.js +22 -13
- package/dist/runtime/middleware.d.ts +56 -31
- package/dist/runtime/middleware.d.ts.map +1 -1
- package/dist/runtime/router/index.d.ts +7 -0
- package/dist/runtime/router/index.d.ts.map +1 -0
- package/dist/runtime/router/types.d.ts +24 -0
- package/dist/runtime/router/types.d.ts.map +1 -0
- package/dist/runtime/validation.d.ts +9 -1
- package/dist/runtime/validation.d.ts.map +1 -1
- package/dist/{src/sveltekit → sveltekit}/index.js +36 -69
- package/dist/sveltekit/platform.d.ts +11 -1
- package/dist/sveltekit/platform.d.ts.map +1 -1
- 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 +7 -0
- package/dist/test/bridge-context.d.ts.map +1 -1
- package/dist/test/cf.d.ts +10 -10
- package/dist/test/email.d.ts.map +1 -1
- package/dist/test/index.d.ts +1 -7
- package/dist/test/index.d.ts.map +1 -1
- package/dist/{index-3a4mmn57.js → test/index.js} +1661 -1424
- 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.map +1 -1
- package/dist/test/scheduled.d.ts.map +1 -1
- package/dist/test/should-skip.d.ts +0 -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 +7 -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.map +1 -1
- package/dist/test/utilities.d.ts +13 -5
- package/dist/test/utilities.d.ts.map +1 -1
- package/dist/test/worker.d.ts +1 -1
- 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-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-0qv4xces.js +572 -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-8g78x34n.js +572 -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-jqn26et3.js +572 -0
- package/dist/types-n0mxbq26.js +572 -0
- package/dist/types-naz9hvw5.js +572 -0
- package/dist/{types-158m16vd.js → types-qjcd1jks.js} +245 -141
- 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-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/resolve-package.d.ts.map +1 -1
- package/dist/utils/send-email.d.ts.map +1 -1
- package/dist/utils/send-email.js +19 -0
- package/dist/vite/config-file.d.ts.map +1 -1
- package/dist/{src/vite → vite}/index.js +12 -9
- 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 +25 -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-transform.d.ts +41 -0
- package/dist/vite/plugin-transform.d.ts.map +1 -0
- package/dist/vite/plugin.d.ts +6 -39
- 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-68zttchg.js +513 -0
- package/dist/worker-729cf3fh.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 +1 -7
- package/dist/worker-entry/composed-worker.d.ts.map +1 -1
- 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 +1 -1
- package/dist/worker-entry/routes.d.ts.map +1 -1
- package/dist/worker-entry/surface-paths.d.ts +15 -0
- package/dist/worker-entry/surface-paths.d.ts.map +1 -0
- package/dist/worker-entrypoint-4xp7msd7.js +16 -0
- package/dist/worker-entrypoint-f1v9y4s8.js +15 -0
- package/dist/worker-f6xqjg65.js +513 -0
- package/dist/worker-fdnn62de.js +513 -0
- package/dist/worker-frnh95rg.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-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-wv4jdneg.js +513 -0
- package/dist/worker-xcbscr75.js +513 -0
- package/dist/worker-ywwkf3cp.js +513 -0
- package/dist/worker-z8wtk0sh.js +513 -0
- package/package.json +138 -116
- package/R2.md +0 -200
- package/dist/account-spa7gzsn.js +0 -421
- package/dist/browser-shim/worker.d.ts +0 -14
- package/dist/browser-shim/worker.d.ts.map +0 -1
- package/dist/build-zv25ke4s.js +0 -102
- package/dist/deploy-6xmqvv06.js +0 -118
- package/dist/index-0rsa2c1t.js +0 -325
- package/dist/index-2q3pmzrx.js +0 -90
- package/dist/index-5s1bz1e0.js +0 -202
- package/dist/index-6nb7w45m.js +0 -79
- package/dist/index-n932ytmq.js +0 -470
- package/dist/index-tksw7gpy.js +0 -503
- package/dist/index-v43z02tr.js +0 -205
- package/dist/index-xdq9ery1.js +0 -664
- package/dist/src/cli/index.js +0 -10
- package/dist/src/cloudflare/index.js +0 -14
- package/dist/src/index.js +0 -140
- package/dist/src/test/index.js +0 -80
- package/dist/test/multi-worker-context.d.ts +0 -114
- package/dist/test/multi-worker-context.d.ts.map +0 -1
|
@@ -1,45 +1,66 @@
|
|
|
1
1
|
import {
|
|
2
2
|
bundleWorkerEntry,
|
|
3
3
|
createDOBundler
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-9fbtk7gv.js";
|
|
5
5
|
import {
|
|
6
6
|
detectViteProject,
|
|
7
7
|
stopSpawnedProcessTree,
|
|
8
8
|
waitForViteReady
|
|
9
9
|
} from "./index-y1d8za14.js";
|
|
10
10
|
import {
|
|
11
|
+
createCliTheme,
|
|
12
|
+
cyanBold,
|
|
13
|
+
dim,
|
|
14
|
+
logLine,
|
|
15
|
+
yellow
|
|
16
|
+
} from "./index-stgn34cr.js";
|
|
17
|
+
import"./index-3t6rypgc.js";
|
|
18
|
+
import {
|
|
19
|
+
DEFAULT_EMAIL_ENTRY_FILES,
|
|
20
|
+
DEFAULT_FETCH_ENTRY_FILES,
|
|
21
|
+
DEFAULT_QUEUE_ENTRY_FILES,
|
|
22
|
+
DEFAULT_SCHEDULED_ENTRY_FILES,
|
|
23
|
+
hasWorkerSurfacePaths,
|
|
11
24
|
prepareComposedWorkerEntrypoint,
|
|
12
25
|
resolveEffectiveViteProject,
|
|
26
|
+
resolveWorkerSurfacePaths,
|
|
13
27
|
writeGeneratedViteConfig
|
|
14
|
-
} from "./index-
|
|
28
|
+
} from "./index-p97s12vf.js";
|
|
15
29
|
import {
|
|
16
30
|
discoverRoutes,
|
|
17
31
|
getRouteDirectoryCandidate
|
|
18
32
|
} from "./index-1p814k7s.js";
|
|
19
33
|
import"./index-rbht7m9r.js";
|
|
20
34
|
import"./index-9wt9x09k.js";
|
|
35
|
+
import {
|
|
36
|
+
GATEWAY_RUNTIME_JS
|
|
37
|
+
} from "./index-q34rvh5a.js";
|
|
21
38
|
import {
|
|
22
39
|
clearLocalSendEmailBindings,
|
|
23
40
|
setLocalSendEmailBindings
|
|
24
|
-
} from "./index-
|
|
25
|
-
import"./index-
|
|
41
|
+
} from "./index-124e9t4t.js";
|
|
42
|
+
import"./index-n8k8chde.js";
|
|
26
43
|
import {
|
|
27
44
|
getLocalD1DatabaseIdentifier,
|
|
45
|
+
getLocalKVNamespaceIdentifier,
|
|
46
|
+
getSingleBrowserBindingName,
|
|
28
47
|
loadConfig,
|
|
29
48
|
resolveConfigPath
|
|
30
|
-
} from "./index-
|
|
31
|
-
import"./index-
|
|
32
|
-
import"./index-
|
|
49
|
+
} from "./index-dmbdj6va.js";
|
|
50
|
+
import"./index-nte9n8w9.js";
|
|
51
|
+
import"./index-z9fjnwa8.js";
|
|
52
|
+
import"./index-p296ban8.js";
|
|
53
|
+
import"./index-tte89s31.js";
|
|
33
54
|
import {
|
|
34
55
|
__require
|
|
35
56
|
} from "./index-37x76zdn.js";
|
|
36
57
|
|
|
37
58
|
// src/cli/commands/dev.ts
|
|
38
59
|
import { createConsola } from "consola";
|
|
39
|
-
import { relative, resolve as
|
|
60
|
+
import { relative, resolve as resolve4 } from "pathe";
|
|
40
61
|
|
|
41
62
|
// src/dev-server/server.ts
|
|
42
|
-
import {
|
|
63
|
+
import { resolve as resolve3 } from "pathe";
|
|
43
64
|
|
|
44
65
|
// src/browser-shim/server.ts
|
|
45
66
|
import { homedir } from "node:os";
|
|
@@ -53,8 +74,6 @@ import {
|
|
|
53
74
|
detectBrowserPlatform,
|
|
54
75
|
Browser as BrowserType
|
|
55
76
|
} from "@puppeteer/browsers";
|
|
56
|
-
var sessions = new Map;
|
|
57
|
-
var history = [];
|
|
58
77
|
var cachedExecutablePath = null;
|
|
59
78
|
async function ensureChrome(cacheDir, logger) {
|
|
60
79
|
if (cachedExecutablePath && existsSync(cachedExecutablePath)) {
|
|
@@ -94,8 +113,45 @@ function createBrowserShim(options = {}) {
|
|
|
94
113
|
} = options;
|
|
95
114
|
let server = null;
|
|
96
115
|
let executablePath = null;
|
|
116
|
+
const sessions = new Map;
|
|
117
|
+
const history = [];
|
|
97
118
|
let WebSocketServerClass = null;
|
|
98
119
|
let WebSocketClass = null;
|
|
120
|
+
const maxRequestBodyBytes = 1024 * 1024;
|
|
121
|
+
function getRequestOrigin(req) {
|
|
122
|
+
const origin = req.headers.origin;
|
|
123
|
+
if (typeof origin === "string") {
|
|
124
|
+
return origin;
|
|
125
|
+
}
|
|
126
|
+
if (Array.isArray(origin) && origin[0]) {
|
|
127
|
+
return origin[0];
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
function isLoopbackOrigin(origin) {
|
|
132
|
+
try {
|
|
133
|
+
const url = new URL(origin);
|
|
134
|
+
return url.hostname === "127.0.0.1" || url.hostname === "localhost" || url.hostname === "::1" || url.hostname === "[::1]";
|
|
135
|
+
} catch {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function applyCorsHeaders(req, res) {
|
|
140
|
+
const origin = getRequestOrigin(req);
|
|
141
|
+
if (!origin) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
if (!isLoopbackOrigin(origin)) {
|
|
145
|
+
res.writeHead(403, { "Content-Type": "application/json" });
|
|
146
|
+
res.end(JSON.stringify({ error: "Forbidden origin" }));
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
res.setHeader("Access-Control-Allow-Origin", origin);
|
|
150
|
+
res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
|
|
151
|
+
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
|
|
152
|
+
res.setHeader("Vary", "Origin");
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
99
155
|
async function acquireSession(acquireOptions) {
|
|
100
156
|
if (!executablePath) {
|
|
101
157
|
throw new Error("Chrome not initialized");
|
|
@@ -174,9 +230,9 @@ function createBrowserShim(options = {}) {
|
|
|
174
230
|
const url = new URL(req.url || "/", `http://${host}:${port}`);
|
|
175
231
|
const method = req.method || "GET";
|
|
176
232
|
logger?.debug(`[BrowserShim] ${method} ${url.pathname}${url.search ? url.search : ""}`);
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
233
|
+
if (!applyCorsHeaders(req, res)) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
180
236
|
if (method === "OPTIONS") {
|
|
181
237
|
res.writeHead(204);
|
|
182
238
|
res.end();
|
|
@@ -264,7 +320,16 @@ function createBrowserShim(options = {}) {
|
|
|
264
320
|
function readBody(req) {
|
|
265
321
|
return new Promise((resolve, reject) => {
|
|
266
322
|
const chunks = [];
|
|
267
|
-
|
|
323
|
+
let totalBytes = 0;
|
|
324
|
+
req.on("data", (chunk) => {
|
|
325
|
+
totalBytes += chunk.length;
|
|
326
|
+
if (totalBytes > maxRequestBodyBytes) {
|
|
327
|
+
req.destroy();
|
|
328
|
+
reject(new Error(`Request body exceeds ${maxRequestBodyBytes} bytes`));
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
chunks.push(chunk);
|
|
332
|
+
});
|
|
268
333
|
req.on("end", () => resolve(Buffer.concat(chunks).toString()));
|
|
269
334
|
req.on("error", reject);
|
|
270
335
|
});
|
|
@@ -298,6 +363,14 @@ function createBrowserShim(options = {}) {
|
|
|
298
363
|
if (WebSocketServerClass) {
|
|
299
364
|
const wss = new WebSocketServerClass({ noServer: true });
|
|
300
365
|
server.on("upgrade", (request, socket, head) => {
|
|
366
|
+
const origin = getRequestOrigin(request);
|
|
367
|
+
if (origin && !isLoopbackOrigin(origin)) {
|
|
368
|
+
socket.write(`HTTP/1.1 403 Forbidden\r
|
|
369
|
+
\r
|
|
370
|
+
`);
|
|
371
|
+
socket.destroy();
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
301
374
|
const url = new URL(request.url || "/", `http://${host}:${port}`);
|
|
302
375
|
if (url.pathname !== "/v1/connectDevtools") {
|
|
303
376
|
socket.destroy();
|
|
@@ -415,7 +488,7 @@ function createBrowserShim(options = {}) {
|
|
|
415
488
|
logger?.success(`Browser shim server ready on http://${host}:${port}`);
|
|
416
489
|
}
|
|
417
490
|
async function stop() {
|
|
418
|
-
for (const sessionId of sessions.keys()) {
|
|
491
|
+
for (const sessionId of Array.from(sessions.keys())) {
|
|
419
492
|
await closeSession(sessionId, 3, "ServerShutdown");
|
|
420
493
|
}
|
|
421
494
|
if (server) {
|
|
@@ -812,186 +885,129 @@ async function checkRemoteBindingRequirements(config) {
|
|
|
812
885
|
};
|
|
813
886
|
}
|
|
814
887
|
|
|
815
|
-
// src/dev-server/
|
|
816
|
-
|
|
817
|
-
var
|
|
818
|
-
function
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
const match = COMPATIBILITY_DATE_FALLBACK_REGEX.exec(normalizedMessage);
|
|
824
|
-
if (!match) {
|
|
825
|
-
return null;
|
|
826
|
-
}
|
|
827
|
-
const [, _supportedDate, requestedDate, fallbackDate] = match;
|
|
828
|
-
return `Using latest supported Cloudflare Workers Runtime compatibility date ${fallbackDate} (requested ${requestedDate})`;
|
|
829
|
-
}
|
|
830
|
-
function createCompatibilityAwareMiniflareLog(BaseLog, level, logger) {
|
|
831
|
-
const log = new BaseLog(level);
|
|
832
|
-
const originalWarn = log.warn.bind(log);
|
|
833
|
-
const originalInfo = log.info.bind(log);
|
|
834
|
-
log.warn = (message) => {
|
|
835
|
-
const notice = formatCompatibilityDateFallbackNotice(message);
|
|
836
|
-
if (!notice) {
|
|
837
|
-
originalWarn(message);
|
|
838
|
-
return;
|
|
839
|
-
}
|
|
840
|
-
if (logger) {
|
|
841
|
-
logger.info(notice);
|
|
842
|
-
return;
|
|
843
|
-
}
|
|
844
|
-
originalInfo(notice);
|
|
845
|
-
};
|
|
846
|
-
return log;
|
|
847
|
-
}
|
|
848
|
-
|
|
849
|
-
// src/dev-server/runtime-stdio.ts
|
|
850
|
-
import { createInterface } from "node:readline";
|
|
851
|
-
function writeStdout(logger, message) {
|
|
852
|
-
if (typeof logger?.log === "function") {
|
|
853
|
-
logger.log(message);
|
|
854
|
-
return;
|
|
855
|
-
}
|
|
856
|
-
if (typeof logger?.info === "function") {
|
|
857
|
-
logger.info(message);
|
|
858
|
-
return;
|
|
859
|
-
}
|
|
860
|
-
console.log(message);
|
|
861
|
-
}
|
|
862
|
-
function writeStderr(logger, message) {
|
|
863
|
-
if (typeof logger?.error === "function") {
|
|
864
|
-
logger.error(message);
|
|
865
|
-
return;
|
|
866
|
-
}
|
|
867
|
-
console.error(message);
|
|
868
|
-
}
|
|
869
|
-
function createRuntimeStdioForwarder(logger) {
|
|
870
|
-
return (stdout, stderr) => {
|
|
871
|
-
createInterface({ input: stdout }).on("line", (data) => {
|
|
872
|
-
writeStdout(logger, data);
|
|
873
|
-
});
|
|
874
|
-
createInterface({ input: stderr }).on("line", (data) => {
|
|
875
|
-
writeStderr(logger, data);
|
|
876
|
-
});
|
|
877
|
-
};
|
|
888
|
+
// src/dev-server/d1-migrations.ts
|
|
889
|
+
import { resolve } from "pathe";
|
|
890
|
+
var MIGRATION_RETRY_DELAYS_MS = [500, 1000, 1500, 2000];
|
|
891
|
+
function collectMigrationStatements(sql) {
|
|
892
|
+
const cleanedSql = sql.split(`
|
|
893
|
+
`).filter((line) => !line.trim().startsWith("--")).join(`
|
|
894
|
+
`);
|
|
895
|
+
return cleanedSql.split(";").map((statement) => statement.trim()).filter((statement) => statement.length > 0);
|
|
878
896
|
}
|
|
879
|
-
|
|
880
|
-
// src/dev-server/server.ts
|
|
881
|
-
var DEFAULT_FETCH_ENTRY_FILES = [
|
|
882
|
-
"src/fetch.ts",
|
|
883
|
-
"src/fetch.js",
|
|
884
|
-
"src/fetch.mts",
|
|
885
|
-
"src/fetch.mjs"
|
|
886
|
-
];
|
|
887
|
-
var DEFAULT_QUEUE_ENTRY_FILES = [
|
|
888
|
-
"src/queue.ts",
|
|
889
|
-
"src/queue.js",
|
|
890
|
-
"src/queue.mts",
|
|
891
|
-
"src/queue.mjs"
|
|
892
|
-
];
|
|
893
|
-
var DEFAULT_SCHEDULED_ENTRY_FILES = [
|
|
894
|
-
"src/scheduled.ts",
|
|
895
|
-
"src/scheduled.js",
|
|
896
|
-
"src/scheduled.mts",
|
|
897
|
-
"src/scheduled.mjs"
|
|
898
|
-
];
|
|
899
|
-
var DEFAULT_EMAIL_ENTRY_FILES = [
|
|
900
|
-
"src/email.ts",
|
|
901
|
-
"src/email.js",
|
|
902
|
-
"src/email.mts",
|
|
903
|
-
"src/email.mjs"
|
|
904
|
-
];
|
|
905
|
-
var DEFAULT_TRANSPORT_ENTRY_FILES = [
|
|
906
|
-
"src/transport.ts",
|
|
907
|
-
"src/transport.js",
|
|
908
|
-
"src/transport.mts",
|
|
909
|
-
"src/transport.mjs"
|
|
910
|
-
];
|
|
911
|
-
var INTERNAL_APP_SERVICE_BINDING = "__DEVFLARE_APP";
|
|
912
|
-
function formatErrorMessage(error) {
|
|
897
|
+
function getErrorMessage(error) {
|
|
913
898
|
return error instanceof Error ? error.message : String(error);
|
|
914
899
|
}
|
|
915
|
-
async function
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
const
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
candidates.add(defaultEntry);
|
|
926
|
-
}
|
|
927
|
-
for (const candidate of candidates) {
|
|
928
|
-
const absolutePath = resolve(cwd, candidate);
|
|
900
|
+
async function waitForRetry(delayMs) {
|
|
901
|
+
await new Promise((resolvePromise) => setTimeout(resolvePromise, delayMs));
|
|
902
|
+
}
|
|
903
|
+
async function applyMigrationsToBinding(options) {
|
|
904
|
+
const { bindingName, statements, miniflarePort, logger } = options;
|
|
905
|
+
let lastError;
|
|
906
|
+
for (let attempt = 0;attempt <= MIGRATION_RETRY_DELAYS_MS.length; attempt++) {
|
|
907
|
+
if (attempt > 0) {
|
|
908
|
+
await waitForRetry(MIGRATION_RETRY_DELAYS_MS[attempt - 1]);
|
|
909
|
+
}
|
|
929
910
|
try {
|
|
930
|
-
await
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
911
|
+
const response = await fetch(`http://127.0.0.1:${miniflarePort}/_devflare/migrate`, {
|
|
912
|
+
method: "POST",
|
|
913
|
+
headers: { "Content-Type": "application/json" },
|
|
914
|
+
body: JSON.stringify({ bindingName, statements })
|
|
915
|
+
});
|
|
916
|
+
if (!response.ok) {
|
|
917
|
+
const text = await response.text();
|
|
918
|
+
throw new Error(`HTTP ${response.status}: ${text}`);
|
|
919
|
+
}
|
|
920
|
+
const result = await response.json();
|
|
921
|
+
if (result.success) {
|
|
922
|
+
logger?.success(`D1 migrations applied to ${bindingName}`);
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
925
|
+
throw new Error(result.error || "Unknown error");
|
|
926
|
+
} catch (error) {
|
|
927
|
+
lastError = error;
|
|
934
928
|
}
|
|
935
929
|
}
|
|
936
|
-
|
|
937
|
-
}
|
|
938
|
-
async function resolveMainWorkerSurfacePaths(cwd, config) {
|
|
939
|
-
return {
|
|
940
|
-
fetch: await resolveWorkerHandlerPath(cwd, config.files?.fetch, DEFAULT_FETCH_ENTRY_FILES),
|
|
941
|
-
queue: await resolveWorkerHandlerPath(cwd, config.files?.queue, DEFAULT_QUEUE_ENTRY_FILES),
|
|
942
|
-
scheduled: await resolveWorkerHandlerPath(cwd, config.files?.scheduled, DEFAULT_SCHEDULED_ENTRY_FILES),
|
|
943
|
-
email: await resolveWorkerHandlerPath(cwd, config.files?.email, DEFAULT_EMAIL_ENTRY_FILES)
|
|
944
|
-
};
|
|
945
|
-
}
|
|
946
|
-
function hasWorkerSurfacePaths(surfacePaths) {
|
|
947
|
-
return Object.values(surfacePaths).some((surfacePath) => typeof surfacePath === "string" && surfacePath.length > 0);
|
|
930
|
+
logger?.warn(`Failed to apply migrations to ${bindingName}: ${getErrorMessage(lastError)}`);
|
|
948
931
|
}
|
|
949
|
-
function
|
|
950
|
-
|
|
932
|
+
async function runD1Migrations(options) {
|
|
933
|
+
const { cwd, config, miniflarePort, logger } = options;
|
|
934
|
+
if (!config?.bindings?.d1) {
|
|
951
935
|
return;
|
|
952
936
|
}
|
|
953
|
-
|
|
954
|
-
|
|
937
|
+
const { existsSync: existsSync2, readdirSync, readFileSync, statSync } = await import("node:fs");
|
|
938
|
+
const migrationsDir = resolve(cwd, "migrations");
|
|
939
|
+
if (!existsSync2(migrationsDir)) {
|
|
940
|
+
logger?.debug("No migrations/ directory found, skipping D1 migrations");
|
|
955
941
|
return;
|
|
956
942
|
}
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
943
|
+
const sharedFiles = readdirSync(migrationsDir).filter((file) => file.endsWith(".sql")).sort();
|
|
944
|
+
let sharedStatements = null;
|
|
945
|
+
if (sharedFiles.length > 0) {
|
|
946
|
+
sharedStatements = [];
|
|
947
|
+
for (const file of sharedFiles) {
|
|
948
|
+
const sql = readFileSync(resolve(migrationsDir, file), "utf-8");
|
|
949
|
+
const fileStatements = collectMigrationStatements(sql);
|
|
950
|
+
sharedStatements.push(...fileStatements);
|
|
951
|
+
logger?.debug(`Shared file ${file}: ${fileStatements.length} statement(s)`);
|
|
966
952
|
}
|
|
967
953
|
}
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
954
|
+
for (const [bindingName] of Object.entries(config.bindings.d1)) {
|
|
955
|
+
const perBindingDir = resolve(migrationsDir, bindingName);
|
|
956
|
+
const hasPerBindingDir = existsSync2(perBindingDir) && statSync(perBindingDir).isDirectory();
|
|
957
|
+
let statements = [];
|
|
958
|
+
let fileCount = 0;
|
|
959
|
+
let sourceLabel = "";
|
|
960
|
+
if (hasPerBindingDir) {
|
|
961
|
+
const perBindingFiles = readdirSync(perBindingDir).filter((file) => file.endsWith(".sql")).sort();
|
|
962
|
+
if (perBindingFiles.length === 0) {
|
|
963
|
+
logger?.debug(`No SQL migration files in migrations/${bindingName}/, skipping ${bindingName}`);
|
|
964
|
+
continue;
|
|
965
|
+
}
|
|
966
|
+
for (const file of perBindingFiles) {
|
|
967
|
+
const sql = readFileSync(resolve(perBindingDir, file), "utf-8");
|
|
968
|
+
const fileStatements = collectMigrationStatements(sql);
|
|
969
|
+
statements.push(...fileStatements);
|
|
970
|
+
logger?.debug(`File ${bindingName}/${file}: ${fileStatements.length} statement(s)`);
|
|
971
|
+
}
|
|
972
|
+
fileCount = perBindingFiles.length;
|
|
973
|
+
sourceLabel = `migrations/${bindingName}/`;
|
|
974
|
+
} else if (sharedStatements !== null) {
|
|
975
|
+
statements = sharedStatements;
|
|
976
|
+
fileCount = sharedFiles.length;
|
|
977
|
+
sourceLabel = "migrations/ [shared fallback]";
|
|
978
|
+
} else {
|
|
979
|
+
logger?.debug(`No migrations found for ${bindingName}, skipping`);
|
|
980
|
+
continue;
|
|
981
|
+
}
|
|
982
|
+
logger?.info(`Running ${fileCount} D1 migration(s) for ${bindingName} (from ${sourceLabel})`);
|
|
983
|
+
if (statements.length === 0) {
|
|
984
|
+
logger?.debug(`No executable D1 migration statements for ${bindingName}`);
|
|
985
|
+
continue;
|
|
986
|
+
}
|
|
987
|
+
await applyMigrationsToBinding({
|
|
988
|
+
bindingName,
|
|
989
|
+
statements,
|
|
990
|
+
miniflarePort,
|
|
991
|
+
logger
|
|
992
|
+
});
|
|
976
993
|
}
|
|
977
|
-
return [...roots];
|
|
978
994
|
}
|
|
995
|
+
|
|
996
|
+
// src/dev-server/gateway-script.ts
|
|
979
997
|
function getGatewayScript(wsRoutes = [], debug = false, appServiceBindingName = null) {
|
|
980
998
|
const wsRoutesJson = JSON.stringify(wsRoutes);
|
|
981
999
|
const appServiceBindingJson = JSON.stringify(appServiceBindingName);
|
|
982
1000
|
return `
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
//
|
|
1001
|
+
${GATEWAY_RUNTIME_JS}
|
|
1002
|
+
|
|
1003
|
+
// Bridge Gateway Worker — Dev Server
|
|
1004
|
+
// Handles WebSocket RPC, DO WS proxying, HTTP transfer, D1 migration, email ingest
|
|
986
1005
|
|
|
987
1006
|
const DEBUG = ${debug}
|
|
988
1007
|
const log = (...args) => DEBUG && console.log('[Gateway]', ...args)
|
|
989
1008
|
|
|
990
|
-
const activeStreams = new Map()
|
|
991
1009
|
const wsProxies = new Map()
|
|
992
|
-
const incomingStreams = new Map()
|
|
993
1010
|
|
|
994
|
-
// WebSocket routes configuration (injected at build time)
|
|
995
1011
|
const WS_ROUTES = ${wsRoutesJson}
|
|
996
1012
|
const APP_SERVICE_BINDING = ${appServiceBindingJson}
|
|
997
1013
|
|
|
@@ -1000,32 +1016,26 @@ export default {
|
|
|
1000
1016
|
const url = new URL(request.url)
|
|
1001
1017
|
const isWebSocket = request.headers.get('Upgrade') === 'websocket'
|
|
1002
1018
|
|
|
1003
|
-
// Check if this is a WebSocket request matching a DO route
|
|
1004
1019
|
if (isWebSocket) {
|
|
1005
1020
|
const matchedRoute = matchWsRoute(url.pathname)
|
|
1006
1021
|
if (matchedRoute) {
|
|
1007
1022
|
return handleDoWebSocket(request, env, url, matchedRoute)
|
|
1008
1023
|
}
|
|
1009
|
-
// Otherwise handle as bridge RPC WebSocket
|
|
1010
1024
|
return handleBridgeWebSocket(request, env, ctx)
|
|
1011
1025
|
}
|
|
1012
1026
|
|
|
1013
|
-
// HTTP endpoint for large file transfers
|
|
1014
1027
|
if (url.pathname.startsWith('/_devflare/transfer/')) {
|
|
1015
1028
|
return handleHttpTransfer(request, env, url)
|
|
1016
1029
|
}
|
|
1017
1030
|
|
|
1018
|
-
// D1 migration endpoint
|
|
1019
1031
|
if (url.pathname === '/_devflare/migrate' && request.method === 'POST') {
|
|
1020
1032
|
return handleMigration(request, env)
|
|
1021
1033
|
}
|
|
1022
1034
|
|
|
1023
|
-
// Email handler endpoint (simulates incoming email)
|
|
1024
1035
|
if (url.pathname === '/cdn-cgi/handler/email' && request.method === 'POST') {
|
|
1025
1036
|
return handleEmailIncoming(request, env, ctx, url)
|
|
1026
1037
|
}
|
|
1027
1038
|
|
|
1028
|
-
// Health check
|
|
1029
1039
|
if (url.pathname === '/_devflare/health') {
|
|
1030
1040
|
return new Response(JSON.stringify({
|
|
1031
1041
|
ok: true,
|
|
@@ -1045,7 +1055,6 @@ export default {
|
|
|
1045
1055
|
}
|
|
1046
1056
|
}
|
|
1047
1057
|
|
|
1048
|
-
// Handle D1 migrations
|
|
1049
1058
|
async function handleMigration(request, env) {
|
|
1050
1059
|
try {
|
|
1051
1060
|
const { bindingName, statements } = await request.json()
|
|
@@ -1072,28 +1081,26 @@ async function handleMigration(request, env) {
|
|
|
1072
1081
|
}
|
|
1073
1082
|
}
|
|
1074
1083
|
}
|
|
1075
|
-
|
|
1076
|
-
// Verify table exists after migration
|
|
1084
|
+
|
|
1077
1085
|
try {
|
|
1078
1086
|
const tables = await db.prepare("SELECT name FROM sqlite_master WHERE type='table'").all()
|
|
1079
1087
|
log('Tables after migration:', JSON.stringify(tables))
|
|
1080
1088
|
} catch (e) {
|
|
1081
1089
|
log('Error listing tables:', e.message)
|
|
1082
1090
|
}
|
|
1083
|
-
|
|
1091
|
+
|
|
1084
1092
|
return Response.json({ success: true, results })
|
|
1085
1093
|
} catch (error) {
|
|
1086
1094
|
return Response.json({ error: error?.message || String(error) }, { status: 500 })
|
|
1087
1095
|
}
|
|
1088
1096
|
}
|
|
1089
1097
|
|
|
1090
|
-
// Handle incoming email (simulates email() handler)
|
|
1091
1098
|
async function handleEmailIncoming(request, env, ctx, url) {
|
|
1092
1099
|
try {
|
|
1093
1100
|
const from = url.searchParams.get('from') || 'unknown@example.com'
|
|
1094
1101
|
const to = url.searchParams.get('to') || 'worker@example.com'
|
|
1095
1102
|
const rawBody = await request.text()
|
|
1096
|
-
|
|
1103
|
+
|
|
1097
1104
|
log('Email incoming:', { from, to, bodyLength: rawBody.length })
|
|
1098
1105
|
|
|
1099
1106
|
if (APP_SERVICE_BINDING) {
|
|
@@ -1115,7 +1122,7 @@ async function handleEmailIncoming(request, env, ctx, url) {
|
|
|
1115
1122
|
}
|
|
1116
1123
|
}
|
|
1117
1124
|
}
|
|
1118
|
-
|
|
1125
|
+
|
|
1119
1126
|
return new Response(JSON.stringify({ ok: true, from, to }), {
|
|
1120
1127
|
headers: { 'Content-Type': 'application/json' }
|
|
1121
1128
|
})
|
|
@@ -1125,10 +1132,8 @@ async function handleEmailIncoming(request, env, ctx, url) {
|
|
|
1125
1132
|
}
|
|
1126
1133
|
}
|
|
1127
1134
|
|
|
1128
|
-
// Match URL path against configured WS routes
|
|
1129
1135
|
function matchWsRoute(pathname) {
|
|
1130
1136
|
for (const route of WS_ROUTES) {
|
|
1131
|
-
// Simple exact match for now (could add glob/regex later)
|
|
1132
1137
|
if (pathname === route.pattern || pathname.startsWith(route.pattern + '?')) {
|
|
1133
1138
|
return route
|
|
1134
1139
|
}
|
|
@@ -1136,31 +1141,23 @@ function matchWsRoute(pathname) {
|
|
|
1136
1141
|
return null
|
|
1137
1142
|
}
|
|
1138
1143
|
|
|
1139
|
-
// Handle WebSocket upgrade that should go to a Durable Object
|
|
1140
1144
|
async function handleDoWebSocket(request, env, url, route) {
|
|
1141
1145
|
try {
|
|
1142
|
-
// Get the DO namespace
|
|
1143
1146
|
const namespace = env[route.doNamespace]
|
|
1144
1147
|
if (!namespace) {
|
|
1145
1148
|
console.error('[Gateway] DO namespace not found:', route.doNamespace)
|
|
1146
1149
|
return new Response('DO namespace not found: ' + route.doNamespace, { status: 500 })
|
|
1147
1150
|
}
|
|
1148
1151
|
|
|
1149
|
-
// Get the instance ID from query params
|
|
1150
1152
|
const idValue = url.searchParams.get(route.idParam) || 'default'
|
|
1151
|
-
|
|
1152
|
-
// Get or create DO instance
|
|
1153
1153
|
const doId = namespace.idFromName(idValue)
|
|
1154
1154
|
const stub = namespace.get(doId)
|
|
1155
1155
|
|
|
1156
|
-
// Construct the forward URL for the DO
|
|
1157
1156
|
const forwardUrl = new URL(route.forwardPath, url.origin)
|
|
1158
|
-
// Forward all query params
|
|
1159
1157
|
url.searchParams.forEach((v, k) => forwardUrl.searchParams.set(k, v))
|
|
1160
1158
|
|
|
1161
1159
|
log('Forwarding WebSocket to DO:', route.doNamespace, 'id:', idValue, 'path:', forwardUrl.pathname)
|
|
1162
1160
|
|
|
1163
|
-
// Forward the request to the DO
|
|
1164
1161
|
return stub.fetch(forwardUrl.toString(), {
|
|
1165
1162
|
method: request.method,
|
|
1166
1163
|
headers: request.headers
|
|
@@ -1171,7 +1168,6 @@ async function handleDoWebSocket(request, env, url, route) {
|
|
|
1171
1168
|
}
|
|
1172
1169
|
}
|
|
1173
1170
|
|
|
1174
|
-
// Handle bridge RPC WebSocket (for Node.js Vite server communication)
|
|
1175
1171
|
function handleBridgeWebSocket(request, env, ctx) {
|
|
1176
1172
|
const { 0: client, 1: server } = new WebSocketPair()
|
|
1177
1173
|
server.accept()
|
|
@@ -1187,7 +1183,6 @@ function handleBridgeWebSocket(request, env, ctx) {
|
|
|
1187
1183
|
})
|
|
1188
1184
|
|
|
1189
1185
|
server.addEventListener('close', () => {
|
|
1190
|
-
activeStreams.clear()
|
|
1191
1186
|
wsProxies.clear()
|
|
1192
1187
|
})
|
|
1193
1188
|
|
|
@@ -1218,180 +1213,11 @@ async function handleRpcCall(msg, ws, env, ctx) {
|
|
|
1218
1213
|
ws.send(JSON.stringify({
|
|
1219
1214
|
t: 'rpc.err',
|
|
1220
1215
|
id: msg.id,
|
|
1221
|
-
error: { code: error
|
|
1216
|
+
error: { code: error?.code || 'INTERNAL_ERROR', message: error?.message || String(error) }
|
|
1222
1217
|
}))
|
|
1223
1218
|
}
|
|
1224
1219
|
}
|
|
1225
1220
|
|
|
1226
|
-
async function executeRpcMethod(method, params, env, ctx) {
|
|
1227
|
-
const parts = method.split('.')
|
|
1228
|
-
const bindingName = parts[0]
|
|
1229
|
-
const operation = parts.slice(1).join('.')
|
|
1230
|
-
const binding = env[bindingName]
|
|
1231
|
-
const RAW_EMAIL = 'EmailMessage::raw'
|
|
1232
|
-
|
|
1233
|
-
if (!binding) throw new Error('Binding not found: ' + bindingName)
|
|
1234
|
-
|
|
1235
|
-
// KV operations
|
|
1236
|
-
if (operation === 'get') return binding.get(params[0], params[1])
|
|
1237
|
-
if (operation === 'put') return binding.put(params[0], params[1], params[2])
|
|
1238
|
-
if (operation === 'delete') return binding.delete(params[0])
|
|
1239
|
-
if (operation === 'list') return binding.list(params[0])
|
|
1240
|
-
if (operation === 'getWithMetadata') return binding.getWithMetadata(params[0], params[1])
|
|
1241
|
-
|
|
1242
|
-
// R2 operations
|
|
1243
|
-
if (operation === 'head') return serializeR2Object(await binding.head(params[0]))
|
|
1244
|
-
if (operation === 'r2.get') {
|
|
1245
|
-
const obj = await binding.get(params[0], params[1])
|
|
1246
|
-
if (!obj) return null
|
|
1247
|
-
const body = await obj.arrayBuffer()
|
|
1248
|
-
return serializeR2ObjectBody(obj, arrayBufferToBase64(body))
|
|
1249
|
-
}
|
|
1250
|
-
if (operation === 'r2.put') {
|
|
1251
|
-
// Deserialize the value if it's a serialized ArrayBuffer/Uint8Array
|
|
1252
|
-
let value = params[1]
|
|
1253
|
-
if (value && typeof value === 'object') {
|
|
1254
|
-
if (value.__type === 'ArrayBuffer') {
|
|
1255
|
-
value = base64ToArrayBuffer(value.data)
|
|
1256
|
-
} else if (value.__type === 'Uint8Array') {
|
|
1257
|
-
value = base64ToArrayBuffer(value.data)
|
|
1258
|
-
}
|
|
1259
|
-
}
|
|
1260
|
-
return serializeR2Object(await binding.put(params[0], value, params[2]))
|
|
1261
|
-
}
|
|
1262
|
-
if (operation === 'r2.delete') return binding.delete(params[0])
|
|
1263
|
-
if (operation === 'r2.list') return serializeR2Objects(await binding.list(params[0]))
|
|
1264
|
-
|
|
1265
|
-
// D1 operations
|
|
1266
|
-
if (operation === 'exec') return binding.exec(params[0])
|
|
1267
|
-
if (operation.startsWith('stmt.')) {
|
|
1268
|
-
log('D1 RPC:', bindingName, operation, 'sql:', String(params[0]).slice(0, 60))
|
|
1269
|
-
const mode = operation.split('.')[1]
|
|
1270
|
-
const [sql, ...rest] = params
|
|
1271
|
-
|
|
1272
|
-
// For first/raw, the last element is the column/options parameter (may be undefined)
|
|
1273
|
-
// For all/run, rest contains only bindings
|
|
1274
|
-
let bindings = rest
|
|
1275
|
-
let extraParam = undefined
|
|
1276
|
-
|
|
1277
|
-
if (mode === 'first' || mode === 'raw') {
|
|
1278
|
-
// Last element is the column/options (may be undefined)
|
|
1279
|
-
extraParam = rest[rest.length - 1]
|
|
1280
|
-
bindings = rest.slice(0, -1)
|
|
1281
|
-
}
|
|
1282
|
-
|
|
1283
|
-
let stmt = binding.prepare(sql)
|
|
1284
|
-
if (bindings.length > 0) stmt = stmt.bind(...bindings)
|
|
1285
|
-
|
|
1286
|
-
if (mode === 'first') {
|
|
1287
|
-
// Only pass column if it's a non-empty string
|
|
1288
|
-
if (typeof extraParam === 'string' && extraParam.length > 0) {
|
|
1289
|
-
return stmt.first(extraParam)
|
|
1290
|
-
}
|
|
1291
|
-
return stmt.first()
|
|
1292
|
-
}
|
|
1293
|
-
if (mode === 'all') return stmt.all()
|
|
1294
|
-
if (mode === 'run') return stmt.run()
|
|
1295
|
-
if (mode === 'raw') return stmt.raw(extraParam)
|
|
1296
|
-
}
|
|
1297
|
-
|
|
1298
|
-
// DO operations
|
|
1299
|
-
if (operation === 'idFromName') {
|
|
1300
|
-
const id = binding.idFromName(params[0])
|
|
1301
|
-
return { __type: 'DOId', hex: id.toString() }
|
|
1302
|
-
}
|
|
1303
|
-
if (operation === 'idFromString') {
|
|
1304
|
-
const id = binding.idFromString(params[0])
|
|
1305
|
-
return { __type: 'DOId', hex: id.toString() }
|
|
1306
|
-
}
|
|
1307
|
-
if (operation === 'newUniqueId') {
|
|
1308
|
-
const id = binding.newUniqueId(params[0])
|
|
1309
|
-
return { __type: 'DOId', hex: id.toString() }
|
|
1310
|
-
}
|
|
1311
|
-
if (operation === 'stub.fetch') {
|
|
1312
|
-
const [, serializedId, serializedReq] = params
|
|
1313
|
-
log('stub.fetch request:', {
|
|
1314
|
-
url: serializedReq.url,
|
|
1315
|
-
method: serializedReq.method,
|
|
1316
|
-
headers: serializedReq.headers,
|
|
1317
|
-
hasBody: !!serializedReq.body
|
|
1318
|
-
})
|
|
1319
|
-
const id = binding.idFromString(serializedId.hex)
|
|
1320
|
-
const stub = binding.get(id)
|
|
1321
|
-
try {
|
|
1322
|
-
const response = await stub.fetch(new Request(serializedReq.url, {
|
|
1323
|
-
method: serializedReq.method,
|
|
1324
|
-
headers: serializedReq.headers,
|
|
1325
|
-
body: serializedReq.body?.type === 'bytes' ? base64ToArrayBuffer(serializedReq.body.data) : undefined
|
|
1326
|
-
}))
|
|
1327
|
-
// Clone to read body for logging if there's an error
|
|
1328
|
-
const cloned = response.clone()
|
|
1329
|
-
const serialized = await serializeResponse(response)
|
|
1330
|
-
log('stub.fetch response:', {
|
|
1331
|
-
status: serialized.status,
|
|
1332
|
-
headers: serialized.headers,
|
|
1333
|
-
bodyLength: serialized.body?.data?.length || 0
|
|
1334
|
-
})
|
|
1335
|
-
// If 500, log the body content
|
|
1336
|
-
if (response.status >= 400) {
|
|
1337
|
-
const errBody = await cloned.text()
|
|
1338
|
-
log('Error response body:', errBody)
|
|
1339
|
-
}
|
|
1340
|
-
return serialized
|
|
1341
|
-
} catch (err) {
|
|
1342
|
-
console.error('[Gateway] stub.fetch error:', err)
|
|
1343
|
-
throw err
|
|
1344
|
-
}
|
|
1345
|
-
}
|
|
1346
|
-
if (operation === 'stub.rpc') {
|
|
1347
|
-
const [, serializedId, methodName, args] = params
|
|
1348
|
-
const id = binding.idFromString(serializedId.hex)
|
|
1349
|
-
const stub = binding.get(id)
|
|
1350
|
-
const response = await stub.fetch(new Request('http://do/_rpc', {
|
|
1351
|
-
method: 'POST',
|
|
1352
|
-
headers: { 'Content-Type': 'application/json' },
|
|
1353
|
-
body: JSON.stringify({ method: methodName, params: args })
|
|
1354
|
-
}))
|
|
1355
|
-
const result = await response.json()
|
|
1356
|
-
if (!result.ok) throw new Error(result.error?.message || 'RPC failed')
|
|
1357
|
-
return result.result
|
|
1358
|
-
}
|
|
1359
|
-
|
|
1360
|
-
// Queue operations
|
|
1361
|
-
if (operation === 'send') return binding.send(params[0], params[1])
|
|
1362
|
-
if (operation === 'sendBatch') return binding.sendBatch(params[0], params[1])
|
|
1363
|
-
|
|
1364
|
-
// Email send operations (send_email binding)
|
|
1365
|
-
if (operation === 'email.send') {
|
|
1366
|
-
const message = params[0]
|
|
1367
|
-
log('Email send:', { from: message?.from, to: message?.to })
|
|
1368
|
-
if (binding && typeof binding.send === 'function') {
|
|
1369
|
-
if (message && typeof message === 'object' && 'from' in message && 'to' in message && 'raw' in message) {
|
|
1370
|
-
return binding.send({
|
|
1371
|
-
from: message.from,
|
|
1372
|
-
to: message.to,
|
|
1373
|
-
[RAW_EMAIL]: createEmailMessageRaw(message.raw)
|
|
1374
|
-
})
|
|
1375
|
-
}
|
|
1376
|
-
return binding.send(message)
|
|
1377
|
-
}
|
|
1378
|
-
// Return success even if no real binding (simulated)
|
|
1379
|
-
return { ok: true, simulated: true }
|
|
1380
|
-
}
|
|
1381
|
-
|
|
1382
|
-
throw new Error('Unknown operation: ' + method)
|
|
1383
|
-
}
|
|
1384
|
-
|
|
1385
|
-
function createEmailMessageRaw(raw) {
|
|
1386
|
-
if (typeof raw === 'string' || raw instanceof ReadableStream) {
|
|
1387
|
-
return raw
|
|
1388
|
-
}
|
|
1389
|
-
if (raw instanceof ArrayBuffer || raw instanceof Uint8Array) {
|
|
1390
|
-
return new Response(raw).body
|
|
1391
|
-
}
|
|
1392
|
-
throw new Error('Unsupported EmailMessage raw payload')
|
|
1393
|
-
}
|
|
1394
|
-
|
|
1395
1221
|
async function handleWsOpen(msg, ws, env) {
|
|
1396
1222
|
try {
|
|
1397
1223
|
const binding = env[msg.target.binding]
|
|
@@ -1448,7 +1274,7 @@ async function handleHttpTransfer(request, env, url) {
|
|
|
1448
1274
|
|
|
1449
1275
|
if (request.method === 'PUT' || request.method === 'POST') {
|
|
1450
1276
|
const result = await bucket.put(key, request.body)
|
|
1451
|
-
return new Response(JSON.stringify(result), { headers: { 'Content-Type': 'application/json' } })
|
|
1277
|
+
return new Response(JSON.stringify(serializeR2Object(result)), { headers: { 'Content-Type': 'application/json' } })
|
|
1452
1278
|
}
|
|
1453
1279
|
|
|
1454
1280
|
if (request.method === 'GET') {
|
|
@@ -1464,71 +1290,253 @@ async function handleHttpTransfer(request, env, url) {
|
|
|
1464
1290
|
|
|
1465
1291
|
return new Response('Method not allowed', { status: 405 })
|
|
1466
1292
|
}
|
|
1293
|
+
`;
|
|
1294
|
+
}
|
|
1467
1295
|
|
|
1468
|
-
//
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
key: obj.key,
|
|
1474
|
-
version: obj.version,
|
|
1475
|
-
size: obj.size,
|
|
1476
|
-
etag: obj.etag,
|
|
1477
|
-
httpEtag: obj.httpEtag,
|
|
1478
|
-
checksums: obj.checksums,
|
|
1479
|
-
uploaded: obj.uploaded?.toISOString(),
|
|
1480
|
-
httpMetadata: obj.httpMetadata,
|
|
1481
|
-
customMetadata: obj.customMetadata,
|
|
1482
|
-
range: obj.range,
|
|
1483
|
-
storageClass: obj.storageClass
|
|
1484
|
-
}
|
|
1296
|
+
// src/dev-server/miniflare-log.ts
|
|
1297
|
+
var ANSI_ESCAPE_REGEX = /\u001B\[[0-9;]*m/g;
|
|
1298
|
+
var COMPATIBILITY_DATE_FALLBACK_REGEX = /^The latest compatibility date supported by the installed Cloudflare Workers Runtime is "([^"]+)", but you've requested "([^"]+)"\. Falling back to "([^"]+)"\.\.\.$/;
|
|
1299
|
+
function normalizeMiniflareMessage(message) {
|
|
1300
|
+
return message.replace(ANSI_ESCAPE_REGEX, "").replace(/\s+/g, " ").trim();
|
|
1485
1301
|
}
|
|
1486
|
-
function
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
httpEtag: obj.httpEtag,
|
|
1495
|
-
checksums: obj.checksums,
|
|
1496
|
-
uploaded: obj.uploaded?.toISOString(),
|
|
1497
|
-
httpMetadata: obj.httpMetadata,
|
|
1498
|
-
customMetadata: obj.customMetadata,
|
|
1499
|
-
range: obj.range,
|
|
1500
|
-
storageClass: obj.storageClass,
|
|
1501
|
-
bodyData
|
|
1502
|
-
}
|
|
1302
|
+
function formatCompatibilityDateFallbackNotice(message) {
|
|
1303
|
+
const normalizedMessage = normalizeMiniflareMessage(message);
|
|
1304
|
+
const match = COMPATIBILITY_DATE_FALLBACK_REGEX.exec(normalizedMessage);
|
|
1305
|
+
if (!match) {
|
|
1306
|
+
return null;
|
|
1307
|
+
}
|
|
1308
|
+
const [, _supportedDate, requestedDate, fallbackDate] = match;
|
|
1309
|
+
return `Using latest supported Cloudflare Workers Runtime compatibility date ${fallbackDate} (requested ${requestedDate})`;
|
|
1503
1310
|
}
|
|
1504
|
-
function
|
|
1505
|
-
|
|
1506
|
-
|
|
1311
|
+
function createCompatibilityAwareMiniflareLog(BaseLog, level, logger) {
|
|
1312
|
+
const log = new BaseLog(level);
|
|
1313
|
+
const originalWarn = log.warn.bind(log);
|
|
1314
|
+
const originalInfo = log.info.bind(log);
|
|
1315
|
+
log.warn = (message) => {
|
|
1316
|
+
const notice = formatCompatibilityDateFallbackNotice(message);
|
|
1317
|
+
if (!notice) {
|
|
1318
|
+
originalWarn(message);
|
|
1319
|
+
return;
|
|
1320
|
+
}
|
|
1321
|
+
if (logger) {
|
|
1322
|
+
logger.info(notice);
|
|
1323
|
+
return;
|
|
1324
|
+
}
|
|
1325
|
+
originalInfo(notice);
|
|
1326
|
+
};
|
|
1327
|
+
return log;
|
|
1507
1328
|
}
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1329
|
+
|
|
1330
|
+
// src/dev-server/runtime-stdio.ts
|
|
1331
|
+
import { createInterface } from "node:readline";
|
|
1332
|
+
function writeStdout(logger, message) {
|
|
1333
|
+
if (typeof logger?.log === "function") {
|
|
1334
|
+
logger.log(message);
|
|
1335
|
+
return;
|
|
1336
|
+
}
|
|
1337
|
+
if (typeof logger?.info === "function") {
|
|
1338
|
+
logger.info(message);
|
|
1339
|
+
return;
|
|
1340
|
+
}
|
|
1341
|
+
console.log(message);
|
|
1518
1342
|
}
|
|
1519
|
-
function
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1343
|
+
function writeStderr(logger, message) {
|
|
1344
|
+
if (typeof logger?.error === "function") {
|
|
1345
|
+
logger.error(message);
|
|
1346
|
+
return;
|
|
1347
|
+
}
|
|
1348
|
+
console.error(message);
|
|
1524
1349
|
}
|
|
1525
|
-
function
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1350
|
+
function createRuntimeStdioForwarder(logger) {
|
|
1351
|
+
return (stdout, stderr) => {
|
|
1352
|
+
createInterface({ input: stdout }).on("line", (data) => {
|
|
1353
|
+
writeStdout(logger, data);
|
|
1354
|
+
});
|
|
1355
|
+
createInterface({ input: stderr }).on("line", (data) => {
|
|
1356
|
+
writeStderr(logger, data);
|
|
1357
|
+
});
|
|
1358
|
+
};
|
|
1530
1359
|
}
|
|
1531
|
-
|
|
1360
|
+
|
|
1361
|
+
// src/dev-server/vite-process.ts
|
|
1362
|
+
import { spawn } from "node:child_process";
|
|
1363
|
+
async function startViteProcess(options) {
|
|
1364
|
+
const {
|
|
1365
|
+
cwd,
|
|
1366
|
+
vitePort,
|
|
1367
|
+
miniflarePort,
|
|
1368
|
+
generatedViteConfigPath,
|
|
1369
|
+
logger
|
|
1370
|
+
} = options;
|
|
1371
|
+
const args = ["vite", "dev", "--port", String(vitePort)];
|
|
1372
|
+
if (generatedViteConfigPath) {
|
|
1373
|
+
args.push("--config", generatedViteConfigPath);
|
|
1374
|
+
}
|
|
1375
|
+
const viteProcess = spawn("bunx", args, {
|
|
1376
|
+
cwd,
|
|
1377
|
+
stdio: ["inherit", "pipe", "pipe"],
|
|
1378
|
+
windowsHide: true,
|
|
1379
|
+
env: {
|
|
1380
|
+
...process.env,
|
|
1381
|
+
DEVFLARE_DEV: "true",
|
|
1382
|
+
DEVFLARE_BRIDGE_PORT: String(miniflarePort),
|
|
1383
|
+
FORCE_COLOR: "1"
|
|
1384
|
+
}
|
|
1385
|
+
});
|
|
1386
|
+
const readyUrl = await waitForViteReady(viteProcess, {
|
|
1387
|
+
onStdout(chunk) {
|
|
1388
|
+
process.stdout.write(chunk);
|
|
1389
|
+
},
|
|
1390
|
+
onStderr(chunk) {
|
|
1391
|
+
process.stderr.write(chunk);
|
|
1392
|
+
}
|
|
1393
|
+
});
|
|
1394
|
+
if (readyUrl) {
|
|
1395
|
+
logger?.success(`Vite dev server started on ${readyUrl}`);
|
|
1396
|
+
return viteProcess;
|
|
1397
|
+
}
|
|
1398
|
+
logger?.warn("Vite process started, but the final local URL could not be confirmed yet");
|
|
1399
|
+
return viteProcess;
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
// src/dev-server/worker-surface-paths.ts
|
|
1403
|
+
import { dirname, resolve as resolve2 } from "pathe";
|
|
1404
|
+
var DEFAULT_TRANSPORT_ENTRY_FILES = [
|
|
1405
|
+
"src/transport.ts",
|
|
1406
|
+
"src/transport.js",
|
|
1407
|
+
"src/transport.mts",
|
|
1408
|
+
"src/transport.mjs"
|
|
1409
|
+
];
|
|
1410
|
+
var resolveMainWorkerSurfacePaths = resolveWorkerSurfacePaths;
|
|
1411
|
+
function addWorkerWatchRoots(roots, cwd, configuredPath, defaultEntries) {
|
|
1412
|
+
if (configuredPath === false || configuredPath === null) {
|
|
1413
|
+
return;
|
|
1414
|
+
}
|
|
1415
|
+
if (typeof configuredPath === "string" && configuredPath) {
|
|
1416
|
+
roots.add(dirname(resolve2(cwd, configuredPath)));
|
|
1417
|
+
return;
|
|
1418
|
+
}
|
|
1419
|
+
for (const defaultEntry of defaultEntries) {
|
|
1420
|
+
roots.add(dirname(resolve2(cwd, defaultEntry)));
|
|
1421
|
+
}
|
|
1422
|
+
}
|
|
1423
|
+
function collectWorkerWatchRoots(cwd, config, mainWorkerSurfacePaths) {
|
|
1424
|
+
const roots = new Set;
|
|
1425
|
+
for (const surfacePath of Object.values(mainWorkerSurfacePaths)) {
|
|
1426
|
+
if (surfacePath) {
|
|
1427
|
+
roots.add(dirname(surfacePath));
|
|
1428
|
+
}
|
|
1429
|
+
}
|
|
1430
|
+
addWorkerWatchRoots(roots, cwd, config.files?.fetch, DEFAULT_FETCH_ENTRY_FILES);
|
|
1431
|
+
addWorkerWatchRoots(roots, cwd, config.files?.queue, DEFAULT_QUEUE_ENTRY_FILES);
|
|
1432
|
+
addWorkerWatchRoots(roots, cwd, config.files?.scheduled, DEFAULT_SCHEDULED_ENTRY_FILES);
|
|
1433
|
+
addWorkerWatchRoots(roots, cwd, config.files?.email, DEFAULT_EMAIL_ENTRY_FILES);
|
|
1434
|
+
addWorkerWatchRoots(roots, cwd, config.files?.transport, DEFAULT_TRANSPORT_ENTRY_FILES);
|
|
1435
|
+
const routeDirectory = getRouteDirectoryCandidate(cwd, config);
|
|
1436
|
+
if (routeDirectory) {
|
|
1437
|
+
roots.add(routeDirectory.absoluteDir);
|
|
1438
|
+
}
|
|
1439
|
+
return [...roots];
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1442
|
+
// src/dev-server/worker-source-watcher.ts
|
|
1443
|
+
async function startWorkerSourceWatcher(options) {
|
|
1444
|
+
const { watchTargets, resolvedWorkerConfigPath, logger, onConfigChange, onWorkerChange } = options;
|
|
1445
|
+
if (watchTargets.length === 0) {
|
|
1446
|
+
return null;
|
|
1447
|
+
}
|
|
1448
|
+
const chokidar = await import("chokidar");
|
|
1449
|
+
const isWindows = process.platform === "win32";
|
|
1450
|
+
const ignoredSegments = ["/node_modules/", "/.git/", "/.devflare/", "/dist/"];
|
|
1451
|
+
const normalizePath = (filePath) => filePath.replace(/\\/g, "/");
|
|
1452
|
+
const isIgnoredPath = (filePath) => {
|
|
1453
|
+
const normalizedPath = normalizePath(filePath);
|
|
1454
|
+
return ignoredSegments.some((segment) => normalizedPath.includes(segment));
|
|
1455
|
+
};
|
|
1456
|
+
let reloadTimeout = null;
|
|
1457
|
+
let reloadInProgress = false;
|
|
1458
|
+
let pendingReloadPath = null;
|
|
1459
|
+
const flushPendingReload = async () => {
|
|
1460
|
+
if (!pendingReloadPath) {
|
|
1461
|
+
return;
|
|
1462
|
+
}
|
|
1463
|
+
const nextPath = pendingReloadPath;
|
|
1464
|
+
pendingReloadPath = null;
|
|
1465
|
+
await triggerReload(nextPath);
|
|
1466
|
+
};
|
|
1467
|
+
const triggerReload = async (filePath) => {
|
|
1468
|
+
if (reloadInProgress) {
|
|
1469
|
+
pendingReloadPath = filePath;
|
|
1470
|
+
return;
|
|
1471
|
+
}
|
|
1472
|
+
reloadInProgress = true;
|
|
1473
|
+
try {
|
|
1474
|
+
const normalizedConfigPath = resolvedWorkerConfigPath ? normalizePath(resolvedWorkerConfigPath) : null;
|
|
1475
|
+
if (normalizedConfigPath && normalizePath(filePath) === normalizedConfigPath) {
|
|
1476
|
+
logger?.info(`Devflare config changed: ${filePath}`);
|
|
1477
|
+
await onConfigChange();
|
|
1478
|
+
return;
|
|
1479
|
+
}
|
|
1480
|
+
logger?.info(`Worker source changed: ${filePath}`);
|
|
1481
|
+
await onWorkerChange();
|
|
1482
|
+
} catch (error) {
|
|
1483
|
+
logger?.error("Worker source reload failed:", error);
|
|
1484
|
+
} finally {
|
|
1485
|
+
reloadInProgress = false;
|
|
1486
|
+
await flushPendingReload();
|
|
1487
|
+
}
|
|
1488
|
+
};
|
|
1489
|
+
const scheduleReload = (filePath) => {
|
|
1490
|
+
if (reloadTimeout) {
|
|
1491
|
+
clearTimeout(reloadTimeout);
|
|
1492
|
+
}
|
|
1493
|
+
reloadTimeout = setTimeout(() => {
|
|
1494
|
+
reloadTimeout = null;
|
|
1495
|
+
triggerReload(filePath);
|
|
1496
|
+
}, 150);
|
|
1497
|
+
};
|
|
1498
|
+
const watcher = chokidar.watch(watchTargets, {
|
|
1499
|
+
ignoreInitial: true,
|
|
1500
|
+
usePolling: isWindows,
|
|
1501
|
+
interval: isWindows ? 300 : undefined,
|
|
1502
|
+
awaitWriteFinish: {
|
|
1503
|
+
stabilityThreshold: 100,
|
|
1504
|
+
pollInterval: 50
|
|
1505
|
+
},
|
|
1506
|
+
ignored: (filePath) => isIgnoredPath(filePath)
|
|
1507
|
+
});
|
|
1508
|
+
const onFileEvent = (filePath) => {
|
|
1509
|
+
if (isIgnoredPath(filePath)) {
|
|
1510
|
+
return;
|
|
1511
|
+
}
|
|
1512
|
+
scheduleReload(filePath);
|
|
1513
|
+
};
|
|
1514
|
+
watcher.on("change", onFileEvent);
|
|
1515
|
+
watcher.on("add", onFileEvent);
|
|
1516
|
+
watcher.on("unlink", onFileEvent);
|
|
1517
|
+
watcher.on("error", (error) => {
|
|
1518
|
+
logger?.error("Worker source watcher error:", error);
|
|
1519
|
+
});
|
|
1520
|
+
await new Promise((resolvePromise, rejectPromise) => {
|
|
1521
|
+
const handleReady = () => {
|
|
1522
|
+
watcher.off("error", handleInitialError);
|
|
1523
|
+
logger?.info(`Worker source watcher ready (${watchTargets.length} target(s))`);
|
|
1524
|
+
resolvePromise();
|
|
1525
|
+
};
|
|
1526
|
+
const handleInitialError = (error) => {
|
|
1527
|
+
watcher.off("ready", handleReady);
|
|
1528
|
+
rejectPromise(error instanceof Error ? error : new Error(String(error)));
|
|
1529
|
+
};
|
|
1530
|
+
watcher.once("ready", handleReady);
|
|
1531
|
+
watcher.once("error", handleInitialError);
|
|
1532
|
+
});
|
|
1533
|
+
return watcher;
|
|
1534
|
+
}
|
|
1535
|
+
|
|
1536
|
+
// src/dev-server/server.ts
|
|
1537
|
+
var INTERNAL_APP_SERVICE_BINDING = "__DEVFLARE_APP";
|
|
1538
|
+
function formatErrorMessage(error) {
|
|
1539
|
+
return error instanceof Error ? error.message : String(error);
|
|
1532
1540
|
}
|
|
1533
1541
|
function createDevServer(options) {
|
|
1534
1542
|
const {
|
|
@@ -1571,11 +1579,10 @@ function createDevServer(options) {
|
|
|
1571
1579
|
bundledMainWorkerScriptPath = await bundleWorkerEntry({
|
|
1572
1580
|
cwd,
|
|
1573
1581
|
inputFile: mainWorkerScriptPath,
|
|
1574
|
-
outFile:
|
|
1582
|
+
outFile: resolve3(cwd, ".devflare", "worker-entrypoints", "main.js"),
|
|
1575
1583
|
rolldownOptions: config.rolldown?.options,
|
|
1576
1584
|
sourcemap: config.rolldown?.sourcemap,
|
|
1577
1585
|
minify: config.rolldown?.minify,
|
|
1578
|
-
target: config.rolldown?.target,
|
|
1579
1586
|
logger
|
|
1580
1587
|
});
|
|
1581
1588
|
logger?.debug(`Bundled main worker → ${bundledMainWorkerScriptPath}`);
|
|
@@ -1585,7 +1592,7 @@ function createDevServer(options) {
|
|
|
1585
1592
|
throw new Error("Config not loaded");
|
|
1586
1593
|
const loadedConfig = config;
|
|
1587
1594
|
const bindings = loadedConfig.bindings ?? {};
|
|
1588
|
-
const persistPath =
|
|
1595
|
+
const persistPath = resolve3(cwd, ".devflare/data");
|
|
1589
1596
|
const appWorkerName = loadedConfig.name;
|
|
1590
1597
|
const shouldRunMainWorker = !enableVite && (hasWorkerSurfacePaths(mainWorkerSurfacePaths) || Boolean(mainWorkerRoutes?.routes.length));
|
|
1591
1598
|
const queueProducers = (() => {
|
|
@@ -1661,7 +1668,11 @@ function createDevServer(options) {
|
|
|
1661
1668
|
modules: true,
|
|
1662
1669
|
compatibilityDate: loadedConfig.compatibilityDate,
|
|
1663
1670
|
compatibilityFlags: compatFlags,
|
|
1664
|
-
...bindings.kv && {
|
|
1671
|
+
...bindings.kv && {
|
|
1672
|
+
kvNamespaces: Object.fromEntries(Object.entries(bindings.kv).map(([bindingName, bindingConfig]) => {
|
|
1673
|
+
return [bindingName, getLocalKVNamespaceIdentifier(bindingConfig)];
|
|
1674
|
+
}))
|
|
1675
|
+
},
|
|
1665
1676
|
...bindings.r2 && { r2Buckets: bindings.r2 },
|
|
1666
1677
|
...bindings.d1 && {
|
|
1667
1678
|
d1Databases: Object.fromEntries(Object.entries(bindings.d1).map(([bindingName, bindingConfig]) => {
|
|
@@ -1703,7 +1714,7 @@ function createDevServer(options) {
|
|
|
1703
1714
|
});
|
|
1704
1715
|
gatewayWorker.routes = ["*"];
|
|
1705
1716
|
const hasDurableObjectBundles = !!doResult && doResult.bundles.size > 0;
|
|
1706
|
-
const browserBindingName = bindings.browser
|
|
1717
|
+
const browserBindingName = getSingleBrowserBindingName(bindings.browser);
|
|
1707
1718
|
const needsBrowserWorker = Boolean(browserBindingName && (hasDurableObjectBundles || shouldRunMainWorker));
|
|
1708
1719
|
if (!shouldRunMainWorker && !hasDurableObjectBundles && !needsBrowserWorker) {
|
|
1709
1720
|
return {
|
|
@@ -1848,7 +1859,7 @@ function createDevServer(options) {
|
|
|
1848
1859
|
}
|
|
1849
1860
|
async function resolveWorkerConfigWatchPath() {
|
|
1850
1861
|
if (configPath) {
|
|
1851
|
-
const explicitPath =
|
|
1862
|
+
const explicitPath = resolve3(cwd, configPath);
|
|
1852
1863
|
const fs = await import("node:fs/promises");
|
|
1853
1864
|
try {
|
|
1854
1865
|
await fs.access(explicitPath);
|
|
@@ -1866,7 +1877,7 @@ function createDevServer(options) {
|
|
|
1866
1877
|
const composedMainEntry = await prepareComposedWorkerEntrypoint(cwd, config, undefined, {
|
|
1867
1878
|
devInternalEmail: true
|
|
1868
1879
|
});
|
|
1869
|
-
mainWorkerScriptPath = composedMainEntry ?
|
|
1880
|
+
mainWorkerScriptPath = composedMainEntry ? resolve3(cwd, composedMainEntry) : null;
|
|
1870
1881
|
if (mainWorkerScriptPath) {
|
|
1871
1882
|
await bundleMainWorker();
|
|
1872
1883
|
} else {
|
|
@@ -1907,7 +1918,7 @@ function createDevServer(options) {
|
|
|
1907
1918
|
await refreshWorkerOnlySurfaceState();
|
|
1908
1919
|
await reloadMiniflare(currentDoResult);
|
|
1909
1920
|
}
|
|
1910
|
-
async function
|
|
1921
|
+
async function startWorkerSourceWatcher2() {
|
|
1911
1922
|
if (enableVite || !config) {
|
|
1912
1923
|
return;
|
|
1913
1924
|
}
|
|
@@ -1915,173 +1926,18 @@ function createDevServer(options) {
|
|
|
1915
1926
|
if (watchTargets.length === 0) {
|
|
1916
1927
|
return;
|
|
1917
1928
|
}
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
};
|
|
1926
|
-
let reloadTimeout = null;
|
|
1927
|
-
let reloadInProgress = false;
|
|
1928
|
-
let pendingReloadPath = null;
|
|
1929
|
-
const triggerReload = async (filePath) => {
|
|
1930
|
-
if (reloadInProgress) {
|
|
1931
|
-
pendingReloadPath = filePath;
|
|
1932
|
-
return;
|
|
1933
|
-
}
|
|
1934
|
-
reloadInProgress = true;
|
|
1935
|
-
try {
|
|
1936
|
-
const normalizedConfigPath = resolvedWorkerConfigPath ? normalizePath(resolvedWorkerConfigPath) : null;
|
|
1937
|
-
if (normalizedConfigPath && normalizePath(filePath) === normalizedConfigPath) {
|
|
1938
|
-
logger?.info(`Devflare config changed: ${filePath}`);
|
|
1939
|
-
await reloadWorkerOnlyConfig();
|
|
1940
|
-
return;
|
|
1941
|
-
}
|
|
1942
|
-
logger?.info(`Worker source changed: ${filePath}`);
|
|
1929
|
+
workerWatchTargets = watchTargets;
|
|
1930
|
+
workerSourceWatcher = await startWorkerSourceWatcher({
|
|
1931
|
+
watchTargets,
|
|
1932
|
+
resolvedWorkerConfigPath,
|
|
1933
|
+
logger,
|
|
1934
|
+
onConfigChange: reloadWorkerOnlyConfig,
|
|
1935
|
+
onWorkerChange: async () => {
|
|
1943
1936
|
await refreshWorkerOnlySurfaceState();
|
|
1944
1937
|
await reloadMiniflare(currentDoResult);
|
|
1945
|
-
} catch (error) {
|
|
1946
|
-
logger?.error("Worker source reload failed:", error);
|
|
1947
|
-
} finally {
|
|
1948
|
-
reloadInProgress = false;
|
|
1949
|
-
if (pendingReloadPath) {
|
|
1950
|
-
const nextPath = pendingReloadPath;
|
|
1951
|
-
pendingReloadPath = null;
|
|
1952
|
-
await triggerReload(nextPath);
|
|
1953
|
-
}
|
|
1954
|
-
}
|
|
1955
|
-
};
|
|
1956
|
-
const scheduleReload = (filePath) => {
|
|
1957
|
-
if (reloadTimeout) {
|
|
1958
|
-
clearTimeout(reloadTimeout);
|
|
1959
1938
|
}
|
|
1960
|
-
reloadTimeout = setTimeout(() => {
|
|
1961
|
-
triggerReload(filePath);
|
|
1962
|
-
}, 150);
|
|
1963
|
-
};
|
|
1964
|
-
workerWatchTargets = watchTargets;
|
|
1965
|
-
workerSourceWatcher = chokidar.watch(watchTargets, {
|
|
1966
|
-
ignoreInitial: true,
|
|
1967
|
-
usePolling: isWindows,
|
|
1968
|
-
interval: isWindows ? 300 : undefined,
|
|
1969
|
-
awaitWriteFinish: {
|
|
1970
|
-
stabilityThreshold: 100,
|
|
1971
|
-
pollInterval: 50
|
|
1972
|
-
},
|
|
1973
|
-
ignored: (filePath) => isIgnoredPath(filePath)
|
|
1974
|
-
});
|
|
1975
|
-
const onFileEvent = (filePath) => {
|
|
1976
|
-
if (isIgnoredPath(filePath)) {
|
|
1977
|
-
return;
|
|
1978
|
-
}
|
|
1979
|
-
scheduleReload(filePath);
|
|
1980
|
-
};
|
|
1981
|
-
workerSourceWatcher.on("change", onFileEvent);
|
|
1982
|
-
workerSourceWatcher.on("add", onFileEvent);
|
|
1983
|
-
workerSourceWatcher.on("unlink", onFileEvent);
|
|
1984
|
-
workerSourceWatcher.on("error", (error) => {
|
|
1985
|
-
logger?.error("Worker source watcher error:", error);
|
|
1986
|
-
});
|
|
1987
|
-
await new Promise((resolvePromise, rejectPromise) => {
|
|
1988
|
-
const handleReady = () => {
|
|
1989
|
-
workerSourceWatcher?.off("error", handleInitialError);
|
|
1990
|
-
logger?.info(`Worker source watcher ready (${watchTargets.length} target(s))`);
|
|
1991
|
-
resolvePromise();
|
|
1992
|
-
};
|
|
1993
|
-
const handleInitialError = (error) => {
|
|
1994
|
-
workerSourceWatcher?.off("ready", handleReady);
|
|
1995
|
-
rejectPromise(error instanceof Error ? error : new Error(String(error)));
|
|
1996
|
-
};
|
|
1997
|
-
workerSourceWatcher?.once("ready", handleReady);
|
|
1998
|
-
workerSourceWatcher?.once("error", handleInitialError);
|
|
1999
1939
|
});
|
|
2000
1940
|
}
|
|
2001
|
-
async function runD1Migrations() {
|
|
2002
|
-
if (!miniflare || !config?.bindings?.d1)
|
|
2003
|
-
return;
|
|
2004
|
-
const { existsSync: existsSync2, readdirSync, readFileSync } = await import("node:fs");
|
|
2005
|
-
const migrationsDir = resolve(cwd, "migrations");
|
|
2006
|
-
if (!existsSync2(migrationsDir)) {
|
|
2007
|
-
logger?.debug("No migrations/ directory found, skipping D1 migrations");
|
|
2008
|
-
return;
|
|
2009
|
-
}
|
|
2010
|
-
const files = readdirSync(migrationsDir).filter((f) => f.endsWith(".sql")).sort();
|
|
2011
|
-
if (files.length === 0) {
|
|
2012
|
-
logger?.debug("No SQL migration files found");
|
|
2013
|
-
return;
|
|
2014
|
-
}
|
|
2015
|
-
logger?.info(`Running ${files.length} D1 migration(s)...`);
|
|
2016
|
-
const allStatements = [];
|
|
2017
|
-
for (const file of files) {
|
|
2018
|
-
const sql = readFileSync(resolve(migrationsDir, file), "utf-8");
|
|
2019
|
-
const cleanedSql = sql.split(`
|
|
2020
|
-
`).filter((line) => !line.trim().startsWith("--")).join(`
|
|
2021
|
-
`);
|
|
2022
|
-
const statements = cleanedSql.split(";").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
2023
|
-
allStatements.push(...statements);
|
|
2024
|
-
logger?.debug(`File ${file}: ${statements.length} statement(s)`);
|
|
2025
|
-
}
|
|
2026
|
-
for (const [bindingName] of Object.entries(config.bindings.d1)) {
|
|
2027
|
-
for (let attempt = 0;attempt < 5; attempt++) {
|
|
2028
|
-
await new Promise((r) => setTimeout(r, 500 * (attempt + 1)));
|
|
2029
|
-
try {
|
|
2030
|
-
const response = await fetch(`http://127.0.0.1:${miniflarePort}/_devflare/migrate`, {
|
|
2031
|
-
method: "POST",
|
|
2032
|
-
headers: { "Content-Type": "application/json" },
|
|
2033
|
-
body: JSON.stringify({ bindingName, statements: allStatements })
|
|
2034
|
-
});
|
|
2035
|
-
if (!response.ok) {
|
|
2036
|
-
const text = await response.text();
|
|
2037
|
-
throw new Error(`HTTP ${response.status}: ${text}`);
|
|
2038
|
-
}
|
|
2039
|
-
const result = await response.json();
|
|
2040
|
-
if (result.success) {
|
|
2041
|
-
logger?.success(`D1 migrations applied to ${bindingName}`);
|
|
2042
|
-
break;
|
|
2043
|
-
} else {
|
|
2044
|
-
throw new Error(result.error || "Unknown error");
|
|
2045
|
-
}
|
|
2046
|
-
} catch (error) {
|
|
2047
|
-
if (attempt === 4) {
|
|
2048
|
-
logger?.warn(`Failed to apply migrations to ${bindingName}: ${error}`);
|
|
2049
|
-
}
|
|
2050
|
-
}
|
|
2051
|
-
}
|
|
2052
|
-
}
|
|
2053
|
-
}
|
|
2054
|
-
async function startVite() {
|
|
2055
|
-
const { spawn } = await import("node:child_process");
|
|
2056
|
-
const args = ["vite", "dev", "--port", String(vitePort)];
|
|
2057
|
-
if (generatedViteConfigPath) {
|
|
2058
|
-
args.push("--config", generatedViteConfigPath);
|
|
2059
|
-
}
|
|
2060
|
-
viteProcess = spawn("bunx", args, {
|
|
2061
|
-
cwd,
|
|
2062
|
-
stdio: ["inherit", "pipe", "pipe"],
|
|
2063
|
-
windowsHide: true,
|
|
2064
|
-
env: {
|
|
2065
|
-
...process.env,
|
|
2066
|
-
DEVFLARE_DEV: "true",
|
|
2067
|
-
DEVFLARE_BRIDGE_PORT: String(miniflarePort),
|
|
2068
|
-
FORCE_COLOR: "1"
|
|
2069
|
-
}
|
|
2070
|
-
});
|
|
2071
|
-
const readyUrl = await waitForViteReady(viteProcess, {
|
|
2072
|
-
onStdout(chunk) {
|
|
2073
|
-
process.stdout.write(chunk);
|
|
2074
|
-
},
|
|
2075
|
-
onStderr(chunk) {
|
|
2076
|
-
process.stderr.write(chunk);
|
|
2077
|
-
}
|
|
2078
|
-
});
|
|
2079
|
-
if (readyUrl) {
|
|
2080
|
-
logger?.success(`Vite dev server started on ${readyUrl}`);
|
|
2081
|
-
return;
|
|
2082
|
-
}
|
|
2083
|
-
logger?.warn("Vite process started, but the final local URL could not be confirmed yet");
|
|
2084
|
-
}
|
|
2085
1941
|
async function start() {
|
|
2086
1942
|
logger?.info("Starting unified dev server...");
|
|
2087
1943
|
config = await loadConfig({ cwd, configFile: configPath });
|
|
@@ -2131,7 +1987,7 @@ function createDevServer(options) {
|
|
|
2131
1987
|
logger?.info("");
|
|
2132
1988
|
}
|
|
2133
1989
|
}
|
|
2134
|
-
const browserBinding = config.bindings?.browser
|
|
1990
|
+
const browserBinding = getSingleBrowserBindingName(config.bindings?.browser);
|
|
2135
1991
|
if (browserBinding) {
|
|
2136
1992
|
logger?.info(`Starting Browser Rendering shim (binding: ${browserBinding})...`);
|
|
2137
1993
|
browserShim = createBrowserShim({
|
|
@@ -2145,7 +2001,7 @@ function createDevServer(options) {
|
|
|
2145
2001
|
const doPattern = config.files?.durableObjects;
|
|
2146
2002
|
let doResult = null;
|
|
2147
2003
|
if (typeof doPattern === "string" && doPattern) {
|
|
2148
|
-
const outDir =
|
|
2004
|
+
const outDir = resolve3(cwd, ".devflare/do-bundles");
|
|
2149
2005
|
doBundler = createDOBundler({
|
|
2150
2006
|
cwd,
|
|
2151
2007
|
pattern: doPattern,
|
|
@@ -2164,14 +2020,20 @@ function createDevServer(options) {
|
|
|
2164
2020
|
}
|
|
2165
2021
|
currentDoResult = doResult;
|
|
2166
2022
|
await startMiniflare(doResult);
|
|
2167
|
-
await
|
|
2023
|
+
await startWorkerSourceWatcher2();
|
|
2168
2024
|
if (enableVite) {
|
|
2169
|
-
await
|
|
2025
|
+
viteProcess = await startViteProcess({
|
|
2026
|
+
cwd,
|
|
2027
|
+
vitePort,
|
|
2028
|
+
miniflarePort,
|
|
2029
|
+
generatedViteConfigPath,
|
|
2030
|
+
logger
|
|
2031
|
+
});
|
|
2170
2032
|
} else {
|
|
2171
2033
|
logger?.info("Vite startup skipped (no effective Vite config found for this package)");
|
|
2172
2034
|
}
|
|
2173
2035
|
await new Promise((r) => setTimeout(r, 1000));
|
|
2174
|
-
await runD1Migrations();
|
|
2036
|
+
await runD1Migrations({ cwd, config, miniflarePort, logger });
|
|
2175
2037
|
}
|
|
2176
2038
|
async function stop() {
|
|
2177
2039
|
if (doBundler) {
|
|
@@ -2213,11 +2075,11 @@ async function createLogWriter(cwd, options) {
|
|
|
2213
2075
|
const fs = await import("node:fs");
|
|
2214
2076
|
let logPath;
|
|
2215
2077
|
if (options.logTemp) {
|
|
2216
|
-
logPath =
|
|
2078
|
+
logPath = resolve4(cwd, ".log");
|
|
2217
2079
|
} else {
|
|
2218
2080
|
const now = new Date;
|
|
2219
2081
|
const timestamp = now.toISOString().replace(/[:.]/g, "-").replace("T", "_").slice(0, 19);
|
|
2220
|
-
logPath =
|
|
2082
|
+
logPath = resolve4(cwd, `.log-${timestamp}`);
|
|
2221
2083
|
}
|
|
2222
2084
|
const fileStream = fs.createWriteStream(logPath, { flags: "w" });
|
|
2223
2085
|
const ansiRegex = /\x1b\[[0-9;]*m/g;
|
|
@@ -2248,6 +2110,7 @@ async function runDevCommand(parsed, logger, options) {
|
|
|
2248
2110
|
const persistEnabled = parsed.options.persist === true;
|
|
2249
2111
|
const debugEnabled = parsed.options.debug === true || process.env.DEVFLARE_DEBUG === "true";
|
|
2250
2112
|
const verbose = parsed.options.verbose === true || debugEnabled;
|
|
2113
|
+
const theme = createCliTheme(parsed.options);
|
|
2251
2114
|
const config = await loadConfig({ cwd, configFile: configPath });
|
|
2252
2115
|
const viteProject = resolveEffectiveViteProject(await detectViteProject(cwd), config);
|
|
2253
2116
|
const logWriter = await createLogWriter(cwd, {
|
|
@@ -2256,7 +2119,7 @@ async function runDevCommand(parsed, logger, options) {
|
|
|
2256
2119
|
});
|
|
2257
2120
|
if (logWriter) {
|
|
2258
2121
|
const logFile = relative(cwd, logWriter.path) || ".log";
|
|
2259
|
-
logger
|
|
2122
|
+
logLine(logger, `${dim("logging", theme)} ${logFile}`);
|
|
2260
2123
|
}
|
|
2261
2124
|
const devLogger = createConsola({
|
|
2262
2125
|
level: verbose ? 4 : 3
|
|
@@ -2277,24 +2140,24 @@ async function runDevCommand(parsed, logger, options) {
|
|
|
2277
2140
|
Object.assign(devLogger.debug, wrapLog(devLogger.debug.bind(devLogger), "[DEBUG]"));
|
|
2278
2141
|
}
|
|
2279
2142
|
try {
|
|
2280
|
-
logger
|
|
2143
|
+
logLine(logger);
|
|
2281
2144
|
if (viteProject.shouldStartVite) {
|
|
2282
|
-
logger
|
|
2283
|
-
logger
|
|
2284
|
-
logger
|
|
2285
|
-
logger
|
|
2286
|
-
logger
|
|
2145
|
+
logLine(logger, `${cyanBold("dev", theme)} ${dim("Unified Dev Server", theme)}`);
|
|
2146
|
+
logLine(logger, " ├─ Vite: Full HMR for frontend");
|
|
2147
|
+
logLine(logger, " ├─ Miniflare: All Cloudflare bindings");
|
|
2148
|
+
logLine(logger, " ├─ Rolldown: Worker + DO bundling with watch");
|
|
2149
|
+
logLine(logger, " └─ Bridge: WebSocket RPC connection");
|
|
2287
2150
|
} else {
|
|
2288
|
-
logger
|
|
2289
|
-
logger
|
|
2290
|
-
logger
|
|
2291
|
-
logger
|
|
2151
|
+
logLine(logger, `${cyanBold("dev", theme)} ${dim("Worker Dev Server", theme)}`);
|
|
2152
|
+
logLine(logger, " ├─ Miniflare: All Cloudflare bindings");
|
|
2153
|
+
logLine(logger, " ├─ Rolldown: Worker + DO bundling with watch");
|
|
2154
|
+
logLine(logger, " └─ Vite: Disabled (no effective Vite config found)");
|
|
2292
2155
|
if (viteProject.wantsViteIntegration) {
|
|
2293
2156
|
logger.warn("Vite-related settings were detected, but no effective Vite config was available");
|
|
2294
2157
|
logger.warn("Skipping Vite startup and running in worker-only mode");
|
|
2295
2158
|
}
|
|
2296
2159
|
}
|
|
2297
|
-
logger
|
|
2160
|
+
logLine(logger);
|
|
2298
2161
|
const devServer = createDevServer({
|
|
2299
2162
|
cwd,
|
|
2300
2163
|
configPath,
|
|
@@ -2324,8 +2187,8 @@ async function runDevCommand(parsed, logger, options) {
|
|
|
2324
2187
|
const message = reason instanceof Error ? reason.stack ?? reason.message : String(reason);
|
|
2325
2188
|
logger.error(message);
|
|
2326
2189
|
}
|
|
2327
|
-
logger
|
|
2328
|
-
logger
|
|
2190
|
+
logLine(logger);
|
|
2191
|
+
logLine(logger, `${yellow("dev", theme)} ${dim("Shutting down…", theme)}`);
|
|
2329
2192
|
try {
|
|
2330
2193
|
await devServer.stop();
|
|
2331
2194
|
} finally {
|