void 1.4.0 → 1.6.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 (455) hide show
  1. package/README.md +1 -1
  2. package/dist/{account-cmd-HP8bixYo.mjs → account-cmd-DRhmCWcm.mjs} +7 -8
  3. package/dist/{action-key-XZ9HkWAO.mjs → action-key-XtKKbbsi.mjs} +1 -2
  4. package/dist/{agents-CuNtT0D_.mjs → agents-DRo8gzni.mjs} +2 -3
  5. package/dist/{application-analysis-DDOQwiXk.mjs → application-analysis-HRFsZOv3.mjs} +18 -24
  6. package/dist/{application-routing-4719u_kf.mjs → application-routing-P4TggvWp.mjs} +2 -3
  7. package/dist/{ast-CsZ_q_gc.mjs → ast-Cv0JwXqb.mjs} +1 -2
  8. package/dist/{ast-bindings-C3yaPs1y.mjs → ast-bindings-BkivMJIo.mjs} +6 -11
  9. package/dist/{atomic-write-Dq6R0BPN.mjs → atomic-write-DA6eD1Kp.mjs} +1 -2
  10. package/dist/{auth-g2TQbDLD.d.mts → auth-CH4PLAX1.d.mts} +0 -2
  11. package/dist/{auth-Cbqi1iVX.mjs → auth-CL-p_rqV.mjs} +1 -1
  12. package/dist/{auth-B6iOCjKI.mjs → auth-Dy8svcqQ.mjs} +6 -7
  13. package/dist/{auth-3sGB0zJ1.mjs → auth-YVjBX5NY.mjs} +1 -2
  14. package/dist/{auth-client-Bawdj38n.d.mts → auth-client-6-Ft9i9T.d.mts} +0 -2
  15. package/dist/{auth-client-BWBT8HLp.mjs → auth-client-DwCdwKbw.mjs} +1 -2
  16. package/dist/{auth-client-react-CMLwT2xI.mjs → auth-client-react-CJdeErvM.mjs} +1 -2
  17. package/dist/{auth-client-react-7GFffu8R.d.mts → auth-client-react-DvQLe5Zb.d.mts} +0 -2
  18. package/dist/{auth-client-solid-UoreJWZG.mjs → auth-client-solid-BRvgvp6h.mjs} +1 -2
  19. package/dist/{auth-client-solid-DyTFL4cq.d.mts → auth-client-solid-P9pEtKGp.d.mts} +0 -2
  20. package/dist/{auth-client-svelte-zetW0KIH.d.mts → auth-client-svelte-B5j8irT6.d.mts} +0 -2
  21. package/dist/{auth-client-svelte-Cv_WvrRk.mjs → auth-client-svelte-BSqUCEed.mjs} +1 -2
  22. package/dist/{auth-client-vue-bChShbQP.d.mts → auth-client-vue-BEiAfavk.d.mts} +0 -2
  23. package/dist/{auth-client-vue-CFk7Xbv3.mjs → auth-client-vue-CPkbRtOO.mjs} +1 -2
  24. package/dist/{auth-link-CedYpDCy.mjs → auth-link-CVXP1G6G.mjs} +7 -8
  25. package/dist/{auth-migrations-BO27GDNr.mjs → auth-migrations-DDeifS3v.mjs} +1 -2
  26. package/dist/{auth-router-vafo7x8w.mjs → auth-router-D1pGdbvB.mjs} +6 -7
  27. package/dist/{base64-DVrOndmI.mjs → base64-ikl9yBy3.mjs} +1 -2
  28. package/dist/{better-auth-shared-BHB8kiTE.d.mts → better-auth-shared-BJyG2mH0.d.mts} +2 -6
  29. package/dist/{better-auth-shared-7FM3Uk2N.mjs → better-auth-shared-C958aM7W.mjs} +31 -7
  30. package/dist/{build-cmd-9vUAQ1_V.mjs → build-cmd-DmjbuT6d.mjs} +7 -8
  31. package/dist/{cache-jvwLNb0h.mjs → cache-2khBO1MR.mjs} +7 -8
  32. package/dist/{cancel-deploy-Dw0UmWKO.mjs → cancel-deploy-_itbbvY3.mjs} +6 -7
  33. package/dist/{cf-access-CWP4avfP.mjs → cf-access-BmBT2h8_.mjs} +3 -4
  34. package/dist/{cf-access-BM9G0lhO.mjs → cf-access-pejlJmuy.mjs} +1 -2
  35. package/dist/{cf-build-output-XpNR9zoh.mjs → cf-build-output-B1C8U83u.mjs} +41 -314
  36. package/dist/cf-build-output-CmDOcA7K.mjs +1 -0
  37. package/dist/{cf-command-values-ByHk0xg4.mjs → cf-command-values-Ccl-zRhl.mjs} +10 -7
  38. package/dist/cf-config-migrate-Dy8MrKgF.mjs +326 -0
  39. package/dist/{cf-worker-settings-Dg27RzyT.mjs → cf-worker-settings-CARs4Wy9.mjs} +3 -5
  40. package/dist/cli/cli.mjs +66 -76
  41. package/dist/cli/cloudflare-operation-process.mjs +14 -18
  42. package/dist/cli/env-schema-probe.d.mts +1 -5
  43. package/dist/cli/env-schema-probe.mjs +4 -5
  44. package/dist/client-CEtr5UOR.mjs +1 -0
  45. package/dist/{client-B3LnB_bE.mjs → client-CoxPEhJq.mjs} +15 -13
  46. package/dist/{cloudflare-auth-DyD_kVFr.mjs → cloudflare-auth-CEu-1Ps_.mjs} +2 -3
  47. package/dist/{cloudflare-cmd-D-b_u3T4.mjs → cloudflare-cmd-fZ6AMSWk.mjs} +7 -8
  48. package/dist/{cloudflare-config-CH1AylZT.mjs → cloudflare-config-eQunqX6A.mjs} +22 -17
  49. package/dist/{cloudflare-connect-zTJh8UnN.mjs → cloudflare-connect-9OZe4XVQ.mjs} +5 -6
  50. package/dist/{cloudflare-operations-Bc-7fN44.mjs → cloudflare-operations-CrskD4_O.mjs} +8 -9
  51. package/dist/{cloudflare-operations-BtulCNOg.mjs → cloudflare-operations-oLvAd9Nd.mjs} +1 -1
  52. package/dist/{cloudflare-process-8jEYIeim.mjs → cloudflare-process-DjJ638A-.mjs} +7 -9
  53. package/dist/{cloudflare-user-output-Q-k0QoNQ.mjs → cloudflare-user-output-zEwuGrEJ.mjs} +1 -2
  54. package/dist/collect-8i0wU63d.mjs +1 -0
  55. package/dist/{collect-Dew86qce.mjs → collect-C6Blu9yw.mjs} +2 -3
  56. package/dist/{config-tqMM6DwY.mjs → config-BBlVXZCU.mjs} +5 -6
  57. package/dist/{config-OFOAimzt.mjs → config-BITKQ3O6.mjs} +5 -5
  58. package/dist/{config-BV2ASlpn.mjs → config-BgysUhnm.mjs} +1 -1
  59. package/dist/{config-CAdZVTLN.d.mts → config-CPxJmt4M.d.mts} +4 -6
  60. package/dist/{config-D-6q7EBH.mjs → config-WlvEcL82.mjs} +3 -4
  61. package/dist/config-entry.d.mts +1 -3
  62. package/dist/config-entry.mjs +1 -2
  63. package/dist/{connect-BOM6zvFX.mjs → connect-CKvmkl2R.mjs} +10 -11
  64. package/dist/{create-project-C2K0DN2O.mjs → create-project-BiMmR5wA.mjs} +1 -1
  65. package/dist/{create-project-Bxd02EHN.mjs → create-project-Bq0M8MtO.mjs} +9 -11
  66. package/dist/{database-provider-Cx525bwX.mjs → database-provider-DkZo4VwN.mjs} +1 -2
  67. package/dist/database-provider.d.mts +1 -3
  68. package/dist/database-provider.mjs +1 -1
  69. package/dist/{db-Cdvr3zwG.mjs → db-cq5RW4Vy.mjs} +52 -54
  70. package/dist/{db-types-0eCiqYb1.mjs → db-types-C_8amnB0.mjs} +3 -4
  71. package/dist/{delete-lETE6Tpt.mjs → delete-CY4L8fi2.mjs} +7 -8
  72. package/dist/deploy-B029oHlE.mjs +2 -0
  73. package/dist/{deploy-CdM-LAxX.mjs → deploy-D_gEojD2.mjs} +144 -136
  74. package/dist/{deploy-managed-static-DjeBFG2c.mjs → deploy-managed-static-BHVbB_-A.mjs} +33 -40
  75. package/dist/{deploy-transport-DIq_gFTP.mjs → deploy-transport-DEyOUfac.mjs} +6 -7
  76. package/dist/deploy.d.mts +1 -3
  77. package/dist/deploy.mjs +11 -11
  78. package/dist/{dev-inbox-D0jxye_D.mjs → dev-inbox-CUUS6iUg.mjs} +3 -4
  79. package/dist/discover-D4mQthao.mjs +1 -0
  80. package/dist/{discover-LaV0tbIu.mjs → discover-Dhkzxgdt.mjs} +3 -4
  81. package/dist/{dispatch-CLa2LThw.mjs → dispatch-BNLB5_Gm.mjs} +12 -15
  82. package/dist/{dist-Cegxq8gs.mjs → dist-B6eN80gc.mjs} +199 -118
  83. package/dist/{dist-D15hFhP0.mjs → dist-BWNkVq50.mjs} +8 -15
  84. package/dist/{dist-Cor9XGoz.mjs → dist-D23AAMxT.mjs} +9 -16
  85. package/dist/{dist-ipQi0Q8y.mjs → dist-DMYe8CZJ.mjs} +1 -2
  86. package/dist/{dist-B1PLt4_8.mjs → dist-eV_Ep60B.mjs} +1 -1
  87. package/dist/{domain-DyhNtdYf.mjs → domain-BlH90Ods.mjs} +8 -9
  88. package/dist/{dotenv-CNazY3-w.mjs → dotenv-CEI8hapP.mjs} +1 -2
  89. package/dist/{drizzle-9TubSZvI.mjs → drizzle-C8MPqt5m.mjs} +1 -1
  90. package/dist/{drizzle-BQfyvQKX.mjs → drizzle-lFdzSEa9.mjs} +2 -3
  91. package/dist/{email-B9ayYQEG.mjs → email-BHY72ixO.mjs} +3 -4
  92. package/dist/{email-DM2wDcBN.mjs → email-Bkq8ZL1p.mjs} +14 -15
  93. package/dist/{email-cloudflare-PMbAev9Q.mjs → email-cloudflare-MvJIxrwx.mjs} +18 -123
  94. package/dist/{email-protocol-D9nTvhCp.mjs → email-protocol-DTs_TjCS.mjs} +1 -2
  95. package/dist/{entry-BEM8ZuGP.mjs → entry-CBZsCy3O.mjs} +5 -6
  96. package/dist/{env-78hbN-oI.mjs → env-AvuCSeCH.mjs} +10 -11
  97. package/dist/{env-BaMz0j7H.mjs → env-CuzZZyjB.mjs} +3 -4
  98. package/dist/{env-0jrMQJI_.mjs → env-DtKg5G26.mjs} +2 -3
  99. package/dist/{env-helpers--wFmQ_5Q.mjs → env-helpers-Dj_SIwPu.mjs} +1 -2
  100. package/dist/{env-helpers-CyKtOBpj.d.mts → env-helpers-U56xuFgL.d.mts} +1 -3
  101. package/dist/{env-public-6lqiSD2b.d.mts → env-public-CeNeO_AT.d.mts} +2 -4
  102. package/dist/{env-raw-D74P4ebM.mjs → env-raw-e8qgqAzQ.mjs} +1 -2
  103. package/dist/{env-types-BicfKBhV.mjs → env-types-DqzVBKnS.mjs} +4 -5
  104. package/dist/{env-validation-BUfFZ6bt.mjs → env-validation-C8Cmvas0.mjs} +1 -1
  105. package/dist/{env-validation-B3VobvXm.mjs → env-validation-GV1oD4EV.mjs} +9 -10
  106. package/dist/{error-pages-CLIJ7aYq.mjs → error-pages-COVBnzK7.mjs} +6 -12
  107. package/dist/{fetch-CUX0tB78.d.mts → fetch-B-gLGYVl.d.mts} +0 -4
  108. package/dist/{fetch-CtESUYWd.mjs → fetch-C8yhLoF3.mjs} +3 -4
  109. package/dist/{fetch-error-Bw0n-IY-.mjs → fetch-error-DmlRM6e4.mjs} +2 -4
  110. package/dist/{fetch-stream-BspOeTAI.mjs → fetch-stream-DafNtVJC.mjs} +4 -5
  111. package/dist/{fetch-stream-DfkAzZf-.d.mts → fetch-stream-DuwxWmBM.d.mts} +1 -3
  112. package/dist/{gen-CFmsUsW1.mjs → gen-BD-dfjxY.mjs} +12 -13
  113. package/dist/gen-CIHXh9I8.mjs +1 -0
  114. package/dist/{generate-DkEb9rL-.mjs → generate-BOp1g1H_.mjs} +1 -1
  115. package/dist/{generate-B1m4Cm4n.mjs → generate-CWb8aOsm.mjs} +4 -5
  116. package/dist/{generated-wrangler-config-DeWj5F9Y.mjs → generated-wrangler-config-CoDaaFsA.mjs} +1 -2
  117. package/dist/{git-metadata-D-gurjzG.mjs → git-metadata-Cukp5kV5.mjs} +1 -2
  118. package/dist/{github-cmd-De-_IWbM.mjs → github-cmd-CA-lBdkn.mjs} +8 -9
  119. package/dist/{handler-BHktmuTL.d.mts → handler-BR6Tvjkp.d.mts} +18 -26
  120. package/dist/{handler-BZ1t7-Rv.mjs → handler-CKeTtYID.mjs} +6 -17
  121. package/dist/{head-D2VF4ApL.mjs → head-5XPcnG-j.mjs} +1 -2
  122. package/dist/{head-C8K_iGe6.d.mts → head-MeF_5M_3.d.mts} +0 -2
  123. package/dist/headers-CuTEdP9C.mjs +445 -0
  124. package/dist/{help-CKbrhZha.mjs → help-1OCFDsRr.mjs} +28 -12
  125. package/dist/help-Ba8Dq5-r.mjs +1 -0
  126. package/dist/{inbound-Da7XsjH3.d.mts → inbound-BHt4dIlL.d.mts} +16 -9
  127. package/dist/{inbound-VrOLqwZY.mjs → inbound-CdO-qY0w.mjs} +6 -81
  128. package/dist/index.d.mts +23 -13
  129. package/dist/index.mjs +495 -223
  130. package/dist/{info-Yg0-V5Rs.mjs → info-CJxua_db.mjs} +6 -7
  131. package/dist/{init-CDiJQycf.mjs → init-B-4CluYx.mjs} +43 -59
  132. package/dist/{isr-config-fZaJJ8t7.mjs → isr-config-Czzb4mIq.mjs} +5 -55
  133. package/dist/{limits-D0vD1M9A.mjs → limits-CrHLm5Tk.mjs} +1 -2
  134. package/dist/{limits-CFsDKQvU.d.mts → limits-_xIf5z_P.d.mts} +0 -2
  135. package/dist/{link-Dllip08S.mjs → link-DAXOT-G_.mjs} +8 -9
  136. package/dist/{list-BYRP6am0.mjs → list-BYSOo9fm.mjs} +8 -9
  137. package/dist/{live-BllfDuzA.d.mts → live-0xrcVpyq.d.mts} +2 -4
  138. package/dist/{live-BcHoTDFe.mjs → live-DF4HUl2m.mjs} +5 -7
  139. package/dist/{load-user-env-DD5qveNU.mjs → load-user-env-CSwdofj0.mjs} +1 -2
  140. package/dist/{local-d1-CAwAs9GH.mjs → local-d1-BLgsNUj9.mjs} +4 -5
  141. package/dist/{log-BMwmN5Ae.mjs → log-D9hwSySP.mjs} +3 -4
  142. package/dist/login-BpbYeu-n.mjs +1 -0
  143. package/dist/{login-PcFy5mlC.mjs → login-CJopTWX4.mjs} +6 -7
  144. package/dist/{logs-DmJTBhed.mjs → logs-DE0weBsR.mjs} +19 -18
  145. package/dist/{migrate-B8S2xTcb.mjs → migrate-ChHHZBTi.mjs} +20 -16
  146. package/dist/migrate-HdA6Kh2p.mjs +1 -0
  147. package/dist/{migration-handler-CwlEQUoo.d.mts → migration-handler-D8mDx3Ew.d.mts} +0 -4
  148. package/dist/{migration-handler-Cg0Y4EPu.mjs → migration-handler-DCehTlWs.mjs} +1 -2
  149. package/dist/{mime-BAyHPskU.mjs → mime-CtP6-qAF.mjs} +145 -18
  150. package/dist/{mysql-migration-sql-BIS5vbNk.mjs → mysql-migration-sql-CI9VTwjt.mjs} +3 -5
  151. package/dist/{neon-DTZr7Bu7.mjs → neon-CJzQSycr.mjs} +2 -3
  152. package/dist/nitro.d.mts +0 -2
  153. package/dist/nitro.mjs +5 -6
  154. package/dist/{node-CDOPrGSl.mjs → node-CZ6lGNLn.mjs} +8 -9
  155. package/dist/{operator-args-BsJIYXaT.mjs → operator-args-D79WQP70.mjs} +2 -3
  156. package/dist/{operator-auth-Cr2zCc-J.mjs → operator-auth-CfDcmzpo.mjs} +2 -3
  157. package/dist/{operator-client-C-ROjk1I.mjs → operator-client-BIY4-N_6.mjs} +3 -4
  158. package/dist/{operator-cmd-DmkmS2wL.mjs → operator-cmd-BUqsdk2K.mjs} +32 -15
  159. package/dist/operator-cmd-wBYyp8iQ.mjs +1 -0
  160. package/dist/{output-BpgYODYx.mjs → output-BCdLioKP.mjs} +4 -5
  161. package/dist/output-E6gecbbV.mjs +1 -0
  162. package/dist/{package-json-BjYqR-So.mjs → package-json-DvS6IFRv.mjs} +2 -3
  163. package/dist/pages/client.d.mts +147 -31
  164. package/dist/pages/client.mjs +199 -43
  165. package/dist/pages/head.d.mts +1 -1
  166. package/dist/pages/head.mjs +1 -1
  167. package/dist/pages/index.d.mts +25 -18
  168. package/dist/pages/index.mjs +24 -12
  169. package/dist/pages/islands-plugin.d.mts +75 -13
  170. package/dist/pages/islands-plugin.mjs +92 -7
  171. package/dist/pages/prefetch.d.mts +2 -2
  172. package/dist/pages/prefetch.mjs +1 -1
  173. package/dist/pages/protocol.d.mts +2 -2
  174. package/dist/pages/protocol.mjs +2 -2
  175. package/dist/pages/serialize.d.mts +1 -1
  176. package/dist/pages/serialize.mjs +1 -1
  177. package/dist/{pg-J2HbZIkX.mjs → pg-DoyPxa_X.mjs} +1 -2
  178. package/dist/{picocolors-BsDfhxIw.mjs → picocolors-D1NxSLw-.mjs} +2 -3
  179. package/dist/{plan-BhLO2p4w.mjs → plan-BOD70XGS.mjs} +1 -2
  180. package/dist/plan-CQ-N4gws.mjs +1 -0
  181. package/dist/platform-args-C7XUw9mw.mjs +1 -0
  182. package/dist/{platform-args-BMD2gjc_.mjs → platform-args-Cx1M-7bq.mjs} +22 -11
  183. package/dist/{platform-auth-config-CImnfohz.mjs → platform-auth-config-K4m_LE8b.mjs} +10 -11
  184. package/dist/{platform-auth-protection-BogLhtHi.mjs → platform-auth-protection-KF5Vo-1I.mjs} +10 -11
  185. package/dist/{platform-auth-recovery-B-mEaWEi.mjs → platform-auth-recovery-BOdFrl7R.mjs} +9 -11
  186. package/dist/{platform-cmd-CV8NxIIn.mjs → platform-cmd-DpCHawGF.mjs} +1 -1
  187. package/dist/{platform-cmd-DZK2ixMl.mjs → platform-cmd-Ds3EAV5t.mjs} +13 -13
  188. package/dist/{platform-discovery-CHhNs8Nn.mjs → platform-discovery-B0eZjZ3B.mjs} +2 -3
  189. package/dist/{platform-domain-CRvelPGE.mjs → platform-domain-rWJshybd.mjs} +7 -8
  190. package/dist/{platform-lifecycle-DwXq7kZt.mjs → platform-lifecycle-BH34I0rh.mjs} +1 -1
  191. package/dist/{platform-lifecycle-CPYY7E9B.mjs → platform-lifecycle-D9RdGub1.mjs} +110 -110
  192. package/dist/{platform-management-BOnGbMSM.mjs → platform-management-BRefdHGD.mjs} +27 -11
  193. package/dist/{platform-management-lXdgGgAM.mjs → platform-management-BfLW0Zlo.mjs} +1 -1
  194. package/dist/{platform-plans-config-CeydDSj0.mjs → platform-plans-config-Dx1agneU.mjs} +5 -6
  195. package/dist/{platform-recovery-noaALXnE.mjs → platform-recovery-DZuZGJtt.mjs} +5 -6
  196. package/dist/{platform-registry-B9mWX9LO.mjs → platform-registry-DZ_2Xuqd.mjs} +4 -6
  197. package/dist/platform-runtime-logs-CdJGnk3f.mjs +68 -0
  198. package/dist/{platform-setup-Ca53gtt0.mjs → platform-setup-Vw1AaUN8.mjs} +19 -7
  199. package/dist/{plugin-inference-CeiB6BG5.mjs → plugin-inference-CdLbxZL_.mjs} +16 -24
  200. package/dist/{prefetch-Bsc_Pb6c.mjs → prefetch-Dx2jIbtg.mjs} +20 -3
  201. package/dist/{prefetch-Ce6la4EI.d.mts → prefetch-NdNeubbH.d.mts} +7 -3
  202. package/dist/{prepare-D604Yiyr.mjs → prepare-BJW-f1f1.mjs} +13 -14
  203. package/dist/{prepare-BuOS18AM.mjs → prepare-BMGeKL16.mjs} +4 -5
  204. package/dist/prepare-BdxJJCMv.mjs +1 -0
  205. package/dist/{prerender-render-CaShbHJ3.mjs → prerender-render-RlAj6hh8.mjs} +2 -3
  206. package/dist/prerender-render.d.mts +1 -3
  207. package/dist/prerender-render.mjs +1 -1
  208. package/dist/{project-rqDnVsJN.mjs → project-CLwxcEdq.mjs} +3 -4
  209. package/dist/{project-zdB3fs9G.mjs → project-DVsTAWFh.mjs} +1 -1
  210. package/dist/{project-cmd-DBYqAIbe.mjs → project-cmd-B_bUyZ3J.mjs} +21 -23
  211. package/dist/{project-paths-DGu_QZ_Q.mjs → project-paths-CdGv9Tmi.mjs} +3 -5
  212. package/dist/project-slug-BUy0lmyR.mjs +1 -0
  213. package/dist/{project-slug-23TpquG4.mjs → project-slug-CO6ci9XG.mjs} +0 -1
  214. package/dist/{project-team-BjCLgTRC.mjs → project-team-MjT5K4rQ.mjs} +7 -8
  215. package/dist/{project-token-BB6PwaA9.mjs → project-token-BKHGwY3k.mjs} +7 -8
  216. package/dist/{project-tsconfig-CVvk6Z_e.mjs → project-tsconfig-Cf2NFjlM.mjs} +4 -6
  217. package/dist/{project-zero-trust-CWDh1P_t.mjs → project-zero-trust-Bzdd05-h.mjs} +7 -8
  218. package/dist/{protocol-DimNxVRr.mjs → protocol-COyySMki.mjs} +135 -113
  219. package/dist/{protocol-D5XDySYu.d.mts → protocol-CkwjASep.d.mts} +4 -6
  220. package/dist/{providers-BNKRacMr.d.mts → providers-D5P8j_8D.d.mts} +0 -2
  221. package/dist/{providers-BUHwJlmM.mjs → providers-ZARwX2cL.mjs} +1 -2
  222. package/dist/{provision-DztLJ97X.mjs → provision-BbCzpbXs.mjs} +6 -7
  223. package/dist/{provision-DfxLCg-d.mjs → provision-DQF6Kw-6.mjs} +1 -1
  224. package/dist/{queues-BWKt1Xo4.d.mts → queues-DdM42xXW.d.mts} +0 -2
  225. package/dist/{r2-conditions-B8xUgJRc.mjs → r2-conditions-BqkQNt2n.mjs} +1 -2
  226. package/dist/{requests-D_pbzDyz.mjs → requests-daJmVpjk.mjs} +6 -7
  227. package/dist/resolve-project-CgfjtOwz.mjs +1 -0
  228. package/dist/{resolve-project-Xoi6eTWY.mjs → resolve-project-D0YNnJfm.mjs} +4 -5
  229. package/dist/{resource-name-C7LVpcRm.mjs → resource-name-DlJ9QXzg.mjs} +1 -2
  230. package/dist/{response-Tn7rU0MV.mjs → response-HmNjB30w.mjs} +1 -2
  231. package/dist/{rollback-CjfIYsJx.mjs → rollback-BgL0wY1J.mjs} +7 -8
  232. package/dist/{rolldown-runtime-3h0WiCiA.mjs → rolldown-runtime-uD8oG6U2.mjs} +1 -2
  233. package/dist/{route-types-DvEGmPif.mjs → route-types-CZc1YXjF.mjs} +80 -9
  234. package/dist/route-url-CRDF-I0I.mjs +57 -0
  235. package/dist/route-url-C_YIH_zO.d.mts +37 -0
  236. package/dist/routes-stub.d.mts +8 -3
  237. package/dist/routes-stub.mjs +1 -1
  238. package/dist/{routing-assets-DdSFxoLp.mjs → routing-assets-DJIVOrCh.mjs} +1 -2
  239. package/dist/{runner-3uGC-oLF.mjs → runner-5MCSimKx.mjs} +5 -6
  240. package/dist/{runner-WCdfeI0q.mjs → runner-QMeOpScZ.mjs} +1 -1
  241. package/dist/{runner-mysql-BcHnLUuM.mjs → runner-mysql-0zVmB1JW.mjs} +1 -1
  242. package/dist/{runner-mysql-BWmbk5IE.mjs → runner-mysql-Bdmsp_x4.mjs} +3 -4
  243. package/dist/{runner-pg-Cgp-cr_p.mjs → runner-pg-2pjltt0t.mjs} +1 -1
  244. package/dist/{runner-pg-Cr3qrqi4.mjs → runner-pg-mYc75KfH.mjs} +2 -3
  245. package/dist/runtime/ai.d.mts +0 -4
  246. package/dist/runtime/ai.mjs +6 -8
  247. package/dist/runtime/auth-client-react.d.mts +1 -1
  248. package/dist/runtime/auth-client-react.mjs +1 -1
  249. package/dist/runtime/auth-client-solid.d.mts +1 -1
  250. package/dist/runtime/auth-client-solid.mjs +1 -1
  251. package/dist/runtime/auth-client-svelte.d.mts +1 -1
  252. package/dist/runtime/auth-client-svelte.mjs +1 -1
  253. package/dist/runtime/auth-client-vue.d.mts +1 -1
  254. package/dist/runtime/auth-client-vue.mjs +1 -1
  255. package/dist/runtime/auth-client.d.mts +1 -1
  256. package/dist/runtime/auth-client.mjs +1 -1
  257. package/dist/runtime/auth.d.mts +1 -1
  258. package/dist/runtime/auth.mjs +1 -1
  259. package/dist/runtime/better-auth-mysql.d.mts +2 -4
  260. package/dist/runtime/better-auth-mysql.mjs +3 -4
  261. package/dist/runtime/better-auth-pg.d.mts +2 -4
  262. package/dist/runtime/better-auth-pg.mjs +4 -5
  263. package/dist/runtime/better-auth.d.mts +2 -4
  264. package/dist/runtime/better-auth.mjs +3 -4
  265. package/dist/runtime/client-react.d.mts +4 -4
  266. package/dist/runtime/client-react.mjs +4 -4
  267. package/dist/runtime/client-solid.d.mts +4 -4
  268. package/dist/runtime/client-solid.mjs +4 -4
  269. package/dist/runtime/client-svelte.d.mts +4 -4
  270. package/dist/runtime/client-svelte.mjs +4 -4
  271. package/dist/runtime/client-vue.d.mts +4 -4
  272. package/dist/runtime/client-vue.mjs +4 -4
  273. package/dist/runtime/client.d.mts +4 -4
  274. package/dist/runtime/client.mjs +4 -4
  275. package/dist/runtime/db.d.mts +0 -2
  276. package/dist/runtime/db.mjs +2 -3
  277. package/dist/runtime/durable.d.mts +0 -2
  278. package/dist/runtime/durable.mjs +3 -4
  279. package/dist/runtime/email/testing.d.mts +1 -5
  280. package/dist/runtime/email/testing.mjs +5 -6
  281. package/dist/runtime/email-protocol.d.mts +0 -2
  282. package/dist/runtime/email-protocol.mjs +1 -1
  283. package/dist/runtime/email.d.mts +1 -5
  284. package/dist/runtime/email.mjs +6 -7
  285. package/dist/runtime/env-public-client.d.mts +1 -3
  286. package/dist/runtime/env-public-client.mjs +2 -3
  287. package/dist/runtime/env-public.d.mts +2 -2
  288. package/dist/runtime/env-public.mjs +5 -7
  289. package/dist/runtime/env.d.mts +0 -4
  290. package/dist/runtime/env.mjs +1 -1
  291. package/dist/runtime/fetch-server.d.mts +1 -3
  292. package/dist/runtime/fetch-server.mjs +3 -4
  293. package/dist/runtime/fetch-stream.d.mts +2 -2
  294. package/dist/runtime/fetch-stream.mjs +2 -2
  295. package/dist/runtime/fetch.d.mts +1 -1
  296. package/dist/runtime/fetch.mjs +2 -2
  297. package/dist/runtime/handler.d.mts +1 -1
  298. package/dist/runtime/handler.mjs +2 -2
  299. package/dist/runtime/isr.d.mts +1 -3
  300. package/dist/runtime/isr.mjs +2 -3
  301. package/dist/runtime/kv.d.mts +1 -3
  302. package/dist/runtime/kv.mjs +2 -3
  303. package/dist/runtime/limits.d.mts +1 -1
  304. package/dist/runtime/limits.mjs +1 -1
  305. package/dist/runtime/live-client.d.mts +1 -3
  306. package/dist/runtime/live-client.mjs +1 -2
  307. package/dist/runtime/live-server.d.mts +0 -2
  308. package/dist/runtime/live-server.mjs +3 -4
  309. package/dist/runtime/live.d.mts +1 -1
  310. package/dist/runtime/live.mjs +1 -1
  311. package/dist/runtime/log.d.mts +3 -3
  312. package/dist/runtime/log.mjs +26 -18
  313. package/dist/runtime/migration-handler-mysql.d.mts +2 -4
  314. package/dist/runtime/migration-handler-mysql.mjs +2 -3
  315. package/dist/runtime/migration-handler-pg.d.mts +2 -4
  316. package/dist/runtime/migration-handler-pg.mjs +2 -3
  317. package/dist/runtime/migration-handler.d.mts +1 -1
  318. package/dist/runtime/migration-handler.mjs +1 -1
  319. package/dist/runtime/queues.d.mts +1 -1
  320. package/dist/runtime/queues.mjs +2 -3
  321. package/dist/runtime/remote/binding-handler.d.mts +1 -3
  322. package/dist/runtime/remote/binding-handler.mjs +3 -4
  323. package/dist/runtime/remote/index.d.mts +1 -3
  324. package/dist/runtime/remote/index.mjs +8 -13
  325. package/dist/runtime/response.d.mts +1 -3
  326. package/dist/runtime/response.mjs +1 -1
  327. package/dist/runtime/route-url.d.mts +2 -2
  328. package/dist/runtime/route-url.mjs +1 -1
  329. package/dist/runtime/routing.d.mts +8 -11
  330. package/dist/runtime/routing.mjs +52 -32
  331. package/dist/runtime/sandbox-container.d.mts +1 -1
  332. package/dist/runtime/sandbox-container.mjs +1 -1
  333. package/dist/runtime/sandbox.d.mts +2 -2
  334. package/dist/runtime/sandbox.mjs +5 -6
  335. package/dist/runtime/seed.d.mts +0 -2
  336. package/dist/runtime/seed.mjs +1 -2
  337. package/dist/runtime/sse-client.d.mts +1 -3
  338. package/dist/runtime/sse-client.mjs +1 -2
  339. package/dist/runtime/sse.d.mts +1 -3
  340. package/dist/runtime/sse.mjs +1 -1
  341. package/dist/runtime/storage.d.mts +1 -3
  342. package/dist/runtime/storage.mjs +2 -3
  343. package/dist/runtime/validator.d.mts +1 -1
  344. package/dist/runtime/validator.mjs +1 -1
  345. package/dist/runtime/ws-server.d.mts +3 -5
  346. package/dist/runtime/ws-server.mjs +3 -4
  347. package/dist/runtime/ws.d.mts +1 -1
  348. package/dist/runtime/ws.mjs +3 -4
  349. package/dist/{sandbox-q3waMc2T.d.mts → sandbox-DE1WsxuB.d.mts} +2 -4
  350. package/dist/{sandbox-container-a9LRUtii.mjs → sandbox-container-BuxhwCgt.mjs} +1 -2
  351. package/dist/{sandbox-container-ChQRum-j.d.mts → sandbox-container-CZFZdMso.d.mts} +0 -2
  352. package/dist/{scan-N9WzdcAl.mjs → scan-X2rDDRNa.mjs} +49 -35
  353. package/dist/{secret-3X0PxmuX.mjs → secret-CPq-B_vp.mjs} +17 -15
  354. package/dist/{serialize-YHvlcG3Q.mjs → serialize-DUuYuaY3.mjs} +2 -4
  355. package/dist/{serialize-DtR8Vwa_.d.mts → serialize-I4EmS-Wf.d.mts} +0 -2
  356. package/dist/{skills-CrUO3PJ0.mjs → skills-D393E4lB.mjs} +4 -5
  357. package/dist/{sqlite-validation-BzKMWnO4.mjs → sqlite-validation-CLJXXN93.mjs} +1 -2
  358. package/dist/{sse-CMvCgjNk.mjs → sse-CxR30yMF.mjs} +1 -2
  359. package/dist/{standard-schema-Fo_vCAZh.d.mts → standard-schema-CuDawHOC.d.mts} +0 -2
  360. package/dist/{static-asset-marker-Btf-6oCD.mjs → static-asset-marker-DsQKz6lt.mjs} +9 -3
  361. package/dist/{subcommand-prompt-D9OhhbGG.mjs → subcommand-prompt-CxJXporl.mjs} +3 -4
  362. package/dist/sveltekit.d.mts +0 -2
  363. package/dist/sveltekit.mjs +2 -3
  364. package/dist/{terminal-log-text-D9ACPOuG.mjs → terminal-log-text-DNsWJREL.mjs} +1 -2
  365. package/dist/{types-w72dljaA.d.mts → types-agfx0alu.d.mts} +0 -4
  366. package/dist/validate-DY1U9rET.mjs +1 -0
  367. package/dist/{validate-CnZPMq4q.mjs → validate-Ddzl-IwT.mjs} +4 -5
  368. package/dist/validation-error-uAAjlsiW.mjs +82 -0
  369. package/dist/{validator-BTOu0fB0.mjs → validator-CTfmzZYb.mjs} +2 -5
  370. package/dist/{version-metadata-D2vfMQzv.mjs → version-metadata-C8hLzQkv.mjs} +4 -6
  371. package/dist/{worker-conditions-AWFRcFxR.mjs → worker-conditions-CBZ0RYsZ.mjs} +1 -2
  372. package/dist/{wrangler-I-scB_1t.mjs → wrangler-DESSbN8L.mjs} +6 -8
  373. package/dist/wrangler-DUB3MGHV.mjs +1 -0
  374. package/dist/{wrapper-BBl1rC32.mjs → wrapper-C9SUxoj7.mjs} +17 -14
  375. package/dist/{ws-B3ClMVDh.d.mts → ws-Dmjg5NH2.d.mts} +3 -5
  376. package/dist/{yarn-pnp-DLbEFMT0.mjs → yarn-pnp-DgWbE7z5.mjs} +2 -3
  377. package/docs/guide/database.md +4 -4
  378. package/docs/guide/deployment.md +1 -1
  379. package/docs/guide/edge/headers.md +4 -6
  380. package/docs/guide/edge/redirects.md +4 -4
  381. package/docs/guide/edge/rewrites.md +1 -1
  382. package/docs/guide/edge/static-assets.md +0 -10
  383. package/docs/guide/email/domains.md +3 -1
  384. package/docs/guide/email/receiving.md +4 -4
  385. package/docs/guide/email/sending.md +43 -13
  386. package/docs/guide/pages-routing/actions-and-forms.md +26 -9
  387. package/docs/guide/pages-routing/islands.md +5 -5
  388. package/docs/guide/pages-routing/layouts.md +16 -2
  389. package/docs/guide/pages-routing/loaders.md +5 -5
  390. package/docs/guide/pages-routing/markdown.md +7 -7
  391. package/docs/guide/pages-routing/overview.md +137 -27
  392. package/docs/guide/platform/administration/connected-apps.md +4 -2
  393. package/docs/guide/platform/administration/email.md +6 -8
  394. package/docs/guide/platform/installation/credentials.md +12 -10
  395. package/docs/guide/platform/installation/maintenance.md +18 -21
  396. package/docs/guide/platform/installation/prerequisites.md +1 -1
  397. package/docs/guide/platform/installation/setup.md +23 -2
  398. package/docs/guide/platform/installation/uninstall.md +1 -1
  399. package/docs/guide/queues.md +4 -8
  400. package/docs/guide/self-hosted-platform.md +3 -3
  401. package/docs/guide/server-routing.md +7 -7
  402. package/docs/guide/ssg.md +3 -3
  403. package/docs/guide/type-safety.md +84 -1
  404. package/docs/guide/typed-fetch.md +1 -1
  405. package/docs/guide/websockets.md +1 -1
  406. package/docs/integrations/cloudflare.md +2 -2
  407. package/docs/integrations/frameworks/analog.md +1 -1
  408. package/docs/integrations/frameworks/astro.md +17 -12
  409. package/docs/integrations/frameworks/nuxt.md +1 -1
  410. package/docs/integrations/frameworks/overview.md +2 -2
  411. package/docs/integrations/frameworks/sveltekit.md +1 -1
  412. package/docs/integrations/frameworks/tanstack-start.md +1 -1
  413. package/docs/integrations/hono.md +5 -5
  414. package/docs/reference/api/auth.md +1 -1
  415. package/docs/reference/api/deploy.md +6 -6
  416. package/docs/reference/api/pages.md +109 -50
  417. package/docs/reference/api/plugin.md +4 -4
  418. package/docs/reference/api/resources.md +4 -1
  419. package/docs/reference/api/rewrites.md +24 -3
  420. package/docs/reference/api/types.md +45 -0
  421. package/docs/reference/api.md +2 -2
  422. package/docs/reference/cli/database.md +15 -9
  423. package/docs/reference/cli/email.md +4 -2
  424. package/docs/reference/cli/platform-installation.md +6 -3
  425. package/docs/reference/cli/project.md +2 -2
  426. package/docs/reference/cli/secrets.md +3 -1
  427. package/docs/reference/cli/setup.md +4 -4
  428. package/docs/reference/cli.md +1 -1
  429. package/docs/reference/config.md +12 -2
  430. package/package.json +36 -32
  431. package/sandbox.Dockerfile +1 -1
  432. package/schema.json +4 -0
  433. package/skills/void/SKILL.md +5 -0
  434. package/dist/cf-build-output-bd8Uwv1P.mjs +0 -1
  435. package/dist/client-BZb9j66F.mjs +0 -1
  436. package/dist/collect-BWhkgtAn.mjs +0 -1
  437. package/dist/deploy-CX94CmKa.mjs +0 -2
  438. package/dist/discover-D4TPKo57.mjs +0 -1
  439. package/dist/gen-BhWBT4iu.mjs +0 -1
  440. package/dist/headers--vaK_chu.mjs +0 -226
  441. package/dist/help-qOZr3wng.mjs +0 -1
  442. package/dist/login-BAPmYnb7.mjs +0 -1
  443. package/dist/migrate-BIYTPQE6.mjs +0 -1
  444. package/dist/operator-cmd-CjazwOyb.mjs +0 -1
  445. package/dist/output-BW9uK099.mjs +0 -1
  446. package/dist/plan-CKX_jWnD.mjs +0 -1
  447. package/dist/platform-args-BC8_hsDj.mjs +0 -1
  448. package/dist/prepare-DU-tOpS5.mjs +0 -1
  449. package/dist/project-slug-6cyz8E7k.mjs +0 -1
  450. package/dist/resolve-project-DD1vu8s9.mjs +0 -1
  451. package/dist/route-url-BgPja1GS.d.mts +0 -5
  452. package/dist/route-url-BjGv_KKY.mjs +0 -28
  453. package/dist/validate-D7Wn8PUX.mjs +0 -1
  454. package/dist/validation-error-Dg9Recn1.mjs +0 -49
  455. package/dist/wrangler-UnwdISay.mjs +0 -1
