void 0.20.2 → 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/README.md +2 -2
  2. package/dist/agents-gni4eqBu.mjs +111 -0
  3. package/dist/auth-3sGB0zJ1.mjs +22 -0
  4. package/dist/{auth-DPl6kck4.mjs → auth-B9_D6ygs.mjs} +6 -241
  5. package/dist/auth-CAw7zHqj.mjs +2 -0
  6. package/dist/auth-client-BWBT8HLp.mjs +6 -0
  7. package/dist/auth-client-Bawdj38n.d.mts +7 -0
  8. package/dist/auth-client-react-7GFffu8R.d.mts +7 -0
  9. package/dist/auth-client-react-CMLwT2xI.mjs +6 -0
  10. package/dist/auth-client-solid-DyTFL4cq.d.mts +7 -0
  11. package/dist/auth-client-solid-UoreJWZG.mjs +6 -0
  12. package/dist/auth-client-svelte-Cv_WvrRk.mjs +6 -0
  13. package/dist/auth-client-svelte-zetW0KIH.d.mts +7 -0
  14. package/dist/auth-client-vue-CFk7Xbv3.mjs +6 -0
  15. package/dist/auth-client-vue-bChShbQP.d.mts +7 -0
  16. package/dist/{auth-cmd-gniL2fNt.mjs → auth-cmd-MkBG2u1f.mjs} +5 -5
  17. package/dist/{auth-link-NZdjCmSc.mjs → auth-link-Devmv96E.mjs} +5 -5
  18. package/dist/{better-auth-shared-DSCeohOK.d.mts → better-auth-shared-BoVwA5Vm.d.mts} +1 -6
  19. package/dist/{better-auth-shared-CYw1T3k4.mjs → better-auth-shared-syGYYmnY.mjs} +1 -1
  20. package/dist/{build-cmd-sI18tX_O.mjs → build-cmd-DsBGwtfs.mjs} +6 -4
  21. package/dist/{cache-IHn5MwBC.mjs → cache-BMw8eMyF.mjs} +6 -4
  22. package/dist/{cancel-deploy-C5qTOdLi.mjs → cancel-deploy-B3_s9NIN.mjs} +5 -3
  23. package/dist/cf-access-rAZxzMkL.mjs +181 -0
  24. package/dist/cf-build-output-CTdlo6Rt.mjs +520 -0
  25. package/dist/cli/cf-compat.d.mts +1 -0
  26. package/dist/cli/cf-compat.mjs +934 -0
  27. package/dist/cli/cli.mjs +61 -38
  28. package/dist/cli/env-schema-probe.mjs +3 -3
  29. package/dist/client-DAAivdid.mjs +2 -0
  30. package/dist/{client-dHfSJvAN.mjs → client-PdAJ-F0t.mjs} +148 -89
  31. package/dist/{cloudflare-auth-6M5llVPC.mjs → cloudflare-auth-BCmTc1X_.mjs} +13 -44
  32. package/dist/{cloudflare-cmd-4RPGN3KB.mjs → cloudflare-cmd-D6PrKn7o.mjs} +4 -7
  33. package/dist/{cloudflare-connect-t1UU5svD.mjs → cloudflare-connect-DloREDlc.mjs} +6 -6
  34. package/dist/cloudflare-operations-BHNJVDbN.mjs +2 -0
  35. package/dist/{cloudflare-operations-BzWnlC1_.mjs → cloudflare-operations-CPEdHYhM.mjs} +37 -39
  36. package/dist/cloudflare-user-output-Q-k0QoNQ.mjs +20 -0
  37. package/dist/collect-DAUItMDS.mjs +2 -0
  38. package/dist/collect-DXHNWHcT.mjs +48 -0
  39. package/dist/config--T87TD8T.mjs +2 -0
  40. package/dist/{config-NOG_U1aK.mjs → config-BSe70f4T.mjs} +4 -6
  41. package/dist/config-DDIFxQYx.mjs +2 -0
  42. package/dist/{config-uNGuFsI2.mjs → config-Dxr6cTXn.mjs} +22 -37
  43. package/dist/config-DywxBLQC.d.mts +185 -0
  44. package/dist/config-entry.d.mts +6 -0
  45. package/dist/config-entry.mjs +7 -0
  46. package/dist/config-uP7ZDtVZ.mjs +21 -0
  47. package/dist/config-write-y3CBI_ux.mjs +60 -0
  48. package/dist/{connect-Bfk31O_8.mjs → connect-BvC9kolB.mjs} +8 -6
  49. package/dist/{create-project-Bk9Z0-Jg.mjs → create-project-C9lQhRzj.mjs} +9 -25
  50. package/dist/create-project-CI-17RVJ.mjs +2 -0
  51. package/dist/database-provider-Cx525bwX.mjs +6 -0
  52. package/dist/database-provider.mjs +1 -5
  53. package/dist/{db-BkRoptAt.mjs → db-R7IQgOv5.mjs} +48 -44
  54. package/dist/{delete-DouASY9P.mjs → delete-CghI_NXn.mjs} +6 -4
  55. package/dist/deploy-CYPymbtG.mjs +2 -0
  56. package/dist/{deploy-DTaWUS1S.mjs → deploy-H968Lo4T.mjs} +765 -197
  57. package/dist/discover-BBzDZe_o.mjs +2 -0
  58. package/dist/{discover-xvfrgJeo.mjs → discover-C4O6YxVS.mjs} +3 -8
  59. package/dist/{dist-BrsS7cai.mjs → dist-4WkAWhWx.mjs} +1 -15
  60. package/dist/{dist-m40_XgNh.mjs → dist-Bn8Kodjp.mjs} +1 -1
  61. package/dist/dist-C5fND3R0.mjs +2 -0
  62. package/dist/dist-D7-nEOXi.mjs +2 -0
  63. package/dist/{output-B0cfNSx5.mjs → dist-Dn6nn2IU.mjs} +3 -926
  64. package/dist/{domain-1RhhOVrC.mjs → domain-CITt8lC-.mjs} +7 -5
  65. package/dist/{route-types-Da-DpyUp.mjs → drizzle-Beb2Am5S.mjs} +1 -280
  66. package/dist/{email-Ce6SQq-i.mjs → email-C5kaZXzJ.mjs} +2 -2
  67. package/dist/{email-C-lGh51B.mjs → email-_8VmyX7V.mjs} +14 -12
  68. package/dist/{entry-DU3oDoQ3.mjs → entry-DdRFGK0y.mjs} +2 -2
  69. package/dist/{env-DJHsPE7Z.mjs → env-DV4r3nHz.mjs} +9 -7
  70. package/dist/{env-DBKmK4vc.mjs → env-DX_v-Q-v.mjs} +1 -1
  71. package/dist/env-Yz4HcvHs.mjs +78 -0
  72. package/dist/env-helpers--wFmQ_5Q.mjs +136 -0
  73. package/dist/{env-types-BNPhro-M.mjs → env-types-CWDtqHgw.mjs} +6 -2
  74. package/dist/{env-validation-CF6KvTRf.mjs → env-validation-BsFEXps5.mjs} +19 -28
  75. package/dist/env-validation-DIDGM7h4.mjs +2 -0
  76. package/dist/fetch-CXDChK7B.mjs +18 -0
  77. package/dist/fetch-_SeGZao9.d.mts +57 -0
  78. package/dist/fetch-stream-AOByI7Ki.mjs +81 -0
  79. package/dist/fetch-stream-Bjf0hoZb.d.mts +49 -0
  80. package/dist/gen-BBiIZw6g.mjs +2 -0
  81. package/dist/{gen-B_wPnVTK.mjs → gen-CFOEEc-t.mjs} +13 -11
  82. package/dist/{generate-RTK8_kK1.mjs → generate-C0VY6RVf.mjs} +2 -2
  83. package/dist/{github-cmd-PW7ZnWTp.mjs → github-cmd-jYjha2LO.mjs} +18 -22
  84. package/dist/{handler-D1hLsObx.d.mts → handler-BXJTXd02.d.mts} +6 -1
  85. package/dist/handler-DghKr6dU.mjs +150 -0
  86. package/dist/head-D_QRR5Yd.mjs +112 -0
  87. package/dist/head-client-DzmJGN4C.mjs +90 -0
  88. package/dist/{headers-BAHwgHdW.mjs → headers-B_HBMgi0.mjs} +2 -2
  89. package/dist/{help-CwOX-zmI.mjs → help-C46mnlUS.mjs} +17 -12
  90. package/dist/help-CS_nAsWu.mjs +2 -0
  91. package/dist/index.d.mts +2 -20
  92. package/dist/index.mjs +116 -60
  93. package/dist/{init-BWZ7q5Z4.mjs → init-CSXmvxKu.mjs} +49 -50
  94. package/dist/{link-Rmvu2Wl_.mjs → link-DxMOALXk.mjs} +7 -5
  95. package/dist/{list-DEE2S6mY.mjs → list-0wQs0oYg.mjs} +7 -5
  96. package/dist/live-CB1y5IuC.mjs +411 -0
  97. package/dist/live-CKiJilLr.d.mts +105 -0
  98. package/dist/local-d1-DzykTWY8.mjs +104 -0
  99. package/dist/{login-Uvferzmm.mjs → login-CKk5NX4d.mjs} +6 -11
  100. package/dist/login-Ch9cgWRF.mjs +2 -0
  101. package/dist/{logs-27FenuiC.mjs → logs-hxWBSoej.mjs} +6 -4
  102. package/dist/migrate-CLty4mZR.mjs +2 -0
  103. package/dist/migrate-DcW8F2W8.mjs +285 -0
  104. package/dist/migration-handler-DM4clYj5.d.mts +51 -0
  105. package/dist/{neon-DHwd2zvC.mjs → neon-n74ta1Pr.mjs} +1 -1
  106. package/dist/{node-Ez5KW5rn.mjs → node-Cupyf7-s.mjs} +6 -6
  107. package/dist/{operator-auth-B3e08unv.mjs → operator-auth-BkVgJqv-.mjs} +2 -2
  108. package/dist/{operator-client-LUZnlnYk.mjs → operator-client-A0iex2yi.mjs} +2 -1
  109. package/dist/{operator-cmd-CjOTmAYE.mjs → operator-cmd-BEUYhaHB.mjs} +6 -6
  110. package/dist/output-urU86XeT.mjs +146 -0
  111. package/dist/{package-json-CPoWX79C.mjs → package-json-iCbMg5XF.mjs} +1 -1
  112. package/dist/pages/client.d.mts +5 -2
  113. package/dist/pages/client.mjs +5 -3
  114. package/dist/pages/head-client.mjs +1 -89
  115. package/dist/pages/head.mjs +1 -111
  116. package/dist/pages/index.d.mts +2 -3
  117. package/dist/pages/index.mjs +7 -7
  118. package/dist/pages/islands-plugin.mjs +2 -2
  119. package/dist/pages/prefetch.d.mts +2 -30
  120. package/dist/pages/prefetch.mjs +1 -89
  121. package/dist/pages/protocol.d.mts +2 -2
  122. package/dist/pages/protocol.mjs +3 -3
  123. package/dist/pages/serialize.d.mts +2 -9
  124. package/dist/pages/serialize.mjs +1 -13
  125. package/dist/plan-BEZ8VJW0.mjs +256 -0
  126. package/dist/plan-DpuOr14e.mjs +2 -0
  127. package/dist/{platform-auth-config-DrbQXXiW.mjs → platform-auth-config-Df6yVw-e.mjs} +6 -6
  128. package/dist/{platform-auth-protection-Bhtvp0B_.mjs → platform-auth-protection-Jb0yftay.mjs} +7 -5
  129. package/dist/{platform-auth-recovery-CeOKGVeJ.mjs → platform-auth-recovery-DmRyIfW0.mjs} +6 -5
  130. package/dist/platform-cmd-C9Vt7m-d.mjs +2 -0
  131. package/dist/{platform-cmd-BFhieCdV.mjs → platform-cmd-DRxCOTwy.mjs} +8 -5
  132. package/dist/{platform-domain-C74PULqV.mjs → platform-domain-IjiXgrXJ.mjs} +4 -3
  133. package/dist/{platform-lifecycle-BwAIgz-t.mjs → platform-lifecycle-BquAaU-5.mjs} +263 -56
  134. package/dist/platform-lifecycle-CuJIZNvA.mjs +2 -0
  135. package/dist/{platform-management-COogu_Se.mjs → platform-management-CCQKGsq4.mjs} +12 -7
  136. package/dist/platform-management-Cgyed0WY.mjs +2 -0
  137. package/dist/{platform-recovery-ewqLefp1.mjs → platform-recovery-DS8ih1SW.mjs} +3 -3
  138. package/dist/platform-registry-BJbgZLS1.mjs +431 -0
  139. package/dist/{plugin-inference-BDRfZngg.mjs → plugin-inference-DsvtJLll.mjs} +4 -4
  140. package/dist/prefetch-Bsc_Pb6c.mjs +90 -0
  141. package/dist/prefetch-Ce6la4EI.d.mts +31 -0
  142. package/dist/{prepare-blNRQvQl.mjs → prepare-CaUxODOU.mjs} +3 -2
  143. package/dist/prepare-D4CkM3_v.mjs +2 -0
  144. package/dist/{prepare-CtDJjoOj.mjs → prepare-pcWcxSCh.mjs} +13 -11
  145. package/dist/prerender-render-Cf_WDE9W.mjs +111 -0
  146. package/dist/prerender-render.mjs +1 -110
  147. package/dist/{preset-lAy0B0BQ.mjs → preset-Dowh9tTt.mjs} +16 -118
  148. package/dist/project-BEBFDFLz.mjs +2 -0
  149. package/dist/project-CWNIPoXc.mjs +209 -0
  150. package/dist/{project-cmd-DmZK9Hxf.mjs → project-cmd-2lN--YAX.mjs} +18 -16
  151. package/dist/{project-paths-SK8nMHPp.mjs → project-paths-CKQ-Q5JS.mjs} +47 -14
  152. package/dist/project-slug-23TpquG4.mjs +8 -0
  153. package/dist/project-slug-DofjTFd-.mjs +2 -0
  154. package/dist/{project-team-D8jOJMUJ.mjs → project-team-Dapn9HZn.mjs} +9 -5
  155. package/dist/{project-token-DA34bf-C.mjs → project-token-C90v9SJK.mjs} +6 -4
  156. package/dist/{project-tsconfig-Ql2XsSQp.mjs → project-tsconfig-CwfqUnVp.mjs} +2 -2
  157. package/dist/{protocol-C-pqYJjE.d.mts → protocol-ZH3jP4a7.d.mts} +1 -1
  158. package/dist/providers-BNKRacMr.d.mts +7 -0
  159. package/dist/provision-CNgEBkVA.mjs +3 -0
  160. package/dist/{provision-CSJOjjQk.mjs → provision-Cck2m3jJ.mjs} +11 -25
  161. package/dist/queues-BWKt1Xo4.d.mts +7 -0
  162. package/dist/{requests-CUExwGQQ.mjs → requests-CzX46I0i.mjs} +5 -3
  163. package/dist/resolve-project-BTotl8Nn.mjs +2 -0
  164. package/dist/{resolve-project--Vxawf7z.mjs → resolve-project-Xvis70DG.mjs} +2 -8
  165. package/dist/response-Tn7rU0MV.mjs +30 -0
  166. package/dist/{rollback-CDNGU1gr.mjs → rollback-BEeyc73H.mjs} +6 -4
  167. package/dist/{rolldown-runtime-rQ84J-ij.mjs → rolldown-runtime-DXIUcv95.mjs} +1 -10
  168. package/dist/route-types-Id82-veQ.mjs +280 -0
  169. package/dist/{local-d1-D2I6Ox5F.mjs → runner-BGVsGgkb.mjs} +6 -114
  170. package/dist/runner-CQs_cDSG.mjs +2 -0
  171. package/dist/runner-mysql-1o47achK.mjs +2 -0
  172. package/dist/{runner-mysql-7BPUNGmL.mjs → runner-mysql-BhwMk2Bm.mjs} +2 -9
  173. package/dist/{runner-pg-BkEza-dX.mjs → runner-pg-CJ_JeGF6.mjs} +2 -9
  174. package/dist/runner-pg-D7z01mQS.mjs +2 -0
  175. package/dist/runtime/ai.mjs +1 -1
  176. package/dist/runtime/auth-client-react.d.mts +2 -6
  177. package/dist/runtime/auth-client-react.mjs +1 -5
  178. package/dist/runtime/auth-client-solid.d.mts +2 -6
  179. package/dist/runtime/auth-client-solid.mjs +1 -5
  180. package/dist/runtime/auth-client-svelte.d.mts +2 -6
  181. package/dist/runtime/auth-client-svelte.mjs +1 -5
  182. package/dist/runtime/auth-client-vue.d.mts +2 -6
  183. package/dist/runtime/auth-client-vue.mjs +1 -5
  184. package/dist/runtime/auth-client.d.mts +2 -6
  185. package/dist/runtime/auth-client.mjs +1 -5
  186. package/dist/runtime/auth.mjs +1 -21
  187. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  188. package/dist/runtime/better-auth-mysql.mjs +1 -1
  189. package/dist/runtime/better-auth-pg.d.mts +1 -1
  190. package/dist/runtime/better-auth-pg.mjs +1 -1
  191. package/dist/runtime/better-auth.d.mts +1 -1
  192. package/dist/runtime/better-auth.mjs +1 -1
  193. package/dist/runtime/client-react.d.mts +3 -3
  194. package/dist/runtime/client-react.mjs +3 -3
  195. package/dist/runtime/client-solid.d.mts +3 -3
  196. package/dist/runtime/client-solid.mjs +3 -3
  197. package/dist/runtime/client-svelte.d.mts +3 -3
  198. package/dist/runtime/client-svelte.mjs +3 -3
  199. package/dist/runtime/client-vue.d.mts +3 -3
  200. package/dist/runtime/client-vue.mjs +3 -3
  201. package/dist/runtime/client.d.mts +3 -3
  202. package/dist/runtime/client.mjs +3 -3
  203. package/dist/runtime/db.mjs +1 -1
  204. package/dist/runtime/durable.mjs +1 -1
  205. package/dist/runtime/email/testing.mjs +1 -1
  206. package/dist/runtime/env-helpers.mjs +1 -135
  207. package/dist/runtime/env-public-client.mjs +1 -1
  208. package/dist/runtime/env-public.mjs +2 -2
  209. package/dist/runtime/env.mjs +1 -77
  210. package/dist/runtime/fetch-stream.d.mts +2 -49
  211. package/dist/runtime/fetch-stream.mjs +2 -80
  212. package/dist/runtime/fetch.d.mts +2 -57
  213. package/dist/runtime/fetch.mjs +2 -17
  214. package/dist/runtime/handler.d.mts +1 -1
  215. package/dist/runtime/handler.mjs +1 -149
  216. package/dist/runtime/kv.mjs +1 -1
  217. package/dist/runtime/live-client.d.mts +1 -1
  218. package/dist/runtime/live-server.mjs +2 -2
  219. package/dist/runtime/live.d.mts +2 -104
  220. package/dist/runtime/live.mjs +1 -410
  221. package/dist/runtime/migration-handler-mysql.d.mts +1 -1
  222. package/dist/runtime/migration-handler-pg.d.mts +1 -1
  223. package/dist/runtime/migration-handler.d.mts +2 -50
  224. package/dist/runtime/queues.d.mts +2 -6
  225. package/dist/runtime/queues.mjs +1 -1
  226. package/dist/runtime/remote/index.mjs +49 -8
  227. package/dist/runtime/response.mjs +1 -29
  228. package/dist/runtime/sandbox.d.mts +4 -56
  229. package/dist/runtime/sandbox.mjs +82 -221
  230. package/dist/runtime/sse.mjs +1 -171
  231. package/dist/runtime/storage.mjs +1 -1
  232. package/dist/runtime/validator.d.mts +1 -1
  233. package/dist/runtime/validator.mjs +1 -71
  234. package/dist/runtime/ws-server.d.mts +2 -2
  235. package/dist/runtime/ws-server.mjs +2 -2
  236. package/dist/runtime/ws.d.mts +2 -121
  237. package/dist/{scan-CpK-57ug.mjs → scan-DJbooZm2.mjs} +3 -3
  238. package/dist/{scan-BMH4rzlv.mjs → scan-DdDvRCU1.mjs} +8 -26
  239. package/dist/{secret-Bzzi2e9E.mjs → secret-wnTel5Yw.mjs} +8 -6
  240. package/dist/serialize-BPvnNQuA.mjs +14 -0
  241. package/dist/serialize-CfSwWfF2.d.mts +10 -0
  242. package/dist/{skills-C0RvGjeE.mjs → skills-B-690E7h.mjs} +3 -2
  243. package/dist/sse-BaC1jXko.mjs +172 -0
  244. package/dist/{subcommand-prompt-Bmyn5Rlc.mjs → subcommand-prompt-Gj3VzLIh.mjs} +2 -1
  245. package/dist/sveltekit.d.mts +2 -1
  246. package/dist/sveltekit.mjs +3 -2
  247. package/dist/validate-DqJ33oHj.mjs +2 -0
  248. package/dist/validate-qNhV00PD.mjs +180 -0
  249. package/dist/validator-BTOu0fB0.mjs +72 -0
  250. package/dist/{wrangler--imS8n0d.mjs → wrangler-D01qs6VB.mjs} +259 -71
  251. package/dist/ws-BwcqizuH.d.mts +122 -0
  252. package/dist/{yarn-pnp-DxSInkzL.mjs → yarn-pnp-CVEc3gE7.mjs} +1 -1
  253. package/package.json +19 -8
  254. package/skills/void/SKILL.md +7 -5
  255. package/skills/void/docs/guide/ai.md +3 -3
  256. package/skills/void/docs/guide/app-types.md +12 -11
  257. package/skills/void/docs/guide/auth.md +2 -2
  258. package/skills/void/docs/guide/database/d1.md +1 -1
  259. package/skills/void/docs/guide/database/mysql.md +1 -1
  260. package/skills/void/docs/guide/database/postgresql.md +3 -3
  261. package/skills/void/docs/guide/deployment.md +16 -16
  262. package/skills/void/docs/guide/durable-state.md +2 -2
  263. package/skills/void/docs/guide/edge/headers.md +3 -3
  264. package/skills/void/docs/guide/edge/prerendering.md +1 -1
  265. package/skills/void/docs/guide/edge/redirects.md +4 -4
  266. package/skills/void/docs/guide/edge/revalidation.md +6 -6
  267. package/skills/void/docs/guide/edge/rewrites.md +28 -27
  268. package/skills/void/docs/guide/edge/static-assets.md +1 -1
  269. package/skills/void/docs/guide/email.md +27 -25
  270. package/skills/void/docs/guide/env-migration.md +1 -1
  271. package/skills/void/docs/guide/index.md +1 -1
  272. package/skills/void/docs/guide/pages-routing/head.md +1 -1
  273. package/skills/void/docs/guide/platform/administration/access.md +171 -0
  274. package/skills/void/docs/guide/platform/administration/email.md +121 -0
  275. package/skills/void/docs/guide/platform/administration/operations.md +97 -0
  276. package/skills/void/docs/guide/platform/administration/projects.md +56 -0
  277. package/skills/void/docs/guide/platform/development/local.md +119 -0
  278. package/skills/void/docs/guide/platform/development/runtime.md +124 -0
  279. package/skills/void/docs/guide/platform/development/schema-ci.md +95 -0
  280. package/skills/void/docs/guide/platform/installation/ci.md +58 -0
  281. package/skills/void/docs/guide/platform/installation/credentials.md +90 -0
  282. package/skills/void/docs/guide/platform/installation/domains.md +68 -0
  283. package/skills/void/docs/guide/platform/installation/first-deployment.md +82 -0
  284. package/skills/void/docs/guide/platform/installation/maintenance.md +137 -0
  285. package/skills/void/docs/guide/platform/installation/prerequisites.md +88 -0
  286. package/skills/void/docs/guide/platform/installation/setup.md +169 -0
  287. package/skills/void/docs/guide/platform/installation/uninstall.md +54 -0
  288. package/skills/void/docs/guide/platform-administration.md +6 -414
  289. package/skills/void/docs/guide/platform-development.md +5 -316
  290. package/skills/void/docs/guide/project-collaboration.md +1 -1
  291. package/skills/void/docs/guide/remote-dev.md +2 -2
  292. package/skills/void/docs/guide/sandboxes.md +10 -25
  293. package/skills/void/docs/guide/self-hosted-platform.md +11 -694
  294. package/skills/void/docs/guide/ssg.md +1 -1
  295. package/skills/void/docs/guide/websockets.md +1 -1
  296. package/skills/void/docs/integrations/cloudflare.md +86 -84
  297. package/skills/void/docs/integrations/frameworks/analog.md +14 -9
  298. package/skills/void/docs/integrations/frameworks/astro.md +14 -10
  299. package/skills/void/docs/integrations/frameworks/nuxt.md +14 -9
  300. package/skills/void/docs/integrations/frameworks/overview.md +35 -29
  301. package/skills/void/docs/integrations/frameworks/react-router.md +1 -1
  302. package/skills/void/docs/integrations/frameworks/sveltekit.md +33 -30
  303. package/skills/void/docs/integrations/frameworks/tanstack-start.md +1 -1
  304. package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -5
  305. package/skills/void/docs/reference/api.md +55 -38
  306. package/skills/void/docs/reference/cli.md +60 -34
  307. package/skills/void/docs/reference/config.md +57 -34
  308. package/skills/void/docs/reference/resource-inference.md +10 -10
  309. package/skills/void/docs/reference/structure.md +2 -2
  310. package/dist/validate-tBBN_dXH.mjs +0 -505
