void 0.10.13 → 0.20.1
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 +6 -0
- package/{skills/void/docs/node_modules/void/node_modules/pglite-server/LICENSE.md → LICENSE} +1 -1
- package/README.md +34 -8
- package/dist/{auth-qgMlYp7Z.d.mts → auth-DkcFflXV.d.mts} +10 -11
- package/dist/auth-W9WII-mN.mjs +630 -0
- package/dist/{auth-cmd-BqsdZJp5.mjs → auth-cmd-CAH62yDU.mjs} +4 -3
- package/dist/{auth-migrations-BTZ-ATvQ.mjs → auth-migrations-9vif1uj8.mjs} +53 -12
- package/dist/{better-auth-shared-BQooDxbw.mjs → better-auth-shared-CYw1T3k4.mjs} +7 -10
- package/dist/{better-auth-shared-DealXecJ.d.mts → better-auth-shared-DSCeohOK.d.mts} +10 -5
- package/dist/{build-cmd-Bujrv5q-.mjs → build-cmd-CJvZvPQO.mjs} +6 -4
- package/dist/{cache-C11V8Fxq.mjs → cache-BlNeQjuP.mjs} +9 -5
- package/dist/{cancel-deploy-fwFYF04b.mjs → cancel-deploy-CmlAZ9P6.mjs} +3 -2
- package/dist/cf-access-AJ1ehiFR.mjs +42 -0
- package/dist/cf-access-DsSsZUPr.mjs +67 -0
- package/dist/cli/cli.d.mts +1 -1
- package/dist/cli/cli.mjs +1735 -165
- package/dist/cli/env-schema-probe.d.mts +48 -61
- package/dist/cli/env-schema-probe.mjs +10 -58
- package/dist/{client-Gb71-XkG.mjs → client-Clirrol3.mjs} +120 -463
- package/dist/cloudflare-auth-B1QtTO1b.mjs +217 -0
- package/dist/cloudflare-cmd-B6_OZx2V.mjs +62 -0
- package/dist/cloudflare-connect-j5D4hhrG.mjs +56 -0
- package/dist/cloudflare-operations-CPTpRW6d.mjs +566 -0
- package/dist/{config-qHGgPuWT.mjs → config-BQFq7QvD.mjs} +75 -41
- package/dist/{config-CutEMNGJ.mjs → config-NOG_U1aK.mjs} +10 -15
- package/dist/connect-C04Wdy_h.mjs +79 -0
- package/dist/{create-project-DsYvl3TB.mjs → create-project-ChGZ1DFd.mjs} +26 -16
- package/dist/database-provider.d.mts +21 -0
- package/dist/database-provider.mjs +6 -0
- package/dist/{db-C0i0sYMS.mjs → db-D2d_mUsB.mjs} +612 -117
- package/dist/{delete-mh6p-zkQ.mjs → delete-D8GigDk8.mjs} +9 -6
- package/dist/{deploy-jBJT1fUT.mjs → deploy-iXZ3F0N6.mjs} +3252 -1995
- package/dist/dev-inbox-DkgRWLkW.mjs +307 -0
- package/dist/{discover-CJHyvYfR.mjs → discover-xvfrgJeo.mjs} +3 -3
- package/dist/{magic-string.es-ZQjdJFFn.mjs → dist-BR1quN_w.mjs} +570 -216
- package/dist/{dist-DaKKDf8D.mjs → dist-BrsS7cai.mjs} +17 -2
- package/dist/{dist-BuiRJkTd.mjs → dist-m40_XgNh.mjs} +48 -33
- package/dist/{domain-DiaNQbrl.mjs → domain-B1VmoSr0.mjs} +41 -4
- package/dist/dotenv-VQxupEUv.mjs +181 -0
- package/dist/edge.d.mts +2 -0
- package/dist/edge.mjs +2 -0
- package/dist/email-Ce6SQq-i.mjs +182 -0
- package/dist/email-uKyQYUVY.mjs +1016 -0
- package/dist/{entry-D7yy4xVH.mjs → entry-DU3oDoQ3.mjs} +2 -2
- package/dist/env-BcQzYgoG.mjs +73 -0
- package/dist/env-D4Emu-M_.mjs +95 -0
- package/dist/env-helpers-CyKtOBpj.d.mts +22 -0
- package/dist/env-public-D_6u46fX.d.mts +135 -0
- package/dist/{env-types-QBj-ndax.mjs → env-types-BNPhro-M.mjs} +2 -2
- package/dist/{env-validation-Dea3v3ej.mjs → env-validation-ENpMy6Ez.mjs} +68 -122
- package/dist/{gen-BzXf3Jh2.mjs → gen-DI2YwdBM.mjs} +70 -15
- package/dist/generate-RTK8_kK1.mjs +47 -0
- package/dist/{github-cmd-DKcGUNsj.mjs → github-cmd-xItS5Zwf.mjs} +39 -31
- package/dist/{handler-Cjh8uM3Y.d.mts → handler-D1hLsObx.d.mts} +124 -122
- package/dist/{head-nmvOgFjd.d.mts → head-Do8P4puT.d.mts} +9 -8
- package/dist/{headers-ChAADPQu.mjs → headers-D8QfRX9Y.mjs} +12 -10
- package/dist/inbound-2d0zi2yS.mjs +706 -0
- package/dist/inbound-afAcWeQ9.d.mts +363 -0
- package/dist/index.d.mts +61 -34
- package/dist/index.mjs +1012 -293
- package/dist/{init-7JCAcKNQ.mjs → init-BD-9THgn.mjs} +329 -271
- package/dist/link-RMdgjF1v.mjs +52 -0
- package/dist/{list-CPwFDZ_c.mjs → list-3F52R_yO.mjs} +37 -5
- package/dist/{runner-kapo9aPs.mjs → local-d1-D2I6Ox5F.mjs} +116 -6
- package/dist/{login-BT3H8PN3.mjs → login-pV69H-ZO.mjs} +17 -15
- package/dist/{logs-Bt313ax7.mjs → logs-DFHHD6wE.mjs} +16 -2
- package/dist/mime-BJD7d_qL.mjs +1216 -0
- package/dist/neon-DHwd2zvC.mjs +54 -0
- package/dist/{node-pRg81HqV.mjs → node-Dk3H2jmU.mjs} +29 -8
- package/dist/operator-cmd-DYWRbWUA.mjs +348 -0
- package/dist/{agents-CtgBYqld.mjs → output-tFQLLj26.mjs} +676 -211
- package/dist/{package-json-Cx1osYo6.mjs → package-json-CPoWX79C.mjs} +1 -1
- package/dist/pages/client.d.mts +43 -41
- package/dist/pages/client.mjs +40 -33
- package/dist/pages/head-client.d.mts +10 -12
- package/dist/pages/head.d.mts +1 -1
- package/dist/pages/index.d.mts +37 -14
- package/dist/pages/index.mjs +5 -5
- package/dist/pages/islands-plugin.d.mts +25 -27
- package/dist/pages/islands-plugin.mjs +6 -4
- package/dist/pages/prefetch.d.mts +6 -7
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +2 -1
- package/dist/pages/serialize.d.mts +7 -8
- package/dist/platform-cmd-DxJ2FRwR.mjs +123 -0
- package/dist/platform-domain-ChvbJkdy.mjs +228 -0
- package/dist/platform-lifecycle-DN4MzJF_.mjs +4450 -0
- package/dist/platform-management-Db2PXw0B.mjs +698 -0
- package/dist/platform-recovery-C_YO-tIs.mjs +99 -0
- package/dist/{plugin-inference-DMeavIJ6.mjs → plugin-inference-BDRfZngg.mjs} +35 -19
- package/dist/prepare-BfJvFUtJ.mjs +14 -0
- package/dist/{prepare-BvvgAz-3.mjs → prepare-CBetXvsN.mjs} +15 -24
- package/dist/{preset-BjyR3lzz.mjs → preset-lAy0B0BQ.mjs} +25 -212
- package/dist/{project-cmd-D_w-4w5B.mjs → project-cmd-Mo0V9yKS.mjs} +25 -12
- package/dist/{project-paths-BQd7OmIo.mjs → project-paths-SK8nMHPp.mjs} +3 -1
- package/dist/{project-tsconfig-B-QtXjLQ.mjs → project-tsconfig-Ql2XsSQp.mjs} +2 -2
- package/dist/{protocol-Bnb0LFp3.d.mts → protocol-C-pqYJjE.d.mts} +3 -4
- package/dist/{provision-CPx2ZxsH.mjs → provision-Blnstcm2.mjs} +78 -45
- package/dist/r2-conditions-D1Wk8i7b.mjs +30 -0
- package/dist/{requests-B8sZxaFM.mjs → requests-BcKOVpRg.mjs} +5 -3
- package/dist/{resolve-project-BBMtLLV9.mjs → resolve-project--Vxawf7z.mjs} +2 -2
- package/dist/rollback-Bx85-0xh.mjs +166 -0
- package/dist/{rolldown-runtime-DJK8HYOj.mjs → rolldown-runtime-rQ84J-ij.mjs} +1 -1
- package/dist/{route-types-z1jtHEi_.mjs → route-types-Da-DpyUp.mjs} +77 -25
- package/dist/routes-stub.d.mts +22 -23
- package/dist/runner-mysql-7BPUNGmL.mjs +61 -0
- package/dist/{runner-pg-CHM76xuC.mjs → runner-pg-BkEza-dX.mjs} +18 -6
- package/dist/runtime/ai.d.mts +21 -14
- package/dist/runtime/ai.mjs +5 -4
- package/dist/runtime/auth-client-react.d.mts +3 -5
- package/dist/runtime/auth-client-solid.d.mts +3 -5
- package/dist/runtime/auth-client-svelte.d.mts +3 -5
- package/dist/runtime/auth-client-vue.d.mts +3 -5
- package/dist/runtime/auth-client.d.mts +3 -5
- package/dist/runtime/auth.d.mts +1 -1
- package/dist/runtime/better-auth-mysql.d.mts +10 -0
- package/dist/runtime/better-auth-mysql.mjs +49 -0
- package/dist/runtime/better-auth-pg.d.mts +8 -9
- package/dist/runtime/better-auth-pg.mjs +2 -2
- package/dist/runtime/better-auth.d.mts +8 -9
- package/dist/runtime/better-auth.mjs +2 -2
- package/dist/runtime/client-react.d.mts +1 -1
- package/dist/runtime/client-solid.d.mts +1 -1
- package/dist/runtime/client-svelte.d.mts +1 -1
- package/dist/runtime/client-vue.d.mts +1 -1
- package/dist/runtime/client.d.mts +1 -1
- package/dist/runtime/db-mysql.d.mts +2 -0
- package/dist/runtime/db-mysql.mjs +1 -0
- package/dist/runtime/db.d.mts +10 -11
- package/dist/runtime/durable.d.mts +47 -0
- package/dist/runtime/durable.mjs +146 -0
- package/dist/runtime/email/testing.d.mts +112 -0
- package/dist/runtime/email/testing.mjs +283 -0
- package/dist/runtime/email.d.mts +30 -0
- package/dist/runtime/email.mjs +573 -0
- package/dist/runtime/env-helpers.d.mts +2 -2
- package/dist/runtime/env-helpers.mjs +5 -42
- package/dist/runtime/env-public-client.d.mts +10 -11
- package/dist/runtime/env-public-client.mjs +1 -1
- package/dist/runtime/env-public.d.mts +2 -2
- package/dist/runtime/env-public.mjs +104 -49
- package/dist/runtime/env.d.mts +19 -18
- package/dist/runtime/env.mjs +15 -2
- package/dist/runtime/fetch-stream.d.mts +20 -21
- package/dist/runtime/fetch.d.mts +15 -16
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/isr.d.mts +21 -22
- package/dist/runtime/isr.mjs +26 -8
- package/dist/runtime/kv.d.mts +9 -10
- package/dist/runtime/live-client.d.mts +5 -7
- package/dist/runtime/live-client.mjs +9 -7
- package/dist/runtime/live-server.d.mts +4 -5
- package/dist/runtime/live.d.mts +22 -24
- package/dist/runtime/live.mjs +1 -1
- package/dist/runtime/log.d.mts +16 -17
- package/dist/runtime/migration-handler-mysql.d.mts +4 -0
- package/dist/runtime/migration-handler-mysql.mjs +81 -0
- package/dist/runtime/migration-handler-pg.d.mts +2 -4
- package/dist/runtime/migration-handler.d.mts +5 -6
- package/dist/runtime/migration-handler.mjs +4 -3
- package/dist/runtime/queues.d.mts +3 -4
- package/dist/runtime/queues.mjs +2 -1
- package/dist/runtime/remote/binding-handler.d.mts +10 -12
- package/dist/runtime/remote/binding-handler.mjs +24 -3
- package/dist/runtime/remote/index.d.mts +5 -6
- package/dist/runtime/remote/index.mjs +21 -18
- package/dist/runtime/response.d.mts +10 -11
- package/dist/runtime/sandbox.d.mts +56 -55
- package/dist/runtime/sandbox.mjs +57 -49
- package/dist/runtime/schema-mysql.d.mts +1 -0
- package/dist/runtime/schema-mysql.mjs +2 -0
- package/dist/runtime/seed.d.mts +14 -9
- package/dist/runtime/sse-client.d.mts +6 -7
- package/dist/runtime/sse.d.mts +11 -12
- package/dist/runtime/storage.d.mts +3 -4
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +12 -12
- package/dist/runtime/ws-server.mjs +32 -4
- package/dist/runtime/ws.d.mts +19 -21
- package/dist/{scan-ChWt4pX1.mjs → scan-BMH4rzlv.mjs} +42 -19
- package/dist/{scan-NU4xKGci.mjs → scan-CpK-57ug.mjs} +5 -4
- package/dist/{secret-Dt32J6RI.mjs → secret-ByhJ9AMl.mjs} +62 -5
- package/dist/{skills-CLjN0uUO.mjs → skills-Q46GZMO-.mjs} +6 -4
- package/dist/sqlite-validation-BzKMWnO4.mjs +25 -0
- package/dist/{standard-schema-DJ0HW7QP.d.mts → standard-schema-Fo_vCAZh.d.mts} +6 -6
- package/dist/{subcommand-prompt-BzV8iQZo.mjs → subcommand-prompt-WfySCQ7S.mjs} +67 -48
- package/dist/sveltekit.d.mts +12 -11
- package/dist/sveltekit.mjs +1 -1
- package/dist/types-BAp5AEBU.d.mts +79 -0
- package/dist/types-CKWnYgfy.d.mts +1 -0
- package/dist/{validate-Cw_RLeTj.mjs → validate-tBBN_dXH.mjs} +4 -3
- package/dist/wrangler--imS8n0d.mjs +1796 -0
- package/dist/{yarn-pnp-DJn3SAHF.mjs → yarn-pnp-DxSInkzL.mjs} +1 -1
- package/package.json +79 -65
- package/schema.json +22 -3
- package/skills/void/SKILL.md +59 -2
- package/skills/void/docs/guide/ai.md +32 -14
- package/skills/void/docs/guide/app-types.md +6 -6
- package/skills/void/docs/guide/auth.md +14 -16
- package/skills/void/docs/guide/database/d1.md +6 -0
- package/skills/void/docs/guide/database/mysql.md +60 -0
- package/skills/void/docs/guide/database/postgresql.md +14 -9
- package/skills/void/docs/guide/database.md +39 -26
- package/skills/void/docs/guide/deployment.md +99 -25
- package/skills/void/docs/guide/durable-state.md +140 -0
- package/skills/void/docs/guide/edge/headers.md +5 -5
- package/skills/void/docs/guide/edge/prerendering.md +2 -0
- package/skills/void/docs/guide/edge/revalidation.md +21 -6
- package/skills/void/docs/guide/edge/rewrites.md +18 -14
- package/skills/void/docs/guide/edge/static-assets.md +12 -10
- package/skills/void/docs/guide/email.md +640 -0
- package/skills/void/docs/guide/env-migration.md +109 -0
- package/skills/void/docs/guide/env-vars.md +70 -248
- package/skills/void/docs/guide/index.md +15 -17
- package/skills/void/docs/guide/jobs.md +8 -5
- package/skills/void/docs/guide/live.md +7 -15
- package/skills/void/docs/guide/pages-routing/actions-and-forms.md +8 -4
- package/skills/void/docs/guide/pages-routing/islands.md +3 -3
- package/skills/void/docs/guide/pages-routing/loaders.md +6 -4
- package/skills/void/docs/guide/pages-routing/overview.md +7 -7
- package/skills/void/docs/guide/platform-administration.md +212 -0
- package/skills/void/docs/guide/platform-development.md +264 -0
- package/skills/void/docs/guide/queues.md +10 -10
- package/skills/void/docs/guide/quickstart.md +46 -67
- package/skills/void/docs/guide/remote-dev.md +8 -6
- package/skills/void/docs/guide/sandboxes.md +33 -16
- package/skills/void/docs/guide/self-hosted-platform.md +553 -0
- package/skills/void/docs/guide/server-routing.md +5 -5
- package/skills/void/docs/guide/sse.md +4 -4
- package/skills/void/docs/guide/ssg.md +5 -3
- package/skills/void/docs/guide/storage.md +2 -2
- package/skills/void/docs/guide/websockets.md +15 -7
- package/skills/void/docs/index.md +3 -3
- package/skills/void/docs/integrations/agents.md +6 -64
- package/skills/void/docs/integrations/cloudflare.md +165 -146
- package/skills/void/docs/integrations/frameworks/analog.md +4 -4
- package/skills/void/docs/integrations/frameworks/astro.md +5 -5
- package/skills/void/docs/integrations/frameworks/nuxt.md +5 -5
- package/skills/void/docs/integrations/frameworks/overview.md +3 -3
- package/skills/void/docs/integrations/frameworks/react-router.md +3 -3
- package/skills/void/docs/integrations/frameworks/sveltekit.md +3 -3
- package/skills/void/docs/integrations/frameworks/tanstack-start.md +2 -2
- package/skills/void/docs/integrations/nodejs-bun-deno.md +11 -4
- package/skills/void/docs/reference/api.md +42 -6
- package/skills/void/docs/reference/cli.md +665 -160
- package/skills/void/docs/reference/config.md +67 -27
- package/skills/void/docs/reference/resource-inference.md +13 -9
- package/skills/void/docs/reference/structure.md +9 -11
- package/AGENT_PROMPT.md +0 -19
- package/dist/cf-access-Bqw81xAf.mjs +0 -22
- package/dist/env-CZy5MorI.mjs +0 -299
- package/dist/env-helpers-z4stu8uc.d.mts +0 -52
- package/dist/env-mask-Dd47NbR6.mjs +0 -90
- package/dist/env-public-BfiLcMBk.d.mts +0 -140
- package/dist/link-CdGHSIy-.mjs +0 -45
- package/dist/mcp-DoM3_nhd.mjs +0 -377
- package/dist/project-paths-GpziKeQQ.d.mts +0 -25
- package/dist/providers-BNKRacMr.d.mts +0 -7
- package/dist/proxy-D-3_D-Gl.mjs +0 -5
- package/dist/rollback-CkvTFXx5.mjs +0 -90
- package/dist/runtime/isr-cache.d.mts +0 -207
- package/dist/runtime/isr-cache.mjs +0 -523
- package/dist/types-lLjNE9Qp.d.mts +0 -51
- package/getting-started-prompt.txt +0 -28
- package/skills/void/command/void.md +0 -7
- package/skills/void/docs/integrations/auth-providers.md +0 -0
- package/skills/void/docs/integrations/payment-processors.md +0 -0
- package/skills/void/docs/node_modules/@iconify/vue/README.md +0 -408
- package/skills/void/docs/node_modules/@iconify/vue/offline/readme.md +0 -5
- package/skills/void/docs/node_modules/@voidzero-dev/vitepress-theme/README.md +0 -103
- package/skills/void/docs/node_modules/oxc-minify/README.md +0 -78
- package/skills/void/docs/node_modules/reka-ui/README.md +0 -80
- package/skills/void/docs/node_modules/vitepress/README.md +0 -28
- package/skills/void/docs/node_modules/vitepress/template/api-examples.md +0 -49
- package/skills/void/docs/node_modules/vitepress/template/index.md +0 -28
- package/skills/void/docs/node_modules/vitepress/template/markdown-examples.md +0 -85
- package/skills/void/docs/node_modules/vitepress-plugin-group-icons/README.md +0 -101
- package/skills/void/docs/node_modules/void/AGENT_PROMPT.md +0 -19
- package/skills/void/docs/node_modules/void/CLAUDE.md +0 -221
- package/skills/void/docs/node_modules/void/README.md +0 -90
- package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/CHANGELOG.md +0 -685
- package/skills/void/docs/node_modules/void/node_modules/@clack/prompts/README.md +0 -396
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/sandbox/README.md +0 -219
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/vite-plugin/README.md +0 -37
- package/skills/void/docs/node_modules/void/node_modules/@cloudflare/workers-types/README.md +0 -135
- package/skills/void/docs/node_modules/void/node_modules/@electric-sql/pglite/README.md +0 -189
- package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/CHANGELOG.md +0 -143
- package/skills/void/docs/node_modules/void/node_modules/@hono/oauth-providers/README.md +0 -1272
- package/skills/void/docs/node_modules/void/node_modules/@napi-rs/keyring/README.md +0 -19
- package/skills/void/docs/node_modules/void/node_modules/@types/better-sqlite3/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@types/node/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@types/pg/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@types/proper-lockfile/README.md +0 -51
- package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/README.md +0 -22
- package/skills/void/docs/node_modules/void/node_modules/@typescript/native-preview/vendor/vscode-jsonrpc/README.md +0 -69
- package/skills/void/docs/node_modules/void/node_modules/@void/md/README.md +0 -153
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/engine-javascript/README.md +0 -9
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@shikijs/transformers/README.md +0 -9
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/@types/node/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/CHANGELOG.md +0 -24
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/gray-matter/README.md +0 -565
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-exit/README.md +0 -127
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-anchor/README.md +0 -600
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-attrs/README.md +0 -386
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-container/README.md +0 -95
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-emoji/README.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/markdown-it-footnote/README.md +0 -135
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/pathslash/README.md +0 -64
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/shiki/README.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/tinyglobby/README.md +0 -25
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/AGENTS.md +0 -16
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/README.md +0 -220
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/build.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/check.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/create.md +0 -70
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/fmt.md +0 -20
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/index.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/lint.md +0 -26
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/pack.md +0 -17
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/run.md +0 -364
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/staged.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/config/test.md +0 -18
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/automatic-data-tracking.md +0 -145
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/build.md +0 -40
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/cache.md +0 -107
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/check.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/ci.md +0 -62
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/commit-hooks.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/create.md +0 -341
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/dev.md +0 -24
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/docker.md +0 -175
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/env.md +0 -167
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/fmt.md +0 -41
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/github-actions-cache.md +0 -165
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/ide-integration.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/implode.md +0 -23
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/index.md +0 -134
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/install.md +0 -199
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/lint.md +0 -50
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/migrate-rules.md +0 -347
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/migrate.md +0 -197
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/monorepo.md +0 -176
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/pack.md +0 -69
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/run.md +0 -356
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/test.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/troubleshooting.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/upgrade.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/vpx.md +0 -66
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/guide/why.md +0 -39
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/index.md +0 -12
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/docs/team.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/templates/generator/README.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vite-plus/templates/monorepo/README.md +0 -29
- package/skills/void/docs/node_modules/void/node_modules/@void/md/node_modules/vue/README.md +0 -58
- package/skills/void/docs/node_modules/void/node_modules/arktype/README.md +0 -165
- package/skills/void/docs/node_modules/void/node_modules/better-auth/LICENSE.md +0 -20
- package/skills/void/docs/node_modules/void/node_modules/better-auth/README.md +0 -32
- package/skills/void/docs/node_modules/void/node_modules/better-sqlite3/README.md +0 -99
- package/skills/void/docs/node_modules/void/node_modules/blake3-jit/README.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/drizzle-arktype/README.md +0 -51
- package/skills/void/docs/node_modules/void/node_modules/drizzle-kit/README.md +0 -79
- package/skills/void/docs/node_modules/void/node_modules/drizzle-orm/README.md +0 -44
- package/skills/void/docs/node_modules/void/node_modules/drizzle-valibot/README.md +0 -51
- package/skills/void/docs/node_modules/void/node_modules/drizzle-zod/README.md +0 -65
- package/skills/void/docs/node_modules/void/node_modules/es-module-lexer/README.md +0 -403
- package/skills/void/docs/node_modules/void/node_modules/estree-walker/README.md +0 -48
- package/skills/void/docs/node_modules/void/node_modules/hono/README.md +0 -85
- package/skills/void/docs/node_modules/void/node_modules/ignore/README.md +0 -452
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/CHANGELOG.md +0 -76
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/LICENSE.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/README.md +0 -364
- package/skills/void/docs/node_modules/void/node_modules/jsonc-parser/SECURITY.md +0 -41
- package/skills/void/docs/node_modules/void/node_modules/magic-string/README.md +0 -325
- package/skills/void/docs/node_modules/void/node_modules/ofetch/README.md +0 -398
- package/skills/void/docs/node_modules/void/node_modules/pathslash/README.md +0 -64
- package/skills/void/docs/node_modules/void/node_modules/pg/README.md +0 -96
- package/skills/void/docs/node_modules/void/node_modules/pglite-server/README.md +0 -135
- package/skills/void/docs/node_modules/void/node_modules/picocolors/README.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/proper-lockfile/CHANGELOG.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/proper-lockfile/README.md +0 -183
- package/skills/void/docs/node_modules/void/node_modules/tinyglobby/README.md +0 -25
- package/skills/void/docs/node_modules/void/node_modules/valibot/LICENSE.md +0 -9
- package/skills/void/docs/node_modules/void/node_modules/valibot/README.md +0 -94
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/AGENTS.md +0 -16
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/README.md +0 -220
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/build.md +0 -21
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/check.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/create.md +0 -70
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/fmt.md +0 -20
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/index.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/lint.md +0 -26
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/pack.md +0 -17
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/run.md +0 -364
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/staged.md +0 -15
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/config/test.md +0 -18
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/automatic-data-tracking.md +0 -145
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/build.md +0 -40
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/cache.md +0 -107
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/check.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/ci.md +0 -62
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/commit-hooks.md +0 -60
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/create.md +0 -341
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/dev.md +0 -24
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/docker.md +0 -175
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/env.md +0 -167
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/fmt.md +0 -41
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/github-actions-cache.md +0 -165
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/ide-integration.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/implode.md +0 -23
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/index.md +0 -134
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/install.md +0 -199
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/lint.md +0 -50
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/migrate-rules.md +0 -347
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/migrate.md +0 -197
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/monorepo.md +0 -176
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/pack.md +0 -69
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/run.md +0 -356
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/test.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/troubleshooting.md +0 -108
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/upgrade.md +0 -101
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/vpx.md +0 -66
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/guide/why.md +0 -39
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/index.md +0 -12
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/docs/team.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/templates/generator/README.md +0 -35
- package/skills/void/docs/node_modules/void/node_modules/vite-plus/templates/monorepo/README.md +0 -29
- package/skills/void/docs/node_modules/void/node_modules/wrangler/README.md +0 -63
- package/skills/void/docs/node_modules/void/node_modules/zod/README.md +0 -191
- package/skills/void/docs/node_modules/void/skills/migrate-vite-cloudflare-to-void/SKILL.md +0 -175
- package/skills/void/docs/node_modules/void/skills/void/SKILL.md +0 -76
- package/skills/void/docs/node_modules/void/skills/void/command/void.md +0 -7
- package/skills/void/docs/node_modules/void/test/e2e/README.md +0 -85
|
@@ -8,7 +8,7 @@ outline: deep
|
|
|
8
8
|
Void-managed auth currently works only for Void apps. Meta-framework mode is not supported yet.
|
|
9
9
|
:::
|
|
10
10
|
|
|
11
|
-
Void
|
|
11
|
+
Void configures [Better Auth](https://www.better-auth.com/) for your app, including its database connection, API routes, and client. Start with email and password, or add a social login provider.
|
|
12
12
|
|
|
13
13
|
## Quick Start
|
|
14
14
|
|
|
@@ -49,7 +49,7 @@ await auth.signIn.email({
|
|
|
49
49
|
|
|
50
50
|
### 3. Protect a server route
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
Call `requireAuth` in a route handler or page loader that needs a signed-in user. It returns that user, or throws `401` if the request isn't authenticated:
|
|
53
53
|
|
|
54
54
|
```ts
|
|
55
55
|
// routes/api/profile.ts
|
|
@@ -136,7 +136,7 @@ await auth.signIn.email({
|
|
|
136
136
|
await auth.signOut();
|
|
137
137
|
```
|
|
138
138
|
|
|
139
|
-
The
|
|
139
|
+
The client uses Better Auth's API, configured at `/api/auth`.
|
|
140
140
|
|
|
141
141
|
See the official [Better Auth client docs](https://www.better-auth.com/docs/concepts/client) for the full client API.
|
|
142
142
|
|
|
@@ -220,9 +220,9 @@ When auth is active, Void configures Better Auth with these conventions:
|
|
|
220
220
|
|
|
221
221
|
Auth sessions live in the same database system as the rest of the app. `AUTH_KV` is no longer used.
|
|
222
222
|
|
|
223
|
-
On
|
|
223
|
+
On both deployment targets, Void keeps an existing `BETTER_AUTH_SECRET` or generates one when it's missing. The value is stored as an encrypted Worker secret and reused by later versions.
|
|
224
224
|
|
|
225
|
-
Localhost
|
|
225
|
+
Localhost development uses a built-in fallback secret automatically. Production deployment through Void manages the secret lifecycle for you.
|
|
226
226
|
|
|
227
227
|
## Customization
|
|
228
228
|
|
|
@@ -243,19 +243,17 @@ For the full set of available options, see the official [Better Auth options ref
|
|
|
243
243
|
|
|
244
244
|
## Database and Migrations
|
|
245
245
|
|
|
246
|
-
|
|
246
|
+
Auth tables live alongside your app's tables. During local development, Void creates them automatically.
|
|
247
247
|
|
|
248
|
-
|
|
249
|
-
- deploy runs auth migrations together with app migrations
|
|
250
|
-
- users do not run a separate Better Auth CLI path
|
|
248
|
+
A Void platform deploy creates the Better Auth tables at runtime after dispatch. A direct Cloudflare deploy requires those tables in your checked-in migrations. Generate them with:
|
|
251
249
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
250
|
+
```sh
|
|
251
|
+
void db generate
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Void adds the production Better Auth schema, including configured model names and plugin tables, to Drizzle's migration input. Review and commit the SQL before deploying. You don't need to duplicate the auth tables in `db/schema.ts` or run a separate Better Auth CLI.
|
|
255
|
+
|
|
256
|
+
MySQL stores OAuth access, refresh, and ID tokens as unbounded text. Existing direct-deploy MySQL apps should run `void db generate` once after upgrading to widen earlier `varchar(255)` token columns. Void platform deployments apply the same safe widening automatically.
|
|
259
257
|
|
|
260
258
|
## Unsupported Modes
|
|
261
259
|
|
|
@@ -21,6 +21,12 @@ For write-heavy workloads, complex queries, or connecting to existing infrastruc
|
|
|
21
21
|
|
|
22
22
|
None. D1 is the default dialect, so you can start by defining your schema and querying.
|
|
23
23
|
|
|
24
|
+
## Local Database
|
|
25
|
+
|
|
26
|
+
`void dev` and local `void db` commands share the same database. If your root `wrangler.jsonc` or `wrangler.json` already declares the D1 binding, Void uses its ID. A `preview_database_id` takes precedence during local development.
|
|
27
|
+
|
|
28
|
+
To store local data outside `.void`, set `voidPlugin({ persistTo: 'local-state' })` in your Vite config. Start `void dev` once to record that directory before running database commands. After changing the Vite config, start `void dev` again to refresh it. Frameworks that manage their own Cloudflare runtime use `.wrangler/state`.
|
|
29
|
+
|
|
24
30
|
## Migrations & Prototyping
|
|
25
31
|
|
|
26
32
|
Void offers two workflows for applying schema changes.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
outline: deep
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# MySQL
|
|
6
|
+
|
|
7
|
+
Void supports MySQL through [Cloudflare Hyperdrive](https://developers.cloudflare.com/hyperdrive/). You bring a MySQL-compatible database; Void provides the Drizzle runtime, local tooling, migration workflow, and deployment wiring.
|
|
8
|
+
|
|
9
|
+
## Configure
|
|
10
|
+
|
|
11
|
+
Set the dialect in `void.json`:
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
{
|
|
15
|
+
"database": "mysql"
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Add a direct connection for local development:
|
|
20
|
+
|
|
21
|
+
```dotenv
|
|
22
|
+
DATABASE_URL=mysql://user:password@host:3306/app
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Void reads `.env` for `void dev` and `void db` commands. In production, the Worker connects through the inferred `HYPERDRIVE` binding.
|
|
26
|
+
|
|
27
|
+
## Define a schema
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
// db/schema.ts
|
|
31
|
+
import { int, mysqlTable, text, timestamp } from 'void/schema-mysql';
|
|
32
|
+
|
|
33
|
+
export const messages = mysqlTable('messages', {
|
|
34
|
+
id: int('id').autoincrement().primaryKey(),
|
|
35
|
+
text: text('text').notNull(),
|
|
36
|
+
createdAt: timestamp('created_at').notNull().defaultNow(),
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`void gen model` generates MySQL builders automatically when the project uses the MySQL dialect.
|
|
41
|
+
|
|
42
|
+
## Migrations
|
|
43
|
+
|
|
44
|
+
Use the normal workflow:
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
void db generate
|
|
48
|
+
void db migrate
|
|
49
|
+
void deploy
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
For direct Cloudflare deploys, export the production `DATABASE_URL` in the shell running `void deploy --platform cloudflare`. Void uses it to provision Hyperdrive and apply pending checked-in migrations before uploading the Worker; it is not written to the Worker config.
|
|
53
|
+
|
|
54
|
+
::: warning MySQL DDL is not transactional
|
|
55
|
+
MySQL may implicitly commit schema changes. If a multi-statement migration fails partway through, earlier statements can remain applied even though Void does not record the migration as complete. Keep migrations small, review them before deploy, and make failed migrations safe to rerun after repairing the database.
|
|
56
|
+
:::
|
|
57
|
+
|
|
58
|
+
## Database commands
|
|
59
|
+
|
|
60
|
+
`void db push`, `generate`, `migrate`, `status`, `reset`, `seed`, `execute`, `studio`, `export`, `rename-migrations`, and `set-url` all understand MySQL. Local commands use `DATABASE_URL` from `.env`; `--remote` execution and Studio use the encrypted URL stored for a linked Void project.
|
|
@@ -4,13 +4,13 @@ outline: deep
|
|
|
4
4
|
|
|
5
5
|
# PostgreSQL
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Connect your PostgreSQL database through [Cloudflare Hyperdrive](https://developers.cloudflare.com/hyperdrive/), then use the same Drizzle schema and query workflow as D1.
|
|
8
8
|
|
|
9
9
|
## What is Hyperdrive?
|
|
10
10
|
|
|
11
|
-
Hyperdrive
|
|
11
|
+
Hyperdrive pools connections between your Worker and PostgreSQL. Requests reuse an existing connection instead of opening a new TCP and TLS connection each time.
|
|
12
12
|
|
|
13
|
-
Void
|
|
13
|
+
Void can provision the Hyperdrive configuration from your connection string. Direct Cloudflare deploys also need an API token for first-time provisioning; see the [Cloudflare guide](../../integrations/cloudflare.md#databases-and-secrets).
|
|
14
14
|
|
|
15
15
|
## Configuration
|
|
16
16
|
|
|
@@ -26,7 +26,7 @@ Add to your `void.json`:
|
|
|
26
26
|
|
|
27
27
|
### 2. Add your connection string
|
|
28
28
|
|
|
29
|
-
For local development, add `DATABASE_URL` to `.env
|
|
29
|
+
For local development, add `DATABASE_URL` to `.env`:
|
|
30
30
|
|
|
31
31
|
```
|
|
32
32
|
DATABASE_URL=postgresql://user:password@host:5432/mydb?sslmode=require
|
|
@@ -36,17 +36,17 @@ This connects directly to your Postgres database during local Vite development.
|
|
|
36
36
|
|
|
37
37
|
### 3. Deploy
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
When deploying to a Void platform, the CLI asks for a connection string if Hyperdrive isn't configured:
|
|
40
40
|
|
|
41
41
|
```
|
|
42
42
|
Your project uses PostgreSQL. Enter your connection string:
|
|
43
43
|
> postgresql://user:password@host:5432/mydb?sslmode=require
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
Void provisions
|
|
46
|
+
Void provisions Hyperdrive and records its config ID. The connection string isn't written to `wrangler.jsonc` or generated Worker config.
|
|
47
47
|
Both `postgres://` and `postgresql://` URLs are supported, including provider-supplied query strings such as `?sslmode=require`.
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
For a linked Void project, you can also configure the connection with `void db set-url`. For a direct Cloudflare deploy, export the production `DATABASE_URL` in your shell.
|
|
50
50
|
|
|
51
51
|
## Schema Definition
|
|
52
52
|
|
|
@@ -88,7 +88,7 @@ The main difference is that PostgreSQL supports **transactional DDL**. Each migr
|
|
|
88
88
|
|
|
89
89
|
## Deploy Workflow
|
|
90
90
|
|
|
91
|
-
When
|
|
91
|
+
When deploying a PostgreSQL project to a Void platform:
|
|
92
92
|
|
|
93
93
|
1. The app is built
|
|
94
94
|
2. Migration files are collected from `db/migrations/`
|
|
@@ -96,9 +96,14 @@ When you run `void deploy` with a PostgreSQL project:
|
|
|
96
96
|
4. Pending migrations run inside the deployed worker via Hyperdrive
|
|
97
97
|
5. The new worker goes live
|
|
98
98
|
|
|
99
|
+
When deploying to your own account with `void deploy --platform cloudflare`, export the production
|
|
100
|
+
connection string as `DATABASE_URL`. Void uses it to provision Hyperdrive and apply the checked-in
|
|
101
|
+
migrations transactionally before it uploads the Worker. The connection string is not written to
|
|
102
|
+
`wrangler.jsonc` or the generated Worker config.
|
|
103
|
+
|
|
99
104
|
## Updating the Connection String
|
|
100
105
|
|
|
101
|
-
To update
|
|
106
|
+
To update a linked Void project's connection, for example after moving the database to another host:
|
|
102
107
|
|
|
103
108
|
```bash
|
|
104
109
|
void db set-url
|
|
@@ -33,26 +33,26 @@ const dbFileItems = [
|
|
|
33
33
|
|
|
34
34
|
# Database
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Define your tables in TypeScript, then query them with `db` from `void/db`. Void includes [Drizzle ORM](https://orm.drizzle.team) and configures the connection, so you can use the same schema and query workflow with D1, PostgreSQL, or MySQL.
|
|
37
37
|
|
|
38
38
|
<FileTree :items="dbFileItems" default-expanded />
|
|
39
39
|
|
|
40
40
|
## Choosing a Dialect
|
|
41
41
|
|
|
42
|
-
Void supports
|
|
42
|
+
Void supports three database backends. All use the same Drizzle-based workflow for schema definition, querying, and migrations.
|
|
43
43
|
|
|
44
|
-
`void init` can start you with D1, PostgreSQL, or no database yet.
|
|
44
|
+
`void init` can start you with D1, PostgreSQL, MySQL, or no database yet. D1 stays implicit; PostgreSQL writes `"database": "pg"`; MySQL writes `"database": "mysql"`.
|
|
45
45
|
|
|
46
|
-
| | [D1 (SQLite)](./database/d1) | [PostgreSQL](./database/postgresql)
|
|
47
|
-
| ---------- | ---------------------------- |
|
|
48
|
-
| Config | Default
|
|
49
|
-
| Managed by | Void
|
|
50
|
-
| Best for |
|
|
51
|
-
| Connection | Automatic D1 binding | Hyperdrive
|
|
46
|
+
| | [D1 (SQLite)](./database/d1) | [PostgreSQL](./database/postgresql) | [MySQL](./database/mysql) |
|
|
47
|
+
| ---------- | ---------------------------- | ----------------------------------- | ----------------------------- |
|
|
48
|
+
| Config | Default | `"database": "pg"` | `"database": "mysql"` |
|
|
49
|
+
| Managed by | Void | Bring your own database | Bring your own database |
|
|
50
|
+
| Best for | Prototypes, read-heavy apps | Complex queries, existing Postgres | Existing MySQL infrastructure |
|
|
51
|
+
| Connection | Automatic D1 binding | Hyperdrive | Hyperdrive |
|
|
52
52
|
|
|
53
53
|
## Schema Definition
|
|
54
54
|
|
|
55
|
-
Define your tables in `db/schema.ts` using column helpers from `void/schema-d1` or `void/schema-
|
|
55
|
+
Define your tables in `db/schema.ts` using column helpers from `void/schema-d1`, `void/schema-pg`, or `void/schema-mysql`.
|
|
56
56
|
|
|
57
57
|
::: code-group
|
|
58
58
|
|
|
@@ -85,9 +85,21 @@ export const users = pgTable('users', {
|
|
|
85
85
|
});
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
+
```ts [MySQL]
|
|
89
|
+
// db/schema.ts
|
|
90
|
+
import { int, mysqlTable, text, timestamp } from 'void/schema-mysql';
|
|
91
|
+
|
|
92
|
+
export const users = mysqlTable('users', {
|
|
93
|
+
id: int('id').autoincrement().primaryKey(),
|
|
94
|
+
name: text('name').notNull(),
|
|
95
|
+
email: text('email').notNull(),
|
|
96
|
+
createdAt: timestamp('created_at').notNull().defaultNow(),
|
|
97
|
+
});
|
|
98
|
+
```
|
|
99
|
+
|
|
88
100
|
:::
|
|
89
101
|
|
|
90
|
-
|
|
102
|
+
The schema helpers are included in `void`. You can write tables yourself or generate a starting point with `void gen model`.
|
|
91
103
|
|
|
92
104
|
You can also split your schema across multiple files under `db/schema/` and re-export from a barrel file:
|
|
93
105
|
|
|
@@ -245,7 +257,7 @@ If more than one default seed file exists, pass `--file <path>` explicitly.
|
|
|
245
257
|
|
|
246
258
|
### Programmatic seeding
|
|
247
259
|
|
|
248
|
-
`db/seed.ts`
|
|
260
|
+
Use `db/seed.ts` when you want to generate seed data in code. Export a default function or a named `seed` function.
|
|
249
261
|
|
|
250
262
|
```ts
|
|
251
263
|
// db/seed.ts
|
|
@@ -276,7 +288,7 @@ INSERT INTO messages (text) VALUES ('Hello from SQL');
|
|
|
276
288
|
|
|
277
289
|
## Schema-Derived Validators
|
|
278
290
|
|
|
279
|
-
|
|
291
|
+
You can derive request validators from your Drizzle tables with [`void/drizzle-zod`](../reference/api.md#user-facing-imports), [`void/drizzle-valibot`](../reference/api.md#user-facing-imports), or [`void/drizzle-arktype`](../reference/api.md#user-facing-imports). These adapters use Void's bundled Drizzle version, keeping the validators compatible with your table types.
|
|
280
292
|
|
|
281
293
|
::: code-group
|
|
282
294
|
|
|
@@ -385,24 +397,25 @@ npm install arktype
|
|
|
385
397
|
|
|
386
398
|
## CLI Commands
|
|
387
399
|
|
|
388
|
-
| Command | Purpose
|
|
389
|
-
| ------------------ |
|
|
390
|
-
| `void db push` | Apply schema directly to local database (no migration files)
|
|
391
|
-
| `void db
|
|
392
|
-
| `void db
|
|
393
|
-
| `void db
|
|
394
|
-
| `void db
|
|
395
|
-
| `void db
|
|
396
|
-
| `void db
|
|
397
|
-
| `void db
|
|
398
|
-
| `void db
|
|
399
|
-
| `void db
|
|
400
|
+
| Command | Purpose |
|
|
401
|
+
| ------------------ | --------------------------------------------------------------- |
|
|
402
|
+
| `void db push` | Apply schema directly to local database (no migration files) |
|
|
403
|
+
| `void db connect` | Connect or provision PostgreSQL/MySQL and save `DATABASE_URL` |
|
|
404
|
+
| `void db generate` | Generate app and Better Auth SQL migrations for production |
|
|
405
|
+
| `void db migrate` | Apply pending migrations locally |
|
|
406
|
+
| `void db status` | Show schema drift and pending migrations |
|
|
407
|
+
| `void db reset` | Drop the local DB and re-apply all migrations |
|
|
408
|
+
| `void db seed` | Reset + run seed file (`--file <path>`) |
|
|
409
|
+
| `void db execute` | Run ad-hoc SQL against local DB (`--file <path>`) |
|
|
410
|
+
| `void db studio` | Open Drizzle Studio for the local database |
|
|
411
|
+
| `void db export` | Dump local DB as SQL (`--output`, `--no-data`, `--no-schema`) |
|
|
412
|
+
| `void db set-url` | Update the PostgreSQL or MySQL connection string for deployment |
|
|
400
413
|
|
|
401
414
|
See the [CLI reference](../reference/cli.md#database) for details.
|
|
402
415
|
|
|
403
416
|
## Scaffolding
|
|
404
417
|
|
|
405
|
-
The `void gen model` command
|
|
418
|
+
The `void gen model` command generates dialect-appropriate `sqliteTable`, `pgTable`, or `mysqlTable` definitions.
|
|
406
419
|
|
|
407
420
|
```bash
|
|
408
421
|
void gen model post title:string body:text published:boolean
|
|
@@ -4,18 +4,61 @@ outline: deep
|
|
|
4
4
|
|
|
5
5
|
# Deployment
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Use `void deploy` to deploy your app to your own Cloudflare account or a Void platform run by your team. The CLI builds your app, creates the resources it needs, and applies your database migrations.
|
|
8
|
+
|
|
9
|
+
Choose Cloudflare if you're deploying an app yourself. Choose Void if your team has a shared platform you can connect to. You can also [install a Void platform](./self-hosted-platform.md) in your company's Cloudflare account.
|
|
10
|
+
|
|
11
|
+
## Beta Support
|
|
12
|
+
|
|
13
|
+
Direct Cloudflare deployment runs an application in your account. A self-hosted
|
|
14
|
+
Void platform provides that deployment service to a team using the operator's
|
|
15
|
+
account. Both use the same application APIs, with the following differences:
|
|
16
|
+
|
|
17
|
+
| Feature | Direct Cloudflare | Core self-hosted platform |
|
|
18
|
+
| ------------------------------------------------ | -------------------------------- | ----------------------------------------- |
|
|
19
|
+
| Static sites, SPAs, and native Pages SSR | Supported | Supported |
|
|
20
|
+
| Routing rules, WebSockets, queues, cron, and ISR | Supported | Supported |
|
|
21
|
+
| D1, KV, R2, and external SQL through Hyperdrive | Supported | Supported |
|
|
22
|
+
| Workers AI and provider requests | Your account and gateway | Installation gateway and proxy |
|
|
23
|
+
| Runtime logs | Live Cloudflare tail | Retained platform logs |
|
|
24
|
+
| Application rollback | Worker versions | Retained platform deployments |
|
|
25
|
+
| Typed Durable State | Supported | Unavailable |
|
|
26
|
+
| Sandboxes | Requires Workers Paid and Docker | Unavailable in beta |
|
|
27
|
+
| Custom application domains | Supported | Unavailable in the core installation |
|
|
28
|
+
| Generated GitHub deployment workflow | Supported | Use your CI with a scoped developer token |
|
|
29
|
+
| User dashboard and managed GitHub builds | Not required | Not included in a standard installation |
|
|
30
|
+
|
|
31
|
+
Ordinary native applications remain compatible with Workers Free within its
|
|
32
|
+
quotas. Installing a team platform requires Workers for Platforms and the
|
|
33
|
+
[documented infrastructure](./self-hosted-platform.md#cloudflare-footprint).
|
|
34
|
+
Application rollback never reverses database migrations.
|
|
35
|
+
|
|
36
|
+
Routing-rule parity applies to native Void applications and static deployments.
|
|
37
|
+
Framework-owned Worker output uses its framework's routing and asset policy;
|
|
38
|
+
unsupported Void routing rules are rejected before direct deployment.
|
|
39
|
+
|
|
40
|
+
Use matching CLI and framework adapter versions. For a team platform, the available features depend on its installed version and configuration. Ask your administrator if a feature is unavailable or an upgrade is required.
|
|
8
41
|
|
|
9
42
|
## CLI
|
|
10
43
|
|
|
11
44
|
### First deploy
|
|
12
45
|
|
|
13
46
|
```bash
|
|
14
|
-
void init
|
|
15
|
-
void deploy
|
|
47
|
+
void init # choose Cloudflare (default), Void, or Skip deployment setup
|
|
48
|
+
void deploy # builds and deploys to the saved platform
|
|
16
49
|
```
|
|
17
50
|
|
|
18
|
-
|
|
51
|
+
During setup, Void asks where you want to deploy:
|
|
52
|
+
|
|
53
|
+
- **Cloudflare:** sign in through your browser and choose an account. Void saves the account in `wrangler.jsonc`.
|
|
54
|
+
- **Void:** connect to a platform, sign in, and link or create a project.
|
|
55
|
+
- **Skip:** set up deployment later with `void connect`.
|
|
56
|
+
|
|
57
|
+
Your choice is saved in `.void/project.json`, so the next deploy is just `void deploy`.
|
|
58
|
+
|
|
59
|
+
Already have a Cloudflare Worker and a root `wrangler.jsonc` or `wrangler.json`? Run `void deploy`. If no destination is selected, Void offers to link and deploy using the existing Worker and resources. Accept once to keep deploying to that site. See [Deploy an existing Worker](../integrations/cloudflare.md#deploy-an-existing-worker) for the first-deployment checks.
|
|
60
|
+
|
|
61
|
+
To connect to your team's platform and sign in, run `void connect <url>` using the URL from your administrator. Use `void connect --platform cloudflare` to set up your own Cloudflare account. Connecting preserves existing project links. New Void projects need a platform connection.
|
|
19
62
|
|
|
20
63
|
### Migrations
|
|
21
64
|
|
|
@@ -23,33 +66,34 @@ If your app uses Drizzle, `void deploy` runs migrations as part of the deploy fl
|
|
|
23
66
|
|
|
24
67
|
1. Build the app
|
|
25
68
|
2. Read SQL migrations from `db/migrations/`
|
|
26
|
-
3.
|
|
69
|
+
3. Check that the migrations match your current schema
|
|
27
70
|
4. Apply pending migrations to the target database
|
|
28
71
|
5. Make the new deploy live
|
|
29
72
|
|
|
30
|
-
|
|
73
|
+
If you've changed your schema without a matching migration, deploy stops. Run `void db generate`, review and commit the SQL, then deploy again. For the full database workflow and backend-specific details, see the [Database guide](./database.md).
|
|
31
74
|
|
|
32
75
|
### Flags
|
|
33
76
|
|
|
34
77
|
```bash
|
|
35
|
-
void deploy [--project <name>] [--dir <path>] [--spa]
|
|
78
|
+
void deploy [--platform <cloudflare|void>] [--project <name>] [--dir <path>] [--spa]
|
|
36
79
|
```
|
|
37
80
|
|
|
38
|
-
| Flag
|
|
39
|
-
|
|
|
40
|
-
| `--
|
|
41
|
-
| `--
|
|
42
|
-
| `--
|
|
81
|
+
| Flag | Purpose |
|
|
82
|
+
| ------------------------------- | ------------------------------------------------- |
|
|
83
|
+
| `--platform <cloudflare\|void>` | Override the saved deployment platform |
|
|
84
|
+
| `--project <name>` | Target a specific Void project by slug |
|
|
85
|
+
| `--dir <path>` | Deploy a pre-built static directory (skips build) |
|
|
86
|
+
| `--spa` | Use SPA mode instead of SSG for static deploys |
|
|
43
87
|
|
|
44
88
|
### Project resolution
|
|
45
89
|
|
|
46
|
-
|
|
90
|
+
For a Void platform deploy, the CLI chooses the project in this order:
|
|
47
91
|
|
|
48
92
|
1. `--project <name>` flag
|
|
49
93
|
2. `VOID_PROJECT` environment variable
|
|
50
94
|
3. Linked project in `.void/project.json`
|
|
51
95
|
|
|
52
|
-
If none
|
|
96
|
+
If none is set, Void asks you to choose a project. Direct Cloudflare deploys use the Worker and account saved in your Cloudflare config.
|
|
53
97
|
|
|
54
98
|
### CI preparation
|
|
55
99
|
|
|
@@ -64,11 +108,19 @@ If your CI pipeline runs typechecking or other static analysis before deploy, ru
|
|
|
64
108
|
|
|
65
109
|
## GitHub
|
|
66
110
|
|
|
67
|
-
You can deploy from a GitHub repo on every push to `main`. Running `void init --github` generates `.github/workflows/void-deploy.yml` in
|
|
111
|
+
You can deploy from a GitHub repo on every push to `main`. Running `void init --github` generates `.github/workflows/void-deploy.yml` for the platform saved in `.void/project.json`.
|
|
112
|
+
|
|
113
|
+
For Cloudflare, add `CLOUDFLARE_API_TOKEN` to your repository secrets. The token needs access to the account and products your app uses. PostgreSQL and MySQL apps also need a `DATABASE_URL` secret.
|
|
114
|
+
|
|
115
|
+
If your Worker has no version preview URL, set the `CLOUDFLARE_WORKERS_SUBDOMAIN` repository variable. If Cloudflare Access protects the Worker, also add `CF_ACCESS_CLIENT_ID` and `CF_ACCESS_CLIENT_SECRET` secrets so Void can check that a deployment is ready. See [Cloudflare deployment](../integrations/cloudflare.md#deploy-to-your-own-cloudflare-account) for the setup details.
|
|
68
116
|
|
|
69
|
-
|
|
117
|
+
Void platforms with GitHub Actions support use short-lived GitHub OIDC credentials. You don't need to store a `VOID_TOKEN` for that workflow.
|
|
70
118
|
|
|
71
|
-
|
|
119
|
+
### Void GitHub App
|
|
120
|
+
|
|
121
|
+
If your platform supports managed GitHub builds, the Void GitHub App can build and deploy your app when you push. This feature requires a platform with a configured GitHub App and build Containers; it isn't included in a core self-hosted installation.
|
|
122
|
+
|
|
123
|
+
You don't need a deployment workflow file or a repository `VOID_TOKEN` for this path.
|
|
72
124
|
|
|
73
125
|
1. Initialize your Void project
|
|
74
126
|
|
|
@@ -84,7 +136,7 @@ void project link
|
|
|
84
136
|
void github install
|
|
85
137
|
```
|
|
86
138
|
|
|
87
|
-
|
|
139
|
+
Void opens GitHub so you can install and authorize the `Void Deploy` app.
|
|
88
140
|
|
|
89
141
|
In the browser, select the GitHub account/organization and grant access to the repository.
|
|
90
142
|
|
|
@@ -103,13 +155,15 @@ void github join
|
|
|
103
155
|
void github connect --executor container
|
|
104
156
|
```
|
|
105
157
|
|
|
158
|
+
Organization installations always require a browser proof for the specific repository, including for the person who installed the App. Void does not reveal the installation's full private repository list. If an upgraded platform marks an older organization connection as requiring reconnection, run the same `void github connect` command again to renew that repository-scoped authorization before builds resume.
|
|
159
|
+
|
|
106
160
|
4. Verify the connection
|
|
107
161
|
|
|
108
162
|
```bash
|
|
109
163
|
void github status
|
|
110
164
|
```
|
|
111
165
|
|
|
112
|
-
|
|
166
|
+
The output shows the repository, branch, and build executor:
|
|
113
167
|
|
|
114
168
|
```bash
|
|
115
169
|
Repository <owner/repository>
|
|
@@ -133,7 +187,9 @@ void build logs --follow
|
|
|
133
187
|
|
|
134
188
|
### GitHub Actions
|
|
135
189
|
|
|
136
|
-
|
|
190
|
+
On platforms that support it, the generated workflow uses [GitHub OIDC](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect) to obtain a short-lived deploy token for your project. `void deploy` handles the exchange automatically. Keep `permissions: id-token: write` in the workflow so GitHub can issue that credential.
|
|
191
|
+
|
|
192
|
+
The generated workflow uses the platform selected during `void init`. Core self-hosted installations don't yet support this integration, so Void doesn't offer the workflow for them. For a platform that does, the npm version looks like this; set the repository's `VOID_API_URL` variable to your platform's API URL:
|
|
137
193
|
|
|
138
194
|
```yaml
|
|
139
195
|
name: Deploy to Void
|
|
@@ -152,7 +208,7 @@ permissions:
|
|
|
152
208
|
contents: read
|
|
153
209
|
|
|
154
210
|
env:
|
|
155
|
-
VOID_API_URL: ${{ vars.VOID_API_URL
|
|
211
|
+
VOID_API_URL: ${{ vars.VOID_API_URL }}
|
|
156
212
|
VOID_PROJECT: my-app
|
|
157
213
|
|
|
158
214
|
jobs:
|
|
@@ -166,13 +222,31 @@ jobs:
|
|
|
166
222
|
cache: npm
|
|
167
223
|
- run: npm ci
|
|
168
224
|
- name: Deploy
|
|
169
|
-
run: npx void deploy --project "$VOID_PROJECT"
|
|
225
|
+
run: npx void deploy --platform void --project "$VOID_PROJECT"
|
|
170
226
|
```
|
|
171
227
|
|
|
172
|
-
|
|
228
|
+
Authorize the repository once with `void github connect <project> --repo <owner/repo> --executor github_actions`. Choose the `github_actions` executor for this workflow; `container` runs builds on the platform instead.
|
|
229
|
+
|
|
230
|
+
The generated workflow uses your package manager and linked project. If no project is linked, it reads the `VOID_PROJECT` repository variable.
|
|
173
231
|
|
|
174
232
|
## Other Targets
|
|
175
233
|
|
|
176
|
-
|
|
234
|
+
### Your own Cloudflare account
|
|
235
|
+
|
|
236
|
+
Select Cloudflare during setup, or run:
|
|
237
|
+
|
|
238
|
+
```sh
|
|
239
|
+
void deploy --platform cloudflare
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Void supports full Worker apps, static sites, SPAs, and Cloudflare builds from supported frameworks. It provisions resources, applies migrations, and manages secrets for you. `.env` stays local; production server keys declared in `env.ts` must exist in encrypted remote secret storage and are rejected as plaintext Worker vars. Commands such as `void secret put`, `void project logs`, and `void project rollback` then use the same account and Worker.
|
|
243
|
+
|
|
244
|
+
See the [Cloudflare guide](../integrations/cloudflare.md#deploy-to-your-own-cloudflare-account) for supported features, CI setup, and deployment limits.
|
|
245
|
+
|
|
246
|
+
### Node.js, Bun, and Deno
|
|
247
|
+
|
|
248
|
+
Set [`target`](../reference/config.md#target) in `void.json` to build a standalone server for Node.js, Bun, or Deno. You can run the result on your own server or in a container.
|
|
249
|
+
|
|
250
|
+
Deploy `dist/ssr` and `dist/client` together. The server loads the Pages client manifest and assets relative to its emitted module; start it from the app root with `node dist/ssr/index.js`, `bun dist/ssr/index.js`, or `deno run -A dist/ssr/index.js`.
|
|
177
251
|
|
|
178
|
-
|
|
252
|
+
These targets don't provide Cloudflare bindings such as D1, KV, R2, and Workers AI. See the [Node.js, Bun, and Deno guide](../integrations/nodejs-bun-deno.md) for the features available on each target.
|