vinext 1.2.1 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. package/README.md +12 -9
  2. package/dist/_virtual/_rolldown/runtime.js +1 -1
  3. package/dist/build/action-owner-manifest.d.ts +3 -2
  4. package/dist/build/action-owner-manifest.js +18 -2
  5. package/dist/build/app-page-static-eligibility.d.ts +17 -1
  6. package/dist/build/app-page-static-eligibility.js +80 -13
  7. package/dist/build/clean-output.d.ts +2 -1
  8. package/dist/build/client-build-config.d.ts +77 -6
  9. package/dist/build/client-build-config.js +176 -12
  10. package/dist/build/client-reference-async.d.ts +48 -0
  11. package/dist/build/client-reference-async.js +123 -0
  12. package/dist/build/client-reference-chunks.d.ts +32 -0
  13. package/dist/build/client-reference-chunks.js +111 -0
  14. package/dist/build/client-reference-groups.d.ts +171 -0
  15. package/dist/build/client-reference-groups.js +572 -0
  16. package/dist/build/css-url-assets.d.ts +2 -1
  17. package/dist/build/google-fonts/fallback-metrics.d.ts +2 -1
  18. package/dist/build/google-fonts/find-font-files-in-css.d.ts +1 -0
  19. package/dist/build/google-fonts/find-font-files-in-css.js +17 -4
  20. package/dist/build/google-fonts/font-metadata.d.ts +2 -1
  21. package/dist/build/google-fonts/validate.d.ts +2 -1
  22. package/dist/build/inline-css.d.ts +2 -1
  23. package/dist/build/layout-classification.d.ts +2 -1
  24. package/dist/build/module-dependency-cache.d.ts +33 -1
  25. package/dist/build/module-dependency-cache.js +51 -1
  26. package/dist/build/next-client-runtime-manifests.d.ts +12 -2
  27. package/dist/build/next-client-runtime-manifests.js +19 -4
  28. package/dist/build/nitro-public-files.d.ts +24 -0
  29. package/dist/build/nitro-public-files.js +60 -0
  30. package/dist/build/pages-client-assets-module.js +1 -1
  31. package/dist/build/precompress.d.ts +2 -1
  32. package/dist/build/precompress.js +1 -1
  33. package/dist/build/prerender-paths.d.ts +2 -1
  34. package/dist/build/prerender-paths.js +5 -2
  35. package/dist/build/prerender-phase.d.ts +2 -1
  36. package/dist/build/prerender-server-pool.js +1 -1
  37. package/dist/build/prerender.d.ts +3 -2
  38. package/dist/build/prerender.js +5 -4
  39. package/dist/build/report.d.ts +2 -1
  40. package/dist/build/route-classification-injector.d.ts +2 -1
  41. package/dist/build/route-classification-manifest.d.ts +2 -1
  42. package/dist/build/run-prerender.d.ts +2 -1
  43. package/dist/build/server-actions-encryption-key.d.ts +24 -0
  44. package/dist/build/server-actions-encryption-key.js +101 -0
  45. package/dist/build/ssr-manifest.d.ts +3 -0
  46. package/dist/build/ssr-manifest.js +34 -2
  47. package/dist/build/standalone.d.ts +2 -1
  48. package/dist/cache/cache-adapters-virtual.d.ts +2 -1
  49. package/dist/cache.js +1 -2
  50. package/dist/check.d.ts +2 -1
  51. package/dist/check.js +4 -0
  52. package/dist/cli-args.d.ts +2 -1
  53. package/dist/cli.js +2 -0
  54. package/dist/client/client-redirect-matcher.js +2 -1
  55. package/dist/client/client-redirects.d.ts +4 -3
  56. package/dist/client/client-redirects.js +2 -1
  57. package/dist/client/client-rewrite-params.d.ts +9 -0
  58. package/dist/client/client-rewrite-params.js +20 -0
  59. package/dist/client/client-rewrites.d.ts +2 -1
  60. package/dist/client/dev-error-overlay-store.d.ts +2 -1
  61. package/dist/client/dev-error-overlay.js +2 -1
  62. package/dist/client/index.js +1 -2
  63. package/dist/client/instrumentation-client-state.js +5 -5
  64. package/dist/client/navigation-runtime.d.ts +28 -3
  65. package/dist/client/navigation-runtime.js +42 -11
  66. package/dist/client/pages-router-link-navigation.d.ts +2 -1
  67. package/dist/client/vinext-next-data.d.ts +25 -2
  68. package/dist/client/window-next.d.ts +2 -1
  69. package/dist/config/config-matchers.d.ts +27 -41
  70. package/dist/config/config-matchers.js +293 -270
  71. package/dist/config/config-source.d.ts +34 -0
  72. package/dist/config/config-source.js +141 -0
  73. package/dist/config/dotenv.d.ts +2 -1
  74. package/dist/config/header-params.d.ts +29 -0
  75. package/dist/config/header-params.js +106 -0
  76. package/dist/config/next-config.d.ts +20 -6
  77. package/dist/config/next-config.js +149 -11
  78. package/dist/config/tsconfig-paths.d.ts +2 -1
  79. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/detector.js +23 -0
  80. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/index.js +2 -0
  81. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/lookup.js +25 -0
  82. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/bmp.js +11 -0
  83. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/cur.js +15 -0
  84. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/dds.js +11 -0
  85. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/gif.js +12 -0
  86. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/heif.js +55 -0
  87. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/icns.js +76 -0
  88. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ico.js +39 -0
  89. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/index.js +46 -0
  90. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/j2c.js +11 -0
  91. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jp2.js +21 -0
  92. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jpg.js +71 -0
  93. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl-stream.js +42 -0
  94. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/jxl.js +46 -0
  95. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/ktx.js +19 -0
  96. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/png.js +28 -0
  97. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/pnm.js +54 -0
  98. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/psd.js +11 -0
  99. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/svg.js +79 -0
  100. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tga.js +15 -0
  101. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/tiff.js +96 -0
  102. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/utils.js +53 -0
  103. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/types/webp.js +45 -0
  104. package/dist/deps/.pnpm/image-size@2.0.4/deps/image-size/dist/esm/utils/bit-reader.js +38 -0
  105. package/dist/deps/.pnpm/ua-parser-js@1.0.35/deps/ua-parser-js/src/ua-parser.js +2 -2
  106. package/dist/entries/app-browser-entry.d.ts +34 -6
  107. package/dist/entries/app-browser-entry.js +103 -40
  108. package/dist/entries/app-rsc-entry.d.ts +4 -1
  109. package/dist/entries/app-rsc-entry.js +131 -66
  110. package/dist/entries/app-rsc-manifest.d.ts +12 -1
  111. package/dist/entries/app-rsc-manifest.js +73 -1
  112. package/dist/entries/app-ssr-entry.d.ts +4 -1
  113. package/dist/entries/app-ssr-entry.js +9 -2
  114. package/dist/entries/pages-client-entry.d.ts +1 -0
  115. package/dist/entries/pages-client-entry.js +6 -6
  116. package/dist/entries/pages-entry-helpers.js +1 -2
  117. package/dist/entries/pages-server-entry.d.ts +2 -1
  118. package/dist/entries/pages-server-entry.js +18 -15
  119. package/dist/entries/runtime-entry-module.d.ts +1 -0
  120. package/dist/entries/runtime-entry-module.js +4 -1
  121. package/dist/image/image-adapters-virtual.d.ts +2 -1
  122. package/dist/index.d.ts +11 -0
  123. package/dist/index.js +340 -116
  124. package/dist/init.js +17 -0
  125. package/dist/plugins/client-compile-hints.d.ts +30 -0
  126. package/dist/plugins/client-compile-hints.js +88 -0
  127. package/dist/plugins/client-reference-dedup.d.ts +2 -1
  128. package/dist/plugins/cloudflare-dev-module-urls.d.ts +2 -1
  129. package/dist/plugins/dynamic-preload-metadata.d.ts +3 -1
  130. package/dist/plugins/dynamic-preload-metadata.js +1 -1
  131. package/dist/plugins/environment.d.ts +2 -1
  132. package/dist/plugins/fonts.js +9 -12
  133. package/dist/plugins/ignore-dynamic-requests.d.ts +2 -1
  134. package/dist/plugins/import-meta-url.d.ts +2 -1
  135. package/dist/plugins/og-assets.d.ts +2 -1
  136. package/dist/plugins/og-assets.js +2 -3
  137. package/dist/plugins/optimize-imports.d.ts +27 -3
  138. package/dist/plugins/optimize-imports.js +106 -20
  139. package/dist/plugins/pages-node-externals.d.ts +2 -1
  140. package/dist/plugins/remove-console.d.ts +2 -1
  141. package/dist/plugins/require-condition-resolution.d.ts +2 -1
  142. package/dist/plugins/rsc-client-reference-loaders.d.ts +53 -1
  143. package/dist/plugins/rsc-client-reference-loaders.js +447 -27
  144. package/dist/plugins/rsc-client-shim-excludes.js +2 -0
  145. package/dist/plugins/sass.d.ts +2 -1
  146. package/dist/plugins/strip-server-exports.d.ts +2 -1
  147. package/dist/plugins/styled-jsx.d.ts +2 -1
  148. package/dist/plugins/transform-result.d.ts +2 -1
  149. package/dist/plugins/typeof-window.d.ts +2 -1
  150. package/dist/plugins/use-cache-callable.d.ts +5 -0
  151. package/dist/plugins/use-cache-callable.js +30 -8
  152. package/dist/plugins/worker-image-imports.d.ts +1 -0
  153. package/dist/plugins/worker-image-imports.js +2 -2
  154. package/dist/plugins/worker-use-server.d.ts +2 -1
  155. package/dist/routing/app-route-graph.d.ts +41 -1
  156. package/dist/routing/app-route-graph.js +122 -50
  157. package/dist/routing/browser-route-manifest.d.ts +44 -0
  158. package/dist/routing/browser-route-manifest.js +195 -0
  159. package/dist/routing/hashed-route-patterns.d.ts +4 -0
  160. package/dist/routing/hashed-route-patterns.js +22 -0
  161. package/dist/routing/optimistic-route-trie.d.ts +28 -0
  162. package/dist/routing/optimistic-route-trie.js +102 -0
  163. package/dist/routing/route-matching.d.ts +2 -1
  164. package/dist/routing/route-pattern.d.ts +2 -1
  165. package/dist/routing/route-validation.d.ts +6 -1
  166. package/dist/routing/route-validation.js +26 -10
  167. package/dist/server/accept-encoding.d.ts +2 -1
  168. package/dist/server/app-action-forwarding.d.ts +10 -1
  169. package/dist/server/app-action-forwarding.js +15 -1
  170. package/dist/server/app-bfcache-identity.d.ts +2 -1
  171. package/dist/server/app-browser-action-result.d.ts +2 -1
  172. package/dist/server/app-browser-client-reuse-manifest.d.ts +2 -1
  173. package/dist/server/app-browser-entry.js +175 -64
  174. package/dist/server/app-browser-error.d.ts +5 -2
  175. package/dist/server/app-browser-error.js +7 -2
  176. package/dist/server/app-browser-history-controller.d.ts +2 -1
  177. package/dist/server/app-browser-hydration.d.ts +2 -1
  178. package/dist/server/app-browser-interception-context.d.ts +4 -3
  179. package/dist/server/app-browser-mpa-navigation.d.ts +1 -0
  180. package/dist/server/app-browser-mpa-navigation.js +6 -5
  181. package/dist/server/app-browser-navigation-controller.d.ts +17 -6
  182. package/dist/server/app-browser-navigation-controller.js +103 -36
  183. package/dist/server/app-browser-popstate.d.ts +2 -1
  184. package/dist/server/app-browser-rsc-redirect.d.ts +2 -1
  185. package/dist/server/app-browser-server-action-client.d.ts +2 -1
  186. package/dist/server/app-browser-state.d.ts +2 -2
  187. package/dist/server/app-browser-state.js +1 -1
  188. package/dist/server/app-browser-stream.d.ts +2 -1
  189. package/dist/server/app-browser-visible-commit.d.ts +6 -5
  190. package/dist/server/app-client-reference-manifest.d.ts +31 -0
  191. package/dist/server/app-client-reference-manifest.js +46 -0
  192. package/dist/server/app-client-reference-preloader.d.ts +45 -2
  193. package/dist/server/app-client-reference-preloader.js +48 -10
  194. package/dist/server/app-elements-wire.d.ts +2 -1
  195. package/dist/server/app-elements.d.ts +2 -0
  196. package/dist/server/app-elements.js +3 -1
  197. package/dist/server/app-fallback-renderer.d.ts +9 -2
  198. package/dist/server/app-fallback-renderer.js +6 -2
  199. package/dist/server/app-history-state.d.ts +2 -1
  200. package/dist/server/app-inline-css-client.d.ts +2 -1
  201. package/dist/server/app-layout-param-observation.d.ts +2 -1
  202. package/dist/server/app-metadata-tracing.d.ts +2 -1
  203. package/dist/server/app-middleware.d.ts +6 -0
  204. package/dist/server/app-middleware.js +8 -10
  205. package/dist/server/app-optimistic-routing.d.ts +26 -11
  206. package/dist/server/app-optimistic-routing.js +38 -96
  207. package/dist/server/app-page-boundary-render.d.ts +20 -2
  208. package/dist/server/app-page-boundary-render.js +229 -39
  209. package/dist/server/app-page-boundary.d.ts +34 -5
  210. package/dist/server/app-page-boundary.js +40 -7
  211. package/dist/server/app-page-cache-finalizer.d.ts +2 -1
  212. package/dist/server/app-page-cache-finalizer.js +1 -1
  213. package/dist/server/app-page-cache-render.d.ts +10 -2
  214. package/dist/server/app-page-cache-render.js +15 -2
  215. package/dist/server/app-page-cache.js +2 -2
  216. package/dist/server/app-page-dispatch.d.ts +34 -1
  217. package/dist/server/app-page-dispatch.js +165 -34
  218. package/dist/server/app-page-element-builder.d.ts +17 -1
  219. package/dist/server/app-page-element-builder.js +187 -66
  220. package/dist/server/app-page-execution.d.ts +28 -1
  221. package/dist/server/app-page-execution.js +114 -5
  222. package/dist/server/app-page-head.d.ts +95 -3
  223. package/dist/server/app-page-head.js +307 -152
  224. package/dist/server/app-page-http-access-fallback-metadata.d.ts +48 -2
  225. package/dist/server/app-page-http-access-fallback-metadata.js +76 -1
  226. package/dist/server/app-page-method.d.ts +2 -1
  227. package/dist/server/app-page-probe.d.ts +2 -1
  228. package/dist/server/app-page-render-identity.d.ts +2 -1
  229. package/dist/server/app-page-render.d.ts +7 -1
  230. package/dist/server/app-page-render.js +38 -11
  231. package/dist/server/app-page-request.d.ts +14 -1
  232. package/dist/server/app-page-request.js +1 -1
  233. package/dist/server/app-page-route-wiring.d.ts +52 -2
  234. package/dist/server/app-page-route-wiring.js +197 -47
  235. package/dist/server/app-page-rsc-render-status.d.ts +3 -1
  236. package/dist/server/app-page-rsc-render-status.js +1 -0
  237. package/dist/server/app-page-search-params-observation.d.ts +8 -6
  238. package/dist/server/app-page-search-params-observation.js +16 -11
  239. package/dist/server/app-page-segment-plan.d.ts +2 -1
  240. package/dist/server/app-page-stream.d.ts +38 -1
  241. package/dist/server/app-page-stream.js +24 -4
  242. package/dist/server/app-pages-bridge.d.ts +4 -2
  243. package/dist/server/app-pages-bridge.js +11 -7
  244. package/dist/server/app-ppr-fallback-shell-render.d.ts +2 -1
  245. package/dist/server/app-ppr-fallback-shell.d.ts +2 -1
  246. package/dist/server/app-prerender-endpoints.d.ts +2 -1
  247. package/dist/server/app-prerender-static-params.d.ts +2 -1
  248. package/dist/server/app-prerender-static-params.js +3 -2
  249. package/dist/server/app-render-dependency.d.ts +11 -1
  250. package/dist/server/app-render-dependency.js +65 -6
  251. package/dist/server/app-request-stage-independent-entry.d.ts +2 -1
  252. package/dist/server/app-request-stage-independent-entry.js +2 -2
  253. package/dist/server/app-response-stage-entry.d.ts +2 -1
  254. package/dist/server/app-response-stage-entry.js +3 -3
  255. package/dist/server/app-route-handler-cache.d.ts +2 -1
  256. package/dist/server/app-route-handler-dispatch.d.ts +2 -1
  257. package/dist/server/app-route-handler-dispatch.js +4 -2
  258. package/dist/server/app-route-handler-execution.d.ts +4 -1
  259. package/dist/server/app-route-handler-execution.js +9 -2
  260. package/dist/server/app-route-handler-middleware-context.d.ts +2 -1
  261. package/dist/server/app-route-handler-middleware-context.js +3 -3
  262. package/dist/server/app-route-handler-response.d.ts +4 -2
  263. package/dist/server/app-route-handler-response.js +2 -2
  264. package/dist/server/app-route-handler-runtime.d.ts +4 -1
  265. package/dist/server/app-route-handler-runtime.js +20 -3
  266. package/dist/server/app-route-module-loader.d.ts +18 -1
  267. package/dist/server/app-route-module-loader.js +15 -6
  268. package/dist/server/app-route-tree-prefetch.d.ts +2 -1
  269. package/dist/server/app-route-tree.d.ts +20 -0
  270. package/dist/server/app-route-tree.js +18 -0
  271. package/dist/server/app-router-entry.js +2 -2
  272. package/dist/server/app-rsc-combined-handler.js +8 -1
  273. package/dist/server/app-rsc-error-handler.d.ts +2 -1
  274. package/dist/server/app-rsc-errors.d.ts +9 -1
  275. package/dist/server/app-rsc-errors.js +9 -2
  276. package/dist/server/app-rsc-handler.d.ts +6 -2
  277. package/dist/server/app-rsc-handler.js +152 -140
  278. package/dist/server/app-rsc-response-finalizer.d.ts +7 -1
  279. package/dist/server/app-rsc-response-finalizer.js +4 -1
  280. package/dist/server/app-rsc-response-stage.js +3 -1
  281. package/dist/server/app-rsc-route-matching.d.ts +39 -1
  282. package/dist/server/app-rsc-route-matching.js +25 -1
  283. package/dist/server/app-segment-config.d.ts +2 -1
  284. package/dist/server/app-segment-config.js +1 -14
  285. package/dist/server/app-server-action-execution.d.ts +25 -7
  286. package/dist/server/app-server-action-execution.js +53 -59
  287. package/dist/server/app-ssr-entry.d.ts +12 -0
  288. package/dist/server/app-ssr-entry.js +104 -48
  289. package/dist/server/app-ssr-error-meta.d.ts +2 -1
  290. package/dist/server/app-ssr-search-params-gate.d.ts +2 -1
  291. package/dist/server/app-ssr-stream.d.ts +29 -10
  292. package/dist/server/app-ssr-stream.js +311 -67
  293. package/dist/server/app-static-generation.d.ts +2 -1
  294. package/dist/server/app-streamed-client-references.d.ts +39 -0
  295. package/dist/server/app-streamed-client-references.js +156 -0
  296. package/dist/server/app-visited-response-cache.d.ts +2 -1
  297. package/dist/server/app-worker-stages.d.ts +2 -1
  298. package/dist/server/artifact-compatibility.d.ts +2 -1
  299. package/dist/server/bfcache-identity.d.ts +2 -1
  300. package/dist/server/cache-headers.d.ts +2 -1
  301. package/dist/server/cacheability-request.d.ts +2 -1
  302. package/dist/server/client-reuse-manifest.d.ts +2 -1
  303. package/dist/server/config-headers.d.ts +2 -1
  304. package/dist/server/config-headers.js +12 -3
  305. package/dist/server/csp.d.ts +2 -1
  306. package/dist/server/default-global-not-found-module.d.ts +2 -1
  307. package/dist/server/default-http-access-fallback-modules.d.ts +33 -0
  308. package/dist/server/default-http-access-fallback-modules.js +31 -0
  309. package/dist/server/defer-until-stream-consumed.d.ts +34 -0
  310. package/dist/server/defer-until-stream-consumed.js +154 -21
  311. package/dist/server/dev-lockfile.d.ts +32 -2
  312. package/dist/server/dev-lockfile.js +46 -2
  313. package/dist/server/dev-module-runner.d.ts +2 -1
  314. package/dist/server/dev-server.js +10 -3
  315. package/dist/server/fetch-handler.js +1 -2
  316. package/dist/server/file-based-metadata.d.ts +2 -1
  317. package/dist/server/framework-tracer.d.ts +2 -1
  318. package/dist/server/html.d.ts +1 -0
  319. package/dist/server/html.js +19 -1
  320. package/dist/server/http-conditional.d.ts +2 -1
  321. package/dist/server/http-error-responses.d.ts +2 -1
  322. package/dist/server/implicit-tags.d.ts +2 -1
  323. package/dist/server/isolate-shared-promise.d.ts +10 -0
  324. package/dist/server/isolate-shared-promise.js +33 -0
  325. package/dist/server/isr-cache.js +3 -2
  326. package/dist/server/metadata-route-build-data.d.ts +2 -1
  327. package/dist/server/metadata-route-build-data.js +1 -1
  328. package/dist/server/metadata-route-response.d.ts +2 -1
  329. package/dist/server/metadata-route-response.js +1 -1
  330. package/dist/server/metadata-routes.d.ts +2 -1
  331. package/dist/server/middleware-matcher-pattern.d.ts +0 -1
  332. package/dist/server/middleware-matcher-pattern.js +11 -140
  333. package/dist/server/middleware-matcher.js +5 -6
  334. package/dist/server/middleware-response-headers.d.ts +31 -0
  335. package/dist/server/middleware-response-headers.js +57 -1
  336. package/dist/server/middleware-runtime.d.ts +2 -1
  337. package/dist/server/middleware-runtime.js +26 -13
  338. package/dist/server/navigation-planner.d.ts +2 -2
  339. package/dist/server/navigation-trace.d.ts +2 -1
  340. package/dist/server/next-error-digest.d.ts +2 -1
  341. package/dist/server/nitro-public-files-plugin.d.ts +39 -0
  342. package/dist/server/nitro-public-files-plugin.js +106 -0
  343. package/dist/server/nitro-public-files.d.ts +22 -0
  344. package/dist/server/nitro-public-files.js +39 -0
  345. package/dist/server/opentelemetry-api.d.ts +2 -1
  346. package/dist/server/operation-token.d.ts +2 -1
  347. package/dist/server/pages-api-route.d.ts +2 -1
  348. package/dist/server/pages-asset-tags.d.ts +7 -1
  349. package/dist/server/pages-asset-tags.js +9 -2
  350. package/dist/server/pages-body-parser-config.d.ts +2 -1
  351. package/dist/server/pages-client-assets.d.ts +8 -1
  352. package/dist/server/pages-data-route.d.ts +2 -1
  353. package/dist/server/pages-document-asset-props.d.ts +2 -1
  354. package/dist/server/pages-document-initial-props.d.ts +2 -1
  355. package/dist/server/pages-execution-tracing.d.ts +2 -1
  356. package/dist/server/pages-execution-tracing.js +1 -1
  357. package/dist/server/pages-get-initial-props.d.ts +2 -1
  358. package/dist/server/pages-i18n.d.ts +18 -0
  359. package/dist/server/pages-i18n.js +18 -2
  360. package/dist/server/pages-node-compat.d.ts +5 -3
  361. package/dist/server/pages-node-compat.js +35 -16
  362. package/dist/server/pages-page-data.d.ts +7 -1
  363. package/dist/server/pages-page-data.js +35 -12
  364. package/dist/server/pages-page-handler.d.ts +3 -2
  365. package/dist/server/pages-page-handler.js +16 -7
  366. package/dist/server/pages-page-method.d.ts +2 -1
  367. package/dist/server/pages-page-response.d.ts +2 -1
  368. package/dist/server/pages-preview.d.ts +2 -1
  369. package/dist/server/pages-readiness.d.ts +2 -1
  370. package/dist/server/pages-request-pipeline.d.ts +8 -2
  371. package/dist/server/pages-request-pipeline.js +35 -40
  372. package/dist/server/pages-request-stage-entry.d.ts +2 -1
  373. package/dist/server/pages-request-stage-entry.js +16 -6
  374. package/dist/server/pages-response-stage-entry.d.ts +2 -1
  375. package/dist/server/pages-response-stage-entry.js +1 -1
  376. package/dist/server/pages-revalidate.js +1 -0
  377. package/dist/server/pages-route-data-kind.d.ts +2 -1
  378. package/dist/server/pages-router-entry.js +1 -1
  379. package/dist/server/prerender-cache-life-header.d.ts +2 -1
  380. package/dist/server/prerender-route-params.d.ts +2 -1
  381. package/dist/server/prod-server.d.ts +2 -2
  382. package/dist/server/prod-server.js +80 -36
  383. package/dist/server/proxy-trust.d.ts +6 -0
  384. package/dist/server/proxy-trust.js +12 -6
  385. package/dist/server/request-log.d.ts +2 -1
  386. package/dist/server/request-pipeline.d.ts +5 -0
  387. package/dist/server/request-pipeline.js +12 -1
  388. package/dist/server/request-tracing.d.ts +2 -1
  389. package/dist/server/request-tracing.js +1 -1
  390. package/dist/server/response-start-tracing.js +7 -29
  391. package/dist/server/rsc-render-stream.d.ts +4 -0
  392. package/dist/server/rsc-render-stream.js +25 -0
  393. package/dist/server/seed-cache.d.ts +2 -1
  394. package/dist/server/seed-cache.js +1 -1
  395. package/dist/server/server-reference-loader.js +10 -1
  396. package/dist/server/static-file-cache.d.ts +2 -1
  397. package/dist/server/static-file-cache.js +16 -3
  398. package/dist/server/static-layout-client-reuse-proof.d.ts +2 -1
  399. package/dist/server/worker-revalidation-context.d.ts +2 -1
  400. package/dist/server/worker-stages.d.ts +2 -1
  401. package/dist/server/worker-utils.js +1 -1
  402. package/dist/shims/app.d.ts +2 -1
  403. package/dist/shims/cache-callable-runtime.d.ts +2 -1
  404. package/dist/shims/cache-handler.d.ts +8 -3
  405. package/dist/shims/cache-handler.js +32 -11
  406. package/dist/shims/cache-request-state.d.ts +40 -3
  407. package/dist/shims/cache-request-state.js +70 -5
  408. package/dist/shims/cache-runtime.js +47 -19
  409. package/dist/shims/cache.d.ts +2 -2
  410. package/dist/shims/cache.js +17 -8
  411. package/dist/shims/caught-not-found-boundaries.d.ts +15 -0
  412. package/dist/shims/caught-not-found-boundaries.js +48 -0
  413. package/dist/shims/cdn-purge-routes.d.ts +25 -0
  414. package/dist/shims/cdn-purge-routes.js +77 -0
  415. package/dist/shims/client-locale.js +2 -1
  416. package/dist/shims/client-page-root.d.ts +2 -1
  417. package/dist/shims/config.d.ts +2 -1
  418. package/dist/shims/default-forbidden.d.ts +4 -0
  419. package/dist/shims/default-forbidden.js +18 -0
  420. package/dist/shims/default-not-found.d.ts +0 -5
  421. package/dist/shims/default-not-found.js +5 -41
  422. package/dist/shims/default-unauthorized.d.ts +4 -0
  423. package/dist/shims/default-unauthorized.js +18 -0
  424. package/dist/shims/dynamic.js +17 -4
  425. package/dist/shims/error-boundary.d.ts +39 -3
  426. package/dist/shims/error-boundary.js +31 -16
  427. package/dist/shims/font-google.js +1 -2
  428. package/dist/shims/font-utils.d.ts +3 -2
  429. package/dist/shims/font-utils.js +5 -3
  430. package/dist/shims/form.js +9 -4
  431. package/dist/shims/http-access-error-fallback.d.ts +7 -0
  432. package/dist/shims/http-access-error-fallback.js +47 -0
  433. package/dist/shims/image-props.d.ts +93 -0
  434. package/dist/shims/image-props.js +323 -0
  435. package/dist/shims/image.d.ts +4 -39
  436. package/dist/shims/image.js +4 -319
  437. package/dist/shims/internal/app-prefetch-fetch-queue.d.ts +22 -2
  438. package/dist/shims/internal/app-prefetch-fetch-queue.js +71 -18
  439. package/dist/shims/internal/app-route-prefetch-policy.d.ts +14 -3
  440. package/dist/shims/internal/app-route-prefetch-policy.js +29 -4
  441. package/dist/shims/internal/cache-context-accessor.d.ts +2 -1
  442. package/dist/shims/internal/client-reference-loader.d.ts +7 -0
  443. package/dist/shims/internal/client-reference-loader.js +91 -0
  444. package/dist/shims/internal/cookie-serialize.d.ts +2 -1
  445. package/dist/shims/internal/cookies.js +1 -2
  446. package/dist/shims/internal/headers-state.d.ts +9 -0
  447. package/dist/shims/internal/headers-state.js +19 -2
  448. package/dist/shims/internal/hybrid-client-route-owner-direct.d.ts +6 -2
  449. package/dist/shims/internal/hybrid-client-route-owner-direct.js +31 -14
  450. package/dist/shims/internal/hybrid-client-route-owner.js +8 -8
  451. package/dist/shims/internal/interpolate-as.d.ts +2 -1
  452. package/dist/shims/internal/pages-data-target.d.ts +2 -1
  453. package/dist/shims/internal/pages-data-url.d.ts +2 -1
  454. package/dist/shims/internal/thenable-well-known-properties.d.ts +2 -1
  455. package/dist/shims/link.js +198 -53
  456. package/dist/shims/metadata.d.ts +32 -11
  457. package/dist/shims/metadata.js +88 -26
  458. package/dist/shims/navigation-errors.d.ts +2 -1
  459. package/dist/shims/navigation.d.ts +23 -3
  460. package/dist/shims/navigation.js +91 -25
  461. package/dist/shims/og.js +35 -10
  462. package/dist/shims/pages-router-runtime.d.ts +2 -1
  463. package/dist/shims/ppr-fallback-shell.d.ts +2 -1
  464. package/dist/shims/request-context.d.ts +13 -0
  465. package/dist/shims/router.js +33 -43
  466. package/dist/shims/server.d.ts +31 -4
  467. package/dist/shims/server.js +58 -10
  468. package/dist/shims/thenable-params.d.ts +6 -1
  469. package/dist/shims/thenable-params.js +11 -2
  470. package/dist/shims/unified-request-context.d.ts +5 -0
  471. package/dist/shims/unified-request-context.js +5 -3
  472. package/dist/typegen.d.ts +2 -1
  473. package/dist/utils/asset-prefix.d.ts +7 -0
  474. package/dist/utils/asset-prefix.js +10 -1
  475. package/dist/utils/client-build-manifest.d.ts +4 -1
  476. package/dist/utils/client-build-manifest.js +20 -6
  477. package/dist/utils/client-entry-manifest.d.ts +13 -0
  478. package/dist/utils/client-entry-manifest.js +20 -1
  479. package/dist/utils/client-reference-chunks.d.ts +45 -0
  480. package/dist/utils/client-reference-chunks.js +30 -0
  481. package/dist/utils/client-runtime-metadata.d.ts +10 -1
  482. package/dist/utils/client-runtime-metadata.js +53 -9
  483. package/dist/utils/compare.d.ts +9 -0
  484. package/dist/utils/compare.js +15 -1
  485. package/dist/utils/lazy-chunks.d.ts +18 -0
  486. package/dist/utils/lazy-chunks.js +27 -1
  487. package/dist/utils/manifest-paths.d.ts +14 -0
  488. package/dist/utils/manifest-paths.js +22 -1
  489. package/dist/utils/middleware-request-headers.d.ts +2 -1
  490. package/dist/utils/path-to-regexp.d.ts +21 -0
  491. package/dist/{server/middleware-path-to-regexp.js → utils/path-to-regexp.js} +14 -11
  492. package/dist/utils/plugin-react-version.d.ts +15 -0
  493. package/dist/utils/plugin-react-version.js +64 -0
  494. package/dist/utils/project.d.ts +2 -1
  495. package/dist/utils/project.js +9 -1
  496. package/dist/utils/public-routes.d.ts +2 -0
  497. package/dist/utils/public-routes.js +18 -7
  498. package/dist/utils/query.d.ts +2 -1
  499. package/dist/utils/sorted-array.d.ts +2 -1
  500. package/dist/utils/vite-cli-invocation.d.ts +2 -1
  501. package/package.json +5 -5
  502. package/dist/deps/.pnpm/image-size@2.0.2/deps/image-size/dist/index.js +0 -808
  503. package/dist/server/default-not-found-module.d.ts +0 -19
  504. package/dist/server/default-not-found-module.js +0 -18
  505. package/dist/server/middleware-path-to-regexp.d.ts +0 -13
  506. package/dist/server/rsc-stream-hints.d.ts +0 -21
  507. package/dist/server/rsc-stream-hints.js +0 -227
  508. package/dist/utils/regex-safety.d.ts +0 -17
  509. package/dist/utils/regex-safety.js +0 -789
