void 1.0.3 → 1.1.11

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 (194) hide show
  1. package/dist/{account-cmd-BTcUzv9L.mjs → account-cmd-R35a4Oa8.mjs} +3 -3
  2. package/dist/{application-analysis-AB_YYWgH.mjs → application-analysis-D7nNmNJb.mjs} +6 -6
  3. package/dist/{application-routing-L7V-TFhZ.mjs → application-routing-CZH66gXn.mjs} +1 -1
  4. package/dist/{auth-link-DUJuvRx5.mjs → auth-link-VHmiKZmP.mjs} +3 -3
  5. package/dist/{auth-migrations-Cgs0k6lS.mjs → auth-migrations-BO27GDNr.mjs} +38 -2
  6. package/dist/{auth-router-CIxiMG7i.mjs → auth-router-O_Wrs5kg.mjs} +5 -4
  7. package/dist/{better-auth-shared-B74NJIus.d.mts → better-auth-shared-Bv18bB-l.d.mts} +2 -0
  8. package/dist/{better-auth-shared-CMXlZG7W.mjs → better-auth-shared-D-6z0q0f.mjs} +28 -1
  9. package/dist/{build-cmd-BkIv25PA.mjs → build-cmd-CMZiMn46.mjs} +1 -1
  10. package/dist/{cache-Ctzfig-W.mjs → cache-TZ5Ab3d7.mjs} +1 -1
  11. package/dist/{cancel-deploy-CD9o-SsC.mjs → cancel-deploy-DXoR6oC3.mjs} +1 -1
  12. package/dist/cli/cli.mjs +69 -50
  13. package/dist/cli/env-schema-probe.mjs +3 -3
  14. package/dist/client-DrdeJgHR.mjs +1 -0
  15. package/dist/{client-DM9Kcf4e.mjs → client-GuSO3v_x.mjs} +1 -1
  16. package/dist/{cloudflare-auth-CqFBDo52.mjs → cloudflare-auth-DSvBc1Gu.mjs} +1 -1
  17. package/dist/{cloudflare-cmd-BIAF_BIY.mjs → cloudflare-cmd-ZSErUl6Y.mjs} +3 -3
  18. package/dist/{cloudflare-config-DV60XFFK.mjs → cloudflare-config-rdFOys4X.mjs} +2 -2
  19. package/dist/{cloudflare-connect-WjwnVOJA.mjs → cloudflare-connect-BN-k2kD-.mjs} +2 -2
  20. package/dist/{cloudflare-operations-CrSUFRzJ.mjs → cloudflare-operations-Cm8lVx7W.mjs} +1 -1
  21. package/dist/{cloudflare-operations-B42EZeJy.mjs → cloudflare-operations-DH3GedbV.mjs} +6 -6
  22. package/dist/{cloudflare-process-CeDWJRhj.mjs → cloudflare-process-CZJ4viYl.mjs} +2 -2
  23. package/dist/collect-BWhkgtAn.mjs +1 -0
  24. package/dist/{collect-xjffdCdk.mjs → collect-Dew86qce.mjs} +4 -3
  25. package/dist/{config-D0GY5ItR.mjs → config-CyUJzi3q.mjs} +1 -1
  26. package/dist/{config-Bx_1SpnO.mjs → config-D26zcdKy.mjs} +2 -2
  27. package/dist/{config-BEm9vRvS.mjs → config-DC5llZaI.mjs} +2 -2
  28. package/dist/{config-QrJWu0IX.mjs → config-DYJV8aEH.mjs} +1 -1
  29. package/dist/{connect-CKtk-EZe.mjs → connect-yQuLbuiJ.mjs} +4 -4
  30. package/dist/{create-project-B-ewF_Af.mjs → create-project-CGOo_OL_.mjs} +1 -1
  31. package/dist/{create-project-yInGo72M.mjs → create-project-DEEWJX_M.mjs} +1 -1
  32. package/dist/database-provider.d.mts +6 -0
  33. package/dist/{db-7I_gfdVq.mjs → db-COI-yTJE.mjs} +255 -110
  34. package/dist/{db-types-Bb4WBWIs.mjs → db-types-NGxPwnlt.mjs} +1 -1
  35. package/dist/{delete-Cy-M1u-r.mjs → delete-PgN6L_9N.mjs} +1 -1
  36. package/dist/deploy-CxNgEYr4.mjs +2 -0
  37. package/dist/{deploy-BYYlnsiy.mjs → deploy-DsW-PrRQ.mjs} +38 -36
  38. package/dist/{deploy-managed-static-Ca4TFdmx.mjs → deploy-managed-static-Dqz06S2u.mjs} +20 -20
  39. package/dist/{deploy-transport-DWlWBe6M.mjs → deploy-transport-nY3vLXPL.mjs} +2 -2
  40. package/dist/deploy.mjs +5 -5
  41. package/dist/discover-D4TPKo57.mjs +1 -0
  42. package/dist/{discover-D2PGT63u.mjs → discover-LaV0tbIu.mjs} +1 -1
  43. package/dist/{dispatch-DrTTk8Xg.mjs → dispatch-BAbbn3jg.mjs} +6 -6
  44. package/dist/{domain-CZGxPv9u.mjs → domain-DKlNI0SR.mjs} +2 -2
  45. package/dist/{drizzle-CF84FOVM.mjs → drizzle-BQfyvQKX.mjs} +13 -2
  46. package/dist/{email-DzyNVuoU.mjs → email-C0s3OvJk.mjs} +10 -11
  47. package/dist/{email-cloudflare-DfG6UEMm.mjs → email-cloudflare-etpKiITL.mjs} +7 -10
  48. package/dist/{entry-ehmBvs5w.mjs → entry-B_0IhV64.mjs} +1 -1
  49. package/dist/{env-Nx3yf50r.mjs → env-BX2JFsgF.mjs} +4 -4
  50. package/dist/{env-types-DS2_y4X8.mjs → env-types-GRchm5dw.mjs} +1 -1
  51. package/dist/{env-validation-BT7z-qpQ.mjs → env-validation-CuGfWRJd.mjs} +1 -1
  52. package/dist/{env-validation-DYxjz_Wo.mjs → env-validation-D_KyMdab.mjs} +2 -2
  53. package/dist/{fetch-BPCYVi3H.d.mts → fetch-DHLOuPyk.d.mts} +2 -2
  54. package/dist/{fetch-stream-obvZ7fvO.d.mts → fetch-stream-CNxOrBdP.d.mts} +1 -1
  55. package/dist/{gen-CufHEf42.mjs → gen-Bj6ZkOcI.mjs} +25 -19
  56. package/dist/gen-DsCukhuw.mjs +1 -0
  57. package/dist/{generate-Dat0UTry.mjs → generate-B1m4Cm4n.mjs} +1 -1
  58. package/dist/{generate-ClI89brV.mjs → generate-DkEb9rL-.mjs} +1 -1
  59. package/dist/{github-cmd-FU8EjFyU.mjs → github-cmd-DQDryS-5.mjs} +1 -1
  60. package/dist/{headers-Di1FsD3e.mjs → headers-Bi4bOAwp.mjs} +1 -1
  61. package/dist/{help-BT2hovNI.mjs → help-D49SL_lN.mjs} +16 -12
  62. package/dist/help-DOFygYi4.mjs +1 -0
  63. package/dist/{inbound-brj2-TM5.d.mts → inbound-Da7XsjH3.d.mts} +6 -12
  64. package/dist/index.mjs +103 -57
  65. package/dist/{info-l249eUdH.mjs → info-Bxunp14X.mjs} +4 -4
  66. package/dist/{init-D0A6M64Q.mjs → init-DyTEY04s.mjs} +50 -27
  67. package/dist/{link-WMoJFf4i.mjs → link-CgOVn9EC.mjs} +2 -2
  68. package/dist/{list-CQ2EQEHL.mjs → list-CUfD9RSb.mjs} +2 -2
  69. package/dist/{local-d1-BxvQYEFi.mjs → local-d1-CpaPbd_L.mjs} +5 -5
  70. package/dist/{login-C2T1oVG-.mjs → login-BJvGW5Eu.mjs} +2 -2
  71. package/dist/login-alAlxw4S.mjs +1 -0
  72. package/dist/{logs-DnC1d7xB.mjs → logs-DeizBI4j.mjs} +2 -2
  73. package/dist/{migrate-BDIprOYd.mjs → migrate-8rk56vV8.mjs} +4 -4
  74. package/dist/migrate-D2odrAmh.mjs +1 -0
  75. package/dist/{neon-n74ta1Pr.mjs → neon-DTZr7Bu7.mjs} +0 -1
  76. package/dist/nitro.mjs +3 -3
  77. package/dist/{node-cPadMgUO.mjs → node-uN8_zxJr.mjs} +15 -9
  78. package/dist/{operator-cmd-DHieWtFp.mjs → operator-cmd-CA5QQyvE.mjs} +3 -3
  79. package/dist/operator-cmd-D7toMPJ9.mjs +1 -0
  80. package/dist/pages/client.d.mts +1 -1
  81. package/dist/pages/index.d.mts +1 -1
  82. package/dist/pages/index.mjs +4 -4
  83. package/dist/pages/islands-plugin.d.mts +1 -1
  84. package/dist/pages/islands-plugin.mjs +1 -1
  85. package/dist/pages/protocol.d.mts +1 -1
  86. package/dist/{platform-args-CaCL_1Ch.mjs → platform-args-B7ke06up.mjs} +1 -4
  87. package/dist/platform-args-B_LrqEZB.mjs +1 -0
  88. package/dist/{platform-auth-config-Z16-I8nT.mjs → platform-auth-config-CZaY812e.mjs} +3 -3
  89. package/dist/{platform-auth-protection-BXwZiJSF.mjs → platform-auth-protection-U9HCqoXv.mjs} +2 -2
  90. package/dist/{platform-auth-recovery-CXjfqyOv.mjs → platform-auth-recovery-B0BV2hfV.mjs} +2 -2
  91. package/dist/{platform-cmd-DaAOiWTl.mjs → platform-cmd-CXrjk4fb.mjs} +4 -4
  92. package/dist/{platform-cmd-PT4YwMLM.mjs → platform-cmd-D9lwFpcl.mjs} +1 -1
  93. package/dist/{platform-domain-CxpvUeo0.mjs → platform-domain-CXyq-68_.mjs} +2 -2
  94. package/dist/{platform-lifecycle-DBiS0cJd.mjs → platform-lifecycle-D0TdyXbN.mjs} +20 -11
  95. package/dist/{platform-lifecycle-u9pMOvxC.mjs → platform-lifecycle-Dz2cJsLX.mjs} +1 -1
  96. package/dist/{platform-management-DvBS83rC.mjs → platform-management-BvgbusqL.mjs} +1 -1
  97. package/dist/{platform-management-DhEFdQAf.mjs → platform-management-CnXhgxTM.mjs} +1 -3
  98. package/dist/{platform-recovery-BUGOB4RC.mjs → platform-recovery-CH_fThW6.mjs} +2 -2
  99. package/dist/{plugin-inference-DsARdQKE.mjs → plugin-inference-Bekzjuqw.mjs} +2 -2
  100. package/dist/{prepare-PQCgsny0.mjs → prepare-2XD6kh77.mjs} +1 -1
  101. package/dist/{prepare-DEB5SeVJ.mjs → prepare-DepAGBcV.mjs} +9 -9
  102. package/dist/prepare-EVEbQ9n2.mjs +1 -0
  103. package/dist/{project-cmd-DVatD8Ev.mjs → project-cmd-CpLYflCH.mjs} +16 -16
  104. package/dist/{project-paths-DMvEeSau.mjs → project-paths-DGu_QZ_Q.mjs} +1 -1
  105. package/dist/{project-team-DJrWEAG1.mjs → project-team-CTSY7W7Q.mjs} +1 -1
  106. package/dist/{project-token-CBgLBuL6.mjs → project-token-Cybtlfbl.mjs} +1 -1
  107. package/dist/{project-tsconfig-bveqhlYA.mjs → project-tsconfig-Itv1f4WC.mjs} +1 -1
  108. package/dist/{project-zero-trust-92gLtZ25.mjs → project-zero-trust-DKOtqyvu.mjs} +1 -1
  109. package/dist/{protocol-4H7V_3Os.d.mts → protocol-B8sI8dRD.d.mts} +1 -1
  110. package/dist/{providers-BXuhmuub.mjs → providers-BUHwJlmM.mjs} +10 -1
  111. package/dist/{provision-BnSSkiED.mjs → provision-BuifYvLc.mjs} +63 -64
  112. package/dist/provision-UcYjpTRh.mjs +1 -0
  113. package/dist/r2-conditions-B8xUgJRc.mjs +61 -0
  114. package/dist/{requests-7W1Pygt2.mjs → requests-Ryiazz9i.mjs} +1 -1
  115. package/dist/{rollback-BcASVnwP.mjs → rollback-Or0EV3rP.mjs} +2 -2
  116. package/dist/{runner-CabsQ-iM.mjs → runner-3uGC-oLF.mjs} +9 -7
  117. package/dist/{runner-So9mYfcm.mjs → runner-WCdfeI0q.mjs} +1 -1
  118. package/dist/{runner-mysql-BhRaONkO.mjs → runner-mysql-BWmbk5IE.mjs} +1 -1
  119. package/dist/{runner-mysql-DWwE8jKi.mjs → runner-mysql-BcHnLUuM.mjs} +1 -1
  120. package/dist/{runner-pg-_Xncr3H5.mjs → runner-pg-Cgp-cr_p.mjs} +1 -1
  121. package/dist/{runner-pg-BRemq_GX.mjs → runner-pg-Cr3qrqi4.mjs} +1 -1
  122. package/dist/runtime/ai.d.mts +4 -0
  123. package/dist/runtime/ai.mjs +2 -37
  124. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  125. package/dist/runtime/better-auth-mysql.mjs +2 -2
  126. package/dist/runtime/better-auth-pg.d.mts +1 -1
  127. package/dist/runtime/better-auth-pg.mjs +2 -2
  128. package/dist/runtime/better-auth.d.mts +1 -1
  129. package/dist/runtime/better-auth.mjs +2 -2
  130. package/dist/runtime/client-react.d.mts +2 -2
  131. package/dist/runtime/client-solid.d.mts +2 -2
  132. package/dist/runtime/client-svelte.d.mts +2 -2
  133. package/dist/runtime/client-vue.d.mts +2 -2
  134. package/dist/runtime/client.d.mts +2 -2
  135. package/dist/runtime/email/testing.d.mts +1 -1
  136. package/dist/runtime/email.d.mts +2 -3
  137. package/dist/runtime/email.mjs +2 -3
  138. package/dist/runtime/fetch-stream.d.mts +2 -2
  139. package/dist/runtime/fetch.d.mts +1 -1
  140. package/dist/runtime/migration-handler-mysql.mjs +4 -4
  141. package/dist/runtime/migration-handler-pg.mjs +9 -1
  142. package/dist/runtime/remote/binding-handler.mjs +25 -25
  143. package/dist/runtime/remote/index.d.mts +3 -0
  144. package/dist/runtime/remote/index.mjs +86 -23
  145. package/dist/runtime/routing.d.mts +2 -2
  146. package/dist/runtime/sse-client.d.mts +4 -0
  147. package/dist/runtime/ws-server.d.mts +2 -2
  148. package/dist/runtime/ws.d.mts +1 -1
  149. package/dist/{scan-C0BMdmEd.mjs → scan-D2-FcLHs.mjs} +13 -5
  150. package/dist/{secret-bg73f1Ge.mjs → secret-CClHaFxm.mjs} +3 -3
  151. package/dist/{types-BAp5AEBU.d.mts → types-7AIz0OZu.d.mts} +1 -1
  152. package/dist/{validate-CheZGRE7.mjs → validate-CnZPMq4q.mjs} +22 -17
  153. package/dist/validate-D7Wn8PUX.mjs +1 -0
  154. package/dist/{version-metadata-DIrqEHQo.mjs → version-metadata-B1Bm2wSq.mjs} +1 -1
  155. package/dist/{wrangler-BYs07Rxy.mjs → wrangler-C9XSzrju.mjs} +3 -3
  156. package/dist/wrangler-DAdxHEzh.mjs +1 -0
  157. package/dist/{wrapper-CwhpNWtH.mjs → wrapper-BOigE1xJ.mjs} +4 -4
  158. package/dist/{ws-aKVYB-fA.d.mts → ws-CsBNxv86.d.mts} +5 -0
  159. package/docs/guide/auth.md +1 -1
  160. package/docs/guide/database/d1.md +2 -2
  161. package/docs/guide/database/mysql.md +1 -1
  162. package/docs/guide/edge/headers.md +10 -2
  163. package/docs/guide/edge/revalidation.md +2 -0
  164. package/docs/guide/email/receiving.md +1 -1
  165. package/docs/guide/email/sending.md +1 -1
  166. package/docs/guide/pages-routing/islands.md +2 -2
  167. package/docs/guide/platform/administration/connected-apps.md +18 -2
  168. package/docs/guide/remote-dev.md +2 -0
  169. package/docs/guide/websockets.md +2 -2
  170. package/docs/index.md +78 -22
  171. package/docs/reference/api/pages.md +7 -5
  172. package/docs/reference/api.md +2 -0
  173. package/docs/reference/cli/database.md +7 -5
  174. package/docs/reference/cli/deploy.md +12 -10
  175. package/docs/reference/cli/email.md +1 -1
  176. package/docs/reference/cli/generate.md +1 -1
  177. package/docs/reference/cli/platform-installation.md +2 -2
  178. package/docs/reference/cli/project.md +4 -2
  179. package/docs/reference/cli.md +1 -1
  180. package/docs/reference/config.md +11 -1
  181. package/package.json +7 -7
  182. package/dist/client-B60PwCC4.mjs +0 -1
  183. package/dist/collect-Cae8A7Zr.mjs +0 -1
  184. package/dist/deploy-9lgfhrXS.mjs +0 -2
  185. package/dist/discover-ClzFSwns.mjs +0 -1
  186. package/dist/gen-sXyp5DFO.mjs +0 -1
  187. package/dist/help-i2YGGnTH.mjs +0 -1
  188. package/dist/login-XD844Xs-.mjs +0 -1
  189. package/dist/migrate-BRwU-blY.mjs +0 -1
  190. package/dist/operator-cmd-D6gnZsnK.mjs +0 -1
  191. package/dist/platform-args-B0HeTh0C.mjs +0 -1
  192. package/dist/prepare-CYT6tAzD.mjs +0 -1
  193. package/dist/r2-conditions-D1Wk8i7b.mjs +0 -30
  194. package/dist/validate-BQFdf0Pi.mjs +0 -1
