void 0.25.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 (373) hide show
  1. package/AGENTS_TEMPLATE.md +1 -3
  2. package/README.md +19 -9
  3. package/dist/{account-cmd-DcR1ywt8.mjs → account-cmd-CfUXh_nU.mjs} +8 -7
  4. package/dist/{application-analysis-BVsVqc11.mjs → application-analysis-DKy02UY0.mjs} +21 -32
  5. package/dist/{application-routing-B7QEjqSR.mjs → application-routing-DQyUh_5S.mjs} +1 -1
  6. package/dist/{auth-7wuZ5ob8.mjs → auth-B5_tZLxT.mjs} +9 -9
  7. package/dist/{auth-CdgZ9uag.mjs → auth-BgX2qYSY.mjs} +1 -1
  8. package/dist/{auth-link-Z6E5DYvM.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-BdM4avI8.mjs → auth-router-Bap-pvbn.mjs} +6 -19
  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-CEE7D-hM.mjs → build-cmd-B58c8iS8.mjs} +8 -7
  14. package/dist/{cache-TcZnBLtH.mjs → cache-Bo52trKF.mjs} +8 -8
  15. package/dist/{cancel-deploy-CYoZmcmR.mjs → cancel-deploy-BZNz3Q26.mjs} +6 -5
  16. package/dist/{cf-access-AHKBzmuu.mjs → cf-access-ngGqZpHZ.mjs} +11 -12
  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.d.mts +1 -1
  22. package/dist/cli/env-schema-probe.mjs +5 -6
  23. package/dist/client-By4JjMw_.mjs +2 -0
  24. package/dist/{client-RsPo8wsP.mjs → client-C2Prx_Bi.mjs} +30 -8
  25. package/dist/{cloudflare-auth-Qdc7tw8F.mjs → cloudflare-auth-CuxfF6OA.mjs} +9 -17
  26. package/dist/{cloudflare-cmd-bhwCxAN6.mjs → cloudflare-cmd-lHqNlJGW.mjs} +6 -5
  27. package/dist/{cloudflare-config-Bktvwtpf.mjs → cloudflare-config-BmhBv3HV.mjs} +1 -1
  28. package/dist/{cloudflare-connect-CuhRgk3k.mjs → cloudflare-connect-2G3rL2rP.mjs} +4 -4
  29. package/dist/{cloudflare-operations-BhbK6yTq.mjs → cloudflare-operations-BlYLlowZ.mjs} +1 -1
  30. package/dist/{cloudflare-operations-CjaV4lZi.mjs → cloudflare-operations-CwI1bChl.mjs} +41 -70
  31. package/dist/{cloudflare-process-B-wekeR6.mjs → cloudflare-process-2-TfIEzB.mjs} +20 -22
  32. package/dist/{config-CyQ-wVd7.mjs → config-5r-YpMC-.mjs} +1 -1
  33. package/dist/{config-C_XRIPx2.mjs → config-B_ggY-IO.mjs} +3 -3
  34. package/dist/config-BtSFvXZx.mjs +2 -0
  35. package/dist/config-CLYAosnQ.mjs +78 -0
  36. package/dist/{config-BMHb8RCj.d.mts → config-CSa15FvD.d.mts} +1 -1
  37. package/dist/{config-Br_JZD6u.mjs → config-DiowPT80.mjs} +24 -30
  38. package/dist/config-entry.d.mts +1 -1
  39. package/dist/{config-write-B1f88wJA.mjs → config-write-AHGesphx.mjs} +8 -7
  40. package/dist/{connect-DCvUmPXY.mjs → connect-X0MUA1gk.mjs} +12 -11
  41. package/dist/{create-project-eAPgYq35.mjs → create-project-DxiyW6iX.mjs} +7 -7
  42. package/dist/{create-project-C734I-Mu.mjs → create-project-iwkbqiBU.mjs} +1 -1
  43. package/dist/{db-C07GEdKF.mjs → db-XnVMHzoV.mjs} +101 -133
  44. package/dist/{delete-pKMVsrpJ.mjs → delete-esYlMiSJ.mjs} +8 -8
  45. package/dist/{deploy-DfsAe-T0.mjs → deploy-BsEvnlJl.mjs} +2377 -2512
  46. package/dist/deploy-C1d-YTfp.mjs +2 -0
  47. package/dist/{dev-inbox-D64ZKUod.mjs → dev-inbox-CK-UuPob.mjs} +7 -16
  48. package/dist/{discover-BcPPiF1o.mjs → discover-CkCYv9T_.mjs} +1 -2
  49. package/dist/discover-EDUf6JJw.mjs +2 -0
  50. package/dist/{prompts-ZAuJlyCj.mjs → dist-Bx1z6Eva.mjs} +1 -1
  51. package/dist/{dist-AoCzRTJE.mjs → dist-Cegxq8gs.mjs} +8 -8
  52. package/dist/{prompts-6OSVA7DJ.mjs → dist-D3m88sjf.mjs} +10 -53
  53. package/dist/{domain-D3uA9ize.mjs → domain-CbbBWhWE.mjs} +29 -30
  54. package/dist/{dotenv-VQxupEUv.mjs → dotenv-BfU6eqFt.mjs} +20 -32
  55. package/dist/{drizzle-Beb2Am5S.mjs → drizzle-CF84FOVM.mjs} +16 -13
  56. package/dist/{email-z3o2cwjH.mjs → email-CpuT42g7.mjs} +24 -19
  57. package/dist/{email--tEtMoj_.mjs → email-d_Aux1vM.mjs} +1 -1
  58. package/dist/{entry-CF5wvH4w.mjs → entry-CMAkqBmU.mjs} +6 -6
  59. package/dist/{env-_v349JBd.mjs → env-BxocywBB.mjs} +25 -6
  60. package/dist/{env-D5liuQYR.mjs → env-DMA3cXZt.mjs} +1 -1
  61. package/dist/{env-public-BX_r8HR6.d.mts → env-public-DR7ZM6d-.d.mts} +1 -1
  62. package/dist/{env-raw-Cx8ElDdj.mjs → env-raw-jZpP5n47.mjs} +1 -2
  63. package/dist/{env-types-D5kds_OZ.mjs → env-types-CwXgeMgL.mjs} +1 -1
  64. package/dist/{env-validation-cZBvGWaP.mjs → env-validation-CrVNjsPm.mjs} +1 -1
  65. package/dist/{env-validation-vBSQ8gw5.mjs → env-validation-Dxdx_5wo.mjs} +17 -21
  66. package/dist/{env-3Q8-_2IH.mjs → env-w9jOyGZn.mjs} +10 -9
  67. package/dist/{fetch-_SeGZao9.d.mts → fetch-BPCYVi3H.d.mts} +20 -1
  68. package/dist/{fetch-BIZJh7vR.mjs → fetch-sAcwjzLO.mjs} +1 -1
  69. package/dist/{fetch-stream-IvCYKyQL.mjs → fetch-stream-PGgz4uGz.mjs} +26 -24
  70. package/dist/{fetch-stream-Bjf0hoZb.d.mts → fetch-stream-obvZ7fvO.d.mts} +1 -16
  71. package/dist/{gen-NjwoG9FK.mjs → gen-DtkQhvQg.mjs} +40 -57
  72. package/dist/gen-dA9hW7AV.mjs +2 -0
  73. package/dist/{github-cmd-DquUq-b1.mjs → github-cmd-D_FsOFxq.mjs} +65 -164
  74. package/dist/{handler-DghKr6dU.mjs → handler-BHAn2fZJ.mjs} +1 -0
  75. package/dist/{handler-CZ4nAylQ.d.mts → handler-CNAwjRcW.d.mts} +5 -12
  76. package/dist/{head-Do8P4puT.d.mts → head-C8K_iGe6.d.mts} +1 -1
  77. package/dist/{head-D_QRR5Yd.mjs → head-D2VF4ApL.mjs} +29 -51
  78. package/dist/{headers-2rKda9Y6.mjs → headers-DlfR78Nu.mjs} +3 -3
  79. package/dist/{help-DRZXC4fj.mjs → help-CVFBTmBx.mjs} +23 -38
  80. package/dist/help-DzKUrQvk.mjs +2 -0
  81. package/dist/{inbound-fRkqcXaC.mjs → inbound-PfQDLXc5.mjs} +23 -24
  82. package/dist/index.d.mts +19 -2
  83. package/dist/index.mjs +632 -532
  84. package/dist/{info-BmA3_IFZ.mjs → info-PYWwkWyt.mjs} +4 -4
  85. package/dist/{init-DT7yuuyl.mjs → init-Bw-fRKGp.mjs} +161 -197
  86. package/dist/{limits-Bq5LG8Id.d.mts → limits-CFsDKQvU.d.mts} +1 -10
  87. package/dist/{limits-Cjuk2VPm.mjs → limits-D0vD1M9A.mjs} +1 -22
  88. package/dist/{link-CXOlqh2F.mjs → link-DlPG8iX3.mjs} +10 -10
  89. package/dist/{list-eEWVJEPn.mjs → list-2GN7_ueV.mjs} +11 -9
  90. package/dist/{live-CB1y5IuC.mjs → live-CgQuTpqD.mjs} +15 -16
  91. package/dist/{live-Chw1eIMv.d.mts → live-Du8jXwOW.d.mts} +4 -2
  92. package/dist/{local-d1-Df4XpwhW.mjs → local-d1-ga5O_idV.mjs} +2 -2
  93. package/dist/{login-pWQHYVu2.mjs → login-D-Q4xw3Q.mjs} +7 -7
  94. package/dist/login-Dc-wuTDq.mjs +2 -0
  95. package/dist/{logs-DnxVX7TR.mjs → logs-rd8J-OFh.mjs} +28 -11
  96. package/dist/migrate-BHp07yJE.mjs +2 -0
  97. package/dist/{migrate-CV1on-yJ.mjs → migrate-NLsjBbuM.mjs} +34 -20
  98. package/dist/{mime-D5Nmdzf7.mjs → mime-DxCznlJq.mjs} +45 -95
  99. package/dist/{node-BkyRWRx8.mjs → node-DJicPvPj.mjs} +5 -5
  100. package/dist/{operator-args-CAVcmwUt.mjs → operator-args-BNsW5gfp.mjs} +10 -1
  101. package/dist/{operator-auth-CkmTE3rt.mjs → operator-auth-AzVLbrr3.mjs} +4 -8
  102. package/dist/{operator-client-LmwjxT6q.mjs → operator-client-BQtzyG-g.mjs} +3 -3
  103. package/dist/{operator-cmd-d-IEKgNk.mjs → operator-cmd-B6f6Cg9Z.mjs} +45 -14
  104. package/dist/operator-cmd-Cwn50lOV.mjs +2 -0
  105. package/dist/{output-BBsUwdyT.mjs → output-C50ag2r3.mjs} +44 -2
  106. package/dist/pages/client.d.mts +19 -51
  107. package/dist/pages/client.mjs +204 -225
  108. package/dist/pages/head-client.d.mts +1 -1
  109. package/dist/pages/head.d.mts +1 -1
  110. package/dist/pages/head.mjs +1 -1
  111. package/dist/pages/index.d.mts +2 -2
  112. package/dist/pages/index.mjs +6 -12
  113. package/dist/pages/islands-plugin.d.mts +1 -1
  114. package/dist/pages/islands-plugin.mjs +21 -25
  115. package/dist/pages/protocol.d.mts +2 -2
  116. package/dist/pages/protocol.mjs +2 -2
  117. package/dist/{plan-NPpwZ_kc.mjs → plan-BhLO2p4w.mjs} +4 -3
  118. package/dist/plan-CH2G51je.mjs +2 -0
  119. package/dist/{platform-args-Bzf8JPc2.mjs → platform-args-BoZkWQnJ.mjs} +4 -2
  120. package/dist/platform-args-DYgITk0D.mjs +2 -0
  121. package/dist/{platform-auth-config-0V0lA3pF.mjs → platform-auth-config-n603OANg.mjs} +45 -40
  122. package/dist/{platform-auth-protection-DFeJ-JkK.mjs → platform-auth-protection-zxDr0hWW.mjs} +9 -8
  123. package/dist/{platform-auth-recovery-ICy4muq6.mjs → platform-auth-recovery-tw9lgtgE.mjs} +8 -7
  124. package/dist/{platform-cmd-D7vSWMvV.mjs → platform-cmd-B8-bCb7t.mjs} +48 -23
  125. package/dist/{platform-cmd-BPySFOew.mjs → platform-cmd-C00YM14r.mjs} +1 -1
  126. package/dist/{platform-discovery-DDDUvnqp.mjs → platform-discovery-BC0HCKYt.mjs} +18 -4
  127. package/dist/{platform-domain-CUdY064e.mjs → platform-domain-p0kobLV8.mjs} +6 -5
  128. package/dist/{platform-lifecycle-Dm09JNkn.mjs → platform-lifecycle-D_QEY32D.mjs} +906 -389
  129. package/dist/{platform-lifecycle-BaUdTRPU.mjs → platform-lifecycle-vFqtNPPa.mjs} +1 -1
  130. package/dist/{platform-management-BSEc_ZeG.mjs → platform-management-BdYblvvE.mjs} +175 -32
  131. package/dist/{platform-management-Bp6aoH2C.mjs → platform-management-oi-SvI3f.mjs} +1 -1
  132. package/dist/{platform-plans-config-B0pOVQyW.mjs → platform-plans-config-CjiFv5J4.mjs} +5 -4
  133. package/dist/{platform-recovery-WOZ95Uze.mjs → platform-recovery-PvNS9Nl2.mjs} +3 -3
  134. package/dist/{platform-registry-KfNEF84O.mjs → platform-registry-P387v42A.mjs} +17 -10
  135. package/dist/platform-setup-DVe42Ws7.mjs +299 -0
  136. package/dist/{plugin-inference-CXWnn79A.mjs → plugin-inference-BlQbOL0P.mjs} +43 -42
  137. package/dist/prepare-DRUV-g3X.mjs +2 -0
  138. package/dist/{prepare-DnaKBi--.mjs → prepare-Do96654b.mjs} +8 -8
  139. package/dist/{prepare-39EvOhI6.mjs → prepare-Dq9hTIbo.mjs} +4 -3
  140. package/dist/{prerender-render-D9qbLs2f.mjs → prerender-render-Ct20jftc.mjs} +17 -3
  141. package/dist/prerender-render.mjs +1 -1
  142. package/dist/{project-IOjBU8R6.mjs → project-BiaPQ7ur.mjs} +1 -1
  143. package/dist/{project-BkbfDs0V.mjs → project-DQstYTxO.mjs} +1 -1
  144. package/dist/{project-cmd-Bs5A392E.mjs → project-cmd-ti8_yTcA.mjs} +19 -19
  145. package/dist/{project-team-ohAWWaew.mjs → project-team-CDPE1Tsg.mjs} +15 -18
  146. package/dist/{project-token-CP01Jna6.mjs → project-token-CkZ1cN0Z.mjs} +14 -17
  147. package/dist/{project-tsconfig-B8GeM0RM.mjs → project-tsconfig-CVJhNMxs.mjs} +2 -1
  148. package/dist/{project-zero-trust-BzkVgx35.mjs → project-zero-trust-DdjLR61k.mjs} +12 -9
  149. package/dist/{protocol-CjF_iI9X.d.mts → protocol-BPZaNqBo.d.mts} +4 -2
  150. package/dist/{protocol-U7bfjHmA.mjs → protocol-CfaUwNs8.mjs} +46 -49
  151. package/dist/{providers-CJlNS3kT.mjs → providers-BXuhmuub.mjs} +1 -12
  152. package/dist/{provision-Btj1jppf.mjs → provision-BfaLiWbj.mjs} +51 -42
  153. package/dist/{provision-BEv0k-qz.mjs → provision-Wu9ZBk9L.mjs} +2 -3
  154. package/dist/{requests-B3PBuGlX.mjs → requests-DFAqyYy8.mjs} +5 -5
  155. package/dist/resolve-project-BIeYs9Cw.mjs +2 -0
  156. package/dist/{resolve-project-BG5ORGID.mjs → resolve-project-CP8rZs_p.mjs} +6 -1
  157. package/dist/{rollback-DDub9GsO.mjs → rollback-BKYXBduI.mjs} +30 -37
  158. package/dist/{route-types-Clm4WD0B.mjs → route-types-CbtsIeFn.mjs} +1 -1
  159. package/dist/route-url-BgPja1GS.d.mts +5 -0
  160. package/dist/route-url-BjGv_KKY.mjs +28 -0
  161. package/dist/runner-9wjsSZx-.mjs +2 -0
  162. package/dist/{runner-Ol0TNjk6.mjs → runner-DMBKSrRk.mjs} +2 -2
  163. package/dist/{runner-mysql-DmWchSWJ.mjs → runner-mysql-CEzKtmFb.mjs} +8 -8
  164. package/dist/{runner-mysql-CEG5JozK.mjs → runner-mysql-CkFqZ6CE.mjs} +1 -1
  165. package/dist/{runner-pg-Bh4AgZdj.mjs → runner-pg-BGYRFdRp.mjs} +1 -1
  166. package/dist/runtime/ai.d.mts +11 -12
  167. package/dist/runtime/ai.mjs +47 -113
  168. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  169. package/dist/runtime/better-auth-mysql.mjs +4 -9
  170. package/dist/runtime/better-auth-pg.d.mts +1 -1
  171. package/dist/runtime/better-auth-pg.mjs +5 -10
  172. package/dist/runtime/better-auth.d.mts +1 -1
  173. package/dist/runtime/better-auth.mjs +3 -3
  174. package/dist/runtime/client-react.d.mts +2 -3
  175. package/dist/runtime/client-react.mjs +2 -2
  176. package/dist/runtime/client-solid.d.mts +2 -3
  177. package/dist/runtime/client-solid.mjs +2 -2
  178. package/dist/runtime/client-svelte.d.mts +2 -3
  179. package/dist/runtime/client-svelte.mjs +2 -2
  180. package/dist/runtime/client-vue.d.mts +2 -3
  181. package/dist/runtime/client-vue.mjs +2 -2
  182. package/dist/runtime/client.d.mts +2 -3
  183. package/dist/runtime/client.mjs +2 -2
  184. package/dist/runtime/db.mjs +1 -1
  185. package/dist/runtime/durable.mjs +3 -10
  186. package/dist/runtime/email/testing.mjs +5 -5
  187. package/dist/runtime/email.d.mts +2 -1
  188. package/dist/runtime/email.mjs +11 -27
  189. package/dist/runtime/env-public.d.mts +1 -1
  190. package/dist/runtime/env-public.mjs +15 -20
  191. package/dist/runtime/env.mjs +1 -1
  192. package/dist/runtime/fetch-stream.d.mts +2 -2
  193. package/dist/runtime/fetch-stream.mjs +1 -1
  194. package/dist/runtime/fetch.d.mts +2 -3
  195. package/dist/runtime/fetch.mjs +1 -1
  196. package/dist/runtime/handler.d.mts +1 -1
  197. package/dist/runtime/handler.mjs +2 -2
  198. package/dist/runtime/isr.mjs +1 -1
  199. package/dist/runtime/kv.mjs +10 -11
  200. package/dist/runtime/limits.d.mts +2 -2
  201. package/dist/runtime/limits.mjs +2 -2
  202. package/dist/runtime/live-client.d.mts +1 -1
  203. package/dist/runtime/live-client.mjs +12 -22
  204. package/dist/runtime/live-server.mjs +27 -35
  205. package/dist/runtime/live.d.mts +2 -2
  206. package/dist/runtime/live.mjs +2 -2
  207. package/dist/runtime/migration-handler.mjs +35 -86
  208. package/dist/runtime/queues.mjs +1 -1
  209. package/dist/runtime/remote/binding-handler.d.mts +2 -2
  210. package/dist/runtime/remote/binding-handler.mjs +8 -9
  211. package/dist/runtime/remote/index.mjs +27 -77
  212. package/dist/runtime/route-url.d.mts +2 -4
  213. package/dist/runtime/route-url.mjs +1 -1
  214. package/dist/runtime/routing.d.mts +1 -1
  215. package/dist/runtime/routing.mjs +15 -26
  216. package/dist/runtime/sandbox.d.mts +1 -1
  217. package/dist/runtime/sandbox.mjs +14 -24
  218. package/dist/runtime/sse.mjs +1 -1
  219. package/dist/runtime/storage.mjs +1 -1
  220. package/dist/runtime/validator.d.mts +1 -1
  221. package/dist/runtime/ws-server.d.mts +2 -2
  222. package/dist/runtime/ws-server.mjs +30 -61
  223. package/dist/runtime/ws.d.mts +1 -1
  224. package/dist/runtime/ws.mjs +1 -1
  225. package/dist/{sandbox-XZAqzFlG.d.mts → sandbox-C5LFoJMf.d.mts} +7 -7
  226. package/dist/{scan-C7okrLyM.mjs → scan-C3uDzz6J.mjs} +21 -18
  227. package/dist/{secret-3c72lY1U.mjs → secret-BAt2KMmO.mjs} +15 -15
  228. package/dist/{skills-BPQUGClu.mjs → skills-BgVMvQdy.mjs} +2 -2
  229. package/dist/{sse-CQNaDFFV.mjs → sse-CMvCgjNk.mjs} +1 -1
  230. package/dist/{subcommand-prompt-Dhom39bd.mjs → subcommand-prompt-BSlnD1fI.mjs} +2 -2
  231. package/dist/sveltekit.d.mts +0 -2
  232. package/dist/terminal-log-text-D9ACPOuG.mjs +32 -0
  233. package/dist/validate-BJr9LfXy.mjs +2 -0
  234. package/dist/{validate-ctOrgiS3.mjs → validate-C9qJArv7.mjs} +9 -28
  235. package/dist/{defer-YsYDUoii.mjs → validation-error-Dg9Recn1.mjs} +11 -11
  236. package/dist/{wrangler-DhUerFkW.mjs → wrangler-D9KTuqnv.mjs} +89 -194
  237. package/dist/{ws-CL1w7GXU.d.mts → ws-CChrrAU-.d.mts} +1 -1
  238. package/dist/{yarn-pnp-BV4AzNul.mjs → yarn-pnp-CUX_iTPA.mjs} +19 -27
  239. package/{skills/void/docs → docs}/guide/ai.md +69 -64
  240. package/{skills/void/docs → docs}/guide/app-types.md +1 -1
  241. package/{skills/void/docs → docs}/guide/auth.md +37 -1
  242. package/{skills/void/docs → docs}/guide/database/postgresql.md +2 -2
  243. package/{skills/void/docs → docs}/guide/database.md +23 -8
  244. package/{skills/void/docs → docs}/guide/edge/revalidation.md +1 -1
  245. package/{skills/void/docs → docs}/guide/edge/rewrites.md +2 -4
  246. package/{skills/void/docs → docs}/guide/email/receiving.md +2 -2
  247. package/{skills/void/docs → docs}/guide/email/sending.md +0 -2
  248. package/{skills/void/docs → docs}/guide/env-vars.md +4 -0
  249. package/{skills/void/docs → docs}/guide/jobs.md +2 -2
  250. package/{skills/void/docs → docs}/guide/live.md +12 -5
  251. package/{skills/void/docs → docs}/guide/pages-routing/actions-and-forms.md +21 -9
  252. package/{skills/void/docs → docs}/guide/pages-routing/loaders.md +7 -3
  253. package/{skills/void/docs → docs}/guide/pages-routing/markdown.md +15 -23
  254. package/{skills/void/docs → docs}/guide/pages-routing/overview.md +6 -4
  255. package/{skills/void/docs → docs}/guide/platform/administration/access.md +2 -10
  256. package/{skills/void/docs → docs}/guide/platform/administration/operations.md +3 -12
  257. package/{skills/void/docs → docs}/guide/platform/administration/projects.md +1 -1
  258. package/{skills/void/docs → docs}/guide/platform/development/local.md +4 -2
  259. package/{skills/void/docs → docs}/guide/platform/development/runtime.md +1 -1
  260. package/{skills/void/docs → docs}/guide/platform/development/schema-ci.md +1 -1
  261. package/{skills/void/docs → docs}/guide/platform/installation/credentials.md +2 -2
  262. package/{skills/void/docs → docs}/guide/platform/installation/domains.md +3 -1
  263. package/{skills/void/docs → docs}/guide/platform/installation/first-deployment.md +8 -2
  264. package/{skills/void/docs → docs}/guide/platform/installation/maintenance.md +7 -1
  265. package/{skills/void/docs → docs}/guide/platform/installation/setup.md +1 -1
  266. package/docs/guide/platform/installation/uninstall.md +102 -0
  267. package/{skills/void/docs → docs}/guide/project-collaboration.md +6 -2
  268. package/{skills/void/docs → docs}/guide/queues.md +0 -2
  269. package/{skills/void/docs → docs}/guide/remote-dev.md +5 -5
  270. package/{skills/void/docs → docs}/guide/sandboxes.md +41 -22
  271. package/{skills/void/docs → docs}/guide/sse.md +0 -2
  272. package/{skills/void/docs → docs}/guide/storage.md +7 -2
  273. package/{skills/void/docs → docs}/guide/websockets.md +4 -0
  274. package/docs/integrations/agents.md +37 -0
  275. package/{skills/void/docs → docs}/integrations/frameworks/astro.md +3 -3
  276. package/{skills/void/docs → docs}/integrations/frameworks/nuxt.md +6 -2
  277. package/{skills/void/docs → docs}/integrations/hono.md +15 -7
  278. package/{skills/void/docs → docs}/integrations/nodejs-bun-deno.md +1 -0
  279. package/{skills/void/docs → docs}/reference/api/auth.md +1 -1
  280. package/{skills/void/docs → docs}/reference/api/handlers.md +4 -2
  281. package/{skills/void/docs → docs}/reference/api/pages.md +4 -0
  282. package/{skills/void/docs → docs}/reference/api/resources.md +11 -14
  283. package/{skills/void/docs → docs}/reference/api.md +35 -34
  284. package/{skills/void/docs → docs}/reference/cli/auth.md +3 -6
  285. package/{skills/void/docs → docs}/reference/cli/database.md +3 -4
  286. package/{skills/void/docs → docs}/reference/cli/generate.md +1 -1
  287. package/{skills/void/docs → docs}/reference/cli/github.md +3 -12
  288. package/{skills/void/docs → docs}/reference/cli/platform-config.md +3 -3
  289. package/{skills/void/docs → docs}/reference/cli/platform-email.md +2 -3
  290. package/{skills/void/docs → docs}/reference/cli/platform-installation.md +15 -13
  291. package/{skills/void/docs → docs}/reference/cli/platform-operations.md +3 -0
  292. package/{skills/void/docs → docs}/reference/cli/platform-users.md +2 -2
  293. package/{skills/void/docs → docs}/reference/cli/platform.md +4 -2
  294. package/{skills/void/docs → docs}/reference/cli/project.md +5 -4
  295. package/{skills/void/docs → docs}/reference/cli/secrets.md +3 -3
  296. package/{skills/void/docs → docs}/reference/cli/setup.md +9 -11
  297. package/{skills/void/docs → docs}/reference/cli.md +2 -2
  298. package/{skills/void/docs → docs}/reference/config.md +13 -13
  299. package/{skills/void/docs → docs}/reference/resource-inference.md +2 -16
  300. package/package.json +34 -30
  301. package/schema.json +1 -1
  302. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +4 -1
  303. package/skills/void/SKILL.md +11 -5
  304. package/dist/cf-build-output-ChY6-XWP.mjs +0 -2
  305. package/dist/client-B4Me-9HE.mjs +0 -2
  306. package/dist/config-0acf1oys.mjs +0 -2
  307. package/dist/config-D8MOgiQV.mjs +0 -32
  308. package/dist/deploy-BDu1vhSH.mjs +0 -2
  309. package/dist/discover-AMCBXivQ.mjs +0 -2
  310. package/dist/fetch-error-Sp1R4mZv.d.mts +0 -20
  311. package/dist/gen-ById9r2j.mjs +0 -2
  312. package/dist/help-DPGBwomV.mjs +0 -2
  313. package/dist/login-C98-sw79.mjs +0 -2
  314. package/dist/migrate-CEu2X5DB.mjs +0 -2
  315. package/dist/plan-D1Q5rf-r.mjs +0 -2
  316. package/dist/platform-args-Cq6EjQro.mjs +0 -2
  317. package/dist/prepare-CnjcTV2s.mjs +0 -2
  318. package/dist/resolve-project-DtbidV4y.mjs +0 -2
  319. package/dist/route-url-CG7U-cRN.mjs +0 -15
  320. package/dist/runner-CXA9Fh8h.mjs +0 -2
  321. package/dist/validate-Dq_L3s0S.mjs +0 -2
  322. package/skills/void/docs/guide/platform/installation/uninstall.md +0 -69
  323. package/skills/void/docs/integrations/agents.md +0 -26
  324. package/dist/{runner-pg-D4OPlil-.mjs → runner-pg-DV8p_zjA.mjs} +4 -4
  325. package/{skills/void/docs → docs}/guide/database/d1.md +2 -2
  326. package/{skills/void/docs → docs}/guide/database/mysql.md +0 -0
  327. package/{skills/void/docs → docs}/guide/deployment.md +0 -0
  328. package/{skills/void/docs → docs}/guide/durable-state.md +0 -0
  329. package/{skills/void/docs → docs}/guide/edge/headers.md +0 -0
  330. package/{skills/void/docs → docs}/guide/edge/prerendering.md +0 -0
  331. package/{skills/void/docs → docs}/guide/edge/redirects.md +0 -0
  332. package/{skills/void/docs → docs}/guide/edge/static-assets.md +0 -0
  333. package/{skills/void/docs → docs}/guide/email/domains.md +0 -0
  334. package/{skills/void/docs → docs}/guide/email.md +0 -0
  335. package/{skills/void/docs → docs}/guide/index.md +0 -0
  336. package/{skills/void/docs → docs}/guide/kv.md +0 -0
  337. package/{skills/void/docs → docs}/guide/pages-routing/head.md +0 -0
  338. package/{skills/void/docs → docs}/guide/pages-routing/islands.md +2 -2
  339. package/{skills/void/docs → docs}/guide/pages-routing/layouts.md +0 -0
  340. package/{skills/void/docs → docs}/guide/pages-routing/view-transitions.md +0 -0
  341. package/{skills/void/docs → docs}/guide/platform/administration/email.md +0 -0
  342. package/{skills/void/docs → docs}/guide/platform/administration/plans.md +0 -0
  343. package/{skills/void/docs → docs}/guide/platform/administration/zero-trust.md +0 -0
  344. package/{skills/void/docs → docs}/guide/platform/installation/ci.md +0 -0
  345. package/{skills/void/docs → docs}/guide/platform/installation/prerequisites.md +0 -0
  346. package/{skills/void/docs → docs}/guide/platform-administration.md +0 -0
  347. package/{skills/void/docs → docs}/guide/platform-development.md +0 -0
  348. package/{skills/void/docs → docs}/guide/quickstart.md +0 -0
  349. package/{skills/void/docs → docs}/guide/self-hosted-platform.md +0 -0
  350. package/{skills/void/docs → docs}/guide/server-routing.md +3 -3
  351. package/{skills/void/docs → docs}/guide/ssg.md +0 -0
  352. package/{skills/void/docs → docs}/guide/ssr.md +0 -0
  353. package/{skills/void/docs → docs}/guide/type-safety.md +0 -0
  354. package/{skills/void/docs → docs}/guide/typed-fetch.md +0 -0
  355. package/{skills/void/docs → docs}/index.md +0 -0
  356. package/{skills/void/docs → docs}/integrations/cloudflare.md +0 -0
  357. package/{skills/void/docs → docs}/integrations/frameworks/analog.md +3 -3
  358. package/{skills/void/docs → docs}/integrations/frameworks/overview.md +0 -0
  359. package/{skills/void/docs → docs}/integrations/frameworks/react-router.md +3 -3
  360. package/{skills/void/docs → docs}/integrations/frameworks/sveltekit.md +1 -1
  361. package/{skills/void/docs → docs}/integrations/frameworks/tanstack-start.md +2 -2
  362. package/{skills/void/docs → docs}/reference/api/client.md +0 -0
  363. package/{skills/void/docs → docs}/reference/api/database.md +2 -2
  364. /package/{skills/void/docs → docs}/reference/api/durable.md +0 -0
  365. /package/{skills/void/docs → docs}/reference/api/env.md +0 -0
  366. /package/{skills/void/docs → docs}/reference/api/plugin.md +0 -0
  367. /package/{skills/void/docs → docs}/reference/api/rewrites.md +0 -0
  368. /package/{skills/void/docs → docs}/reference/api/types.md +0 -0
  369. /package/{skills/void/docs → docs}/reference/cli/deploy.md +0 -0
  370. /package/{skills/void/docs → docs}/reference/cli/domains.md +0 -0
  371. /package/{skills/void/docs → docs}/reference/cli/email.md +0 -0
  372. /package/{skills/void/docs → docs}/reference/cli/platform-zero-trust.md +0 -0
  373. /package/{skills/void/docs → docs}/reference/structure.md +0 -0
