vinext 1.4.4 → 1.4.5

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 (1237) hide show
  1. package/README.md +3 -1
  2. package/dist/_virtual/_rolldown/runtime.js +1 -2
  3. package/dist/build/action-owner-manifest.d.ts +0 -2
  4. package/dist/build/action-owner-manifest.js +1 -2
  5. package/dist/build/app-page-static-eligibility.d.ts +0 -2
  6. package/dist/build/app-page-static-eligibility.js +2 -3
  7. package/dist/build/assets-ignore.d.ts +1 -3
  8. package/dist/build/assets-ignore.js +1 -2
  9. package/dist/build/clean-output.d.ts +0 -2
  10. package/dist/build/clean-output.js +1 -2
  11. package/dist/build/client-build-config.d.ts +9 -6
  12. package/dist/build/client-build-config.js +40 -11
  13. package/dist/build/client-reference-async.d.ts +0 -2
  14. package/dist/build/client-reference-async.js +1 -2
  15. package/dist/build/client-reference-chunks.d.ts +1 -3
  16. package/dist/build/client-reference-chunks.js +2 -3
  17. package/dist/build/client-reference-groups.d.ts +0 -2
  18. package/dist/build/client-reference-groups.js +1 -2
  19. package/dist/build/css-url-assets.d.ts +0 -2
  20. package/dist/build/css-url-assets.js +1 -2
  21. package/dist/build/google-fonts/build-url.d.ts +1 -3
  22. package/dist/build/google-fonts/build-url.js +1 -2
  23. package/dist/build/google-fonts/fallback-metrics-data.json.js +1 -2
  24. package/dist/build/google-fonts/fallback-metrics.d.ts +0 -2
  25. package/dist/build/google-fonts/fallback-metrics.js +1 -2
  26. package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -3
  27. package/dist/build/google-fonts/find-font-files-in-css.js +1 -2
  28. package/dist/build/google-fonts/font-data.json.js +1 -2
  29. package/dist/build/google-fonts/font-metadata.d.ts +0 -2
  30. package/dist/build/google-fonts/font-metadata.js +1 -2
  31. package/dist/build/google-fonts/get-axes.d.ts +1 -3
  32. package/dist/build/google-fonts/get-axes.js +1 -2
  33. package/dist/build/google-fonts/sort-variants.d.ts +1 -3
  34. package/dist/build/google-fonts/sort-variants.js +1 -2
  35. package/dist/build/google-fonts/validate.d.ts +0 -2
  36. package/dist/build/google-fonts/validate.js +1 -2
  37. package/dist/build/inject-pregenerated-paths.d.ts +1 -3
  38. package/dist/build/inject-pregenerated-paths.js +2 -3
  39. package/dist/build/inline-css.d.ts +0 -2
  40. package/dist/build/inline-css.js +1 -2
  41. package/dist/build/lifecycle.d.ts +1 -3
  42. package/dist/build/lifecycle.js +2 -3
  43. package/dist/build/module-dependency-cache.d.ts +0 -2
  44. package/dist/build/module-dependency-cache.js +1 -2
  45. package/dist/build/next-client-runtime-manifests.d.ts +1 -3
  46. package/dist/build/next-client-runtime-manifests.js +2 -3
  47. package/dist/build/nitro-public-files.d.ts +1 -3
  48. package/dist/build/nitro-public-files.js +1 -2
  49. package/dist/build/output-root-externals.d.ts +1 -3
  50. package/dist/build/output-root-externals.js +1 -2
  51. package/dist/build/pages-client-assets-module.d.ts +1 -3
  52. package/dist/build/pages-client-assets-module.js +2 -3
  53. package/dist/build/precompress.d.ts +0 -2
  54. package/dist/build/precompress.js +1 -2
  55. package/dist/build/prerender-cloudflare-loader.d.ts +1 -3
  56. package/dist/build/prerender-cloudflare-loader.js +1 -2
  57. package/dist/build/prerender-paths.d.ts +2 -4
  58. package/dist/build/prerender-paths.js +18 -19
  59. package/dist/build/prerender-phase.d.ts +0 -2
  60. package/dist/build/prerender-phase.js +1 -2
  61. package/dist/build/prerender-server-entry.js +2 -3
  62. package/dist/build/prerender-server-pool.d.ts +1 -3
  63. package/dist/build/prerender-server-pool.js +1 -2
  64. package/dist/build/prerender.d.ts +1 -3
  65. package/dist/build/prerender.js +34 -29
  66. package/dist/build/preview-credentials.d.ts +1 -3
  67. package/dist/build/preview-credentials.js +1 -2
  68. package/dist/build/public-dir-conflict.d.ts +1 -3
  69. package/dist/build/public-dir-conflict.js +1 -2
  70. package/dist/build/report.d.ts +1 -3
  71. package/dist/build/report.js +1 -2
  72. package/dist/build/run-prerender.d.ts +1 -3
  73. package/dist/build/run-prerender.js +7 -8
  74. package/dist/build/server-actions-encryption-key.d.ts +0 -2
  75. package/dist/build/server-actions-encryption-key.js +1 -2
  76. package/dist/build/server-entry.d.ts +1 -3
  77. package/dist/build/server-entry.js +1 -2
  78. package/dist/build/server-manifest.d.ts +1 -3
  79. package/dist/build/server-manifest.js +1 -2
  80. package/dist/build/ssr-manifest.d.ts +1 -3
  81. package/dist/build/ssr-manifest.js +1 -2
  82. package/dist/build/standalone.d.ts +0 -2
  83. package/dist/build/standalone.js +2 -3
  84. package/dist/build/static-export.d.ts +2 -4
  85. package/dist/build/static-export.js +2 -3
  86. package/dist/cache/cache-adapters-virtual.d.ts +0 -2
  87. package/dist/cache/cache-adapters-virtual.js +1 -2
  88. package/dist/check.d.ts +0 -2
  89. package/dist/check.js +2 -3
  90. package/dist/cli-args.d.ts +0 -2
  91. package/dist/cli-args.js +1 -2
  92. package/dist/cli-dev-config.d.ts +1 -3
  93. package/dist/cli-dev-config.js +1 -2
  94. package/dist/cli.js +5 -6
  95. package/dist/client/app-nav-failure-handler.d.ts +1 -3
  96. package/dist/client/app-nav-failure-handler.js +1 -2
  97. package/dist/client/browser-globals.d.ts +1 -3
  98. package/dist/client/browser-globals.js +1 -2
  99. package/dist/client/client-redirect-matcher.d.ts +1 -3
  100. package/dist/client/client-redirect-matcher.js +1 -2
  101. package/dist/client/client-redirects.d.ts +0 -2
  102. package/dist/client/client-redirects.js +1 -2
  103. package/dist/client/client-rewrite-matcher.d.ts +1 -3
  104. package/dist/client/client-rewrite-matcher.js +2 -3
  105. package/dist/client/client-rewrite-params.d.ts +1 -3
  106. package/dist/client/client-rewrite-params.js +1 -2
  107. package/dist/client/client-rewrites.d.ts +0 -2
  108. package/dist/client/client-rewrites.js +1 -2
  109. package/dist/client/dev-error-overlay-store.d.ts +0 -2
  110. package/dist/client/dev-error-overlay-store.js +1 -2
  111. package/dist/client/dev-error-overlay.d.ts +1 -3
  112. package/dist/client/dev-error-overlay.js +3 -4
  113. package/dist/client/instrumentation-client-inject.d.ts +1 -3
  114. package/dist/client/instrumentation-client-inject.js +1 -2
  115. package/dist/client/instrumentation-client-state.d.ts +1 -3
  116. package/dist/client/instrumentation-client-state.js +1 -2
  117. package/dist/client/instrumentation-client.d.ts +1 -3
  118. package/dist/client/instrumentation-client.js +1 -2
  119. package/dist/client/navigation-runtime.d.ts +3 -4
  120. package/dist/client/navigation-runtime.js +2 -3
  121. package/dist/client/pages-router-link-navigation.d.ts +0 -2
  122. package/dist/client/pages-router-link-navigation.js +1 -2
  123. package/dist/client/react-instance-bootstrap.js +1 -2
  124. package/dist/client/react-instance.d.ts +1 -3
  125. package/dist/client/react-instance.js +1 -2
  126. package/dist/client/validate-module-path.d.ts +1 -3
  127. package/dist/client/validate-module-path.js +1 -2
  128. package/dist/client/vinext-next-data.d.ts +0 -2
  129. package/dist/client/vinext-next-data.js +1 -2
  130. package/dist/client/window-next.d.ts +0 -2
  131. package/dist/client/window-next.js +1 -2
  132. package/dist/config/config-matchers.d.ts +0 -2
  133. package/dist/config/config-matchers.js +1 -2
  134. package/dist/config/config-source.d.ts +1 -3
  135. package/dist/config/config-source.js +1 -2
  136. package/dist/config/destination-params.d.ts +1 -3
  137. package/dist/config/destination-params.js +1 -2
  138. package/dist/config/dotenv.d.ts +0 -2
  139. package/dist/config/dotenv.js +1 -2
  140. package/dist/config/header-params.d.ts +1 -3
  141. package/dist/config/header-params.js +1 -2
  142. package/dist/config/next-config.d.ts +0 -2
  143. package/dist/config/next-config.js +6 -7
  144. package/dist/config/prerender.d.ts +0 -2
  145. package/dist/config/prerender.js +2 -3
  146. package/dist/config/request-context.d.ts +1 -3
  147. package/dist/config/request-context.js +1 -2
  148. package/dist/config/server-external-packages.d.ts +1 -3
  149. package/dist/config/server-external-packages.js +1 -2
  150. package/dist/config/tsconfig-paths.d.ts +0 -2
  151. package/dist/config/tsconfig-paths.js +2 -3
  152. package/dist/deps/.pnpm/am-i-vibing@0.5.0/deps/am-i-vibing/dist/detector-1yx2Hoe0.js +1 -2
  153. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-codec.js +1 -2
  154. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/dbcs-data.js +1 -2
  155. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/index.js +1 -2
  156. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/internal.js +1 -2
  157. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-codec.js +1 -2
  158. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data-generated.js +1 -2
  159. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/sbcs-data.js +1 -2
  160. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/big5-added.json.js +1 -2
  161. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp936.json.js +1 -2
  162. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp949.json.js +1 -2
  163. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/cp950.json.js +1 -2
  164. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/eucjp.json.js +1 -2
  165. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gb18030-ranges.json.js +1 -2
  166. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/gbk-added.json.js +1 -2
  167. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/tables/shiftjis.json.js +1 -2
  168. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf16.js +1 -2
  169. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/encodings/utf7.js +1 -2
  170. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/bom-handling.js +1 -2
  171. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/extend-node.js +1 -2
  172. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/index.js +1 -2
  173. package/dist/deps/.pnpm/iconv-lite@0.4.24/deps/iconv-lite/lib/streams.js +1 -2
  174. package/dist/deps/.pnpm/ignore@5.3.2/deps/ignore/index.js +1 -2
  175. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +1 -2
  176. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +2 -3
  177. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +1 -2
  178. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +2 -3
  179. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +1 -2
  180. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +1 -2
  181. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +1 -2
  182. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +1 -2
  183. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +1 -2
  184. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +3 -4
  185. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +1 -2
  186. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +1 -2
  187. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +1 -2
  188. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +2 -3
  189. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +2 -3
  190. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +1 -2
  191. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +1 -2
  192. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +1 -2
  193. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +1 -2
  194. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +1 -2
  195. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +1 -2
  196. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +1 -2
  197. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +1 -2
  198. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +1 -2
  199. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +1 -2
  200. package/dist/deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js +1 -2
  201. package/dist/deps/.pnpm/process-ancestry@0.1.0/deps/process-ancestry/dist/index.js +1 -2
  202. package/dist/deps/.pnpm/safer-buffer@2.1.2/deps/safer-buffer/safer.js +1 -2
  203. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +1 -2
  204. package/dist/entries/app-browser-entry.d.ts +1 -3
  205. package/dist/entries/app-browser-entry.js +3 -4
  206. package/dist/entries/app-rsc-entry.d.ts +4 -4
  207. package/dist/entries/app-rsc-entry.js +57 -29
  208. package/dist/entries/app-rsc-manifest.d.ts +17 -4
  209. package/dist/entries/app-rsc-manifest.js +28 -7
  210. package/dist/entries/app-ssr-entry.d.ts +1 -3
  211. package/dist/entries/app-ssr-entry.js +1 -2
  212. package/dist/entries/pages-client-entry.d.ts +2 -4
  213. package/dist/entries/pages-client-entry.js +7 -8
  214. package/dist/entries/pages-server-entry.d.ts +0 -2
  215. package/dist/entries/pages-server-entry.js +3 -4
  216. package/dist/entries/runtime-entry-module.d.ts +1 -3
  217. package/dist/entries/runtime-entry-module.js +1 -2
  218. package/dist/image/image-adapters-virtual.d.ts +0 -2
  219. package/dist/image/image-adapters-virtual.js +1 -2
  220. package/dist/index.d.ts +3 -5
  221. package/dist/index.js +81 -67
  222. package/dist/init-cloudflare.d.ts +1 -3
  223. package/dist/init-cloudflare.js +6 -8
  224. package/dist/init-platform.d.ts +1 -3
  225. package/dist/init-platform.js +1 -2
  226. package/dist/init.d.ts +0 -2
  227. package/dist/init.js +2 -3
  228. package/dist/plugins/action-owner-manifest.d.ts +1 -3
  229. package/dist/plugins/action-owner-manifest.js +1 -2
  230. package/dist/plugins/ast-scope.d.ts +1 -3
  231. package/dist/plugins/ast-scope.js +1 -2
  232. package/dist/plugins/ast-utils.d.ts +1 -3
  233. package/dist/plugins/ast-utils.js +1 -2
  234. package/dist/plugins/async-hooks-stub.d.ts +1 -3
  235. package/dist/plugins/async-hooks-stub.js +1 -2
  236. package/dist/plugins/client-compile-hints.d.ts +1 -3
  237. package/dist/plugins/client-compile-hints.js +1 -2
  238. package/dist/plugins/client-reference-dedup.d.ts +0 -2
  239. package/dist/plugins/client-reference-dedup.js +1 -2
  240. package/dist/plugins/cloudflare-dev-module-urls.d.ts +0 -2
  241. package/dist/plugins/cloudflare-dev-module-urls.js +3 -3
  242. package/dist/plugins/commonjs-esm-facade.d.ts +1 -3
  243. package/dist/plugins/commonjs-esm-facade.js +1 -2
  244. package/dist/plugins/commonjs-syntax.d.ts +1 -3
  245. package/dist/plugins/commonjs-syntax.js +0 -1
  246. package/dist/plugins/css-data-url.d.ts +1 -3
  247. package/dist/plugins/css-data-url.js +1 -2
  248. package/dist/plugins/css-module-imports.d.ts +1 -3
  249. package/dist/plugins/css-module-imports.js +1 -2
  250. package/dist/plugins/css-target.d.ts +1 -3
  251. package/dist/plugins/css-target.js +1 -2
  252. package/dist/plugins/dynamic-preload-metadata.d.ts +0 -2
  253. package/dist/plugins/dynamic-preload-metadata.js +5 -6
  254. package/dist/plugins/environment.d.ts +0 -2
  255. package/dist/plugins/environment.js +1 -2
  256. package/dist/plugins/extensionless-dynamic-import.d.ts +1 -3
  257. package/dist/plugins/extensionless-dynamic-import.js +4 -5
  258. package/dist/plugins/fonts.d.ts +1 -3
  259. package/dist/plugins/fonts.js +3 -4
  260. package/dist/plugins/ignore-dynamic-requests.d.ts +0 -2
  261. package/dist/plugins/ignore-dynamic-requests.js +4 -5
  262. package/dist/plugins/import-meta-url.d.ts +0 -2
  263. package/dist/plugins/import-meta-url.js +3 -4
  264. package/dist/plugins/instrumentation-client.d.ts +1 -3
  265. package/dist/plugins/instrumentation-client.js +2 -3
  266. package/dist/plugins/middleware-export-validation.d.ts +1 -3
  267. package/dist/plugins/middleware-export-validation.js +2 -3
  268. package/dist/plugins/middleware-server-only.d.ts +1 -3
  269. package/dist/plugins/middleware-server-only.js +1 -2
  270. package/dist/plugins/next-intl-catalog.d.ts +1 -3
  271. package/dist/plugins/next-intl-catalog.js +2 -3
  272. package/dist/plugins/nitro-dev-deps-optimizer-gate.d.ts +17 -0
  273. package/dist/plugins/nitro-dev-deps-optimizer-gate.js +41 -0
  274. package/dist/plugins/og-asset-ownership.d.ts +1 -3
  275. package/dist/plugins/og-asset-ownership.js +2 -3
  276. package/dist/plugins/og-assets.d.ts +0 -2
  277. package/dist/plugins/og-assets.js +2 -3
  278. package/dist/plugins/og-harfbuzz.d.ts +1 -3
  279. package/dist/plugins/og-harfbuzz.js +2 -3
  280. package/dist/plugins/optimize-imports.d.ts +0 -2
  281. package/dist/plugins/optimize-imports.js +2 -3
  282. package/dist/plugins/pages-node-externals.d.ts +0 -2
  283. package/dist/plugins/pages-node-externals.js +2 -3
  284. package/dist/plugins/postcss.d.ts +1 -3
  285. package/dist/plugins/postcss.js +1 -2
  286. package/dist/plugins/remove-console.d.ts +0 -2
  287. package/dist/plugins/remove-console.js +1 -2
  288. package/dist/plugins/require-condition-resolution.d.ts +0 -2
  289. package/dist/plugins/require-condition-resolution.js +2 -3
  290. package/dist/plugins/require-context.d.ts +1 -3
  291. package/dist/plugins/require-context.js +2 -3
  292. package/dist/plugins/rsc-client-reference-loaders.d.ts +1 -3
  293. package/dist/plugins/rsc-client-reference-loaders.js +3 -4
  294. package/dist/plugins/rsc-client-shim-excludes.d.ts +1 -3
  295. package/dist/plugins/rsc-client-shim-excludes.js +1 -2
  296. package/dist/plugins/rsc-reference-validation-normalizer.d.ts +1 -3
  297. package/dist/plugins/rsc-reference-validation-normalizer.js +1 -2
  298. package/dist/plugins/rsc-scan-glob-imports.d.ts +1 -3
  299. package/dist/plugins/rsc-scan-glob-imports.js +1 -2
  300. package/dist/plugins/sass.d.ts +0 -2
  301. package/dist/plugins/sass.js +2 -3
  302. package/dist/plugins/scan-build-css.d.ts +1 -3
  303. package/dist/plugins/scan-build-css.js +1 -2
  304. package/dist/plugins/server-externals-manifest.d.ts +1 -3
  305. package/dist/plugins/server-externals-manifest.js +1 -2
  306. package/dist/plugins/strip-server-exports.d.ts +0 -2
  307. package/dist/plugins/strip-server-exports.js +2 -3
  308. package/dist/plugins/styled-jsx.d.ts +0 -2
  309. package/dist/plugins/styled-jsx.js +35 -9
  310. package/dist/plugins/transform-cache.d.ts +1 -3
  311. package/dist/plugins/transform-cache.js +1 -2
  312. package/dist/plugins/transform-result.d.ts +12 -2
  313. package/dist/plugins/transform-result.js +16 -3
  314. package/dist/plugins/transitive-externals.d.ts +1 -3
  315. package/dist/plugins/transitive-externals.js +2 -3
  316. package/dist/plugins/typeof-window.d.ts +0 -2
  317. package/dist/plugins/typeof-window.js +2 -3
  318. package/dist/plugins/use-cache-callable.d.ts +0 -2
  319. package/dist/plugins/use-cache-callable.js +7 -8
  320. package/dist/plugins/wasm-module-import.d.ts +1 -3
  321. package/dist/plugins/wasm-module-import.js +1 -2
  322. package/dist/plugins/worker-image-imports.d.ts +1 -3
  323. package/dist/plugins/worker-image-imports.js +3 -4
  324. package/dist/plugins/worker-server-only-imports.d.ts +1 -3
  325. package/dist/plugins/worker-server-only-imports.js +1 -2
  326. package/dist/plugins/worker-use-server.d.ts +0 -2
  327. package/dist/plugins/worker-use-server.js +5 -6
  328. package/dist/routing/app-route-graph.d.ts +0 -2
  329. package/dist/routing/app-route-graph.js +2 -3
  330. package/dist/routing/app-route-ids.d.ts +1 -3
  331. package/dist/routing/app-route-ids.js +1 -2
  332. package/dist/routing/app-router.d.ts +0 -2
  333. package/dist/routing/app-router.js +2 -3
  334. package/dist/routing/browser-route-manifest.d.ts +0 -2
  335. package/dist/routing/browser-route-manifest.js +1 -2
  336. package/dist/routing/file-matcher.d.ts +1 -3
  337. package/dist/routing/file-matcher.js +1 -2
  338. package/dist/routing/hashed-route-patterns.d.ts +1 -3
  339. package/dist/routing/hashed-route-patterns.js +2 -3
  340. package/dist/routing/optimistic-route-trie.d.ts +0 -2
  341. package/dist/routing/optimistic-route-trie.js +1 -2
  342. package/dist/routing/pages-router.d.ts +0 -2
  343. package/dist/routing/pages-router.js +2 -3
  344. package/dist/routing/route-matching.d.ts +0 -2
  345. package/dist/routing/route-matching.js +1 -2
  346. package/dist/routing/route-pattern.d.ts +0 -2
  347. package/dist/routing/route-pattern.js +1 -2
  348. package/dist/routing/route-trie.d.ts +1 -3
  349. package/dist/routing/route-trie.js +1 -2
  350. package/dist/routing/route-validation.d.ts +1 -3
  351. package/dist/routing/route-validation.js +1 -2
  352. package/dist/routing/utils.d.ts +1 -3
  353. package/dist/routing/utils.js +1 -2
  354. package/dist/server/accept-encoding.d.ts +0 -2
  355. package/dist/server/accept-encoding.js +1 -2
  356. package/dist/server/api-handler.d.ts +1 -3
  357. package/dist/server/api-handler.js +9 -10
  358. package/dist/server/app-action-forwarding.d.ts +0 -2
  359. package/dist/server/app-action-forwarding.js +10 -14
  360. package/dist/server/app-action-request.d.ts +1 -3
  361. package/dist/server/app-action-request.js +1 -2
  362. package/dist/server/app-bfcache-id.d.ts +1 -4
  363. package/dist/server/app-bfcache-id.js +2 -9
  364. package/dist/server/app-bfcache-identity.d.ts +3 -4
  365. package/dist/server/app-bfcache-identity.js +8 -5
  366. package/dist/server/app-browser-action-result.d.ts +1 -3
  367. package/dist/server/app-browser-action-result.js +1 -2
  368. package/dist/server/app-browser-entry.js +27 -38
  369. package/dist/server/app-browser-error.d.ts +0 -2
  370. package/dist/server/app-browser-error.js +3 -4
  371. package/dist/server/app-browser-history-controller.d.ts +1 -3
  372. package/dist/server/app-browser-history-controller.js +1 -2
  373. package/dist/server/app-browser-hydration.d.ts +0 -2
  374. package/dist/server/app-browser-hydration.js +1 -2
  375. package/dist/server/app-browser-interception-context.d.ts +0 -2
  376. package/dist/server/app-browser-interception-context.js +3 -4
  377. package/dist/server/app-browser-mpa-navigation.d.ts +1 -3
  378. package/dist/server/app-browser-mpa-navigation.js +1 -2
  379. package/dist/server/app-browser-navigation-abort.d.ts +1 -3
  380. package/dist/server/app-browser-navigation-abort.js +1 -2
  381. package/dist/server/app-browser-navigation-controller.d.ts +5 -7
  382. package/dist/server/app-browser-navigation-controller.js +6 -7
  383. package/dist/server/app-browser-navigation-response.d.ts +1 -3
  384. package/dist/server/app-browser-navigation-response.js +1 -2
  385. package/dist/server/app-browser-popstate.d.ts +0 -2
  386. package/dist/server/app-browser-popstate.js +1 -2
  387. package/dist/server/app-browser-prefetch-response.d.ts +2 -4
  388. package/dist/server/app-browser-prefetch-response.js +2 -3
  389. package/dist/server/app-browser-rsc-redirect.d.ts +0 -2
  390. package/dist/server/app-browser-rsc-redirect.js +2 -3
  391. package/dist/server/app-browser-server-action-client.d.ts +1 -3
  392. package/dist/server/app-browser-server-action-client.js +8 -9
  393. package/dist/server/app-browser-server-action-navigation.d.ts +1 -3
  394. package/dist/server/app-browser-server-action-navigation.js +1 -2
  395. package/dist/server/app-browser-state.d.ts +4 -6
  396. package/dist/server/app-browser-state.js +13 -12
  397. package/dist/server/app-browser-stream.d.ts +0 -2
  398. package/dist/server/app-browser-stream.js +2 -3
  399. package/dist/server/app-browser-supplemental-refresh.d.ts +3 -5
  400. package/dist/server/app-browser-supplemental-refresh.js +6 -7
  401. package/dist/server/app-browser-visible-commit.d.ts +3 -5
  402. package/dist/server/app-browser-visible-commit.js +4 -5
  403. package/dist/server/app-client-reference-manifest.d.ts +0 -2
  404. package/dist/server/app-client-reference-manifest.js +1 -2
  405. package/dist/server/app-client-reference-preloader.d.ts +0 -2
  406. package/dist/server/app-client-reference-preloader.js +1 -2
  407. package/dist/server/app-elements-wire-key.d.ts +1 -3
  408. package/dist/server/app-elements-wire-key.js +1 -2
  409. package/dist/server/app-elements-wire.d.ts +4 -2
  410. package/dist/server/app-elements-wire.js +16 -5
  411. package/dist/server/app-elements.d.ts +0 -2
  412. package/dist/server/app-elements.js +1 -2
  413. package/dist/server/app-fallback-renderer.d.ts +10 -8
  414. package/dist/server/app-fallback-renderer.js +13 -11
  415. package/dist/server/app-fetch-tracing.d.ts +1 -3
  416. package/dist/server/app-fetch-tracing.js +1 -2
  417. package/dist/server/app-history-state.d.ts +0 -2
  418. package/dist/server/app-history-state.js +4 -5
  419. package/dist/server/app-hook-warning-suppression.d.ts +1 -3
  420. package/dist/server/app-hook-warning-suppression.js +1 -2
  421. package/dist/server/app-hydration-cache-publication.d.ts +1 -3
  422. package/dist/server/app-hydration-cache-publication.js +1 -2
  423. package/dist/server/app-inline-css-client.d.ts +0 -2
  424. package/dist/server/app-inline-css-client.js +1 -2
  425. package/dist/server/app-interception-context-header.d.ts +1 -3
  426. package/dist/server/app-interception-context-header.js +1 -2
  427. package/dist/server/app-metadata-tracing.d.ts +0 -2
  428. package/dist/server/app-metadata-tracing.js +1 -2
  429. package/dist/server/app-middleware.d.ts +0 -2
  430. package/dist/server/app-middleware.js +7 -8
  431. package/dist/server/app-mounted-layouts.d.ts +1 -3
  432. package/dist/server/app-mounted-layouts.js +1 -2
  433. package/dist/server/app-mounted-slots-header.d.ts +1 -3
  434. package/dist/server/app-mounted-slots-header.js +1 -2
  435. package/dist/server/app-optimistic-routing.d.ts +2 -4
  436. package/dist/server/app-optimistic-routing.js +4 -5
  437. package/dist/server/app-page-boundary-render.d.ts +8 -8
  438. package/dist/server/app-page-boundary-render.js +16 -16
  439. package/dist/server/app-page-boundary.d.ts +0 -2
  440. package/dist/server/app-page-boundary.js +3 -4
  441. package/dist/server/app-page-cache-finalizer.d.ts +1 -3
  442. package/dist/server/app-page-cache-finalizer.js +8 -9
  443. package/dist/server/app-page-cache-render.d.ts +3 -5
  444. package/dist/server/app-page-cache-render.js +5 -6
  445. package/dist/server/app-page-cache.d.ts +2 -4
  446. package/dist/server/app-page-cache.js +9 -10
  447. package/dist/server/app-page-dispatch.d.ts +17 -12
  448. package/dist/server/app-page-dispatch.js +55 -38
  449. package/dist/server/app-page-element-builder.d.ts +5 -7
  450. package/dist/server/app-page-element-builder.js +13 -14
  451. package/dist/server/app-page-execution.d.ts +0 -2
  452. package/dist/server/app-page-execution.js +5 -6
  453. package/dist/server/app-page-head.d.ts +4 -6
  454. package/dist/server/app-page-head.js +4 -5
  455. package/dist/server/app-page-http-access-fallback-metadata.d.ts +2 -4
  456. package/dist/server/app-page-http-access-fallback-metadata.js +4 -5
  457. package/dist/server/app-page-intercept-segment-config.d.ts +0 -2
  458. package/dist/server/app-page-intercept-segment-config.js +1 -2
  459. package/dist/server/app-page-layout-gate.d.ts +0 -2
  460. package/dist/server/app-page-layout-gate.js +1 -2
  461. package/dist/server/app-page-method.d.ts +0 -2
  462. package/dist/server/app-page-method.js +3 -4
  463. package/dist/server/app-page-navigation-params.d.ts +0 -2
  464. package/dist/server/app-page-navigation-params.js +1 -2
  465. package/dist/server/app-page-params.d.ts +1 -3
  466. package/dist/server/app-page-params.js +1 -2
  467. package/dist/server/app-page-ppr-runtime.d.ts +1 -3
  468. package/dist/server/app-page-ppr-runtime.js +2 -3
  469. package/dist/server/app-page-probe.d.ts +0 -2
  470. package/dist/server/app-page-probe.js +1 -2
  471. package/dist/server/app-page-render-identity.d.ts +0 -2
  472. package/dist/server/app-page-render-identity.js +3 -4
  473. package/dist/server/app-page-render-observation.d.ts +1 -3
  474. package/dist/server/app-page-render-observation.js +4 -5
  475. package/dist/server/app-page-render.d.ts +6 -8
  476. package/dist/server/app-page-render.js +23 -24
  477. package/dist/server/app-page-request.d.ts +20 -2
  478. package/dist/server/app-page-request.js +33 -6
  479. package/dist/server/app-page-response.d.ts +0 -2
  480. package/dist/server/app-page-response.js +4 -5
  481. package/dist/server/app-page-route-wiring.d.ts +4 -6
  482. package/dist/server/app-page-route-wiring.js +14 -15
  483. package/dist/server/app-page-rsc-render-status.d.ts +2 -4
  484. package/dist/server/app-page-rsc-render-status.js +2 -3
  485. package/dist/server/app-page-search-params-observation.d.ts +0 -2
  486. package/dist/server/app-page-search-params-observation.js +2 -3
  487. package/dist/server/app-page-segment-plan.d.ts +0 -2
  488. package/dist/server/app-page-segment-plan.js +2 -3
  489. package/dist/server/app-page-segment-state.d.ts +1 -3
  490. package/dist/server/app-page-segment-state.js +1 -2
  491. package/dist/server/app-page-stream.d.ts +1 -3
  492. package/dist/server/app-page-stream.js +5 -6
  493. package/dist/server/app-page-tracing.d.ts +1 -3
  494. package/dist/server/app-page-tracing.js +2 -3
  495. package/dist/server/app-pages-bridge.d.ts +1 -3
  496. package/dist/server/app-pages-bridge.js +5 -6
  497. package/dist/server/app-post-middleware-context.d.ts +1 -3
  498. package/dist/server/app-post-middleware-context.js +2 -3
  499. package/dist/server/app-ppr-fallback-shell-render.d.ts +0 -2
  500. package/dist/server/app-ppr-fallback-shell-render.js +1 -2
  501. package/dist/server/app-ppr-fallback-shell.d.ts +0 -2
  502. package/dist/server/app-ppr-fallback-shell.js +1 -2
  503. package/dist/server/app-prerender-endpoints.d.ts +0 -2
  504. package/dist/server/app-prerender-endpoints.js +2 -3
  505. package/dist/server/app-prerender-static-params.d.ts +0 -2
  506. package/dist/server/app-prerender-static-params.js +2 -3
  507. package/dist/server/app-render-abort-error.d.ts +1 -3
  508. package/dist/server/app-render-abort-error.js +1 -2
  509. package/dist/server/app-render-dependency.d.ts +1 -3
  510. package/dist/server/app-render-dependency.js +1 -2
  511. package/dist/server/app-request-context.d.ts +1 -3
  512. package/dist/server/app-request-context.js +2 -3
  513. package/dist/server/app-request-stage-context.d.ts +1 -3
  514. package/dist/server/app-request-stage-context.js +1 -2
  515. package/dist/server/app-request-stage-dispatch.d.ts +3 -5
  516. package/dist/server/app-request-stage-dispatch.js +6 -7
  517. package/dist/server/app-request-stage-independent-entry.d.ts +1 -3
  518. package/dist/server/app-request-stage-independent-entry.js +9 -10
  519. package/dist/server/app-response-header-provenance.d.ts +1 -3
  520. package/dist/server/app-response-header-provenance.js +1 -2
  521. package/dist/server/app-response-stage-entry.d.ts +1 -3
  522. package/dist/server/app-response-stage-entry.js +9 -10
  523. package/dist/server/app-route-handler-cache.d.ts +2 -4
  524. package/dist/server/app-route-handler-cache.js +4 -5
  525. package/dist/server/app-route-handler-dispatch.d.ts +8 -3
  526. package/dist/server/app-route-handler-dispatch.js +153 -26
  527. package/dist/server/app-route-handler-execution.d.ts +4 -6
  528. package/dist/server/app-route-handler-execution.js +12 -12
  529. package/dist/server/app-route-handler-middleware-context.d.ts +1 -3
  530. package/dist/server/app-route-handler-middleware-context.js +1 -2
  531. package/dist/server/app-route-handler-policy.d.ts +18 -3
  532. package/dist/server/app-route-handler-policy.js +28 -5
  533. package/dist/server/app-route-handler-response.d.ts +3 -3
  534. package/dist/server/app-route-handler-response.js +20 -8
  535. package/dist/server/app-route-handler-runtime.d.ts +0 -2
  536. package/dist/server/app-route-handler-runtime.js +4 -5
  537. package/dist/server/app-route-module-loader.d.ts +0 -2
  538. package/dist/server/app-route-module-loader.js +1 -2
  539. package/dist/server/app-route-request-built-ins.d.ts +1 -3
  540. package/dist/server/app-route-request-built-ins.js +1 -2
  541. package/dist/server/app-route-tree-prefetch.d.ts +0 -2
  542. package/dist/server/app-route-tree-prefetch.js +2 -3
  543. package/dist/server/app-route-tree.d.ts +1 -3
  544. package/dist/server/app-route-tree.js +1 -2
  545. package/dist/server/app-router-entry.d.ts +1 -3
  546. package/dist/server/app-router-entry.js +8 -9
  547. package/dist/server/app-rsc-cache-busting.d.ts +1 -3
  548. package/dist/server/app-rsc-cache-busting.js +4 -5
  549. package/dist/server/app-rsc-combined-handler.d.ts +3 -5
  550. package/dist/server/app-rsc-combined-handler.js +3 -4
  551. package/dist/server/app-rsc-embedded-chunks.d.ts +1 -3
  552. package/dist/server/app-rsc-embedded-chunks.js +1 -2
  553. package/dist/server/app-rsc-error-handler.d.ts +0 -2
  554. package/dist/server/app-rsc-error-handler.js +2 -3
  555. package/dist/server/app-rsc-errors.d.ts +0 -2
  556. package/dist/server/app-rsc-errors.js +4 -5
  557. package/dist/server/app-rsc-handler.d.ts +24 -8
  558. package/dist/server/app-rsc-handler.js +382 -296
  559. package/dist/server/app-rsc-redirect-flight.d.ts +1 -3
  560. package/dist/server/app-rsc-redirect-flight.js +1 -2
  561. package/dist/server/app-rsc-render-mode.d.ts +1 -3
  562. package/dist/server/app-rsc-render-mode.js +1 -2
  563. package/dist/server/app-rsc-request-normalization.d.ts +0 -2
  564. package/dist/server/app-rsc-request-normalization.js +8 -9
  565. package/dist/server/app-rsc-response-finalizer.d.ts +2 -2
  566. package/dist/server/app-rsc-response-finalizer.js +15 -12
  567. package/dist/server/app-rsc-response-stage.d.ts +3 -5
  568. package/dist/server/app-rsc-response-stage.js +30 -29
  569. package/dist/server/app-rsc-route-matching.d.ts +0 -2
  570. package/dist/server/app-rsc-route-matching.js +4 -5
  571. package/dist/server/app-rsc-state-fingerprint.d.ts +1 -3
  572. package/dist/server/app-rsc-state-fingerprint.js +1 -2
  573. package/dist/server/app-rsc-vary.d.ts +1 -3
  574. package/dist/server/app-rsc-vary.js +1 -2
  575. package/dist/server/app-segment-config.d.ts +0 -2
  576. package/dist/server/app-segment-config.js +1 -2
  577. package/dist/server/app-server-action-execution.d.ts +4 -6
  578. package/dist/server/app-server-action-execution.js +27 -30
  579. package/dist/server/app-ssr-entry.d.ts +1 -3
  580. package/dist/server/app-ssr-entry.js +29 -30
  581. package/dist/server/app-ssr-error-meta.d.ts +0 -2
  582. package/dist/server/app-ssr-error-meta.js +1 -2
  583. package/dist/server/app-ssr-router-instance.d.ts +1 -3
  584. package/dist/server/app-ssr-router-instance.js +2 -3
  585. package/dist/server/app-ssr-search-params-gate.d.ts +0 -2
  586. package/dist/server/app-ssr-search-params-gate.js +1 -2
  587. package/dist/server/app-ssr-stream.d.ts +0 -2
  588. package/dist/server/app-ssr-stream.js +1 -2
  589. package/dist/server/app-static-generation.d.ts +0 -2
  590. package/dist/server/app-static-generation.js +1 -2
  591. package/dist/server/app-streamed-client-references.d.ts +1 -3
  592. package/dist/server/app-streamed-client-references.js +4 -4
  593. package/dist/server/app-visited-response-cache.d.ts +1 -3
  594. package/dist/server/app-visited-response-cache.js +4 -16
  595. package/dist/server/app-worker-stages.d.ts +1 -3
  596. package/dist/server/app-worker-stages.js +4 -5
  597. package/dist/server/artifact-compatibility.d.ts +0 -2
  598. package/dist/server/artifact-compatibility.js +2 -3
  599. package/dist/server/before-interactive-head.d.ts +1 -3
  600. package/dist/server/before-interactive-head.js +1 -2
  601. package/dist/server/bfcache-identity.d.ts +0 -2
  602. package/dist/server/bfcache-identity.js +1 -2
  603. package/dist/server/cache-control.d.ts +0 -2
  604. package/dist/server/cache-control.js +1 -2
  605. package/dist/server/cache-headers.d.ts +0 -2
  606. package/dist/server/cache-headers.js +1 -2
  607. package/dist/server/cache-proof.d.ts +1 -3
  608. package/dist/server/cache-proof.js +1 -2
  609. package/dist/server/cacheability-limits.d.ts +1 -3
  610. package/dist/server/cacheability-limits.js +1 -2
  611. package/dist/server/cacheability-manifest.d.ts +1 -3
  612. package/dist/server/cacheability-manifest.js +1 -2
  613. package/dist/server/cacheability-request.d.ts +1 -3
  614. package/dist/server/cacheability-request.js +5 -6
  615. package/dist/server/client-build-files.d.ts +1 -3
  616. package/dist/server/client-build-files.js +1 -2
  617. package/dist/server/client-trace-metadata.d.ts +1 -3
  618. package/dist/server/client-trace-metadata.js +1 -2
  619. package/dist/server/cloudflare-workers-tracing.js +1 -2
  620. package/dist/server/config-headers.d.ts +0 -2
  621. package/dist/server/config-headers.js +3 -4
  622. package/dist/server/cookie-utils.d.ts +1 -3
  623. package/dist/server/cookie-utils.js +1 -2
  624. package/dist/server/csp.d.ts +0 -2
  625. package/dist/server/csp.js +1 -2
  626. package/dist/server/default-global-error-module.d.ts +1 -3
  627. package/dist/server/default-global-error-module.js +1 -2
  628. package/dist/server/default-global-not-found-module.d.ts +7 -2
  629. package/dist/server/default-global-not-found-module.js +19 -3
  630. package/dist/server/default-http-access-fallback-modules.d.ts +1 -3
  631. package/dist/server/default-http-access-fallback-modules.js +1 -2
  632. package/dist/server/defer-until-stream-consumed.d.ts +1 -3
  633. package/dist/server/defer-until-stream-consumed.js +1 -2
  634. package/dist/server/dev-initial-server-error.d.ts +1 -3
  635. package/dist/server/dev-initial-server-error.js +1 -2
  636. package/dist/server/dev-lockfile.d.ts +0 -2
  637. package/dist/server/dev-lockfile.js +1 -2
  638. package/dist/server/dev-module-runner.d.ts +0 -2
  639. package/dist/server/dev-module-runner.js +1 -2
  640. package/dist/server/dev-origin-check.d.ts +1 -3
  641. package/dist/server/dev-origin-check.js +1 -2
  642. package/dist/server/dev-route-files.d.ts +1 -3
  643. package/dist/server/dev-route-files.js +1 -2
  644. package/dist/server/dev-server.d.ts +3 -5
  645. package/dist/server/dev-server.js +28 -26
  646. package/dist/server/dev-stack-sourcemap.d.ts +0 -2
  647. package/dist/server/dev-stack-sourcemap.js +1 -2
  648. package/dist/server/document-initial-head.d.ts +1 -3
  649. package/dist/server/document-initial-head.js +1 -2
  650. package/dist/server/edge-api-runtime.d.ts +1 -3
  651. package/dist/server/edge-api-runtime.js +1 -2
  652. package/dist/server/file-based-metadata.d.ts +1 -3
  653. package/dist/server/file-based-metadata.js +3 -4
  654. package/dist/server/forwarded-middleware-context.d.ts +1 -3
  655. package/dist/server/forwarded-middleware-context.js +1 -2
  656. package/dist/server/framework-tracer.d.ts +0 -2
  657. package/dist/server/framework-tracer.js +1 -2
  658. package/dist/server/fully-buffered-response.d.ts +1 -3
  659. package/dist/server/fully-buffered-response.js +1 -2
  660. package/dist/server/headers.d.ts +6 -2
  661. package/dist/server/headers.js +8 -3
  662. package/dist/server/html.d.ts +1 -3
  663. package/dist/server/html.js +1 -2
  664. package/dist/server/http-conditional.d.ts +0 -2
  665. package/dist/server/http-conditional.js +1 -2
  666. package/dist/server/http-date.d.ts +1 -3
  667. package/dist/server/http-date.js +1 -2
  668. package/dist/server/http-error-responses.d.ts +0 -2
  669. package/dist/server/http-error-responses.js +1 -2
  670. package/dist/server/http-range.d.ts +1 -3
  671. package/dist/server/http-range.js +1 -2
  672. package/dist/server/hybrid-route-priority.d.ts +1 -3
  673. package/dist/server/hybrid-route-priority.js +1 -2
  674. package/dist/server/image-animation.d.ts +1 -3
  675. package/dist/server/image-animation.js +1 -2
  676. package/dist/server/image-local-patterns.d.ts +1 -3
  677. package/dist/server/image-local-patterns.js +1 -2
  678. package/dist/server/image-optimization.d.ts +1 -3
  679. package/dist/server/image-optimization.js +3 -4
  680. package/dist/server/image-source-reader.d.ts +1 -3
  681. package/dist/server/image-source-reader.js +1 -2
  682. package/dist/server/implicit-tags.d.ts +6 -2
  683. package/dist/server/implicit-tags.js +12 -3
  684. package/dist/server/instrumentation-runtime.d.ts +1 -3
  685. package/dist/server/instrumentation-runtime.js +1 -2
  686. package/dist/server/instrumentation.d.ts +1 -3
  687. package/dist/server/instrumentation.js +2 -3
  688. package/dist/server/isolate-shared-promise.d.ts +9 -4
  689. package/dist/server/isolate-shared-promise.js +38 -17
  690. package/dist/server/isr-cache.d.ts +4 -6
  691. package/dist/server/isr-cache.js +5 -6
  692. package/dist/server/isr-decision.d.ts +0 -2
  693. package/dist/server/isr-decision.js +1 -2
  694. package/dist/server/metadata-route-build-data.d.ts +0 -2
  695. package/dist/server/metadata-route-build-data.js +2 -3
  696. package/dist/server/metadata-route-response.d.ts +1 -3
  697. package/dist/server/metadata-route-response.js +19 -29
  698. package/dist/server/metadata-routes.d.ts +0 -2
  699. package/dist/server/metadata-routes.js +1 -2
  700. package/dist/server/middleware-matcher-pattern.d.ts +1 -3
  701. package/dist/server/middleware-matcher-pattern.js +1 -2
  702. package/dist/server/middleware-matcher.d.ts +1 -3
  703. package/dist/server/middleware-matcher.js +1 -2
  704. package/dist/server/middleware-response-headers.d.ts +1 -3
  705. package/dist/server/middleware-response-headers.js +2 -3
  706. package/dist/server/middleware-runtime.d.ts +0 -2
  707. package/dist/server/middleware-runtime.js +9 -10
  708. package/dist/server/middleware.d.ts +2 -4
  709. package/dist/server/middleware.js +2 -3
  710. package/dist/server/multi-stage.d.ts +1 -3
  711. package/dist/server/multi-stage.js +1 -2
  712. package/dist/server/navigation-planner.d.ts +2 -4
  713. package/dist/server/navigation-planner.js +5 -6
  714. package/dist/server/navigation-trace.d.ts +0 -2
  715. package/dist/server/navigation-trace.js +1 -2
  716. package/dist/server/next-error-digest.d.ts +0 -2
  717. package/dist/server/next-error-digest.js +1 -2
  718. package/dist/server/nitro-public-files-plugin.d.ts +0 -2
  719. package/dist/server/nitro-public-files-plugin.js +1 -2
  720. package/dist/server/nitro-public-files.d.ts +0 -2
  721. package/dist/server/nitro-public-files.js +2 -3
  722. package/dist/server/nitro-request-target-plugin.d.ts +0 -2
  723. package/dist/server/nitro-request-target-plugin.js +1 -2
  724. package/dist/server/node-response-signal.d.ts +1 -3
  725. package/dist/server/node-response-signal.js +1 -2
  726. package/dist/server/normalize-path.d.ts +1 -3
  727. package/dist/server/normalize-path.js +1 -2
  728. package/dist/server/open-redirect.d.ts +1 -3
  729. package/dist/server/open-redirect.js +1 -2
  730. package/dist/server/opentelemetry-api.d.ts +0 -2
  731. package/dist/server/opentelemetry-api.js +1 -2
  732. package/dist/server/opentelemetry-tracing.d.ts +1 -3
  733. package/dist/server/opentelemetry-tracing.js +2 -3
  734. package/dist/server/operation-token.d.ts +0 -2
  735. package/dist/server/operation-token.js +1 -2
  736. package/dist/server/otel-tracer-extension.d.ts +1 -3
  737. package/dist/server/otel-tracer-extension.js +1 -2
  738. package/dist/server/pages-api-route.d.ts +3 -5
  739. package/dist/server/pages-api-route.js +9 -9
  740. package/dist/server/pages-asset-tags.d.ts +0 -2
  741. package/dist/server/pages-asset-tags.js +2 -3
  742. package/dist/server/pages-body-parser-config.d.ts +0 -2
  743. package/dist/server/pages-body-parser-config.js +1 -2
  744. package/dist/server/pages-cache-tag.d.ts +1 -3
  745. package/dist/server/pages-cache-tag.js +1 -2
  746. package/dist/server/pages-client-assets.d.ts +1 -3
  747. package/dist/server/pages-client-assets.js +1 -2
  748. package/dist/server/pages-data-route.d.ts +0 -2
  749. package/dist/server/pages-data-route.js +3 -4
  750. package/dist/server/pages-default-404.d.ts +1 -3
  751. package/dist/server/pages-default-404.js +1 -2
  752. package/dist/server/pages-dev-hydration.d.ts +1 -3
  753. package/dist/server/pages-dev-hydration.js +2 -3
  754. package/dist/server/pages-dev-module-url.d.ts +1 -3
  755. package/dist/server/pages-dev-module-url.js +1 -2
  756. package/dist/server/pages-dev-stylesheets.d.ts +1 -3
  757. package/dist/server/pages-dev-stylesheets.js +1 -2
  758. package/dist/server/pages-document-asset-props.d.ts +0 -2
  759. package/dist/server/pages-document-asset-props.js +2 -3
  760. package/dist/server/pages-document-initial-props.d.ts +0 -2
  761. package/dist/server/pages-document-initial-props.js +1 -2
  762. package/dist/server/pages-document-splice.d.ts +1 -3
  763. package/dist/server/pages-document-splice.js +1 -2
  764. package/dist/server/pages-execution-tracing.d.ts +0 -2
  765. package/dist/server/pages-execution-tracing.js +2 -3
  766. package/dist/server/pages-get-initial-props.d.ts +0 -2
  767. package/dist/server/pages-get-initial-props.js +1 -2
  768. package/dist/server/pages-i18n.d.ts +0 -2
  769. package/dist/server/pages-i18n.js +1 -2
  770. package/dist/server/pages-media-type.d.ts +1 -3
  771. package/dist/server/pages-media-type.js +1 -2
  772. package/dist/server/pages-node-compat.d.ts +0 -2
  773. package/dist/server/pages-node-compat.js +2 -3
  774. package/dist/server/pages-page-data.d.ts +6 -3
  775. package/dist/server/pages-page-data.js +28 -20
  776. package/dist/server/pages-page-handler.d.ts +2 -4
  777. package/dist/server/pages-page-handler.js +39 -32
  778. package/dist/server/pages-page-method.d.ts +0 -2
  779. package/dist/server/pages-page-method.js +1 -2
  780. package/dist/server/pages-page-response.d.ts +0 -2
  781. package/dist/server/pages-page-response.js +16 -17
  782. package/dist/server/pages-preview.d.ts +0 -2
  783. package/dist/server/pages-preview.js +1 -2
  784. package/dist/server/pages-readiness.d.ts +0 -2
  785. package/dist/server/pages-readiness.js +1 -2
  786. package/dist/server/pages-request-pipeline.d.ts +1 -3
  787. package/dist/server/pages-request-pipeline.js +15 -16
  788. package/dist/server/pages-request-stage-entry.d.ts +1 -3
  789. package/dist/server/pages-request-stage-entry.js +20 -21
  790. package/dist/server/pages-response-stage-entry.d.ts +1 -3
  791. package/dist/server/pages-response-stage-entry.js +6 -7
  792. package/dist/server/pages-response-stage.d.ts +1 -3
  793. package/dist/server/pages-response-stage.js +2 -3
  794. package/dist/server/pages-revalidate.d.ts +1 -3
  795. package/dist/server/pages-revalidate.js +4 -5
  796. package/dist/server/pages-route-data-kind.d.ts +0 -2
  797. package/dist/server/pages-route-data-kind.js +1 -2
  798. package/dist/server/pages-router-entry.d.ts +0 -2
  799. package/dist/server/pages-router-entry.js +8 -9
  800. package/dist/server/pages-serializable-props.d.ts +1 -3
  801. package/dist/server/pages-serializable-props.js +1 -2
  802. package/dist/server/pregenerated-concrete-paths.d.ts +1 -3
  803. package/dist/server/pregenerated-concrete-paths.js +1 -2
  804. package/dist/server/prerender-cache-life-header.d.ts +0 -2
  805. package/dist/server/prerender-cache-life-header.js +2 -3
  806. package/dist/server/prerender-manifest.d.ts +1 -3
  807. package/dist/server/prerender-manifest.js +1 -2
  808. package/dist/server/prerender-route-params.d.ts +0 -2
  809. package/dist/server/prerender-route-params.js +3 -4
  810. package/dist/server/prerender-work-unit-setup.d.ts +1 -3
  811. package/dist/server/prerender-work-unit-setup.js +2 -3
  812. package/dist/server/prod-server-shutdown.d.ts +5 -0
  813. package/dist/server/prod-server-shutdown.js +47 -0
  814. package/dist/server/prod-server.d.ts +2 -4
  815. package/dist/server/prod-server.js +40 -43
  816. package/dist/server/proper-error.d.ts +1 -3
  817. package/dist/server/proper-error.js +1 -2
  818. package/dist/server/proxy-trust.d.ts +1 -3
  819. package/dist/server/proxy-trust.js +1 -2
  820. package/dist/server/remove-request-headers.d.ts +1 -3
  821. package/dist/server/remove-request-headers.js +1 -2
  822. package/dist/server/request-error-log.d.ts +1 -3
  823. package/dist/server/request-error-log.js +1 -2
  824. package/dist/server/request-log.d.ts +0 -2
  825. package/dist/server/request-log.js +1 -2
  826. package/dist/server/request-pipeline.d.ts +1 -3
  827. package/dist/server/request-pipeline.js +3 -4
  828. package/dist/server/request-stage.d.ts +1 -3
  829. package/dist/server/request-stage.js +1 -2
  830. package/dist/server/request-tracing.d.ts +5 -3
  831. package/dist/server/request-tracing.js +15 -8
  832. package/dist/server/response-compression.d.ts +1 -3
  833. package/dist/server/response-compression.js +1 -2
  834. package/dist/server/response-stage-cacheability.d.ts +3 -5
  835. package/dist/server/response-stage-cacheability.js +3 -4
  836. package/dist/server/response-stage-policy.d.ts +1 -3
  837. package/dist/server/response-stage-policy.js +2 -3
  838. package/dist/server/response-stage.d.ts +1 -3
  839. package/dist/server/response-stage.js +1 -2
  840. package/dist/server/response-start-tracing.d.ts +1 -3
  841. package/dist/server/response-start-tracing.js +2 -3
  842. package/dist/server/revalidation-host.d.ts +1 -3
  843. package/dist/server/revalidation-host.js +2 -3
  844. package/dist/server/revalidation-request.d.ts +0 -2
  845. package/dist/server/revalidation-request.js +1 -2
  846. package/dist/server/route-miss-response.d.ts +8 -0
  847. package/dist/server/route-miss-response.js +27 -0
  848. package/dist/server/rsc-completion-metadata.d.ts +1 -3
  849. package/dist/server/rsc-completion-metadata.js +1 -2
  850. package/dist/server/rsc-render-stream.d.ts +1 -3
  851. package/dist/server/rsc-render-stream.js +2 -3
  852. package/dist/server/seed-cache.d.ts +0 -2
  853. package/dist/server/seed-cache.js +3 -4
  854. package/dist/server/server-action-not-found.d.ts +6 -3
  855. package/dist/server/server-action-not-found.js +11 -3
  856. package/dist/server/server-globals.d.ts +1 -3
  857. package/dist/server/server-globals.js +1 -2
  858. package/dist/server/server-reference-loader.d.ts +1 -3
  859. package/dist/server/server-reference-loader.js +9 -6
  860. package/dist/server/shared-cache-identity.d.ts +1 -3
  861. package/dist/server/shared-cache-identity.js +2 -3
  862. package/dist/server/socket-error-backstop.d.ts +1 -3
  863. package/dist/server/socket-error-backstop.js +1 -2
  864. package/dist/server/srvx-middleware-origin.d.ts +1 -3
  865. package/dist/server/srvx-middleware-origin.js +1 -2
  866. package/dist/server/srvx-request-target.d.ts +1 -3
  867. package/dist/server/srvx-request-target.js +1 -2
  868. package/dist/server/static-file-cache.d.ts +0 -2
  869. package/dist/server/static-file-cache.js +1 -2
  870. package/dist/server/static-file-signal.d.ts +1 -3
  871. package/dist/server/static-file-signal.js +1 -2
  872. package/dist/server/streaming-metadata.d.ts +1 -3
  873. package/dist/server/streaming-metadata.js +1 -2
  874. package/dist/server/tracer.d.ts +1 -3
  875. package/dist/server/tracer.js +1 -2
  876. package/dist/server/worker-image-optimization.d.ts +2 -4
  877. package/dist/server/worker-image-optimization.js +5 -6
  878. package/dist/server/worker-prerender-discovery.d.ts +1 -3
  879. package/dist/server/worker-prerender-discovery.js +1 -2
  880. package/dist/server/worker-revalidation-context.d.ts +1 -3
  881. package/dist/server/worker-revalidation-context.js +1 -2
  882. package/dist/server/worker-stages.d.ts +1 -3
  883. package/dist/server/worker-stages.js +1 -2
  884. package/dist/server/worker-utils.d.ts +1 -3
  885. package/dist/server/worker-utils.js +1 -2
  886. package/dist/server/workers-tracing.d.ts +1 -3
  887. package/dist/server/workers-tracing.js +1 -2
  888. package/dist/shims/amp.d.ts +1 -3
  889. package/dist/shims/amp.js +1 -2
  890. package/dist/shims/app-router-navigation.d.ts +303 -0
  891. package/dist/shims/app-router-navigation.js +1559 -0
  892. package/dist/shims/app-router-scroll-state.d.ts +1 -3
  893. package/dist/shims/app-router-scroll-state.js +1 -2
  894. package/dist/shims/app-router-scroll.d.ts +1 -3
  895. package/dist/shims/app-router-scroll.js +2 -3
  896. package/dist/shims/app-router-tree-context.d.ts +12 -2
  897. package/dist/shims/app-router-tree-context.js +21 -6
  898. package/dist/shims/app.d.ts +0 -2
  899. package/dist/shims/app.js +1 -2
  900. package/dist/shims/before-interactive-context.d.ts +1 -3
  901. package/dist/shims/before-interactive-context.js +1 -2
  902. package/dist/shims/cache-adapter-instantiate.d.ts +1 -3
  903. package/dist/shims/cache-adapter-instantiate.js +1 -2
  904. package/dist/shims/cache-callable-runtime.d.ts +1 -3
  905. package/dist/shims/cache-callable-runtime.js +2 -3
  906. package/dist/shims/cache-flight-arguments.d.ts +1 -3
  907. package/dist/shims/cache-flight-arguments.js +1 -2
  908. package/dist/shims/cache-for-request.d.ts +1 -3
  909. package/dist/shims/cache-for-request.js +1 -2
  910. package/dist/shims/cache-handler.d.ts +0 -2
  911. package/dist/shims/cache-handler.js +1 -2
  912. package/dist/shims/cache-request-state.d.ts +0 -2
  913. package/dist/shims/cache-request-state.js +4 -5
  914. package/dist/shims/cache-runtime.d.ts +1 -3
  915. package/dist/shims/cache-runtime.js +21 -15
  916. package/dist/shims/cache.d.ts +2 -4
  917. package/dist/shims/cache.js +18 -11
  918. package/dist/shims/cacheability-classification.d.ts +3 -3
  919. package/dist/shims/cacheability-classification.js +9 -3
  920. package/dist/shims/caught-not-found-boundaries.d.ts +1 -3
  921. package/dist/shims/caught-not-found-boundaries.js +1 -2
  922. package/dist/shims/cdn-cache-state.d.ts +1 -3
  923. package/dist/shims/cdn-cache-state.js +1 -2
  924. package/dist/shims/cdn-cache.d.ts +1 -3
  925. package/dist/shims/cdn-cache.js +1 -2
  926. package/dist/shims/cdn-purge-routes.d.ts +0 -2
  927. package/dist/shims/cdn-purge-routes.js +1 -2
  928. package/dist/shims/client-hook-error.d.ts +1 -3
  929. package/dist/shims/client-hook-error.js +1 -2
  930. package/dist/shims/client-locale.d.ts +1 -3
  931. package/dist/shims/client-locale.js +1 -2
  932. package/dist/shims/client-page-root.d.ts +0 -2
  933. package/dist/shims/client-page-root.js +2 -3
  934. package/dist/shims/compat-router.d.ts +1 -3
  935. package/dist/shims/compat-router.js +1 -2
  936. package/dist/shims/config.d.ts +0 -2
  937. package/dist/shims/config.js +1 -2
  938. package/dist/shims/constants.d.ts +1 -3
  939. package/dist/shims/constants.js +1 -2
  940. package/dist/shims/default-forbidden.d.ts +1 -3
  941. package/dist/shims/default-forbidden.js +1 -2
  942. package/dist/shims/default-global-error.d.ts +0 -2
  943. package/dist/shims/default-global-error.js +1 -2
  944. package/dist/shims/default-not-found.d.ts +1 -3
  945. package/dist/shims/default-not-found.js +1 -2
  946. package/dist/shims/default-unauthorized.d.ts +1 -3
  947. package/dist/shims/default-unauthorized.js +1 -2
  948. package/dist/shims/disable-smooth-scroll.d.ts +1 -3
  949. package/dist/shims/disable-smooth-scroll.js +1 -2
  950. package/dist/shims/document-placeholders.d.ts +1 -3
  951. package/dist/shims/document-placeholders.js +1 -2
  952. package/dist/shims/document.d.ts +0 -2
  953. package/dist/shims/document.js +1 -2
  954. package/dist/shims/dynamic-preload-chunks.d.ts +1 -3
  955. package/dist/shims/dynamic-preload-chunks.js +2 -3
  956. package/dist/shims/dynamic.d.ts +0 -2
  957. package/dist/shims/dynamic.js +2 -17
  958. package/dist/shims/error-boundary-navigation.d.ts +1 -3
  959. package/dist/shims/error-boundary-navigation.js +4 -5
  960. package/dist/shims/error-boundary.d.ts +0 -2
  961. package/dist/shims/error-boundary.js +6 -7
  962. package/dist/shims/error.d.ts +0 -2
  963. package/dist/shims/error.js +5 -6
  964. package/dist/shims/error.react-server.d.ts +0 -2
  965. package/dist/shims/error.react-server.js +1 -2
  966. package/dist/shims/fetch-cache-state.d.ts +1 -3
  967. package/dist/shims/fetch-cache-state.js +1 -2
  968. package/dist/shims/fetch-cache.d.ts +0 -2
  969. package/dist/shims/fetch-cache.js +4 -5
  970. package/dist/shims/font-google-base.d.ts +0 -2
  971. package/dist/shims/font-google-base.js +2 -3
  972. package/dist/shims/font-local.d.ts +0 -2
  973. package/dist/shims/font-local.js +2 -3
  974. package/dist/shims/font-utils.d.ts +1 -3
  975. package/dist/shims/font-utils.js +1 -2
  976. package/dist/shims/form.d.ts +0 -2
  977. package/dist/shims/form.js +7 -8
  978. package/dist/shims/hash-scroll.d.ts +1 -3
  979. package/dist/shims/hash-scroll.js +1 -2
  980. package/dist/shims/head-state.d.ts +1 -3
  981. package/dist/shims/head-state.js +2 -3
  982. package/dist/shims/head.d.ts +11 -6
  983. package/dist/shims/head.js +23 -13
  984. package/dist/shims/headers.d.ts +15 -2
  985. package/dist/shims/headers.js +26 -6
  986. package/dist/shims/http-access-error-fallback.d.ts +1 -3
  987. package/dist/shims/http-access-error-fallback.js +1 -2
  988. package/dist/shims/i18n-context.d.ts +1 -3
  989. package/dist/shims/i18n-context.js +1 -2
  990. package/dist/shims/i18n-state.d.ts +1 -3
  991. package/dist/shims/i18n-state.js +2 -3
  992. package/dist/shims/image-config.d.ts +1 -3
  993. package/dist/shims/image-config.js +1 -2
  994. package/dist/shims/image-props.d.ts +1 -3
  995. package/dist/shims/image-props.js +1 -2
  996. package/dist/shims/image.d.ts +0 -2
  997. package/dist/shims/image.js +2 -3
  998. package/dist/shims/internal/als-registry.d.ts +1 -3
  999. package/dist/shims/internal/als-registry.js +1 -2
  1000. package/dist/shims/internal/api-utils.d.ts +1 -3
  1001. package/dist/shims/internal/app-page-props-cache-key.d.ts +1 -3
  1002. package/dist/shims/internal/app-page-props-cache-key.js +1 -2
  1003. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +1 -3
  1004. package/dist/shims/internal/app-prefetch-fetch-queue.js +1 -2
  1005. package/dist/shims/internal/app-prefetch-rsc-request.d.ts +1 -3
  1006. package/dist/shims/internal/app-prefetch-rsc-request.js +1 -2
  1007. package/dist/shims/internal/app-route-detection.d.ts +0 -2
  1008. package/dist/shims/internal/app-route-detection.js +1 -2
  1009. package/dist/shims/internal/app-route-prefetch-policy.d.ts +1 -3
  1010. package/dist/shims/internal/app-route-prefetch-policy.js +3 -4
  1011. package/dist/shims/internal/app-router-context.d.ts +1 -3
  1012. package/dist/shims/internal/app-router-context.js +1 -2
  1013. package/dist/shims/internal/cache-context-accessor.d.ts +0 -2
  1014. package/dist/shims/internal/cache-context-accessor.js +1 -2
  1015. package/dist/shims/internal/client-reference-loader.d.ts +0 -2
  1016. package/dist/shims/internal/client-reference-loader.js +1 -2
  1017. package/dist/shims/internal/cookie-serialize.d.ts +0 -2
  1018. package/dist/shims/internal/cookie-serialize.js +1 -2
  1019. package/dist/shims/internal/format-url-object.d.ts +1 -3
  1020. package/dist/shims/internal/format-url-object.js +1 -2
  1021. package/dist/shims/internal/headers-state.d.ts +1 -3
  1022. package/dist/shims/internal/headers-state.js +1 -2
  1023. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +0 -2
  1024. package/dist/shims/internal/hybrid-client-route-owner-direct.js +4 -5
  1025. package/dist/shims/internal/hybrid-client-route-owner.d.ts +0 -2
  1026. package/dist/shims/internal/hybrid-client-route-owner.js +3 -4
  1027. package/dist/shims/internal/interpolate-as.d.ts +0 -2
  1028. package/dist/shims/internal/interpolate-as.js +1 -2
  1029. package/dist/shims/internal/link-status-registry.d.ts +1 -3
  1030. package/dist/shims/internal/link-status-registry.js +1 -2
  1031. package/dist/shims/internal/make-hanging-promise.d.ts +1 -3
  1032. package/dist/shims/internal/make-hanging-promise.js +1 -2
  1033. package/dist/shims/internal/navigation-untracked.d.ts +1 -3
  1034. package/dist/shims/internal/navigation-untracked.js +2 -3
  1035. package/dist/shims/internal/normalize-router-href.d.ts +1 -3
  1036. package/dist/shims/internal/normalize-router-href.js +1 -2
  1037. package/dist/shims/internal/pages-data-fetch-dedup.d.ts +1 -3
  1038. package/dist/shims/internal/pages-data-fetch-dedup.js +2 -3
  1039. package/dist/shims/internal/pages-data-target.d.ts +0 -2
  1040. package/dist/shims/internal/pages-data-target.js +3 -4
  1041. package/dist/shims/internal/pages-data-url.d.ts +0 -2
  1042. package/dist/shims/internal/pages-data-url.js +1 -2
  1043. package/dist/shims/internal/pages-router-accessor.d.ts +1 -3
  1044. package/dist/shims/internal/pages-router-accessor.js +1 -2
  1045. package/dist/shims/internal/pages-router-components.d.ts +1 -3
  1046. package/dist/shims/internal/pages-router-components.js +1 -2
  1047. package/dist/shims/internal/route-pattern-for-warning.d.ts +1 -3
  1048. package/dist/shims/internal/route-pattern-for-warning.js +1 -2
  1049. package/dist/shims/internal/router-context.d.ts +1 -3
  1050. package/dist/shims/internal/router-context.js +1 -2
  1051. package/dist/shims/internal/thenable-well-known-properties.d.ts +0 -2
  1052. package/dist/shims/internal/thenable-well-known-properties.js +1 -2
  1053. package/dist/shims/internal/utils.d.ts +1 -3
  1054. package/dist/shims/internal/utils.js +1 -2
  1055. package/dist/shims/internal/work-store-scope.d.ts +1 -3
  1056. package/dist/shims/internal/work-store-scope.js +1 -2
  1057. package/dist/shims/internal/work-unit-async-storage.d.ts +1 -3
  1058. package/dist/shims/internal/work-unit-async-storage.js +1 -2
  1059. package/dist/shims/layout-segment-context.d.ts +1 -3
  1060. package/dist/shims/layout-segment-context.js +1 -2
  1061. package/dist/shims/legacy-image.d.ts +0 -2
  1062. package/dist/shims/legacy-image.js +1 -2
  1063. package/dist/shims/link-prefetch.d.ts +1 -3
  1064. package/dist/shims/link-prefetch.js +1 -2
  1065. package/dist/shims/link.d.ts +0 -2
  1066. package/dist/shims/link.js +55 -56
  1067. package/dist/shims/metadata.d.ts +0 -2
  1068. package/dist/shims/metadata.js +2 -3
  1069. package/dist/shims/navigation-context-accessors.d.ts +1 -3
  1070. package/dist/shims/navigation-context-accessors.js +1 -2
  1071. package/dist/shims/navigation-context-state.d.ts +1 -3
  1072. package/dist/shims/navigation-context-state.js +1 -2
  1073. package/dist/shims/navigation-errors.d.ts +0 -2
  1074. package/dist/shims/navigation-errors.js +1 -2
  1075. package/dist/shims/navigation-state.d.ts +1 -3
  1076. package/dist/shims/navigation-state.js +3 -4
  1077. package/dist/shims/navigation.d.ts +6 -323
  1078. package/dist/shims/navigation.js +14 -1603
  1079. package/dist/shims/navigation.react-server.d.ts +2 -4
  1080. package/dist/shims/navigation.react-server.js +2 -3
  1081. package/dist/shims/offline.d.ts +1 -3
  1082. package/dist/shims/offline.js +1 -2
  1083. package/dist/shims/og.d.ts +0 -2
  1084. package/dist/shims/og.js +1 -2
  1085. package/dist/shims/pages-router-runtime.d.ts +0 -2
  1086. package/dist/shims/pages-router-runtime.js +1 -2
  1087. package/dist/shims/ppr-fallback-shell.d.ts +0 -2
  1088. package/dist/shims/ppr-fallback-shell.js +2 -3
  1089. package/dist/shims/public-shim-map.json.js +1 -2
  1090. package/dist/shims/readonly-url-search-params.d.ts +1 -3
  1091. package/dist/shims/readonly-url-search-params.js +1 -2
  1092. package/dist/shims/request-context.d.ts +7 -3
  1093. package/dist/shims/request-context.js +1 -2
  1094. package/dist/shims/request-state-types.d.ts +7 -7
  1095. package/dist/shims/root-params.d.ts +1 -3
  1096. package/dist/shims/root-params.js +2 -3
  1097. package/dist/shims/router-state.d.ts +1 -3
  1098. package/dist/shims/router-state.js +3 -4
  1099. package/dist/shims/router.d.ts +1 -3
  1100. package/dist/shims/router.js +32 -33
  1101. package/dist/shims/script-nonce-context.d.ts +1 -3
  1102. package/dist/shims/script-nonce-context.js +1 -2
  1103. package/dist/shims/script.d.ts +0 -2
  1104. package/dist/shims/script.js +3 -4
  1105. package/dist/shims/search-params-gate.d.ts +1 -3
  1106. package/dist/shims/search-params-gate.js +1 -2
  1107. package/dist/shims/server.d.ts +0 -2
  1108. package/dist/shims/server.js +14 -8
  1109. package/dist/shims/slot.d.ts +1 -3
  1110. package/dist/shims/slot.js +3 -4
  1111. package/dist/shims/streamed-icons.d.ts +1 -3
  1112. package/dist/shims/streamed-icons.js +1 -2
  1113. package/dist/shims/thenable-params.d.ts +1 -3
  1114. package/dist/shims/thenable-params.js +1 -2
  1115. package/dist/shims/unified-request-context.d.ts +6 -2
  1116. package/dist/shims/unified-request-context.js +3 -2
  1117. package/dist/shims/unrecognized-action-error.d.ts +1 -3
  1118. package/dist/shims/unrecognized-action-error.js +1 -2
  1119. package/dist/shims/url-safety.d.ts +1 -3
  1120. package/dist/shims/url-safety.js +1 -2
  1121. package/dist/shims/url-utils.d.ts +1 -3
  1122. package/dist/shims/url-utils.js +2 -3
  1123. package/dist/shims/use-merged-ref.d.ts +1 -3
  1124. package/dist/shims/use-merged-ref.js +1 -2
  1125. package/dist/shims/user-agent.d.ts +1 -3
  1126. package/dist/shims/user-agent.js +1 -2
  1127. package/dist/shims/web-vitals.d.ts +0 -2
  1128. package/dist/shims/web-vitals.js +1 -2
  1129. package/dist/typegen.d.ts +0 -2
  1130. package/dist/typegen.js +3 -4
  1131. package/dist/utils/asset-prefix.d.ts +1 -3
  1132. package/dist/utils/asset-prefix.js +1 -2
  1133. package/dist/utils/base-path.d.ts +1 -3
  1134. package/dist/utils/base-path.js +1 -2
  1135. package/dist/utils/built-asset-url.d.ts +1 -3
  1136. package/dist/utils/built-asset-url.js +1 -2
  1137. package/dist/utils/cache-control-metadata.d.ts +1 -3
  1138. package/dist/utils/cache-control-metadata.js +1 -2
  1139. package/dist/utils/cache-life-profiles.d.ts +1 -3
  1140. package/dist/utils/cache-life-profiles.js +1 -2
  1141. package/dist/utils/client-build-manifest.d.ts +0 -2
  1142. package/dist/utils/client-build-manifest.js +2 -3
  1143. package/dist/utils/client-entry-manifest.d.ts +1 -3
  1144. package/dist/utils/client-entry-manifest.js +2 -3
  1145. package/dist/utils/client-reference-chunks.d.ts +1 -3
  1146. package/dist/utils/client-reference-chunks.js +1 -2
  1147. package/dist/utils/client-runtime-metadata.d.ts +0 -2
  1148. package/dist/utils/client-runtime-metadata.js +4 -5
  1149. package/dist/utils/commonjs-loader.d.ts +1 -3
  1150. package/dist/utils/commonjs-loader.js +1 -2
  1151. package/dist/utils/compare.d.ts +1 -3
  1152. package/dist/utils/compare.js +1 -2
  1153. package/dist/utils/deployment-id.d.ts +1 -3
  1154. package/dist/utils/deployment-id.js +1 -2
  1155. package/dist/utils/dev-error-recovery-event.d.ts +1 -3
  1156. package/dist/utils/dev-error-recovery-event.js +1 -2
  1157. package/dist/utils/dev-stack-sourcemap-endpoint.d.ts +1 -3
  1158. package/dist/utils/dev-stack-sourcemap-endpoint.js +1 -2
  1159. package/dist/utils/domain-locale.d.ts +1 -3
  1160. package/dist/utils/domain-locale.js +1 -2
  1161. package/dist/utils/encode-cache-tag.d.ts +1 -3
  1162. package/dist/utils/encode-cache-tag.js +1 -2
  1163. package/dist/utils/error-cause.d.ts +1 -3
  1164. package/dist/utils/error-cause.js +1 -2
  1165. package/dist/utils/external-url.d.ts +1 -3
  1166. package/dist/utils/external-url.js +1 -2
  1167. package/dist/utils/has-trailing-comma.d.ts +1 -3
  1168. package/dist/utils/has-trailing-comma.js +1 -2
  1169. package/dist/utils/hash.d.ts +1 -3
  1170. package/dist/utils/hash.js +1 -2
  1171. package/dist/utils/html-limited-bots.d.ts +1 -3
  1172. package/dist/utils/html-limited-bots.js +1 -2
  1173. package/dist/utils/lazy-chunks.d.ts +1 -3
  1174. package/dist/utils/lazy-chunks.js +1 -2
  1175. package/dist/utils/manifest-paths.d.ts +1 -3
  1176. package/dist/utils/manifest-paths.js +1 -2
  1177. package/dist/utils/mdx-scan.d.ts +1 -3
  1178. package/dist/utils/mdx-scan.js +1 -2
  1179. package/dist/utils/middleware-request-headers.d.ts +0 -2
  1180. package/dist/utils/middleware-request-headers.js +1 -2
  1181. package/dist/utils/navigation-signal.d.ts +1 -3
  1182. package/dist/utils/navigation-signal.js +1 -2
  1183. package/dist/utils/number.d.ts +1 -3
  1184. package/dist/utils/number.js +1 -2
  1185. package/dist/utils/package-name.d.ts +1 -3
  1186. package/dist/utils/package-name.js +1 -2
  1187. package/dist/utils/parse-cookie.d.ts +1 -3
  1188. package/dist/utils/parse-cookie.js +1 -2
  1189. package/dist/utils/path-to-regexp.d.ts +1 -3
  1190. package/dist/utils/path-to-regexp.js +1 -2
  1191. package/dist/utils/path.d.ts +1 -3
  1192. package/dist/utils/path.js +1 -2
  1193. package/dist/utils/plugin-options.d.ts +1 -3
  1194. package/dist/utils/plugin-options.js +1 -2
  1195. package/dist/utils/plugin-react-version.d.ts +1 -3
  1196. package/dist/utils/plugin-react-version.js +1 -2
  1197. package/dist/utils/plugin-rsc-version.d.ts +1 -3
  1198. package/dist/utils/plugin-rsc-version.js +1 -2
  1199. package/dist/utils/precompressed-variant.d.ts +1 -3
  1200. package/dist/utils/precompressed-variant.js +1 -2
  1201. package/dist/utils/prerender-output-paths.d.ts +10 -3
  1202. package/dist/utils/prerender-output-paths.js +18 -4
  1203. package/dist/utils/project.d.ts +0 -2
  1204. package/dist/utils/project.js +2 -3
  1205. package/dist/utils/promise.d.ts +1 -3
  1206. package/dist/utils/promise.js +1 -2
  1207. package/dist/utils/protocol-headers.d.ts +1 -3
  1208. package/dist/utils/protocol-headers.js +1 -2
  1209. package/dist/utils/public-file-path.d.ts +1 -3
  1210. package/dist/utils/public-file-path.js +1 -2
  1211. package/dist/utils/public-routes.d.ts +1 -3
  1212. package/dist/utils/public-routes.js +1 -2
  1213. package/dist/utils/query.d.ts +0 -2
  1214. package/dist/utils/query.js +1 -2
  1215. package/dist/utils/react-compiler-support.d.ts +1 -3
  1216. package/dist/utils/react-compiler-support.js +1 -2
  1217. package/dist/utils/react-version.d.ts +1 -3
  1218. package/dist/utils/react-version.js +1 -2
  1219. package/dist/utils/record.d.ts +1 -3
  1220. package/dist/utils/record.js +1 -2
  1221. package/dist/utils/redirect-digest.d.ts +1 -3
  1222. package/dist/utils/redirect-digest.js +1 -2
  1223. package/dist/utils/regex.d.ts +1 -3
  1224. package/dist/utils/regex.js +1 -2
  1225. package/dist/utils/safe-json-file.d.ts +1 -3
  1226. package/dist/utils/safe-json-file.js +1 -2
  1227. package/dist/utils/text-stream.d.ts +1 -3
  1228. package/dist/utils/text-stream.js +1 -2
  1229. package/dist/utils/vinext-root.d.ts +1 -3
  1230. package/dist/utils/vinext-root.js +1 -2
  1231. package/dist/utils/virtual-module.d.ts +1 -3
  1232. package/dist/utils/virtual-module.js +0 -0
  1233. package/dist/utils/vite-cli-invocation.d.ts +0 -2
  1234. package/dist/utils/vite-cli-invocation.js +1 -2
  1235. package/dist/utils/vite-version.d.ts +1 -3
  1236. package/dist/utils/vite-version.js +1 -2
  1237. package/package.json +3 -3
