spiracha 1.3.2 → 1.4.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 (160) hide show
  1. package/AGENTS.md +7 -1
  2. package/README.md +6 -0
  3. package/apps/ui/AGENTS.md +8 -0
  4. package/apps/ui/README.md +10 -3
  5. package/apps/ui/dist/client/assets/analytics-DK2jdvmI.js +1 -0
  6. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-DmD0sN8X.js +7 -0
  7. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-KAcXtNxI.js +1 -0
  8. package/apps/ui/dist/client/assets/antigravity-keychain-panel-BRHVjFAM.js +1 -0
  9. package/apps/ui/dist/client/assets/antigravity._workspaceKey-ByitGWki.js +1 -0
  10. package/apps/ui/dist/client/assets/antigravity._workspaceKey-CGV7amas.js +1 -0
  11. package/apps/ui/dist/client/assets/antigravity.index-DEEkjlZa.js +1 -0
  12. package/apps/ui/dist/client/assets/antigravity.index-DgW25FEV.js +1 -0
  13. package/apps/ui/dist/client/assets/badge-DfWvPfKF.js +1 -0
  14. package/apps/ui/dist/client/assets/checkbox-CdHitXWQ.js +1 -0
  15. package/apps/ui/dist/client/assets/createServerFn-CgRRVpBH.js +3 -0
  16. package/apps/ui/dist/client/assets/cursor-threads._composerId-CmBFclK8.js +1 -0
  17. package/apps/ui/dist/client/assets/cursor-threads._composerId-Ti2gTm63.js +1 -0
  18. package/apps/ui/dist/client/assets/cursor._workspaceKey-CaAZjGmm.js +1 -0
  19. package/apps/ui/dist/client/assets/cursor._workspaceKey-DzD_c6j9.js +1 -0
  20. package/apps/ui/dist/client/assets/cursor.index-CrnMwDCi.js +1 -0
  21. package/apps/ui/dist/client/assets/cursor.index-PkCFVcl4.js +2 -0
  22. package/apps/ui/dist/client/assets/{data-table-Cj-v-uyB.js → data-table-Br78_dk3.js} +2 -2
  23. package/apps/ui/dist/client/assets/delete-confirm-dialog-BHRmyLHr.js +11 -0
  24. package/apps/ui/dist/client/assets/dist-B9pyYCVU.js +1 -0
  25. package/apps/ui/dist/client/assets/dist-BhZOxAPP.js +1 -0
  26. package/apps/ui/dist/client/assets/dist-DvMS2965.js +1 -0
  27. package/apps/ui/dist/client/assets/download-Bf0QJKD3.js +1 -0
  28. package/apps/ui/dist/client/assets/dropdown-menu-Dy5cLzTy.js +1 -0
  29. package/apps/ui/dist/client/assets/es2015-BkCWttyM.js +41 -0
  30. package/apps/ui/dist/client/assets/export-dialog-C86SYHJn.js +1 -0
  31. package/apps/ui/dist/client/assets/formatters-BM9kB7ed.js +1 -0
  32. package/apps/ui/dist/client/assets/index-CPvAP-jk.js +149 -0
  33. package/apps/ui/dist/client/assets/jsx-runtime-DGeXAQPT.js +1 -0
  34. package/apps/ui/dist/client/assets/metric-card-Dplm0ZiM.js +1 -0
  35. package/apps/ui/dist/client/assets/page-header-Cwa3p6Tl.js +1 -0
  36. package/apps/ui/dist/client/assets/projects._project-Ckf6muWZ.js +1 -0
  37. package/apps/ui/dist/client/assets/projects._project-DSDwH4NF.js +1 -0
  38. package/apps/ui/dist/client/assets/projects.index-DEfhWqa8.js +1 -0
  39. package/apps/ui/dist/client/assets/projects.index-V5ibNZII.js +3 -0
  40. package/apps/ui/dist/client/assets/react-dom-DL96Jor4.js +1 -0
  41. package/apps/ui/dist/client/assets/refresh-ccw-BgKjOiA6.js +1 -0
  42. package/apps/ui/dist/client/assets/reload-error-panel-AHqu0akK.js +1 -0
  43. package/apps/ui/dist/client/assets/routes-Df2tgpyd.js +1 -0
  44. package/apps/ui/dist/client/assets/scroll-text-fM0sMOB3.js +1 -0
  45. package/apps/ui/dist/client/assets/select-Bf2GwfPR.js +1 -0
  46. package/apps/ui/dist/client/assets/settings-5VQIzME0.js +1 -0
  47. package/apps/ui/dist/client/assets/sqlite-error-B6uZjUe8.js +1 -0
  48. package/apps/ui/dist/client/assets/styles-BhRkXgwB.css +1 -0
  49. package/apps/ui/dist/client/assets/tabs-OO4VU5KR.js +7 -0
  50. package/apps/ui/dist/client/assets/text-filter-DVAZySUS.js +2 -0
  51. package/apps/ui/dist/client/assets/threads._threadId-BB9tTsV4.js +1 -0
  52. package/apps/ui/dist/client/assets/threads._threadId-BgDhFj2I.js +1 -0
  53. package/apps/ui/dist/client/assets/useMutation-CC_B7uy5.js +1 -0
  54. package/apps/ui/dist/client/assets/useQuery-C5By6WKU.js +1 -0
  55. package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-CRW2kqj0.js +232 -0
  56. package/apps/ui/dist/server/assets/analytics-CYP_LT5Y.js +16 -0
  57. package/apps/ui/dist/server/assets/{analytics-CBNOYZwJ.js → analytics-CtpOMVMO.js} +13 -6
  58. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-BtexWY-K.js +613 -0
  59. package/apps/ui/dist/server/assets/{antigravity-conversations._conversationId-BIdYNy68.js → antigravity-conversations._conversationId-zMrR6v6R.js} +2 -2
  60. package/apps/ui/dist/server/assets/{antigravity-db-D9gW1D8G.js → antigravity-db-Bh8_U9uw.js} +11 -7
  61. package/apps/ui/dist/server/assets/{antigravity-keychain-panel-DcLyBBwd.js → antigravity-keychain-panel-CC7FLmAK.js} +1 -1
  62. package/apps/ui/dist/server/assets/{antigravity-queries-CgQhlQ7J.js → antigravity-queries-CGrJO9Vr.js} +6 -6
  63. package/apps/ui/dist/server/assets/{antigravity-server-DFUx4Khk.js → antigravity-server-CHRjVFqN.js} +11 -11
  64. package/apps/ui/dist/server/assets/{antigravity._workspaceKey-DnSlSC-C.js → antigravity._workspaceKey-B0QeYUOh.js} +2 -2
  65. package/apps/ui/dist/server/assets/{antigravity._workspaceKey-D42ixtzp.js → antigravity._workspaceKey-C3kP-qyN.js} +5 -5
  66. package/apps/ui/dist/server/assets/{antigravity.index-DZVT-cac.js → antigravity.index-CPCYkqCi.js} +2 -2
  67. package/apps/ui/dist/server/assets/{codex-queries-eOJGfHQj.js → codex-queries-CtgeZ7VL.js} +16 -14
  68. package/apps/ui/dist/server/assets/{codex-server-nrETIF--.js → codex-server-CNXSJuc2.js} +105 -120
  69. package/apps/ui/dist/server/assets/concurrency-VXtYvlGh.js +18 -0
  70. package/apps/ui/dist/server/assets/{createServerRpc-BtXIw2iP.js → createServerRpc-CF_DEwnm.js} +1 -1
  71. package/apps/ui/dist/server/assets/{createSsrRpc-COf5Zuye.js → createSsrRpc-C754NPki.js} +1 -1
  72. package/apps/ui/dist/server/assets/{cursor-db-B7agkAvM.js → cursor-db-cYZEU3WQ.js} +194 -7
  73. package/apps/ui/dist/server/assets/{cursor-queries-BMhuJeUO.js → cursor-queries-NCIM0Nat.js} +13 -11
  74. package/apps/ui/dist/server/assets/{cursor-recovery-9bJLs7vG.js → cursor-recovery-nq-kR62j.js} +1 -1
  75. package/apps/ui/dist/server/assets/{cursor-server-BgylIFgn.js → cursor-server-C3q7hrp-.js} +70 -41
  76. package/apps/ui/dist/server/assets/{cursor-threads._composerId-DXffY_CK.js → cursor-threads._composerId-BPJFWfJj.js} +2 -2
  77. package/apps/ui/dist/server/assets/cursor-threads._composerId-BkMMTQ3v.js +582 -0
  78. package/apps/ui/dist/server/assets/{cursor._workspaceKey-BP2J1x_x.js → cursor._workspaceKey-C5PdTaKB.js} +2 -2
  79. package/apps/ui/dist/server/assets/{cursor._workspaceKey-BQd0e-Pd.js → cursor._workspaceKey-Ckj7apKI.js} +11 -9
  80. package/apps/ui/dist/server/assets/{cursor.index-CQVxtCm8.js → cursor.index-DkWT-mxw.js} +2 -2
  81. package/apps/ui/dist/server/assets/{delete-confirm-dialog-PCD7S0_M.js → delete-confirm-dialog-BcBNCxWB.js} +5 -1
  82. package/apps/ui/dist/server/assets/empty-plugin-adapters-B3lHh1La.js +5 -0
  83. package/apps/ui/dist/server/assets/{export-dialog-DaPlOGFT.js → export-dialog-BItjWgkZ.js} +53 -11
  84. package/apps/ui/dist/server/assets/{projects._project-DUN3iWfg.js → projects._project-Bpbc3C-L.js} +5 -3
  85. package/apps/ui/dist/server/assets/{projects._project-Dim9Y0kD.js → projects._project-CvZho6EQ.js} +42 -12
  86. package/apps/ui/dist/server/assets/{projects.index-DjSQK5dm.js → projects.index-BkLiF2FF.js} +21 -7
  87. package/apps/ui/dist/server/assets/projects.index-DesYXwfi.js +14 -0
  88. package/apps/ui/dist/server/assets/route-search-ts4W9MJ9.js +38 -0
  89. package/apps/ui/dist/server/assets/{router-DrDgc-LD.js → router-6m-ihwqA.js} +78 -62
  90. package/apps/ui/dist/server/assets/{routes-B-GlEe2C.js → routes-Bsact1uB.js} +2 -2
  91. package/apps/ui/dist/server/assets/{routes-CNHAUMwo.js → routes-BzkJgq4W.js} +2 -2
  92. package/apps/ui/dist/server/assets/start-CI_0bSiY.js +4 -0
  93. package/apps/ui/dist/server/assets/tabs-CGA13IZM.js +502 -0
  94. package/apps/ui/dist/server/assets/{threads._threadId-CJzm4KrZ.js → threads._threadId-Bs0yuqO9.js} +2 -2
  95. package/apps/ui/dist/server/assets/threads._threadId-D2GYkVn6.js +639 -0
  96. package/apps/ui/dist/server/assets/ui-export-files-BHLX9bhN.js +83 -0
  97. package/apps/ui/dist/server/server.js +340 -218
  98. package/package.json +9 -9
  99. package/src/lib/antigravity-db.ts +20 -13
  100. package/src/lib/codex-analytics.ts +118 -18
  101. package/src/lib/codex-browser-db.ts +1 -25
  102. package/src/lib/codex-browser-export.ts +9 -69
  103. package/src/lib/cursor-db.ts +318 -7
  104. package/src/lib/cursor-exporter.ts +2 -2
  105. package/src/lib/ui-cache.ts +14 -1
  106. package/src/spiracha.ts +20 -1
  107. package/apps/ui/dist/client/assets/analytics-B_hYz65v.js +0 -1
  108. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-qiyygB7e.js +0 -1
  109. package/apps/ui/dist/client/assets/antigravity-conversations._conversationId-z1SQC2Kg.js +0 -1
  110. package/apps/ui/dist/client/assets/antigravity-keychain-panel-dYuRWtCf.js +0 -1
  111. package/apps/ui/dist/client/assets/antigravity._workspaceKey-CliqUr7o.js +0 -1
  112. package/apps/ui/dist/client/assets/antigravity._workspaceKey-CnoBzyX6.js +0 -1
  113. package/apps/ui/dist/client/assets/antigravity.index-CakfZz_E.js +0 -1
  114. package/apps/ui/dist/client/assets/antigravity.index-DY7M1KhG.js +0 -1
  115. package/apps/ui/dist/client/assets/badge-aHE9ETVe.js +0 -1
  116. package/apps/ui/dist/client/assets/checkbox-DN3XnJaA.js +0 -1
  117. package/apps/ui/dist/client/assets/cursor-threads._composerId-BMQyx8qG.js +0 -1
  118. package/apps/ui/dist/client/assets/cursor-threads._composerId-BTlaA-tV.js +0 -1
  119. package/apps/ui/dist/client/assets/cursor._workspaceKey-CrgrfevV.js +0 -1
  120. package/apps/ui/dist/client/assets/cursor._workspaceKey-bYS2syGL.js +0 -1
  121. package/apps/ui/dist/client/assets/cursor.index-CTqZMPYU.js +0 -1
  122. package/apps/ui/dist/client/assets/cursor.index-Clsz4E_e.js +0 -2
  123. package/apps/ui/dist/client/assets/delete-confirm-dialog-DTpzBiNK.js +0 -11
  124. package/apps/ui/dist/client/assets/dist-BNAn99Pu.js +0 -1
  125. package/apps/ui/dist/client/assets/download-P3Rp23Ad.js +0 -1
  126. package/apps/ui/dist/client/assets/dropdown-menu-3qB5j9nt.js +0 -1
  127. package/apps/ui/dist/client/assets/es2015-Dwm_turD.js +0 -41
  128. package/apps/ui/dist/client/assets/export-dialog-CazdrASq.js +0 -1
  129. package/apps/ui/dist/client/assets/formatters-BdnWuM1z.js +0 -1
  130. package/apps/ui/dist/client/assets/index-BVFnfS78.js +0 -22
  131. package/apps/ui/dist/client/assets/json-panel-DLkS30sQ.js +0 -1
  132. package/apps/ui/dist/client/assets/metadata-section-jnIkB7dB.js +0 -1
  133. package/apps/ui/dist/client/assets/metric-card-CBZuWLzQ.js +0 -1
  134. package/apps/ui/dist/client/assets/page-header-CnD21cPn.js +0 -1
  135. package/apps/ui/dist/client/assets/projects._project-BLszwvYL.js +0 -1
  136. package/apps/ui/dist/client/assets/projects._project-DvLxYbvk.js +0 -1
  137. package/apps/ui/dist/client/assets/projects.index-COn8woBR.js +0 -1
  138. package/apps/ui/dist/client/assets/projects.index-DYs98skV.js +0 -3
  139. package/apps/ui/dist/client/assets/refresh-ccw-BDrYXjtD.js +0 -1
  140. package/apps/ui/dist/client/assets/reload-error-panel-DLAg0AW2.js +0 -1
  141. package/apps/ui/dist/client/assets/routes-BtF5-coe.js +0 -1
  142. package/apps/ui/dist/client/assets/scroll-text-CqaFm9by.js +0 -1
  143. package/apps/ui/dist/client/assets/select-DbnpwqL6.js +0 -1
  144. package/apps/ui/dist/client/assets/settings-CGX3VleN.js +0 -1
  145. package/apps/ui/dist/client/assets/styles-Ch0r3kMZ.css +0 -1
  146. package/apps/ui/dist/client/assets/text-document-panel-DPleOmmq.js +0 -1
  147. package/apps/ui/dist/client/assets/text-filter-7M6wRo-t.js +0 -2
  148. package/apps/ui/dist/client/assets/threads._threadId-D5w76IB-.js +0 -7
  149. package/apps/ui/dist/client/assets/threads._threadId-Dx85sI9P.js +0 -1
  150. package/apps/ui/dist/client/assets/useMutation-MZ3Hr9h9.js +0 -1
  151. package/apps/ui/dist/client/assets/useQuery-Cb4V0AT0.js +0 -1
  152. package/apps/ui/dist/server/assets/__23tanstack-start-plugin-adapters-BzCA6dXo.js +0 -5
  153. package/apps/ui/dist/server/assets/_tanstack-start-manifest_v-CBbkUXw6.js +0 -227
  154. package/apps/ui/dist/server/assets/antigravity-conversations._conversationId-B9Rm4EXh.js +0 -212
  155. package/apps/ui/dist/server/assets/cursor-threads._composerId-BsxFKzoJ.js +0 -218
  156. package/apps/ui/dist/server/assets/json-panel-RYsxWFae.js +0 -16
  157. package/apps/ui/dist/server/assets/metadata-section-D6Lbc7D6.js +0 -54
  158. package/apps/ui/dist/server/assets/start-HeKLHD9b.js +0 -4
  159. package/apps/ui/dist/server/assets/text-document-panel-D8JbQWAn.js +0 -23
  160. package/apps/ui/dist/server/assets/threads._threadId-DODTYddm.js +0 -1052
