void 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/README.md +5 -1
  2. package/dist/{account-cmd-CjyxcGkM.mjs → account-cmd-C84Ee8cO.mjs} +4 -4
  3. package/dist/{scan-ClYmX3sa.mjs → application-analysis-BVsVqc11.mjs} +135 -18
  4. package/dist/application-routing-B7QEjqSR.mjs +27 -0
  5. package/dist/{auth-CZuiVsFh.mjs → auth-CCjt0hcq.mjs} +1 -1
  6. package/dist/{auth-DLNN0D3Z.mjs → auth-CSkdO2Bb.mjs} +4 -47
  7. package/dist/{auth-link-BLO4ptzo.mjs → auth-link-CioEg6uY.mjs} +4 -4
  8. package/dist/{auth-router-ZUg9MF_U.mjs → auth-router-BsR981d4.mjs} +4 -4
  9. package/dist/{better-auth-shared-rsBGBvWJ.mjs → better-auth-shared-hy6RPh9W.mjs} +13 -2
  10. package/dist/{build-cmd-BxR5FROK.mjs → build-cmd-LzvNJORH.mjs} +17 -5
  11. package/dist/{cache-D0sWhgKI.mjs → cache-C4MvnrMH.mjs} +2 -2
  12. package/dist/{cancel-deploy-D4NUqFbi.mjs → cancel-deploy-abUxpP2n.mjs} +2 -2
  13. package/dist/{cf-build-output-BJ6yGEIS.mjs → cf-build-output-BPqOT964.mjs} +2 -1
  14. package/dist/cf-build-output-_0HNWysu.mjs +2 -0
  15. package/dist/cli/cli.mjs +80 -455
  16. package/dist/cli/{cf-compat.mjs → cloudflare-operation-process.mjs} +442 -421
  17. package/dist/cli/env-schema-probe.d.mts +2 -1
  18. package/dist/cli/env-schema-probe.mjs +3 -3
  19. package/dist/client-Cu7jWiF1.mjs +2 -0
  20. package/dist/{client-BTZ3XkrB.mjs → client-RV8NVeB8.mjs} +140 -21
  21. package/dist/{cloudflare-auth-DQkqoMYa.mjs → cloudflare-auth-Qdc7tw8F.mjs} +41 -38
  22. package/dist/{cloudflare-cmd-BKlfGHAy.mjs → cloudflare-cmd-BcrVyTmJ.mjs} +5 -5
  23. package/dist/cloudflare-config-Bktvwtpf.mjs +182 -0
  24. package/dist/{cloudflare-connect-Ctmrw579.mjs → cloudflare-connect-B8uPZ4nx.mjs} +3 -3
  25. package/dist/{cloudflare-operations-BT6OWFBk.mjs → cloudflare-operations-AiWashgg.mjs} +1 -1
  26. package/dist/{cloudflare-operations-B9tzgjmf.mjs → cloudflare-operations-fxHb-byx.mjs} +116 -172
  27. package/dist/{preset-UHj9ARyP.mjs → cloudflare-process-B-wekeR6.mjs} +93 -6
  28. package/dist/{config-VavjpDnp.d.mts → config-BMHb8RCj.d.mts} +1 -0
  29. package/dist/config-C_XRIPx2.mjs +89 -0
  30. package/dist/config-entry.d.mts +1 -1
  31. package/dist/{connect-Dg-WkW-C.mjs → connect-Bd4kJd9U.mjs} +5 -5
  32. package/dist/{create-project-DdoqwFLF.mjs → create-project-Boczwj5r.mjs} +1 -1
  33. package/dist/{create-project-l9J7pbtm.mjs → create-project-bMf6ffLZ.mjs} +2 -2
  34. package/dist/{db-gp2sCXyN.mjs → db-8uG64XLl.mjs} +21 -21
  35. package/dist/{delete-TTedbH6B.mjs → delete-NvbiyeJf.mjs} +2 -2
  36. package/dist/{deploy-CH-o2CaZ.mjs → deploy-DzAIwqNU.mjs} +908 -582
  37. package/dist/{deploy-B19L2Bra.mjs → deploy-bjXdFCtn.mjs} +1 -1
  38. package/dist/{domain-JRF59P_r.mjs → domain-y5Tvydvo.mjs} +3 -3
  39. package/dist/{email-Bo6G9LOZ.mjs → email-B3umsW75.mjs} +13 -28
  40. package/dist/{env-BYOrWQnv.mjs → env-BS6qYHDb.mjs} +4 -4
  41. package/dist/{env-public-BxU_0yTL.d.mts → env-public-BX_r8HR6.d.mts} +1 -1
  42. package/dist/{env-validation-BB4GkLxn.mjs → env-validation-BPn7vk-V.mjs} +18 -71
  43. package/dist/{env-validation-BXge7uyK.mjs → env-validation-DbTg7-ar.mjs} +1 -1
  44. package/dist/{fetch-CXDChK7B.mjs → fetch-BIZJh7vR.mjs} +2 -2
  45. package/dist/{fetch-stream-AOByI7Ki.mjs → fetch-stream-IvCYKyQL.mjs} +24 -4
  46. package/dist/{gen-sCtlCOdA.mjs → gen-B580--vC.mjs} +2 -2
  47. package/dist/gen-BVaUUumi.mjs +2 -0
  48. package/dist/{github-cmd-0-7PexDq.mjs → github-cmd-v45BdfKX.mjs} +2 -2
  49. package/dist/{handler-HEcZsaij.d.mts → handler-CZ4nAylQ.d.mts} +1 -1
  50. package/dist/help-DofyZuY7.mjs +2 -0
  51. package/dist/{help-GKtwl07I.mjs → help-daGKjXGk.mjs} +229 -747
  52. package/dist/index.d.mts +1 -1
  53. package/dist/index.mjs +288 -1502
  54. package/dist/info-B97bTX9N.mjs +113 -0
  55. package/dist/{init-FZx3Elvz.mjs → init-Bvy7zrBo.mjs} +46 -15
  56. package/dist/limits-Bq5LG8Id.d.mts +27 -0
  57. package/dist/limits-Cjuk2VPm.mjs +68 -0
  58. package/dist/{link-BrQfb_CU.mjs → link-CDqqCjFl.mjs} +3 -3
  59. package/dist/{list-D44jmIAM.mjs → list-CZj0dzKY.mjs} +3 -3
  60. package/dist/{live-CKJlvlNp.d.mts → live-Chw1eIMv.d.mts} +1 -1
  61. package/dist/{local-d1-Bg9OzEEO.mjs → local-d1-2CMnpuW_.mjs} +2 -2
  62. package/dist/login-DYt_An22.mjs +2 -0
  63. package/dist/{login-CAsAsQ-_.mjs → login-UZKFM_u7.mjs} +3 -3
  64. package/dist/{logs-BjKvFnVM.mjs → logs-CUZ6t9t3.mjs} +3 -3
  65. package/dist/migrate-8_2u55MD.mjs +2 -0
  66. package/dist/{migrate-BPITvDJN.mjs → migrate-DHul7PRV.mjs} +2 -1
  67. package/dist/{node-Dt7z256D.mjs → node-BkyRWRx8.mjs} +1 -1
  68. package/dist/operator-args-CLgKGlwU.mjs +690 -0
  69. package/dist/{operator-cmd-BK5CCiT9.mjs → operator-cmd-DBA6dl0m.mjs} +68 -22
  70. package/dist/pages/client.d.mts +34 -2
  71. package/dist/pages/client.mjs +59 -3
  72. package/dist/pages/index.d.mts +1 -1
  73. package/dist/pages/index.mjs +1 -1
  74. package/dist/pages/islands-plugin.mjs +1 -1
  75. package/dist/pages/protocol.d.mts +2 -2
  76. package/dist/pages/protocol.mjs +2 -308
  77. package/dist/{parse-filename-DioPHiR9.mjs → parse-filename-CUbj-1MP.mjs} +35 -1
  78. package/dist/plan-D1Q5rf-r.mjs +2 -0
  79. package/dist/plan-NPpwZ_kc.mjs +58 -0
  80. package/dist/platform-args-BJdRtlLq.mjs +506 -0
  81. package/dist/platform-args-D3RXyR6h.mjs +2 -0
  82. package/dist/{platform-auth-config-BlN8xTdD.mjs → platform-auth-config-B56E9YP1.mjs} +3 -3
  83. package/dist/{platform-auth-protection-7d5aV2Jg.mjs → platform-auth-protection-BDWO_aER.mjs} +2 -2
  84. package/dist/{platform-auth-recovery-Dxij8ZbR.mjs → platform-auth-recovery-1gg4CSRe.mjs} +3 -3
  85. package/dist/{platform-cmd-E0FuL212.mjs → platform-cmd-Bt-1w6pY.mjs} +1 -1
  86. package/dist/{platform-cmd-B3hwKrFK.mjs → platform-cmd-DMcQStSc.mjs} +24 -3
  87. package/dist/{platform-domain-D6Xcy9ZX.mjs → platform-domain-BNkcz0OB.mjs} +2 -2
  88. package/dist/{platform-lifecycle-k0E0xoxx.mjs → platform-lifecycle-9OyBALhH.mjs} +327 -215
  89. package/dist/{platform-lifecycle-DMh_qrry.mjs → platform-lifecycle-BE6C_jxh.mjs} +1 -1
  90. package/dist/{platform-management-Brz_BDiT.mjs → platform-management-CjwLVQwN.mjs} +6 -3
  91. package/dist/{platform-management-DOtss0BN.mjs → platform-management-CnyTdcWX.mjs} +1 -1
  92. package/dist/platform-plans-config-BNGKGr4P.mjs +359 -0
  93. package/dist/{platform-recovery-BvtcXON5.mjs → platform-recovery-D6KSpuFm.mjs} +2 -2
  94. package/dist/{plugin-inference-BMfKRSqE.mjs → plugin-inference-CXWnn79A.mjs} +174 -64
  95. package/dist/{prepare-C-6YZyyg.mjs → prepare-B5Mkic5u.mjs} +1 -1
  96. package/dist/{prepare-CRhJbVrG.mjs → prepare-DOsL0CC9.mjs} +4 -20
  97. package/dist/prepare-cgvDMtSb.mjs +2 -0
  98. package/dist/{project-cmd-BZLCqOqw.mjs → project-cmd-CNzrqvBv.mjs} +16 -16
  99. package/dist/{project-team-BvgM0WoX.mjs → project-team-DQOWPfQT.mjs} +2 -2
  100. package/dist/{project-token-l5DqK6Az.mjs → project-token-CTDYU0Cc.mjs} +2 -2
  101. package/dist/{project-zero-trust-v6Mvpp8y.mjs → project-zero-trust-BNAkW-_0.mjs} +2 -2
  102. package/dist/{protocol-BBa6cstI.d.mts → protocol-CjF_iI9X.d.mts} +2 -2
  103. package/dist/protocol-U7bfjHmA.mjs +331 -0
  104. package/dist/{provision-Fr9pRqce.mjs → provision-C4ORE7G7.mjs} +1 -1
  105. package/dist/{provision-C4IGqkBf.mjs → provision-CJFgTZY8.mjs} +89 -198
  106. package/dist/{requests-DN-BbNiM.mjs → requests-MhxYnau8.mjs} +2 -2
  107. package/dist/resource-name-C7LVpcRm.mjs +11 -0
  108. package/dist/{rollback-D7rzSaZM.mjs → rollback-CJ6iSDoU.mjs} +3 -3
  109. package/dist/route-url-CG7U-cRN.mjs +15 -0
  110. package/dist/{runner-B8wXwWlo.mjs → runner-CXA9Fh8h.mjs} +1 -1
  111. package/dist/{runner-p-dMs2UN.mjs → runner-Ol0TNjk6.mjs} +2 -2
  112. package/dist/runtime/ai.d.mts +12 -8
  113. package/dist/runtime/ai.mjs +84 -17
  114. package/dist/runtime/better-auth-mysql.mjs +1 -1
  115. package/dist/runtime/better-auth-pg.mjs +1 -1
  116. package/dist/runtime/better-auth.mjs +1 -1
  117. package/dist/runtime/client-react.mjs +2 -2
  118. package/dist/runtime/client-solid.mjs +2 -2
  119. package/dist/runtime/client-svelte.mjs +2 -2
  120. package/dist/runtime/client-vue.mjs +2 -2
  121. package/dist/runtime/client.mjs +2 -2
  122. package/dist/runtime/durable.d.mts +3 -1
  123. package/dist/runtime/durable.mjs +4 -1
  124. package/dist/runtime/email/testing.mjs +1 -1
  125. package/dist/runtime/env-public.d.mts +1 -1
  126. package/dist/runtime/fetch-stream.mjs +1 -1
  127. package/dist/runtime/fetch.mjs +1 -1
  128. package/dist/runtime/handler.d.mts +1 -1
  129. package/dist/runtime/kv.mjs +0 -1
  130. package/dist/runtime/limits.d.mts +2 -0
  131. package/dist/runtime/limits.mjs +2 -0
  132. package/dist/runtime/live-client.d.mts +1 -1
  133. package/dist/runtime/live-server.mjs +25 -16
  134. package/dist/runtime/live.d.mts +1 -1
  135. package/dist/runtime/migration-handler.mjs +62 -42
  136. package/dist/runtime/route-url.d.mts +4 -0
  137. package/dist/runtime/route-url.mjs +2 -0
  138. package/dist/runtime/routing.d.mts +180 -0
  139. package/dist/runtime/routing.mjs +1082 -0
  140. package/dist/runtime/sandbox-container.d.mts +1 -1
  141. package/dist/runtime/sandbox-container.mjs +1 -1
  142. package/dist/runtime/sandbox.d.mts +3 -3
  143. package/dist/runtime/sandbox.mjs +75 -45
  144. package/dist/runtime/sse.mjs +1 -1
  145. package/dist/runtime/validator.d.mts +1 -1
  146. package/dist/runtime/ws-server.d.mts +4 -2
  147. package/dist/runtime/ws-server.mjs +27 -2
  148. package/dist/runtime/ws.d.mts +2 -2
  149. package/dist/runtime/ws.mjs +8 -6
  150. package/dist/{sandbox-qpNBT8a3.d.mts → sandbox-XZAqzFlG.d.mts} +11 -8
  151. package/dist/{sandbox-container-DdNEBfCc.d.mts → sandbox-container-Bo0eiFKz.d.mts} +2 -1
  152. package/dist/{sandbox-container-4fdqLnyb.mjs → sandbox-container-C6ItmVuN.mjs} +4 -2
  153. package/dist/{scan-4tfN-PSn.mjs → scan-C7okrLyM.mjs} +4 -35
  154. package/dist/{secret-BOtOl_cb.mjs → secret-Dli5fP0B.mjs} +4 -4
  155. package/dist/{sse-BaC1jXko.mjs → sse-CQNaDFFV.mjs} +6 -3
  156. package/dist/validate-Dq_L3s0S.mjs +2 -0
  157. package/dist/{validate-CIUwFpjB.mjs → validate-ctOrgiS3.mjs} +2 -1
  158. package/dist/{wrangler-DQF1vKyf.mjs → wrangler-7K-bW_DL.mjs} +8 -239
  159. package/dist/{ws-BoY7vQML.d.mts → ws-CL1w7GXU.d.mts} +13 -2
  160. package/package.json +15 -8
  161. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +34 -157
  162. package/skills/void/SKILL.md +50 -135
  163. package/skills/void/docs/guide/ai.md +94 -84
  164. package/skills/void/docs/guide/app-types.md +3 -32
  165. package/skills/void/docs/guide/auth.md +12 -116
  166. package/skills/void/docs/guide/database/d1.md +9 -54
  167. package/skills/void/docs/guide/database/mysql.md +1 -1
  168. package/skills/void/docs/guide/database/postgresql.md +5 -26
  169. package/skills/void/docs/guide/database.md +23 -75
  170. package/skills/void/docs/guide/deployment.md +27 -113
  171. package/skills/void/docs/guide/durable-state.md +43 -18
  172. package/skills/void/docs/guide/edge/headers.md +3 -47
  173. package/skills/void/docs/guide/edge/prerendering.md +5 -20
  174. package/skills/void/docs/guide/edge/redirects.md +11 -64
  175. package/skills/void/docs/guide/edge/revalidation.md +5 -18
  176. package/skills/void/docs/guide/edge/rewrites.md +56 -284
  177. package/skills/void/docs/guide/edge/static-assets.md +22 -72
  178. package/skills/void/docs/guide/email/domains.md +112 -0
  179. package/skills/void/docs/guide/email/receiving.md +139 -0
  180. package/skills/void/docs/guide/email/sending.md +231 -0
  181. package/skills/void/docs/guide/email.md +13 -619
  182. package/skills/void/docs/guide/env-migration.md +11 -11
  183. package/skills/void/docs/guide/env-vars.md +9 -29
  184. package/skills/void/docs/guide/index.md +0 -15
  185. package/skills/void/docs/guide/jobs.md +3 -18
  186. package/skills/void/docs/guide/kv.md +5 -11
  187. package/skills/void/docs/guide/live.md +5 -56
  188. package/skills/void/docs/guide/pages-routing/actions-and-forms.md +78 -125
  189. package/skills/void/docs/guide/pages-routing/head.md +10 -10
  190. package/skills/void/docs/guide/pages-routing/islands.md +6 -36
  191. package/skills/void/docs/guide/pages-routing/layouts.md +6 -128
  192. package/skills/void/docs/guide/pages-routing/loaders.md +3 -19
  193. package/skills/void/docs/guide/pages-routing/markdown.md +13 -171
  194. package/skills/void/docs/guide/pages-routing/overview.md +7 -17
  195. package/skills/void/docs/guide/pages-routing/view-transitions.md +1 -1
  196. package/skills/void/docs/guide/platform/administration/access.md +1 -4
  197. package/skills/void/docs/guide/platform/administration/email.md +35 -8
  198. package/skills/void/docs/guide/platform/administration/operations.md +26 -4
  199. package/skills/void/docs/guide/platform/administration/plans.md +126 -0
  200. package/skills/void/docs/guide/platform/administration/projects.md +5 -2
  201. package/skills/void/docs/guide/platform/administration/zero-trust.md +23 -152
  202. package/skills/void/docs/guide/platform/development/runtime.md +3 -13
  203. package/skills/void/docs/guide/platform/development/schema-ci.md +0 -58
  204. package/skills/void/docs/guide/platform/installation/credentials.md +6 -4
  205. package/skills/void/docs/guide/platform/installation/domains.md +30 -2
  206. package/skills/void/docs/guide/platform/installation/first-deployment.md +2 -0
  207. package/skills/void/docs/guide/platform/installation/maintenance.md +3 -1
  208. package/skills/void/docs/guide/platform/installation/prerequisites.md +20 -15
  209. package/skills/void/docs/guide/platform/installation/setup.md +9 -5
  210. package/skills/void/docs/guide/platform-administration.md +1 -0
  211. package/skills/void/docs/guide/queues.md +7 -9
  212. package/skills/void/docs/guide/quickstart.md +38 -37
  213. package/skills/void/docs/guide/remote-dev.md +4 -9
  214. package/skills/void/docs/guide/sandboxes.md +29 -21
  215. package/skills/void/docs/guide/server-routing.md +9 -72
  216. package/skills/void/docs/guide/sse.md +4 -18
  217. package/skills/void/docs/guide/ssg.md +3 -15
  218. package/skills/void/docs/guide/ssr.md +14 -62
  219. package/skills/void/docs/guide/storage.md +9 -4
  220. package/skills/void/docs/guide/type-safety.md +3 -14
  221. package/skills/void/docs/guide/typed-fetch.md +3 -7
  222. package/skills/void/docs/guide/websockets.md +68 -40
  223. package/skills/void/docs/integrations/agents.md +3 -3
  224. package/skills/void/docs/integrations/cloudflare.md +85 -316
  225. package/skills/void/docs/integrations/frameworks/analog.md +5 -64
  226. package/skills/void/docs/integrations/frameworks/astro.md +4 -73
  227. package/skills/void/docs/integrations/frameworks/nuxt.md +5 -62
  228. package/skills/void/docs/integrations/frameworks/overview.md +11 -54
  229. package/skills/void/docs/integrations/frameworks/react-router.md +5 -60
  230. package/skills/void/docs/integrations/frameworks/sveltekit.md +6 -65
  231. package/skills/void/docs/integrations/frameworks/tanstack-start.md +4 -62
  232. package/skills/void/docs/integrations/nodejs-bun-deno.md +5 -69
  233. package/skills/void/docs/reference/api/auth.md +156 -0
  234. package/skills/void/docs/reference/api/client.md +87 -0
  235. package/skills/void/docs/reference/api/database.md +95 -0
  236. package/skills/void/docs/reference/api/durable.md +46 -0
  237. package/skills/void/docs/reference/api/env.md +50 -0
  238. package/skills/void/docs/reference/api/handlers.md +254 -0
  239. package/skills/void/docs/reference/api/pages.md +241 -0
  240. package/skills/void/docs/reference/api/plugin.md +39 -0
  241. package/skills/void/docs/reference/api/resources.md +109 -0
  242. package/skills/void/docs/reference/api/rewrites.md +76 -0
  243. package/skills/void/docs/reference/api/types.md +92 -0
  244. package/skills/void/docs/reference/api.md +56 -1218
  245. package/skills/void/docs/reference/cli/auth.md +88 -0
  246. package/skills/void/docs/reference/cli/database.md +128 -0
  247. package/skills/void/docs/reference/cli/deploy.md +85 -0
  248. package/skills/void/docs/reference/cli/domains.md +41 -0
  249. package/skills/void/docs/reference/cli/email.md +129 -0
  250. package/skills/void/docs/reference/cli/generate.md +116 -0
  251. package/skills/void/docs/reference/cli/github.md +189 -0
  252. package/skills/void/docs/reference/cli/platform-config.md +92 -0
  253. package/skills/void/docs/reference/cli/platform-email.md +81 -0
  254. package/skills/void/docs/reference/cli/platform-installation.md +127 -0
  255. package/skills/void/docs/reference/cli/platform-operations.md +90 -0
  256. package/skills/void/docs/reference/cli/platform-users.md +89 -0
  257. package/skills/void/docs/reference/cli/platform-zero-trust.md +45 -0
  258. package/skills/void/docs/reference/cli/platform.md +70 -0
  259. package/skills/void/docs/reference/cli/project.md +214 -0
  260. package/skills/void/docs/reference/cli/secrets.md +76 -0
  261. package/skills/void/docs/reference/cli/setup.md +70 -0
  262. package/skills/void/docs/reference/cli.md +32 -1682
  263. package/skills/void/docs/reference/config.md +12 -18
  264. package/skills/void/docs/reference/resource-inference.md +3 -58
  265. package/skills/void/docs/reference/structure.md +14 -41
  266. package/dist/canonical-json-DuDiiUsQ.mjs +0 -13
  267. package/dist/client-Czz8o5jP.mjs +0 -2
  268. package/dist/gen-CNJ62MM7.mjs +0 -2
  269. package/dist/help-CmZzxUba.mjs +0 -2
  270. package/dist/login-CGcRKEoi.mjs +0 -2
  271. package/dist/migrate-CYfbKkXh.mjs +0 -2
  272. package/dist/plan-BEZ8VJW0.mjs +0 -256
  273. package/dist/plan-DpuOr14e.mjs +0 -2
  274. package/dist/prepare-Bm3iq-u4.mjs +0 -2
  275. package/dist/validate-EKmJWxmy.mjs +0 -2
  276. /package/dist/cli/{cf-compat.d.mts → cloudflare-operation-process.d.mts} +0 -0