@@ -1,61 +1,28 @@
1
- import { isBotUserAgent } from "../utils/html-limited-bots.js";
2
- import { isExternalUrl } from "../utils/external-url.js";
1
+ import { PUBLIC_INITIAL_BFCACHE_ID } from "../server/app-bfcache-id.js";
3
2
  import { stripBasePath } from "../utils/base-path.js";
4
- import { NEXT_ROUTER_PREFETCH_HEADER, NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, VINEXT_INTERCEPTION_CONTEXT_HEADER, VINEXT_MOUNTED_SLOTS_HEADER, VINEXT_RSC_RENDER_MODE_HEADER } from "../server/app-rsc-vary.js";
5
- import { NEXT_ROUTER_STALE_TIME_HEADER, VINEXT_DYNAMIC_STALE_TIME_HEADER, VINEXT_PARAMS_HEADER, VINEXT_RENDERED_PATH_AND_SEARCH_HEADER, VINEXT_RSC_COMPLETION_METADATA_HEADER, VINEXT_RSC_REDIRECT_HEADER, VINEXT_RSC_REDIRECT_TYPE_HEADER, VINEXT_STALE_TIME_PENDING_HEADER } from "../server/headers.js";
6
- import { assertSafeNavigationUrl } from "./url-safety.js";
7
- import { APP_RSC_RENDER_MODE_PREFETCH_DYNAMIC_SHELL, APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL } from "../server/app-rsc-render-mode.js";
3
+ import { ReadonlyURLSearchParams } from "./readonly-url-search-params.js";
8
4
  import { getPprFallbackShellState, markPprFallbackShellDynamicBoundary } from "./ppr-fallback-shell.js";