@@ -0,0 +1,185 @@
1
+ import "./types-CKWnYgfy.mjs";
2
+ import { t as VoidAuthProvider } from "./providers-BNKRacMr.mjs";
3
+ import { t as HeadConfig } from "./head-Do8P4puT.mjs";
4
+ import { RewriteDestination } from "void/routes";
5
+ //#region src/sandbox/config.d.ts
6
+ type SandboxInstanceType = "dev" | "lite" | "basic" | "standard" | "standard-1" | "standard-2" | "standard-3" | "standard-4";
7
+ type SandboxConfig = {
8
+ binding?: string;
9
+ className?: string;
10
+ containerName?: string;
11
+ image?: string;
12
+ imageBuildContext?: string;
13
+ platformImage?: string;
14
+ instanceType?: SandboxInstanceType;
15
+ maxInstances?: number;
16
+ };
17
+ //#endregion
18
+ //#region src/config.d.ts
19
+ /** Redirect destination — string (302) or object with explicit status. */
20
+ type RedirectDestination = string | {
21
+ to: string;
22
+ status?: 301 | 302 | 303 | 307 | 308;
23
+ };
24
+ /** Curated Worker fields accepted in the legacy void.json config. */
25
+ type WranglerConfig = {
26
+ compatibility_date?: string;
27
+ compatibility_flags?: Array<string>;
28
+ vars?: Record<string, string>;
29
+ limits?: {
30
+ cpu_ms?: number;
31
+ };
32
+ };
33
+ /**
34
+ * How the asset layer answers a request that matched no asset and no worker
35
+ * route. Mirrors Cloudflare's `assets.not_found_handling`.
36
+ */
37
+ type NotFoundHandling = "single-page-application" | "404-page" | "none";
38
+ /** Routing configuration — headers, redirects, rewrites, fallbacks, revalidation, prerendering. */
39
+ type RoutingConfig = {
40
+ /** Disable ISR and edge prerendering, including per-page policies. Static output is unaffected. */
41
+ isr?: boolean;
42
+ revalidate?: number | Record<string, number>;
43
+ revalidateQueryAllowlist?: Record<string, Array<string>>;
44
+ prerender?: Array<string>;
45
+ headers?: Record<string, Array<string>>;
46
+ redirects?: Record<string, RedirectDestination>;
47
+ rewrites?: Record<string, RewriteDestination>;
48
+ fallbacks?: Record<string, RewriteDestination>;
49
+ /**
50
+ * Override the inferred `not_found_handling` for the asset layer.
51
+ *
52
+ * Void infers `single-page-application` whenever the worker does not own HTML
53
+ * routing, because a real SPA needs `/index.html` served for deep links. An
54
+ * app whose assets were emitted by a static site generator (VitePress,
55
+ * Docusaurus, …) wants the opposite: unknown URLs should serve the generator's
56
+ * own `404.html` with a real HTTP 404, not `index.html` with a 200. Nothing in
57
+ * a built asset tree distinguishes the two, so this is an explicit opt-in.
58
+ *
59
+ * Only `not_found_handling` is affected — `run_worker_first` is unchanged, so
60
+ * API routes, auth, and `/__void/*` still reach the worker first.
61
+ */
62
+ notFound?: NotFoundHandling;
63
+ };
64
+ /** Inference configuration — bindings, scanDirs, build, outputDir, appType. */
65
+ type InferenceConfig = {
66
+ bindings?: {
67
+ db?: boolean | string;
68
+ kv?: boolean | string;
69
+ storage?: boolean | string;
70
+ ai?: boolean | string;
71
+ email?: boolean;
72
+ };
73
+ scanDirs?: ReadonlyArray<string>;
74
+ build?: string;
75
+ outputDir?: string;
76
+ appType?: "spa" | "static" | "void" | "framework";
77
+ };
78
+ /** Auth configuration — high-level provider selection for Better Auth defaults. */
79
+ type AuthConfig = {
80
+ providers?: Array<VoidAuthProvider>;
81
+ };
82
+ /** AI configuration — the Cloudflare AI Gateway used by `ai.provider().fetch()` on self-hosted deploys (Workers AI `ai.run`/`ai.image` use the `env.AI` binding directly). */
83
+ type AiConfig = {
84
+ gateway?: string;
85
+ };
86
+ /**
87
+ * Email configuration. `from` is the default sender for `sendEmail()` — one
88
+ * address, optionally with a display name (`Acme <noreply@mail.acme.com>`) —
89
+ * and, on `void deploy --platform cloudflare`, its host is the domain the CLI
90
+ * sets Email Routing and Email Sending up on.
91
+ */
92
+ type EmailConfig = {
93
+ from?: string;
94
+ };
95
+ /** Cloudflare Worker configuration passed through to the native deploy artifact. */
96
+ type CloudflareField<T> = T & Record<string, unknown>;
97
+ type CloudflareConfig = Record<string, unknown> & {
98
+ account_id?: string;
99
+ name?: string;
100
+ main?: string;
101
+ compatibility_date?: string;
102
+ compatibility_flags?: Array<string>;
103
+ workers_dev?: boolean;
104
+ preview_urls?: boolean;
105
+ vars?: Record<string, unknown>;
106
+ routes?: Array<string | CloudflareField<{
107
+ pattern: string;
108
+ zone_name?: string;
109
+ zone_id?: string;
110
+ }>>;
111
+ route?: string | CloudflareField<{
112
+ pattern: string;
113
+ zone_name?: string;
114
+ zone_id?: string;
115
+ }>;
116
+ d1_databases?: Array<CloudflareField<{
117
+ binding: string;
118
+ database_name?: string;
119
+ database_id?: string;
120
+ migrations_dir?: string;
121
+ migrations_table?: string;
122
+ }>>;
123
+ kv_namespaces?: Array<CloudflareField<{
124
+ binding: string;
125
+ id?: string;
126
+ preview_id?: string;
127
+ }>>;
128
+ r2_buckets?: Array<CloudflareField<{
129
+ binding: string;
130
+ bucket_name?: string;
131
+ preview_bucket_name?: string;
132
+ }>>;
133
+ hyperdrive?: Array<CloudflareField<{
134
+ binding: string;
135
+ id?: string;
136
+ }>>;
137
+ queues?: CloudflareField<{
138
+ producers?: Array<CloudflareField<{
139
+ binding: string;
140
+ queue: string;
141
+ }>>;
142
+ consumers?: Array<CloudflareField<{
143
+ queue: string;
144
+ max_batch_size?: number;
145
+ max_batch_timeout?: number;
146
+ max_retries?: number;
147
+ dead_letter_queue?: string;
148
+ }>>;
149
+ }>;
150
+ assets?: CloudflareField<{
151
+ directory?: string;
152
+ binding?: string;
153
+ not_found_handling?: "single-page-application" | "404-page" | "none";
154
+ run_worker_first?: boolean | Array<string>;
155
+ }>;
156
+ triggers?: CloudflareField<{
157
+ crons?: Array<string>;
158
+ }>;
159
+ send_email?: Array<CloudflareField<{
160
+ name: string;
161
+ destination_address?: string;
162
+ allowed_destination_addresses?: Array<string>;
163
+ allowed_sender_addresses?: Array<string>;
164
+ }>>;
165
+ addresses?: Array<string>;
166
+ };
167
+ /** Shape of the Void project config. All fields optional. */
168
+ type VoidConfig = {
169
+ sourceDir?: string;
170
+ target?: "cloudflare" | "node" | "bun" | "deno";
171
+ output?: "server" | "static";
172
+ auth?: AuthConfig;
173
+ head?: HeadConfig;
174
+ routing?: RoutingConfig;
175
+ inference?: InferenceConfig;
176
+ sandbox?: boolean | SandboxConfig;
177
+ remote?: boolean;
178
+ worker?: WranglerConfig;
179
+ cloudflare?: CloudflareConfig;
180
+ database?: "pg" | "mysql";
181
+ ai?: AiConfig;
182
+ email?: EmailConfig;
183
+ };
184
+ //#endregion
185
+ export { VoidConfig as t };
@@ -0,0 +1,6 @@
1
+ import { t as VoidConfig } from "./config-DywxBLQC.mjs";
2
+ //#region src/config-entry.d.ts
3
+ /** Define a typed Void project configuration without loading the Vite plugin. */
4
+ export declare function defineConfig<const T extends VoidConfig>(config: T): T;
5
+ //#endregion
6
+ export type { VoidConfig };
@@ -0,0 +1,7 @@
1
+ //#region src/config-entry.ts
2
+ /** Define a typed Void project configuration without loading the Vite plugin. */
3
+ function defineConfig(config) {
4
+ return config;
5
+ }
6
+ //#endregion
7
+ export { defineConfig };
@@ -0,0 +1,21 @@
1
+ import { n as readProjectPaths } from "./project-paths-CKQ-Q5JS.mjs";
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { pathToFileURL } from "node:url";
4
+ //#region src/auth/config.ts
5
+ function isVoidAuthConfigSource(code) {
6
+ return /\bfrom\s+["']void\/auth["']/.test(code);
7
+ }
8
+ function findVoidAuthConfig(root, paths = readProjectPaths(root)) {
9
+ for (const absPath of paths.authConfigCandidates) {
10
+ if (!existsSync(absPath)) continue;
11
+ if (isVoidAuthConfigSource(readFileSync(absPath, "utf-8"))) return absPath;
12
+ }
13
+ return null;
14
+ }
15
+ async function loadVoidAuthConfig(configPath) {
16
+ if (!configPath) return;
17
+ const mod = await import(pathToFileURL(configPath).href);
18
+ return mod.default ?? mod.auth ?? mod.config;
19
+ }
20
+ //#endregion
21
+ export { loadVoidAuthConfig as n, findVoidAuthConfig as t };
@@ -0,0 +1,60 @@
1
+ import { a as join } from "./dist-4WkAWhWx.mjs";
2
+ import { o as TYPED_CONFIG_FILE, s as loadTypedVoidConfigFile } from "./project-paths-CKQ-Q5JS.mjs";
3
+ import { g as validateConfig } from "./config-Dxr6cTXn.mjs";
4
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
5
+ import { parse } from "acorn";
6
+ //#region src/config-write.ts
7
+ const GENERATED_MARKERS = [
8
+ "// Generated by void migrate.",
9
+ "// Generated from void.json by void migrate.",
10
+ "// Generated by void init."
11
+ ];
12
+ function renderVoidConfig(config, marker = GENERATED_MARKERS[0]) {
13
+ return `${marker}\nimport { defineConfig } from 'void/config';\n\nexport default defineConfig(${JSON.stringify(config, null, 2)});\n`;
14
+ }
15
+ function isStaticValue(node) {
16
+ if (!node) return false;
17
+ if (node.type === "Literal") return node.value === null || [
18
+ "string",
19
+ "number",
20
+ "boolean"
21
+ ].includes(typeof node.value);
22
+ if (node.type === "UnaryExpression") return node.operator === "-" && node.argument?.type === "Literal" && typeof node.argument.value === "number";
23
+ if (node.type === "ArrayExpression") return node.elements?.every(isStaticValue) ?? false;
24
+ if (node.type !== "ObjectExpression") return false;
25
+ return node.properties?.every((property) => property.type === "Property" && property.kind === "init" && !property.computed && !property.method && (property.key?.type === "Identifier" || property.key?.type === "Literal") && isStaticValue(property.value)) ?? false;
26
+ }
27
+ function isGeneratedStaticConfig(source) {
28
+ if (!GENERATED_MARKERS.some((marker) => source.startsWith(marker))) return false;
29
+ const comments = [];
30
+ let program;
31
+ try {
32
+ program = parse(source, {
33
+ ecmaVersion: "latest",
34
+ sourceType: "module",
35
+ onComment: (_block, comment) => comments.push(comment.trim())
36
+ });
37
+ } catch {
38
+ return false;
39
+ }
40
+ if (comments.length !== 1 || !GENERATED_MARKERS.includes(`// ${comments[0]}`)) return false;
41
+ const [importDeclaration, exportDeclaration] = program.body ?? [];
42
+ const call = exportDeclaration?.declaration;
43
+ return program.body?.length === 2 && importDeclaration?.type === "ImportDeclaration" && importDeclaration.source?.value === "void/config" && importDeclaration.specifiers?.length === 1 && importDeclaration.specifiers[0]?.imported?.name === "defineConfig" && importDeclaration.specifiers[0]?.local?.name === "defineConfig" && exportDeclaration?.type === "ExportDefaultDeclaration" && call?.type === "CallExpression" && call.callee?.name === "defineConfig" && call.arguments?.length === 1 && isStaticValue(call.arguments[0]);
44
+ }
45
+ function canRewriteVoidProjectConfig(root) {
46
+ const path = join(root, TYPED_CONFIG_FILE);
47
+ return !existsSync(path) || isGeneratedStaticConfig(readFileSync(path, "utf8"));
48
+ }
49
+ /** Update CLI-owned static config without silently rewriting authored TypeScript. */
50
+ function writeVoidProjectConfig(root, config) {
51
+ validateConfig(config, TYPED_CONFIG_FILE);
52
+ const path = join(root, TYPED_CONFIG_FILE);
53
+ if (existsSync(path)) {
54
+ if (!isGeneratedStaticConfig(readFileSync(path, "utf8"))) throw new Error(`config: ${TYPED_CONFIG_FILE} contains authored TypeScript or comments. Update it directly and rerun the command.`);
55
+ validateConfig(loadTypedVoidConfigFile(path), TYPED_CONFIG_FILE);
56
+ }
57
+ writeFileSync(path, renderVoidConfig(config, "// Generated by void init."));
58
+ }
59
+ //#endregion
60
+ export { writeVoidProjectConfig as n, canRewriteVoidProjectConfig as t };
@@ -1,9 +1,11 @@
1
- import { D as log, I as isCancel, M as select, X as normalizePlatformApiUrl, Y as listPlatformConnections } from "./output-B0cfNSx5.mjs";
2
- import { T as writePlatformSelection, p as readPlatformToken, w as writeDeploymentPlatform, x as readDeploymentPlatform } from "./auth-DPl6kck4.mjs";
3
- import { a as isExpiredTokenError, n as PlatformClient } from "./client-dHfSJvAN.mjs";
4
- import { n as promptForLoginToken } from "./login-Uvferzmm.mjs";
5
- import { discoverPlatform, promptPlatformUrl, saveDiscoveredPlatform } from "./platform-cmd-BFhieCdV.mjs";
6
- import { t as connectCloudflare } from "./cloudflare-connect-t1UU5svD.mjs";
1
+ import { f as readPlatformToken } from "./auth-B9_D6ygs.mjs";
2
+ import { o as listPlatformConnections, s as normalizePlatformApiUrl } from "./platform-registry-BJbgZLS1.mjs";
3
+ import { i as readDeploymentPlatform, l as writeDeploymentPlatform, u as writePlatformSelection } from "./project-CWNIPoXc.mjs";
4
+ import { I as select, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
5
+ import { i as isExpiredTokenError, n as PlatformClient } from "./client-PdAJ-F0t.mjs";
6
+ import { t as promptForLoginToken } from "./login-CKk5NX4d.mjs";
7
+ import { i as saveDiscoveredPlatform, n as promptPlatformUrl, t as discoverPlatform } from "./platform-cmd-DRxCOTwy.mjs";
8
+ import { t as connectCloudflare } from "./cloudflare-connect-DloREDlc.mjs";
7
9
  //#region src/cli/connect.ts
8
10
  async function selectVoidPlatform(interactive) {
9
11
  if (!interactive) throw new Error("connect: Supply a Void platform URL in non-interactive mode.");
@@ -1,20 +1,10 @@
1
- import { n as __exportAll } from "./rolldown-runtime-rQ84J-ij.mjs";
2
- import { C as cancel, D as log, I as isCancel, M as select, P as text, c as import_picocolors, w as confirm } from "./output-B0cfNSx5.mjs";
3
- import { E as writeProjectConfig, c as getSiteDomain, y as attachSelectedPlatform } from "./auth-DPl6kck4.mjs";
4
- import { t as PlatformApiError } from "./client-dHfSJvAN.mjs";
5
- import { n as inferDefaultSlug } from "./resolve-project--Vxawf7z.mjs";
6
- //#region src/cli/project-slug.ts
7
- var project_slug_exports = /* @__PURE__ */ __exportAll({
8
- MAX_SLUG_LENGTH: () => 56,
9
- validateProjectSlug: () => validateProjectSlug
10
- });
11
- function validateProjectSlug(value) {
12
- const slug = (value ?? "").trim();
13
- if (slug.length === 0) return "Project slug is required.";
14
- if (!(slug.length === 1 ? /^[a-z0-9]$/.test(slug) : /^[a-z0-9][a-z0-9-]*[a-z0-9]$/.test(slug))) return "Slug must be lowercase alphanumeric with dashes.";
15
- if (slug.length > 56) return `Slug must be at most 56 characters (it forms the email sender <slug>+noreply@).`;
16
- }
17
- //#endregion
1
+ import { c as import_picocolors } from "./output-urU86XeT.mjs";
2
+ import { s as getSiteDomain } from "./auth-B9_D6ygs.mjs";
3
+ import { d as writeProjectConfig, t as attachSelectedPlatform } from "./project-CWNIPoXc.mjs";
4
+ import { B as text, E as confirm, I as select, T as cancel, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
5
+ import { t as PlatformApiError } from "./client-PdAJ-F0t.mjs";
6
+ import { t as validateProjectSlug } from "./project-slug-23TpquG4.mjs";
7
+ import { n as inferDefaultSlug } from "./resolve-project-Xvis70DG.mjs";
18
8
  //#region src/cli/prompt.ts
19
9
  async function promptProjectSetupAction(message = "Set up a Void project:", options = {}) {
20
10
  const result = await select({
@@ -79,11 +69,6 @@ async function promptProjectSlug(defaultSlug) {
79
69
  }
80
70
  //#endregion
81
71
  //#region src/cli/create-project.ts
82
- var create_project_exports = /* @__PURE__ */ __exportAll({
83
- createProjectWithSlugRetry: () => createProjectWithSlugRetry,
84
- isRetryableCreateError: () => isRetryableCreateError,
85
- promptAndCreateProject: () => promptAndCreateProject
86
- });
87
72
  /**
88
73
  * Prompts for a slug and calls `client.createProject`, re-prompting whenever
89
74
  * the server rejects with a retryable error (e.g. free-plan short-slug 403,
@@ -105,8 +90,7 @@ async function createProjectWithSlugRetry(client, initialDefaultSlug, promptSlug
105
90
  return project;
106
91
  } catch (error) {
107
92
  if (error instanceof PlatformApiError && isRetryableCreateError(error)) {
108
- const reason = error.code || error.body || `HTTP ${error.status}`;
109
- log.error(`project: Could not create project '${slug}': ${reason}.`);
93
+ log.error(`project: ${error.message}`);
110
94
  defaultSlug = slug;
111
95
  continue;
112
96
  }
@@ -137,4 +121,4 @@ function isSlugRelatedError(error) {
137
121
  return `${error.code ?? ""} ${error.body ?? ""}`.toLowerCase().includes("slug");
138
122
  }
139
123
  //#endregion
140
- export { project_slug_exports as a, promptProjectSetupAction as i, promptAndCreateProject as n, promptProjectSelection as r, create_project_exports as t };
124
+ export { promptProjectSetupAction as a, promptProjectSelection as i, isRetryableCreateError as n, promptAndCreateProject as r, createProjectWithSlugRetry as t };
@@ -0,0 +1,2 @@
1
+ import { t as createProjectWithSlugRetry } from "./create-project-C9lQhRzj.mjs";
2
+ export { createProjectWithSlugRetry };
@@ -0,0 +1,6 @@
1
+ //#region src/database-provider.ts
2
+ function defineDatabaseProvider(adapter) {
3
+ return adapter;
4
+ }
5
+ //#endregion
6
+ export { defineDatabaseProvider as t };
@@ -1,6 +1,2 @@
1
- //#region src/database-provider.ts
2
- function defineDatabaseProvider(adapter) {
3
- return adapter;
4
- }
5
- //#endregion
1
+ import { t as defineDatabaseProvider } from "./database-provider-Cx525bwX.mjs";
6
2
  export { defineDatabaseProvider };