void 0.26.0 → 0.26.1

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 (360) hide show
  1. package/AGENTS_TEMPLATE.md +1 -3
  2. package/README.md +19 -9
  3. package/dist/{account-cmd-CDry3B5V.mjs → account-cmd-CfUXh_nU.mjs} +8 -7
  4. package/dist/{application-analysis-DC2yPvzY.mjs → application-analysis-DKy02UY0.mjs} +21 -32
  5. package/dist/{application-routing-C9khgLiS.mjs → application-routing-DQyUh_5S.mjs} +1 -1
  6. package/dist/{auth-D52yG7hl.mjs → auth-B5_tZLxT.mjs} +7 -7
  7. package/dist/{auth-B60QDbjg.mjs → auth-BgX2qYSY.mjs} +1 -1
  8. package/dist/{auth-link-DjeOptYi.mjs → auth-link-D5RmKnzh.mjs} +5 -5
  9. package/dist/{auth-migrations-9vif1uj8.mjs → auth-migrations-BwHgeEsD.mjs} +8 -18
  10. package/dist/{auth-router-BRxIuqDi.mjs → auth-router-Bap-pvbn.mjs} +4 -17
  11. package/dist/{better-auth-shared-BVkjZ3vM.d.mts → better-auth-shared-CPvWD3nG.d.mts} +0 -4
  12. package/dist/{better-auth-shared-hy6RPh9W.mjs → better-auth-shared-DPpj8zxc.mjs} +94 -16
  13. package/dist/{build-cmd-Ce3C8huo.mjs → build-cmd-B58c8iS8.mjs} +7 -6
  14. package/dist/{cache-CS8Yxr5a.mjs → cache-Bo52trKF.mjs} +7 -7
  15. package/dist/{cancel-deploy-mZsD88Xa.mjs → cancel-deploy-BZNz3Q26.mjs} +5 -4
  16. package/dist/{cf-access-YTlqvAsk.mjs → cf-access-ngGqZpHZ.mjs} +10 -11
  17. package/dist/{cf-build-output-U8o1Gl6X.mjs → cf-build-output-DjvB_872.mjs} +62 -85
  18. package/dist/cf-build-output-H9a97vME.mjs +2 -0
  19. package/dist/cli/cli.mjs +48 -83
  20. package/dist/cli/cloudflare-operation-process.mjs +71 -77
  21. package/dist/cli/env-schema-probe.mjs +5 -6
  22. package/dist/client-By4JjMw_.mjs +2 -0
  23. package/dist/{client-mC-dFGDD.mjs → client-C2Prx_Bi.mjs} +28 -6
  24. package/dist/{cloudflare-auth-Qdc7tw8F.mjs → cloudflare-auth-CuxfF6OA.mjs} +9 -17
  25. package/dist/{cloudflare-cmd-bhwCxAN6.mjs → cloudflare-cmd-lHqNlJGW.mjs} +6 -5
  26. package/dist/{cloudflare-config-Bktvwtpf.mjs → cloudflare-config-BmhBv3HV.mjs} +1 -1
  27. package/dist/{cloudflare-connect-CuhRgk3k.mjs → cloudflare-connect-2G3rL2rP.mjs} +4 -4
  28. package/dist/{cloudflare-operations-DoQrVHAt.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
  29. package/dist/{cloudflare-operations-DYa3coIk.mjs → cloudflare-operations-CwI1bChl.mjs} +41 -70
  30. package/dist/{cloudflare-process-B-wekeR6.mjs → cloudflare-process-2-TfIEzB.mjs} +20 -22
  31. package/dist/{config-CyQ-wVd7.mjs → config-5r-YpMC-.mjs} +1 -1
  32. package/dist/{config-C_XRIPx2.mjs → config-B_ggY-IO.mjs} +3 -3
  33. package/dist/config-BtSFvXZx.mjs +2 -0
  34. package/dist/config-CLYAosnQ.mjs +78 -0
  35. package/dist/{config-BMHb8RCj.d.mts → config-CSa15FvD.d.mts} +1 -1
  36. package/dist/{config-Br_JZD6u.mjs → config-DiowPT80.mjs} +24 -30
  37. package/dist/config-entry.d.mts +1 -1
  38. package/dist/{config-write-B1f88wJA.mjs → config-write-AHGesphx.mjs} +8 -7
  39. package/dist/{connect-H6EvP62X.mjs → connect-X0MUA1gk.mjs} +10 -9
  40. package/dist/{create-project-B2kk9Q0o.mjs → create-project-DxiyW6iX.mjs} +6 -6
  41. package/dist/{create-project-Dbb4uiN-.mjs → create-project-iwkbqiBU.mjs} +1 -1
  42. package/dist/{db-DpCKZto0.mjs → db-XnVMHzoV.mjs} +100 -132
  43. package/dist/{delete-CxlSvsvW.mjs → delete-esYlMiSJ.mjs} +6 -6
  44. package/dist/{deploy-CeEbnv4b.mjs → deploy-BsEvnlJl.mjs} +2346 -2495
  45. package/dist/deploy-C1d-YTfp.mjs +2 -0
  46. package/dist/{dev-inbox-D64ZKUod.mjs → dev-inbox-CK-UuPob.mjs} +7 -16
  47. package/dist/{discover-BcPPiF1o.mjs → discover-CkCYv9T_.mjs} +1 -2
  48. package/dist/discover-EDUf6JJw.mjs +2 -0
  49. package/dist/{prompts-ZAuJlyCj.mjs → dist-Bx1z6Eva.mjs} +1 -1
  50. package/dist/{dist-AoCzRTJE.mjs → dist-Cegxq8gs.mjs} +8 -8
  51. package/dist/{prompts-6OSVA7DJ.mjs → dist-D3m88sjf.mjs} +10 -53
  52. package/dist/{domain-B_9VgOm6.mjs → domain-CbbBWhWE.mjs} +28 -29
  53. package/dist/{dotenv-VQxupEUv.mjs → dotenv-BfU6eqFt.mjs} +20 -32
  54. package/dist/{drizzle-Beb2Am5S.mjs → drizzle-CF84FOVM.mjs} +16 -13
  55. package/dist/{email-BokHgjKj.mjs → email-CpuT42g7.mjs} +23 -18
  56. package/dist/{email--tEtMoj_.mjs → email-d_Aux1vM.mjs} +1 -1
  57. package/dist/{entry-CF5wvH4w.mjs → entry-CMAkqBmU.mjs} +6 -6
  58. package/dist/{env-_v349JBd.mjs → env-BxocywBB.mjs} +25 -6
  59. package/dist/{env-D5liuQYR.mjs → env-DMA3cXZt.mjs} +1 -1
  60. package/dist/{env-raw-Cx8ElDdj.mjs → env-raw-jZpP5n47.mjs} +1 -2
  61. package/dist/{env-types-D5kds_OZ.mjs → env-types-CwXgeMgL.mjs} +1 -1
  62. package/dist/{env-validation-cZBvGWaP.mjs → env-validation-CrVNjsPm.mjs} +1 -1
  63. package/dist/{env-validation-vBSQ8gw5.mjs → env-validation-Dxdx_5wo.mjs} +17 -21
  64. package/dist/{env-BdTc-K2L.mjs → env-w9jOyGZn.mjs} +9 -9
  65. package/dist/{fetch-_SeGZao9.d.mts → fetch-BPCYVi3H.d.mts} +20 -1
  66. package/dist/{fetch-BIZJh7vR.mjs → fetch-sAcwjzLO.mjs} +1 -1
  67. package/dist/{fetch-stream-Nm3hkZbT.mjs → fetch-stream-PGgz4uGz.mjs} +18 -23
  68. package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
  69. package/dist/{gen-BhDlTpwW.mjs → gen-DtkQhvQg.mjs} +40 -57
  70. package/dist/gen-dA9hW7AV.mjs +2 -0
  71. package/dist/{github-cmd-hhkTzlGS.mjs → github-cmd-D_FsOFxq.mjs} +64 -163
  72. package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
  73. package/dist/{handler-BeK3weD4.d.mts → handler-CNAwjRcW.d.mts} +4 -11
  74. package/dist/{head-Do8P4puT.d.mts → head-C8K_iGe6.d.mts} +1 -1
  75. package/dist/{head-D_QRR5Yd.mjs → head-D2VF4ApL.mjs} +29 -51
  76. package/dist/{headers-2rKda9Y6.mjs → headers-DlfR78Nu.mjs} +3 -3
  77. package/dist/{help-Bv44e2tm.mjs → help-CVFBTmBx.mjs} +13 -32
  78. package/dist/help-DzKUrQvk.mjs +2 -0
  79. package/dist/{inbound-fRkqcXaC.mjs → inbound-PfQDLXc5.mjs} +23 -24
  80. package/dist/index.d.mts +19 -2
  81. package/dist/index.mjs +617 -530
  82. package/dist/{info-DhtTKh65.mjs → info-PYWwkWyt.mjs} +4 -4
  83. package/dist/{init-BMf4T03q.mjs → init-Bw-fRKGp.mjs} +160 -197
  84. package/dist/{link-BqYsSS_I.mjs → link-DlPG8iX3.mjs} +9 -9
  85. package/dist/{list-_kBToO-l.mjs → list-2GN7_ueV.mjs} +8 -7
  86. package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
  87. package/dist/{live-iAuEH1hd.d.mts → live-Du8jXwOW.d.mts} +4 -2
  88. package/dist/{local-d1-fGxYrVD6.mjs → local-d1-ga5O_idV.mjs} +2 -2
  89. package/dist/{login-DFuo-RWO.mjs → login-D-Q4xw3Q.mjs} +7 -7
  90. package/dist/login-Dc-wuTDq.mjs +2 -0
  91. package/dist/{logs-DYgnh6dH.mjs → logs-rd8J-OFh.mjs} +27 -10
  92. package/dist/migrate-BHp07yJE.mjs +2 -0
  93. package/dist/{migrate-CV1on-yJ.mjs → migrate-NLsjBbuM.mjs} +34 -20
  94. package/dist/{mime-D5Nmdzf7.mjs → mime-DxCznlJq.mjs} +45 -95
  95. package/dist/{node-C6Q6e1Es.mjs → node-DJicPvPj.mjs} +5 -5
  96. package/dist/{operator-args-DdY54Bgb.mjs → operator-args-BNsW5gfp.mjs} +10 -1
  97. package/dist/{operator-auth-2dsGlTT5.mjs → operator-auth-AzVLbrr3.mjs} +1 -1
  98. package/dist/{operator-client-BFqpp6z0.mjs → operator-client-BQtzyG-g.mjs} +1 -1
  99. package/dist/{operator-cmd-CUGHXrQf.mjs → operator-cmd-B6f6Cg9Z.mjs} +24 -11
  100. package/dist/operator-cmd-Cwn50lOV.mjs +2 -0
  101. package/dist/{output-BvdaehtE.mjs → output-C50ag2r3.mjs} +20 -2
  102. package/dist/pages/client.d.mts +19 -51
  103. package/dist/pages/client.mjs +204 -225
  104. package/dist/pages/head-client.d.mts +1 -1
  105. package/dist/pages/head.d.mts +1 -1
  106. package/dist/pages/head.mjs +1 -1
  107. package/dist/pages/index.d.mts +2 -2
  108. package/dist/pages/index.mjs +6 -12
  109. package/dist/pages/islands-plugin.d.mts +1 -1
  110. package/dist/pages/islands-plugin.mjs +21 -25
  111. package/dist/pages/protocol.d.mts +2 -2
  112. package/dist/pages/protocol.mjs +2 -2
  113. package/dist/{plan-CJGEeTEI.mjs → plan-BhLO2p4w.mjs} +2 -1
  114. package/dist/plan-CH2G51je.mjs +2 -0
  115. package/dist/{platform-args-DSV2p4nY.mjs → platform-args-BoZkWQnJ.mjs} +1 -1
  116. package/dist/platform-args-DYgITk0D.mjs +2 -0
  117. package/dist/{platform-auth-config-Bosx7U1h.mjs → platform-auth-config-n603OANg.mjs} +40 -36
  118. package/dist/{platform-auth-protection-DcbL_LW_.mjs → platform-auth-protection-zxDr0hWW.mjs} +8 -7
  119. package/dist/{platform-auth-recovery-WfTZ8K6o.mjs → platform-auth-recovery-tw9lgtgE.mjs} +7 -6
  120. package/dist/{platform-cmd-DbKtQb_4.mjs → platform-cmd-B8-bCb7t.mjs} +10 -10
  121. package/dist/{platform-cmd-dyFUof0t.mjs → platform-cmd-C00YM14r.mjs} +1 -1
  122. package/dist/{platform-domain-Bsq43AJp.mjs → platform-domain-p0kobLV8.mjs} +5 -5
  123. package/dist/{platform-lifecycle-Cfi0o6xM.mjs → platform-lifecycle-D_QEY32D.mjs} +75 -386
  124. package/dist/{platform-lifecycle--5gWmDoI.mjs → platform-lifecycle-vFqtNPPa.mjs} +1 -1
  125. package/dist/{platform-management-BrF9STZp.mjs → platform-management-BdYblvvE.mjs} +6 -6
  126. package/dist/{platform-management-Bbwf6-Dq.mjs → platform-management-oi-SvI3f.mjs} +1 -1
  127. package/dist/{platform-plans-config-DU-8nC2Y.mjs → platform-plans-config-CjiFv5J4.mjs} +5 -4
  128. package/dist/{platform-recovery-DQAqAQYu.mjs → platform-recovery-PvNS9Nl2.mjs} +2 -2
  129. package/dist/platform-setup-DVe42Ws7.mjs +299 -0
  130. package/dist/{plugin-inference-CXWnn79A.mjs → plugin-inference-BlQbOL0P.mjs} +43 -42
  131. package/dist/prepare-DRUV-g3X.mjs +2 -0
  132. package/dist/{prepare-WoUubFKL.mjs → prepare-Do96654b.mjs} +8 -8
  133. package/dist/{prepare-BMrRWLwP.mjs → prepare-Dq9hTIbo.mjs} +4 -4
  134. package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
  135. package/dist/prerender-render.mjs +1 -1
  136. package/dist/{project-cmd-BbH2LptN.mjs → project-cmd-ti8_yTcA.mjs} +18 -18
  137. package/dist/{project-team-Yiww3-go.mjs → project-team-CDPE1Tsg.mjs} +14 -17
  138. package/dist/{project-token-BrtT2NkY.mjs → project-token-CkZ1cN0Z.mjs} +13 -16
  139. package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
  140. package/dist/{project-zero-trust-nYJ2V2nc.mjs → project-zero-trust-DdjLR61k.mjs} +11 -8
  141. package/dist/{protocol-BX8t2jiw.d.mts → protocol-BPZaNqBo.d.mts} +4 -2
  142. package/dist/{protocol-U7bfjHmA.mjs → protocol-CfaUwNs8.mjs} +46 -49
  143. package/dist/{providers-CJlNS3kT.mjs → providers-BXuhmuub.mjs} +1 -12
  144. package/dist/{provision-VeqAC77A.mjs → provision-BfaLiWbj.mjs} +38 -41
  145. package/dist/{provision-DMTPG8Rh.mjs → provision-Wu9ZBk9L.mjs} +2 -3
  146. package/dist/{requests-TIz_jtSu.mjs → requests-DFAqyYy8.mjs} +4 -4
  147. package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
  148. package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
  149. package/dist/{rollback-dBqICPzj.mjs → rollback-BKYXBduI.mjs} +29 -36
  150. package/dist/{route-types-Clm4WD0B.mjs → route-types-CbtsIeFn.mjs} +1 -1
  151. package/dist/route-url-BgPja1GS.d.mts +5 -0
  152. package/dist/route-url-BjGv_KKY.mjs +28 -0
  153. package/dist/runner-9wjsSZx-.mjs +2 -0
  154. package/dist/{runner--2KF6Kua.mjs → runner-DMBKSrRk.mjs} +2 -2
  155. package/dist/{runner-mysql-DmWchSWJ.mjs → runner-mysql-CEzKtmFb.mjs} +8 -8
  156. package/dist/{runner-mysql-CEG5JozK.mjs → runner-mysql-CkFqZ6CE.mjs} +1 -1
  157. package/dist/{runner-pg-Bh4AgZdj.mjs → runner-pg-BGYRFdRp.mjs} +1 -1
  158. package/dist/runtime/ai.d.mts +1 -1
  159. package/dist/runtime/ai.mjs +34 -95
  160. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  161. package/dist/runtime/better-auth-mysql.mjs +4 -9
  162. package/dist/runtime/better-auth-pg.d.mts +1 -1
  163. package/dist/runtime/better-auth-pg.mjs +5 -10
  164. package/dist/runtime/better-auth.d.mts +1 -1
  165. package/dist/runtime/better-auth.mjs +3 -3
  166. package/dist/runtime/client-react.d.mts +2 -3
  167. package/dist/runtime/client-react.mjs +2 -2
  168. package/dist/runtime/client-solid.d.mts +2 -3
  169. package/dist/runtime/client-solid.mjs +2 -2
  170. package/dist/runtime/client-svelte.d.mts +2 -3
  171. package/dist/runtime/client-svelte.mjs +2 -2
  172. package/dist/runtime/client-vue.d.mts +2 -3
  173. package/dist/runtime/client-vue.mjs +2 -2
  174. package/dist/runtime/client.d.mts +2 -3
  175. package/dist/runtime/client.mjs +2 -2
  176. package/dist/runtime/db.mjs +1 -1
  177. package/dist/runtime/durable.mjs +3 -10
  178. package/dist/runtime/email/testing.mjs +5 -5
  179. package/dist/runtime/email.d.mts +2 -1
  180. package/dist/runtime/email.mjs +11 -27
  181. package/dist/runtime/env-public.mjs +15 -20
  182. package/dist/runtime/env.mjs +1 -1
  183. package/dist/runtime/fetch-stream.d.mts +2 -2
  184. package/dist/runtime/fetch-stream.mjs +1 -1
  185. package/dist/runtime/fetch.d.mts +2 -3
  186. package/dist/runtime/fetch.mjs +1 -1
  187. package/dist/runtime/handler.d.mts +1 -1
  188. package/dist/runtime/handler.mjs +2 -2
  189. package/dist/runtime/isr.mjs +1 -1
  190. package/dist/runtime/kv.mjs +10 -11
  191. package/dist/runtime/live-client.d.mts +1 -1
  192. package/dist/runtime/live-client.mjs +12 -22
  193. package/dist/runtime/live-server.mjs +27 -35
  194. package/dist/runtime/live.d.mts +2 -2
  195. package/dist/runtime/live.mjs +2 -2
  196. package/dist/runtime/migration-handler.mjs +4 -81
  197. package/dist/runtime/queues.mjs +1 -1
  198. package/dist/runtime/remote/binding-handler.d.mts +2 -2
  199. package/dist/runtime/remote/binding-handler.mjs +8 -9
  200. package/dist/runtime/remote/index.mjs +27 -77
  201. package/dist/runtime/route-url.d.mts +2 -4
  202. package/dist/runtime/route-url.mjs +1 -1
  203. package/dist/runtime/routing.d.mts +1 -1
  204. package/dist/runtime/routing.mjs +15 -26
  205. package/dist/runtime/sandbox.mjs +2 -2
  206. package/dist/runtime/sse.mjs +1 -1
  207. package/dist/runtime/storage.mjs +1 -1
  208. package/dist/runtime/validator.d.mts +1 -1
  209. package/dist/runtime/ws-server.d.mts +2 -2
  210. package/dist/runtime/ws-server.mjs +30 -61
  211. package/dist/runtime/ws.d.mts +1 -1
  212. package/dist/runtime/ws.mjs +1 -1
  213. package/dist/{scan-C8dA7iM4.mjs → scan-C3uDzz6J.mjs} +12 -13
  214. package/dist/{secret-AKnNXNP5.mjs → secret-BAt2KMmO.mjs} +14 -14
  215. package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
  216. package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
  217. package/dist/{subcommand-prompt-B6WS9Aoz.mjs → subcommand-prompt-BSlnD1fI.mjs} +2 -2
  218. package/dist/sveltekit.d.mts +0 -2
  219. package/dist/terminal-log-text-D9ACPOuG.mjs +32 -0
  220. package/dist/validate-BJr9LfXy.mjs +2 -0
  221. package/dist/{validate-ymhap6M_.mjs → validate-C9qJArv7.mjs} +9 -28
  222. package/dist/{defer-YsYDUoii.mjs → validation-error-Dg9Recn1.mjs} +11 -11
  223. package/dist/{wrangler-DhUerFkW.mjs → wrangler-D9KTuqnv.mjs} +89 -194
  224. package/dist/{ws-C79j4aED.d.mts → ws-CChrrAU-.d.mts} +1 -1
  225. package/dist/{yarn-pnp-BV4AzNul.mjs → yarn-pnp-CUX_iTPA.mjs} +19 -27
  226. package/{skills/void/docs → docs}/guide/ai.md +5 -3
  227. package/{skills/void/docs → docs}/guide/auth.md +37 -1
  228. package/{skills/void/docs → docs}/guide/database/postgresql.md +2 -2
  229. package/{skills/void/docs → docs}/guide/edge/revalidation.md +1 -1
  230. package/{skills/void/docs → docs}/guide/edge/rewrites.md +2 -4
  231. package/{skills/void/docs → docs}/guide/email/receiving.md +2 -2
  232. package/{skills/void/docs → docs}/guide/email/sending.md +0 -2
  233. package/{skills/void/docs → docs}/guide/env-vars.md +4 -0
  234. package/{skills/void/docs → docs}/guide/jobs.md +2 -2
  235. package/{skills/void/docs → docs}/guide/live.md +10 -5
  236. package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +20 -8
  237. package/{skills/void/docs → docs}/guide/pages-routing/loaders.md +7 -3
  238. package/{skills/void/docs → docs}/guide/pages-routing/markdown.md +15 -23
  239. package/{skills/void/docs → docs}/guide/pages-routing/overview.md +6 -4
  240. package/{skills/void/docs → docs}/guide/platform/administration/access.md +2 -10
  241. package/{skills/void/docs → docs}/guide/platform/administration/operations.md +3 -12
  242. package/{skills/void/docs → docs}/guide/platform/administration/projects.md +1 -1
  243. package/{skills/void/docs → docs}/guide/platform/development/local.md +4 -2
  244. package/{skills/void/docs → docs}/guide/platform/development/runtime.md +1 -1
  245. package/{skills/void/docs → docs}/guide/platform/development/schema-ci.md +1 -1
  246. package/{skills/void/docs → docs}/guide/platform/installation/domains.md +3 -1
  247. package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +3 -1
  248. package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +4 -0
  249. package/{skills/void/docs → docs}/guide/project-collaboration.md +6 -2
  250. package/{skills/void/docs → docs}/guide/queues.md +0 -2
  251. package/{skills/void/docs → docs}/guide/remote-dev.md +5 -5
  252. package/{skills/void/docs → docs}/guide/sandboxes.md +2 -2
  253. package/{skills/void/docs → docs}/guide/sse.md +0 -2
  254. package/{skills/void/docs → docs}/guide/storage.md +7 -2
  255. package/{skills/void/docs → docs}/guide/websockets.md +4 -0
  256. package/docs/integrations/agents.md +37 -0
  257. package/{skills/void/docs → docs}/integrations/frameworks/astro.md +3 -3
  258. package/{skills/void/docs → docs}/integrations/frameworks/nuxt.md +6 -2
  259. package/{skills/void/docs → docs}/integrations/hono.md +15 -7
  260. package/{skills/void/docs → docs}/integrations/nodejs-bun-deno.md +1 -0
  261. package/{skills/void/docs → docs}/reference/api/auth.md +1 -1
  262. package/{skills/void/docs → docs}/reference/api/handlers.md +4 -2
  263. package/{skills/void/docs → docs}/reference/api/pages.md +4 -0
  264. package/{skills/void/docs → docs}/reference/cli/auth.md +0 -5
  265. package/{skills/void/docs → docs}/reference/cli/database.md +3 -4
  266. package/{skills/void/docs → docs}/reference/cli/generate.md +1 -1
  267. package/{skills/void/docs → docs}/reference/cli/github.md +3 -12
  268. package/{skills/void/docs → docs}/reference/cli/platform-config.md +1 -1
  269. package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
  270. package/{skills/void/docs → docs}/reference/cli/platform-installation.md +1 -1
  271. package/{skills/void/docs → docs}/reference/cli/platform-operations.md +3 -0
  272. package/{skills/void/docs → docs}/reference/cli/platform-users.md +2 -2
  273. package/{skills/void/docs → docs}/reference/cli/project.md +5 -4
  274. package/{skills/void/docs → docs}/reference/cli/secrets.md +3 -3
  275. package/{skills/void/docs → docs}/reference/cli/setup.md +9 -11
  276. package/{skills/void/docs → docs}/reference/cli.md +1 -1
  277. package/{skills/void/docs → docs}/reference/config.md +13 -13
  278. package/{skills/void/docs → docs}/reference/resource-inference.md +1 -16
  279. package/package.json +34 -30
  280. package/schema.json +1 -1
  281. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +4 -1
  282. package/skills/void/SKILL.md +6 -3
  283. package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
  284. package/dist/client-BxVixJBI.mjs +0 -2
  285. package/dist/config-0acf1oys.mjs +0 -2
  286. package/dist/config-D8MOgiQV.mjs +0 -32
  287. package/dist/deploy-qmiLE1G1.mjs +0 -2
  288. package/dist/discover-AMCBXivQ.mjs +0 -2
  289. package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
  290. package/dist/gen-qCBwH3fZ.mjs +0 -2
  291. package/dist/help-Dw5f9Xrg.mjs +0 -2
  292. package/dist/login-D7meQg_3.mjs +0 -2
  293. package/dist/migrate-CEu2X5DB.mjs +0 -2
  294. package/dist/operator-cmd-DRPvhpjM.mjs +0 -2
  295. package/dist/plan-COtUvdMA.mjs +0 -2
  296. package/dist/platform-args-Dcy_5b_Y.mjs +0 -2
  297. package/dist/prepare-BBknoZI1.mjs +0 -2
  298. package/dist/resolve-project-DtbidV4y.mjs +0 -2
  299. package/dist/route-url-CG7U-cRN.mjs +0 -15
  300. package/dist/runner-voIltZrY.mjs +0 -2
  301. package/dist/validate-pna7R3Pv.mjs +0 -2
  302. package/skills/void/docs/integrations/agents.md +0 -26
  303. package/dist/{runner-pg-D4OPlil-.mjs → runner-pg-DV8p_zjA.mjs} +4 -4
  304. package/{skills/void/docs → docs}/guide/app-types.md +0 -0
  305. package/{skills/void/docs → docs}/guide/database/d1.md +2 -2
  306. package/{skills/void/docs → docs}/guide/database/mysql.md +0 -0
  307. package/{skills/void/docs → docs}/guide/database.md +8 -8
  308. package/{skills/void/docs → docs}/guide/deployment.md +0 -0
  309. package/{skills/void/docs → docs}/guide/durable-state.md +0 -0
  310. package/{skills/void/docs → docs}/guide/edge/headers.md +0 -0
  311. package/{skills/void/docs → docs}/guide/edge/prerendering.md +0 -0
  312. package/{skills/void/docs → docs}/guide/edge/redirects.md +0 -0
  313. package/{skills/void/docs → docs}/guide/edge/static-assets.md +0 -0
  314. package/{skills/void/docs → docs}/guide/email/domains.md +0 -0
  315. package/{skills/void/docs → docs}/guide/email.md +0 -0
  316. package/{skills/void/docs → docs}/guide/index.md +0 -0
  317. package/{skills/void/docs → docs}/guide/kv.md +0 -0
  318. package/{skills/void/docs → docs}/guide/pages-routing/head.md +0 -0
  319. package/{skills/void/docs → docs}/guide/pages-routing/islands.md +2 -2
  320. package/{skills/void/docs → docs}/guide/pages-routing/layouts.md +0 -0
  321. package/{skills/void/docs → docs}/guide/pages-routing/view-transitions.md +0 -0
  322. package/{skills/void/docs → docs}/guide/platform/administration/email.md +0 -0
  323. package/{skills/void/docs → docs}/guide/platform/administration/plans.md +0 -0
  324. package/{skills/void/docs → docs}/guide/platform/administration/zero-trust.md +0 -0
  325. package/{skills/void/docs → docs}/guide/platform/installation/ci.md +0 -0
  326. package/{skills/void/docs → docs}/guide/platform/installation/credentials.md +0 -0
  327. package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
  328. package/{skills/void/docs → docs}/guide/platform/installation/setup.md +0 -0
  329. package/{skills/void/docs → docs}/guide/platform/installation/uninstall.md +0 -0
  330. package/{skills/void/docs → docs}/guide/platform-administration.md +0 -0
  331. package/{skills/void/docs → docs}/guide/platform-development.md +0 -0
  332. package/{skills/void/docs → docs}/guide/quickstart.md +0 -0
  333. package/{skills/void/docs → docs}/guide/self-hosted-platform.md +0 -0
  334. package/{skills/void/docs → docs}/guide/server-routing.md +3 -3
  335. package/{skills/void/docs → docs}/guide/ssg.md +0 -0
  336. package/{skills/void/docs → docs}/guide/ssr.md +0 -0
  337. package/{skills/void/docs → docs}/guide/type-safety.md +0 -0
  338. package/{skills/void/docs → docs}/guide/typed-fetch.md +0 -0
  339. package/{skills/void/docs → docs}/index.md +0 -0
  340. package/{skills/void/docs → docs}/integrations/cloudflare.md +0 -0
  341. package/{skills/void/docs → docs}/integrations/frameworks/analog.md +3 -3
  342. package/{skills/void/docs → docs}/integrations/frameworks/overview.md +0 -0
  343. package/{skills/void/docs → docs}/integrations/frameworks/react-router.md +3 -3
  344. package/{skills/void/docs → docs}/integrations/frameworks/sveltekit.md +1 -1
  345. package/{skills/void/docs → docs}/integrations/frameworks/tanstack-start.md +2 -2
  346. package/{skills/void/docs → docs}/reference/api/client.md +0 -0
  347. package/{skills/void/docs → docs}/reference/api/database.md +2 -2
  348. /package/{skills/void/docs → docs}/reference/api/durable.md +0 -0
  349. /package/{skills/void/docs → docs}/reference/api/env.md +0 -0
  350. /package/{skills/void/docs → docs}/reference/api/plugin.md +0 -0
  351. /package/{skills/void/docs → docs}/reference/api/resources.md +0 -0
  352. /package/{skills/void/docs → docs}/reference/api/rewrites.md +0 -0
  353. /package/{skills/void/docs → docs}/reference/api/types.md +0 -0
  354. /package/{skills/void/docs → docs}/reference/api.md +0 -0
  355. /package/{skills/void/docs → docs}/reference/cli/deploy.md +0 -0
  356. /package/{skills/void/docs → docs}/reference/cli/domains.md +0 -0
  357. /package/{skills/void/docs → docs}/reference/cli/email.md +0 -0
  358. /package/{skills/void/docs → docs}/reference/cli/platform-zero-trust.md +0 -0
  359. /package/{skills/void/docs → docs}/reference/cli/platform.md +0 -0
  360. /package/{skills/void/docs → docs}/reference/structure.md +0 -0
@@ -1,10 +1,10 @@
1
1
  import { l as writeProjectConfig, r as readProjectConfig, t as attachSelectedPlatform } from "./project-DQstYTxO.mjs";
2
- import { c as getToken, s as getSiteDomain } from "./auth-D52yG7hl.mjs";
3
- import { H as outro, L as log, O as cancel } from "./prompts-6OSVA7DJ.mjs";
4
- import { r as PlatformClient } from "./client-mC-dFGDD.mjs";
5
- import { c as import_picocolors } from "./output-BvdaehtE.mjs";
6
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-B2kk9Q0o.mjs";
7
- import { r as resolveProjectBySlug } from "./resolve-project-BG5ORGID.mjs";
2
+ import { c as getToken, s as getSiteDomain } from "./auth-B5_tZLxT.mjs";
3
+ import { H as outro, L as log, O as cancel } from "./dist-D3m88sjf.mjs";
4
+ import { d as printSuccess, l as import_picocolors } from "./output-C50ag2r3.mjs";
5
+ import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
6
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-DxiyW6iX.mjs";
7
+ import { i as resolveProjectBySlug } from "./resolve-project-CP8rZs_p.mjs";
8
8
  //#region src/cli/link.ts
9
9
  function projectLabel(slug, root, url) {
10
10
  if (url) return url;
@@ -34,20 +34,20 @@ async function runLink(root, slug) {
34
34
  }
35
35
  const config = attachSelectedPlatform(root, resolved, client.apiUrl);
36
36
  writeProjectConfig(root, config);
37
- outro(`Linked to ${projectLabel(config.slug, root, projects.find((project) => project.id === config.projectId)?.url)}`);
37
+ printSuccess(`Linked to ${projectLabel(config.slug, root, projects.find((project) => project.id === config.projectId)?.url)}`);
38
38
  return;
39
39
  }
40
40
  const result = await promptProjectSelection(projects, "Select a project:", root, { confirmExisting: true });
41
41
  if (result.action === "create") {
42
42
  const config = await promptAndCreateProject(root, client);
43
- outro(`Created and linked to ${projectLabel(config.slug, root)}`);
43
+ printSuccess(`Created and linked to ${projectLabel(config.slug, root)}`);
44
44
  return;
45
45
  }
46
46
  writeProjectConfig(root, attachSelectedPlatform(root, {
47
47
  projectId: result.project.id,
48
48
  slug: result.project.slug
49
49
  }, client.apiUrl));
50
- outro(`Linked to ${projectLabel(result.project.slug, root, result.project.url)}`);
50
+ printSuccess(`Linked to ${projectLabel(result.project.slug, root, result.project.url)}`);
51
51
  }
