devflare 1.0.0-next.14 → 1.0.0-next.16
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 +9360 -1784
- package/README.md +391 -32
- package/bin/devflare.js +17 -7
- package/dist/account-0w8wdzjv.js +475 -0
- package/dist/account-eygq6qx7.js +475 -0
- package/dist/account-fw8nafav.js +475 -0
- package/dist/account-pzq69nys.js +475 -0
- package/dist/account-s66jb15j.js +475 -0
- package/dist/api-d6ekexs5.js +25 -0
- package/dist/bridge/index.d.ts +1 -1
- package/dist/bridge/index.d.ts.map +1 -1
- 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 +0 -4
- package/dist/bridge/proxy.d.ts.map +1 -1
- package/dist/bridge/serialization.d.ts.map +1 -1
- package/dist/bridge/server.d.ts +1 -1
- package/dist/bridge/server.d.ts.map +1 -1
- package/dist/browser-shim/handler.d.ts +1 -1
- package/dist/browser-shim/handler.d.ts.map +1 -1
- package/dist/browser.d.ts +1651 -34
- package/dist/browser.d.ts.map +1 -1
- package/dist/build-1kmkwqgh.js +53 -0
- package/dist/build-506kjhcm.js +53 -0
- package/dist/build-66866ahs.js +53 -0
- package/dist/build-g1adm3ww.js +53 -0
- package/dist/build-p3r3117t.js +53 -0
- package/dist/bundler/do-bundler.d.ts.map +1 -1
- package/dist/bundler/rolldown-shared.d.ts +24 -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/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/config.d.ts +4 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- 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/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/preview-bindings.d.ts +42 -0
- package/dist/cli/preview-bindings.d.ts.map +1 -0
- package/dist/cli/preview.d.ts +11 -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 +4 -0
- package/dist/cloudflare/api.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/kv-namespace.d.ts +3 -0
- package/dist/cloudflare/kv-namespace.d.ts.map +1 -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-records.d.ts +61 -0
- package/dist/cloudflare/preview-registry-records.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-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/registry-schema.d.ts +253 -0
- package/dist/cloudflare/registry-schema.d.ts.map +1 -0
- package/dist/cloudflare/tokens.d.ts +18 -0
- package/dist/cloudflare/tokens.d.ts.map +1 -0
- package/dist/cloudflare/types.d.ts +122 -5
- package/dist/cloudflare/types.d.ts.map +1 -1
- package/dist/cloudflare/usage.d.ts.map +1 -1
- package/dist/config/compiler.d.ts +4 -0
- package/dist/config/compiler.d.ts.map +1 -1
- 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 +5 -3
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/loader.d.ts +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/preview-resources.d.ts +77 -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 +0 -22
- package/dist/config/ref.d.ts.map +1 -1
- package/dist/config/resolve.d.ts +1 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resource-resolution.d.ts +60 -0
- package/dist/config/resource-resolution.d.ts.map +1 -0
- package/dist/config/schema-bindings.d.ts +693 -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 +1341 -0
- package/dist/config/schema-env.d.ts.map +1 -0
- package/dist/config/schema-normalization.d.ts +64 -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 +640 -3669
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config-entry.d.ts +5 -0
- package/dist/config-entry.d.ts.map +1 -0
- package/dist/config-fjwke42y.js +59 -0
- package/dist/config-hwdqjse7.js +59 -0
- package/dist/config-pxvewrhv.js +59 -0
- package/dist/config-q0g5qdga.js +59 -0
- package/dist/decorators/durable-object.d.ts.map +1 -1
- package/dist/deploy-7nmzc9r8.js +609 -0
- package/dist/deploy-csfhdr64.js +691 -0
- package/dist/deploy-ex4g5avz.js +621 -0
- package/dist/deploy-jnb0bhka.js +609 -0
- package/dist/deploy-tp0g6qdp.js +609 -0
- package/dist/deploy-ykpcjkc2.js +690 -0
- package/dist/{dev-c1xc1gq9.js → dev-2pd33m28.js} +392 -348
- package/dist/dev-7ef5e2j1.js +2409 -0
- package/dist/dev-8nssqatr.js +2409 -0
- package/dist/dev-grznx8fn.js +2409 -0
- package/dist/dev-server/d1-migrations.d.ts +14 -0
- package/dist/dev-server/d1-migrations.d.ts.map +1 -0
- package/dist/dev-server/gateway-script.d.ts +8 -0
- package/dist/dev-server/gateway-script.d.ts.map +1 -0
- package/dist/dev-server/runtime-stdio.d.ts.map +1 -1
- 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 +1 -1
- package/dist/dev-server/vite-utils.d.ts.map +1 -1
- package/dist/dev-server/worker-source-watcher.d.ts +11 -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/{doctor-z4ffybce.js → doctor-04ammrrh.js} +67 -31
- package/dist/doctor-fmjj65mc.js +245 -0
- package/dist/doctor-fzkznce1.js +245 -0
- package/dist/doctor-sa5xv1bz.js +245 -0
- package/dist/index-091sh1ma.js +1229 -0
- package/dist/index-0apbm26n.js +788 -0
- package/dist/index-0eqksag4.js +418 -0
- package/dist/{index-dr6sbp8d.js → index-0kfzdywd.js} +15 -2
- package/dist/index-0w826dsr.js +379 -0
- package/dist/{index-rfhx0yd5.js → index-11m5a8wd.js} +110 -32
- package/dist/{index-xxwbb2nt.js → index-1sp39f2f.js} +114 -58
- package/dist/index-2jnrqbny.js +1301 -0
- package/dist/index-2pb7b9mw.js +378 -0
- package/dist/{index-0kzg8wed.js → index-2x53aqjm.js} +1071 -890
- package/dist/index-3ke5d2vn.js +1229 -0
- package/dist/index-43dq8yx8.js +788 -0
- package/dist/index-4rrttqj5.js +378 -0
- package/dist/index-4v9bc2pc.js +1367 -0
- package/dist/index-61jsjnsv.js +280 -0
- package/dist/index-6jef5emv.js +176 -0
- package/dist/index-6psz1h4c.js +788 -0
- package/dist/index-72mve6vh.js +168 -0
- package/dist/{index-zbvmtcn2.js → index-74198nxd.js} +179 -77
- package/dist/index-7g8zyws4.js +192 -0
- package/dist/index-7kcxjhta.js +456 -0
- package/dist/index-7v583xan.js +418 -0
- package/dist/index-7x0ybbtx.js +133 -0
- package/dist/index-816krz9p.js +52 -0
- package/dist/index-82f1z98k.js +41 -0
- package/dist/index-8t5nb4qx.js +133 -0
- package/dist/index-9az6s7ad.js +52 -0
- package/dist/{index-59df49vn.js → index-9ba1etyz.js} +29 -51
- package/dist/{index-001mw014.js → index-9fbtk7gv.js} +134 -248
- package/dist/index-9n6djthj.js +490 -0
- package/dist/index-aabgympv.js +39 -0
- package/dist/index-b8m6883k.js +74 -0
- package/dist/{index-5yxg30va.js → index-cgbvmse6.js} +15 -6
- package/dist/index-d8etnfef.js +1229 -0
- package/dist/index-e9yw4d6y.js +133 -0
- package/dist/index-epw1jxz5.js +1204 -0
- package/dist/index-f85s8gj3.js +2649 -0
- package/dist/index-fe2ngvh7.js +1229 -0
- package/dist/index-fvsadj32.js +192 -0
- package/dist/index-gs4y9gdf.js +456 -0
- package/dist/{index-fef08w43.js → index-h18pxvzs.js} +7 -6
- package/dist/index-hfj1a2c4.js +2649 -0
- package/dist/{index-8gtqgb3q.js → index-hjy8ctpc.js} +14 -92
- package/dist/index-htzf0py1.js +1204 -0
- package/dist/index-j185x270.js +897 -0
- package/dist/index-jb75kwa4.js +519 -0
- package/dist/index-jwd8pcb2.js +897 -0
- package/dist/index-k29yjhv0.js +52 -0
- package/dist/index-k6vq6kkt.js +456 -0
- package/dist/{index-vky23txa.js → index-m3fmw6mx.js} +2 -2
- package/dist/index-maxpsfk8.js +402 -0
- package/dist/index-mbdmrner.js +402 -0
- package/dist/index-mea5bc45.js +418 -0
- package/dist/index-mqekt778.js +185 -0
- package/dist/index-na3mnm1k.js +74 -0
- package/dist/index-p03n4qet.js +1367 -0
- package/dist/index-p296ban8.js +191 -0
- package/dist/index-pnbs1b8k.js +280 -0
- package/dist/index-q4kaz181.js +1207 -0
- package/dist/index-ry131z23.js +378 -0
- package/dist/index-sgb7c8nm.js +402 -0
- package/dist/index-sqrksgb2.js +133 -0
- package/dist/index-stgn34cr.js +148 -0
- package/dist/{index-v8vvsn9x.js → index-t08te69w.js} +1 -18
- package/dist/index-thna1tkd.js +280 -0
- package/dist/index-v5nmqthy.js +74 -0
- package/dist/{index-n932ytmq.js → index-vt4yxkmf.js} +2 -2
- package/dist/index-wyq6c6yj.js +402 -0
- package/dist/index-wztc9stx.js +418 -0
- package/dist/index-x9cwdxw5.js +456 -0
- package/dist/index-xk9djfjp.js +519 -0
- package/dist/index-yc0gcchc.js +418 -0
- package/dist/index-yqbxjysa.js +897 -0
- package/dist/index-yzddwp02.js +788 -0
- package/dist/index-zfhq6s96.js +74 -0
- package/dist/index-zt22fe2j.js +54 -0
- package/dist/index-zyt5byt6.js +2649 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/{init-na2atvz2.js → init-r4hnxan3.js} +24 -17
- package/dist/login-2hnz4m4n.js +77 -0
- package/dist/login-5bsxxpvc.js +77 -0
- package/dist/login-6tzvczw2.js +77 -0
- package/dist/login-bhaw72zc.js +77 -0
- package/dist/login-x8tgckqm.js +77 -0
- package/dist/previews-3rn8mz2c.js +1168 -0
- package/dist/previews-d487qde5.js +1200 -0
- package/dist/previews-gm3z0syj.js +1168 -0
- package/dist/previews-j9ymq4ys.js +1169 -0
- package/dist/previews-q031mx34.js +1168 -0
- package/dist/productions-120xg0aq.js +505 -0
- package/dist/productions-5ev5qweg.js +505 -0
- package/dist/productions-me3tdvr9.js +505 -0
- package/dist/productions-p5rbgp2f.js +505 -0
- package/dist/productions-x9p0pym1.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 +6 -267
- package/dist/runtime/context.d.ts.map +1 -1
- package/dist/runtime/exports.d.ts +3 -3
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/middleware.d.ts +8 -38
- package/dist/runtime/middleware.d.ts.map +1 -1
- package/dist/src/browser.js +23 -14
- package/dist/src/cli/index.js +3 -1
- package/dist/src/cloudflare/index.js +49 -2
- package/dist/src/config-entry.js +14 -0
- package/dist/src/index.js +33 -20
- package/dist/src/runtime/index.js +3 -9
- package/dist/src/sveltekit/index.js +10 -7
- package/dist/src/test/index.js +16 -18
- package/dist/src/vite/index.js +7 -4
- package/dist/sveltekit/platform.d.ts +1 -1
- package/dist/sveltekit/platform.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 -6
- package/dist/test/index.d.ts.map +1 -1
- 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-durable-objects.d.ts +6 -0
- package/dist/test/simple-context-durable-objects.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-paths.d.ts +40 -0
- package/dist/test/simple-context-paths.d.ts.map +1 -0
- package/dist/test/simple-context.d.ts +1 -23
- package/dist/test/simple-context.d.ts.map +1 -1
- package/dist/test/tail.d.ts.map +1 -1
- package/dist/test/worker.d.ts.map +1 -1
- package/dist/token-kedhcret.js +419 -0
- package/dist/token-m8jmnjwk.js +419 -0
- package/dist/{types-sffr9681.js → types-0sqwkp7x.js} +244 -139
- package/dist/types-1gwr2ex6.js +572 -0
- package/dist/types-6e5yx6km.js +572 -0
- package/dist/types-p0gckpn6.js +572 -0
- package/dist/utils/send-email.d.ts.map +1 -1
- package/dist/vite/config-file.d.ts.map +1 -1
- package/dist/vite/plugin.d.ts.map +1 -1
- package/dist/worker-0srh2jfr.js +513 -0
- package/dist/worker-4xrfd10a.js +513 -0
- package/dist/worker-entry/composed-worker.d.ts +0 -7
- package/dist/worker-entry/composed-worker.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-qtam8grz.js +513 -0
- package/dist/worker-qzm0b7br.js +513 -0
- package/dist/worker-y9ha6g44.js +513 -0
- package/package.json +17 -10
- package/R2.md +0 -200
- package/dist/account-8psavtg6.js +0 -420
- package/dist/build-n639efmn.js +0 -101
- package/dist/deploy-zvnq6xh7.js +0 -117
- package/dist/index-2q3pmzrx.js +0 -90
- package/dist/index-f4q0jbnj.js +0 -195
- package/dist/index-n7rs26ft.js +0 -77
- package/dist/index-tfyxa77h.js +0 -850
- package/dist/index-wyf3s77s.js +0 -343
- package/dist/test/multi-worker-context.d.ts +0 -114
- package/dist/test/multi-worker-context.d.ts.map +0 -1
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
// src/cloudflare/auth.ts
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
5
|
+
import { execSync } from "node:child_process";
|
|
6
|
+
var WRANGLER_CONFIG_FILE = "config/default.toml";
|
|
7
|
+
var EXPIRY_BUFFER_MS = 5 * 60 * 1000;
|
|
8
|
+
var cachedToken = null;
|
|
9
|
+
var cacheExpiresAt = 0;
|
|
10
|
+
function invalidateToken() {
|
|
11
|
+
cachedToken = null;
|
|
12
|
+
cacheExpiresAt = 0;
|
|
13
|
+
}
|
|
14
|
+
function getWranglerConfigPaths() {
|
|
15
|
+
const paths = [];
|
|
16
|
+
if (process.platform === "win32" && process.env.APPDATA) {
|
|
17
|
+
paths.push(join(process.env.APPDATA, "xdg.config", ".wrangler", WRANGLER_CONFIG_FILE));
|
|
18
|
+
}
|
|
19
|
+
if (process.env.XDG_CONFIG_HOME) {
|
|
20
|
+
paths.push(join(process.env.XDG_CONFIG_HOME, ".wrangler", WRANGLER_CONFIG_FILE));
|
|
21
|
+
}
|
|
22
|
+
paths.push(join(homedir(), ".wrangler", WRANGLER_CONFIG_FILE));
|
|
23
|
+
return paths;
|
|
24
|
+
}
|
|
25
|
+
function getWranglerConfigPath() {
|
|
26
|
+
const paths = getWranglerConfigPaths();
|
|
27
|
+
for (const path of paths) {
|
|
28
|
+
if (existsSync(path)) {
|
|
29
|
+
return path;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
function hasWranglerConfig() {
|
|
35
|
+
return getWranglerConfigPath() !== null;
|
|
36
|
+
}
|
|
37
|
+
function parseSimpleToml(content) {
|
|
38
|
+
const result = {};
|
|
39
|
+
const lines = content.split(`
|
|
40
|
+
`);
|
|
41
|
+
for (const line of lines) {
|
|
42
|
+
const trimmed = line.trim();
|
|
43
|
+
if (trimmed.startsWith("#") || trimmed === "")
|
|
44
|
+
continue;
|
|
45
|
+
if (trimmed.startsWith("["))
|
|
46
|
+
continue;
|
|
47
|
+
const match = trimmed.match(/^(\w+)\s*=\s*["'](.*)["']$/);
|
|
48
|
+
if (match) {
|
|
49
|
+
result[match[1]] = match[2];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
function readWranglerConfig() {
|
|
55
|
+
const configPath = getWranglerConfigPath();
|
|
56
|
+
if (!configPath || !existsSync(configPath)) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const content = readFileSync(configPath, "utf-8");
|
|
61
|
+
const config = parseSimpleToml(content);
|
|
62
|
+
const token = config.oauth_token;
|
|
63
|
+
const expirationTime = config.expiration_time;
|
|
64
|
+
if (token && expirationTime) {
|
|
65
|
+
return {
|
|
66
|
+
token,
|
|
67
|
+
expiresAt: new Date(expirationTime)
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
} catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async function getWranglerAuth() {
|
|
76
|
+
const config = readWranglerConfig();
|
|
77
|
+
if (!config)
|
|
78
|
+
return null;
|
|
79
|
+
const configPath = getWranglerConfigPath();
|
|
80
|
+
if (!configPath)
|
|
81
|
+
return null;
|
|
82
|
+
try {
|
|
83
|
+
const content = readFileSync(configPath, "utf-8");
|
|
84
|
+
const parsed = parseSimpleToml(content);
|
|
85
|
+
return {
|
|
86
|
+
oauthToken: parsed.oauth_token,
|
|
87
|
+
refreshToken: parsed.refresh_token,
|
|
88
|
+
expiresAt: config.expiresAt
|
|
89
|
+
};
|
|
90
|
+
} catch {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function refreshWranglerToken() {
|
|
95
|
+
try {
|
|
96
|
+
const result = execSync("bunx wrangler auth token", {
|
|
97
|
+
encoding: "utf-8",
|
|
98
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
99
|
+
timeout: 15000
|
|
100
|
+
});
|
|
101
|
+
const lines = result.trim().split(/\r?\n/).filter((l) => l.trim().length > 0);
|
|
102
|
+
const token = lines[lines.length - 1]?.trim();
|
|
103
|
+
if (token && token.length >= 20 && !token.includes("wrangler") && !token.includes("⛅")) {
|
|
104
|
+
return token;
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
} catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async function getApiToken(forceRefresh = false) {
|
|
112
|
+
if (!forceRefresh && cachedToken && Date.now() < cacheExpiresAt) {
|
|
113
|
+
return cachedToken;
|
|
114
|
+
}
|
|
115
|
+
const envToken = process.env.CLOUDFLARE_API_TOKEN;
|
|
116
|
+
if (envToken) {
|
|
117
|
+
return envToken;
|
|
118
|
+
}
|
|
119
|
+
if (!forceRefresh) {
|
|
120
|
+
const config = readWranglerConfig();
|
|
121
|
+
if (config) {
|
|
122
|
+
const now = Date.now();
|
|
123
|
+
const expiresAt = config.expiresAt.getTime();
|
|
124
|
+
if (now < expiresAt - EXPIRY_BUFFER_MS) {
|
|
125
|
+
cachedToken = config.token;
|
|
126
|
+
cacheExpiresAt = expiresAt - EXPIRY_BUFFER_MS;
|
|
127
|
+
return config.token;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const refreshedToken = refreshWranglerToken();
|
|
132
|
+
if (refreshedToken) {
|
|
133
|
+
cachedToken = refreshedToken;
|
|
134
|
+
cacheExpiresAt = Date.now() + EXPIRY_BUFFER_MS;
|
|
135
|
+
return refreshedToken;
|
|
136
|
+
}
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
async function isAuthenticated() {
|
|
140
|
+
const token = await getApiToken();
|
|
141
|
+
return token !== null;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// src/cloudflare/api.ts
|
|
145
|
+
var API_BASE = "https://api.cloudflare.com/client/v4";
|
|
146
|
+
var DEFAULT_TIMEOUT = 1e4;
|
|
147
|
+
var hasRetriedWithFreshToken = false;
|
|
148
|
+
async function fetchWithTimeout(url, init, timeoutMs) {
|
|
149
|
+
const controller = new AbortController;
|
|
150
|
+
const abortTimeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
151
|
+
let rejectTimeoutId = null;
|
|
152
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
153
|
+
rejectTimeoutId = setTimeout(() => reject(new Error(`Request timed out after ${timeoutMs}ms`)), timeoutMs);
|
|
154
|
+
});
|
|
155
|
+
try {
|
|
156
|
+
const response = await Promise.race([
|
|
157
|
+
fetch(url, { ...init, signal: controller.signal }),
|
|
158
|
+
timeoutPromise
|
|
159
|
+
]);
|
|
160
|
+
return response;
|
|
161
|
+
} finally {
|
|
162
|
+
clearTimeout(abortTimeoutId);
|
|
163
|
+
if (rejectTimeoutId) {
|
|
164
|
+
clearTimeout(rejectTimeoutId);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
class CloudflareAPIError extends Error {
|
|
170
|
+
code;
|
|
171
|
+
errors;
|
|
172
|
+
constructor(message, code, errors) {
|
|
173
|
+
super(message);
|
|
174
|
+
this.code = code;
|
|
175
|
+
this.errors = errors;
|
|
176
|
+
this.name = "CloudflareAPIError";
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
class AuthenticationError extends Error {
|
|
181
|
+
constructor(message = "Not authenticated. Run: devflare login") {
|
|
182
|
+
super(message);
|
|
183
|
+
this.name = "AuthenticationError";
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async function createHeaders(options, forceRefresh = false) {
|
|
187
|
+
const token = options?.token ?? await getApiToken(forceRefresh);
|
|
188
|
+
if (!token) {
|
|
189
|
+
throw new AuthenticationError;
|
|
190
|
+
}
|
|
191
|
+
return new Headers({
|
|
192
|
+
Authorization: `Bearer ${token}`,
|
|
193
|
+
"Content-Type": "application/json"
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
function isAuthError(response, data) {
|
|
197
|
+
if (response.status === 401)
|
|
198
|
+
return true;
|
|
199
|
+
if (!data.success && data.errors?.some((e) => e.code === 1e4 || e.message?.toLowerCase().includes("authentication") || e.message?.toLowerCase().includes("token"))) {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
async function requestCloudflareJson(path, request, options) {
|
|
205
|
+
const makeRequest = async (forceRefresh) => {
|
|
206
|
+
const headers = await createHeaders(options, forceRefresh);
|
|
207
|
+
const response = await fetchWithTimeout(`${API_BASE}${path}`, {
|
|
208
|
+
method: request.method,
|
|
209
|
+
headers,
|
|
210
|
+
...request.body !== undefined ? { body: JSON.stringify(request.body) } : {}
|
|
211
|
+
}, options?.timeout ?? DEFAULT_TIMEOUT);
|
|
212
|
+
const data = await response.json();
|
|
213
|
+
return {
|
|
214
|
+
response,
|
|
215
|
+
data
|
|
216
|
+
};
|
|
217
|
+
};
|
|
218
|
+
let result = await makeRequest(false);
|
|
219
|
+
if (request.allowAuthRetry === true && isAuthError(result.response, result.data) && !hasRetriedWithFreshToken && !options?.token) {
|
|
220
|
+
hasRetriedWithFreshToken = true;
|
|
221
|
+
invalidateToken();
|
|
222
|
+
try {
|
|
223
|
+
result = await makeRequest(true);
|
|
224
|
+
} finally {
|
|
225
|
+
hasRetriedWithFreshToken = false;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return result;
|
|
229
|
+
}
|
|
230
|
+
async function requestCloudflareResult(path, request, options) {
|
|
231
|
+
const { response, data } = await requestCloudflareJson(path, request, options);
|
|
232
|
+
return unwrapCloudflareResult(response, data);
|
|
233
|
+
}
|
|
234
|
+
function unwrapCloudflareResult(response, data, fallbackMessage = "API request failed") {
|
|
235
|
+
if (!data.success) {
|
|
236
|
+
throw new CloudflareAPIError(data.errors[0]?.message || fallbackMessage, response.status, data.errors);
|
|
237
|
+
}
|
|
238
|
+
return data.result;
|
|
239
|
+
}
|
|
240
|
+
async function throwCloudflareResponseError(response, fallbackMessage) {
|
|
241
|
+
try {
|
|
242
|
+
const errorData = await response.json();
|
|
243
|
+
throw new CloudflareAPIError(errorData.errors[0]?.message || fallbackMessage, response.status, errorData.errors);
|
|
244
|
+
} catch (error) {
|
|
245
|
+
if (error instanceof CloudflareAPIError) {
|
|
246
|
+
throw error;
|
|
247
|
+
}
|
|
248
|
+
throw new CloudflareAPIError(fallbackMessage, response.status, []);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
async function apiGet(path, options) {
|
|
252
|
+
return requestCloudflareResult(path, {
|
|
253
|
+
method: "GET",
|
|
254
|
+
allowAuthRetry: true
|
|
255
|
+
}, options);
|
|
256
|
+
}
|
|
257
|
+
async function apiPost(path, body, options) {
|
|
258
|
+
return requestCloudflareResult(path, {
|
|
259
|
+
method: "POST",
|
|
260
|
+
body
|
|
261
|
+
}, options);
|
|
262
|
+
}
|
|
263
|
+
async function apiPut(path, body, options) {
|
|
264
|
+
return requestCloudflareResult(path, {
|
|
265
|
+
method: "PUT",
|
|
266
|
+
body
|
|
267
|
+
}, options);
|
|
268
|
+
}
|
|
269
|
+
async function apiPatch(path, body, options) {
|
|
270
|
+
return requestCloudflareResult(path, {
|
|
271
|
+
method: "PATCH",
|
|
272
|
+
body
|
|
273
|
+
}, options);
|
|
274
|
+
}
|
|
275
|
+
async function apiDelete(path, options) {
|
|
276
|
+
return requestCloudflareResult(path, {
|
|
277
|
+
method: "DELETE"
|
|
278
|
+
}, options);
|
|
279
|
+
}
|
|
280
|
+
async function apiGetAll(path, options) {
|
|
281
|
+
const results = [];
|
|
282
|
+
let page = 1;
|
|
283
|
+
let cursor;
|
|
284
|
+
const perPage = 50;
|
|
285
|
+
const maxPages = 100;
|
|
286
|
+
const seenCursors = new Set;
|
|
287
|
+
const extractPaginatedItems = (result) => {
|
|
288
|
+
if (Array.isArray(result)) {
|
|
289
|
+
return result;
|
|
290
|
+
}
|
|
291
|
+
if (!result || typeof result !== "object") {
|
|
292
|
+
throw new Error("Expected paginated Cloudflare API result to be an array or an object containing an array.");
|
|
293
|
+
}
|
|
294
|
+
const arrayEntries = Object.entries(result).filter(([, value]) => Array.isArray(value));
|
|
295
|
+
if (arrayEntries.length !== 1) {
|
|
296
|
+
throw new Error("Expected paginated Cloudflare API result object to contain exactly one array property.");
|
|
297
|
+
}
|
|
298
|
+
return arrayEntries[0][1];
|
|
299
|
+
};
|
|
300
|
+
while (page <= maxPages) {
|
|
301
|
+
const separator = path.includes("?") ? "&" : "?";
|
|
302
|
+
const pagedPath = cursor ? `${path}${separator}cursor=${encodeURIComponent(cursor)}&per_page=${perPage}` : `${path}${separator}page=${page}&per_page=${perPage}`;
|
|
303
|
+
const { response, data } = await requestCloudflareJson(pagedPath, {
|
|
304
|
+
method: "GET",
|
|
305
|
+
allowAuthRetry: true
|
|
306
|
+
}, options);
|
|
307
|
+
unwrapCloudflareResult(response, data);
|
|
308
|
+
const pageResults = extractPaginatedItems(data.result);
|
|
309
|
+
results.push(...pageResults);
|
|
310
|
+
if (!data.result_info) {
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
if (pageResults.length === 0) {
|
|
314
|
+
break;
|
|
315
|
+
}
|
|
316
|
+
const nextCursor = data.result_info.cursor?.trim();
|
|
317
|
+
if (nextCursor) {
|
|
318
|
+
if (seenCursors.has(nextCursor)) {
|
|
319
|
+
break;
|
|
320
|
+
}
|
|
321
|
+
seenCursors.add(nextCursor);
|
|
322
|
+
cursor = nextCursor;
|
|
323
|
+
continue;
|
|
324
|
+
}
|
|
325
|
+
if (cursor) {
|
|
326
|
+
break;
|
|
327
|
+
}
|
|
328
|
+
if (data.result_info.total_count !== undefined) {
|
|
329
|
+
if (results.length >= data.result_info.total_count) {
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
if (data.result_info.total_pages !== undefined) {
|
|
334
|
+
if (page >= data.result_info.total_pages) {
|
|
335
|
+
break;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
page++;
|
|
339
|
+
}
|
|
340
|
+
return results;
|
|
341
|
+
}
|
|
342
|
+
async function requestKVValue(accountId, namespaceId, key, request, options) {
|
|
343
|
+
const token = options?.token ?? await getApiToken();
|
|
344
|
+
if (!token)
|
|
345
|
+
throw new AuthenticationError;
|
|
346
|
+
const encodedKey = encodeURIComponent(key);
|
|
347
|
+
const url = `${API_BASE}/accounts/${accountId}/storage/kv/namespaces/${namespaceId}/values/${encodedKey}`;
|
|
348
|
+
return fetchWithTimeout(url, {
|
|
349
|
+
method: request.method,
|
|
350
|
+
headers: {
|
|
351
|
+
Authorization: `Bearer ${token}`,
|
|
352
|
+
...request.method === "PUT" ? { "Content-Type": "text/plain" } : {}
|
|
353
|
+
},
|
|
354
|
+
...request.method === "PUT" ? { body: request.value } : {}
|
|
355
|
+
}, options?.timeout ?? DEFAULT_TIMEOUT);
|
|
356
|
+
}
|
|
357
|
+
async function kvGet(accountId, namespaceId, key, options) {
|
|
358
|
+
const response = await requestKVValue(accountId, namespaceId, key, {
|
|
359
|
+
method: "GET"
|
|
360
|
+
}, options);
|
|
361
|
+
if (response.status === 404) {
|
|
362
|
+
return null;
|
|
363
|
+
}
|
|
364
|
+
if (!response.ok) {
|
|
365
|
+
await throwCloudflareResponseError(response, "KV read failed");
|
|
366
|
+
}
|
|
367
|
+
return response.text();
|
|
368
|
+
}
|
|
369
|
+
async function kvPut(accountId, namespaceId, key, value, options) {
|
|
370
|
+
const response = await requestKVValue(accountId, namespaceId, key, {
|
|
371
|
+
method: "PUT",
|
|
372
|
+
value
|
|
373
|
+
}, options);
|
|
374
|
+
if (!response.ok) {
|
|
375
|
+
await throwCloudflareResponseError(response, "KV write failed");
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
export { hasWranglerConfig, getWranglerAuth, getApiToken, isAuthenticated, CloudflareAPIError, AuthenticationError, apiGet, apiPost, apiPut, apiPatch, apiDelete, apiGetAll, kvGet, kvPut };
|
|
@@ -1,25 +1,63 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
getSingleBrowserBindingName,
|
|
3
|
+
normalizeD1Binding,
|
|
4
|
+
normalizeDOBinding,
|
|
5
|
+
normalizeHyperdriveBinding,
|
|
6
|
+
normalizeKVBinding,
|
|
7
|
+
resolveConfigForEnvironment
|
|
8
|
+
} from "./index-yzddwp02.js";
|
|
4
9
|
import {
|
|
5
10
|
__require
|
|
6
11
|
} from "./index-37x76zdn.js";
|
|
7
12
|
|
|
8
|
-
// src/config/
|
|
9
|
-
import {
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
// src/config/compiler.ts
|
|
14
|
+
import { basename, isAbsolute, relative, resolve } from "pathe";
|
|
15
|
+
function getWranglerD1DatabaseId(bindingName, bindingConfig) {
|
|
16
|
+
const normalized = normalizeD1Binding(bindingConfig);
|
|
17
|
+
if (normalized.databaseId) {
|
|
18
|
+
return normalized.databaseId;
|
|
13
19
|
}
|
|
14
|
-
|
|
20
|
+
throw new Error(`D1 binding "${bindingName}" is configured by name (${normalized.name}) and must be resolved before compiling Wrangler config. Use loadResolvedConfig() or resolveConfigResources() for build/deploy/automation flows.`);
|
|
21
|
+
}
|
|
22
|
+
function getWranglerKVNamespaceId(bindingName, bindingConfig) {
|
|
23
|
+
const normalized = normalizeKVBinding(bindingConfig);
|
|
24
|
+
if (normalized.namespaceId) {
|
|
25
|
+
return normalized.namespaceId;
|
|
26
|
+
}
|
|
27
|
+
throw new Error(`KV binding "${bindingName}" is configured by name (${normalized.name}) and must be resolved before compiling Wrangler config. Use loadResolvedConfig() or resolveConfigResources() for build/deploy/automation flows.`);
|
|
28
|
+
}
|
|
29
|
+
function getWranglerHyperdriveId(bindingName, bindingConfig) {
|
|
30
|
+
const normalized = normalizeHyperdriveBinding(bindingConfig);
|
|
31
|
+
if (normalized.configurationId) {
|
|
32
|
+
return normalized.configurationId;
|
|
33
|
+
}
|
|
34
|
+
throw new Error(`Hyperdrive binding "${bindingName}" is configured by name (${normalized.name}) and must be resolved before compiling Wrangler config. Use loadResolvedConfig() or resolveConfigResources() for build/deploy/automation flows.`);
|
|
35
|
+
}
|
|
36
|
+
function getWranglerBrowserBinding(browserBindings) {
|
|
37
|
+
const bindingName = getSingleBrowserBindingName(browserBindings);
|
|
38
|
+
return bindingName ? { binding: bindingName } : undefined;
|
|
39
|
+
}
|
|
40
|
+
function compileWranglerMigrations(migrations) {
|
|
41
|
+
return migrations.map((migration) => ({
|
|
42
|
+
tag: migration.tag,
|
|
43
|
+
...migration.new_classes && { new_classes: migration.new_classes },
|
|
44
|
+
...migration.renamed_classes && {
|
|
45
|
+
renamed_classes: migration.renamed_classes.map((renamedClass) => ({
|
|
46
|
+
from: renamedClass.from,
|
|
47
|
+
to: renamedClass.to
|
|
48
|
+
}))
|
|
49
|
+
},
|
|
50
|
+
...migration.deleted_classes && { deleted_classes: migration.deleted_classes },
|
|
51
|
+
...migration.new_sqlite_classes && { new_sqlite_classes: migration.new_sqlite_classes }
|
|
52
|
+
}));
|
|
15
53
|
}
|
|
16
|
-
|
|
17
|
-
// src/config/compiler.ts
|
|
18
54
|
function compileConfig(config, environment) {
|
|
19
55
|
const mergedConfig = resolveConfigForEnvironment(config, environment);
|
|
20
56
|
const result = {
|
|
21
57
|
name: mergedConfig.name,
|
|
22
|
-
compatibility_date: mergedConfig.compatibilityDate
|
|
58
|
+
compatibility_date: mergedConfig.compatibilityDate,
|
|
59
|
+
preview_urls: true,
|
|
60
|
+
workers_dev: true
|
|
23
61
|
};
|
|
24
62
|
if (mergedConfig.accountId) {
|
|
25
63
|
result.account_id = mergedConfig.accountId;
|
|
@@ -61,18 +99,7 @@ function compileConfig(config, environment) {
|
|
|
61
99
|
result.limits = mergedConfig.limits;
|
|
62
100
|
}
|
|
63
101
|
if (mergedConfig.migrations && mergedConfig.migrations.length > 0) {
|
|
64
|
-
result.migrations = mergedConfig.migrations
|
|
65
|
-
tag: migration.tag,
|
|
66
|
-
...migration.new_classes && { new_classes: migration.new_classes },
|
|
67
|
-
...migration.renamed_classes && {
|
|
68
|
-
renamed_classes: migration.renamed_classes.map((rc) => ({
|
|
69
|
-
from: rc.from,
|
|
70
|
-
to: rc.to
|
|
71
|
-
}))
|
|
72
|
-
},
|
|
73
|
-
...migration.deleted_classes && { deleted_classes: migration.deleted_classes },
|
|
74
|
-
...migration.new_sqlite_classes && { new_sqlite_classes: migration.new_sqlite_classes }
|
|
75
|
-
}));
|
|
102
|
+
result.migrations = compileWranglerMigrations(mergedConfig.migrations);
|
|
76
103
|
}
|
|
77
104
|
if (mergedConfig.wrangler?.passthrough) {
|
|
78
105
|
Object.assign(result, mergedConfig.wrangler.passthrough);
|
|
@@ -85,15 +112,15 @@ function compileToProgrammaticConfig(config, environment) {
|
|
|
85
112
|
}
|
|
86
113
|
function compileBindings(bindings, result) {
|
|
87
114
|
if (bindings.kv) {
|
|
88
|
-
result.kv_namespaces = Object.entries(bindings.kv).map(([binding,
|
|
115
|
+
result.kv_namespaces = Object.entries(bindings.kv).map(([binding, namespace]) => ({
|
|
89
116
|
binding,
|
|
90
|
-
id
|
|
117
|
+
id: getWranglerKVNamespaceId(binding, namespace)
|
|
91
118
|
}));
|
|
92
119
|
}
|
|
93
120
|
if (bindings.d1) {
|
|
94
121
|
result.d1_databases = Object.entries(bindings.d1).map(([binding, database_id]) => ({
|
|
95
122
|
binding,
|
|
96
|
-
database_id
|
|
123
|
+
database_id: getWranglerD1DatabaseId(binding, database_id)
|
|
97
124
|
}));
|
|
98
125
|
}
|
|
99
126
|
if (bindings.r2) {
|
|
@@ -154,11 +181,12 @@ function compileBindings(bindings, result) {
|
|
|
154
181
|
if (bindings.hyperdrive) {
|
|
155
182
|
result.hyperdrive = Object.entries(bindings.hyperdrive).map(([binding, config]) => ({
|
|
156
183
|
binding,
|
|
157
|
-
id: config
|
|
184
|
+
id: getWranglerHyperdriveId(binding, config)
|
|
158
185
|
}));
|
|
159
186
|
}
|
|
160
|
-
|
|
161
|
-
|
|
187
|
+
const browserBinding = getWranglerBrowserBinding(bindings.browser);
|
|
188
|
+
if (browserBinding) {
|
|
189
|
+
result.browser = browserBinding;
|
|
162
190
|
}
|
|
163
191
|
if (bindings.analyticsEngine) {
|
|
164
192
|
result.analytics_engine_datasets = Object.entries(bindings.analyticsEngine).map(([binding, config]) => ({
|
|
@@ -188,15 +216,65 @@ function stringifyConfig(config) {
|
|
|
188
216
|
`;
|
|
189
217
|
return header + JSON.stringify(config, null, "\t");
|
|
190
218
|
}
|
|
219
|
+
function rebasePathForConfigDir(projectRoot, configDir, pathValue) {
|
|
220
|
+
const absolutePath = isAbsolute(pathValue) ? pathValue : resolve(projectRoot, pathValue);
|
|
221
|
+
return relative(configDir, absolutePath).replace(/\\/g, "/");
|
|
222
|
+
}
|
|
223
|
+
function pathIsInsideDirectory(directoryPath, candidatePath) {
|
|
224
|
+
const normalizedDirectoryPath = directoryPath.replace(/\\/g, "/");
|
|
225
|
+
const normalizedCandidatePath = candidatePath.replace(/\\/g, "/");
|
|
226
|
+
return normalizedCandidatePath === normalizedDirectoryPath || normalizedCandidatePath.startsWith(`${normalizedDirectoryPath}/`);
|
|
227
|
+
}
|
|
228
|
+
function isolateViteBuildOutputPaths(projectRoot, config) {
|
|
229
|
+
const assetsDirectory = config.assets?.directory;
|
|
230
|
+
if (!assetsDirectory) {
|
|
231
|
+
return config;
|
|
232
|
+
}
|
|
233
|
+
const isolatedAssetsDirectoryPath = resolve(projectRoot, ".devflare", "vite-build-output", basename(assetsDirectory));
|
|
234
|
+
const isolatedAssetsDirectory = relative(projectRoot, isolatedAssetsDirectoryPath).replace(/\\/g, "/");
|
|
235
|
+
const isolatedConfig = {
|
|
236
|
+
...config,
|
|
237
|
+
assets: config.assets ? {
|
|
238
|
+
...config.assets,
|
|
239
|
+
directory: isolatedAssetsDirectory
|
|
240
|
+
} : config.assets
|
|
241
|
+
};
|
|
242
|
+
if (!config.main) {
|
|
243
|
+
return isolatedConfig;
|
|
244
|
+
}
|
|
245
|
+
const originalAssetsDirectoryPath = resolve(projectRoot, assetsDirectory);
|
|
246
|
+
const originalMainEntryPath = resolve(projectRoot, config.main);
|
|
247
|
+
if (!pathIsInsideDirectory(originalAssetsDirectoryPath, originalMainEntryPath)) {
|
|
248
|
+
return isolatedConfig;
|
|
249
|
+
}
|
|
250
|
+
const relativeMainEntryPath = relative(originalAssetsDirectoryPath, originalMainEntryPath);
|
|
251
|
+
const isolatedMainEntryPath = resolve(isolatedAssetsDirectoryPath, relativeMainEntryPath);
|
|
252
|
+
return {
|
|
253
|
+
...isolatedConfig,
|
|
254
|
+
main: relative(projectRoot, isolatedMainEntryPath).replace(/\\/g, "/")
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
function rebaseWranglerConfigPaths(projectRoot, configDir, config) {
|
|
258
|
+
return {
|
|
259
|
+
...config,
|
|
260
|
+
...config.main ? { main: rebasePathForConfigDir(projectRoot, configDir, config.main) } : {},
|
|
261
|
+
...config.assets?.directory ? {
|
|
262
|
+
assets: {
|
|
263
|
+
...config.assets,
|
|
264
|
+
directory: rebasePathForConfigDir(projectRoot, configDir, config.assets.directory)
|
|
265
|
+
}
|
|
266
|
+
} : {}
|
|
267
|
+
};
|
|
268
|
+
}
|
|
191
269
|
async function writeWranglerConfig(cwd, config, filename = "wrangler.jsonc") {
|
|
192
|
-
const { resolve } = await import("pathe");
|
|
270
|
+
const { resolve: resolve2 } = await import("pathe");
|
|
193
271
|
const fs = await import("node:fs/promises");
|
|
194
272
|
try {
|
|
195
273
|
await fs.mkdir(cwd, { recursive: true });
|
|
196
274
|
} catch {}
|
|
197
275
|
const content = stringifyConfig(config);
|
|
198
|
-
const wranglerPath =
|
|
276
|
+
const wranglerPath = resolve2(cwd, filename);
|
|
199
277
|
await fs.writeFile(wranglerPath, content, "utf-8");
|
|
200
278
|
return wranglerPath;
|
|
201
279
|
}
|
|
202
|
-
export {
|
|
280
|
+
export { compileConfig, compileToProgrammaticConfig, stringifyConfig, isolateViteBuildOutputPaths, rebaseWranglerConfigPaths, writeWranglerConfig };
|