9
- import { AppRouterContext } from "./internal/app-router-context.js";
10
- import { resolveDirectHybridClientRouteOwner } from "./internal/hybrid-client-route-owner-direct.js";
11
- import { isHashOnlyBrowserUrlChange, toCanonicalBrowserNavigationHref, toSameOriginAppPath, withBasePath } from "./url-utils.js";
12
- import { disableSmoothScrollDuringRouteTransition } from "./disable-smooth-scroll.js";
13
- import { retryScrollTo, scrollToHashTarget } from "./hash-scroll.js";
14
- import { VINEXT_RSC_COMPATIBILITY_ID_HEADER, VINEXT_RSC_CONTENT_TYPE, createRscRequestHeaders, createRscRequestUrl, formatRscRequestPath, parseRscRequestPath, stripRscCacheBustingSearchParam } from "../server/app-rsc-cache-busting.js";
15
- import { clearAppNavigationFailureTarget, stageAppNavigationFailureTarget } from "../client/app-nav-failure-handler.js";
16
- import { notifyAppRouterTransitionStart } from "../client/instrumentation-client-state.js";
17
- import { getNavigationRuntime, hasAppNavigationRuntime, loadNavigationRuntimeRouteManifest } from "../client/navigation-runtime.js";
18
- import { beginAppRouterScrollIntent, clearAppRouterScrollIntent, consumeAppRouterScrollIntent, getPendingAppRouterScrollIntent, isLatestAppRouterScrollIntent } from "./app-router-scroll-state.js";
19
- import { GLOBAL_ACCESSORS_KEY, ServerInsertedHTMLContext, _registerStateAccessors, clearClientHydrationContext, clearServerInsertedHTML, flushServerInsertedHTML, getBfcacheIdMapContext, getBfcacheSegmentIdContext, getLayoutSegmentContext, getNavigationContext, registerServerInsertedHTMLCallback, renderServerInsertedHTML, setNavigationContext } from "./navigation-context-state.js";
20
5
  import { BailoutToCSRError, DynamicServerError, HTTP_ERROR_FALLBACK_ERROR_CODE, RedirectType, decodeRedirectError, forbidden, getAccessFallbackHTTPStatus, isBailoutToCSRError, isDynamicServerError, isHTTPAccessFallbackError, isNextRouterError, isRedirectError, notFound, permanentRedirect, redirect, unauthorized, unstable_rethrow } from "./navigation-errors.js";
