void 1.1.12 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) 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 +5 -1
  91. package/dist/pages/client.mjs +47 -30
  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/pages-routing/overview.md +1 -1
  163. package/docs/guide/platform/installation/credentials.md +1 -1
  164. package/docs/guide/platform/installation/domains.md +16 -0
  165. package/docs/guide/quickstart.md +26 -1
  166. package/docs/guide/sandboxes.md +2 -2
  167. package/docs/guide/self-hosted-platform.md +1 -1
  168. package/docs/guide/server-routing.md +1 -1
  169. package/docs/integrations/cloudflare.md +1 -0
  170. package/docs/reference/api/env.md +1 -1
  171. package/docs/reference/api/rewrites.md +1 -1
  172. package/docs/reference/api/types.md +1 -0
  173. package/docs/reference/cli/platform-installation.md +3 -2
  174. package/docs/reference/cli/setup.md +17 -0
  175. package/docs/reference/cli.md +1 -1
  176. package/docs/reference/config.md +13 -0
  177. package/docs/reference/resource-inference.md +4 -0
  178. package/package.json +22 -22
  179. package/sandbox.Dockerfile +2 -2
  180. package/schema.json +23 -3
  181. package/dist/cf-build-output-Dcmxa-Zm.mjs +0 -1
  182. package/dist/cf-user-agent-BkEHPDLA.mjs +0 -16
  183. package/dist/client-DAnfyMe9.mjs +0 -1
  184. package/dist/deploy-Dc0XsCQj.mjs +0 -2
  185. package/dist/gen-Cf-RBVg4.mjs +0 -1
  186. package/dist/help-w-xlx_kq.mjs +0 -1
  187. package/dist/login-08mBwZfI.mjs +0 -1
  188. package/dist/migrate-Di-4EuoE.mjs +0 -1
  189. package/dist/operator-cmd-Bv20yLu2.mjs +0 -1
  190. package/dist/platform-args-B_LrqEZB.mjs +0 -1
  191. package/dist/prepare-EVEbQ9n2.mjs +0 -1
  192. package/dist/resolve-project-PnhzMtY6.mjs +0 -1
  193. package/dist/wrangler-DAdxHEzh.mjs +0 -1
package/dist/index.mjs CHANGED
@@ -1,43 +1,42 @@
1
- import { n as __toESM } from "./rolldown-runtime-DXIUcv95.mjs";
1
+ import { n as __toESM } from "./rolldown-runtime-3h0WiCiA.mjs";
2
2
  import { a as join, c as resolve, i as isAbsolute, n as dirname, o as normalize, s as relative } from "./dist-ipQi0Q8y.mjs";
