void 1.1.11 → 1.1.12

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 (152) hide show
  1. package/dist/{account-cmd-R35a4Oa8.mjs → account-cmd-Cj6sCMTk.mjs} +4 -4
  2. package/dist/{auth-link-VHmiKZmP.mjs → auth-link-Dj7lAC_K.mjs} +4 -4
  3. package/dist/{auth-router-O_Wrs5kg.mjs → auth-router-CNsMOFCa.mjs} +2 -2
  4. package/dist/{build-cmd-CMZiMn46.mjs → build-cmd-ByhegwRC.mjs} +2 -2
  5. package/dist/{cache-TZ5Ab3d7.mjs → cache-CEFb5ban.mjs} +2 -2
  6. package/dist/{cancel-deploy-DXoR6oC3.mjs → cancel-deploy-CaARY26n.mjs} +2 -2
  7. package/dist/{cf-build-output-Bc8i3dzE.mjs → cf-build-output-ChEKWan2.mjs} +71 -7
  8. package/dist/cf-build-output-Dcmxa-Zm.mjs +1 -0
  9. package/dist/{cf-user-agent-ChjQp2MU.mjs → cf-command-values-b8OqDoo9.mjs} +5 -16
  10. package/dist/cf-user-agent-BkEHPDLA.mjs +16 -0
  11. package/dist/cli/cli.mjs +135 -31
  12. package/dist/cli/cloudflare-operation-process.mjs +46 -9
  13. package/dist/{client-GuSO3v_x.mjs → client-BdzxubTS.mjs} +57 -12
  14. package/dist/client-DAnfyMe9.mjs +1 -0
  15. package/dist/{cloudflare-cmd-ZSErUl6Y.mjs → cloudflare-cmd-D_2-Q-_i.mjs} +1 -1
  16. package/dist/{cloudflare-operations-Cm8lVx7W.mjs → cloudflare-operations-BFLCpUCV.mjs} +1 -1
  17. package/dist/{cloudflare-operations-DH3GedbV.mjs → cloudflare-operations-D5PLrOqD.mjs} +14 -4
  18. package/dist/{connect-yQuLbuiJ.mjs → connect-C4_m2moF.mjs} +4 -4
  19. package/dist/{create-project-CGOo_OL_.mjs → create-project-CvuYDD-l.mjs} +1 -1
  20. package/dist/{create-project-DEEWJX_M.mjs → create-project-D8jQTwVQ.mjs} +2 -2
  21. package/dist/{db-COI-yTJE.mjs → db-BsiOAa0A.mjs} +58 -8
  22. package/dist/{delete-PgN6L_9N.mjs → delete-CAma7nFi.mjs} +2 -2
  23. package/dist/{deploy-DsW-PrRQ.mjs → deploy-D1gIPiAq.mjs} +118 -36
  24. package/dist/deploy-Dc0XsCQj.mjs +2 -0
  25. package/dist/{deploy-managed-static-Dqz06S2u.mjs → deploy-managed-static-B9KVxY3X.mjs} +64 -18
  26. package/dist/{deploy-transport-nY3vLXPL.mjs → deploy-transport-B3mtEi_q.mjs} +1 -1
  27. package/dist/deploy.d.mts +22 -1
  28. package/dist/deploy.mjs +45 -4
  29. package/dist/{domain-DKlNI0SR.mjs → domain-BAdwm-QS.mjs} +3 -3
  30. package/dist/{email-C0s3OvJk.mjs → email-MwjA7kaL.mjs} +4 -4
  31. package/dist/{env-BX2JFsgF.mjs → env-B163-G1s.mjs} +3 -3
  32. package/dist/{fetch-DHLOuPyk.d.mts → fetch-CUX0tB78.d.mts} +14 -1
  33. package/dist/fetch-CtESUYWd.mjs +26 -0
  34. package/dist/{fetch-error-Dj3crt0e.mjs → fetch-error-Bw0n-IY-.mjs} +1 -1
  35. package/dist/{fetch-stream-PGgz4uGz.mjs → fetch-stream-BspOeTAI.mjs} +1 -1
  36. package/dist/{fetch-stream-CNxOrBdP.d.mts → fetch-stream-DfkAzZf-.d.mts} +1 -1
  37. package/dist/{gen-Bj6ZkOcI.mjs → gen-CYN3wiov.mjs} +1 -1
  38. package/dist/gen-Cf-RBVg4.mjs +1 -0
  39. package/dist/{github-cmd-DQDryS-5.mjs → github-cmd-C8QsnJQs.mjs} +2 -2
  40. package/dist/{handler-_PqY82xe.d.mts → handler-D5K_yP6T.d.mts} +1 -1
  41. package/dist/{help-D49SL_lN.mjs → help-B2sFwn9b.mjs} +44 -3
  42. package/dist/help-w-xlx_kq.mjs +1 -0
  43. package/dist/index.d.mts +1 -1
  44. package/dist/index.mjs +38 -71
  45. package/dist/{init-DyTEY04s.mjs → init-DGFQMnbk.mjs} +6 -6
  46. package/dist/{link-CgOVn9EC.mjs → link-CwrfpjIM.mjs} +3 -3
  47. package/dist/{list-CUfD9RSb.mjs → list-hKoW5z-b.mjs} +3 -3
  48. package/dist/{live-DJONVlQK.d.mts → live-JheIDZKc.d.mts} +1 -1
  49. package/dist/login-08mBwZfI.mjs +1 -0
  50. package/dist/{login-BJvGW5Eu.mjs → login-f2eu2TQh.mjs} +3 -3
  51. package/dist/{logs-DeizBI4j.mjs → logs-CEWqD-_B.mjs} +3 -3
  52. package/dist/{migrate-8rk56vV8.mjs → migrate-DYfdWBXt.mjs} +1 -1
  53. package/dist/migrate-Di-4EuoE.mjs +1 -0
  54. package/dist/nitro.mjs +1 -1
  55. package/dist/operator-cmd-Bv20yLu2.mjs +1 -0
  56. package/dist/{operator-cmd-CA5QQyvE.mjs → operator-cmd-DCr_QGMH.mjs} +4 -4
  57. package/dist/{output-Ba6ZbrzY.mjs → output-CKguMgr7.mjs} +13 -1
  58. package/dist/pages/client.d.mts +2 -2
  59. package/dist/pages/client.mjs +18 -5
  60. package/dist/pages/index.d.mts +1 -1
  61. package/dist/pages/index.mjs +1 -1
  62. package/dist/pages/islands-plugin.d.mts +43 -5
  63. package/dist/pages/islands-plugin.mjs +98 -27
  64. package/dist/pages/protocol.d.mts +2 -2
  65. package/dist/pages/protocol.mjs +1 -1
  66. package/dist/pages/serialize.d.mts +2 -2
  67. package/dist/pages/serialize.mjs +1 -1
  68. package/dist/{platform-auth-config-CZaY812e.mjs → platform-auth-config-qGvEuns3.mjs} +5 -5
  69. package/dist/{platform-auth-protection-U9HCqoXv.mjs → platform-auth-protection-CyLcD6ot.mjs} +3 -3
  70. package/dist/{platform-auth-recovery-B0BV2hfV.mjs → platform-auth-recovery-B2LKI8V2.mjs} +3 -3
  71. package/dist/{platform-cmd-D9lwFpcl.mjs → platform-cmd-B2ec5eFg.mjs} +1 -1
  72. package/dist/{platform-cmd-CXrjk4fb.mjs → platform-cmd-CX7phm7V.mjs} +5 -5
  73. package/dist/{platform-domain-CXyq-68_.mjs → platform-domain-DDNK2y-4.mjs} +3 -3
  74. package/dist/{platform-lifecycle-D0TdyXbN.mjs → platform-lifecycle-3CR98Tg2.mjs} +386 -36
  75. package/dist/{platform-lifecycle-Dz2cJsLX.mjs → platform-lifecycle-CWc5gr6c.mjs} +1 -1
  76. package/dist/{platform-management-BvgbusqL.mjs → platform-management-DAE6g2QU.mjs} +1 -1
  77. package/dist/{platform-management-CnXhgxTM.mjs → platform-management-o3LCCeE4.mjs} +40 -2
  78. package/dist/{platform-plans-config-BWn1S2Rv.mjs → platform-plans-config-CBMZxCep.mjs} +1 -1
  79. package/dist/{platform-recovery-CH_fThW6.mjs → platform-recovery-Dmsg7lWA.mjs} +2 -2
  80. package/dist/{platform-setup-YvN9VQXV.mjs → platform-setup-hFbnWAVQ.mjs} +1 -1
  81. package/dist/{prepare-2XD6kh77.mjs → prepare-HKo7Rh5V.mjs} +1 -1
  82. package/dist/{project-cmd-CpLYflCH.mjs → project-cmd-8ylYGx-O.mjs} +17 -17
  83. package/dist/{project-team-CTSY7W7Q.mjs → project-team-Bvpl78we.mjs} +2 -2
  84. package/dist/{project-token-Cybtlfbl.mjs → project-token-QWHoJH2t.mjs} +2 -2
  85. package/dist/{project-zero-trust-DKOtqyvu.mjs → project-zero-trust-8tJ-RFvu.mjs} +2 -2
  86. package/dist/{protocol-B8sI8dRD.d.mts → protocol-Ssc_LhHj.d.mts} +1 -1
  87. package/dist/{protocol-RNP0u7UY.mjs → protocol-bAUUkx70.mjs} +1 -1
  88. package/dist/{provision-UcYjpTRh.mjs → provision-BgXFDv0d.mjs} +1 -1
  89. package/dist/{provision-BuifYvLc.mjs → provision-DZKYCEJg.mjs} +3 -2
  90. package/dist/{requests-Ryiazz9i.mjs → requests-Vk5Zyhcy.mjs} +2 -2
  91. package/dist/{rollback-Or0EV3rP.mjs → rollback-CH4yMQys.mjs} +9 -8
  92. package/dist/runtime/client-react.d.mts +2 -2
  93. package/dist/runtime/client-react.mjs +3 -3
  94. package/dist/runtime/client-solid.d.mts +2 -2
  95. package/dist/runtime/client-solid.mjs +3 -3
  96. package/dist/runtime/client-svelte.d.mts +2 -2
  97. package/dist/runtime/client-svelte.mjs +3 -3
  98. package/dist/runtime/client-vue.d.mts +2 -2
  99. package/dist/runtime/client-vue.mjs +3 -3
  100. package/dist/runtime/client.d.mts +2 -2
  101. package/dist/runtime/client.mjs +3 -3
  102. package/dist/runtime/fetch-server.d.mts +8 -0
  103. package/dist/runtime/fetch-server.mjs +30 -0
  104. package/dist/runtime/fetch-stream.d.mts +2 -2
  105. package/dist/runtime/fetch-stream.mjs +2 -2
  106. package/dist/runtime/fetch.d.mts +2 -2
  107. package/dist/runtime/fetch.mjs +3 -3
  108. package/dist/runtime/handler.d.mts +1 -1
  109. package/dist/runtime/live-client.d.mts +1 -1
  110. package/dist/runtime/live.d.mts +1 -1
  111. package/dist/runtime/routing.d.mts +1 -1
  112. package/dist/runtime/routing.mjs +1 -1
  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/{secret-CClHaFxm.mjs → secret-wr6Sn4Xa.mjs} +3 -3
  117. package/dist/serialize-DtR8Vwa_.d.mts +18 -0
  118. package/dist/serialize-YHvlcG3Q.mjs +31 -0
  119. package/dist/{subcommand-prompt-Bm3ZlYgA.mjs → subcommand-prompt-CNZc4XUd.mjs} +1 -1
  120. package/dist/{wrapper-BOigE1xJ.mjs → wrapper-DGsYwNi6.mjs} +2 -0
  121. package/dist/{ws-CsBNxv86.d.mts → ws-nnFnAyQb.d.mts} +1 -1
  122. package/docs/guide/deployment.md +2 -0
  123. package/docs/guide/edge/headers.md +1 -1
  124. package/docs/guide/email/receiving.md +1 -1
  125. package/docs/guide/email/sending.md +3 -3
  126. package/docs/guide/pages-routing/markdown.md +3 -1
  127. package/docs/guide/platform/administration/email.md +7 -1
  128. package/docs/guide/platform/installation/ci.md +2 -0
  129. package/docs/guide/platform/installation/credentials.md +23 -5
  130. package/docs/guide/platform/installation/maintenance.md +32 -2
  131. package/docs/guide/platform/installation/setup.md +1 -1
  132. package/docs/guide/typed-fetch.md +1 -1
  133. package/docs/integrations/cloudflare.md +1 -1
  134. package/docs/integrations/frameworks/tanstack-start.md +25 -0
  135. package/docs/reference/api/deploy.md +35 -3
  136. package/docs/reference/cli/database.md +15 -0
  137. package/docs/reference/cli/platform-installation.md +2 -0
  138. package/docs/reference/cli/project.md +4 -2
  139. package/docs/reference/cli.md +1 -0
  140. package/docs/reference/config.md +1 -1
  141. package/package.json +8 -7
  142. package/dist/cf-build-output-BU3hqdHu.mjs +0 -1
  143. package/dist/client-DrdeJgHR.mjs +0 -1
  144. package/dist/deploy-CxNgEYr4.mjs +0 -2
  145. package/dist/fetch-sAcwjzLO.mjs +0 -18
  146. package/dist/gen-DsCukhuw.mjs +0 -1
  147. package/dist/help-DOFygYi4.mjs +0 -1
  148. package/dist/login-alAlxw4S.mjs +0 -1
  149. package/dist/migrate-D2odrAmh.mjs +0 -1
  150. package/dist/operator-cmd-D7toMPJ9.mjs +0 -1
  151. package/dist/serialize-BtQyaYoC.mjs +0 -20
  152. package/dist/serialize-CfSwWfF2.d.mts +0 -10