21
- import { AppElementsWire } from "../server/app-elements-wire.js";
22
- import "../server/app-elements.js";
23
- import { PUBLIC_INITIAL_BFCACHE_ID } from "../server/app-bfcache-id.js";
24
- import { resolveManifestNavigationInterceptionContext } from "../server/app-browser-interception-context.js";
25
- import { createExternalHistoryStatePreservingMetadata, createHashOnlyHistoryStatePreservingNavigationMetadata, isAppOwnedHistoryState, readHistoryStateTraversalIndex } from "../server/app-history-state.js";
26
- import { hasPendingAppRouterPageRedirect } from "../server/app-browser-mpa-navigation.js";
27
- import { extractRscCompletionMetadata } from "../server/rsc-completion-metadata.js";
28
- import { navigationPlanner } from "../server/navigation-planner.js";
29
- import { ReadonlyURLSearchParams } from "./readonly-url-search-params.js";
6
+ import { AppRouterContext } from "./internal/app-router-context.js";
30
7
  import { getPagesNavigationContext } from "./internal/pages-router-accessor.js";
31
- import { cancelAppPrefetchFetch, promoteAppPrefetchFetch, releaseAppPrefetchFetchSlot, scheduleAppPrefetchFetch } from "./internal/app-prefetch-fetch-queue.js";
8
+ import { GLOBAL_ACCESSORS_KEY, ServerInsertedHTMLContext, _registerStateAccessors, clearClientHydrationContext, clearServerInsertedHTML, flushServerInsertedHTML, getBfcacheIdMapContext, getBfcacheSegmentIdContext, getLayoutSegmentContext, getNavigationContext, registerServerInsertedHTMLCallback, renderServerInsertedHTML, setNavigationContext } from "./navigation-context-state.js";
32
9
  import { UnrecognizedActionError, unstable_isUnrecognizedActionError } from "./unrecognized-action-error.js";
33
10
  import * as React$1 from "react";
34
- //#region src/shims/navigation.ts
11
+ // src/shims/navigation.ts
35
12
  /**
36
13
  * next/navigation shim
37
14
  *
38
15
  * App Router navigation hooks. These work on both server (RSC) and client.
39
16
  * Server-side: reads from a request context set by the RSC handler.
40
- * Client-side: reads from browser Location API and provides navigation.
17
+ * Client-side: reads the shared client navigation state, or the Pages Router
18
+ * state when a Pages page uses these hooks.
19
+ *
20
+ * Like Next.js' `client/components/navigation.ts`, this module holds no App
21
+ * Router navigation machinery. The runtime that fetches, prefetches, writes
22
+ * history and scrolls lives in `app-router-navigation.ts`, which only the App
23
+ * Router browser entry and the shims that navigate import, so Pages Router
24
+ * pages that use these hooks don't load it.
41
25
  */
42
- const HAS_PAGES_ROUTER = process.env.__VINEXT_HAS_PAGES_ROUTER !== "false";
43
- const HAS_CLIENT_REWRITES = process.env.__VINEXT_HAS_CLIENT_REWRITES !== "false";
44
- let hybridClientRouteOwnerModule = null;
45
- let hybridClientRouteOwnerModulePromise = null;
46
- /** Load rewrite-aware hybrid route ownership before navigation becomes interactive. */
47
- async function preloadHybridClientRouteOwner() {
48
- if (hybridClientRouteOwnerModule) return;
49
- hybridClientRouteOwnerModulePromise ??= import("./internal/hybrid-client-route-owner.js");
50
- hybridClientRouteOwnerModule = await hybridClientRouteOwnerModulePromise;
51
- }
52
- function resolveLoadedHybridClientRewriteHref(href, basePath) {
53
- return hybridClientRouteOwnerModule?.resolveHybridClientRewriteHref(href, basePath) ?? null;
54
- }
55
- function resolveHybridClientRouteOwner(href) {
56
- if (!HAS_PAGES_ROUTER) return null;
57
- return hybridClientRouteOwnerModule ? hybridClientRouteOwnerModule.resolveHybridClientRouteOwner(href, __basePath) : resolveDirectHybridClientRouteOwner(href, __basePath);
58
- }
59
26
  /**
60
27
  * Read the child segments for a parallel route below the current layout.
61
28
  * Returns [] if no context is available (RSC environment, outside React tree)
@@ -77,990 +44,7 @@ const PAGES_NAVIGATION_NOTIFY_KEY = Symbol.for("vinext.navigation.pagesNavigatio
77
44
  const isServer = typeof window === "undefined";
78
45
  /** basePath from next.config.js, injected by the plugin at build time */
79
46
  const __basePath = process.env.__NEXT_ROUTER_BASEPATH ?? "";