@@ -0,0 +1,2 @@
1
+ import { r as runDeploy, t as parseRootWranglerConfig, v as checkWranglerMigrationApplySet } from "./deploy-BsEvnlJl.mjs";
2
+ export { checkWranglerMigrationApplySet, parseRootWranglerConfig, runDeploy };
@@ -1,4 +1,4 @@
1
- import { t as MAX_MESSAGE_BYTES } from "./mime-D5Nmdzf7.mjs";
1
+ import { t as MAX_MESSAGE_BYTES } from "./mime-DxCznlJq.mjs";
2
2
  //#region src/runtime/email/dev-inbox.ts
3
3
  /**
4
4
  * In-memory capture sink for emails during local dev / tests.
@@ -88,12 +88,7 @@ const DEV_INBOX_ACK_VALUE = "captured";
88
88
  * `(4/3 + 3.75) * MAX_MESSAGE_BYTES` (5.09x) plus what has no MIME footprint of
89
89
  * its own — the JSON framing, ids, timestamps, and the `bcc` addresses
90
90
  * (`MAX_RECIPIENTS * MAX_ADDRESS_LENGTH`, 32 KB). 6x is the smallest integer
91
- * multiple that covers it. At 32 MiB this refused a legal 10.3 MB message of
92
- * control-character text (33.6 MB serialized) with a 413 that `sendEmail`
93
- * reported as `UPSTREAM_ERROR`. Measured: that message serializes to 3.26x
94
- * `MAX_MESSAGE_BYTES`, a legal 10 MiB one of CRLF text to 3.33x, and one of a
95
- * control-character subject (or display name, or custom header value) to
96
- * 4.93x — the body-only figure would not have covered it.
91
+ * multiple that covers it.
97
92
  *
98
93
  * Three caller strings have NO MIME footprint, so no multiple of
99
94
  * `MAX_MESSAGE_BYTES` bounds them: a `bcc` display name (never rendered), a
@@ -202,7 +197,7 @@ const DEFAULT_BUFFER_LIMIT = 100;
202
197
  *
203
198
  * A count cap alone does not bound the buffer: every item holds its full raw
204
199
  * MIME plus the decoded `text`/`html`, and a single message may reach
205
- * `MAX_MESSAGE_BYTES` (10 MiB), so 100 html-heavy messages is on the order of
200
+ * `MAX_MESSAGE_BYTES` (5 MiB), so 100 html-heavy messages is on the order of
206
201
  * gigabytes. This buffer lives in the Vite dev server's Node process — not in
207
202
  * workerd — so that is the dev server's own heap.
208
203
  */