@@ -0,0 +1,26 @@
1
+ import { n as createFetch } from "./fetch-error-Bw0n-IY-.mjs";
2
+ import { t as interpolateRouteParams } from "./route-url-BjGv_KKY.mjs";
3
+ //#region src/runtime/fetch.ts
4
+ const browserFetch = createRouteFetch((...args) => globalThis.fetch(...args));
5
+ async function fetch(path, options) {
6
+ return browserFetch(path, options);
7
+ }
8
+ /** Apply the same route interpolation and request options to browser and server transports. */
9
+ function createRouteFetch(transport) {
10
+ const client = createFetch({ fetch: transport });
11
+ return async (path, options) => {
12
+ const url = interpolateRouteParams(path, options?.params);
13
+ return client(url, {
14
+ method: options?.method ?? "GET",
15
+ body: options?.body,
16
+ query: options?.query,
17
+ headers: options?.headers,
18
+ signal: options?.signal,
19
+ baseURL: options?.baseURL,
20
+ retry: options?.retry,
21
+ timeout: options?.timeout
22
+ });
23
+ };
24
+ }
25
+ //#endregion
26
+ export { fetch as n, createRouteFetch as t };
@@ -263,4 +263,4 @@ const ofetch = createFetch({ fetch: globalThis.fetch ? (...args) => globalThis.f
263
263
  //#region src/runtime/fetch-error.ts
264
264
  const FetchError = FetchError$1;
265
265
  //#endregion
266
- export { ofetch as n, FetchError as t };
266
+ export { createFetch as n, ofetch as r, FetchError as t };
@@ -1,4 +1,4 @@
1
- import { n as ofetch, t as FetchError } from "./fetch-error-Dj3crt0e.mjs";
1
+ import { r as ofetch, t as FetchError } from "./fetch-error-Bw0n-IY-.mjs";
2
2
  import { t as interpolateRouteParams } from "./route-url-BjGv_KKY.mjs";
3
3
  import { n as asUsageLimit, r as limitFromResponse } from "./limits-D0vD1M9A.mjs";
4
4
  //#region src/runtime/fetch-stream.ts
@@ -1,4 +1,4 @@
1
- import { i as QueryOption, n as MethodsOf, r as ParamsOption, t as BodyOption } from "./fetch-DHLOuPyk.mjs";
1
+ import { i as QueryOption, n as MethodsOf, r as ParamsOption, t as BodyOption } from "./fetch-CUX0tB78.mjs";
2
2
  import { RouteMap } from "void/routes";
3
3
  //#region src/runtime/fetch-stream.d.ts
4
4
  type InputOf<P extends keyof RouteMap, M extends MethodsOf<P>> = RouteMap[P][M] extends {
@@ -3,7 +3,7 @@ import { n as readProjectPaths } from "./project-paths-DGu_QZ_Q.mjs";
3
3
  import { d as readConfig, s as getDatabaseDialect } from "./config-D26zcdKy.mjs";
4
4
  import { n as readJournal, t as collectMigrations } from "./collect-Dew86qce.mjs";
5
5
  import { K as select, L as log, O as cancel, tt as isCancel } from "./dist-BVdsO7Py.mjs";
6
- import { m as printSuccess } from "./output-Ba6ZbrzY.mjs";
6
+ import { m as printSuccess } from "./output-CKguMgr7.mjs";
7
7
  import { r as writeDrizzleConfig, t as PLACEHOLDER_DB_URL } from "./config-DC5llZaI.mjs";
8
8
  import { t as assertJournalCoherence } from "./validate-CnZPMq4q.mjs";
9
9
  import { n as drizzleKitBin, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-DLbEFMT0.mjs";
@@ -0,0 +1 @@
1
+ export { r as runGenCommand } from "./gen-CYN3wiov.mjs";
@@ -1,8 +1,8 @@
1
1
  import { r as readProjectConfig } from "./project-rqDnVsJN.mjs";
2
2
  import { c as getToken, n as createCodeChallenge, r as createCodeVerifier, t as awaitBrowserCallback, u as openBrowser } from "./auth-B6iOCjKI.mjs";
3
3
  import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./dist-BVdsO7Py.mjs";
4
- import { f as import_picocolors, l as formatUrl, m as printSuccess } from "./output-Ba6ZbrzY.mjs";
5
- import { c as platformErrorMessage, n as PlatformApiError, r as PlatformClient, s as parsePlatformErrorBody } from "./client-GuSO3v_x.mjs";
4
+ import { f as import_picocolors, l as formatUrl, m as printSuccess } from "./output-CKguMgr7.mjs";
5
+ import { c as platformErrorMessage, n as PlatformApiError, r as PlatformClient, s as parsePlatformErrorBody } from "./client-BdzxubTS.mjs";
6
6
  import { a as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-WpwkCB_c.mjs";
7
7
  import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
8
8
  import { randomBytes } from "node:crypto";
@@ -246,7 +246,7 @@ declare function defineHandler(firstMiddleware: MiddlewareFn, secondMiddleware:
246
246
  * ```
247
247
  */
248
248
  declare namespace defineHandler {
249
- function withValidator<V extends ValidatorSlots>(validators: V): <R>(handler: (c: CloudContext, input: HandlerInput<V>) => R) => TypedHandler<V, R>;
249
+ function withValidator<V extends ValidatorSlots>(validators: V): <R>(handler: (c: CloudContext, input: HandlerInput<V>) => R) => TypedHandler<V, Exclude<Awaited<R>, Response>>;
250
250
  }
251
251
  /**
252
252
  * Identity function that provides type inference for middleware.
@@ -1,5 +1,5 @@
1
1
  import { H as outro } from "./dist-BVdsO7Py.mjs";
2
- import { d as helpLine, f as import_picocolors, g as sectionTitle, l as formatUrl, p as note, t as categoryTitle } from "./output-Ba6ZbrzY.mjs";
2
+ import { d as helpLine, f as import_picocolors, g as sectionTitle, l as formatUrl, p as note, t as categoryTitle } from "./output-CKguMgr7.mjs";
3
3
  import { n as getOwnVersion } from "./agents-CuNtT0D_.mjs";
4
4
  import { n as operatorGroups, t as operatorCommands } from "./operator-args-UnE8Y2eK.mjs";
5
5
  //#region src/cli/ascii.ts
@@ -962,7 +962,14 @@ const HELP_TREE = {
962
962
  description: "Show all request traffic in the last day"
963
963
  }]
964
964
  },
965
- rollback: basicSubcommand("Roll back to a previous deployment.", "void project rollback [deployId]"),
965
+ rollback: {
966
+ summary: "Roll back to a previous deployment.",
967
+ usage: ["void project rollback [deployId] [--platform cloudflare]"],
968
+ options: [{
969
+ command: "--platform cloudflare",
970
+ description: "Roll back the Cloudflare Worker after a one-off Cloudflare deploy"
971
+ }]
972
+ },
966
973
  cancel: basicSubcommand("Cancel an active deployment.", "void project cancel [deployId]"),
967
974
  delete: {
968
975
  summary: "Delete a project and all its resources.",
@@ -1410,6 +1417,10 @@ const HELP_TREE = {
1410
1417
  command: "set-url",
1411
1418
  description: "Update the external database URL"
1412
1419
  },
1420
+ {
1421
+ command: "restore",
1422
+ description: "Restore the deployed D1 database to an earlier point (direct Cloudflare)"
1423
+ },
1413
1424
  {
1414
1425
  command: "rename-migrations",
1415
1426
  description: "Rename migrations to timestamp format"
@@ -1538,6 +1549,35 @@ const HELP_TREE = {
1538
1549
  }]
1539
1550
  },
1540
1551
  "set-url": basicSubcommand("Update the external database connection string for deployment.", "void db set-url"),
1552
+ restore: {
1553
+ summary: "Restore the deployed D1 database of a direct Cloudflare deploy to an earlier point. Discards every later write.",
1554
+ usage: ["void db restore --bookmark <bookmark> [--platform cloudflare] [--yes]", "void db restore --timestamp <iso-time> [--platform cloudflare] [--yes]"],
1555
+ options: [
1556
+ {
1557
+ command: "--bookmark <bookmark>",
1558
+ description: "Restore point printed by deploy"
1559
+ },
1560
+ {
1561
+ command: "--timestamp <iso-time>",
1562
+ description: "Time with Z or an offset (7 days back on Workers Free, 30 on Paid)"
1563
+ },
1564
+ {
1565
+ command: "--platform cloudflare",
1566
+ description: "Restore after a one-off deploy with --platform cloudflare"
1567
+ },
1568
+ {
1569
+ command: "--yes",
1570
+ description: "Skip the confirmation prompt (required without a TTY)"
1571
+ }
1572
+ ],
1573
+ examples: [{
1574
+ command: "void db restore --bookmark 00000085-0000024c-00004ef2-0a83ea2f",
1575
+ description: "Undo the migrations of a deploy"
1576
+ }, {
1577
+ command: "void db restore --timestamp 2026-10-16T09:30:00Z",
1578
+ description: "Restore the database to a time"
1579
+ }]
1580
+ },
1541
1581
  "rename-migrations": basicSubcommand("Rename migrations to timestamp-based format.", "void db rename-migrations")
1542
1582
  }
1543
1583
  },
@@ -1755,7 +1795,8 @@ function printGlobalHelp() {
1755
1795
  ...globalCommandLines("db", {
1756
1796
  execute: "execute <sql>",
1757
1797
  export: "export [--output <path>]",
1758
- seed: "seed [--file <path>]"
1798
+ seed: "seed [--file <path>]",
1799
+ restore: "restore --bookmark <b>"
1759
1800
  }),
1760
1801
  ...globalOptionLines(["db", "execute"]),
1761
1802
  ...globalOptionLines(["db", "export"]),
@@ -0,0 +1 @@
1
+ export { r as printHelpPage } from "./help-B2sFwn9b.mjs";
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { n as HeadDescriptor } from "./head-C8K_iGe6.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-_PqY82xe.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-D5K_yP6T.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
@@ -1,5 +1,5 @@
1
1
  import { n as __toESM } from "./rolldown-runtime-DXIUcv95.mjs";
2
- import { a as join, c as resolve, n as dirname, o as normalize, s as relative } from "./dist-ipQi0Q8y.mjs";
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
3
  import { t as require_picocolors } from "./picocolors-BTps1_gs.mjs";
4
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";
5
5
  import { n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-DGu_QZ_Q.mjs";
@@ -22,7 +22,7 @@ import { n as writeLocalD1PersistState, t as resolveLocalD1Target } from "./loca
22
22
  import { n as scopedAccessCredentials } from "./cf-access-BM9G0lhO.mjs";
23
23
  import { n as ensurePlatformProxyAccess } from "./cf-access-CWP4avfP.mjs";
24
24
  import { a as getApiUrl, c as getToken, o as getProxyUrl } from "./auth-B6iOCjKI.mjs";
25
- import { m as printSuccess } from "./output-Ba6ZbrzY.mjs";
25
+ import { m as printSuccess } from "./output-CKguMgr7.mjs";
26
26
  import { r as writeFileIfChanged } from "./project-tsconfig-Itv1f4WC.mjs";
27
27
  import { n as drizzlePlugin, t as generateQueueResolverSource } from "./dispatch-BAbbn3jg.mjs";
28
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";
@@ -35,7 +35,7 @@ import { t as ASSET_EXTENSIONS } from "./routing-assets-VkrKIbxE.mjs";
35
35
  import { r as selectNativeVersionMetadataBinding, t as CLOUDFLARE_PRESERVE_BINDINGS_BUILD_ENV } from "./version-metadata-B1Bm2wSq.mjs";
36
36
  import { f as prerenderPages, n as SEND_EMAIL_BINDING, p as prerenderPagesNode } from "./email-cloudflare-etpKiITL.mjs";
37
37
  import { r as defer } from "./validation-error-Dg9Recn1.mjs";
38
- import { i as safeJsonStringify } from "./protocol-RNP0u7UY.mjs";
38
+ import { i as safeJsonStringify } from "./protocol-bAUUkx70.mjs";
39
39
  import { n as completeApplicationAnalysis } from "./application-routing-CZH66gXn.mjs";
40
40
  import { n as generateVoidAuthDrizzleSchema, t as generateVoidAuthDatabaseModule } from "./drizzle-BQfyvQKX.mjs";
41
41
  import { n as generateQueueTypes, t as generateRouteTypes } from "./route-types-BZi26DVS.mjs";
@@ -490,7 +490,7 @@ function readVoidDevCredentials(root) {
490
490
  */
491
491
  async function runAiSetupPrompt(root, token, apiUrl, server) {
492
492
  const { select, text, isCancel, log } = await import("./dist-CfgIkieS.mjs");
493
- const { PlatformClient } = await import("./client-DrdeJgHR.mjs");
493
+ const { PlatformClient } = await import("./client-DAnfyMe9.mjs");
494
494
  const { attachSelectedPlatform, writeProjectConfig } = await import("./project-zdB3fs9G.mjs");
495
495
  const { inferDefaultSlug } = await import("./resolve-project-PnhzMtY6.mjs");
496
496
  const client = new PlatformClient(token, { apiUrl });
@@ -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-CGOo_OL_.mjs");
522
+ const { createProjectWithSlugRetry } = await import("./create-project-CvuYDD-l.mjs");
523
523
  let created;
524
524
  try {
525
525
  created = await createProjectWithSlugRetry(client, inferDefaultSlug(root), async (defaultSlug) => {
@@ -2127,7 +2127,7 @@ function astroDevTriggerInjectPlugin(root) {
2127
2127
  }
2128
2128
  //#endregion
2129
2129
  //#region src/router/compile.ts
2130
- const ROUTE_URL_PATH = fileURLToPath(import.meta.resolve("#self/runtime/route-url"));
2130
+ const FETCH_SERVER_PATH = fileURLToPath(import.meta.resolve("#self/runtime/fetch-server"));
2131
2131
  const ROUTING_RUNTIME_PATH = fileURLToPath(import.meta.resolve("#self/runtime/routing"));
2132
2132
  function pushDefaultErrorPageHelpers(lines, options) {
2133
2133
  lines.push(`const __errorRenderer = __createErrorRenderer(${JSON.stringify({
@@ -2896,68 +2896,17 @@ function compileHeaderMiddleware(lines, rules) {
2896
2896
  /** Generate the server-side fetch client, which calls `app.fetch()` with the current request's credentials. */
2897
2897
  function compileWorkerClient(authClientPath, nodeTarget = false) {
2898
2898
  const envImport = nodeTarget ? "" : "import { env } from \"cloudflare:workers\";\n";
2899
- const dispatch = nodeTarget ? "const response = await app.fetch(request);" : "const executionCtx = store?.executionCtx ?? { waitUntil() {}, passThroughOnException() {} };\n const response = await app.fetch(request, env, executionCtx);";
2899
+ const dispatch = nodeTarget ? "app.fetch(request)" : "app.fetch(request, env, store?.executionCtx ?? { waitUntil() {}, passThroughOnException() {} })";
2900
2900
  return `import app, { requestContext } from "virtual:void-routes";
2901
- import { interpolateRouteParams } from ${JSON.stringify(ROUTE_URL_PATH)};
2901
+ import { createServerFetch } from ${JSON.stringify(FETCH_SERVER_PATH)};
2902
+ export { FetchError } from ${JSON.stringify(FETCH_SERVER_PATH)};
2902
2903
  ${envImport}export { auth, createAuthClient } from ${JSON.stringify(authClientPath)};
2903
2904
 
2904
- export class FetchError extends Error {
2905
- constructor(status, statusText, data) {
2906
- super(\`fetch: Request failed with status \${status}.\`);
2907
- this.name = "FetchError";
2908
- this.status = status;
2909
- this.statusText = statusText;
2910
- this.data = data;
2911
- }
2912
- }
2913
-
2914
- export async function fetch(path, options) {
2915
- let url = interpolateRouteParams(path, options?.params);
2916
-
2917
- if (options?.query) {
2918
- const qs = new URLSearchParams(options.query).toString();
2919
- if (qs) url += "?" + qs;
2920
- }
2921
-
2922
- const method = options?.method ?? "GET";
2923
- const headers = new Headers(options?.headers);
2924
-
2925
- const store = requestContext.getStore();
2926
- if (store?.request) {
2927
- const outerReq = store.request;
2928
- if (!headers.has("cookie")) {
2929
- const cookie = outerReq.headers.get("cookie");
2930
- if (cookie) headers.set("cookie", cookie);
2931
- }
2932
- if (!headers.has("authorization")) {
2933
- const auth = outerReq.headers.get("authorization");
2934
- if (auth) headers.set("authorization", auth);
2935
- }
2936
- }
2937
-
2938
- if (options?.body != null && !headers.has("content-type")) {
2939
- headers.set("content-type", "application/json");
2940
- }
2941
-
2942
- const request = new Request("${nodeTarget ? "http://localhost" : "http://worker.local"}" + url, {
2943
- method,
2944
- headers,
2945
- body: options?.body != null ? JSON.stringify(options.body) : undefined,
2946
- });
2947
-
2948
- ${dispatch}
2949
-
2950
- if (response.status === 204) return undefined;
2951
-
2952
- const contentType = response.headers.get("content-type") ?? "";
2953
- const data = contentType.includes("application/json") ? await response.json() : await response.text();
2954
-
2955
- if (!response.ok) {
2956
- throw new FetchError(response.status, response.statusText, data);
2957
- }
2958
-
2959
- return data;
2960
- }
2905
+ export const fetch = createServerFetch(
2906
+ (request, store) => ${dispatch},
2907
+ () => requestContext.getStore(),
2908
+ "${nodeTarget ? "http://localhost" : "http://worker.local"}",
2909
+ );
2961
2910
  `;
2962
2911
  }
2963
2912
  //#endregion
@@ -2970,15 +2919,32 @@ export async function fetch(path, options) {
2970
2919
  * (see `generateClassATriggerWrapper`). Production deploys go through
2971
2920
  * `cli/wrapper.ts` instead.
2972
2921
  */
2973
- function getFrameworkEntry(framework, root, devTriggerToken, dialect, notFound) {
2922
+ function getFrameworkEntry(framework, root, devTriggerToken, dialect, notFound, configuredMain) {
2974
2923
  const isBuild = isViteBuildOrPreview();
2975
2924
  if (!isBuild) writeFrameworkTriggersDispatch(root, devTriggerToken);
2976
- return generateClassATriggerWrapper(root, framework, getOriginalFrameworkEntry(framework, root), isBuild, dialect, void 0, notFound);
2925
+ return generateClassATriggerWrapper(root, framework, getOriginalFrameworkEntry(framework, root, configuredMain), isBuild, dialect, void 0, notFound);
2926
+ }
2927
+ const TANSTACK_SERVER_ENTRY = "@tanstack/react-start/server-entry";
2928
+ /**
2929
+ * Whether `main` names a file in the app rather than a package. A migrated TanStack config keeps
2930
+ * `main: "@tanstack/react-start/server-entry"`, and a package subpath may end in `.js`, so a
2931
+ * bare name counts as a file only when it exists in the app.
2932
+ */
2933
+ function isFileEntry(root, main) {
2934
+ if (main.startsWith(".") || isAbsolute(main)) return true;
2935
+ return statSync(resolve(root, main), { throwIfNoEntry: false })?.isFile() === true;
2977
2936
  }
2978
2937
  /** The framework's own server entry, before our trigger wrapper. */
2979
- function getOriginalFrameworkEntry(framework, root) {
2938
+ function getOriginalFrameworkEntry(framework, root, configuredMain) {
2980
2939
  switch (framework) {
2981
- case "tanstack-start": return "@tanstack/react-start/server-entry";
2940
+ case "tanstack-start": {
2941
+ if (configuredMain === void 0 || configuredMain === TANSTACK_SERVER_ENTRY || configuredMain === `${TANSTACK_SERVER_ENTRY}.js`) return TANSTACK_SERVER_ENTRY;
2942
+ if (typeof configuredMain !== "string" || configuredMain.trim() === "") throw new Error("config: cloudflare.main must be a non-empty Worker entry path.");
2943
+ if (!isFileEntry(root, configuredMain)) return configuredMain;
2944
+ const original = resolve(root, configuredMain);
2945
+ if (original === resolve(root, ".void", "tanstack-start-trigger-wrapper.ts")) throw new Error("config: cloudflare.main cannot point to Void's generated framework wrapper.");
2946
+ return original;
2947
+ }
2982
2948
  case "react-router": return generateReactRouterEntry(root);
2983
2949
  case "vinext-app": return "vinext/server/app-router-entry";
2984
2950
  case "vinext-pages": return generateVinextPagesEntry(root);
@@ -3030,6 +2996,7 @@ ${fetchBody}
3030
2996
  },`;
3031
2997
  const body = `// @ts-nocheck — Auto-generated by Void ${isBuild ? "for vite build" : "in dev"}. Do NOT edit.
3032
2998
  import original from ${JSON.stringify(original)};
2999
+ export * from ${JSON.stringify(original)};
3033
3000
  ${scoped ? "import { withRuntimeEnv } from \"void/_env\";\n" : ""}
3034
3001
  export default {
3035
3002
  ...original,
@@ -5209,7 +5176,7 @@ function voidPlugin(options) {
5209
5176
  }
5210
5177
  };
5211
5178
  if (framework) {
5212
- workerConfig.main = getFrameworkEntry(framework, root, devTriggerToken, dialect, config.routing?.notFound);
5179
+ workerConfig.main = getFrameworkEntry(framework, root, devTriggerToken, dialect, config.routing?.notFound, config.cloudflare?.main);
5213
5180
  let notFoundIgnoredWarned = false;
5214
5181
  const frameworkBuildWrapperPlugin = {
5215
5182
  name: "void:framework-build-wrapper",
@@ -5219,7 +5186,7 @@ function voidPlugin(options) {
5219
5186
  notFoundIgnoredWarned = true;
5220
5187
  voidWarn(`Void generates no asset routing policy for a ${framework} build, so "routing.notFound" in void.config.ts is not written to the built worker config. During a self-hosted build and direct Cloudflare deployment, it takes effect only if your own Cloudflare config declares a complete \`assets\` policy (\`binding\`, \`directory\`, \`not_found_handling\`, \`run_worker_first\`); otherwise Cloudflare's default applies. Managed \`void deploy\` supplies the policy for you.`);
5221
5188
  }
5222
- generateClassATriggerWrapper(root, framework, getOriginalFrameworkEntry(framework, root), true, dialect, resolved.build.assetsDir, config.routing?.notFound);
5189
+ generateClassATriggerWrapper(root, framework, getOriginalFrameworkEntry(framework, root, config.cloudflare?.main), true, dialect, resolved.build.assetsDir, config.routing?.notFound);
5223
5190
  }
5224
5191
  };
5225
5192
  const existingFlags = workerConfig.compatibility_flags ?? [];
@@ -9,20 +9,20 @@ import { i as LATEST_KNOWN_COMPAT_DATE, j as writeProvisionedWranglerConfig } fr
9
9
  import { i as readPackageJson, n as hasPackageDependency } from "./package-json-BjYqR-So.mjs";
10
10
  import { c as getToken } from "./auth-B6iOCjKI.mjs";
11
11
  import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./dist-BVdsO7Py.mjs";
12
- import { l as formatUrl, m as printSuccess, p as note } from "./output-Ba6ZbrzY.mjs";
12
+ import { l as formatUrl, m as printSuccess, p as note } from "./output-CKguMgr7.mjs";
13
13
  import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-Itv1f4WC.mjs";
14
14
  import { t as parseDotenvFile } from "./dotenv-CNazY3-w.mjs";
15
15
  import { r as writeDrizzleConfig, t as PLACEHOLDER_DB_URL } from "./config-DC5llZaI.mjs";
16
16
  import { n as getOwnVersion, r as getPackageDir, t as detectAgents } from "./agents-CuNtT0D_.mjs";
17
- import { r as PlatformClient } from "./client-GuSO3v_x.mjs";
18
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-DEEWJX_M.mjs";
17
+ import { r as PlatformClient } from "./client-BdzxubTS.mjs";
18
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-D8jQTwVQ.mjs";
19
19
  import { s as formatProjectCommand } from "./cloudflare-process-CZJ4viYl.mjs";
20
20
  import { i as hasLocalLockfile, n as drizzleKitBin, r as findInstalledYarnPnpRuntime, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-DLbEFMT0.mjs";
21
- import { t as promptForLoginToken } from "./login-BJvGW5Eu.mjs";
22
- import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-CXrjk4fb.mjs";
21
+ import { t as promptForLoginToken } from "./login-f2eu2TQh.mjs";
22
+ import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-CX7phm7V.mjs";
23
23
  import { t as connectCloudflare } from "./cloudflare-connect-BN-k2kD-.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-8rk56vV8.mjs";
25
+ import { i as writeVoidProjectConfig, o as migrateFrameworkAdapterPaths, r as canRewriteVoidProjectConfig, t as migrateLegacyVoidConfig } from "./migrate-DYfdWBXt.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";
@@ -1,9 +1,9 @@
1
1
  import { r as readProjectConfig, t as attachSelectedPlatform, u as writeProjectConfig } from "./project-rqDnVsJN.mjs";
2
2
  import { c as getToken, s as getSiteDomain } from "./auth-B6iOCjKI.mjs";
3
3
  import { H as outro, L as log, O as cancel } from "./dist-BVdsO7Py.mjs";
4
- import { f as import_picocolors, m as printSuccess } from "./output-Ba6ZbrzY.mjs";
5
- import { r as PlatformClient } from "./client-GuSO3v_x.mjs";
6
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-DEEWJX_M.mjs";
4
+ import { f as import_picocolors, m as printSuccess } from "./output-CKguMgr7.mjs";
5
+ import { r as PlatformClient } from "./client-BdzxubTS.mjs";
6
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-D8jQTwVQ.mjs";
7
7
  import { a as resolveProjectBySlug } from "./resolve-project-WpwkCB_c.mjs";
8
8
  //#region src/cli/link.ts
9
9
  function projectLabel(slug, root, url) {
@@ -1,8 +1,8 @@
1
1
  import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
2
2
  import { c as getToken } from "./auth-B6iOCjKI.mjs";
3
3
  import { H as outro, L as log } from "./dist-BVdsO7Py.mjs";
4
- import { _ as tablePrefix, c as formatRelativeTime, f as import_picocolors, h as sanitizeTerminalText, i as dim, o as formatCount } from "./output-Ba6ZbrzY.mjs";
5
- import { r as PlatformClient } from "./client-GuSO3v_x.mjs";
4
+ import { _ as tablePrefix, c as formatRelativeTime, f as import_picocolors, h as sanitizeTerminalText, i as dim, o as formatCount } from "./output-CKguMgr7.mjs";
5
+ import { r as PlatformClient } from "./client-BdzxubTS.mjs";
6
6
  import { a as resolveProjectBySlug } from "./resolve-project-WpwkCB_c.mjs";
7
7
  //#region src/cli/list.ts
8
8
  async function runListCommand(root, slug) {
@@ -42,7 +42,7 @@ async function runListCommand(root, slug) {
42
42
  }
43
43
  async function showCloudflareDeployments(root, slug) {
44
44
  if (slug) throw new Error("project: A project name selects a Void platform project and is not used for direct Cloudflare apps.");
45
- const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-Cm8lVx7W.mjs");
45
+ const { readCloudflareWorkerStatus, resolveCloudflareOperationContext } = await import("./cloudflare-operations-BFLCpUCV.mjs");
46
46
  const status = await readCloudflareWorkerStatus(resolveCloudflareOperationContext(root));
47
47
  if (status.versions.length === 0) {
48
48
  outro(`No deployments for ${status.workerName}.`);
@@ -1,5 +1,5 @@
1
1
  import { r as AuthUser } from "./auth-DkcFflXV.mjs";
2
- import { a as CloudEnv, r as CloudContext } from "./handler-_PqY82xe.mjs";
2
+ import { a as CloudEnv, r as CloudContext } from "./handler-D5K_yP6T.mjs";
3
3
  //#region src/runtime/live.d.ts
4
4
  type MaybePromise<T> = T | Promise<T>;
5
5
  type LiveControlRequest = {
@@ -0,0 +1 @@
1
+ export { r as selectPlatformLoginMethod } from "./login-f2eu2TQh.mjs";
@@ -1,7 +1,7 @@
1
1
  import { a as getApiUrl, c as getToken, f as removeToken, l as getTokenSource, m as savePlatformToken, p as runPlatformLogin } from "./auth-B6iOCjKI.mjs";
2
2
  import { H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./dist-BVdsO7Py.mjs";
3
- import { f as import_picocolors, l as formatUrl, m as printSuccess, r as createSpinner } from "./output-Ba6ZbrzY.mjs";
4
- import { a as isExpiredTokenError, r as PlatformClient } from "./client-GuSO3v_x.mjs";
3
+ import { f as import_picocolors, l as formatUrl, m as printSuccess, r as createSpinner } from "./output-CKguMgr7.mjs";
4
+ import { a as isExpiredTokenError, r as PlatformClient } from "./client-BdzxubTS.mjs";
5
5
  //#region src/cli/login.ts
6
6
  async function selectPlatformLoginMethod(platform, requestedId) {
7
7
  const providers = platform.authenticationProviders;
@@ -30,7 +30,7 @@ async function selectPlatformLoginMethod(platform, requestedId) {
30
30
  }
31
31
  async function promptForLoginToken(root = process.cwd(), platform) {
32
32
  const apiUrl = platform?.apiUrl ?? getApiUrl(root);
33
- const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await (await import("./platform-cmd-D9lwFpcl.mjs")).discoverPlatform(apiUrl));
33
+ const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await (await import("./platform-cmd-B2ec5eFg.mjs")).discoverPlatform(apiUrl));
34
34
  const s = createSpinner();
35
35
  s.start(`Opening browser for ${providerName} login...`);
36
36
  try {
@@ -1,15 +1,15 @@
1
1
  import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-rqDnVsJN.mjs";
2
2
  import { c as getToken } from "./auth-B6iOCjKI.mjs";
3
3
  import { $ as wrapTextWithPrefix, H as outro, L as log } from "./dist-BVdsO7Py.mjs";
4
- import { a as errorStackFrames, f as import_picocolors, i as dim, o as formatCount } from "./output-Ba6ZbrzY.mjs";
5
- import { r as PlatformClient } from "./client-GuSO3v_x.mjs";
4
+ import { a as errorStackFrames, f as import_picocolors, i as dim, o as formatCount } from "./output-CKguMgr7.mjs";
5
+ import { r as PlatformClient } from "./client-BdzxubTS.mjs";
6
6
  import { t as sanitizeTerminalLogText } from "./terminal-log-text-D9ACPOuG.mjs";
7
7
  //#region src/cli/logs.ts
8
8
  async function runLogsCommand(root, filter, range, deployment, level) {
9
9
  console.log();
10
10
  const platform = readDeploymentPlatform(root);
11
11
  if (platform === "cloudflare") {
12
- const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-Cm8lVx7W.mjs");
12
+ const { resolveCloudflareOperationContext, tailCloudflareWorker } = await import("./cloudflare-operations-BFLCpUCV.mjs");
13
13
  if (range !== "1h") log.warn("Cloudflare tail streams live logs; --range does not select historical entries.");
14
14
  if (level && level !== "all" && level !== "error") log.warn("Cloudflare tail cannot filter individual console levels; showing all invocation logs.");
15
15
  await tailCloudflareWorker(resolveCloudflareOperationContext(root), {
@@ -5,7 +5,7 @@ import { t as parseJsoncObject } from "./generated-wrangler-config-DeWj5F9Y.mjs"
5
5
  import { n as VOID_LOCK_FILE, o as seedCloudflareConfig, s as stashCloudflareDeployPointer } from "./cloudflare-config-rdFOys4X.mjs";
6
6
  import "./wrangler-C9XSzrju.mjs";
7
7
  import { L as log } from "./dist-BVdsO7Py.mjs";
8
- import { m as printSuccess } from "./output-Ba6ZbrzY.mjs";
8
+ import { m as printSuccess } from "./output-CKguMgr7.mjs";
9
9
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
10
10
  import { parseSync } from "vite";
11
11
  import { randomUUID } from "node:crypto";
@@ -0,0 +1 @@
1
+ export { n as runMigrateCommand } from "./migrate-DYfdWBXt.mjs";
package/dist/nitro.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { a as join, n as dirname } from "./dist-ipQi0Q8y.mjs";
2
2
  import { d as readConfig, s as getDatabaseDialect } from "./config-D26zcdKy.mjs";
3
3
  import { r as voidDbBundlerPlugin } from "./dispatch-BAbbn3jg.mjs";
4
- import { n as bundleWorkerSqlDriver } from "./wrapper-BOigE1xJ.mjs";
4
+ import { n as bundleWorkerSqlDriver } from "./wrapper-DGsYwNi6.mjs";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { normalizePath } from "vite";
7
7
  import { resolve } from "node:path/win32";
@@ -0,0 +1 @@
1
+ export { a as runOperatorCommand } from "./operator-cmd-DCr_QGMH.mjs";
@@ -1,4 +1,4 @@
1
- import { h as sanitizeTerminalText, m as printSuccess } from "./output-Ba6ZbrzY.mjs";
1
+ import { h as sanitizeTerminalText, m as printSuccess } from "./output-CKguMgr7.mjs";
2
2
  import { n as OperatorClient, r as OperatorClientError } from "./operator-client-C-ROjk1I.mjs";
3
3
  import { a as resolveOperatorOrigin, i as removeOperatorToken, n as readOperatorApiTokenStdin, o as saveOperatorToken, r as readOperatorToken, t as exchangeOperatorSession } from "./operator-auth-Cr2zCc-J.mjs";
4
4
  import { createHash } from "node:crypto";
@@ -163,8 +163,8 @@ async function runAuth(origin, args) {
163
163
  if (args.action === "login" || args.action === "token" && args.tokenStdin) {
164
164
  if (!args.tokenStdin && !process.stdin.isTTY) throw new OperatorClientError("Browser login requires an interactive terminal. Use --token-stdin to exchange an API session.", "interactive_login_required");
165
165
  const apiToken = args.tokenStdin ? await readOperatorApiTokenStdin() : await (async () => {
166
- const { discoverPlatform } = await import("./platform-cmd-D9lwFpcl.mjs");
167
- const { selectPlatformLoginMethod } = await import("./login-alAlxw4S.mjs");
166
+ const { discoverPlatform } = await import("./platform-cmd-B2ec5eFg.mjs");
167
+ const { selectPlatformLoginMethod } = await import("./login-08mBwZfI.mjs");
168
168
  const { runPlatformLogin } = await import("./auth-Cbqi1iVX.mjs");
169
169
  return runPlatformLogin(origin, (await selectPlatformLoginMethod(await discoverPlatform(origin), args.provider)).id, (url) => process.stderr.write(`Sign in at ${url}\n`));
170
170
  })();
@@ -344,7 +344,7 @@ async function migrateDeploymentAssets(client, origin, args) {
344
344
  }
345
345
  async function runOperatorCommand(args) {
346
346
  if (!args.action) {
347
- const { printHelpPage } = await import("./help-DOFygYi4.mjs");
347
+ const { printHelpPage } = await import("./help-w-xlx_kq.mjs");
348
348
  printHelpPage(["platform", args.group]);
349
349
  return;
350
350
  }
@@ -69,6 +69,15 @@ function createSpinner(options, isTerminal = process.stdout.isTTY === true) {
69
69
  }
70
70
  };
71
71
  }
72
+ /** The URL as the box title shows it: whole, or its longest start cut with "…". */
73
+ function shownUrl(chunk, url) {
74
+ if (chunk.includes(url)) return url;
75
+ const plain = stripVTControlCharacters(chunk);
76
+ for (let end = url.length - 1; end > 0; end--) {
77
+ const label = `${url.slice(0, end)}…`;
78
+ if (plain.includes(label)) return label;
79
+ }
80
+ }
72
81
  /** Narrowest terminal the shared box renderer can draw a note in, guide bar included. */
73
82
  const MIN_NOTE_COLUMNS = 6;
74
83
  /**
@@ -92,7 +101,10 @@ function note(...args) {
92
101
  const sized = {
93
102
  columns: needsWidthFallback ? columns > 0 ? MIN_NOTE_COLUMNS : 80 : columns,
94
103
  write(chunk) {
95
- if (header && urlTitle) chunk = chunk.replace(` ${urlTitle} `, ` ${formatUrl(urlTitle)} `);
104
+ if (header && urlTitle) {
105
+ const label = shownUrl(chunk, urlTitle);
106
+ if (label) chunk = chunk.replace(label, () => terminalLink(label, urlTitle, { fallback: false }));
107
+ }
96
108
  header = false;
97
109
  return output.write(chunk);
98
110
  }
@@ -1,5 +1,5 @@
1
1
  import { t as interpolateRouteParams } from "../route-url-BgPja1GS.mjs";
2
- import { t as PageObject } from "../protocol-B8sI8dRD.mjs";
2
+ import { t as PageObject } from "../protocol-Ssc_LhHj.mjs";
3
3
  import { n as CacheForInput, r as CacheForResult } from "../prefetch-Ce6la4EI.mjs";
4
4
  import { UsageLimitData } from "@void/edge";
5
5
  import { ActionUrl, ResolveActionBody, ResolveActionParams } from "void/routes";
@@ -196,6 +196,6 @@ export declare function createVoidRouter(config: VoidRouterConfig): Promise<{
196
196
  commitInitialRender(): void;
197
197
  }>;
198
198
  export declare function scheduleHydration(el: Element, loader: () => Promise<unknown>, props: Record<string, unknown>, strategy: string, hydrateFn: (el: Element, mod: unknown, props: Record<string, unknown>) => void | Promise<void>): void;
199
- export declare function initIslands(islands: Record<string, () => Promise<unknown>>, hydrateFn: (el: Element, mod: unknown, props: Record<string, unknown>) => void | Promise<void>): void;
199
+ export declare function initIslands(islands: Record<string, () => Promise<unknown>>, hydrateFn: (el: Element, mod: unknown, props: Record<string, unknown>, frontmatter: Record<string, unknown>) => void | Promise<void>): void;
200
200
  //#endregion
201
201
  export { type ActionErrorHandlingScope, type ActionResult, type FormMethod, type FormModel, type PageNavigationEngine, type PageNavigationResource, type PageNavigationResult, type PrefetchOptions, type VisitOptions, interpolateRouteParams };