@@ -4,12 +4,12 @@ import { jsx } from "react/jsx-runtime";
4
4
  import { defineHandlerCallback, renderRouterToStream } from "@tanstack/react-router/ssr/server";
5
5
  import { AsyncLocalStorage } from "node:async_hooks";
6
6
  import { PassThrough, Readable } from "node:stream";
7
- //#region ../../node_modules/.bun/@tanstack+react-start-server@1.167.8+d0e719b86e9808b5/node_modules/@tanstack/react-start-server/dist/esm/StartServer.js
7
+ //#region ../../node_modules/.bun/@tanstack+react-start-server@1.167.19+7492c01c6988791b/node_modules/@tanstack/react-start-server/dist/esm/StartServer.js
8
8
  function StartServer(props) {
9
9
  return /* @__PURE__ */ jsx(RouterProvider, { router: props.router });
10
10
  }
11
11
  //#endregion
12
- //#region ../../node_modules/.bun/@tanstack+react-start-server@1.167.8+d0e719b86e9808b5/node_modules/@tanstack/react-start-server/dist/esm/defaultStreamHandler.js
12
+ //#region ../../node_modules/.bun/@tanstack+react-start-server@1.167.19+7492c01c6988791b/node_modules/@tanstack/react-start-server/dist/esm/defaultStreamHandler.js
13
13
  var defaultStreamHandler = defineHandlerCallback(({ request, router, responseHeaders }) => renderRouterToStream({
14
14
  request,
15
15
  router,
@@ -548,7 +548,7 @@ function errorResponse(error, debug, errHeaders) {
548
548
  });
549
549
  }
550
550
  //#endregion
551
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/request-response.js
551
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/request-response.js
552
552
  var GLOBAL_EVENT_STORAGE_KEY = Symbol.for("tanstack-start:event-storage");
553
553
  var globalObj$1 = globalThis;
554
554
  if (!globalObj$1[GLOBAL_EVENT_STORAGE_KEY]) globalObj$1[GLOBAL_EVENT_STORAGE_KEY] = new AsyncLocalStorage();
@@ -603,10 +603,10 @@ function getResponse() {
603
603
  return getH3Event().res;
604
604
  }
605
605
  //#endregion
606
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/constants.js
606
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/constants.js
607
607
  var HEADERS = { TSS_SHELL: "X-TSS_SHELL" };
608
608
  //#endregion
609
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/utils.js
609
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/utils.js
610
610
  /**
611
611
  * Remove control characters that can cause open redirect vulnerabilities.
612
612
  * Characters like \r (CR) and \n (LF) can trick URL parsers into interpreting
@@ -659,12 +659,12 @@ function decodePath(path) {
659
659
  };
660
660
  }
661
661
  //#endregion
662
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/invariant.js
662
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/invariant.js
663
663
  function invariant() {
664
664
  throw new Error("Invariant failed");
665
665
  }
666
666
  //#endregion
667
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/lru-cache.js
667
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/lru-cache.js
668
668
  function createLRUCache(max) {
669
669
  const cache = /* @__PURE__ */ new Map();
670
670
  let oldest;
@@ -731,17 +731,17 @@ function createLRUCache(max) {
731
731
  };
732
732
  }
733
733
  //#endregion
734
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/not-found.js
734
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/not-found.js
735
735
  /** Determine if a value is a TanStack Router not-found error. */
736
736
  function isNotFound(obj) {
737
737
  return obj?.isNotFound === true;
738
738
  }
739
739
  //#endregion
740
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/root.js
740
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/root.js
741
741
  /** Stable identifier used for the root route in a route tree. */
742
742
  var rootRouteId = "__root__";
743
743
  //#endregion
744
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/redirect.js
744
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/redirect.js
745
745
  /**
746
746
  * Create a redirect Response understood by TanStack Router.
747
747
  *
@@ -791,7 +791,7 @@ function parseRedirect(obj) {
791
791
  if (obj !== null && typeof obj === "object" && obj.isSerializedRedirect) return redirect$1(obj);
792
792
  }
793
793
  //#endregion
794
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/rewrite.js
794
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/rewrite.js
795
795
  /** Execute a location input rewrite if provided. */
