void 1.1.12 → 1.2.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 (189) hide show
  1. package/dist/{account-cmd-Cj6sCMTk.mjs → account-cmd-CdUll_35.mjs} +5 -5
  2. package/dist/action-key-XZ9HkWAO.mjs +26 -0
  3. package/dist/{application-analysis-D7nNmNJb.mjs → application-analysis-fEqoSeMp.mjs} +11 -11
  4. package/dist/{application-routing-CZH66gXn.mjs → application-routing-DAhNP4u3.mjs} +1 -1
  5. package/dist/{ast-CPGPjb0V.mjs → ast-CsZ_q_gc.mjs} +6 -1
  6. package/dist/ast-bindings-C3yaPs1y.mjs +296 -0
  7. package/dist/{auth-link-Dj7lAC_K.mjs → auth-link-C87vGXM-.mjs} +5 -5
  8. package/dist/{auth-router-CNsMOFCa.mjs → auth-router-6I81r-ix.mjs} +3 -3
  9. package/dist/{better-auth-shared-Bv18bB-l.d.mts → better-auth-shared-DVk2DkTW.d.mts} +1 -1
  10. package/dist/{build-cmd-ByhegwRC.mjs → build-cmd-ex1g-j_e.mjs} +4 -4
  11. package/dist/{cache-CEFb5ban.mjs → cache-oHzrnY3z.mjs} +4 -4
  12. package/dist/{cancel-deploy-CaARY26n.mjs → cancel-deploy-viAMD0Q_.mjs} +3 -3
  13. package/dist/cf-build-output-BJHuSsVN.mjs +1 -0
  14. package/dist/{cf-build-output-ChEKWan2.mjs → cf-build-output-BhVxldCw.mjs} +4 -3
  15. package/dist/{cf-command-values-b8OqDoo9.mjs → cf-command-values-ByHk0xg4.mjs} +2 -1
  16. package/dist/cf-worker-settings-BECvvTVd.mjs +37 -0
  17. package/dist/cli/cli.mjs +32 -32
  18. package/dist/cli/cloudflare-operation-process.mjs +23 -13
  19. package/dist/cli/env-schema-probe.d.mts +1 -1
  20. package/dist/cli/env-schema-probe.mjs +3 -3
  21. package/dist/{client-BdzxubTS.mjs → client-BEkdj1kx.mjs} +1 -1
  22. package/dist/client-BiRDZTSd.mjs +1 -0
  23. package/dist/{cloudflare-auth-DSvBc1Gu.mjs → cloudflare-auth-Byo_0_N9.mjs} +1 -1
  24. package/dist/{cloudflare-cmd-D_2-Q-_i.mjs → cloudflare-cmd-DMzCv12s.mjs} +5 -5
  25. package/dist/{cloudflare-config-rdFOys4X.mjs → cloudflare-config-DchHxPTo.mjs} +1 -1
  26. package/dist/{cloudflare-connect-BN-k2kD-.mjs → cloudflare-connect-CCRTVg-I.mjs} +3 -3
  27. package/dist/{cloudflare-operations-D5PLrOqD.mjs → cloudflare-operations-Dh9dEHJj.mjs} +6 -6
  28. package/dist/{cloudflare-operations-BFLCpUCV.mjs → cloudflare-operations-DsSaw2BT.mjs} +1 -1
  29. package/dist/{cloudflare-process-CZJ4viYl.mjs → cloudflare-process-8jEYIeim.mjs} +3 -2
  30. package/dist/{config-DC5llZaI.mjs → config-BIaXIkkv.mjs} +8 -3
  31. package/dist/{config-DYJV8aEH.mjs → config-BU6hMu1W.mjs} +1 -1
  32. package/dist/{config-D26zcdKy.mjs → config-DHgSEWT7.mjs} +39 -6
  33. package/dist/{config-7qoq2p9v.d.mts → config-DQfHOKh9.d.mts} +10 -1
  34. package/dist/config-entry.d.mts +1 -1
  35. package/dist/{connect-C4_m2moF.mjs → connect-k7R2rPVA.mjs} +6 -6
  36. package/dist/{create-project-CvuYDD-l.mjs → create-project-DTuy-l0z.mjs} +1 -1
  37. package/dist/{create-project-D8jQTwVQ.mjs → create-project-DV71ol5d.mjs} +4 -4
  38. package/dist/{db-BsiOAa0A.mjs → db-DVOkLH5X.mjs} +30 -24
  39. package/dist/{delete-CAma7nFi.mjs → delete-BbP5eopu.mjs} +4 -4
  40. package/dist/{deploy-D1gIPiAq.mjs → deploy-7H32EnUs.mjs} +114 -71
  41. package/dist/deploy-CE0Ev0Ob.mjs +2 -0
  42. package/dist/{deploy-managed-static-B9KVxY3X.mjs → deploy-managed-static-DlvcvnQT.mjs} +15 -15
  43. package/dist/{deploy-transport-B3mtEi_q.mjs → deploy-transport-BzGEj0Ge.mjs} +2 -2
  44. package/dist/deploy.mjs +7 -7
  45. package/dist/{dev-inbox-Rd6j_8vM.mjs → dev-inbox-D0jxye_D.mjs} +1 -1
  46. package/dist/{dispatch-BAbbn3jg.mjs → dispatch-DoUnxTNo.mjs} +15 -11
  47. package/dist/{dist-CfgIkieS.mjs → dist-B1PLt4_8.mjs} +1 -1
  48. package/dist/{dist-BVdsO7Py.mjs → dist-Cor9XGoz.mjs} +94 -200
  49. package/dist/{dist-Bn8Kodjp.mjs → dist-D15hFhP0.mjs} +1 -1
  50. package/dist/{domain-BAdwm-QS.mjs → domain-CA2wBgra.mjs} +5 -5
  51. package/dist/drizzle-9TubSZvI.mjs +1 -0
  52. package/dist/{email-BcjSyAL0.mjs → email-B9ayYQEG.mjs} +1 -1
  53. package/dist/{email-MwjA7kaL.mjs → email-DXpCc77w.mjs} +10 -10
  54. package/dist/{email-cloudflare-etpKiITL.mjs → email-cloudflare-D03g2TkS.mjs} +7 -7
  55. package/dist/{entry-B_0IhV64.mjs → entry-BEM8ZuGP.mjs} +40 -12
  56. package/dist/{env-B163-G1s.mjs → env-DgOQ9_8S.mjs} +6 -6
  57. package/dist/{env-public-CCdykygU.d.mts → env-public-6lqiSD2b.d.mts} +1 -0
  58. package/dist/{env-types-GRchm5dw.mjs → env-types-BicfKBhV.mjs} +1 -1
  59. package/dist/{env-validation-CuGfWRJd.mjs → env-validation-BmsdCZEk.mjs} +1 -1
  60. package/dist/{env-validation-D_KyMdab.mjs → env-validation-Dwq3PJzK.mjs} +3 -3
  61. package/dist/{gen-CYN3wiov.mjs → gen-BfmcIi2g.mjs} +5 -5
  62. package/dist/gen-NrOlWZaG.mjs +1 -0
  63. package/dist/{github-cmd-C8QsnJQs.mjs → github-cmd-CY9LUqLh.mjs} +4 -4
  64. package/dist/{handler-D5K_yP6T.d.mts → handler-BbkSPzGF.d.mts} +90 -8
  65. package/dist/{headers-Bi4bOAwp.mjs → headers-D522zd0A.mjs} +2 -2
  66. package/dist/help-BeAFFE5C.mjs +1 -0
  67. package/dist/{help-B2sFwn9b.mjs → help-CxSlPpzJ.mjs} +40 -10
  68. package/dist/{inbound-BuTfm11U.mjs → inbound-VrOLqwZY.mjs} +1 -1
  69. package/dist/index.d.mts +1 -1
  70. package/dist/index.mjs +91 -57
  71. package/dist/{info-Bxunp14X.mjs → info-7VDlhtyy.mjs} +4 -4
  72. package/dist/{init-DGFQMnbk.mjs → init-DxYyOs4-.mjs} +103 -43
  73. package/dist/{link-CwrfpjIM.mjs → link-Ddmod1dZ.mjs} +5 -5
  74. package/dist/{list-hKoW5z-b.mjs → list-MogaugiO.mjs} +5 -5
  75. package/dist/{live-JheIDZKc.d.mts → live-Bt8Y_0bg.d.mts} +1 -1
  76. package/dist/{local-d1-CpaPbd_L.mjs → local-d1-BHBnKWRb.mjs} +1 -1
  77. package/dist/{log-vqY3pqwI.mjs → log-BMwmN5Ae.mjs} +2 -2
  78. package/dist/{login-f2eu2TQh.mjs → login-Cttnagmm.mjs} +4 -4
  79. package/dist/login-DgDwlKc_.mjs +1 -0
  80. package/dist/{logs-CEWqD-_B.mjs → logs-CAszUWZI.mjs} +4 -4
  81. package/dist/{migrate-DYfdWBXt.mjs → migrate-DyT2jJ8y.mjs} +5 -5
  82. package/dist/migrate-n49ZeS1X.mjs +1 -0
  83. package/dist/{mime-srOklVVv.mjs → mime-BAyHPskU.mjs} +1 -1
  84. package/dist/nitro.mjs +3 -3
  85. package/dist/{node-uN8_zxJr.mjs → node-WB7c2N4L.mjs} +2 -2
  86. package/dist/operator-cmd-d2MvJOrl.mjs +1 -0
  87. package/dist/{operator-cmd-DCr_QGMH.mjs → operator-cmd-skshjMGl.mjs} +4 -4
  88. package/dist/output-BW9uK099.mjs +1 -0
  89. package/dist/{output-CKguMgr7.mjs → output-BpgYODYx.mjs} +3 -3
  90. package/dist/pages/client.d.mts +1 -1
  91. package/dist/pages/client.mjs +30 -20
  92. package/dist/pages/index.d.mts +1 -1
  93. package/dist/pages/index.mjs +3 -3
  94. package/dist/pages/islands-plugin.mjs +2 -1
  95. package/dist/pages/protocol.d.mts +2 -2
  96. package/dist/pages/protocol.mjs +1 -1
  97. package/dist/{parse-filename-CUbj-1MP.mjs → parse-filename-DioPHiR9.mjs} +1 -35
  98. package/dist/{picocolors-BTps1_gs.mjs → picocolors-BsDfhxIw.mjs} +1 -1
  99. package/dist/{platform-args-B7ke06up.mjs → platform-args-DVbVClZl.mjs} +12 -4
  100. package/dist/platform-args-kQrgxScY.mjs +1 -0
  101. package/dist/{platform-auth-config-qGvEuns3.mjs → platform-auth-config-C-pm5Qzx.mjs} +6 -6
  102. package/dist/{platform-auth-protection-CyLcD6ot.mjs → platform-auth-protection-SHhvim1L.mjs} +4 -4
  103. package/dist/{platform-auth-recovery-B2LKI8V2.mjs → platform-auth-recovery-DXVWs-wA.mjs} +4 -4
  104. package/dist/{platform-cmd-CX7phm7V.mjs → platform-cmd-D5I1beUX.mjs} +7 -7
  105. package/dist/{platform-cmd-B2ec5eFg.mjs → platform-cmd-PiNRkopU.mjs} +1 -1
  106. package/dist/{platform-domain-DDNK2y-4.mjs → platform-domain-jpmBfZeb.mjs} +4 -4
  107. package/dist/{platform-lifecycle-CWc5gr6c.mjs → platform-lifecycle-DH3Yr1qQ.mjs} +1 -1
  108. package/dist/{platform-lifecycle-3CR98Tg2.mjs → platform-lifecycle-DyKmuNY6.mjs} +28 -17
  109. package/dist/{platform-management-o3LCCeE4.mjs → platform-management--vDwSn35.mjs} +11 -5
  110. package/dist/{platform-management-DAE6g2QU.mjs → platform-management-7m-PLaPJ.mjs} +1 -1
  111. package/dist/{platform-plans-config-CBMZxCep.mjs → platform-plans-config-CeydDSj0.mjs} +2 -2
  112. package/dist/{platform-recovery-Dmsg7lWA.mjs → platform-recovery-BiNpZZab.mjs} +2 -2
  113. package/dist/{platform-setup-hFbnWAVQ.mjs → platform-setup-Ca53gtt0.mjs} +3 -2
  114. package/dist/{plugin-inference-Bekzjuqw.mjs → plugin-inference-DUjCd55H.mjs} +145 -218
  115. package/dist/{prepare-HKo7Rh5V.mjs → prepare-BcAE5Sdj.mjs} +3 -3
  116. package/dist/prepare-C4I0f--h.mjs +1 -0
  117. package/dist/{prepare-DepAGBcV.mjs → prepare-DA-17DhO.mjs} +5 -5
  118. package/dist/{prerender-render-Bfsumdkv.mjs → prerender-render-Cijv7UFo.mjs} +11 -6
  119. package/dist/prerender-render.mjs +1 -1
  120. package/dist/{project-cmd-8ylYGx-O.mjs → project-cmd-DA4K5faU.mjs} +17 -17
  121. package/dist/{project-team-Bvpl78we.mjs → project-team-CQBNveX3.mjs} +4 -4
  122. package/dist/{project-token-QWHoJH2t.mjs → project-token-CCalFyQf.mjs} +4 -4
  123. package/dist/{project-zero-trust-8tJ-RFvu.mjs → project-zero-trust-DPnkiEuT.mjs} +4 -4
  124. package/dist/{protocol-Ssc_LhHj.d.mts → protocol-BBDpJz3G.d.mts} +3 -1
  125. package/dist/{protocol-bAUUkx70.mjs → protocol-DimNxVRr.mjs} +41 -16
  126. package/dist/{provision-BgXFDv0d.mjs → provision-BFLCrnUp.mjs} +1 -1
  127. package/dist/{provision-DZKYCEJg.mjs → provision-DtROpNNI.mjs} +3 -3
  128. package/dist/{requests-Vk5Zyhcy.mjs → requests-BpH0kImL.mjs} +3 -3
  129. package/dist/resolve-project-DD1vu8s9.mjs +1 -0
  130. package/dist/{resolve-project-WpwkCB_c.mjs → resolve-project-Xoi6eTWY.mjs} +1 -1
  131. package/dist/{rollback-CH4yMQys.mjs → rollback-CXS1tAa-.mjs} +4 -4
  132. package/dist/{rolldown-runtime-DXIUcv95.mjs → rolldown-runtime-3h0WiCiA.mjs} +1 -1
  133. package/dist/{routing-assets-VkrKIbxE.mjs → routing-assets-DdSFxoLp.mjs} +10 -4
  134. package/dist/runtime/better-auth-mysql.d.mts +1 -1
  135. package/dist/runtime/better-auth-pg.d.mts +1 -1
  136. package/dist/runtime/better-auth.d.mts +1 -1
  137. package/dist/runtime/email/testing.mjs +4 -4
  138. package/dist/runtime/email.mjs +3 -3
  139. package/dist/runtime/env-public.d.mts +1 -1
  140. package/dist/runtime/handler.d.mts +1 -1
  141. package/dist/runtime/live-client.d.mts +1 -1
  142. package/dist/runtime/live.d.mts +1 -1
  143. package/dist/runtime/routing.d.mts +17 -76
  144. package/dist/runtime/routing.mjs +277 -216
  145. package/dist/runtime/validator.d.mts +1 -1
  146. package/dist/runtime/ws-server.d.mts +2 -2
  147. package/dist/runtime/ws.d.mts +1 -1
  148. package/dist/{scan-D2-FcLHs.mjs → scan-8IzYXiU_.mjs} +12 -11
  149. package/dist/{secret-wr6Sn4Xa.mjs → secret-BbXHfLAt.mjs} +6 -6
  150. package/dist/{skills-C_yRTg0g.mjs → skills-CrUO3PJ0.mjs} +1 -1
  151. package/dist/{subcommand-prompt-CNZc4XUd.mjs → subcommand-prompt-D9OhhbGG.mjs} +2 -2
  152. package/dist/{version-metadata-B1Bm2wSq.mjs → version-metadata-tS39iW09.mjs} +1 -1
  153. package/dist/wrangler-BLb3_luP.mjs +1 -0
  154. package/dist/{wrangler-C9XSzrju.mjs → wrangler-F96NnLyb.mjs} +13 -5
  155. package/dist/{wrapper-DGsYwNi6.mjs → wrapper-D3sZyh2C.mjs} +3 -3
  156. package/dist/{ws-nnFnAyQb.d.mts → ws-BH-im_tX.d.mts} +1 -1
  157. package/docs/guide/ai.md +1 -1
  158. package/docs/guide/database/postgresql.md +1 -1
  159. package/docs/guide/database.md +26 -0
  160. package/docs/guide/email/domains.md +1 -1
  161. package/docs/guide/pages-routing/actions-and-forms.md +1 -1
  162. package/docs/guide/platform/installation/credentials.md +1 -1
  163. package/docs/guide/platform/installation/domains.md +16 -0
  164. package/docs/guide/self-hosted-platform.md +1 -1
  165. package/docs/guide/server-routing.md +1 -1
  166. package/docs/integrations/cloudflare.md +1 -0
  167. package/docs/reference/api/env.md +1 -1
  168. package/docs/reference/api/rewrites.md +1 -1
  169. package/docs/reference/api/types.md +1 -0
  170. package/docs/reference/cli/platform-installation.md +3 -2
  171. package/docs/reference/cli/setup.md +17 -0
  172. package/docs/reference/config.md +13 -0
  173. package/docs/reference/resource-inference.md +4 -0
  174. package/package.json +22 -22
  175. package/sandbox.Dockerfile +1 -1
  176. package/schema.json +23 -3
  177. package/dist/cf-build-output-Dcmxa-Zm.mjs +0 -1
  178. package/dist/cf-user-agent-BkEHPDLA.mjs +0 -16
  179. package/dist/client-DAnfyMe9.mjs +0 -1
  180. package/dist/deploy-Dc0XsCQj.mjs +0 -2
  181. package/dist/gen-Cf-RBVg4.mjs +0 -1
  182. package/dist/help-w-xlx_kq.mjs +0 -1
  183. package/dist/login-08mBwZfI.mjs +0 -1
  184. package/dist/migrate-Di-4EuoE.mjs +0 -1
  185. package/dist/operator-cmd-Bv20yLu2.mjs +0 -1
  186. package/dist/platform-args-B_LrqEZB.mjs +0 -1
  187. package/dist/prepare-EVEbQ9n2.mjs +0 -1
  188. package/dist/resolve-project-PnhzMtY6.mjs +0 -1
  189. package/dist/wrangler-DAdxHEzh.mjs +0 -1