3
- import { t as require_picocolors } from "./picocolors-BTps1_gs.mjs";
4
- import { d as walk, l as inferBindingsFromSource, m as applyBindingOverrides, n as FRAMEWORK_SCAN_DIRS, t as DEFAULT_SCAN_DIRS, u as staticModuleReferences } from "./plugin-inference-Bekzjuqw.mjs";
3
+ import { t as require_picocolors } from "./picocolors-BsDfhxIw.mjs";
4
+ import { l as inferBindingsFromSource, n as FRAMEWORK_SCAN_DIRS, p as applyBindingOverrides, t as DEFAULT_SCAN_DIRS, u as staticModuleReferences } from "./plugin-inference-DUjCd55H.mjs";
5
5
  import { n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-DGu_QZ_Q.mjs";
6
6
  import { n as loadVoidAuthConfig } from "./config-CyUJzi3q.mjs";
7
- import { c as isNodeTarget, d as readConfig, s as getDatabaseDialect } from "./config-D26zcdKy.mjs";
8
- import { i as isMemberExpression, n as isIdentifier, r as isLiteral } from "./ast-CPGPjb0V.mjs";
9
- import { t as isRouteEnabledForEnvironment } from "./parse-filename-CUbj-1MP.mjs";
10
- import { a as hasSandboxSqliteMigration, c as sandboxContainerConfig, i as assertSandboxNamespaceConfig, n as DEFAULT_SANDBOX_CLASS_NAME, p as scanJobsSync, r as SANDBOX_MIGRATION_TAG, s as resolveSandboxConfig, t as analyzeApplicationSync, u as scanQueuesSync } from "./application-analysis-D7nNmNJb.mjs";
11
- import { a as validateSsrEntries, n as SSR_SERVER_ENTRY_RELATIVE_PATHS, o as validateSsrEntry, t as SSR_CLIENT_ENTRY_RELATIVE_PATHS } from "./entry-B_0IhV64.mjs";
12
- import { r as hasEmailHandlers } from "./email-BcjSyAL0.mjs";
13
- import { i as voidWarn, n as voidError, r as voidLog, t as setShowTimestamp } from "./log-vqY3pqwI.mjs";
7
+ import { c as getDatabaseCasing, l as getDatabaseDialect, p as readConfig, u as isNodeTarget } from "./config-DHgSEWT7.mjs";
8
+ import { i as isMemberExpression, n as isIdentifier, r as isLiteral } from "./ast-CsZ_q_gc.mjs";
9
+ import { n as bindingResolver } from "./ast-bindings-C3yaPs1y.mjs";
10
+ import { a as hasSandboxSqliteMigration, c as sandboxContainerConfig, i as assertSandboxNamespaceConfig, n as DEFAULT_SANDBOX_CLASS_NAME, p as scanJobsSync, r as SANDBOX_MIGRATION_TAG, s as resolveSandboxConfig, t as analyzeApplicationSync, u as scanQueuesSync } from "./application-analysis-fEqoSeMp.mjs";
11
+ import { t as isRouteEnabledForEnvironment } from "./parse-filename-DioPHiR9.mjs";
12
+ import { a as validateSsrEntries, n as SSR_SERVER_ENTRY_RELATIVE_PATHS, o as validateSsrEntry, t as SSR_CLIENT_ENTRY_RELATIVE_PATHS } from "./entry-BEM8ZuGP.mjs";
13
+ import { r as hasEmailHandlers } from "./email-B9ayYQEG.mjs";
14
+ import { i as voidWarn, n as voidError, r as voidLog, t as setShowTimestamp } from "./log-BMwmN5Ae.mjs";
14
15
  import { t as MagicString } from "./dist-Cegxq8gs.mjs";
15
- import { i as resolveLayoutIds } from "./scan-D2-FcLHs.mjs";
16
+ import { i as resolveLayoutIds } from "./scan-8IzYXiU_.mjs";
16
17
  import { a as resolveDistDir, c as hasDocumentRoutes, n as collectRevalidate, o as resolveWorkerDirName, r as hasRevalidate, s as hasApiRoutes, t as collectPages, u as resolveAssetRoutingPolicy } from "./isr-config-fZaJJ8t7.mjs";
17
- import { n as mergeRoutingRules, t as lintRoutingPhases } from "./headers-Bi4bOAwp.mjs";
18
+ import { n as mergeRoutingRules, t as lintRoutingPhases } from "./headers-D522zd0A.mjs";
18
19
  import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
19
- import { a as restoreCloudflarePreviewPointer, r as materializeCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-rdFOys4X.mjs";
20
- import { D as syncWranglerBindings, E as resolveLiveBindingConfig, O as syncWranglerDurableObjects, T as readWranglerWebSocketTombstones, a as LIVE_MIGRATION_TAG, b as readRootWranglerConfig, d as ensureWranglerCompatibilityDate, f as ensureWranglerNodejsAlsFlag, g as normalizeWranglerCompatibilityFlags, h as nextDurableObjectMigrationTag, k as syncWranglerWebSockets, m as hasDurableObjectSqliteMigration, p as findBindingNameOwner, u as ensureWranglerCompat, v as readExistingLiveBindingConfig, x as readWranglerCompat } from "./wrangler-C9XSzrju.mjs";
21
- import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-CpaPbd_L.mjs";
20
+ import { a as restoreCloudflarePreviewPointer, r as materializeCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-DchHxPTo.mjs";
21
+ import { A as syncWranglerWebSockets, E as resolveLiveBindingConfig, O as syncWranglerBindings, T as readWranglerWebSocketTombstones, a as LIVE_MIGRATION_TAG, b as readRootWranglerConfig, d as ensureWranglerCompatibilityDate, f as ensureWranglerNodejsAlsFlag, g as normalizeWranglerCompatibilityFlags, h as nextDurableObjectMigrationTag, k as syncWranglerDurableObjects, m as hasDurableObjectSqliteMigration, p as findBindingNameOwner, u as ensureWranglerCompat, v as readExistingLiveBindingConfig, x as readWranglerCompat } from "./wrangler-F96NnLyb.mjs";
22
+ import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-BHBnKWRb.mjs";
22
23
  import { n as scopedAccessCredentials } from "./cf-access-BM9G0lhO.mjs";
23
24
  import { n as ensurePlatformProxyAccess } from "./cf-access-CWP4avfP.mjs";
24
25
  import { a as getApiUrl, c as getToken, o as getProxyUrl } from "./auth-B6iOCjKI.mjs";
25
- import { m as printSuccess } from "./output-CKguMgr7.mjs";
26
26
  import { r as writeFileIfChanged } from "./project-tsconfig-Itv1f4WC.mjs";
27
- import { n as drizzlePlugin, t as generateQueueResolverSource } from "./dispatch-BAbbn3jg.mjs";
28
- import { _ as parseCapturedMessage, a as DEV_INBOX_ENV_VAR, c as DEV_INBOX_TOKEN_ENV_VAR, f as clearDevBuffer, g as listDevMessages, l as DEV_INBOX_TOKEN_HEADER, m as findDevMessage, n as DEV_INBOX_ACK_VALUE, o as DEV_INBOX_MAX_CAPTURE_BYTES, s as DEV_INBOX_PREFIX, t as DEV_INBOX_ACK_HEADER, u as DEV_INBOX_TOKEN_QUERY, v as pushToDevBuffer } from "./dev-inbox-Rd6j_8vM.mjs";
27
+ import { n as drizzlePlugin, t as generateQueueResolverSource } from "./dispatch-DoUnxTNo.mjs";
28
+ import { _ as parseCapturedMessage, a as DEV_INBOX_ENV_VAR, c as DEV_INBOX_TOKEN_ENV_VAR, f as clearDevBuffer, g as listDevMessages, l as DEV_INBOX_TOKEN_HEADER, m as findDevMessage, n as DEV_INBOX_ACK_VALUE, o as DEV_INBOX_MAX_CAPTURE_BYTES, s as DEV_INBOX_PREFIX, t as DEV_INBOX_ACK_HEADER, u as DEV_INBOX_TOKEN_QUERY, v as pushToDevBuffer } from "./dev-inbox-D0jxye_D.mjs";
29
29
  import { n as scanWranglerDotenvKeys } from "./dotenv-CNazY3-w.mjs";
30
30
  import { a as isClientEnvKey, c as resolveRemoteMode, i as findReservedEnvKeys, n as LOCAL_ENV_FILE, o as loadLocalEnv, r as findLegacyEnvFiles, s as reservedEnvKeysMessage } from "./env-BJjULvL0.mjs";
31
- import { n as findEnvFileForPaths, r as generateEnvTypes, t as findEnvFile } from "./env-types-GRchm5dw.mjs";
31
+ import { n as findEnvFileForPaths, r as generateEnvTypes, t as findEnvFile } from "./env-types-BicfKBhV.mjs";
32
32
  import { t as loadUserEnvFile } from "./load-user-env-DD5qveNU.mjs";
33
33
  import { n as INTERNAL_BINDING_PREFIXES, t as INTERNAL_BINDING_EXACT_NAMES } from "./env-raw-D74P4ebM.mjs";
34
- import { t as ASSET_EXTENSIONS } from "./routing-assets-VkrKIbxE.mjs";
35
- import { r as selectNativeVersionMetadataBinding, t as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV } from "./version-metadata-B1Bm2wSq.mjs";
36
- import { f as prerenderPages, n as SEND_EMAIL_BINDING, p as prerenderPagesNode } from "./email-cloudflare-etpKiITL.mjs";
34
+ import { t as ASSET_EXTENSIONS } from "./routing-assets-DdSFxoLp.mjs";
35
+ import { r as selectNativeVersionMetadataBinding, t as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV } from "./version-metadata-tS39iW09.mjs";
36
+ import { f as prerenderPages, n as SEND_EMAIL_BINDING, p as prerenderPagesNode } from "./email-cloudflare-D03g2TkS.mjs";
37
37
  import { r as defer } from "./validation-error-Dg9Recn1.mjs";
38
- import { i as safeJsonStringify } from "./protocol-bAUUkx70.mjs";
39
- import { n as completeApplicationAnalysis } from "./application-routing-CZH66gXn.mjs";
40
- import { n as generateVoidAuthDrizzleSchema, t as generateVoidAuthDatabaseModule } from "./drizzle-BQfyvQKX.mjs";
38
+ import { i as safeJsonStringify } from "./protocol-DimNxVRr.mjs";
39
+ import { n as completeApplicationAnalysis } from "./application-routing-DAhNP4u3.mjs";
41
40
  import { n as generateQueueTypes, t as generateRouteTypes } from "./route-types-BZi26DVS.mjs";
42
41
  import { a as defineMiddleware, c as defineScheduled, i as defineHead, n as basicAuth, o as defineQueue, r as defineHandler, s as defineRender, t as VoidAssetRewriteError } from "./handler-BZ1t7-Rv.mjs";
43
42
  import module, { builtinModules, createRequire } from "node:module";
@@ -489,10 +488,11 @@ function readVoidDevCredentials(root) {
489
488
  * block the server. On completion, writes project.json and restarts the server.
490
489
  */
491
490
  async function runAiSetupPrompt(root, token, apiUrl, server) {
492
- const { select, text, isCancel, log } = await import("./dist-CfgIkieS.mjs");
493
- const { PlatformClient } = await import("./client-DAnfyMe9.mjs");
491
+ const { select, text, isCancel, log } = await import("./dist-B1PLt4_8.mjs");
492
+ const { PlatformClient } = await import("./client-BiRDZTSd.mjs");
494
493
  const { attachSelectedPlatform, writeProjectConfig } = await import("./project-zdB3fs9G.mjs");
495
- const { inferDefaultSlug } = await import("./resolve-project-PnhzMtY6.mjs");
494
+ const { inferDefaultSlug } = await import("./resolve-project-DD1vu8s9.mjs");
495
+ const { printSuccess } = await import("./output-BW9uK099.mjs");
496
496
  const client = new PlatformClient(token, { apiUrl });
497
497
  let projects;
498
498
  try {
@@ -519,7 +519,7 @@ async function runAiSetupPrompt(root, token, apiUrl, server) {
519
519
  let slug;
520
520
  if (result === "__create__") {
521
521
  const { validateProjectSlug } = await import("./project-slug-6cyz8E7k.mjs");
522
- const { createProjectWithSlugRetry } = await import("./create-project-CvuYDD-l.mjs");
522
+ const { createProjectWithSlugRetry } = await import("./create-project-DTuy-l0z.mjs");
523
523
  let created;
524
524
  try {
525
525
  created = await createProjectWithSlugRetry(client, inferDefaultSlug(root), async (defaultSlug) => {
@@ -1185,16 +1185,32 @@ function offsetToLineCol(index, offset) {
1185
1185
  * bound to the `void/env` proxy.
1186
1186
  */
1187
1187
  function walkEnvReads(program, bindings, visit) {
1188
- walk(program, { enter(node) {
1189
- const current = node;
1190
- if (!isMemberExpression(current)) return;
1191
- if (isIdentifier(current.object) && bindings.directNames.has(current.object.name)) {
1192
- visit(current);
1193
- return;
1188
+ const references = [];
1189
+ const resolve = bindingResolver(program, {
1190
+ names: /* @__PURE__ */ new Set([...bindings.directNames, ...bindings.namespaceNames]),
1191
+ visit(current) {
1192
+ if (!isMemberExpression(current)) return false;
1193
+ if (isIdentifier(current.object) && bindings.directNames.has(current.object.name)) {
1194
+ references.push({
1195
+ node: current,
1196
+ name: current.object.name,
1197
+ bindingType: "ImportSpecifier"
1198
+ });
1199
+ return true;
1200
+ }
1201
+ const obj = current.object;
1202
+ if (isMemberExpression(obj) && !obj.computed && isIdentifier(obj.object) && bindings.namespaceNames.has(obj.object.name) && isIdentifier(obj.property) && obj.property.name === "env") {
1203
+ references.push({
1204
+ node: current,
1205
+ name: obj.object.name,
1206
+ bindingType: "ImportNamespaceSpecifier"
1207
+ });
1208
+ return true;
1209
+ }
1210
+ return false;
1194
1211
  }
1195
- const obj = current.object;
1196
- if (isMemberExpression(obj) && !obj.computed && isIdentifier(obj.object) && bindings.namespaceNames.has(obj.object.name) && isIdentifier(obj.property) && obj.property.name === "env") visit(current);
1197
- } });
1212
+ });
1213
+ for (const { node, name, bindingType } of references) if (resolve(node, name)?.type === bindingType) visit(node);
1198
1214
  }
1199
1215
  /**
1200
1216
  * Collect every `void/env` read. Computed access produces a warning hit
@@ -2150,7 +2166,7 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2150
2166
  const managedDispatch = options.nodeTarget !== true && options.dev !== true && options.managedDispatch === true;
2151
2167
  lines.push(`import { AsyncLocalStorage } from "node:async_hooks";`);
2152
2168
  lines.push(`import { Hono } from ${JSON.stringify(options.honoPath)};`);
2153
- lines.push(`import { createRoutingRuntime as __createRoutingRuntime, createHttpRouteHandler as __createHttpRouteHandler, createErrorRenderer as __createErrorRenderer, createPageGetHandler as __createPageGetHandler, createPageMutationHandler as __createPageMutationHandler, createPagesFallback as __createPagesFallback, createModuleLoader as __createModuleLoader, createClientAssetTags as __createClientAssetTags, createManifestLoader as __createManifestLoader, createSsrFallback as __createSsrFallback, createAssetNotFound as __createAssetNotFound } from ${JSON.stringify(ROUTING_RUNTIME_PATH)};`);
2169
+ lines.push(`import { createRoutingRuntime as __createRoutingRuntime, createHttpRouteHandler as __createHttpRouteHandler, createErrorRenderer as __createErrorRenderer, createPageGetHandler as __createPageGetHandler, createPageMutationHandler as __createPageMutationHandler, createNamedActionMarker as __createNamedActionMarker, markRouteHandler as __markRouteHandler, createPagesFallback as __createPagesFallback, createModuleLoader as __createModuleLoader, createClientAssetTags as __createClientAssetTags, createManifestLoader as __createManifestLoader, createSsrFallback as __createSsrFallback, createAssetNotFound as __createAssetNotFound } from ${JSON.stringify(ROUTING_RUNTIME_PATH)};`);
2154
2170
  if (options.nodeTarget) lines.push(`const withRuntimeEnv = (_env, fn) => fn();`);
2155
2171
  else lines.push(`import { withRuntimeEnv } from ${JSON.stringify(options.runtimeEnvPath)};`);
2156
2172
  if (auth) {
@@ -2206,6 +2222,10 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2206
2222
  const fallbackRulesJson = JSON.stringify(emitEdgeRules && options.fallbackRules?.length ? options.dev ? options.fallbackRules : stripOriginForProd(options.fallbackRules) : void 0);
2207
2223
  if (emitEdgeRules && options.redirectRules?.length) compileRoutingRulesMiddleware(lines, options.redirectRules, options.dev === true);
2208
2224
  if (emitEdgeRules && options.headerRules?.length) compileHeaderMiddleware(lines, options.headerRules);
2225
+ if (pages && scan.pages.pages.some((page) => page.methods.includes("actions"))) {
2226
+ lines.push(`import { matchedRoutes as __matchedRoutes } from ${JSON.stringify(options.honoRoutePath)};`);
2227
+ lines.push("app.use(__createNamedActionMarker(__matchedRoutes));");
2228
+ }
2209
2229
  if (auth) {
2210
2230
  lines.push("app.use(async (c, next) => {");
2211
2231
  lines.push(" return runVoidAuthMiddleware(c, next, __voidAuthOptions, __voidAuthDatabase);");
@@ -2223,13 +2243,13 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2223
2243
  }
2224
2244
  if (webSockets.length > 0) lines.push("");
2225
2245
  if (auth) {
2226
- lines.push("app.all(\"/api/auth\", async (c) => {");
2246
+ lines.push("app.all(\"/api/auth\", __markRouteHandler(async (c) => {");
2227
2247
  lines.push(" return handleVoidAuthRequest(c, __voidAuthOptions, __voidAuthDatabase);");
2228
- lines.push("});");
2248
+ lines.push("}));");
2229
2249
  lines.push("");
2230
- lines.push("app.all(\"/api/auth/*\", async (c) => {");
2250
+ lines.push("app.all(\"/api/auth/*\", __markRouteHandler(async (c) => {");
2231
2251
  lines.push(" return handleVoidAuthRequest(c, __voidAuthOptions, __voidAuthDatabase);");
2232
- lines.push("});");
2252
+ lines.push("}));");
2233
2253
  lines.push("");
2234
2254
  }
2235
2255
  const seenFiles = /* @__PURE__ */ new Set();
@@ -2276,7 +2296,7 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2276
2296
  lines.push("");
2277
2297
  }
2278
2298
  if (pages && scan.pages.pages.length > 0) compilePageRoutes(lines, scan, pages, options);
2279
- for (let i = 0; i < webSockets.length; i++) lines.push(`app.all(${JSON.stringify(webSockets[i].pattern)}, (c) => __forwardWebSocketRequest(c.req.raw, c.env, __voidWebSocketRoutes[${i}]));`);
2299
+ for (let i = 0; i < webSockets.length; i++) lines.push(`app.all(${JSON.stringify(webSockets[i].pattern)}, __markRouteHandler((c) => __forwardWebSocketRequest(c.req.raw, c.env, __voidWebSocketRoutes[${i}])));`);
2280
2300
  if (webSockets.length > 0) lines.push("");
2281
2301
  if (pages && scan.pages.pages.length > 0) lines.push(`app.notFound(__createPagesFallback({ routing: __routingRuntime, errors: __errorRenderer, assetsDir: ${JSON.stringify(options.assetsDir)}, fallbackRules: ${fallbackRulesJson} }));`);
2282
2302
  compilePrerenderCollector(lines, scan, ssr, options);
@@ -2289,7 +2309,7 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2289
2309
  reactRefresh: options.reactRefresh
2290
2310
  })});`);
2291
2311
  lines.push(`app.notFound(__createSsrFallback({ routing: __routingRuntime, nodeTarget: ${JSON.stringify(options.nodeTarget === true)}, assetsDir: ${JSON.stringify(options.assetsDir)}, fallbackRules: ${fallbackRulesJson}, load: () => import(${JSON.stringify(ssr.serverEntryPath)}), assets: getClientAssetTags }));`);
2292
- } else if (emitEdgeRules && (options.fallbackRules?.length || !options.nodeTarget && options.headerRules?.length) && !(pages && scan.pages.pages.length > 0)) lines.push(`app.notFound(__createAssetNotFound({ routing: __routingRuntime, nodeTarget: ${JSON.stringify(options.nodeTarget === true)}, assetsDir: ${JSON.stringify(options.assetsDir)}, fallbackRules: ${fallbackRulesJson} }));`);
2312
+ } else if (emitEdgeRules && (options.fallbackRules?.length || options.redirectRules?.some((rule) => rule.status === 200) || !options.nodeTarget && options.headerRules?.length) && !(pages && scan.pages.pages.length > 0)) lines.push(`app.notFound(__createAssetNotFound({ routing: __routingRuntime, nodeTarget: ${JSON.stringify(options.nodeTarget === true)}, assetsDir: ${JSON.stringify(options.assetsDir)}, fallbackRules: ${fallbackRulesJson} }));`);
2293
2313
  if (scan.jobs.length > 0) {
2294
2314
  for (let i = 0; i < scan.jobs.length; i++) {
2295
2315
  const job = scan.jobs[i];
@@ -2340,7 +2360,7 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2340
2360
  lines.push(" await scheduled(controller, c.env, c.executionCtx);");
2341
2361
  lines.push(" return c.json({ ok: true });");
2342
2362
  lines.push("};");
2343
- lines.push("app.post(\"/__void/scheduled\", __scheduledHandler);");
2363
+ lines.push("app.post(\"/__void/scheduled\", __markRouteHandler(__scheduledHandler));");
2344
2364
  lines.push("");
2345
2365
  }
2346
2366
  if (scan.queues.length > 0) {
@@ -2390,7 +2410,7 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2390
2410
  lines.push(" const result = await __processQueue(payload, c.env);");
2391
2411
  lines.push(" return c.json(result);");
2392
2412
  lines.push("};");
2393
- lines.push("app.post(\"/__void/queue\", __queueHandler);");
2413
+ lines.push("app.post(\"/__void/queue\", __markRouteHandler(__queueHandler));");
2394
2414
  lines.push("");
2395
2415
  }
2396
2416
  const email = scan.email;
@@ -2491,11 +2511,11 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2491
2511
  }
2492
2512
  lines.push(" return null;");
2493
2513
  lines.push("}");
2494
- lines.push(`app.post("/__void/migrate", (c) => __voidCreateMigrationRequestHandler(${auth ? "true" : "false"}, false)(c.req.raw));`);
2495
- lines.push(`app.get("/__void/migrate/capabilities", (c) => __voidCreateMigrationRequestHandler(${auth ? "true" : "false"}, true)(c.req.raw));`);
2496
- lines.push("app.post(\"/__void/migrate/app\", (c) => __voidCreateMigrationRequestHandler(false, true)(c.req.raw));");
2497
- lines.push("app.get(\"/__void/migrate/app/attempt/:attemptId\", (c) => __voidCreateMigrationRequestHandler(false, true)(c.req.raw));");
2498
- if (auth) lines.push("app.post(\"/__void/migrate/auth\", (c) => __voidCreateMigrationRequestHandler(true, true)(c.req.raw));");
2514
+ lines.push(`app.post("/__void/migrate", __markRouteHandler((c) => __voidCreateMigrationRequestHandler(${auth ? "true" : "false"}, false)(c.req.raw)));`);
2515
+ lines.push(`app.get("/__void/migrate/capabilities", __markRouteHandler((c) => __voidCreateMigrationRequestHandler(${auth ? "true" : "false"}, true)(c.req.raw)));`);
2516
+ lines.push("app.post(\"/__void/migrate/app\", __markRouteHandler((c) => __voidCreateMigrationRequestHandler(false, true)(c.req.raw)));");
2517
+ lines.push("app.get(\"/__void/migrate/app/attempt/:attemptId\", __markRouteHandler((c) => __voidCreateMigrationRequestHandler(false, true)(c.req.raw)));");
2518
+ if (auth) lines.push("app.post(\"/__void/migrate/auth\", __markRouteHandler((c) => __voidCreateMigrationRequestHandler(true, true)(c.req.raw)));");
2499
2519
  lines.push("");
2500
2520
  } else {
2501
2521
  lines.push("export async function __voidHandleInternalRoute() { return null; }");
@@ -2504,12 +2524,12 @@ function compileRouteTable(scan, routesDir, middlewareDir, jobsDir, queuesDir, s
2504
2524
  if (options.bindingHandlerPath) {
2505
2525
  lines.push(`import { createBindingHandler as __createBindingHandler } from ${JSON.stringify(options.bindingHandlerPath)};`);
2506
2526
  lines.push("let __voidBindingApp;");
2507
- lines.push("app.all(\"/__void/*\", async (c) => {");
2527
+ lines.push("app.all(\"/__void/*\", __markRouteHandler(async (c) => {");
2508
2528
  lines.push(" if (!__voidBindingApp) __voidBindingApp = __createBindingHandler(__getRawEnv());");
2509
2529
  lines.push(" const url = new URL(c.req.url);");
2510
2530
  lines.push(" url.pathname = url.pathname.slice(7);");
2511
2531
  lines.push(" return __voidBindingApp.fetch(new Request(url.toString(), c.req.raw));");
2512
- lines.push("});");
2532
+ lines.push("}));");
2513
2533
  lines.push("");
2514
2534
  }
2515
2535
  lines.push("const __rawEnvStore = new AsyncLocalStorage();");
@@ -3274,7 +3294,7 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
3274
3294
  const hasSqlMigrations = existsSync(migrationsDir);
3275
3295
  if (!hasSqlMigrations && !auth?.enabled) return;
3276
3296
  const migrateAuth = async (databaseUrl) => {
3277
- const { runLocalVoidAuthMigrations } = await import("./node-uN8_zxJr.mjs");
3297
+ const { runLocalVoidAuthMigrations } = await import("./node-WB7c2N4L.mjs");
3278
3298
  await runLocalVoidAuthMigrations(root, dialect, persistRoot, databaseId, auth?.configPath, databaseUrl);
3279
3299
  };
3280
3300
  const mysqlAuth = dialect === "mysql" && auth?.enabled === true;
@@ -3617,7 +3637,7 @@ function createFrameworkPlugins(input) {
3617
3637
  apply: "serve",
3618
3638
  config() {
3619
3639
  if (detected.class !== "b") return;
3620
- return { ssr: { noExternal: ["void", ...dialect === "sqlite" ? [] : findVoidDependentPackages(root)] } };
3640
+ return { ssr: { noExternal: ["void", ...dialect !== "sqlite" || getDatabaseCasing(config) !== void 0 ? findVoidDependentPackages(root) : []] } };
3621
3641
  },
3622
3642
  resolveId: {
3623
3643
  order: "pre",
@@ -3701,6 +3721,14 @@ export default {
3701
3721
  return injectSvelteKitBuildHooks(code, id, envModuleFile);
3702
3722
  }
3703
3723
  } : void 0;
3724
+ const svelteKitD1CasingBuildPlugin = detected.class === "b" && dialect === "sqlite" && getDatabaseCasing(config) !== void 0 ? {
3725
+ name: "void:sveltekit-d1-casing-build",
3726
+ apply: "build",
3727
+ configEnvironment(name) {
3728
+ if (name !== "ssr") return;
3729
+ return { resolve: { noExternal: findVoidDependentPackages(root) } };
3730
+ }
3731
+ } : void 0;
3704
3732
  return [
3705
3733
  devTriggerSecretGuardPlugin(),
3706
3734
  createCloudflareBuiltinsExternalPlugin(),
@@ -3710,6 +3738,7 @@ export default {
3710
3738
  ...astroServerEntryPlugin ? [astroServerEntryPlugin] : [],
3711
3739
  svelteKitHooksInjectPlugin,
3712
3740
  ...svelteKitWorkerBuildPlugin ? [svelteKitWorkerBuildPlugin] : [],
3741
+ ...svelteKitD1CasingBuildPlugin ? [svelteKitD1CasingBuildPlugin] : [],
3713
3742
  clientStubsPlugin,
3714
3743
  serverRuntimeOptimizerPlugin,
3715
3744
  bindingRuntimePlugin(bindingNames),
@@ -3719,6 +3748,7 @@ export default {
3719
3748
  drizzlePlugin(root, false, dialect, {
3720
3749
  d1BindingName: bindingNames?.d1,
3721
3750
  forceVirtualDb: bindingNames?.d1 !== void 0,
3751
+ casing: getDatabaseCasing(config),
3722
3752
  localD1DatabaseId: localD1.databaseId,
3723
3753
  localD1PersistRoot: frameworkPersistRoot,
3724
3754
  nitroBundlesServer: detected.name === "nuxt" || detected.name === "analog"
@@ -4244,6 +4274,7 @@ function routingPlugin(root, options) {
4244
4274
  const runtimeEmailPath = resolveFile("#self/email");
4245
4275
  const compileOptions = {
4246
4276
  honoPath: resolveFile("hono"),
4277
+ honoRoutePath: resolveFile("hono/route"),
4247
4278
  runtimeEnvPath: resolveFile("#self/_env"),
4248
4279
  emailDir,
4249
4280
  projectRoot: root,
@@ -4292,6 +4323,7 @@ function routingPlugin(root, options) {
4292
4323
  }
4293
4324
  async function writeAuthDatabaseFiles() {
4294
4325
  if (!compileOptions.auth) return;
4326
+ const { generateVoidAuthDatabaseModule, generateVoidAuthDrizzleSchema } = await import("./drizzle-9TubSZvI.mjs");
4295
4327
  const authRuntime = {
4296
4328
  dialect: compileOptions.auth.dialect,
4297
4329
  providers: compileOptions.auth.providers,
@@ -4896,7 +4928,7 @@ function voidPlugin(options) {
4896
4928
  const cloudflareConfigPath = projectCloudflareConfigPath && existsSync(projectCloudflareConfigPath) ? projectCloudflareConfigPath : void 0;
4897
4929
  let previewing = false;
4898
4930
  const restorePreviewPointer = () => {
4899
- if (!existsSync(join(root, "void.config.ts"))) return;
4931
+ if (!existsSync(join(root, "void.config.ts")) || process.env["VOID_CLOUDFLARE_DEPLOY_BUILD"] === "1") return;
4900
4932
  if (restoreCloudflarePreviewPointer(root) && !scheduledPreviewPointerCleanups.has(root)) {
4901
4933
  scheduledPreviewPointerCleanups.add(root);
4902
4934
  process.once("exit", () => {
@@ -5238,6 +5270,7 @@ function voidPlugin(options) {
5238
5270
  drizzlePlugin(root, false, dialect, {
5239
5271
  d1BindingName: bindingNames?.d1,
5240
5272
  forceVirtualDb: authEnabled || bindingNames?.d1 !== void 0,
5273
+ casing: getDatabaseCasing(config),
5241
5274
  localD1DatabaseId: localD1.databaseId,
5242
5275
  localD1PersistRoot: localD1.persistRoot,
5243
5276
  redirectDbTypePaths
@@ -5385,6 +5418,7 @@ function voidPlugin(options) {
5385
5418
  drizzlePlugin(root, true, dialect, {
5386
5419
  d1BindingName: bindingNames?.d1,
5387
5420
  forceVirtualDb: authEnabled || bindingNames?.d1 !== void 0,
5421
+ casing: getDatabaseCasing(config),
5388
5422
  localD1DatabaseId: localD1.databaseId,
5389
5423
  localD1PersistRoot: localD1.persistRoot
5390
5424
  }),
@@ -1,8 +1,8 @@
1
1
  import { a as join, s as relative } from "./dist-ipQi0Q8y.mjs";
2
- import { a as deriveWebSocketClassNameFromName, o as inferWebSocketResourceName } from "./plugin-inference-Bekzjuqw.mjs";
3
- import { d as readConfig } from "./config-D26zcdKy.mjs";
4
- import { d as deriveDurableResourceIdentity, f as inferDurableResourceName, t as analyzeApplicationSync } from "./application-analysis-D7nNmNJb.mjs";
5
- import { n as VOID_LOCK_FILE } from "./cloudflare-config-rdFOys4X.mjs";
2
+ import { a as deriveWebSocketClassNameFromName, o as inferWebSocketResourceName } from "./plugin-inference-DUjCd55H.mjs";
3
+ import { p as readConfig } from "./config-DHgSEWT7.mjs";
4
+ import { d as deriveDurableResourceIdentity, f as inferDurableResourceName, t as analyzeApplicationSync } from "./application-analysis-fEqoSeMp.mjs";
5
+ import { n as VOID_LOCK_FILE } from "./cloudflare-config-DchHxPTo.mjs";
6
6
  import { existsSync, readFileSync } from "node:fs";
7
7
  import { isRecord } from "@void/deploy-core";
8
8
  //#region src/cli/info.ts
@@ -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-Bekzjuqw.mjs";
2
+ import { r as detectFramework } from "./plugin-inference-DUjCd55H.mjs";
3
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";
4
+ import { c as getDatabaseCasing, l as getDatabaseDialect, p as readConfig, s as databaseConfigValue } from "./config-DHgSEWT7.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-rdFOys4X.mjs";
8
- import { i as LATEST_KNOWN_COMPAT_DATE, j as writeProvisionedWranglerConfig } from "./wrangler-C9XSzrju.mjs";
7
+ import { r as materializeCloudflareConfig } from "./cloudflare-config-DchHxPTo.mjs";
8
+ import { M as writeProvisionedWranglerConfig, i as LATEST_KNOWN_COMPAT_DATE } from "./wrangler-F96NnLyb.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
- import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./dist-BVdsO7Py.mjs";
12
- import { l as formatUrl, m as printSuccess, p as note } from "./output-CKguMgr7.mjs";
13
11
  import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-Itv1f4WC.mjs";
14
12
  import { t as parseDotenvFile } from "./dotenv-CNazY3-w.mjs";
15
- import { r as writeDrizzleConfig, t as PLACEHOLDER_DB_URL } from "./config-DC5llZaI.mjs";
13
+ import { r as writeDrizzleConfig, t as PLACEHOLDER_DB_URL } from "./config-BIaXIkkv.mjs";
14
+ import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./dist-Cor9XGoz.mjs";
16
15
  import { n as getOwnVersion, r as getPackageDir, t as detectAgents } from "./agents-CuNtT0D_.mjs";
17
- import { r as PlatformClient } from "./client-BdzxubTS.mjs";
18
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-D8jQTwVQ.mjs";
19
- import { s as formatProjectCommand } from "./cloudflare-process-CZJ4viYl.mjs";
16
+ import { r as PlatformClient } from "./client-BEkdj1kx.mjs";
17
+ import { l as formatUrl, m as printSuccess, p as note } from "./output-BpgYODYx.mjs";
18
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-DV71ol5d.mjs";
19
+ import { s as formatProjectCommand } from "./cloudflare-process-8jEYIeim.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-f2eu2TQh.mjs";
22
- import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-CX7phm7V.mjs";
23
- import { t as connectCloudflare } from "./cloudflare-connect-BN-k2kD-.mjs";
21
+ import { t as promptForLoginToken } from "./login-Cttnagmm.mjs";
22
+ import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-D5I1beUX.mjs";
23
+ import { t as connectCloudflare } from "./cloudflare-connect-CCRTVg-I.mjs";
24
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-DYfdWBXt.mjs";
25
+ import { i as writeVoidProjectConfig, o as migrateFrameworkAdapterPaths, r as canRewriteVoidProjectConfig, t as migrateLegacyVoidConfig } from "./migrate-DyT2jJ8y.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";
@@ -230,8 +230,8 @@ const SCAFFOLD_BASE_DEV_DEPENDENCIES = {
230
230
  typescript: "^7.0.2"
231
231
  };
232
232
  const SCAFFOLD_VITE_PLUS_DEV_DEPENDENCIES = {
233
- vite: "npm:@voidzero-dev/vite-plus-core@^1.2.0",
234
- "vite-plus": "^1.2.0"
233
+ vite: "npm:@voidzero-dev/vite-plus-core@^1.3.0",
234
+ "vite-plus": "^1.3.0"
235
235
  };
236
236
  const SCAFFOLD_TOOLCHAIN_OPTIONS = [{
237
237
  value: "vite-plus",
@@ -340,11 +340,13 @@ function createPagesStarterTemplate(options) {
340
340
  scripts: {
341
341
  dev: toolchain === "vite-plus" ? "vp dev" : "vite",
342
342
  build: toolchain === "vite-plus" ? "vp build" : "vite build",
343
- preview: toolchain === "vite-plus" ? "vp preview" : "vite preview"
343
+ preview: toolchain === "vite-plus" ? "vp preview" : "vite preview",
344
+ postinstall: "void prepare"
344
345
  },
345
346
  dependencies: {
346
347
  ...SCAFFOLD_BASE_DEPENDENCIES,
347
- ...config.dependencies
348
+ ...config.dependencies,
349
+ ...starterMode !== "static" ? { zod: "^4.6.7" } : {}
348
350
  },
349
351
  devDependencies: {
350
352
  void: voidPackageSpec,
@@ -773,6 +775,22 @@ function patchViteConfigWithVoidPlugin(filePath, code) {
773
775
  }
774
776
  //#endregion
775
777
  //#region src/cli/init.ts
778
+ const SCAFFOLD_STARTER_MODES = [
779
+ "sqlite",
780
+ "postgresql",
781
+ "mysql",
782
+ "static"
783
+ ];
784
+ const DEPLOYMENT_PLATFORMS = [
785
+ "cloudflare",
786
+ "void",
787
+ "none"
788
+ ];
789
+ function parseChoice(flag, value, choices) {
790
+ if (value === void 0) return;
791
+ if (typeof value !== "string" || !choices.includes(value)) throw new Error(`init: --${flag} must be one of ${choices.join(", ")}.`);
792
+ return value;
793
+ }
776
794
  function parseInitArgs(args) {
777
795
  let parsed;
778
796
  try {
@@ -781,7 +799,11 @@ function parseInitArgs(args) {
781
799
  options: {
782
800
  tsconfig: { type: "boolean" },
783
801
  github: { type: "boolean" },
784
- git: { type: "boolean" }
802
+ git: { type: "boolean" },
803
+ toolchain: { type: "string" },
804
+ framework: { type: "string" },
805
+ starter: { type: "string" },
806
+ deploy: { type: "string" }
785
807
  },
786
808
  allowNegative: true,
787
809
  strict: true
@@ -793,7 +815,11 @@ function parseInitArgs(args) {
793
815
  return {
794
816
  tsconfig: parsed.values.tsconfig === true,
795
817
  github: parsed.values.github === true,
796
- git: parsed.values.git
818
+ git: parsed.values.git,
819
+ toolchain: parseChoice("toolchain", parsed.values.toolchain, SCAFFOLD_TOOLCHAIN_OPTIONS.map((option) => option.value)),
820
+ framework: parseChoice("framework", parsed.values.framework, SCAFFOLD_FRAMEWORK_OPTIONS.map((option) => option.value)),
821
+ starter: parseChoice("starter", parsed.values.starter, SCAFFOLD_STARTER_MODES),
822
+ deploy: parseChoice("deploy", parsed.values.deploy, DEPLOYMENT_PLATFORMS)
797
823
  };
798
824
  }
799
825
  const EMPTY_PROJECT_ALLOWED_ENTRIES = /* @__PURE__ */ new Set([
@@ -883,7 +909,8 @@ const EMPTY_PROJECT_ALLOWED_SCRIPTS = {
883
909
  test: void 0,
884
910
  dev: /* @__PURE__ */ new Set(["vite", "vp dev"]),
885
911
  build: /* @__PURE__ */ new Set(["vite build", "vp build"]),
886
- preview: /* @__PURE__ */ new Set(["vite preview", "vp preview"])
912
+ preview: /* @__PURE__ */ new Set(["vite preview", "vp preview"]),
913
+ postinstall: /* @__PURE__ */ new Set(["void prepare"])
887
914
  };
888
915
  const EMPTY_PROJECT_STARTER_SCRIPT_COMMANDS = new Set(Object.values(EMPTY_PROJECT_ALLOWED_SCRIPTS).flatMap((commands) => commands ? Array.from(commands) : []));
889
916
  function isStarterScriptCommand(value) {
@@ -1595,35 +1622,52 @@ function ensureVoidWorkerCompatibilityDate(root) {
1595
1622
  writeVoidProjectConfig(root, config);
1596
1623
  log.step("Pinned worker compatibility_date in void.config.ts");
1597
1624
  }
1625
+ /** Write `dialect` to the config's `database`, keeping its casing. */
1626
+ function writeDatabaseDialect(root, config, dialect) {
1627
+ const next = { ...config };
1628
+ const database = databaseConfigValue(dialect, getDatabaseCasing(config));
1629
+ if (database === void 0) delete next.database;
1630
+ else next.database = database;
1631
+ writeVoidProjectConfig(root, next);
1632
+ }
1598
1633
  function clearConfiguredDatabase(root, messages) {
1599
1634
  const config = readConfig(root);
1600
- if (config.database !== "pg" && config.database !== "mysql") {
1635
+ if (getDatabaseDialect(config) === "sqlite") {
1601
1636
  log.info(messages.unchanged);
1602
1637
  return;
1603
1638
  }
1604
- delete config.database;
1605
- writeVoidProjectConfig(root, config);
1639
+ writeDatabaseDialect(root, config, "sqlite");
1606
1640
  log.step(messages.updated);
1607
1641
  }
1642
+ /** Remove `database` entirely: its casing alone still makes Void serve `void/db`. */
1643
+ function removeDatabaseConfig(root) {
1644
+ const config = readConfig(root);
1645
+ if (config.database === void 0) {
1646
+ log.info("No database configured yet");
1647
+ return;
1648
+ }
1649
+ const next = { ...config };
1650
+ delete next.database;
1651
+ writeVoidProjectConfig(root, next);
1652
+ log.step("Removed database config from void.config.ts");
1653
+ }
1608
1654
  function applyDatabaseDialect(root, dialect) {
1609
1655
  const config = readConfig(root);
1610
1656
  if (dialect === "postgresql") {
1611
- if (config.database === "pg") {
1657
+ if (getDatabaseDialect(config) === "postgresql") {
1612
1658
  log.info("PostgreSQL already configured in void.config.ts");
1613
1659
  return;
1614
1660
  }
1615
- config.database = "pg";
1616
- writeVoidProjectConfig(root, config);
1661
+ writeDatabaseDialect(root, config, "postgresql");
1617
1662
  log.step("Configured PostgreSQL in void.config.ts");
1618
1663
  return;
1619
1664
  }
1620
1665
  if (dialect === "mysql") {
1621
- if (config.database === "mysql") {
1666
+ if (getDatabaseDialect(config) === "mysql") {
1622
1667
  log.info("MySQL already configured in void.config.ts");
1623
1668
  return;
1624
1669
  }
1625
- config.database = "mysql";
1626
- writeVoidProjectConfig(root, config);
1670
+ writeDatabaseDialect(root, config, "mysql");
1627
1671
  log.step("Configured MySQL in void.config.ts");
1628
1672
  return;
1629
1673
  }
@@ -1640,15 +1684,21 @@ function detectDatabaseSetup(root) {
1640
1684
  }
1641
1685
  function applyDatabaseSetup(root, choice) {
1642
1686
  if (choice === "none") {
1643
- clearConfiguredDatabase(root, {
1644
- unchanged: "No database configured yet",
1645
- updated: "Removed database config from void.config.ts"
1646
- });
1687
+ removeDatabaseConfig(root);
1647
1688
  return;
1648
1689
  }
1649
1690
  applyDatabaseDialect(root, choice);
1650
1691
  }
1651
- async function promptStarterMode() {
1692
+ /**
1693
+ * A prompt cannot be answered when stdin is not a terminal, so fail with the
1694
+ * flag that answers it instead of exiting as if init succeeded.
1695
+ */
1696
+ function assertInteractive(flag, choices) {
1697
+ if (!process.stdin.isTTY) throw new Error(`init: Pass --${flag} (${choices.join(", ")}) when running without an interactive terminal.`);
1698
+ }
1699
+ async function promptStarterMode(starter) {
1700
+ if (starter) return starter;
1701
+ assertInteractive("starter", SCAFFOLD_STARTER_MODES);
1652
1702
  const choice = await select({
1653
1703
  message: "Choose a Pages starter:",
1654
1704
  options: [
@@ -1680,7 +1730,9 @@ async function promptStarterMode() {
1680
1730
  }
1681
1731
  return choice;
1682
1732
  }
1683
- async function promptScaffoldToolchain() {
1733
+ async function promptScaffoldToolchain(toolchain) {
1734
+ if (toolchain) return toolchain;
1735
+ assertInteractive("toolchain", SCAFFOLD_TOOLCHAIN_OPTIONS.map((option) => option.value));
1684
1736
  const choice = await select({
1685
1737
  message: "Choose a Pages scaffold toolchain:",
1686
1738
  initialValue: "vite-plus",
@@ -1692,7 +1744,9 @@ async function promptScaffoldToolchain() {
1692
1744
  }
1693
1745
  return choice;
1694
1746
  }
1695
- async function promptScaffoldFramework() {
1747
+ async function promptScaffoldFramework(framework) {
1748
+ if (framework) return framework;
1749
+ assertInteractive("framework", SCAFFOLD_FRAMEWORK_OPTIONS.map((option) => option.value));
1696
1750
  const choice = await select({
1697
1751
  message: "Choose a Pages framework to scaffold:",
1698
1752
  options: [...SCAFFOLD_FRAMEWORK_OPTIONS]
@@ -1737,7 +1791,12 @@ async function promptDatabaseSetup(root) {
1737
1791
  }
1738
1792
  return choice;
1739
1793
  }
1740
- async function promptDeploymentPlatform(root) {
1794
+ async function promptDeploymentPlatform(root, deploy) {
1795
+ if (deploy) {
1796
+ writeDeploymentPlatform(root, deploy);
1797
+ return deploy;
1798
+ }
1799
+ assertInteractive("deploy", DEPLOYMENT_PLATFORMS);
1741
1800
  const current = readDeploymentPlatform(root);
1742
1801
  const choice = await select({
1743
1802
  message: "Where should this project deploy?",
@@ -2454,12 +2513,13 @@ async function runInitCommand(root, initArgs) {
2454
2513
  if (framework) log.info(`Detected ${framework.name} framework`);
2455
2514
  if (!targeted && !framework && isScaffoldableEmptyProject(root)) {
2456
2515
  log.info("Empty project detected. Scaffolding a Pages starter...");
2457
- const scaffoldToolchain = await promptScaffoldToolchain();
2516
+ const scaffoldToolchain = await promptScaffoldToolchain(initArgs?.toolchain);
2458
2517
  if (detectedPagesFramework) {
2459
2518
  scaffoldedPagesFramework = detectedPagesFramework;
2460
2519
  log.info(`Detected ${SCAFFOLD_FRAMEWORKS[detectedPagesFramework].label} adapter in package.json`);
2461
- } else scaffoldedPagesFramework = await promptScaffoldFramework();
2462
- const starterMode = await promptStarterMode();
2520
+ } else scaffoldedPagesFramework = await promptScaffoldFramework(initArgs?.framework);
2521
+ const starterMode = await promptStarterMode(initArgs?.starter);
2522
+ if (initArgs?.deploy === void 0) assertInteractive("deploy", DEPLOYMENT_PLATFORMS);
2463
2523
  const existingPackageJson = readPackageJson(root);
2464
2524
  const hasPackageManager = hasLocalLockfile(root) || existsSync(join(root, "pnpm-workspace.yaml")) || parsePackageManagerField(existingPackageJson) !== void 0 || resolveWorkspaceDeferral(root, existingPackageJson) !== void 0;
2465
2525
  const scaffoldPackageManager = scaffoldToolchain === "vite-plus" && !hasPackageManager ? "pnpm" : preScaffoldState.packageManager;
@@ -2505,7 +2565,7 @@ async function runInitCommand(root, initArgs) {
2505
2565
  await injectAgentBlock(root, newProject);
2506
2566
  const agents = detectAgents(root);
2507
2567
  if (agents.length > 0) {
2508
- const { linkSkillsForSpecificAgents } = await import("./skills-C_yRTg0g.mjs");
2568
+ const { linkSkillsForSpecificAgents } = await import("./skills-CrUO3PJ0.mjs");
2509
2569
  linkSkillsForSpecificAgents(root, agents);
2510
2570
  } else log.info("Bundled Void docs: node_modules/void/docs/");
2511
2571
  if (!targeted && !framework) {
@@ -2529,7 +2589,7 @@ async function runInitCommand(root, initArgs) {
2529
2589
  }
2530
2590
  }
2531
2591
  }
2532
- const deploymentPlatform = !targeted ? await promptDeploymentPlatform(root) : readDeploymentPlatform(root);
2592
+ const deploymentPlatform = !targeted ? await promptDeploymentPlatform(root, initArgs?.deploy) : readDeploymentPlatform(root);
2533
2593
  let voidPlatformDiscovery = null;
2534
2594
  if (!targeted && deploymentPlatform === "cloudflare") await setupCloudflareDeployment(root);
2535
2595
  if (!targeted && deploymentPlatform === "void") voidPlatformDiscovery = await ensureVoidPlatformConnection(root);