void 1.1.0 → 1.1.12
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/dist/{account-cmd-BTcUzv9L.mjs → account-cmd-Cj6sCMTk.mjs} +4 -4
- package/dist/{application-analysis-AB_YYWgH.mjs → application-analysis-D7nNmNJb.mjs} +6 -6
- package/dist/{application-routing-L7V-TFhZ.mjs → application-routing-CZH66gXn.mjs} +1 -1
- package/dist/{auth-link-DUJuvRx5.mjs → auth-link-Dj7lAC_K.mjs} +4 -4
- package/dist/{auth-migrations-Cgs0k6lS.mjs → auth-migrations-BO27GDNr.mjs} +38 -2
- package/dist/{auth-router-CIxiMG7i.mjs → auth-router-CNsMOFCa.mjs} +5 -4
- package/dist/{better-auth-shared-B74NJIus.d.mts → better-auth-shared-Bv18bB-l.d.mts} +2 -0
- package/dist/{better-auth-shared-CMXlZG7W.mjs → better-auth-shared-D-6z0q0f.mjs} +28 -1
- package/dist/{build-cmd-BkIv25PA.mjs → build-cmd-ByhegwRC.mjs} +2 -2
- package/dist/{cache-Ctzfig-W.mjs → cache-CEFb5ban.mjs} +2 -2
- package/dist/{cancel-deploy-CD9o-SsC.mjs → cancel-deploy-CaARY26n.mjs} +2 -2
- package/dist/{cf-build-output-Bc8i3dzE.mjs → cf-build-output-ChEKWan2.mjs} +71 -7
- package/dist/cf-build-output-Dcmxa-Zm.mjs +1 -0
- package/dist/{cf-user-agent-ChjQp2MU.mjs → cf-command-values-b8OqDoo9.mjs} +5 -16
- package/dist/cf-user-agent-BkEHPDLA.mjs +16 -0
- package/dist/cli/cli.mjs +180 -57
- package/dist/cli/cloudflare-operation-process.mjs +46 -9
- package/dist/cli/env-schema-probe.mjs +3 -3
- package/dist/{client-DM9Kcf4e.mjs → client-BdzxubTS.mjs} +58 -13
- package/dist/client-DAnfyMe9.mjs +1 -0
- package/dist/{cloudflare-auth-CqFBDo52.mjs → cloudflare-auth-DSvBc1Gu.mjs} +1 -1
- package/dist/{cloudflare-cmd-BIAF_BIY.mjs → cloudflare-cmd-D_2-Q-_i.mjs} +4 -4
- package/dist/{cloudflare-config-DV60XFFK.mjs → cloudflare-config-rdFOys4X.mjs} +2 -2
- package/dist/{cloudflare-connect-WjwnVOJA.mjs → cloudflare-connect-BN-k2kD-.mjs} +2 -2
- package/dist/{cloudflare-operations-CrSUFRzJ.mjs → cloudflare-operations-BFLCpUCV.mjs} +1 -1
- package/dist/{cloudflare-operations-B42EZeJy.mjs → cloudflare-operations-D5PLrOqD.mjs} +18 -8
- package/dist/{cloudflare-process-CeDWJRhj.mjs → cloudflare-process-CZJ4viYl.mjs} +2 -2
- package/dist/collect-BWhkgtAn.mjs +1 -0
- package/dist/{collect-xjffdCdk.mjs → collect-Dew86qce.mjs} +4 -3
- package/dist/{config-D0GY5ItR.mjs → config-CyUJzi3q.mjs} +1 -1
- package/dist/{config-Bx_1SpnO.mjs → config-D26zcdKy.mjs} +2 -2
- package/dist/{config-BEm9vRvS.mjs → config-DC5llZaI.mjs} +2 -2
- package/dist/{config-QrJWu0IX.mjs → config-DYJV8aEH.mjs} +1 -1
- package/dist/{connect-CKtk-EZe.mjs → connect-C4_m2moF.mjs} +5 -5
- package/dist/{create-project-B-ewF_Af.mjs → create-project-CvuYDD-l.mjs} +1 -1
- package/dist/{create-project-yInGo72M.mjs → create-project-D8jQTwVQ.mjs} +2 -2
- package/dist/database-provider.d.mts +6 -0
- package/dist/{db-7I_gfdVq.mjs → db-BsiOAa0A.mjs} +306 -111
- package/dist/{db-types-Bb4WBWIs.mjs → db-types-NGxPwnlt.mjs} +1 -1
- package/dist/{delete-Cy-M1u-r.mjs → delete-CAma7nFi.mjs} +2 -2
- package/dist/{deploy-BYYlnsiy.mjs → deploy-D1gIPiAq.mjs} +148 -64
- package/dist/deploy-Dc0XsCQj.mjs +2 -0
- package/dist/{deploy-managed-static-Ca4TFdmx.mjs → deploy-managed-static-B9KVxY3X.mjs} +80 -34
- package/dist/{deploy-transport-DWlWBe6M.mjs → deploy-transport-B3mtEi_q.mjs} +2 -2
- package/dist/deploy.d.mts +22 -1
- package/dist/deploy.mjs +49 -8
- package/dist/discover-D4TPKo57.mjs +1 -0
- package/dist/{discover-D2PGT63u.mjs → discover-LaV0tbIu.mjs} +1 -1
- package/dist/{dispatch-DrTTk8Xg.mjs → dispatch-BAbbn3jg.mjs} +6 -6
- package/dist/{domain-CZGxPv9u.mjs → domain-BAdwm-QS.mjs} +3 -3
- package/dist/{drizzle-CF84FOVM.mjs → drizzle-BQfyvQKX.mjs} +13 -2
- package/dist/{email-DzyNVuoU.mjs → email-MwjA7kaL.mjs} +11 -12
- package/dist/{email-cloudflare-DfG6UEMm.mjs → email-cloudflare-etpKiITL.mjs} +7 -10
- package/dist/{entry-ehmBvs5w.mjs → entry-B_0IhV64.mjs} +1 -1
- package/dist/{env-Nx3yf50r.mjs → env-B163-G1s.mjs} +5 -5
- package/dist/{env-types-DS2_y4X8.mjs → env-types-GRchm5dw.mjs} +1 -1
- package/dist/{env-validation-BT7z-qpQ.mjs → env-validation-CuGfWRJd.mjs} +1 -1
- package/dist/{env-validation-DYxjz_Wo.mjs → env-validation-D_KyMdab.mjs} +2 -2
- package/dist/{fetch-BPCYVi3H.d.mts → fetch-CUX0tB78.d.mts} +16 -3
- package/dist/fetch-CtESUYWd.mjs +26 -0
- package/dist/{fetch-error-Dj3crt0e.mjs → fetch-error-Bw0n-IY-.mjs} +1 -1
- package/dist/{fetch-stream-PGgz4uGz.mjs → fetch-stream-BspOeTAI.mjs} +1 -1
- package/dist/{fetch-stream-obvZ7fvO.d.mts → fetch-stream-DfkAzZf-.d.mts} +1 -1
- package/dist/{gen-CufHEf42.mjs → gen-CYN3wiov.mjs} +26 -20
- package/dist/gen-Cf-RBVg4.mjs +1 -0
- package/dist/{generate-Dat0UTry.mjs → generate-B1m4Cm4n.mjs} +1 -1
- package/dist/{generate-ClI89brV.mjs → generate-DkEb9rL-.mjs} +1 -1
- package/dist/{github-cmd-FU8EjFyU.mjs → github-cmd-C8QsnJQs.mjs} +2 -2
- package/dist/{handler-_PqY82xe.d.mts → handler-D5K_yP6T.d.mts} +1 -1
- package/dist/{headers-Di1FsD3e.mjs → headers-Bi4bOAwp.mjs} +1 -1
- package/dist/{help-BT2hovNI.mjs → help-B2sFwn9b.mjs} +60 -15
- package/dist/help-w-xlx_kq.mjs +1 -0
- package/dist/{inbound-brj2-TM5.d.mts → inbound-Da7XsjH3.d.mts} +6 -12
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +139 -126
- package/dist/{info-l249eUdH.mjs → info-Bxunp14X.mjs} +4 -4
- package/dist/{init-D0A6M64Q.mjs → init-DGFQMnbk.mjs} +51 -28
- package/dist/{link-WMoJFf4i.mjs → link-CwrfpjIM.mjs} +3 -3
- package/dist/{list-CQ2EQEHL.mjs → list-hKoW5z-b.mjs} +3 -3
- package/dist/{live-DJONVlQK.d.mts → live-JheIDZKc.d.mts} +1 -1
- package/dist/{local-d1-BxvQYEFi.mjs → local-d1-CpaPbd_L.mjs} +5 -5
- package/dist/login-08mBwZfI.mjs +1 -0
- package/dist/{login-C2T1oVG-.mjs → login-f2eu2TQh.mjs} +3 -3
- package/dist/{logs-DnC1d7xB.mjs → logs-CEWqD-_B.mjs} +3 -3
- package/dist/{migrate-BDIprOYd.mjs → migrate-DYfdWBXt.mjs} +5 -5
- package/dist/migrate-Di-4EuoE.mjs +1 -0
- package/dist/{neon-n74ta1Pr.mjs → neon-DTZr7Bu7.mjs} +0 -1
- package/dist/nitro.mjs +3 -3
- package/dist/{node-cPadMgUO.mjs → node-uN8_zxJr.mjs} +15 -9
- package/dist/operator-cmd-Bv20yLu2.mjs +1 -0
- package/dist/{operator-cmd-DHieWtFp.mjs → operator-cmd-DCr_QGMH.mjs} +4 -4
- package/dist/{output-Ba6ZbrzY.mjs → output-CKguMgr7.mjs} +13 -1
- package/dist/pages/client.d.mts +2 -2
- package/dist/pages/client.mjs +18 -5
- package/dist/pages/index.d.mts +2 -2
- package/dist/pages/index.mjs +5 -5
- package/dist/pages/islands-plugin.d.mts +44 -6
- package/dist/pages/islands-plugin.mjs +99 -28
- package/dist/pages/protocol.d.mts +2 -2
- package/dist/pages/protocol.mjs +1 -1
- package/dist/pages/serialize.d.mts +2 -2
- package/dist/pages/serialize.mjs +1 -1
- package/dist/{platform-args-CaCL_1Ch.mjs → platform-args-B7ke06up.mjs} +1 -4
- package/dist/platform-args-B_LrqEZB.mjs +1 -0
- package/dist/{platform-auth-config-Z16-I8nT.mjs → platform-auth-config-qGvEuns3.mjs} +5 -5
- package/dist/{platform-auth-protection-BXwZiJSF.mjs → platform-auth-protection-CyLcD6ot.mjs} +3 -3
- package/dist/{platform-auth-recovery-CXjfqyOv.mjs → platform-auth-recovery-B2LKI8V2.mjs} +3 -3
- package/dist/{platform-cmd-PT4YwMLM.mjs → platform-cmd-B2ec5eFg.mjs} +1 -1
- package/dist/{platform-cmd-DaAOiWTl.mjs → platform-cmd-CX7phm7V.mjs} +6 -6
- package/dist/{platform-domain-CxpvUeo0.mjs → platform-domain-DDNK2y-4.mjs} +3 -3
- package/dist/{platform-lifecycle-DBiS0cJd.mjs → platform-lifecycle-3CR98Tg2.mjs} +399 -40
- package/dist/{platform-lifecycle-u9pMOvxC.mjs → platform-lifecycle-CWc5gr6c.mjs} +1 -1
- package/dist/{platform-management-DvBS83rC.mjs → platform-management-DAE6g2QU.mjs} +1 -1
- package/dist/{platform-management-DhEFdQAf.mjs → platform-management-o3LCCeE4.mjs} +40 -4
- package/dist/{platform-plans-config-BWn1S2Rv.mjs → platform-plans-config-CBMZxCep.mjs} +1 -1
- package/dist/{platform-recovery-BUGOB4RC.mjs → platform-recovery-Dmsg7lWA.mjs} +2 -2
- package/dist/{platform-setup-YvN9VQXV.mjs → platform-setup-hFbnWAVQ.mjs} +1 -1
- package/dist/{plugin-inference-DsARdQKE.mjs → plugin-inference-Bekzjuqw.mjs} +2 -2
- package/dist/{prepare-DEB5SeVJ.mjs → prepare-DepAGBcV.mjs} +9 -9
- package/dist/prepare-EVEbQ9n2.mjs +1 -0
- package/dist/{prepare-PQCgsny0.mjs → prepare-HKo7Rh5V.mjs} +2 -2
- package/dist/{project-cmd-DVatD8Ev.mjs → project-cmd-8ylYGx-O.mjs} +18 -18
- package/dist/{project-paths-DMvEeSau.mjs → project-paths-DGu_QZ_Q.mjs} +1 -1
- package/dist/{project-team-DJrWEAG1.mjs → project-team-Bvpl78we.mjs} +2 -2
- package/dist/{project-token-CBgLBuL6.mjs → project-token-QWHoJH2t.mjs} +2 -2
- package/dist/{project-tsconfig-bveqhlYA.mjs → project-tsconfig-Itv1f4WC.mjs} +1 -1
- package/dist/{project-zero-trust-92gLtZ25.mjs → project-zero-trust-8tJ-RFvu.mjs} +2 -2
- package/dist/{protocol-4H7V_3Os.d.mts → protocol-Ssc_LhHj.d.mts} +2 -2
- package/dist/{protocol-RNP0u7UY.mjs → protocol-bAUUkx70.mjs} +1 -1
- package/dist/{providers-BXuhmuub.mjs → providers-BUHwJlmM.mjs} +10 -1
- package/dist/provision-BgXFDv0d.mjs +1 -0
- package/dist/{provision-BnSSkiED.mjs → provision-DZKYCEJg.mjs} +66 -66
- package/dist/r2-conditions-B8xUgJRc.mjs +61 -0
- package/dist/{requests-7W1Pygt2.mjs → requests-Vk5Zyhcy.mjs} +2 -2
- package/dist/{rollback-BcASVnwP.mjs → rollback-CH4yMQys.mjs} +9 -8
- package/dist/{runner-CabsQ-iM.mjs → runner-3uGC-oLF.mjs} +9 -7
- package/dist/{runner-So9mYfcm.mjs → runner-WCdfeI0q.mjs} +1 -1
- package/dist/{runner-mysql-BhRaONkO.mjs → runner-mysql-BWmbk5IE.mjs} +1 -1
- package/dist/{runner-mysql-DWwE8jKi.mjs → runner-mysql-BcHnLUuM.mjs} +1 -1
- package/dist/{runner-pg-_Xncr3H5.mjs → runner-pg-Cgp-cr_p.mjs} +1 -1
- package/dist/{runner-pg-BRemq_GX.mjs → runner-pg-Cr3qrqi4.mjs} +1 -1
- package/dist/runtime/ai.d.mts +4 -0
- package/dist/runtime/ai.mjs +2 -37
- package/dist/runtime/better-auth-mysql.d.mts +1 -1
- package/dist/runtime/better-auth-mysql.mjs +2 -2
- package/dist/runtime/better-auth-pg.d.mts +1 -1
- package/dist/runtime/better-auth-pg.mjs +2 -2
- package/dist/runtime/better-auth.d.mts +1 -1
- package/dist/runtime/better-auth.mjs +2 -2
- package/dist/runtime/client-react.d.mts +2 -2
- package/dist/runtime/client-react.mjs +3 -3
- package/dist/runtime/client-solid.d.mts +2 -2
- package/dist/runtime/client-solid.mjs +3 -3
- package/dist/runtime/client-svelte.d.mts +2 -2
- package/dist/runtime/client-svelte.mjs +3 -3
- package/dist/runtime/client-vue.d.mts +2 -2
- package/dist/runtime/client-vue.mjs +3 -3
- package/dist/runtime/client.d.mts +2 -2
- package/dist/runtime/client.mjs +3 -3
- package/dist/runtime/email/testing.d.mts +1 -1
- package/dist/runtime/email.d.mts +2 -3
- package/dist/runtime/email.mjs +2 -3
- package/dist/runtime/fetch-server.d.mts +8 -0
- package/dist/runtime/fetch-server.mjs +30 -0
- package/dist/runtime/fetch-stream.d.mts +2 -2
- package/dist/runtime/fetch-stream.mjs +2 -2
- package/dist/runtime/fetch.d.mts +2 -2
- package/dist/runtime/fetch.mjs +3 -3
- package/dist/runtime/handler.d.mts +1 -1
- package/dist/runtime/live-client.d.mts +1 -1
- package/dist/runtime/live.d.mts +1 -1
- package/dist/runtime/migration-handler-mysql.mjs +4 -4
- package/dist/runtime/migration-handler-pg.mjs +9 -1
- package/dist/runtime/remote/binding-handler.mjs +25 -25
- package/dist/runtime/remote/index.d.mts +3 -0
- package/dist/runtime/remote/index.mjs +86 -23
- package/dist/runtime/routing.d.mts +2 -2
- package/dist/runtime/routing.mjs +1 -1
- package/dist/runtime/sse-client.d.mts +4 -0
- package/dist/runtime/validator.d.mts +1 -1
- package/dist/runtime/ws-server.d.mts +2 -2
- package/dist/runtime/ws.d.mts +1 -1
- package/dist/{scan-C0BMdmEd.mjs → scan-D2-FcLHs.mjs} +13 -5
- package/dist/{secret-bg73f1Ge.mjs → secret-wr6Sn4Xa.mjs} +4 -4
- package/dist/serialize-DtR8Vwa_.d.mts +18 -0
- package/dist/serialize-YHvlcG3Q.mjs +31 -0
- package/dist/{subcommand-prompt-Bm3ZlYgA.mjs → subcommand-prompt-CNZc4XUd.mjs} +1 -1
- package/dist/{types-BAp5AEBU.d.mts → types-7AIz0OZu.d.mts} +1 -1
- package/dist/{validate-CheZGRE7.mjs → validate-CnZPMq4q.mjs} +22 -17
- package/dist/validate-D7Wn8PUX.mjs +1 -0
- package/dist/{version-metadata-DIrqEHQo.mjs → version-metadata-B1Bm2wSq.mjs} +1 -1
- package/dist/{wrangler-BYs07Rxy.mjs → wrangler-C9XSzrju.mjs} +3 -3
- package/dist/wrangler-DAdxHEzh.mjs +1 -0
- package/dist/{wrapper-CwhpNWtH.mjs → wrapper-DGsYwNi6.mjs} +6 -4
- package/dist/{ws-aKVYB-fA.d.mts → ws-nnFnAyQb.d.mts} +6 -1
- package/docs/guide/auth.md +1 -1
- package/docs/guide/database/d1.md +2 -2
- package/docs/guide/database/mysql.md +1 -1
- package/docs/guide/deployment.md +2 -0
- package/docs/guide/edge/headers.md +10 -2
- package/docs/guide/edge/revalidation.md +2 -0
- package/docs/guide/email/receiving.md +1 -1
- package/docs/guide/email/sending.md +3 -3
- package/docs/guide/pages-routing/islands.md +2 -2
- package/docs/guide/pages-routing/markdown.md +3 -1
- package/docs/guide/platform/administration/connected-apps.md +18 -2
- package/docs/guide/platform/administration/email.md +7 -1
- package/docs/guide/platform/installation/ci.md +2 -0
- package/docs/guide/platform/installation/credentials.md +23 -5
- package/docs/guide/platform/installation/maintenance.md +32 -2
- package/docs/guide/platform/installation/setup.md +1 -1
- package/docs/guide/remote-dev.md +2 -0
- package/docs/guide/typed-fetch.md +1 -1
- package/docs/guide/websockets.md +2 -2
- package/docs/index.md +78 -22
- package/docs/integrations/cloudflare.md +1 -1
- package/docs/integrations/frameworks/tanstack-start.md +25 -0
- package/docs/reference/api/deploy.md +35 -3
- package/docs/reference/api/pages.md +7 -5
- package/docs/reference/api.md +2 -0
- package/docs/reference/cli/database.md +22 -5
- package/docs/reference/cli/deploy.md +12 -10
- package/docs/reference/cli/email.md +1 -1
- package/docs/reference/cli/generate.md +1 -1
- package/docs/reference/cli/platform-installation.md +4 -2
- package/docs/reference/cli/project.md +8 -4
- package/docs/reference/cli.md +2 -1
- package/docs/reference/config.md +12 -2
- package/package.json +8 -7
- package/dist/cf-build-output-BU3hqdHu.mjs +0 -1
- package/dist/client-B60PwCC4.mjs +0 -1
- package/dist/collect-Cae8A7Zr.mjs +0 -1
- package/dist/deploy-9lgfhrXS.mjs +0 -2
- package/dist/discover-ClzFSwns.mjs +0 -1
- package/dist/fetch-sAcwjzLO.mjs +0 -18
- package/dist/gen-sXyp5DFO.mjs +0 -1
- package/dist/help-i2YGGnTH.mjs +0 -1
- package/dist/login-XD844Xs-.mjs +0 -1
- package/dist/migrate-BRwU-blY.mjs +0 -1
- package/dist/operator-cmd-D6gnZsnK.mjs +0 -1
- package/dist/platform-args-B0HeTh0C.mjs +0 -1
- package/dist/prepare-CYT6tAzD.mjs +0 -1
- package/dist/r2-conditions-D1Wk8i7b.mjs +0 -30
- package/dist/serialize-BtQyaYoC.mjs +0 -20
- package/dist/serialize-CfSwWfF2.d.mts +0 -10
- package/dist/validate-BQFdf0Pi.mjs +0 -1
|
@@ -50,7 +50,7 @@ Imported from `"@void/vue"`.
|
|
|
50
50
|
| `useParams()` | Returns dynamic route params for the page currently being rendered. |
|
|
51
51
|
| `useNavigation()` | Returns pending navigation state: `{ state, location, method }`, where `state` is `"idle"`, `"loading"`, or `"submitting"` and `location` is the pending destination. |
|
|
52
52
|
| `useForm(url, defaults, options?)` | Typed reactive form helper bound to a page action URL. Returns `{ data, post, put, patch, delete, pending, errors, error, hasChanges, wasSuccessful, recentlySuccessful, reset, clearErrors, clearError }`. |
|
|
53
|
-
| `useIslandForm(defaults)` | Form helper for island components
|
|
53
|
+
| `useIslandForm(defaults)` | Form helper for island components. Same form state as `useForm()`, plus `submit(url, method)`. `post(url)`, `put(url)`, `patch(url)`, and `delete(url)` take the action URL and submit with `fetch()`. |
|
|
54
54
|
| `action(url, options?)` | Awaitable one-shot page action helper. Uses `POST` by default and accepts `{ data, method, params }`, where `method` can be `"PUT"`, `"PATCH"`, or `"DELETE"`. Returns an `ActionResult`. |
|
|
55
55
|
| `useShared()` | Returns shared data injected by middleware via `c.set("shared", {...})`. |
|
|
56
56
|
|
|
@@ -102,7 +102,7 @@ Imported from `"@void/react"`.
|
|
|
102
102
|
| `useParams()` | Returns dynamic route params for the page currently being rendered. |
|
|
103
103
|
| `useNavigation()` | Returns pending navigation state: `{ state, location, method }`, where `state` is `"idle"`, `"loading"`, or `"submitting"` and `location` is the pending destination. |
|
|
104
104
|
| `useForm(url, defaults, options?)` | Form helper hook. Returns `{ data, setData, post, put, patch, delete, pending, errors, error, hasChanges, wasSuccessful, recentlySuccessful, reset, clearErrors, clearError }`. |
|
|
105
|
-
| `useIslandForm(defaults)` | Form helper hook for island components
|
|
105
|
+
| `useIslandForm(defaults)` | Form helper hook for island components. Same form state as `useForm()`. `post(url)`, `put(url)`, `patch(url)`, and `delete(url)` take the action URL and submit with `fetch()`. |
|
|
106
106
|
| `action(url, options?)` | Awaitable one-shot page action helper. Uses `POST` by default and accepts `{ data, method, params }`, where `method` can be `"PUT"`, `"PATCH"`, or `"DELETE"`. Returns an `ActionResult`. |
|
|
107
107
|
| `useShared()` | Returns shared data injected by middleware via `c.set("shared", {...})`. |
|
|
108
108
|
| `Deferred<T>` | React-only prop type for `defer()` results. It is `Promise<T>` and is consumed with React `use()`. |
|
|
@@ -159,7 +159,7 @@ Imported from `"@void/svelte"`.
|
|
|
159
159
|
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
160
160
|
| `Link` | Svelte component for SPA navigation. Renders `<a>` for GET, `<button>` for non-GET methods. Props: `href`, `method`, `data`, `prefetch`, `cacheFor`, `preserveScroll`, `preserveState`, `replace`, `reloadDocument`, `viewTransition`, `onNavigate`. |
|
|
161
161
|
| `useForm(url, defaults, options?)` | Form helper using Svelte 5 runes. Returns `{ data, post, put, patch, delete, pending, errors, error, hasChanges, wasSuccessful, recentlySuccessful, reset, clearErrors, clearError }`. |
|
|
162
|
-
| `useIslandForm(defaults)` | Form helper for island components
|
|
162
|
+
| `useIslandForm(defaults)` | Form helper for island components. Same form state as `useForm()`, plus `submit(url, method)`. `post(url)`, `put(url)`, `patch(url)`, and `delete(url)` take the action URL and submit with `fetch()`. |
|
|
163
163
|
| `action(url, options?)` | Awaitable one-shot page action helper. Uses `POST` by default and accepts `{ data, method, params }`, where `method` can be `"PUT"`, `"PATCH"`, or `"DELETE"`. Returns an `ActionResult`. |
|
|
164
164
|
| `useShared()` | Returns shared data injected by middleware via `c.set("shared", {...})`. |
|
|
165
165
|
| `useRouter()` | Returns the Void Router with current route state (`url`, `path`, `query`, `params`) and navigation methods: `visit`, `refresh`, awaitable `prefetch`, `flush`, `flushAll`. |
|
|
@@ -209,7 +209,7 @@ Imported from `"@void/solid"`.
|
|
|
209
209
|
| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
210
210
|
| `Link` | Solid component for SPA navigation. Renders `<a>` for GET, `<button>` for non-GET methods. Props: `href`, `method`, `data`, `prefetch`, `cacheFor`, `preserveScroll`, `preserveState`, `replace`, `reloadDocument`, `viewTransition`, `onNavigate`. |
|
|
211
211
|
| `useForm(url, defaults, options?)` | Form helper using Solid stores. Returns `{ data, setData, post, put, patch, delete, pending, errors, error, hasChanges, wasSuccessful, recentlySuccessful, reset, clearErrors, clearError }`. |
|
|
212
|
-
| `useIslandForm(defaults)` | Form helper for island components
|
|
212
|
+
| `useIslandForm(defaults)` | Form helper for island components. Same form state as `useForm()`. `post(url)`, `put(url)`, `patch(url)`, and `delete(url)` take the action URL and submit with `fetch()`. |
|
|
213
213
|
| `action(url, options?)` | Awaitable one-shot page action helper. Uses `POST` by default and accepts `{ data, method, params }`, where `method` can be `"PUT"`, `"PATCH"`, or `"DELETE"`. Returns an `ActionResult`. |
|
|
214
214
|
| `useShared()` | Returns shared data injected by middleware via `c.set("shared", {...})`. |
|
|
215
215
|
| `useRouter()` | Returns the Void Router with current route state (`url`, `path`, `query`, `params`) and navigation methods: `visit`, `refresh`, awaitable `prefetch`, `flush`, `flushAll`. |
|
|
@@ -235,11 +235,13 @@ export default defineConfig({
|
|
|
235
235
|
| Import path | Contents |
|
|
236
236
|
| ---------------------------- | ---------------------------------------------------------------------------------------- |
|
|
237
237
|
| `@void/md/plugin` | `voidMarkdown(options?)`, `MarkdownOptions`, `MdPage` |
|
|
238
|
-
| `@void/md` | `useFrontmatter()`, `
|
|
238
|
+
| `@void/md` | `useFrontmatter()`, `MdPage` |
|
|
239
239
|
| `@void/md/pages` | Generated metadata for Markdown pages, used for navigation, sidebars, and search indexes |
|
|
240
240
|
| `@void/md/theme.css` | Full Markdown theme styles |
|
|
241
241
|
| `@void/md/theme-content.css` | Content-only Markdown styles for apps that provide their own shell/layout |
|
|
242
242
|
|
|
243
|
+
`FrontmatterContext` and `setFrontmatter()` are deprecated. Use `useFrontmatter()`.
|
|
244
|
+
|
|
243
245
|
See [Markdown Pages](../../guide/pages-routing/markdown.md) for setup and framework-specific examples.
|
|
244
246
|
|
|
245
247
|
## Form
|
package/docs/reference/api.md
CHANGED
|
@@ -66,6 +66,8 @@ Import Void's app-facing APIs from these paths:
|
|
|
66
66
|
| `void/log` | `logger` structured logging helper |
|
|
67
67
|
| `void/routes` | `RouteMap` and `WebSocketRouteMap` stubs (types only) |
|
|
68
68
|
| `void/queues` | `queues` proxy for sending messages to typed queues |
|
|
69
|
+
| `void/email` | `sendEmail`, `createEmail`, `defineEmail`, `parseEmail`, `replyEmail`, `MimeError`, `ParseEmailError`, and address, attachment, result, and handler types. See [Email](../guide/email.md). |
|
|
70
|
+
| `void/email/testing` | `createEmailTestHarness` and `createInboundTestHarness` to capture sends and deliver test messages to `email/` handlers. |
|
|
69
71
|
| `void/sandbox` | `getSandbox`, `sandbox`, `SandboxLimitError`, `SandboxUnavailableError`, and the SDK 1.0 file, backup, and mount helpers. `getSandbox(id)` resolves a client. Commands, files, port requests, and process completion return promises; limits reject with `SandboxLimitError`, which extends `UsageLimit`. Container state lasts until inactivity (default ten minutes), a crash, or a restart. See [Sandboxes](../guide/sandboxes.md) for the API and deployment requirements. |
|
|
70
72
|
| `void/env` | `defineEnv`, `env`, schema helpers (`string`, `number`, `boolean`, `url`, `email`, `oneOf`, `json`), and global Cloudflare env types |
|
|
71
73
|
| `void/nitro` | Nitro module for Nuxt and Analog. Add `'void/nitro'` to the Nitro `modules` so server routes get the app's `void/db` and `@schema` |
|
|
@@ -20,7 +20,7 @@ For SQLite, Void checks that the migration history applies to a fresh database.
|
|
|
20
20
|
|
|
21
21
|
## `void db status` {#void-db-status}
|
|
22
22
|
|
|
23
|
-
Show migration status. Displays which migrations are applied or pending locally, then uses the saved deployment target for remote status: the hosted API for Void projects, the pinned D1 database and its configured migration table for direct Cloudflare SQLite projects, or the shell `DATABASE_URL` for direct Cloudflare PostgreSQL/MySQL projects. If the remote credential or service is unavailable, local status is still shown.
|
|
23
|
+
Show migration status. Displays which migrations are applied or pending locally, then uses the saved deployment target for remote status: the hosted API for Void projects, the pinned D1 database and its configured migration table for direct Cloudflare SQLite projects, or the shell `DATABASE_URL` for direct Cloudflare PostgreSQL/MySQL projects. If the remote credential or service is unavailable, local status is still shown. If the local PostgreSQL or MySQL database cannot be read, local status shows `unknown`; the command fails when remote status is not available either.
|
|
24
24
|
|
|
25
25
|
## `void db reset` {#void-db-reset}
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ Show migration status. Displays which migrations are applied or pending locally,
|
|
|
28
28
|
void db reset [--yes]
|
|
29
29
|
```
|
|
30
30
|
|
|
31
|
-
Drop the development database and re-apply all migrations. D1 resets the local database
|
|
31
|
+
Drop the development database and re-apply all migrations. D1 resets the local database. PostgreSQL drops the tables, views, sequences, and custom types in the `public` schema of the `DATABASE_URL` database from `.env` and keeps installed extensions. If a table, view, or function in another schema uses one of those views, sequences, or types, reset stops before it drops anything and lists those objects. MySQL drops every table and view in that database.
|
|
32
32
|
|
|
33
33
|
When that `DATABASE_URL` points to a host other than `localhost`, Void names the database and asks before dropping its tables. Pass `--yes` to skip the prompt in scripts and CI; without a terminal, the command stops unless `--yes` is set. If `.env` uses the same URL as your deployment (for example after `void db connect`), reset drops the deployed tables.
|
|
34
34
|
|
|
@@ -73,7 +73,7 @@ void db migrate [--remote]
|
|
|
73
73
|
|
|
74
74
|
Apply pending migrations to the local database without resetting. Unlike `void db reset`, this preserves existing data and only runs migrations that haven't been applied yet.
|
|
75
75
|
|
|
76
|
-
Pass `--remote` to apply pending migrations to the saved target. Hosted projects require a Void login and link. Direct Cloudflare D1 projects use the binding's configured migration directory, table, and pattern
|
|
76
|
+
Pass `--remote` to apply pending migrations to the saved target. Hosted projects require a Void login and link. Direct Cloudflare D1 projects use the binding's configured migration directory, table, and pattern. The D1 binding must set `migrations_dir`. Direct PostgreSQL and MySQL projects use the shell `DATABASE_URL`.
|
|
77
77
|
|
|
78
78
|
## `void db studio` {#void-db-studio}
|
|
79
79
|
|
|
@@ -87,11 +87,28 @@ By default, targets the local database. Pass `--remote` to open Studio against t
|
|
|
87
87
|
|
|
88
88
|
- **Hosted PostgreSQL and MySQL projects**: fetch the stored connection string from the platform and open Studio against it. If the URL isn't stored yet, run `void db set-url` first.
|
|
89
89
|
- **Direct Cloudflare PostgreSQL and MySQL projects**: use `DATABASE_URL` from the current shell.
|
|
90
|
-
- **D1 projects**: remote Studio is not
|
|
90
|
+
- **D1 projects**: remote Studio is not available. Use `void db execute --remote` to query your deployed D1 database.
|
|
91
|
+
|
|
92
|
+
## `void db restore` {#void-db-restore}
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
void db restore --bookmark <bookmark> [--platform cloudflare] [--yes]
|
|
96
|
+
void db restore --timestamp <iso-time> [--platform cloudflare] [--yes]
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Restore the deployed D1 database of a direct Cloudflare deploy with D1 [Time Travel](https://developers.cloudflare.com/d1/reference/time-travel/). Before `void deploy --platform cloudflare` applies migrations, it prints the `--bookmark` that undoes them. `--timestamp` restores the state at an ISO 8601 time with `Z` or an offset instead, such as `2026-10-16T09:30:00Z`, with at most millisecond precision. Time Travel keeps 7 days of history on Workers Free and 30 days on Workers Paid. An older bookmark or time can no longer be restored: Cloudflare rejects it and the database stays unchanged. To undo an older migration, write a new migration that reverses it.
|
|
100
|
+
|
|
101
|
+
If the project's saved destination is not Cloudflare and you deployed once with `void deploy --platform cloudflare`, pass `--platform cloudflare`; deploy prints the command with it.
|
|
102
|
+
|
|
103
|
+
Restoring replaces the whole database and discards every write made after that point. Void names the database and asks before it restores. Pass `--yes` to skip the prompt in scripts and CI; without a terminal, the command stops unless `--yes` is set. Afterwards Void prints the `void db restore` command that undoes the restore.
|
|
104
|
+
|
|
105
|
+
A restore also rewinds the record of applied migrations. Void lists the migration files the database no longer has applied; the next deploy applies them, so fix or remove the one that caused the problem first. Restoring does not change the deployed code: use [`void project rollback`](./project.md#void-project-rollback-deployid) if the live version needs the newer schema. After a one-off Cloudflare deploy, pass `--platform cloudflare` to `void project rollback` and `void deploy` as well.
|
|
91
106
|
|
|
92
107
|
## `void db rename-migrations` {#void-db-rename-migrations}
|
|
93
108
|
|
|
94
|
-
Rename existing migrations from the old numeric prefix format (`0001_name.sql`) to timestamp-based format (`20260410161500_name.sql`). Updates local tracking table and remote records if logged in with a linked project.
|
|
109
|
+
Rename existing migrations from the old numeric prefix format (`0001_name.sql`) to timestamp-based format (`20260410161500_name.sql`). Updates local tracking table and remote records if logged in with a linked project. A project that deploys to Void must be linked first with `void project link`; otherwise the command stops without changes.
|
|
110
|
+
|
|
111
|
+
Direct Cloudflare deploys are not supported: Void cannot rename the records in the deployed database, so the command stops without changes. Keep the existing names; new migrations use timestamps and run after them.
|
|
95
112
|
|
|
96
113
|
## `void db connect` {#void-db-connect}
|
|
97
114
|
|
|
@@ -10,6 +10,7 @@ outline: deep
|
|
|
10
10
|
void deploy [--project <name>] [--dir <path>] [--spa] [--skip-build] [--debug]
|
|
11
11
|
void deploy [--platform <cloudflare|void>] [--require-email]
|
|
12
12
|
void deploy --platform cloudflare --atomic
|
|
13
|
+
void deploy --platform cloudflare --provision
|
|
13
14
|
```
|
|
14
15
|
|
|
15
16
|
Auto-detects your project type and chooses the right pipeline. See [Supported App Types](../../guide/app-types.md) and [Deployment](../../guide/deployment.md) for details.
|
|
@@ -26,16 +27,17 @@ For an existing Void Worker, `void deploy` can link the Worker and migrate its r
|
|
|
26
27
|
|
|
27
28
|
For Drizzle projects, deploy performs a read-only schema drift check. If a new migration would be generated, deploy stops and tells you to run `void db generate`, review the migration, commit it yourself, and rerun `void deploy`.
|
|
28
29
|
|
|
29
|
-
| Flag | Purpose
|
|
30
|
-
| ------------------------------- |
|
|
31
|
-
| `--platform <cloudflare\|void>` | Override the platform stored in `.void/project.json`
|
|
32
|
-
| `--project <name>` | Target a specific Void project by slug; not supported with `--platform cloudflare`
|
|
33
|
-
| `--dir <path>` | Deploy a pre-built static directory (skips build)
|
|
34
|
-
| `--spa` | Use SPA mode instead of SSG for static deploys
|
|
35
|
-
| `--skip-build` | Skip the build step; on Cloudflare this is supported for static/SPA/SSG deploys only
|
|
36
|
-
| `--require-email` | Fail when email cannot be set up instead of deploying without it; requires `--platform cloudflare`
|
|
37
|
-
| `--
|
|
38
|
-
| `--
|
|
30
|
+
| Flag | Purpose |
|
|
31
|
+
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
32
|
+
| `--platform <cloudflare\|void>` | Override the platform stored in `.void/project.json` |
|
|
33
|
+
| `--project <name>` | Target a specific Void project by slug; not supported with `--platform cloudflare` |
|
|
34
|
+
| `--dir <path>` | Deploy a pre-built static directory (skips build) |
|
|
35
|
+
| `--spa` | Use SPA mode instead of SSG for static deploys |
|
|
36
|
+
| `--skip-build` | Skip the build step; on Cloudflare this is supported for static/SPA/SSG deploys only |
|
|
37
|
+
| `--require-email` | Fail when email cannot be set up instead of deploying without it; requires `--platform cloudflare` |
|
|
38
|
+
| `--provision` | Run resource provisioning again even when every resource exists, for example to enable D1 read replication on an existing database; requires `--platform cloudflare` |
|
|
39
|
+
| `--atomic` | Publish an existing Durable Object Worker directly; readiness is checked after traffic changes |
|
|
40
|
+
| `--debug` | Mirror the structured deploy log to stderr (also written to `~/.void/logs/`) |
|
|
39
41
|
|
|
40
42
|
`--atomic` applies to one deployment. For an existing Durable Object Worker that consistently cannot stage, set `deploy: { cloudflare: { mode: 'atomic' } }` in `void.config.ts` so plain `void deploy` uses atomic publication. The default is `staged`.
|
|
41
43
|
|
|
@@ -114,7 +114,7 @@ void email status --platform cloudflare
|
|
|
114
114
|
|
|
115
115
|
Check the domain configured in `email.from`: permissions, DNS, routing, sending, handler addresses, and the email binding. Exits unsuccessfully when setup is incomplete. Workers Free setup can be ready with sending limited to verified destinations; run `void email setup --platform cloudflare` after upgrading to Workers Paid.
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
`void email status` reads only your own Cloudflare account, so `--platform cloudflare` is required. On the Void platform, use `void email usage` and `void email destinations`.
|
|
118
118
|
|
|
119
119
|
## `void email setup` {#void-email-setup}
|
|
120
120
|
|
|
@@ -22,7 +22,7 @@ Creates:
|
|
|
22
22
|
- An export from `db/schema.ts`
|
|
23
23
|
- `routes/api/posts/index.ts`: `GET` for list and `POST` for insert with validation
|
|
24
24
|
- `routes/api/posts/[id].ts`: `GET` by id with `404` handling
|
|
25
|
-
- Regenerated `.void
|
|
25
|
+
- Regenerated types and TypeScript configuration in `.void/`
|
|
26
26
|
|
|
27
27
|
The generated routes automatically detect your validation library from `package.json` (`valibot`, `zod`, or `arktype`). If none is found, you will be prompted to choose one or skip validation. Run `void db push` to apply the schema locally, or `void db generate` to create migrations before deploying.
|
|
28
28
|
|
|
@@ -105,7 +105,7 @@ void platform rollback [id] --runtime <earlier-path> [--from-runtime <current-pa
|
|
|
105
105
|
void platform repair [id] [--runtime <path>] [--dashboard-url <origin>] [--auth-config <path>] [--plan] [--yes]
|
|
106
106
|
void platform disable [id] [--plan] [--yes]
|
|
107
107
|
void platform enable [id] [--runtime <path>] [--plan] [--yes]
|
|
108
|
-
void platform uninstall [id] [--plan] [--purge-data | --purge-resources] [--
|
|
108
|
+
void platform uninstall [id] [--plan] [--purge-data | --purge-resources] [--yes]
|
|
109
109
|
```
|
|
110
110
|
|
|
111
111
|
`discover --installation` limits recovery and endpoint verification to one installation in a shared Cloudflare account.
|
|
@@ -137,6 +137,8 @@ After discovery on another machine, set `VOID_PLATFORM_DATABASE_URL`. See [Manag
|
|
|
137
137
|
|
|
138
138
|
Repair and upgrade preserve disabled state. New, resumed, and previously disabled installations block user traffic until all target Workers pass verification; the installer's health probes can still run. Routes and custom domains remain attached.
|
|
139
139
|
|
|
140
|
+
If a platform Worker was changed outside Void, or has an active version without a Void deployment record, a command that deploys the platform Workers stops before it changes a platform Worker or pauses traffic, unless you agree in a terminal to replace the changes. See [Platform Workers changed outside Void](../../guide/platform/installation/maintenance.md#workers-changed-outside-void).
|
|
141
|
+
|
|
140
142
|
`--runtime` selects a custom platform build. Relative paths resolve from your current directory. Void verifies the build before making changes; see [Platform Development](../../guide/platform/development/runtime.md#deploying-your-runtime) for creating one.
|
|
141
143
|
|
|
142
144
|
Without `--runtime`, the CLI uses its packaged platform version.
|
|
@@ -149,7 +151,7 @@ An upgrade completes after the new Workers pass health checks. If rollout fails,
|
|
|
149
151
|
|
|
150
152
|
If project Zero Trust is on and no platform user exists yet, uninstall turns it off and deletes its Access applications first. Run it on the computer that installed the platform.
|
|
151
153
|
|
|
152
|
-
Uninstall verifies remote ownership before removing anything. Data resources are retained unless you pass `--purge-data`. Workers, the Queues they use, R2, AI Gateway, DNS records, routes, custom domains, adopted resources, external PostgreSQL, and zones are retained for manual review.
|
|
154
|
+
Uninstall verifies remote ownership before removing anything. Data resources are retained unless you pass `--purge-data`. Workers, the Queues they use, R2, AI Gateway, DNS records, routes, custom domains, adopted resources, external PostgreSQL, and zones are retained for manual review. `--keep-zone` is deprecated and has no effect; uninstall always keeps zones.
|
|
153
155
|
|
|
154
156
|
`--purge-resources` includes `--purge-data` and also deletes every other resource the installation created, including Workers, Queues, R2, AI Gateway, the platform DNS record, routes, custom domains, and installer-created Access resources. It removes only the Email Routing rules that send mail to the platform email gateway, and keeps zones, adopted resources, external PostgreSQL, other Email Routing settings, and API tokens. A route, custom domain, DNS record, or Access resource that no longer matches the installation's record is kept and listed. It refuses before any change while projects remain or resource reads are denied. Use the Edit permissions listed by `--plan`; read checks cannot verify them, so a denied deletion can stop uninstall after changes have begun. Rerun the same command to continue after an interruption, or after a plain or `--purge-data` uninstall stopped.
|
|
155
157
|
|
|
@@ -169,7 +169,7 @@ void project requests --range 24h
|
|
|
169
169
|
## `void project rollback [deployId]` {#void-project-rollback-deployid}
|
|
170
170
|
|
|
171
171
|
```
|
|
172
|
-
void project rollback [deployId]
|
|
172
|
+
void project rollback [deployId] [--platform cloudflare]
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
Roll back to a previous deployment or Worker Version.
|
|
@@ -179,7 +179,9 @@ Roll back to a previous deployment or Worker Version.
|
|
|
179
179
|
|
|
180
180
|
On a Void platform, you can select a retained deployment. On Cloudflare, use a complete Worker Version ID or an unambiguous prefix. Void activates that version at 100%. When both versions have complete trigger snapshots, it also restores the selected version's schedules, queues, workflows, routes, and custom domains. Otherwise, rollback keeps the current triggers and restores the code, including versions originally deployed outside Void.
|
|
181
181
|
|
|
182
|
-
|
|
182
|
+
If the project's saved destination is not Cloudflare and you deployed once with `void deploy --platform cloudflare`, pass `--platform cloudflare` to roll back that Worker.
|
|
183
|
+
|
|
184
|
+
Rollback doesn't reverse database migrations. If older code may run against a newer schema, or migration metadata is missing, Void explains the risk and asks for confirmation. On Cloudflare, undo D1 migrations with [`void db restore`](./database.md#void-db-restore) and the restore point that deploy printed before it applied them, within 7 days on Workers Free or 30 days on Workers Paid.
|
|
183
185
|
|
|
184
186
|
## `void project cancel [deployId]` {#void-project-cancel-deployid}
|
|
185
187
|
|
|
@@ -189,8 +191,10 @@ void project cancel [deployId]
|
|
|
189
191
|
|
|
190
192
|
Cancel an active deployment.
|
|
191
193
|
|
|
192
|
-
- If `[deployId]` is omitted,
|
|
193
|
-
- If `[deployId]` is provided,
|
|
194
|
+
- If `[deployId]` is omitted, targets the linked project's active deployment
|
|
195
|
+
- If `[deployId]` is provided, targets that deployment; it must still be active
|
|
196
|
+
|
|
197
|
+
Void asks for confirmation before it requests cancellation.
|
|
194
198
|
|
|
195
199
|
This command is hosted-only. Direct Cloudflare deploys are local operations and do not expose a remote build to cancel.
|
|
196
200
|
|
package/docs/reference/cli.md
CHANGED
|
@@ -47,6 +47,7 @@ Use this page as a command reference. If you are setting up a project for the fi
|
|
|
47
47
|
| `void db seed` | Reset + seed local database |
|
|
48
48
|
| `void db execute <sql>` | Run SQL against the database (--remote for deployed) |
|
|
49
49
|
| `void db studio` | Open Drizzle Studio (--remote for a deployed external database) |
|
|
50
|
+
| `void db restore --bookmark <b>` | Restore the deployed D1 database to a restore point (direct Cloudflare) |
|
|
50
51
|
| `void secret put <name=value>` | Set a production secret |
|
|
51
52
|
| `void secret list` | List production secrets |
|
|
52
53
|
| `void secret sync <file>` | Bulk upload secrets from dotenv file |
|
|
@@ -63,7 +64,7 @@ Use this page as a command reference. If you are setting up a project for the fi
|
|
|
63
64
|
| `void project rollback` | Roll back to a previous deployment |
|
|
64
65
|
| `void project cancel` | Cancel an active deployment |
|
|
65
66
|
| `void project zero-trust` | Inspect or override project Zero Trust protection |
|
|
66
|
-
| `void project purge-cache` | Purge all cached pages
|
|
67
|
+
| `void project purge-cache` | Purge all cached pages (Void platform) |
|
|
67
68
|
| `void build logs` | Stream, tail, or download build logs |
|
|
68
69
|
| `void email status` | Show email readiness on your own Cloudflare account (`--platform cloudflare`) |
|
|
69
70
|
| `void email setup` | Set email up on your own Cloudflare account, without deploying |
|
package/docs/reference/config.md
CHANGED
|
@@ -61,11 +61,21 @@ When set, those conventions move under the configured directory:
|
|
|
61
61
|
|
|
62
62
|
With that config, Void reads `src/pages`, `src/routes`, `src/db/schema.ts`, `src/db/migrations`, `src/auth.ts`, and `src/env.ts`. Project files such as `void.config.ts`, `vite.config.ts`, `package.json`, `tsconfig.json`, `public/`, and the local-only `.env` stay at the project root. Void does not scan both locations; if source conventions exist in both places during dev/build, remove one copy so the active source tree is unambiguous.
|
|
63
63
|
|
|
64
|
+
### `ai`
|
|
65
|
+
|
|
66
|
+
`ai.gateway` names the Cloudflare AI Gateway that `ai.provider().fetch()` uses when your app runs on your own Cloudflare account. `ai.run()`, `ai.stream()`, and `ai.image()` use the Workers AI binding and do not need a gateway. On a Void platform, the platform selects the gateway and ignores this setting.
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{ "ai": { "gateway": "my-gateway" } }
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
See [AI on your Cloudflare account](../integrations/cloudflare.md#ai-self-host).
|
|
73
|
+
|
|
64
74
|
### `auth`
|
|
65
75
|
|
|
66
76
|
High-level Better Auth configuration.
|
|
67
77
|
|
|
68
|
-
Use `auth.providers` to select which built-in auth providers Void should enable by default. Include `"email"` for email/password auth. Social providers read credentials from `AUTH_<PROVIDER>_CLIENT_ID` and `AUTH_<PROVIDER>_CLIENT_SECRET`.
|
|
78
|
+
Use `auth.providers` to select which built-in auth providers Void should enable by default. Include `"email"` for email/password auth. Social providers read credentials from `AUTH_<PROVIDER>_CLIENT_ID` and `AUTH_<PROVIDER>_CLIENT_SECRET`. `cognito` also needs a domain, region, and user pool ID: set `AUTH_COGNITO_DOMAIN`, `AUTH_COGNITO_REGION`, and `AUTH_COGNITO_USER_POOL_ID`, or set them in `auth.ts`.
|
|
69
79
|
|
|
70
80
|
```json
|
|
71
81
|
{
|
|
@@ -502,7 +512,7 @@ Each binding accepts `true` (use default name), `false` (disable), or a string (
|
|
|
502
512
|
|
|
503
513
|
Custom binding names work with `void/db`, `void/kv`, and `void/storage` during development and deployment. Custom AI names also work with `void/ai` on direct Cloudflare deploys; managed Workers AI uses the platform's proxy.
|
|
504
514
|
|
|
505
|
-
`email` is a boolean feature switch. Set it to `true` to enable [email](../guide/email.md) and the
|
|
515
|
+
`email` is a boolean feature switch. Set it to `true` to enable [email](../guide/email.md) and the local email inbox without an import from `void/email`, or `false` to disable them. On a Void platform, sending uses the platform proxy. Direct Cloudflare setup records a `SEND_EMAIL` binding in `void.lock.json`; see [`email.from`](#email).
|
|
506
516
|
|
|
507
517
|
#### `inference.build`
|
|
508
518
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "void",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.12",
|
|
4
4
|
"description": "Full-stack framework and deployment CLI for Cloudflare Workers, powered by Vite.",
|
|
5
5
|
"homepage": "https://void.cloud",
|
|
6
6
|
"bugs": {
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"#self/sandbox": "./dist/runtime/sandbox.mjs",
|
|
38
38
|
"#self/runtime/live-server": "./dist/runtime/live-server.mjs",
|
|
39
39
|
"#self/runtime/fetch": "./dist/runtime/fetch.mjs",
|
|
40
|
+
"#self/runtime/fetch-server": "./dist/runtime/fetch-server.mjs",
|
|
40
41
|
"#self/runtime/fetch-stream": "./dist/runtime/fetch-stream.mjs",
|
|
41
42
|
"#self/runtime/route-url": "./dist/runtime/route-url.mjs",
|
|
42
43
|
"#self/runtime/migration-handler": "./dist/runtime/migration-handler.mjs",
|
|
@@ -347,11 +348,11 @@
|
|
|
347
348
|
"@cloudflare/workers-auth": "^0.14.0",
|
|
348
349
|
"@cloudflare/workers-types": "^5.20261014.1",
|
|
349
350
|
"@napi-rs/keyring": "^2.1.1",
|
|
350
|
-
"@void/deploy-cloudflare": "1.1.
|
|
351
|
-
"@void/deploy-core": "1.1.
|
|
352
|
-
"@void/edge": "1.1.
|
|
353
|
-
"@void/isr": "1.1.
|
|
354
|
-
"@void/platform": "1.1.
|
|
351
|
+
"@void/deploy-cloudflare": "1.1.12",
|
|
352
|
+
"@void/deploy-core": "1.1.12",
|
|
353
|
+
"@void/edge": "1.1.12",
|
|
354
|
+
"@void/isr": "1.1.12",
|
|
355
|
+
"@void/platform": "1.1.12",
|
|
355
356
|
"better-auth": "^1.7.7",
|
|
356
357
|
"better-sqlite3": "^13.0.3",
|
|
357
358
|
"blake3-jit": "^1.1.0",
|
|
@@ -400,7 +401,7 @@
|
|
|
400
401
|
"zod": "^4.6.7"
|
|
401
402
|
},
|
|
402
403
|
"peerDependencies": {
|
|
403
|
-
"@void/md": "1.1.
|
|
404
|
+
"@void/md": "1.1.12",
|
|
404
405
|
"arktype": ">=2.0.0",
|
|
405
406
|
"valibot": ">=1.0.0-beta.7",
|
|
406
407
|
"vite": "^8.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { t as prepareCfBuildOutput } from "./cf-build-output-Bc8i3dzE.mjs";
|
package/dist/client-B60PwCC4.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { r as PlatformClient } from "./client-DM9Kcf4e.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { t as collectMigrations } from "./collect-xjffdCdk.mjs";
|
package/dist/deploy-9lgfhrXS.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { t as discoverSchema } from "./discover-D2PGT63u.mjs";
|
package/dist/fetch-sAcwjzLO.mjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { n as ofetch } from "./fetch-error-Dj3crt0e.mjs";
|
|
2
|
-
import { t as interpolateRouteParams } from "./route-url-BjGv_KKY.mjs";
|
|
3
|
-
//#region src/runtime/fetch.ts
|
|
4
|
-
async function fetch(path, options) {
|
|
5
|
-
const url = interpolateRouteParams(path, options?.params);
|
|
6
|
-
return ofetch(url, {
|
|
7
|
-
method: options?.method ?? "GET",
|
|
8
|
-
body: options?.body,
|
|
9
|
-
query: options?.query,
|
|
10
|
-
headers: options?.headers,
|
|
11
|
-
signal: options?.signal,
|
|
12
|
-
baseURL: options?.baseURL,
|
|
13
|
-
retry: options?.retry,
|
|
14
|
-
timeout: options?.timeout
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
//#endregion
|
|
18
|
-
export { fetch as t };
|
package/dist/gen-sXyp5DFO.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { r as runGenCommand } from "./gen-CufHEf42.mjs";
|
package/dist/help-i2YGGnTH.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { r as printHelpPage } from "./help-BT2hovNI.mjs";
|
package/dist/login-XD844Xs-.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { r as selectPlatformLoginMethod } from "./login-C2T1oVG-.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { n as runMigrateCommand } from "./migrate-BDIprOYd.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { a as runOperatorCommand } from "./operator-cmd-DHieWtFp.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { t as parsePlatformArgs } from "./platform-args-CaCL_1Ch.mjs";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { t as prepareProject } from "./prepare-DEB5SeVJ.mjs";
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
//#region src/runtime/remote/r2-conditions.ts
|
|
2
|
-
function serializeR2Conditional(value) {
|
|
3
|
-
if (value instanceof Headers) return Array.from(value.entries());
|
|
4
|
-
return {
|
|
5
|
-
...value,
|
|
6
|
-
uploadedBefore: value.uploadedBefore?.toISOString(),
|
|
7
|
-
uploadedAfter: value.uploadedAfter?.toISOString()
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
function parseR2Conditional(value) {
|
|
11
|
-
if (Array.isArray(value)) {
|
|
12
|
-
if (!value.every((pair) => Array.isArray(pair) && pair.length === 2 && pair.every((item) => typeof item === "string"))) throw new Error("Invalid R2 conditional headers");
|
|
13
|
-
return new Headers(value);
|
|
14
|
-
}
|
|
15
|
-
if (!value || typeof value !== "object") throw new Error("Invalid R2 conditional options");
|
|
16
|
-
const result = {};
|
|
17
|
-
for (const [key, entry] of Object.entries(value)) if (key === "etagMatches" || key === "etagDoesNotMatch") {
|
|
18
|
-
if (typeof entry !== "string") throw new Error(`Invalid R2 condition: ${key}`);
|
|
19
|
-
result[key] = entry;
|
|
20
|
-
} else if (key === "uploadedBefore" || key === "uploadedAfter") {
|
|
21
|
-
if (typeof entry !== "string" || !Number.isFinite(Date.parse(entry))) throw new Error(`Invalid R2 condition: ${key}`);
|
|
22
|
-
result[key] = new Date(entry);
|
|
23
|
-
} else if (key === "secondsGranularity") {
|
|
24
|
-
if (typeof entry !== "boolean") throw new Error(`Invalid R2 condition: ${key}`);
|
|
25
|
-
result[key] = entry;
|
|
26
|
-
} else throw new Error(`Unsupported R2 condition: ${key}`);
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
//#endregion
|
|
30
|
-
export { serializeR2Conditional as n, parseR2Conditional as t };
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
//#region src/pages/script-json.ts
|
|
2
|
-
const UNSAFE_SCRIPT_CHARS = /[<>&\u2028\u2029]/g;
|
|
3
|
-
function escapeScriptJson(json) {
|
|
4
|
-
return json.replace(UNSAFE_SCRIPT_CHARS, (c) => {
|
|
5
|
-
return `\\u${c.charCodeAt(0).toString(16).padStart(4, "0")}`;
|
|
6
|
-
});
|
|
7
|
-
}
|
|
8
|
-
//#endregion
|
|
9
|
-
//#region src/pages/serialize.ts
|
|
10
|
-
/**
|
|
11
|
-
* Escape JSON for embedding inside an inline `<script type="application/json">`
|
|
12
|
-
* tag. Replaces `<`, `>`, `&`, U+2028, U+2029 with their `\uXXXX` JSON escape
|
|
13
|
-
* sequences so the script tag cannot be closed early and the payload survives
|
|
14
|
-
* `JSON.parse` on hydration.
|
|
15
|
-
*/
|
|
16
|
-
function serializePageData(pageObj) {
|
|
17
|
-
return escapeScriptJson(JSON.stringify(pageObj));
|
|
18
|
-
}
|
|
19
|
-
//#endregion
|
|
20
|
-
export { escapeScriptJson as n, serializePageData as t };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
//#region src/pages/serialize.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Escape JSON for embedding inside an inline `<script type="application/json">`
|
|
4
|
-
* tag. Replaces `<`, `>`, `&`, U+2028, U+2029 with their `\uXXXX` JSON escape
|
|
5
|
-
* sequences so the script tag cannot be closed early and the payload survives
|
|
6
|
-
* `JSON.parse` on hydration.
|
|
7
|
-
*/
|
|
8
|
-
declare function serializePageData(pageObj: unknown): string;
|
|
9
|
-
//#endregion
|
|
10
|
-
export { serializePageData as t };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { i as validateMigrations } from "./validate-CheZGRE7.mjs";
|