796
796
  function executeRewriteInput(rewrite, url) {
797
797
  const res = rewrite?.input?.({ url });
@@ -1012,7 +1012,7 @@ function createRandomKey() {
1012
1012
  return (Math.random() + 1).toString(36).substring(7);
1013
1013
  }
1014
1014
  //#endregion
1015
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/manifest.js
1015
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/manifest.js
1016
1016
  function getAssetCrossOrigin(assetCrossOrigin, kind) {
1017
1017
  if (!assetCrossOrigin) return;
1018
1018
  if (typeof assetCrossOrigin === "string") return assetCrossOrigin;
@@ -1060,7 +1060,7 @@ function createInlineCssPlaceholderAsset() {
1060
1060
  return { attrs: { suppressHydrationWarning: true } };
1061
1061
  }
1062
1062
  //#endregion
1063
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/ssr/constants.js
1063
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/ssr/constants.js
1064
1064
  var GLOBAL_TSR = "$_TSR";
1065
1065
  var TSR_SCRIPT_BARRIER_ID = "$tsr-stream-barrier";
1066
1066
  //#endregion
@@ -3005,7 +3005,7 @@ function Pu(e, r = {}) {
3005
3005
  }), e.t);
3006
3006
  }
3007
3007
  //#endregion
3008
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/transformer.js
3008
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/transformer.js
3009
3009
  /**
3010
3010
  * Create a strongly-typed serialization adapter for SSR hydration.
3011
3011
  * Use to register custom types with the router serializer.
@@ -3053,7 +3053,7 @@ function makeSerovalPlugin(serializationAdapter) {
3053
3053
  });
3054
3054
  }
3055
3055
  //#endregion
3056
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/RawStream.js
3056
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/RawStream.js
3057
3057
  /**
3058
3058
  * Marker class for ReadableStream<Uint8Array> that should be serialized
3059
3059
  * with base64 encoding (SSR) or binary framing (server functions).
@@ -3321,7 +3321,7 @@ function createRawStreamRPCPlugin(onRawStream) {
3321
3321
  });
3322
3322
  }
3323
3323
  //#endregion
3324
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/ShallowErrorPlugin.js
3324
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/ShallowErrorPlugin.js
3325
3325
  /**
3326
3326
  * this plugin serializes only the `message` part of an Error
3327
3327
  * this helps with serializing e.g. a ZodError which has functions attached that cannot be serialized
@@ -3401,7 +3401,7 @@ function w(e) {
3401
3401
  return t().catch(() => {}), r;
3402
3402
  }
3403
3403
  //#endregion
3404
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/seroval-plugins.js
3404
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/ssr/serializer/seroval-plugins.js
3405
3405
  var defaultSerovalPlugins = [
3406
3406
  ShallowErrorPlugin,
3407
3407
  RawStreamSSRPlugin,
@@ -3440,21 +3440,18 @@ var defaultSerovalPlugins = [
3440
3440
  })
3441
3441
  ];
3442
3442
  //#endregion
3443
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/router-manifest.js
3443
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/router-manifest.js
3444
3444
  /**
3445
3445
  * @description Returns the router manifest data that should be sent to the client.
3446
3446
  * This includes only the assets and preloads for the current route and any
3447
3447
  * special assets that are needed for the client. It does not include relationships
3448
3448
  * between routes or any other data that is not needed for the client.
3449
3449
  *
3450
- * The client entry URL is returned separately so that it can be transformed
3451
- * (e.g. for CDN rewriting) before being embedded into the `<script>` tag.
3452
- *
3453
3450
  * @param matchedRoutes - In dev mode, the matched routes are used to build
3454
3451
  * the dev styles URL for route-scoped CSS collection.
3455
3452
  */
3456
3453
  async function getStartManifest(matchedRoutes) {
3457
- const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-CBbkUXw6.js");
3454
+ const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-CRW2kqj0.js");
3458
3455
  const startManifest = tsrStartManifest();
3459
3456
  let routes = startManifest.routes;
3460
3457
  routes[rootRouteId];
@@ -3468,12 +3465,9 @@ async function getStartManifest(matchedRoutes) {
3468
3465
  if (result.preloads || result.scripts || result.css) manifestRoutes[k] = result;
3469
3466
  }
3470
3467
  return {
3471
- manifest: {
3472
- ...startManifest.scriptFormat ? { scriptFormat: startManifest.scriptFormat } : {},
3473
- ...startManifest.inlineCss ? { inlineCss: startManifest.inlineCss } : {},
3474
- routes: manifestRoutes
3475
- },
3476
- clientEntry: startManifest.clientEntry
3468
+ ...startManifest.scriptFormat ? { scriptFormat: startManifest.scriptFormat } : {},
3469
+ ...startManifest.inlineCss ? { inlineCss: startManifest.inlineCss } : {},
3470
+ routes: manifestRoutes
3477
3471
  };
3478
3472
  }
3479
3473
  //#endregion