@@ -222,24 +217,20 @@ function registerEmailSink(sink) {
222
217
  return () => r.sinks.delete(sink);
223
218
  }
224
219
  function dispatchToSinks(message) {
225
- const r = registry();
226
- if (r.sinks.size === 0) return false;
227
- for (const sink of r.sinks) try {
220
+ for (const sink of registry().sinks) try {
228
221
  sink(message);
229
222
  } catch (err) {
230
223
  console.warn("[email-dev-inbox] sink error:", err);
231
224
  }
232
- return true;
233
225
  }
234
226
  function hasActiveSink() {
235
227
  return registry().sinks.size > 0;
236
228
  }
237
229
  /** Get or create the shared dev-server ring buffer. */
238
- function getDevBuffer(limit = DEFAULT_BUFFER_LIMIT) {
230
+ function getDevBuffer() {
239
231
  let b = inboxGlobal[BUFFER_KEY];
240
232
  if (!b) {
241
233
  b = {
242
- limit,
243
234
  bytes: 0,
244
235
  items: []
245
236
  };
@@ -255,7 +246,7 @@ function pushToDevBuffer(message) {
255
246
  const b = getDevBuffer();
256
247
  b.items.push(message);
257
248
  b.bytes += messageBytes(message);
258
- while (b.items.length > b.limit || b.bytes > DEFAULT_BUFFER_BYTES && b.items.length > 1) {
249
+ while (b.items.length > DEFAULT_BUFFER_LIMIT || b.bytes > DEFAULT_BUFFER_BYTES && b.items.length > 1) {
259
250
  const evicted = b.items.shift();
260
251
  if (evicted) b.bytes -= messageBytes(evicted);
261
252
  }
@@ -303,4 +294,4 @@ function generateCaptureId() {
303
294
  return `dev_${Date.now().toString(36)}${hex}`;
304
295
  }
305
296
  //#endregion
306
- export { parseCapturedMessage as _, DEV_INBOX_ENV_VAR as a, serializeCapturedMessage as b, DEV_INBOX_TOKEN_ENV_VAR as c, captureMessage as d, clearDevBuffer as f, listDevMessages as g, hasActiveSink as h, DEV_INBOX_CAPTURE_URL as i, DEV_INBOX_TOKEN_HEADER as l, findDevMessage as m, DEV_INBOX_ACK_VALUE as n, DEV_INBOX_MAX_CAPTURE_BYTES as o, dispatchToSinks as p, DEV_INBOX_CAPTURE_PATH as r, DEV_INBOX_PREFIX as s, DEV_INBOX_ACK_HEADER as t, DEV_INBOX_TOKEN_QUERY as u, pushToDevBuffer as v, registerEmailSink as y };
297
+ export { listDevMessages as _, DEV_INBOX_ENV_VAR as a, registerEmailSink as b, DEV_INBOX_TOKEN_ENV_VAR as c, bytesToBase64 as d, captureMessage as f, hasActiveSink as g, findDevMessage as h, DEV_INBOX_CAPTURE_URL as i, DEV_INBOX_TOKEN_HEADER as l, dispatchToSinks as m, DEV_INBOX_ACK_VALUE as n, DEV_INBOX_MAX_CAPTURE_BYTES as o, clearDevBuffer as p, DEV_INBOX_CAPTURE_PATH as r, DEV_INBOX_PREFIX as s, DEV_INBOX_ACK_HEADER as t, DEV_INBOX_TOKEN_QUERY as u, parseCapturedMessage as v, serializeCapturedMessage as x, pushToDevBuffer as y };
@@ -25,12 +25,11 @@ function discoverSchema(root, paths = readProjectPaths(root)) {
25
25
  return null;
26
26
  }
27
27
  /**
28
- * Resolve the schema specifier for Drizzle Kit config.
28
+ * Resolve the root-relative schema specifier for Drizzle Kit config.
29
29
  * - File: `"./db/schema.ts"`
30
30
  * - Directory: `"./db/schema/*.ts"`
31
31
  */
32
32
  function schemaSpecifier(location, root) {
33
- if (!root) return location.type === "file" ? "./db/schema.ts" : "./db/schema/*.ts";
34
33
  const rel = relative(root, location.path);
35
34
  return location.type === "file" ? `./${rel}` : `./${rel}/*.ts`;
36
35
  }
@@ -0,0 +1,2 @@
1
+ import { t as discoverSchema } from "./discover-CkCYv9T_.mjs";
2
+ export { discoverSchema };
@@ -1,2 +1,2 @@
1
- import { K as select, L as log, X as text, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
1
+ import { K as select, L as log, X as text, tt as isCancel } from "./dist-D3m88sjf.mjs";
2
2
  export { isCancel, log, select, text };
@@ -93,7 +93,7 @@ function encode(decoded) {
93
93
  return writer.flush();
94
94
  }
95
95
  //#endregion
96
- //#region ../../node_modules/.pnpm/magic-string@1.4.2/node_modules/magic-string/dist/index.mjs
96
+ //#region ../../node_modules/.pnpm/magic-string@1.4.3/node_modules/magic-string/dist/index.mjs
97
97
  var BitSet = class BitSet {
98
98
  constructor(arg) {
99
99
  this.bits = arg instanceof BitSet ? arg.bits.slice() : [];
@@ -1102,7 +1102,7 @@ var MagicString = class MagicString {
1102
1102
  while (chunk !== last) {
1103
1103
  if (chunk.next !== this.byStart.get(chunk.end)) throw new MagicStringError("cannot overwrite across a split point");
1104
1104
  chunk = chunk.next;
1105
- chunk.edit("", false);
1105
+ chunk.edit("", false, !overwrite);
1106
1106
  }
1107
1107
  first.edit(content, storeName, !overwrite);
1108
1108
  } else {
@@ -1456,8 +1456,8 @@ var MagicString = class MagicString {
1456
1456
  if (this._hasRemovedContent(match.index, match.index + match[0].length)) return false;
1457
1457
  const replacement = getReplacement(match, this.original);
1458
1458
  if (replacement === match[0]) return true;
1459
- if (match[0].length === 0) this.appendRight(match.index, replacement);
1460
- else this.overwrite(match.index, match.index + match[0].length, replacement);
1459
+ if (match[0].length === 0) this.appendRight(match.index - this.offset, replacement);
1460
+ else this.overwrite(match.index - this.offset, match.index + match[0].length - this.offset, replacement);
1461
1461
  return true;
1462
1462
  };
1463
1463
  if (searchValue.global) {
@@ -1484,8 +1484,8 @@ var MagicString = class MagicString {
1484
1484
  if (typeof replacement === "function") replacement = replacement(string, index, original);
1485
1485
  else replacement = expandReplacement(replacement, string, index, original, [], void 0);
1486
1486
  if (string !== replacement) {
1487
- if (string.length === 0) this.appendRight(index, replacement);
1488
- else this.overwrite(index, index + string.length, replacement);
1487
+ if (string.length === 0) this.appendRight(index - this.offset, replacement);
1488
+ else this.overwrite(index - this.offset, index + string.length - this.offset, replacement);
1489
1489
  }
1490
1490
  break;
1491
1491
  }
@@ -1506,7 +1506,7 @@ var MagicString = class MagicString {
1506
1506
  for (let index = 0; index <= original.length; index += 1) {
1507
1507
  if (this._hasRemovedContent(index, index)) continue;
1508
1508
  const _replacement = typeof replacement === "function" ? replacement("", index, original) : expandReplacement(replacement, "", index, original, [], void 0);
1509
- if (_replacement !== "") this.appendRight(index, _replacement);
1509
+ if (_replacement !== "") this.appendRight(index - this.offset, _replacement);
1510
1510
  }
1511
1511
  return this;
1512
1512
  }
@@ -1514,7 +1514,7 @@ var MagicString = class MagicString {
1514
1514
  if (this._hasRemovedContent(index, index + stringLength)) continue;
1515
1515
  const previous = original.slice(index, index + stringLength);
1516
1516
  const _replacement = typeof replacement === "function" ? replacement(previous, index, original) : expandReplacement(replacement, previous, index, original, [], void 0);
1517
- if (previous !== _replacement) this.overwrite(index, index + stringLength, _replacement);
1517
+ if (previous !== _replacement) this.overwrite(index - this.offset, index + stringLength - this.offset, _replacement);
1518
1518
  }
1519
1519
  return this;
1520
1520
  }
@@ -125,8 +125,8 @@ const fastStringWidth$2 = (input, options = {}) => {
125
125
  };
126
126
  //#endregion
127
127
  //#region ../../node_modules/.pnpm/fast-wrap-ansi@0.2.2/node_modules/fast-wrap-ansi/lib/main.js
128
- const ESC$2 = "\x1B";
129
- const CSI$2 = "›";
128
+ const ESC$1 = "\x1B";
129
+ const CSI$1 = "›";
130
130
  const END_CODE$1 = 39;
131
131
  const ANSI_ESCAPE_BELL$1 = "\x07";
132
132
  const ANSI_CSI$1 = "[";
@@ -147,8 +147,8 @@ const getClosingCode$1 = (openingCode) => {
147
147
  if (openingCode === 9) return 29;
148
148
  if (openingCode === 0) return 0;
149
149
  };
150
- const wrapAnsiCode$1 = (code) => `${ESC$2}${ANSI_CSI$1}${code}${ANSI_SGR_TERMINATOR$1}`;
151
- const wrapAnsiHyperlink$1 = (url) => `${ESC$2}${ANSI_ESCAPE_LINK$1}${url}${ANSI_ESCAPE_BELL$1}`;
150
+ const wrapAnsiCode$1 = (code) => `${ESC$1}${ANSI_CSI$1}${code}${ANSI_SGR_TERMINATOR$1}`;
151
+ const wrapAnsiHyperlink$1 = (url) => `${ESC$1}${ANSI_ESCAPE_LINK$1}${url}${ANSI_ESCAPE_BELL$1}`;
152
152
  const wrapWord$1 = (rows, word, columns) => {
153
153
  const characters = word[Symbol.iterator]();
154
154
  let isInsideEscape = false;
@@ -166,7 +166,7 @@ const wrapWord$1 = (rows, word, columns) => {
166
166
  rows.push(character);
167
167
  visible = 0;
168
168
  }
169
- if (character === ESC$2 || character === CSI$2) {
169
+ if (character === ESC$1 || character === CSI$1) {
170
170
  isInsideEscape = true;
171
171
  isInsideLinkEscape = word.startsWith(ANSI_ESCAPE_LINK$1, rawCharacterIndex + 1);
172
172
  }
@@ -265,7 +265,7 @@ const exec$1 = (string, columns, options = {}) => {
265
265
  inSurrogate = character >= "\ud800" && character <= "\udbff";
266
266
  if (inSurrogate) continue;
267
267
  } else inSurrogate = false;
268
- if (character === ESC$2 || character === CSI$2) {
268
+ if (character === ESC$1 || character === CSI$1) {
269
269
  GROUP_REGEX$1.lastIndex = i + 1;
270
270
  const groups = GROUP_REGEX$1.exec(preString)?.groups;
271
271
  if (groups?.code !== void 0) {
@@ -803,51 +803,8 @@ var n = class extends y {
803
803
  }
804
804
  };
805
805
  //#endregion
806
- //#region ../../node_modules/.pnpm/sisteransi@2.0.0/node_modules/sisteransi/dist/index.js
806
+ //#region ../../node_modules/.pnpm/@voidzero-dev+vite-plus-prompts@1.1.0_patch_hash=396e9a3b8f1c6fa1cbcbc9cef53b838feb28dc9dc7dd99b67d87c108854bc49a/node_modules/@voidzero-dev/vite-plus-prompts/dist/index.mjs
807
807
  var import_picocolors = /* @__PURE__ */ __toESM(require_picocolors(), 1);
808
- const ESC$1 = "\x1B";
809
- const CSI$1 = `${ESC$1}[`;
810
- const cursor = {
811
- to(x, y) {
812
- if (!y) return `${CSI$1}${x + 1}G`;
813
- return `${CSI$1}${y + 1};${x + 1}H`;
814
- },
815
- move(x, y) {
816
- let ret = "";
817
- if (x < 0) ret += `${CSI$1}${-x}D`;
818
- else if (x > 0) ret += `${CSI$1}${x}C`;
819
- if (y < 0) ret += `${CSI$1}${-y}A`;
820
- else if (y > 0) ret += `${CSI$1}${y}B`;
821
- return ret;
822
- },
823
- up: (count = 1) => `${CSI$1}${count}A`,
824
- down: (count = 1) => `${CSI$1}${count}B`,
825
- forward: (count = 1) => `${CSI$1}${count}C`,
826
- backward: (count = 1) => `${CSI$1}${count}D`,
827
- nextLine: (count = 1) => `${CSI$1}E`.repeat(count),
828
- prevLine: (count = 1) => `${CSI$1}F`.repeat(count),
829
- left: `${CSI$1}G`,
830
- hide: `${CSI$1}?25l`,
831
- show: `${CSI$1}?25h`,
832
- save: `${ESC$1}7`,
833
- restore: `${ESC$1}8`
834
- };
835
- const erase = {
836
- screen: `${CSI$1}2J`,
837
- up: (count = 1) => `${CSI$1}1J`.repeat(count),
838
- down: (count = 1) => `${CSI$1}J`.repeat(count),
839
- line: `${CSI$1}2K`,
840
- lineEnd: `${CSI$1}K`,
841
- lineStart: `${CSI$1}1K`,
842
- lines(count) {
843
- let clear = "";
844
- for (let i = 0; i < count; i++) clear += this.line + (i < count - 1 ? cursor.up() : "");
845
- if (count) clear += cursor.left;
846
- return clear;
847
- }
848
- };
849
- //#endregion
850
- //#region ../prompts/index.mjs
851
808
  const isAmbiguous = (x) => {
852
809
  return x === 161 || x === 164 || x === 167 || x === 168 || x === 170 || x === 173 || x === 174 || x >= 176 && x <= 180 || x >= 182 && x <= 186 || x >= 188 && x <= 191 || x === 198 || x === 208 || x === 215 || x === 216 || x >= 222 && x <= 225 || x === 230 || x >= 232 && x <= 234 || x === 236 || x === 237 || x === 240 || x === 242 || x === 243 || x >= 247 && x <= 250 || x === 252 || x === 254 || x === 257 || x === 273 || x === 275 || x === 283 || x === 294 || x === 295 || x === 299 || x >= 305 && x <= 307 || x === 312 || x >= 319 && x <= 322 || x === 324 || x >= 328 && x <= 331 || x === 333 || x === 338 || x === 339 || x === 358 || x === 359 || x === 363 || x === 462 || x === 464 || x === 466 || x === 468 || x === 470 || x === 472 || x === 474 || x === 476 || x === 593 || x === 609 || x === 708 || x === 711 || x >= 713 && x <= 715 || x === 717 || x === 720 || x >= 728 && x <= 731 || x === 733 || x === 735 || x >= 768 && x <= 879 || x >= 913 && x <= 929 || x >= 931 && x <= 937 || x >= 945 && x <= 961 || x >= 963 && x <= 969 || x === 1025 || x >= 1040 && x <= 1103 || x === 1105 || x === 8208 || x >= 8211 && x <= 8214 || x === 8216 || x === 8217 || x === 8220 || x === 8221 || x >= 8224 && x <= 8226 || x >= 8228 && x <= 8231 || x === 8240 || x === 8242 || x === 8243 || x === 8245 || x === 8251 || x === 8254 || x === 8308 || x === 8319 || x >= 8321 && x <= 8324 || x === 8364 || x === 8451 || x === 8453 || x === 8457 || x === 8467 || x === 8470 || x === 8481 || x === 8482 || x === 8486 || x === 8491 || x === 8531 || x === 8532 || x >= 8539 && x <= 8542 || x >= 8544 && x <= 8555 || x >= 8560 && x <= 8569 || x === 8585 || x >= 8592 && x <= 8601 || x === 8632 || x === 8633 || x === 8658 || x === 8660 || x === 8679 || x === 8704 || x === 8706 || x === 8707 || x === 8711 || x === 8712 || x === 8715 || x === 8719 || x === 8721 || x === 8725 || x === 8730 || x >= 8733 && x <= 8736 || x === 8739 || x === 8741 || x >= 8743 && x <= 8748 || x === 8750 || x >= 8756 && x <= 8759 || x === 8764 || x === 8765 || x === 8776 || x === 8780 || x === 8786 || x === 8800 || x === 8801 || x >= 8804 && x <= 8807 || x === 8810 || x === 8811 || x === 8814 || x === 8815 || x === 8834 || x === 8835 || x === 8838 || x === 8839 || x === 8853 || x === 8857 || x === 8869 || x === 8895 || x === 8978 || x >= 9312 && x <= 9449 || x >= 9451 && x <= 9547 || x >= 9552 && x <= 9587 || x >= 9600 && x <= 9615 || x >= 9618 && x <= 9621 || x === 9632 || x === 9633 || x >= 9635 && x <= 9641 || x === 9650 || x === 9651 || x === 9654 || x === 9655 || x === 9660 || x === 9661 || x === 9664 || x === 9665 || x >= 9670 && x <= 9672 || x === 9675 || x >= 9678 && x <= 9681 || x >= 9698 && x <= 9701 || x === 9711 || x === 9733 || x === 9734 || x === 9737 || x === 9742 || x === 9743 || x === 9756 || x === 9758 || x === 9792 || x === 9794 || x === 9824 || x === 9825 || x >= 9827 && x <= 9829 || x >= 9831 && x <= 9834 || x === 9836 || x === 9837 || x === 9839 || x === 9886 || x === 9887 || x === 9919 || x >= 9926 && x <= 9933 || x >= 9935 && x <= 9939 || x >= 9941 && x <= 9953 || x === 9955 || x === 9960 || x === 9961 || x >= 9963 && x <= 9969 || x === 9972 || x >= 9974 && x <= 9977 || x === 9979 || x === 9980 || x === 9982 || x === 9983 || x === 10045 || x >= 10102 && x <= 10111 || x >= 11094 && x <= 11097 || x >= 12872 && x <= 12879 || x >= 57344 && x <= 63743 || x >= 65024 && x <= 65039 || x === 65533 || x >= 127232 && x <= 127242 || x >= 127248 && x <= 127277 || x >= 127280 && x <= 127337 || x >= 127344 && x <= 127373 || x === 127375 || x === 127376 || x >= 127387 && x <= 127404 || x >= 917760 && x <= 917999 || x >= 983040 && x <= 1048573 || x >= 1048576 && x <= 1114109;
853
810
  };
@@ -1885,9 +1842,9 @@ const spinner = ({ indicator = "dots", onCancel, output = process.stdout, cancel
1885
1842
  hard: true,
1886
1843
  trim: false
1887
1844
  }).split("\n");
1888
- if (prevLines.length > 1) output.write(cursor.up(prevLines.length - 1));
1889
- output.write(cursor.to(0));
1890
- output.write(erase.down());
1845
+ if (prevLines.length > 1) output.write(import_src.cursor.up(prevLines.length - 1));
1846
+ output.write(import_src.cursor.to(0));
1847
+ output.write(import_src.erase.down());
1891
1848
  };
1892
1849
  const hasGuide = getGuide(opts);
1893
1850
  const startLoop = () => {
@@ -1,8 +1,8 @@
1
- import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-BkbfDs0V.mjs";
2
- import { c as getToken } from "./auth-7wuZ5ob8.mjs";
3
- import { B as note, L as log } from "./prompts-6OSVA7DJ.mjs";
4
- import { r as PlatformClient } from "./client-RsPo8wsP.mjs";
5
- import { c as import_picocolors } from "./output-BBsUwdyT.mjs";
1
+ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
+ import { c as getToken } from "./auth-B5_tZLxT.mjs";
3
+ import { L as log } from "./dist-D3m88sjf.mjs";
4
+ import { d as printSuccess, l as import_picocolors, u as note } from "./output-C50ag2r3.mjs";
5
+ import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
6
6
  //#region src/cli/domain.ts
7
7
  async function runDomainCommand(root, args) {
8
8
  const platform = readDeploymentPlatform(root);
@@ -40,15 +40,16 @@ async function runDomainCommand(root, args) {
40
40
  }
41
41
  async function runCloudflareDomainCommand(root, args) {
42
42
  if (args.projectSlug) throw new Error("domain: --project selects a Void platform project and is not used for direct Cloudflare apps.");
43
- const { changeCloudflareDomain, listCloudflareDomains } = await import("./cloudflare-operations-BhbK6yTq.mjs");
43
+ const { changeCloudflareDomain, listCloudflareDomains } = await import("./cloudflare-operations-BlYLlowZ.mjs");
44
44
  if (args.subcommand === "add") {
45
45
  const result = await changeCloudflareDomain(root, args.hostname, "add");
46
- log.success(result.modified ? `Domain ${args.hostname} added and activated on Cloudflare.` : `Domain ${args.hostname} is already configured.`);
47
46
  note("Cloudflare Custom Domains manages the DNS record and TLS certificate in the zone on your account.", "Cloudflare Domain");
47
+ if (result.modified) printSuccess(`Domain ${args.hostname} added and activated on Cloudflare.`);
48
+ else log.info(`Domain ${args.hostname} is already configured.`);
48
49
  return;
49
50
  }
50
51
  if (args.subcommand === "delete") {
51
- if ((await changeCloudflareDomain(root, args.hostname, "delete")).modified) log.success(`Domain ${args.hostname} removed from Cloudflare.`);
52
+ if ((await changeCloudflareDomain(root, args.hostname, "delete")).modified) printSuccess(`Domain ${args.hostname} removed from Cloudflare.`);
52
53
  else log.info(`Domain ${args.hostname} is not configured.`);
53
54
  return;
54
55
  }
@@ -72,25 +73,17 @@ async function runCloudflareDomainCommand(root, args) {
72
73
  }
73
74
  async function domainAdd(client, projectId, hostname) {
74
75
  const domain = await client.addDomain(projectId, hostname);
75
- log.success(`Domain ${hostname} added (status: ${domain.status})`);
76
- let cnameSection;
77
- let ownershipSection;
78
- if (domain.cname_target) cnameSection = `CNAME (traffic)\n ${hostname} → ${domain.cname_target}`;
79
- if (domain.ownership_verification) ownershipSection = `TXT (ownership verification)\n ${domain.ownership_verification.name} → ${domain.ownership_verification.value}`;
80
- const recordSections = [cnameSection, ownershipSection].filter((s) => s !== void 0);
76
+ const recordSections = [domain.cname_target ? cnameRecord(hostname, domain.cname_target) : void 0, domain.ownership_verification ? ownershipRecord(domain.ownership_verification) : void 0].filter((s) => s !== void 0);
81
77
  if (recordSections.length > 0) {
82
78
  const summary = `Add ${recordSections.length === 1 ? "the record above" : "the records above"} to your DNS, then run \`void domain status ${hostname}\` to check progress.`;
83
79
  note([...recordSections, summary].join("\n\n"), "DNS Setup");
84
80
  }
81
+ printSuccess(`Domain ${hostname} added (status: ${domain.status}).`);
85
82
  }
86
83
  async function domainRemove(client, projectId, hostname) {
87
- const domain = (await client.listDomains(projectId)).find((d) => d.hostname === hostname);
88
- if (!domain) {
89
- log.error(`domain: Domain '${hostname}' not found on this project.`);
90
- process.exit(1);
91
- }
84
+ const domain = await findProjectDomain(client, projectId, hostname);
92
85
  await client.removeDomain(projectId, domain.id);
93
- log.success(`Domain ${hostname} removed.`);
86
+ printSuccess(`Domain ${hostname} removed.`);
94
87
  }
95
88
  async function domainList(client, projectId) {
96
89
  const domains = await client.listDomains(projectId);
@@ -139,11 +132,7 @@ function computeRollup(status) {
139
132
  };
140
133
  }
141
134
  async function domainStatus(client, projectId, hostname, verbose) {
142
- const domain = (await client.listDomains(projectId)).find((d) => d.hostname === hostname);
143
- if (!domain) {
144
- log.error(`domain: Domain '${hostname}' not found on this project.`);
145
- process.exit(1);
146
- }
135
+ const domain = await findProjectDomain(client, projectId, hostname);
147
136
  const status = await client.getDomainStatus(projectId, domain.id);
148
137
  const rollup = computeRollup(status);
149
138
  const rollupLines = [`Hostname: ${status.hostname}`, `Status: ${rollup.state} — ${rollup.diagnostic}`];
@@ -155,12 +144,22 @@ async function domainStatus(client, projectId, hostname, verbose) {
155
144
  if (status.verification_errors && status.verification_errors.length > 0) rollupLines.push(` Errors: ${status.verification_errors.join(", ")}`);
156
145
  }
157
146
  note(rollupLines.join("\n"), "Domain Status");
158
- let cnameSection;
159
- let ownershipSection;
160
- if (status.ssl_status !== "active") cnameSection = `CNAME (traffic)\n ${status.hostname} → ${status.cname_target}`;
161
- if (status.ownership_verification) ownershipSection = `TXT (ownership verification)\n ${status.ownership_verification.name} → ${status.ownership_verification.value}`;
162
- const pendingRecords = [cnameSection, ownershipSection].filter((s) => s !== void 0);
147
+ const pendingRecords = [status.ssl_status !== "active" ? cnameRecord(status.hostname, status.cname_target) : void 0, status.ownership_verification ? ownershipRecord(status.ownership_verification) : void 0].filter((s) => s !== void 0);
163
148
  if (pendingRecords.length > 0) note(pendingRecords.join("\n\n"), pendingRecords.length === 1 ? "Add this DNS record to your provider" : "Add these DNS records to your provider");
164
149
  }
150
+ async function findProjectDomain(client, projectId, hostname) {
151
+ const domain = (await client.listDomains(projectId)).find((d) => d.hostname === hostname);
152
+ if (!domain) {
153
+ log.error(`domain: Domain '${hostname}' not found on this project.`);
154
+ process.exit(1);
155
+ }
156
+ return domain;
157
+ }
158
+ function cnameRecord(hostname, target) {
159
+ return `CNAME (traffic)\n ${hostname} → ${target}`;
160
+ }
161
+ function ownershipRecord(record) {
162
+ return `TXT (ownership verification)\n ${record.name} → ${record.value}`;
163
+ }
165
164
  //#endregion
166
165
  export { runDomainCommand };
@@ -1,9 +1,15 @@
1
1
  import { existsSync, readFileSync } from "node:fs";
2
+ import { parseEnv } from "node:util";
2
3
  //#region src/shared/dotenv.ts
3
4
  /**
4
- * Shared dotenv parser + variable expander used by local `.env` consumers and
5
- * explicit `void secret sync <file>` input. A single source of truth avoids drift when two
6
- * hand-rolled parsers diverged on quoting / expansion semantics.
5
+ * Shared dotenv parser + variable expander used by local `.env` consumers.
6
+ *
7
+ * Grammar: lines and values follow Vite's parser (`node:util` `parseEnv`).
8
+ * Wrangler's dotenv (the dev Worker) agrees with it on inline `#` comments,
9
+ * single, double and backtick quotes, `\n` in double quotes, multi-line
10
+ * quoted values and the `export ` prefix. Keys that are not plain
11
+ * identifiers (`A.B`, `A-B`, `export\tA`) are skipped, and `KEY: value`
12
+ * is not read: Wrangler accepts it but Vite does not.
7
13
  *
8
14
  * Expansion supports `${VAR}` and `$VAR`, a `\$VAR` literal-escape, and
9
15
  * transitive references across earlier entries in the same record. Cycles
@@ -22,38 +28,19 @@ import { existsSync, readFileSync } from "node:fs";
22
28
  /** Valid dotenv key — ASCII letter/underscore followed by letters/digits/underscore. */
23
29
  const VALID_KEY = /^[A-Za-z_][A-Za-z0-9_]*$/;
24
30
  /**
25
- * Parse a single `KEY=VALUE` line into `{ key, value }`, stripping matching
26
- * single/double quotes around the value. Returns `null` for blanks, comments,
27
- * and non-assignment lines.
28
- */
29
- function parseDotenvLine(line) {
30
- const trimmed = line.trim();
31
- if (!trimmed || trimmed.startsWith("#")) return null;
32
- const equalsIndex = trimmed.indexOf("=");
33
- if (equalsIndex === -1) return null;
34
- const key = trimmed.slice(0, equalsIndex).trim();
35
- let value = trimmed.slice(equalsIndex + 1).trim();
36
- if (value.startsWith("\"") && value.endsWith("\"") || value.startsWith("'") && value.endsWith("'")) value = value.slice(1, -1);
37
- return {
38
- key,
39
- value
40
- };
41
- }
42
- /**
43
31
  * Parse the raw contents of a dotenv file into a record, optionally
44
32
  * expanding `${VAR}` / `$VAR` references against earlier entries.
45
33
  */
46
34
  function parseDotenv(content, options = {}) {
47
35
  const { expand: shouldExpand = true, skipInvalidKeys = true, onWarn } = options;
48
36
  const env = {};
49
- for (const line of content.split("\n")) {
50
- const parsed = parseDotenvLine(line);
51
- if (!parsed) continue;
52
- if (!VALID_KEY.test(parsed.key)) {
37
+ for (const [key, value] of Object.entries(parseEnv(content))) {
38
+ if (value === void 0) continue;
39
+ if (!VALID_KEY.test(key)) {
53
40
  if (skipInvalidKeys) continue;
54
- throw new Error(`dotenv: Invalid key '${parsed.key}'.`);
41
+ throw new Error(`dotenv: Invalid key '${key}'.`);
55
42
  }
56
- env[parsed.key] = parsed.value;
43
+ env[key] = value;
57
44
  }
58
45
  return shouldExpand ? expandDotenv(env, { onWarn }) : env;
59
46
  }
@@ -152,10 +139,11 @@ function expandValue(value, resolve) {
152
139
  return result;
153
140
  }
154
141
  /**
155
- * Wrangler 4.131's bundled `dotenv` LINE regex (verbatim), used ONLY to detect the
156
- * declared KEYS wrangler would load — including the OPTIONAL `export ` prefix, the `KEY: val`
157
- * form, and single/double/backtick quoting — so a transport-redirect / config-override fence
158
- * sees exactly what wrangler's per-command dotenv reload would. We read keys, never values.
142
+ * Wrangler's bundled `dotenv` LINE regex (verbatim; checked against wrangler 4.147), used
143
+ * ONLY to detect the declared KEYS wrangler would load — including the OPTIONAL `export `
144
+ * prefix, the `KEY: val` form, and single/double/backtick quoting — so a transport-redirect /
145
+ * config-override fence and the reserved `__VOID_` name check see exactly what wrangler's
146
+ * dotenv load would. We read keys, never values.
159
147
  */
160
148
  const WRANGLER_DOTENV_LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/gm;
161
149
  /**
@@ -178,4 +166,4 @@ function scanWranglerDotenvKeys(filePath) {
178
166
  return keys;
179
167
  }
180
168
  //#endregion
181
- export { parseDotenvFile as n, scanWranglerDotenvKeys as r, expandDotenv as t };
169
+ export { scanWranglerDotenvKeys as n, parseDotenvFile as t };
@@ -1,7 +1,10 @@
1
- import { a as isVoidSocialAuthProvider } from "./providers-CJlNS3kT.mjs";
1
+ import { a as isVoidSocialAuthProvider } from "./providers-BXuhmuub.mjs";
2
2
  import { getAuthTables, getSchema } from "better-auth/db";
3
3
  //#region src/auth/drizzle.ts
4
4
  const DEFAULT_TABLE_ORDER = Number.MAX_SAFE_INTEGER;
5
+ function compareTableOrder([, left], [, right]) {
6
+ return (left.order ?? DEFAULT_TABLE_ORDER) - (right.order ?? DEFAULT_TABLE_ORDER);
7
+ }
5
8
  function resolveEmailAndPassword(configuredProviders) {
6
9
  if (!configuredProviders || configuredProviders.includes("email")) return { enabled: true };
7
10
  }
@@ -102,7 +105,6 @@ function createColumnBuilder(dialect, idStrategy, defaultModelName, defaultField
102
105
  case "boolean": return `boolean(${JSON.stringify(fieldName)})`;
103
106
  case "date": return `timestamp(${JSON.stringify(fieldName)}, { mode: "date", withTimezone: true })`;
104
107
  case "number": return field.bigint ? `bigint(${JSON.stringify(fieldName)}, { mode: "number" })` : `integer(${JSON.stringify(fieldName)})`;
105
- case "string": return `text(${JSON.stringify(fieldName)})`;
106
108
  default: return `text(${JSON.stringify(fieldName)})`;
107
109
  }
108
110
  }
@@ -116,7 +118,6 @@ function createColumnBuilder(dialect, idStrategy, defaultModelName, defaultField
116
118
  case "boolean": return `integer(${JSON.stringify(fieldName)}, { mode: "boolean" })`;
117
119
  case "date": return `integer(${JSON.stringify(fieldName)}, { mode: "timestamp_ms" })`;
118
120
  case "number": return `integer(${JSON.stringify(fieldName)})`;
119
- case "string": return `text(${JSON.stringify(fieldName)})`;
120
121
  default: return `text(${JSON.stringify(fieldName)})`;
121
122
  }
122
123
  }
@@ -159,11 +160,11 @@ function collectCoreImports(dialect, schema, idStrategy) {
159
160
  continue;
160
161
  }
161
162
  if (field.type === "boolean") {
162
- imports.add(dialect === "postgresql" ? "boolean" : dialect === "mysql" ? "boolean" : "integer");
163
+ imports.add(dialect === "sqlite" ? "integer" : "boolean");
163
164
  continue;
164
165
  }
165
166
  if (field.type === "date") {
166
- imports.add(dialect === "postgresql" ? "timestamp" : dialect === "mysql" ? "timestamp" : "integer");
167
+ imports.add(dialect === "sqlite" ? "integer" : "timestamp");
167
168
  continue;
168
169
  }
169
170
  if (field.type === "number") {
@@ -179,7 +180,7 @@ function generateVoidAuthDrizzleSchema(runtime, env = {}) {
179
180
  const migrationSchema = resolveVoidAuthMigrationSchema(runtime, env);
180
181
  const idStrategy = resolveIdStrategy(options);
181
182
  const defaultToVariable = /* @__PURE__ */ new Map();
182
- const entries = Object.entries(schema).sort(([, left], [, right]) => (left.order ?? DEFAULT_TABLE_ORDER) - (right.order ?? DEFAULT_TABLE_ORDER));
183
+ const entries = Object.entries(schema).sort(compareTableOrder);
183
184
  for (const [defaultModelName] of entries) defaultToVariable.set(defaultModelName, `${sanitizeIdentifier(defaultModelName)}Table`);
184
185
  const tableFactory = runtime.dialect === "postgresql" ? "pgTable" : runtime.dialect === "mysql" ? "mysqlTable" : "sqliteTable";
185
186
  const importPath = runtime.dialect === "postgresql" ? "void/schema-pg" : runtime.dialect === "mysql" ? "void/schema-mysql" : "void/schema-d1";
@@ -199,12 +200,14 @@ function generateVoidAuthDrizzleSchema(runtime, env = {}) {
199
200
  return ` ${JSON.stringify(actualFieldName)}: ${createColumnDefinition(runtime.dialect, schema, idStrategy, defaultToVariable, defaultModelName, defaultFieldName, field)},`;
200
201
  })];
201
202
  const indexedFields = fieldEntries.filter(([, field]) => field.index && !field.unique);
202
- if (indexedFields.length > 0) lines.push(`export const ${variableName} = ${tableFactory}(${JSON.stringify(table.modelName)}, {`, ...renderedFields, `}, (table) => [`, ...indexedFields.map(([defaultFieldName, field]) => {
203
- const actualFieldName = resolveFieldName(defaultFieldName, field);
204
- return ` index(${JSON.stringify(`${table.modelName}_${actualFieldName}_idx`)}).on(table[${JSON.stringify(actualFieldName)}]),`;
205
- }), `]);`);
206
- else lines.push(`export const ${variableName} = ${tableFactory}(${JSON.stringify(table.modelName)}, {`, ...renderedFields, `});`);
207
- lines.push("");
203
+ lines.push(`export const ${variableName} = ${tableFactory}(${JSON.stringify(table.modelName)}, {`, ...renderedFields, ...indexedFields.length > 0 ? [
204
+ `}, (table) => [`,
205
+ ...indexedFields.map(([defaultFieldName, field]) => {
206
+ const actualFieldName = resolveFieldName(defaultFieldName, field);
207
+ return ` index(${JSON.stringify(`${table.modelName}_${actualFieldName}_idx`)}).on(table[${JSON.stringify(actualFieldName)}]),`;
208
+ }),
209
+ `]);`
210
+ ] : [`});`], "");
208
211
  }
209
212
  lines.push("export const schema = {");
210
213
  for (const [defaultModelName] of entries) lines.push(` ${JSON.stringify(defaultModelName)}: ${defaultToVariable.get(defaultModelName)},`);
@@ -224,7 +227,7 @@ function resolveVoidAuthMigrationSchema(runtime, env = {}) {
224
227
  return {
225
228
  dialect: runtime.dialect,
226
229
  idStrategy: resolveIdStrategy(options),
227
- tables: Object.entries(schema).sort(([, left], [, right]) => (left.order ?? DEFAULT_TABLE_ORDER) - (right.order ?? DEFAULT_TABLE_ORDER)).map(([name, table]) => ({
230
+ tables: Object.entries(schema).sort(compareTableOrder).map(([name, table]) => ({
228
231
  name,
229
232
  order: table.order ?? DEFAULT_TABLE_ORDER,
230
233
  fields: Object.fromEntries(Object.entries(table.fields).map(([fieldName, field]) => [fieldName, {