@@ -1,9 +1,9 @@
1
- import { n as readDeploymentPlatform } from "./project-rqDnVsJN.mjs";
2
- import { c as getToken, s as getSiteDomain } from "./auth-B6iOCjKI.mjs";
3
- import { H as outro, L as log } from "./dist-Cor9XGoz.mjs";
4
- import { r as PlatformClient } from "./client-B3LnB_bE.mjs";
5
- import { _ as tablePrefix, f as import_picocolors, i as dim, l as formatUrl, o as formatCount } from "./output-BpgYODYx.mjs";
6
- //#region src/cli/projects.ts
1
+ import { n as readDeploymentPlatform } from "./project-CLwxcEdq.mjs";
2
+ import { c as getToken, s as getSiteDomain } from "./auth-Dy8svcqQ.mjs";
3
+ import { H as outro, L as log } from "./dist-D23AAMxT.mjs";
4
+ import { r as PlatformClient } from "./client-CoxPEhJq.mjs";
5
+ import { _ as tablePrefix, f as import_picocolors, i as dim, l as formatUrl, o as formatCount } from "./output-BCdLioKP.mjs";
6
+ // src/cli/projects.ts
7
7
  async function runProjectsCommand(root) {
8
8
  console.log();
9
9
  const token = getToken(root);
@@ -33,84 +33,82 @@ async function runProjectsCommand(root) {
33
33
  for (const line of lines) console.log(line);
34
34
  outro(formatCount(projects.length, "project"));
35
35
  }
36
- //#endregion
37
- //#region src/cli/project-cmd.ts
36
+ // src/cli/project-cmd.ts
38
37
  async function runProjectCommand(root, args) {
39
38
  const cloudflare = readDeploymentPlatform(root) === "cloudflare";
40
39
  if (args.subcommand === "status") {
41
- const { runListCommand } = await import("./list-BYRP6am0.mjs");
40
+ const { runListCommand } = await import("./list-BYSOo9fm.mjs");
42
41
  return runListCommand(root, args.name || void 0);
43
42
  }
44
43
  if (args.subcommand === "link") {
45
44
  if (cloudflare) throw new Error("project: Direct Cloudflare apps are identified by cloudflare.name in void.config.ts and do not need linking.");
46
- const { runLink } = await import("./link-Dllip08S.mjs");
45
+ const { runLink } = await import("./link-DAXOT-G_.mjs");
47
46
  return runLink(root, args.name || void 0);
48
47
  }
49
48
  if (args.subcommand === "list") {
50
49
  if (cloudflare) {
51
- const { runListCommand } = await import("./list-BYRP6am0.mjs");
50
+ const { runListCommand } = await import("./list-BYSOo9fm.mjs");
52
51
  return runListCommand(root);
53
52
  }
54
53
  return runProjectsCommand(root);
55
54
  }
56
55
  if (args.subcommand === "token") {
57
56
  if (cloudflare) throw new Error("project: CI deploy credentials are available only for Void platform projects.");
58
- const { runProjectTokenCommand } = await import("./project-token-BB6PwaA9.mjs");
57
+ const { runProjectTokenCommand } = await import("./project-token-BKHGwY3k.mjs");
59
58
  return runProjectTokenCommand(root, args);
60
59
  }
61
60
  if (args.subcommand === "team") {
62
61
  if (args.action === "") {
63
- const { printHelpPage } = await import("./help-qOZr3wng.mjs");
62
+ const { printHelpPage } = await import("./help-Ba8Dq5-r.mjs");
64
63
  printHelpPage(["project", "team"]);
65
64
  return;
66
65
  }
67
66
  const accountInvitationAction = args.action === "pending" || args.action === "accept" || args.action === "decline";
68
67
  if (cloudflare && !accountInvitationAction) throw new Error("project: Teams are available only for projects hosted on a Void platform, not direct Cloudflare deployments.");
69
- const { runProjectTeamCommand } = await import("./project-team-BjCLgTRC.mjs");
68
+ const { runProjectTeamCommand } = await import("./project-team-MjT5K4rQ.mjs");
70
69
  return runProjectTeamCommand(root, args);
71
70
  }
72
71
  if (args.subcommand === "zero-trust") {
73
72
  if (cloudflare) throw new Error("project: Zero Trust overrides are available only for projects hosted on a Void platform.");
74
73
  if (args.action === "") {
75
- const { printHelpPage } = await import("./help-qOZr3wng.mjs");
74
+ const { printHelpPage } = await import("./help-Ba8Dq5-r.mjs");
76
75
  printHelpPage(["project", "zero-trust"]);
77
76
  return;
78
77
  }
79
78
  const action = args.action;
80
- const { runProjectZeroTrustCommand } = await import("./project-zero-trust-CWDh1P_t.mjs");
79
+ const { runProjectZeroTrustCommand } = await import("./project-zero-trust-Bzdd05-h.mjs");
81
80
  return runProjectZeroTrustCommand(root, {
82
81
  ...args,
83
82
  action
84
83
  });
85
84
  }
86
85
  if (args.subcommand === "logs") {
87
- const { runLogsCommand } = await import("./logs-DmJTBhed.mjs");
86
+ const { runLogsCommand } = await import("./logs-DE0weBsR.mjs");
88
87
  return runLogsCommand(root, args.filter, args.range, args.deployment || void 0, args.level || void 0);
89
88
  }
90
89
  if (args.subcommand === "requests") {
91
90
  if (cloudflare) throw new Error("project: Historical request analytics require the Void platform. Use `void project logs` for a live Cloudflare tail.");
92
- const { runRequestsCommand } = await import("./requests-D_pbzDyz.mjs");
91
+ const { runRequestsCommand } = await import("./requests-daJmVpjk.mjs");
93
92
  return runRequestsCommand(root, args.range, args.status || void 0);
94
93
  }
95
94
  if (args.subcommand === "rollback") {
96
- const { runRollbackCommand } = await import("./rollback-CjfIYsJx.mjs");
95
+ const { runRollbackCommand } = await import("./rollback-BgL0wY1J.mjs");
97
96
  return runRollbackCommand(root, args.deployId || void 0, args.platform);
98
97
  }
99
98
  if (args.subcommand === "cancel") {
100
99
  if (cloudflare) throw new Error("project: Direct Cloudflare deploys activate only after readiness succeeds, so there is no remote build to cancel.");
101
- const { runCancelDeployCommand } = await import("./cancel-deploy-Dw0UmWKO.mjs");
100
+ const { runCancelDeployCommand } = await import("./cancel-deploy-_itbbvY3.mjs");
102
101
  return runCancelDeployCommand(root, args.deployId || void 0);
103
102
  }
104
103
  if (args.subcommand === "delete") {
105
104
  if (cloudflare) throw new Error("project: Refusing to delete Cloudflare resources through this command. Direct deployments are additive and existing resources may be shared.");
106
- const { runDeleteCommand } = await import("./delete-lETE6Tpt.mjs");
105
+ const { runDeleteCommand } = await import("./delete-CY4L8fi2.mjs");
107
106
  return runDeleteCommand(root, args.name || void 0, { force: args.force });
108
107
  }
109
108
  if (args.subcommand === "purge-cache") {
110
109
  if (cloudflare) throw new Error("project: `void project purge-cache` is available only for projects hosted on a Void platform. For a direct Cloudflare deploy, redeploy or purge the configured ISR KV namespace.");
111
- const { runPurgeCacheCommand } = await import("./cache-jvwLNb0h.mjs");
110
+ const { runPurgeCacheCommand } = await import("./cache-2khBO1MR.mjs");
112
111
  return runPurgeCacheCommand(root, args.projectSlug || void 0);
113
112
  }
114
113
  }
115
- //#endregion
116
114
  export { runProjectCommand };
@@ -1,8 +1,8 @@
1
- import { a as join, i as isAbsolute, o as normalize } from "./dist-ipQi0Q8y.mjs";
1
+ import { a as join, i as isAbsolute, o as normalize } from "./dist-DMYe8CZJ.mjs";
2
2
  import { existsSync, readFileSync } from "node:fs";
3
3
  import { fileURLToPath } from "node:url";
4
4
  import { createJiti } from "jiti";
5
- //#region src/config-loader.ts
5
+ // src/config-loader.ts
6
6
  const LEGACY_CONFIG_FILE = "void.json";
7
7
  const TYPED_CONFIG_FILE = "void.config.ts";
8
8
  /** Evaluate a TypeScript config without requiring Void to be installed in the target project. */
@@ -43,8 +43,7 @@ function loadVoidConfig(root) {
43
43
  throw new Error(`config: Invalid JSON in ${LEGACY_CONFIG_FILE}.`, { cause: error });
44
44
  }
45
45
  }