@@ -1,10 +1,10 @@
1
1
  import { r as readProjectConfig, t as attachSelectedPlatform, u as writeProjectConfig } from "./project-rqDnVsJN.mjs";
2
2
  import { c as getToken, s as getSiteDomain } from "./auth-B6iOCjKI.mjs";
3
- import { H as outro, L as log, O as cancel } from "./dist-BVdsO7Py.mjs";
4
- import { f as import_picocolors, m as printSuccess } from "./output-CKguMgr7.mjs";
5
- import { r as PlatformClient } from "./client-BdzxubTS.mjs";
6
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-D8jQTwVQ.mjs";
7
- import { a as resolveProjectBySlug } from "./resolve-project-WpwkCB_c.mjs";
3
+ import { H as outro, L as log, O as cancel } from "./dist-Cor9XGoz.mjs";
4
+ import { r as PlatformClient } from "./client-BEkdj1kx.mjs";
5
+ import { f as import_picocolors, m as printSuccess } from "./output-BpgYODYx.mjs";
6
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-DV71ol5d.mjs";
7
+ import { a as resolveProjectBySlug } from "./resolve-project-Xoi6eTWY.mjs";
8
8
  //#region src/cli/link.ts
9
9
  function projectLabel(slug, root, url) {
10
10
  if (url) return url;
@@ -1,9 +1,9 @@
1
1
  import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
2
2
  import { c as getToken } from "./auth-B6iOCjKI.mjs";
3
- import { H as outro, L as log } from "./dist-BVdsO7Py.mjs";
4
- import { _ as tablePrefix, c as formatRelativeTime, f as import_picocolors, h as sanitizeTerminalText, i as dim, o as formatCount } from "./output-CKguMgr7.mjs";
5
- import { r as PlatformClient } from "./client-BdzxubTS.mjs";
6
- import { a as resolveProjectBySlug } from "./resolve-project-WpwkCB_c.mjs";
3
+ import { H as outro, L as log } from "./dist-Cor9XGoz.mjs";
4
+ import { r as PlatformClient } from "./client-BEkdj1kx.mjs";
5
+ import { _ as tablePrefix, c as formatRelativeTime, f as import_picocolors, h as sanitizeTerminalText, i as dim, o as formatCount } from "./output-BpgYODYx.mjs";
6
+ import { a as resolveProjectBySlug } from "./resolve-project-Xoi6eTWY.mjs";
7
7
  //#region src/cli/list.ts
8
8
  async function runListCommand(root, slug) {
9
9
  console.log();
@@ -42,7 +42,7 @@ async function runListCommand(root, slug) {
42
42
  }
43
43
  async function showCloudflareDeployments(root, slug) {
44
44
  if (slug) throw new Error("project: A project name selects a Void platform project and is not used for direct Cloudflare apps.");
45
- const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-BFLCpUCV.mjs");
45
+ const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-DsSaw2BT.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,5 +1,5 @@
1
1
  import { r as AuthUser } from "./auth-DkcFflXV.mjs";
2
- import { a as CloudEnv, r as CloudContext } from "./handler-D5K_yP6T.mjs";
2
+ import { a as CloudEnv, r as CloudContext } from "./handler-BbkSPzGF.mjs";
3
3
  //#region src/runtime/live.d.ts
4
4
  type MaybePromise<T> = T | Promise<T>;
5
5
  type LiveControlRequest = {
@@ -1,5 +1,5 @@
1
1
  import { a as join, c as resolve, i as isAbsolute } from "./dist-ipQi0Q8y.mjs";
2
- import { b as readRootWranglerConfig } from "./wrangler-C9XSzrju.mjs";
2
+ import { b as readRootWranglerConfig } from "./wrangler-F96NnLyb.mjs";
3
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";
@@ -1,5 +1,5 @@
1
- import { n as __toESM } from "./rolldown-runtime-DXIUcv95.mjs";
2
- import { t as require_picocolors } from "./picocolors-BTps1_gs.mjs";
1
+ import { n as __toESM } from "./rolldown-runtime-3h0WiCiA.mjs";
2
+ import { t as require_picocolors } from "./picocolors-BsDfhxIw.mjs";
3
3
  //#region src/log.ts
4
4
  var import_picocolors = /* @__PURE__ */ __toESM(require_picocolors(), 1);
5
5
  const tag = import_picocolors.default.bold(import_picocolors.default.blue("[void]"));
@@ -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
- import { H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./dist-BVdsO7Py.mjs";
3
- import { f as import_picocolors, l as formatUrl, m as printSuccess, r as createSpinner } from "./output-CKguMgr7.mjs";
4
- import { a as isExpiredTokenError, r as PlatformClient } from "./client-BdzxubTS.mjs";
2
+ import { H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./dist-Cor9XGoz.mjs";
3
+ import { a as isExpiredTokenError, r as PlatformClient } from "./client-BEkdj1kx.mjs";
4
+ import { f as import_picocolors, l as formatUrl, m as printSuccess, r as createSpinner } from "./output-BpgYODYx.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-B2ec5eFg.mjs")).discoverPlatform(apiUrl));
33
+ const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await (await import("./platform-cmd-PiNRkopU.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-Cttnagmm.mjs";
@@ -1,15 +1,15 @@
1
1
  import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
2
2
  import { c as getToken } from "./auth-B6iOCjKI.mjs";
3
- import { $ as wrapTextWithPrefix, H as outro, L as log } from "./dist-BVdsO7Py.mjs";
4
- import { a as errorStackFrames, f as import_picocolors, i as dim, o as formatCount } from "./output-CKguMgr7.mjs";
5
- import { r as PlatformClient } from "./client-BdzxubTS.mjs";
3
+ import { $ as wrapTextWithPrefix, H as outro, L as log } from "./dist-Cor9XGoz.mjs";
4
+ import { r as PlatformClient } from "./client-BEkdj1kx.mjs";
5
+ import { a as errorStackFrames, f as import_picocolors, i as dim, o as formatCount } from "./output-BpgYODYx.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-BFLCpUCV.mjs");
12
+ const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-DsSaw2BT.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,11 +1,11 @@
1
1
  import { a as join, n as dirname } from "./dist-ipQi0Q8y.mjs";
2
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";
3
+ import { h as validateConfig } from "./config-DHgSEWT7.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-rdFOys4X.mjs";
6
- import "./wrangler-C9XSzrju.mjs";
7
- import { L as log } from "./dist-BVdsO7Py.mjs";
8
- import { m as printSuccess } from "./output-CKguMgr7.mjs";
5
+ import { n as VOID_LOCK_FILE, o as seedCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-DchHxPTo.mjs";
6
+ import "./wrangler-F96NnLyb.mjs";
7
+ import { L as log } from "./dist-Cor9XGoz.mjs";
8
+ import { m as printSuccess } from "./output-BpgYODYx.mjs";
9
9
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
10
10
  import { parseSync } from "vite";
11
11
  import { randomUUID } from "node:crypto";
@@ -0,0 +1 @@
1
+ export { n as runMigrateCommand } from "./migrate-DyT2jJ8y.mjs";
@@ -339,7 +339,7 @@ async function normalizeEmail(opts) {
339
339
  const replyTo = opts.replyTo ? parseAddress(opts.replyTo, "replyTo") : void 0;
340
340
  const attachmentList = opts.attachments ?? [];
341
341
  if (!Array.isArray(attachmentList)) throw new MimeError("MIME_ERROR", "email: attachments must be an array.");
342
- if (attachmentList.length > MAX_ATTACHMENTS) throw new MimeError("MIME_ERROR", `email: too many attachments (max ${MAX_ATTACHMENTS}, got ${attachmentList.length}).`);
342
+ if (attachmentList.length > 44057) throw new MimeError("MIME_ERROR", `email: too many attachments (max ${MAX_ATTACHMENTS}, got ${attachmentList.length}).`);
343
343
  const attachments = [];
344
344
  let attachmentBytes = 0;
345
345
  for (const att of attachmentList) {
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-D26zcdKy.mjs";
3
- import { r as voidDbBundlerPlugin } from "./dispatch-BAbbn3jg.mjs";
4
- import { n as bundleWorkerSqlDriver } from "./wrapper-DGsYwNi6.mjs";
2
+ import { l as getDatabaseDialect, p as readConfig } from "./config-DHgSEWT7.mjs";
3
+ import { r as voidDbBundlerPlugin } from "./dispatch-DoUnxTNo.mjs";
4
+ import { n as bundleWorkerSqlDriver } from "./wrapper-D3sZyh2C.mjs";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { normalizePath } from "vite";
7
7
  import { resolve } from "node:path/win32";
@@ -1,10 +1,10 @@
1
1
  import { n as dirname } from "./dist-ipQi0Q8y.mjs";
2
2
  import { n as loadVoidAuthConfig, t as findVoidAuthConfig } from "./config-CyUJzi3q.mjs";
3
- import { d as readConfig } from "./config-D26zcdKy.mjs";
3
+ import { p as readConfig } from "./config-DHgSEWT7.mjs";
4
4
  import { r as getMiniflareDatabasePath } from "./runner-3uGC-oLF.mjs";
5
5
  import { o as loadLocalEnv } from "./env-BJjULvL0.mjs";
6
- import { r as resolveVoidAuthMigrationSchema } from "./drizzle-BQfyvQKX.mjs";
7
6
  import { a as pgMigrationRunner, i as mysqlMigrationRunner, n as applyPgAuthMigrations, r as applySqliteAuthMigrations, t as applyMySqlAuthMigrations } from "./auth-migrations-BO27GDNr.mjs";
7
+ import { r as resolveVoidAuthMigrationSchema } from "./drizzle-BQfyvQKX.mjs";
8
8
  import { mkdirSync } from "node:fs";
9
9
  //#region src/auth/node.ts
10
10
  async function runLocalVoidAuthMigrations(root, dialect, persistRoot, databaseId, configPath = findVoidAuthConfig(root), databaseUrl) {
@@ -0,0 +1 @@
1
+ export { a as runOperatorCommand } from "./operator-cmd-skshjMGl.mjs";
@@ -1,4 +1,4 @@
1
- import { h as sanitizeTerminalText, m as printSuccess } from "./output-CKguMgr7.mjs";
1
+ import { h as sanitizeTerminalText, m as printSuccess } from "./output-BpgYODYx.mjs";
2
2
  import { n as OperatorClient, r as OperatorClientError } from "./operator-client-C-ROjk1I.mjs";
3
3
  import { a as resolveOperatorOrigin, i as removeOperatorToken, n as readOperatorApiTokenStdin, o as saveOperatorToken, r as readOperatorToken, t as exchangeOperatorSession } from "./operator-auth-Cr2zCc-J.mjs";
4
4
  import { createHash } from "node:crypto";
@@ -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-B2ec5eFg.mjs");
167
- const { selectPlatformLoginMethod } = await import("./login-08mBwZfI.mjs");
166
+ const { discoverPlatform } = await import("./platform-cmd-PiNRkopU.mjs");
167
+ const { selectPlatformLoginMethod } = await import("./login-DgDwlKc_.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-w-xlx_kq.mjs");
347
+ const { printHelpPage } = await import("./help-BeAFFE5C.mjs");
348
348
  printHelpPage(["platform", args.group]);
349
349
  return;
350
350
  }
@@ -0,0 +1 @@
1
+ export { m as printSuccess } from "./output-BpgYODYx.mjs";
@@ -1,6 +1,6 @@
1
- import { n as __toESM } from "./rolldown-runtime-DXIUcv95.mjs";
2
- import { t as require_picocolors } from "./picocolors-BTps1_gs.mjs";
3
- import { B as note$1, H as outro, L as log, P as isCI, nt as settings, q as spinner } from "./dist-BVdsO7Py.mjs";
1
+ import { n as __toESM } from "./rolldown-runtime-3h0WiCiA.mjs";
2
+ import { t as require_picocolors } from "./picocolors-BsDfhxIw.mjs";
3
+ import { B as note$1, H as outro, L as log, P as isCI, nt as settings, q as spinner } from "./dist-Cor9XGoz.mjs";
4
4
  import { stripVTControlCharacters } from "node:util";
5
5
  import terminalLink from "terminal-link";
6
6
  //#region src/cli/output.ts
@@ -1,5 +1,5 @@
1
1
  import { t as interpolateRouteParams } from "../route-url-BgPja1GS.mjs";
2
- import { t as PageObject } from "../protocol-Ssc_LhHj.mjs";
2
+ import { t as PageObject } from "../protocol-BBDpJz3G.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,3 +1,4 @@
1
+ import { i as searchWithoutActionKey } from "../action-key-XZ9HkWAO.mjs";
1
2
  import { t as ISLAND_FRONTMATTER_ID } from "../serialize-YHvlcG3Q.mjs";
2
3
  import { t as interpolateRouteParams } from "../route-url-BjGv_KKY.mjs";
3
4
  import { n as parseCacheFor, t as PrefetchCache } from "../prefetch-Bsc_Pb6c.mjs";
@@ -256,6 +257,17 @@ function isSameOrigin(url, origin) {
256
257
  }
257
258
  //#endregion
258
259
  //#region src/pages/navigation-engine.ts
260
+ /**
261
+ * The server leaves a named action's key out of the page URL. When the page URL
262
+ * shows that, drop the key from the URL written to history as well.
263
+ */
264
+ function withoutActionKey(fetchUrl, pageUrl) {
265
+ const q = fetchUrl.indexOf("?");
266
+ if (q === -1) return fetchUrl;
267
+ const search = searchWithoutActionKey(fetchUrl.slice(q));
268
+ const pageQ = pageUrl.indexOf("?");
269
+ return search === (pageQ === -1 ? "" : pageUrl.slice(pageQ)) ? fetchUrl.slice(0, q) + search : fetchUrl;
270
+ }
259
271
  const PAGE_DATA_SCRIPT_ID = "__VOID_PAGE_DATA__";
260
272
  const STATIC_PAGE_DATA_PREFIX = "/_void/pages";
261
273
  function isFile(value) {
@@ -361,8 +373,11 @@ async function createPageNavigationEngine(config) {
361
373
  this.groups = {};
362
374
  if (!pageData.deferredKeys) return;
363
375
  for (const [key, group] of Object.entries(pageData.deferredKeys)) {
364
- const ref = adapter.createDeferred();
365
- const value = resolved ? adapter.resolveDeferred(ref, pageData.props[key]) : ref;
376
+ let value = adapter.createDeferred();
377
+ if (resolved) {
378
+ const error = pageData.deferredErrors?.[group];
379
+ value = error === void 0 ? adapter.resolveDeferred(value, pageData.props[key]) : adapter.rejectDeferred(value, error);
380
+ }
366
381
  this.keyRefs[key] = value;
367
382
  this.props[key] = value;
368
383
  (this.groups[group] ??= []).push(key);
@@ -391,16 +406,8 @@ async function createPageNavigationEngine(config) {
391
406
  }
392
407
  resolve(group, data, error) {
393
408
  if (!this.active) return;
394
- if (data !== void 0) {
395
- if (typeof data === "object" && data !== null && !Array.isArray(data)) {
396
- let resolvedAny = false;
397
- for (const [key, value] of Object.entries(data)) if (this.keyRefs[key]) {
398
- this.resolveKey(key, value);
399
- resolvedAny = true;
400
- }
401
- if (!resolvedAny) this.resolveGroup(group, data);
402
- } else this.resolveGroup(group, data);
403
- } else if (error !== void 0) this.rejectGroup(group, typeof error === "string" ? error : String(error));
409
+ if (data !== void 0) this.resolveGroup(group, data);
410
+ else if (error !== void 0) this.rejectGroup(group, typeof error === "string" ? error : String(error));
404
411
  adapter.onDeferredUpdate?.(this.props);
405
412
  }
406
413
  rejectPending(error, notify = true) {
@@ -419,23 +426,23 @@ async function createPageNavigationEngine(config) {
419
426
  }
420
427
  retainOnly(keys, props) {
421
428
  const keyRefs = {};
422
- const groups = {};
423
429
  for (const [key, ref] of Object.entries(this.keyRefs)) if (keys.has(key)) {
424
430
  keyRefs[key] = ref;
425
431
  props[key] = this.props[key];
426
432
  } else if (adapter.isLoading(ref)) adapter.rejectDeferred(ref, "Navigation disposed before deferred props resolved");
427
- for (const [group, groupKeys] of Object.entries(this.groups)) {
428
- const preservedGroupKeys = groupKeys.filter((key) => keys.has(key));
429
- if (preservedGroupKeys.length > 0) groups[group] = preservedGroupKeys;
430
- }
431
433
  this.props = props;
432
434
  this.keyRefs = keyRefs;
433
- this.groups = groups;
434
435
  adapter.onDeferredUpdate?.(this.props);
435
436
  }
437
+ /** A one-key group takes the raw value; a larger group takes each key from the object. */
436
438
  resolveGroup(group, data) {
437
439
  const keys = this.groups[group] ?? (this.keyRefs[group] ? [group] : []);
438
- for (const key of keys) this.resolveKey(key, data);
440
+ if (keys.length === 1) {
441
+ this.resolveKey(keys[0], data);
442
+ return;
443
+ }
444
+ const values = typeof data === "object" && data !== null ? data : {};
445
+ for (const key of keys) this.resolveKey(key, values[key]);
439
446
  }
440
447
  resolveKey(key, value) {
441
448
  const ref = this.keyRefs[key];
@@ -682,7 +689,10 @@ async function createPageNavigationEngine(config) {
682
689
  if (CACHE_VISITED_PAGE_DATA && method === "GET" && response?.ok && response.headers.get("X-VoidPages") && pageData?.component === matchRoute(fetchUrl) && !pageData.deferredKeys) _prefetchCache.set(fetchUrl, method, Promise.resolve(clonePageData(pageData)), PREFETCH_DEFAULT_CACHE_FOR);
683
690
  }
684
691
  if (!pageData) throw new Error("pages: Missing page payload.");
685
- if (method !== "GET") deferredRegistry.preserveValuesFrom(_committedDeferredRegistry, pageData);
692
+ if (method !== "GET") {
693
+ deferredRegistry.preserveValuesFrom(_committedDeferredRegistry, pageData);
694
+ commitTarget.fetchUrl = withoutActionKey(fetchUrl, pageData.url);
695
+ }
686
696
  const [component, layouts] = await Promise.race([Promise.all([resolveComponent(pageData.component), resolveLayouts(pageData.component)]), abortSignalPromise(signal)]);
687
697
  if (id !== _nextNavigationId && signal.aborted) throw abortError();
688
698
  return {
@@ -1,5 +1,5 @@
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
- import "../config-7qoq2p9v.mjs";
2
+ import "../config-DQfHOKh9.mjs";
3
3
  import { i as PageDefinition, n as LayoutDefinition, o as PageScanResult, r as NamedLayoutDefinition } from "../types-7AIz0OZu.mjs";
4
4
  import { r as serializePageData } from "../serialize-DtR8Vwa_.mjs";
5
5
  //#region src/project-paths.d.ts
@@ -1,8 +1,8 @@
1
1
  import { a as join } from "../dist-ipQi0Q8y.mjs";
2
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";
3
+ import { p as readConfig } from "../config-DHgSEWT7.mjs";
4
+ import { a as resolveNamedLayout, i as resolveLayoutIds, n as resolveEffectiveLayoutChain, o as toLayoutId, r as resolveLayoutChain, t as scanPages } from "../scan-8IzYXiU_.mjs";
5
+ import { r as parseRedirectsFile } from "../headers-D522zd0A.mjs";
6
6
  import { i as resolveHead, n as renderHeadToString, r as renderHtmlAttrs, t as renderBodyAttrs } from "../head-D2VF4ApL.mjs";
7
7
  import { r as serializePageData } from "../serialize-YHvlcG3Q.mjs";
8
8
  //#region src/pages/manifest.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-D2-FcLHs.mjs";
2
+ import { c as findIslandImports, l as findStaticCssImports, n as resolveEffectiveLayoutChain, s as editIslandSource, t as scanPages } from "../scan-8IzYXiU_.mjs";
3
3
  import { existsSync, readFileSync } from "node:fs";
4
4
  import { isCSSRequest, normalizePath } from "vite";
5
5
  //#region src/pages/islands-plugin.ts
@@ -187,6 +187,7 @@ function watchPagesForRescan(server, pagesDir, root, onRescan) {
187
187
  const mod = env.moduleGraph.getModuleById("\0virtual:void-islands-renderer");
188
188
  if (mod) env.moduleGraph.invalidateModule(mod);
189
189
  }
190
+ }, () => {}).finally(() => {
190
191
  pending = null;
191
192
  });
192
193
  }, 50);
@@ -1,3 +1,3 @@
1
- import { w as ValidationError } from "../handler-D5K_yP6T.mjs";
2
- import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-Ssc_LhHj.mjs";
1
+ import { w as ValidationError } from "../handler-BbkSPzGF.mjs";
2
+ import { a as handlePageMutation, i as handlePageGet, n as PageRenderResult, o as safeJsonStringify, r as flattenValidationErrors, t as PageObject } from "../protocol-BBDpJz3G.mjs";
3
3
  export { PageObject, PageRenderResult, ValidationError, flattenValidationErrors, handlePageGet, handlePageMutation, safeJsonStringify };
@@ -1,3 +1,3 @@
1
1
  import { t as ValidationError } from "../validation-error-Dg9Recn1.mjs";
2
- import { i as safeJsonStringify, n as handlePageGet, r as handlePageMutation, t as flattenValidationErrors } from "../protocol-bAUUkx70.mjs";
2
+ import { i as safeJsonStringify, n as handlePageGet, r as handlePageMutation, t as flattenValidationErrors } from "../protocol-DimNxVRr.mjs";
3
3
  export { ValidationError, flattenValidationErrors, handlePageGet, handlePageMutation, safeJsonStringify };
@@ -1,37 +1,3 @@
1
- import { n as isIdentifier } from "./ast-CPGPjb0V.mjs";
2
- import { parseSync } from "vite";
3
- //#region src/shared/static-exports.ts
4
- /** Read the initializer of directly exported constants without evaluating user code. */
5
- function staticExportInitializers(filename, source, names) {
6
- const result = /* @__PURE__ */ new Map();
7
- const program = parseSync(filename, source).program;
8
- for (const statement of program.body ?? []) {
9
- if (statement.type !== "ExportNamedDeclaration") continue;
10
- const declaration = statement.declaration;
11
- if (declaration?.type !== "VariableDeclaration" || declaration.kind !== "const") continue;
12
- for (const variable of declaration.declarations ?? []) if (isIdentifier(variable.id) && names.has(variable.id.name) && variable.init) result.set(variable.id.name, variable.init);
13
- }
14
- return result;
15
- }
16
- function unwrapStaticExpression(node) {
17
- while (node && [
18
- "ParenthesizedExpression",
19
- "TSAsExpression",
20
- "TSSatisfiesExpression",
21
- "TSTypeAssertion"
22
- ].includes(node.type)) node = node.expression;
23
- return node;
24
- }
25
- function staticLiteral(node) {
26
- node = unwrapStaticExpression(node);
27
- if (node?.type === "Literal") return node.value;
28
- if (node?.type === "TemplateLiteral") {
29
- const expressions = node.expressions;
30
- const quasis = node.quasis;
31
- if (expressions?.length === 0 && quasis?.length === 1) return quasis[0]?.value?.cooked;
32
- }
33
- }
34
- //#endregion
35
1
  //#region src/router/parse-filename.ts
36
2
  const EXTENSIONS = [
37
3
  ".ts",
@@ -108,4 +74,4 @@ function isRouteEnabledForEnvironment(route, environment) {
108
74
  return environment === void 0 || route.env === null || route.env === environment;
109
75
  }
110
76
  //#endregion
111
- export { staticLiteral as a, staticExportInitializers as i, parseRouteFilename as n, unwrapStaticExpression as o, parseWebSocketFilename as r, isRouteEnabledForEnvironment as t };
77
+ export { parseRouteFilename as n, parseWebSocketFilename as r, isRouteEnabledForEnvironment as t };
@@ -1,4 +1,4 @@
1
- import { t as __commonJSMin } from "./rolldown-runtime-DXIUcv95.mjs";
1
+ import { t as __commonJSMin } from "./rolldown-runtime-3h0WiCiA.mjs";
2
2
  //#region ../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js
3
3
  var require_picocolors = /* @__PURE__ */ __commonJSMin(((exports, module) => {
4
4
  let p = process || {};
@@ -257,6 +257,7 @@ function parseLifecycleSelector(rest, subcommand) {
257
257
  let fromRuntime = "";
258
258
  let authConfig;
259
259
  let dashboardUrl;
260
+ let customDomains = false;
260
261
  for (let index = 0; index < rest.length; index++) {
261
262
  const arg = rest[index];
262
263
  if (arg === "--runtime") {
@@ -268,7 +269,8 @@ function parseLifecycleSelector(rest, subcommand) {
268
269
  const [value, next] = readValue(rest, index, arg);
269
270
  dashboardUrl = normalizePlatformDashboardUrl(value);
270
271
  index = next;
271
- } else if (arg === "--auth-config" && subcommand === "repair") {
272
+ } else if (arg === "--custom-domains" && (subcommand === "upgrade" || subcommand === "repair")) customDomains = true;
273
+ else if (arg === "--auth-config" && subcommand === "repair") {
272
274
  const [value, next] = readValue(rest, index, arg);
273
275
  authConfig = value;
274
276
  index = next;
@@ -285,7 +287,8 @@ function parseLifecycleSelector(rest, subcommand) {
285
287
  runtime,
286
288
  fromRuntime,
287
289
  ...authConfig !== void 0 ? { authConfig } : {},
288
- ...dashboardUrl !== void 0 ? { dashboardUrl } : {}
290
+ ...dashboardUrl !== void 0 ? { dashboardUrl } : {},
291
+ ...customDomains ? { customDomains: true } : {}
289
292
  };
290
293
  }
291
294
  function parsePlatformArgs(args) {
@@ -378,7 +381,7 @@ function parsePlatformArgs(args) {
378
381
  };
379
382
  }
380
383
  if (subcommand === "upgrade" || subcommand === "rollback" || subcommand === "repair" || subcommand === "disable" || subcommand === "enable") {
381
- const { selector, plan, runtime, fromRuntime, yes, authConfig, dashboardUrl } = parseLifecycleSelector(rest, subcommand);
384
+ const { selector, plan, runtime, fromRuntime, yes, authConfig, dashboardUrl, customDomains } = parseLifecycleSelector(rest, subcommand);
382
385
  return subcommand === "rollback" ? {
383
386
  subcommand,
384
387
  selector,
@@ -393,7 +396,8 @@ function parsePlatformArgs(args) {
393
396
  runtime,
394
397
  yes,
395
398
  ...authConfig !== void 0 ? { authConfig } : {},
396
- ...dashboardUrl !== void 0 ? { dashboardUrl } : {}
399
+ ...dashboardUrl !== void 0 ? { dashboardUrl } : {},
400
+ ...customDomains ? { customDomains } : {}
397
401
  };
398
402
  }
399
403
  if (subcommand === "uninstall") {
@@ -435,6 +439,7 @@ function parsePlatformArgs(args) {
435
439
  "--zone"
436
440
  ]);
437
441
  let workersDev = false;
442
+ let customDomains = false;
438
443
  for (let i = 0; i < rest.length; i++) {
439
444
  const arg = rest[i];
440
445
  if (valueFlags.has(arg)) {
@@ -452,6 +457,7 @@ function parsePlatformArgs(args) {
452
457
  accessProtection = enabled;
453
458
  } else if (arg === "--yes") yes = true;
454
459
  else if (arg === "--workers-dev") workersDev = true;
460
+ else if (arg === "--custom-domains") customDomains = true;
455
461
  else throw new Error(`platform: Unexpected argument '${arg}'.`);
456
462
  }
457
463
  if (noControlPlaneDomain && values.has("--control-plane-domain")) throw new Error("platform: Choose either --control-plane-domain or --no-control-plane-domain.");
@@ -466,10 +472,12 @@ function parsePlatformArgs(args) {
466
472
  const loginMethods = values.get("--login-methods")?.split(",");
467
473
  if (loginMethods && loginMethods.some((method) => !PLATFORM_LOGIN_KINDS.includes(method))) throw new Error("platform: --login-methods accepts github, google, oidc, and cloudflare-access.");
468
474
  if (workersDev && (values.has("--application-domain") || values.has("--zone") || dedicatedZone)) throw new Error("platform: --workers-dev cannot be combined with a domain, zone, or --dedicated-zone.");
475
+ if (customDomains && (workersDev || noDedicatedZone)) throw new Error("platform: --custom-domains needs a dedicated application zone; it cannot be combined with --workers-dev or --no-dedicated-zone.");
469
476
  return {
470
477
  subcommand,
471
478
  ...noControlPlaneDomain ? { noControlPlaneDomain: true } : {},
472
479
  ...noDedicatedZone ? { dedicatedZoneSpecified: true } : {},
480
+ ...customDomains ? { customDomains: true } : {},
473
481
  ...values.has("--hyperdrive") ? { hyperdrive: values.get("--hyperdrive") } : {},
474
482
  ...loginMethods ? { loginMethods: [...new Set(loginMethods)] } : {},
475
483
  ...accessProtection !== void 0 ? { accessProtection } : {},
@@ -0,0 +1 @@
1
+ export { t as parsePlatformArgs } from "./platform-args-DVbVClZl.mjs";
@@ -1,10 +1,10 @@
1
1
  import { u as openBrowser } from "./auth-B6iOCjKI.mjs";
2
- import { A as confirm, K as select, U as password, X as text, z as multiselect } from "./dist-BVdsO7Py.mjs";
3
- import { l as formatUrl, m as printSuccess } from "./output-CKguMgr7.mjs";
2
+ import { A as confirm, K as select, U as password, X as text, z as multiselect } from "./dist-Cor9XGoz.mjs";
3
+ import { l as formatUrl, m as printSuccess } from "./output-BpgYODYx.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-DCr_QGMH.mjs";
7
- import { o as platformPromptAnswer } from "./platform-setup-hFbnWAVQ.mjs";
6
+ import { i as humanLines } from "./operator-cmd-skshjMGl.mjs";
7
+ import { o as platformPromptAnswer } from "./platform-setup-Ca53gtt0.mjs";
8
8
  import { parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration } from "@void/platform";
9
9
  import { stripVTControlCharacters } from "node:util";
10
10
  import { setTimeout } from "node:timers/promises";
@@ -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-B2LKI8V2.mjs");
145
+ const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-DXVWs-wA.mjs");
146
146
  return runPlatformAuthRecovery(args);
147
147
  }
148
148
  if (args.action === "protection") {
149
- const { runPlatformProtectionConfig } = await import("./platform-auth-protection-CyLcD6ot.mjs");
149
+ const { runPlatformProtectionConfig } = await import("./platform-auth-protection-SHhvim1L.mjs");
150
150
  return runPlatformProtectionConfig(args);
151
151
  }
152
152
  const origin = resolveOperatorOrigin(args.connection);
@@ -1,12 +1,12 @@
1
1
  import { S as writePendingInstallationSecrets, c as normalizePlatformApiUrl, m as readInstallationRecoverySecrets, p as promoteInstallationSecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest } from "./platform-registry-B9mWX9LO.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-BM9G0lhO.mjs";
3
3
  import { t as ensurePlatformAccessToken } from "./cf-access-CWP4avfP.mjs";
4
- import { A as confirm, tt as isCancel } from "./dist-BVdsO7Py.mjs";
5
- import { m as printSuccess } from "./output-CKguMgr7.mjs";
4
+ import { A as confirm, tt as isCancel } from "./dist-Cor9XGoz.mjs";
5
+ import { m as printSuccess } from "./output-BpgYODYx.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 checkpointPlatformAccessResources, H as resolvePlatformCloudflareCredential, K as parsePlatformAccessSetupSpec, Y as PlatformCloudflareClient, m as acquirePlatformDatabaseLifecycleLock, n as resolvePlatformInstallDatabaseUrl, q as preparePlatformAccessSetup } from "./platform-lifecycle-3CR98Tg2.mjs";
9
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-o3LCCeE4.mjs";
8
+ import { G as checkpointPlatformAccessResources, H as resolvePlatformCloudflareCredential, K as parsePlatformAccessSetupSpec, Y as PlatformCloudflareClient, m as acquirePlatformDatabaseLifecycleLock, n as resolvePlatformInstallDatabaseUrl, q as preparePlatformAccessSetup } from "./platform-lifecycle-DyKmuNY6.mjs";
9
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management--vDwSn35.mjs";
10
10
  import { parsePlatformAccessProtection, platformProtectionProofMessage } from "@void/platform";
11
11
  import { createHmac } from "node:crypto";
12
12
  import { readFile } from "node:fs/promises";
@@ -1,10 +1,10 @@
1
1
  import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest } from "./platform-registry-B9mWX9LO.mjs";
2
2
  import { u as openBrowser } from "./auth-B6iOCjKI.mjs";
3
- import { A as confirm, tt as isCancel } from "./dist-BVdsO7Py.mjs";
4
- import { l as formatUrl, m as printSuccess } from "./output-CKguMgr7.mjs";
3
+ import { A as confirm, tt as isCancel } from "./dist-Cor9XGoz.mjs";
4
+ import { l as formatUrl, m as printSuccess } from "./output-BpgYODYx.mjs";
5
5
  import { a as resolveOperatorOrigin } from "./operator-auth-Cr2zCc-J.mjs";
6
- import { H as resolvePlatformCloudflareCredential, Y as PlatformCloudflareClient, g as platformDatabaseClientUrl, h as acquirePlatformDatabaseLifecycleLockConnection, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-3CR98Tg2.mjs";
7
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-o3LCCeE4.mjs";
6
+ import { H as resolvePlatformCloudflareCredential, Y as PlatformCloudflareClient, g as platformDatabaseClientUrl, h as acquirePlatformDatabaseLifecycleLockConnection, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-DyKmuNY6.mjs";
7
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management--vDwSn35.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";
@@ -1,9 +1,9 @@
1
1
  import { b as selectPlatformConnection, c as normalizePlatformApiUrl, i as getActivePlatformConnection, l as platformConnectionSlug, o as listInstallationManifests, s as listPlatformConnections, y as savePlatformConnection } from "./platform-registry-B9mWX9LO.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-BM9G0lhO.mjs";
3
3
  import { r as isCloudflareAccessChallenge, t as ensurePlatformAccessToken } from "./cf-access-CWP4avfP.mjs";
4
- import { K as select, L as log, X as text, tt as isCancel } from "./dist-BVdsO7Py.mjs";
5
- import { f as import_picocolors, l as formatUrl, m as printSuccess } from "./output-CKguMgr7.mjs";
4
+ import { K as select, L as log, X as text, tt as isCancel } from "./dist-Cor9XGoz.mjs";
6
5
  import { n as readPlatformDiscoveryResponse, t as PlatformDisabledError } from "./platform-discovery-CHhNs8Nn.mjs";
6
+ import { f as import_picocolors, l as formatUrl, m as printSuccess } from "./output-BpgYODYx.mjs";
7
7
  //#region src/cli/platform-cmd.ts
8
8
  function normalizePlatformInputUrl(input) {
9
9
  const value = input.trim();
@@ -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-B_LrqEZB.mjs");
99
+ const { parsePlatformArgs } = await import("./platform-args-kQrgxScY.mjs");
100
100
  return runPlatformCommand(_root, parsePlatformArgs(["config", group]));
101
101
  }
102
- const { runPlatformPlansConfig } = await import("./platform-plans-config-CBMZxCep.mjs");
102
+ const { runPlatformPlansConfig } = await import("./platform-plans-config-CeydDSj0.mjs");
103
103
  await runPlatformPlansConfig(args);
104
104
  return;
105
105
  }
106
- const { runPlatformAuthConfig } = await import("./platform-auth-config-qGvEuns3.mjs");
106
+ const { runPlatformAuthConfig } = await import("./platform-auth-config-C-pm5Qzx.mjs");
107
107
  await runPlatformAuthConfig(args);
108
108
  return;
109
109
  }
110
110
  if (args.subcommand === "operator") {
111
- const { runOperatorCommand } = await import("./operator-cmd-Bv20yLu2.mjs");
111
+ const { runOperatorCommand } = await import("./operator-cmd-d2MvJOrl.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-CWc5gr6c.mjs");
179
+ const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-DH3Yr1qQ.mjs");
180
180
  await runPlatformLifecycleCommand(args);
181
181
  }
182
182
  function showSavedInstallationStatus(manifest) {