void 1.3.0 → 1.5.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 (451) hide show
  1. package/README.md +1 -1
  2. package/dist/{account-cmd-B4i71m7k.mjs → account-cmd-ChVKPZ-w.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-DYdVoMAY.mjs → application-analysis-2vGZrKzg.mjs} +27 -29
  6. package/dist/{application-routing-C8EqRDfv.mjs → application-routing-DnUQoOJD.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-CH4PLAX1.d.mts +68 -0
  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-BKwHPbdv.mjs → auth-link-D4uMdOsw.mjs} +7 -8
  25. package/dist/{auth-migrations-BO27GDNr.mjs → auth-migrations-DDeifS3v.mjs} +1 -2
  26. package/dist/{auth-router-DqLx8E0F.mjs → auth-router-62dna450.mjs} +14 -10
  27. package/dist/{base64-DVrOndmI.mjs → base64-ikl9yBy3.mjs} +1 -2
  28. package/dist/{better-auth-shared-DVk2DkTW.d.mts → better-auth-shared-BJyG2mH0.d.mts} +2 -6
  29. package/dist/{better-auth-shared-7FM3Uk2N.mjs → better-auth-shared-CiclgPde.mjs} +4 -5
  30. package/dist/{build-cmd-Dy4psnt1.mjs → build-cmd-D93K_4Sa.mjs} +7 -8
  31. package/dist/{cache-DV37S6dl.mjs → cache-CiIzEED4.mjs} +7 -8
  32. package/dist/{cancel-deploy-DMPyu1Vt.mjs → cancel-deploy-BNoGfn2e.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-Bapzc_8Z.mjs → cf-build-output-B1C8U83u.mjs} +60 -317
  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-BECvvTVd.mjs → cf-worker-settings-CARs4Wy9.mjs} +14 -10
  40. package/dist/cli/cli.mjs +66 -76
  41. package/dist/cli/cloudflare-operation-process.mjs +21 -19
  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-DVtAKeUm.mjs +1 -0
  45. package/dist/{client-BEMtySaV.mjs → client-Qayy9xEh.mjs} +10 -12
  46. package/dist/{cloudflare-auth-Byo_0_N9.mjs → cloudflare-auth-CEu-1Ps_.mjs} +3 -4
  47. package/dist/{cloudflare-cmd-BaqIigwI.mjs → cloudflare-cmd-DiFGaLow.mjs} +7 -8
  48. package/dist/{cloudflare-config-DchHxPTo.mjs → cloudflare-config-Chet188_.mjs} +25 -9
  49. package/dist/{cloudflare-connect-pNLQmr_e.mjs → cloudflare-connect-BdgAQBc7.mjs} +5 -6
  50. package/dist/{cloudflare-operations-vP3b5CQf.mjs → cloudflare-operations-CWA24vCh.mjs} +8 -9
  51. package/dist/{cloudflare-operations-PCM4wucv.mjs → cloudflare-operations-D8MoezuN.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-BU6hMu1W.mjs → config-BszFVhpk.mjs} +1 -1
  57. package/dist/{config-BIaXIkkv.mjs → config-Bt4rw93x.mjs} +5 -6
  58. package/dist/{config-Du88-7Y8.d.mts → config-CzsNzGVH.d.mts} +4 -6
  59. package/dist/{config-DHgSEWT7.mjs → config-DkA9jYF2.mjs} +9 -8
  60. package/dist/config-WlvEcL82.mjs +86 -0
  61. package/dist/config-entry.d.mts +1 -3
  62. package/dist/config-entry.mjs +1 -2
  63. package/dist/{connect-DwVsBvVh.mjs → connect-b9mJbb6X.mjs} +10 -11
  64. package/dist/{create-project-CjzbBlTv.mjs → create-project-eomwm0wa.mjs} +9 -11
  65. package/dist/{create-project-CgrnvzyA.mjs → create-project-rnjum4_V.mjs} +1 -1
  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-rvo64snS.mjs → db-UPWmiSk1.mjs} +52 -54
  70. package/dist/{db-types-NGxPwnlt.mjs → db-types-C_8amnB0.mjs} +3 -4
  71. package/dist/{delete-DWX6dP4M.mjs → delete-BeeYi1WO.mjs} +7 -8
  72. package/dist/deploy-CfU7CR-b.mjs +2 -0
  73. package/dist/{deploy-hRPvw8ci.mjs → deploy-CwmCcTlq.mjs} +321 -185
  74. package/dist/{deploy-managed-static-CDYA2p3L.mjs → deploy-managed-static-gPDxyp3v.mjs} +46 -46
  75. package/dist/{deploy-transport-JCxw7QDi.mjs → deploy-transport-L6zzPE9T.mjs} +17 -17
  76. package/dist/deploy.d.mts +3 -3
  77. package/dist/deploy.mjs +13 -12
  78. package/dist/{dev-inbox-D0jxye_D.mjs → dev-inbox-CwH5VuZj.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-OVLeWW8K.mjs → dispatch-CiJ1Xrba.mjs} +13 -16
  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-CH5iBD9Y.mjs → domain-3xdH9p2L.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-CbTO1l78.mjs → email-Du3YRnM5.mjs} +14 -15
  93. package/dist/{email-cloudflare-B8-pq_-W.mjs → email-cloudflare-CtD8qE13.mjs} +34 -24
  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-BBdw236G.mjs → env-Cnvp0pGy.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-BfBVvBNe.mjs → env-validation-C8Cmvas0.mjs} +1 -1
  105. package/dist/{env-validation-XcukUlFM.mjs → env-validation-GV1oD4EV.mjs} +10 -10
  106. package/dist/error-pages-COVBnzK7.mjs +31 -0
  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-CCx3t2Ju.mjs → gen-BvVmpZ5f.mjs} +12 -13
  113. package/dist/gen-i61rdQgg.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-BzkRLkbg.mjs → github-cmd-X2GKiLi-.mjs} +8 -9
  119. package/dist/{handler-CQv5YDS0.d.mts → handler-Drm_lyrV.d.mts} +15 -26
  120. package/dist/{handler-BZ1t7-Rv.mjs → handler-xmzz0U38.mjs} +4 -5
  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-D522zd0A.mjs → headers-DEUBAM6W.mjs} +4 -5
  124. package/dist/help-BcZDUcTw.mjs +1 -0
  125. package/dist/{help-CKbrhZha.mjs → help-EWDNxST-.mjs} +19 -11
  126. package/dist/{inbound-VrOLqwZY.mjs → inbound-DQfekMtz.mjs} +5 -6
  127. package/dist/{inbound-Da7XsjH3.d.mts → inbound-DSKSHDUj.d.mts} +0 -4
  128. package/dist/index.d.mts +23 -13
  129. package/dist/index.mjs +504 -225
  130. package/dist/{info-oBm8yK8J.mjs → info-jW8_d3VI.mjs} +6 -7
  131. package/dist/{init-CBp_uMve.mjs → init-jDQ5G9QC.mjs} +62 -64
  132. package/dist/{isr-config-fZaJJ8t7.mjs → isr-config-DhBkzCdY.mjs} +5 -9
  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-Dt_QXmM4.mjs → link-DOyxX5Xs.mjs} +8 -9
  136. package/dist/{list-DF6asTdt.mjs → list-C9pTYDtl.mjs} +8 -9
  137. package/dist/{live-CXJ9yC98.d.mts → live-CDBHyYiR.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-CUhH3qtj.mjs → local-d1-CKfek6Z4.mjs} +4 -5
  141. package/dist/{log-BMwmN5Ae.mjs → log-D9hwSySP.mjs} +3 -4
  142. package/dist/login-C0MiQrYs.mjs +1 -0
  143. package/dist/{login-BjSyhXlT.mjs → login-koQbjzPd.mjs} +6 -7
  144. package/dist/{logs-DmvBl6xA.mjs → logs-cTU5TsRW.mjs} +8 -9
  145. package/dist/migrate-BG09-KOv.mjs +1 -0
  146. package/dist/{migrate-BXRHpYwR.mjs → migrate-C62pGTfr.mjs} +22 -79
  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-DKkO7ZtA.mjs} +2 -3
  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 +6 -7
  154. package/dist/{node-DtD7ZiPf.mjs → node-BfAt2rz8.mjs} +9 -10
  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-BhHXIL2G.mjs +1 -0
  159. package/dist/{operator-cmd-DjZKGGgN.mjs → operator-cmd-CnAvSqJ5.mjs} +8 -9
  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 +22 -23
  164. package/dist/pages/client.mjs +51 -31
  165. package/dist/pages/head.d.mts +1 -1
  166. package/dist/pages/head.mjs +1 -1
  167. package/dist/pages/index.d.mts +18 -14
  168. package/dist/pages/index.mjs +99 -10
  169. package/dist/pages/islands-plugin.d.mts +29 -11
  170. package/dist/pages/islands-plugin.mjs +3 -4
  171. package/dist/pages/prefetch.d.mts +1 -1
  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-BMD2gjc_.mjs → platform-args-Bv9hoLEL.mjs} +4 -7
  182. package/dist/platform-args-C1kqYUen.mjs +1 -0
  183. package/dist/{platform-auth-config-BgnuMbml.mjs → platform-auth-config-CLj0EvnB.mjs} +10 -11
  184. package/dist/{platform-auth-protection-NjRejttU.mjs → platform-auth-protection-DQDSxVhr.mjs} +10 -11
  185. package/dist/{platform-auth-recovery-Ug12d9W5.mjs → platform-auth-recovery-DD3oLerq.mjs} +9 -11
  186. package/dist/{platform-cmd-HByuZAO7.mjs → platform-cmd-PLNLg-2N.mjs} +12 -13
  187. package/dist/{platform-cmd-BYKLMPCn.mjs → platform-cmd-WnOmdLzR.mjs} +1 -1
  188. package/dist/{platform-discovery-CHhNs8Nn.mjs → platform-discovery-B0eZjZ3B.mjs} +2 -3
  189. package/dist/{platform-domain-DLSQ8GF8.mjs → platform-domain-Bnq0vg0q.mjs} +7 -8
  190. package/dist/{platform-lifecycle-3dwFJmnq.mjs → platform-lifecycle-BCsFg1Tl.mjs} +53 -88
  191. package/dist/{platform-lifecycle-BRqcxerG.mjs → platform-lifecycle-BQiN9HN5.mjs} +1 -1
  192. package/dist/{platform-management-ZK6XcbCo.mjs → platform-management-CMJR8Zi-.mjs} +1 -1
  193. package/dist/{platform-management-ZZ6bQM5j.mjs → platform-management-nzCDwtiN.mjs} +7 -9
  194. package/dist/{platform-plans-config-CeydDSj0.mjs → platform-plans-config-Dx1agneU.mjs} +5 -6
  195. package/dist/{platform-recovery-8vNE5dNN.mjs → platform-recovery-DBNoME3I.mjs} +5 -6
  196. package/dist/{platform-registry-B9mWX9LO.mjs → platform-registry-DZ_2Xuqd.mjs} +4 -6
  197. package/dist/{platform-setup-Ca53gtt0.mjs → platform-setup-VEcHu0Vq.mjs} +4 -5
  198. package/dist/{plugin-inference-CeiB6BG5.mjs → plugin-inference-DmwjC3y2.mjs} +16 -24
  199. package/dist/{prefetch-Ce6la4EI.d.mts → prefetch-CG0K6JPd.d.mts} +0 -2
  200. package/dist/{prefetch-Bsc_Pb6c.mjs → prefetch-L93_1Jk7.mjs} +1 -2
  201. package/dist/prepare-BJMmfq3W.mjs +1 -0
  202. package/dist/{prepare-5BR7Splm.mjs → prepare-BPsfLWaW.mjs} +4 -5
  203. package/dist/{prepare-Dseww74N.mjs → prepare-pfl2LIMy.mjs} +17 -14
  204. package/dist/{prerender-render-CaShbHJ3.mjs → prerender-render-RlAj6hh8.mjs} +2 -3
  205. package/dist/prerender-render.d.mts +1 -3
  206. package/dist/prerender-render.mjs +1 -1
  207. package/dist/{project-rqDnVsJN.mjs → project-CLwxcEdq.mjs} +3 -4
  208. package/dist/{project-zdB3fs9G.mjs → project-DVsTAWFh.mjs} +1 -1
  209. package/dist/{project-cmd-CjLNNxwe.mjs → project-cmd-5Izu4Pg3.mjs} +21 -23
  210. package/dist/{project-paths-DGu_QZ_Q.mjs → project-paths-CdGv9Tmi.mjs} +3 -5
  211. package/dist/project-slug-BUy0lmyR.mjs +1 -0
  212. package/dist/{project-slug-23TpquG4.mjs → project-slug-CO6ci9XG.mjs} +0 -1
  213. package/dist/{project-team-DE5drjcl.mjs → project-team-DSUyjZFh.mjs} +7 -8
  214. package/dist/{project-token-XEYEXfiJ.mjs → project-token-wj09YQSB.mjs} +7 -8
  215. package/dist/{project-tsconfig-Itv1f4WC.mjs → project-tsconfig-Cf2NFjlM.mjs} +28 -8
  216. package/dist/{project-zero-trust-6VPU8zmV.mjs → project-zero-trust-BMHf2YF0.mjs} +7 -8
  217. package/dist/{protocol-DimNxVRr.mjs → protocol-0-lp9ZYx.mjs} +6 -7
  218. package/dist/{protocol-BekmFxCI.d.mts → protocol-xdrl-In0.d.mts} +3 -5
  219. package/dist/{providers-BNKRacMr.d.mts → providers-D5P8j_8D.d.mts} +0 -2
  220. package/dist/{providers-BUHwJlmM.mjs → providers-ZARwX2cL.mjs} +1 -2
  221. package/dist/{provision-B7UFrBH7.mjs → provision-CRiNnlfE.mjs} +29 -14
  222. package/dist/{provision-Chq0NRAV.mjs → provision-CxHIGBIZ.mjs} +1 -1
  223. package/dist/{queues-BWKt1Xo4.d.mts → queues-DdM42xXW.d.mts} +0 -2
  224. package/dist/{r2-conditions-B8xUgJRc.mjs → r2-conditions-BqkQNt2n.mjs} +1 -2
  225. package/dist/{requests-CG-Pj8ze.mjs → requests-DicgB5jU.mjs} +6 -7
  226. package/dist/resolve-project-CgfjtOwz.mjs +1 -0
  227. package/dist/{resolve-project-Xoi6eTWY.mjs → resolve-project-D0YNnJfm.mjs} +4 -5
  228. package/dist/{resource-name-C7LVpcRm.mjs → resource-name-DlJ9QXzg.mjs} +1 -2
  229. package/dist/{response-Tn7rU0MV.mjs → response-HmNjB30w.mjs} +1 -2
  230. package/dist/{rollback-CIrm2txZ.mjs → rollback-DrDZOKNE.mjs} +7 -8
  231. package/dist/{rolldown-runtime-3h0WiCiA.mjs → rolldown-runtime-uD8oG6U2.mjs} +1 -2
  232. package/dist/{route-types--PAOzHlH.mjs → route-types-irZc1txT.mjs} +100 -7
  233. package/dist/route-url-BGOiyKNz.d.mts +24 -0
  234. package/dist/route-url-CRDF-I0I.mjs +57 -0
  235. package/dist/routes-stub.d.mts +4 -3
  236. package/dist/routes-stub.mjs +1 -1
  237. package/dist/{routing-assets-DdSFxoLp.mjs → routing-assets-DJIVOrCh.mjs} +1 -2
  238. package/dist/{runner-3uGC-oLF.mjs → runner-5MCSimKx.mjs} +5 -6
  239. package/dist/{runner-WCdfeI0q.mjs → runner-QMeOpScZ.mjs} +1 -1
  240. package/dist/{runner-mysql-BcHnLUuM.mjs → runner-mysql-0zVmB1JW.mjs} +1 -1
  241. package/dist/{runner-mysql-BWmbk5IE.mjs → runner-mysql-Bdmsp_x4.mjs} +3 -4
  242. package/dist/{runner-pg-Cgp-cr_p.mjs → runner-pg-2pjltt0t.mjs} +1 -1
  243. package/dist/{runner-pg-Cr3qrqi4.mjs → runner-pg-mYc75KfH.mjs} +2 -3
  244. package/dist/runtime/ai.d.mts +0 -4
  245. package/dist/runtime/ai.mjs +6 -8
  246. package/dist/runtime/auth-client-react.d.mts +1 -1
  247. package/dist/runtime/auth-client-react.mjs +1 -1
  248. package/dist/runtime/auth-client-solid.d.mts +1 -1
  249. package/dist/runtime/auth-client-solid.mjs +1 -1
  250. package/dist/runtime/auth-client-svelte.d.mts +1 -1
  251. package/dist/runtime/auth-client-svelte.mjs +1 -1
  252. package/dist/runtime/auth-client-vue.d.mts +1 -1
  253. package/dist/runtime/auth-client-vue.mjs +1 -1
  254. package/dist/runtime/auth-client.d.mts +1 -1
  255. package/dist/runtime/auth-client.mjs +1 -1
  256. package/dist/runtime/auth.d.mts +2 -2
  257. package/dist/runtime/auth.mjs +1 -1
  258. package/dist/runtime/better-auth-mysql.d.mts +2 -4
  259. package/dist/runtime/better-auth-mysql.mjs +3 -4
  260. package/dist/runtime/better-auth-pg.d.mts +2 -4
  261. package/dist/runtime/better-auth-pg.mjs +4 -5
  262. package/dist/runtime/better-auth.d.mts +2 -4
  263. package/dist/runtime/better-auth.mjs +3 -4
  264. package/dist/runtime/client-react.d.mts +4 -4
  265. package/dist/runtime/client-react.mjs +4 -4
  266. package/dist/runtime/client-solid.d.mts +4 -4
  267. package/dist/runtime/client-solid.mjs +4 -4
  268. package/dist/runtime/client-svelte.d.mts +4 -4
  269. package/dist/runtime/client-svelte.mjs +4 -4
  270. package/dist/runtime/client-vue.d.mts +4 -4
  271. package/dist/runtime/client-vue.mjs +4 -4
  272. package/dist/runtime/client.d.mts +4 -4
  273. package/dist/runtime/client.mjs +4 -4
  274. package/dist/runtime/db.d.mts +0 -2
  275. package/dist/runtime/db.mjs +2 -3
  276. package/dist/runtime/durable.d.mts +0 -2
  277. package/dist/runtime/durable.mjs +3 -4
  278. package/dist/runtime/email/testing.d.mts +1 -5
  279. package/dist/runtime/email/testing.mjs +5 -6
  280. package/dist/runtime/email-protocol.d.mts +0 -2
  281. package/dist/runtime/email-protocol.mjs +1 -1
  282. package/dist/runtime/email.d.mts +1 -5
  283. package/dist/runtime/email.mjs +6 -7
  284. package/dist/runtime/env-public-client.d.mts +1 -3
  285. package/dist/runtime/env-public-client.mjs +2 -3
  286. package/dist/runtime/env-public.d.mts +2 -2
  287. package/dist/runtime/env-public.mjs +5 -7
  288. package/dist/runtime/env.d.mts +0 -4
  289. package/dist/runtime/env.mjs +1 -1
  290. package/dist/runtime/fetch-server.d.mts +1 -3
  291. package/dist/runtime/fetch-server.mjs +3 -4
  292. package/dist/runtime/fetch-stream.d.mts +2 -2
  293. package/dist/runtime/fetch-stream.mjs +2 -2
  294. package/dist/runtime/fetch.d.mts +1 -1
  295. package/dist/runtime/fetch.mjs +2 -2
  296. package/dist/runtime/handler.d.mts +1 -1
  297. package/dist/runtime/handler.mjs +2 -2
  298. package/dist/runtime/isr.d.mts +1 -3
  299. package/dist/runtime/isr.mjs +2 -3
  300. package/dist/runtime/kv.d.mts +1 -3
  301. package/dist/runtime/kv.mjs +2 -3
  302. package/dist/runtime/limits.d.mts +1 -1
  303. package/dist/runtime/limits.mjs +1 -1
  304. package/dist/runtime/live-client.d.mts +1 -3
  305. package/dist/runtime/live-client.mjs +1 -2
  306. package/dist/runtime/live-server.d.mts +0 -2
  307. package/dist/runtime/live-server.mjs +3 -4
  308. package/dist/runtime/live.d.mts +1 -1
  309. package/dist/runtime/live.mjs +1 -1
  310. package/dist/runtime/log.d.mts +3 -3
  311. package/dist/runtime/log.mjs +26 -18
  312. package/dist/runtime/migration-handler-mysql.d.mts +2 -4
  313. package/dist/runtime/migration-handler-mysql.mjs +2 -3
  314. package/dist/runtime/migration-handler-pg.d.mts +2 -4
  315. package/dist/runtime/migration-handler-pg.mjs +2 -3
  316. package/dist/runtime/migration-handler.d.mts +1 -1
  317. package/dist/runtime/migration-handler.mjs +1 -1
  318. package/dist/runtime/queues.d.mts +1 -1
  319. package/dist/runtime/queues.mjs +2 -3
  320. package/dist/runtime/remote/binding-handler.d.mts +1 -3
  321. package/dist/runtime/remote/binding-handler.mjs +3 -4
  322. package/dist/runtime/remote/index.d.mts +1 -3
  323. package/dist/runtime/remote/index.mjs +8 -13
  324. package/dist/runtime/response.d.mts +1 -3
  325. package/dist/runtime/response.mjs +1 -1
  326. package/dist/runtime/route-url.d.mts +2 -2
  327. package/dist/runtime/route-url.mjs +1 -1
  328. package/dist/runtime/routing.d.mts +10 -12
  329. package/dist/runtime/routing.mjs +27 -88
  330. package/dist/runtime/sandbox-container.d.mts +1 -1
  331. package/dist/runtime/sandbox-container.mjs +1 -1
  332. package/dist/runtime/sandbox.d.mts +2 -2
  333. package/dist/runtime/sandbox.mjs +5 -6
  334. package/dist/runtime/seed.d.mts +0 -2
  335. package/dist/runtime/seed.mjs +1 -2
  336. package/dist/runtime/sse-client.d.mts +1 -3
  337. package/dist/runtime/sse-client.mjs +1 -2
  338. package/dist/runtime/sse.d.mts +1 -3
  339. package/dist/runtime/sse.mjs +1 -1
  340. package/dist/runtime/storage.d.mts +1 -3
  341. package/dist/runtime/storage.mjs +2 -3
  342. package/dist/runtime/validator.d.mts +1 -1
  343. package/dist/runtime/validator.mjs +1 -1
  344. package/dist/runtime/ws-server.d.mts +3 -5
  345. package/dist/runtime/ws-server.mjs +3 -4
  346. package/dist/runtime/ws.d.mts +1 -1
  347. package/dist/runtime/ws.mjs +7 -6
  348. package/dist/{sandbox-q3waMc2T.d.mts → sandbox-DE1WsxuB.d.mts} +2 -4
  349. package/dist/{sandbox-container-a9LRUtii.mjs → sandbox-container-BuxhwCgt.mjs} +1 -2
  350. package/dist/{sandbox-container-ChQRum-j.d.mts → sandbox-container-CZFZdMso.d.mts} +0 -2
  351. package/dist/{scan-N9WzdcAl.mjs → scan-DSQtH3oS.mjs} +31 -25
  352. package/dist/{secret-BL6g7mF5.mjs → secret-C_QtTzJG.mjs} +23 -24
  353. package/dist/{serialize-YHvlcG3Q.mjs → serialize-DUuYuaY3.mjs} +2 -4
  354. package/dist/{serialize-DtR8Vwa_.d.mts → serialize-I4EmS-Wf.d.mts} +0 -2
  355. package/dist/{skills-CrUO3PJ0.mjs → skills-D393E4lB.mjs} +4 -5
  356. package/dist/{sqlite-validation-BzKMWnO4.mjs → sqlite-validation-CLJXXN93.mjs} +1 -2
  357. package/dist/{sse-CMvCgjNk.mjs → sse-CxR30yMF.mjs} +1 -2
  358. package/dist/{standard-schema-Fo_vCAZh.d.mts → standard-schema-CuDawHOC.d.mts} +0 -2
  359. package/dist/{static-asset-marker-Btf-6oCD.mjs → static-asset-marker-NR1XS2z5.mjs} +1 -2
  360. package/dist/{subcommand-prompt-D9OhhbGG.mjs → subcommand-prompt-CxJXporl.mjs} +3 -4
  361. package/dist/sveltekit.d.mts +0 -2
  362. package/dist/sveltekit.mjs +2 -3
  363. package/dist/{terminal-log-text-D9ACPOuG.mjs → terminal-log-text-DNsWJREL.mjs} +1 -2
  364. package/dist/{types-w72dljaA.d.mts → types-agfx0alu.d.mts} +0 -4
  365. package/dist/validate-DY1U9rET.mjs +1 -0
  366. package/dist/{validate-CnZPMq4q.mjs → validate-Ddzl-IwT.mjs} +4 -5
  367. package/dist/{validation-error-Dg9Recn1.mjs → validation-error-rDVbUJet.mjs} +2 -4
  368. package/dist/{validator-BTOu0fB0.mjs → validator-CTfmzZYb.mjs} +2 -5
  369. package/dist/{version-metadata-DmaZNTYW.mjs → version-metadata-Blf5H9BQ.mjs} +5 -6
  370. package/dist/{worker-conditions-AWFRcFxR.mjs → worker-conditions-CBZ0RYsZ.mjs} +1 -2
  371. package/dist/wrangler-CPRX2d9A.mjs +1 -0
  372. package/dist/{wrangler-CDiEBCdS.mjs → wrangler-p-kLCJqF.mjs} +81 -15
  373. package/dist/{wrapper-CEiDeCqD.mjs → wrapper-iejSJDwL.mjs} +18 -15
  374. package/dist/{ws-D1zWiB_P.d.mts → ws-DzBD-NUj.d.mts} +4 -5
  375. package/dist/{yarn-pnp-DLbEFMT0.mjs → yarn-pnp-DgWbE7z5.mjs} +2 -3
  376. package/docs/guide/auth.md +1 -1
  377. package/docs/guide/database.md +4 -4
  378. package/docs/guide/deployment.md +1 -1
  379. package/docs/guide/edge/headers.md +2 -6
  380. package/docs/guide/edge/redirects.md +22 -0
  381. package/docs/guide/edge/static-assets.md +0 -10
  382. package/docs/guide/email/domains.md +3 -1
  383. package/docs/guide/email/receiving.md +3 -3
  384. package/docs/guide/email/sending.md +1 -1
  385. package/docs/guide/pages-routing/actions-and-forms.md +26 -5
  386. package/docs/guide/pages-routing/islands.md +2 -2
  387. package/docs/guide/pages-routing/loaders.md +3 -3
  388. package/docs/guide/pages-routing/markdown.md +6 -6
  389. package/docs/guide/pages-routing/overview.md +34 -27
  390. package/docs/guide/platform/administration/email.md +6 -8
  391. package/docs/guide/platform/installation/credentials.md +6 -6
  392. package/docs/guide/platform/installation/maintenance.md +10 -24
  393. package/docs/guide/platform/installation/prerequisites.md +1 -1
  394. package/docs/guide/platform/installation/setup.md +1 -1
  395. package/docs/guide/platform/installation/uninstall.md +1 -1
  396. package/docs/guide/queues.md +4 -8
  397. package/docs/guide/self-hosted-platform.md +3 -3
  398. package/docs/guide/server-routing.md +8 -6
  399. package/docs/guide/ssg.md +8 -0
  400. package/docs/guide/type-safety.md +42 -0
  401. package/docs/guide/typed-fetch.md +1 -1
  402. package/docs/guide/websockets.md +1 -1
  403. package/docs/integrations/cloudflare.md +17 -8
  404. package/docs/integrations/frameworks/analog.md +1 -1
  405. package/docs/integrations/frameworks/nuxt.md +1 -1
  406. package/docs/integrations/frameworks/sveltekit.md +1 -1
  407. package/docs/integrations/frameworks/tanstack-start.md +1 -1
  408. package/docs/integrations/hono.md +5 -5
  409. package/docs/reference/api/auth.md +6 -2
  410. package/docs/reference/api/deploy.md +15 -11
  411. package/docs/reference/api/pages.md +10 -0
  412. package/docs/reference/api/plugin.md +4 -4
  413. package/docs/reference/api/resources.md +4 -1
  414. package/docs/reference/api/rewrites.md +20 -2
  415. package/docs/reference/api/types.md +41 -0
  416. package/docs/reference/api.md +2 -2
  417. package/docs/reference/cli/database.md +15 -9
  418. package/docs/reference/cli/deploy.md +10 -9
  419. package/docs/reference/cli/email.md +4 -2
  420. package/docs/reference/cli/platform-installation.md +2 -2
  421. package/docs/reference/cli/project.md +2 -2
  422. package/docs/reference/cli/secrets.md +3 -1
  423. package/docs/reference/cli/setup.md +3 -3
  424. package/docs/reference/cli.md +1 -1
  425. package/docs/reference/config.md +12 -2
  426. package/package.json +35 -31
  427. package/sandbox.Dockerfile +1 -1
  428. package/schema.json +4 -0
  429. package/skills/void/SKILL.md +1 -1
  430. package/dist/auth-DkcFflXV.d.mts +0 -42
  431. package/dist/cf-build-output-DlBkWdNU.mjs +0 -1
  432. package/dist/client-DyxPQnF_.mjs +0 -1
  433. package/dist/collect-BWhkgtAn.mjs +0 -1
  434. package/dist/config-BTu1o3Dc.mjs +0 -49
  435. package/dist/deploy-CtHE2A3R.mjs +0 -2
  436. package/dist/discover-D4TPKo57.mjs +0 -1
  437. package/dist/gen-TgXy93Rr.mjs +0 -1
  438. package/dist/help-qOZr3wng.mjs +0 -1
  439. package/dist/login-Cdo8Aco1.mjs +0 -1
  440. package/dist/migrate-COPncCGx.mjs +0 -1
  441. package/dist/operator-cmd-DDiX7Y3f.mjs +0 -1
  442. package/dist/output-BW9uK099.mjs +0 -1
  443. package/dist/plan-CKX_jWnD.mjs +0 -1
  444. package/dist/platform-args-BC8_hsDj.mjs +0 -1
  445. package/dist/prepare-B3VrSF1Z.mjs +0 -1
  446. package/dist/project-slug-6cyz8E7k.mjs +0 -1
  447. package/dist/resolve-project-DD1vu8s9.mjs +0 -1
  448. package/dist/route-url-BgPja1GS.d.mts +0 -5
  449. package/dist/route-url-BjGv_KKY.mjs +0 -28
  450. package/dist/validate-D7Wn8PUX.mjs +0 -1
  451. package/dist/wrangler-DOPr4jyI.mjs +0 -1