80
- /** trailingSlash from next.config.js, injected by the plugin at build time */
81
- const __trailingSlash = process.env.__VINEXT_TRAILING_SLASH === "true";
82
- /** prefetch inlining (Segment Cache wire mode), injected by the plugin at build time */
83
- const __prefetchInlining = process.env.__VINEXT_PREFETCH_INLINING === "true";
84
- /** Maximum buffered bytes in the RSC prefetch cache. Mirrors Next.js' 50 MB LRU. */
85
- const MAX_PREFETCH_CACHE_SIZE = 52428800;
86
- const PREFETCH_CACHE_EVICTION_TARGET_SIZE = MAX_PREFETCH_CACHE_SIZE * .9;
87
- /**
88
- * TTL for prefetch cache entries in ms.
89
- *
90
- * Mirrors Next.js' `STATIC_STALETIME_MS` derivation. The plugin injects
91
- * `process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME` from
92
- * `experimental.staleTimes.static` (in seconds) at build time; we convert
93
- * to ms here.
94
- *
95
- * Falls back to vinext's historical default of 30s when the env var is
96
- * absent (e.g. unit tests that import this module without going through
97
- * the plugin's `define` pipeline). When the plugin is active and the user
98
- * has not set `experimental.staleTimes`, Next.js' 300s default applies
99
- * (see `resolveStaleTimes` in `config/next-config.ts`).
100
- */
101
- function resolveClientRouterStaleTime(raw, fallbackMs) {
102
- if (raw === void 0 || raw === "") return fallbackMs;
103
- const seconds = Number(raw);
104
- if (!Number.isFinite(seconds) || seconds < 0) return fallbackMs;
105
- return seconds * 1e3;
106
- }
107
- const DYNAMIC_NAVIGATION_CACHE_TTL = resolveClientRouterStaleTime(process.env.__NEXT_CLIENT_ROUTER_DYNAMIC_STALETIME, 3e4);
108
- const PREFETCH_CACHE_TTL = resolveClientRouterStaleTime(process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME, 3e4);
109
- /**
110
- * Floor for any server-declared `cacheLife` stale time, mirroring Next.js's
111
- * `getStaleTimeMs` (`Math.max(staleTimeSeconds, 30) * 1000`). One rule for
112
- * both client caches, so behavior does not depend on which cache a route hit.
113
- */
114
- const MIN_SERVER_STALE_TIME_SECONDS = 30;
115
- const MIN_PREFETCH_STALE_TIME_MS = MIN_SERVER_STALE_TIME_SECONDS * 1e3;
116
- function getCurrentInterceptionContext() {
117
- if (isServer) return null;
118
- return stripBasePath(window.location.pathname, __basePath);
119
- }
120
- function getPrefetchInterceptionContext(targetHref, currentPathname) {
121
- if (isServer) return null;
122
- let targetUrl;
123
- try {
124
- targetUrl = new URL(targetHref, window.location.href);
125
- } catch {
126
- return null;
127
- }
128
- return resolveManifestNavigationInterceptionContext({
129
- basePath: __basePath,
130
- currentPathname: currentPathname ?? window.location.pathname,
131
- routeManifest: getNavigationRuntime()?.bootstrap.routeManifest ?? null,
132
- targetPathname: targetUrl.pathname
133
- });
134
- }
135
- function getCurrentNextUrl() {
136
- if (isServer) return "/";
137
- return window.location.pathname + window.location.search;
138
- }
139
- function createAppPrefetchRequestHeaders(options) {
140
- const prefetchRouterState = getNavigationRuntime()?.functions.getPrefetchRouterState?.() ?? null;
141
- return createRscRequestHeaders({
142
- ...options,
143
- nextUrl: getCurrentNextUrl(),
144
- includePrefetchHeader: options.prefetchKind !== "full",
145
- prefetchRouterState
146
- });
147
- }
148
- /** Get or create the shared in-memory RSC prefetch cache on window. */
149
- function getPrefetchCache() {
150
- if (isServer) return /* @__PURE__ */ new Map();
151
- if (!window.__VINEXT_RSC_PREFETCH_CACHE__) window.__VINEXT_RSC_PREFETCH_CACHE__ = /* @__PURE__ */ new Map();
152
- return window.__VINEXT_RSC_PREFETCH_CACHE__;
153
- }
154
- /**
155
- * Read an exact prefetch entry without allowing a settled stale value to
156
- * steer a later request. Timers are an eviction optimization, not a freshness
157
- * guarantee: background throttling can leave an expired route-tree entry in
158
- * the Map until the next foreground read.
159
- */
160
- function getFreshPrefetchCacheEntry(cacheKey) {
161
- const cache = getPrefetchCache();
162
- const entry = cache.get(cacheKey);
163
- if (entry === void 0 || entry.pending) return entry;
164
- if (resolvePrefetchCacheEntryExpiresAt(entry) > Date.now()) return entry;
165
- deletePrefetchCacheEntry(cache, getPrefetchedUrls(), cacheKey, entry, true);
166
- }
167
- /**
168
- * Get or create the shared set of already-prefetched RSC URLs on window.
169
- * Keyed by interception-aware cache key so distinct source routes do not alias.
170
- */
171
- function getPrefetchedUrls() {
172
- if (isServer) return /* @__PURE__ */ new Set();
173
- if (!window.__VINEXT_RSC_PREFETCHED_URLS__) window.__VINEXT_RSC_PREFETCHED_URLS__ = /* @__PURE__ */ new Set();
174
- return window.__VINEXT_RSC_PREFETCHED_URLS__;
175
- }
176
- function isStaleTimeSeconds(value) {
177
- return typeof value === "number" && Number.isFinite(value) && Number.isInteger(value) && value >= 0;
178
- }
179
- function isCacheExpiresAt(value) {
180
- return typeof value === "number" && Number.isFinite(value) && value >= 0;
181
- }
182
- function parseStaleTimeSecondsHeader(value) {
183
- if (value === null || value === "") return void 0;
184
- const seconds = Number(value);
185
- return isStaleTimeSeconds(seconds) ? seconds : void 0;
186
- }
187
- /**
188
- * The floor a `cacheLife` claim licenses. A pending claim contributes exactly
189
- * the floor — the least any resolution of it could have granted.
190
- */
191
- function serverStaleTimeSeconds(server) {
192
- if (server === void 0) return void 0;
193
- if (server.kind === "pending") return MIN_SERVER_STALE_TIME_SECONDS;
194
- return Math.max(server.seconds, MIN_SERVER_STALE_TIME_SECONDS);
195
- }
196
- /**
197
- * Min-combine the two independent staleness lattices a response can carry:
198
- * `dynamicStaleTimeSeconds` (from `experimental.staleTimes` config) and
199
- * `serverStaleTime` (from the render's `cacheLife`) — neither may override
200
- * the other. The cacheLife value is floored *before* the min so the floor
201
- * never raises the config bound. Undefined = no signal; the caller's
202
- * fallback TTL stays in force.
203
- */
204
- function resolveRscResponseStaleTimeSeconds(cached) {
205
- const dynamic = cached.dynamicStaleTimeSeconds;
206
- const server = serverStaleTimeSeconds(cached.serverStaleTime);
207
- if (!isStaleTimeSeconds(dynamic)) return server;
208
- return server === void 0 ? dynamic : Math.min(dynamic, server);
209
- }
210
- function resolveCachedRscResponseTtlMs(cached, fallbackTtlMs) {
211
- const seconds = resolveRscResponseStaleTimeSeconds(cached);
212
- if (seconds === void 0) return fallbackTtlMs;
213
- return seconds * 1e3;
214
- }
215
- function resolveCachedRscResponseExpiresAt(timestamp, cached, fallbackTtlMs) {
216
- if (isCacheExpiresAt(cached.expiresAt)) return cached.expiresAt;
217
- return timestamp + resolveCachedRscResponseTtlMs(cached, fallbackTtlMs);
218
- }
219
- function resolvePrefetchedRscResponseExpiresAt(timestamp, cached, fallbackTtlMs, dynamicStaleTime) {
220
- if (isCacheExpiresAt(cached.expiresAt)) return cached.expiresAt;
221
- const serverSeconds = cached.serverStaleTime?.kind === "pending" && dynamicStaleTime !== "verbatim" ? void 0 : serverStaleTimeSeconds(cached.serverStaleTime);
222
- if (serverSeconds !== void 0) return timestamp + serverSeconds * 1e3;
223
- if (dynamicStaleTime === "ignore") return timestamp + Math.max(fallbackTtlMs, MIN_PREFETCH_STALE_TIME_MS);
224
- const seconds = isStaleTimeSeconds(cached.dynamicStaleTimeSeconds) ? cached.dynamicStaleTimeSeconds : void 0;
225
- if (seconds === void 0) return timestamp + Math.max(fallbackTtlMs, MIN_PREFETCH_STALE_TIME_MS);
226
- return dynamicStaleTime === "verbatim" ? timestamp + seconds * 1e3 : timestamp + (seconds === 0 ? Math.max(fallbackTtlMs, MIN_PREFETCH_STALE_TIME_MS) : Math.max(seconds * 1e3, MIN_PREFETCH_STALE_TIME_MS));
227
- }
228
- function resolvePrefetchCacheEntryExpiresAt(entry) {
229
- if (entry.expiresAt !== void 0) return entry.expiresAt;
230
- if (entry.snapshot) return resolveCachedRscResponseExpiresAt(entry.timestamp, entry.snapshot, PREFETCH_CACHE_TTL);
231
- return entry.timestamp + PREFETCH_CACHE_TTL;
232
- }
233
- function resolvePrefetchCacheEntryMountedSlotsHeader(entry) {
234
- if (entry.mountedSlotsHeader !== void 0) return entry.mountedSlotsHeader;
235
- return entry.snapshot?.mountedSlotsHeader ?? null;
236
- }
237
- function normalizeRscCacheLookupUrl(rscUrl) {
238
- try {
239
- const url = parseRscRequestPath(rscUrl);
240
- stripRscCacheBustingSearchParam(url);
241
- return `${url.pathname}${url.search}`;
242
- } catch {
243
- return null;
244
- }
245
- }
246
- function normalizeRscCacheLookupPathname(rscUrl) {
247
- try {
248
- return parseRscRequestPath(rscUrl).pathname;
249
- } catch {
250
- return null;
251
- }
252
- }
253
- function parsePrefetchCacheKey(cacheKey) {
254
- const separatorIndex = cacheKey.indexOf("\0");
255
- if (separatorIndex === -1) return {
256
- interceptionContext: null,
257
- rscUrl: cacheKey
258
- };
259
- return {
260
- interceptionContext: cacheKey.slice(separatorIndex + 1),
261
- rscUrl: cacheKey.slice(0, separatorIndex)
262
- };
263
- }
264
- function isPrefetchCacheEntryCompatibleWithMountedSlots(entry, mountedSlotsHeader) {
265
- if (resolvePrefetchCacheEntryMountedSlotsHeader(entry) === mountedSlotsHeader) return true;
266
- return (entry.snapshot?.mountedSlotsHeader ?? null) === mountedSlotsHeader;
267
- }
268
- function findPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, additionalRscUrls = []) {
269
- const cache = getPrefetchCache();
270
- const rscUrls = [rscUrl, ...additionalRscUrls];
271
- for (const lookupRscUrl of rscUrls) {
272
- const exactCacheKey = AppElementsWire.encodeCacheKey(lookupRscUrl, interceptionContext);
273
- const exactEntry = cache.get(exactCacheKey);
274
- if (exactEntry && exactEntry.cacheForNavigation !== false && isPrefetchCacheEntryCompatibleWithMountedSlots(exactEntry, mountedSlotsHeader)) return {
275
- cacheKey: exactCacheKey,
276
- entry: exactEntry
277
- };
278
- }
279
- const normalizedTargets = new Set(rscUrls.map((lookupRscUrl) => normalizeRscCacheLookupUrl(lookupRscUrl)).filter((lookupRscUrl) => lookupRscUrl !== null));
280
- if (normalizedTargets.size === 0) return null;
281
- for (const [cacheKey, entry] of cache) {
282
- if (entry.cacheForNavigation === false) continue;
283
- const source = parsePrefetchCacheKey(cacheKey);
284
- if (source.interceptionContext !== interceptionContext) continue;
285
- const normalizedSource = normalizeRscCacheLookupUrl(source.rscUrl);
286
- if (normalizedSource === null || !normalizedTargets.has(normalizedSource)) continue;
287
- if (!isPrefetchCacheEntryCompatibleWithMountedSlots(entry, mountedSlotsHeader)) continue;
288
- return {
289
- cacheKey,
290
- entry
291
- };
292
- }
293
- return null;
294
- }
295
- function hasPrefetchCacheEntryForNavigation(rscUrl, interceptionContext = null, mountedSlotsHeader = null, options = {}) {
296
- const match = findPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, options.additionalRscUrls);
297
- if (match === null) return false;
298
- if (match.entry.pending !== void 0 && options.reusePending === false) return false;
299
- if (match.entry.pending !== void 0 || resolvePrefetchCacheEntryExpiresAt(match.entry) > Date.now()) {
300
- touchPrefetchCacheEntry(getPrefetchCache(), match.cacheKey, match.entry);
301
- attachPrefetchInvalidationToEntry(match.cacheKey, match.entry, options.onInvalidate);
302
- options.onReuse?.(match.entry, match.cacheKey);
303
- return true;
304
- }
305
- deletePrefetchCacheEntry(getPrefetchCache(), getPrefetchedUrls(), match.cacheKey, match.entry, options.notifyInvalidation ?? true);
306
- return false;
307
- }
308
- /**
309
- * Return whether the exact learning-only Link prefetch is still usable.
310
- * Pending entries dedupe concurrent Links; settled entries only suppress a
311
- * remount while their response-derived freshness window remains active.
312
- */
313
- function hasFreshLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext = null) {
314
- const cacheKey = AppElementsWire.encodeCacheKey(rscUrl, interceptionContext);
315
- const cache = getPrefetchCache();
316
- const entry = cache.get(cacheKey);
317
- if (entry?.cacheForNavigation !== false) return false;
318
- if (entry.pending !== void 0 || resolvePrefetchCacheEntryExpiresAt(entry) > Date.now()) {
319
- touchPrefetchCacheEntry(cache, cacheKey, entry);
320
- return true;
321
- }
322
- deletePrefetchCacheEntry(cache, getPrefetchedUrls(), cacheKey, entry, true);
323
- return false;
324
- }
325
- function hasSearchAgnosticPrefetchShellForRoute(rscUrl, interceptionContext = null, mountedSlotsHeader = null) {
326
- const normalizedTargetPathname = normalizeRscCacheLookupPathname(rscUrl);
327
- if (normalizedTargetPathname === null) return false;
328
- const cache = getPrefetchCache();
329
- for (const [cacheKey, entry] of cache) {
330
- if (entry.searchAgnosticShell !== true) continue;
331
- const source = parsePrefetchCacheKey(cacheKey);
332
- if (source.interceptionContext !== interceptionContext) continue;
333
- if (normalizeRscCacheLookupPathname(source.rscUrl) !== normalizedTargetPathname) continue;
334
- if (!isPrefetchCacheEntryCompatibleWithMountedSlots(entry, mountedSlotsHeader)) continue;
335
- if (entry.pending !== void 0) return true;
336
- if (resolvePrefetchCacheEntryExpiresAt(entry) > Date.now()) return true;
337
- deletePrefetchCacheEntry(cache, getPrefetchedUrls(), cacheKey, entry, true);
338
- }
339
- return false;
340
- }
341
- function getPrefetchCacheEntrySize(entry) {
342
- return entry.snapshot?.buffer.byteLength ?? entry.size ?? 0;
343
- }
344
- let trackedPrefetchCache = null;
345
- let trackedPrefetchCacheByteSize = 0;
346
- function getPrefetchCacheByteSize(cache) {
347
- if (trackedPrefetchCache === cache) return trackedPrefetchCacheByteSize;
348
- let total = 0;
349
- const seen = /* @__PURE__ */ new Set();
350
- for (const entry of cache.values()) {
351
- if (seen.has(entry)) continue;
352
- seen.add(entry);
353
- total += getPrefetchCacheEntrySize(entry);
354
- }
355
- trackedPrefetchCache = cache;
356
- trackedPrefetchCacheByteSize = total;
357
- return total;
358
- }
359
- function adjustPrefetchCacheByteSize(cache, delta) {
360
- if (trackedPrefetchCache !== cache) return;
361
- trackedPrefetchCacheByteSize = Math.max(0, trackedPrefetchCacheByteSize + delta);
362
- }
363
- function touchPrefetchCacheEntry(cache, cacheKey, entry) {
364
- if (cache.get(cacheKey) !== entry) return;
365
- cache.delete(cacheKey);
366
- cache.set(cacheKey, entry);
367
- for (const key of entry.cacheKeys ?? []) {
368
- if (key === cacheKey || cache.get(key) !== entry) continue;
369
- cache.delete(key);
370
- cache.set(key, entry);
371
- }
372
- }
373
- /**
374
- * Evict prefetch cache entries if buffered payloads exceed the byte budget.
375
- * Sweeps expired entries only after the cheap byte-budget check says cleanup is
376
- * needed, then evicts least-recently-used entries down to the target size.
377
- */
378
- function evictPrefetchCacheIfNeeded() {
379
- const cache = getPrefetchCache();
380
- let totalSize = getPrefetchCacheByteSize(cache);
381
- if (totalSize <= 52428800) return;
382
- const now = Date.now();
383
- const prefetched = getPrefetchedUrls();
384
- for (const [key, entry] of cache) if (resolvePrefetchCacheEntryExpiresAt(entry) <= now) deletePrefetchCacheEntry(cache, prefetched, key, entry, true);
385
- totalSize = getPrefetchCacheByteSize(cache);
386
- if (totalSize <= 52428800) return;
387
- let inspectedEntries = 0;
388
- while (totalSize > PREFETCH_CACHE_EVICTION_TARGET_SIZE && inspectedEntries < cache.size) {
389
- const oldest = cache.keys().next().value;
390
- if (oldest !== void 0) {
391
- const entry = cache.get(oldest);
392
- if (entry) {
393
- const entrySize = getPrefetchCacheEntrySize(entry);
394
- if (entry.pending !== void 0 && entrySize === 0) {
395
- touchPrefetchCacheEntry(cache, oldest, entry);
396
- inspectedEntries += 1;
397
- continue;
398
- }
399
- totalSize -= entrySize;
400
- deletePrefetchCacheEntry(cache, prefetched, oldest, entry, true);
401
- inspectedEntries = 0;
402
- } else {
403
- cache.delete(oldest);
404
- prefetched.delete(oldest);
405
- inspectedEntries += 1;
406
- }
407
- } else break;
408
- }
409
- }
410
- const pendingPrefetchSetups = /* @__PURE__ */ new Set();
411
- function beginPrefetchSetup(destination) {
412
- const setup = {
413
- destination,
414
- cancelled: false
415
- };
416
- pendingPrefetchSetups.add(setup);
417
- return setup;
418
- }
419
- /** Passing `null` cancels every pending setup regardless of destination. */
420
- function cancelPendingPrefetchSetups(destination) {
421
- for (const setup of pendingPrefetchSetups) if (destination === null || setup.destination === destination) setup.cancelled = true;
422
- }
423
- /**
424
- * Normalize a navigation or prefetch target to the browser href both sides
425
- * compare on. Returns null when the target is not same-origin — no same-origin
426
- * prefetch can be a duplicate of it — and on the server, where
427
- * `navigateClientSide` can still be reached but there is nothing to cancel.
428
- */
429
- function toAppPrefetchDestination(href) {
430
- if (isServer) return null;
431
- let localHref = href;
432
- if (isExternalUrl(href)) {
433
- const localPath = toSameOriginAppPath(href, __basePath);
434
- if (localPath == null) return null;
435
- localHref = localPath;
436
- }
437
- const browserHref = toCanonicalBrowserNavigationHref(localHref, window.location.href, __basePath, __trailingSlash);
438
- try {
439
- return formatRscRequestPath(new URL(browserHref, window.location.href));
440
- } catch {
441
- return browserHref.split("#", 1)[0];
442
- }
443
- }
444
- function clearPrefetchInvalidation(entry) {
445
- if (entry.invalidationTimer !== void 0) {
446
- clearTimeout(entry.invalidationTimer);
447
- entry.invalidationTimer = void 0;
448
- }
449
- }
450
- function runInvalidationCallback(onInvalidate) {
451
- try {
452
- onInvalidate();
453
- } catch (error) {
454
- if (typeof reportError === "function") reportError(error);
455
- else console.error(error);
456
- }
457
- }
458
- function notifyPrefetchInvalidated(entry) {
459
- clearPrefetchInvalidation(entry);
460
- const callbacks = entry.onInvalidateCallbacks;
461
- entry.onInvalidateCallbacks = void 0;
462
- if (callbacks === void 0) return;
463
- for (const onInvalidate of callbacks) runInvalidationCallback(onInvalidate);
464
- }
465
- const retainedPrefetchInvalidations = /* @__PURE__ */ new Set();
466
- function retainPrefetchInvalidationAfterConsume(entry) {
467
- const callbacks = entry.onInvalidateCallbacks;
468
- if (callbacks === void 0 || callbacks.size === 0) return;
469
- retainPrefetchInvalidation(callbacks, resolvePrefetchCacheEntryExpiresAt(entry));
470
- }
471
- function retainPrefetchInvalidation(callbacks, expiresAt, forVisitedResponse = false) {
472
- const delay = Math.max(0, expiresAt - Date.now());
473
- const retained = {
474
- callbacks,
475
- ...forVisitedResponse ? { forVisitedResponse: true } : {},
476
- timer: setTimeout(() => fireRetainedPrefetchInvalidation(retained), delay)
477
- };
478
- retainedPrefetchInvalidations.add(retained);
479
- }
480
- function fireRetainedPrefetchInvalidation(retained) {
481
- if (!retainedPrefetchInvalidations.delete(retained)) return;
482
- clearTimeout(retained.timer);
483
- for (const onInvalidate of retained.callbacks) runInvalidationCallback(onInvalidate);
484
- }
485
- function deletePrefetchCacheEntry(cache, prefetched, cacheKey, entry, notify) {
486
- const cacheKeys = entry.cacheKeys ?? /* @__PURE__ */ new Set([cacheKey]);
487
- let removedOwnedKey = false;
488
- for (const key of cacheKeys) if (cache.get(key) === entry) {
489
- cache.delete(key);
490
- prefetched.delete(key);
491
- removedOwnedKey = true;
492
- }
493
- if (!removedOwnedKey) return;
494
- adjustPrefetchCacheByteSize(cache, -getPrefetchCacheEntrySize(entry));
495
- entry.cacheKeys = void 0;
496
- if (notify) notifyPrefetchInvalidated(entry);
497
- else {
498
- clearPrefetchInvalidation(entry);
499
- entry.onInvalidateCallbacks = void 0;
500
- }
501
- }
502
- function discardLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext = null, mountedSlotsHeader = null) {
503
- const cache = getPrefetchCache();
504
- const prefetched = getPrefetchedUrls();
505
- const normalizedTarget = normalizeRscCacheLookupUrl(rscUrl);
506
- if (normalizedTarget === null) return false;
507
- const superseded = [];
508
- for (const [cacheKey, entry] of cache) {
509
- if (entry.cacheForNavigation !== false || entry.prefetchKind !== "navigation") continue;
510
- const source = parsePrefetchCacheKey(cacheKey);
511
- if (source.interceptionContext !== interceptionContext) continue;
512
- if (normalizeRscCacheLookupUrl(source.rscUrl) !== normalizedTarget) continue;
513
- if (!isPrefetchCacheEntryCompatibleWithMountedSlots(entry, mountedSlotsHeader)) continue;
514
- superseded.push([cacheKey, entry]);
515
- }
516
- for (const [cacheKey, entry] of superseded) {
517
- cancelAppPrefetchFetch(entry.fetchPromise);
518
- deletePrefetchCacheEntry(cache, prefetched, cacheKey, entry, true);
519
- }
520
- return superseded.length > 0;
521
- }
522
- /**
523
- * Make a prefetch reusable by a navigation, as an `unstable_dynamicOnHover`
524
- * hover does. A pending one that would be kept as learning-only becomes a full
525
- * prefetch and takes the full-prefetch lifetime. One already kept as
526
- * learning-only because its page rendered dynamically is left for the full
527
- * prefetch to replace: Next.js refetches it with `FetchStrategy.Full`, so the
528
- * page reflects the cookies and headers at hover time.
529
- */
530
- function promotePrefetchCacheEntryForNavigation(cacheKey, entry) {
531
- if (entry.dynamicStaleTime !== "learning-only") {
532
- entry.cacheForNavigation = true;
533
- return;
534
- }
535
- if (entry.cacheForNavigation === false) return;
536
- entry.dynamicStaleTime = "full-prefetch";
537
- if (entry.snapshot === void 0) return;
538
- entry.expiresAt = resolvePrefetchedRscResponseExpiresAt(entry.timestamp, entry.snapshot, entry.fallbackTtlMs ?? PREFETCH_CACHE_TTL, "full-prefetch");
539
- schedulePrefetchInvalidation(cacheKey, entry);
540
- }
541
- function invalidatePrefetchCacheEntry(cacheKey) {
542
- const cache = getPrefetchCache();
543
- const entry = cache.get(cacheKey);
544
- if (!entry) return;
545
- deletePrefetchCacheEntry(cache, getPrefetchedUrls(), cacheKey, entry, true);
546
- }
547
- function schedulePrefetchInvalidation(cacheKey, entry) {
548
- if (entry.onInvalidateCallbacks === void 0 || entry.onInvalidateCallbacks.size === 0) return;
549
- clearPrefetchInvalidation(entry);
550
- const delay = Math.max(0, resolvePrefetchCacheEntryExpiresAt(entry) - Date.now());
551
- entry.invalidationTimer = setTimeout(() => {
552
- invalidatePrefetchCacheEntry(cacheKey);
553
- }, delay);
554
- }
555
- function addPrefetchInvalidationCallback(entry, onInvalidate) {
556
- if (onInvalidate === void 0) return;
557
- if (entry.onInvalidateCallbacks === void 0) entry.onInvalidateCallbacks = /* @__PURE__ */ new Set();
558
- entry.onInvalidateCallbacks.add(onInvalidate);
559
- }
560
- /**
561
- * Attach `onInvalidate` to an entry the caller already holds. A settled entry
562
- * needs its invalidation timer started here — nothing else will schedule one
563
- * once `prefetchRscResponse` has finished with it.
564
- */
565
- function attachPrefetchInvalidationToEntry(cacheKey, entry, onInvalidate) {
566
- if (onInvalidate === void 0) return;
567
- addPrefetchInvalidationCallback(entry, onInvalidate);
568
- if (entry.outcome === "cache-seeded") schedulePrefetchInvalidation(cacheKey, entry);
569
- }
570
- function attachPrefetchInvalidationCallback(cacheKey, onInvalidate) {
571
- if (onInvalidate === void 0) return;
572
- const entry = getPrefetchCache().get(cacheKey);
573
- if (!entry) return;
574
- attachPrefetchInvalidationToEntry(cacheKey, entry, onInvalidate);
575
- }
576
- function invalidatePrefetchCache(options = {}) {
577
- cancelPendingPrefetchSetups(null);
578
- const cache = getPrefetchCache();
579
- const prefetched = getPrefetchedUrls();
580
- for (const [cacheKey, entry] of cache) deletePrefetchCacheEntry(cache, prefetched, cacheKey, entry, true);
581
- prefetched.clear();
582
- for (const retained of retainedPrefetchInvalidations) fireRetainedPrefetchInvalidation(retained);
583
- if (!isServer && options.pingVisibleLinks !== false) getNavigationRuntime()?.functions.pingVisibleLinks?.();
584
- }
585
- /**
586
- * Evict the prefetch entries that may hold dynamic data, for a Server Action
587
- * that called `refresh()`. Like Next.js's dynamic-only revalidation, which
588
- * evicts its BFCache but keeps its prefetch cache, this keeps route trees,
589
- * static prefetches and full prefetches. It drops navigation responses, and
590
- * automatic prefetches whose page rendered dynamically or hasn't finished
591
- * rendering, including those only kept to learn a route: Next.js's automatic
592
- * prefetches never hold dynamic data.
593
- */
594
- function invalidateDynamicPrefetchCache() {
595
- const cache = getPrefetchCache();
596
- const prefetched = getPrefetchedUrls();
597
- const evicted = [];
598
- for (const [cacheKey, entry] of cache) if (!(entry.prefetchKind === "route-tree" || entry.prefetchKind !== void 0 && (entry.dynamicStaleTime === "full-prefetch" || entry.snapshot !== void 0 && !isStaleTimeSeconds(entry.snapshot.dynamicStaleTimeSeconds)))) evicted.push([cacheKey, entry]);
599
- for (const [cacheKey, entry] of evicted) deletePrefetchCacheEntry(cache, prefetched, cacheKey, entry, true);
600
- }
601
- /**
602
- * Notify the prefetches that stood in for a visited response (see
603
- * `hasNavigationFreshVisitedResponse`), as the visited responses are cleared.
604
- */
605
- function invalidateVisitedResponsePrefetches() {
606
- for (const retained of retainedPrefetchInvalidations) if (retained.forVisitedResponse === true) fireRetainedPrefetchInvalidation(retained);
607
- }
608
- /**
609
- * Prevent completed navigation responses from becoming authoritative again
610
- * after restoring a history snapshot. Explicit Link/router prefetches remain
611
- * consumable. Responses with a positive cache lifetime and interception
612
- * responses retain the cache reuse licensed by Next's segment cache.
613
- */
614
- function disableNavigationResponsePrefetchCacheReuse() {
615
- let didDemote = false;
616
- for (const entry of new Set(getPrefetchCache().values())) if (entry.prefetchKind === void 0 && entry.reuseAfterHistoryRestore !== true) {
617
- didDemote ||= entry.cacheForNavigation !== false;
618
- entry.cacheForNavigation = false;
619
- }
620
- if (didDemote && !isServer) getNavigationRuntime()?.functions.pingVisibleLinks?.();
621
- }
622
- function seedPrefetchResponseSnapshot(rscUrl, snapshot, interceptionContext = null, mountedSlotsHeader = null, fallbackTtlMs = DYNAMIC_NAVIGATION_CACHE_TTL, reuseAfterHistoryRestore = false, expiresAt = resolveCachedRscResponseExpiresAt(Date.now(), snapshot, fallbackTtlMs)) {
623
- const cacheKey = AppElementsWire.encodeCacheKey(rscUrl, interceptionContext);
624
- const cache = getPrefetchCache();
625
- const existing = cache.get(cacheKey);
626
- if (existing) deletePrefetchCacheEntry(cache, getPrefetchedUrls(), cacheKey, existing, false);
627
- const timestamp = Date.now();
628
- const entry = {
629
- cacheForNavigation: true,
630
- cacheKeys: /* @__PURE__ */ new Set([cacheKey]),
631
- expiresAt,
632
- mountedSlotsHeader,
633
- outcome: "cache-seeded",
634
- reuseAfterHistoryRestore,
635
- size: snapshot.buffer.byteLength,
636
- snapshot,
637
- timestamp
638
- };
639
- cache.set(cacheKey, entry);
640
- adjustPrefetchCacheByteSize(cache, snapshot.buffer.byteLength);
641
- getPrefetchedUrls().add(cacheKey);
642
- schedulePrefetchInvalidation(cacheKey, entry);
643
- evictPrefetchCacheIfNeeded();
644
- }
645
- /**
646
- * Fulfill a full prefetch from the visited response of an earlier navigation,
647
- * as Next.js does from its BFCache, instead of issuing a request. The data is
648
- * fresh for the static stale time from the navigation, not the dynamic one
649
- * (`attemptToFulfillDynamicSegmentFromBFCache`).
650
- */
651
- function seedFullPrefetchFromVisitedResponse(rscUrl, interceptionContext, mountedSlotsHeader, additionalRscUrls = [], onInvalidate) {
652
- const visited = getNavigationRuntime()?.functions.readVisitedResponseForFullPrefetch?.([rscUrl, ...additionalRscUrls], interceptionContext, mountedSlotsHeader);
653
- if (!visited) return false;
654
- const expiresAt = visited.navigatedAt + Math.max(PREFETCH_CACHE_TTL, MIN_PREFETCH_STALE_TIME_MS);
655
- if (expiresAt <= Date.now()) return false;
656
- seedPrefetchResponseSnapshot(rscUrl, visited.response, interceptionContext, mountedSlotsHeader, void 0, true, expiresAt);
657
- const cacheKey = AppElementsWire.encodeCacheKey(rscUrl, interceptionContext);
658
- if (getPrefetchCache().get(cacheKey)?.snapshot !== visited.response) return false;
659
- attachPrefetchInvalidationCallback(cacheKey, onInvalidate);
660
- return true;
661
- }
662
- /**
663
- * Whether a navigation to the URL would reuse the response of an earlier one,
664
- * so a prefetch has nothing to fetch. Like Next.js, whose navigation keeps the
665
- * route and its segments for `staleTimes.dynamic`. `onInvalidate` fires when
666
- * that reuse ends.
667
- */
668
- function hasNavigationFreshVisitedResponse(rscUrl, interceptionContext, mountedSlotsHeader, additionalRscUrls = [], onInvalidate) {
669
- const freshUntil = getNavigationRuntime()?.functions.readVisitedResponseForFullPrefetch?.([rscUrl, ...additionalRscUrls], interceptionContext, mountedSlotsHeader)?.navigationFreshUntil;
670
- if (freshUntil === void 0 || freshUntil === null) return false;
671
- if (onInvalidate !== void 0) retainPrefetchInvalidation(/* @__PURE__ */ new Set([onInvalidate]), freshUntil, true);
672
- return true;
673
- }
674
- function deletePrefetchResponseSnapshot(rscUrl, snapshot, interceptionContext = null) {
675
- const cacheKey = AppElementsWire.encodeCacheKey(rscUrl, interceptionContext);
676
- const cache = getPrefetchCache();
677
- const entry = cache.get(cacheKey);
678
- if (entry?.snapshot !== snapshot) return;
679
- deletePrefetchCacheEntry(cache, getPrefetchedUrls(), cacheKey, entry, false);
680
- }
681
- /**
682
- * Store a prefetched RSC response in the cache by snapshotting it to an
683
- * ArrayBuffer. The snapshot completes asynchronously; during that window
684
- * the entry is marked `pending` so consumePrefetchResponse() will skip it
685
- * (the caller falls back to a fresh fetch, which is acceptable).
686
- *
687
- * Prefer prefetchRscResponse() for new call-sites — it handles the full
688
- * prefetch lifecycle including dedup and explicit slot context.
689
- * storePrefetchResponse() is kept for backward compatibility and test
690
- * helpers. It is slot-unaware: the snapshot's mountedSlotsHeader comes
691
- * from the response headers, not the caller, so consumePrefetchResponse
692
- * may reject the entry if the caller's slot context differs.
693
- *
694
- * NB: Caller is responsible for managing getPrefetchedUrls() — this
695
- * function only stores the response in the prefetch cache.
696
- */
697
- function storePrefetchResponse(rscUrl, response, interceptionContext = null, options) {
698
- const cacheKey = AppElementsWire.encodeCacheKey(rscUrl, interceptionContext);
699
- const cache = getPrefetchCache();
700
- const prefetched = getPrefetchedUrls();
701
- const existing = cache.get(cacheKey);
702
- if (existing) deletePrefetchCacheEntry(cache, prefetched, cacheKey, existing, false);
703
- const entry = {
704
- cacheKeys: /* @__PURE__ */ new Set([cacheKey]),
705
- mountedSlotsHeader: null,
706
- outcome: "pending",
707
- timestamp: Date.now()
708
- };
709
- addPrefetchInvalidationCallback(entry, options?.onInvalidate);
710
- entry.pending = snapshotRscResponse(response).then((snapshot) => {
711
- if (cache.get(cacheKey) !== entry) return;
712
- const previousSize = getPrefetchCacheEntrySize(entry);
713
- entry.mountedSlotsHeader = snapshot.mountedSlotsHeader ?? null;
714
- entry.snapshot = snapshot;
715
- entry.size = snapshot.buffer.byteLength;
716
- adjustPrefetchCacheByteSize(cache, entry.size - previousSize);
717
- entry.expiresAt = resolveCachedRscResponseExpiresAt(entry.timestamp, snapshot, PREFETCH_CACHE_TTL);
718
- evictPrefetchCacheIfNeeded();
719
- }).catch(() => {
720
- deletePrefetchCacheEntry(cache, prefetched, cacheKey, entry, false);
721
- }).finally(() => {
722
- if (cache.get(cacheKey) !== entry) return;
723
- entry.pending = void 0;
724
- if (entry.snapshot) {
725
- entry.outcome = "cache-seeded";
726
- schedulePrefetchInvalidation(cacheKey, entry);
727
- }
728
- });
729
- cache.set(cacheKey, entry);
730
- }
731
- function createCachedRscResponseSnapshot(response, buffer, responseUrl = null) {
732
- const headerDynamicStaleTimeSeconds = parseStaleTimeSecondsHeader(response.headers.get(VINEXT_DYNAMIC_STALE_TIME_HEADER));
733
- const completionMode = response.headers.get(VINEXT_RSC_COMPLETION_METADATA_HEADER);
734
- const extracted = completionMode === "1" ? extractRscCompletionMetadata(buffer) : { buffer };
735
- const completedDynamicStaleTimeSeconds = completionMode === "resolved" ? headerDynamicStaleTimeSeconds : extracted.metadata?.dynamicStaleTimeSeconds ?? headerDynamicStaleTimeSeconds;
736
- const dynamicStaleTimeSeconds = completedDynamicStaleTimeSeconds ?? headerDynamicStaleTimeSeconds;
737
- const parsedServerStaleTime = parseServerStaleTimeHeaders(response.headers);
738
- const serverStaleTime = extracted.metadata !== void 0 && Object.hasOwn(extracted.metadata, "serverStaleTimeSeconds") ? extracted.metadata?.serverStaleTimeSeconds === null ? void 0 : {
739
- kind: "resolved",
740
- seconds: extracted.metadata.serverStaleTimeSeconds
741
- } : parsedServerStaleTime;
742
- const redirectHeader = response.headers.get(VINEXT_RSC_REDIRECT_HEADER);
743
- const redirectTypeHeader = response.headers.get(VINEXT_RSC_REDIRECT_TYPE_HEADER);
744
- return {
745
- compatibilityIdHeader: response.headers.get(VINEXT_RSC_COMPATIBILITY_ID_HEADER),
746
- buffer: extracted.buffer,
747
- ...completedDynamicStaleTimeSeconds !== void 0 ? { completedDynamicStaleTimeSeconds } : {},
748
- contentType: response.headers.get("content-type") ?? "text/x-component",
749
- ...dynamicStaleTimeSeconds !== void 0 ? { dynamicStaleTimeSeconds } : {},
750
- mountedSlotsHeader: response.headers.get(VINEXT_MOUNTED_SLOTS_HEADER),
751
- paramsHeader: response.headers.get(VINEXT_PARAMS_HEADER),
752
- receivedAt: Date.now(),
753
- ...redirectHeader === null ? {} : { redirectHeader },
754
- ...redirectTypeHeader === null ? {} : { redirectTypeHeader },
755
- renderedPathAndSearch: parseRenderedPathAndSearchHeader(response.headers.get(VINEXT_RENDERED_PATH_AND_SEARCH_HEADER)),
756
- ...serverStaleTime === void 0 ? {} : { serverStaleTime },
757
- url: responseUrl ?? response.url
758
- };
759
- }
760
- /**
761
- * Collapse the two mutually-exclusive wire headers into one state. A pending
762
- * marker wins: it says the render committed headers before `cacheLife` settled,
763
- * so any resolved value alongside it cannot describe the completed render.
764
- */
765
- function parseServerStaleTimeHeaders(headers) {
766
- if (headers.get("X-Vinext-Stale-Time-Pending") === "1") return { kind: "pending" };
767
- const seconds = parseStaleTimeSecondsHeader(headers.get(NEXT_ROUTER_STALE_TIME_HEADER));
768
- return seconds === void 0 ? void 0 : {
769
- kind: "resolved",
770
- seconds
771
- };
772
- }
773
- /** Decode an `X-Vinext-Rendered-Path-And-Search` header value. */
774
- function parseRenderedPathAndSearchHeader(value) {
775
- if (value === null || value === "") return null;
776
- try {
777
- const decoded = decodeURIComponent(value);
778
- return decoded.startsWith("/") ? decoded : null;
779
- } catch {
780
- return null;
781
- }
782
- }
783
- /**
784
- * Snapshot an RSC response to an ArrayBuffer for caching and replay.
785
- * Consumes the response body and stores it with content-type and URL metadata.
786
- */
787
- async function snapshotRscResponse(response) {
788
- try {
789
- const snapshot = createCachedRscResponseSnapshot(response, await response.arrayBuffer());
790
- const expiresAt = restoredRscResponseExpiresAt.get(response);
791
- return expiresAt === void 0 ? snapshot : {
792
- ...snapshot,
793
- expiresAt
794
- };
795
- } finally {
796
- releaseAppPrefetchFetchSlot(response);
797
- }
798
- }
799
- const restoredRscResponseExpiresAt = /* @__PURE__ */ new WeakMap();
800
- /**
801
- * Reconstruct a Response from a cached RSC snapshot.
802
- * Creates a new Response with the original ArrayBuffer so createFromFetch
803
- * can consume the stream from scratch.
804
- *
805
- * NOTE: The reconstructed Response always has `url === ""` — the Response
806
- * constructor does not accept a `url` option, and `response.url` is read-only
807
- * set by the fetch infrastructure. Callers that need the original URL should
808
- * read it from `cached.url` directly rather than from the restored Response.
809
- *
810
- * @param copy - When true (default), copies the ArrayBuffer so the cached
811
- * snapshot remains replayable (needed for the visited-response cache).
812
- * Pass false for single-consumption paths (e.g. prefetch cache entries
813
- * that are deleted after consumption) to avoid the extra allocation.
814
- */
815
- function restoreRscResponse(cached, copy = true) {
816
- const headers = new Headers({ "content-type": cached.contentType });
817
- if (cached.mountedSlotsHeader != null) headers.set(VINEXT_MOUNTED_SLOTS_HEADER, cached.mountedSlotsHeader);
818
- if (cached.compatibilityIdHeader != null) headers.set(VINEXT_RSC_COMPATIBILITY_ID_HEADER, cached.compatibilityIdHeader);
819
- if (isStaleTimeSeconds(cached.dynamicStaleTimeSeconds)) headers.set(VINEXT_DYNAMIC_STALE_TIME_HEADER, String(cached.dynamicStaleTimeSeconds));
820
- if (isStaleTimeSeconds(cached.completedDynamicStaleTimeSeconds)) headers.set(VINEXT_RSC_COMPLETION_METADATA_HEADER, "resolved");
821
- if (cached.serverStaleTime?.kind === "pending") headers.set(VINEXT_STALE_TIME_PENDING_HEADER, "1");
822
- else if (cached.serverStaleTime !== void 0) headers.set(NEXT_ROUTER_STALE_TIME_HEADER, String(cached.serverStaleTime.seconds));
823
- if (cached.paramsHeader != null) headers.set(VINEXT_PARAMS_HEADER, cached.paramsHeader);
824
- if (cached.redirectHeader !== void 0) headers.set(VINEXT_RSC_REDIRECT_HEADER, cached.redirectHeader);
825
- if (cached.redirectTypeHeader !== void 0) headers.set(VINEXT_RSC_REDIRECT_TYPE_HEADER, cached.redirectTypeHeader);
826
- if (cached.renderedPathAndSearch != null) headers.set(VINEXT_RENDERED_PATH_AND_SEARCH_HEADER, encodeURIComponent(cached.renderedPathAndSearch));
827
- const response = new Response(copy ? cached.buffer.slice(0) : cached.buffer, {
828
- status: 200,
829
- headers
830
- });
831
- if (isCacheExpiresAt(cached.expiresAt)) restoredRscResponseExpiresAt.set(response, cached.expiresAt);
832
- return response;
833
- }
834
- /**
835
- * `prefetchRscResponse`'s `prepareSnapshot` for navigation-reusable entries:
836
- * decode the cached payload through the App Router runtime so a later
837
- * navigation can commit it without re-parsing. Shared by `<Link>` and
838
- * `router.prefetch()`.
839
- */
840
- async function prepareNavigationPrefetchSnapshot(snapshot) {
841
- const preparePrefetchResponse = getNavigationRuntime()?.functions.preparePrefetchResponse;
842
- if (!preparePrefetchResponse) throw new Error("App Router prefetch preparation is unavailable");
843
- return await preparePrefetchResponse(restoreRscResponse(snapshot));
844
- }
845
- /**
846
- * Gate a navigation-reusable prefetch behind the route-tree request shared by
847
- * `<Link>` and `router.prefetch()`. Callers retain control of fetch scheduling
848
- * and request-only options while freshness, deduplication, and alias reuse stay
849
- * identical across both entry points.
850
- */
851
- async function fetchRouteTreeGatedPrefetch(options) {
852
- const { fetchFullRscPayload, fetchRouteTree, fullHref, headers, interceptionContext, mountedSlotsHeader } = options;
853
- const routeTreeHeaders = new Headers(headers);
854
- routeTreeHeaders.set(NEXT_ROUTER_PREFETCH_HEADER, "1");
855
- routeTreeHeaders.set(NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, "/_tree");
856
- const routeTreeRscUrl = await createRscRequestUrl(fullHref, routeTreeHeaders);
857
- const routeTreeCacheKey = AppElementsWire.encodeCacheKey(routeTreeRscUrl, interceptionContext);
858
- let routeTreeEntry = getFreshPrefetchCacheEntry(routeTreeCacheKey);
859
- if (routeTreeEntry === void 0) {
860
- getPrefetchedUrls().add(routeTreeCacheKey);
861
- prefetchRscResponse(routeTreeRscUrl, fetchRouteTree(routeTreeRscUrl, routeTreeHeaders), interceptionContext, mountedSlotsHeader, void 0, {
862
- cacheForNavigation: false,
863
- optimisticRouteShell: false,
864
- prefetchKind: "route-tree"
865
- });
866
- routeTreeEntry = getFreshPrefetchCacheEntry(routeTreeCacheKey);
867
- }
868
- await routeTreeEntry?.pending?.catch(() => {});
869
- routeTreeEntry = getFreshPrefetchCacheEntry(routeTreeCacheKey);
870
- const renderedPathAndSearch = routeTreeEntry?.snapshot?.renderedPathAndSearch;
871
- if (renderedPathAndSearch) {
872
- const cachedRenderedResponse = peekPrefetchResponseForNavigation(await createRscRequestUrl(renderedPathAndSearch, headers), interceptionContext, mountedSlotsHeader);
873
- if (cachedRenderedResponse) return restoreRscResponse(cachedRenderedResponse);
874
- }
875
- return fetchFullRscPayload();
876
- }
877
- /**
878
- * Whether a prefetch response may be decoded as Flight. A successful response
879
- * that is not Flight (e.g. a Route Handler's text download) is a miss: decoding
880
- * its bytes would let text shaped like Flight resource hints insert scripts.
881
- * Navigation then fetches it and falls back to a document navigation.
882
- *
883
- * Ported from Next.js: fetchPrefetchResponse in
884
- * packages/next/src/client/components/segment-cache/cache.ts, which skips the
885
- * check in `output: "export"` because a static host, not Next.js, chooses the
886
- * MIME type of the exported `.txt` payloads.
887
- */
888
- function isFlightPrefetchResponse(response) {
889
- if (!response.ok) return false;
890
- if (process.env.NODE_ENV === "production" && process.env.__NEXT_CONFIG_OUTPUT === "export") return true;
891
- return response.headers.get("content-type")?.toLowerCase().startsWith(VINEXT_RSC_CONTENT_TYPE) === true;
892
- }
893
- /**
894
- * Prefetch an RSC response and snapshot it for later consumption.
895
- * Stores the in-flight promise so immediate clicks can await it instead
896
- * of firing a duplicate fetch.
897
- * Enforces a maximum cache size to prevent unbounded memory growth on
898
- * link-heavy pages.
899
- */
900
- function prefetchRscResponse(rscUrl, fetchPromise, interceptionContext = null, mountedSlotsHeader = null, options, behavior = {}) {
901
- const cacheKey = AppElementsWire.encodeCacheKey(rscUrl, interceptionContext);
902
- const cache = getPrefetchCache();
903
- const prefetched = getPrefetchedUrls();
904
- const now = Date.now();
905
- const existing = cache.get(cacheKey);
906
- const cacheForNavigation = behavior.cacheForNavigation ?? true;
907
- if (existing) deletePrefetchCacheEntry(cache, prefetched, cacheKey, existing, false);
908
- const entry = {
909
- cacheForNavigation,
910
- cacheKeys: /* @__PURE__ */ new Set([cacheKey]),
911
- mountedSlotsHeader,
912
- optimisticRouteShell: behavior.optimisticRouteShell === true,
913
- outcome: "pending",
914
- prefetchKind: behavior.prefetchKind ?? (behavior.optimisticRouteShell === true ? "loading-shell" : "navigation"),
915
- searchAgnosticShell: behavior.searchAgnosticShell === true,
916
- timestamp: now
917
- };
918
- if (behavior.dynamicStaleTime === "learning-only" && behavior.searchAgnosticShell !== true) {
919
- entry.dynamicStaleTime = "learning-only";
920
- entry.fallbackTtlMs = behavior.fallbackTtlMs ?? PREFETCH_CACHE_TTL;
921
- } else if (behavior.dynamicStaleTime === "full-prefetch") entry.dynamicStaleTime = "full-prefetch";
922
- addPrefetchInvalidationCallback(entry, options?.onInvalidate);
923
- entry.fetchPromise = fetchPromise;
924
- entry.pending = fetchPromise.then(async (response) => {
925
- if (isFlightPrefetchResponse(response)) {
926
- const snapshot = await snapshotRscResponse(response);
927
- if (cache.get(cacheKey) !== entry) return;
928
- const previousSize = getPrefetchCacheEntrySize(entry);
929
- entry.snapshot = snapshot;
930
- entry.size = snapshot.buffer.byteLength;
931
- adjustPrefetchCacheByteSize(cache, entry.size - previousSize);
932
- const fallbackTtlMs = behavior.fallbackTtlMs ?? PREFETCH_CACHE_TTL;
933
- const dynamicStaleTime = behavior.searchAgnosticShell === true ? "ignore" : entry.dynamicStaleTime ?? behavior.dynamicStaleTime ?? (behavior.optimisticRouteShell === true ? "ignore" : "verbatim");
934
- if (dynamicStaleTime === "learning-only" && isStaleTimeSeconds(snapshot.dynamicStaleTimeSeconds)) {
935
- entry.cacheForNavigation = false;
936
- entry.expiresAt = entry.timestamp + Math.max(fallbackTtlMs, MIN_PREFETCH_STALE_TIME_MS);
937
- } else entry.expiresAt = resolvePrefetchedRscResponseExpiresAt(entry.timestamp, entry.snapshot, fallbackTtlMs, dynamicStaleTime === "learning-only" ? "verbatim" : dynamicStaleTime);
938
- if (behavior.prepareSnapshot && entry.cacheForNavigation && snapshot.redirectHeader === void 0) try {
939
- const preparedElements = await behavior.prepareSnapshot(snapshot);
940
- if (cache.get(cacheKey) !== entry) return;
941
- entry.preparedElements = preparedElements;
942
- } catch {}
943
- addRenderedPathAndSearchPrefetchAlias(cache, prefetched, cacheKey, entry);
944
- evictPrefetchCacheIfNeeded();
945
- } else {
946
- releaseAppPrefetchFetchSlot(response);
947
- response.body?.cancel().catch(() => {});
948
- deletePrefetchCacheEntry(cache, prefetched, cacheKey, entry, false);
949
- }
950
- }).catch(() => {
951
- deletePrefetchCacheEntry(cache, prefetched, cacheKey, entry, false);
952
- }).finally(() => {
953
- if (cache.get(cacheKey) !== entry) return;
954
- entry.pending = void 0;
955
- entry.fetchPromise = void 0;
956
- if (entry.snapshot) {
957
- entry.outcome = "cache-seeded";
958
- schedulePrefetchInvalidation(cacheKey, entry);
959
- }
960
- });
961
- cache.set(cacheKey, entry);
962
- evictPrefetchCacheIfNeeded();
963
- }
964
- function addRenderedPathAndSearchPrefetchAlias(cache, prefetched, primaryCacheKey, entry) {
965
- if (entry.cacheForNavigation === false) return;
966
- const renderedPathAndSearch = entry.snapshot?.renderedPathAndSearch;
967
- if (!renderedPathAndSearch) return;
968
- const source = parsePrefetchCacheKey(primaryCacheKey);
969
- const aliasCacheKey = AppElementsWire.encodeCacheKey(renderedPathAndSearch, source.interceptionContext);
970
- if (aliasCacheKey === primaryCacheKey) return;
971
- const existing = cache.get(aliasCacheKey);
972
- if (existing && existing !== entry) deletePrefetchCacheEntry(cache, prefetched, aliasCacheKey, existing, false);
973
- entry.cacheKeys ??= /* @__PURE__ */ new Set([primaryCacheKey]);
974
- entry.cacheKeys.add(aliasCacheKey);
975
- cache.set(aliasCacheKey, entry);
976
- prefetched.add(aliasCacheKey);
977
- }
978
- function peekPrefetchResponseForNavigation(rscUrl, interceptionContext = null, mountedSlotsHeader = null, options) {
979
- const match = findPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, options?.additionalRscUrls);
980
- if (!match) return null;
981
- const { cacheKey, entry } = match;
982
- if (entry.pending || entry.outcome !== "cache-seeded") return null;
983
- if (entry.cacheForNavigation === false || !entry.snapshot) return null;
984
- if (resolvePrefetchCacheEntryExpiresAt(entry) <= Date.now()) {
985
- deletePrefetchCacheEntry(getPrefetchCache(), getPrefetchedUrls(), cacheKey, entry, true);
986
- return null;
987
- }
988
- if (entry.expiresAt !== void 0 || entry.snapshot.expiresAt !== void 0) return {
989
- ...entry.snapshot,
990
- expiresAt: resolvePrefetchCacheEntryExpiresAt(entry)
991
- };
992
- return entry.snapshot;
993
- }
994
- /**
995
- * Consume a prefetched response for a given rscUrl.
996
- * Only returns settled (non-pending) snapshots synchronously.
997
- * Returns null if the entry is still in flight or doesn't exist.
998
- */
999
- function consumePrefetchResponse(rscUrl, interceptionContext = null, mountedSlotsHeader = null, options) {
1000
- const cache = getPrefetchCache();
1001
- const exactCacheKey = AppElementsWire.encodeCacheKey(rscUrl, interceptionContext);
1002
- const exactEntry = cache.get(exactCacheKey);
1003
- if (exactEntry && exactEntry.cacheForNavigation !== false && !isPrefetchCacheEntryCompatibleWithMountedSlots(exactEntry, mountedSlotsHeader)) deletePrefetchCacheEntry(cache, getPrefetchedUrls(), exactCacheKey, exactEntry, false);
1004
- const match = findPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, options?.additionalRscUrls);
1005
- if (!match) return null;
1006
- const { cacheKey, entry } = match;
1007
- return consumeMatchedPrefetchResponse(cacheKey, entry, mountedSlotsHeader);
1008
- }
1009
- function consumeMatchedPrefetchResponse(cacheKey, entry, mountedSlotsHeader, allowExpiredInFlightHandoff = false) {
1010
- const cache = getPrefetchCache();
1011
- if (entry.pending || entry.outcome !== "cache-seeded") return null;
1012
- if (entry.cacheForNavigation === false) return null;
1013
- if (entry.snapshot) {
1014
- if (!isPrefetchCacheEntryCompatibleWithMountedSlots(entry, mountedSlotsHeader)) return null;
1015
- if (!allowExpiredInFlightHandoff && resolvePrefetchCacheEntryExpiresAt(entry) <= Date.now()) {
1016
- deletePrefetchCacheEntry(cache, getPrefetchedUrls(), cacheKey, entry, true);
1017
- return null;
1018
- }
1019
- retainPrefetchInvalidationAfterConsume(entry);
1020
- deletePrefetchCacheEntry(cache, getPrefetchedUrls(), cacheKey, entry, false);
1021
- const snapshot = entry.snapshot;
1022
- if (entry.expiresAt !== void 0 || entry.snapshot.expiresAt !== void 0) return {
1023
- ...snapshot,
1024
- expiresAt: resolvePrefetchCacheEntryExpiresAt(entry),
1025
- ...entry.preparedElements ? { preparedElements: entry.preparedElements } : {}
1026
- };
1027
- return entry.preparedElements ? {
1028
- ...snapshot,
1029
- preparedElements: entry.preparedElements
1030
- } : snapshot;
1031
- }
1032
- return null;
1033
- }
1034
- async function consumePrefetchResponseForNavigation(rscUrl, interceptionContext = null, mountedSlotsHeader = null, options) {
1035
- const cache = getPrefetchCache();
1036
- const match = findPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, options?.additionalRscUrls);
1037
- if (!match) return null;
1038
- const { cacheKey, entry } = match;
1039
- if (options?.shouldConsume?.() === false) return null;
1040
- const allowExpiredInFlightHandoff = entry.pending !== void 0;
1041
- if (entry.pending !== void 0) {
1042
- const releaseClaim = promoteAppPrefetchFetch(entry.fetchPromise, options?.shouldConsume);
1043
- try {
1044
- await entry.pending.catch(() => {});
1045
- } finally {
1046
- releaseClaim();
1047
- }
1048
- if (cache.get(cacheKey) !== entry) return null;
1049
- if (options?.shouldConsume?.() === false) return null;
1050
- }
1051
- return consumeMatchedPrefetchResponse(cacheKey, entry, mountedSlotsHeader, allowExpiredInFlightHandoff);
1052
- }
1053
47
  const _CLIENT_NAV_STATE_KEY = Symbol.for("vinext.clientNavigationState");