@@ -2,8 +2,8 @@ import path from "../deps/.pnpm/pathslash@0.1.0/deps/pathslash/dist/index.js";
2
2
  import { appIsrCacheKey, appIsrFallbackShellKey, isrSet, isrSetPrerenderedAppPage } from "./isr-cache.js";
3
3
  import { addPregeneratedConcretePath, addPregeneratedRoute, clearPregeneratedConcretePaths, normalizePregeneratedPathname } from "./pregenerated-concrete-paths.js";
4
4
  import { getRenderedAppRoutes, getRenderedMetadataRoutes, isFallbackShellArtifactPath, readPrerenderManifest } from "./prerender-manifest.js";
5
- import { buildAppPageCacheTags, buildAppRouteCacheTags } from "./app-page-cache.js";
6
5
  import { getAppRouteOutputPath, getOutputPath, getRscOutputPath } from "../utils/prerender-output-paths.js";
6
+ import { buildAppPageCacheTags, buildAppRouteCacheTags } from "./app-page-cache.js";
7
7
  import fs from "node:fs";
8
8
  //#region src/server/seed-cache.ts
9
9
  /**
@@ -1,4 +1,6 @@
1
1
  import { runOutsideRequestScopes } from "../shims/internal/als-registry.js";
2
+ import { getRequestExecutionContext } from "../shims/request-context.js";
3
+ import { shareIsolatePromise } from "./isolate-shared-promise.js";
2
4
  //#region src/server/server-reference-loader.ts
3
5
  /**
4
6
  * Keep server-reference module evaluation out of the request that first
@@ -21,7 +23,14 @@ const ISOLATED = Symbol.for("vinext.serverReferenceRequire.isolated");
21
23
  function isolateServerReferenceLoads() {
22
24
  const load = globalThis.__vite_rsc_server_require__;
23
25
  if (typeof load !== "function" || ISOLATED in load) return;
24
- const isolated = (id) => runOutsideRequestScopes(() => load(id));
26
+ const started = /* @__PURE__ */ new WeakSet();
27
+ const isolated = (id) => {
28
+ const ctx = getRequestExecutionContext();
29
+ const loaded = runOutsideRequestScopes(() => load(id));
30
+ if (!(loaded instanceof Promise) || started.has(loaded)) return loaded;
31
+ started.add(loaded);
32
+ return shareIsolatePromise(loaded, ctx);
33
+ };
25
34
  Object.defineProperty(isolated, ISOLATED, { value: true });