package/dist/index.mjs CHANGED
@@ -1,55 +1,61 @@
1
- import { n as __toESM } from "./rolldown-runtime-3h0WiCiA.mjs";
2
- import { a as join, c as resolve, i as isAbsolute, n as dirname, o as normalize, s as relative } from "./dist-ipQi0Q8y.mjs";
3
- import { t as require_picocolors } from "./picocolors-BsDfhxIw.mjs";
4
- import { l as inferBindingsFromSource, m as applyBindingOverrides, n as FRAMEWORK_SCAN_DIRS, t as DEFAULT_SCAN_DIRS, u as staticModuleReferences } from "./plugin-inference-CeiB6BG5.mjs";
5
- import { n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-DGu_QZ_Q.mjs";
6
- import { i as loadVoidAuthConfig, n as devAuthConfigImporter, t as AUTH_CONFIG_ENVIRONMENT } from "./config-BTu1o3Dc.mjs";
7
- import { c as getDatabaseCasing, l as getDatabaseDialect, p as readConfig, u as isNodeTarget } from "./config-DHgSEWT7.mjs";
8
- import { f as invalidateSourceAnalysis, o as resolveLayoutIds, p as isRouteEnabledForEnvironment } from "./scan-N9WzdcAl.mjs";
9
- import { i as isMemberExpression, n as isIdentifier, r as isLiteral } from "./ast-CsZ_q_gc.mjs";
10
- import { n as bindingResolver } from "./ast-bindings-C3yaPs1y.mjs";
11
- import { a as hasSandboxSqliteMigration, c as sandboxContainerConfig, i as assertSandboxNamespaceConfig, n as DEFAULT_SANDBOX_CLASS_NAME, p as scanJobsSync, r as SANDBOX_MIGRATION_TAG, s as resolveSandboxConfig, t as analyzeApplicationSync, u as scanQueuesSync } from "./application-analysis-DYdVoMAY.mjs";
12
- import { i as voidWarn, n as voidError, r as voidLog, t as setShowTimestamp } from "./log-BMwmN5Ae.mjs";
13
- import { t as MagicString } from "./dist-Cegxq8gs.mjs";
14
- import { a as validateSsrEntries, n as SSR_SERVER_ENTRY_RELATIVE_PATHS, o as validateSsrEntry, t as SSR_CLIENT_ENTRY_RELATIVE_PATHS } from "./entry-BEM8ZuGP.mjs";
15
- import { r as hasEmailHandlers } from "./email-B9ayYQEG.mjs";
16
- import { a as resolveDistDir, c as hasDocumentRoutes, n as collectRevalidate, o as resolveWorkerDirName, r as hasRevalidate, s as hasApiRoutes, t as collectPages, u as resolveAssetRoutingPolicy } from "./isr-config-fZaJJ8t7.mjs";
17
- import { n as mergeRoutingRules, t as lintRoutingPhases } from "./headers-D522zd0A.mjs";
18
- import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
19
- import { a as restoreCloudflarePreviewPointer, r as materializeCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-DchHxPTo.mjs";
20
- import { A as syncWranglerWebSockets, E as resolveLiveBindingConfig, O as syncWranglerBindings, T as readWranglerWebSocketTombstones, a as LIVE_MIGRATION_TAG, b as readRootWranglerConfig, d as ensureWranglerCompatibilityDate, f as ensureWranglerNodejsAlsFlag, g as normalizeWranglerCompatibilityFlags, h as nextDurableObjectMigrationTag, k as syncWranglerDurableObjects, m as hasDurableObjectSqliteMigration, p as findBindingNameOwner, u as ensureWranglerCompat, v as readExistingLiveBindingConfig, x as readWranglerCompat } from "./wrangler-CDiEBCdS.mjs";
21
- import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-CUhH3qtj.mjs";
22
- import { n as scopedAccessCredentials } from "./cf-access-BM9G0lhO.mjs";
23
- import { n as ensurePlatformProxyAccess } from "./cf-access-CWP4avfP.mjs";
24
- import { a as getApiUrl, c as getToken, o as getProxyUrl } from "./auth-B6iOCjKI.mjs";
25
- import { r as writeFileIfChanged } from "./project-tsconfig-Itv1f4WC.mjs";
26
- import { a as readDeployBuildQueueNames, r as cloudflareQueueName, s as drizzlePlugin, t as generateQueueResolverSource } from "./dispatch-OVLeWW8K.mjs";
27
- import { _ as parseCapturedMessage, a as DEV_INBOX_ENV_VAR, c as DEV_INBOX_TOKEN_ENV_VAR, f as clearDevBuffer, g as listDevMessages, l as DEV_INBOX_TOKEN_HEADER, m as findDevMessage, n as DEV_INBOX_ACK_VALUE, o as DEV_INBOX_MAX_CAPTURE_BYTES, s as DEV_INBOX_PREFIX, t as DEV_INBOX_ACK_HEADER, u as DEV_INBOX_TOKEN_QUERY, v as pushToDevBuffer } from "./dev-inbox-D0jxye_D.mjs";
28
- import { n as scanWranglerDotenvKeys } from "./dotenv-CNazY3-w.mjs";
29
- import { a as findReservedEnvKeys, c as reservedEnvKeysMessage, i as findLegacyEnvFiles, l as resolveRemoteMode, o as isClientEnvKey, r as LOCAL_ENV_FILE, s as loadLocalEnv } from "./env-BaMz0j7H.mjs";
30
- import { n as findEnvFileForPaths, r as generateEnvTypes, t as findEnvFile } from "./env-types-BicfKBhV.mjs";
31
- import { t as loadUserEnvFile } from "./load-user-env-DD5qveNU.mjs";
32
- import { n as INTERNAL_BINDING_PREFIXES, t as INTERNAL_BINDING_EXACT_NAMES } from "./env-raw-D74P4ebM.mjs";
33
- import { t as ASSET_EXTENSIONS } from "./routing-assets-DdSFxoLp.mjs";
34
- import { t as assertNoPrerenderFailures } from "./prerender-render-CaShbHJ3.mjs";
35
- import { r as selectNativeVersionMetadataBinding, t as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV } from "./version-metadata-DmaZNTYW.mjs";
36
- import { d as isGeneratedAssetHeaders, f as resolveAssetWorkerBypass, g as prerenderPagesNode, h as prerenderPages, n as SEND_EMAIL_BINDING, u as isAssetBypassRule } from "./email-cloudflare-B8-pq_-W.mjs";
37
- import { r as defer } from "./validation-error-Dg9Recn1.mjs";
38
- import { i as safeJsonStringify } from "./protocol-DimNxVRr.mjs";
39
- import { n as completeApplicationAnalysis } from "./application-routing-C8EqRDfv.mjs";
40
- import { n as generateQueueTypes, t as generateRouteTypes } from "./route-types--PAOzHlH.mjs";
41
- import { a as defineMiddleware, c as defineScheduled, i as defineHead, n as basicAuth, o as defineQueue, r as defineHandler, s as defineRender, t as VoidAssetRewriteError } from "./handler-BZ1t7-Rv.mjs";
1
+ import { n as __toESM } from "./rolldown-runtime-uD8oG6U2.mjs";
2
+ import { a as join, c as resolve, i as isAbsolute, n as dirname, o as normalize, s as relative, t as basename } from "./dist-DMYe8CZJ.mjs";
3
+ import { t as require_picocolors } from "./picocolors-D1NxSLw-.mjs";
4
+ import { l as inferBindingsFromSource, m as applyBindingOverrides, n as FRAMEWORK_SCAN_DIRS, t as DEFAULT_SCAN_DIRS, u as staticModuleReferences } from "./plugin-inference-DmwjC3y2.mjs";
5
+ import { n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-CdGv9Tmi.mjs";
6
+ import { i as loadVoidAuthConfig, n as devAuthConfigImporter, o as viteAuthConfigImporter, t as AUTH_CONFIG_ENVIRONMENT } from "./config-WlvEcL82.mjs";
7
+ import { c as getDatabaseCasing, l as getDatabaseDialect, p as readConfig, u as isNodeTarget } from "./config-DkA9jYF2.mjs";
8
+ import { f as invalidateSourceAnalysis, o as resolveLayoutIds, p as isRouteEnabledForEnvironment } from "./scan-DSQtH3oS.mjs";
9
+ import { i as isMemberExpression, n as isIdentifier, r as isLiteral } from "./ast-Cv0JwXqb.mjs";
10
+ import { n as bindingResolver } from "./ast-bindings-BkivMJIo.mjs";
11
+ import { a as hasSandboxSqliteMigration, c as sandboxContainerConfig, i as assertSandboxNamespaceConfig, n as DEFAULT_SANDBOX_CLASS_NAME, p as scanJobsSync, r as SANDBOX_MIGRATION_TAG, s as resolveSandboxConfig, t as analyzeApplicationSync, u as scanQueuesSync } from "./application-analysis-2vGZrKzg.mjs";
12
+ import { i as voidWarn, n as voidError, r as voidLog, t as setShowTimestamp } from "./log-D9hwSySP.mjs";
13
+ import { t as MagicString } from "./dist-B6eN80gc.mjs";
14
+ import { a as validateSsrEntries, n as SSR_SERVER_ENTRY_RELATIVE_PATHS, o as validateSsrEntry, t as SSR_CLIENT_ENTRY_RELATIVE_PATHS } from "./entry-CBZsCy3O.mjs";
15
+ import { r as hasEmailHandlers } from "./email-BHY72ixO.mjs";
16
+ import { a as resolveDistDir, c as hasDocumentRoutes, n as collectRevalidate, o as resolveWorkerDirName, r as hasRevalidate, s as hasApiRoutes, t as collectPages, u as resolveAssetRoutingPolicy } from "./isr-config-DhBkzCdY.mjs";
17
+ import { n as mergeRoutingRules, t as lintRoutingPhases } from "./headers-DEUBAM6W.mjs";
18
+ import { t as writeFileAtomic } from "./atomic-write-DA6eD1Kp.mjs";
19
+ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-CLwxcEdq.mjs";
20
+ import { n as readGeneratedWranglerConfigFile } from "./generated-wrangler-config-CoDaaFsA.mjs";
21
+ import { c as stashCloudflareDeployPointer, i as materializeCloudflareConfig, l as ensureGitignoreLines, o as restoreCloudflarePreviewPointer } from "./cloudflare-config-Chet188_.mjs";
22
+ import { A as syncWranglerWebSockets, E as resolveLiveBindingConfig, O as syncWranglerBindings, T as readWranglerWebSocketTombstones, a as LIVE_MIGRATION_TAG, b as readRootWranglerConfig, d as ensureWranglerCompatibilityDate, f as ensureWranglerNodejsAlsFlag, g as normalizeWranglerCompatibilityFlags, h as nextDurableObjectMigrationTag, k as syncWranglerDurableObjects, m as hasDurableObjectSqliteMigration, p as findBindingNameOwner, u as ensureWranglerCompat, v as readExistingLiveBindingConfig, x as readWranglerCompat } from "./wrangler-p-kLCJqF.mjs";
23
+ import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-CKfek6Z4.mjs";
24
+ import { n as scopedAccessCredentials } from "./cf-access-pejlJmuy.mjs";
25
+ import { n as ensurePlatformProxyAccess } from "./cf-access-BmBT2h8_.mjs";
26
+ import { a as getApiUrl, c as getToken, o as getProxyUrl } from "./auth-Dy8svcqQ.mjs";
27
+ import { t as migrateBuiltWranglerConfig } from "./cf-config-migrate-Dy8MrKgF.mjs";
28
+ import { n as scanWranglerDotenvKeys } from "./dotenv-CEI8hapP.mjs";
29
+ import { a as findReservedEnvKeys, c as reservedEnvKeysMessage, i as findLegacyEnvFiles, l as resolveRemoteMode, o as isClientEnvKey, r as LOCAL_ENV_FILE, s as loadLocalEnv } from "./env-CuzZZyjB.mjs";
30
+ import { i as writeFileIfChanged, r as syncAuthTypesInProjectTsconfig } from "./project-tsconfig-Cf2NFjlM.mjs";
31
+ import { a as readDeployBuildQueueNames, r as cloudflareQueueName, s as drizzlePlugin, t as generateQueueResolverSource } from "./dispatch-CiJ1Xrba.mjs";
32
+ import { _ as parseCapturedMessage, a as DEV_INBOX_ENV_VAR, c as DEV_INBOX_TOKEN_ENV_VAR, f as clearDevBuffer, g as listDevMessages, l as DEV_INBOX_TOKEN_HEADER, m as findDevMessage, n as DEV_INBOX_ACK_VALUE, o as DEV_INBOX_MAX_CAPTURE_BYTES, s as DEV_INBOX_PREFIX, t as DEV_INBOX_ACK_HEADER, u as DEV_INBOX_TOKEN_QUERY, v as pushToDevBuffer } from "./dev-inbox-CwH5VuZj.mjs";
33
+ import { n as findEnvFileForPaths, r as generateEnvTypes, t as findEnvFile } from "./env-types-DqzVBKnS.mjs";
34
+ import { t as loadUserEnvFile } from "./load-user-env-CSwdofj0.mjs";
35
+ import { n as INTERNAL_BINDING_PREFIXES, t as INTERNAL_BINDING_EXACT_NAMES } from "./env-raw-e8qgqAzQ.mjs";
36
+ import { t as ASSET_EXTENSIONS } from "./routing-assets-DJIVOrCh.mjs";
37
+ import { t as assertNoPrerenderFailures } from "./prerender-render-RlAj6hh8.mjs";
38
+ import { r as selectNativeVersionMetadataBinding, t as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV } from "./version-metadata-Blf5H9BQ.mjs";
39
+ import { d as isGeneratedAssetHeaders, f as resolveAssetWorkerBypass, g as prerenderPagesNode, h as prerenderPages, n as SEND_EMAIL_BINDING, u as isAssetBypassRule } from "./email-cloudflare-CtD8qE13.mjs";
40
+ import { r as defer } from "./validation-error-rDVbUJet.mjs";
41
+ import { i as safeJsonStringify } from "./protocol-0-lp9ZYx.mjs";
42
+ import { n as completeApplicationAnalysis } from "./application-routing-DnUQoOJD.mjs";
43
+ import { a as syncAuthTypesFile, i as removeAuthTypesIfPresent, n as generateQueueTypes, t as generateRouteTypes } from "./route-types-irZc1txT.mjs";
44
+ import { a as defineMiddleware, c as defineScheduled, i as defineHead, n as basicAuth, o as defineQueue, r as defineHandler, s as defineRender, t as VoidAssetRewriteError } from "./handler-xmzz0U38.mjs";
42
45
  import module, { builtinModules, createRequire } from "node:module";
43
- import { chmodSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, realpathSync, rmSync, statSync, writeFileSync, writeSync } from "node:fs";
44
- import { cloudflare } from "@cloudflare/vite-plugin";
45
- import { fileURLToPath, pathToFileURL } from "node:url";
46
+ import { chmodSync, closeSync, cpSync, existsSync, mkdirSync, mkdtempSync, openSync, readFileSync, realpathSync, rmSync, statSync, writeFileSync, writeSync } from "node:fs";
46
47
  import { createRunnableDevEnvironment, defaultServerConditions, isRunnableDevEnvironment, loadEnv, normalizePath, parseSync, resolveEnvPrefix } from "vite";
48
+ import { fileURLToPath, pathToFileURL } from "node:url";
47
49
  import { appendSqliteClassMigration } from "@void/deploy-core";
48
50
  import { randomBytes, timingSafeEqual } from "node:crypto";
49
51
  import { homedir } from "node:os";
50
52
  import { isDeepStrictEqual, parseEnv } from "node:util";
53
+ import { getRootConfigPath, getWorkerAssetsDir, getWorkerConfigPath, readBuildOutput } from "@cloudflare/build-output-utils";
54
+ import { convertToWranglerConfig } from "@cloudflare/config";
55
+ import { cloudflare } from "@cloudflare/vite-plugin";
56
+ import { parse } from "smol-toml";
51
57
  import { compilePattern, matchPattern } from "@void/edge";
52
- //#region src/pages/dev-css-assets.ts
58
+ // src/pages/dev-css-assets.ts
53
59
  var import_picocolors = /* @__PURE__ */ __toESM(require_picocolors(), 1);
54
60
  const DEV_CSS_ASSET_MODULE_ID = "virtual:void-pages-dev-assets";
55
61
  const DEV_CSS_ASSET_ENDPOINT = "/__void/dev/pages-css";
@@ -432,8 +438,7 @@ export async function getVoidPagesDevCss(request, env, payload) {
432
438
  }
433
439
  }];
434
440
  }