46
- //#endregion
47
- //#region src/project-paths.ts
46
+ // src/project-paths.ts
48
47
  const SOURCE_CONVENTION_DIRECTORIES = [
49
48
  "routes",
50
49
  "pages",
@@ -126,5 +125,4 @@ function assertNoRootSourceConventionConflicts(paths) {
126
125
  if (conflicts.length === 0) return;
127
126
  throw new Error(`sourceDir: void.json sets "sourceDir": "${paths.sourceDir}", but convention path(s) also exist at the project root: ${conflicts.join(", ")}. Move them under "${paths.sourceDir}" or remove the root copy.`);
128
127
  }
129
- //#endregion
130
128
  export { validateSourceDir as a, loadVoidConfig as c, resolveProjectPaths as i, readProjectPaths as n, TYPED_CONFIG_FILE as o, resolvePagesDir as r, loadTypedVoidConfigFile as s, assertNoRootSourceConventionConflicts as t };
@@ -0,0 +1 @@
1
+ export { t as validateProjectSlug } from "./project-slug-CO6ci9XG.mjs";
@@ -4,5 +4,4 @@ function validateProjectSlug(value) {
4
4
  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.";
5
5
  if (slug.length > 56) return `Slug must be at most 56 characters (it forms the email sender <slug>+noreply@).`;
6
6
  }
7
- //#endregion
8
7
  export { validateProjectSlug as t };
@@ -1,10 +1,10 @@
1
- import { r as readProjectConfig } from "./project-rqDnVsJN.mjs";
2
- import { c as getToken, i as getAccountCredential } from "./auth-B6iOCjKI.mjs";
3
- import { H as outro, L as log } from "./dist-Cor9XGoz.mjs";
4
- import { c as platformErrorMessage, n as PlatformApiError, r as PlatformClient, s as parsePlatformErrorBody } from "./client-B3LnB_bE.mjs";
5
- import { h as sanitizeTerminalText, l as formatUrl, m as printSuccess, o as formatCount, p as note } from "./output-BpgYODYx.mjs";
6
- import { r as requireProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-Xoi6eTWY.mjs";
7
- //#region src/cli/project-team.ts
1
+ import { r as readProjectConfig } from "./project-CLwxcEdq.mjs";
2
+ import { c as getToken, i as getAccountCredential } from "./auth-Dy8svcqQ.mjs";
3
+ import { H as outro, L as log } from "./dist-D23AAMxT.mjs";
4
+ import { c as platformErrorMessage, n as PlatformApiError, r as PlatformClient, s as parsePlatformErrorBody } from "./client-CoxPEhJq.mjs";
5
+ import { h as sanitizeTerminalText, l as formatUrl, m as printSuccess, o as formatCount, p as note } from "./output-BCdLioKP.mjs";
6
+ import { r as requireProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-D0YNnJfm.mjs";
7
+ // src/cli/project-team.ts
8
8
  function clean(value) {
9
9
  return (value ?? "—").replace(/[\u0000-\u001f\u007f]/g, " ");
10
10
  }
@@ -126,5 +126,4 @@ async function runProjectTeamCommand(root, args) {
126
126
  await client.leaveProject(projectId);
127
127
  printSuccess("Left the project.");
128
128
  }
129
- //#endregion
130
129
  export { runProjectTeamCommand };
@@ -1,10 +1,10 @@
1
- import { r as readProjectConfig } from "./project-rqDnVsJN.mjs";
2
- import { c as getToken } from "./auth-B6iOCjKI.mjs";
3
- import { H as outro, L as log } from "./dist-Cor9XGoz.mjs";
4
- import { r as PlatformClient } from "./client-B3LnB_bE.mjs";
5
- import { _ as tablePrefix, i as dim, m as printSuccess } from "./output-BpgYODYx.mjs";
6
- import { r as requireProjectBySlug } from "./resolve-project-Xoi6eTWY.mjs";
7
- //#region src/cli/project-token.ts
1
+ import { r as readProjectConfig } from "./project-CLwxcEdq.mjs";
2
+ import { c as getToken } from "./auth-Dy8svcqQ.mjs";
3
+ import { H as outro, L as log } from "./dist-D23AAMxT.mjs";
4
+ import { r as PlatformClient } from "./client-CoxPEhJq.mjs";
5
+ import { _ as tablePrefix, i as dim, m as printSuccess } from "./output-BCdLioKP.mjs";
6
+ import { r as requireProjectBySlug } from "./resolve-project-D0YNnJfm.mjs";
7
+ // src/cli/project-token.ts
8
8
  async function resolveTarget(root, args) {
9
9
  const humanToken = getToken(root);
10
10
  if (!humanToken) throw new Error("project: Sign in with a human account before managing CI credentials.");
@@ -67,5 +67,4 @@ async function runProjectTokenCommand(root, args) {
67
67
  }
68
68
  if (!args.json) outro(`${slug} — project-scoped deploy access only`);
69
69
  }
70
- //#endregion
71
70
  export { runProjectTokenCommand };
@@ -1,7 +1,7 @@
1
- import { a as join, n as dirname, s as relative } from "./dist-ipQi0Q8y.mjs";
2
- import { n as readProjectPaths } from "./project-paths-DGu_QZ_Q.mjs";
1
+ import { a as join, n as dirname, s as relative } from "./dist-DMYe8CZJ.mjs";
2
+ import { n as readProjectPaths } from "./project-paths-CdGv9Tmi.mjs";
3
3
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
4
- //#region src/codegen/write-if-changed.ts
4
+ // src/codegen/write-if-changed.ts
5
5
  function writeFileIfChanged(path, content) {
6
6
  let existing = null;
7
7
  try {
@@ -14,8 +14,7 @@ function writeFileIfChanged(path, content) {
14
14
  writeFileSync(path, content);
15
15
  return true;
16
16
  }
17
- //#endregion
18
- //#region src/codegen/project-tsconfig.ts
17
+ // src/codegen/project-tsconfig.ts
19
18
  /**
20
19
  * Build the generated .void/tsconfig.json contents. Lists the generated
21
20
  * declaration files so TypeScript discovers them via the `files` field
@@ -99,5 +98,4 @@ function syncAuthTypesInProjectTsconfig(root) {
99
98
  tsconfig.files = existsSync(join(outDir, "auth.d.ts")) ? [...others, "auth.d.ts"] : others;
100
99
  return writeFileIfChanged(tsconfigPath, JSON.stringify(tsconfig, null, 2) + "\n");
101
100
  }
102
- //#endregion
103
101
  export { writeFileIfChanged as i, ensureProjectTsconfig as n, syncAuthTypesInProjectTsconfig as r, createProjectTsconfig as t };
@@ -1,10 +1,10 @@
1
- import { r as readProjectConfig } from "./project-rqDnVsJN.mjs";
2
- import { c as getToken } from "./auth-B6iOCjKI.mjs";
3
- import { H as outro, L as log } from "./dist-Cor9XGoz.mjs";
4
- import { r as PlatformClient } from "./client-B3LnB_bE.mjs";
5
- import { h as sanitizeTerminalText, m as printSuccess, p as note } from "./output-BpgYODYx.mjs";
6
- import { r as requireProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-Xoi6eTWY.mjs";
7
- //#region src/cli/project-zero-trust.ts
1
+ import { r as readProjectConfig } from "./project-CLwxcEdq.mjs";
2
+ import { c as getToken } from "./auth-Dy8svcqQ.mjs";
3
+ import { H as outro, L as log } from "./dist-D23AAMxT.mjs";
4
+ import { r as PlatformClient } from "./client-CoxPEhJq.mjs";
5
+ import { h as sanitizeTerminalText, m as printSuccess, p as note } from "./output-BCdLioKP.mjs";
6
+ import { r as requireProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-D0YNnJfm.mjs";
7
+ // src/cli/project-zero-trust.ts
8
8
  async function resolveTarget(root, args) {
9
9
  const token = getToken(root);
10
10
  if (!token) throw new Error("project: Not logged in. Run `void account login` first.");
@@ -61,5 +61,4 @@ async function runProjectZeroTrustCommand(root, args) {
61
61
  }
62
62
  printSuccess(args.action === "protect" ? `${slug} is protected by Zero Trust.` : args.action === "public" ? `${slug} is public.` : `${slug} Zero Trust reconciled (${result.project.state}).`);
63
63
  }
64
- //#endregion
65
64
  export { runProjectZeroTrustCommand };
@@ -1,9 +1,9 @@
1
- import { n as isConvertedResponse } from "./response-Tn7rU0MV.mjs";
2
- import { i as searchWithoutActionKey, n as hasActionKey } from "./action-key-XZ9HkWAO.mjs";
3
- import { i as separateDeferred, n as DEFERRED, t as ValidationError } from "./validation-error-Dg9Recn1.mjs";
4
- import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "./head-D2VF4ApL.mjs";
5
- import { i as escapeScriptJson, r as serializePageData } from "./serialize-YHvlcG3Q.mjs";
6
- //#region src/pages/protocol.ts
1
+ import { a as executeComposedHandler, i as separateDeferred, n as DEFERRED, o as getHandlerComposition, t as ValidationError } from "./validation-error-uAAjlsiW.mjs";
2
+ import { n as isConvertedResponse } from "./response-HmNjB30w.mjs";
3
+ import { i as searchWithoutActionKey, n as hasActionKey } from "./action-key-XtKKbbsi.mjs";
4
+ import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "./head-5XPcnG-j.mjs";
5
+ import { i as escapeScriptJson, r as serializePageData } from "./serialize-DUuYuaY3.mjs";
6
+ // src/pages/protocol.ts
7
7
  const POWERED_BY = { "X-Powered-By": "Void" };
8
8
  const RENDER_ERROR_ASSET_TAGS_KEY = "__voidPageAssetTags";
9
9
  /** Escape characters that are unsafe inside inline <script> tags to prevent XSS. */
@@ -82,9 +82,9 @@ function attachRenderErrorAssetTags(error, assetTags) {
82
82
  });
83
83
  throw error;
84
84
  }
85
- async function renderWithAssetTags(renderFn, pageObj, assetTags) {
85
+ async function renderWithAssetTags(renderFn, pageObj, assetTags, requestUrl) {
86
86
  try {
87
- return await renderFn(pageObj, assetTags);
87
+ return await renderFn(pageObj, assetTags, requestUrl);
88
88
  } catch (error) {
89
89
  attachRenderErrorAssetTags(error, assetTags);
90
90
  }
@@ -107,7 +107,7 @@ function renderClientOnlyPage(pageObj, assetTags, renderFn) {
107
107
  async function renderPageHtml(c, pageObj, componentId, renderMode, renderFn, getAssetTags) {
108
108
  const assetTags = prepareAssetTags(await getAssetTags(c.req.raw, c.env, componentId));
109
109
  return {
110
- html: renderMode === "client" ? renderClientOnlyPage(pageObj, assetTags, renderFn) : await renderWithAssetTags(renderFn, pageObj, assetTags),
110
+ html: renderMode === "client" ? renderClientOnlyPage(pageObj, assetTags, renderFn) : await renderWithAssetTags(renderFn, pageObj, assetTags, c.req.url),
111
111
  assetTags
112
112
  };
113
113
  }
@@ -133,8 +133,8 @@ async function extractProps(result) {
133
133
  return result ?? {};
134
134
  }
135
135
  /**
136
- * Run a page loader. Responses from convertReturnValue (withValidator/middleware
137
- * paths) always flow through to extractProps — they wrap plain return values
136
+ * Run a page loader and `render` its props. Responses from convertReturnValue
137
+ * (withValidator) always flow through to extractProps — they wrap plain return values
138
138
  * (objects as 200 JSON, null/undefined as 204, strings as text/html) and must be
139
139
  * unwrapped as page props.
140
140
  *
@@ -142,13 +142,25 @@ async function extractProps(result) {
142
142
  * 200s (file downloads, streams). JSON 200s are still extracted as props for
143
143
  * backward compat with loaders using c.json().
144
144
  */
145
- async function runLoader(handler, c) {
146
- const result = await handler(c);
147
- if (result instanceof Response && !isConvertedResponse(result)) {
148
- const contentType = result.headers.get("content-type") || "";
149
- if (result.status >= 300 || !contentType.includes("application/json")) return result;
150
- }
151
- return extractProps(result);
145
+ async function runLoader(handler, c, render) {
146
+ if (!handler) return render({});
147
+ return runPageHandler(handler, c, async (leaf) => {
148
+ const result = await leaf(c);
149
+ if (result instanceof Response && !isConvertedResponse(result)) {
150
+ const contentType = result.headers.get("content-type") || "";
151
+ if (result.status >= 300 || !contentType.includes("application/json")) return result;
152
+ }
153
+ return render(await extractProps(result));
154
+ });
155
+ }
156
+ /**
157
+ * Per-route middleware from `defineHandler(middleware..., handler)` wraps the
158
+ * response `endpoint` builds from the leaf handler, as it wraps a route's
159
+ * response, so it sees and may edit the rendered page after `next()`.
160
+ */
161
+ function runPageHandler(handler, c, endpoint) {
162
+ const composition = getHandlerComposition(handler);
163
+ return composition ? executeComposedHandler(c, composition.middlewares, () => endpoint(composition.leaf)) : endpoint(handler);
152
164
  }
153
165
  /** Flatten withValidator's { issues: [{ slot, issues: [{ message, path }] }] } into { field: message } */
154
166
  function flattenValidationErrors(body) {
@@ -215,79 +227,75 @@ function streamDeferredResponse(initialChunk, deferredMap, c, contentType, dev,
215
227
  /** Handle GET page request — run handler, return page object or SSR HTML */
216
228
  async function handlePageGet(handler, headFn, c, componentId, renderFn, getAssetTags, configHead, options) {
217
229
  const renderMode = options?.renderMode ?? "server";
218
- const shared = c.get("shared") ?? {};
219
- let props = {};
220
- if (handler) {
221
- const loaded = await runLoader(handler, c);
222
- if (loaded instanceof Response) return loaded;
223
- props = loaded;
224
- }
225
- const pageHead = headFn ? headFn(c, props) : void 0;
226
- const middlewareHead = c.get("headDefaults");
227
- const head = resolveHead(configHead, middlewareHead, pageHead);
228
- const { immediateProps, deferredMap } = separateDeferred(props);
229
- const hasDeferred = Object.keys(deferredMap).length > 0;
230
- const deferredKeys = {};
231
- for (const [group, { keys }] of Object.entries(deferredMap)) for (const key of keys) deferredKeys[key] = group;
232
- const pageObj = {
233
- component: componentId,
234
- props: immediateProps,
235
- params: requestParams(c),
236
- shared,
237
- url: requestPathWithSearch(c),
238
- errors: null,
239
- ...head && { head },
240
- ...hasDeferred && {
241
- deferred: Object.keys(deferredMap),
242
- deferredKeys
243
- }
244
- };
245
- if (renderMode !== "island" && isPagesRequest(c)) {
246
- if (c.req.header("purpose") === "prefetch" && hasDeferred) {
247
- const resolvedProps = { ...immediateProps };
248
- let deferredErrors;
249
- await Promise.all(Object.entries(deferredMap).map(async ([group, { resolver, keys }]) => {
250
- try {
251
- const data = await resolver(c);
252
- if (keys.length === 1) resolvedProps[keys[0]] = data ?? null;
253
- else {
254
- const obj = typeof data === "object" && data !== null ? data : {};
255
- for (const key of keys) resolvedProps[key] = obj[key];
230
+ return runLoader(handler, c, async (props) => {
231
+ const shared = c.get("shared") ?? {};
232
+ const pageHead = headFn ? headFn(c, props) : void 0;
233
+ const middlewareHead = c.get("headDefaults");
234
+ const head = resolveHead(configHead, middlewareHead, pageHead);
235
+ const { immediateProps, deferredMap } = separateDeferred(props);
236
+ const hasDeferred = Object.keys(deferredMap).length > 0;
237
+ const deferredKeys = {};
238
+ for (const [group, { keys }] of Object.entries(deferredMap)) for (const key of keys) deferredKeys[key] = group;
239
+ const pageObj = {
240
+ component: componentId,
241
+ props: immediateProps,
242
+ params: requestParams(c),
243
+ shared,
244
+ url: requestPathWithSearch(c),
245
+ errors: null,
246
+ ...head && { head },
247
+ ...hasDeferred && {
248
+ deferred: Object.keys(deferredMap),
249
+ deferredKeys
250
+ }
251
+ };
252
+ if (renderMode !== "island" && isPagesRequest(c)) {
253
+ if (c.req.header("purpose") === "prefetch" && hasDeferred) {
254
+ const resolvedProps = { ...immediateProps };
255
+ let deferredErrors;
256
+ await Promise.all(Object.entries(deferredMap).map(async ([group, { resolver, keys }]) => {
257
+ try {
258
+ const data = await resolver(c);
259
+ if (keys.length === 1) resolvedProps[keys[0]] = data ?? null;
260
+ else {
261
+ const obj = typeof data === "object" && data !== null ? data : {};
262
+ for (const key of keys) resolvedProps[key] = obj[key];
263
+ }
264
+ } catch (err) {
265
+ (deferredErrors ??= {})[group] = deferredErrorMessage(err, options?.dev === true);
266
+ for (const key of keys) delete resolvedProps[key];
256
267
  }
257
- } catch (err) {
258
- (deferredErrors ??= {})[group] = deferredErrorMessage(err, options?.dev === true);
259
- for (const key of keys) delete resolvedProps[key];
260
- }
261
- }));
262
- return pageJsonResponse(c, {
263
- ...pageObj,
264
- props: resolvedProps,
265
- deferred: void 0,
266
- ...deferredErrors && { deferredErrors }
267
- });
268
+ }));
269
+ return pageJsonResponse(c, {
270
+ ...pageObj,
271
+ props: resolvedProps,
272
+ deferred: void 0,
273
+ ...deferredErrors && { deferredErrors }
274
+ });
275
+ }
276
+ if (!hasDeferred) return pageJsonResponse(c, pageObj);
277
+ c.header("X-VoidPages", "true");
278
+ const headers = new Headers(c.res.headers);
279
+ appendVary(headers, "X-VoidPages");
280
+ c.header("Vary", headers.get("Vary"));
281
+ return streamDeferredResponse(JSON.stringify(pageObj) + "\n", deferredMap, c, "application/x-ndjson", options?.dev === true, (group, data) => JSON.stringify({
282
+ __deferred: group,
283
+ data: data ?? null
284
+ }) + "\n", (group, error) => JSON.stringify({
285
+ __deferred: group,
286
+ error
287
+ }) + "\n");
268
288
  }
269
- if (!hasDeferred) return pageJsonResponse(c, pageObj);
270
- c.header("X-VoidPages", "true");
271
- const headers = new Headers(c.res.headers);
272
- appendVary(headers, "X-VoidPages");
273
- c.header("Vary", headers.get("Vary"));
274
- return streamDeferredResponse(JSON.stringify(pageObj) + "\n", deferredMap, c, "application/x-ndjson", options?.dev === true, (group, data) => JSON.stringify({
275
- __deferred: group,
276
- data: data ?? null
277
- }) + "\n", (group, error) => JSON.stringify({
278
- __deferred: group,
279
- error
280
- }) + "\n");
281
- }
282
- const { html, assetTags } = await renderPageHtml(c, pageObj, componentId, renderMode, renderFn, getAssetTags);
283
- if (!hasDeferred) return renderedResponse(c, html, "text/html; charset=utf-8", assetTags);
284
- return streamDeferredResponse(html, deferredMap, c, "text/html; charset=utf-8", options?.dev === true, (group, data) => {
285
- const g = safeJsonStringify(group);
286
- return `\n<script>(function(d){window.__resolveDeferred?window.__resolveDeferred(${g},d):(window.__deferredQueue??=[]).push([${g},d])})(${safeJsonStringify(data)})<\/script>`;
287
- }, (group, error) => {
288
- const g = safeJsonStringify(group);
289
- return `\n<script>(function(e){window.__rejectDeferred?window.__rejectDeferred(${g},e):(window.__deferredQueue??=[]).push([${g},0,e])})(${safeJsonStringify(error)})<\/script>`;
290
- }, assetTags);
289
+ const { html, assetTags } = await renderPageHtml(c, pageObj, componentId, renderMode, renderFn, getAssetTags);
290
+ if (!hasDeferred) return renderedResponse(c, html, "text/html; charset=utf-8", assetTags);
291
+ return streamDeferredResponse(html, deferredMap, c, "text/html; charset=utf-8", options?.dev === true, (group, data) => {
292
+ const g = safeJsonStringify(group);
293
+ return `\n<script>(function(d){window.__resolveDeferred?window.__resolveDeferred(${g},d):(window.__deferredQueue??=[]).push([${g},d])})(${safeJsonStringify(data)})<\/script>`;
294
+ }, (group, error) => {
295
+ const g = safeJsonStringify(group);
296
+ return `\n<script>(function(e){window.__rejectDeferred?window.__rejectDeferred(${g},e):(window.__deferredQueue??=[]).push([${g},0,e])})(${safeJsonStringify(error)})<\/script>`;
297
+ }, assetTags);
298
+ });
291
299
  }
292
300
  function isSameOriginAction(request) {
293
301
  const origin = new URL(request.url).origin;
@@ -307,9 +315,9 @@ function isSameOriginAction(request) {
307
315
  async function handlePageMutation(mutationHandler, getHandler, headFn, c, componentId, renderFn, getAssetTags, configHead, options) {
308
316
  if (!isSameOriginAction(c.req.raw)) return new Response("Cross-origin page actions are not allowed.", { status: 403 });
309
317
  const renderMode = options?.renderMode ?? "server";
310
- const shared = c.get("shared") ?? {};
311
- const middlewareHead = c.get("headDefaults");
312
318
  function buildMutationPageObj(props, errors) {
319
+ const shared = c.get("shared") ?? {};
320
+ const middlewareHead = c.get("headDefaults");
313
321
  const pageHead = headFn ? headFn(c, props) : void 0;
314
322
  const head = resolveHead(configHead, middlewareHead, pageHead);
315
323
  return {
@@ -322,38 +330,52 @@ async function handlePageMutation(mutationHandler, getHandler, headFn, c, compon
322
330
  ...head && { head }
323
331
  };
324
332
  }
333
+ const rerenderErrors = /* @__PURE__ */ new WeakSet();
325
334
  /** Re-run the GET loader and respond with the page, optionally carrying validation errors. */
326
335
  async function respondWithPage(errors) {
327
- const loaded = getHandler ? await runLoader(getHandler, c) : {};
328
- if (loaded instanceof Response) return loaded;
329
- const pageObj = buildMutationPageObj(stripDeferred(loaded), errors);
330
- if (isPagesRequest(c)) return pageJsonResponse(c, pageObj);
331
- const { html, assetTags } = await renderPageHtml(c, pageObj, componentId, renderMode, renderFn, getAssetTags);
332
- return renderedResponse(c, html, "text/html; charset=utf-8", assetTags);
336
+ try {
337
+ return await runLoader(getHandler, c, async (props) => {
338
+ const pageObj = buildMutationPageObj(stripDeferred(props), errors);
339
+ if (isPagesRequest(c)) return pageJsonResponse(c, pageObj);
340
+ const { html, assetTags } = await renderPageHtml(c, pageObj, componentId, renderMode, renderFn, getAssetTags);
341
+ return renderedResponse(c, html, "text/html; charset=utf-8", assetTags);
342
+ });
343
+ } catch (e) {
344
+ if (e instanceof Error) rerenderErrors.add(e);
345
+ throw e;
346
+ }
333
347
  }
334
348
  function respondWithErrors(errors) {
335
349
  if (renderMode === "island") return Promise.resolve(Response.json({ errors }, { status: 422 }));
336
350
  return respondWithPage(errors);
337
351
  }
338
- let result;
352
+ /** Respond to the action's result: a redirect, an error, or the re-rendered page. */
353
+ async function respondToAction(leaf) {
354
+ let result;
355
+ try {
356
+ result = await leaf(c);
357
+ } catch (e) {
358
+ if (e instanceof ValidationError) return respondWithErrors(e.errors);
359
+ throw e;
360
+ }
361
+ if (result instanceof Response) {
362
+ const status = result.status;
363
+ if (status >= 300 && status < 400) return result;
364
+ if (status === 400) {
365
+ const body = await result.clone().json().catch(() => null);
366
+ if (Array.isArray(body?.issues)) return respondWithErrors(flattenValidationErrors(body));
367
+ return result;
368
+ }
369
+ if (status !== 204) return result;
370
+ }
371
+ if (renderMode === "island") return Response.json({ success: true });
372
+ return respondWithPage(null);
373
+ }
339
374
  try {
340
- result = mutationHandler ? await mutationHandler(c) : void 0;
375
+ return await runPageHandler(mutationHandler ?? (() => void 0), c, respondToAction);
341
376
  } catch (e) {
342
- if (e instanceof ValidationError) return respondWithErrors(e.errors);
377
+ if (e instanceof ValidationError && !rerenderErrors.has(e) && !c.finalized) return respondWithErrors(e.errors);
343
378
  throw e;
344
379
  }
345
- if (result instanceof Response) {
346
- const status = result.status;
347
- if (status >= 300 && status < 400) return result;
348
- if (status === 400) {
349
- const body = await result.clone().json().catch(() => null);
350
- if (Array.isArray(body?.issues)) return respondWithErrors(flattenValidationErrors(body));
351
- return result;
352
- }
353
- if (status !== 204) return result;
354
- }
355
- if (renderMode === "island") return Response.json({ success: true });
356
- return respondWithPage(null);
357
380
  }
358
- //#endregion
359
381
  export { safeJsonStringify as i, handlePageGet as n, handlePageMutation as r, flattenValidationErrors as t };
@@ -1,7 +1,6 @@
1
- import { n as HeadDescriptor, t as HeadConfig } from "./head-C8K_iGe6.mjs";
2
- import { a as PageRenderMode, t as DevCssAsset } from "./types-w72dljaA.mjs";
3
- import { n as CloudBindings, r as CloudContext } from "./handler-BHktmuTL.mjs";
4
- //#region src/pages/protocol.d.ts
1
+ import { n as HeadDescriptor, t as HeadConfig } from "./head-MeF_5M_3.mjs";
2
+ import { a as PageRenderMode, t as DevCssAsset } from "./types-agfx0alu.mjs";
3
+ import { n as CloudBindings, r as CloudContext } from "./handler-BR6Tvjkp.mjs";
5
4
  /** Escape characters that are unsafe inside inline <script> tags to prevent XSS. */
6
5
  declare function safeJsonStringify(value: unknown): string;
7
6
  type PageObject = {
@@ -32,7 +31,7 @@ type AssetTags = {
32
31
  devCss?: Array<DevCssAsset>;
33
32
  devCssNonce?: string;
34
33
  };
35
- type RenderPage = (pageObj: PageObject, assetTags: AssetTags) => Promise<PageRenderResult>;
34
+ type RenderPage = (pageObj: PageObject, assetTags: AssetTags, requestUrl: string) => Promise<PageRenderResult>;
36
35
  type GetAssetTags = (req: Request, env: CloudBindings, componentId: string) => Promise<AssetTags>;
37
36
  /** Flatten withValidator's { issues: [{ slot, issues: [{ message, path }] }] } into { field: message } */
38
37
  declare function flattenValidationErrors(body: unknown): Record<string, string>;
@@ -40,5 +39,4 @@ declare function flattenValidationErrors(body: unknown): Record<string, string>;
40
39
  declare function handlePageGet(handler: PageHandler, headFn: PageHeadHandler, c: CloudContext, componentId: string, renderFn: RenderPage, getAssetTags: GetAssetTags, configHead?: HeadConfig, options?: PageRenderOptions): Promise<Response>;
41
40
  /** Handle POST/PUT/PATCH/DELETE page request — run mutation, then re-run GET or redirect */
42
41
  declare function handlePageMutation(mutationHandler: PageHandler, getHandler: PageHandler, headFn: PageHeadHandler, c: CloudContext, componentId: string, renderFn: RenderPage, getAssetTags: GetAssetTags, configHead?: HeadConfig, options?: PageRenderOptions): Promise<Response>;
43
- //#endregion
44
42
  export { handlePageMutation as a, handlePageGet as i, PageRenderResult as n, safeJsonStringify as o, flattenValidationErrors as r, PageObject as t };
@@ -1,7 +1,5 @@
1
- //#region src/auth/providers.d.ts
2
1
  declare const VOID_SOCIAL_AUTH_PROVIDERS: readonly ["apple", "atlassian", "cognito", "discord", "dropbox", "facebook", "figma", "github", "gitlab", "google", "huggingface", "kakao", "kick", "line", "linear", "linkedin", "microsoft", "naver", "notion", "paybin", "paypal", "polar", "railway", "reddit", "roblox", "salesforce", "slack", "spotify", "tiktok", "twitch", "twitter", "vercel", "vk", "zoom"];
3
2
  declare const VOID_EMAIL_AUTH_PROVIDER = "email";
4
3
  declare const VOID_AUTH_PROVIDERS: readonly [typeof VOID_EMAIL_AUTH_PROVIDER, ...typeof VOID_SOCIAL_AUTH_PROVIDERS];
5
4
  type VoidAuthProvider = (typeof VOID_AUTH_PROVIDERS)[number];
6
- //#endregion
7
5
  export { VoidAuthProvider as t };
@@ -1,4 +1,4 @@
1
- //#region src/auth/providers.ts
1
+ // src/auth/providers.ts
2
2
  const VOID_SOCIAL_AUTH_PROVIDERS = [
3
3
  "apple",
4
4
  "atlassian",
@@ -61,5 +61,4 @@ function getVoidAuthProviderEnvNames(provider) {
61
61
  clientSecret: `AUTH_${normalized}_CLIENT_SECRET`
62
62
  };
63
63
  }
64
- //#endregion
65
64
  export { isVoidAuthProvider as a, getVoidAuthProviderSettingEnvNames as i, VOID_EMAIL_AUTH_PROVIDER as n, isVoidSocialAuthProvider as o, getVoidAuthProviderEnvNames as r, VOID_AUTH_PROVIDERS as t };