@@ -0,0 +1,113 @@
1
+ import { a as join, l as relative } from "./dist-BVqXeR_h.mjs";
2
+ import { a as deriveWebSocketClassNameFromName, o as inferWebSocketResourceName } from "./plugin-inference-CXWnn79A.mjs";
3
+ import { m as readConfig } from "./config-Br_JZD6u.mjs";
4
+ import { a as inferDurableResourceName, i as deriveDurableResourceIdentity, t as analyzeApplicationSync } from "./application-analysis-BVsVqc11.mjs";
5
+ import { n as VOID_LOCK_FILE } from "./cloudflare-config-Bktvwtpf.mjs";
6
+ import { existsSync, readFileSync } from "node:fs";
7
+ //#region src/cli/info.ts
8
+ function isRecord(value) {
9
+ return typeof value === "object" && value !== null && !Array.isArray(value);
10
+ }
11
+ function readRecordedResources(root, resources) {
12
+ const path = join(root, VOID_LOCK_FILE);
13
+ if (!existsSync(path)) return [];
14
+ let lock;
15
+ try {
16
+ lock = JSON.parse(readFileSync(path, "utf8"));
17
+ } catch {
18
+ throw new Error("info: Invalid void.lock.json. Fix or restore it before continuing.");
19
+ }
20
+ if (!isRecord(lock) || lock.version !== 1 || !isRecord(lock.resolved)) throw new Error("info: Invalid void.lock.json. Fix or restore it before continuing.");
21
+ const durable = lock.resolved.durable_objects;
22
+ const bindings = isRecord(durable) && Array.isArray(durable.bindings) ? durable.bindings : [];
23
+ const migrations = Array.isArray(lock.resolved.migrations) ? lock.resolved.migrations : [];
24
+ const recorded = [];
25
+ for (const binding of bindings) {
26
+ if (!isRecord(binding) || typeof binding.name !== "string" || typeof binding.class_name !== "string" || binding.script_name !== void 0) continue;
27
+ const className = binding.class_name;
28
+ const bindingName = binding.name;
29
+ if (resources.some((resource) => resource.className === className && resource.bindingName === bindingName)) continue;
30
+ const resource = {
31
+ className,
32
+ bindingName
33
+ };
34
+ if (className.endsWith("Ws") && bindingName === className) {
35
+ const name = className.slice(0, -2);
36
+ if (name && deriveWebSocketClassNameFromName(name) === className) {
37
+ resource.name = name;
38
+ resource.definition = "defineRoom | defineWebSocket";
39
+ }
40
+ } else if (className.endsWith("DurableObject")) {
41
+ const candidates = [className.slice(0, -13), bindingName.toLowerCase().replaceAll("_", "-")];
42
+ for (const name of candidates) {
43
+ if (!name) continue;
44
+ const identity = deriveDurableResourceIdentity(name);
45
+ const matchesMigration = migrations.some((migration) => {
46
+ if (!isRecord(migration) || migration.tag !== identity.migrationTag) return false;
47
+ return [migration.new_classes, migration.new_sqlite_classes].some((classes) => Array.isArray(classes) && classes.includes(className));
48
+ });
49
+ if (identity.className === className && identity.bindingName === bindingName && matchesMigration) {
50
+ resource.name = name;
51
+ resource.definition = "defineDurableState";
52
+ break;
53
+ }
54
+ }
55
+ }
56
+ recorded.push(resource);
57
+ }
58
+ return recorded.sort((a, b) => a.className.localeCompare(b.className) || a.bindingName.localeCompare(b.bindingName));
59
+ }
60
+ /** Inspect source without provisioning, generating files, or consulting credentials. */
61
+ function getProjectInfo(root) {
62
+ const analysis = analyzeApplicationSync(root, { config: readConfig(root) });
63
+ const resources = [...analysis.websockets.map((route) => ({
64
+ file: relative(root, analysis.paths.routesDir) + "/" + route.filePath,
65
+ definition: route.mode === "room" ? "defineRoom" : "defineWebSocket",
66
+ name: route.name ?? inferWebSocketResourceName(route.filePath),
67
+ nameSource: route.name === void 0 ? "inferred" : "explicit",
68
+ className: route.className,
69
+ bindingName: route.bindingName,
70
+ route: route.pattern
71
+ })), ...analysis.durableObjects.map((module) => ({
72
+ file: relative(root, module.filePath),
73
+ definition: "defineDurableState",
74
+ name: module.name ?? inferDurableResourceName(module.filePath),
75
+ nameSource: module.name === void 0 ? "inferred" : "explicit",
76
+ className: module.className,
77
+ bindingName: module.bindingName
78
+ }))];
79
+ resources.sort((a, b) => a.file.localeCompare(b.file));
80
+ return {
81
+ resources,
82
+ recordedResources: readRecordedResources(root, resources)
83
+ };
84
+ }
85
+ function formatProjectInfo(info) {
86
+ if (info.resources.length === 0 && info.recordedResources.length === 0) return "No persistent resource definitions found in this project.";
87
+ return [info.resources.map((resource) => {
88
+ const lines = [
89
+ resource.file,
90
+ ` ${resource.nameSource === "inferred" ? "Inferred" : "Explicit"} name: ${resource.name}`,
91
+ ` Class: ${resource.className}`,
92
+ ` Binding: ${resource.bindingName}`
93
+ ];
94
+ if (resource.nameSource === "inferred") lines.push(` To preserve this resource when moving its code, add this to '${resource.definition}':`, ` name: ${JSON.stringify(resource.name)},`);
95
+ else lines.push(" Keep this name when moving its code to preserve the resource.");
96
+ return lines.join("\n");
97
+ }).join("\n\n"), info.recordedResources.map((resource) => {
98
+ const lines = [
99
+ "Recorded in void.lock.json (no matching source definition)",
100
+ ` Class: ${resource.className}`,
101
+ ` Binding: ${resource.bindingName}`
102
+ ];
103
+ if (resource.name !== void 0) lines.push(` If this is the resource you moved, use this name in its ${resource.definition} definition:`, ` name: ${JSON.stringify(resource.name)},`);
104
+ else lines.push(" Restore the original definition from source history and run void info to discover its name.");
105
+ return lines.join("\n");
106
+ }).join("\n\n")].filter(Boolean).join("\n\n");
107
+ }
108
+ async function runInfoCommand(root, args) {
109
+ const info = getProjectInfo(root);
110
+ console.log(args.json ? JSON.stringify(info, null, 2) : formatProjectInfo(info));
111
+ }
112
+ //#endregion
113
+ export { runInfoCommand };
@@ -1,25 +1,26 @@
1
1
  import { a as join, i as isAbsolute, l as relative, n as dirname, t as basename, u as resolve } from "./dist-BVqXeR_h.mjs";