1054
- const _MOUNTED_SLOTS_HEADER_KEY = Symbol.for("vinext.mountedSlotsHeader");
1055
- function setMountedSlotsHeader(header) {
1056
- if (isServer) return;
1057
- const globalState = window;
1058
- globalState[_MOUNTED_SLOTS_HEADER_KEY] = header;
1059
- }
1060
- function getMountedSlotsHeader() {
1061
- if (isServer) return null;
1062
- return window[_MOUNTED_SLOTS_HEADER_KEY] ?? null;
1063
- }
1064
48
  function getClientNavigationState() {
1065
49
  if (isServer) return null;
1066
50
  const globalState = window;
@@ -1382,16 +366,6 @@ function useParams() {
1382
366
  if (renderSnapshot && (getClientNavigationState()?.navigationSnapshotActiveCount ?? 0) > 0) return renderSnapshot.params;
1383
367
  return params;
1384
368
  }
1385
- function withSuppressedUrlNotifications(fn) {
1386
- const state = getClientNavigationState();
1387
- if (!state) return fn();
1388
- state.suppressUrlNotifyCount += 1;
1389
- try {
1390
- return fn();
1391
- } finally {
1392
- state.suppressUrlNotifyCount -= 1;
1393
- }
1394
- }
1395
369
  /**
1396
370
  * Commit pending client navigation state to committed snapshots.
1397
371
  *
@@ -1423,509 +397,6 @@ function commitClientNavigationState(navId, options) {
1423
397
  if (urlChanged || paramsChanged) clearClientHydrationContext();
1424
398
  if (shouldNotify) notifyNavigationListeners();
1425
399
  }
1426
- /** Whether a history entry's state is the data written to it, cloned by the browser. */
1427
- function isSameHistoryStateData(historyState, data) {
1428
- try {
1429
- return JSON.stringify(historyState) === JSON.stringify(data);
1430
- } catch {
1431
- return false;
1432
- }
1433
- }
1434
- /** Writes the in-progress router write if this call is it, consuming its marker. */
1435
- function forwardRouterHistoryWrite(state, method, data, unused, url) {
1436
- const write = state.routerHistoryWrite;
1437
- if (write?.method !== method) return false;
1438
- if (write.threw) {
1439
- if (url == null || new URL(url, window.location.href).href !== write.href) return false;
1440
- if (write.data !== data && !(isAppOwnedHistoryState(data) && readHistoryStateTraversalIndex(data) === readHistoryStateTraversalIndex(write.data))) return false;
1441
- } else if (write.data !== data || write.url !== url) return false;
1442
- if (write.landed) return true;
1443
- state.routerHistoryWrite = null;
1444
- const landing = write.land?.(data);
1445
- const original = method === "pushState" ? state.originalPushState : state.originalReplaceState;
1446
- const writtenData = landing ? landing.data : data;
1447
- const historyStateBeforeWrite = window.history.state;
1448
- try {
1449
- original.call(window.history, writtenData, unused, url);
1450
- } catch (error) {
1451
- const landed = window.history.state !== historyStateBeforeWrite && window.location.href === write.href && isSameHistoryStateData(window.history.state, writtenData);
1452
- if (landed) landing?.commit();
1453
- state.routerHistoryWrite = {
1454
- ...write,
1455
- threw: true,
1456
- landed
1457
- };
1458
- throw error;
1459
- }
1460
- landing?.commit();
1461
- if (write.threw) state.routerHistoryWrite = {
1462
- ...write,
1463
- landed: true
1464
- };
1465
- return true;
1466
- }
1467
- function writeRouterHistoryState(method, data, unused, url, land) {
1468
- withSuppressedUrlNotifications(() => {
1469
- const state = getClientNavigationState();
1470
- if (!state) return;
1471
- if (url == null) {
1472
- (method === "pushState" ? state.originalPushState : state.originalReplaceState).call(window.history, data, unused, url);
1473
- return;
1474
- }
1475
- const previousWrite = state.routerHistoryWrite;
1476
- state.routerHistoryWriteDepth += 1;
1477
- state.routerHistoryWrite = {
1478
- method,
1479
- data,
1480
- url,
1481
- href: new URL(url, window.location.href).href,
1482
- land,
1483
- threw: false,
1484
- landed: false
1485
- };
1486
- try {
1487
- window.history[method](data, unused, url);
1488
- } finally {
1489
- state.routerHistoryWriteDepth -= 1;
1490
- state.routerHistoryWrite = previousWrite;
1491
- }
1492
- });
1493
- }
1494
- function pushHistoryStateWithoutNotify(data, unused, url, land) {
1495
- writeRouterHistoryState("pushState", data, unused, url, land);
1496
- }
1497
- function replaceHistoryStateWithoutNotify(data, unused, url, land) {
1498
- writeRouterHistoryState("replaceState", data, unused, url, land);
1499
- }
1500
- /**
1501
- * Save the current scroll position into the current history state.
1502
- * Called before every navigation to enable scroll restoration on back/forward.
1503
- *
1504
- * Uses replaceHistoryStateWithoutNotify to avoid triggering the patched
1505
- * history.replaceState interception (which would cause spurious re-renders).
1506
- */
1507
- function saveScrollPosition() {
1508
- replaceHistoryStateWithoutNotify({
1509
- ...window.history.state ?? {},
1510
- __vinext_scrollX: window.scrollX,
1511
- __vinext_scrollY: window.scrollY
1512
- }, "");
1513
- }
1514
- function commitHashOnlyHistoryState(href, mode, scroll) {
1515
- const commitAppRouterHashNavigation = getNavigationRuntime()?.functions.commitHashNavigation;
1516
- if (commitAppRouterHashNavigation) {
1517
- commitAppRouterHashNavigation(href, mode, scroll);
1518
- return;
1519
- }
1520
- const historyState = createHashOnlyHistoryStatePreservingNavigationMetadata(window.history.state);
1521
- if (mode === "replace") replaceHistoryStateWithoutNotify(historyState, "", href);
1522
- else pushHistoryStateWithoutNotify(historyState, "", href);
1523
- }
1524
- function applyAppRouterScrollFallback(intent) {
1525
- if (typeof document === "undefined" || typeof window === "undefined") return;
1526
- if (intent.hash !== null) {
1527
- const hash = intent.hash;
1528
- requestAnimationFrame(() => {
1529
- if (!isLatestAppRouterScrollIntent(intent)) return;
1530
- disableSmoothScrollDuringRouteTransition(() => {
1531
- scrollToHashTarget(hash);
1532
- });
1533
- });
1534
- return;
1535
- }
1536
- if (intent.targetHoistedInHead) return;
1537
- disableSmoothScrollDuringRouteTransition(() => {
1538
- document.documentElement.scrollTop = 0;
1539
- });
1540
- }
1541
- function scheduleAppRouterScrollFallback(intent) {
1542
- queueMicrotask(() => {
1543
- const pendingIntent = getPendingAppRouterScrollIntent();
1544
- if (pendingIntent === null || pendingIntent.id !== intent.id) return;
1545
- const fallbackIntent = consumeAppRouterScrollIntent(intent);
1546
- if (fallbackIntent) applyAppRouterScrollFallback(fallbackIntent);
1547
- });
1548
- }
1549
- /**
1550
- * Restore scroll position from a history state object (used on popstate).
1551
- *
1552
- * When an RSC navigation is in flight (back/forward triggers both this
1553
- * handler and the browser entry's popstate handler which calls the registered
1554
- * navigation runtime), we must wait for the new content to render
1555
- * before scrolling. Otherwise the user sees old content flash at the
1556
- * restored scroll position.
1557
- *
1558
- * This handler fires before the browser entry's popstate handler (because
1559
- * navigation.ts is loaded before hydration completes), so we defer via a
1560
- * microtask to give the browser entry handler a chance to set
1561
- * __VINEXT_RSC_PENDING__. Promise.resolve() schedules a microtask
1562
- * that runs after all synchronous event listeners have completed.
1563
- */
1564
- function restoreScrollPosition(state) {
1565
- if (state && typeof state === "object" && "__vinext_scrollY" in state) {
1566
- const { __vinext_scrollX: x, __vinext_scrollY: y } = state;
1567
- Promise.resolve().then(() => {
1568
- const pending = window.__VINEXT_RSC_PENDING__ ?? null;
1569
- if (pending) pending.then(() => retryScrollTo(x, y));
1570
- else retryScrollTo(x, y);
1571
- });
1572
- }
1573
- }
1574
- /**
1575
- * Hard-navigate to a URL via `window.location`, preserving push/replace
1576
- * semantics. Used for URLs the App Router cannot serve (Pages-owned
1577
- * targets in a hybrid build) and for catch-all RSC failures.
1578
- */
1579
- function hardNavigateTo(fullHref, mode) {
1580
- if (mode === "replace") window.location.replace(fullHref);
1581
- else window.location.assign(fullHref);
1582
- }
1583
- /**
1584
- * Reset any link still showing a `useLinkStatus()` pending state that did not
1585
- * initiate the navigation now starting (e.g. a programmatic router.push, a form
1586
- * submit, or a raw history update). A <Link> click registers itself first, so
1587
- * the hook keeps that link pending.
1588
- */
1589
- function resetStaleLinkStatus() {
1590
- getNavigationRuntime()?.functions.notifyLinkNavigationStart?.();
1591
- }
1592
- /**
1593
- * Signal that a navigation to `href` is starting, for the callers that will
1594
- * fetch the destination. Separate from `resetStaleLinkStatus()` because a raw
1595
- * `history.pushState` also supersedes a pending link but issues no request —
1596
- * cancelling a prefetch there would drop it with nothing to take its place.
1597
- */
1598
- function notifyAppNavigationStart(href) {
1599
- const destination = toAppPrefetchDestination(href);
1600
- if (destination !== null && !isHashOnlyBrowserUrlChange(href, window.location.href, __basePath)) cancelPendingPrefetchSetups(destination);
1601
- resetStaleLinkStatus();
1602
- }
1603
- /**
1604
- * popstate variant. The browser has already applied the history entry by the
1605
- * time this runs, so the pre-navigation URL that `isHashOnlyBrowserUrlChange`
1606
- * needs is gone. Back/forward across a route boundary does drive an RSC fetch
1607
- * (`app-browser-entry.ts`'s popstate handler), so cancelling by destination is
1608
- * right; a hash-only entry over-cancels, which costs one re-prefetch and can
1609
- * never cause a duplicate request.
1610
- */
1611
- function notifyAppPopstateNavigationStart() {
1612
- const destination = toAppPrefetchDestination(window.location.href);
1613
- if (destination !== null) cancelPendingPrefetchSetups(destination);
1614
- resetStaleLinkStatus();
1615
- }
1616
- /**
1617
- * Navigate to a URL, handling external URLs, hash-only changes, and RSC navigation.
1618
- */
1619
- async function navigateClientSide(href, mode, scroll, programmaticTransition = false, visibleCommitMode = "transition") {
1620
- notifyAppNavigationStart(href);
1621
- let normalizedHref = href;
1622
- if (isExternalUrl(href)) {
1623
- const localPath = toSameOriginAppPath(href, __basePath);
1624
- if (localPath == null) {
1625
- notifyAppRouterTransitionStart(href, mode);
1626
- const externalNavigate = getNavigationRuntime()?.functions.navigateExternal;
1627
- if (externalNavigate) {
1628
- await externalNavigate(href, mode);
1629
- return;
1630
- }
1631
- hardNavigateTo(href, mode);
1632
- await new Promise(() => {});
1633
- return;
1634
- }
1635
- normalizedHref = localPath;
1636
- }
1637
- const hybridOwner = resolveHybridClientRouteOwner(normalizedHref);
1638
- if (hybridOwner === "pages" || hybridOwner === "document") {
1639
- const fullHref = toCanonicalBrowserNavigationHref(normalizedHref, window.location.href, __basePath, __trailingSlash);
1640
- notifyAppRouterTransitionStart(fullHref, mode);
1641
- if (mode === "push") saveScrollPosition();
1642
- const mpaNavigate = getNavigationRuntime()?.functions.navigateExternal;
1643
- if (mpaNavigate) {
1644
- await mpaNavigate(fullHref, mode);
1645
- return;
1646
- }
1647
- hardNavigateTo(fullHref, mode);
1648
- await new Promise(() => {});
1649
- return;
1650
- }
1651
- const fullHref = toCanonicalBrowserNavigationHref(normalizedHref, window.location.href, __basePath, __trailingSlash);
1652
- stageAppNavigationFailureTarget(fullHref);
1653
- notifyAppRouterTransitionStart(fullHref, mode);
1654
- if (mode === "push") saveScrollPosition();
1655
- const earlyIntent = navigationPlanner.classifyEarlyNavigationIntent({
1656
- basePath: __basePath,
1657
- currentUrlSpace: "browser",
1658
- currentHref: window.location.href,
1659
- mode,
1660
- scroll,
1661
- targetHref: fullHref
1662
- });
1663
- if (earlyIntent.kind === "sameDocumentScroll") {
1664
- clearAppRouterScrollIntent();
1665
- commitHashOnlyHistoryState(fullHref, earlyIntent.mode, earlyIntent.scroll);
1666
- clearAppNavigationFailureTarget(fullHref);
1667
- commitClientNavigationState();
1668
- if (earlyIntent.scroll) scrollToHashTarget(earlyIntent.hash);
1669
- return;
1670
- }
1671
- if (hasPendingAppRouterPageRedirect(typeof document === "undefined" ? void 0 : document)) {
1672
- const mpaNavigate = getNavigationRuntime()?.functions.navigateExternal;
1673
- if (mpaNavigate) {
1674
- await mpaNavigate(fullHref, mode);
1675
- return;
1676
- }
1677
- hardNavigateTo(fullHref, mode);
1678
- await new Promise(() => {});
1679
- return;
1680
- }
1681
- const hashIdx = fullHref.indexOf("#");
1682
- const hash = hashIdx !== -1 ? fullHref.slice(hashIdx) : "";
1683
- const scrollIntent = scroll ? beginAppRouterScrollIntent(hash || null) : null;
1684
- if (!scroll) clearAppRouterScrollIntent();
1685
- const appNavigate = getNavigationRuntime()?.functions.navigate;
1686
- try {
1687
- if (appNavigate) await appNavigate(fullHref, 0, "navigate", mode, void 0, programmaticTransition, void 0, scrollIntent, visibleCommitMode, earlyIntent.bypassNavigationCache);
1688
- else {
1689
- if (mode === "replace") replaceHistoryStateWithoutNotify(null, "", fullHref);
1690
- else pushHistoryStateWithoutNotify(null, "", fullHref);
1691
- commitClientNavigationState();
1692
- }
1693
- } catch (error) {
1694
- if (scrollIntent) consumeAppRouterScrollIntent(scrollIntent);
1695
- throw error;
1696
- }
1697
- if (scrollIntent) scheduleAppRouterScrollFallback(scrollIntent);
1698
- }
1699
- let scheduledAppRouterNavigationCount = 0;
1700
- function trackScheduledAppRouterNavigation() {
1701
- scheduledAppRouterNavigationCount += 1;
1702
- let released = false;
1703
- return () => {
1704
- if (released) return;
1705
- released = true;
1706
- scheduledAppRouterNavigationCount = Math.max(0, scheduledAppRouterNavigationCount - 1);
1707
- };
1708
- }
1709
- function hasScheduledAppRouterNavigation() {
1710
- return scheduledAppRouterNavigationCount > 0;
1711
- }
1712
- function releaseScheduledAppRouterNavigationAfterCurrentTask(release) {
1713
- queueMicrotask(release);
1714
- }
1715
- let inFlightAppRouterNavigationCount = 0;
1716
- let visibleLinkPingAwaitsNavigations = false;
1717
- /**
1718
- * Called by the App Router browser entry for each RSC navigation it runs.
1719
- * Returns a release callback for the navigation's settlement.
1720
- */
1721
- function trackAppRouterNavigationInFlight() {
1722
- inFlightAppRouterNavigationCount += 1;
1723
- let released = false;
1724
- return () => {
1725
- if (released) return;
1726
- released = true;
1727
- inFlightAppRouterNavigationCount = Math.max(0, inFlightAppRouterNavigationCount - 1);
1728
- if (inFlightAppRouterNavigationCount === 0 && visibleLinkPingAwaitsNavigations) {
1729
- visibleLinkPingAwaitsNavigations = false;
1730
- getNavigationRuntime()?.functions.pingVisibleLinks?.();
1731
- }
1732
- };
1733
- }
1734
- function pingVisibleLinksOnceNavigationsSettle() {
1735
- if (inFlightAppRouterNavigationCount > 0) {
1736
- visibleLinkPingAwaitsNavigations = true;
1737
- return;
1738
- }
1739
- getNavigationRuntime()?.functions.pingVisibleLinks?.();
1740
- }
1741
- /**
1742
- * App Router public router instance. Mirrors Next.js's
1743
- * `publicAppRouterInstance` from
1744
- * `packages/next/src/client/components/app-router-instance.ts`.
1745
- *
1746
- * Exported so the App Router browser entry can install it on
1747
- * `window.next.router` for Next.js parity (see `client/window-next.ts`).
1748
- * Internal callers in this file continue to use `_appRouter` for brevity.
1749
- */
1750
- const _appRouter = {
1751
- bfcacheId: "0",
1752
- push(href, options) {
1753
- assertSafeNavigationUrl(href);
1754
- if (isServer) return;
1755
- notifyAppNavigationStart(href);
1756
- const releaseNavigation = trackScheduledAppRouterNavigation();
1757
- try {
1758
- React$1.startTransition(() => {
1759
- navigateClientSide(href, "push", options?.scroll !== false, true);
1760
- });
1761
- } catch (error) {
1762
- releaseNavigation();
1763
- throw error;
1764
- }
1765
- releaseScheduledAppRouterNavigationAfterCurrentTask(releaseNavigation);
1766
- },
1767
- replace(href, options) {
1768
- assertSafeNavigationUrl(href);
1769
- if (isServer) return;
1770
- notifyAppNavigationStart(href);
1771
- const releaseNavigation = trackScheduledAppRouterNavigation();
1772
- try {
1773
- React$1.startTransition(() => {
1774
- navigateClientSide(href, "replace", options?.scroll !== false, true);
1775
- });
1776
- } catch (error) {
1777
- releaseNavigation();
1778
- throw error;
1779
- }
1780
- releaseScheduledAppRouterNavigationAfterCurrentTask(releaseNavigation);
1781
- },
1782
- back() {
1783
- if (isServer) return;
1784
- window.history.back();
1785
- },
1786
- forward() {
1787
- if (isServer) return;
1788
- window.history.forward();
1789
- },
1790
- refresh() {
1791
- if (isServer) return;
1792
- getNavigationRuntime()?.functions.clearNavigationCaches?.({ pingVisibleLinks: false });
1793
- const rscNavigate = getNavigationRuntime()?.functions.navigate;
1794
- if (hasScheduledAppRouterNavigation() || !rscNavigate) {
1795
- getNavigationRuntime()?.functions.pingVisibleLinks?.();
1796
- return;
1797
- }
1798
- const navigate = () => {
1799
- rscNavigate(window.location.href, 0, "refresh", void 0, void 0, true).finally(pingVisibleLinksOnceNavigationsSettle);
1800
- };
1801
- React$1.startTransition(navigate);
1802
- },
1803
- prefetch(href, options) {
1804
- assertSafeNavigationUrl(href);
1805
- if (isServer) return;
1806
- if (isBotUserAgent(window.navigator?.userAgent ?? "")) return;
1807
- try {
1808
- new URL(withBasePath(href, __basePath), window.location.href);
1809
- } catch {
1810
- throw new Error(`Cannot prefetch '${href}' because it cannot be converted to a URL.`);
1811
- }
1812
- const prefetchHref = isExternalUrl(href) ? toSameOriginAppPath(href, __basePath) : href;
1813
- if (prefetchHref == null) return;
1814
- const fullHref = toAppPrefetchDestination(prefetchHref);
1815
- if (fullHref === null) return;
1816
- const currentPathname = window.location.pathname;
1817
- let interceptionContext = getPrefetchInterceptionContext(fullHref, currentPathname);
1818
- const mountedSlotsHeader = getMountedSlotsHeader();
1819
- const headers = createAppPrefetchRequestHeaders({
1820
- fetchPriority: "low",
1821
- interceptionContext,
1822
- mountedSlotsHeader: mountedSlotsHeader || null
1823
- });
1824
- const setup = beginPrefetchSetup(fullHref);
1825
- (async () => {
1826
- const routeManifestLoad = loadNavigationRuntimeRouteManifest();
1827
- if (routeManifestLoad !== null) {
1828
- if (!await routeManifestLoad || setup.cancelled) return;
1829
- interceptionContext = getPrefetchInterceptionContext(fullHref, currentPathname);
1830
- if (interceptionContext !== null) headers.set(VINEXT_INTERCEPTION_CONTEXT_HEADER, interceptionContext);
1831
- }
1832
- if (HAS_CLIENT_REWRITES) await preloadHybridClientRouteOwner();
1833
- const hybridOwner = resolveHybridClientRouteOwner(fullHref);
1834
- if (hybridOwner === "pages" || hybridOwner === "document") return;
1835
- const rewrittenPrefetchHref = HAS_CLIENT_REWRITES ? resolveLoadedHybridClientRewriteHref(fullHref, __basePath) : null;
1836
- const kind = options?.kind === "full" ? "full" : "auto";
1837
- const [{ resolveAutoAppRoutePrefetch, resolveFullAppRoutePrefetch }, { resolveAppPrefetchRscRequest }] = await Promise.all([import("./internal/app-route-prefetch-policy.js"), import("./internal/app-prefetch-rsc-request.js")]);
1838
- if (setup.cancelled) return;
1839
- const policy = kind === "full" ? resolveFullAppRoutePrefetch() : resolveAutoAppRoutePrefetch(rewrittenPrefetchHref ?? fullHref, interceptionContext);
1840
- const reusable = policy.shouldPrefetch && policy.cacheForNavigation;
1841
- const requiresRouteTreePrefetch = policy.requiresRouteTreePrefetch === true;
1842
- if (reusable && kind === "full") headers.delete(NEXT_ROUTER_PREFETCH_HEADER);
1843
- if (reusable && kind === "auto") {
1844
- headers.set(NEXT_ROUTER_PREFETCH_HEADER, "1");
1845
- headers.set(NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, __prefetchInlining || requiresRouteTreePrefetch ? "/__PAGE__" : "1");
1846
- }
1847
- const hasSearchParams = new URL(fullHref, window.location.href).search !== "";
1848
- if (!reusable && kind === "auto") {
1849
- headers.set(NEXT_ROUTER_PREFETCH_HEADER, "1");
1850
- headers.set(NEXT_ROUTER_SEGMENT_PREFETCH_HEADER, "1");
1851
- headers.set(VINEXT_RSC_RENDER_MODE_HEADER, hasSearchParams && policy.rendersDynamically !== true ? APP_RSC_RENDER_MODE_PREFETCH_DYNAMIC_SHELL : APP_RSC_RENDER_MODE_PREFETCH_LOADING_SHELL);
1852
- }
1853
- const { additionalRscUrls, rscUrl } = await resolveAppPrefetchRscRequest({
1854
- fullHref,
1855
- headers,
1856
- rewrittenPrefetchHref
1857
- });
1858
- if (setup.cancelled) return;
1859
- const cacheKey = AppElementsWire.encodeCacheKey(rscUrl, interceptionContext);
1860
- const prefetched = getPrefetchedUrls();
1861
- if (policy.dynamicStaleTime !== "full-prefetch" && hasFreshLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext)) {
1862
- attachPrefetchInvalidationCallback(cacheKey, options?.onInvalidate);
1863
- return;
1864
- }
1865
- if (reusable) {
1866
- discardLearningOnlyPrefetchCacheEntry(rscUrl, interceptionContext, mountedSlotsHeader);
1867
- if (hasPrefetchCacheEntryForNavigation(rscUrl, interceptionContext, mountedSlotsHeader, {
1868
- additionalRscUrls,
1869
- onInvalidate: options?.onInvalidate,
1870
- onReuse: policy.dynamicStaleTime === "full-prefetch" ? (entry, matchedCacheKey) => promotePrefetchCacheEntryForNavigation(matchedCacheKey, entry) : void 0
1871
- })) return;
1872
- if (policy.dynamicStaleTime === "full-prefetch" && seedFullPrefetchFromVisitedResponse(rscUrl, interceptionContext, mountedSlotsHeader, additionalRscUrls, options?.onInvalidate)) return;
1873
- }
1874
- if (policy.dynamicStaleTime !== "full-prefetch" && hasNavigationFreshVisitedResponse(rscUrl, interceptionContext, mountedSlotsHeader, additionalRscUrls, options?.onInvalidate)) return;
1875
- prefetched.add(cacheKey);
1876
- const fetchFullRscPayload = () => scheduleAppPrefetchFetch((signal) => fetch(rscUrl, {
1877
- headers,
1878
- credentials: "include",
1879
- priority: "low",
1880
- signal
1881
- }), "low");
1882
- prefetchRscResponse(rscUrl, reusable && kind === "auto" && requiresRouteTreePrefetch ? fetchRouteTreeGatedPrefetch({
1883
- fetchFullRscPayload,
1884
- fetchRouteTree: (routeTreeRscUrl, routeTreeHeaders) => scheduleAppPrefetchFetch((signal) => fetch(routeTreeRscUrl, {
1885
- headers: routeTreeHeaders,
1886
- credentials: "include",
1887
- priority: "low",
1888
- signal
1889
- }), "low"),
1890
- fullHref,
1891
- headers,
1892
- interceptionContext,
1893
- mountedSlotsHeader
1894
- }) : fetchFullRscPayload(), interceptionContext, mountedSlotsHeader, options, reusable ? {
1895
- cacheForNavigation: true,
1896
- fallbackTtlMs: policy.fallbackTtl === "dynamic" ? DYNAMIC_NAVIGATION_CACHE_TTL : PREFETCH_CACHE_TTL,
1897
- dynamicStaleTime: policy.dynamicStaleTime,
1898
- optimisticRouteShell: false,
1899
- prefetchKind: "navigation",
1900
- prepareSnapshot: prepareNavigationPrefetchSnapshot
1901
- } : {
1902
- cacheForNavigation: false,
1903
- fallbackTtlMs: policy.fallbackTtl === "dynamic" ? DYNAMIC_NAVIGATION_CACHE_TTL : PREFETCH_CACHE_TTL,
1904
- dynamicStaleTime: policy.dynamicStaleTime,
1905
- optimisticRouteShell: true,
1906
- prefetchKind: "navigation"
1907
- });
1908
- })().catch((error) => {
1909
- console.error("[vinext] RSC prefetch setup error:", error);
1910
- }).finally(() => {
1911
- pendingPrefetchSetups.delete(setup);
1912
- });
1913
- }
1914
- };
1915
- if (process.env.__NEXT_GESTURE_TRANSITION) _appRouter.experimental_gesturePush = (href, options) => {
1916
- assertSafeNavigationUrl(href);
1917
- if (isServer) return;
1918
- if (!getNavigationRuntime()?.functions.navigate) return;
1919
- let appHref = href;
1920
- if (isExternalUrl(href)) {
1921
- const localPath = toSameOriginAppPath(href, __basePath);
1922
- if (localPath === null) return;
1923
- appHref = localPath;
1924
- }
1925
- const releaseNavigation = trackScheduledAppRouterNavigation();
1926
- navigateClientSide(appHref, "push", options?.scroll !== false, false, "synchronous");
1927
- releaseScheduledAppRouterNavigationAfterCurrentTask(releaseNavigation);
1928
- };
1929
400
  function formatPublicBfcacheId(value) {
1930
401
  if (!value || value === "0") return PUBLIC_INITIAL_BFCACHE_ID;
1931
402
  return value;
@@ -1944,14 +415,6 @@ function readBfcacheIdFromContext() {
1944
415
  }
1945
416
  }
