void 0.26.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS_TEMPLATE.md +1 -3
- package/README.md +19 -9
- package/dist/{account-cmd-CDry3B5V.mjs → account-cmd-l-FM7Ioq.mjs} +8 -7
- package/dist/{application-analysis-DC2yPvzY.mjs → application-analysis-DKy02UY0.mjs} +21 -32
- package/dist/{application-routing-C9khgLiS.mjs → application-routing-DQyUh_5S.mjs} +1 -1
- package/dist/{auth-D52yG7hl.mjs → auth-Dn2vw-SG.mjs} +9 -9
- package/dist/{auth-B60QDbjg.mjs → auth-LMJcNESe.mjs} +1 -1
- package/dist/{auth-link-DjeOptYi.mjs → auth-link-vz9Z2kmG.mjs} +5 -5
- package/dist/{auth-migrations-9vif1uj8.mjs → auth-migrations-BwHgeEsD.mjs} +8 -18
- package/dist/{auth-router-BRxIuqDi.mjs → auth-router-DvsCUVw4.mjs} +6 -19
- package/dist/{better-auth-shared-BVkjZ3vM.d.mts → better-auth-shared-CPvWD3nG.d.mts} +0 -4
- package/dist/{better-auth-shared-hy6RPh9W.mjs → better-auth-shared-DPpj8zxc.mjs} +94 -16
- package/dist/{build-cmd-Ce3C8huo.mjs → build-cmd-D6we0VjO.mjs} +8 -7
- package/dist/{cache-CS8Yxr5a.mjs → cache-CZRdzKx1.mjs} +8 -8
- package/dist/{cancel-deploy-mZsD88Xa.mjs → cancel-deploy-CQ3NnMvf.mjs} +6 -5
- package/dist/{cf-access-YTlqvAsk.mjs → cf-access-BcIBSKqG.mjs} +11 -12
- package/dist/{cf-build-output-U8o1Gl6X.mjs → cf-build-output-DjvB_872.mjs} +62 -85
- package/dist/cf-build-output-H9a97vME.mjs +2 -0
- package/dist/cf-user-agent-lKblH3zU.mjs +17 -0
- package/dist/cli/cli.mjs +48 -83
- package/dist/cli/cloudflare-operation-process.mjs +78 -78
- package/dist/cli/env-schema-probe.mjs +5 -6
- package/dist/{client-mC-dFGDD.mjs → client-DlDJuY0s.mjs} +30 -8
- package/dist/client-tso2OfcG.mjs +2 -0
- package/dist/{cloudflare-auth-Qdc7tw8F.mjs → cloudflare-auth-CuxfF6OA.mjs} +9 -17
- package/dist/{cloudflare-cmd-bhwCxAN6.mjs → cloudflare-cmd-lHqNlJGW.mjs} +6 -5
- package/dist/{cloudflare-config-Bktvwtpf.mjs → cloudflare-config-BmhBv3HV.mjs} +1 -1
- package/dist/{cloudflare-connect-CuhRgk3k.mjs → cloudflare-connect-2G3rL2rP.mjs} +4 -4
- package/dist/{cloudflare-operations-DoQrVHAt.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
- package/dist/{cloudflare-operations-DYa3coIk.mjs → cloudflare-operations-CwI1bChl.mjs} +41 -70
- package/dist/{cloudflare-process-B-wekeR6.mjs → cloudflare-process-2-TfIEzB.mjs} +20 -22
- package/dist/{config-CyQ-wVd7.mjs → config-5r-YpMC-.mjs} +1 -1
- package/dist/{config-C_XRIPx2.mjs → config-B_ggY-IO.mjs} +3 -3
- package/dist/config-BtSFvXZx.mjs +2 -0
- package/dist/config-CLYAosnQ.mjs +78 -0
- package/dist/{config-BMHb8RCj.d.mts → config-CSa15FvD.d.mts} +1 -1
- package/dist/{config-Br_JZD6u.mjs → config-DiowPT80.mjs} +24 -30
- package/dist/config-entry.d.mts +1 -1
- package/dist/{config-write-B1f88wJA.mjs → config-write-AHGesphx.mjs} +8 -7
- package/dist/{connect-H6EvP62X.mjs → connect-BfPBHHm-.mjs} +12 -11
- package/dist/{create-project-B2kk9Q0o.mjs → create-project-BdXEFKal.mjs} +7 -7
- package/dist/{create-project-Dbb4uiN-.mjs → create-project-qFDC45zg.mjs} +1 -1
- package/dist/{db-DpCKZto0.mjs → db-Xs80hcaA.mjs} +101 -133
- package/dist/{delete-CxlSvsvW.mjs → delete-d2vuou3j.mjs} +7 -7
- package/dist/{deploy-CeEbnv4b.mjs → deploy-Bqe1PYBw.mjs} +2351 -2497
- package/dist/deploy-VsWsVQkw.mjs +2 -0
- package/dist/{dev-inbox-D64ZKUod.mjs → dev-inbox-CK-UuPob.mjs} +7 -16
- package/dist/{discover-BcPPiF1o.mjs → discover-CkCYv9T_.mjs} +1 -2
- package/dist/discover-EDUf6JJw.mjs +2 -0
- package/dist/{prompts-ZAuJlyCj.mjs → dist-Bx1z6Eva.mjs} +1 -1
- package/dist/{dist-AoCzRTJE.mjs → dist-Cegxq8gs.mjs} +8 -8
- package/dist/{prompts-6OSVA7DJ.mjs → dist-D3m88sjf.mjs} +10 -53
- package/dist/{domain-B_9VgOm6.mjs → domain-BsDUBAvt.mjs} +29 -30
- package/dist/{dotenv-VQxupEUv.mjs → dotenv-BfU6eqFt.mjs} +20 -32
- package/dist/{drizzle-Beb2Am5S.mjs → drizzle-CF84FOVM.mjs} +16 -13
- package/dist/{email-BokHgjKj.mjs → email-_lGAHOhp.mjs} +24 -19
- package/dist/{email--tEtMoj_.mjs → email-d_Aux1vM.mjs} +1 -1
- package/dist/{entry-CF5wvH4w.mjs → entry-CMAkqBmU.mjs} +6 -6
- package/dist/{env-_v349JBd.mjs → env-BxocywBB.mjs} +25 -6
- package/dist/{env-BdTc-K2L.mjs → env-C74QepDE.mjs} +10 -10
- package/dist/{env-D5liuQYR.mjs → env-DMA3cXZt.mjs} +1 -1
- package/dist/{env-raw-Cx8ElDdj.mjs → env-raw-jZpP5n47.mjs} +1 -2
- package/dist/{env-types-D5kds_OZ.mjs → env-types-CwXgeMgL.mjs} +1 -1
- package/dist/{env-validation-cZBvGWaP.mjs → env-validation-CrVNjsPm.mjs} +1 -1
- package/dist/{env-validation-vBSQ8gw5.mjs → env-validation-Dxdx_5wo.mjs} +17 -21
- package/dist/{fetch-_SeGZao9.d.mts → fetch-BPCYVi3H.d.mts} +20 -1
- package/dist/{fetch-BIZJh7vR.mjs → fetch-sAcwjzLO.mjs} +1 -1
- package/dist/{fetch-stream-Nm3hkZbT.mjs → fetch-stream-PGgz4uGz.mjs} +18 -23
- package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
- package/dist/{gen-BhDlTpwW.mjs → gen-DtkQhvQg.mjs} +40 -57
- package/dist/gen-dA9hW7AV.mjs +2 -0
- package/dist/{github-cmd-hhkTzlGS.mjs → github-cmd-DaDdBbSS.mjs} +65 -164
- package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
- package/dist/{handler-BeK3weD4.d.mts → handler-CNAwjRcW.d.mts} +4 -11
- package/dist/{head-Do8P4puT.d.mts → head-C8K_iGe6.d.mts} +1 -1
- package/dist/{head-D_QRR5Yd.mjs → head-D2VF4ApL.mjs} +29 -51
- package/dist/{headers-2rKda9Y6.mjs → headers-DlfR78Nu.mjs} +3 -3
- package/dist/{help-Bv44e2tm.mjs → help-0bTe_lID.mjs} +13 -32
- package/dist/help-DfQYVfGY.mjs +2 -0
- package/dist/{inbound-fRkqcXaC.mjs → inbound-PfQDLXc5.mjs} +23 -24
- package/dist/index.d.mts +19 -2
- package/dist/index.mjs +619 -532
- package/dist/{info-DhtTKh65.mjs → info-PYWwkWyt.mjs} +4 -4
- package/dist/{init-BMf4T03q.mjs → init-DaBGmaXC.mjs} +161 -198
- package/dist/{link-BqYsSS_I.mjs → link-C6fjafep.mjs} +10 -10
- package/dist/{list-_kBToO-l.mjs → list-BTFBlqKl.mjs} +9 -8
- package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
- package/dist/{live-iAuEH1hd.d.mts → live-Du8jXwOW.d.mts} +4 -2
- package/dist/{local-d1-fGxYrVD6.mjs → local-d1-ga5O_idV.mjs} +2 -2
- package/dist/{login-DFuo-RWO.mjs → login-GKcNUmtI.mjs} +7 -7
- package/dist/login-mx_ydhmp.mjs +2 -0
- package/dist/{logs-DYgnh6dH.mjs → logs-BiMSULmc.mjs} +28 -11
- package/dist/migrate-BHp07yJE.mjs +2 -0
- package/dist/{migrate-CV1on-yJ.mjs → migrate-NLsjBbuM.mjs} +34 -20
- package/dist/{mime-D5Nmdzf7.mjs → mime-DxCznlJq.mjs} +45 -95
- package/dist/{node-C6Q6e1Es.mjs → node-DJicPvPj.mjs} +5 -5
- package/dist/{operator-args-DdY54Bgb.mjs → operator-args-DOBhIaIg.mjs} +10 -1
- package/dist/{operator-auth-2dsGlTT5.mjs → operator-auth-BEZ_u0Cz.mjs} +2 -2
- package/dist/{operator-client-BFqpp6z0.mjs → operator-client-DbDv4vtE.mjs} +2 -2
- package/dist/{operator-cmd-CUGHXrQf.mjs → operator-cmd-BT4hgavL.mjs} +24 -11
- package/dist/operator-cmd-CwBB-1yb.mjs +2 -0
- package/dist/{output-BvdaehtE.mjs → output-C50ag2r3.mjs} +20 -2
- package/dist/pages/client.d.mts +19 -51
- package/dist/pages/client.mjs +204 -225
- package/dist/pages/head-client.d.mts +1 -1
- package/dist/pages/head.d.mts +1 -1
- package/dist/pages/head.mjs +1 -1
- package/dist/pages/index.d.mts +2 -2
- package/dist/pages/index.mjs +6 -12
- package/dist/pages/islands-plugin.d.mts +1 -1
- package/dist/pages/islands-plugin.mjs +21 -25
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -2
- package/dist/{plan-CJGEeTEI.mjs → plan-BhLO2p4w.mjs} +2 -1
- package/dist/plan-CH2G51je.mjs +2 -0
- package/dist/platform-args-D4E1PjVw.mjs +2 -0
- package/dist/{platform-args-DSV2p4nY.mjs → platform-args-DUeXY9Om.mjs} +1 -1
- package/dist/{platform-auth-config-Bosx7U1h.mjs → platform-auth-config-CkSx3usH.mjs} +40 -36
- package/dist/{platform-auth-protection-DcbL_LW_.mjs → platform-auth-protection-BJimB_p9.mjs} +9 -8
- package/dist/{platform-auth-recovery-WfTZ8K6o.mjs → platform-auth-recovery-BU6izFAU.mjs} +8 -7
- package/dist/{platform-cmd-DbKtQb_4.mjs → platform-cmd-BbY1dWiM.mjs} +14 -13
- package/dist/{platform-cmd-dyFUof0t.mjs → platform-cmd-BbmJiq5O.mjs} +1 -1
- package/dist/{platform-discovery-BC0HCKYt.mjs → platform-discovery-DIYz8V63.mjs} +1 -1
- package/dist/{platform-domain-Bsq43AJp.mjs → platform-domain-CHVS6cV0.mjs} +6 -6
- package/dist/{platform-lifecycle--5gWmDoI.mjs → platform-lifecycle-ByAlpkhV.mjs} +1 -1
- package/dist/{platform-lifecycle-Cfi0o6xM.mjs → platform-lifecycle-DzCwqhFq.mjs} +76 -387
- package/dist/{platform-management-Bbwf6-Dq.mjs → platform-management-CBOT4BSM.mjs} +1 -1
- package/dist/{platform-management-BrF9STZp.mjs → platform-management-CuuVDhyt.mjs} +7 -7
- package/dist/{platform-plans-config-DU-8nC2Y.mjs → platform-plans-config-CN-heS4q.mjs} +5 -4
- package/dist/{platform-recovery-DQAqAQYu.mjs → platform-recovery-CskSJgLh.mjs} +3 -3
- package/dist/{platform-registry-P387v42A.mjs → platform-registry-Cjv2Qf0r.mjs} +5 -1
- package/dist/platform-setup-BBxRxmFC.mjs +299 -0
- package/dist/{plugin-inference-CXWnn79A.mjs → plugin-inference-BlQbOL0P.mjs} +43 -42
- package/dist/prepare-DRUV-g3X.mjs +2 -0
- package/dist/{prepare-WoUubFKL.mjs → prepare-Do96654b.mjs} +8 -8
- package/dist/{prepare-BMrRWLwP.mjs → prepare-Dq9hTIbo.mjs} +4 -4
- package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
- package/dist/prerender-render.mjs +1 -1
- package/dist/{project-DQstYTxO.mjs → project-BAm2aB6Q.mjs} +1 -1
- package/dist/{project-BiaPQ7ur.mjs → project-DedqCp59.mjs} +1 -1
- package/dist/{project-cmd-BbH2LptN.mjs → project-cmd-DaoRrn-8.mjs} +19 -19
- package/dist/{project-team-Yiww3-go.mjs → project-team-Q_lCA7Io.mjs} +15 -18
- package/dist/{project-token-BrtT2NkY.mjs → project-token-BArgK9o1.mjs} +14 -17
- package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
- package/dist/{project-zero-trust-nYJ2V2nc.mjs → project-zero-trust-KO9Hu2Pq.mjs} +12 -9
- package/dist/{protocol-BX8t2jiw.d.mts → protocol-BPZaNqBo.d.mts} +4 -2
- package/dist/{protocol-U7bfjHmA.mjs → protocol-CfaUwNs8.mjs} +46 -49
- package/dist/{providers-CJlNS3kT.mjs → providers-BXuhmuub.mjs} +1 -12
- package/dist/{provision-VeqAC77A.mjs → provision-BfaLiWbj.mjs} +38 -41
- package/dist/{provision-DMTPG8Rh.mjs → provision-Wu9ZBk9L.mjs} +2 -3
- package/dist/{requests-TIz_jtSu.mjs → requests-C7Oeoh5u.mjs} +5 -5
- package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
- package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
- package/dist/{rollback-dBqICPzj.mjs → rollback-DVAtrLAl.mjs} +30 -37
- package/dist/{route-types-Clm4WD0B.mjs → route-types-CbtsIeFn.mjs} +1 -1
- package/dist/route-url-BgPja1GS.d.mts +5 -0
- package/dist/route-url-BjGv_KKY.mjs +28 -0
- package/dist/runner-9wjsSZx-.mjs +2 -0
- package/dist/{runner--2KF6Kua.mjs → runner-DMBKSrRk.mjs} +2 -2
- package/dist/{runner-mysql-DmWchSWJ.mjs → runner-mysql-CEzKtmFb.mjs} +8 -8
- package/dist/{runner-mysql-CEG5JozK.mjs → runner-mysql-CkFqZ6CE.mjs} +1 -1
- package/dist/{runner-pg-Bh4AgZdj.mjs → runner-pg-BGYRFdRp.mjs} +1 -1
- package/dist/runtime/ai.d.mts +1 -1
- package/dist/runtime/ai.mjs +34 -95
- package/dist/runtime/better-auth-mysql.d.mts +1 -1
- package/dist/runtime/better-auth-mysql.mjs +4 -9
- package/dist/runtime/better-auth-pg.d.mts +1 -1
- package/dist/runtime/better-auth-pg.mjs +5 -10
- package/dist/runtime/better-auth.d.mts +1 -1
- package/dist/runtime/better-auth.mjs +3 -3
- package/dist/runtime/client-react.d.mts +2 -3
- package/dist/runtime/client-react.mjs +2 -2
- package/dist/runtime/client-solid.d.mts +2 -3
- package/dist/runtime/client-solid.mjs +2 -2
- package/dist/runtime/client-svelte.d.mts +2 -3
- package/dist/runtime/client-svelte.mjs +2 -2
- package/dist/runtime/client-vue.d.mts +2 -3
- package/dist/runtime/client-vue.mjs +2 -2
- package/dist/runtime/client.d.mts +2 -3
- package/dist/runtime/client.mjs +2 -2
- package/dist/runtime/db.mjs +1 -1
- package/dist/runtime/durable.mjs +3 -10
- package/dist/runtime/email/testing.mjs +5 -5
- package/dist/runtime/email.d.mts +2 -1
- package/dist/runtime/email.mjs +11 -27
- package/dist/runtime/env-public.mjs +15 -20
- package/dist/runtime/env.mjs +1 -1
- package/dist/runtime/fetch-stream.d.mts +2 -2
- package/dist/runtime/fetch-stream.mjs +1 -1
- package/dist/runtime/fetch.d.mts +2 -3
- package/dist/runtime/fetch.mjs +1 -1
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/handler.mjs +2 -2
- package/dist/runtime/isr.mjs +1 -1
- package/dist/runtime/kv.mjs +10 -11
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live-client.mjs +12 -22
- package/dist/runtime/live-server.mjs +27 -35
- package/dist/runtime/live.d.mts +2 -2
- package/dist/runtime/live.mjs +2 -2
- package/dist/runtime/migration-handler.mjs +4 -81
- package/dist/runtime/queues.mjs +1 -1
- package/dist/runtime/remote/binding-handler.d.mts +2 -2
- package/dist/runtime/remote/binding-handler.mjs +8 -9
- package/dist/runtime/remote/index.mjs +27 -77
- package/dist/runtime/route-url.d.mts +2 -4
- package/dist/runtime/route-url.mjs +1 -1
- package/dist/runtime/routing.d.mts +1 -1
- package/dist/runtime/routing.mjs +15 -26
- package/dist/runtime/sandbox.mjs +2 -2
- package/dist/runtime/sse.mjs +1 -1
- package/dist/runtime/storage.mjs +1 -1
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +2 -2
- package/dist/runtime/ws-server.mjs +30 -61
- package/dist/runtime/ws.d.mts +1 -1
- package/dist/runtime/ws.mjs +1 -1
- package/dist/{scan-C8dA7iM4.mjs → scan-C3uDzz6J.mjs} +12 -13
- package/dist/{secret-AKnNXNP5.mjs → secret-BvtB7IjY.mjs} +15 -15
- package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
- package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
- package/dist/{subcommand-prompt-B6WS9Aoz.mjs → subcommand-prompt-BSlnD1fI.mjs} +2 -2
- package/dist/sveltekit.d.mts +0 -2
- package/dist/terminal-log-text-D9ACPOuG.mjs +32 -0
- package/dist/validate-BJr9LfXy.mjs +2 -0
- package/dist/{validate-ymhap6M_.mjs → validate-C9qJArv7.mjs} +9 -28
- package/dist/{defer-YsYDUoii.mjs → validation-error-Dg9Recn1.mjs} +11 -11
- package/dist/{wrangler-DhUerFkW.mjs → wrangler-D9KTuqnv.mjs} +89 -194
- package/dist/{ws-C79j4aED.d.mts → ws-CChrrAU-.d.mts} +1 -1
- package/dist/{yarn-pnp-BV4AzNul.mjs → yarn-pnp-CUX_iTPA.mjs} +19 -27
- package/{skills/void/docs → docs}/guide/ai.md +5 -3
- package/{skills/void/docs → docs}/guide/auth.md +37 -1
- package/{skills/void/docs → docs}/guide/database/postgresql.md +2 -2
- package/{skills/void/docs → docs}/guide/deployment.md +2 -2
- package/{skills/void/docs → docs}/guide/edge/revalidation.md +1 -1
- package/{skills/void/docs → docs}/guide/edge/rewrites.md +2 -4
- package/{skills/void/docs → docs}/guide/email/receiving.md +2 -2
- package/{skills/void/docs → docs}/guide/email/sending.md +0 -2
- package/{skills/void/docs → docs}/guide/env-vars.md +4 -0
- package/{skills/void/docs → docs}/guide/jobs.md +2 -2
- package/{skills/void/docs → docs}/guide/live.md +10 -5
- package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +20 -8
- package/{skills/void/docs → docs}/guide/pages-routing/loaders.md +7 -3
- package/{skills/void/docs → docs}/guide/pages-routing/markdown.md +15 -23
- package/{skills/void/docs → docs}/guide/pages-routing/overview.md +6 -4
- package/{skills/void/docs → docs}/guide/platform/administration/access.md +3 -11
- package/{skills/void/docs → docs}/guide/platform/administration/operations.md +3 -12
- package/{skills/void/docs → docs}/guide/platform/administration/projects.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/development/local.md +4 -2
- package/{skills/void/docs → docs}/guide/platform/development/runtime.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/development/schema-ci.md +1 -1
- package/{skills/void/docs → docs}/guide/platform/installation/domains.md +3 -1
- package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +4 -2
- package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +4 -0
- package/{skills/void/docs → docs}/guide/project-collaboration.md +7 -3
- package/{skills/void/docs → docs}/guide/queues.md +0 -2
- package/{skills/void/docs → docs}/guide/remote-dev.md +5 -5
- package/{skills/void/docs → docs}/guide/sandboxes.md +2 -2
- package/{skills/void/docs → docs}/guide/sse.md +0 -2
- package/{skills/void/docs → docs}/guide/storage.md +7 -2
- package/{skills/void/docs → docs}/guide/websockets.md +4 -0
- package/docs/integrations/agents.md +37 -0
- package/{skills/void/docs → docs}/integrations/frameworks/astro.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/nuxt.md +6 -2
- package/{skills/void/docs → docs}/integrations/hono.md +15 -7
- package/{skills/void/docs → docs}/integrations/nodejs-bun-deno.md +1 -0
- package/{skills/void/docs → docs}/reference/api/auth.md +1 -1
- package/{skills/void/docs → docs}/reference/api/handlers.md +4 -2
- package/{skills/void/docs → docs}/reference/api/pages.md +4 -0
- package/{skills/void/docs → docs}/reference/cli/auth.md +1 -6
- package/{skills/void/docs → docs}/reference/cli/database.md +3 -4
- package/{skills/void/docs → docs}/reference/cli/deploy.md +1 -1
- package/{skills/void/docs → docs}/reference/cli/generate.md +1 -1
- package/{skills/void/docs → docs}/reference/cli/github.md +3 -12
- package/{skills/void/docs → docs}/reference/cli/platform-config.md +1 -1
- package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
- package/{skills/void/docs → docs}/reference/cli/platform-installation.md +1 -1
- package/{skills/void/docs → docs}/reference/cli/platform-operations.md +3 -0
- package/{skills/void/docs → docs}/reference/cli/platform-users.md +2 -2
- package/{skills/void/docs → docs}/reference/cli/project.md +5 -4
- package/{skills/void/docs → docs}/reference/cli/secrets.md +3 -3
- package/{skills/void/docs → docs}/reference/cli/setup.md +9 -11
- package/{skills/void/docs → docs}/reference/cli.md +1 -1
- package/{skills/void/docs → docs}/reference/config.md +13 -13
- package/{skills/void/docs → docs}/reference/resource-inference.md +1 -16
- package/package.json +34 -30
- package/schema.json +1 -1
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +4 -1
- package/skills/void/SKILL.md +9 -5
- package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
- package/dist/client-BxVixJBI.mjs +0 -2
- package/dist/config-0acf1oys.mjs +0 -2
- package/dist/config-D8MOgiQV.mjs +0 -32
- package/dist/deploy-qmiLE1G1.mjs +0 -2
- package/dist/discover-AMCBXivQ.mjs +0 -2
- package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
- package/dist/gen-qCBwH3fZ.mjs +0 -2
- package/dist/help-Dw5f9Xrg.mjs +0 -2
- package/dist/login-D7meQg_3.mjs +0 -2
- package/dist/migrate-CEu2X5DB.mjs +0 -2
- package/dist/operator-cmd-DRPvhpjM.mjs +0 -2
- package/dist/plan-COtUvdMA.mjs +0 -2
- package/dist/platform-args-Dcy_5b_Y.mjs +0 -2
- package/dist/prepare-BBknoZI1.mjs +0 -2
- package/dist/resolve-project-DtbidV4y.mjs +0 -2
- package/dist/route-url-CG7U-cRN.mjs +0 -15
- package/dist/runner-voIltZrY.mjs +0 -2
- package/dist/validate-pna7R3Pv.mjs +0 -2
- package/skills/void/docs/integrations/agents.md +0 -26
- package/dist/{runner-pg-D4OPlil-.mjs → runner-pg-DV8p_zjA.mjs} +4 -4
- package/{skills/void/docs → docs}/guide/app-types.md +0 -0
- package/{skills/void/docs → docs}/guide/database/d1.md +2 -2
- package/{skills/void/docs → docs}/guide/database/mysql.md +0 -0
- package/{skills/void/docs → docs}/guide/database.md +8 -8
- package/{skills/void/docs → docs}/guide/durable-state.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/headers.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/prerendering.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/redirects.md +0 -0
- package/{skills/void/docs → docs}/guide/edge/static-assets.md +0 -0
- package/{skills/void/docs → docs}/guide/email/domains.md +0 -0
- package/{skills/void/docs → docs}/guide/email.md +0 -0
- package/{skills/void/docs → docs}/guide/index.md +0 -0
- package/{skills/void/docs → docs}/guide/kv.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/head.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/islands.md +2 -2
- package/{skills/void/docs → docs}/guide/pages-routing/layouts.md +0 -0
- package/{skills/void/docs → docs}/guide/pages-routing/view-transitions.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/email.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/plans.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/administration/zero-trust.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/ci.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/credentials.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/setup.md +0 -0
- package/{skills/void/docs → docs}/guide/platform/installation/uninstall.md +0 -0
- package/{skills/void/docs → docs}/guide/platform-administration.md +0 -0
- package/{skills/void/docs → docs}/guide/platform-development.md +0 -0
- package/{skills/void/docs → docs}/guide/quickstart.md +0 -0
- package/{skills/void/docs → docs}/guide/self-hosted-platform.md +0 -0
- package/{skills/void/docs → docs}/guide/server-routing.md +3 -3
- package/{skills/void/docs → docs}/guide/ssg.md +0 -0
- package/{skills/void/docs → docs}/guide/ssr.md +0 -0
- package/{skills/void/docs → docs}/guide/type-safety.md +0 -0
- package/{skills/void/docs → docs}/guide/typed-fetch.md +0 -0
- package/{skills/void/docs → docs}/index.md +0 -0
- package/{skills/void/docs → docs}/integrations/cloudflare.md +0 -0
- package/{skills/void/docs → docs}/integrations/frameworks/analog.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/overview.md +0 -0
- package/{skills/void/docs → docs}/integrations/frameworks/react-router.md +3 -3
- package/{skills/void/docs → docs}/integrations/frameworks/sveltekit.md +1 -1
- package/{skills/void/docs → docs}/integrations/frameworks/tanstack-start.md +2 -2
- package/{skills/void/docs → docs}/reference/api/client.md +0 -0
- package/{skills/void/docs → docs}/reference/api/database.md +2 -2
- /package/{skills/void/docs → docs}/reference/api/durable.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/env.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/plugin.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/resources.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/rewrites.md +0 -0
- /package/{skills/void/docs → docs}/reference/api/types.md +0 -0
- /package/{skills/void/docs → docs}/reference/api.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/domains.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/email.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/platform-zero-trust.md +0 -0
- /package/{skills/void/docs → docs}/reference/cli/platform.md +0 -0
- /package/{skills/void/docs → docs}/reference/structure.md +0 -0
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { a as join, n as dirname, o as normalize, t as basename, u as resolve$2 } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { i as voidWarn, r as voidLog } from "./log-vqY3pqwI.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { r as
|
|
6
|
-
import { c as resolveCloudflareOperationArgv, n as decodeCloudflareOperationResult, r as encodeCloudflareOperation } from "./cloudflare-process-B-wekeR6.mjs";
|
|
3
|
+
import { _ as persistMaterializedWranglerConfig, j as writeProvisionedWranglerConfig, s as assertNoDuplicateMembers, y as readProvisionedBindingEntry } from "./wrangler-D9KTuqnv.mjs";
|
|
4
|
+
import { n as scanWranglerDotenvKeys } from "./dotenv-BfU6eqFt.mjs";
|
|
5
|
+
import { l as resolveCloudflareOperationArgv, n as decodeCloudflareOperationResult, r as encodeCloudflareOperation } from "./cloudflare-process-2-TfIEzB.mjs";
|
|
7
6
|
import { createRequire } from "node:module";
|
|
8
7
|
import { closeSync, existsSync, fsyncSync, lstatSync, openSync, readFileSync, readlinkSync, realpathSync, renameSync, unlinkSync, writeSync } from "node:fs";
|
|
9
8
|
import { isRecord } from "@void/deploy-core";
|
|
@@ -282,21 +281,6 @@ function assertNoTransportRedirectInProjectDotenv(root, platform = process.platf
|
|
|
282
281
|
}
|
|
283
282
|
}
|
|
284
283
|
/**
|
|
285
|
-
* Child-process env with every CF Access credential scrubbed. Mirrors `buildEnv`
|
|
286
|
-
* in `deploy.ts`: Access credentials are needed only by this CLI's own guarded
|
|
287
|
-
* HTTP requests and must never leak into the spawned wrangler process (which may
|
|
288
|
-
* in turn run user hooks). This includes the short-lived cloudflared
|
|
289
|
-
* `CF_ACCESS_TOKEN` JWT used by local readiness probes.
|
|
290
|
-
*
|
|
291
|
-
* Pins ONE transport context: scrubs every {@link TRANSPORT_REDIRECT_ENV_VARS}
|
|
292
|
-
* from the child env, then re-sets `CLOUDFLARE_API_BASE_URL` to the SINGLE resolved
|
|
293
|
-
* `apiBaseUrl` so the spawned wrangler and the Hyperdrive REST lister hit the exact same
|
|
294
|
-
* endpoint. Scrubbing the compliance/staging/env selectors makes the explicit base
|
|
295
|
-
* authoritative (they can no longer re-derive a different base). Combined with
|
|
296
|
-
* {@link assertNoTransportRedirectInProjectDotenv} (which blocks a project dotenv from
|
|
297
|
-
* repopulating any of them via wrangler's per-command reload), the pin cannot be moved.
|
|
298
|
-
*/
|
|
299
|
-
/**
|
|
300
284
|
* Delete `name` from `env` IN PLACE, honoring the platform's env-key case rule.
|
|
301
285
|
* Windows environment keys are CASE-INSENSITIVE: a spawned child's `process.env`
|
|
302
286
|
* resolves `WRANGLER_OUTPUT_FILE_PATH` from an ambient `Wrangler_Output_File_Path`
|
|
@@ -314,6 +298,21 @@ function deleteEnvVarCaseAware(env, name, platform = process.platform) {
|
|
|
314
298
|
const lower = name.toLowerCase();
|
|
315
299
|
for (const key of Object.keys(env)) if (key.toLowerCase() === lower) delete env[key];
|
|
316
300
|
}
|
|
301
|
+
/**
|
|
302
|
+
* Child-process env with every CF Access credential scrubbed. Mirrors `buildEnv`
|
|
303
|
+
* in `deploy.ts`: Access credentials are needed only by this CLI's own guarded
|
|
304
|
+
* HTTP requests and must never leak into the spawned wrangler process (which may
|
|
305
|
+
* in turn run user hooks). This includes the short-lived cloudflared
|
|
306
|
+
* `CF_ACCESS_TOKEN` JWT used by local readiness probes.
|
|
307
|
+
*
|
|
308
|
+
* Pins ONE transport context: scrubs every {@link TRANSPORT_REDIRECT_ENV_VARS}
|
|
309
|
+
* from the child env, then re-sets `CLOUDFLARE_API_BASE_URL` to the SINGLE resolved
|
|
310
|
+
* `apiBaseUrl` so the spawned wrangler and the Hyperdrive REST lister hit the exact same
|
|
311
|
+
* endpoint. Scrubbing the compliance/staging/env selectors makes the explicit base
|
|
312
|
+
* authoritative (they can no longer re-derive a different base). Combined with
|
|
313
|
+
* {@link assertNoTransportRedirectInProjectDotenv} (which blocks a project dotenv from
|
|
314
|
+
* repopulating any of them via wrangler's per-command reload), the pin cannot be moved.
|
|
315
|
+
*/
|
|
317
316
|
function provisionEnv(ctx) {
|
|
318
317
|
const env = { ...process.env };
|
|
319
318
|
const platform = ctx?.platform ?? process.platform;
|
|
@@ -585,7 +584,7 @@ function armRetentionWatchdog(lock, info) {
|
|
|
585
584
|
try {
|
|
586
585
|
process.kill(process.platform === "win32" ? info.pid : -info.pid, 0);
|
|
587
586
|
} catch (error) {
|
|
588
|
-
dead = error
|
|
587
|
+
dead = isAlreadyGoneKillError(error);
|
|
589
588
|
}
|
|
590
589
|
if (dead) {
|
|
591
590
|
lock.release().then(() => resolveWatchdog(), (error) => {
|
|
@@ -712,14 +711,14 @@ function createDefaultRunWrangler(root, options) {
|
|
|
712
711
|
try {
|
|
713
712
|
process.kill(child.pid, 0);
|
|
714
713
|
} catch (error) {
|
|
715
|
-
|
|
714
|
+
groupGone = isAlreadyGoneKillError(error);
|
|
716
715
|
}
|
|
717
716
|
return groupGone;
|
|
718
717
|
}
|
|
719
718
|
try {
|
|
720
719
|
process.kill(-child.pid, 0);
|
|
721
720
|
} catch (error) {
|
|
722
|
-
|
|
721
|
+
groupGone = isAlreadyGoneKillError(error);
|
|
723
722
|
}
|
|
724
723
|
return groupGone;
|
|
725
724
|
};
|
|
@@ -1146,7 +1145,7 @@ function assertQuarantineClearedOrClear(lockTarget, onBeforeClear) {
|
|
|
1146
1145
|
if (probeTarget !== void 0) try {
|
|
1147
1146
|
process.kill(probeTarget, 0);
|
|
1148
1147
|
} catch (error) {
|
|
1149
|
-
|
|
1148
|
+
confirmedDead = isAlreadyGoneKillError(error);
|
|
1150
1149
|
}
|
|
1151
1150
|
if (!confirmedDead) {
|
|
1152
1151
|
const who = pid !== void 0 || pgid !== void 0 ? `process group ${String(pgid ?? pid)}` : "an unrecorded process";
|
|
@@ -1448,7 +1447,7 @@ function parseJsonObject(value) {
|
|
|
1448
1447
|
* config, delegating to the STRICT canonical reader in `wrangler.ts`
|
|
1449
1448
|
* ({@link readProvisionedBindingEntry}). Unlike the old loose first-match `.find()`, this
|
|
1450
1449
|
* validates the target field's outer shape, fails closed on a DUPLICATE binding, and runs
|
|
1451
|
-
* the worker-wide CROSS-TYPE collision check
|
|
1450
|
+
* the worker-wide CROSS-TYPE collision check — so a
|
|
1452
1451
|
* duplicate/collision config can never be reported `reused` or pass a create postcondition.
|
|
1453
1452
|
*/
|
|
1454
1453
|
function readBindingEntry(configPath, field, binding) {
|
|
@@ -1456,8 +1455,8 @@ function readBindingEntry(configPath, field, binding) {
|
|
|
1456
1455
|
}
|
|
1457
1456
|
/**
|
|
1458
1457
|
* Read + parse the root wrangler config (fresh each call — wrangler mutates it).
|
|
1459
|
-
* BOM-aware (wrangler +
|
|
1460
|
-
* we must too, else a BOM-prefixed config would look unparseable). FAILS CLOSED
|
|
1458
|
+
* BOM-aware (wrangler + `writeProvisionedWranglerConfig` strip a leading BOM before
|
|
1459
|
+
* parsing, so we must too, else a BOM-prefixed config would look unparseable). FAILS CLOSED
|
|
1461
1460
|
* on a genuine parse error or a non-object root: never silently treat a real
|
|
1462
1461
|
* config as `{}`, which would miss existing ids (re-provision/orphan) and mask a
|
|
1463
1462
|
* corrupt file. A missing file is fine (nothing to read-first → `{}`).
|
|
@@ -1486,7 +1485,7 @@ function assertDiscoverySucceeded(result, label) {
|
|
|
1486
1485
|
/**
|
|
1487
1486
|
* STRICT list validator shared by KV + D1. Rejects the ENTIRE list (throws) if ANY
|
|
1488
1487
|
* member is not a well-formed object carrying a non-empty name AND a
|
|
1489
|
-
* FORMAT-VALID id (per {@link ResourceListSpec.
|
|
1488
|
+
* FORMAT-VALID id (per {@link ResourceListSpec.hasValidId}). A member is NEVER
|
|
1490
1489
|
* silently filtered, and a member with a malformed id is NEVER accepted, because
|
|
1491
1490
|
* either could BE the requested target (or signal a corrupt list) and treating it as
|
|
1492
1491
|
* "absent" would mint a duplicate. Validates EVERY member up front — BEFORE any
|
|
@@ -1577,20 +1576,20 @@ function isAlreadyExistsError(result) {
|
|
|
1577
1576
|
return result.errorCode === 7502;
|
|
1578
1577
|
}
|
|
1579
1578
|
/**
|
|
1580
|
-
*
|
|
1581
|
-
*
|
|
1582
|
-
*
|
|
1583
|
-
*
|
|
1579
|
+
* Not-found classifier shared by R2 + queues. Given an `<res> info`-by-name probe,
|
|
1580
|
+
* returns `true` (confirmed absent → safe to create) ONLY on a clean non-zero exit
|
|
1581
|
+
* with the provider's typed not-found result (R2 error code 10006; the queue
|
|
1582
|
+
* operation's `not-found` failure). Everything else returns `false` so the caller
|
|
1584
1583
|
* fails closed — a signal/spawn failure, an auth/network/metrics error, or a
|
|
1585
1584
|
* GENERIC "not found" (e.g. `Account not found`) is NEVER treated as absence,
|
|
1586
1585
|
* which would mint a duplicate resource.
|
|
1587
1586
|
*/
|
|
1588
|
-
function isConfirmedAbsent(result, kind
|
|
1587
|
+
function isConfirmedAbsent(result, kind) {
|
|
1589
1588
|
return isCleanFailure(result) && (kind === "r2" ? result.errorCode === 10006 : result.failure === "not-found");
|
|
1590
1589
|
}
|
|
1591
1590
|
/** Only a completed, typed not-found response confirms queue absence. */
|
|
1592
|
-
function isQueueConfirmedAbsent(result,
|
|
1593
|
-
return isConfirmedAbsent(result, "queue"
|
|
1591
|
+
function isQueueConfirmedAbsent(result, _name) {
|
|
1592
|
+
return isConfirmedAbsent(result, "queue");
|
|
1594
1593
|
}
|
|
1595
1594
|
/** Reuse and post-create verification require clean success and the exact returned name. */
|
|
1596
1595
|
function queueInfoConfirmsExists(result, name) {
|
|
@@ -2011,8 +2010,8 @@ function redactRejection(error, redactText) {
|
|
|
2011
2010
|
* `wrangler <res> create --update-config` write real ids into the root config.
|
|
2012
2011
|
* For resources that already exist (adopt path) — where `create` cannot run —
|
|
2013
2012
|
* the real id is captured from `wrangler <res> list/info` (or, for Hyperdrive,
|
|
2014
|
-
* the account-list existence seam) and written through
|
|
2015
|
-
* fields. Pure provisioning: NO build, deploy, or drift-check. Idempotent +
|
|
2013
|
+
* the account-list existence seam) and written through `writeProvisionedWranglerConfig`'s
|
|
2014
|
+
* adopt fields. Pure provisioning: NO build, deploy, or drift-check. Idempotent +
|
|
2016
2015
|
* read-first: a binding already pointing at a real id is left untouched.
|
|
2017
2016
|
*/
|
|
2018
2017
|
async function provisionCloudflareResources(root, rootWranglerPath, desired, opts) {
|
|
@@ -2317,7 +2316,7 @@ async function reconcileR2(desired, configPath, runWrangler, write, persistCreat
|
|
|
2317
2316
|
name: bucketName,
|
|
2318
2317
|
action: "adopted"
|
|
2319
2318
|
});
|
|
2320
|
-
} else if (isConfirmedAbsent(info, "r2"
|
|
2319
|
+
} else if (isConfirmedAbsent(info, "r2")) {
|
|
2321
2320
|
const created = await runWrangler({
|
|
2322
2321
|
type: "r2.bucket.create",
|
|
2323
2322
|
name: bucketName,
|
|
@@ -2448,7 +2447,7 @@ async function reconcileQueues(desired, configPath, runWrangler, resources) {
|
|
|
2448
2447
|
});
|
|
2449
2448
|
continue;
|
|
2450
2449
|
}
|
|
2451
|
-
if (!isConfirmedAbsent(info, "queue"
|
|
2450
|
+
if (!isConfirmedAbsent(info, "queue")) throw new Error(`provision: "wrangler queues info ${name}" failed or did not confirm the queue exists: ${info.stderr || info.stdout || "no output"}`);
|
|
2452
2451
|
const created = await runWrangler({
|
|
2453
2452
|
type: "queues.create",
|
|
2454
2453
|
name,
|
|
@@ -2496,9 +2495,7 @@ async function provisionCloudflareResourcesLocked(root, configPath, desired, opt
|
|
|
2496
2495
|
const log = opts?.log ?? defaultLogger;
|
|
2497
2496
|
const resources = [];
|
|
2498
2497
|
const write = (patch) => writeProvisionedWranglerConfig(root, patch, { configPath });
|
|
2499
|
-
const persistCreatedConfig = () =>
|
|
2500
|
-
if (basename(configPath) === ".void-wrangler.jsonc") persistCloudflareConfig(dirname(configPath));
|
|
2501
|
-
};
|
|
2498
|
+
const persistCreatedConfig = () => persistMaterializedWranglerConfig(configPath);
|
|
2502
2499
|
const hasRemoteWork = !!desired.d1 || desired.kvNamespaces.length > 0 || !!desired.r2 || !!desired.hyperdrive || desired.queues.length > 0;
|
|
2503
2500
|
if (hasRemoteWork && !effectiveAccountId) throw new Error("provision: no Cloudflare account is resolvable — set \"account_id\" in your root wrangler config or export CLOUDFLARE_ACCOUNT_ID before deploying. Refusing to provision resources without a pinned account (wrangler would otherwise fall back to an ambient/interactive account that is never persisted, so a later retry could rebind them elsewhere).");
|
|
2504
2501
|
if (hasRemoteWork) assertNoTransportRedirectInProjectDotenv(root);
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { r as
|
|
2
|
-
|
|
3
|
-
export { WranglerQuarantineError, acquireProvisionLock, assertNoTransportRedirectInProjectDotenv, assertValidResourceName, checkCloudflareProvisionDrift, createDefaultRunWrangler, deleteEnvVarCaseAware, enableD1ReadReplicationViaApi, isAlreadyGoneKillError, isQuarantineError, isQueueConfirmedAbsent, isRealD1Id, isRealKvId, normalizeRunWranglerResult, provisionCloudflareResources, provisionEnv, resolvePinnedApiBaseUrl, resolveProperLockfileKey, scanWranglerDotenvKeys };
|
|
1
|
+
import { _ as resolvePinnedApiBaseUrl, a as checkCloudflareProvisionDrift, c as enableD1ReadReplicationViaApi, d as isQueueConfirmedAbsent, f as isRealD1Id, g as provisionEnv, h as provisionCloudflareResources, i as assertValidResourceName, l as isAlreadyGoneKillError, m as normalizeRunWranglerResult, n as acquireProvisionLock, o as createDefaultRunWrangler, p as isRealKvId, r as assertNoTransportRedirectInProjectDotenv, s as deleteEnvVarCaseAware, t as WranglerQuarantineError, u as isQuarantineError, v as resolveProperLockfileKey } from "./provision-BfaLiWbj.mjs";
|
|
2
|
+
export { WranglerQuarantineError, acquireProvisionLock, assertNoTransportRedirectInProjectDotenv, assertValidResourceName, checkCloudflareProvisionDrift, createDefaultRunWrangler, deleteEnvVarCaseAware, enableD1ReadReplicationViaApi, isAlreadyGoneKillError, isQuarantineError, isQueueConfirmedAbsent, isRealD1Id, isRealKvId, normalizeRunWranglerResult, provisionCloudflareResources, provisionEnv, resolvePinnedApiBaseUrl, resolveProperLockfileKey };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { r as readProjectConfig } from "./project-
|
|
2
|
-
import { c as getToken } from "./auth-
|
|
3
|
-
import { H as outro, L as log } from "./
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { r as readProjectConfig } from "./project-BAm2aB6Q.mjs";
|
|
2
|
+
import { c as getToken } from "./auth-Dn2vw-SG.mjs";
|
|
3
|
+
import { H as outro, L as log } from "./dist-D3m88sjf.mjs";
|
|
4
|
+
import { i as dim, l as import_picocolors } from "./output-C50ag2r3.mjs";
|
|
5
|
+
import { r as PlatformClient } from "./client-DlDJuY0s.mjs";
|
|
6
6
|
//#region src/cli/requests.ts
|
|
7
7
|
async function runRequestsCommand(root, range, status) {
|
|
8
8
|
console.log();
|
|
@@ -15,9 +15,14 @@ function resolveProjectBySlug(projects, slug) {
|
|
|
15
15
|
slug: project.slug
|
|
16
16
|
} : null;
|
|
17
17
|
}
|
|
18
|
+
async function requireProjectBySlug(client, slug) {
|
|
19
|
+
const project = resolveProjectBySlug(await client.listProjects(), slug);
|
|
20
|
+
if (!project) throw new Error(`project: No project found with slug '${slug}'.`);
|
|
21
|
+
return project;
|
|
22
|
+
}
|
|
18
23
|
function inferDefaultSlug(root) {
|
|
19
24
|
const pkgPath = join(root, "package.json");
|
|
20
25
|
return (JSON.parse(readFileSync(pkgPath, "utf-8")).name ?? "my-app").replace(/^@[^/]+\//, "").replace(/[^a-z0-9-]/g, "-");
|
|
21
26
|
}
|
|
22
27
|
//#endregion
|
|
23
|
-
export { inferDefaultSlug as n,
|
|
28
|
+
export { resolveProjectBySlug as i, inferDefaultSlug as n, requireProjectBySlug as r, getRequestedProjectSlug as t };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-
|
|
2
|
-
import { c as getToken } from "./auth-
|
|
3
|
-
import { A as confirm, H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./
|
|
4
|
-
import { r as
|
|
5
|
-
import {
|
|
1
|
+
import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-BAm2aB6Q.mjs";
|
|
2
|
+
import { c as getToken } from "./auth-Dn2vw-SG.mjs";
|
|
3
|
+
import { A as confirm, H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./dist-D3m88sjf.mjs";
|
|
4
|
+
import { a as ensureUtc, d as printSuccess, i as dim, r as createSpinner, s as formatCount } from "./output-C50ag2r3.mjs";
|
|
5
|
+
import { r as PlatformClient } from "./client-DlDJuY0s.mjs";
|
|
6
6
|
//#region src/cli/rollback.ts
|
|
7
7
|
async function runRollbackCommand(root, deployId) {
|
|
8
8
|
console.log();
|
|
@@ -54,23 +54,16 @@ async function runRollbackCommand(root, deployId) {
|
|
|
54
54
|
const currentMigrations = active?.applied_migrations ? JSON.parse(active.applied_migrations) : [];
|
|
55
55
|
const targetMigrations = target.applied_migrations ? JSON.parse(target.applied_migrations) : [];
|
|
56
56
|
const migrationDiff = currentMigrations.filter((m) => !targetMigrations.includes(m));
|
|
57
|
-
|
|
58
|
-
log.warn(`The current database has ${formatCount(migrationDiff.length, "migration")} applied after this deployment:`);
|
|
59
|
-
for (const m of migrationDiff) log.message(` ${dim("•")} ${m}`);
|
|
60
|
-
log.message(dim("Rolling back will NOT revert these migrations. The older code will run against the current schema."));
|
|
61
|
-
const proceed = await confirm({ message: "Proceed with rollback?" });
|
|
62
|
-
if (isCancel(proceed) || !proceed) {
|
|
63
|
-
cancel("Rollback cancelled.");
|
|
64
|
-
process.exit(0);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
57
|
+
await confirmUnrevertedMigrations(migrationDiff, "deployment");
|
|
67
58
|
const s = createSpinner();
|
|
68
59
|
s.start("Rolling back...");
|
|
69
60
|
try {
|
|
70
61
|
const result = await client.rollback(linked.projectId, targetId, { allowDestructive: migrationDiff.length > 0 ? migrationDiff : void 0 });
|
|
71
62
|
s.stop("Rollback complete.");
|
|
72
|
-
if (result.ok)
|
|
73
|
-
|
|
63
|
+
if (result.ok) {
|
|
64
|
+
log.info("Traffic is now serving the rolled-back deployment.");
|
|
65
|
+
printSuccess(`Rolled back to ${targetId}.`);
|
|
66
|
+
} else {
|
|
74
67
|
log.error(result.error ?? "Rollback failed.");
|
|
75
68
|
process.exit(1);
|
|
76
69
|
}
|
|
@@ -79,10 +72,9 @@ async function runRollbackCommand(root, deployId) {
|
|
|
79
72
|
log.error(err instanceof Error ? err.message : String(err));
|
|
80
73
|
process.exit(1);
|
|
81
74
|
}
|
|
82
|
-
outro(dim("Traffic is now serving the rolled-back deployment."));
|
|
83
75
|
}
|
|
84
76
|
async function runCloudflareRollback(root, deployId) {
|
|
85
|
-
const { activateCloudflareExistingVersion, readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-
|
|
77
|
+
const { activateCloudflareExistingVersion, readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-BlYLlowZ.mjs");
|
|
86
78
|
const context = resolveCloudflareOperationContext(root);
|
|
87
79
|
const status = await readCloudflareWorkerStatus(context);
|
|
88
80
|
const deployedVersionIds = new Set(status.deployedVersionIds);
|
|
@@ -121,24 +113,10 @@ async function runCloudflareRollback(root, deployId) {
|
|
|
121
113
|
if (target.metadata?.schema !== 2 || current?.metadata?.schema !== 2 || target.metadata.triggerConfig.preserve || current.metadata.triggerConfig.preserve) log.info("This rollback keeps the current domains, routes, and schedules. The selected version has no complete trigger snapshot.");
|
|
122
114
|
if (!current?.metadata || !target.metadata) {
|
|
123
115
|
log.warn("Void migration metadata is unavailable for one of these versions. Database migrations are forward-only and will not be reverted.");
|
|
124
|
-
|
|
125
|
-
if (isCancel(proceed) || !proceed) {
|
|
126
|
-
cancel("Rollback cancelled.");
|
|
127
|
-
process.exit(0);
|
|
128
|
-
}
|
|
116
|
+
await confirmRollbackOrExit();
|
|
129
117
|
} else {
|
|
130
118
|
const targetSet = new Set(target.metadata.migrations);
|
|
131
|
-
|
|
132
|
-
if (migrationDiff.length > 0) {
|
|
133
|
-
log.warn(`The current database has ${formatCount(migrationDiff.length, "migration")} applied after this version:`);
|
|
134
|
-
for (const migration of migrationDiff) log.message(` ${dim("•")} ${migration}`);
|
|
135
|
-
log.message(dim("Rolling back will NOT revert these migrations. The older code will run against the current schema."));
|
|
136
|
-
const proceed = await confirm({ message: "Proceed with rollback?" });
|
|
137
|
-
if (isCancel(proceed) || !proceed) {
|
|
138
|
-
cancel("Rollback cancelled.");
|
|
139
|
-
process.exit(0);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
119
|
+
await confirmUnrevertedMigrations(current.metadata.migrations.filter((migration) => !targetSet.has(migration)), "version");
|
|
142
120
|
}
|
|
143
121
|
const spinner = createSpinner();
|
|
144
122
|
spinner.start("Rolling back...");
|
|
@@ -150,8 +128,23 @@ async function runCloudflareRollback(root, deployId) {
|
|
|
150
128
|
log.error(error instanceof Error ? error.message : String(error));
|
|
151
129
|
process.exit(1);
|
|
152
130
|
}
|
|
153
|
-
log.
|
|
154
|
-
|
|
131
|
+
log.info("Traffic is now serving the selected Cloudflare Worker Version.");
|
|
132
|
+
printSuccess(`Rolled back to ${target.id}.`);
|
|
133
|
+
}
|
|
134
|
+
async function confirmRollbackOrExit() {
|
|
135
|
+
const proceed = await confirm({ message: "Proceed with rollback?" });
|
|
136
|
+
if (isCancel(proceed) || !proceed) {
|
|
137
|
+
cancel("Rollback cancelled.");
|
|
138
|
+
process.exit(0);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/** List migrations the rollback will not revert and ask before continuing. */
|
|
142
|
+
async function confirmUnrevertedMigrations(migrationDiff, noun) {
|
|
143
|
+
if (migrationDiff.length === 0) return;
|
|
144
|
+
log.warn(`The current database has ${formatCount(migrationDiff.length, "migration")} applied after this ${noun}:`);
|
|
145
|
+
for (const migration of migrationDiff) log.message(` ${dim("•")} ${migration}`);
|
|
146
|
+
log.message(dim("Rolling back will NOT revert these migrations. The older code will run against the current schema."));
|
|
147
|
+
await confirmRollbackOrExit();
|
|
155
148
|
}
|
|
156
149
|
function formatAge(deployedAt) {
|
|
157
150
|
if (!deployedAt) return "";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as join, l as relative } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import { r as writeFileIfChanged } from "./project-tsconfig-
|
|
2
|
+
import { r as writeFileIfChanged } from "./project-tsconfig-CVJhNMxs.mjs";
|
|
3
3
|
import { mkdirSync } from "node:fs";
|
|
4
4
|
//#region src/codegen/db-types.ts
|
|
5
5
|
const DRIZZLE_OPERATORS = "sql, eq, ne, gt, gte, lt, lte, and, or, not, desc, asc, like, ilike, notLike, inArray, notInArray, isNull, isNotNull, between, notBetween, exists, notExists, count, sum, avg, min, max";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
//#region src/runtime/route-url.d.ts
|
|
2
|
+
/** Expand complete route tokens without changing query strings or fragments. */
|
|
3
|
+
declare function interpolateRouteParams(path: string, params?: Record<string, string>): string;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { interpolateRouteParams as t };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//#region src/runtime/route-url.ts
|
|
2
|
+
/**
|
|
3
|
+
* Encode one path segment of a route param. `encodeURIComponent` keeps dots, and
|
|
4
|
+
* URL parsing resolves `.`/`..` (even as `%2e`), so such a segment would move the
|
|
5
|
+
* request to another path instead of reaching this route.
|
|
6
|
+
*/
|
|
7
|
+
function encodeSegment(name, segment) {
|
|
8
|
+
if (segment === "." || segment === "..") throw new TypeError(`Route param "${name}" cannot be "${segment}"; it would change the request path.`);
|
|
9
|
+
return encodeURIComponent(segment);
|
|
10
|
+
}
|
|
11
|
+
/** Expand complete route tokens without changing query strings or fragments. */
|
|
12
|
+
function interpolateRouteParams(path, params) {
|
|
13
|
+
if (!params) return path;
|
|
14
|
+
const suffixIndex = path.search(/[?#]/);
|
|
15
|
+
const pathname = suffixIndex === -1 ? path : path.slice(0, suffixIndex);
|
|
16
|
+
const suffix = suffixIndex === -1 ? "" : path.slice(suffixIndex);
|
|
17
|
+
let leadingName;
|
|
18
|
+
const replaced = pathname.replace(/(^|\/):([^/{}]+)(\{\.\+\})?(?=\/|$)/g, (token, prefix, name, catchAll, offset) => {
|
|
19
|
+
if (!Object.hasOwn(params, name)) return token;
|
|
20
|
+
if (offset === 0) leadingName = name;
|
|
21
|
+
const value = params[name];
|
|
22
|
+
return prefix + (catchAll ? value.split("/").map((segment) => encodeSegment(name, segment)).join("/") : encodeSegment(name, value));
|
|
23
|
+
});
|
|
24
|
+
if (replaced.startsWith("//") && !pathname.startsWith("//")) throw new TypeError(`Route param "${leadingName ?? ""}" would make the request path start with "//", which changes the request host.`);
|
|
25
|
+
return replaced + suffix;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
export { interpolateRouteParams as t };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as runMigrations, i as openSqliteDatabase, n as getAppliedMigrations, r as getMiniflareDatabasePath, t as getApplicationTables } from "./runner-DMBKSrRk.mjs";
|
|
2
|
+
export { getApplicationTables, getAppliedMigrations, getMiniflareDatabasePath, openSqliteDatabase, runMigrations };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as join, n as dirname } from "./dist-BVqXeR_h.mjs";
|
|
2
2
|
import { t as collectMigrations } from "./collect-DiTn9yr6.mjs";
|
|
3
3
|
import { n as hasPackageDependency, r as readNearestPackageJson } from "./package-json-DXfiT1jV.mjs";
|
|
4
|
-
import { r as classifyMigration } from "./plan-
|
|
4
|
+
import { r as classifyMigration } from "./plan-BhLO2p4w.mjs";
|
|
5
5
|
import { existsSync, mkdirSync } from "node:fs";
|
|
6
6
|
import { createHash, createHmac } from "node:crypto";
|
|
7
7
|
//#region src/migrations/runner.ts
|
|
@@ -171,4 +171,4 @@ async function runMigrations(migrationsDir, dbPath) {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
//#endregion
|
|
174
|
-
export {
|
|
174
|
+
export { runMigrations as a, openSqliteDatabase as i, getAppliedMigrations as n, toBetterSqlite3Error as o, getMiniflareDatabasePath as r, getApplicationTables as t };
|
|
@@ -9,14 +9,17 @@ async function readMySqlAppliedMigrations(client) {
|
|
|
9
9
|
throw error;
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
+
function toMySqlClient(connection) {
|
|
13
|
+
return { async query(sql, params) {
|
|
14
|
+
const [rows] = await connection.query(sql, params);
|
|
15
|
+
return Array.isArray(rows) ? rows : [];
|
|
16
|
+
} };
|
|
17
|
+
}
|
|
12
18
|
async function getMySqlAppliedMigrations(url) {
|
|
13
19
|
const { createConnection } = await import("mysql2/promise");
|
|
14
20
|
const connection = await createConnection(url);
|
|
15
21
|
try {
|
|
16
|
-
return await readMySqlAppliedMigrations(
|
|
17
|
-
const [rows] = await connection.query(sql, params);
|
|
18
|
-
return Array.isArray(rows) ? rows : [];
|
|
19
|
-
} });
|
|
22
|
+
return await readMySqlAppliedMigrations(toMySqlClient(connection));
|
|
20
23
|
} finally {
|
|
21
24
|
await connection.end();
|
|
22
25
|
}
|
|
@@ -42,10 +45,7 @@ async function runMySqlMigrations(migrationsDir, url) {
|
|
|
42
45
|
multipleStatements: true
|
|
43
46
|
});
|
|
44
47
|
try {
|
|
45
|
-
return await applyMySqlMigrations(
|
|
46
|
-
const [rows] = await connection.query(sql, params);
|
|
47
|
-
return Array.isArray(rows) ? rows : [];
|
|
48
|
-
} }, migrations);
|
|
48
|
+
return await applyMySqlMigrations(toMySqlClient(connection), migrations);
|
|
49
49
|
} finally {
|
|
50
50
|
await connection.end();
|
|
51
51
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as runMySqlMigrations, n as getMySqlAppliedMigrations, t as applyMySqlMigrations } from "./runner-mysql-
|
|
1
|
+
import { i as runMySqlMigrations, n as getMySqlAppliedMigrations, t as applyMySqlMigrations } from "./runner-mysql-CEzKtmFb.mjs";
|
|
2
2
|
export { applyMySqlMigrations, getMySqlAppliedMigrations, runMySqlMigrations };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as runPgMigrations, n as getPgAppliedMigrations, t as applyPgMigrations } from "./runner-pg-
|
|
1
|
+
import { i as runPgMigrations, n as getPgAppliedMigrations, t as applyPgMigrations } from "./runner-pg-DV8p_zjA.mjs";
|
|
2
2
|
export { applyPgMigrations, getPgAppliedMigrations, runPgMigrations };
|
package/dist/runtime/ai.d.mts
CHANGED
|
@@ -28,7 +28,7 @@ export type VoidAi = {
|
|
|
28
28
|
models(...args: Parameters<Ai["models"]>): Promise<Awaited<ReturnType<Ai["models"]>>>;
|
|
29
29
|
toMarkdown(files: Array<Parameters<Ai["toMarkdown"]>[0]>, options?: Parameters<Ai["toMarkdown"]>[1]): Promise<Array<Awaited<ReturnType<Ai["toMarkdown"]>>>>;
|
|
30
30
|
toMarkdown(...args: Parameters<Ai["toMarkdown"]>): Promise<Awaited<ReturnType<Ai["toMarkdown"]>>>;
|
|
31
|
-
/** Workers AI inference
|
|
31
|
+
/** Workers AI inference. */
|
|
32
32
|
run<Name extends keyof AiModels>(model: Name, inputs: AiModels[Name]["inputs"], options?: AiOptions): Promise<AiModels[Name]["postProcessedOutputs"]>;
|
|
33
33
|
/** Cloudflare AI Gateway model inference. Accepts Cloudflare model IDs unchanged. */
|
|
34
34
|
run(model: string, inputs: unknown, options?: AiOptions): Promise<unknown>;
|