@@ -1,28 +1,28 @@
1
1
  import { a as join, c as resolve, i as isAbsolute, n as dirname, s as relative, t as basename } from "./dist-ipQi0Q8y.mjs";
2
- import { r as detectFramework } from "./plugin-inference-DsARdQKE.mjs";
3
- import { n as readProjectPaths, o as TYPED_CONFIG_FILE } from "./project-paths-DMvEeSau.mjs";
4
- import { d as readConfig, s as getDatabaseDialect } from "./config-Bx_1SpnO.mjs";
2
+ import { r as detectFramework } from "./plugin-inference-Bekzjuqw.mjs";
3
+ import { n as readProjectPaths, o as TYPED_CONFIG_FILE } from "./project-paths-DGu_QZ_Q.mjs";
4
+ import { d as readConfig, s as getDatabaseDialect } from "./config-D26zcdKy.mjs";
5
5
  import { t as MagicString } from "./dist-Cegxq8gs.mjs";
6
6
  import { c as writeDeploymentPlatform, n as readDeploymentPlatform, r as readProjectConfig, t as attachSelectedPlatform, u as writeProjectConfig } from "./project-rqDnVsJN.mjs";
7
- import { r as materializeCloudflareConfig } from "./cloudflare-config-DV60XFFK.mjs";
8
- import { i as LATEST_KNOWN_COMPAT_DATE, j as writeProvisionedWranglerConfig } from "./wrangler-BYs07Rxy.mjs";
7
+ import { r as materializeCloudflareConfig } from "./cloudflare-config-rdFOys4X.mjs";
8
+ import { i as LATEST_KNOWN_COMPAT_DATE, j as writeProvisionedWranglerConfig } from "./wrangler-C9XSzrju.mjs";
9
9
  import { i as readPackageJson, n as hasPackageDependency } from "./package-json-BjYqR-So.mjs";