2
+ import { r as detectFramework } from "./plugin-inference-CXWnn79A.mjs";
2
3
  import { n as readProjectPaths, o as TYPED_CONFIG_FILE } from "./project-paths-GgcMozYz.mjs";
3
- import { c as getToken, u as isStagingMode } from "./auth-DLNN0D3Z.mjs";
4
- import { d as writeProjectConfig, i as readDeploymentPlatform, l as writeDeploymentPlatform, o as readProjectConfig, t as attachSelectedPlatform } from "./project-C0Fqu05O.mjs";
5
4
  import { m as readConfig, u as getDatabaseDialect } from "./config-Br_JZD6u.mjs";
6
- import { B as materializeCloudflareConfig, i as LATEST_KNOWN_COMPAT_DATE, k as writeProvisionedWranglerConfig } from "./wrangler-DQF1vKyf.mjs";
5
+ import { c as getToken, u as isStagingMode } from "./auth-CSkdO2Bb.mjs";
6
+ import { d as writeProjectConfig, i as readDeploymentPlatform, l as writeDeploymentPlatform, o as readProjectConfig, t as attachSelectedPlatform } from "./project-C0Fqu05O.mjs";
7
+ import { r as materializeCloudflareConfig } from "./cloudflare-config-Bktvwtpf.mjs";
8
+ import { A as writeProvisionedWranglerConfig, i as LATEST_KNOWN_COMPAT_DATE } from "./wrangler-7K-bW_DL.mjs";
7
9
  import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-B8GeM0RM.mjs";