52
52
  //#endregion
53
53
  export { runLink };
@@ -1,9 +1,9 @@
1
1
  import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
- import { c as getToken } from "./auth-D52yG7hl.mjs";
3
- import { H as outro, L as log } from "./prompts-6OSVA7DJ.mjs";
4
- import { r as PlatformClient } from "./client-mC-dFGDD.mjs";
5
- import { a as ensureUtc, c as import_picocolors, f as tablePrefix, i as dim, o as formatCount } from "./output-BvdaehtE.mjs";
6
- import { r as resolveProjectBySlug } from "./resolve-project-BG5ORGID.mjs";
2
+ import { c as getToken } from "./auth-B5_tZLxT.mjs";
3
+ import { H as outro, L as log } from "./dist-D3m88sjf.mjs";
4
+ import { a as ensureUtc, f as sanitizeTerminalText, i as dim, l as import_picocolors, m as tablePrefix, s as formatCount } from "./output-C50ag2r3.mjs";
5
+ import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
6
+ import { i as resolveProjectBySlug } from "./resolve-project-CP8rZs_p.mjs";
7
7
  //#region src/cli/list.ts
8
8
  async function runListCommand(root, slug) {
9
9
  console.log();
@@ -42,7 +42,7 @@ async function runListCommand(root, slug) {
42
42
  }
43
43
  async function showCloudflareDeployments(root, slug) {
44
44
  if (slug) throw new Error("project: A project name selects a Void platform project and is not used for direct Cloudflare apps.");
45
- const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-DoQrVHAt.mjs");
45
+ const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-BlYLlowZ.mjs");
46
46
  const status = await readCloudflareWorkerStatus(resolveCloudflareOperationContext(root));
47
47
  if (status.versions.length === 0) {
48
48
  outro(`No deployments for ${status.workerName}.`);
@@ -66,7 +66,8 @@ async function showCloudflareDeployments(root, slug) {
66
66
  outro(`${status.workerName} — ${formatCount(rows.length, "version")}`);
67
67
  }
68
68
  async function showDeployments(client, projectId, slug) {
69
- const { deployments, activeDeploymentId } = await client.listDeployments(projectId);
69
+ const { deployments, activeDeploymentId, warnings } = await client.listDeployments(projectId);
70
+ for (const warning of warnings ?? []) log.warn(sanitizeTerminalText(warning));
70
71
  if (deployments.length === 0) {
71
72
  outro(`No deployments for ${slug}.`);
72
73
  return;
@@ -1,7 +1,8 @@
1
- import { a as getRawRuntimeEnv } from "./env-raw-Cx8ElDdj.mjs";
1
+ import { a as getRawRuntimeEnv } from "./env-raw-jZpP5n47.mjs";
2
2
  import { i as getUser } from "./auth-3sGB0zJ1.mjs";
3
3
  //#region src/runtime/live.ts
4
4
  let liveBindingName = "VOID_LIVE";
5
+ let liveDev = false;
5
6
  const registeredStreamIds = /* @__PURE__ */ new Set();
6
7
  const DEFAULT_LIMITS = {
7
8
  maxSubscriptionsPerConnection: 256,
@@ -18,6 +19,9 @@ function __setLiveBindingName(name) {
18
19
  function __getLiveBindingName() {
19
20
  return liveBindingName;
20
21
  }
22
+ function __setLiveDev(dev) {
23
+ liveDev = dev === true;
24
+ }
21
25
  function defineLiveStream(options) {
22
26
  const streamId = assertStreamId(options.id);
23
27
  const limits = resolveLiveLimits(options.limits);
@@ -271,6 +275,11 @@ function parseOperation(value, index) {
271
275
  }
272
276
  throw liveResponseError("BAD_REQUEST", "live: operation kind is invalid.", 400);
273
277
  }
278
+ const INVALID_OPERATION_MESSAGES = {
279
+ BAD_REQUEST: "live: invalid control operation.",
280
+ INVALID_SUBSCRIPTION_ID: "live: invalid subscription id.",
281
+ INVALID_TOPIC: "live: invalid topic."
282
+ };
274
283
  function invalidOperation(index, kind, id, code) {
275
284
  return {
276
285
  ok: false,
@@ -281,19 +290,7 @@ function invalidOperation(index, kind, id, code) {
281
290
  id: typeof id === "string" ? id : "",
282
291
  error: {
283
292
  code,
284
- message: {
285
- BAD_REQUEST: "live: invalid control operation.",
286
- CONNECTION_CLOSED: "live: connection closed.",
287
- CONNECTION_NOT_FOUND: "live: connection not found.",
288
- FORBIDDEN: "Forbidden",
289
- INVALID_SUBSCRIPTION_ID: "live: invalid subscription id.",
290
- INVALID_TOPIC: "live: invalid topic.",
291
- OWNER_MISMATCH: "live: owner mismatch.",
292
- SUBSCRIPTION_LIMIT: "live: subscription limit reached.",
293
- TOPIC_FULL: "live: topic subscription limit reached.",
294
- PAYLOAD_TOO_LARGE: "live: payload too large.",
295
- INTERNAL_ERROR: "live: internal error."
296
- }[code]
293
+ message: INVALID_OPERATION_MESSAGES[code]
297
294
  }
298
295
  }
299
296
  };
@@ -388,11 +385,13 @@ function errorToResponse(error) {
388
385
  message: error.message
389
386
  }
390
387
  }, { status: error.status });
388
+ console.error(error);
389
+ const message = liveDev ? error instanceof Error ? error.message : String(error) : "live: internal error.";
391
390
  return Response.json({
392
391
  accepted: false,
393
392
  error: {
394
393
  code: "INTERNAL_ERROR",
395
- message: error instanceof Error ? error.message : String(error)
394
+ message
396
395
  }
397
396
  }, { status: 500 });
398
397
  }
@@ -408,4 +407,4 @@ async function responseToControlError(response) {
408
407
  };
409
408
  }
410
409
  //#endregion
411
- export { __setLiveBindingName as n, defineLiveStream as r, __getLiveBindingName as t };
410
+ export { defineLiveStream as i, __setLiveBindingName as n, __setLiveDev as r, __getLiveBindingName as t };
@@ -1,5 +1,5 @@
1
1
  import { r as AuthUser } from "./auth-DkcFflXV.mjs";
2
- import { a as CloudEnv, r as CloudContext } from "./handler-BeK3weD4.mjs";
2
+ import { a as CloudEnv, r as CloudContext } from "./handler-CNAwjRcW.mjs";
3
3
  //#region src/runtime/live.d.ts
4
4
  type MaybePromise<T> = T | Promise<T>;
5
5
  type LiveControlRequest = {
@@ -81,6 +81,7 @@ type LiveStreamOptions = {
81
81
  allowAnonymousControl?: boolean;
82
82
  identifyConnection?: (ctx: LiveHookContext) => MaybePromise<string | null | undefined>;
83
83
  onConnect?: (ctx: LiveConnectHookContext) => MaybePromise<Response | void>;
84
+ /** Decides who can read each topic. Without it, any connection that passes the owner check can subscribe to any topic. Return a Response to reject. */
84
85
  onSubscribe?: (ctx: LiveSubscribeHookContext) => MaybePromise<Response | void>;
85
86
  limits?: Partial<LiveLimits>;
86
87
  };
@@ -100,6 +101,7 @@ type LiveStream = {
100
101
  };
101
102
  declare function __setLiveBindingName(name: string): void;
102
103
  declare function __getLiveBindingName(): string;
104
+ declare function __setLiveDev(dev: boolean): void;
103
105
  declare function defineLiveStream(options: LiveStreamOptions): LiveStream;
104
106
  //#endregion
105
- export { __getLiveBindingName as _, LiveControlErrorCode as a, LiveControlOptions as c, LiveHookContext as d, LiveLimits as f, LiveSubscribeHookContext as g, LiveStreamOptions as h, LiveControlError as i, LiveControlRequest as l, LiveStream as m, LiveConnectHookContext as n, LiveControlOperation as o, LivePublishOptions as p, LiveConnectOptions as r, LiveControlOperationResult as s, LiveClientEvent as t, LiveControlResponse as u, __setLiveBindingName as v, defineLiveStream as y };
107
+ export { __getLiveBindingName as _, LiveControlErrorCode as a, defineLiveStream as b, LiveControlOptions as c, LiveHookContext as d, LiveLimits as f, LiveSubscribeHookContext as g, LiveStreamOptions as h, LiveControlError as i, LiveControlRequest as l, LiveStream as m, LiveConnectHookContext as n, LiveControlOperation as o, LivePublishOptions as p, LiveConnectOptions as r, LiveControlOperationResult as s, LiveClientEvent as t, LiveControlResponse as u, __setLiveBindingName as v, __setLiveDev as y };
@@ -1,6 +1,6 @@
1
1
  import { a as join, i as isAbsolute, u as resolve } from "./dist-BVqXeR_h.mjs";
2
- import { y as readRootWranglerConfig } from "./wrangler-DhUerFkW.mjs";
3
- import { r as getMiniflareDatabasePath } from "./runner--2KF6Kua.mjs";
2
+ import { b as readRootWranglerConfig } from "./wrangler-D9KTuqnv.mjs";
3
+ import { r as getMiniflareDatabasePath } from "./runner-DMBKSrRk.mjs";
4
4
  import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
5
5
  import { createHash } from "node:crypto";
6
6
  //#region src/local-d1.ts
@@ -1,7 +1,7 @@
1
- import { a as getApiUrl, c as getToken, f as removeToken, g as saveToken, h as savePlatformToken, l as getTokenSource, m as runPlatformLogin, p as runLogin } from "./auth-D52yG7hl.mjs";
2
- import { H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
3
- import { a as isExpiredTokenError, r as PlatformClient } from "./client-mC-dFGDD.mjs";
4
- import { c as import_picocolors, r as createSpinner } from "./output-BvdaehtE.mjs";
1
+ import { a as getApiUrl, c as getToken, f as removeToken, g as saveToken, h as savePlatformToken, l as getTokenSource, m as runPlatformLogin, p as runLogin } from "./auth-B5_tZLxT.mjs";
2
+ import { H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./dist-D3m88sjf.mjs";
3
+ import { d as printSuccess, l as import_picocolors, r as createSpinner } from "./output-C50ag2r3.mjs";
4
+ import { a as isExpiredTokenError, r as PlatformClient } from "./client-C2Prx_Bi.mjs";
5
5
  //#region src/cli/login.ts
6
6
  async function selectPlatformLoginMethod(platform, requestedId) {
7
7
  const providers = platform?.authenticationProviders ?? ["github", "google"];
@@ -29,7 +29,7 @@ async function selectPlatformLoginMethod(platform, requestedId) {
29
29
  return methods.find((method) => method.id === provider);
30
30
  }
31
31
  async function promptForLoginToken(root = process.cwd(), platform) {
32
- const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await import("./platform-cmd-dyFUof0t.mjs").then(({ discoverPlatform }) => discoverPlatform(getApiUrl(root))));
32
+ const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await import("./platform-cmd-C00YM14r.mjs").then(({ discoverPlatform }) => discoverPlatform(getApiUrl(root))));
33
33
  const s = createSpinner();
34
34
  s.start(`Opening browser for ${providerName} login...`);
35
35
  try {
@@ -79,10 +79,10 @@ async function runLoginCommand(root = process.cwd()) {
79
79
  }
80
80
  await promptForLoginToken(root);
81
81
  if (expiredEnvToken) {
82
- outro("Token saved. Unset `VOID_TOKEN` to use it.");
82
+ printSuccess("Token saved. Unset `VOID_TOKEN` to use it.");
83
83
  return;
84
84
  }
85
- outro("Token saved.");
85
+ printSuccess("Token saved.");
86
86
  }
87
87
  //#endregion
88
88
  export { runLoginCommand as n, selectPlatformLoginMethod as r, promptForLoginToken as t };
@@ -0,0 +1,2 @@
1
+ import { r as selectPlatformLoginMethod } from "./login-D-Q4xw3Q.mjs";
2
+ export { selectPlatformLoginMethod };
@@ -1,14 +1,15 @@
1
1
  import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
- import { c as getToken } from "./auth-D52yG7hl.mjs";
3
- import { $ as wrapTextWithPrefix, H as outro, L as log } from "./prompts-6OSVA7DJ.mjs";
4
- import { r as PlatformClient } from "./client-mC-dFGDD.mjs";
5
- import { c as import_picocolors, i as dim, o as formatCount } from "./output-BvdaehtE.mjs";
2
+ import { c as getToken } from "./auth-B5_tZLxT.mjs";
3
+ import { $ as wrapTextWithPrefix, H as outro, L as log } from "./dist-D3m88sjf.mjs";
4
+ import { i as dim, l as import_picocolors, o as errorStackFrames, s as formatCount } from "./output-C50ag2r3.mjs";
5
+ import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
6
+ import { t as sanitizeTerminalLogText } from "./terminal-log-text-D9ACPOuG.mjs";
6
7
  //#region src/cli/logs.ts
7
8
  async function runLogsCommand(root, filter, range, deployment, level) {
8
9
  console.log();
9
10
  const platform = readDeploymentPlatform(root);
10
11
  if (platform === "cloudflare") {
11
- const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-DoQrVHAt.mjs");
12
+ const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-BlYLlowZ.mjs");
12
13
  if (range !== "1h") log.warn("Cloudflare tail streams live logs; --range does not select historical entries.");
13
14
  if (level && level !== "all" && level !== "error") log.warn("Cloudflare tail cannot filter individual console levels; showing all invocation logs.");
14
15
  await tailCloudflareWorker(resolveCloudflareOperationContext(root), {
@@ -51,19 +52,35 @@ async function runLogsCommand(root, filter, range, deployment, level) {
51
52
  }
52
53
  function printEntry(entry) {
53
54
  const time = formatTime(entry.timestamp);
54
- const method = entry.method || "-";
55
- const url = entry.url || "-";
56
- const status = entry.status || "-";
55
+ const method = sanitizeTerminalLogText(entry.method || "-");
56
+ const url = sanitizeTerminalLogText(entry.url || "-");
57
+ const status = sanitizeTerminalLogText(entry.status || "-");
57
58
  const statusNum = parseInt(status, 10);
58
59
  const coloredStatus = entry.outcome === "exception" || statusNum >= 500 ? import_picocolors.default.red(status) : statusNum >= 400 ? import_picocolors.default.yellow(status) : status;
59
60
  console.log(wrapTextWithPrefix(process.stdout, `${method} ${url} ${coloredStatus}`, " ".repeat(time.length + 1), `${dim(time)} `));
60
61
  for (const l of entry.logs) {
61
- const text = l.message.map(String).join(" ");
62
+ const text = formatLogMessage(l);
62
63
  const level = l.level ?? "log";
63
64
  const marker = level === "error" ? import_picocolors.default.red(`[${level}]`) : level === "warn" ? import_picocolors.default.yellow(`[${level}]`) : dim(`[${level}]`);
64
65
  console.log(wrapTextWithPrefix(process.stdout, text, " ".repeat(level.length + 5), ` ${marker} `));
65
66
  }
66
- for (const ex of entry.exceptions) console.log(wrapTextWithPrefix(process.stdout, `${ex.name}: ${ex.message}`, " ".repeat(14), ` ${import_picocolors.default.red("[exception]")} `));
67
+ for (const ex of entry.exceptions) console.log(wrapTextWithPrefix(process.stdout, [sanitizeTerminalLogText(`${ex.name}: ${ex.message}`), ...errorStackFrames(ex).map((frame) => dim(sanitizeTerminalLogText(frame)))].join("\n"), " ".repeat(14), ` ${import_picocolors.default.red("[exception]")} `));
68
+ }
69
+ /**
70
+ * Join a console call's arguments; an argument that was an `Error` is followed
71
+ * by its dimmed stack frames. Arguments and frames are app data, so each is
72
+ * sanitized before the dim style is added.
73
+ */
74
+ function formatLogMessage(log) {
75
+ let text = "";
76
+ let separator = "";
77
+ for (const [index, value] of log.message.entries()) {
78
+ text += `${separator}${sanitizeTerminalLogText(String(value))}`;
79
+ const frames = errorStackFrames(log.errorInfo?.[index]);
80
+ if (frames.length > 0) text += `\n${frames.map((frame) => dim(sanitizeTerminalLogText(frame))).join("\n")}`;
81
+ separator = frames.length > 0 ? "\n" : " ";
82
+ }
83
+ return text;
67
84
  }
68
85
  function formatTime(ts) {
69
86
  return new Date(ts).toLocaleTimeString("en-GB", { hour12: false });
@@ -0,0 +1,2 @@
1
+ import { n as runMigrateCommand } from "./migrate-NLsjBbuM.mjs";
2
+ export { runMigrateCommand };
@@ -1,9 +1,10 @@
1
1
  import { a as join, n as dirname } from "./dist-BVqXeR_h.mjs";
2
2
  import { o as TYPED_CONFIG_FILE, s as loadTypedVoidConfigFile } from "./project-paths-GgcMozYz.mjs";
3
- import { g as validateConfig } from "./config-Br_JZD6u.mjs";
4
- import { n as VOID_LOCK_FILE, o as seedCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-Bktvwtpf.mjs";
5
- import "./wrangler-DhUerFkW.mjs";
6
- import { H as outro, L as log } from "./prompts-6OSVA7DJ.mjs";
3
+ import { g as validateConfig } from "./config-DiowPT80.mjs";
4
+ import { n as VOID_LOCK_FILE, o as seedCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-BmhBv3HV.mjs";
5
+ import "./wrangler-D9KTuqnv.mjs";
6
+ import { L as log } from "./dist-D3m88sjf.mjs";
7
+ import { d as printSuccess } from "./output-C50ag2r3.mjs";
7
8
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
8
9
  import { parseSync } from "vite";
9
10
  import { randomUUID } from "node:crypto";
@@ -29,6 +30,18 @@ const CONFIG_FILES = [
29
30
  "nuxt.config.js",
30
31
  "nuxt.config.mts"
31
32
  ];
33
+ function adapterPathError(file) {
34
+ return /* @__PURE__ */ new Error(`migrate: Update ${file} to pass ${GENERATED_PATH} to its Cloudflare adapter before removing the root Wrangler config.`);
35
+ }
36
+ function nitroPathError(file) {
37
+ return /* @__PURE__ */ new Error(`migrate: Set nitro.cloudflareDev.configPath to ${GENERATED_PATH} in ${file} before removing the root Wrangler config.`);
38
+ }
39
+ function mentionsCloudflareAdapter(source) {
40
+ return source.includes("@sveltejs/adapter-cloudflare") || source.includes("@astrojs/cloudflare") || source.includes("nitro-cloudflare-dev");
41
+ }
42
+ function applyEdits$1(source, edits) {
43
+ return edits.sort((a, b) => b.start - a.start).reduce((result, edit) => `${result.slice(0, edit.start)}${edit.text}${result.slice(edit.end)}`, source);
44
+ }
32
45
  function parseSource(source, file) {
33
46
  return parseSync(file, source).program;
34
47
  }
@@ -50,11 +63,11 @@ function walk(root) {
50
63
  function adapterImport(program, packageName, file) {
51
64
  const imports = (program.body ?? []).filter((node) => node.type === "ImportDeclaration" && node.source?.value === packageName);
52
65
  if (imports.length === 0) {
53
- if (walk(program).some((node) => node.type === "CallExpression" && (node.callee?.name === "require" || node.callee?.type === "Import") && node.arguments?.[0]?.value === packageName)) throw new Error(`migrate: Update ${file} to pass ${GENERATED_PATH} to its Cloudflare adapter before removing the root Wrangler config.`);
66
+ if (walk(program).some((node) => node.type === "CallExpression" && (node.callee?.name === "require" || node.callee?.type === "Import") && node.arguments?.[0]?.value === packageName)) throw adapterPathError(file);
54
67
  return;
55
68
  }
56
69
  const defaultImport = imports[0]?.specifiers?.find((specifier) => specifier.type === "ImportDefaultSpecifier");
57
- if (imports.length !== 1 || imports[0]?.specifiers?.length !== 1 || !defaultImport?.local?.name) throw new Error(`migrate: Update ${file} to pass ${GENERATED_PATH} to its Cloudflare adapter before removing the root Wrangler config.`);
70
+ if (imports.length !== 1 || imports[0]?.specifiers?.length !== 1 || !defaultImport?.local?.name) throw adapterPathError(file);
58
71
  return defaultImport.local.name;
59
72
  }
60
73
  /** Find an adapter's explicit root Wrangler JSON file, including custom build filenames. */
@@ -64,7 +77,7 @@ function discoverFrameworkWranglerFiles(root) {
64
77
  const path = join(root, file);
65
78
  if (!existsSync(path)) continue;
66
79
  const source = readFileSync(path, "utf8");
67
- if (!source.includes("@sveltejs/adapter-cloudflare") && !source.includes("@astrojs/cloudflare") && !source.includes("nitro-cloudflare-dev")) continue;
80
+ if (!mentionsCloudflareAdapter(source)) continue;
68
81
  const program = parseSource(source, file);
69
82
  const hasAdapter = walk(program).some((node) => node.type === "ImportDeclaration" && (node.source?.value === "@sveltejs/adapter-cloudflare" || node.source?.value === "@astrojs/cloudflare"));
70
83
  const hasNitro = walk(program).some((node) => node.type === "Literal" && node.value === "nitro-cloudflare-dev");
@@ -97,14 +110,14 @@ function setPath(object, key, file, edits, legacyName) {
97
110
  end: value.end,
98
111
  text: `'${GENERATED_PATH}'`
99
112
  });
100
- else throw new Error(`migrate: Update ${file} to pass ${GENERATED_PATH} to its Cloudflare adapter before removing the root Wrangler config.`);
113
+ else throw adapterPathError(file);
101
114
  }
102
115
  function patchAdapterCall(source, identifier, file, kind, legacyName) {
103
116
  const calls = walk(parseSource(source, file)).filter((node) => node.type === "CallExpression" && node.callee?.name === identifier);
104
- if (calls.length !== 1) throw new Error(`migrate: Update ${file} to pass ${GENERATED_PATH} to its Cloudflare adapter before removing the root Wrangler config.`);
117
+ if (calls.length !== 1) throw adapterPathError(file);
105
118
  const call = calls[0];
106
119
  const args = call.arguments ?? [];
107
- if (args.length > 1 || args.length === 1 && args[0]?.type !== "ObjectExpression") throw new Error(`migrate: Update ${file} to pass ${GENERATED_PATH} to its Cloudflare adapter before removing the root Wrangler config.`);
120
+ if (args.length > 1 || args.length === 1 && args[0]?.type !== "ObjectExpression") throw adapterPathError(file);
108
121
  if (args.length === 0) {
109
122
  const options = kind === "svelte" ? `{ config: '${GENERATED_PATH}', platformProxy: { configPath: '${GENERATED_PATH}' } }` : `{ configPath: '${GENERATED_PATH}' }`;
110
123
  return `${source.slice(0, call.end - 1)}${options}${source.slice(call.end - 1)}`;
@@ -121,9 +134,9 @@ function patchAdapterCall(source, identifier, file, kind, legacyName) {
121
134
  text: `platformProxy: { configPath: '${GENERATED_PATH}' }, `
122
135
  });
123
136
  else if (proxy.type === "ObjectExpression") setPath(proxy, "configPath", file, edits, legacyName);
124
- else throw new Error(`migrate: Update ${file} to pass ${GENERATED_PATH} to its Cloudflare adapter before removing the root Wrangler config.`);
137
+ else throw adapterPathError(file);
125
138
  }
126
- return edits.sort((a, b) => b.start - a.start).reduce((result, edit) => `${result.slice(0, edit.start)}${edit.text}${result.slice(edit.end)}`, source);
139
+ return applyEdits$1(source, edits);
127
140
  }
128
141
  /** Plan only edits whose adapter call can be identified without changing authored options. */
129
142
  function planFrameworkConfigMigration(root, legacyName) {
@@ -133,7 +146,7 @@ function planFrameworkConfigMigration(root, legacyName) {
133
146
  if (!existsSync(path)) continue;
134
147
  const original = readFileSync(path, "utf8");
135
148
  let updated = original;
136
- if (!original.includes("@sveltejs/adapter-cloudflare") && !original.includes("@astrojs/cloudflare") && !original.includes("nitro-cloudflare-dev")) continue;
149
+ if (!mentionsCloudflareAdapter(original)) continue;
137
150
  const program = parseSource(original, file);
138
151
  const svelteIdentifier = adapterImport(program, "@sveltejs/adapter-cloudflare", file);
139
152
  if (svelteIdentifier) updated = patchAdapterCall(updated, svelteIdentifier, file, "svelte", legacyName);
@@ -146,9 +159,9 @@ function planFrameworkConfigMigration(root, legacyName) {
146
159
  return modules?.type === "ArrayExpression" && modules.elements?.some((entry) => entry?.value === "nitro-cloudflare-dev");
147
160
  });
148
161
  if (nitroConfigurations.length > 0) {
149
- if (nitroConfigurations.length !== 1) throw new Error(`migrate: Set nitro.cloudflareDev.configPath to ${GENERATED_PATH} in ${file} before removing the root Wrangler config.`);
162
+ if (nitroConfigurations.length !== 1) throw nitroPathError(file);
150
163
  const nitro = asNode(nitroConfigurations[0].value);
151
- if (property(nitro, "preset")?.value !== "cloudflare-module") throw new Error(`migrate: Set nitro.cloudflareDev.configPath to ${GENERATED_PATH} in ${file} before removing the root Wrangler config.`);
164
+ if (property(nitro, "preset")?.value !== "cloudflare-module") throw nitroPathError(file);
152
165
  const dev = property(nitro, "cloudflareDev");
153
166
  const edits = [];
154
167
  if (!dev) edits.push({
@@ -157,8 +170,8 @@ function planFrameworkConfigMigration(root, legacyName) {
157
170
  text: `cloudflareDev: { configPath: '${GENERATED_PATH}' }, `
158
171
  });
159
172
  else if (dev.type === "ObjectExpression") setPath(dev, "configPath", file, edits, legacyName);
160
- else throw new Error(`migrate: Set nitro.cloudflareDev.configPath to ${GENERATED_PATH} in ${file} before removing the root Wrangler config.`);
161
- updated = edits.sort((a, b) => b.start - a.start).reduce((result, edit) => result.slice(0, edit.start) + edit.text + result.slice(edit.end), updated);
173
+ else throw nitroPathError(file);
174
+ updated = applyEdits$1(updated, edits);
162
175
  }
163
176
  if (updated !== original) patches.push({
164
177
  file,
@@ -301,9 +314,10 @@ function migrateLegacyVoidConfig(root) {
301
314
  }
302
315
  async function runMigrateCommand(root) {
303
316
  console.log();
304
- if (migrateLegacyVoidConfig(root)) log.success(`Migrated project settings to ${TYPED_CONFIG_FILE}. Commit it and ${VOID_LOCK_FILE} when present.`);
305
- else log.info("No legacy project configuration found.");
306
- outro("Configuration migration complete.");
317
+ if (migrateLegacyVoidConfig(root)) {
318
+ log.step(`Migrated project settings to ${TYPED_CONFIG_FILE}. Commit it and ${VOID_LOCK_FILE} when present.`);
319
+ printSuccess("Configuration migration complete.");
320
+ } else log.info("No legacy project configuration found.");
307
321
  }
308
322
  //#endregion
309
323
  export { migrateFrameworkAdapterPaths as i, runMigrateCommand as n, discoverFrameworkWranglerFiles as r, migrateLegacyVoidConfig as t };