1946
417
  /**
1947
- * Public App Router instance, exposed for the browser entry so it can wire
1948
- * `window.next.router` to the same singleton returned from `useRouter()`.
1949
- *
1950
- * Mirrors `publicAppRouterInstance` from Next.js's
1951
- * `packages/next/src/client/components/app-router-instance.ts` (line 392).
1952
- */
1953
- const appRouterInstance = _appRouter;
1954
- /**
1955
418
  * App Router's useRouter — returns push/replace/back/forward/refresh.
1956
419
  * Different from Pages Router's useRouter (next/router).
1957
420
  *
@@ -2015,56 +478,4 @@ function useServerInsertedHTML(callback) {
2015
478
  if (typeof document !== "undefined") return;
2016
479
  registerServerInsertedHTMLCallback(callback);
2017
480
  }
2018
- if (!isServer) {
2019
- const state = getClientNavigationState();
2020
- if (state && !state.patchInstalled) {
2021
- state.patchInstalled = true;
2022
- window.addEventListener("popstate", () => {
2023
- notifyAppPopstateNavigationStart();
2024
- });
2025
- window.addEventListener("popstate", (event) => {
2026
- if (!hasAppNavigationRuntime()) {
2027
- commitClientNavigationState();
2028
- restoreScrollPosition(event.state);
2029
- }
2030
- });
2031
- window.history.pushState = function patchedPushState(data, unused, url) {
2032
- if (forwardRouterHistoryWrite(state, "pushState", data, unused, url)) return;
2033
- if (state.routerHistoryWriteDepth === 0) getNavigationRuntime()?.functions.flushCommittingNavigationUrl?.();
2034
- if (isAppOwnedHistoryState(data)) {
2035
- const previousHistoryState = window.history.state;
2036
- state.originalPushState.call(window.history, data, unused, url);
2037
- getNavigationRuntime()?.functions.commitAppOwnedHistoryStateWrite?.("push", previousHistoryState);
2038
- return;
2039
- }
2040
- const previousHistoryState = window.history.state;
2041
- state.originalPushState.call(window.history, createExternalHistoryStatePreservingMetadata(data, window.history.state), unused, url);
2042
- getNavigationRuntime()?.functions.claimCurrentHistoryTreeSnapshot?.("push", previousHistoryState);
2043
- if (state.suppressUrlNotifyCount === 0) {
2044
- resetStaleLinkStatus();
2045
- if (url) getNavigationRuntime()?.functions.discardPendingNavigation?.();
2046
- commitClientNavigationState();
2047
- }
2048
- };
2049
- window.history.replaceState = function patchedReplaceState(data, unused, url) {
2050
- if (forwardRouterHistoryWrite(state, "replaceState", data, unused, url)) return;
2051
- if (state.routerHistoryWriteDepth === 0) getNavigationRuntime()?.functions.flushCommittingNavigationUrl?.();
2052
- if (isAppOwnedHistoryState(data)) {
2053
- const previousHistoryState = window.history.state;
2054
- state.originalReplaceState.call(window.history, data, unused, url);
2055
- getNavigationRuntime()?.functions.commitAppOwnedHistoryStateWrite?.("replace", previousHistoryState);
2056
- return;
2057
- }
2058
- const previousHistoryState = window.history.state;
2059
- state.originalReplaceState.call(window.history, createExternalHistoryStatePreservingMetadata(data, window.history.state), unused, url);
2060
- getNavigationRuntime()?.functions.claimCurrentHistoryTreeSnapshot?.("replace", previousHistoryState);
2061
- if (state.suppressUrlNotifyCount === 0) {
2062
- resetStaleLinkStatus();
2063
- if (url) getNavigationRuntime()?.functions.discardPendingNavigation?.();
2064
- commitClientNavigationState();
2065
- }
2066
- };
2067
- }
2068
- }
2069
- //#endregion
2070
- export { BailoutToCSRError, DYNAMIC_NAVIGATION_CACHE_TTL, DynamicServerError, GLOBAL_ACCESSORS_KEY, HTTP_ERROR_FALLBACK_ERROR_CODE, MAX_PREFETCH_CACHE_SIZE, PREFETCH_CACHE_TTL, ReadonlyURLSearchParams, RedirectType, ServerInsertedHTMLContext, UnrecognizedActionError, __basePath, _registerStateAccessors, activateNavigationSnapshot, appRouterInstance, applyAppRouterScrollFallback, clearPendingPathname, clearServerInsertedHTML, commitClientNavigationState, consumePrefetchResponse, consumePrefetchResponseForNavigation, createAppPrefetchRequestHeaders, createCachedRscResponseSnapshot, createClientNavigationRenderSnapshot, createSnapshotPathAndSearch, decodeRedirectError, deletePrefetchResponseSnapshot, disableNavigationResponsePrefetchCacheReuse, discardLearningOnlyPrefetchCacheEntry, fetchRouteTreeGatedPrefetch, flushServerInsertedHTML, forbidden, getAccessFallbackHTTPStatus, getBfcacheIdMapContext, getBfcacheSegmentIdContext, getClientNavigationRenderContext, getClientNavigationState, getClientParams, getCurrentInterceptionContext, getCurrentNextUrl, getFreshPrefetchCacheEntry, getLayoutSegmentContext, getMountedSlotsHeader, getNavigationContext, getPrefetchCache, getPrefetchInterceptionContext, getPrefetchedUrls, hasFreshLearningOnlyPrefetchCacheEntry, hasNavigationFreshVisitedResponse, hasPrefetchCacheEntryForNavigation, hasSearchAgnosticPrefetchShellForRoute, invalidateDynamicPrefetchCache, invalidatePrefetchCache, invalidateVisitedResponsePrefetches, isBailoutToCSRError, isDynamicServerError, isHTTPAccessFallbackError, isNextRouterError, isRedirectError, navigateClientSide, notFound, parseRenderedPathAndSearchHeader, peekPrefetchResponseForNavigation, permanentRedirect, prefetchRscResponse, preloadHybridClientRouteOwner, prepareNavigationPrefetchSnapshot, promotePrefetchCacheEntryForNavigation, pushHistoryStateWithoutNotify, redirect, renderServerInsertedHTML, replaceClientParamsWithoutNotify, replaceHistoryStateWithoutNotify, resolveCachedRscResponseExpiresAt, resolveCachedRscResponseTtlMs, resolveLoadedHybridClientRewriteHref, resolvePrefetchCacheEntryMountedSlotsHeader, restoreRscResponse, saveScrollPosition, seedFullPrefetchFromVisitedResponse, seedPrefetchResponseSnapshot, setClientParams, setMountedSlotsHeader, setNavigationContext, setPendingPathname, snapshotRscResponse, storePrefetchResponse, trackAppRouterNavigationInFlight, unauthorized, unstable_isUnrecognizedActionError, unstable_rethrow, useClientNavigationRenderSnapshot, useParams, usePathname, useRouter, useSearchParams, useSelectedLayoutSegment, useSelectedLayoutSegments, useServerInsertedHTML };
481
+ export { BailoutToCSRError, DynamicServerError, GLOBAL_ACCESSORS_KEY, HTTP_ERROR_FALLBACK_ERROR_CODE, ReadonlyURLSearchParams, RedirectType, ServerInsertedHTMLContext, UnrecognizedActionError, __basePath, _registerStateAccessors, activateNavigationSnapshot, clearPendingPathname, clearServerInsertedHTML, commitClientNavigationState, createClientNavigationRenderSnapshot, createSnapshotPathAndSearch, decodeRedirectError, flushServerInsertedHTML, forbidden, getAccessFallbackHTTPStatus, getBfcacheIdMapContext, getBfcacheSegmentIdContext, getClientNavigationRenderContext, getClientNavigationState, getClientParams, getLayoutSegmentContext, getNavigationContext, isBailoutToCSRError, isDynamicServerError, isHTTPAccessFallbackError, isNextRouterError, isRedirectError, notFound, permanentRedirect, redirect, renderServerInsertedHTML, replaceClientParamsWithoutNotify, setClientParams, setNavigationContext, setPendingPathname, unauthorized, unstable_isUnrecognizedActionError, unstable_rethrow, useClientNavigationRenderSnapshot, useParams, usePathname, useRouter, useSearchParams, useSelectedLayoutSegment, useSelectedLayoutSegments, useServerInsertedHTML };