8
- import { r as detectFramework } from "./plugin-inference-BMfKRSqE.mjs";
9
10
  import { n as parseDotenvFile, t as expandDotenv } from "./dotenv-VQxupEUv.mjs";
10
11
  import { t as MagicString } from "./dist-AoCzRTJE.mjs";
11
12
  import { B as text, E as confirm, I as select, N as note, O as intro, P as outro, T as cancel, W as isCancel, j as log } from "./dist-CTBk70IR.mjs";
12
13
  import { t as writeDrizzleConfig } from "./config-D8MOgiQV.mjs";
13
14
  import { n as getPackageDir, t as detectAgents } from "./agents-B_pX_HmQ.mjs";
14
- import { n as PlatformClient } from "./client-BTZ3XkrB.mjs";
15
- import { r as formatProjectCommand } from "./preset-UHj9ARyP.mjs";
15
+ import { n as PlatformClient } from "./client-RV8NVeB8.mjs";
16
+ import { o as formatProjectCommand } from "./cloudflare-process-B-wekeR6.mjs";
16
17
  import { n as writeVoidProjectConfig, t as canRewriteVoidProjectConfig } from "./config-write-B1f88wJA.mjs";
17
- import { i as migrateFrameworkAdapterPaths, t as migrateLegacyVoidConfig } from "./migrate-BPITvDJN.mjs";
18
+ import { i as migrateFrameworkAdapterPaths, t as migrateLegacyVoidConfig } from "./migrate-DHul7PRV.mjs";
18
19
  import { r as cliTitle } from "./output-Dm_A4Tbv.mjs";
