void 1.4.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (455) hide show
  1. package/README.md +1 -1
  2. package/dist/{account-cmd-HP8bixYo.mjs → account-cmd-DRhmCWcm.mjs} +7 -8
  3. package/dist/{action-key-XZ9HkWAO.mjs → action-key-XtKKbbsi.mjs} +1 -2
  4. package/dist/{agents-CuNtT0D_.mjs → agents-DRo8gzni.mjs} +2 -3
  5. package/dist/{application-analysis-DDOQwiXk.mjs → application-analysis-HRFsZOv3.mjs} +18 -24
  6. package/dist/{application-routing-4719u_kf.mjs → application-routing-P4TggvWp.mjs} +2 -3
  7. package/dist/{ast-CsZ_q_gc.mjs → ast-Cv0JwXqb.mjs} +1 -2
  8. package/dist/{ast-bindings-C3yaPs1y.mjs → ast-bindings-BkivMJIo.mjs} +6 -11
  9. package/dist/{atomic-write-Dq6R0BPN.mjs → atomic-write-DA6eD1Kp.mjs} +1 -2
  10. package/dist/{auth-g2TQbDLD.d.mts → auth-CH4PLAX1.d.mts} +0 -2
  11. package/dist/{auth-Cbqi1iVX.mjs → auth-CL-p_rqV.mjs} +1 -1
  12. package/dist/{auth-B6iOCjKI.mjs → auth-Dy8svcqQ.mjs} +6 -7
  13. package/dist/{auth-3sGB0zJ1.mjs → auth-YVjBX5NY.mjs} +1 -2
  14. package/dist/{auth-client-Bawdj38n.d.mts → auth-client-6-Ft9i9T.d.mts} +0 -2
  15. package/dist/{auth-client-BWBT8HLp.mjs → auth-client-DwCdwKbw.mjs} +1 -2
  16. package/dist/{auth-client-react-CMLwT2xI.mjs → auth-client-react-CJdeErvM.mjs} +1 -2
  17. package/dist/{auth-client-react-7GFffu8R.d.mts → auth-client-react-DvQLe5Zb.d.mts} +0 -2
  18. package/dist/{auth-client-solid-UoreJWZG.mjs → auth-client-solid-BRvgvp6h.mjs} +1 -2
  19. package/dist/{auth-client-solid-DyTFL4cq.d.mts → auth-client-solid-P9pEtKGp.d.mts} +0 -2
  20. package/dist/{auth-client-svelte-zetW0KIH.d.mts → auth-client-svelte-B5j8irT6.d.mts} +0 -2
  21. package/dist/{auth-client-svelte-Cv_WvrRk.mjs → auth-client-svelte-BSqUCEed.mjs} +1 -2
  22. package/dist/{auth-client-vue-bChShbQP.d.mts → auth-client-vue-BEiAfavk.d.mts} +0 -2
  23. package/dist/{auth-client-vue-CFk7Xbv3.mjs → auth-client-vue-CPkbRtOO.mjs} +1 -2
  24. package/dist/{auth-link-CedYpDCy.mjs → auth-link-CVXP1G6G.mjs} +7 -8
  25. package/dist/{auth-migrations-BO27GDNr.mjs → auth-migrations-DDeifS3v.mjs} +1 -2
  26. package/dist/{auth-router-vafo7x8w.mjs → auth-router-D1pGdbvB.mjs} +6 -7
  27. package/dist/{base64-DVrOndmI.mjs → base64-ikl9yBy3.mjs} +1 -2
  28. package/dist/{better-auth-shared-BHB8kiTE.d.mts → better-auth-shared-BJyG2mH0.d.mts} +2 -6
  29. package/dist/{better-auth-shared-7FM3Uk2N.mjs → better-auth-shared-C958aM7W.mjs} +31 -7
  30. package/dist/{build-cmd-9vUAQ1_V.mjs → build-cmd-DmjbuT6d.mjs} +7 -8
  31. package/dist/{cache-jvwLNb0h.mjs → cache-2khBO1MR.mjs} +7 -8
  32. package/dist/{cancel-deploy-Dw0UmWKO.mjs → cancel-deploy-_itbbvY3.mjs} +6 -7
  33. package/dist/{cf-access-CWP4avfP.mjs → cf-access-BmBT2h8_.mjs} +3 -4
  34. package/dist/{cf-access-BM9G0lhO.mjs → cf-access-pejlJmuy.mjs} +1 -2
  35. package/dist/{cf-build-output-XpNR9zoh.mjs → cf-build-output-B1C8U83u.mjs} +41 -314
  36. package/dist/cf-build-output-CmDOcA7K.mjs +1 -0
  37. package/dist/{cf-command-values-ByHk0xg4.mjs → cf-command-values-Ccl-zRhl.mjs} +10 -7
  38. package/dist/cf-config-migrate-Dy8MrKgF.mjs +326 -0
  39. package/dist/{cf-worker-settings-Dg27RzyT.mjs → cf-worker-settings-CARs4Wy9.mjs} +3 -5
  40. package/dist/cli/cli.mjs +66 -76
  41. package/dist/cli/cloudflare-operation-process.mjs +14 -18
  42. package/dist/cli/env-schema-probe.d.mts +1 -5
  43. package/dist/cli/env-schema-probe.mjs +4 -5
  44. package/dist/client-CEtr5UOR.mjs +1 -0
  45. package/dist/{client-B3LnB_bE.mjs → client-CoxPEhJq.mjs} +15 -13
  46. package/dist/{cloudflare-auth-DyD_kVFr.mjs → cloudflare-auth-CEu-1Ps_.mjs} +2 -3
  47. package/dist/{cloudflare-cmd-D-b_u3T4.mjs → cloudflare-cmd-fZ6AMSWk.mjs} +7 -8
  48. package/dist/{cloudflare-config-CH1AylZT.mjs → cloudflare-config-eQunqX6A.mjs} +22 -17
  49. package/dist/{cloudflare-connect-zTJh8UnN.mjs → cloudflare-connect-9OZe4XVQ.mjs} +5 -6
  50. package/dist/{cloudflare-operations-Bc-7fN44.mjs → cloudflare-operations-CrskD4_O.mjs} +8 -9
  51. package/dist/{cloudflare-operations-BtulCNOg.mjs → cloudflare-operations-oLvAd9Nd.mjs} +1 -1
  52. package/dist/{cloudflare-process-8jEYIeim.mjs → cloudflare-process-DjJ638A-.mjs} +7 -9
  53. package/dist/{cloudflare-user-output-Q-k0QoNQ.mjs → cloudflare-user-output-zEwuGrEJ.mjs} +1 -2
  54. package/dist/collect-8i0wU63d.mjs +1 -0
  55. package/dist/{collect-Dew86qce.mjs → collect-C6Blu9yw.mjs} +2 -3
  56. package/dist/{config-tqMM6DwY.mjs → config-BBlVXZCU.mjs} +5 -6
  57. package/dist/{config-OFOAimzt.mjs → config-BITKQ3O6.mjs} +5 -5
  58. package/dist/{config-BV2ASlpn.mjs → config-BgysUhnm.mjs} +1 -1
  59. package/dist/{config-CAdZVTLN.d.mts → config-CPxJmt4M.d.mts} +4 -6
  60. package/dist/{config-D-6q7EBH.mjs → config-WlvEcL82.mjs} +3 -4
  61. package/dist/config-entry.d.mts +1 -3
  62. package/dist/config-entry.mjs +1 -2
  63. package/dist/{connect-BOM6zvFX.mjs → connect-CKvmkl2R.mjs} +10 -11
  64. package/dist/{create-project-C2K0DN2O.mjs → create-project-BiMmR5wA.mjs} +1 -1
  65. package/dist/{create-project-Bxd02EHN.mjs → create-project-Bq0M8MtO.mjs} +9 -11
  66. package/dist/{database-provider-Cx525bwX.mjs → database-provider-DkZo4VwN.mjs} +1 -2
  67. package/dist/database-provider.d.mts +1 -3
  68. package/dist/database-provider.mjs +1 -1
  69. package/dist/{db-Cdvr3zwG.mjs → db-cq5RW4Vy.mjs} +52 -54
  70. package/dist/{db-types-0eCiqYb1.mjs → db-types-C_8amnB0.mjs} +3 -4
  71. package/dist/{delete-lETE6Tpt.mjs → delete-CY4L8fi2.mjs} +7 -8
  72. package/dist/deploy-B029oHlE.mjs +2 -0
  73. package/dist/{deploy-CdM-LAxX.mjs → deploy-D_gEojD2.mjs} +144 -136
  74. package/dist/{deploy-managed-static-DjeBFG2c.mjs → deploy-managed-static-BHVbB_-A.mjs} +33 -40
  75. package/dist/{deploy-transport-DIq_gFTP.mjs → deploy-transport-DEyOUfac.mjs} +6 -7
  76. package/dist/deploy.d.mts +1 -3
  77. package/dist/deploy.mjs +11 -11
  78. package/dist/{dev-inbox-D0jxye_D.mjs → dev-inbox-CUUS6iUg.mjs} +3 -4
  79. package/dist/discover-D4mQthao.mjs +1 -0
  80. package/dist/{discover-LaV0tbIu.mjs → discover-Dhkzxgdt.mjs} +3 -4
  81. package/dist/{dispatch-CLa2LThw.mjs → dispatch-BNLB5_Gm.mjs} +12 -15
  82. package/dist/{dist-Cegxq8gs.mjs → dist-B6eN80gc.mjs} +199 -118
  83. package/dist/{dist-D15hFhP0.mjs → dist-BWNkVq50.mjs} +8 -15
  84. package/dist/{dist-Cor9XGoz.mjs → dist-D23AAMxT.mjs} +9 -16
  85. package/dist/{dist-ipQi0Q8y.mjs → dist-DMYe8CZJ.mjs} +1 -2
  86. package/dist/{dist-B1PLt4_8.mjs → dist-eV_Ep60B.mjs} +1 -1
  87. package/dist/{domain-DyhNtdYf.mjs → domain-BlH90Ods.mjs} +8 -9
  88. package/dist/{dotenv-CNazY3-w.mjs → dotenv-CEI8hapP.mjs} +1 -2
  89. package/dist/{drizzle-9TubSZvI.mjs → drizzle-C8MPqt5m.mjs} +1 -1
  90. package/dist/{drizzle-BQfyvQKX.mjs → drizzle-lFdzSEa9.mjs} +2 -3
  91. package/dist/{email-B9ayYQEG.mjs → email-BHY72ixO.mjs} +3 -4
  92. package/dist/{email-DM2wDcBN.mjs → email-Bkq8ZL1p.mjs} +14 -15
  93. package/dist/{email-cloudflare-PMbAev9Q.mjs → email-cloudflare-MvJIxrwx.mjs} +18 -123
  94. package/dist/{email-protocol-D9nTvhCp.mjs → email-protocol-DTs_TjCS.mjs} +1 -2
  95. package/dist/{entry-BEM8ZuGP.mjs → entry-CBZsCy3O.mjs} +5 -6
  96. package/dist/{env-78hbN-oI.mjs → env-AvuCSeCH.mjs} +10 -11
  97. package/dist/{env-BaMz0j7H.mjs → env-CuzZZyjB.mjs} +3 -4
  98. package/dist/{env-0jrMQJI_.mjs → env-DtKg5G26.mjs} +2 -3
  99. package/dist/{env-helpers--wFmQ_5Q.mjs → env-helpers-Dj_SIwPu.mjs} +1 -2
  100. package/dist/{env-helpers-CyKtOBpj.d.mts → env-helpers-U56xuFgL.d.mts} +1 -3
  101. package/dist/{env-public-6lqiSD2b.d.mts → env-public-CeNeO_AT.d.mts} +2 -4
  102. package/dist/{env-raw-D74P4ebM.mjs → env-raw-e8qgqAzQ.mjs} +1 -2
  103. package/dist/{env-types-BicfKBhV.mjs → env-types-DqzVBKnS.mjs} +4 -5
  104. package/dist/{env-validation-BUfFZ6bt.mjs → env-validation-C8Cmvas0.mjs} +1 -1
  105. package/dist/{env-validation-B3VobvXm.mjs → env-validation-GV1oD4EV.mjs} +9 -10
  106. package/dist/{error-pages-CLIJ7aYq.mjs → error-pages-COVBnzK7.mjs} +6 -12
  107. package/dist/{fetch-CUX0tB78.d.mts → fetch-B-gLGYVl.d.mts} +0 -4
  108. package/dist/{fetch-CtESUYWd.mjs → fetch-C8yhLoF3.mjs} +3 -4
  109. package/dist/{fetch-error-Bw0n-IY-.mjs → fetch-error-DmlRM6e4.mjs} +2 -4
  110. package/dist/{fetch-stream-BspOeTAI.mjs → fetch-stream-DafNtVJC.mjs} +4 -5
  111. package/dist/{fetch-stream-DfkAzZf-.d.mts → fetch-stream-DuwxWmBM.d.mts} +1 -3
  112. package/dist/{gen-CFmsUsW1.mjs → gen-BD-dfjxY.mjs} +12 -13
  113. package/dist/gen-CIHXh9I8.mjs +1 -0
  114. package/dist/{generate-DkEb9rL-.mjs → generate-BOp1g1H_.mjs} +1 -1
  115. package/dist/{generate-B1m4Cm4n.mjs → generate-CWb8aOsm.mjs} +4 -5
  116. package/dist/{generated-wrangler-config-DeWj5F9Y.mjs → generated-wrangler-config-CoDaaFsA.mjs} +1 -2
  117. package/dist/{git-metadata-D-gurjzG.mjs → git-metadata-Cukp5kV5.mjs} +1 -2
  118. package/dist/{github-cmd-De-_IWbM.mjs → github-cmd-CA-lBdkn.mjs} +8 -9
  119. package/dist/{handler-BHktmuTL.d.mts → handler-BR6Tvjkp.d.mts} +18 -26
  120. package/dist/{handler-BZ1t7-Rv.mjs → handler-CKeTtYID.mjs} +6 -17
  121. package/dist/{head-D2VF4ApL.mjs → head-5XPcnG-j.mjs} +1 -2
  122. package/dist/{head-C8K_iGe6.d.mts → head-MeF_5M_3.d.mts} +0 -2
  123. package/dist/headers-CuTEdP9C.mjs +445 -0
  124. package/dist/{help-CKbrhZha.mjs → help-1OCFDsRr.mjs} +28 -12
  125. package/dist/help-Ba8Dq5-r.mjs +1 -0
  126. package/dist/{inbound-Da7XsjH3.d.mts → inbound-BHt4dIlL.d.mts} +16 -9
  127. package/dist/{inbound-VrOLqwZY.mjs → inbound-CdO-qY0w.mjs} +6 -81
  128. package/dist/index.d.mts +23 -13
  129. package/dist/index.mjs +495 -223
  130. package/dist/{info-Yg0-V5Rs.mjs → info-CJxua_db.mjs} +6 -7
  131. package/dist/{init-CDiJQycf.mjs → init-B-4CluYx.mjs} +43 -59
  132. package/dist/{isr-config-fZaJJ8t7.mjs → isr-config-Czzb4mIq.mjs} +5 -55
  133. package/dist/{limits-D0vD1M9A.mjs → limits-CrHLm5Tk.mjs} +1 -2
  134. package/dist/{limits-CFsDKQvU.d.mts → limits-_xIf5z_P.d.mts} +0 -2
  135. package/dist/{link-Dllip08S.mjs → link-DAXOT-G_.mjs} +8 -9
  136. package/dist/{list-BYRP6am0.mjs → list-BYSOo9fm.mjs} +8 -9
  137. package/dist/{live-BllfDuzA.d.mts → live-0xrcVpyq.d.mts} +2 -4
  138. package/dist/{live-BcHoTDFe.mjs → live-DF4HUl2m.mjs} +5 -7
  139. package/dist/{load-user-env-DD5qveNU.mjs → load-user-env-CSwdofj0.mjs} +1 -2
  140. package/dist/{local-d1-CAwAs9GH.mjs → local-d1-BLgsNUj9.mjs} +4 -5
  141. package/dist/{log-BMwmN5Ae.mjs → log-D9hwSySP.mjs} +3 -4
  142. package/dist/login-BpbYeu-n.mjs +1 -0
  143. package/dist/{login-PcFy5mlC.mjs → login-CJopTWX4.mjs} +6 -7
  144. package/dist/{logs-DmJTBhed.mjs → logs-DE0weBsR.mjs} +19 -18
  145. package/dist/{migrate-B8S2xTcb.mjs → migrate-ChHHZBTi.mjs} +20 -16
  146. package/dist/migrate-HdA6Kh2p.mjs +1 -0
  147. package/dist/{migration-handler-CwlEQUoo.d.mts → migration-handler-D8mDx3Ew.d.mts} +0 -4
  148. package/dist/{migration-handler-Cg0Y4EPu.mjs → migration-handler-DCehTlWs.mjs} +1 -2
  149. package/dist/{mime-BAyHPskU.mjs → mime-CtP6-qAF.mjs} +145 -18
  150. package/dist/{mysql-migration-sql-BIS5vbNk.mjs → mysql-migration-sql-CI9VTwjt.mjs} +3 -5
  151. package/dist/{neon-DTZr7Bu7.mjs → neon-CJzQSycr.mjs} +2 -3
  152. package/dist/nitro.d.mts +0 -2
  153. package/dist/nitro.mjs +5 -6
  154. package/dist/{node-CDOPrGSl.mjs → node-CZ6lGNLn.mjs} +8 -9
  155. package/dist/{operator-args-BsJIYXaT.mjs → operator-args-D79WQP70.mjs} +2 -3
  156. package/dist/{operator-auth-Cr2zCc-J.mjs → operator-auth-CfDcmzpo.mjs} +2 -3
  157. package/dist/{operator-client-C-ROjk1I.mjs → operator-client-BIY4-N_6.mjs} +3 -4
  158. package/dist/{operator-cmd-DmkmS2wL.mjs → operator-cmd-BUqsdk2K.mjs} +32 -15
  159. package/dist/operator-cmd-wBYyp8iQ.mjs +1 -0
  160. package/dist/{output-BpgYODYx.mjs → output-BCdLioKP.mjs} +4 -5
  161. package/dist/output-E6gecbbV.mjs +1 -0
  162. package/dist/{package-json-BjYqR-So.mjs → package-json-DvS6IFRv.mjs} +2 -3
  163. package/dist/pages/client.d.mts +147 -31
  164. package/dist/pages/client.mjs +199 -43
  165. package/dist/pages/head.d.mts +1 -1
  166. package/dist/pages/head.mjs +1 -1
  167. package/dist/pages/index.d.mts +25 -18
  168. package/dist/pages/index.mjs +24 -12
  169. package/dist/pages/islands-plugin.d.mts +75 -13
  170. package/dist/pages/islands-plugin.mjs +92 -7
  171. package/dist/pages/prefetch.d.mts +2 -2
  172. package/dist/pages/prefetch.mjs +1 -1
  173. package/dist/pages/protocol.d.mts +2 -2
  174. package/dist/pages/protocol.mjs +2 -2
  175. package/dist/pages/serialize.d.mts +1 -1
  176. package/dist/pages/serialize.mjs +1 -1
  177. package/dist/{pg-J2HbZIkX.mjs → pg-DoyPxa_X.mjs} +1 -2
  178. package/dist/{picocolors-BsDfhxIw.mjs → picocolors-D1NxSLw-.mjs} +2 -3
  179. package/dist/{plan-BhLO2p4w.mjs → plan-BOD70XGS.mjs} +1 -2
  180. package/dist/plan-CQ-N4gws.mjs +1 -0
  181. package/dist/platform-args-C7XUw9mw.mjs +1 -0
  182. package/dist/{platform-args-BMD2gjc_.mjs → platform-args-Cx1M-7bq.mjs} +22 -11
  183. package/dist/{platform-auth-config-CImnfohz.mjs → platform-auth-config-K4m_LE8b.mjs} +10 -11
  184. package/dist/{platform-auth-protection-BogLhtHi.mjs → platform-auth-protection-KF5Vo-1I.mjs} +10 -11
  185. package/dist/{platform-auth-recovery-B-mEaWEi.mjs → platform-auth-recovery-BOdFrl7R.mjs} +9 -11
  186. package/dist/{platform-cmd-CV8NxIIn.mjs → platform-cmd-DpCHawGF.mjs} +1 -1
  187. package/dist/{platform-cmd-DZK2ixMl.mjs → platform-cmd-Ds3EAV5t.mjs} +13 -13
  188. package/dist/{platform-discovery-CHhNs8Nn.mjs → platform-discovery-B0eZjZ3B.mjs} +2 -3
  189. package/dist/{platform-domain-CRvelPGE.mjs → platform-domain-rWJshybd.mjs} +7 -8
  190. package/dist/{platform-lifecycle-DwXq7kZt.mjs → platform-lifecycle-BH34I0rh.mjs} +1 -1
  191. package/dist/{platform-lifecycle-CPYY7E9B.mjs → platform-lifecycle-D9RdGub1.mjs} +110 -110
  192. package/dist/{platform-management-BOnGbMSM.mjs → platform-management-BRefdHGD.mjs} +27 -11
  193. package/dist/{platform-management-lXdgGgAM.mjs → platform-management-BfLW0Zlo.mjs} +1 -1
  194. package/dist/{platform-plans-config-CeydDSj0.mjs → platform-plans-config-Dx1agneU.mjs} +5 -6
  195. package/dist/{platform-recovery-noaALXnE.mjs → platform-recovery-DZuZGJtt.mjs} +5 -6
  196. package/dist/{platform-registry-B9mWX9LO.mjs → platform-registry-DZ_2Xuqd.mjs} +4 -6
  197. package/dist/platform-runtime-logs-CdJGnk3f.mjs +68 -0
  198. package/dist/{platform-setup-Ca53gtt0.mjs → platform-setup-Vw1AaUN8.mjs} +19 -7
  199. package/dist/{plugin-inference-CeiB6BG5.mjs → plugin-inference-CdLbxZL_.mjs} +16 -24
  200. package/dist/{prefetch-Bsc_Pb6c.mjs → prefetch-Dx2jIbtg.mjs} +20 -3
  201. package/dist/{prefetch-Ce6la4EI.d.mts → prefetch-NdNeubbH.d.mts} +7 -3
  202. package/dist/{prepare-D604Yiyr.mjs → prepare-BJW-f1f1.mjs} +13 -14
  203. package/dist/{prepare-BuOS18AM.mjs → prepare-BMGeKL16.mjs} +4 -5
  204. package/dist/prepare-BdxJJCMv.mjs +1 -0
  205. package/dist/{prerender-render-CaShbHJ3.mjs → prerender-render-RlAj6hh8.mjs} +2 -3
  206. package/dist/prerender-render.d.mts +1 -3
  207. package/dist/prerender-render.mjs +1 -1
  208. package/dist/{project-rqDnVsJN.mjs → project-CLwxcEdq.mjs} +3 -4
  209. package/dist/{project-zdB3fs9G.mjs → project-DVsTAWFh.mjs} +1 -1
  210. package/dist/{project-cmd-DBYqAIbe.mjs → project-cmd-B_bUyZ3J.mjs} +21 -23
  211. package/dist/{project-paths-DGu_QZ_Q.mjs → project-paths-CdGv9Tmi.mjs} +3 -5
  212. package/dist/project-slug-BUy0lmyR.mjs +1 -0
  213. package/dist/{project-slug-23TpquG4.mjs → project-slug-CO6ci9XG.mjs} +0 -1
  214. package/dist/{project-team-BjCLgTRC.mjs → project-team-MjT5K4rQ.mjs} +7 -8
  215. package/dist/{project-token-BB6PwaA9.mjs → project-token-BKHGwY3k.mjs} +7 -8
  216. package/dist/{project-tsconfig-CVvk6Z_e.mjs → project-tsconfig-Cf2NFjlM.mjs} +4 -6
  217. package/dist/{project-zero-trust-CWDh1P_t.mjs → project-zero-trust-Bzdd05-h.mjs} +7 -8
  218. package/dist/{protocol-DimNxVRr.mjs → protocol-COyySMki.mjs} +135 -113
  219. package/dist/{protocol-D5XDySYu.d.mts → protocol-CkwjASep.d.mts} +4 -6
  220. package/dist/{providers-BNKRacMr.d.mts → providers-D5P8j_8D.d.mts} +0 -2
  221. package/dist/{providers-BUHwJlmM.mjs → providers-ZARwX2cL.mjs} +1 -2
  222. package/dist/{provision-DztLJ97X.mjs → provision-BbCzpbXs.mjs} +6 -7
  223. package/dist/{provision-DfxLCg-d.mjs → provision-DQF6Kw-6.mjs} +1 -1
  224. package/dist/{queues-BWKt1Xo4.d.mts → queues-DdM42xXW.d.mts} +0 -2
  225. package/dist/{r2-conditions-B8xUgJRc.mjs → r2-conditions-BqkQNt2n.mjs} +1 -2
  226. package/dist/{requests-D_pbzDyz.mjs → requests-daJmVpjk.mjs} +6 -7
  227. package/dist/resolve-project-CgfjtOwz.mjs +1 -0
  228. package/dist/{resolve-project-Xoi6eTWY.mjs → resolve-project-D0YNnJfm.mjs} +4 -5
  229. package/dist/{resource-name-C7LVpcRm.mjs → resource-name-DlJ9QXzg.mjs} +1 -2
  230. package/dist/{response-Tn7rU0MV.mjs → response-HmNjB30w.mjs} +1 -2
  231. package/dist/{rollback-CjfIYsJx.mjs → rollback-BgL0wY1J.mjs} +7 -8
  232. package/dist/{rolldown-runtime-3h0WiCiA.mjs → rolldown-runtime-uD8oG6U2.mjs} +1 -2
  233. package/dist/{route-types-DvEGmPif.mjs → route-types-CZc1YXjF.mjs} +80 -9
  234. package/dist/route-url-CRDF-I0I.mjs +57 -0
  235. package/dist/route-url-C_YIH_zO.d.mts +37 -0
  236. package/dist/routes-stub.d.mts +8 -3
  237. package/dist/routes-stub.mjs +1 -1
  238. package/dist/{routing-assets-DdSFxoLp.mjs → routing-assets-DJIVOrCh.mjs} +1 -2
  239. package/dist/{runner-3uGC-oLF.mjs → runner-5MCSimKx.mjs} +5 -6
  240. package/dist/{runner-WCdfeI0q.mjs → runner-QMeOpScZ.mjs} +1 -1
  241. package/dist/{runner-mysql-BcHnLUuM.mjs → runner-mysql-0zVmB1JW.mjs} +1 -1
  242. package/dist/{runner-mysql-BWmbk5IE.mjs → runner-mysql-Bdmsp_x4.mjs} +3 -4
  243. package/dist/{runner-pg-Cgp-cr_p.mjs → runner-pg-2pjltt0t.mjs} +1 -1
  244. package/dist/{runner-pg-Cr3qrqi4.mjs → runner-pg-mYc75KfH.mjs} +2 -3
  245. package/dist/runtime/ai.d.mts +0 -4
  246. package/dist/runtime/ai.mjs +6 -8
  247. package/dist/runtime/auth-client-react.d.mts +1 -1
  248. package/dist/runtime/auth-client-react.mjs +1 -1
  249. package/dist/runtime/auth-client-solid.d.mts +1 -1
  250. package/dist/runtime/auth-client-solid.mjs +1 -1
  251. package/dist/runtime/auth-client-svelte.d.mts +1 -1
  252. package/dist/runtime/auth-client-svelte.mjs +1 -1
  253. package/dist/runtime/auth-client-vue.d.mts +1 -1
  254. package/dist/runtime/auth-client-vue.mjs +1 -1
  255. package/dist/runtime/auth-client.d.mts +1 -1
  256. package/dist/runtime/auth-client.mjs +1 -1
  257. package/dist/runtime/auth.d.mts +1 -1
  258. package/dist/runtime/auth.mjs +1 -1
  259. package/dist/runtime/better-auth-mysql.d.mts +2 -4
  260. package/dist/runtime/better-auth-mysql.mjs +3 -4
  261. package/dist/runtime/better-auth-pg.d.mts +2 -4
  262. package/dist/runtime/better-auth-pg.mjs +4 -5
  263. package/dist/runtime/better-auth.d.mts +2 -4
  264. package/dist/runtime/better-auth.mjs +3 -4
  265. package/dist/runtime/client-react.d.mts +4 -4
  266. package/dist/runtime/client-react.mjs +4 -4
  267. package/dist/runtime/client-solid.d.mts +4 -4
  268. package/dist/runtime/client-solid.mjs +4 -4
  269. package/dist/runtime/client-svelte.d.mts +4 -4
  270. package/dist/runtime/client-svelte.mjs +4 -4
  271. package/dist/runtime/client-vue.d.mts +4 -4
  272. package/dist/runtime/client-vue.mjs +4 -4
  273. package/dist/runtime/client.d.mts +4 -4
  274. package/dist/runtime/client.mjs +4 -4
  275. package/dist/runtime/db.d.mts +0 -2
  276. package/dist/runtime/db.mjs +2 -3
  277. package/dist/runtime/durable.d.mts +0 -2
  278. package/dist/runtime/durable.mjs +3 -4
  279. package/dist/runtime/email/testing.d.mts +1 -5
  280. package/dist/runtime/email/testing.mjs +5 -6
  281. package/dist/runtime/email-protocol.d.mts +0 -2
  282. package/dist/runtime/email-protocol.mjs +1 -1
  283. package/dist/runtime/email.d.mts +1 -5
  284. package/dist/runtime/email.mjs +6 -7
  285. package/dist/runtime/env-public-client.d.mts +1 -3
  286. package/dist/runtime/env-public-client.mjs +2 -3
  287. package/dist/runtime/env-public.d.mts +2 -2
  288. package/dist/runtime/env-public.mjs +5 -7
  289. package/dist/runtime/env.d.mts +0 -4
  290. package/dist/runtime/env.mjs +1 -1
  291. package/dist/runtime/fetch-server.d.mts +1 -3
  292. package/dist/runtime/fetch-server.mjs +3 -4
  293. package/dist/runtime/fetch-stream.d.mts +2 -2
  294. package/dist/runtime/fetch-stream.mjs +2 -2
  295. package/dist/runtime/fetch.d.mts +1 -1
  296. package/dist/runtime/fetch.mjs +2 -2
  297. package/dist/runtime/handler.d.mts +1 -1
  298. package/dist/runtime/handler.mjs +2 -2
  299. package/dist/runtime/isr.d.mts +1 -3
  300. package/dist/runtime/isr.mjs +2 -3
  301. package/dist/runtime/kv.d.mts +1 -3
  302. package/dist/runtime/kv.mjs +2 -3
  303. package/dist/runtime/limits.d.mts +1 -1
  304. package/dist/runtime/limits.mjs +1 -1
  305. package/dist/runtime/live-client.d.mts +1 -3
  306. package/dist/runtime/live-client.mjs +1 -2
  307. package/dist/runtime/live-server.d.mts +0 -2
  308. package/dist/runtime/live-server.mjs +3 -4
  309. package/dist/runtime/live.d.mts +1 -1
  310. package/dist/runtime/live.mjs +1 -1
  311. package/dist/runtime/log.d.mts +3 -3
  312. package/dist/runtime/log.mjs +26 -18
  313. package/dist/runtime/migration-handler-mysql.d.mts +2 -4
  314. package/dist/runtime/migration-handler-mysql.mjs +2 -3
  315. package/dist/runtime/migration-handler-pg.d.mts +2 -4
  316. package/dist/runtime/migration-handler-pg.mjs +2 -3
  317. package/dist/runtime/migration-handler.d.mts +1 -1
  318. package/dist/runtime/migration-handler.mjs +1 -1
  319. package/dist/runtime/queues.d.mts +1 -1
  320. package/dist/runtime/queues.mjs +2 -3
  321. package/dist/runtime/remote/binding-handler.d.mts +1 -3
  322. package/dist/runtime/remote/binding-handler.mjs +3 -4
  323. package/dist/runtime/remote/index.d.mts +1 -3
  324. package/dist/runtime/remote/index.mjs +8 -13
  325. package/dist/runtime/response.d.mts +1 -3
  326. package/dist/runtime/response.mjs +1 -1
  327. package/dist/runtime/route-url.d.mts +2 -2
  328. package/dist/runtime/route-url.mjs +1 -1
  329. package/dist/runtime/routing.d.mts +8 -11
  330. package/dist/runtime/routing.mjs +52 -32
  331. package/dist/runtime/sandbox-container.d.mts +1 -1
  332. package/dist/runtime/sandbox-container.mjs +1 -1
  333. package/dist/runtime/sandbox.d.mts +2 -2
  334. package/dist/runtime/sandbox.mjs +5 -6
  335. package/dist/runtime/seed.d.mts +0 -2
  336. package/dist/runtime/seed.mjs +1 -2
  337. package/dist/runtime/sse-client.d.mts +1 -3
  338. package/dist/runtime/sse-client.mjs +1 -2
  339. package/dist/runtime/sse.d.mts +1 -3
  340. package/dist/runtime/sse.mjs +1 -1
  341. package/dist/runtime/storage.d.mts +1 -3
  342. package/dist/runtime/storage.mjs +2 -3
  343. package/dist/runtime/validator.d.mts +1 -1
  344. package/dist/runtime/validator.mjs +1 -1
  345. package/dist/runtime/ws-server.d.mts +3 -5
  346. package/dist/runtime/ws-server.mjs +3 -4
  347. package/dist/runtime/ws.d.mts +1 -1
  348. package/dist/runtime/ws.mjs +3 -4
  349. package/dist/{sandbox-q3waMc2T.d.mts → sandbox-DE1WsxuB.d.mts} +2 -4
  350. package/dist/{sandbox-container-a9LRUtii.mjs → sandbox-container-BuxhwCgt.mjs} +1 -2
  351. package/dist/{sandbox-container-ChQRum-j.d.mts → sandbox-container-CZFZdMso.d.mts} +0 -2
  352. package/dist/{scan-N9WzdcAl.mjs → scan-X2rDDRNa.mjs} +49 -35
  353. package/dist/{secret-3X0PxmuX.mjs → secret-CPq-B_vp.mjs} +17 -15
  354. package/dist/{serialize-YHvlcG3Q.mjs → serialize-DUuYuaY3.mjs} +2 -4
  355. package/dist/{serialize-DtR8Vwa_.d.mts → serialize-I4EmS-Wf.d.mts} +0 -2
  356. package/dist/{skills-CrUO3PJ0.mjs → skills-D393E4lB.mjs} +4 -5
  357. package/dist/{sqlite-validation-BzKMWnO4.mjs → sqlite-validation-CLJXXN93.mjs} +1 -2
  358. package/dist/{sse-CMvCgjNk.mjs → sse-CxR30yMF.mjs} +1 -2
  359. package/dist/{standard-schema-Fo_vCAZh.d.mts → standard-schema-CuDawHOC.d.mts} +0 -2
  360. package/dist/{static-asset-marker-Btf-6oCD.mjs → static-asset-marker-DsQKz6lt.mjs} +9 -3
  361. package/dist/{subcommand-prompt-D9OhhbGG.mjs → subcommand-prompt-CxJXporl.mjs} +3 -4
  362. package/dist/sveltekit.d.mts +0 -2
  363. package/dist/sveltekit.mjs +2 -3
  364. package/dist/{terminal-log-text-D9ACPOuG.mjs → terminal-log-text-DNsWJREL.mjs} +1 -2
  365. package/dist/{types-w72dljaA.d.mts → types-agfx0alu.d.mts} +0 -4
  366. package/dist/validate-DY1U9rET.mjs +1 -0
  367. package/dist/{validate-CnZPMq4q.mjs → validate-Ddzl-IwT.mjs} +4 -5
  368. package/dist/validation-error-uAAjlsiW.mjs +82 -0
  369. package/dist/{validator-BTOu0fB0.mjs → validator-CTfmzZYb.mjs} +2 -5
  370. package/dist/{version-metadata-D2vfMQzv.mjs → version-metadata-C8hLzQkv.mjs} +4 -6
  371. package/dist/{worker-conditions-AWFRcFxR.mjs → worker-conditions-CBZ0RYsZ.mjs} +1 -2
  372. package/dist/{wrangler-I-scB_1t.mjs → wrangler-DESSbN8L.mjs} +6 -8
  373. package/dist/wrangler-DUB3MGHV.mjs +1 -0
  374. package/dist/{wrapper-BBl1rC32.mjs → wrapper-C9SUxoj7.mjs} +17 -14
  375. package/dist/{ws-B3ClMVDh.d.mts → ws-Dmjg5NH2.d.mts} +3 -5
  376. package/dist/{yarn-pnp-DLbEFMT0.mjs → yarn-pnp-DgWbE7z5.mjs} +2 -3
  377. package/docs/guide/database.md +4 -4
  378. package/docs/guide/deployment.md +1 -1
  379. package/docs/guide/edge/headers.md +4 -6
  380. package/docs/guide/edge/redirects.md +4 -4
  381. package/docs/guide/edge/rewrites.md +1 -1
  382. package/docs/guide/edge/static-assets.md +0 -10
  383. package/docs/guide/email/domains.md +3 -1
  384. package/docs/guide/email/receiving.md +4 -4
  385. package/docs/guide/email/sending.md +43 -13
  386. package/docs/guide/pages-routing/actions-and-forms.md +26 -9
  387. package/docs/guide/pages-routing/islands.md +5 -5
  388. package/docs/guide/pages-routing/layouts.md +16 -2
  389. package/docs/guide/pages-routing/loaders.md +5 -5
  390. package/docs/guide/pages-routing/markdown.md +7 -7
  391. package/docs/guide/pages-routing/overview.md +137 -27
  392. package/docs/guide/platform/administration/connected-apps.md +4 -2
  393. package/docs/guide/platform/administration/email.md +6 -8
  394. package/docs/guide/platform/installation/credentials.md +12 -10
  395. package/docs/guide/platform/installation/maintenance.md +18 -21
  396. package/docs/guide/platform/installation/prerequisites.md +1 -1
  397. package/docs/guide/platform/installation/setup.md +23 -2
  398. package/docs/guide/platform/installation/uninstall.md +1 -1
  399. package/docs/guide/queues.md +4 -8
  400. package/docs/guide/self-hosted-platform.md +3 -3
  401. package/docs/guide/server-routing.md +7 -7
  402. package/docs/guide/ssg.md +3 -3
  403. package/docs/guide/type-safety.md +84 -1
  404. package/docs/guide/typed-fetch.md +1 -1
  405. package/docs/guide/websockets.md +1 -1
  406. package/docs/integrations/cloudflare.md +2 -2
  407. package/docs/integrations/frameworks/analog.md +1 -1
  408. package/docs/integrations/frameworks/astro.md +17 -12
  409. package/docs/integrations/frameworks/nuxt.md +1 -1
  410. package/docs/integrations/frameworks/overview.md +2 -2
  411. package/docs/integrations/frameworks/sveltekit.md +1 -1
  412. package/docs/integrations/frameworks/tanstack-start.md +1 -1
  413. package/docs/integrations/hono.md +5 -5
  414. package/docs/reference/api/auth.md +1 -1
  415. package/docs/reference/api/deploy.md +6 -6
  416. package/docs/reference/api/pages.md +109 -50
  417. package/docs/reference/api/plugin.md +4 -4
  418. package/docs/reference/api/resources.md +4 -1
  419. package/docs/reference/api/rewrites.md +24 -3
  420. package/docs/reference/api/types.md +45 -0
  421. package/docs/reference/api.md +2 -2
  422. package/docs/reference/cli/database.md +15 -9
  423. package/docs/reference/cli/email.md +4 -2
  424. package/docs/reference/cli/platform-installation.md +6 -3
  425. package/docs/reference/cli/project.md +2 -2
  426. package/docs/reference/cli/secrets.md +3 -1
  427. package/docs/reference/cli/setup.md +4 -4
  428. package/docs/reference/cli.md +1 -1
  429. package/docs/reference/config.md +12 -2
  430. package/package.json +36 -32
  431. package/sandbox.Dockerfile +1 -1
  432. package/schema.json +4 -0
  433. package/skills/void/SKILL.md +5 -0
  434. package/dist/cf-build-output-bd8Uwv1P.mjs +0 -1
  435. package/dist/client-BZb9j66F.mjs +0 -1
  436. package/dist/collect-BWhkgtAn.mjs +0 -1
  437. package/dist/deploy-CX94CmKa.mjs +0 -2
  438. package/dist/discover-D4TPKo57.mjs +0 -1
  439. package/dist/gen-BhWBT4iu.mjs +0 -1
  440. package/dist/headers--vaK_chu.mjs +0 -226
  441. package/dist/help-qOZr3wng.mjs +0 -1
  442. package/dist/login-BAPmYnb7.mjs +0 -1
  443. package/dist/migrate-BIYTPQE6.mjs +0 -1
  444. package/dist/operator-cmd-CjazwOyb.mjs +0 -1
  445. package/dist/output-BW9uK099.mjs +0 -1
  446. package/dist/plan-CKX_jWnD.mjs +0 -1
  447. package/dist/platform-args-BC8_hsDj.mjs +0 -1
  448. package/dist/prepare-DU-tOpS5.mjs +0 -1
  449. package/dist/project-slug-6cyz8E7k.mjs +0 -1
  450. package/dist/resolve-project-DD1vu8s9.mjs +0 -1
  451. package/dist/route-url-BgPja1GS.d.mts +0 -5
  452. package/dist/route-url-BjGv_KKY.mjs +0 -28
  453. package/dist/validate-D7Wn8PUX.mjs +0 -1
  454. package/dist/validation-error-Dg9Recn1.mjs +0 -49
  455. package/dist/wrangler-UnwdISay.mjs +0 -1