10
10
  import { c as getToken } from "./auth-B6iOCjKI.mjs";
11
11
  import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./dist-BVdsO7Py.mjs";
12
12
  import { l as formatUrl, m as printSuccess, p as note } from "./output-Ba6ZbrzY.mjs";
13
- import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-bveqhlYA.mjs";
13
+ import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-Itv1f4WC.mjs";
14
14
  import { t as parseDotenvFile } from "./dotenv-CNazY3-w.mjs";
15
- import { r as writeDrizzleConfig, t as PLACEHOLDER_DB_URL } from "./config-BEm9vRvS.mjs";
15
+ import { r as writeDrizzleConfig, t as PLACEHOLDER_DB_URL } from "./config-DC5llZaI.mjs";
16
16
  import { n as getOwnVersion, r as getPackageDir, t as detectAgents } from "./agents-CuNtT0D_.mjs";
17
- import { r as PlatformClient } from "./client-DM9Kcf4e.mjs";
18
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-yInGo72M.mjs";
19
- import { s as formatProjectCommand } from "./cloudflare-process-CeDWJRhj.mjs";
17
+ import { r as PlatformClient } from "./client-GuSO3v_x.mjs";
18
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-DEEWJX_M.mjs";
19
+ import { s as formatProjectCommand } from "./cloudflare-process-CZJ4viYl.mjs";
20
20
  import { i as hasLocalLockfile, n as drizzleKitBin, r as findInstalledYarnPnpRuntime, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-DLbEFMT0.mjs";
21
- import { t as promptForLoginToken } from "./login-C2T1oVG-.mjs";
22
- import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-DaAOiWTl.mjs";
23
- import { t as connectCloudflare } from "./cloudflare-connect-WjwnVOJA.mjs";
24
- import { n as snapshotDrizzleOutputs } from "./generate-Dat0UTry.mjs";
25
- import { i as writeVoidProjectConfig, o as migrateFrameworkAdapterPaths, r as canRewriteVoidProjectConfig, t as migrateLegacyVoidConfig } from "./migrate-BDIprOYd.mjs";
21
+ import { t as promptForLoginToken } from "./login-BJvGW5Eu.mjs";
22
+ import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-CXrjk4fb.mjs";
23
+ import { t as connectCloudflare } from "./cloudflare-connect-BN-k2kD-.mjs";
24
+ import { n as snapshotDrizzleOutputs } from "./generate-B1m4Cm4n.mjs";
25
+ import { i as writeVoidProjectConfig, o as migrateFrameworkAdapterPaths, r as canRewriteVoidProjectConfig, t as migrateLegacyVoidConfig } from "./migrate-8rk56vV8.mjs";
26
26
  import { createRequire } from "node:module";
27
27
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
28
28
  import { parseSync } from "vite";
@@ -2318,15 +2318,27 @@ function setupExistingProject(root, framework) {
2318
2318
  ensureExistingProjectViteConfig(root, framework);
2319
2319
  return dependencyAdded;
2320
2320
  }
2321
- /**
2322
- * Scaffolds the "SQL → types → handler → fetch" demo into an existing project.
2323
- * `setupExistingProject` has already declared `void` in `package.json`.
2324
- */
2325
- function scaffoldDemo(root) {
2326
- const devCommand = getDevCommand(root);
2327
- const paths = readProjectPaths(root);
2328
- mkdirSync(paths.dbDir, { recursive: true });
2329
- writeFileSync(paths.schemaFile, `import { sql } from "void/db";
2321
+ /** The demo `posts` table for the database dialect that init configured. */
2322
+ function demoSchemaSource(dialect) {
2323
+ if (dialect === "postgresql") return `import { pgTable, serial, text, timestamp } from "void/schema-pg";
2324
+
2325
+ export const posts = pgTable("posts", {
2326
+ id: serial("id").primaryKey(),
2327
+ title: text("title").notNull(),
2328
+ body: text("body").notNull(),
2329
+ createdAt: timestamp("created_at").notNull().defaultNow(),
2330
+ });
2331
+ `;
2332
+ if (dialect === "mysql") return `import { int, mysqlTable, text, timestamp } from "void/schema-mysql";
2333
+
2334
+ export const posts = mysqlTable("posts", {
2335
+ id: int("id").autoincrement().primaryKey(),
2336
+ title: text("title").notNull(),
2337
+ body: text("body").notNull(),
2338
+ createdAt: timestamp("created_at").notNull().defaultNow(),
2339
+ });
2340
+ `;
2341
+ return `import { sql } from "void/db";
2330
2342
  import { integer, sqliteTable, text } from "void/schema-d1";
2331
2343
 
2332
2344
  export const posts = sqliteTable("posts", {
@@ -2335,7 +2347,17 @@ export const posts = sqliteTable("posts", {
2335
2347
  body: text("body").notNull(),
2336
2348
  createdAt: text("created_at").notNull().default(sql\`(datetime('now'))\`),
2337
2349
  });
2338
- `);
2350
+ `;
2351
+ }
2352
+ /**
2353
+ * Scaffolds the "SQL → types → handler → fetch" demo into an existing project.
2354
+ * `setupExistingProject` has already declared `void` in `package.json`.
2355
+ */
2356
+ function scaffoldDemo(root, dialect) {
2357
+ const devCommand = getDevCommand(root);
2358
+ const paths = readProjectPaths(root);
2359
+ mkdirSync(paths.dbDir, { recursive: true });
2360
+ writeFileSync(paths.schemaFile, demoSchemaSource(dialect));
2339
2361
  log.step("Created db/schema.ts");
2340
2362
  mkdirSync(join(paths.routesDir, "api"), { recursive: true });
2341
2363
  writeFileSync(join(paths.routesDir, "api", "posts.ts"), `import { defineHandler } from "void";
@@ -2495,14 +2517,15 @@ async function runInitCommand(root, initArgs) {
2495
2517
  process.exit(0);
2496
2518
  }
2497
2519
  if (scaffold) {
2498
- scaffoldDemo(root);
2520
+ const demoDialect = getDatabaseDialect(readConfig(root));
2521
+ scaffoldDemo(root, demoDialect);
2499
2522
  const voidResolvable = isVoidResolvableFrom(root);
2500
2523
  const deferral = resolveWorkspaceDeferral(root, readPackageJson(root));
2501
2524
  if (deferral && !voidResolvable) {
2502
2525
  const relRoot = relative(deferral.workspaceRoot, root) || ".";
2503
2526
  note(`Scaffolded the starter demo in ./${relRoot}.\n\nRun your workspace install from ${deferral.workspaceRoot} to pick up the new \`void\` dep,\nthen run \`void db generate\` from ./${relRoot} to create the initial migration.`, "Workspace subpackage");
2504
2527
  }
2505
- scaffoldedStarterMode = "sqlite";
2528
+ scaffoldedStarterMode = demoDialect;
2506
2529
  }
2507
2530
  }
2508
2531
  }
@@ -2,8 +2,8 @@ import { r as readProjectConfig, t as attachSelectedPlatform, u as writeProjectC
2
2
  import { c as getToken, s as getSiteDomain } from "./auth-B6iOCjKI.mjs";
3
3
  import { H as outro, L as log, O as cancel } from "./dist-BVdsO7Py.mjs";
4
4
  import { f as import_picocolors, m as printSuccess } from "./output-Ba6ZbrzY.mjs";
5
- import { r as PlatformClient } from "./client-DM9Kcf4e.mjs";
6
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-yInGo72M.mjs";
5
+ import { r as PlatformClient } from "./client-GuSO3v_x.mjs";
6
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-DEEWJX_M.mjs";
7
7
  import { a as resolveProjectBySlug } from "./resolve-project-WpwkCB_c.mjs";
8
8
  //#region src/cli/link.ts
9
9
  function projectLabel(slug, root, url) {
@@ -2,7 +2,7 @@ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-r
2
2
  import { c as getToken } from "./auth-B6iOCjKI.mjs";
3
3
  import { H as outro, L as log } from "./dist-BVdsO7Py.mjs";
4
4
  import { _ as tablePrefix, c as formatRelativeTime, f as import_picocolors, h as sanitizeTerminalText, i as dim, o as formatCount } from "./output-Ba6ZbrzY.mjs";
5
- import { r as PlatformClient } from "./client-DM9Kcf4e.mjs";
5
+ import { r as PlatformClient } from "./client-GuSO3v_x.mjs";
6
6
  import { a as resolveProjectBySlug } from "./resolve-project-WpwkCB_c.mjs";
7
7
  //#region src/cli/list.ts
8
8
  async function runListCommand(root, slug) {
@@ -42,7 +42,7 @@ async function runListCommand(root, slug) {
42
42
  }
43
43
  async function showCloudflareDeployments(root, slug) {
44
44
  if (slug) throw new Error("project: A project name selects a Void platform project and is not used for direct Cloudflare apps.");
45
- const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-CrSUFRzJ.mjs");
45
+ const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-Cm8lVx7W.mjs");
46
46
  const status = await readCloudflareWorkerStatus(resolveCloudflareOperationContext(root));
47
47
  if (status.versions.length === 0) {
48
48
  outro(`No deployments for ${status.workerName}.`);
@@ -1,6 +1,6 @@
1
1
  import { a as join, c as resolve, i as isAbsolute } from "./dist-ipQi0Q8y.mjs";
2
- import { b as readRootWranglerConfig } from "./wrangler-BYs07Rxy.mjs";
3
- import { r as getMiniflareDatabasePath } from "./runner-CabsQ-iM.mjs";
2
+ import { b as readRootWranglerConfig } from "./wrangler-C9XSzrju.mjs";
3
+ import { r as getMiniflareDatabasePath } from "./runner-3uGC-oLF.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
@@ -76,13 +76,13 @@ function readLocalD1PersistState(root) {
76
76
  try {
77
77
  state = JSON.parse(readFileSync(path, "utf-8"));
78
78
  } catch {
79
- throw new Error(`db: local D1 state in ${path} is invalid. Run \`void dev\` to refresh it.`);
79
+ throw new Error(`db: local D1 state in ${path} is invalid. Start the dev server to refresh it.`);
80
80
  }
81
81
  const projectRoot = resolve(root);
82
- if (state.version !== 1 || state.projectRoot !== projectRoot || typeof state.persistRoot !== "string" || state.persistRoot.length === 0) throw new Error(`db: local D1 state in ${path} is stale. Run \`void dev\` to refresh it.`);
82
+ if (state.version !== 1 || state.projectRoot !== projectRoot || typeof state.persistRoot !== "string" || state.persistRoot.length === 0) throw new Error(`db: local D1 state in ${path} is stale. Start the dev server to refresh it.`);
83
83
  if (state.viteConfig) {
84
84
  const { path: configPath, hash } = state.viteConfig;
85
- if (!existsSync(configPath) || hashFile(configPath) !== hash) throw new Error("db: voidPlugin persistence configuration changed since the local D1 state was written. Run `void dev` to refresh it before using `void db`.");
85
+ if (!existsSync(configPath) || hashFile(configPath) !== hash) throw new Error("db: voidPlugin persistence configuration changed since the local D1 state was written. Start the dev server to refresh it before using `void db`.");
86
86
  }
87
87
  return state;
88
88
  }
@@ -1,7 +1,7 @@
1
1
  import { a as getApiUrl, c as getToken, f as removeToken, l as getTokenSource, m as savePlatformToken, p as runPlatformLogin } from "./auth-B6iOCjKI.mjs";
2
2
  import { H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./dist-BVdsO7Py.mjs";
3
3
  import { f as import_picocolors, l as formatUrl, m as printSuccess, r as createSpinner } from "./output-Ba6ZbrzY.mjs";
4
- import { a as isExpiredTokenError, r as PlatformClient } from "./client-DM9Kcf4e.mjs";
4
+ import { a as isExpiredTokenError, r as PlatformClient } from "./client-GuSO3v_x.mjs";
5
5
  //#region src/cli/login.ts
6
6
  async function selectPlatformLoginMethod(platform, requestedId) {
7
7
  const providers = platform.authenticationProviders;
@@ -30,7 +30,7 @@ async function selectPlatformLoginMethod(platform, requestedId) {
30
30
  }
31
31
  async function promptForLoginToken(root = process.cwd(), platform) {
32
32
  const apiUrl = platform?.apiUrl ?? getApiUrl(root);
33
- const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await (await import("./platform-cmd-PT4YwMLM.mjs")).discoverPlatform(apiUrl));
33
+ const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await (await import("./platform-cmd-D9lwFpcl.mjs")).discoverPlatform(apiUrl));
34
34
  const s = createSpinner();
35
35
  s.start(`Opening browser for ${providerName} login...`);
36
36
  try {
@@ -0,0 +1 @@
1
+ export { r as selectPlatformLoginMethod } from "./login-BJvGW5Eu.mjs";
@@ -2,14 +2,14 @@ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-r
2
2
  import { c as getToken } from "./auth-B6iOCjKI.mjs";
3
3
  import { $ as wrapTextWithPrefix, H as outro, L as log } from "./dist-BVdsO7Py.mjs";
4
4
  import { a as errorStackFrames, f as import_picocolors, i as dim, o as formatCount } from "./output-Ba6ZbrzY.mjs";
5
- import { r as PlatformClient } from "./client-DM9Kcf4e.mjs";
5
+ import { r as PlatformClient } from "./client-GuSO3v_x.mjs";
6
6
  import { t as sanitizeTerminalLogText } from "./terminal-log-text-D9ACPOuG.mjs";
7
7
  //#region src/cli/logs.ts
8
8
  async function runLogsCommand(root, filter, range, deployment, level) {
9
9
  console.log();
10
10
  const platform = readDeploymentPlatform(root);
11
11
  if (platform === "cloudflare") {
12
- const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-CrSUFRzJ.mjs");
12
+ const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-Cm8lVx7W.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), {
@@ -1,9 +1,9 @@
1
1
  import { a as join, n as dirname } from "./dist-ipQi0Q8y.mjs";
2
- import { o as TYPED_CONFIG_FILE, s as loadTypedVoidConfigFile } from "./project-paths-DMvEeSau.mjs";
3
- import { p as validateConfig } from "./config-Bx_1SpnO.mjs";
2
+ import { o as TYPED_CONFIG_FILE, s as loadTypedVoidConfigFile } from "./project-paths-DGu_QZ_Q.mjs";
3
+ import { p as validateConfig } from "./config-D26zcdKy.mjs";
4
4
  import { t as parseJsoncObject } from "./generated-wrangler-config-DeWj5F9Y.mjs";
5
- import { n as VOID_LOCK_FILE, o as seedCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-DV60XFFK.mjs";
6
- import "./wrangler-BYs07Rxy.mjs";
5
+ import { n as VOID_LOCK_FILE, o as seedCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-rdFOys4X.mjs";
6
+ import "./wrangler-C9XSzrju.mjs";
7
7
  import { L as log } from "./dist-BVdsO7Py.mjs";
8
8
  import { m as printSuccess } from "./output-Ba6ZbrzY.mjs";
9
9
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
@@ -0,0 +1 @@
1
+ export { n as runMigrateCommand } from "./migrate-8rk56vV8.mjs";
@@ -44,7 +44,6 @@ function createNeonDatabaseProvider(options = {}) {
44
44
  const projectId = typeof project?.id === "string" ? project.id : void 0;
45
45
  return {
46
46
  connectionString,
47
- projectId,
48
47
  dashboardUrl: projectId ? `https://console.neon.tech/app/projects/${projectId}` : void 0
49
48
  };
50
49
  }
package/dist/nitro.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { a as join, n as dirname } from "./dist-ipQi0Q8y.mjs";
2
- import { d as readConfig, s as getDatabaseDialect } from "./config-Bx_1SpnO.mjs";
3
- import { r as voidDbBundlerPlugin } from "./dispatch-DrTTk8Xg.mjs";
4
- import { n as bundleWorkerSqlDriver } from "./wrapper-CwhpNWtH.mjs";
2
+ import { d as readConfig, s as getDatabaseDialect } from "./config-D26zcdKy.mjs";
3
+ import { r as voidDbBundlerPlugin } from "./dispatch-BAbbn3jg.mjs";
4
+ import { n as bundleWorkerSqlDriver } from "./wrapper-BOigE1xJ.mjs";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { normalizePath } from "vite";
7
7
  import { resolve } from "node:path/win32";
@@ -1,9 +1,11 @@
1
- import { n as loadVoidAuthConfig, t as findVoidAuthConfig } from "./config-D0GY5ItR.mjs";
2
- import { d as readConfig } from "./config-Bx_1SpnO.mjs";
3
- import { r as getMiniflareDatabasePath } from "./runner-CabsQ-iM.mjs";
1
+ import { n as dirname } from "./dist-ipQi0Q8y.mjs";
2
+ import { n as loadVoidAuthConfig, t as findVoidAuthConfig } from "./config-CyUJzi3q.mjs";
3
+ import { d as readConfig } from "./config-D26zcdKy.mjs";
4
+ import { r as getMiniflareDatabasePath } from "./runner-3uGC-oLF.mjs";
4
5
  import { o as loadLocalEnv } from "./env-BJjULvL0.mjs";
5
- import { r as resolveVoidAuthMigrationSchema } from "./drizzle-CF84FOVM.mjs";
6
- import { a as pgMigrationRunner, i as mysqlMigrationRunner, n as applyPgAuthMigrations, r as applySqliteAuthMigrations, t as applyMySqlAuthMigrations } from "./auth-migrations-Cgs0k6lS.mjs";
6
+ import { r as resolveVoidAuthMigrationSchema } from "./drizzle-BQfyvQKX.mjs";
7
+ import { a as pgMigrationRunner, i as mysqlMigrationRunner, n as applyPgAuthMigrations, r as applySqliteAuthMigrations, t as applyMySqlAuthMigrations } from "./auth-migrations-BO27GDNr.mjs";
8
+ import { mkdirSync } from "node:fs";
7
9
  //#region src/auth/node.ts
8
10
  async function runLocalVoidAuthMigrations(root, dialect, persistRoot, databaseId, configPath = findVoidAuthConfig(root), databaseUrl) {
9
11
  const authConfig = await loadVoidAuthConfig(configPath);
@@ -12,14 +14,19 @@ async function runLocalVoidAuthMigrations(root, dialect, persistRoot, databaseId
12
14
  providers: readConfig(root).auth?.providers ?? null,
13
15
  userConfig: authConfig
14
16
  };
17
+ const localEnv = loadLocalEnv(root);
18
+ const connectionString = databaseUrl ?? (process.env.DATABASE_URL || localEnv.DATABASE_URL || void 0);
15
19
  const env = {
16
- ...loadLocalEnv(root),
17
- ...process.env
20
+ ...localEnv,
21
+ ...process.env,
22
+ ...connectionString !== void 0 ? { DATABASE_URL: connectionString } : {}
18
23
  };
19
24
  const migrationSchema = resolveVoidAuthMigrationSchema(runtime, env);
20
25
  if (dialect === "sqlite") {
21
26
  const { DatabaseSync } = await import("node:sqlite");
22
- const db = new DatabaseSync(getMiniflareDatabasePath(persistRoot, databaseId));
27
+ const dbPath = getMiniflareDatabasePath(persistRoot, databaseId);
28
+ mkdirSync(dirname(dbPath), { recursive: true });
29
+ const db = new DatabaseSync(dbPath);
23
30
  try {
24
31
  await applySqliteAuthMigrations({
25
32
  async all(sql) {
@@ -34,7 +41,6 @@ async function runLocalVoidAuthMigrations(root, dialect, persistRoot, databaseId
34
41
  }
35
42
  return;
36
43
  }
37
- const connectionString = databaseUrl ?? (typeof env.DATABASE_URL === "string" && env.DATABASE_URL.length > 0 ? env.DATABASE_URL : void 0);
38
44
  if (!connectionString) return;
39
45
  if (dialect === "mysql") {
40
46
  const { createConnection } = await import("mysql2/promise");
@@ -163,8 +163,8 @@ async function runAuth(origin, args) {
163
163
  if (args.action === "login" || args.action === "token" && args.tokenStdin) {
164
164
  if (!args.tokenStdin && !process.stdin.isTTY) throw new OperatorClientError("Browser login requires an interactive terminal. Use --token-stdin to exchange an API session.", "interactive_login_required");
165
165
  const apiToken = args.tokenStdin ? await readOperatorApiTokenStdin() : await (async () => {
166
- const { discoverPlatform } = await import("./platform-cmd-PT4YwMLM.mjs");
167
- const { selectPlatformLoginMethod } = await import("./login-XD844Xs-.mjs");
166
+ const { discoverPlatform } = await import("./platform-cmd-D9lwFpcl.mjs");
167
+ const { selectPlatformLoginMethod } = await import("./login-alAlxw4S.mjs");
168
168
  const { runPlatformLogin } = await import("./auth-Cbqi1iVX.mjs");
169
169
  return runPlatformLogin(origin, (await selectPlatformLoginMethod(await discoverPlatform(origin), args.provider)).id, (url) => process.stderr.write(`Sign in at ${url}\n`));
170
170
  })();
@@ -344,7 +344,7 @@ async function migrateDeploymentAssets(client, origin, args) {
344
344
  }
345
345
  async function runOperatorCommand(args) {
346
346
  if (!args.action) {
347
- const { printHelpPage } = await import("./help-i2YGGnTH.mjs");
347
+ const { printHelpPage } = await import("./help-DOFygYi4.mjs");
348
348
  printHelpPage(["platform", args.group]);
349
349
  return;
350
350
  }
@@ -0,0 +1 @@
1
+ export { a as runOperatorCommand } from "./operator-cmd-CA5QQyvE.mjs";
@@ -1,5 +1,5 @@
1
1
  import { t as interpolateRouteParams } from "../route-url-BgPja1GS.mjs";
2
- import { t as PageObject } from "../protocol-4H7V_3Os.mjs";
2
+ import { t as PageObject } from "../protocol-B8sI8dRD.mjs";
3
3
  import { n as CacheForInput, r as CacheForResult } from "../prefetch-Ce6la4EI.mjs";
4
4
  import { UsageLimitData } from "@void/edge";
5
5
  import { ActionUrl, ResolveActionBody, ResolveActionParams } from "void/routes";
@@ -1,6 +1,6 @@
1
1
  import { a as renderHtmlAttrs, i as renderHeadToString, n as HeadDescriptor, o as resolveHead, r as renderBodyAttrs, t as HeadConfig } from "../head-C8K_iGe6.mjs";
2
2
  import "../config-7qoq2p9v.mjs";
3
- import { i as PageDefinition, n as LayoutDefinition, o as PageScanResult, r as NamedLayoutDefinition } from "../types-BAp5AEBU.mjs";
3
+ import { i as PageDefinition, n as LayoutDefinition, o as PageScanResult, r as NamedLayoutDefinition } from "../types-7AIz0OZu.mjs";
4
4
  import { t as serializePageData } from "../serialize-CfSwWfF2.mjs";
5
5
  //#region src/project-paths.d.ts
6
6
  type ProjectPaths = {
@@ -1,8 +1,8 @@
1
1
  import { a as join } from "../dist-ipQi0Q8y.mjs";
2
- import { r as resolvePagesDir } from "../project-paths-DMvEeSau.mjs";
3
- import { d as readConfig } from "../config-Bx_1SpnO.mjs";
4
- import { a as resolveNamedLayout, i as resolveLayoutIds, n as resolveEffectiveLayoutChain, o as toLayoutId, r as resolveLayoutChain, t as scanPages } from "../scan-C0BMdmEd.mjs";
5
- import { r as parseRedirectsFile } from "../headers-Di1FsD3e.mjs";
2
+ import { r as resolvePagesDir } from "../project-paths-DGu_QZ_Q.mjs";
3
+ import { d as readConfig } from "../config-D26zcdKy.mjs";
4
+ import { a as resolveNamedLayout, i as resolveLayoutIds, n as resolveEffectiveLayoutChain, o as toLayoutId, r as resolveLayoutChain, t as scanPages } from "../scan-D2-FcLHs.mjs";
5
+ import { r as parseRedirectsFile } from "../headers-Bi4bOAwp.mjs";
6
6
  import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "../head-D2VF4ApL.mjs";
7
7
  import { t as serializePageData } from "../serialize-BtQyaYoC.mjs";
8
8
  //#region src/pages/manifest.ts
@@ -1,4 +1,4 @@
1
- import { o as PageScanResult } from "../types-BAp5AEBU.mjs";
1
+ import { o as PageScanResult } from "../types-7AIz0OZu.mjs";
2
2
  import { ResolvedConfig, ViteDevServer } from "vite";
3
3
  //#region ../../node_modules/.pnpm/magic-string@1.4.3/node_modules/magic-string/dist/index.d.mts
4
4
  //#region src/SourceMap.d.ts
@@ -1,5 +1,5 @@
1
1
  import { c as resolve, n as dirname } from "../dist-ipQi0Q8y.mjs";
2
- import { c as findIslandImports, l as findStaticCssImports, n as resolveEffectiveLayoutChain, s as editIslandSource, t as scanPages } from "../scan-C0BMdmEd.mjs";
2
+ import { c as findIslandImports, l as findStaticCssImports, n as resolveEffectiveLayoutChain, s as editIslandSource, t as scanPages } from "../scan-D2-FcLHs.mjs";
3
3
  import { existsSync, readFileSync, readdirSync } from "node:fs";
4
4
  import { normalizePath } from "vite";
5
5
  //#region src/pages/islands-plugin.ts
@@ -1,3 +1,3 @@
1
1
  import { w as ValidationError } from "../handler-_PqY82xe.mjs";
2
- import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-4H7V_3Os.mjs";
2
+ import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-B8sI8dRD.mjs";
3
3
  export { PageObject, PageRenderResult, ValidationError, flattenValidationErrors, handlePageGet, handlePageMutation, safeJsonStringify };
@@ -400,18 +400,15 @@ function parsePlatformArgs(args) {
400
400
  const parsed = parseSelector(rest.filter((arg) => ![
401
401
  "--purge-data",
402
402
  "--purge-resources",
403
- "--delete-zone",
404
403
  "--keep-zone"
405
404
  ].includes(arg)), subcommand, { allowYes: true });
406
- if (rest.includes("--delete-zone") && rest.includes("--keep-zone")) throw new Error("platform: --delete-zone and --keep-zone cannot be used together.");
407
405
  return {
408
406
  subcommand,
409
407
  selector: parsed.selector,
410
408
  plan: parsed.plan,
411
409
  purgeData: rest.includes("--purge-data") || rest.includes("--purge-resources"),
412
410
  purgeResources: rest.includes("--purge-resources"),
413
- yes: parsed.yes,
414
- deleteZone: rest.includes("--delete-zone") ? true : rest.includes("--keep-zone") ? false : null
411
+ yes: parsed.yes
415
412
  };
416
413
  }
417
414
  if (subcommand === "install") {
@@ -0,0 +1 @@
1
+ export { t as parsePlatformArgs } from "./platform-args-B7ke06up.mjs";
@@ -3,7 +3,7 @@ import { A as confirm, K as select, U as password, X as text, z as multiselect }
3
3
  import { l as formatUrl, m as printSuccess } from "./output-Ba6ZbrzY.mjs";
4
4
  import { n as OperatorClient } from "./operator-client-C-ROjk1I.mjs";
5
5
  import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-Cr2zCc-J.mjs";
6
- import { i as humanLines } from "./operator-cmd-DHieWtFp.mjs";
6
+ import { i as humanLines } from "./operator-cmd-CA5QQyvE.mjs";
7
7
  import { o as platformPromptAnswer } from "./platform-setup-YvN9VQXV.mjs";
8
8
  import { parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration } from "@void/platform";
9
9
  import { stripVTControlCharacters } from "node:util";
@@ -142,11 +142,11 @@ async function configurationInput(args, existing) {
142
142
  }
143
143
  async function runPlatformAuthConfig(args) {
144
144
  if (args.action === "recover") {
145
- const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-CXjfqyOv.mjs");
145
+ const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-B0BV2hfV.mjs");
146
146
  return runPlatformAuthRecovery(args);
147
147
  }
148
148
  if (args.action === "protection") {
149
- const { runPlatformProtectionConfig } = await import("./platform-auth-protection-BXwZiJSF.mjs");
149
+ const { runPlatformProtectionConfig } = await import("./platform-auth-protection-U9HCqoXv.mjs");
150
150
  return runPlatformProtectionConfig(args);
151
151
  }
152
152
  const origin = resolveOperatorOrigin(args.connection);
@@ -5,8 +5,8 @@ import { A as confirm, tt as isCancel } from "./dist-BVdsO7Py.mjs";
5
5
  import { m as printSuccess } from "./output-Ba6ZbrzY.mjs";
6
6
  import { n as OperatorClient } from "./operator-client-C-ROjk1I.mjs";
7
7
  import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-Cr2zCc-J.mjs";
8
- import { G as PlatformCloudflareClient, H as parsePlatformAccessSetupSpec, R as resolvePlatformCloudflareCredential, U as preparePlatformAccessSetup, V as checkpointPlatformAccessResources, n as resolvePlatformInstallDatabaseUrl, u as acquirePlatformDatabaseLifecycleLock } from "./platform-lifecycle-DBiS0cJd.mjs";
9
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-DhEFdQAf.mjs";
8
+ import { G as PlatformCloudflareClient, H as parsePlatformAccessSetupSpec, R as resolvePlatformCloudflareCredential, U as preparePlatformAccessSetup, V as checkpointPlatformAccessResources, n as resolvePlatformInstallDatabaseUrl, u as acquirePlatformDatabaseLifecycleLock } from "./platform-lifecycle-D0TdyXbN.mjs";
9
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-CnXhgxTM.mjs";
10
10
  import { parsePlatformAccessProtection, platformProtectionProofMessage } from "@void/platform";
11
11
  import { createHmac } from "node:crypto";
12
12
  import { readFile } from "node:fs/promises";
@@ -3,8 +3,8 @@ import { u as openBrowser } from "./auth-B6iOCjKI.mjs";
3
3
  import { A as confirm, tt as isCancel } from "./dist-BVdsO7Py.mjs";
4
4
  import { l as formatUrl, m as printSuccess } from "./output-Ba6ZbrzY.mjs";
5
5
  import { a as resolveOperatorOrigin } from "./operator-auth-Cr2zCc-J.mjs";
6
- import { G as PlatformCloudflareClient, R as resolvePlatformCloudflareCredential, d as acquirePlatformDatabaseLifecycleLockConnection, f as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-DBiS0cJd.mjs";
7
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-DhEFdQAf.mjs";
6
+ import { G as PlatformCloudflareClient, R as resolvePlatformCloudflareCredential, d as acquirePlatformDatabaseLifecycleLockConnection, f as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-D0TdyXbN.mjs";
7
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-CnXhgxTM.mjs";
8
8
  import { parsePlatformAccessProtection, parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration, platformAuthenticationRecoveryMessage, validatePlatformAdmissionPolicy } from "@void/platform";
9
9
  import { createCipheriv, createDecipheriv, createHash, createHmac, hkdfSync, randomBytes, randomUUID } from "node:crypto";
10
10
  import { setTimeout } from "node:timers/promises";
@@ -96,19 +96,19 @@ async function runPlatformCommand(_root, args) {
96
96
  }]
97
97
  });
98
98
  if (isCancel(group)) return;
99
- const { parsePlatformArgs } = await import("./platform-args-B0HeTh0C.mjs");
99
+ const { parsePlatformArgs } = await import("./platform-args-B_LrqEZB.mjs");
100
100
  return runPlatformCommand(_root, parsePlatformArgs(["config", group]));
101
101
  }
102
102
  const { runPlatformPlansConfig } = await import("./platform-plans-config-BWn1S2Rv.mjs");
103
103
  await runPlatformPlansConfig(args);
104
104
  return;
105
105
  }
106
- const { runPlatformAuthConfig } = await import("./platform-auth-config-Z16-I8nT.mjs");
106
+ const { runPlatformAuthConfig } = await import("./platform-auth-config-CZaY812e.mjs");
107
107
  await runPlatformAuthConfig(args);
108
108
  return;
109
109
  }
110
110
  if (args.subcommand === "operator") {
111
- const { runOperatorCommand } = await import("./operator-cmd-D6gnZsnK.mjs");
111
+ const { runOperatorCommand } = await import("./operator-cmd-D7toMPJ9.mjs");
112
112
  await runOperatorCommand(args);
113
113
  return;
114
114
  }
@@ -176,7 +176,7 @@ async function runPlatformCommand(_root, args) {
176
176
  console.log(`Capabilities: ${Object.entries(discovery.capabilities).filter(([, enabled]) => enabled).map(([name]) => name).join(", ")}`);
177
177
  return;
178
178
  }
179
- const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-u9pMOvxC.mjs");
179
+ const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-Dz2cJsLX.mjs");
180
180
  await runPlatformLifecycleCommand(args);
181
181
  }
182
182
  function showSavedInstallationStatus(manifest) {
@@ -1 +1 @@
1
- export { t as discoverPlatform, r as runPlatformCommand } from "./platform-cmd-DaAOiWTl.mjs";
1
+ export { t as discoverPlatform, r as runPlatformCommand } from "./platform-cmd-CXrjk4fb.mjs";
@@ -2,8 +2,8 @@ import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock
2
2
  import { t as cfAccessHeaders } from "./cf-access-BM9G0lhO.mjs";
3
3
  import { A as confirm, X as text, tt as isCancel } from "./dist-BVdsO7Py.mjs";
4
4
  import { m as printSuccess, p as note } from "./output-Ba6ZbrzY.mjs";
5
- import { G as PlatformCloudflareClient, L as assertPlatformOperatorCredentialCanApplyPlan, R as resolvePlatformCloudflareCredential, S as recordResource, T as createPlatformInstallPlan, n as resolvePlatformInstallDatabaseUrl, t as assertNoninteractivePlatformMutationAcknowledged, u as acquirePlatformDatabaseLifecycleLock, w as recordPlatformWorkerTraffic, y as createPlatformHealthProbeToken } from "./platform-lifecycle-DBiS0cJd.mjs";
6
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest, o as resolveInstalledPlatformManifest } from "./platform-management-DhEFdQAf.mjs";
5
+ import { G as PlatformCloudflareClient, L as assertPlatformOperatorCredentialCanApplyPlan, R as resolvePlatformCloudflareCredential, S as recordResource, T as createPlatformInstallPlan, n as resolvePlatformInstallDatabaseUrl, t as assertNoninteractivePlatformMutationAcknowledged, u as acquirePlatformDatabaseLifecycleLock, w as recordPlatformWorkerTraffic, y as createPlatformHealthProbeToken } from "./platform-lifecycle-D0TdyXbN.mjs";
6
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest, o as resolveInstalledPlatformManifest } from "./platform-management-CnXhgxTM.mjs";
7
7
  import { PLATFORM_HEALTH_HOSTNAME_LABEL, PLATFORM_REMOTE_INSTALLATION_MANIFEST_KEY, createApplicationRoutes, createPlatformDeploymentManifest, normalizeApplicationDomain } from "@void/platform";
8
8
  //#region src/cli/platform-domain.ts
9
9
  function platformDomainTarget(manifest, domain, zone, dedicatedZone) {