19
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-l9J7pbtm.mjs";
20
- import { t as promptForLoginToken } from "./login-CAsAsQ-_.mjs";
21
- import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-B3hwKrFK.mjs";
22
- import { t as connectCloudflare } from "./cloudflare-connect-Ctmrw579.mjs";
20
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-bMf6ffLZ.mjs";
21
+ import { t as promptForLoginToken } from "./login-UZKFM_u7.mjs";
22
+ import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-DMcQStSc.mjs";
23
+ import { t as connectCloudflare } from "./cloudflare-connect-B8uPZ4nx.mjs";
23
24
  import { n as findInstalledYarnPnpRuntime, r as hasLocalLockfile, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-BV4AzNul.mjs";
24
25
  import { createRequire } from "node:module";
25
26
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmdirSync, unlinkSync, writeFileSync } from "node:fs";
@@ -411,6 +412,7 @@ function getIndexServer() {
411
412
  return `import { defineHandler, type InferProps } from "void";
412
413
  import { db, desc } from "void/db";
413
414
  import { messages } from "@schema";
415
+ import { createInsertSchema } from "void/drizzle-zod";
414
416
 
415
417
  export type Props = InferProps<typeof loader>;
416
418
 
@@ -418,6 +420,11 @@ export const loader = defineHandler(async () => {
418
420
  const rows = await db.select().from(messages).orderBy(desc(messages.id));
419
421
  return { messages: rows };
420
422
  });
423
+ export const action = defineHandler.withValidator({
424
+ body: createInsertSchema(messages, { text: schema => schema.trim().min(1).max(1000) }).pick({ text: true }),
425
+ })(async (_c, { body }) => {
426
+ await db.insert(messages).values(body);
427
+ });
421
428
  `;
422
429
  }