26
35
  globalThis.__vite_rsc_server_require__ = isolated;
27
36
  }
@@ -66,4 +66,5 @@ export declare class StaticFileCache {
66
66
  * so the caller can fall back to mtime-based ETags.
67
67
  */
68
68
  export declare function etagFromFilenameHash(relativePath: string, ext: string): string | null;
69
- //#endregion
69
+ //#endregion
70
+ export {};
@@ -37,6 +37,7 @@ const CONTENT_TYPES = {
37
37
  ".mp4": "video/mp4",
38
38
  ".ogg": "audio/ogg",
39
39
  ".ogv": "video/ogg",
40
+ ".otf": "font/otf",
40
41
  ".pdf": "application/pdf",
41
42
  ".png": "image/png",
42
43
  ".rsc": "text/x-component",
@@ -178,6 +179,15 @@ var StaticFileCache = class StaticFileCache {
178
179
  return this.entries.get(pathname);
179
180
  }
180
181
  };
182
+ const MANAGED_CHUNKS_SEGMENT = `${ASSET_PREFIX_URL_DIR}/chunks/`;
183
+ const MANAGED_CSS_SEGMENT = `${ASSET_PREFIX_URL_DIR}/css/`;
184
+ const MANAGED_WORKERS_SEGMENT = `${ASSET_PREFIX_URL_DIR}/workers/`;
185
+ const MANAGED_MEDIA_SEGMENT = `${ASSET_PREFIX_URL_DIR}/media/`;
186
+ const HASH_ONLY_BASENAME_RE = /^[A-Za-z0-9_-]{8}$/;
187
+ const WORKER_BASENAME_RE = /^[0-9a-f]{8}-[A-Za-z0-9_-]{8}$/;
188
+ function isInManagedDir(normalizedPath, segment) {
189
+ return normalizedPath.startsWith(segment) || normalizedPath.includes(`/${segment}`);
190
+ }
181
191
  /**
182
192
  * Extract a stable weak ETag from a Vite hashed filename (e.g. `app-DqZc3R4n.js`).
183
193
  * The hash is a content hash computed by the bundler — deterministic across
@@ -190,14 +200,17 @@ var StaticFileCache = class StaticFileCache {
190
200
  */
191
201
  function etagFromFilenameHash(relativePath, ext) {
192
202
  const basename = path.basename(relativePath, ext);
203
+ if (basename.length === 8 && HASH_ONLY_BASENAME_RE.test(basename)) {
204
+ const normalizedPath = toSlash(relativePath);
205
+ if (isInManagedDir(normalizedPath, MANAGED_CHUNKS_SEGMENT) || isInManagedDir(normalizedPath, MANAGED_CSS_SEGMENT)) return `W/"${basename}"`;
206
+ }
207
+ if (basename.length === 17 && WORKER_BASENAME_RE.test(basename) && isInManagedDir(toSlash(relativePath), MANAGED_WORKERS_SEGMENT)) return `W/"${basename}"`;
193
208
  const lastDash = basename.lastIndexOf("-");
194
209
  if (lastDash !== -1 && lastDash !== basename.length - 1) {
195
210
  const suffix = basename.slice(lastDash + 1);
196
211
  if (suffix.length >= 6 && suffix.length <= 12 && /^[A-Za-z0-9_-]+$/.test(suffix)) return `W/"${suffix}"`;
197
212
  }
198
- const normalizedPath = toSlash(relativePath);
199
- const managedMediaSegment = `${ASSET_PREFIX_URL_DIR}/media/`;
200
- if (normalizedPath.startsWith(managedMediaSegment) || normalizedPath.includes(`/${managedMediaSegment}`)) {
213
+ if (isInManagedDir(toSlash(relativePath), MANAGED_MEDIA_SEGMENT)) {
201
214
  const lastDot = basename.lastIndexOf(".");
202
215
  if (lastDot !== -1) {
203
216
  const suffix = basename.slice(lastDot + 1);
@@ -10,4 +10,5 @@ type StaticLayoutClientReuseProofInput = Readonly<{
10
10
  export declare function createStaticLayoutClientReuseRouteId(layoutId: string): string;
11
11
  export declare function createStaticLayoutClientReusePayloadHash(input: StaticLayoutClientReuseProofInput): string;
12
12
  export declare function createStaticLayoutClientReuseArtifactCompatibility(input: StaticLayoutClientReuseProofInput): ArtifactCompatibilityEnvelope;
13
- //#endregion
13
+ //#endregion
14
+ export {};
@@ -9,4 +9,5 @@ type PlatformExecutionContext = Partial<ExecutionContextLike> & VinextRequestSta
9
9
  * on the normal header-scrubbing path.
10
10
  */
11
11
  export declare function createWorkerRevalidationContext(base: PlatformExecutionContext | undefined, handleInternalRequest: (request: Request, ctx: ExecutionContextLike) => Promise<Response>, defaultHostRuntime?: "node" | "worker"): ExecutionContextLike;
12
- //#endregion
12
+ //#endregion
13
+ export {};
@@ -40,4 +40,5 @@ export type WorkerResponseStageProps = PagesApiResponseStageProps | PagesPageRes
40
40
  */
41
41
  export type DispatchWorkerResponseStage = VinextResponseStageTransport<WorkerResponseStageProps>;
42
42
  export declare function isPagesResponseStageProps(value: unknown): value is WorkerResponseStageProps;
43
- //#endregion
43
+ //#endregion
44
+ export {};
@@ -108,7 +108,7 @@ async function resolveStaticAssetSignal(signalResponse, options) {
108
108
  * overrides, so a removed `Range` or replaced validator reaches the asset fetch.
109
109
  */
110
110
  function createStaticAssetRequest(assetPath, sourceRequest, headers = null) {
111
- const assetUrl = new URL(assetPath, sourceRequest.url);
111
+ const assetUrl = new URL(assetPath.replace(/[?#]/g, (character) => encodeURIComponent(character)), sourceRequest.url);
112
112
  if (sourceRequest.method === "GET" || sourceRequest.method === "HEAD") return headers ? new Request(new Request(assetUrl, sourceRequest), { headers }) : new Request(assetUrl, sourceRequest);
113
113
  return new Request(assetUrl, {
114
114
  method: sourceRequest.method,
@@ -34,4 +34,5 @@ export default class App<P = any, CP = any, S = any> extends React.Component<P &
34
34
  static getInitialProps: typeof appGetInitialProps;
35
35
  render(): React.ReactElement;
36
36
  }
37
- //#endregion
37
+ //#endregion
38
+ export {};
@@ -12,4 +12,5 @@ export declare function registerCachedFunction<TArgs extends unknown[], TResult>
12
12
  }): (...args: TArgs) => Promise<TResult>;
13
13
  /** Replay the persisted payload without re-reading or re-encoding caller objects. */
14
14
  export declare function invokeCacheFunction(invocation: VinextCacheFunctionInvocation, loadServerAction: (id: string) => Promise<unknown>): Promise<void>;
15
- //#endregion
15
+ //#endregion
16
+ export {};
@@ -96,7 +96,7 @@ type MemoryCacheHandlerOptions = Pick<CacheHandlerContext, "maxMemoryCacheSize">
96
96
  };
97
97
  export declare class MemoryCacheHandler implements CacheHandler {
98
98
  private store;
99
- private tagRevalidatedAt;
99
+ private tagsManifest;
100
100
  private readonly maxMemoryCacheSize;
101
101
  private currentMemoryCacheSize;
102
102
  constructor(options?: number | MemoryCacheHandlerOptions);
@@ -106,7 +106,11 @@ export declare class MemoryCacheHandler implements CacheHandler {
106
106
  private evictLeastRecentlyUsed;
107
107
  get(key: string, ctx?: Record<string, unknown>): Promise<CacheHandlerValue | null>;
108
108
  set(key: string, data: IncrementalCacheValue | null, ctx?: Record<string, unknown>): Promise<void>;
109
- revalidateTag(tags: string | string[]): Promise<void>;
109
+ revalidateTag(tags: string | string[], durations?: {
110
+ expire?: number;
111
+ }): Promise<void>;
112
+ private isTagExpired;
113
+ private isTagStale;
110
114
  resetRequestCache(): void;
111
115
  }
112
116
  export declare function configureMemoryCacheHandler(options?: MemoryCacheHandlerOptions): void;
@@ -121,4 +125,5 @@ export declare function registerLazyDataCacheHandler(load: () => Promise<void>):
121
125
  export declare function getDataCacheHandler(): CacheHandler;
122
126
  export declare function setCacheHandler(handler: CacheHandler): void;
123
127
  export declare function getCacheHandler(): CacheHandler;
124
- //#endregion
128
+ //#endregion
129
+ export {};
@@ -1,3 +1,4 @@
1
+ import { shareIsolatePromise } from "../server/isolate-shared-promise.js";
1
2
  import { readCacheControlNumberField, readCacheControlRevalidateField } from "../utils/cache-control-metadata.js";
2
3
  //#region src/shims/cache-handler.ts
3
4
  var NoOpCacheHandler = class {
@@ -47,7 +48,7 @@ function readPositiveNumberField(ctx, field) {
47
48
  }
48
49
  var MemoryCacheHandler = class {
49
50
  store = /* @__PURE__ */ new Map();
50
- tagRevalidatedAt = /* @__PURE__ */ new Map();
51
+ tagsManifest = /* @__PURE__ */ new Map();
51
52
  maxMemoryCacheSize;
52
53
  currentMemoryCacheSize = 0;
53
54
  constructor(options) {
@@ -76,19 +77,20 @@ var MemoryCacheHandler = class {
76
77
  async get(key, ctx) {
77
78
  const entry = this.store.get(key);
78
79
  if (!entry) return null;
80
+ const now = Date.now();
81
+ let hasStaleTag = false;
79
82
  for (const tag of entry.tags) {
80
- const revalidatedAt = this.tagRevalidatedAt.get(tag);
81
- if (revalidatedAt && revalidatedAt >= entry.lastModified) {
83
+ if (this.isTagExpired(tag, entry.lastModified, now)) {
82
84
  this.deleteEntry(key);
83
85
  return null;
84
86
  }
87
+ hasStaleTag ||= this.isTagStale(tag, entry.lastModified);
85
88
  }
86
89
  for (const tag of readStringArrayField(ctx, "softTags")) {
87
- const revalidatedAt = this.tagRevalidatedAt.get(tag);
88
- if (revalidatedAt && revalidatedAt >= entry.lastModified) return null;
90
+ if (this.isTagExpired(tag, entry.lastModified, now)) return null;
91
+ hasStaleTag ||= this.isTagStale(tag, entry.lastModified);
89
92
  }
90
93
  this.touchEntry(key, entry);
91
- const now = Date.now();
92
94
  if (entry.expireAt !== null && now > entry.expireAt) return {
93
95
  lastModified: entry.lastModified,
94
96
  value: entry.value,
@@ -97,7 +99,7 @@ var MemoryCacheHandler = class {
97
99
  };
98
100
  const requestedRevalidate = readPositiveNumberField(ctx, "revalidate");
99
101
  const requestedRevalidateAt = requestedRevalidate === void 0 ? null : entry.lastModified + requestedRevalidate * 1e3;
100
- if (entry.revalidateAt !== null && now > entry.revalidateAt || requestedRevalidateAt !== null && now > requestedRevalidateAt) return {
102
+ if (hasStaleTag || entry.revalidateAt !== null && now > entry.revalidateAt || requestedRevalidateAt !== null && now > requestedRevalidateAt) return {
101
103
  lastModified: entry.lastModified,
102
104
  value: entry.value,
103
105
  cacheState: "stale",
@@ -147,10 +149,29 @@ var MemoryCacheHandler = class {
147
149
  this.currentMemoryCacheSize += entrySize;
148
150
  this.evictLeastRecentlyUsed();
149
151
  }
150
- async revalidateTag(tags) {
152
+ async revalidateTag(tags, durations) {
151
153
  const tagList = Array.isArray(tags) ? tags : [tags];
152
154
  const now = Date.now();
153
- for (const tag of tagList) this.tagRevalidatedAt.set(tag, now);
155
+ for (const tag of tagList) {
156
+ const existing = this.tagsManifest.get(tag) ?? {};
157
+ if (durations) this.tagsManifest.set(tag, {
158
+ ...existing,
159
+ stale: now,
160
+ ...durations.expire === void 0 ? {} : { expired: now + durations.expire * 1e3 }
161
+ });
162
+ else this.tagsManifest.set(tag, {
163
+ ...existing,
164
+ expired: now
165
+ });
166
+ }
167
+ }
168
+ isTagExpired(tag, lastModified, now) {
169
+ const expired = this.tagsManifest.get(tag)?.expired;
170
+ return expired !== void 0 && expired <= now && expired >= lastModified;
171
+ }
172
+ isTagStale(tag, lastModified) {
173
+ const stale = this.tagsManifest.get(tag)?.stale;
174
+ return stale !== void 0 && stale > lastModified;
154
175
  }
155
176
  resetRequestCache() {}
156
177
  };
@@ -167,7 +188,7 @@ var LazyDataCacheHandler = class {
167
188
  this.load = load;
168
189
  }
169
190
  resolve() {
170
- return this.resolved ??= this.load().then(() => {
191
+ return this.resolved ??= shareIsolatePromise(this.load().then(() => {
171
192
  const registered = globalHandlers[HANDLER_KEY];
172
193
  if (registered && registered !== this) {
173
194
  this.loadedHandler = registered;
@@ -179,7 +200,7 @@ var LazyDataCacheHandler = class {
179
200
  delete globalHandlers[LAZY_HANDLER_KEY];
180
201
  this.loadedHandler = fallback;
181
202
  return fallback;
182
- });
203
+ }));
183
204
  }
184
205
  async get(key, ctx) {
185
206
  return (await this.resolve()).get(key, ctx);
@@ -23,9 +23,19 @@ export type UnstableCacheObservation = Readonly<{
23
23
  export type CacheLifeSink = {
24
24
  cacheLife: CacheLifeConfig | null;
25
25
  };
26
+ type TagInvalidationDurations = {
27
+ expire?: number;
28
+ } | undefined;
29
+ /** A CDN purge waiting for the request boundary, after its data-cache invalidation. */
30
+ export type PendingCdnTagInvalidation = Readonly<{
31
+ tag: string;
32
+ durations: TagInvalidationDurations;
33
+ dataInvalidation: Promise<void>;
34
+ }>;
26
35
  export type CacheState = {
27
36
  actionRevalidationKind: ActionRevalidationKind;
28
37
  cacheLifeSink: CacheLifeSink | null;
38
+ pendingCdnTagInvalidations: PendingCdnTagInvalidation[];
29
39
  pendingRevalidatedTags: Set<string>;
30
40
  pendingRevalidations: Set<Promise<void>>;
31
41
  requestScopedCacheLife: CacheLifeConfig | null;
@@ -56,9 +66,36 @@ export declare function _hasPendingRevalidatedTag(tags: readonly string[]): bool
56
66
  */
57
67
  export declare function _queuePendingRevalidation(promise: Promise<void>): boolean;
58
68
  /**
59
- * Await and clear every cache invalidation queued in the current request.
60
- * Clearing before awaiting also lets a later drain observe work enqueued by
61
- * an async continuation while this batch is settling.
69
+ * Defer the CDN purge for `tag` to the current Server Action or Route Handler
70
+ * boundary, so the request sends one adapter call per cacheLife profile like
71
+ * Next.js' `executeRevalidates`. Edge purges are rate limited (Workers Cache
72
+ * allows 5 requests a minute per account), so per-call purges run out fast.
73
+ *
74
+ * Only those two phases defer: their executors always drain before the
75
+ * request finishes. Once the response has closed, `after()` callbacks run
76
+ * past the last drain, so they purge immediately too. Everywhere else returns
77
+ * false and the caller purges immediately.
78
+ *
79
+ * @internal
80
+ */
81
+ export declare function _queuePendingCdnTagInvalidation(tag: string, durations: TagInvalidationDurations, dataInvalidation: Promise<void>): boolean;
82
+ /**
83
+ * Ask the CDN adapter to invalidate `tags`, logging rather than rethrowing a
84
+ * failure. The data cache is already invalidated by then, so a failed edge
85
+ * purge leaves edge-cached responses stale until they expire, and failing the
86
+ * request would not change that. It would only report a committed Server
87
+ * Action write as a failure.
88
+ *
89
+ * @internal
90
+ */
91
+ export declare function _revalidateCdnTags(tags: string | string[], durations?: {
92
+ expire?: number;
93
+ }): Promise<void>;
94
+ /**
95
+ * Await and clear every cache invalidation queued in the current request,
96
+ * then send the deferred CDN purges in batches. Clearing before awaiting also
97
+ * lets a later drain observe work enqueued by an async continuation while
98
+ * this batch is settling.
62
99
  *
63
100
  * @internal
64
101
  */
@@ -1,5 +1,6 @@
1
1
  import { getOrCreateAls } from "./internal/als-registry.js";
2
2
  import { getRequestContext, isInsideUnifiedScope, runWithUnifiedStateMutation } from "./unified-request-context.js";
3
+ import { getCdnCacheAdapter } from "./cdn-cache.js";
3
4
  import { getHeadersAccessPhase } from "./internal/headers-state.js";
4
5
  import { _recordUseCacheRootParamRead, _registerCacheContextAccessor, getRegisteredCacheContext } from "./internal/cache-context-accessor.js";
5
6
  //#region src/shims/cache-request-state.ts
@@ -48,6 +49,7 @@ const ACTION_DID_REVALIDATE_DYNAMIC_ONLY = 2;
48
49
  const fallbackState = globalState[FALLBACK_KEY] ??= {
49
50
  actionRevalidationKind: ACTION_DID_NOT_REVALIDATE,
50
51
  cacheLifeSink: null,
52
+ pendingCdnTagInvalidations: [],
51
53
  pendingRevalidatedTags: /* @__PURE__ */ new Set(),
52
54
  pendingRevalidations: /* @__PURE__ */ new Set(),
53
55
  requestScopedCacheLife: null,
@@ -69,6 +71,7 @@ function _runWithCacheState(fn) {
69
71
  const state = {
70
72
  actionRevalidationKind: ACTION_DID_NOT_REVALIDATE,
71
73
  cacheLifeSink: null,
74
+ pendingCdnTagInvalidations: [],
72
75
  pendingRevalidatedTags: /* @__PURE__ */ new Set(),
73
76
  pendingRevalidations: /* @__PURE__ */ new Set(),
74
77
  requestScopedCacheLife: null,
@@ -128,9 +131,69 @@ function _queuePendingRevalidation(promise) {
128
131
  return true;
129
132
  }
130
133
  /**
131
- * Await and clear every cache invalidation queued in the current request.
132
- * Clearing before awaiting also lets a later drain observe work enqueued by
133
- * an async continuation while this batch is settling.
134
+ * Defer the CDN purge for `tag` to the current Server Action or Route Handler
135
+ * boundary, so the request sends one adapter call per cacheLife profile like
136
+ * Next.js' `executeRevalidates`. Edge purges are rate limited (Workers Cache
137
+ * allows 5 requests a minute per account), so per-call purges run out fast.
138
+ *
139
+ * Only those two phases defer: their executors always drain before the
140
+ * request finishes. Once the response has closed, `after()` callbacks run
141
+ * past the last drain, so they purge immediately too. Everywhere else returns
142
+ * false and the caller purges immediately.
143
+ *
144
+ * @internal
145
+ */
146
+ function _queuePendingCdnTagInvalidation(tag, durations, dataInvalidation) {
147
+ const phase = getHeadersAccessPhase();
148
+ if (phase !== "action" && phase !== "route-handler") return false;
149
+ if (isInsideUnifiedScope() && getRequestContext().afterContext.responseClosed) return false;
150
+ getCacheState().pendingCdnTagInvalidations.push({
151
+ tag,
152
+ durations,
153
+ dataInvalidation
154
+ });
155
+ return true;
156
+ }
157
+ /**
158
+ * Ask the CDN adapter to invalidate `tags`, logging rather than rethrowing a
159
+ * failure. The data cache is already invalidated by then, so a failed edge
160
+ * purge leaves edge-cached responses stale until they expire, and failing the
161
+ * request would not change that. It would only report a committed Server
162
+ * Action write as a failure.
163
+ *
164
+ * @internal
165
+ */
166
+ async function _revalidateCdnTags(tags, durations) {
167
+ try {
168
+ await getCdnCacheAdapter().revalidateTag(tags, durations);
169
+ } catch (error) {
170
+ console.error("[vinext] CDN cache invalidation failed; edge-cached responses may stay stale until they expire:", error);
171
+ }
172
+ }
173
+ async function flushCdnTagInvalidations(invalidations) {
174
+ if (invalidations.length === 0) return;
175
+ const settled = await Promise.allSettled(invalidations.map(({ dataInvalidation }) => dataInvalidation));
176
+ const batches = /* @__PURE__ */ new Map();
177
+ invalidations.forEach(({ tag, durations }, index) => {
178
+ if (settled[index].status === "rejected") return;
179
+ const key = durations === void 0 ? "" : JSON.stringify(durations);
180
+ let batch = batches.get(key);
181
+ if (!batch) {
182
+ batch = {
183
+ durations,
184
+ tags: /* @__PURE__ */ new Set()
185
+ };
186
+ batches.set(key, batch);
187
+ }
188
+ batch.tags.add(tag);
189
+ });
190
+ await Promise.all([...batches.values()].map(({ durations, tags }) => _revalidateCdnTags([...tags], durations)));
191
+ }
192
+ /**
193
+ * Await and clear every cache invalidation queued in the current request,
194
+ * then send the deferred CDN purges in batches. Clearing before awaiting also
195
+ * lets a later drain observe work enqueued by an async continuation while
196
+ * this batch is settling.
134
197
  *
135
198
  * @internal
136
199
  */
@@ -138,14 +201,16 @@ async function _drainPendingRevalidations() {
138
201
  const state = getCacheState();
139
202
  let didReject = false;
140
203
  let firstRejection;
141
- while (state.pendingRevalidations.size > 0) {
204
+ while (state.pendingRevalidations.size > 0 || state.pendingCdnTagInvalidations.length > 0) {
142
205
  const pending = [...state.pendingRevalidations];
143
206
  state.pendingRevalidations.clear();
207
+ const cdnInvalidations = state.pendingCdnTagInvalidations.splice(0);
144
208
  const results = await Promise.allSettled(pending);
145
209
  for (const result of results) if (result.status === "rejected" && !didReject) {
146
210
  didReject = true;
147
211
  firstRejection = result.reason;
148
212
  }
213
+ await flushCdnTagInvalidations(cdnInvalidations);
149
214
  }
150
215
  if (didReject) throw firstRejection;
151
216
  }
@@ -220,4 +285,4 @@ function shouldServeStaleUnstableCacheEntry() {
220
285
  return getCacheState().unstableCacheRevalidation === "background";
221
286
  }
222
287
  //#endregion
223
- export { ACTION_DID_REVALIDATE_DYNAMIC_ONLY, ACTION_DID_REVALIDATE_STATIC_AND_DYNAMIC, _captureRequestScopedCacheLifeAccessors, _consumeRequestScopedCacheLife, _drainPendingRevalidations, _hasPendingRevalidatedTag, _initRequestScopedCacheState, _markPendingRevalidatedTag, _peekRequestScopedCacheLife, _peekUnstableCacheObservations, _queuePendingRevalidation, _recordUseCacheRootParamRead, _registerCacheContextAccessor, _runWithCacheState, _setRequestScopedCacheLife, cacheLifeProfiles, getAndClearActionRevalidationKind, getRegisteredCacheContext, markActionRevalidation, recordUnstableCacheObservation, runWithDetachedCacheObservations, shouldServeStaleUnstableCacheEntry };
288
+ export { ACTION_DID_REVALIDATE_DYNAMIC_ONLY, ACTION_DID_REVALIDATE_STATIC_AND_DYNAMIC, _captureRequestScopedCacheLifeAccessors, _consumeRequestScopedCacheLife, _drainPendingRevalidations, _hasPendingRevalidatedTag, _initRequestScopedCacheState, _markPendingRevalidatedTag, _peekRequestScopedCacheLife, _peekUnstableCacheObservations, _queuePendingCdnTagInvalidation, _queuePendingRevalidation, _recordUseCacheRootParamRead, _registerCacheContextAccessor, _revalidateCdnTags, _runWithCacheState, _setRequestScopedCacheLife, cacheLifeProfiles, getAndClearActionRevalidationKind, getRegisteredCacheContext, markActionRevalidation, recordUnstableCacheObservation, runWithDetachedCacheObservations, shouldServeStaleUnstableCacheEntry };
@@ -3,17 +3,19 @@ import { getRequestContext, isInsideUnifiedScope, runWithUnifiedStateMutation }
3
3
  import { VINEXT_RSC_MARKER_HEADER } from "../server/headers.js";
4
4
  import { workUnitAsyncStorage } from "./internal/work-unit-async-storage.js";
5
5
  import { isRouteCacheabilityProbe, recordRouteCacheabilityProbeBailout } from "./cacheability-classification.js";
6
+ import { shareIsolatePromise } from "../server/isolate-shared-promise.js";
6
7
  import { getDataCacheHandler } from "./cache-handler.js";
7
8
  import { addCollectedRequestTags, getCurrentFetchSoftTags, runWithDetachedFetchObservations } from "./fetch-cache-state.js";
8
9
  import { suppressHangingPromiseAbortRejections } from "./internal/make-hanging-promise.js";
9
10
  import { createPprFallbackShellSuspensePromise, trackPprFallbackShellCacheTask } from "./ppr-fallback-shell.js";
10
- import { markDynamicUsage, throwIfInsideCacheScope } from "./internal/headers-state.js";
11
+ import { createUseCacheAccessError, markDynamicUsage, recordInvalidDynamicUsageError } from "./internal/headers-state.js";
11
12
  import { isDraftModeEnabled } from "./headers.js";
12
13
  import { _registerCacheContextAccessor } from "./internal/cache-context-accessor.js";
13
14
  import { _hasPendingRevalidatedTag, _setRequestScopedCacheLife, cacheLifeProfiles, runWithDetachedCacheObservations, shouldServeStaleUnstableCacheEntry } from "./cache-request-state.js";
14
15
  import "./fetch-cache.js";
15
16
  import { hasUseCacheLayoutMarker, hasUseCachePageMarker, isUseCacheFunctionReference, withoutUseCacheSegmentMarker } from "./internal/app-page-props-cache-key.js";
16
- import { getFallbackParamsSnapshot, makeThenableParams, restoreThenableParams } from "./thenable-params.js";
17
+ import { isWellKnownProperty } from "./internal/thenable-well-known-properties.js";
18
+ import { getFallbackParamsSnapshot, restoreThenableParams } from "./thenable-params.js";
17
19
  import { getCurrentRootParams } from "./root-params.js";
18
20
  import { flightArgumentsKey, restoreFlightReply, snapshotFlightReply } from "./cache-flight-arguments.js";
19
21
  import { cache } from "react";
@@ -132,7 +134,7 @@ function buildUseCacheKey(id, keySeed, argsKey) {
132
134
  }
133
135
  let _rscModule;
134
136
  function getRscModule() {
135
- return _rscModule ??= import("@vitejs/plugin-rsc/react/rsc");
137
+ return _rscModule ??= shareIsolatePromise(import("@vitejs/plugin-rsc/react/rsc"));
136
138
  }
137
139
  /** Collect a ReadableStream<Uint8Array> into a single Uint8Array. */
138
140
  async function collectStream(stream) {
@@ -365,9 +367,9 @@ function registerCachedFunction(fn, id, variant, options = {}) {
365
367
  ...props,
366
368
  params: restoreThenableParams(await props.params, outerParams)
367
369
  });
368
- if (pagePropsIndex !== void 0) callArgs = withErroringPageSearchParams(callArgs, pagePropsIndex);
369
370
  }
370
- if (fallbackParams) return (await executeWithContext(fn, callArgs, cacheVariant, rsc)).result;
371
+ const callFn = segmentPropsIndex !== -1 && pagePropsIndex !== void 0 ? withErroringPageSearchParams(fn, pagePropsIndex) : fn;
372
+ if (fallbackParams) return (await executeWithContext(callFn, callArgs, cacheVariant, rsc)).result;
371
373
  if (cacheVariant === "private") {
372
374
  const privateCache = _getPrivateState()._privateCache;
373
375
  const privateHit = privateCache.get(cacheKey);
@@ -375,11 +377,11 @@ function registerCachedFunction(fn, id, variant, options = {}) {
375
377
  if (privateHit.serialized) return rsc.createFromReadableStream(uint8ToStream(base64ToUint8(privateHit.serialized.body)), {}, { preserveServerReferences: true });
376
378
  return privateHit.result;
377
379
  }
378
- const execution = await executeWithContext(fn, callArgs, cacheVariant, rsc);
380
+ const execution = await executeWithContext(callFn, callArgs, cacheVariant, rsc);
379
381
  if (execution.cacheable) privateCache.set(cacheKey, execution);
380
382
  return execution.result;
381
383
  }
382
- if (isDev || isDraftModeEnabled()) return (await executeWithContext(fn, callArgs, cacheVariant, rsc)).result;
384
+ if (isDev || isDraftModeEnabled()) return (await executeWithContext(callFn, callArgs, cacheVariant, rsc)).result;
383
385
  const handler = getDataCacheHandler();
384
386
  const rootParams = getCurrentRootParams();
385
387
  const knownRootParamNames = knownRootParamsByFunctionId.get(id);
@@ -409,7 +411,7 @@ function registerCachedFunction(fn, id, variant, options = {}) {
409
411
  }
410
412
  }
411
413
  const generate = async (propagate) => {
412
- const { result, ctx, effectiveLife, collectedResult } = await runCachedFunctionWithContext(fn, callArgs, cacheVariant, (value) => serializeCacheResult(value, rsc));
414
+ const { result, ctx, effectiveLife, collectedResult } = await runCachedFunctionWithContext(callFn, callArgs, cacheVariant, (value) => serializeCacheResult(value, rsc));
413
415
  const rootParamNames = ctx.readRootParamNames && ctx.readRootParamNames.size > 0 ? addKnownRootParamNames(id, ctx.readRootParamNames) : knownRootParamsByFunctionId.get(id);
414
416
  if (propagate) {
415
417
  recordRequestScopedCacheLife(effectiveLife);
@@ -631,18 +633,44 @@ function toReplayablePageArgs(args, index) {
631
633
  return replaceArgument(args, index, pageProps);
632
634
  }
633
635
  /**
634
- * Give page props at `index` without `searchParams` (a Response Store replay of
635
- * args encoded by `toReplayablePageArgs`) a value that throws on
636
- * access inside the cache scope, like Next.js's
637
- * `makeErroringSearchParamsForUseCache`, instead of `undefined`.
636
+ * Run `fn` with an erroring `searchParams` in the page props at `index` when
637
+ * they have none (they are omitted from a public page cache's arguments, and
638
+ * from a Response Store replay of them), instead of `undefined`.
638
639
  */
639
- function withErroringPageSearchParams(args, index) {
640
- const props = args[index];
641
- if (!isPagePropsObject(props) || "searchParams" in props) return args;
642
- return replaceArgument(args, index, {
643
- ...props,
644
- searchParams: makeThenableParams({}, { observeParamAccess: () => throwIfInsideCacheScope("searchParams") })
645
- });
640
+ function withErroringPageSearchParams(fn, index) {
641
+ return (...args) => {
642
+ const props = args[index];
643
+ if (!isPagePropsObject(props) || "searchParams" in props) return fn(...args);
644
+ return fn(...replaceArgument(args, index, {
645
+ ...props,
646
+ searchParams: makeErroringPageSearchParams()
647
+ }));
648
+ };
649
+ }
650
+ function isNextWellKnownProperty(prop) {
651
+ return prop !== "value" && prop !== "error" && isWellKnownProperty(prop);
652
+ }
653
+ /**
654
+ * Ported from Next.js's `makeErroringSearchParamsForUseCache`
655
+ * (server/request/search-params.ts): reading `then` or a param throws, and
656
+ * everything else reads the underlying promise, with methods bound to it.
657
+ */
658
+ function makeErroringPageSearchParams() {
659
+ const cacheContext = cacheContextStorage.getStore() ?? null;
660
+ const requestContext = isInsideUnifiedScope() ? getRequestContext() : null;
661
+ const promise = Promise.resolve({});
662
+ return new Proxy(promise, { get(target, prop, receiver) {
663
+ if (!Object.hasOwn(target, prop) && typeof prop === "string" && (prop === "then" || !isNextWellKnownProperty(prop))) {
664
+ const error = createUseCacheAccessError("searchParams");
665
+ if (cacheContext) cacheContext.invalidDynamicUsageError ??= error;
666
+ const activeCacheContext = cacheContextStorage.getStore();
667
+ if (activeCacheContext && activeCacheContext !== cacheContext) activeCacheContext.invalidDynamicUsageError ??= error;
668
+ if (requestContext) recordInvalidDynamicUsageError(requestContext, error);
669
+ throw error;
670
+ }
671
+ const value = Reflect.get(target, prop, receiver);
672
+ return typeof value === "function" ? value.bind(target) : value;
673
+ } });
646
674
  }
647
675
  //#endregion
648
676
  export { NestedDynamicUseCacheError, buildUseCacheKey, cacheContextStorage, clearPrivateCache, getCacheContext, isUseCacheFunction, memoizeInCacheScope, registerCachedFunction, replayCachedFunction, runWithPrivateCache };
@@ -1,6 +1,6 @@
1
1
  import { ExecutionContextLike, getRequestExecutionContext, runWithExecutionContext } from "./request-context.js";
2
2
  import { _recordUseCacheRootParamRead, _registerCacheContextAccessor, getRegisteredCacheContext } from "./internal/cache-context-accessor.js";
3
- import { ACTION_DID_REVALIDATE_DYNAMIC_ONLY, ACTION_DID_REVALIDATE_STATIC_AND_DYNAMIC, ActionRevalidationKind, CacheLifeConfig, CacheLifeSink, CacheState, UnstableCacheObservation, UnstableCacheRevalidationMode, _captureRequestScopedCacheLifeAccessors, _consumeRequestScopedCacheLife, _drainPendingRevalidations, _hasPendingRevalidatedTag, _initRequestScopedCacheState, _markPendingRevalidatedTag, _peekRequestScopedCacheLife, _peekUnstableCacheObservations, _queuePendingRevalidation, _runWithCacheState, _setRequestScopedCacheLife, cacheLifeProfiles, getAndClearActionRevalidationKind, markActionRevalidation, recordUnstableCacheObservation, runWithDetachedCacheObservations, shouldServeStaleUnstableCacheEntry } from "./cache-request-state.js";
3
+ import { ACTION_DID_REVALIDATE_DYNAMIC_ONLY, ACTION_DID_REVALIDATE_STATIC_AND_DYNAMIC, ActionRevalidationKind, CacheLifeConfig, CacheLifeSink, CacheState, PendingCdnTagInvalidation, UnstableCacheObservation, UnstableCacheRevalidationMode, _captureRequestScopedCacheLifeAccessors, _consumeRequestScopedCacheLife, _drainPendingRevalidations, _hasPendingRevalidatedTag, _initRequestScopedCacheState, _markPendingRevalidatedTag, _peekRequestScopedCacheLife, _peekUnstableCacheObservations, _queuePendingCdnTagInvalidation, _queuePendingRevalidation, _revalidateCdnTags, _runWithCacheState, _setRequestScopedCacheLife, cacheLifeProfiles, getAndClearActionRevalidationKind, markActionRevalidation, recordUnstableCacheObservation, runWithDetachedCacheObservations, shouldServeStaleUnstableCacheEntry } from "./cache-request-state.js";
4
4
  import { CacheControlMetadata, CacheHandler, CacheHandlerContext, CacheHandlerValue, CachedAppPageValue, CachedFetchValue, CachedImageValue, CachedPagesValue, CachedRedirectValue, CachedRouteValue, IncrementalCacheValue, MemoryCacheHandler, NoOpCacheHandler, configureMemoryCacheHandler, getCacheHandler, getDataCacheHandler, registerDataCacheHandler, registerLazyDataCacheHandler, setCacheHandler, setDataCacheHandler } from "./cache-handler.js";
5
5
  //#region src/shims/cache.d.ts
6
6
  /**
@@ -142,4 +142,4 @@ type UnstableCacheOptions = {
142
142
  */
143
143
  export declare function unstable_cache<T extends (...args: any[]) => Promise<any>>(fn: T, keyParts?: string[], options?: UnstableCacheOptions): T;
144
144
  //#endregion
145
- export { ACTION_DID_REVALIDATE_DYNAMIC_ONLY, ACTION_DID_REVALIDATE_STATIC_AND_DYNAMIC, ActionRevalidationKind, CacheControlMetadata, CacheHandler, CacheHandlerContext, CacheHandlerValue, CacheLifeConfig, CacheLifeSink, CacheState, CachedAppPageValue, CachedFetchValue, CachedImageValue, CachedPagesValue, CachedRedirectValue, CachedRouteValue, type ExecutionContextLike, IncrementalCacheValue, MemoryCacheHandler, NoOpCacheHandler, UnstableCacheObservation, UnstableCacheRevalidationMode, _captureRequestScopedCacheLifeAccessors, _consumeRequestScopedCacheLife, _drainPendingRevalidations, _hasPendingRevalidatedTag, _initRequestScopedCacheState, _markPendingRevalidatedTag, _peekRequestScopedCacheLife, _peekUnstableCacheObservations, _queuePendingRevalidation, _recordUseCacheRootParamRead, _registerCacheContextAccessor, _runWithCacheState, _setRequestScopedCacheLife, cacheLifeProfiles, configureMemoryCacheHandler, getAndClearActionRevalidationKind, getCacheHandler, getDataCacheHandler, getRegisteredCacheContext, getRequestExecutionContext, markActionRevalidation, unstable_noStore as noStore, recordUnstableCacheObservation, registerDataCacheHandler, registerLazyDataCacheHandler, runWithDetachedCacheObservations, runWithExecutionContext, setCacheHandler, setDataCacheHandler, shouldServeStaleUnstableCacheEntry };
145
+ export { ACTION_DID_REVALIDATE_DYNAMIC_ONLY, ACTION_DID_REVALIDATE_STATIC_AND_DYNAMIC, ActionRevalidationKind, CacheControlMetadata, CacheHandler, CacheHandlerContext, CacheHandlerValue, CacheLifeConfig, CacheLifeSink, CacheState, CachedAppPageValue, CachedFetchValue, CachedImageValue, CachedPagesValue, CachedRedirectValue, CachedRouteValue, type ExecutionContextLike, IncrementalCacheValue, MemoryCacheHandler, NoOpCacheHandler, PendingCdnTagInvalidation, UnstableCacheObservation, UnstableCacheRevalidationMode, _captureRequestScopedCacheLifeAccessors, _consumeRequestScopedCacheLife, _drainPendingRevalidations, _hasPendingRevalidatedTag, _initRequestScopedCacheState, _markPendingRevalidatedTag, _peekRequestScopedCacheLife, _peekUnstableCacheObservations, _queuePendingCdnTagInvalidation, _queuePendingRevalidation, _recordUseCacheRootParamRead, _registerCacheContextAccessor, _revalidateCdnTags, _runWithCacheState, _setRequestScopedCacheLife, cacheLifeProfiles, configureMemoryCacheHandler, getAndClearActionRevalidationKind, getCacheHandler, getDataCacheHandler, getRegisteredCacheContext, getRequestExecutionContext, markActionRevalidation, unstable_noStore as noStore, recordUnstableCacheObservation, registerDataCacheHandler, registerLazyDataCacheHandler, runWithDetachedCacheObservations, runWithExecutionContext, setCacheHandler, setDataCacheHandler, shouldServeStaleUnstableCacheEntry };