void 0.25.0 → 0.26.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 (151) hide show
  1. package/dist/{account-cmd-DcR1ywt8.mjs → account-cmd-CDry3B5V.mjs} +4 -4
  2. package/dist/{application-analysis-BVsVqc11.mjs → application-analysis-DC2yPvzY.mjs} +1 -1
  3. package/dist/{application-routing-B7QEjqSR.mjs → application-routing-C9khgLiS.mjs} +1 -1
  4. package/dist/{auth-CdgZ9uag.mjs → auth-B60QDbjg.mjs} +1 -1
  5. package/dist/{auth-7wuZ5ob8.mjs → auth-D52yG7hl.mjs} +3 -3
  6. package/dist/{auth-link-Z6E5DYvM.mjs → auth-link-DjeOptYi.mjs} +4 -4
  7. package/dist/{auth-router-BdM4avI8.mjs → auth-router-BRxIuqDi.mjs} +5 -5
  8. package/dist/{build-cmd-CEE7D-hM.mjs → build-cmd-Ce3C8huo.mjs} +4 -4
  9. package/dist/{cache-TcZnBLtH.mjs → cache-CS8Yxr5a.mjs} +4 -4
  10. package/dist/{cancel-deploy-CYoZmcmR.mjs → cancel-deploy-mZsD88Xa.mjs} +3 -3
  11. package/dist/{cf-access-AHKBzmuu.mjs → cf-access-YTlqvAsk.mjs} +1 -1
  12. package/dist/cli/cli.mjs +40 -40
  13. package/dist/cli/cloudflare-operation-process.mjs +1 -1
  14. package/dist/cli/env-schema-probe.d.mts +1 -1
  15. package/dist/client-BxVixJBI.mjs +2 -0
  16. package/dist/{client-RsPo8wsP.mjs → client-mC-dFGDD.mjs} +5 -5
  17. package/dist/{cloudflare-operations-CjaV4lZi.mjs → cloudflare-operations-DYa3coIk.mjs} +1 -1
  18. package/dist/{cloudflare-operations-BhbK6yTq.mjs → cloudflare-operations-DoQrVHAt.mjs} +1 -1
  19. package/dist/{connect-DCvUmPXY.mjs → connect-H6EvP62X.mjs} +6 -6
  20. package/dist/{create-project-eAPgYq35.mjs → create-project-B2kk9Q0o.mjs} +4 -4
  21. package/dist/{create-project-C734I-Mu.mjs → create-project-Dbb4uiN-.mjs} +1 -1
  22. package/dist/{db-C07GEdKF.mjs → db-DpCKZto0.mjs} +21 -21
  23. package/dist/{delete-pKMVsrpJ.mjs → delete-CxlSvsvW.mjs} +6 -6
  24. package/dist/{deploy-DfsAe-T0.mjs → deploy-CeEbnv4b.mjs} +38 -24
  25. package/dist/{deploy-BDu1vhSH.mjs → deploy-qmiLE1G1.mjs} +1 -1
  26. package/dist/{domain-D3uA9ize.mjs → domain-B_9VgOm6.mjs} +6 -6
  27. package/dist/{email-z3o2cwjH.mjs → email-BokHgjKj.mjs} +6 -6
  28. package/dist/{env-3Q8-_2IH.mjs → env-BdTc-K2L.mjs} +6 -5
  29. package/dist/{env-public-BX_r8HR6.d.mts → env-public-DR7ZM6d-.d.mts} +1 -1
  30. package/dist/{fetch-stream-IvCYKyQL.mjs → fetch-stream-Nm3hkZbT.mjs} +8 -1
  31. package/dist/{gen-NjwoG9FK.mjs → gen-BhDlTpwW.mjs} +1 -1
  32. package/dist/gen-qCBwH3fZ.mjs +2 -0
  33. package/dist/{github-cmd-DquUq-b1.mjs → github-cmd-hhkTzlGS.mjs} +4 -4
  34. package/dist/{handler-CZ4nAylQ.d.mts → handler-BeK3weD4.d.mts} +1 -1
  35. package/dist/{help-DRZXC4fj.mjs → help-Bv44e2tm.mjs} +13 -9
  36. package/dist/help-Dw5f9Xrg.mjs +2 -0
  37. package/dist/index.d.mts +1 -1
  38. package/dist/index.mjs +30 -17
  39. package/dist/{info-BmA3_IFZ.mjs → info-DhtTKh65.mjs} +1 -1
  40. package/dist/{init-DT7yuuyl.mjs → init-BMf4T03q.mjs} +10 -9
  41. package/dist/{limits-Bq5LG8Id.d.mts → limits-CFsDKQvU.d.mts} +1 -10
  42. package/dist/{limits-Cjuk2VPm.mjs → limits-D0vD1M9A.mjs} +1 -22
  43. package/dist/{link-CXOlqh2F.mjs → link-BqYsSS_I.mjs} +5 -5
  44. package/dist/{list-eEWVJEPn.mjs → list-_kBToO-l.mjs} +7 -6
  45. package/dist/{live-Chw1eIMv.d.mts → live-iAuEH1hd.d.mts} +1 -1
  46. package/dist/{local-d1-Df4XpwhW.mjs → local-d1-fGxYrVD6.mjs} +1 -1
  47. package/dist/login-D7meQg_3.mjs +2 -0
  48. package/dist/{login-pWQHYVu2.mjs → login-DFuo-RWO.mjs} +4 -4
  49. package/dist/{logs-DnxVX7TR.mjs → logs-DYgnh6dH.mjs} +5 -5
  50. package/dist/{node-BkyRWRx8.mjs → node-C6Q6e1Es.mjs} +1 -1
  51. package/dist/{operator-args-CAVcmwUt.mjs → operator-args-DdY54Bgb.mjs} +1 -1
  52. package/dist/{operator-auth-CkmTE3rt.mjs → operator-auth-2dsGlTT5.mjs} +4 -8
  53. package/dist/{operator-client-LmwjxT6q.mjs → operator-client-BFqpp6z0.mjs} +3 -3
  54. package/dist/{operator-cmd-d-IEKgNk.mjs → operator-cmd-CUGHXrQf.mjs} +27 -9
  55. package/dist/operator-cmd-DRPvhpjM.mjs +2 -0
  56. package/dist/{output-BBsUwdyT.mjs → output-BvdaehtE.mjs} +26 -2
  57. package/dist/pages/client.d.mts +1 -1
  58. package/dist/pages/index.mjs +1 -1
  59. package/dist/pages/islands-plugin.mjs +1 -1
  60. package/dist/pages/protocol.d.mts +2 -2
  61. package/dist/{plan-NPpwZ_kc.mjs → plan-CJGEeTEI.mjs} +2 -2
  62. package/dist/plan-COtUvdMA.mjs +2 -0
  63. package/dist/{platform-args-Bzf8JPc2.mjs → platform-args-DSV2p4nY.mjs} +4 -2
  64. package/dist/platform-args-Dcy_5b_Y.mjs +2 -0
  65. package/dist/{platform-auth-config-0V0lA3pF.mjs → platform-auth-config-Bosx7U1h.mjs} +18 -17
  66. package/dist/{platform-auth-protection-DFeJ-JkK.mjs → platform-auth-protection-DcbL_LW_.mjs} +6 -6
  67. package/dist/{platform-auth-recovery-ICy4muq6.mjs → platform-auth-recovery-WfTZ8K6o.mjs} +5 -5
  68. package/dist/{platform-cmd-D7vSWMvV.mjs → platform-cmd-DbKtQb_4.mjs} +45 -20
  69. package/dist/{platform-cmd-BPySFOew.mjs → platform-cmd-dyFUof0t.mjs} +1 -1
  70. package/dist/{platform-discovery-DDDUvnqp.mjs → platform-discovery-BC0HCKYt.mjs} +18 -4
  71. package/dist/{platform-domain-CUdY064e.mjs → platform-domain-Bsq43AJp.mjs} +5 -4
  72. package/dist/{platform-lifecycle-BaUdTRPU.mjs → platform-lifecycle--5gWmDoI.mjs} +1 -1
  73. package/dist/{platform-lifecycle-Dm09JNkn.mjs → platform-lifecycle-Cfi0o6xM.mjs} +863 -35
  74. package/dist/{platform-management-Bp6aoH2C.mjs → platform-management-Bbwf6-Dq.mjs} +1 -1
  75. package/dist/{platform-management-BSEc_ZeG.mjs → platform-management-BrF9STZp.mjs} +173 -30
  76. package/dist/{platform-plans-config-B0pOVQyW.mjs → platform-plans-config-DU-8nC2Y.mjs} +2 -2
  77. package/dist/{platform-recovery-WOZ95Uze.mjs → platform-recovery-DQAqAQYu.mjs} +3 -3
  78. package/dist/{platform-registry-KfNEF84O.mjs → platform-registry-P387v42A.mjs} +17 -10
  79. package/dist/prepare-BBknoZI1.mjs +2 -0
  80. package/dist/{prepare-39EvOhI6.mjs → prepare-BMrRWLwP.mjs} +3 -2
  81. package/dist/{prepare-DnaKBi--.mjs → prepare-WoUubFKL.mjs} +1 -1
  82. package/dist/{project-IOjBU8R6.mjs → project-BiaPQ7ur.mjs} +1 -1
  83. package/dist/{project-BkbfDs0V.mjs → project-DQstYTxO.mjs} +1 -1
  84. package/dist/{project-cmd-Bs5A392E.mjs → project-cmd-BbH2LptN.mjs} +18 -18
  85. package/dist/{project-team-ohAWWaew.mjs → project-team-Yiww3-go.mjs} +5 -5
  86. package/dist/{project-token-CP01Jna6.mjs → project-token-BrtT2NkY.mjs} +4 -4
  87. package/dist/{project-zero-trust-BzkVgx35.mjs → project-zero-trust-nYJ2V2nc.mjs} +5 -5
  88. package/dist/{protocol-CjF_iI9X.d.mts → protocol-BX8t2jiw.d.mts} +1 -1
  89. package/dist/{provision-BEv0k-qz.mjs → provision-DMTPG8Rh.mjs} +1 -1
  90. package/dist/{provision-Btj1jppf.mjs → provision-VeqAC77A.mjs} +13 -1
  91. package/dist/{requests-B3PBuGlX.mjs → requests-TIz_jtSu.mjs} +4 -4
  92. package/dist/{rollback-DDub9GsO.mjs → rollback-dBqICPzj.mjs} +5 -5
  93. package/dist/{runner-Ol0TNjk6.mjs → runner--2KF6Kua.mjs} +1 -1
  94. package/dist/{runner-CXA9Fh8h.mjs → runner-voIltZrY.mjs} +1 -1
  95. package/dist/runtime/ai.d.mts +10 -11
  96. package/dist/runtime/ai.mjs +13 -18
  97. package/dist/runtime/client-react.mjs +1 -1
  98. package/dist/runtime/client-solid.mjs +1 -1
  99. package/dist/runtime/client-svelte.mjs +1 -1
  100. package/dist/runtime/client-vue.mjs +1 -1
  101. package/dist/runtime/client.mjs +1 -1
  102. package/dist/runtime/env-public.d.mts +1 -1
  103. package/dist/runtime/fetch-stream.mjs +1 -1
  104. package/dist/runtime/handler.d.mts +1 -1
  105. package/dist/runtime/limits.d.mts +2 -2
  106. package/dist/runtime/limits.mjs +2 -2
  107. package/dist/runtime/live-client.d.mts +1 -1
  108. package/dist/runtime/live.d.mts +1 -1
  109. package/dist/runtime/migration-handler.mjs +33 -7
  110. package/dist/runtime/routing.d.mts +1 -1
  111. package/dist/runtime/sandbox.d.mts +1 -1
  112. package/dist/runtime/sandbox.mjs +12 -22
  113. package/dist/runtime/validator.d.mts +1 -1
  114. package/dist/runtime/ws-server.d.mts +1 -1
  115. package/dist/runtime/ws.d.mts +1 -1
  116. package/dist/{sandbox-XZAqzFlG.d.mts → sandbox-C5LFoJMf.d.mts} +7 -7
  117. package/dist/{scan-C7okrLyM.mjs → scan-C8dA7iM4.mjs} +10 -6
  118. package/dist/{secret-3c72lY1U.mjs → secret-AKnNXNP5.mjs} +6 -6
  119. package/dist/{subcommand-prompt-Dhom39bd.mjs → subcommand-prompt-B6WS9Aoz.mjs} +1 -1
  120. package/dist/validate-pna7R3Pv.mjs +2 -0
  121. package/dist/{validate-ctOrgiS3.mjs → validate-ymhap6M_.mjs} +1 -1
  122. package/dist/{ws-CL1w7GXU.d.mts → ws-C79j4aED.d.mts} +1 -1
  123. package/package.json +7 -7
  124. package/skills/void/SKILL.md +5 -2
  125. package/skills/void/docs/guide/ai.md +65 -62
  126. package/skills/void/docs/guide/app-types.md +1 -1
  127. package/skills/void/docs/guide/database.md +15 -0
  128. package/skills/void/docs/guide/live.md +2 -0
  129. package/skills/void/docs/guide/pages-routing/actions-and-forms.md +1 -1
  130. package/skills/void/docs/guide/platform/installation/credentials.md +2 -2
  131. package/skills/void/docs/guide/platform/installation/first-deployment.md +5 -1
  132. package/skills/void/docs/guide/platform/installation/maintenance.md +3 -1
  133. package/skills/void/docs/guide/platform/installation/setup.md +1 -1
  134. package/skills/void/docs/guide/platform/installation/uninstall.md +44 -11
  135. package/skills/void/docs/guide/sandboxes.md +39 -20
  136. package/skills/void/docs/reference/api/resources.md +11 -14
  137. package/skills/void/docs/reference/api.md +35 -34
  138. package/skills/void/docs/reference/cli/auth.md +3 -1
  139. package/skills/void/docs/reference/cli/platform-config.md +2 -2
  140. package/skills/void/docs/reference/cli/platform-installation.md +14 -12
  141. package/skills/void/docs/reference/cli/platform.md +4 -2
  142. package/skills/void/docs/reference/cli.md +1 -1
  143. package/skills/void/docs/reference/resource-inference.md +1 -0
  144. package/dist/client-B4Me-9HE.mjs +0 -2
  145. package/dist/gen-ById9r2j.mjs +0 -2
  146. package/dist/help-DPGBwomV.mjs +0 -2
  147. package/dist/login-C98-sw79.mjs +0 -2
  148. package/dist/plan-D1Q5rf-r.mjs +0 -2
  149. package/dist/platform-args-Cq6EjQro.mjs +0 -2
  150. package/dist/prepare-CnjcTV2s.mjs +0 -2
  151. package/dist/validate-Dq_L3s0S.mjs +0 -2