423
430
  function getHelloRoute(frameworkLabel, starterMode) {
@@ -523,9 +530,11 @@ function getIndexPage(framework, starterMode) {
523
530
  `;
524
531
  }
525
532
  switch (framework) {
526
- case "react": return `import type { Props } from "./index.server";
533
+ case "react": return `import { Form, useForm } from "${SCAFFOLD_FRAMEWORKS[framework].adapterPackage}";
534
+ import type { Props } from "./index.server";
527
535
 
528
536
  export default function HomePage({ messages }: Props) {
537
+ const form = useForm("/", { text: "" });
529
538
  return (
530
539
  <main>
531
540
  <h1>Welcome to Void</h1>
@@ -552,14 +561,20 @@ export default function HomePage({ messages }: Props) {
552
561
  ))}
553
562
  </ul>
554
563
  )}
564
+ <Form form={form}>
565
+ <label>Message <input value={form.data.text} onChange={event => form.setData("text", event.target.value)} /></label>
566
+ <button disabled={form.pending}>Add message</button>
567
+ </Form>
555
568
  </main>
556
569
  );
557
570
  }
558
571
  `;
559
572
  case "vue": return `<script setup lang="ts">
560
573
  import type { Props } from "./index.server";
574
+ import { Form, useForm } from "@void/vue";
561
575
 
562
576
  defineProps<Props>();
577
+ const form = useForm("/", { text: "" });
563
578
  <\/script>
564
579
 
565
580
  <template>
@@ -583,11 +598,17 @@ defineProps<Props>();
583
598
  <small>{{ String(message.createdAt) }}</small>
584
599
  </li>
585
600
  </ul>
601
+ <Form :form="form">
602
+ <label>Message <input v-model="form.data.text" /></label>
603
+ <button :disabled="form.pending">Add message</button>
604
+ </Form>
586
605
  </main>
587
606
  </template>
588
607
  `;
589
608
  case "svelte": return `<script lang="ts">
590
609
  import type { Props } from "./index.server";
610
+ import { Form, useForm } from "@void/svelte";
611
+ const form = useForm("/", { text: "" });
591
612
 
592
613
  let { messages }: Props = $props();
593
614
  <\/script>
@@ -617,11 +638,17 @@ defineProps<Props>();
617
638
  {/each}
618
639
  </ul>
619
640
  {/if}
641
+ <Form {form}>
642
+ <label>Message <input bind:value={form.data.text} /></label>
643
+ <button disabled={form.pending}>Add message</button>
644
+ </Form>
620
645
  </main>
621
646
  `;
622
- case "solid": return `import type { Props } from "./index.server";
647
+ case "solid": return `import { Form, useForm } from "${SCAFFOLD_FRAMEWORKS[framework].adapterPackage}";
648
+ import type { Props } from "./index.server";
623
649
 
624
650
  export default function HomePage(props: Props) {
651
+ const form = useForm("/", { text: "" });
625
652
  return (
626
653
  <main>
627
654
  <h1>Welcome to Void</h1>
@@ -648,6 +675,10 @@ export default function HomePage(props: Props) {
648
675
  ))}
649
676
  </ul>
650
677
  )}
678
+ <Form form={form}>
679
+ <label>Message <input value={form.data.text} onInput={event => form.setData("text", event.target.value)} /></label>
680
+ <button disabled={form.pending}>Add message</button>
681
+ </Form>
651
682
  </main>
652
683
  );
653
684
  }