435
- //#endregion
436
- //#region src/plugin-ai-setup.ts
441
+ // src/plugin-ai-setup.ts
437
442
  /**
438
443
  * Decide whether to inject a Workers AI binding into the built wrangler config.
439
444
  *
@@ -488,11 +493,11 @@ function readVoidDevCredentials(root) {
488
493
  * block the server. On completion, writes project.json and restarts the server.
489
494
  */
490
495
  async function runAiSetupPrompt(root, token, apiUrl, server) {
491
- const { select, text, isCancel, log } = await import("./dist-B1PLt4_8.mjs");
492
- const { PlatformClient } = await import("./client-DyxPQnF_.mjs");
493
- const { attachSelectedPlatform, writeProjectConfig } = await import("./project-zdB3fs9G.mjs");
494
- const { inferDefaultSlug } = await import("./resolve-project-DD1vu8s9.mjs");
495
- const { printSuccess } = await import("./output-BW9uK099.mjs");
496
+ const { select, text, isCancel, log } = await import("./dist-eV_Ep60B.mjs");
497
+ const { PlatformClient } = await import("./client-DVtAKeUm.mjs");
498
+ const { attachSelectedPlatform, writeProjectConfig } = await import("./project-DVsTAWFh.mjs");
499
+ const { inferDefaultSlug } = await import("./resolve-project-CgfjtOwz.mjs");
500
+ const { printSuccess } = await import("./output-E6gecbbV.mjs");
496
501
  const client = new PlatformClient(token, { apiUrl });
497
502
  let projects;
498
503
  try {
@@ -518,8 +523,8 @@ async function runAiSetupPrompt(root, token, apiUrl, server) {
518
523
  let projectId;
519
524
  let slug;
520
525
  if (result === "__create__") {
521
- const { validateProjectSlug } = await import("./project-slug-6cyz8E7k.mjs");
522
- const { createProjectWithSlugRetry } = await import("./create-project-CgrnvzyA.mjs");
526
+ const { validateProjectSlug } = await import("./project-slug-BUy0lmyR.mjs");
527
+ const { createProjectWithSlugRetry } = await import("./create-project-rnjum4_V.mjs");
523
528
  let created;
524
529
  try {
525
530
  created = await createProjectWithSlugRetry(client, inferDefaultSlug(root), async (defaultSlug) => {
@@ -551,8 +556,7 @@ async function runAiSetupPrompt(root, token, apiUrl, server) {
551
556
  await server.restart();
552
557
  printSuccess(`Linked to ${slug}.`);
553
558
  }
554
- //#endregion
555
- //#region src/plugin-binding-runtime.ts
559
+ // src/plugin-binding-runtime.ts
556
560
  const envModuleResolved = fileURLToPath(import.meta.resolve("#self/_env"));
557
561
  const kvModuleResolved = fileURLToPath(import.meta.resolve("void/kv"));
558
562
  const storageModuleResolved = fileURLToPath(import.meta.resolve("void/storage"));
@@ -604,8 +608,7 @@ export const storage = new Proxy({}, {
604
608
  }
605
609
  };
606
610
  }
607
- //#endregion
608
- //#region src/plugin-client-stubs.ts
611
+ // src/plugin-client-stubs.ts
609
612
  function createClientStubsPlugin() {
610
613
  const STUB_PREFIX = "\0void-client-stub:";
611
614
  const SERVER_ONLY_STUBS = {
@@ -677,8 +680,258 @@ function createClientStubsPlugin() {
677
680
  }
678
681
  };
679
682
  }
680
- //#endregion
681
- //#region src/plugin-dev-config.ts
683
+ // src/plugin-cloudflare-config.ts
684
+ /** Match the old plugin's patch semantics, including its array concatenation. */
685
+ function mergeCloudflareConfig(patch, fallback) {
686
+ const result = { ...fallback };
687
+ for (const [key, value] of Object.entries(patch)) {
688
+ if (value === void 0) continue;
689
+ const previous = result[key];
690
+ result[key] = Array.isArray(value) && Array.isArray(previous) ? [...value, ...previous] : value && previous && typeof value === "object" && typeof previous === "object" && !Array.isArray(value) && !Array.isArray(previous) ? mergeCloudflareConfig(value, previous) : value;
691
+ }
692
+ return result;
693
+ }
694
+ /** Use Cloudflare's public migration API rather than maintaining a second binding translator. */
695
+ function toNativeCloudflareConfig(raw, root) {
696
+ const packagePath = join(root, "package.json");
697
+ const packageName = existsSync(packagePath) ? JSON.parse(readFileSync(packagePath, "utf8")).name : void 0;
698
+ const name = String(packageName ?? basename(root)).replaceAll("_", "-").replace(/[^a-z0-9- ]/g, "-").replace(/^(-+)|(-+)$/g, "").slice(0, 63) || "my-worker";
699
+ const { env, vars, ...base } = raw;
700
+ const selected = process.env.CLOUDFLARE_ENV ? env?.[process.env.CLOUDFLARE_ENV] : void 0;
701
+ const values = selected ? selected.vars : vars;
702
+ const environments = env && Object.fromEntries(Object.entries(env).map(([name, { vars: _vars, ...config }]) => [`void-environment-${name}`, config]));
703
+ const config = migrateBuiltWranglerConfig({
704
+ name,
705
+ compatibility_date: "2026-02-24",
706
+ ...base,
707
+ ...environments && process.env.CLOUDFLARE_ENV ? { env: environments } : {}
708
+ }, process.env.CLOUDFLARE_ENV ? `void-environment-${process.env.CLOUDFLARE_ENV}` : "void-top-level");
709
+ if (!config.worker) throw new Error("Void requires a Cloudflare Worker configuration.");
710
+ for (const [name, value] of Object.entries(values ?? {})) {
711
+ config.worker.env ??= {};
712
+ config.worker.env[name] = typeof value === "string" ? {
713
+ type: "text",
714
+ value
715
+ } : {
716
+ type: "json",
717
+ value
718
+ };
719
+ }
720
+ const main = selected?.main ?? raw.main;
721
+ if (main) config.worker.entrypoint = main.startsWith("virtual:") ? main : resolve(root, main);
722
+ return {
723
+ ...config,
724
+ worker: config.worker
725
+ };
726
+ }
727
+ function nativeAuxiliaryWorkers(workers, root) {
728
+ return workers?.map(({ configPath, config, ...options }) => ({
729
+ ...options,
730
+ config({ entryWorkerConfig }) {
731
+ const path = configPath ? resolve(root, configPath) : void 0;
732
+ const base = path ? path.endsWith(".toml") ? parse(readFileSync(path, "utf8")) : readGeneratedWranglerConfigFile(path) : {};
733
+ return toNativeCloudflareConfig(mergeCloudflareConfig((typeof config === "function" ? config(base, { entryWorkerConfig: convertToWranglerConfig({
734
+ worker: entryWorkerConfig,
735
+ containers: []
736
+ }) }) : config) ?? {}, base), path ? dirname(path) : root).worker;
737
+ }
738
+ }));
739
+ }
740
+ // src/plugin-cloudflare-preview.ts
741
+ /** Give preview local bindings without changing the deployable build or storing their values. */
742
+ function withLocalPreviewBindings(plugins, root) {
743
+ let directory;
744
+ const cleanup = () => {
745
+ if (directory) {
746
+ rmSync(directory, {
747
+ recursive: true,
748
+ force: true
749
+ });
750
+ directory = void 0;
751
+ }
752
+ process.removeListener("exit", cleanup);
753
+ };
754
+ const entry = plugins.find((plugin) => plugin.name === "vite-plugin-cloudflare");
755
+ if (!entry?.config) throw new Error("The Cloudflare plugin no longer exposes its configuration hook.");
756
+ const hook = typeof entry.config === "function" ? entry.config : entry.config.handler;
757
+ entry.config = async function(config, environment) {
758
+ if (!environment.isPreview) return hook.call(this, config, environment);
759
+ cleanup();
760
+ const parent = join(root, ".void");
761
+ mkdirSync(parent, { recursive: true });
762
+ directory = mkdtempSync(join(parent, "preview-"));
763
+ process.once("exit", cleanup);
764
+ try {
765
+ const output = dirname(getRootConfigPath(root));
766
+ cpSync(output, dirname(getRootConfigPath(directory)), { recursive: true });
767
+ const path = getWorkerConfigPath(directory);
768
+ const worker = JSON.parse(readFileSync(path, "utf8"));
769
+ worker.env ??= {};
770
+ for (const name of Object.keys(loadLocalEnv(root))) {
771
+ const binding = worker.env[name];
772
+ if (!binding || [
773
+ "text",
774
+ "json",
775
+ "secret"
776
+ ].includes(binding.type)) worker.env[name] = { type: "secret" };
777
+ }
778
+ writeFileAtomic(path, JSON.stringify(worker));
779
+ return await hook.call(this, {
780
+ ...config,
781
+ root: directory,
782
+ envDir: root
783
+ }, environment);
784
+ } catch (error) {
785
+ cleanup();
786
+ throw error;
787
+ }
788
+ };
789
+ return [...plugins, {
790
+ name: "void:cloudflare-preview-cleanup",
791
+ configurePreviewServer(server) {
792
+ server.httpServer.once("close", cleanup);
793
+ }
794
+ }];
795
+ }
796
+ // src/plugin-cloudflare.ts
797
+ function isInside(directory, path) {
798
+ const child = relative(directory, path);
799
+ return child !== ".." && !child.startsWith("../") && !isAbsolute(child);
800
+ }
801
+ /** Keep Void's public configuration and artifact layout while running the v2 plugin. */
802
+ function cloudflare$1(options) {
803
+ const root = process.cwd();
804
+ let workerConfig;
805
+ let native;
806
+ let pluginNative;
807
+ const outputDirectories = /* @__PURE__ */ new Map();
808
+ const bridge = {
809
+ name: "void:cloudflare-config",
810
+ config(_userConfig, environment) {
811
+ if (environment.isPreview) return;
812
+ let base = options.configPath ? readGeneratedWranglerConfigFile(options.configPath) : {};
813
+ if (process.env.CLOUDFLARE_ENV && base.env) {
814
+ const selected = base.env[process.env.CLOUDFLARE_ENV];
815
+ if (!selected) throw new Error(`Cloudflare environment ${process.env.CLOUDFLARE_ENV} is not configured.`);
816
+ const original = base;
817
+ base = convertToWranglerConfig(toNativeCloudflareConfig(base, root));
818
+ base.main = selected.main ?? original.main;
819
+ base.migrations = selected.migrations ?? original.migrations;
820
+ base.assets = {
821
+ ...base.assets,
822
+ directory: selected.assets?.directory ?? original.assets?.directory
823
+ };
824
+ }
825
+ workerConfig = mergeCloudflareConfig(options.config(base), base);
826
+ native = toNativeCloudflareConfig(workerConfig, root);
827
+ pluginNative = structuredClone(native);
828
+ if (environment.command === "build" && native.containers.length > 0) {
829
+ pluginNative.containers = [];
830
+ for (const declaration of Object.values(pluginNative.worker?.exports ?? {})) if ("container" in declaration) delete declaration.container;
831
+ }
832
+ }
833
+ };
834
+ const directories = {
835
+ name: "void:cloudflare-output-directories",
836
+ enforce: "post",
837
+ config(userConfig) {
838
+ const environmentNames = [options.viteEnvironment.name ?? "ssr", ...options.viteEnvironment.childEnvironments ?? []];
839
+ for (const name of [...environmentNames, "client"]) outputDirectories.set(name, resolve(root, userConfig.environments?.[name]?.build?.outDir ?? join(userConfig.build?.outDir ?? "dist", name)));
840
+ }
841
+ };
842
+ const output = {
843
+ name: "void:cloudflare-build-output",
844
+ enforce: "post",
845
+ writeBundle: {
846
+ order: "post",
847
+ handler() {
848
+ if (this.environment?.name !== "client") return;
849
+ const source = resolve(root, this.environment.config.build.outDir);
850
+ const destination = outputDirectories.get("client");
851
+ if (destination && source !== destination && existsSync(source)) {
852
+ mkdirSync(destination, { recursive: true });
853
+ cpSync(source, destination, { recursive: true });
854
+ }
855
+ }
856
+ },
857
+ buildApp: {
858
+ order: "post",
859
+ async handler(builder) {
860
+ if (Object.values(native.worker?.env ?? {}).some((binding) => binding.type === "assets")) mkdirSync(getWorkerAssetsDir(root), { recursive: true });
861
+ const worker = (await readBuildOutput(root)).workers.default;
862
+ const environment = options.viteEnvironment.name ?? "ssr";
863
+ const destination = outputDirectories.get(environment);
864
+ const client = outputDirectories.get("client");
865
+ if (!worker.bundleDir || !worker.config.manifest) throw new Error("Void requires a built Cloudflare Worker.");
866
+ for (const directory of [destination, client]) if (directory !== root && isInside(root, directory) && !isInside(directory, worker.bundleDir)) rmSync(directory, {
867
+ recursive: true,
868
+ force: true
869
+ });
870
+ mkdirSync(destination, { recursive: true });
871
+ cpSync(worker.bundleDir, destination, { recursive: true });
872
+ if (worker.assetsDir) {
873
+ mkdirSync(client, { recursive: true });
874
+ cpSync(worker.assetsDir, client, { recursive: true });
875
+ }
876
+ const config = {
877
+ ...workerConfig,
878
+ name: worker.config.name,
879
+ account_id: native.accountId,
880
+ compatibility_date: worker.config.compatibilityDate,
881
+ compatibility_flags: worker.config.compatibilityFlags,
882
+ main: worker.config.manifest.mainModule,
883
+ no_bundle: true,
884
+ rules: [{
885
+ type: "ESModule",
886
+ globs: ["**/*.js", "**/*.mjs"]
887
+ }],
888
+ ...process.env.CLOUDFLARE_ENV ? { targetEnvironment: process.env.CLOUDFLARE_ENV } : {},
889
+ ...workerConfig.assets || worker.assetsDir ? { assets: {
890
+ ...workerConfig.assets,
891
+ directory: relative(destination, client)
892
+ } } : {}
893
+ };
894
+ delete config.env;
895
+ writeFileAtomic(join(destination, "wrangler.json"), `${JSON.stringify(config, null, 2)}\n`);
896
+ if (options.finalizeAssets) {
897
+ options.finalizeAssets(client, builder.environments.client);
898
+ const finalized = JSON.parse(readFileSync(join(destination, "wrangler.json"), "utf8"));
899
+ if (worker.config.assets && finalized.assets) {
900
+ worker.config.assets.runWorkerFirst = finalized.assets.run_worker_first;
901
+ writeFileAtomic(worker.configPath, JSON.stringify(worker.config));
902
+ }
903
+ if (worker.assetsDir && existsSync(client)) cpSync(client, worker.assetsDir, { recursive: true });
904
+ }
905
+ if (native.containers.length > 0) writeFileAtomic(join(dirname(getRootConfigPath(root)), "void-containers.json"), JSON.stringify({ workerDirectory: relative(root, destination) }));
906
+ const pointer = join(root, ".wrangler/deploy/config.json");
907
+ const pointerDestination = existsSync(join(root, "void.config.ts")) && process.env["VOID_CLOUDFLARE_DEPLOY_BUILD"] !== "1" ? join(root, ".void/preview-deploy-config.json") : pointer;
908
+ mkdirSync(dirname(pointerDestination), { recursive: true });
909
+ writeFileAtomic(pointerDestination, JSON.stringify({ configPath: relative(dirname(pointer), join(destination, "wrangler.json")) }));
910
+ for (const name of options.viteEnvironment.childEnvironments ?? []) {
911
+ const source = builder.environments[name]?.config.build.outDir;
912
+ const target = outputDirectories.get(name);
913
+ if (source && target && existsSync(source)) cpSync(source, target, { recursive: true });
914
+ }
915
+ }
916
+ }
917
+ };
918
+ return [
919
+ bridge,
920
+ directories,
921
+ ...withLocalPreviewBindings(cloudflare({
922
+ inspectorPort: options.inspectorPort,
923
+ persistState: options.persistState,
924
+ viteEnvironment: options.viteEnvironment,
925
+ auxiliaryWorkers: nativeAuxiliaryWorkers(options.auxiliaryWorkers, root),
926
+ types: { generate: false },
927
+ config() {
928
+ return pluginNative;
929
+ }
930
+ }), root),
931
+ output
932
+ ];
933
+ }
934
+ // src/plugin-dev-config.ts
682
935
  /** Run `fn` shortly after Vite prints "ready" so dev messages stay visible. */
683
936
  function afterServerReady(server, fn) {
684
937
  if (server.httpServer) server.httpServer.once("listening", () => setTimeout(fn, 100));
@@ -835,8 +1088,7 @@ function warnIfPackageJsonIsNotEsm(root) {
835
1088
  if (pkg.type === "module") return;
836
1089
  voidWarn("package.json is missing `\"type\": \"module\"`. Vite's default config loader will fail with ERR_REQUIRE_ASYNC_MODULE on transitive top-level await (e.g. @cloudflare/vite-plugin). Add `\"type\": \"module\"` to package.json, or run vite build with `--configLoader runner`.");
837
1090
  }
838
- //#endregion
839
- //#region src/plugin-dev-triggers-hint.ts
1091
+ // src/plugin-dev-triggers-hint.ts
840
1092
  /**
841
1093
  * Prints a one-shot hint on dev server start when the project has crons
842
1094
  * or queues, explaining how to trigger them locally. Both default Void mode
@@ -875,8 +1127,7 @@ function devTriggersHintPlugin(root, devTriggerToken) {
875
1127
  }
876
1128
  };
877
1129
  }
878
- //#endregion
879
- //#region src/plugin-email-dev-inbox.ts
1130
+ // src/plugin-email-dev-inbox.ts
880
1131
  const SECURITY_HEADERS = {
881
1132
  "Cache-Control": "no-store",
882
1133
  "X-Content-Type-Options": "nosniff",
@@ -1111,8 +1362,7 @@ function renderDetailHtml(m, href) {
1111
1362
  ${bodyHtml}
1112
1363
  </body></html>`;
1113
1364
  }
1114
- //#endregion
1115
- //#region src/plugin-env-client-guard.ts
1365
+ // src/plugin-env-client-guard.ts
1116
1366
  let cachedModule = null;
1117
1367
  async function loadEnvPublic() {
1118
1368
  if (cachedModule) return cachedModule;
@@ -1301,8 +1551,7 @@ function envClientGuardPlugin(root) {
1301
1551
  }
1302
1552
  };
1303
1553
  }
1304
- //#endregion
1305
- //#region src/plugin-env-client-fold.ts
1554
+ // src/plugin-env-client-fold.ts
1306
1555
  /**
1307
1556
  * Walk the AST and collect every static `env.FOO` / `env["FOO"]` (or
1308
1557
  * `<ns>.env.FOO`) read. Dynamic keys (`env[variable]`) are intentionally
@@ -1397,8 +1646,7 @@ function envClientFoldPlugin() {
1397
1646
  }
1398
1647
  };
1399
1648
  }
1400
- //#endregion
1401
- //#region src/plugin-env-schema.ts
1649
+ // src/plugin-env-schema.ts
1402
1650
  /**
1403
1651
  * Variables Vite's `loadEnv` copies from env files into `process.env` when
1404
1652
  * they are unset, as `[file key, process.env key]`.
@@ -1634,8 +1882,7 @@ function envSchemaPlugin(root, options = {}) {
1634
1882
  }
1635
1883
  };
1636
1884
  }
1637
- //#endregion
1638
- //#region src/plugin-framework-triggers.ts
1885
+ // src/plugin-framework-triggers.ts
1639
1886
  const DISPATCH_FILE_MODE = 384;
1640
1887
  /** Absolute path of the generated dispatch file. Stable across the dev process. */
1641
1888
  function frameworkTriggersDispatchPath(root) {
@@ -1825,18 +2072,6 @@ export async function handleDevTrigger(request, env, ctx) {
1825
2072
  }
1826
2073
  `;
1827
2074
  }
1828
- /** Append any missing `lines` to the project's `.gitignore` and return the appended ones. */
1829
- function ensureGitignoreLines(root, lines) {
1830
- const gitignorePath = join(root, ".gitignore");
1831
- let contents = "";
1832
- if (existsSync(gitignorePath)) contents = readFileSync(gitignorePath, "utf-8");
1833
- const existing = new Set(contents.split("\n").map((line) => line.trim()));
1834
- const missing = lines.filter((line) => !existing.has(line));
1835
- if (missing.length === 0) return [];
1836
- const sep = contents.length === 0 || contents.endsWith("\n") ? "" : "\n";
1837
- writeFileSync(gitignorePath, `${contents}${sep}${missing.join("\n")}\n`);
1838
- return missing;
1839
- }
1840
2075
  /** Remove `lines` from the project's `.gitignore`, if it still exists. */
1841
2076
  function removeGitignoreLines(root, lines) {
1842
2077
  const gitignorePath = join(root, ".gitignore");
@@ -2141,8 +2376,7 @@ function astroDevTriggerInjectPlugin(root) {
2141
2376
  }
2142
2377
  };
2143
2378
  }
2144
- //#endregion
2145
- //#region src/router/compile.ts
2379
+ // src/router/compile.ts
2146
2380
  const FETCH_SERVER_PATH = fileURLToPath(import.meta.resolve("#self/runtime/fetch-server"));
2147
2381
  const ROUTING_RUNTIME_PATH = fileURLToPath(import.meta.resolve("#self/runtime/routing"));
2148
2382
  function pushDefaultErrorPageHelpers(lines, options) {
@@ -2154,6 +2388,27 @@ function pushDefaultErrorPageHelpers(lines, options) {
2154
2388
  lines.push("app.onError(__errorRenderer.onError);");
2155
2389
  }
2156
2390
  /**
2391
+ * Returns a lookup that gives each key its own identifier suffix. The suffix
2392
+ * keeps the key's ASCII letters and digits; keys that clean up to the same
2393
+ * text (user-list.ts and user_list.ts, or two CJK names of one length) get a
2394
+ * counter so the generated consts never clash.
2395
+ */
2396
+ function createIdentifierNames() {
2397
+ const byKey = /* @__PURE__ */ new Map();
2398
+ const used = /* @__PURE__ */ new Set();
2399
+ return (key) => {
2400
+ const known = byKey.get(key);
2401
+ if (known !== void 0) return known;
2402
+ let base = "";
2403
+ for (const char of key.split("")) base += char >= "0" && char <= "9" || char >= "a" && char <= "z" || char >= "A" && char <= "Z" ? char : "_";
2404
+ let name = base;
2405
+ for (let n = 2; used.has(name); n++) name = `${base}_${n}`;
2406
+ used.add(name);
2407
+ byKey.set(key, name);
2408
+ return name;
2409
+ };
2410
+ }
2411
+ /**
2157
2412
  * Generate the code for the virtual route table module (virtual:void-routes).
2158
2413
  * This module creates a Hono app with:
2159
2414
  * - Middleware registered via app.use()
@@ -2253,9 +2508,10 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2253
2508
  lines.push("");
2254
2509
  }
2255
2510
  const seenFiles = /* @__PURE__ */ new Set();
2511
+ const routeNames = createIdentifierNames();
2256
2512
  for (const route of scan.routes) {
2257
2513
  const filePath = `${routesDir}/${route.filePath}`;
2258
- const loaderName = `_load_${route.filePath.replace(/[^a-zA-Z0-9]/g, "_")}`;
2514
+ const loaderName = `_load_${routeNames(route.filePath)}`;
2259
2515
  if (!seenFiles.has(route.filePath)) {
2260
2516
  seenFiles.add(route.filePath);
2261
2517
  lines.push(`const ${loaderName} = __createModuleLoader(() => import(${JSON.stringify(filePath)}), ${JSON.stringify(options.dev !== true)});`);
@@ -2295,11 +2551,12 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2295
2551
  lines.push("export const VoidLiveStreamDurableObject = __createLiveDurableObject();");
2296
2552
  lines.push("");
2297
2553
  }
2298
- if (pages && scan.pages.pages.length > 0) compilePageRoutes(lines, scan, pages, options);
2554
+ const pageNames = createIdentifierNames();
2555
+ if (pages && scan.pages.pages.length > 0) compilePageRoutes(lines, scan, pages, options, pageNames);
2299
2556
  for (let i = 0; i < webSockets.length; i++) lines.push(`app.all(${JSON.stringify(webSockets[i].pattern)}, __markRouteHandler((c) => __forwardWebSocketRequest(c.req.raw, c.env, __voidWebSocketRoutes[${i}])));`);
2300
2557
  if (webSockets.length > 0) lines.push("");
2301
2558
  if (pages && scan.pages.pages.length > 0) lines.push(`app.notFound(__createPagesFallback({ routing: __routingRuntime, errors: __errorRenderer, assetsDir: ${JSON.stringify(options.assetsDir)}, fallbackRules: ${fallbackRulesJson} }));`);
2302
- compilePrerenderCollector(lines, scan, ssr, options);
2559
+ compilePrerenderCollector(lines, scan, ssr, options, pageNames);
2303
2560
  if (ssr) {
2304
2561
  lines.push(`const getClientAssetTags = __createClientAssetTags(${JSON.stringify({
2305
2562
  entryId: ssr.clientEntryRelativePath,
@@ -2368,11 +2625,15 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2368
2625
  const cloudflareNames = options.cloudflareQueueNames;
2369
2626
  lines.push(generateQueueResolverSource(queueNames, cloudflareNames && queueNames.map((name) => cloudflareQueueName(name, cloudflareNames))));
2370
2627
  lines.push("");
2628
+ const queueLabels = scan.queues.map((queue) => relative(options.projectRoot, `${queuesDir}/${queue.filePath}`));
2629
+ lines.push(`const __queueLabels = ${JSON.stringify(queueLabels)};`);
2371
2630
  lines.push("export async function __processQueue(payload, env) {");
2372
2631
  lines.push(" const queueSuffix = payload.queue;");
2373
2632
  lines.push(" const __queueIndex = __resolveQueueIndex(queueSuffix);");
2374
2633
  lines.push(" if (__queueIndex === -1) {");
2375
- lines.push(" return { ok: false, error: `No unambiguous queue handler matches \"${String(queueSuffix)}\"` };");
2634
+ lines.push(" const __error = `No unambiguous queue handler matches \"${String(queueSuffix)}\"`;");
2635
+ lines.push(" console.error(`[void] ${__error}`);");
2636
+ lines.push(" return { ok: false, error: __error };");
2376
2637
  lines.push(" }");
2377
2638
  lines.push(" const __decisions = new Map();");
2378
2639
  lines.push(" function __wrapMsg(m) {");
@@ -2402,7 +2663,10 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2402
2663
  lines.push(" }");
2403
2664
  }
2404
2665
  lines.push(" }");
2405
- lines.push(" } catch { __ok = false; }");
2666
+ lines.push(" } catch (error) {");
2667
+ lines.push(" console.error(`[void] Queue handler ${__queueLabels[__queueIndex]} failed for queue \"${String(queueSuffix)}\":`, error);");
2668
+ lines.push(" __ok = false;");
2669
+ lines.push(" }");
2406
2670
  lines.push(" return { ok: __ok, ...(__decisions.size > 0 ? { decisions: Object.fromEntries(__decisions) } : {}) };");
2407
2671
  lines.push("}");
2408
2672
  lines.push("");
@@ -2548,7 +2812,7 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2548
2812
  lines.push(`export default app;`);
2549
2813
  return lines.join("\n");
2550
2814
  }
2551
- function compilePrerenderCollector(lines, scan, ssr, options) {
2815
+ function compilePrerenderCollector(lines, scan, ssr, options, pageNames) {
2552
2816
  const staticPaths = scan.pages.pages.filter((page) => page.shouldPrerender && page.params.length === 0 && !page.catchAll).map((page) => page.pattern);
2553
2817
  const dynamicPages = scan.pages.pages.filter((page) => page.shouldPrerender && page.hasGetPrerenderPaths && (page.params.length > 0 || page.catchAll));
2554
2818
  const explicitPaths = options.explicitPrerenderPaths ?? [];
@@ -2568,7 +2832,7 @@ function compilePrerenderCollector(lines, scan, ssr, options) {
2568
2832
  lines.push(` const paths = [];`);
2569
2833
  for (const path of staticPaths) lines.push(` paths.push(${JSON.stringify(path)});`);
2570
2834
  for (const page of dynamicPages) {
2571
- const loaderName = `_pload_${page.componentId.replace(/[^a-zA-Z0-9]/g, "_")}`;
2835
+ const loaderName = `_pload_${pageNames(page.componentId)}`;
2572
2836
  lines.push(` {`);
2573
2837
  lines.push(` const mod = await ${loaderName}();`);
2574
2838
  lines.push(` if (typeof mod.getPrerenderPaths === "function") {`);
@@ -2601,7 +2865,7 @@ function compilePrerenderCollector(lines, scan, ssr, options) {
2601
2865
  lines.push(`}`);
2602
2866
  lines.push("");
2603
2867
  }
2604
- function compilePageRoutes(lines, scan, pages, options) {
2868
+ function compilePageRoutes(lines, scan, pages, options, pageNames) {
2605
2869
  lines.push(`import { renderPage } from "virtual:void-pages-renderer";`);
2606
2870
  if (options.dev) lines.push(`import { getVoidPagesDevCss } from "virtual:void-pages-dev-assets";`);
2607
2871
  const hasIslandPages = scan.pages.pages.some((p) => p.renderMode === "island");
@@ -2666,7 +2930,7 @@ function compilePageRoutes(lines, scan, pages, options) {
2666
2930
  })}${devCssOption} }, __loadPagesManifest);`);
2667
2931
  const seenServerFiles = /* @__PURE__ */ new Set();
2668
2932
  for (const page of scan.pages.pages) {
2669
- const safeId = page.componentId.replace(/[^a-zA-Z0-9]/g, "_");
2933
+ const safeId = pageNames(page.componentId);
2670
2934
  let serverImportPath = null;
2671
2935
  if (page.serverPath) serverImportPath = `${pages.pagesDir}/${page.serverPath}`;
2672
2936
  if (serverImportPath && !seenServerFiles.has(serverImportPath)) {
@@ -2722,7 +2986,7 @@ const serveWithAssets = __createAssetFallback(${JSON.stringify({
2722
2986
  * proxy-backed versions.
2723
2987
  */
2724
2988
  function compileWorkerEntry(options = {}) {
2725
- const { hasQueues = false, versionMetadataBinding, remote, assetsDir = "assets", webSocketClasses = [], runtimeEnvPath = "void/_env", runtimeEmailPath = "void/email", envSchemaModule, sandbox, serveSpaFallback = false, hasEmail = false, live, dev = false, isr, notFound = "none", durableObjects = [] } = options;
2989
+ const { hasQueues = false, versionMetadataBinding, alwaysUseHttps = false, remote, assetsDir = "assets", webSocketClasses = [], runtimeEnvPath = "void/_env", runtimeEmailPath = "void/email", envSchemaModule, sandbox, serveSpaFallback = false, hasEmail = false, live, dev = false, isr, notFound = "none", durableObjects = [] } = options;
2726
2990
  const remotePath = remote?.remotePath;
2727
2991
  const remoteBindingNames = JSON.stringify(remote?.bindingNames);
2728
2992
  const createRemoteEnvCall = `createRemoteEnv(env${remote?.bindingNames ? `, ${remoteBindingNames}` : ""})`;
@@ -2758,7 +3022,7 @@ const __filterInternalBindings = (env) => __filterBindings(env, ${JSON.stringify
2758
3022
  app, assets: serveWithAssets, withRawEnv: __withRawEnv, withRuntimeEnv,
2759
3023
  filterBindings: __filterInternalBindings,
2760
3024
  internalRoute: __voidHandleInternalRoute,
2761
- collectPrerenderPaths: __voidCollectPrerenderPaths${versionMetadataBinding ? ", versionMetadataBinding: " + JSON.stringify(versionMetadataBinding) : ""}${envSchemaModule ? ", validateEnv: _validateEnvOnce" : ""}${remotePath ? ", remoteEnv: (env) => " + createRemoteEnvCall : ""}${hasEmail ? ", emailReceipt: __handleEmailReceipt" : ""}${isr ? ", isr: { deploymentId: __VOID_ISR_DEPLOYMENT_ID, handle: (request, env, ctx, render) => handleIsr(request, env, ctx, { revalidate: __VOID_ISR_REVALIDATE, pages: __VOID_ISR_PAGES, pathRevalidate: __VOID_ISR_PATH_REVALIDATE, deploymentId: __VOID_ISR_DEPLOYMENT_ID, queryAllowlist: " + JSON.stringify(isr.queryAllowlist) + " }, render) }" : ""}
3025
+ collectPrerenderPaths: __voidCollectPrerenderPaths${alwaysUseHttps ? ", alwaysUseHttps: true" : ""}${versionMetadataBinding ? ", versionMetadataBinding: " + JSON.stringify(versionMetadataBinding) : ""}${envSchemaModule ? ", validateEnv: _validateEnvOnce" : ""}${remotePath ? ", remoteEnv: (env) => " + createRemoteEnvCall : ""}${hasEmail ? ", emailReceipt: __handleEmailReceipt" : ""}${isr ? ", isr: { deploymentId: __VOID_ISR_DEPLOYMENT_ID, handle: (request, env, ctx, render) => handleIsr(request, env, ctx, { revalidate: __VOID_ISR_REVALIDATE, pages: __VOID_ISR_PAGES, pathRevalidate: __VOID_ISR_PATH_REVALIDATE, deploymentId: __VOID_ISR_DEPLOYMENT_ID, queryAllowlist: " + JSON.stringify(isr.queryAllowlist) + " }, render) }" : ""}
2762
3026
  })`;
2763
3027
  const remoteEnvSwap = remotePath ? ` if (env.__VOID_REMOTE === "1") env = ${createRemoteEnvCall};\n` : "";
2764
3028
  const scheduledHandler = `async function handleScheduled(controller, env, ctx) {
@@ -2931,8 +3195,7 @@ export const fetch = createServerFetch(
2931
3195
  );
2932
3196
  `;
2933
3197
  }
2934
- //#endregion
2935
- //#region src/plugin-framework-entry.ts
3198
+ // src/plugin-framework-entry.ts
2936
3199
  /**
2937
3200
  * Resolve the server entry module for a Class A framework. We always wrap
2938
3201
  * the framework's own entry with a tiny shim that intercepts
@@ -3076,8 +3339,7 @@ export default {
3076
3339
  `);
3077
3340
  return entryPath;
3078
3341
  }
3079
- //#endregion
3080
- //#region src/installed-packages.ts
3342
+ // src/installed-packages.ts
3081
3343
  function readManifest(dir) {
3082
3344
  try {
3083
3345
  return JSON.parse(readFileSync(join(dir, "package.json"), "utf8"));
@@ -3269,8 +3531,7 @@ function findDependencyClosure(name, fromDir) {
3269
3531
  visit(name, fromDir);
3270
3532
  return [...found].sort();
3271
3533
  }
3272
- //#endregion
3273
- //#region src/plugin-migration.ts
3534
+ // src/plugin-migration.ts
3274
3535
  function readDatabaseUrl(root) {
3275
3536
  return loadLocalEnv(root).DATABASE_URL;
3276
3537
  }
@@ -3296,7 +3557,7 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
3296
3557
  const hasSqlMigrations = existsSync(migrationsDir);
3297
3558
  if (!hasSqlMigrations && !auth?.enabled) return;
3298
3559
  const migrateAuth = async (databaseUrl) => {
3299
- const { runLocalVoidAuthMigrations } = await import("./node-DtD7ZiPf.mjs");
3560
+ const { runLocalVoidAuthMigrations } = await import("./node-BfAt2rz8.mjs");
3300
3561
  await runLocalVoidAuthMigrations(root, dialect, persistRoot, databaseId, auth?.configPath, databaseUrl, devAuthConfigImporter(server));
3301
3562
  };
3302
3563
  const mysqlAuth = dialect === "mysql" && auth?.enabled === true;
@@ -3311,7 +3572,7 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
3311
3572
  };
3312
3573
  try {
3313
3574
  if (dialect !== "sqlite") {
3314
- const { collectMigrations } = await import("./collect-BWhkgtAn.mjs");
3575
+ const { collectMigrations } = await import("./collect-8i0wU63d.mjs");
3315
3576
  const allMigrations = collectMigrations(migrationsDir);
3316
3577
  const runFiles = dialect === "mysql" ? allMigrations.length > 0 : hasSqlMigrations;
3317
3578
  const url = runFiles ? readDatabaseUrl(root) : void 0;
@@ -3325,8 +3586,8 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
3325
3586
  }
3326
3587
  const authWithFiles = authUrl !== void 0 && authUrl === url;
3327
3588
  if (url) {
3328
- const { validateMigrations } = await import("./validate-D7Wn8PUX.mjs");
3329
- const appliedNames = dialect === "mysql" ? await import("./runner-mysql-BcHnLUuM.mjs").then((runner) => runner.getMySqlAppliedMigrations(url)) : await import("./runner-pg-Cgp-cr_p.mjs").then((runner) => runner.getPgAppliedMigrations(url));
3589
+ const { validateMigrations } = await import("./validate-DY1U9rET.mjs");
3590
+ const appliedNames = dialect === "mysql" ? await import("./runner-mysql-0zVmB1JW.mjs").then((runner) => runner.getMySqlAppliedMigrations(url)) : await import("./runner-pg-2pjltt0t.mjs").then((runner) => runner.getPgAppliedMigrations(url));
3330
3591
  const appliedSet = new Set(appliedNames);
3331
3592
  const pending = allMigrations.filter((migration) => !appliedSet.has(migration.name));
3332
3593
  if (pending.length > 0) try {
@@ -3335,20 +3596,20 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
3335
3596
  refuse(err);
3336
3597
  return;
3337
3598
  }
3338
- const applied = dialect === "mysql" ? await import("./runner-mysql-BcHnLUuM.mjs").then((runner) => runner.runMySqlMigrations(migrationsDir, url, authWithFiles ? async (names) => {
3599
+ const applied = dialect === "mysql" ? await import("./runner-mysql-0zVmB1JW.mjs").then((runner) => runner.runMySqlMigrations(migrationsDir, url, authWithFiles ? async (names) => {
3339
3600
  logApplied(names);
3340
3601
  await migrateAuth(url);
3341
- } : void 0)) : await import("./runner-pg-Cgp-cr_p.mjs").then((runner) => runner.runPgMigrations(migrationsDir, url));
3602
+ } : void 0)) : await import("./runner-pg-2pjltt0t.mjs").then((runner) => runner.runPgMigrations(migrationsDir, url));
3342
3603
  if (!authWithFiles) logApplied(applied);
3343
3604
  }
3344
3605
  if (authUrl && !authWithFiles) {
3345
- const { withMySqlMigrationLockAt } = await import("./runner-mysql-BcHnLUuM.mjs");
3606
+ const { withMySqlMigrationLockAt } = await import("./runner-mysql-0zVmB1JW.mjs");
3346
3607
  await withMySqlMigrationLockAt(authUrl, () => migrateAuth(authUrl));
3347
3608
  }
3348
3609
  } else if (hasSqlMigrations) {
3349
- const { runMigrations, getMiniflareDatabasePath, getAppliedMigrations } = await import("./runner-WCdfeI0q.mjs");
3350
- const { collectMigrations } = await import("./collect-BWhkgtAn.mjs");
3351
- const { validateMigrations } = await import("./validate-D7Wn8PUX.mjs");
3610
+ const { runMigrations, getMiniflareDatabasePath, getAppliedMigrations } = await import("./runner-QMeOpScZ.mjs");
3611
+ const { collectMigrations } = await import("./collect-8i0wU63d.mjs");
3612
+ const { validateMigrations } = await import("./validate-DY1U9rET.mjs");
3352
3613
  const dbPath = getMiniflareDatabasePath(persistRoot, databaseId);
3353
3614
  const allMigrations = collectMigrations(migrationsDir);
3354
3615
  const appliedRows = await getAppliedMigrations(dbPath);
@@ -3373,8 +3634,7 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
3373
3634
  }
3374
3635
  };
3375
3636
  }
3376
- //#endregion
3377
- //#region src/plugin-worker-environment.ts
3637
+ // src/plugin-worker-environment.ts
3378
3638
  const CLOUDFLARE_BUILTIN_IMPORT = /^cloudflare:/;
3379
3639
  const SANDBOX_SDK_IMPORT = "@cloudflare/sandbox";
3380
3640
  const SANDBOX_SDK_IMPORT_FILTER = /^@cloudflare\/sandbox$/;
@@ -3536,8 +3796,7 @@ function createServerRuntimeOptimizerPlugin(dialect, readCompat) {
3536
3796
  }
3537
3797
  };
3538
3798
  }
3539
- //#endregion
3540
- //#region src/sveltekit-hooks-transform.ts
3799
+ // src/sveltekit-hooks-transform.ts
3541
3800
  /** Add Void's dev bindings to SvelteKit's generated get_hooks function. */
3542
3801
  function injectSvelteKitHooks(code, id, dispatchPath) {
3543
3802
  return editGetHooks(code, id, `\n const { withRuntimeEnv } = await import("void/_env");\n const { handleDevTrigger } = await import(${JSON.stringify(dispatchPath)});`, "const __origHandle = handle ?? (({ event, resolve }) => resolve(event));\n handle = async ({ event, resolve }) => {\n const __voidEnv = event.platform?.env ?? (await import('cloudflare:workers')).env;\n return withRuntimeEnv(__voidEnv, async () => {\n const __triggerResp = await handleDevTrigger(event.request, __voidEnv, undefined);\n if (__triggerResp) return __triggerResp;\n return __origHandle({ event, resolve });\n });\n };\n ");
@@ -3568,8 +3827,7 @@ function editGetHooks(code, id, prologue, handleWrapper) {
3568
3827
  map: ms.generateMap({ hires: true })
3569
3828
  };
3570
3829
  }
3571
- //#endregion
3572
- //#region src/plugin-framework.ts
3830
+ // src/plugin-framework.ts
3573
3831
  const handlerFile = fileURLToPath(import.meta.resolve("#self/handler"));
3574
3832
  const envModuleFile = fileURLToPath(import.meta.resolve("#self/_env"));
3575
3833
  const voidDir = dirname(fileURLToPath(import.meta.url));
@@ -3581,19 +3839,20 @@ function createFrameworkPlugins(input) {
3581
3839
  const syncFrameworkCompat = (compat) => {
3582
3840
  if (ensureWranglerCompatibilityDate(root, compat.compatibilityDate)) voidLog("Synced compatibility_date to Cloudflare config");
3583
3841
  };
3842
+ const ensureFrameworkCompat = () => ensureWranglerCompat(root, config, void 0, { rootWrangler: true });
3584
3843
  const wranglerCompatPlugin = {
3585
3844
  name: "void:wrangler-compat",
3586
3845
  enforce: "pre",
3587
3846
  config(_, env) {
3588
- syncFrameworkCompat(ensureWranglerCompat(root, config));
3847
+ syncFrameworkCompat(ensureFrameworkCompat());
3589
3848
  if (env.command !== "serve") return;
3590
3849
  if (ensureWranglerNodejsAlsFlag(root)) voidLog("Synced nodejs_als to Cloudflare config");
3591
3850
  },
3592
3851
  buildStart() {
3593
- syncFrameworkCompat(ensureWranglerCompat(root, config));
3852
+ syncFrameworkCompat(ensureFrameworkCompat());
3594
3853
  },
3595
3854
  configureServer() {
3596
- syncFrameworkCompat(ensureWranglerCompat(root, config));
3855
+ syncFrameworkCompat(ensureFrameworkCompat());
3597
3856
  }
3598
3857
  };
3599
3858
  const syncFrameworkBindings = (command) => {
@@ -3808,6 +4067,7 @@ function honoMiddleware(getApp) {
3808
4067
  response.headers.forEach((value, key) => {
3809
4068
  res.setHeader(key, value);
3810
4069
  });
4070
+ res.setHeader("set-cookie", response.headers.getSetCookie());
3811
4071
  if (response.body) {
3812
4072
  const reader = response.body.getReader();
3813
4073
  while (true) {
@@ -3927,54 +4187,67 @@ function nodeTargetPlugin(target) {
3927
4187
  }
3928
4188
  }];
3929
4189
  }
3930
- //#endregion
3931
- //#region src/plugin-prerender.ts
4190
+ // src/plugin-prerender.ts
3932
4191
  /**
3933
4192
  * Vite plugin that prerenders pages at build time when `output: "static"`.
3934
4193
  *
3935
- * Runs in the `closeBundle` hook so prerender logs appear after Vite's
3936
- * asset summary. Gated on the "client" environment so it only runs once.
4194
+ * Cloudflare prerender runs after Build Output and the compatible dist artifacts
4195
+ * are complete. Other targets run once when the client bundle closes.
3937
4196
  */
3938
4197
  function prerenderPlugin(root, config) {
4198
+ const run = async () => {
4199
+ if (config.output !== "static") return;
4200
+ if (process.env.VOID_DEPLOY_BUILD === "1") return;
4201
+ setShowTimestamp(false);
4202
+ const distDir = resolveDistDir(root);
4203
+ const clientDir = join(distDir, "client");
4204
+ let result;
4205
+ if (isNodeTarget(config.target)) result = await prerenderPagesNode({
4206
+ root,
4207
+ ssrDir: join(distDir, "ssr"),
4208
+ clientDir
4209
+ });
4210
+ else {
4211
+ const persistDir = join(root, ".void");
4212
+ const workerDirName = resolveWorkerDirName(distDir);
4213
+ const workerDir = join(distDir, workerDirName);
4214
+ const remoteMode = resolveRemoteMode(config.remote);
4215
+ result = await prerenderPages({
4216
+ root,
4217
+ workerDir,
4218
+ clientDir,
4219
+ persistDir,
4220
+ remoteMode
4221
+ });
4222
+ }
4223
+ if (result.paths.length === 0) {
4224
+ voidLog("No pages to prerender");
4225
+ return;
4226
+ }
4227
+ assertNoPrerenderFailures(result.failed);
4228
+ };
3939
4229
  return {
3940
4230
  name: "void:prerender",
4231
+ enforce: "post",
3941
4232
  apply: "build",
3942
4233
  async closeBundle() {
3943
- if (config.output !== "static") return;
3944
- if (process.env.VOID_DEPLOY_BUILD === "1") return;
3945
- if (this.environment?.name !== "client") return;
3946
- setShowTimestamp(false);
3947
- const distDir = resolveDistDir(root);
3948
- const clientDir = join(distDir, "client");
3949
- let result;
3950
- if (isNodeTarget(config.target)) result = await prerenderPagesNode({
3951
- root,
3952
- ssrDir: join(distDir, "ssr"),
3953
- clientDir
3954
- });
3955
- else {
3956
- const persistDir = join(root, ".void");
3957
- const workerDirName = resolveWorkerDirName(distDir);
3958
- const workerDir = join(distDir, workerDirName);
3959
- const remoteMode = resolveRemoteMode(config.remote);
3960
- result = await prerenderPages({
3961
- root,
3962
- workerDir,
3963
- clientDir,
3964
- persistDir,
3965
- remoteMode
3966
- });
3967
- }
3968
- if (result.paths.length === 0) {
3969
- voidLog("No pages to prerender");
3970
- return;
4234
+ if (isNodeTarget(config.target) && this.environment?.name === "client") await run();
4235
+ },
4236
+ buildApp: {
4237
+ order: "post",
4238
+ async handler() {
4239
+ if (isNodeTarget(config.target)) return;
4240
+ await run();
4241
+ if (config.output === "static" && process.env.VOID_DEPLOY_BUILD !== "1") {
4242
+ const assets = getWorkerAssetsDir(root);
4243
+ mkdirSync(assets, { recursive: true });
4244
+ cpSync(join(resolveDistDir(root), "client"), assets, { recursive: true });
4245
+ }
3971
4246
  }
3972
- assertNoPrerenderFailures(result.failed);
3973
4247
  }
3974
4248
  };
3975
4249
  }
3976
- //#endregion
3977
- //#region src/plugin-restart.ts
4250
+ // src/plugin-restart.ts
3978
4251
  const BINDING_HINT_RESOLVED = "\0virtual:void/binding-hint";
3979
4252
  const RESTARTING_HTML_HEAD = `<!DOCTYPE html>
3980
4253
  <html lang="en">
@@ -4159,8 +4432,7 @@ function restartPlugin() {
4159
4432
  }
4160
4433
  };
4161
4434
  }
4162
- //#endregion
4163
- //#region src/client-asset-manifest.ts
4435
+ // src/client-asset-manifest.ts
4164
4436
  /**
4165
4437
  * Attach cache provenance to the existing manifest without changing its entry inventory.
4166
4438
  * Returns the stamped immutable files, sorted, relative to the client root.
@@ -4183,8 +4455,7 @@ function stampClientAssetCachePolicy(bundle, manifestPath, headerRules = []) {
4183
4455
  asset.source = JSON.stringify(manifest, null, 2);
4184
4456
  return [...stamped].sort();
4185
4457
  }
4186
- //#endregion
4187
- //#region src/plugin-routing.ts
4458
+ // src/plugin-routing.ts
4188
4459
  const VIRTUAL_ROUTES_ID = "virtual:void-routes";
4189
4460
  const VIRTUAL_CLIENT_WORKER_ID = "virtual:void-client-worker";
4190
4461
  const VIRTUAL_CLIENT_BROWSER_ID = "virtual:void-client-browser";
@@ -4357,7 +4628,11 @@ function routingPlugin(root, options) {
4357
4628
  "routes.d.ts",
4358
4629
  "queues.d.ts",
4359
4630
  ...options.target ? ["app.ts", "index.ts"] : ["entry.ts"],
4360
- ...compileOptions.auth ? ["better-auth-db.ts", "better-auth-schema.ts"] : []
4631
+ ...compileOptions.auth ? [
4632
+ "better-auth-db.ts",
4633
+ "better-auth-schema.ts",
4634
+ ...compileOptions.auth.authConfigPath ? ["auth.d.ts"] : []
4635
+ ] : []
4361
4636
  ];
4362
4637
  const parts = [];
4363
4638
  for (const file of files) {
@@ -4372,15 +4647,18 @@ function routingPlugin(root, options) {
4372
4647
  if (authConfigStale && environment) environment.moduleGraph.invalidateAll();
4373
4648
  authConfigStale = false;
4374
4649
  try {
4375
- return await loadVoidAuthConfig(configPath, environment && ((path) => environment.runner.import(path)));
4650
+ return await loadVoidAuthConfig(configPath, environment ? (path) => environment.runner.import(path) : viteAuthConfigImporter(root, resolvedConfig?.mode, resolvedConfig?.resolve));
4376
4651
  } catch (error) {
4377
4652
  authConfigStale = true;
4378
4653
  throw error;
4379
4654
  }
4380
4655
  }
4381
4656
  async function writeAuthDatabaseFiles() {
4382
- if (!compileOptions.auth) return;
4383
- const { generateVoidAuthDatabaseModule, generateVoidAuthDrizzleSchema } = await import("./drizzle-9TubSZvI.mjs");
4657
+ if (!compileOptions.auth) {
4658
+ if (removeAuthTypesIfPresent(outDir)) syncAuthTypesInProjectTsconfig(root);
4659
+ return;
4660
+ }
4661
+ const { generateVoidAuthDatabaseModule, generateVoidAuthDrizzleSchema } = await import("./drizzle-C8MPqt5m.mjs");
4384
4662
  const authRuntime = {
4385
4663
  dialect: compileOptions.auth.dialect,
4386
4664
  providers: compileOptions.auth.providers,
@@ -4397,6 +4675,8 @@ function routingPlugin(root, options) {
4397
4675
  schemaImportPath: authSchemaPath,
4398
4676
  drizzleAdapterPath
4399
4677
  }));
4678
+ syncAuthTypesFile(compileOptions.auth.authConfigPath, outDir);
4679
+ syncAuthTypesInProjectTsconfig(root);
4400
4680
  }
4401
4681
  let resolvedConfig = null;
4402
4682
  let isrRevalidate;
@@ -4508,6 +4788,24 @@ function routingPlugin(root, options) {
4508
4788
  })
4509
4789
  };
4510
4790
  }
4791
+ function finalizeCloudflareAssets(clientDir, assetsDir) {
4792
+ if (!options.assetWorkerBypass || options.target || resolvedConfig?.command !== "build") return;
4793
+ const headersPath = join(clientDir, "_headers");
4794
+ let generatedHeaders = false;
4795
+ let userHeaders = false;
4796
+ if (existsSync(headersPath)) {
4797
+ try {
4798
+ generatedHeaders = isGeneratedAssetHeaders(readFileSync(headersPath, "utf8"));
4799
+ } catch {
4800
+ return;
4801
+ }
4802
+ userHeaders = !generatedHeaders;
4803
+ }
4804
+ const plan = planAssetWorkerBypass(clientDir, assetsDir, userHeaders);
4805
+ if (plan?.headers) writeFileSync(headersPath, plan.headers);
4806
+ else if (generatedHeaders) rmSync(headersPath);
4807
+ if (plan?.wranglerText) writeFileSync(plan.wranglerPath, plan.wranglerText);
4808
+ }
4511
4809
  const sandboxEntry = options.hasSandbox ? {
4512
4810
  bindingName: options.sandboxBindingName,
4513
4811
  className: options.sandboxClassName,
@@ -4523,6 +4821,7 @@ function routingPlugin(root, options) {
4523
4821
  const policy = resolveCurrentAssetRoutingPolicy();
4524
4822
  writeFileIfChanged(join(outDir, "entry.ts"), compileWorkerEntry({
4525
4823
  versionMetadataBinding: options.getVersionMetadataBinding?.(),
4824
+ alwaysUseHttps: options.routing?.alwaysUseHttps === true && resolvedConfig?.command === "build" && !compileOptions.managedDispatch,
4526
4825
  hasQueues: scan.queues.length > 0,
4527
4826
  remote,
4528
4827
  assetsDir: resolvedConfig?.build.assetsDir,
@@ -4556,6 +4855,7 @@ function routingPlugin(root, options) {
4556
4855
  }));
4557
4856
  return {
4558
4857
  name: "void:routing",
4858
+ api: { finalizeCloudflareAssets },
4559
4859
  enforce: "pre",
4560
4860
  configResolved(config) {
4561
4861
  resolvedConfig = config;
@@ -4618,26 +4918,6 @@ function routingPlugin(root, options) {
4618
4918
  if (this.environment.name === "client") clientImmutableFiles = manifest ? stampClientAssetCachePolicy(bundle, typeof manifest === "string" ? manifest : ".vite/manifest.json", compileOptions.headerRules) : [];
4619
4919
  }
4620
4920
  },
4621
- writeBundle() {
4622
- if (!options.assetWorkerBypass || options.target || resolvedConfig?.command !== "build" || this.environment.name !== "client") return;
4623
- const { outDir, assetsDir } = this.environment.config.build;
4624
- const clientDir = resolve(resolvedConfig.root, outDir);
4625
- const headersPath = join(clientDir, "_headers");
4626
- let generatedHeaders = false;
4627
- let userHeaders = false;
4628
- if (existsSync(headersPath)) {
4629
- try {
4630
- generatedHeaders = isGeneratedAssetHeaders(readFileSync(headersPath, "utf8"));
4631
- } catch {
4632
- return;
4633
- }
4634
- userHeaders = !generatedHeaders;
4635
- }
4636
- const plan = planAssetWorkerBypass(clientDir, assetsDir, userHeaders);
4637
- if (plan?.headers) writeFileSync(headersPath, plan.headers);
4638
- else if (generatedHeaders) rmSync(headersPath);
4639
- if (plan?.wranglerText) writeFileSync(plan.wranglerPath, plan.wranglerText);
4640
- },
4641
4921
  buildStart() {
4642
4922
  return regenerateInOrder(async () => {
4643
4923
  generatedRouteInputs = void 0;
@@ -4651,8 +4931,8 @@ function routingPlugin(root, options) {
4651
4931
  if (!options.target) {
4652
4932
  const migrationsDir = paths.migrationsDir;
4653
4933
  if (existsSync(migrationsDir) || compileOptions.auth) {
4654
- const { collectMigrations } = await import("./collect-BWhkgtAn.mjs");
4655
- const { buildMigrationPlanBundle } = await import("./plan-CKX_jWnD.mjs");
4934
+ const { collectMigrations } = await import("./collect-8i0wU63d.mjs");
4935
+ const { buildMigrationPlanBundle } = await import("./plan-CQ-N4gws.mjs");
4656
4936
  const migrations = existsSync(migrationsDir) ? collectMigrations(migrationsDir) : [];
4657
4937
  const dialect = getDatabaseDialect(readConfig(root));
4658
4938
  compileOptions.migrationHandlerPath = resolveFile(dialect === "postgresql" ? "#self/runtime/migration-handler-pg" : dialect === "mysql" ? "#self/runtime/migration-handler-mysql" : "#self/runtime/migration-handler");
@@ -4794,8 +5074,7 @@ function routingPlugin(root, options) {
4794
5074
  }
4795
5075
  };
4796
5076
  }
4797
- //#endregion
4798
- //#region src/cloudflare-durable-patch.ts
5077
+ // src/cloudflare-durable-patch.ts
4799
5078
  function entries(value, label) {
4800
5079
  if (value === void 0) return [];
4801
5080
  if (!Array.isArray(value) || value.some((entry) => !entry || typeof entry !== "object" || Array.isArray(entry))) throw new Error(`Cloudflare ${label} configuration must be an array of objects.`);
@@ -4849,8 +5128,7 @@ function finalizeDurableObjectPatch(resolved, patch, generatedLocalBindings) {
4849
5128
  resolved.migrations = [];
4850
5129
  }
4851
5130
  }
4852
- //#endregion
4853
- //#region src/plugin-binding-utils.ts
5131
+ // src/plugin-binding-utils.ts
4854
5132
  /** Check whether a binding name already exists in a resolved bindings array. */
4855
5133
  function hasBinding(list, name) {
4856
5134
  return Array.isArray(list) && list.some((b) => b.binding === name);
@@ -4879,8 +5157,7 @@ function hasBinding(list, name) {
4879
5157
  function shouldInjectEmailDevInboxVar(routeEnvironment, needsEmail, assetsBinding) {
4880
5158
  return routeEnvironment === "dev" && !!needsEmail && typeof assetsBinding === "string" && !!assetsBinding;
4881
5159
  }
4882
- //#endregion
4883
- //#region src/plugin-worker-bindings.ts
5160
+ // src/plugin-worker-bindings.ts
4884
5161
  /** Durable Object bindings already in the patch, else in the resolved config. */
4885
5162
  function currentDurableObjectBindings(result, resolved) {
4886
5163
  return (result.durable_objects ?? resolved.durable_objects)?.bindings ?? [];
@@ -5106,8 +5383,7 @@ function mergeWorkerBindings(resolved, input) {
5106
5383
  versionMetadataBinding
5107
5384
  };
5108
5385
  }
5109
- //#endregion
5110
- //#region src/index.ts
5386
+ // src/index.ts
5111
5387
  const scheduledPointerCleanups = /* @__PURE__ */ new Set();
5112
5388
  const scheduledPreviewPointerCleanups = /* @__PURE__ */ new Set();
5113
5389
  /** Returns the Vite plugins that build and serve a Void app for its configured target. */
@@ -5475,7 +5751,7 @@ function voidPlugin(options) {
5475
5751
  frameworkBuildWrapperPlugin,
5476
5752
  frameworkTriggersPlugin(root, { devTriggerToken }),
5477
5753
  devTriggersHintPlugin(root, devTriggerToken),
5478
- ...cloudflare({
5754
+ ...cloudflare$1({
5479
5755
  configPath: cloudflareConfigPath,
5480
5756
  ...inspectorPortOption,
5481
5757
  persistState: { path: localD1.persistRoot },
@@ -5543,7 +5819,7 @@ function voidPlugin(options) {
5543
5819
  dir: assetRoutingPublicDir,
5544
5820
  routing: config.routing
5545
5821
  });
5546
- if (!managedCloudflareBuild && (rules.headerRules.length > 0 || rules.redirectRules.length > 0 || (rules.fallbackRules?.length ?? 0) > 0)) {
5822
+ if (!managedCloudflareBuild && (config.routing?.alwaysUseHttps === true || rules.headerRules.length > 0 || rules.redirectRules.length > 0 || (rules.fallbackRules?.length ?? 0) > 0)) {
5547
5823
  policy.assetConfig.run_worker_first = ["/**"];
5548
5824
  if (rules.fallbackRules?.length && policy.assetConfig.not_found_handling === "single-page-application") {
5549
5825
  policy.assetConfig.not_found_handling = "none";
@@ -5568,6 +5844,30 @@ function voidPlugin(options) {
5568
5844
  return requiresRestart;
5569
5845
  }
5570
5846
  applyAssetRoutingPolicy(assetRouting);
5847
+ const routes = routingPlugin(root, {
5848
+ getApplicationAnalysis,
5849
+ isAuthEnabled: () => authEnabled,
5850
+ getVersionMetadataBinding: () => versionMetadataBinding,
5851
+ devTriggerToken,
5852
+ headConfig: config.head,
5853
+ prerenderPaths: config.routing?.prerender,
5854
+ remoteMode,
5855
+ routing: config.routing,
5856
+ bindingNames,
5857
+ get hasSandbox() {
5858
+ return bindings.needsSandbox;
5859
+ },
5860
+ sandboxBindingName: sandboxConfig?.binding,
5861
+ sandboxClassName: sandboxConfig?.className,
5862
+ sandboxInstanceType: sandboxConfig?.instanceType,
5863
+ get live() {
5864
+ return shouldEmitLive() ? liveConfig : void 0;
5865
+ },
5866
+ durableObjects,
5867
+ websocketTombstones,
5868
+ onDevAssetRoutingPolicyChange: updateDevAssetRoutingPolicy,
5869
+ assetWorkerBypass: true
5870
+ });
5571
5871
  return [
5572
5872
  createCloudflareBuiltinsExternalPlugin(),
5573
5873
  createDefaultWorkerEnvironmentPlugin(),
@@ -5586,30 +5886,7 @@ function voidPlugin(options) {
5586
5886
  bindingRuntimePlugin(bindingNames),
5587
5887
  ...bindings.needsSandbox ? [createSandboxSdkResolvePlugin()] : [],
5588
5888
  ...pagesDevCssAssetsPlugin(root, devTriggerToken),
5589
- routingPlugin(root, {
5590
- getApplicationAnalysis,
5591
- isAuthEnabled: () => authEnabled,
5592
- getVersionMetadataBinding: () => versionMetadataBinding,
5593
- devTriggerToken,
5594
- headConfig: config.head,
5595
- prerenderPaths: config.routing?.prerender,
5596
- remoteMode,
5597
- routing: config.routing,
5598
- bindingNames,
5599
- get hasSandbox() {
5600
- return bindings.needsSandbox;
5601
- },
5602
- sandboxBindingName: sandboxConfig?.binding,
5603
- sandboxClassName: sandboxConfig?.className,
5604
- sandboxInstanceType: sandboxConfig?.instanceType,
5605
- get live() {
5606
- return shouldEmitLive() ? liveConfig : void 0;
5607
- },
5608
- durableObjects,
5609
- websocketTombstones,
5610
- onDevAssetRoutingPolicyChange: updateDevAssetRoutingPolicy,
5611
- assetWorkerBypass: true
5612
- }),
5889
+ routes,
5613
5890
  drizzlePlugin(root, true, dialect, {
5614
5891
  d1BindingName: bindingNames?.d1,
5615
5892
  forceVirtualDb: authEnabled || bindingNames?.d1 !== void 0,
@@ -5621,18 +5898,20 @@ function voidPlugin(options) {
5621
5898
  enabled: authEnabled,
5622
5899
  configPath: authConfigPath
5623
5900
  }),
5624
- prerenderPlugin(root, config),
5625
5901
  devTriggersHintPlugin(root, devTriggerToken),
5626
- ...cloudflare({
5902
+ ...cloudflare$1({
5627
5903
  configPath: cloudflareConfigPath,
5628
5904
  ...inspectorPortOption,
5629
5905
  persistState: { path: localD1.persistRoot },
5630
5906
  auxiliaryWorkers: options?.auxiliaryWorkers,
5631
5907
  viteEnvironment: { name: DEFAULT_WORKER_ENVIRONMENT_NAME },
5632
- config: mergeBindings
5908
+ config: mergeBindings,
5909
+ finalizeAssets(clientDir, environment) {
5910
+ (environment?.config.plugins.find((plugin) => plugin.name === routes.name))?.api.finalizeCloudflareAssets(clientDir, environment.config.build.assetsDir);
5911
+ }
5633
5912
  }),
5913
+ prerenderPlugin(root, config),
5634
5914
  implicitDeployGuard
5635
5915
  ];
5636
5916
  }
5637
- //#endregion
5638
5917
  export { VoidAssetRewriteError, basicAuth, defer, defineHandler, defineHead, defineMiddleware, defineQueue, defineRender, defineScheduled, resolveWorkersAiBindingName, shouldBindWorkersAi, shouldInjectEmailDevInboxVar, voidPlugin };