@@ -0,0 +1,445 @@
1
+ import { a as join } from "./dist-DMYe8CZJ.mjs";
2
+ import { a as convertRewritesConfig, d as isProtocolRelative, f as parseHostPrefixedSource, i as convertRedirectsConfig, n as convertFallbacksConfig, o as countSplats, r as convertHeadersConfig, t as VALID_REDIRECT_STATUSES } from "./config-BITKQ3O6.mjs";
3
+ import { i as voidWarn } from "./log-D9hwSySP.mjs";
4
+ import { existsSync, readFileSync } from "node:fs";
5
+ // src/asset-routing.ts
6
+ function isApiRoutePattern(pattern) {
7
+ return pattern === "/api" || pattern.startsWith("/api/");
8
+ }
9
+ function hasDocumentRoutes(routes) {
10
+ return routes.some((route) => !isApiRoutePattern(route.pattern));
11
+ }
12
+ function hasApiRoutes(routes) {
13
+ return routes.some((route) => isApiRoutePattern(route.pattern));
14
+ }
15
+ /**
16
+ * Returns true when browser document navigations must reach the worker before
17
+ * a static asset fallback can serve HTML.
18
+ */
19
+ function workerOwnsHtmlRouting(inputs) {
20
+ return inputs.isSsr || inputs.hasPages || inputs.hasDocumentRoutes || inputs.hasMiddleware || inputs.hasWebSockets === true || inputs.liveEnabled === true;
21
+ }
22
+ /**
23
+ * Returns true when native edge rules must run in the worker before Cloudflare
24
+ * Static Assets can answer: native builds compile HTTPS redirects and header,
25
+ * redirect, rewrite and fallback rules into the worker.
26
+ */
27
+ function edgeRulesNeedWorker(rules) {
28
+ return rules.alwaysUseHttps === true || (rules.headerRules?.length ?? 0) > 0 || (rules.redirectRules?.length ?? 0) > 0 || (rules.fallbackRules?.length ?? 0) > 0;
29
+ }
30
+ function resolveAssetConfig(inputs) {
31
+ return resolveAssetRoutingPolicy(inputs).assetConfig;
32
+ }
33
+ const VOID_INTERNAL_WORKER_FIRST = ["/__void", "/__void/*"];
34
+ function resolveAssetRoutingPolicy(inputs) {
35
+ const workerFirst = workerOwnsHtmlRouting(inputs);
36
+ const apiWorkerFirst = !workerFirst && (inputs.hasApiRoutes === true || inputs.authEnabled === true);
37
+ const assetConfig = workerFirst ? {
38
+ not_found_handling: "none",
39
+ run_worker_first: ["/**"]
40
+ } : apiWorkerFirst ? {
41
+ not_found_handling: "single-page-application",
42
+ run_worker_first: [
43
+ "/api",
44
+ "/api/*",
45
+ ...VOID_INTERNAL_WORKER_FIRST
46
+ ]
47
+ } : {
48
+ not_found_handling: "single-page-application",
49
+ run_worker_first: [...VOID_INTERNAL_WORKER_FIRST]
50
+ };
51
+ if (inputs.notFound !== void 0) assetConfig.not_found_handling = inputs.notFound;
52
+ return {
53
+ assetConfig,
54
+ apiWorkerFirst,
55
+ workerFirst,
56
+ workerSpaFallback: workerFirst && !inputs.isSsr && !inputs.hasPages && (inputs.notFound === void 0 || inputs.notFound === "single-page-application")
57
+ };
58
+ }
59
+ // src/asset-worker-bypass.ts
60
+ /**
61
+ * Build-time decision for letting Cloudflare serve fingerprinted build files
62
+ * without starting the Worker. Native Cloudflare builds of apps with no global
63
+ * middleware and no edge rules gain nothing from running the Worker for those
64
+ * files: the Worker would only copy the asset response. Skipping it makes
65
+ * those requests free static requests and keeps auth and its session read off
66
+ * them. Each file gets its own negative `run_worker_first` rule, because a
67
+ * request matching a negative rule never reaches the Worker, even when the
68
+ * file is missing. Misses and other paths in the folder keep the Worker's
69
+ * not-found, SPA and page handling.
70
+ * `routing.alwaysUseHttps` alone does not block this: hashed files are only
71
+ * linked from pages the Worker has already moved to HTTPS.
72
+ *
73
+ * The asset layer does not know which files are fingerprinted, so a generated
74
+ * `_headers` file gives every bypassed chunk the immutable policy the Worker
75
+ * would have set.
76
+ *
77
+ * An `output: "static"` Pages build goes further when nothing site-wide must
78
+ * run first (auth, live, `routing.alwaysUseHttps`): every file answers first,
79
+ * and only paths with server code reach the Worker first. A page without a
80
+ * server module prerenders the HTML the Worker would render, so its file can
81
+ * answer. Hashed files keep their
82
+ * immutable policy from the generated `_headers`, or stay on the Worker when
83
+ * it cannot list them.
84
+ */
85
+ const GENERATED_ASSET_HEADERS_MARKER = "# Generated by Void: immutable caching for fingerprinted build files. Do not edit.";
86
+ /** Cloudflare accepts at most 100 `run_worker_first` rules. */
87
+ const MAX_RUN_WORKER_FIRST_RULES = 100;
88
+ /** Cloudflare limits each `run_worker_first` rule to 100 characters. */
89
+ const MAX_RUN_WORKER_FIRST_RULE_LENGTH = 100;
90
+ /** Cloudflare accepts at most 100 `_headers` rules. */
91
+ const MAX_HEADERS_RULES = 100;
92
+ const AUTH_PATTERNS = ["/api/auth/*"];
93
+ /** Trim surrounding slashes; null when nothing is left. */
94
+ function normalizeAssetsDir(dir) {
95
+ let start = 0;
96
+ let end = dir.length;
97
+ while (start < end && dir[start] === "/") start++;
98
+ while (end > start && dir[end - 1] === "/") end--;
99
+ const trimmed = dir.slice(start, end);
100
+ return trimmed === "" || trimmed === "." ? null : trimmed;
101
+ }
102
+ /**
103
+ * Whether a route pattern can match a path below `/<dir>/`. Parameters,
104
+ * wildcards and patterns with more segments than the directory count as a
105
+ * match, so the answer errs towards keeping the Worker in front.
106
+ */
107
+ function patternCanReachUnder(pattern, dir) {
108
+ const patternSegments = (pattern.startsWith("/") ? pattern.slice(1) : pattern).split("/");
109
+ const dirSegments = (dir.startsWith("/") ? dir.slice(1) : dir).split("/");
110
+ for (let i = 0; i < dirSegments.length; i++) {
111
+ const segment = patternSegments[i];
112
+ if (segment === void 0) return false;
113
+ if (segment.includes("*") || segment.includes("{")) return true;
114
+ if (segment.startsWith(":")) continue;
115
+ if (segment.toLowerCase() !== dirSegments[i].toLowerCase()) return false;
116
+ }
117
+ return patternSegments.length > dirSegments.length;
118
+ }
119
+ /**
120
+ * Characters that are plain text in both a `_headers` path and a
121
+ * `run_worker_first` rule. `*`, `:` and `!` have meaning there, and anything
122
+ * that needs URL encoding would not match the request path as written.
123
+ */
124
+ function isPlainPath(path) {
125
+ for (const char of path) if (!(char >= "a" && char <= "z" || char >= "A" && char <= "Z" || char >= "0" && char <= "9" || char === "-" || char === "_" || char === "." || char === "~" || char === "/")) return false;
126
+ return path.split("/").every((segment) => segment !== "" && segment !== "." && segment !== "..");
127
+ }
128
+ /**
129
+ * Whether `run_worker_first` is the rule an earlier bypass wrote. A watch
130
+ * rebuild of only the client still finds it, because the Worker build that
131
+ * would write `['/**']` again did not run.
132
+ */
133
+ function isAssetBypassRule(runWorkerFirst, assetsDir) {
134
+ const dir = normalizeAssetsDir(assetsDir);
135
+ return dir !== null && Array.isArray(runWorkerFirst) && runWorkerFirst.length > 1 && runWorkerFirst[0] === "/**" && runWorkerFirst.slice(1).every((rule) => typeof rule === "string" && rule.startsWith("!/" + dir + "/"));
136
+ }
137
+ /** The bypass this build can use, or null when any rule keeps the Worker in front. */
138
+ function resolveAssetWorkerBypass(facts) {
139
+ const { runWorkerFirst } = facts;
140
+ if (!(Array.isArray(runWorkerFirst) && runWorkerFirst.length === 1 && runWorkerFirst[0] === "/**") || facts.notFoundHandling !== "none" || facts.base !== "/" || facts.hasMiddleware || facts.headerRuleCount > 0 || facts.redirectRuleCount > 0 || facts.fallbackRuleCount > 0 || facts.publicEdgeFiles) return null;
141
+ const assetsDir = normalizeAssetsDir(facts.assetsDir);
142
+ const files = assetsDir === null ? [] : [...new Set(facts.immutableFiles)].filter((file) => file.startsWith(assetsDir + "/")).sort();
143
+ return resolveStaticPageBypass(facts, assetsDir, files) ?? resolveHashedFileBypass(facts, assetsDir, files);
144
+ }
145
+ /** One negative rule per hashed file, so only those files skip the Worker. */
146
+ function resolveHashedFileBypass(facts, assetsDir, files) {
147
+ if (!assetsDir || !isPlainPath(assetsDir)) return null;
148
+ if ([
149
+ ...facts.patterns,
150
+ ...VOID_INTERNAL_WORKER_FIRST,
151
+ ...facts.authEnabled ? AUTH_PATTERNS : []
152
+ ].some((pattern) => patternCanReachUnder(pattern, assetsDir))) return null;
153
+ const rules = ["/**", ...files.map((file) => "!/" + file)];
154
+ if (files.length === 0 || files.some((file) => !isPlainPath(file)) || !fitsRunWorkerFirstLimits(rules)) return null;
155
+ return {
156
+ runWorkerFirst: rules,
157
+ headers: renderGeneratedAssetHeaders(files)
158
+ };
159
+ }
160
+ /**
161
+ * Void's own paths, then every server pattern widened to the static prefix
162
+ * before its first parameter: matching too much only keeps the Worker in
163
+ * front. A request that matches no file still reaches the Worker, since these
164
+ * builds use `not_found_handling: 'none'`. Hashed files get the generated
165
+ * `_headers`, or stay on the Worker when it cannot list them all. Null when
166
+ * site-wide behavior must run first or a pattern covers every path.
167
+ */
168
+ function resolveStaticPageBypass(facts, assetsDir, files) {
169
+ if (!facts.serverPatterns || facts.authEnabled || facts.liveEnabled || facts.alwaysUseHttps) return null;
170
+ const rules = /* @__PURE__ */ new Set();
171
+ for (const pattern of facts.serverPatterns) {
172
+ const patternRules = workerPathRules(pattern);
173
+ if (patternRules === null) return null;
174
+ for (const rule of patternRules) rules.add(rule);
175
+ }
176
+ let headers = null;
177
+ if (files.length > MAX_HEADERS_RULES || !files.every(isPlainPath)) {
178
+ if (!assetsDir || !isPlainPath(assetsDir)) return null;
179
+ rules.add("/" + assetsDir + "/*");
180
+ } else if (files.length > 0) headers = renderGeneratedAssetHeaders(files);
181
+ const runWorkerFirst = [...VOID_INTERNAL_WORKER_FIRST, ...[...rules].sort()];
182
+ return fitsRunWorkerFirstLimits(runWorkerFirst) ? {
183
+ runWorkerFirst,
184
+ headers
185
+ } : null;
186
+ }
187
+ /**
188
+ * The rules covering every path `pattern` matches; null when that is every
189
+ * path. A trailing `*` also matches the path before it: `/api/*` matches `/api`.
190
+ */
191
+ function workerPathRules(pattern) {
192
+ if (pattern === "/") return ["/"];
193
+ const segments = (pattern.startsWith("/") ? pattern.slice(1) : pattern).split("/");
194
+ const dynamic = segments.findIndex((segment) => segment.startsWith(":") || segment.includes("*") || segment.includes("{"));
195
+ if (dynamic === 0) return null;
196
+ const prefix = (dynamic === -1 ? segments : segments.slice(0, dynamic)).join("/");
197
+ if (!isPlainPath(prefix)) return null;
198
+ if (dynamic === -1) return ["/" + prefix];
199
+ const rule = "/" + prefix + "/*";
200
+ return dynamic === segments.length - 1 && segments[dynamic] === "*" ? ["/" + prefix, rule] : [rule];
201
+ }
202
+ function fitsRunWorkerFirstLimits(rules) {
203
+ return rules.length <= MAX_RUN_WORKER_FIRST_RULES && rules.every((rule) => rule.length <= MAX_RUN_WORKER_FIRST_RULE_LENGTH);
204
+ }
205
+ /** One immutable rule per file after the marker line. */
206
+ function renderGeneratedAssetHeaders(files) {
207
+ const lines = [GENERATED_ASSET_HEADERS_MARKER];
208
+ for (const file of files) lines.push("/" + file, " Cache-Control: public, max-age=31536000, immutable");
209
+ return lines.join("\n") + "\n";
210
+ }
211
+ /** Whether a `_headers` file is the one Void generated. */
212
+ function isGeneratedAssetHeaders(text) {
213
+ const newline = text.indexOf("\n");
214
+ let firstLine = newline === -1 ? text : text.slice(0, newline);
215
+ if (firstLine.endsWith("\r")) firstLine = firstLine.slice(0, -1);
216
+ return firstLine === GENERATED_ASSET_HEADERS_MARKER;
217
+ }
218
+ // src/cli/headers.ts
219
+ /**
220
+ * Parse a Cloudflare/Netlify `_headers` file into HeaderRule[].
221
+ *
222
+ * Format:
223
+ * - Non-indented lines = path pattern (starts a new block)
224
+ * - Indented lines = `Header-Name: value` (split on first `:`)
225
+ * - Lines starting with `#` are comments
226
+ * - `! Header-Name` unset directives are skipped (last-match-wins handles this)
227
+ *
228
+ * Output is sorted by pattern length ascending (shortest first) so that
229
+ * more-specific patterns come last — matching dispatch's last-match-wins semantics.
230
+ *
231
+ * Returns `undefined` if the file doesn't exist or yields no valid rules.
232
+ */
233
+ function parseHeadersFile(dir) {
234
+ const filePath = join(dir, "_headers");
235
+ if (!existsSync(filePath)) return;
236
+ const content = readFileSync(filePath, "utf-8");
237
+ const rules = [];
238
+ let current = null;
239
+ for (const line of content.split("\n")) {
240
+ const trimmed = line.trimEnd();
241
+ if (trimmed === "" || trimmed.startsWith("#")) continue;
242
+ if (line[0] === " " || line[0] === " ") {
243
+ if (!current) continue;
244
+ const stripped = trimmed.trimStart();
245
+ if (stripped.startsWith("!")) continue;
246
+ const colonIdx = stripped.indexOf(":");
247
+ if (colonIdx === -1) continue;
248
+ const name = stripped.slice(0, colonIdx).trim();
249
+ const value = stripped.slice(colonIdx + 1).trim();
250
+ if (name) current.headers.push([name, value]);
251
+ } else {
252
+ if (current && current.headers.length > 0) rules.push(current);
253
+ current = {
254
+ pattern: trimmed,
255
+ headers: []
256
+ };
257
+ }
258
+ }
259
+ if (current && current.headers.length > 0) rules.push(current);
260
+ if (rules.length === 0) return;
261
+ rules.sort((a, b) => a.pattern.length - b.pattern.length);
262
+ return rules;
263
+ }
264
+ /** The `_headers` text in `dir` when Void generated it, otherwise undefined. */
265
+ function readGeneratedAssetHeadersFile(dir) {
266
+ const filePath = join(dir, "_headers");
267
+ if (!existsSync(filePath)) return;
268
+ const content = readFileSync(filePath, "utf-8");
269
+ return isGeneratedAssetHeaders(content) ? content : void 0;
270
+ }
271
+ /**
272
+ * Parse a `_redirects` file: `source destination [status]` per line (status
273
+ * defaults to 302, `#` starts a comment). Keeps 3xx redirects and 200 rewrites.
274
+ *
275
+ * A `!` suffix on 200 sets `force`, so the rewrite applies even when a static
276
+ * asset matches. On a 3xx it is a no-op, stripped and counted in
277
+ * `redundantForceOn3xx`.
278
+ *
279
+ * Returns `undefined` when the file doesn't exist or yields no valid rules.
280
+ */
281
+ function parseRedirectsFile(dir) {
282
+ const filePath = join(dir, "_redirects");
283
+ if (!existsSync(filePath)) return;
284
+ const content = readFileSync(filePath, "utf-8");
285
+ const rules = [];
286
+ let redundantForceOn3xx = 0;
287
+ const rawLines = content.split("\n");
288
+ for (let i = 0; i < rawLines.length; i++) {
289
+ const lineNumber = i + 1;
290
+ const trimmed = rawLines[i].trim();
291
+ if (!trimmed || trimmed.startsWith("#")) continue;
292
+ const parts = trimmed.split(/\s+/);
293
+ if (parts.length < 2) continue;
294
+ const origin = `_redirects:${lineNumber}`;
295
+ const [rawSource, destination, statusStr] = parts;
296
+ const parsedSource = parseHostPrefixedSource(rawSource);
297
+ if ("error" in parsedSource) {
298
+ voidWarn(`Skipping _redirects entry "${rawSource} ${destination}${statusStr ? ` ${statusStr}` : ""}" (line ${lineNumber}): source ${parsedSource.error}.`);
299
+ continue;
300
+ }
301
+ const { host, path: source } = parsedSource;
302
+ if (countSplats(source) > 1) {
303
+ voidWarn(`Skipping _redirects entry "${rawSource} ${destination}${statusStr ? ` ${statusStr}` : ""}" (line ${lineNumber}): source must contain at most one "*" wildcard (captured as :splat).`);
304
+ continue;
305
+ }
306
+ let status;
307
+ let force = false;
308
+ if (statusStr) {
309
+ if (statusStr.endsWith("!")) {
310
+ const numericPart = statusStr.slice(0, -1);
311
+ status = parseInt(numericPart, 10);
312
+ if (status === 200) force = true;
313
+ else if (status >= 300 && status < 400) redundantForceOn3xx++;
314
+ } else status = parseInt(statusStr, 10);
315
+ } else status = 302;
316
+ if (status === 200) {
317
+ if (!destination.startsWith("/")) {
318
+ voidWarn(`Skipping _redirects rewrite "${rawSource} ${destination} ${force ? "200!" : "200"}": destination must start with "/" (only internal paths are supported).`);
319
+ continue;
320
+ }
321
+ if (isProtocolRelative(destination)) {
322
+ voidWarn(`Skipping _redirects rewrite "${rawSource} ${destination} ${force ? "200!" : "200"}": destination must not start with "//" (protocol-relative URLs parse as cross-origin; only internal paths are supported).`);
323
+ continue;
324
+ }
325
+ if (destination.includes("?")) {
326
+ voidWarn(`Skipping _redirects rewrite "${rawSource} ${destination} ${force ? "200!" : "200"}": destination must not contain "?" (query strings are not supported in rewrite destinations; the incoming request's query is preserved automatically).`);
327
+ continue;
328
+ }
329
+ rules.push({
330
+ source,
331
+ destination,
332
+ status,
333
+ force,
334
+ origin,
335
+ ...host && { host }
336
+ });
337
+ } else if (status >= 300 && status < 400) {
338
+ if (!VALID_REDIRECT_STATUSES.has(status)) {
339
+ voidWarn(`Skipping _redirects entry "${rawSource} ${destination} ${statusStr}" (line ${lineNumber}): redirect status must be 301, 302, 303, 307, or 308.`);
340
+ continue;
341
+ }
342
+ rules.push({
343
+ source,
344
+ destination,
345
+ status,
346
+ origin,
347
+ ...host && { host }
348
+ });
349
+ }
350
+ }
351
+ if (rules.length === 0 && redundantForceOn3xx === 0) return;
352
+ return {
353
+ rules,
354
+ redundantForceOn3xx
355
+ };
356
+ }
357
+ /**
358
+ * Split `_redirects` rules into rules that always apply and fallbacks: unforced
359
+ * 200 rewrites, which apply only when no static asset matches.
360
+ */
361
+ function splitRedirectRulesByForce(rules) {
362
+ const always = [];
363
+ const fallbacks = [];
364
+ if (!rules) return {
365
+ always,
366
+ fallbacks
367
+ };
368
+ for (const rule of rules) if (rule.status === 200 && rule.force !== true) fallbacks.push(rule);
369
+ else always.push(rule);
370
+ return {
371
+ always,
372
+ fallbacks
373
+ };
374
+ }
375
+ /**
376
+ * Merge `_redirects` and `_headers` in `dir` with `routing` from void.config.ts.
377
+ * Deploy and dev share it so both build the same rule tables; callers lint them.
378
+ */
379
+ function mergeRoutingRules(opts) {
380
+ const { dir, routing } = opts;
381
+ const fileDir = dir !== null && existsSync(dir) ? dir : null;
382
+ const fileHeaders = fileDir !== null ? parseHeadersFile(fileDir) : void 0;
383
+ const fileParsed = fileDir !== null ? parseRedirectsFile(fileDir) : void 0;
384
+ const { always: fileAlways, fallbacks: fileFallbacks } = splitRedirectRulesByForce(fileParsed?.rules);
385
+ const cfgHeaders = convertHeadersConfig(routing?.headers);
386
+ const cfgRedirects = convertRedirectsConfig(routing?.redirects);
387
+ const cfgRewrites = convertRewritesConfig(routing?.rewrites);
388
+ const cfgFallbacks = convertFallbacksConfig(routing?.fallbacks);
389
+ const headerRules = [...fileHeaders ?? [], ...cfgHeaders ?? []];
390
+ const redirectRules = [
391
+ ...cfgRedirects ?? [],
392
+ ...cfgRewrites ?? [],
393
+ ...fileAlways
394
+ ];
395
+ const mergedFallbacks = [...cfgFallbacks ?? [], ...fileFallbacks];
396
+ return {
397
+ headerRules,
398
+ redirectRules,
399
+ fallbackRules: mergedFallbacks.length > 0 ? mergedFallbacks : void 0,
400
+ redundantForceOn3xx: fileParsed?.redundantForceOn3xx ?? 0
401
+ };
402
+ }
403
+ /**
404
+ * Lint each phase on its own: only duplicates within a phase shadow each other,
405
+ * so a redirect and a fallback with the same source are fine.
406
+ */
407
+ function lintRoutingPhases(rules) {
408
+ lintDuplicateSources(rules.redirectRules, "redirects/rewrites (pre-asset)");
409
+ lintDuplicateSources(rules.fallbackRules, "fallbacks (post-asset)");
410
+ lintDestinationSplats(rules.redirectRules, "redirects/rewrites (pre-asset)");
411
+ lintDestinationSplats(rules.fallbackRules, "fallbacks (post-asset)");
412
+ }
413
+ /**
414
+ * Warn about a literal `*` in a destination. Destinations substitute only
415
+ * `:name` params such as `:splat`, so a `*` passes through unchanged.
416
+ */
417
+ function lintDestinationSplats(rules, phaseName) {
418
+ if (!rules || rules.length === 0) return;
419
+ const affected = rules.filter((r) => r.destination.includes("*"));
420
+ if (affected.length === 0) return;
421
+ const lines = affected.map((r) => ` ${r.source} → ${r.destination} (${r.origin ?? "<unknown>"})`);
422
+ voidWarn(`destinations in ${phaseName} contain a literal "*" — splat tokens are not substituted in destinations; use ":splat" (or other named params) or rewrite the destination:\n${lines.join("\n")}`);
423
+ }
424
+ /**
425
+ * Warn when one phase repeats an exact `source`: first match wins, so the later
426
+ * rule never applies. Phases run separately, so callers lint each one.
427
+ */
428
+ function lintDuplicateSources(rules, phaseName) {
429
+ if (!rules || rules.length < 2) return;
430
+ const bySource = /* @__PURE__ */ new Map();
431
+ for (const rule of rules) {
432
+ const existing = bySource.get(rule.source);
433
+ if (existing) existing.push(rule);
434
+ else bySource.set(rule.source, [rule]);
435
+ }
436
+ const lines = [];
437
+ for (const [source, occurrences] of bySource) {
438
+ if (occurrences.length < 2) continue;
439
+ const origins = occurrences.map((r) => r.origin ?? "<unknown>").join(", ");
440
+ lines.push(` ${source} — ${origins}`);
441
+ }
442
+ if (lines.length === 0) return;
443
+ voidWarn(`duplicate rule sources detected in ${phaseName} (first match wins — the earlier entry takes effect):\n${lines.join("\n")}`);
444
+ }
445
+ export { isAssetBypassRule as a, VOID_INTERNAL_WORKER_FIRST as c, hasDocumentRoutes as d, resolveAssetConfig as f, readGeneratedAssetHeadersFile as i, edgeRulesNeedWorker as l, mergeRoutingRules as n, isGeneratedAssetHeaders as o, resolveAssetRoutingPolicy as p, parseRedirectsFile as r, resolveAssetWorkerBypass as s, lintRoutingPhases as t, hasApiRoutes as u };
@@ -1,8 +1,8 @@
1
- import { H as outro } from "./dist-Cor9XGoz.mjs";
2
- import { n as getOwnVersion } from "./agents-CuNtT0D_.mjs";
3
- import { d as helpLine, f as import_picocolors, g as sectionTitle, l as formatUrl, p as note, t as categoryTitle } from "./output-BpgYODYx.mjs";
4
- import { n as operatorGroups, t as operatorCommands } from "./operator-args-BsJIYXaT.mjs";
5
- //#region src/cli/ascii.ts
1
+ import { H as outro } from "./dist-D23AAMxT.mjs";
2
+ import { n as getOwnVersion } from "./agents-DRo8gzni.mjs";
3
+ import { d as helpLine, f as import_picocolors, g as sectionTitle, l as formatUrl, p as note, t as categoryTitle } from "./output-BCdLioKP.mjs";
4
+ import { n as operatorGroups, t as operatorCommands } from "./operator-args-D79WQP70.mjs";
5
+ // src/cli/ascii.ts
6
6
  const asciiArts = [
7
7
  `
8
8
  ▄ ▄ ▄▄▄ ▄ ▐▌
@@ -23,8 +23,7 @@ dP .dP .d8888b. dP .d888b88
23
23
  | |/ / /_/ / / /_/ /
24
24
  |___/\\____/_/\\__,_/`
25
25
  ];