@@ -3481,111 +3475,111 @@ async function getStartManifest(matchedRoutes) {
3481
3475
  var manifest = {
3482
3476
  "03050b86e5481024283bee890347a9da7b2493493044dcde6df989b3334d6b73": {
3483
3477
  functionName: "exportCursorThreadFn_createServerFn_handler",
3484
- importer: () => import("./assets/cursor-server-BgylIFgn.js")
3478
+ importer: () => import("./assets/cursor-server-C3q7hrp-.js")
3485
3479
  },
3486
3480
  "0814663c3bdc58135f97d210d145ef0be5ca54ef9a5f1e3030be9b1bfc901e30": {
3487
3481
  functionName: "exportThreadFn_createServerFn_handler",
3488
- importer: () => import("./assets/codex-server-nrETIF--.js")
3482
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3489
3483
  },
3490
3484
  "0c4c2059bb3a8a71939f93494402a63168932a544e55a462e42679647762f936": {
3491
3485
  functionName: "exportAntigravityArtifactsFn_createServerFn_handler",
3492
- importer: () => import("./assets/antigravity-server-DFUx4Khk.js")
3486
+ importer: () => import("./assets/antigravity-server-CHRjVFqN.js")
3493
3487
  },
3494
3488
  "164ee82cdd565ed96591a64312f0f7bd961040baf066a89d9f5636330d11360b": {
3495
3489
  functionName: "deleteProjectFn_createServerFn_handler",
3496
- importer: () => import("./assets/codex-server-nrETIF--.js")
3490
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3497
3491
  },
3498
3492
  "17afb84da4a3d5022132756ead0adaf0323660f50fc58d7f14830b01fdd59a13": {
3499
3493
  functionName: "deleteCursorThreadsFn_createServerFn_handler",
3500
- importer: () => import("./assets/cursor-server-BgylIFgn.js")
3494
+ importer: () => import("./assets/cursor-server-C3q7hrp-.js")
3501
3495
  },
3502
3496
  "229f5293a4eb8237ac97fc2c9a19c31740139aaed41a44d336d77f75584dbd90": {
3503
3497
  functionName: "getAntigravityConversationDetailFn_createServerFn_handler",
3504
- importer: () => import("./assets/antigravity-server-DFUx4Khk.js")
3498
+ importer: () => import("./assets/antigravity-server-CHRjVFqN.js")
3505
3499
  },
3506
3500
  "23fb197bac88fb9e4950ef7608cd311d67c0867e424136c8373071dc54746806": {
3507
3501
  functionName: "listCursorThreadsFn_createServerFn_handler",
3508
- importer: () => import("./assets/cursor-server-BgylIFgn.js")
3502
+ importer: () => import("./assets/cursor-server-C3q7hrp-.js")
3509
3503
  },
3510
3504
  "29727b7ad5b8fe42e83817376653e064d9fe8888799f056b2e59296b3396568b": {
3511
3505
  functionName: "deleteThreadFn_createServerFn_handler",
3512
- importer: () => import("./assets/codex-server-nrETIF--.js")
3506
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3513
3507
  },
3514
3508
  "37acb5a1f0915c7b996d6cf9682243d5a3446fe26a60f12bfacf60ce772b0f49": {
3515
3509
  functionName: "getAntigravityDecryptionStateFn_createServerFn_handler",
3516
- importer: () => import("./assets/antigravity-server-DFUx4Khk.js")
3510
+ importer: () => import("./assets/antigravity-server-CHRjVFqN.js")
3517
3511
  },
3518
3512
  "412c05e00aef3ad43905593fdfd2f566561259da7e1f5d6f1c03428ff33c6867": {
3519
3513
  functionName: "recoverProjectThreadsFn_createServerFn_handler",
3520
- importer: () => import("./assets/codex-server-nrETIF--.js")
3514
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3521
3515
  },
3522
3516
  "4712520da0f07bbd1f0907e5a162fe518516ff4caca3fd23876cc65539d87d7a": {
3523
3517
  functionName: "getAnalyticsFn_createServerFn_handler",
3524
- importer: () => import("./assets/codex-server-nrETIF--.js")
3518
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3525
3519
  },
3526
3520
  "50ab3a39f9880771d0d9b15931e46bcf0c4915077e38a7b6bf8605fde065256e": {
3527
3521
  functionName: "listAntigravityWorkspacesFn_createServerFn_handler",
3528
- importer: () => import("./assets/antigravity-server-DFUx4Khk.js")
3522
+ importer: () => import("./assets/antigravity-server-CHRjVFqN.js")
3529
3523
  },
3530
3524
  "59fb2cb4d60c8e7d47e0afcc914ee6f9d9f4bf076c8e66eab1693066753655b3": {
3531
3525
  functionName: "listProjectThreadsFn_createServerFn_handler",
3532
- importer: () => import("./assets/codex-server-nrETIF--.js")
3526
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3533
3527
  },
3534
3528
  "5da27045f7e28ded6353bc16aace284af7ef1b4010ef04d0186a6feadb466497": {
3535
3529
  functionName: "getThreadTranscriptFn_createServerFn_handler",
3536
- importer: () => import("./assets/codex-server-nrETIF--.js")
3530
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3537
3531
  },
3538
3532
  "6a3fe93f3095ec985bb39f45eacb221bd1b77a5d53cbb96fda99caa0fcce7e4e": {
3539
3533
  functionName: "listAntigravityConversationsFn_createServerFn_handler",
3540
- importer: () => import("./assets/antigravity-server-DFUx4Khk.js")
3534
+ importer: () => import("./assets/antigravity-server-CHRjVFqN.js")
3541
3535
  },
3542
3536
  "6e893e740c05aad65a8eb32901b4c39277ebf718f0ba14b04d8df989bed2f32b": {
3543
3537
  functionName: "getCursorThreadDetailFn_createServerFn_handler",
3544
- importer: () => import("./assets/cursor-server-BgylIFgn.js")
3538
+ importer: () => import("./assets/cursor-server-C3q7hrp-.js")
3545
3539
  },
3546
3540
  "72991e2b6e0adbf8d63bb8b139dad88a00b77b7030ec28ceac36c3cce7846b4c": {
3547
3541
  functionName: "getThreadSnapshotFn_createServerFn_handler",
3548
- importer: () => import("./assets/codex-server-nrETIF--.js")
3542
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3549
3543
  },
3550
3544
  "792690638a3b10035a5b7368c3d98bdc70cbfe1e36a4aa5f45b1c49b8b1025b0": {
3551
3545
  functionName: "getDashboardSummaryFn_createServerFn_handler",
3552
- importer: () => import("./assets/codex-server-nrETIF--.js")
3546
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3553
3547
  },
3554
3548
  "8fcf452a4587a4d4dc0c2f6439255e98123f23d863ca0e861403ae2a687272f2": {
3555
3549
  functionName: "listCursorWorkspacesFn_createServerFn_handler",
3556
- importer: () => import("./assets/cursor-server-BgylIFgn.js")
3550
+ importer: () => import("./assets/cursor-server-C3q7hrp-.js")
3557
3551
  },
3558
3552
  "96aa60bf7dd9b5bde415bcf3ad6f6955a975eecd9aa0516cf401cc39bebebe6c": {
3559
3553
  functionName: "deleteThreadsFn_createServerFn_handler",
3560
- importer: () => import("./assets/codex-server-nrETIF--.js")
3554
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3561
3555
  },
3562
3556
  "a6261a774fd8e76a6be777fcbb951977db16f33922519ed880097cea035e9034": {
3563
3557
  functionName: "exportAntigravityConversationFn_createServerFn_handler",
3564
- importer: () => import("./assets/antigravity-server-DFUx4Khk.js")
3558
+ importer: () => import("./assets/antigravity-server-CHRjVFqN.js")
3565
3559
  },
3566
3560
  "a9bd5d510f2d1173d2ef610dda4d59a795af17e7c2a4affaba7e1f99822b2c40": {
3567
3561
  functionName: "recoverCursorWorkspaceFn_createServerFn_handler",
3568
- importer: () => import("./assets/cursor-server-BgylIFgn.js")
3562
+ importer: () => import("./assets/cursor-server-C3q7hrp-.js")
3569
3563
  },
3570
3564
  "b4e15c006e9a277470958bb008f89b5b0acc7256109581de44cf17d587d174a5": {
3571
3565
  functionName: "exportThreadsFn_createServerFn_handler",
3572
- importer: () => import("./assets/codex-server-nrETIF--.js")
3566
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3573
3567
  },
3574
3568
  "ccefccb816ba13508f23db4e31067b3403e750225257592d3ae11071ffc3fd6f": {
3575
3569
  functionName: "listProjectsFn_createServerFn_handler",
3576
- importer: () => import("./assets/codex-server-nrETIF--.js")
3570
+ importer: () => import("./assets/codex-server-CNXSJuc2.js")
3577
3571
  },
3578
3572
  "e266948869e9a4ae03c84b8a7db1bfa945fdb440c5e1c64ae826b1302e441885": {
3579
3573
  functionName: "unlockAntigravityDecryptionFn_createServerFn_handler",
3580
- importer: () => import("./assets/antigravity-server-DFUx4Khk.js")
3574
+ importer: () => import("./assets/antigravity-server-CHRjVFqN.js")
3581
3575
  },
3582
3576
  "e9609d5ab12ea0bc4dbd3289fad95417dd01a0a719c8ee588c0b8c8a9dc80c99": {
3583
3577
  functionName: "exportCursorThreadsFn_createServerFn_handler",
3584
- importer: () => import("./assets/cursor-server-BgylIFgn.js")
3578
+ importer: () => import("./assets/cursor-server-C3q7hrp-.js")
3585
3579
  },
3586
3580
  "fc72eb7835fc18130f6d7c20e15e560320521cd01c93e08667b340bfe6b90930": {
3587
3581
  functionName: "deleteCursorWorkspaceFn_createServerFn_handler",
3588
- importer: () => import("./assets/cursor-server-BgylIFgn.js")
3582
+ importer: () => import("./assets/cursor-server-C3q7hrp-.js")
3589
3583
  }
3590
3584
  };
3591
3585
  async function getServerFnById(id, access) {
@@ -3598,7 +3592,7 @@ async function getServerFnById(id, access) {
3598
3592
  return action;
3599
3593
  }
3600
3594
  //#endregion
3601
- //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.3/node_modules/@tanstack/start-client-core/dist/esm/constants.js
3595
+ //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.12/node_modules/@tanstack/start-client-core/dist/esm/constants.js
3602
3596
  var TSS_FORMDATA_CONTEXT = "__TSS_CONTEXT";
3603
3597
  var TSS_SERVER_FUNCTION = Symbol.for("TSS_SERVER_FUNCTION");
3604
3598
  var TSS_SERVER_FUNCTION_FACTORY = Symbol.for("TSS_SERVER_FUNCTION_FACTORY");
@@ -3610,15 +3604,19 @@ var TSS_CONTENT_TYPE_FRAMED = "application/x-tss-framed";
3610
3604
  * Frame types for binary multiplexing protocol.
3611
3605
  */
3612
3606
  var FrameType = {
3607
+ /** Seroval JSON chunk (NDJSON line) */
3613
3608
  JSON: 0,
3609
+ /** Raw stream data chunk */
3614
3610
  CHUNK: 1,
3611
+ /** Raw stream end (EOF) */
3615
3612
  END: 2,
3613
+ /** Raw stream error */
3616
3614
  ERROR: 3
3617
3615
  };
3618
3616
  /** Full Content-Type header value with version parameter */
3619
3617
  var TSS_CONTENT_TYPE_FRAMED_VERSIONED = `${TSS_CONTENT_TYPE_FRAMED}; v=1`;
3620
3618
  //#endregion
3621
- //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.3/node_modules/@tanstack/start-client-core/dist/esm/safeObjectMerge.js
3619
+ //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.12/node_modules/@tanstack/start-client-core/dist/esm/safeObjectMerge.js
3622
3620
  function isSafeKey(key) {
3623
3621
  return key !== "__proto__" && key !== "constructor" && key !== "prototype";
3624
3622
  }
@@ -3645,7 +3643,7 @@ function createNullProtoObject(source) {
3645
3643
  return obj;
3646
3644
  }
3647
3645
  //#endregion
3648
- //#region ../../node_modules/.bun/@tanstack+start-storage-context@1.167.8/node_modules/@tanstack/start-storage-context/dist/esm/async-local-storage.js
3646
+ //#region ../../node_modules/.bun/@tanstack+start-storage-context@1.167.15/node_modules/@tanstack/start-storage-context/dist/esm/async-local-storage.js
3649
3647
  var GLOBAL_STORAGE_KEY = Symbol.for("tanstack-start:start-storage-context");
3650
3648
  var globalObj = globalThis;
3651
3649
  if (!globalObj[GLOBAL_STORAGE_KEY]) globalObj[GLOBAL_STORAGE_KEY] = new AsyncLocalStorage();
@@ -3659,10 +3657,10 @@ function getStartContext(opts) {
3659
3657
  return context;
3660
3658
  }
3661
3659
  //#endregion
3662
- //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.3/node_modules/@tanstack/start-client-core/dist/esm/getStartOptions.js
3660
+ //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.12/node_modules/@tanstack/start-client-core/dist/esm/getStartOptions.js
3663
3661
  var getStartOptions = () => getStartContext().startOptions;
3664
3662
  //#endregion
3665
- //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.3/node_modules/@tanstack/start-client-core/dist/esm/getStartContextServerOnly.js
3663
+ //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.12/node_modules/@tanstack/start-client-core/dist/esm/getStartContextServerOnly.js
3666
3664
  var getStartContextServerOnly = getStartContext;
3667
3665
  //#endregion
3668
3666
  //#region ../../node_modules/.bun/cookie-es@3.1.1/node_modules/cookie-es/dist/index.mjs
@@ -3708,7 +3706,7 @@ function splitSetCookieString(cookiesString) {
3708
3706
  return cookiesStrings;
3709
3707
  }
3710
3708
  //#endregion
3711
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/ssr/headers.js
3709
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/ssr/headers.js
3712
3710
  function toHeadersInstance(init) {
3713
3711
  if (init instanceof Headers) return init;
3714
3712
  else if (Array.isArray(init)) return new Headers(init);
@@ -3725,15 +3723,22 @@ function mergeHeaders(...headers) {
3725
3723
  }, new Headers());
3726
3724
  }
3727
3725
  //#endregion
3728
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/ssr/ssr-match-id.js
3726
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/ssr/ssr-match-id.js
3729
3727
  function dehydrateSsrMatchId(id) {
3730
3728
  return id.replaceAll("/", "\0");
3731
3729
  }
3732
3730
  //#endregion
3733
- //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.3/node_modules/@tanstack/start-client-core/dist/esm/createServerFn.js
3731
+ //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.12/node_modules/@tanstack/start-client-core/dist/esm/createServerFn.js
3734
3732
  var createServerFn = (options, __opts) => {
3735
3733
  const resolvedOptions = __opts || options || {};
3736
3734
  if (typeof resolvedOptions.method === "undefined") resolvedOptions.method = "GET";
3735
+ const setValidator = (validator) => {
3736
+ return createServerFn(void 0, {
3737
+ ...resolvedOptions,
3738
+ validator,
3739
+ inputValidator: validator
3740
+ });
3741
+ };
3737
3742
  const res = {
3738
3743
  options: resolvedOptions,
3739
3744
  middleware: (middleware) => {
@@ -3750,12 +3755,8 @@ var createServerFn = (options, __opts) => {
3750
3755
  res[TSS_SERVER_FUNCTION_FACTORY] = true;
3751
3756
  return res;
3752
3757
  },
3753
- inputValidator: (inputValidator) => {
3754
- return createServerFn(void 0, {
3755
- ...resolvedOptions,
3756
- inputValidator
3757
- });
3758
- },
3758
+ validator: setValidator,
3759
+ inputValidator: setValidator,
3759
3760
  handler: (...args) => {
3760
3761
  const [extractedFn, serverFn] = args;
3761
3762
  const newOptions = {
@@ -3818,7 +3819,9 @@ async function executeMiddleware$1(middlewares, env, opts) {
3818
3819
  const nextMiddleware = flattenedMiddlewares.shift();
3819
3820
  if (!nextMiddleware) return ctx;
3820
3821
  try {
3821
- if ("inputValidator" in nextMiddleware.options && nextMiddleware.options.inputValidator && env === "server") ctx.data = await execValidator(nextMiddleware.options.inputValidator, ctx.data);
3822
+ let validator = "validator" in nextMiddleware.options ? nextMiddleware.options.validator : void 0;
3823
+ if (!validator && "inputValidator" in nextMiddleware.options) validator = nextMiddleware.options.inputValidator;
3824
+ if (validator && env === "server") ctx.data = await execValidator(validator, ctx.data);
3822
3825
  let middlewareFn = void 0;
3823
3826
  if (env === "client") {
3824
3827
  if ("client" in nextMiddleware.options) middlewareFn = nextMiddleware.options.client;
@@ -3901,7 +3904,7 @@ function serverFnBaseToMiddleware(options) {
3901
3904
  return {
3902
3905
  "~types": void 0,
3903
3906
  options: {
3904
- inputValidator: options.inputValidator,
3907
+ inputValidator: options.validator ?? options.inputValidator,
3905
3908
  client: async ({ next, sendContext, fetch, ...ctx }) => {
3906
3909
  const payload = {
3907
3910
  ...ctx,
@@ -3921,20 +3924,25 @@ function serverFnBaseToMiddleware(options) {
3921
3924
  };
3922
3925
  }
3923
3926
  //#endregion
3924
- //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.3/node_modules/@tanstack/start-client-core/dist/esm/createMiddleware.js
3927
+ //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.12/node_modules/@tanstack/start-client-core/dist/esm/createMiddleware.js
3925
3928
  var createMiddleware = (options, __opts) => {
3926
3929
  const resolvedOptions = {
3927
3930
  type: "request",
3928
3931
  ...__opts || options
3929
3932
  };
3933
+ const setValidator = (validator) => {
3934
+ return createMiddleware({}, Object.assign(resolvedOptions, {
3935
+ validator,
3936
+ inputValidator: validator
3937
+ }));
3938
+ };
3930
3939
  return {
3931
3940
  options: resolvedOptions,
3932
3941
  middleware: (middleware) => {
3933
3942
  return createMiddleware({}, Object.assign(resolvedOptions, { middleware }));
3934
3943
  },
3935
- inputValidator: (inputValidator) => {
3936
- return createMiddleware({}, Object.assign(resolvedOptions, { inputValidator }));
3937
- },
3944
+ validator: setValidator,
3945
+ inputValidator: setValidator,
3938
3946
  client: (client) => {
3939
3947
  return createMiddleware({}, Object.assign(resolvedOptions, { client }));
3940
3948
  },
@@ -3944,7 +3952,7 @@ var createMiddleware = (options, __opts) => {
3944
3952
  };
3945
3953
  };
3946
3954
  //#endregion
3947
- //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.3/node_modules/@tanstack/start-client-core/dist/esm/createCsrfMiddleware.js
3955
+ //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.12/node_modules/@tanstack/start-client-core/dist/esm/createCsrfMiddleware.js
3948
3956
  var innerCreateCsrfMiddleware = (opts = {}) => {
3949
3957
  return createMiddleware().server(async (ctx) => {
3950
3958
  const csrfCtx = ctx;
@@ -3999,12 +4007,12 @@ async function getFailureResponse(opts, ctx) {
3999
4007
  return opts.failureResponse?.clone() ?? new Response("Forbidden", { status: 403 });
4000
4008
  }
4001
4009
  //#endregion
4002
- //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.3/node_modules/@tanstack/start-client-core/dist/esm/getDefaultSerovalPlugins.js
4010
+ //#region ../../node_modules/.bun/@tanstack+start-client-core@1.170.12/node_modules/@tanstack/start-client-core/dist/esm/getDefaultSerovalPlugins.js
4003
4011
  function getDefaultSerovalPlugins() {
4004
4012
  return [...(getStartOptions()?.serializationAdapters)?.map(makeSerovalPlugin) ?? [], ...defaultSerovalPlugins];
4005
4013
  }
4006
4014
  //#endregion
4007
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/frame-protocol.js
4015
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/frame-protocol.js
4008
4016
  /**
4009
4017
  * Binary frame protocol for multiplexing JSON and raw streams over HTTP.
4010
4018
  *
@@ -4166,7 +4174,7 @@ function createMultiplexedStream(jsonStream, rawStreams, lateStreamSource) {
4166
4174
  });
4167
4175
  }
4168
4176
  //#endregion
4169
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/server-functions-handler.js
4177
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/server-functions-handler.js
4170
4178
  var serovalPlugins = void 0;
4171
4179
  var FORM_DATA_CONTENT_TYPES = ["multipart/form-data", "application/x-www-form-urlencoded"];
4172
4180
  var MAX_PAYLOAD_SIZE = 1e6;
@@ -4368,7 +4376,7 @@ function isNotFoundResponse(error) {
4368
4376
  });
4369
4377
  }
4370
4378
  //#endregion
4371
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/early-hints.js
4379
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/early-hints.js
4372
4380
  var LINK_PARAM_TOKEN_RE = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;
4373
4381
  var PRELOAD_AS_VALUES = new Set([
4374
4382
  "fetch",
@@ -4618,7 +4626,7 @@ function createEarlyHintsCollector(opts) {
4618
4626
  };
4619
4627
  }
4620
4628
  //#endregion
4621
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/transformAssetUrls.js
4629
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/transformAssetUrls.js
4622
4630
  function normalizeTransformAssetResult(result) {
4623
4631
  if (typeof result === "string") return { href: result };
4624
4632
  return result;
@@ -4705,18 +4713,6 @@ function resolveTransformAssetsConfig(transform) {
4705
4713
  cache: transform.cache !== false
4706
4714
  };
4707
4715
  }
4708
- /**
4709
- * Builds the client entry `<script>` tag from a (possibly transformed) client
4710
- * entry URL.
4711
- */
4712
- function buildClientEntryScriptTag(clientEntry, scriptFormat = "module", crossOrigin) {
4713
- return { attrs: {
4714
- ...scriptFormat === "module" ? { type: "module" } : {},
4715
- async: true,
4716
- src: clientEntry,
4717
- ...crossOrigin ? { crossOrigin } : {}
4718
- } };
4719
- }
4720
4716
  function assignManifestLink(link, next) {
4721
4717
  if (typeof link === "string") return next.crossOrigin ? next : next.href;
4722
4718
  const nextLink = {
@@ -4727,28 +4723,8 @@ function assignManifestLink(link, next) {
4727
4723
  else delete nextLink.crossOrigin;
4728
4724
  return nextLink;
4729
4725
  }
4730
- function appendUniqueManifestAssetLink(target, link) {
4731
- const href = typeof link === "string" ? link : link.href;
4732
- if (target) {
4733
- for (const item of target) if ((typeof item === "string" ? item : item.href) === href) return target;
4734
- }
4735
- return [...target ?? [], link];
4736
- }
4737
- function addClientEntryToManifest(manifest, clientEntry) {
4738
- const rootRoute = manifest.routes.__root__ ?? {};
4739
- const rootScripts = rootRoute.scripts ?? [];
4740
- const scripts = rootScripts.some((script) => script.attrs?.src === clientEntry) ? rootScripts : [...rootScripts, buildClientEntryScriptTag(clientEntry, getManifestScriptFormat(manifest))];
4741
- manifest.routes = {
4742
- ...manifest.routes,
4743
- __root__: {
4744
- ...rootRoute,
4745
- preloads: appendUniqueManifestAssetLink(rootRoute.preloads, clientEntry),
4746
- scripts
4747
- }
4748
- };
4749
- }
4750
4726
  async function transformManifestAssets(source, transformFn, _opts) {
4751
- const manifest = structuredClone(source.manifest);
4727
+ const manifest = structuredClone(source);
4752
4728
  const inlineCssEnabled = _opts?.inlineCss !== false;
4753
4729
  const scriptTransforms = /* @__PURE__ */ new Map();
4754
4730
  const transformScript = (url) => {
@@ -4763,7 +4739,6 @@ async function transformManifestAssets(source, transformFn, _opts) {
4763
4739
  };
4764
4740
  if (!inlineCssEnabled) delete manifest.inlineCss;
4765
4741
  else if (manifest.inlineCss) manifest.inlineCss = await transformInlineCssStyles(manifest.inlineCss, transformFn);
4766
- addClientEntryToManifest(manifest, source.clientEntry);
4767
4742
  for (const route of Object.values(manifest.routes)) {
4768
4743
  if (route.preloads?.length) route.preloads = await Promise.all(route.preloads.map(async (link) => {
4769
4744
  const result = await transformScript(resolveManifestAssetLink(link).href);
@@ -4797,22 +4772,20 @@ async function transformManifestAssets(source, transformFn, _opts) {
4797
4772
  return manifest;
4798
4773
  }
4799
4774
  /**
4800
- * Builds a final ServerManifest from a StartManifestWithClientEntry without any
4801
- * URL transforms. Used when no transformAssets option is provided.
4775
+ * Builds a final ServerManifest without URL transforms. Used when no
4776
+ * transformAssets option is provided.
4802
4777
  *
4803
4778
  * Returns a new manifest object so the cached base manifest is never mutated.
4804
4779
  */
4805
- function buildManifestWithClientEntry(source, opts) {
4806
- const manifest = {
4807
- ...source.manifest.scriptFormat ? { scriptFormat: source.manifest.scriptFormat } : {},
4808
- ...opts?.inlineCss !== false && source.manifest.inlineCss ? { inlineCss: structuredClone(source.manifest.inlineCss) } : {},
4809
- routes: { ...source.manifest.routes }
4780
+ function buildManifest(source, opts) {
4781
+ return {
4782
+ ...source.scriptFormat ? { scriptFormat: source.scriptFormat } : {},
4783
+ ...opts?.inlineCss !== false && source.inlineCss ? { inlineCss: structuredClone(source.inlineCss) } : {},
4784
+ routes: { ...source.routes }
4810
4785
  };
4811
- addClientEntryToManifest(manifest, source.clientEntry);
4812
- return manifest;
4813
4786
  }
4814
4787
  //#endregion
4815
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/inlineCss.js
4788
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/inlineCss.js
4816
4789
  function getStaticHandlerInlineCssDefault(handlerInlineCss) {
4817
4790
  if (typeof handlerInlineCss === "function") return;
4818
4791
  return handlerInlineCss ?? true;
@@ -4823,7 +4796,7 @@ async function resolveInlineCssForRequest(opts) {
4823
4796
  return opts.handlerInlineCss ?? true;
4824
4797
  }
4825
4798
  //#endregion
4826
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/finalManifest.js
4799
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/finalManifest.js
4827
4800
  function createCachedBaseManifestLoader(loadBaseManifest) {
4828
4801
  let baseManifestPromise;
4829
4802
  return () => {
@@ -4916,7 +4889,7 @@ function getOrCreateCachedFinalManifestPromise(cachedFinalManifestPromises, cach
4916
4889
  return cacheFinalManifestPromise(cachedFinalManifestPromises, cacheKey, Promise.resolve().then(computeFinalManifest));
4917
4890
  }
4918
4891
  async function buildFinalManifest(opts) {
4919
- return opts.transformFn ? await transformManifestAssets(opts.base, opts.transformFn, { inlineCss: opts.inlineCss }) : buildManifestWithClientEntry(opts.base, { inlineCss: opts.inlineCss });
4892
+ return opts.transformFn ? await transformManifestAssets(opts.base, opts.transformFn, { inlineCss: opts.inlineCss }) : buildManifest(opts.base, { inlineCss: opts.inlineCss });
4920
4893
  }
4921
4894
  async function resolveFinalManifest(opts) {
4922
4895
  const computeFinalManifest = async () => {
@@ -4944,7 +4917,7 @@ function warmupFinalManifest(opts) {
4944
4917
  return warmupPromise;
4945
4918
  }
4946
4919
  //#endregion
4947
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/serializer/ServerFunctionSerializationAdapter.js
4920
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/serializer/ServerFunctionSerializationAdapter.js
4948
4921
  var ServerFunctionSerializationAdapter = createSerializationAdapter({
4949
4922
  key: "$TSS/serverfn",
4950
4923
  test: (v) => {
@@ -4961,10 +4934,10 @@ var ServerFunctionSerializationAdapter = createSerializationAdapter({
4961
4934
  }
4962
4935
  });
4963
4936
  //#endregion
4964
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/ssr/tsrScript.js
4937
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/ssr/tsrScript.js
4965
4938
  var tsrScript_default = "self.$_TSR={h(){this.hydrated=!0,this.c()},e(){this.streamEnded=!0,this.c()},c(){this.hydrated&&this.streamEnded&&(delete self.$_TSR,delete self.$R.tsr)},p(e){this.initialized?e():this.buffer.push(e)},buffer:[]}";
4966
4939
  //#endregion
4967
- //#region ../../node_modules/.bun/@tanstack+router-core@1.171.6/node_modules/@tanstack/router-core/dist/esm/ssr/ssr-server.js
4940
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/ssr/ssr-server.js
4968
4941
  var SCOPE_ID = "tsr";
4969
4942
  var TSR_PREFIX = GLOBAL_TSR + ".router=";
4970
4943
  var P_PREFIX = GLOBAL_TSR + ".p(()=>";
@@ -4986,38 +4959,42 @@ function dehydrateMatch(match) {
4986
4959
  }
4987
4960
  var INITIAL_SCRIPTS = [dn(SCOPE_ID), tsrScript_default];
4988
4961
  var ScriptBuffer = class {
4989
- constructor(router) {
4962
+ constructor(injectScript) {
4990
4963
  this._scriptBarrierLifted = false;
4991
4964
  this._cleanedUp = false;
4992
- this._pendingMicrotask = false;
4993
- this.router = router;
4965
+ this._microtaskVersion = 0;
4966
+ this._pendingMicrotaskVersion = 0;
4967
+ this.injectScript = injectScript;
4994
4968
  this._queue = INITIAL_SCRIPTS.slice();
4995
4969
  }
4996
4970
  enqueue(script) {
4997
4971
  if (this._cleanedUp) return;
4998
4972
  this._queue.push(script);
4999
- if (this._scriptBarrierLifted && !this._pendingMicrotask) {
5000
- this._pendingMicrotask = true;
5001
- queueMicrotask(() => {
5002
- this._pendingMicrotask = false;
5003
- this.injectBufferedScripts();
5004
- });
5005
- }
4973
+ if (this._scriptBarrierLifted) this.scheduleInjectBufferedScripts();
5006
4974
  }
5007
4975
  liftBarrier() {
5008
4976
  if (this._scriptBarrierLifted || this._cleanedUp) return;
5009
4977
  this._scriptBarrierLifted = true;
5010
- if (this._queue.length > 0 && !this._pendingMicrotask) {
5011
- this._pendingMicrotask = true;
5012
- queueMicrotask(() => {
5013
- this._pendingMicrotask = false;
5014
- this.injectBufferedScripts();
5015
- });
5016
- }
4978
+ if (this._queue.length > 0) this.scheduleInjectBufferedScripts();
4979
+ }
4980
+ scheduleInjectBufferedScripts() {
4981
+ if (this._pendingMicrotaskVersion !== 0) return;
4982
+ const pendingVersion = ++this._microtaskVersion;
4983
+ this._pendingMicrotaskVersion = pendingVersion;
4984
+ queueMicrotask(() => {
4985
+ if (this._pendingMicrotaskVersion !== pendingVersion) return;
4986
+ this._pendingMicrotaskVersion = 0;
4987
+ this.injectBufferedScripts();
4988
+ });
4989
+ }
4990
+ clearPendingMicrotask() {
4991
+ if (this._pendingMicrotaskVersion === 0) return;
4992
+ this._pendingMicrotaskVersion = 0;
4993
+ this._microtaskVersion++;
5017
4994
  }
5018
4995
  /**
5019
4996
  * Flushes any pending scripts synchronously.
5020
- * Call this before emitting onSerializationFinished to ensure all scripts are injected.
4997
+ * Call this before signaling serialization finished to ensure all scripts are injected.
5021
4998
  *
5022
4999
  * IMPORTANT: Only injects if the barrier has been lifted. Before the barrier is lifted,
5023
5000
  * scripts should remain in the queue so takeBufferedScripts() can retrieve them
@@ -5025,27 +5002,33 @@ var ScriptBuffer = class {
5025
5002
  flush() {
5026
5003
  if (!this._scriptBarrierLifted) return;
5027
5004
  if (this._cleanedUp) return;
5028
- this._pendingMicrotask = false;
5029
- const scriptsToInject = this.takeAll();
5030
- if (scriptsToInject && this.router?.serverSsr) this.router.serverSsr.injectScript(scriptsToInject);
5005
+ this.clearPendingMicrotask();
5006
+ this.injectBufferedScripts();
5031
5007
  }
5032
5008
  takeAll() {
5033
- const bufferedScripts = this._queue;
5034
- this._queue = [];
5009
+ return this.takeScripts(this._queue.length);
5010
+ }
5011
+ takeScripts(count) {
5012
+ if (count <= 0) return void 0;
5013
+ const bufferedScripts = this._queue.splice(0, count);
5035
5014
  if (bufferedScripts.length === 0) return;
5036
5015
  if (bufferedScripts.length === 1) return bufferedScripts[0] + ";document.currentScript.remove()";
5037
5016
  return bufferedScripts.join(";") + ";document.currentScript.remove()";
5038
5017
  }
5018
+ hasPending() {
5019
+ return this._queue.length > 0;
5020
+ }
5039
5021
  injectBufferedScripts() {
5040
5022
  if (this._cleanedUp) return;
5041
5023
  if (this._queue.length === 0) return;
5042
5024
  const scriptsToInject = this.takeAll();
5043
- if (scriptsToInject && this.router?.serverSsr) this.router.serverSsr.injectScript(scriptsToInject);
5025
+ if (scriptsToInject) this.injectScript?.(scriptsToInject);
5044
5026
  }
5045
5027
  cleanup() {
5046
5028
  this._cleanedUp = true;
5029
+ this.clearPendingMicrotask();
5047
5030
  this._queue = [];
5048
- this.router = void 0;
5031
+ this.injectScript = void 0;
5049
5032
  }
5050
5033
  };
5051
5034
  var MANIFEST_CACHE_SIZE = 100;
@@ -5197,20 +5180,38 @@ function attachRouterServerSsrUtils({ router, manifest, getRequestAssets }) {
5197
5180
  } };
5198
5181
  let _dehydrated = false;
5199
5182
  let _serializationFinished = false;
5183
+ let streamFastPathReserved = false;
5200
5184
  const renderFinishedListeners = [];
5185
+ const injectedHtmlListeners = [];
5201
5186
  const serializationFinishedListeners = [];
5202
- const scriptBuffer = new ScriptBuffer(router);
5187
+ const cleanupListeners = [];
5188
+ let cleanupStarted = false;
5203
5189
  let injectedHtmlBuffer = "";
5204
- router.serverSsr = {
5190
+ const callListeners = (listeners, errorPrefix) => {
5191
+ const snapshot = listeners.slice();
5192
+ for (const l of snapshot) try {
5193
+ l();
5194
+ } catch (err) {
5195
+ console.error(`${errorPrefix}:`, err);
5196
+ }
5197
+ };
5198
+ const removeListener = (listeners, listener) => {
5199
+ const index = listeners.indexOf(listener);
5200
+ if (index >= 0) listeners.splice(index, 1);
5201
+ };
5202
+ const scriptBuffer = new ScriptBuffer((script) => {
5203
+ serverSsr.injectScript(script);
5204
+ });
5205
+ const serverSsr = {
5205
5206
  injectHtml: (html) => {
5206
- if (!html) return;
5207
+ if (!html || cleanupStarted) return;
5207
5208
  injectedHtmlBuffer += html;
5208
- router.emit({ type: "onInjectedHtml" });
5209
+ callListeners(injectedHtmlListeners, "SSR injected HTML listener error");
5209
5210
  },
5210
5211
  injectScript: (script) => {
5211
- if (!script) return;
5212
+ if (!script || cleanupStarted) return;
5212
5213
  const html = `<script${router.options.ssr?.nonce ? ` nonce='${router.options.ssr.nonce}'` : ""}>${script}<\/script>`;
5213
- router.serverSsr.injectHtml(html);
5214
+ serverSsr.injectHtml(html);
5214
5215
  },
5215
5216
  dehydrate: async (opts) => {
5216
5217
  if (_dehydrated) invariant();
@@ -5247,18 +5248,25 @@ function attachRouterServerSsrUtils({ router, manifest, getRequestAssets }) {
5247
5248
  const trackPlugins = { didRun: false };
5248
5249
  const serializationAdapters = router.options.serializationAdapters;
5249
5250
  const plugins = serializationAdapters ? serializationAdapters.map((t) => /* @__PURE__ */ makeSsrSerovalPlugin(t, trackPlugins)).concat(defaultSerovalPlugins) : defaultSerovalPlugins;
5251
+ let serializationCompleteSignaled = false;
5250
5252
  const signalSerializationComplete = () => {
5253
+ if (serializationCompleteSignaled || cleanupStarted) return;
5254
+ serializationCompleteSignaled = true;
5251
5255
  _serializationFinished = true;
5252
- try {
5253
- serializationFinishedListeners.forEach((l) => l());
5254
- router.emit({ type: "onSerializationFinished" });
5256
+ const listeners = serializationFinishedListeners.slice();
5257
+ serializationFinishedListeners.length = 0;
5258
+ for (const l of listeners) try {
5259
+ l();
5255
5260
  } catch (err) {
5256
5261
  console.error("Serialization listener error:", err);
5257
- } finally {
5258
- serializationFinishedListeners.length = 0;
5259
- renderFinishedListeners.length = 0;
5260
5262
  }
5261
5263
  };
5264
+ const finishScriptSerialization = () => {
5265
+ if (serializationCompleteSignaled || cleanupStarted) return;
5266
+ scriptBuffer.enqueue(GLOBAL_TSR + ".e()");
5267
+ scriptBuffer.flush();
5268
+ signalSerializationComplete();
5269
+ };
5262
5270
  Sn(dehydratedRouter, {
5263
5271
  refs: /* @__PURE__ */ new Map(),
5264
5272
  plugins,
@@ -5270,13 +5278,11 @@ function attachRouterServerSsrUtils({ router, manifest, getRequestAssets }) {
5270
5278
  onError: (err) => {
5271
5279
  console.error("Serialization error:", err);
5272
5280
  if (err && err.stack) console.error(err.stack);
5273
- signalSerializationComplete();
5281
+ finishScriptSerialization();
5274
5282
  },
5275
5283
  scopeId: SCOPE_ID,
5276
5284
  onDone: () => {
5277
- scriptBuffer.enqueue(GLOBAL_TSR + ".e()");
5278
- scriptBuffer.flush();
5279
- signalSerializationComplete();
5285
+ finishScriptSerialization();
5280
5286
  }
5281
5287
  });
5282
5288
  },
@@ -5286,20 +5292,54 @@ function attachRouterServerSsrUtils({ router, manifest, getRequestAssets }) {
5286
5292
  isSerializationFinished() {
5287
5293
  return _serializationFinished;
5288
5294
  },
5289
- onRenderFinished: (listener) => renderFinishedListeners.push(listener),
5290
- onSerializationFinished: (listener) => serializationFinishedListeners.push(listener),
5295
+ reserveStreamFastPath() {
5296
+ if (!cleanupStarted && _serializationFinished && !streamFastPathReserved && renderFinishedListeners.length === 0 && !injectedHtmlBuffer && !scriptBuffer.hasPending()) {
5297
+ streamFastPathReserved = true;
5298
+ return true;
5299
+ }
5300
+ return false;
5301
+ },
5302
+ onInjectedHtml: (listener) => {
5303
+ if (cleanupStarted) return () => {};
5304
+ injectedHtmlListeners.push(listener);
5305
+ return () => removeListener(injectedHtmlListeners, listener);
5306
+ },
5307
+ onRenderFinished: (listener) => {
5308
+ if (cleanupStarted || streamFastPathReserved) return;
5309
+ renderFinishedListeners.push(listener);
5310
+ },
5311
+ onSerializationFinished: (listener) => {
5312
+ if (cleanupStarted) return () => {};
5313
+ if (_serializationFinished && !cleanupStarted) {
5314
+ try {
5315
+ listener();
5316
+ } catch (err) {
5317
+ console.error("Serialization listener error:", err);
5318
+ }
5319
+ return () => {};
5320
+ }
5321
+ serializationFinishedListeners.push(listener);
5322
+ return () => removeListener(serializationFinishedListeners, listener);
5323
+ },
5324
+ onCleanup: (listener) => {
5325
+ if (cleanupStarted) return;
5326
+ cleanupListeners.push(listener);
5327
+ },
5291
5328
  setRenderFinished: () => {
5292
- try {
5293
- renderFinishedListeners.forEach((l) => l());
5329
+ if (cleanupStarted) return;
5330
+ scriptBuffer.liftBarrier();
5331
+ const listeners = renderFinishedListeners.slice();
5332
+ renderFinishedListeners.length = 0;
5333
+ for (const l of listeners) try {
5334
+ l();
5294
5335
  } catch (err) {
5295
5336
  console.error("Error in render finished listener:", err);
5296
- } finally {
5297
- renderFinishedListeners.length = 0;
5298
5337
  }
5299
- scriptBuffer.liftBarrier();
5338
+ if (_serializationFinished) scriptBuffer.flush();
5300
5339
  },
5301
5340
  takeBufferedScripts() {
5302
5341
  const scripts = scriptBuffer.takeAll();
5342
+ if (!scripts) return void 0;
5303
5343
  return {
5304
5344
  tag: "script",
5305
5345
  attrs: {
@@ -5320,14 +5360,29 @@ function attachRouterServerSsrUtils({ router, manifest, getRequestAssets }) {
5320
5360
  return buffered;
5321
5361
  },
5322
5362
  cleanup() {
5323
- if (!router.serverSsr) return;
5363
+ if (cleanupStarted) return;
5364
+ cleanupStarted = true;
5365
+ const listeners = cleanupListeners.slice();
5366
+ cleanupListeners.length = 0;
5367
+ for (const l of listeners) try {
5368
+ l();
5369
+ } catch (err) {
5370
+ console.error("Error in SSR cleanup listener:", err);
5371
+ }
5324
5372
  renderFinishedListeners.length = 0;
5373
+ injectedHtmlListeners.length = 0;
5325
5374
  serializationFinishedListeners.length = 0;
5326
5375
  injectedHtmlBuffer = "";
5327
5376
  scriptBuffer.cleanup();
5328
5377
  router.serverSsr = void 0;
5329
5378
  }
5330
5379
  };
5380
+ router.serverSsr = serverSsr;
5381
+ for (const listener of router.serverSsrLifecycle?.onServerSsrAttach ?? []) try {
5382
+ listener(serverSsr);
5383
+ } catch (err) {
5384
+ console.error("SSR attach listener error:", err);
5385
+ }
5331
5386
  }
5332
5387
  /**
5333
5388
  * Get the origin for the request.
@@ -5361,7 +5416,34 @@ function getNormalizedURL(url, base) {
5361
5416
  };
5362
5417
  }
5363
5418
  //#endregion
5364
- //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.3/node_modules/@tanstack/start-server-core/dist/esm/createStartHandler.js
5419
+ //#region ../../node_modules/.bun/@tanstack+router-core@1.171.13/node_modules/@tanstack/router-core/dist/esm/ssr/handlerCallback.js
5420
+ function isSsrResponse(value) {
5421
+ return typeof value === "object" && value !== null && "response" in value && "serverSsrCleanup" in value;
5422
+ }
5423
+ function normalizeSsrResponse(result) {
5424
+ return isSsrResponse(result) ? result : {
5425
+ response: result,
5426
+ serverSsrCleanup: "none"
5427
+ };
5428
+ }
5429
+ async function replaceSsrResponse(result, response, reason) {
5430
+ const ssrResponse = normalizeSsrResponse(result);
5431
+ if (ssrResponse.serverSsrCleanup === "stream") await ssrResponse.dispose(reason);
5432
+ return {
5433
+ response,
5434
+ serverSsrCleanup: "none"
5435
+ };
5436
+ }
5437
+ async function stripSsrResponseBody(result, reason) {
5438
+ const ssrResponse = normalizeSsrResponse(result);
5439
+ if (ssrResponse.serverSsrCleanup === "stream") await ssrResponse.dispose(reason);
5440
+ return {
5441
+ response: new Response(null, ssrResponse.response),
5442
+ serverSsrCleanup: "none"
5443
+ };
5444
+ }
5445
+ //#endregion
5446
+ //#region ../../node_modules/.bun/@tanstack+start-server-core@1.169.14/node_modules/@tanstack/start-server-core/dist/esm/createStartHandler.js
5365
5447
  function getStartResponseHeaders(opts) {
5366
5448
  return mergeHeaders({ "Content-Type": "text/html; charset=utf-8" }, ...opts.router.stores.matches.get().map((match) => {
5367
5449
  return match.headers;
@@ -5375,9 +5457,9 @@ var getBaseManifest = getProdBaseManifest;
5375
5457
  var createEarlyHintsForRequest = createEarlyHintsCollector;
5376
5458
  async function loadEntries() {
5377
5459
  const [routerEntry, startEntry, pluginAdapters] = await Promise.all([
5378
- import("./assets/router-DrDgc-LD.js"),
5379
- import("./assets/start-HeKLHD9b.js"),
5380
- import("./assets/__23tanstack-start-plugin-adapters-BzCA6dXo.js")
5460
+ import("./assets/router-6m-ihwqA.js"),
5461
+ import("./assets/start-CI_0bSiY.js"),
5462
+ import("./assets/empty-plugin-adapters-B3lHh1La.js")
5381
5463
  ]);
5382
5464
  return {
5383
5465
  routerEntry,
@@ -5412,18 +5494,48 @@ function isSpecialResponse(value) {
5412
5494
  * Normalize middleware result to context shape
5413
5495
  */
5414
5496
  function handleCtxResult(result) {
5415
- if (isSpecialResponse(result)) return { response: result };
5497
+ if (isSsrResponse(result) || isSpecialResponse(result)) return { response: result };
5416
5498
  return result;
5417
5499
  }
5418
5500
  /**
5419
5501
  * Execute a middleware chain
5420
5502
  */
5421
- function executeMiddleware(middlewares, ctx) {
5503
+ async function executeMiddleware(middlewares, ctx) {
5422
5504
  let index = -1;
5505
+ let streamResponse;
5506
+ const setResponse = (response) => {
5507
+ if (isSsrResponse(response)) {
5508
+ if (response.serverSsrCleanup === "stream") streamResponse = response;
5509
+ ctx.response = response.response;
5510
+ return;
5511
+ }
5512
+ ctx.response = response;
5513
+ };
5514
+ const disposeStreamResponse = async (reason) => {
5515
+ const response = streamResponse;
5516
+ if (!response) return;
5517
+ streamResponse = void 0;
5518
+ const currentResponse = ctx.response;
5519
+ if (currentResponse === response.response || currentResponse instanceof Response && response.response.body !== null && currentResponse.body === response.response.body) ctx.response = void 0;
5520
+ await response.dispose(reason);
5521
+ };
5522
+ const getFinalResponse = async () => {
5523
+ const response = ctx.response;
5524
+ if (!response) throwRouteHandlerError();
5525
+ if (!streamResponse) return response;
5526
+ if (response === streamResponse.response) return streamResponse;
5527
+ if (streamResponse.response.body !== null && response.body === streamResponse.response.body) return {
5528
+ ...streamResponse,
5529
+ response
5530
+ };
5531
+ await disposeStreamResponse("middleware response replaced");
5532
+ return response;
5533
+ };
5423
5534
  const next = async (nextCtx) => {
5424
5535
  if (nextCtx) {
5425
5536
  if (nextCtx.context) ctx.context = safeObjectMerge(ctx.context, nextCtx.context);
5426
- for (const key of Object.keys(nextCtx)) if (key !== "context") ctx[key] = nextCtx[key];
5537
+ for (const key of Object.keys(nextCtx)) if (key === "response") setResponse(nextCtx.response);
5538
+ else if (key !== "context") ctx[key] = nextCtx[key];
5427
5539
  }
5428
5540
  index++;
5429
5541
  const middleware = middlewares[index];
@@ -5436,19 +5548,24 @@ function executeMiddleware(middlewares, ctx) {
5436
5548
  });
5437
5549
  } catch (err) {
5438
5550
  if (isSpecialResponse(err)) {
5439
- ctx.response = err;
5551
+ setResponse(err);
5440
5552
  return ctx;
5441
5553
  }
5554
+ await disposeStreamResponse("middleware error");
5442
5555
  throw err;
5443
5556
  }
5444
5557
  const normalized = handleCtxResult(result);
5445
5558
  if (normalized) {
5446
- if (normalized.response !== void 0) ctx.response = normalized.response;
5559
+ if (normalized.response !== void 0) setResponse(normalized.response);
5447
5560
  if (normalized.context) ctx.context = safeObjectMerge(ctx.context, normalized.context);
5448
5561
  }
5449
5562
  return ctx;
5450
5563
  };
5451
- return next();
5564
+ await next();
5565
+ return {
5566
+ ctx,
5567
+ response: await getFinalResponse()
5568
+ };
5452
5569
  }
5453
5570
  /**
5454
5571
  * Wrap a route handler as middleware
@@ -5505,7 +5622,7 @@ function createStartHandler(cbOrOptions) {
5505
5622
  finalManifestResolver.warmup({ getBaseManifest: () => getBaseManifest(void 0) });
5506
5623
  const startRequestResolver = async (request, requestOpts) => {
5507
5624
  let router = null;
5508
- let cbWillCleanup = false;
5625
+ let responseOwnsCleanup = false;
5509
5626
  try {
5510
5627
  const { url, handledProtocolRelativeURL } = getNormalizedURL(request.url);
5511
5628
  const href = url.pathname + url.search + url.hash;
@@ -5561,16 +5678,19 @@ function createStartHandler(cbOrOptions) {
5561
5678
  serverFnId
5562
5679
  }));
5563
5680
  };
5564
- return handleRedirectResponse((await executeMiddleware([...flattenedRequestMiddlewares.map((d) => d.options.server), serverFnHandler], {
5681
+ const { response: middlewareResponse } = await executeMiddleware([...flattenedRequestMiddlewares.map((d) => d.options.server), serverFnHandler], {
5565
5682
  request,
5566
5683
  pathname: url.pathname,
5567
5684
  handlerType: "serverFn",
5568
5685
  context: createNullProtoObject(requestOpts?.context)
5569
- })).response, request, getRouter);
5686
+ });
5687
+ const result = await handleRedirectResponse(middlewareResponse, request, getRouter);
5688
+ responseOwnsCleanup = result.serverSsrCleanup === "stream";
5689
+ return result.response;
5570
5690
  }
5571
5691
  const executeRouter = async (serverContext, matchedRoutes) => {
5572
5692
  const acceptParts = (request.headers.get("Accept") || "*/*").split(",");
5573
- if (!["*/*", "text/html"].some((mimeType) => acceptParts.some((part) => part.trim().startsWith(mimeType)))) return Response.json({ error: "Only HTML requests are supported here" }, { status: 500 });
5693
+ if (!["*/*", "text/html"].some((mimeType) => acceptParts.some((part) => part.trim().startsWith(mimeType)))) return normalizeSsrResponse(Response.json({ error: "Only HTML requests are supported here" }, { status: 500 }));
5574
5694
  const manifest = await resolveManifestForRequest({
5575
5695
  request,
5576
5696
  requestInlineCss: requestOpts?.inlineCss,
@@ -5592,18 +5712,17 @@ function createStartHandler(cbOrOptions) {
5592
5712
  });
5593
5713
  routerInstance.update({ additionalContext: { serverContext } });
5594
5714
  await routerInstance.load();
5595
- if (routerInstance.state.redirect) return routerInstance.state.redirect;
5715
+ if (routerInstance.state.redirect) return normalizeSsrResponse(routerInstance.state.redirect);
5596
5716
  earlyHints?.collectDynamic(routerInstance.stores.matches.get());
5597
5717
  const ctx = getStartContext({ throwIfNotFound: false });
5598
5718
  await routerInstance.serverSsr.dehydrate({ requestAssets: ctx?.requestAssets });
5599
5719
  const responseHeaders = getStartResponseHeaders({ router: routerInstance });
5600
5720
  earlyHints?.appendResponseHeaders(responseHeaders);
5601
- cbWillCleanup = true;
5602
- return cb({
5721
+ return normalizeSsrResponse(await cb({
5603
5722
  request,
5604
5723
  router: routerInstance,
5605
5724
  responseHeaders
5606
- });
5725
+ }));
5607
5726
  };
5608
5727
  const requestHandlerMiddleware = async ({ context }) => {
5609
5728
  return runWithStartContext({
@@ -5629,41 +5748,45 @@ function createStartHandler(cbOrOptions) {
5629
5748
  }
5630
5749
  });
5631
5750
  };
5632
- return handleRedirectResponse((await executeMiddleware([...flattenedRequestMiddlewares.map((d) => d.options.server), requestHandlerMiddleware], {
5751
+ const { response: middlewareResponse } = await executeMiddleware([...flattenedRequestMiddlewares.map((d) => d.options.server), requestHandlerMiddleware], {
5633
5752
  request,
5634
5753
  pathname: url.pathname,
5635
5754
  handlerType: "router",
5636
5755
  context: createNullProtoObject(requestOpts?.context)
5637
- })).response, request, getRouter);
5756
+ });
5757
+ const response = await handleRedirectResponse(middlewareResponse, request, getRouter);
5758
+ responseOwnsCleanup = response.serverSsrCleanup === "stream";
5759
+ return response.response;
5638
5760
  } finally {
5639
- if (router && !cbWillCleanup) router.serverSsr?.cleanup();
5761
+ if (router?.serverSsr && !responseOwnsCleanup) router.serverSsr.cleanup();
5640
5762
  router = null;
5641
5763
  }
5642
5764
  };
5643
5765
  return requestHandler(startRequestResolver);
5644
5766
  }
5645
5767
  async function handleRedirectResponse(response, request, getRouter) {
5646
- if (!isRedirect(response)) return response;
5647
- if (isResolvedRedirect(response)) {
5648
- if (request.headers.get("x-tsr-serverFn") === "true") return Response.json({
5649
- ...response.options,
5768
+ const ssrResponse = normalizeSsrResponse(response);
5769
+ if (!isRedirect(ssrResponse.response)) return ssrResponse;
5770
+ if (isResolvedRedirect(ssrResponse.response)) {
5771
+ if (request.headers.get("x-tsr-serverFn") === "true") return replaceSsrResponse(ssrResponse, Response.json({
5772
+ ...ssrResponse.response.options,
5650
5773
  isSerializedRedirect: true
5651
- }, { headers: response.headers });
5652
- return response;
5774
+ }, { headers: ssrResponse.response.headers }), "redirect response replaced");
5775
+ return ssrResponse;
5653
5776
  }
5654
- const opts = response.options;
5777
+ const opts = ssrResponse.response.options;
5655
5778
  if (opts.to && typeof opts.to === "string" && !opts.to.startsWith("/")) throw new Error(`Server side redirects must use absolute paths via the 'href' or 'to' options. The redirect() method's "to" property accepts an internal path only. Use the "href" property to provide an external URL. Received: ${JSON.stringify(opts)}`);
5656
5779
  if ([
5657
5780
  "params",
5658
5781
  "search",
5659
5782
  "hash"
5660
5783
  ].some((d) => typeof opts[d] === "function")) throw new Error(`Server side redirects must use static search, params, and hash values and do not support functional values. Received functional values for: ${Object.keys(opts).filter((d) => typeof opts[d] === "function").map((d) => `"${d}"`).join(", ")}`);
5661
- const redirect = (await getRouter()).resolveRedirect(response);
5662
- if (request.headers.get("x-tsr-serverFn") === "true") return Response.json({
5663
- ...response.options,
5784
+ const redirect = (await getRouter()).resolveRedirect(ssrResponse.response);
5785
+ if (request.headers.get("x-tsr-serverFn") === "true") return replaceSsrResponse(ssrResponse, Response.json({
5786
+ ...ssrResponse.response.options,
5664
5787
  isSerializedRedirect: true
5665
- }, { headers: response.headers });
5666
- return redirect;
5788
+ }, { headers: ssrResponse.response.headers }), "redirect response replaced");
5789
+ return replaceSsrResponse(ssrResponse, redirect, "redirect response replaced");
5667
5790
  }
5668
5791
  async function handleServerRoutes({ getRouter, request, url, executeRouter, context, executedRequestMiddlewares }) {
5669
5792
  const router = await getRouter();
@@ -5697,8 +5820,8 @@ async function handleServerRoutes({ getRouter, request, url, executeRouter, cont
5697
5820
  }
5698
5821
  }
5699
5822
  }
5700
- routeMiddlewares.push((ctx) => executeRouter(ctx.context, matchedRoutes));
5701
- const ctx = await executeMiddleware(routeMiddlewares, {
5823
+ routeMiddlewares.push(((ctx) => executeRouter(ctx.context, matchedRoutes)));
5824
+ const { ctx, response } = await executeMiddleware(routeMiddlewares, {
5702
5825
  request,
5703
5826
  context,
5704
5827
  params: routeParams,
@@ -5707,13 +5830,12 @@ async function handleServerRoutes({ getRouter, request, url, executeRouter, cont
5707
5830
  });
5708
5831
  if (isHeadFallback) {
5709
5832
  if (!ctx.response) throwRouteHandlerError();
5710
- const resolved = await handleRedirectResponse(ctx.response, request, getRouter);
5711
- return new Response(null, resolved);
5833
+ return stripSsrResponseBody(await handleRedirectResponse(response, request, getRouter), "HEAD body stripped");
5712
5834
  }
5713
- return ctx.response;
5835
+ return normalizeSsrResponse(response);
5714
5836
  }
5715
5837
  //#endregion
5716
- //#region ../../node_modules/.bun/@tanstack+react-start@1.168.11+5cefe02f681c7619/node_modules/@tanstack/react-start/dist/plugin/default-entry/server.ts
5838
+ //#region ../../node_modules/.bun/@tanstack+react-start@1.168.25+1e4c23dcb33f1092/node_modules/@tanstack/react-start/dist/plugin/default-entry/server.ts
5717
5839
  var fetch$1 = createStartHandler(defaultStreamHandler);
5718
5840
  function createServerEntry(entry) {
5719
5841
  return { async fetch(...args) {