@@ -5,49 +5,49 @@ import { m as needsApplicationDatabase, r as detectFramework } from "./plugin-in
5
5
  import { n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-GgcMozYz.mjs";
6
6
  import { d as isNodeTarget, h as resolveBindingNames, m as readConfig } from "./config-Br_JZD6u.mjs";
7
7
  import { n as isIdentifier, r as isLiteral } from "./ast-CPGPjb0V.mjs";
8
- import { o as scanDurableObjectModules, t as analyzeApplicationSync } from "./application-analysis-BVsVqc11.mjs";
8
+ import { o as scanDurableObjectModules, t as analyzeApplicationSync } from "./application-analysis-DC2yPvzY.mjs";
9
9
  import { t as collectMigrations } from "./collect-DiTn9yr6.mjs";
10
10
  import { o as validateSsrEntry } from "./entry-CF5wvH4w.mjs";
11
11
  import { r as hasEmailHandlers } from "./email--tEtMoj_.mjs";
12
12
  import { a as hasSandboxSqliteMigration, c as resolveSandboxConfig, i as assertSandboxNamespaceConfig, l as sandboxContainerConfig, r as SANDBOX_MIGRATION_TAG, s as requiresSandboxPlatformImage } from "./config-C_XRIPx2.mjs";
13
13
  import { i as voidWarn, r as voidLog } from "./log-vqY3pqwI.mjs";
14
14
  import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestinationSplats } from "./headers-2rKda9Y6.mjs";