@@ -1901,7 +1932,7 @@ async function ensureVoidPlatformConnection(root) {
1901
1932
  let selectedApiUrl = null;
1902
1933
  let promptedForPlatform = false;
1903
1934
  try {
1904
- const { getApiUrl, getSiteDomain } = await import("./auth-CZuiVsFh.mjs");
1935
+ const { getApiUrl, getSiteDomain } = await import("./auth-CCjt0hcq.mjs");
1905
1936
  selectedApiUrl = getApiUrl(root);
1906
1937
  getSiteDomain(root);
1907
1938
  } catch (error) {
@@ -2680,7 +2711,7 @@ async function runInitCommand(root, initArgs) {
2680
2711
  let shouldSetupGithub = targeted ? initArgs?.github === true : deploymentPlatform !== "none";
2681
2712
  if (shouldSetupGithub && !githubStepSkipForSubpackage && deploymentPlatform !== "cloudflare" && deploymentPlatform !== "none") {
2682
2713
  if (!voidPlatformDiscovery) {
2683
- const { getApiUrl } = await import("./auth-CZuiVsFh.mjs");
2714
+ const { getApiUrl } = await import("./auth-CCjt0hcq.mjs");
2684
2715
  voidPlatformDiscovery = await discoverPlatform(getApiUrl(root));
2685
2716
  }
2686
2717
  if (!voidPlatformDiscovery.capabilities.githubActions) {
@@ -0,0 +1,27 @@
1
+ import { UsageLimitData, UsageLimitData as UsageLimitData$1, readUsageLimit as readUsageLimit$1 } from "@void/edge";
2
+ //#region src/runtime/limits.d.ts
3
+ declare class UsageLimit extends Error {
4
+ override readonly name: string;
5
+ readonly code: "usage_limit";
6
+ readonly resource: UsageLimitData["resource"];
7
+ readonly reason: UsageLimitData["reason"];
8
+ readonly retryAt?: string;
9
+ constructor(data: Omit<UsageLimitData, "code">);
10
+ response(options?: {
11
+ message?: string;
12
+ }): Response;
13
+ getResponse(): Response;
14
+ }
15
+ type LimitHandlers<T, R, L> = {
16
+ ok(value: T): R | Promise<R>;
17
+ limited(limit: UsageLimit): L | Promise<L>;
18
+ };
19
+ interface LimitOperation<T> {
20
+ match<R, L>(handlers: LimitHandlers<T, R, L>): Promise<R | L>;
21
+ }
22
+ /** Lazy, single-execution operation. Quota callbacks never catch failures from the user's ok handler. */
23
+ declare function limitOperation<T>(execute: () => Promise<T>, classify?: (error: unknown) => UsageLimit | null, prepare?: (value: T, limited: (limit: UsageLimit) => unknown) => T): LimitOperation<T>;
24
+ declare function asUsageLimit(error: unknown): UsageLimit | null;
25
+ declare function limitFromResponse(response: Response, resource: UsageLimitData["resource"]): Promise<UsageLimit | null>;
26
+ //#endregion
27
+ export { asUsageLimit as a, readUsageLimit$1 as c, UsageLimitData$1 as i, LimitOperation as n, limitFromResponse as o, UsageLimit as r, limitOperation as s, LimitHandlers as t };
@@ -0,0 +1,68 @@
1
+ import { readUsageLimit, readUsageLimit as readUsageLimit$1, usageLimitResponse } from "@void/edge";
2
+ //#region src/runtime/limits.ts
3
+ var UsageLimit = class extends Error {
4
+ name = "UsageLimit";
5
+ code = "usage_limit";
6
+ resource;
7
+ reason;
8
+ retryAt;
9
+ constructor(data) {
10
+ super(data.message);
11
+ this.resource = data.resource;
12
+ this.reason = data.reason;
13
+ this.retryAt = data.retryAt;
14
+ }
15
+ response(options = {}) {
16
+ return usageLimitResponse({
17
+ code: this.code,
18
+ resource: this.resource,
19
+ reason: this.reason,
20
+ message: options.message ?? this.message,
21
+ ...this.retryAt ? { retryAt: this.retryAt } : {}
22
+ });
23
+ }
24
+ getResponse() {
25
+ return this.response();
26
+ }
27
+ };
28
+ /** Lazy, single-execution operation. Quota callbacks never catch failures from the user's ok handler. */
29
+ function limitOperation(execute, classify = asUsageLimit, prepare) {
30
+ let result;
31
+ return Object.freeze({
32
+ get then() {
33
+ throw new TypeError("Use .match({ ok, limited }) to execute this operation.");
34
+ },
35
+ async match(handlers) {
36
+ if (typeof handlers?.ok !== "function" || typeof handlers?.limited !== "function") throw new TypeError("Both ok and limited handlers are required.");
37
+ let value;
38
+ try {
39
+ value = await (result ??= Promise.resolve().then(execute));
40
+ } catch (error) {
41
+ const limit = classify(error);
42
+ if (limit) return handlers.limited(limit);
43
+ throw error;
44
+ }
45
+ return handlers.ok(prepare ? prepare(value, handlers.limited) : value);
46
+ }
47
+ });
48
+ }
49
+ function asUsageLimit(error) {
50
+ if (error instanceof UsageLimit) return error;
51
+ const data = readUsageLimit(error);
52
+ return data ? new UsageLimit(data) : null;
53
+ }
54
+ async function limitFromResponse(response, resource) {
55
+ if (response.status !== 429) return null;
56
+ const data = readUsageLimit(await response.clone().json().catch(() => null));
57
+ if (data) return new UsageLimit(data);
58
+ const retry = response.headers.get("retry-after");
59
+ const retryTime = retry === null ? NaN : /^\d+$/.test(retry) ? Date.now() + Number(retry) * 1e3 : Date.parse(retry);
60
+ return new UsageLimit({
61
+ resource,
62
+ reason: "rate_limit",
63
+ message: `${resource === "ai" ? "AI" : "Service"} is temporarily unavailable because its usage limit was reached.`,
64
+ ...Number.isFinite(retryTime) ? { retryAt: new Date(retryTime).toISOString() } : {}
65
+ });
66
+ }
67
+ //#endregion
68
+ export { readUsageLimit$1 as a, limitOperation as i, asUsageLimit as n, limitFromResponse as r, UsageLimit as t };
@@ -1,9 +1,9 @@
1
- import { c as getToken, s as getSiteDomain } from "./auth-DLNN0D3Z.mjs";
1
+ import { c as getToken, s as getSiteDomain } from "./auth-CSkdO2Bb.mjs";
2
2
  import { d as writeProjectConfig, o as readProjectConfig, t as attachSelectedPlatform } from "./project-C0Fqu05O.mjs";
3
3
  import { O as intro, P as outro, T as cancel, j as log } from "./dist-CTBk70IR.mjs";
4
- import { n as PlatformClient } from "./client-BTZ3XkrB.mjs";
4
+ import { n as PlatformClient } from "./client-RV8NVeB8.mjs";
5
5
  import { c as import_picocolors, r as cliTitle } from "./output-Dm_A4Tbv.mjs";
6
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-l9J7pbtm.mjs";
6
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-bMf6ffLZ.mjs";
7
7
  import { r as resolveProjectBySlug } from "./resolve-project-BG5ORGID.mjs";
8
8
  //#region src/cli/link.ts
9
9
  function projectLabel(slug, root, url) {
@@ -1,7 +1,7 @@
1
- import { c as getToken } from "./auth-DLNN0D3Z.mjs";
1
+ import { c as getToken } from "./auth-CSkdO2Bb.mjs";
2
2
  import { i as readDeploymentPlatform, o as readProjectConfig } from "./project-C0Fqu05O.mjs";
3
3
  import { O as intro, P as outro, j as log } from "./dist-CTBk70IR.mjs";
4
- import { n as PlatformClient } from "./client-BTZ3XkrB.mjs";
4
+ import { n as PlatformClient } from "./client-RV8NVeB8.mjs";
5
5
  import { a as dim, c as import_picocolors, d as tablePrefix, o as ensureUtc, r as cliTitle } from "./output-Dm_A4Tbv.mjs";
6
6
  import { r as resolveProjectBySlug } from "./resolve-project-BG5ORGID.mjs";
7
7
  //#region src/cli/list.ts
@@ -43,7 +43,7 @@ async function runListCommand(root, slug) {
43
43
  }
44
44
  async function showCloudflareDeployments(root, slug) {
45
45
  if (slug) throw new Error("project: A project name selects a Void platform project and is not used for direct Cloudflare apps.");
46
- const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-BT6OWFBk.mjs");
46
+ const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-AiWashgg.mjs");
47
47
  const status = await readCloudflareWorkerStatus(resolveCloudflareOperationContext(root));
48
48
  if (status.versions.length === 0) {
49
49
  outro(`No deployments for ${status.workerName}.`);
@@ -1,5 +1,5 @@
1
1
  import { r as AuthUser } from "./auth-DkcFflXV.mjs";
2
- import { a as CloudEnv, r as CloudContext } from "./handler-HEcZsaij.mjs";
2
+ import { a as CloudEnv, r as CloudContext } from "./handler-CZ4nAylQ.mjs";
3
3
  //#region src/runtime/live.d.ts
4
4
  type MaybePromise<T> = T | Promise<T>;
5
5
  type LiveControlRequest = {
@@ -1,6 +1,6 @@
1
1
  import { a as join, i as isAbsolute, u as resolve } from "./dist-BVqXeR_h.mjs";
2
- import { v as readRootWranglerConfig } from "./wrangler-DQF1vKyf.mjs";
3
- import { r as getMiniflareDatabasePath } from "./runner-p-dMs2UN.mjs";
2
+ import { y as readRootWranglerConfig } from "./wrangler-7K-bW_DL.mjs";
3
+ import { r as getMiniflareDatabasePath } from "./runner-Ol0TNjk6.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
@@ -0,0 +1,2 @@
1
+ import { r as selectPlatformLoginMethod } from "./login-UZKFM_u7.mjs";
2
+ export { selectPlatformLoginMethod };
@@ -1,6 +1,6 @@
1
- import { _ as saveToken, a as getApiUrl, c as getToken, g as savePlatformToken, h as runPlatformLogin, l as getTokenSource, m as runLogin, p as removeToken, u as isStagingMode } from "./auth-DLNN0D3Z.mjs";
1
+ import { _ as saveToken, a as getApiUrl, c as getToken, g as savePlatformToken, h as runPlatformLogin, l as getTokenSource, m as runLogin, p as removeToken, u as isStagingMode } from "./auth-CSkdO2Bb.mjs";
2
2
  import { I as select, O as intro, P as outro, T as cancel, W as isCancel, j as log } from "./dist-CTBk70IR.mjs";
3
- import { i as isExpiredTokenError, n as PlatformClient } from "./client-BTZ3XkrB.mjs";
3
+ import { i as isExpiredTokenError, n as PlatformClient } from "./client-RV8NVeB8.mjs";
4
4
  import { c as import_picocolors, i as createSpinner, r as cliTitle } from "./output-Dm_A4Tbv.mjs";
5
5
  //#region src/cli/login.ts
6
6
  async function selectPlatformLoginMethod(platform, requestedId) {
@@ -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-E0FuL212.mjs").then(({ discoverPlatform }) => discoverPlatform(getApiUrl(root))));
32
+ const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await import("./platform-cmd-Bt-1w6pY.mjs").then(({ discoverPlatform }) => discoverPlatform(getApiUrl(root))));
33
33
  const s = createSpinner();
34
34
  s.start(`Opening browser for ${providerName} login...`);
35
35
  try {
@@ -1,7 +1,7 @@
1
- import { c as getToken } from "./auth-DLNN0D3Z.mjs";
1
+ import { c as getToken } from "./auth-CSkdO2Bb.mjs";
2
2
  import { i as readDeploymentPlatform, o as readProjectConfig } from "./project-C0Fqu05O.mjs";
3
3
  import { O as intro, P as outro, j as log } from "./dist-CTBk70IR.mjs";
4
- import { n as PlatformClient } from "./client-BTZ3XkrB.mjs";
4
+ import { n as PlatformClient } from "./client-RV8NVeB8.mjs";
5
5
  import { a as dim, c as import_picocolors, r as cliTitle } from "./output-Dm_A4Tbv.mjs";
6
6
  //#region src/cli/logs.ts
7
7
  async function runLogsCommand(root, filter, range, deployment, level) {
@@ -9,7 +9,7 @@ async function runLogsCommand(root, filter, range, deployment, level) {
9
9
  intro(cliTitle("project logs"));
10
10
  const platform = readDeploymentPlatform(root);
11
11
  if (platform === "cloudflare") {
12
- const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-BT6OWFBk.mjs");
12
+ const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-AiWashgg.mjs");
13
13
  if (range !== "1h") log.warn("Cloudflare tail streams live logs; --range does not select historical entries.");
14
14
  if (level && level !== "all" && level !== "error") log.warn("Cloudflare tail cannot filter individual console levels; showing all invocation logs.");
15
15
  await tailCloudflareWorker(resolveCloudflareOperationContext(root), {
@@ -0,0 +1,2 @@
1
+ import { n as runMigrateCommand } from "./migrate-DHul7PRV.mjs";
2
+ export { runMigrateCommand };
@@ -1,7 +1,8 @@
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
3
  import { g as validateConfig } from "./config-Br_JZD6u.mjs";
4
- import { U as seedCloudflareConfig, W as stashCloudflareDeployPointer, z as VOID_LOCK_FILE } from "./wrangler-DQF1vKyf.mjs";
4
+ import { n as VOID_LOCK_FILE, o as seedCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-Bktvwtpf.mjs";
5
+ import "./wrangler-7K-bW_DL.mjs";
5
6
  import { O as intro, P as outro, j as log } from "./dist-CTBk70IR.mjs";
6
7
  import { r as cliTitle } from "./output-Dm_A4Tbv.mjs";
7
8
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
@@ -1,7 +1,7 @@
1
1
  import { a as join } from "./dist-BVqXeR_h.mjs";
2
2
  import { n as loadVoidAuthConfig, t as findVoidAuthConfig } from "./config-DPByhVck.mjs";
3
3
  import { m as readConfig } from "./config-Br_JZD6u.mjs";
4
- import { r as getMiniflareDatabasePath } from "./runner-p-dMs2UN.mjs";
4
+ import { r as getMiniflareDatabasePath } from "./runner-Ol0TNjk6.mjs";
5
5
  import { a as loadLocalEnv } from "./env-_v349JBd.mjs";
6
6
  import { r as resolveVoidAuthMigrationSchema } from "./drizzle-Beb2Am5S.mjs";
7
7
  import { n as applyPgAuthMigrations, r as applySqliteAuthMigrations, t as applyMySqlAuthMigrations } from "./auth-migrations-9vif1uj8.mjs";