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
|
@@ -297,6 +297,18 @@ Curated Cloudflare Workers configuration. `void init` pins `compatibility_date`
|
|
|
297
297
|
|
|
298
298
|
`worker.vars` values must be strings. Root `.env` values override them during local development only. Production builds do not load `.env`, and reject any `worker.vars` name declared as a server key in `env.ts`. Use `void secret put` for production server values.
|
|
299
299
|
|
|
300
|
+
`worker.limits.cpu_ms` sets the CPU time limit per request, from 1 to 300000 ms. On a Void platform, deploy fails if the limit exceeds the account plan; lower it in `void.config.ts` before retrying. Rollback instead caps the old limit at the current plan ceiling. On direct deploys, [Cloudflare enforces the value](https://developers.cloudflare.com/workers/platform/limits/#cpu-time): Workers Free allows up to 10 ms and Workers Paid up to 300000 ms per request.
|
|
301
|
+
|
|
302
|
+
```json
|
|
303
|
+
{
|
|
304
|
+
"worker": {
|
|
305
|
+
"limits": {
|
|
306
|
+
"cpu_ms": 30000
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
300
312
|
### `cloudflare`
|
|
301
313
|
|
|
302
314
|
The complete Cloudflare Worker configuration for direct Cloudflare builds and deployment. Put custom bindings, `name`, `account_id`, routes, services, vars, migrations, and any other Cloudflare fields here. Void passes these fields through to the generated Cloudflare build configuration. Settings you edit here take precedence over values Void previously recorded in `void.lock.json`.
|
|
@@ -325,18 +337,6 @@ deploy: { cloudflare: { mode: 'atomic' } },
|
|
|
325
337
|
|
|
326
338
|
This choice applies to subsequent `void deploy` runs. Atomic deployment sends traffic to the new Worker before Void checks readiness; a Durable Object class migration cannot be rolled back across its migration boundary. Use `--atomic` for a single deployment instead. `deploy` is a Void setting and is not passed to Cloudflare's Worker config.
|
|
327
339
|
|
|
328
|
-
`worker.limits.cpu_ms` sets the CPU time limit per request, from 1 to 300000 ms. On a Void platform, deploy fails if the limit exceeds the account plan; lower it in `void.config.ts` before retrying. Rollback instead caps the old limit at the current plan ceiling. On direct deploys, [Cloudflare enforces the value](https://developers.cloudflare.com/workers/platform/limits/#cpu-time): Workers Free allows up to 10 ms and Workers Paid up to 300000 ms per request.
|
|
329
|
-
|
|
330
|
-
```json
|
|
331
|
-
{
|
|
332
|
-
"worker": {
|
|
333
|
-
"limits": {
|
|
334
|
-
"cpu_ms": 30000
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
```
|
|
339
|
-
|
|
340
340
|
### `routing`
|
|
341
341
|
|
|
342
342
|
Routing and edge configuration for headers, redirects, rewrites, and caching.
|
|
@@ -434,7 +434,7 @@ ISR revalidation TTL in seconds, either globally or per path. See [Revalidation]
|
|
|
434
434
|
|
|
435
435
|
#### `routing.revalidateQueryAllowlist`
|
|
436
436
|
|
|
437
|
-
Query parameters
|
|
437
|
+
Query parameters to keep in ISR cache keys. Keys are source URL patterns, values are query parameter names to keep. The listed parameters are part of the cache key for every request to a matching path; all other query parameters are left out of the key. When omitted, ISR cache keys drop every incoming query parameter to avoid unbounded cache fanout.
|
|
438
438
|
|
|
439
439
|
```json
|
|
440
440
|
{
|
|
@@ -80,22 +80,7 @@ Paths are relative to the project root. When `inference.scanDirs` is set, it rep
|
|
|
80
80
|
|
|
81
81
|
## Explicit Binding Overrides
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
```json
|
|
86
|
-
{
|
|
87
|
-
"inference": {
|
|
88
|
-
"bindings": {
|
|
89
|
-
"db": true,
|
|
90
|
-
"kv": true,
|
|
91
|
-
"storage": false,
|
|
92
|
-
"ai": false
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Explicit values override only their named bindings. Omitted bindings continue to be inferred, so setting `kv` does not disable storage, auth, or other features. Auth and checked-in migrations still require a database even when `db` is `false`.
|
|
83
|
+
Use [`inference.bindings`](./config.md#inference-bindings) to enable, disable, or rename a binding when inference does not match your setup. It overrides only the bindings you name; the rest are still inferred.
|
|
99
84
|
|
|
100
85
|
## File Types
|
|
101
86
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "void",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.27.0",
|
|
4
|
+
"description": "Full-stack framework and deployment CLI for Cloudflare Workers, powered by Vite.",
|
|
5
|
+
"homepage": "https://void.cloud",
|
|
6
|
+
"bugs": {
|
|
7
|
+
"url": "https://github.com/voidzero-dev/void/issues"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
4
10
|
"repository": {
|
|
5
11
|
"type": "git",
|
|
6
12
|
"url": "git+https://github.com/voidzero-dev/void.git",
|
|
@@ -11,6 +17,7 @@
|
|
|
11
17
|
},
|
|
12
18
|
"files": [
|
|
13
19
|
"dist",
|
|
20
|
+
"docs",
|
|
14
21
|
"schema.json",
|
|
15
22
|
"skills",
|
|
16
23
|
"AGENTS_TEMPLATE.md",
|
|
@@ -331,43 +338,40 @@
|
|
|
331
338
|
}
|
|
332
339
|
},
|
|
333
340
|
"dependencies": {
|
|
334
|
-
"@cloudflare/build-output-utils": "0.
|
|
335
|
-
"@cloudflare/codemods": "0.4.
|
|
336
|
-
"@cloudflare/config": "0.
|
|
341
|
+
"@cloudflare/build-output-utils": "^0.9.0",
|
|
342
|
+
"@cloudflare/codemods": "^0.4.2",
|
|
343
|
+
"@cloudflare/config": "^0.24.1",
|
|
337
344
|
"@cloudflare/sandbox": "1.0.0",
|
|
338
|
-
"@cloudflare/vite-plugin": "1.
|
|
339
|
-
"@cloudflare/workers-auth": "0.
|
|
340
|
-
"@cloudflare/workers-types": "^
|
|
341
|
-
"@napi-rs/keyring": "2.1.0",
|
|
342
|
-
"@void/deploy-cloudflare": "0.
|
|
343
|
-
"@void/deploy-core": "0.
|
|
344
|
-
"@void/edge": "0.
|
|
345
|
-
"@void/isr": "0.
|
|
346
|
-
"@void/platform": "0.
|
|
347
|
-
"acorn": "^8.18.0",
|
|
345
|
+
"@cloudflare/vite-plugin": "^1.63.1",
|
|
346
|
+
"@cloudflare/workers-auth": "^0.13.1",
|
|
347
|
+
"@cloudflare/workers-types": "^5.20261009.1",
|
|
348
|
+
"@napi-rs/keyring": "^2.1.0",
|
|
349
|
+
"@void/deploy-cloudflare": "0.27.0",
|
|
350
|
+
"@void/deploy-core": "0.27.0",
|
|
351
|
+
"@void/edge": "0.27.0",
|
|
352
|
+
"@void/isr": "0.27.0",
|
|
353
|
+
"@void/platform": "0.27.0",
|
|
348
354
|
"better-auth": "^1.7.7",
|
|
349
355
|
"better-sqlite3": "^13.0.3",
|
|
350
356
|
"blake3-jit": "^1.1.0",
|
|
351
|
-
"cf": "1.0.0-beta.
|
|
357
|
+
"cf": "^1.0.0-beta.14",
|
|
352
358
|
"drizzle-arktype": "^0.1.3",
|
|
353
359
|
"drizzle-kit": "^0.31.11",
|
|
354
360
|
"drizzle-orm": "^0.45.3",
|
|
355
361
|
"drizzle-valibot": "^0.4.2",
|
|
356
362
|
"drizzle-zod": "^0.8.3",
|
|
357
363
|
"email-validator": "^2.0.4",
|
|
358
|
-
"es-module-lexer": "^3.0.2",
|
|
359
364
|
"hono": "^4.13.13",
|
|
360
365
|
"ignore": "^7.0.12",
|
|
361
366
|
"jiti": "^2.7.0",
|
|
362
|
-
"jsonc-parser": "3.3.1",
|
|
363
|
-
"mime": "4.1.0",
|
|
364
|
-
"miniflare": "5.
|
|
367
|
+
"jsonc-parser": "^3.3.1",
|
|
368
|
+
"mime": "^4.1.0",
|
|
369
|
+
"miniflare": "5.20261006.1-alpha",
|
|
365
370
|
"minimatch": "^10.2.6",
|
|
366
|
-
"mysql2": "3.24.5",
|
|
367
|
-
"pg": "8.23.1",
|
|
368
|
-
"postal-mime": "^4.0.
|
|
369
|
-
"proper-lockfile": "^4.1.2"
|
|
370
|
-
"undici": "8.11.2"
|
|
371
|
+
"mysql2": "^3.24.5",
|
|
372
|
+
"pg": "^8.23.1",
|
|
373
|
+
"postal-mime": "^4.0.5",
|
|
374
|
+
"proper-lockfile": "^4.1.2"
|
|
371
375
|
},
|
|
372
376
|
"devDependencies": {
|
|
373
377
|
"@electric-sql/pglite": "0.5.8",
|
|
@@ -375,12 +379,12 @@
|
|
|
375
379
|
"@types/node": "^26.6.4",
|
|
376
380
|
"@types/pg": "^8.23.1",
|
|
377
381
|
"@types/proper-lockfile": "^4.1.4",
|
|
378
|
-
"@voidzero-dev/vite-plus-prompts": "
|
|
382
|
+
"@voidzero-dev/vite-plus-prompts": "1.1.0",
|
|
379
383
|
"arktype": "^2.2.7",
|
|
380
384
|
"ci-info": "^4.4.0",
|
|
381
385
|
"estree-walker": "^3.0.3",
|
|
382
386
|
"fast-wrap-ansi": "^0.2.2",
|
|
383
|
-
"magic-string": "^1.4.
|
|
387
|
+
"magic-string": "^1.4.3",
|
|
384
388
|
"ofetch": "2.0.0-alpha.3",
|
|
385
389
|
"pathslash": "^0.1.0",
|
|
386
390
|
"pglite-server": "0.1.5",
|
|
@@ -388,12 +392,12 @@
|
|
|
388
392
|
"tinyglobby": "^0.2.17",
|
|
389
393
|
"typescript": "7.0.2",
|
|
390
394
|
"valibot": "^1.5.0",
|
|
391
|
-
"vite": "npm:@voidzero-dev/vite-plus-core@1.
|
|
392
|
-
"vite-plus": "1.
|
|
395
|
+
"vite": "npm:@voidzero-dev/vite-plus-core@1.1.0",
|
|
396
|
+
"vite-plus": "1.1.0",
|
|
393
397
|
"zod": "^4.6.5"
|
|
394
398
|
},
|
|
395
399
|
"peerDependencies": {
|
|
396
|
-
"@void/md": "0.
|
|
400
|
+
"@void/md": "0.27.0",
|
|
397
401
|
"arktype": ">=2.0.0",
|
|
398
402
|
"valibot": ">=1.0.0-beta.7",
|
|
399
403
|
"vite": "^8.0.0",
|
|
@@ -417,7 +421,7 @@
|
|
|
417
421
|
"node": ">=24.21.0"
|
|
418
422
|
},
|
|
419
423
|
"scripts": {
|
|
420
|
-
"build": "node scripts/sync-
|
|
424
|
+
"build": "node scripts/sync-docs.mjs && vp pack",
|
|
421
425
|
"dev": "vp pack --watch",
|
|
422
426
|
"typecheck": "tsc --noEmit --rootDir ../.."
|
|
423
427
|
}
|
package/schema.json
CHANGED
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
},
|
|
213
213
|
"revalidateQueryAllowlist": {
|
|
214
214
|
"type": "object",
|
|
215
|
-
"description": "Query parameters that
|
|
215
|
+
"description": "Query parameters that are part of the ISR cache key for every request to a matching path. Keys are source URL patterns; values are arrays of query parameter names. All other query parameters are left out of the key. When omitted, ISR drops every query parameter from the cache key.",
|
|
216
216
|
"patternProperties": {
|
|
217
217
|
"^(\\/|\\*$)": {
|
|
218
218
|
"type": "array",
|
|
@@ -9,7 +9,10 @@ Read the app's package manifest, Vite config, Worker entry, Cloudflare config,
|
|
|
9
9
|
and migrations. Identify its framework, endpoints, bindings, and deployed Worker
|
|
10
10
|
before changing them.
|
|
11
11
|
|
|
12
|
-
Use the bundled guides under
|
|
12
|
+
Use the bundled guides under `node_modules/void/docs/`. Without a local Void
|
|
13
|
+
installation, use `../../docs/` relative to this skill's real directory in the
|
|
14
|
+
Void package, following any symlink. If the skill was copied without the package,
|
|
15
|
+
use the guides at [https://void.cloud](https://void.cloud) instead:
|
|
13
16
|
|
|
14
17
|
- `integrations/cloudflare.md` for existing Worker handoff and configuration.
|
|
15
18
|
- `integrations/frameworks/overview.md` and the matching framework guide when
|
package/skills/void/SKILL.md
CHANGED
|
@@ -5,9 +5,12 @@ description: Build Void apps and use the Void CLI by loading the relevant bundle
|
|
|
5
5
|
|
|
6
6
|
# Void
|
|
7
7
|
|
|
8
|
-
Read only the guides needed for the user's task.
|
|
9
|
-
|
|
10
|
-
`
|
|
8
|
+
Read only the guides needed for the user's task. Prefer the app's installed
|
|
9
|
+
documentation at `node_modules/void/docs/` so it matches the app's Void version.
|
|
10
|
+
All `docs/` paths below are relative to that package's root. When using this
|
|
11
|
+
skill globally without a local Void installation, follow the skill's symlink to
|
|
12
|
+
its real directory and use `../../docs/` in the same Void package. If the skill
|
|
13
|
+
was copied without the package, use the guides at [https://void.cloud](https://void.cloud) instead.
|
|
11
14
|
|
|
12
15
|
Before running a Void command, find its group in `docs/reference/cli.md`, then
|
|
13
16
|
read the matching page under `docs/reference/cli/` for syntax, options, and
|
|
@@ -19,8 +22,9 @@ Use `void` and `@void/*` in imports, examples, and package manifests. Follow the
|
|
|
19
22
|
project's existing framework and deployment destination. Deploying to a Void
|
|
20
23
|
platform requires an explicit `void connect <url>` first; never infer a platform
|
|
21
24
|
from old examples, tokens, or project IDs.
|
|
22
|
-
Platform hostnames passed to `void connect` default to HTTPS
|
|
23
|
-
|
|
25
|
+
Platform hostnames passed to `void connect` default to HTTPS. Loopback hosts
|
|
26
|
+
(`localhost`, `127.0.0.1`, and `[::1]`) default to HTTP: `void connect localhost:8787`.
|
|
27
|
+
An explicit scheme overrides the default.
|
|
24
28
|
For a one-time deployment elsewhere, connect to that platform, then set
|
|
25
29
|
`VOID_API_URL` for the deploy command and pass `--project <slug>`. This preserves
|
|
26
30
|
the app's existing saved destination, including when the target project is new.
|
package/dist/client-BxVixJBI.mjs
DELETED
package/dist/config-0acf1oys.mjs
DELETED
package/dist/config-D8MOgiQV.mjs
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { a as join, l as relative } from "./dist-BVqXeR_h.mjs";
|
|
2
|
-
import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
|
|
3
|
-
import { n as schemaSpecifier, t as discoverSchema } from "./discover-BcPPiF1o.mjs";
|
|
4
|
-
import { mkdirSync, writeFileSync } from "node:fs";
|
|
5
|
-
//#region src/drizzle/config.ts
|
|
6
|
-
/**
|
|
7
|
-
* Write a temporary drizzle-kit config to `.void/drizzle.config.json`.
|
|
8
|
-
* All paths are relative to the project root (drizzle-kit resolves
|
|
9
|
-
* relative to `--config` file location, so we use project-root-relative).
|
|
10
|
-
*
|
|
11
|
-
* @returns Absolute path to the written config file.
|
|
12
|
-
*/
|
|
13
|
-
function writeDrizzleConfig(root, dbPath, dialect = "sqlite", options) {
|
|
14
|
-
const paths = readProjectPaths(root);
|
|
15
|
-
const schema = discoverSchema(root, paths);
|
|
16
|
-
const schemaPaths = [...schema ? [schemaSpecifier(schema, root)] : [], ...(options?.additionalSchemas ?? []).map((path) => `./${relative(root, path)}`)];
|
|
17
|
-
if (schemaPaths.length === 0) throw new Error(`db: No Drizzle schema found. Create ${paths.sourceRelative("db/schema.ts")} or run \`void gen model <name>\`.`);
|
|
18
|
-
const outDir = join(root, ".void");
|
|
19
|
-
mkdirSync(outDir, { recursive: true });
|
|
20
|
-
const config = {
|
|
21
|
-
dialect,
|
|
22
|
-
schema: schemaPaths.length === 1 ? schemaPaths[0] : schemaPaths,
|
|
23
|
-
out: `./${relative(root, paths.migrationsDir)}`,
|
|
24
|
-
migrations: { prefix: "timestamp" },
|
|
25
|
-
dbCredentials: { url: dbPath }
|
|
26
|
-
};
|
|
27
|
-
const configPath = join(outDir, "drizzle.config.json");
|
|
28
|
-
writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
29
|
-
return configPath;
|
|
30
|
-
}
|
|
31
|
-
//#endregion
|
|
32
|
-
export { writeDrizzleConfig as t };
|
package/dist/deploy-qmiLE1G1.mjs
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
//#region src/runtime/fetch-error.d.ts
|
|
2
|
-
type FetchResponse<T = unknown> = Response & {
|
|
3
|
-
_data?: T;
|
|
4
|
-
};
|
|
5
|
-
type FetchError<T = unknown> = Error & {
|
|
6
|
-
request?: RequestInfo;
|
|
7
|
-
options?: RequestInit & Record<string, unknown>;
|
|
8
|
-
response?: FetchResponse<T>;
|
|
9
|
-
data?: T;
|
|
10
|
-
status?: number;
|
|
11
|
-
statusText?: string;
|
|
12
|
-
statusCode?: number;
|
|
13
|
-
statusMessage?: string;
|
|
14
|
-
};
|
|
15
|
-
type FetchErrorConstructor = new <T = unknown>(message: string, opts?: {
|
|
16
|
-
cause: unknown;
|
|
17
|
-
}) => FetchError<T>;
|
|
18
|
-
declare const FetchError: FetchErrorConstructor;
|
|
19
|
-
//#endregion
|
|
20
|
-
export { FetchError as t };
|
package/dist/gen-qCBwH3fZ.mjs
DELETED
package/dist/help-Dw5f9Xrg.mjs
DELETED
package/dist/login-D7meQg_3.mjs
DELETED
package/dist/plan-COtUvdMA.mjs
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
//#region src/runtime/route-url.ts
|
|
2
|
-
/** Expand complete route tokens without changing query strings or fragments. */
|
|
3
|
-
function interpolateRouteParams(path, params) {
|
|
4
|
-
if (!params) return path;
|
|
5
|
-
const suffixIndex = path.search(/[?#]/);
|
|
6
|
-
const pathname = suffixIndex === -1 ? path : path.slice(0, suffixIndex);
|
|
7
|
-
const suffix = suffixIndex === -1 ? "" : path.slice(suffixIndex);
|
|
8
|
-
return pathname.replace(/(^|\/):([^/{}]+)(\{\.\+\})?(?=\/|$)/g, (token, prefix, name, catchAll) => {
|
|
9
|
-
if (!Object.hasOwn(params, name)) return token;
|
|
10
|
-
const value = params[name];
|
|
11
|
-
return prefix + (catchAll ? value.split("/").map(encodeURIComponent).join("/") : encodeURIComponent(value));
|
|
12
|
-
}) + suffix;
|
|
13
|
-
}
|
|
14
|
-
//#endregion
|
|
15
|
-
export { interpolateRouteParams as t };
|
package/dist/runner-voIltZrY.mjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { i as openSqliteDatabase, n as getAppliedMigrations, o as runMigrations, r as getMiniflareDatabasePath, t as getApplicationTables } from "./runner--2KF6Kua.mjs";
|
|
2
|
-
export { getApplicationTables, getAppliedMigrations, getMiniflareDatabasePath, openSqliteDatabase, runMigrations };
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
outline: deep
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Using Void with Coding Agents
|
|
6
|
-
|
|
7
|
-
`void init` gives your coding agent Void instructions and reference docs. To add or refresh just that setup, run:
|
|
8
|
-
|
|
9
|
-
```sh
|
|
10
|
-
npx void init --agents
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Void updates `AGENTS.md` with development guidance and links to the docs, preserving your existing instructions.
|
|
14
|
-
|
|
15
|
-
The complete Markdown docs ship with the installed package at `node_modules/void/skills/void/docs/`. Agents can read them directly, even without a linked skill.
|
|
16
|
-
|
|
17
|
-
## Skills
|
|
18
|
-
|
|
19
|
-
Skills point your agent to the commands and docs it needs for the task. They link to the installed `void` package, so the guidance matches the version your app uses.
|
|
20
|
-
|
|
21
|
-
Void ships two skills:
|
|
22
|
-
|
|
23
|
-
- **`void`:** commands and docs for app development.
|
|
24
|
-
- **`migrate-vite-cloudflare-to-void`:** migration skill for converting existing `@cloudflare/vite-plugin` apps to Void.
|
|
25
|
-
|
|
26
|
-
Skills are linked automatically by `void init --agents` when it detects a supported agent's configuration. For example, Claude Code uses `.claude/skills/`. If no agent is detected, skill linking is skipped and `AGENTS.md` points directly to the bundled docs.
|
|
@@ -8,10 +8,6 @@ async function readPgAppliedMigrations(client) {
|
|
|
8
8
|
throw error;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
/**
|
|
12
|
-
* Apply unapplied SQL migrations via a connected PostgreSQL client.
|
|
13
|
-
* Each migration runs in its own transaction (BEGIN/COMMIT).
|
|
14
|
-
*/
|
|
15
11
|
async function getPgAppliedMigrations(url) {
|
|
16
12
|
const { Client } = await import("pg");
|
|
17
13
|
const client = new Client({ connectionString: url });
|
|
@@ -22,6 +18,10 @@ async function getPgAppliedMigrations(url) {
|
|
|
22
18
|
await client.end();
|
|
23
19
|
}
|
|
24
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Apply unapplied SQL migrations via a connected PostgreSQL client.
|
|
23
|
+
* Each migration runs in its own transaction (BEGIN/COMMIT).
|
|
24
|
+
*/
|
|
25
25
|
async function applyPgMigrations(client, migrations) {
|
|
26
26
|
if (migrations.length === 0) return [];
|
|
27
27
|
await client.query(`CREATE TABLE IF NOT EXISTS _void_migrations (name TEXT PRIMARY KEY, applied_at TEXT NOT NULL)`);
|
|
File without changes
|
|
@@ -29,8 +29,8 @@ See [Database commands](../../reference/cli/database.md#database) for the full w
|
|
|
29
29
|
D1 supports batching multiple statements into a single round-trip:
|
|
30
30
|
|
|
31
31
|
```ts
|
|
32
|
-
import { db, eq } from 'void/db';
|
|
33
32
|
import { users, posts } from '@schema';
|
|
33
|
+
import { db, eq } from 'void/db';
|
|
34
34
|
|
|
35
35
|
await db.batch([
|
|
36
36
|
db.delete(posts).where(eq(posts.userId, userId)),
|
|
@@ -51,9 +51,9 @@ Use `env.DB` from `cloudflare:workers` with another query library or the raw D1
|
|
|
51
51
|
### Kysely
|
|
52
52
|
|
|
53
53
|
```ts
|
|
54
|
+
import { env } from 'cloudflare:workers';
|
|
54
55
|
import { Kysely } from 'kysely';
|
|
55
56
|
import { D1Dialect } from 'kysely-d1';
|
|
56
|
-
import { env } from 'cloudflare:workers';
|
|
57
57
|
|
|
58
58
|
const db = new Kysely<Database>({ dialect: new D1Dialect({ database: env.DB }) });
|
|
59
59
|
```
|
|
File without changes
|
|
@@ -54,9 +54,9 @@ Define your tables in `db/schema.ts` using column helpers from `void/schema-d1`,
|
|
|
54
54
|
::: code-group
|
|
55
55
|
|
|
56
56
|
```ts [SQLite (D1)]
|
|
57
|
+
import { sql } from 'void/db';
|
|
57
58
|
// db/schema.ts
|
|
58
59
|
import { sqliteTable, text, integer } from 'void/schema-d1';
|
|
59
|
-
import { sql } from 'void/db';
|
|
60
60
|
|
|
61
61
|
export const users = sqliteTable('users', {
|
|
62
62
|
id: integer('id').primaryKey({ autoIncrement: true }),
|
|
@@ -117,8 +117,8 @@ export * from "./schema/posts";
|
|
|
117
117
|
Void re-exports all common [Drizzle query operators](https://orm.drizzle.team/docs/select) from `void/db` so you don't need to install `drizzle-orm` separately. Import `db` from `void/db` and your tables from `@schema`:
|
|
118
118
|
|
|
119
119
|
```ts
|
|
120
|
-
import { db } from 'void/db';
|
|
121
120
|
import { users } from '@schema';
|
|
121
|
+
import { db } from 'void/db';
|
|
122
122
|
```
|
|
123
123
|
|
|
124
124
|
::: info What is `@schema`?
|
|
@@ -134,8 +134,8 @@ const allUsers = await db.select().from(users);
|
|
|
134
134
|
### Filter with `where`
|
|
135
135
|
|
|
136
136
|
```ts
|
|
137
|
-
import { db, eq, and, or } from 'void/db';
|
|
138
137
|
import { users } from '@schema';
|
|
138
|
+
import { db, eq, and, or } from 'void/db';
|
|
139
139
|
|
|
140
140
|
// Single condition
|
|
141
141
|
const user = await db.select().from(users).where(eq(users.id, 1));
|
|
@@ -200,8 +200,8 @@ const names = await db.select({ name: users.name, email: users.email }).from(use
|
|
|
200
200
|
### Ordering and pagination
|
|
201
201
|
|
|
202
202
|
```ts
|
|
203
|
-
import { db, desc } from 'void/db';
|
|
204
203
|
import { users } from '@schema';
|
|
204
|
+
import { db, desc } from 'void/db';
|
|
205
205
|
|
|
206
206
|
const page = await db.select().from(users).orderBy(desc(users.createdAt)).limit(10).offset(20);
|
|
207
207
|
```
|
|
@@ -209,8 +209,8 @@ const page = await db.select().from(users).orderBy(desc(users.createdAt)).limit(
|
|
|
209
209
|
### Joins
|
|
210
210
|
|
|
211
211
|
```ts
|
|
212
|
-
import { db, eq } from 'void/db';
|
|
213
212
|
import { users, posts } from '@schema';
|
|
213
|
+
import { db, eq } from 'void/db';
|
|
214
214
|
|
|
215
215
|
const results = await db
|
|
216
216
|
.select({
|
|
@@ -290,9 +290,9 @@ export const insertUserSchema = createInsertSchema(users, {
|
|
|
290
290
|
```
|
|
291
291
|
|
|
292
292
|
```ts [Valibot]
|
|
293
|
+
import { pipe, minLength, email } from 'valibot';
|
|
293
294
|
// db/schema.ts
|
|
294
295
|
import { createInsertSchema } from 'void/drizzle-valibot';
|
|
295
|
-
import { pipe, minLength, email } from 'valibot';
|
|
296
296
|
|
|
297
297
|
export const insertUserSchema = createInsertSchema(users, {
|
|
298
298
|
name: (schema) => pipe(schema, minLength(1)),
|
|
@@ -301,9 +301,9 @@ export const insertUserSchema = createInsertSchema(users, {
|
|
|
301
301
|
```
|
|
302
302
|
|
|
303
303
|
```ts [ArkType]
|
|
304
|
+
import { type } from 'arktype';
|
|
304
305
|
// db/schema.ts
|
|
305
306
|
import { createInsertSchema } from 'void/drizzle-arktype';
|
|
306
|
-
import { type } from 'arktype';
|
|
307
307
|
|
|
308
308
|
export const insertUserSchema = createInsertSchema(users, {
|
|
309
309
|
name: type('string > 0'),
|
|
@@ -318,10 +318,10 @@ export const insertUserSchema = createInsertSchema(users, {
|
|
|
318
318
|
Use the derived schema in your route handlers with [`withValidator()`](./server-routing.md#validation):
|
|
319
319
|
|
|
320
320
|
```ts
|
|
321
|
+
import { users, insertUserSchema } from '@schema';
|
|
321
322
|
// routes/api/users/index.ts
|
|
322
323
|
import { defineHandler } from 'void';
|
|
323
324
|
import { db } from 'void/db';
|
|
324
|
-
import { users, insertUserSchema } from '@schema';
|
|
325
325
|
|
|
326
326
|
export const POST = defineHandler.withValidator({
|
|
327
327
|
body: insertUserSchema,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -135,10 +135,10 @@ let { posts } = $props();
|
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
```tsx [Solid]
|
|
138
|
+
import { For } from 'solid-js';
|
|
138
139
|
// pages/blog/index.island.tsx
|
|
139
140
|
import Counter from './_Counter' with { island: 'load' };
|
|
140
141
|
import PostForm from './_PostForm' with { island: 'visible' };
|
|
141
|
-
import { For } from 'solid-js';
|
|
142
142
|
|
|
143
143
|
export default function BlogIndex(props) {
|
|
144
144
|
return (
|
|
@@ -181,9 +181,9 @@ The `island` attribute value controls _when_ the component hydrates:
|
|
|
181
181
|
| `"media:(query)"` | CSS media query matches | Responsive components (e.g., mobile-only) |
|
|
182
182
|
|
|
183
183
|
```tsx
|
|
184
|
+
import Comments from './_Comments' with { island: 'visible' };
|
|
184
185
|
import CookieBanner from './_CookieBanner' with { island: 'idle' };
|
|
185
186
|
import MobileMenu from './_MobileMenu' with { island: 'media:(max-width: 768px)' };
|
|
186
|
-
import Comments from './_Comments' with { island: 'visible' };
|
|
187
187
|
```
|
|
188
188
|
|
|
189
189
|
## Server Handlers
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|