15
- import { o as listPlatformConnections } from "./platform-registry-KfNEF84O.mjs";
16
- import { l as writeProjectConfig, n as readDeploymentPlatform, o as shouldLinkDeployProject, r as readProjectConfig, s as writeDeploymentPlatform, t as attachSelectedPlatform } from "./project-BkbfDs0V.mjs";
15
+ import { s as listPlatformConnections } from "./platform-registry-P387v42A.mjs";
16
+ import { l as writeProjectConfig, n as readDeploymentPlatform, o as shouldLinkDeployProject, r as readProjectConfig, s as writeDeploymentPlatform, t as attachSelectedPlatform } from "./project-DQstYTxO.mjs";
17
17
  import { i as persistCloudflareConfig, r as materializeCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-Bktvwtpf.mjs";
18
18
  import { A as writeProvisionedWranglerConfig, C as readWranglerPublishedTrafficSnapshot, D as syncWranglerDurableObjects, E as syncWranglerBindings, O as syncWranglerWebSockets, S as readWranglerManagedQueueCleanupCandidates, T as resolveLiveBindingConfig, _ as readExistingLiveBindingConfig, a as LIVE_MIGRATION_TAG, c as bindingEntriesForField, g as normalizeWranglerCompatibilityFlags, h as nextDurableObjectMigrationTag, j as writeWranglerPublishedTrafficSnapshot, l as bindingNamesForField, m as hasDurableObjectSqliteMigration, o as acknowledgeWranglerManagedQueueRemovals, p as findBindingNameOwner, r as FRIENDLY_BINDING_NAMES, u as ensureWranglerCompat } from "./wrangler-DhUerFkW.mjs";
19
- import { n as buildMigrationPlanBundle } from "./plan-NPpwZ_kc.mjs";
19
+ import { n as buildMigrationPlanBundle } from "./plan-CJGEeTEI.mjs";
20
20
  import { n as scopedAccessCredentials, r as trustedCloudflareWorkerAccessHeaders, t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
21
- import { r as ensurePlatformProxyAccess, t as ensureCloudflaredToken } from "./cf-access-AHKBzmuu.mjs";
22
- import { a as getApiUrl, c as getToken, l as getTokenSource, o as getProxyUrl } from "./auth-7wuZ5ob8.mjs";
21
+ import { r as ensurePlatformProxyAccess, t as ensureCloudflaredToken } from "./cf-access-YTlqvAsk.mjs";
22
+ import { a as getApiUrl, c as getToken, l as getTokenSource, o as getProxyUrl } from "./auth-D52yG7hl.mjs";
23
23
  import { r as scanWranglerDotenvKeys } from "./dotenv-VQxupEUv.mjs";
24
24
  import { t as discoverSchema } from "./discover-BcPPiF1o.mjs";
25
25
  import { t as MagicString } from "./dist-AoCzRTJE.mjs";
26
26
  import { t as findEnvFile } from "./env-types-D5kds_OZ.mjs";
27
27
  import { d as formatEnvReport, f as listSelfHostSecretNames, g as validateProdEnv, h as selfHostSchemaFailureMessage, i as SelfHostSecretListError, l as dischargeSelfHostEnvContext, n as SelfHostFirstDeployError, p as readEmittedWorkerVars, r as SelfHostSchemaError, s as deriveSelfHostEnvContextFromVars, t as SelfHostEnvValidationError, u as fetchRemoteSecretNames, v as readGeneratedWranglerConfigFile } from "./env-validation-vBSQ8gw5.mjs";
28
28
  import { n as CLOUDFLARE_DEPLOY_BUILD_ENV, o as resolveRemoteMode, s as stripInternalEnvKeys } from "./env-_v349JBd.mjs";
29
- import { A as confirm, B as note, H as outro, K as select, L as log$1, N as intro, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
29
+ import { A as confirm, H as outro, K as select, L as log$1, N as intro, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
30
30
  import { n as getPackageDir } from "./agents-B_pX_HmQ.mjs";
31
- import { a as isExpiredTokenError, c as platformErrorMessage, i as isCliOutdatedError, n as PlatformApiError, r as PlatformClient, s as parsePlatformErrorBody } from "./client-RsPo8wsP.mjs";
31
+ import { a as isExpiredTokenError, c as platformErrorMessage, i as isCliOutdatedError, n as PlatformApiError, r as PlatformClient, s as parsePlatformErrorBody } from "./client-mC-dFGDD.mjs";
32
32
  import { r as discoverFrameworkWranglerFiles, t as migrateLegacyVoidConfig } from "./migrate-CV1on-yJ.mjs";
33
33
  import { a as detectPreset, c as resolveCloudflareOperationArgv, i as FRAMEWORK_PRESETS, l as resolveProjectCommand, o as formatProjectCommand, s as hasBackendFiles, t as createCloudflareProcessRunner } from "./cloudflare-process-B-wekeR6.mjs";
34
34
  import { t as formatCloudflareUserMessage } from "./cloudflare-user-output-Q-k0QoNQ.mjs";
35
- import { c as import_picocolors$1, l as sanitizeTerminalText, o as formatCount, r as createSpinner } from "./output-BBsUwdyT.mjs";
36
- import { a as promptProjectSelection, i as reportProjectCreationWarnings, o as promptProjectSetupAction, r as promptAndCreateProject } from "./create-project-eAPgYq35.mjs";
35
+ import { c as import_picocolors$1, l as note, o as formatCount, r as createSpinner, u as sanitizeTerminalText } from "./output-BvdaehtE.mjs";
36
+ import { a as promptProjectSelection, i as reportProjectCreationWarnings, o as promptProjectSetupAction, r as promptAndCreateProject } from "./create-project-B2kk9Q0o.mjs";
37
37
  import { t as getRequestedProjectSlug } from "./resolve-project-BG5ORGID.mjs";
38
- import { n as completeApplicationAnalysis, t as analyzeApplication } from "./application-routing-B7QEjqSR.mjs";
38
+ import { n as completeApplicationAnalysis, t as analyzeApplication } from "./application-routing-C9khgLiS.mjs";
39
39
  import { n as openMigrationValidationDatabase, t as SqliteMigrationError } from "./sqlite-validation-BzKMWnO4.mjs";
40
40
  import { i as migrateBuiltWranglerConfig, n as prepareCfFrameworkBuildOutput, r as prepareCfStaticBuildOutput, t as prepareCfBuildOutput } from "./cf-build-output-U8o1Gl6X.mjs";
41
41
  import { a as parseCloudflareAuthSession, i as ensureCloudflareAuthentication, n as cloudflareCredentialOverrides, t as CloudflareAuthenticationError } from "./cloudflare-auth-Qdc7tw8F.mjs";
42
- import { a as createCloudflareEmptyDomainPublisher, i as createCloudflareEmptyCronPublisher } from "./cloudflare-operations-CjaV4lZi.mjs";
43
- import { i as validateMigrations, t as assertJournalCoherence } from "./validate-ctOrgiS3.mjs";
42
+ import { a as createCloudflareEmptyDomainPublisher, i as createCloudflareEmptyCronPublisher } from "./cloudflare-operations-DYa3coIk.mjs";
43
+ import { i as validateMigrations, r as listDrizzleArtifacts, t as assertJournalCoherence } from "./validate-ymhap6M_.mjs";
44
44
  import { t as writeDrizzleConfig } from "./config-D8MOgiQV.mjs";
45
45
  import { i as runMySqlMigrations } from "./runner-mysql-DmWchSWJ.mjs";
46
46
  import { i as runPgMigrations } from "./runner-pg-D4OPlil-.mjs";
47
47
  import { n as writeVoidProjectConfig } from "./config-write-B1f88wJA.mjs";
48
48
  import { t as renderPrerenderPaths } from "./prerender-render-D9qbLs2f.mjs";
49
49
  import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
50
- import { t as promptForLoginToken } from "./login-pWQHYVu2.mjs";
50
+ import { t as promptForLoginToken } from "./login-DFuo-RWO.mjs";
51
51
  import { createRequire } from "node:module";
52
52
  import { copyFileSync, cpSync, createWriteStream, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from "node:fs";
53
53
  import { fileURLToPath } from "node:url";
@@ -254,12 +254,17 @@ async function prepareExistingCloudflareDeploy(options) {
254
254
  configPath: options.configPath,
255
255
  workerName: config.name
256
256
  });
257
- assertExistingCloudflareConfig(existing, config, false, options.approvedKv);
258
- let updated = text;
259
257
  const patch = {
260
258
  account_id: options.accountId,
261
259
  keep_vars: true
262
260
  };
261
+ const metadataBindings = existing.bindings.filter((binding) => binding.type === "version_metadata");
262
+ if (config.version_metadata === void 0 && metadataBindings.length === 1 && typeof metadataBindings[0].name === "string") {
263
+ config.version_metadata = { binding: metadataBindings[0].name };
264
+ patch.version_metadata = config.version_metadata;
265
+ }
266
+ assertExistingCloudflareConfig(existing, config, false, options.approvedKv);
267
+ let updated = text;
263
268
  for (const key of [
264
269
  "compatibility_date",
265
270
  "compatibility_flags",
@@ -1068,7 +1073,7 @@ async function generateWrapper(workerDir, workerMain, root, features) {
1068
1073
  let migrationPlanBundle;
1069
1074
  if (features.hasMigrations) {
1070
1075
  const { collectMigrations } = await import("./collect-DLyFDiKW.mjs");
1071
- const { buildMigrationPlanBundle } = await import("./plan-D1Q5rf-r.mjs");
1076
+ const { buildMigrationPlanBundle } = await import("./plan-COtUvdMA.mjs");
1072
1077
  const migrationsDir = readProjectPaths(root).migrationsDir;
1073
1078
  migrations = collectMigrations(migrationsDir);
1074
1079
  migrationPlanBundle = features.migrationDialect === "sqlite" ? buildMigrationPlanBundle(migrations) : void 0;
@@ -1309,6 +1314,9 @@ function generateWrapperSource(renamedEntry, handlersModule, features, migration
1309
1314
  }
1310
1315
  if (features.readiness || features.crons.length > 0 || features.queues.length > 0 || features.hasMigrations) {
1311
1316
  lines.push(" if (request.method === \"GET\" && url.pathname === \"/__void/ready\") {");
1317
+ lines.push(" if (typeof original?.fetch !== \"function\") {");
1318
+ lines.push(" return Response.json({ ready: false, error: \"worker entry has no fetch handler\" }, { status: 503, headers: { \"cache-control\": \"no-store\" } });");
1319
+ lines.push(" }");
1312
1320
  lines.push(` return Response.json({ ready: true${features.versionMetadataBinding ? `, versionId: env[${JSON.stringify(features.versionMetadataBinding)}]?.id` : ""} }${features.versionMetadataBinding ? ", { headers: { \"cache-control\": \"no-store\" } }" : ""});`);
1313
1321
  lines.push(" }");
1314
1322
  }
@@ -1911,7 +1919,7 @@ let loadedProvisionModule;
1911
1919
  * so a managed deploy never imports it — and thus never loads `proper-lockfile`.
1912
1920
  */
1913
1921
  async function loadProvisionModule() {
1914
- loadedProvisionModule ??= await import("./provision-BEv0k-qz.mjs");
1922
+ loadedProvisionModule ??= await import("./provision-DMTPG8Rh.mjs");
1915
1923
  return loadedProvisionModule;
1916
1924
  }
1917
1925
  /**
@@ -5646,7 +5654,10 @@ function applyDeployEvent(event, s) {
5646
5654
  s.message("Waiting for worker to become reachable...");
5647
5655
  return { kind: "continue" };
5648
5656
  case "migration_start":
5649
- s.message(`Running ${event.pending} migration${event.pending > 1 ? "s" : ""}...`);
5657
+ s.message(`Checking ${event.pending} bundled migration${event.pending === 1 ? "" : "s"}...`);
5658
+ return { kind: "continue" };
5659
+ case "migration_warning":
5660
+ log.warn(event.message);
5650
5661
  return { kind: "continue" };
5651
5662
  case "migration":
5652
5663
  s.message(`Applied migration: ${event.name} (${event.durationMs}ms)`);
@@ -6326,7 +6337,7 @@ function assertDeploySchemaDriftFree(root, dialect) {
6326
6337
  log.error(getErrorMessage$1(error));
6327
6338
  process.exit(1);
6328
6339
  }
6329
- log.error(getDeploySchemaDriftMessage());
6340
+ log.error(getDeploySchemaDriftMessage(root));
6330
6341
  process.exit(1);
6331
6342
  }
6332
6343
  function hasDeploySchemaDrift(root, dialect) {
@@ -6371,7 +6382,9 @@ function runDrizzleKitGenerate(root, configPath) {
6371
6382
  if (result.status !== 0) throw new Error(output || `drizzle-kit generate exited with code ${result.status}.`);
6372
6383
  return output;
6373
6384
  }
6374
- function getDeploySchemaDriftMessage() {
6385
+ function getDeploySchemaDriftMessage(root) {
6386
+ const migrationsDir = readProjectPaths(root).migrationsDir;
6387
+ if (collectMigrations(migrationsDir).length > 0 && !existsSync(join(migrationsDir, "meta", "_journal.json")) && listDrizzleArtifacts(migrationsDir).length === 0) return [`Missing Drizzle metadata in ${`${relative(root, migrationsDir)}/`}.`, "See https://void.cloud/guide/database#hand-written-migrations"].join("\n");
6375
6388
  return ["Schema drift detected between your Drizzle schema and db/migrations/.", "Run `void db generate`, review the generated migration, commit it yourself, then rerun `void deploy`."].join("\n");
6376
6389
  }
6377
6390
  function formatDeploySchemaDriftCheckError(error) {
@@ -6662,7 +6675,7 @@ function formatCloudflareDriftMessage(missing, reasons, header, footer) {
6662
6675
  * seam; tests inject a stub to avoid spawning drizzle-kit.
6663
6676
  */
6664
6677
  function assertRemoteMigrationsDeployable(root, dialect, migrationsDir, migrations) {
6665
- if (hasDeploySchemaDrift(root, dialect)) throw new Error(getDeploySchemaDriftMessage());
6678
+ if (hasDeploySchemaDrift(root, dialect)) throw new Error(getDeploySchemaDriftMessage(root));
6666
6679
  assertJournalCoherence(migrationsDir, migrations);
6667
6680
  if (migrations.length > 0) validateMigrations(migrations);
6668
6681
  }
@@ -10098,9 +10111,10 @@ function openDeployLog(opts) {
10098
10111
  const dir = join(homedir(), ".void", "logs");
10099
10112
  mkdirSync(dir, { recursive: true });
10100
10113
  const ts = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
10101
- const filePath = join(dir, `deploy-${ts}.jsonl`);
10114
+ const suffix = randomBytes(3).toString("hex");
10115
+ const filePath = join(dir, `deploy-${ts}-${process.pid}-${suffix}.jsonl`);
10102
10116
  stream = createWriteStream(filePath, {
10103
- flags: "a",
10117
+ flags: "wx",
10104
10118
  autoClose: true
10105
10119
  });
10106
10120
  stream.on("error", () => {
@@ -1,2 +1,2 @@
1
- import { r as runDeploy, t as parseRootWranglerConfig, y as checkWranglerMigrationApplySet } from "./deploy-DfsAe-T0.mjs";
1
+ import { r as runDeploy, t as parseRootWranglerConfig, y as checkWranglerMigrationApplySet } from "./deploy-CeEbnv4b.mjs";
2
2
  export { checkWranglerMigrationApplySet, parseRootWranglerConfig, runDeploy };
@@ -1,8 +1,8 @@
1
- import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-BkbfDs0V.mjs";
2
- import { c as getToken } from "./auth-7wuZ5ob8.mjs";
3
- import { B as note, L as log } from "./prompts-6OSVA7DJ.mjs";
4
- import { r as PlatformClient } from "./client-RsPo8wsP.mjs";
5
- import { c as import_picocolors } from "./output-BBsUwdyT.mjs";
1
+ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
+ import { c as getToken } from "./auth-D52yG7hl.mjs";
3
+ import { L as log } from "./prompts-6OSVA7DJ.mjs";
4
+ import { r as PlatformClient } from "./client-mC-dFGDD.mjs";
5
+ import { c as import_picocolors, l as note } from "./output-BvdaehtE.mjs";
6
6
  //#region src/cli/domain.ts
7
7
  async function runDomainCommand(root, args) {
8
8
  const platform = readDeploymentPlatform(root);
@@ -40,7 +40,7 @@ async function runDomainCommand(root, args) {
40
40
  }
41
41
  async function runCloudflareDomainCommand(root, args) {
42
42
  if (args.projectSlug) throw new Error("domain: --project selects a Void platform project and is not used for direct Cloudflare apps.");
43
- const { changeCloudflareDomain, listCloudflareDomains } = await import("./cloudflare-operations-BhbK6yTq.mjs");
43
+ const { changeCloudflareDomain, listCloudflareDomains } = await import("./cloudflare-operations-DoQrVHAt.mjs");
44
44
  if (args.subcommand === "add") {
45
45
  const result = await changeCloudflareDomain(root, args.hostname, "add");
46
46
  log.success(result.modified ? `Domain ${args.hostname} added and activated on Cloudflare.` : `Domain ${args.hostname} is already configured.`);
@@ -2,13 +2,13 @@ import { a as join } from "./dist-BVqXeR_h.mjs";
2
2
  import { n as readProjectPaths } from "./project-paths-GgcMozYz.mjs";
3
3
  import { m as readConfig } from "./config-Br_JZD6u.mjs";
4
4
  import { a as scanEmailHandlersSync } from "./email--tEtMoj_.mjs";
5
- import { B as resolveDeployTransport, F as isWranglerNonInteractiveOrCI, G as deriveWorkerName, I as runWranglerAuthToken, N as createDeployWranglerRunner, d as applyEmailSetup, f as createNodeEmailDns, g as renderEmailChecklist, h as renderAddressMap, j as discoverRootWranglerConfig, m as preflightEmail, p as findEmailConfigConflicts, q as loadProvisionModule } from "./deploy-DfsAe-T0.mjs";
6
- import { r as readProjectConfig } from "./project-BkbfDs0V.mjs";
5
+ import { B as resolveDeployTransport, F as isWranglerNonInteractiveOrCI, G as deriveWorkerName, I as runWranglerAuthToken, N as createDeployWranglerRunner, d as applyEmailSetup, f as createNodeEmailDns, g as renderEmailChecklist, h as renderAddressMap, j as discoverRootWranglerConfig, m as preflightEmail, p as findEmailConfigConflicts, q as loadProvisionModule } from "./deploy-CeEbnv4b.mjs";
6
+ import { r as readProjectConfig } from "./project-DQstYTxO.mjs";
7
7
  import { A as writeProvisionedWranglerConfig } from "./wrangler-DhUerFkW.mjs";
8
- import { c as getToken, u as openBrowser } from "./auth-7wuZ5ob8.mjs";
9
- import { A as confirm, B as note, L as log, U as password, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
10
- import { n as PlatformApiError, r as PlatformClient } from "./client-RsPo8wsP.mjs";
11
- import { c as import_picocolors, r as createSpinner } from "./output-BBsUwdyT.mjs";
8
+ import { c as getToken, u as openBrowser } from "./auth-D52yG7hl.mjs";
9
+ import { A as confirm, L as log, U as password, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
10
+ import { n as PlatformApiError, r as PlatformClient } from "./client-mC-dFGDD.mjs";
11
+ import { c as import_picocolors, l as note, r as createSpinner } from "./output-BvdaehtE.mjs";
12
12
  import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
13
13
  import { tmpdir } from "node:os";
14
14
  import { execSync } from "node:child_process";
@@ -1,10 +1,11 @@
1
1
  import { a as join } from "./dist-BVqXeR_h.mjs";
2
- import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-BkbfDs0V.mjs";
3
- import { c as getToken } from "./auth-7wuZ5ob8.mjs";
2
+ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
3
+ import { c as getToken } from "./auth-D52yG7hl.mjs";
4
4
  import { r as generateEnvTypes, t as findEnvFile } from "./env-types-D5kds_OZ.mjs";
5
5
  import { d as formatEnvReport, g as validateProdEnv, u as fetchRemoteSecretNames } from "./env-validation-vBSQ8gw5.mjs";
6
- import { B as note, H as outro, L as log } from "./prompts-6OSVA7DJ.mjs";
7
- import { r as PlatformClient } from "./client-RsPo8wsP.mjs";
6
+ import { H as outro, L as log } from "./prompts-6OSVA7DJ.mjs";
7
+ import { r as PlatformClient } from "./client-mC-dFGDD.mjs";
8
+ import { l as note } from "./output-BvdaehtE.mjs";
8
9
  import { mkdirSync, writeFileSync } from "node:fs";
9
10
  //#region src/cli/env.ts
10
11
  async function runEnvCommand(root, args) {
@@ -24,7 +25,7 @@ async function runCheck(root, useRemoteSecrets) {
24
25
  const platform = readDeploymentPlatform(root);
25
26
  if (platform === "none") throw new Error("env: Deployment is disabled. Run `void init` to choose a platform.");
26
27
  if (platform === "cloudflare") {
27
- const { listCloudflareSecrets, resolveCloudflareOperationContext } = await import("./cloudflare-operations-BhbK6yTq.mjs");
28
+ const { listCloudflareSecrets, resolveCloudflareOperationContext } = await import("./cloudflare-operations-DoQrVHAt.mjs");
28
29
  remoteSecrets = await listCloudflareSecrets(resolveCloudflareOperationContext(root));
29
30
  } else {
30
31
  const token = getToken(root);
@@ -1,4 +1,4 @@
1
- import { l as VoidPlatformSandbox } from "./sandbox-XZAqzFlG.mjs";
1
+ import { l as VoidPlatformSandbox } from "./sandbox-C5LFoJMf.mjs";
2
2
  import { t as StandardSchemaV1 } from "./standard-schema-Fo_vCAZh.mjs";
3
3
  //#region src/runtime/env-public.d.ts
4
4
  type AnyValidator = StandardSchemaV1<unknown, unknown>;
@@ -1,5 +1,6 @@
1
1
  import { n as ofetch, t as FetchError } from "./fetch-error-Dj3crt0e.mjs";
2
2
  import { t as interpolateRouteParams } from "./route-url-CG7U-cRN.mjs";
3
+ import { n as asUsageLimit, r as limitFromResponse } from "./limits-D0vD1M9A.mjs";
3
4
  //#region src/runtime/fetch-stream.ts
4
5
  /**
5
6
  * Consume an SSE endpoint as an async generator of text chunks.
@@ -30,6 +31,10 @@ async function* fetchStream(path, options) {
30
31
  signal: options?.signal,
31
32
  baseURL: options?.baseURL,
32
33
  responseType: "stream"
34
+ }).catch(async (error) => {
35
+ const response = error && typeof error === "object" && "response" in error ? error.response : null;
36
+ if (response instanceof Response) throw await limitFromResponse(response, "ai") ?? error;
37
+ throw error;
33
38
  }))._data;
34
39
  if (!body) return;
35
40
  const reader = body.getReader();
@@ -39,11 +44,13 @@ async function* fetchStream(path, options) {
39
44
  const terminal = (data) => {
40
45
  if (event !== "void:error" && event !== "void:limit") return;
41
46
  let message = "Generation was interrupted.";
47
+ let limit = null;
42
48
  try {
43
49
  const body = JSON.parse(data);
50
+ if (event === "void:limit") limit = asUsageLimit(body);
44
51
  if (typeof body.message === "string") message = body.message;
45
52
  } catch {}
46
- throw new FetchError(message);
53
+ throw limit ?? new FetchError(message);
47
54
  };
48
55
  try {
49
56
  while (true) {
@@ -4,7 +4,7 @@ import { m as readConfig, u as getDatabaseDialect } from "./config-Br_JZD6u.mjs"
4
4
  import { n as readJournal, t as collectMigrations } from "./collect-DiTn9yr6.mjs";
5
5
  import { n as ensureProjectTsconfig } from "./project-tsconfig-B8GeM0RM.mjs";
6
6
  import { H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
7
- import { r as listDrizzleArtifacts, t as assertJournalCoherence } from "./validate-ctOrgiS3.mjs";
7
+ import { r as listDrizzleArtifacts, t as assertJournalCoherence } from "./validate-ymhap6M_.mjs";
8
8
  import { t as writeDrizzleConfig } from "./config-D8MOgiQV.mjs";
9
9
  import { t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-BV4AzNul.mjs";
10
10
  import { existsSync, mkdirSync, readFileSync, readdirSync, unlinkSync, writeFileSync } from "node:fs";
@@ -0,0 +1,2 @@
1
+ import { r as runGenCommand } from "./gen-BhDlTpwW.mjs";
2
+ export { runGenCommand };
@@ -1,8 +1,8 @@
1
- import { r as readProjectConfig } from "./project-BkbfDs0V.mjs";
2
- import { c as getToken, n as createCodeChallenge, r as createCodeVerifier, t as awaitBrowserCallback, u as openBrowser } from "./auth-7wuZ5ob8.mjs";
1
+ import { r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
+ import { c as getToken, n as createCodeChallenge, r as createCodeVerifier, t as awaitBrowserCallback, u as openBrowser } from "./auth-D52yG7hl.mjs";
3
3
  import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
4
- import { c as platformErrorMessage, n as PlatformApiError, r as PlatformClient, s as parsePlatformErrorBody } from "./client-RsPo8wsP.mjs";
5
- import { c as import_picocolors } from "./output-BBsUwdyT.mjs";
4
+ import { c as platformErrorMessage, n as PlatformApiError, r as PlatformClient, s as parsePlatformErrorBody } from "./client-mC-dFGDD.mjs";
5
+ import { c as import_picocolors } from "./output-BvdaehtE.mjs";
6
6
  import { r as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-BG5ORGID.mjs";
7
7
  import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
8
8
  import { randomBytes } from "node:crypto";
@@ -1,4 +1,4 @@
1
- import { l as VoidPlatformSandbox } from "./sandbox-XZAqzFlG.mjs";
1
+ import { l as VoidPlatformSandbox } from "./sandbox-C5LFoJMf.mjs";
2
2
  import { t as StandardSchemaV1 } from "./standard-schema-Fo_vCAZh.mjs";
3
3
  import { n as HeadDescriptor } from "./head-Do8P4puT.mjs";
4
4
  import { r as AuthUser, t as AuthSession } from "./auth-DkcFflXV.mjs";
@@ -1,8 +1,8 @@
1
1
  import { a as join } from "./dist-BVqXeR_h.mjs";
2
- import { B as note, H as outro } from "./prompts-6OSVA7DJ.mjs";
2
+ import { H as outro } from "./prompts-6OSVA7DJ.mjs";
3
3
  import { n as getPackageDir } from "./agents-B_pX_HmQ.mjs";
4
- import { c as import_picocolors, s as helpLine, t as categoryTitle, u as sectionTitle } from "./output-BBsUwdyT.mjs";
5
- import { n as operatorGroups, t as operatorCommands } from "./operator-args-CAVcmwUt.mjs";
4
+ import { c as import_picocolors, d as sectionTitle, l as note, s as helpLine, t as categoryTitle } from "./output-BvdaehtE.mjs";
5
+ import { n as operatorGroups, t as operatorCommands } from "./operator-args-DdY54Bgb.mjs";
6
6
  import { readFileSync } from "node:fs";
7
7
  //#region src/cli/ascii.ts
8
8
  const asciiArts = [
@@ -42,7 +42,7 @@ function operatorHelpTree() {
42
42
  usage: entry.usage ?? [`void platform ${group} ${entry.action}${entry.positional?.map((name) => entry.optionalPositional ? ` [${name}]` : ` <${name}>`).join("") ?? ""} [options]`],
43
43
  options: [
44
44
  {
45
- command: "--connection <id-or-url>",
45
+ command: "--connection <slug-or-url>",
46
46
  description: "Choose a registered connection; otherwise use VOID_API_URL or the active connection"
47
47
  },
48
48
  {
@@ -91,7 +91,7 @@ function operatorHelpTree() {
91
91
  }
92
92
  const HELP_TREE = {
93
93
  connect: {
94
- summary: "Connect this project to Cloudflare or an existing Void platform.",
94
+ summary: "Connect this project to Cloudflare or an existing Void platform. Platform hostnames default to HTTPS.",
95
95
  usage: ["void connect [url] [--platform <cloudflare|void>] [--no-login]"],
96
96
  options: [{
97
97
  command: "--platform <cloudflare|void>",
@@ -106,7 +106,7 @@ const HELP_TREE = {
106
106
  description: "Choose a destination and sign in"
107
107
  },
108
108
  {
109
- command: "void connect https://platform.example.com",
109
+ command: "void connect platform.example.com",
110
110
  description: "Join a Void platform"
111
111
  },
112
112
  {
@@ -416,7 +416,7 @@ const HELP_TREE = {
416
416
  ],
417
417
  options: [
418
418
  {
419
- command: "--connection <id-or-url>",
419
+ command: "--connection <slug-or-url>",
420
420
  description: "Select a registered platform"
421
421
  },
422
422
  {
@@ -504,7 +504,7 @@ const HELP_TREE = {
504
504
  ],
505
505
  options: [
506
506
  {
507
- command: "--connection <id-or-url>",
507
+ command: "--connection <slug-or-url>",
508
508
  description: "Select a registered platform"
509
509
  },
510
510
  {
@@ -574,7 +574,7 @@ const HELP_TREE = {
574
574
  } }
575
575
  },
576
576
  list: basicSubcommand("List installed and connected platforms.", "void platform list"),
577
- use: basicSubcommand("Select the default Void platform.", "void platform use [id]"),
577
+ use: basicSubcommand("Select the default Void platform by installation slug, name, saved ID, or API URL.", "void platform use [id]"),
578
578
  status: basicSubcommand("Inspect a platform and its health.", "void platform status [id]"),
579
579
  discover: {
580
580
  summary: "Recover owned platform installations from Cloudflare.",
@@ -719,6 +719,10 @@ const HELP_TREE = {
719
719
  command: "--purge-data",
720
720
  description: "Delete installer-owned data even when it contains apps"
721
721
  },
722
+ {
723
+ command: "--purge-resources",
724
+ description: "Delete every resource the installation created (includes --purge-data); keeps zones, adopted resources, and PostgreSQL"
725
+ },
722
726
  {
723
727
  command: "--keep-zone",
724
728
  description: "Explicitly retain an installer-created zone"
@@ -0,0 +1,2 @@
1
+ import { r as printHelpPage } from "./help-Bv44e2tm.mjs";
2
+ export { printHelpPage };
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { n as HeadDescriptor } from "./head-Do8P4puT.mjs";
2
2
  import { r as AuthUser } from "./auth-DkcFflXV.mjs";
3
- import { C as defer, E as ValidatorSlots, S as InferProps, T as HandlerInput, _ as defineQueue, a as CloudEnv, b as Deferred, c as QueueRetryOptions, d as TypedQueueHandler, f as VoidAssetRewriteError, g as defineMiddleware, h as defineHead, i as CloudContextVariables, l as RenderAssetTags, m as defineHandler, o as QueueBatch, p as basicAuth, r as CloudContext, s as QueueMessage, t as BasicAuthOptions, u as TypedHandler, v as defineRender, x as DeferredState, y as defineScheduled } from "./handler-CZ4nAylQ.mjs";
3
+ import { C as defer, E as ValidatorSlots, S as InferProps, T as HandlerInput, _ as defineQueue, a as CloudEnv, b as Deferred, c as QueueRetryOptions, d as TypedQueueHandler, f as VoidAssetRewriteError, g as defineMiddleware, h as defineHead, i as CloudContextVariables, l as RenderAssetTags, m as defineHandler, o as QueueBatch, p as basicAuth, r as CloudContext, s as QueueMessage, t as BasicAuthOptions, u as TypedHandler, v as defineRender, x as DeferredState, y as defineScheduled } from "./handler-BeK3weD4.mjs";
4
4
  import { t as QueueMap } from "./queues-BWKt1Xo4.mjs";
5
5
  import { PluginConfig } from "@cloudflare/vite-plugin";
6
6
  import { Plugin } from "vite";
package/dist/index.mjs CHANGED
@@ -7,21 +7,21 @@ import { n as loadVoidAuthConfig } from "./config-DPByhVck.mjs";
7
7
  import { d as isNodeTarget, m as readConfig, u as getDatabaseDialect } from "./config-Br_JZD6u.mjs";
8
8
  import { i as isMemberExpression, n as isIdentifier, r as isLiteral } from "./ast-CPGPjb0V.mjs";
9
9
  import { t as isRouteEnabledForEnvironment } from "./parse-filename-CUbj-1MP.mjs";
10
- import { r as scanQueuesSync, s as scanJobsSync, t as analyzeApplicationSync } from "./application-analysis-BVsVqc11.mjs";
10
+ import { r as scanQueuesSync, s as scanJobsSync, t as analyzeApplicationSync } from "./application-analysis-DC2yPvzY.mjs";
11
11
  import { a as validateSsrEntries, n as SSR_SERVER_ENTRY_RELATIVE_PATHS, o as validateSsrEntry, t as SSR_CLIENT_ENTRY_RELATIVE_PATHS } from "./entry-CF5wvH4w.mjs";
12
12
  import { r as hasEmailHandlers } from "./email--tEtMoj_.mjs";
13
- import { i as resolveLayoutIds } from "./scan-C7okrLyM.mjs";
13
+ import { i as resolveLayoutIds } from "./scan-C8dA7iM4.mjs";
14
14
  import { a as hasSandboxSqliteMigration, c as resolveSandboxConfig, i as assertSandboxNamespaceConfig, l as sandboxContainerConfig, n as DEFAULT_SANDBOX_CLASS_NAME, r as SANDBOX_MIGRATION_TAG } from "./config-C_XRIPx2.mjs";
15
- import { Ct as hasDocumentRoutes, H as selectNativeVersionMetadataBinding, J as collectPages, St as hasApiRoutes, Tt as resolveAssetRoutingPolicy, V as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV, X as hasRevalidate, Y as collectRevalidate, at as resolveDistDir, lt as resolveWorkerDirName, o as prerenderPages, s as prerenderPagesNode, u as SEND_EMAIL_BINDING, xt as generateQueueResolverSource } from "./deploy-DfsAe-T0.mjs";
15
+ import { Ct as hasDocumentRoutes, H as selectNativeVersionMetadataBinding, J as collectPages, St as hasApiRoutes, Tt as resolveAssetRoutingPolicy, V as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV, X as hasRevalidate, Y as collectRevalidate, at as resolveDistDir, lt as resolveWorkerDirName, o as prerenderPages, s as prerenderPagesNode, u as SEND_EMAIL_BINDING, xt as generateQueueResolverSource } from "./deploy-CeEbnv4b.mjs";
16
16
  import { i as voidWarn, n as voidError, r as voidLog, t as setShowTimestamp } from "./log-vqY3pqwI.mjs";
17
17
  import { n as lintDuplicateSources, r as mergeRoutingRules, t as lintDestinationSplats } from "./headers-2rKda9Y6.mjs";
18
- import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-BkbfDs0V.mjs";
18
+ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
19
19
  import { a as restoreCloudflarePreviewPointer, r as materializeCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-Bktvwtpf.mjs";
20
20
  import { D as syncWranglerDurableObjects, E as syncWranglerBindings, O as syncWranglerWebSockets, T as resolveLiveBindingConfig, _ as readExistingLiveBindingConfig, a as LIVE_MIGRATION_TAG, b as readWranglerCompat, d as ensureWranglerCompatibilityDate, f as ensureWranglerNodejsAlsFlag, g as normalizeWranglerCompatibilityFlags, h as nextDurableObjectMigrationTag, m as hasDurableObjectSqliteMigration, p as findBindingNameOwner, u as ensureWranglerCompat, w as readWranglerWebSocketTombstones } from "./wrangler-DhUerFkW.mjs";
21
- import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-Df4XpwhW.mjs";
21
+ import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./local-d1-fGxYrVD6.mjs";
22
22
  import { n as scopedAccessCredentials } from "./cf-access-TWNzXltp.mjs";
23
- import { r as ensurePlatformProxyAccess } from "./cf-access-AHKBzmuu.mjs";
24
- import { a as getApiUrl, c as getToken, o as getProxyUrl } from "./auth-7wuZ5ob8.mjs";
23
+ import { r as ensurePlatformProxyAccess } from "./cf-access-YTlqvAsk.mjs";
24
+ import { a as getApiUrl, c as getToken, o as getProxyUrl } from "./auth-D52yG7hl.mjs";
25
25
  import { n as parseDotenvFile } from "./dotenv-VQxupEUv.mjs";
26
26
  import { n as ensureProjectTsconfig, r as writeFileIfChanged } from "./project-tsconfig-B8GeM0RM.mjs";
27
27
  import { i as generateDbDts, n as generateQueueTypes, r as DRIZZLE_OPERATORS, t as generateRouteTypes } from "./route-types-Clm4WD0B.mjs";
@@ -32,7 +32,7 @@ import { n as findEnvFileForPaths, r as generateEnvTypes, t as findEnvFile } fro
32
32
  import { y as loadUserEnvFile } from "./env-validation-vBSQ8gw5.mjs";
33
33
  import { a as loadLocalEnv, o as resolveRemoteMode, r as findLegacyEnvFiles, s as stripInternalEnvKeys, t as CLIENT_ENV_PREFIX$2 } from "./env-_v349JBd.mjs";
34
34
  import { n as INTERNAL_BINDING_PREFIXES, t as INTERNAL_BINDING_EXACT_NAMES } from "./env-raw-Cx8ElDdj.mjs";
35
- import { n as completeApplicationAnalysis } from "./application-routing-B7QEjqSR.mjs";
35
+ import { n as completeApplicationAnalysis } from "./application-routing-C9khgLiS.mjs";
36
36
  import { n as generateVoidAuthDrizzleSchema, t as generateVoidAuthDatabaseModule } from "./drizzle-Beb2Am5S.mjs";
37
37
  import { n as defer } from "./defer-YsYDUoii.mjs";
38
38
  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-DghKr6dU.mjs";
@@ -502,8 +502,8 @@ function readVoidDevCredentials(root) {
502
502
  */
503
503
  async function runAiSetupPrompt(root, token, apiUrl, server) {
504
504
  const { select, text, isCancel, log } = await import("./prompts-ZAuJlyCj.mjs");
505
- const { PlatformClient } = await import("./client-B4Me-9HE.mjs");
506
- const { attachSelectedPlatform, writeProjectConfig } = await import("./project-IOjBU8R6.mjs");
505
+ const { PlatformClient } = await import("./client-BxVixJBI.mjs");
506
+ const { attachSelectedPlatform, writeProjectConfig } = await import("./project-BiaPQ7ur.mjs");
507
507
  const { inferDefaultSlug } = await import("./resolve-project-DtbidV4y.mjs");
508
508
  const client = new PlatformClient(token, apiUrl);
509
509
  let projects;
@@ -531,7 +531,7 @@ async function runAiSetupPrompt(root, token, apiUrl, server) {
531
531
  let slug;
532
532
  if (result === "__create__") {
533
533
  const { validateProjectSlug } = await import("./project-slug-DofjTFd-.mjs");
534
- const { createProjectWithSlugRetry } = await import("./create-project-C734I-Mu.mjs");
534
+ const { createProjectWithSlugRetry } = await import("./create-project-Dbb4uiN-.mjs");
535
535
  let created;
536
536
  try {
537
537
  created = await createProjectWithSlugRetry(client, inferDefaultSlug(root), async (defaultSlug) => {
@@ -1021,7 +1021,7 @@ function createPrimaryDb(d1) {
1021
1021
  const migrationsDir = paths.migrationsDir;
1022
1022
  if (!(existsSync(migrationsDir) && readdirSync(migrationsDir).some((f) => f.endsWith(".sql")))) {
1023
1023
  if (dialect === "sqlite") {
1024
- const { getApplicationTables, getMiniflareDatabasePath } = await import("./runner-CXA9Fh8h.mjs");
1024
+ const { getApplicationTables, getMiniflareDatabasePath } = await import("./runner-voIltZrY.mjs");
1025
1025
  if ((await getApplicationTables(getMiniflareDatabasePath(options.localD1PersistRoot ?? join(root, ".void"), options.localD1DatabaseId ?? "local")).catch(() => [])).length > 0) return;
1026
1026
  }
1027
1027
  voidWarn(`Schema found but no migrations in ${paths.sourceRelative("db/migrations")}/.\n \`void db push\` syncs the schema to your local DB without creating migration files.
@@ -3456,7 +3456,7 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
3456
3456
  return;
3457
3457
  }
3458
3458
  const { collectMigrations } = await import("./collect-DLyFDiKW.mjs");
3459
- const { validateMigrations } = await import("./validate-Dq_L3s0S.mjs");
3459
+ const { validateMigrations } = await import("./validate-pna7R3Pv.mjs");
3460
3460
  const allMigrations = collectMigrations(migrationsDir);
3461
3461
  const appliedNames = dialect === "mysql" ? await import("./runner-mysql-CEG5JozK.mjs").then((runner) => runner.getMySqlAppliedMigrations(url)) : await import("./runner-pg-Bh4AgZdj.mjs").then((runner) => runner.getPgAppliedMigrations(url));
3462
3462
  const appliedSet = new Set(appliedNames);
@@ -3469,9 +3469,9 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
3469
3469
  const applied = dialect === "mysql" ? await import("./runner-mysql-CEG5JozK.mjs").then((runner) => runner.runMySqlMigrations(migrationsDir, url)) : await import("./runner-pg-Bh4AgZdj.mjs").then((runner) => runner.runPgMigrations(migrationsDir, url));
3470
3470
  if (applied.length > 0) voidLog(`Applied ${applied.length} migration(s): ${applied.join(", ")}`);
3471
3471
  } else if (hasSqlMigrations) {
3472
- const { runMigrations, getMiniflareDatabasePath, getAppliedMigrations } = await import("./runner-CXA9Fh8h.mjs");
3472
+ const { runMigrations, getMiniflareDatabasePath, getAppliedMigrations } = await import("./runner-voIltZrY.mjs");
3473
3473
  const { collectMigrations } = await import("./collect-DLyFDiKW.mjs");
3474
- const { validateMigrations } = await import("./validate-Dq_L3s0S.mjs");
3474
+ const { validateMigrations } = await import("./validate-pna7R3Pv.mjs");
3475
3475
  const dbPath = getMiniflareDatabasePath(persistRoot, databaseId);
3476
3476
  const allMigrations = collectMigrations(migrationsDir);
3477
3477
  const appliedRows = await getAppliedMigrations(dbPath);
@@ -3486,7 +3486,7 @@ function migrationPlugin(root, dialect, databaseId = "local", persistRoot = join
3486
3486
  if (applied.length > 0) voidLog(`Applied ${applied.length} migration(s): ${applied.join(", ")}`);
3487
3487
  }
3488
3488
  if (auth?.enabled) {
3489
- const { runLocalVoidAuthMigrations } = await import("./node-BkyRWRx8.mjs");
3489
+ const { runLocalVoidAuthMigrations } = await import("./node-C6Q6e1Es.mjs");
3490
3490
  await runLocalVoidAuthMigrations(root, dialect, persistRoot, databaseId, auth.configPath);
3491
3491
  voidLog("Applied Better Auth migrations");
3492
3492
  }
@@ -4345,7 +4345,7 @@ function routingPlugin(root, options) {
4345
4345
  const migrationsDir = paths.migrationsDir;
4346
4346
  if (existsSync(migrationsDir) || compileOptions.auth) {
4347
4347
  const { collectMigrations } = await import("./collect-DLyFDiKW.mjs");
4348
- const { buildMigrationPlanBundle } = await import("./plan-D1Q5rf-r.mjs");
4348
+ const { buildMigrationPlanBundle } = await import("./plan-COtUvdMA.mjs");
4349
4349
  const migrations = existsSync(migrationsDir) ? collectMigrations(migrationsDir) : [];
4350
4350
  const dialect = getDatabaseDialect(readConfig(root));
4351
4351
  compileOptions.migrationHandlerPath = resolveFile(dialect === "postgresql" ? "#self/runtime/migration-handler-pg" : dialect === "mysql" ? "#self/runtime/migration-handler-mysql" : "#self/runtime/migration-handler");
@@ -5151,6 +5151,18 @@ function voidPlugin(options) {
5151
5151
  }
5152
5152
  }
5153
5153
  } : void 0;
5154
+ const vinextWorkerEntry = framework === "vinext-app" || framework === "vinext-pages" ? {
5155
+ name: "void:vinext-worker-entry",
5156
+ enforce: "post",
5157
+ configEnvironment(name, environmentConfig) {
5158
+ if (name !== viteEnvironment.name) return;
5159
+ environmentConfig.build ??= {};
5160
+ environmentConfig.build.rolldownOptions = {
5161
+ ...environmentConfig.build.rolldownOptions,
5162
+ input: { index: "virtual:cloudflare/worker-entry" }
5163
+ };
5164
+ }
5165
+ } : void 0;
5154
5166
  return [
5155
5167
  createCloudflareBuiltinsExternalPlugin(),
5156
5168
  createWorkerEnvironmentSanitizerPlugin([viteEnvironment.name, ...viteEnvironment.childEnvironments ?? []]),
@@ -5174,6 +5186,7 @@ function voidPlugin(options) {
5174
5186
  }),
5175
5187
  migrationPlugin(root, dialect, localD1.databaseId, localD1.persistRoot),
5176
5188
  ...vinextCompat ? [vinextCompat] : [],
5189
+ ...vinextWorkerEntry ? [vinextWorkerEntry] : [],
5177
5190
  frameworkBuildWrapperPlugin,
5178
5191
  frameworkTriggersPlugin(root, { devTriggerToken }),
5179
5192
  devTriggersHintPlugin(root, {
@@ -1,7 +1,7 @@
1
1
  import { a as join, l as relative } from "./dist-BVqXeR_h.mjs";
2
2
  import { a as deriveWebSocketClassNameFromName, o as inferWebSocketResourceName } from "./plugin-inference-CXWnn79A.mjs";
3
3
  import { m as readConfig } from "./config-Br_JZD6u.mjs";
4
- import { a as inferDurableResourceName, i as deriveDurableResourceIdentity, t as analyzeApplicationSync } from "./application-analysis-BVsVqc11.mjs";
4
+ import { a as inferDurableResourceName, i as deriveDurableResourceIdentity, t as analyzeApplicationSync } from "./application-analysis-DC2yPvzY.mjs";
5
5
  import { n as VOID_LOCK_FILE } from "./cloudflare-config-Bktvwtpf.mjs";
6
6
  import { existsSync, readFileSync } from "node:fs";
7
7
  import { isRecord } from "@void/deploy-core";
@@ -2,23 +2,24 @@ import { a as join, i as isAbsolute, l as relative, n as dirname, t as basename,
2
2
  import { r as detectFramework } from "./plugin-inference-CXWnn79A.mjs";
3
3
  import { n as readProjectPaths, o as TYPED_CONFIG_FILE } from "./project-paths-GgcMozYz.mjs";
4
4
  import { m as readConfig, u as getDatabaseDialect } from "./config-Br_JZD6u.mjs";
5
- import { l as writeProjectConfig, n as readDeploymentPlatform, r as readProjectConfig, s as writeDeploymentPlatform, t as attachSelectedPlatform } from "./project-BkbfDs0V.mjs";
5
+ import { l as writeProjectConfig, n as readDeploymentPlatform, r as readProjectConfig, s as writeDeploymentPlatform, t as attachSelectedPlatform } from "./project-DQstYTxO.mjs";
6
6
  import { r as materializeCloudflareConfig } from "./cloudflare-config-Bktvwtpf.mjs";
7
7
  import { A as writeProvisionedWranglerConfig, i as LATEST_KNOWN_COMPAT_DATE } from "./wrangler-DhUerFkW.mjs";
8
- import { c as getToken } from "./auth-7wuZ5ob8.mjs";
8
+ import { c as getToken } from "./auth-D52yG7hl.mjs";
9
9
  import { n as parseDotenvFile, t as expandDotenv } from "./dotenv-VQxupEUv.mjs";
10
10
  import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-B8GeM0RM.mjs";
11
11
  import { t as MagicString } from "./dist-AoCzRTJE.mjs";
12
- import { A as confirm, B as note, H as outro, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
12
+ import { A as confirm, H as outro, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./prompts-6OSVA7DJ.mjs";
13
13
  import { n as getPackageDir, t as detectAgents } from "./agents-B_pX_HmQ.mjs";
14
- import { r as PlatformClient } from "./client-RsPo8wsP.mjs";
14
+ import { r as PlatformClient } from "./client-mC-dFGDD.mjs";
15
15
  import { i as migrateFrameworkAdapterPaths, t as migrateLegacyVoidConfig } from "./migrate-CV1on-yJ.mjs";
16
16
  import { o as formatProjectCommand } from "./cloudflare-process-B-wekeR6.mjs";
17
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-eAPgYq35.mjs";
17
+ import { l as note } from "./output-BvdaehtE.mjs";
18
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-B2kk9Q0o.mjs";
18
19
  import { t as writeDrizzleConfig } from "./config-D8MOgiQV.mjs";
19
20
  import { n as writeVoidProjectConfig, t as canRewriteVoidProjectConfig } from "./config-write-B1f88wJA.mjs";
20
- import { t as promptForLoginToken } from "./login-pWQHYVu2.mjs";
21
- import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-D7vSWMvV.mjs";
21
+ import { t as promptForLoginToken } from "./login-DFuo-RWO.mjs";
22
+ import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-DbKtQb_4.mjs";
22
23
  import { t as connectCloudflare } from "./cloudflare-connect-CuhRgk3k.mjs";
23
24
  import { n as findInstalledYarnPnpRuntime, r as hasLocalLockfile, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-BV4AzNul.mjs";
24
25
  import { createRequire } from "node:module";
@@ -1932,7 +1933,7 @@ async function ensureVoidPlatformConnection(root) {
1932
1933
  let selectedApiUrl = null;
1933
1934
  let promptedForPlatform = false;
1934
1935
  try {
1935
- const { getApiUrl, getSiteDomain } = await import("./auth-CdgZ9uag.mjs");
1936
+ const { getApiUrl, getSiteDomain } = await import("./auth-B60QDbjg.mjs");
1936
1937
  selectedApiUrl = getApiUrl(root);
1937
1938
  getSiteDomain(root);
1938
1939
  } catch (error) {
@@ -2712,7 +2713,7 @@ async function runInitCommand(root, initArgs) {
2712
2713
  let shouldSetupGithub = targeted ? initArgs?.github === true : deploymentPlatform !== "none";
2713
2714
  if (shouldSetupGithub && !githubStepSkipForSubpackage && deploymentPlatform !== "cloudflare" && deploymentPlatform !== "none") {
2714
2715
  if (!voidPlatformDiscovery) {
2715
- const { getApiUrl } = await import("./auth-CdgZ9uag.mjs");
2716
+ const { getApiUrl } = await import("./auth-B60QDbjg.mjs");
2716
2717
  voidPlatformDiscovery = await discoverPlatform(getApiUrl(root));
2717
2718
  }
2718
2719
  if (!voidPlatformDiscovery.capabilities.githubActions) {