26
- //#endregion
27
- //#region src/cli/help.ts
26
+ // src/cli/help.ts
28
27
  function operatorHelpTree() {
29
28
  return Object.fromEntries(operatorGroups.map((group) => {
30
29
  const commands = operatorCommands.filter((entry) => entry.group === group);
@@ -166,11 +165,11 @@ const HELP_TREE = {
166
165
  ]
167
166
  },
168
167
  migrate: {
169
- summary: "Move legacy Void project settings into void.config.ts.",
168
+ summary: "Update project configuration.",
170
169
  usage: ["void migrate"],
171
170
  examples: [{
172
171
  command: "void migrate",
173
- description: "Convert void.json to void.config.ts"
172
+ description: "Update project configuration"
174
173
  }]
175
174
  },
176
175
  deploy: {
@@ -689,6 +688,10 @@ const HELP_TREE = {
689
688
  command: "--runtime <path>",
690
689
  description: "Deploy an integrity-checked runtime directory instead of the package"
691
690
  },
691
+ {
692
+ command: "--runtime-logs <full|minimal>",
693
+ description: "minimal keeps request URLs, console and exception messages out of runtime logs"
694
+ },
692
695
  {
693
696
  command: "--yes",
694
697
  description: "Acknowledge changes without an interactive prompt"
@@ -1045,7 +1048,17 @@ const HELP_TREE = {
1045
1048
  list: withProjectOption("List project secrets.", "void secret list [options]"),
1046
1049
  put: withProjectOption("Set a project secret.", "void secret put <name> [options]"),
1047
1050
  delete: withProjectOption("Delete a project secret.", "void secret delete <name> [options]"),
1048
- sync: withProjectOption("Sync secrets from a dotenv file.", "void secret sync <file> [options]")
1051
+ sync: {
1052
+ summary: "Sync secrets from a dotenv file.",
1053
+ usage: ["void secret sync <file> [options]"],
1054
+ options: [{
1055
+ command: "--project <name>",
1056
+ description: "Project name override"
1057
+ }, {
1058
+ command: "--yes",
1059
+ description: "Skip confirmation (required in CI and non-interactive shells)"
1060
+ }]
1061
+ }
1049
1062
  }
1050
1063
  },
1051
1064
  domain: {
@@ -1771,7 +1784,7 @@ function withProjectOption(summary, usage) {
1771
1784
  function lifecycleHelp(command, summary) {
1772
1785
  return {
1773
1786
  summary,
1774
- usage: [`void platform ${command} [id] [--plan]${command === "disable" ? "" : " [--runtime <path>]"}${command === "upgrade" || command === "repair" ? " [--dashboard-url <origin>] [--custom-domains]" : ""}${command === "repair" ? " [--auth-config <path>]" : ""} [--yes]`],
1787
+ usage: [`void platform ${command} [id] [--plan]${command === "disable" ? "" : " [--runtime <path>]"}${command === "upgrade" || command === "repair" ? " [--dashboard-url <origin>] [--custom-domains]" : ""}${command === "upgrade" ? " [--runtime-logs <full|minimal>]" : ""}${command === "repair" ? " [--auth-config <path>]" : ""} [--yes]`],
1775
1788
  options: [
1776
1789
  {
1777
1790
  command: "--plan",
@@ -1788,6 +1801,10 @@ function lifecycleHelp(command, summary) {
1788
1801
  command: "--custom-domains",
1789
1802
  description: "Turn on project custom domains; omission keeps the saved setting"
1790
1803
  }] : [],
1804
+ ...command === "upgrade" ? [{
1805
+ command: "--runtime-logs <full|minimal>",
1806
+ description: "minimal keeps request URLs, console and exception messages out of runtime logs; omission keeps the saved setting"
1807
+ }] : [],
1791
1808
  ...command === "repair" ? [{
1792
1809
  command: "--auth-config <path>",
1793
1810
  description: "While first administrator setup is pending, replace its login settings (install file format)"
@@ -1945,5 +1962,4 @@ function getKnownHelpPrefix(args) {
1945
1962
  function formatHelpPath(path) {
1946
1963
  return path.length === 0 ? "help" : path.join(" ");
1947
1964
  }
1948
- //#endregion
1949
1965
  export { printVoidHeader as i, printGlobalHelp as n, printHelpPage as r, getHelpPath as t };
@@ -0,0 +1 @@
1
+ export { r as printHelpPage } from "./help-1OCFDsRr.mjs";
@@ -1,6 +1,5 @@
1
1
  import { EmailWireAction } from "@void/platform/email-protocol";
2
2
  import { Email } from "postal-mime";
3
- //#region src/runtime/email/types.d.ts
4
3
  /**
5
4
  * Public types for the void/email module.
6
5
  *
@@ -34,8 +33,21 @@ interface SendEmailOptions {
34
33
  replyTo?: Address;
35
34
  cc?: Address | Array<Address>;
36
35
  bcc?: Address | Array<Address>;
36
+ /** Custom headers. Reserved names such as `From`, `Date` and the threading headers are ignored. */
37
37
  headers?: Record<string, string>;
38
38
  attachments?: Array<Attachment>;
39
+ /**
40
+ * Threads this email under an earlier message, such as a reply sent from a
41
+ * queue job after the inbound handler returned. `inReplyTo` is the parent's
42
+ * `Message-ID`. `references` lists the thread's ids, oldest first, ending
43
+ * with the parent; it defaults to `inReplyTo`. An id that cannot be sent,
44
+ * such as one with a control character, is left out. If `references`
45
+ * cannot be sent, it falls back to `inReplyTo`. The email still sends.
46
+ */
47
+ threading?: {
48
+ inReplyTo?: string;
49
+ references?: string;
50
+ };
39
51
  /**
40
52
  * Deduplicates a platform send for 30 days. Reuse the same key and message
41
53
  * when checking an uncertain attempt; a changed message is a conflict.
@@ -146,11 +158,9 @@ interface NormalizedEmail {
146
158
  headers: Record<string, string>;
147
159
  attachments: Array<NormalizedAttachment>;
148
160
  /**
149
- * Internal-only threading headers, set by `replyEmail`/`buildReplyMessage`.
150
- * The MIME builder emits these as proper `In-Reply-To` / `References`
151
- * top-level headers. User-supplied `headers` with these names are
152
- * always dropped (they're in `RESERVED_HEADERS`); this field is the
153
- * supported channel for the trusted reply path.
161
+ * `In-Reply-To` / `References` after the ids were checked, from the
162
+ * `threading` option or `replyEmail`. User-supplied `headers` with these
163
+ * names are always dropped (they're in `RESERVED_HEADERS`).
154
164
  */
155
165
  threading?: {
156
166
  inReplyTo?: string;
@@ -164,8 +174,6 @@ interface NormalizedAttachment {
164
174
  contentId?: string;
165
175
  disposition: "attachment" | "inline";
166
176
  }
167
- //#endregion
168
- //#region src/runtime/email/inbound.d.ts
169
177
  interface EmailHandlerInfo {
170
178
  /**
171
179
  * Captured params from dynamic / tagged route segments. For example, a
@@ -300,5 +308,4 @@ declare function isForwardableEmailMessage(value: unknown): value is Forwardable
300
308
  * `EmailMessage`, so `cloudflare:email` loads only when one was recorded.
301
309
  */
302
310
  declare function enactEmailActions(message: ForwardableEmailMessage, actions: ReadonlyArray<EmailAction>): Promise<void>;
303
- //#endregion
304
311
  export { SendEmailOptions as C, SendEmailErrorCode as S, SendEmailResult as T, Attachment as _, MessageProxy as a, SendEmailDelivery as b, ParsedEmail as c, defineEmail as d, enactEmailActions as f, Address as g, replyEmail as h, EmailHandlerInfo as i, ReplyEmailOptions as l, parseEmail as m, EmailEnvelope as n, ParseEmailError as o, isForwardableEmailMessage as p, EmailHandler as r, ParseEmailErrorCode as s, EmailAction as t, createMessageProxy as u, EmailDeliveryState as v, SendEmailRecipientResult as w, SendEmailError as x, NormalizedEmail as y };