vinext 0.0.50 → 0.0.52

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 (462) hide show
  1. package/dist/build/google-fonts/fallback-metrics-data.js +14031 -0
  2. package/dist/build/google-fonts/fallback-metrics-data.js.map +1 -0
  3. package/dist/build/google-fonts/fallback-metrics.d.ts +13 -0
  4. package/dist/build/google-fonts/fallback-metrics.js +46 -0
  5. package/dist/build/google-fonts/fallback-metrics.js.map +1 -0
  6. package/dist/build/precompress.d.ts +13 -2
  7. package/dist/build/precompress.js +23 -13
  8. package/dist/build/precompress.js.map +1 -1
  9. package/dist/build/prerender.d.ts +4 -15
  10. package/dist/build/prerender.js +83 -53
  11. package/dist/build/prerender.js.map +1 -1
  12. package/dist/build/report.d.ts +5 -4
  13. package/dist/build/report.js +196 -348
  14. package/dist/build/report.js.map +1 -1
  15. package/dist/check.js +5 -0
  16. package/dist/check.js.map +1 -1
  17. package/dist/cli-args.d.ts +1 -0
  18. package/dist/cli-args.js +5 -0
  19. package/dist/cli-args.js.map +1 -1
  20. package/dist/cli.js +99 -3
  21. package/dist/cli.js.map +1 -1
  22. package/dist/client/navigation-runtime.d.ts +47 -0
  23. package/dist/client/navigation-runtime.js +156 -0
  24. package/dist/client/navigation-runtime.js.map +1 -0
  25. package/dist/client/pages-router-link-navigation.d.ts +26 -0
  26. package/dist/client/pages-router-link-navigation.js +14 -0
  27. package/dist/client/pages-router-link-navigation.js.map +1 -0
  28. package/dist/client/vinext-next-data.d.ts +12 -2
  29. package/dist/client/vinext-next-data.js +50 -1
  30. package/dist/client/vinext-next-data.js.map +1 -0
  31. package/dist/client/window-next.d.ts +3 -1
  32. package/dist/client/window-next.js.map +1 -1
  33. package/dist/cloudflare/kv-cache-handler.js +2 -1
  34. package/dist/cloudflare/kv-cache-handler.js.map +1 -1
  35. package/dist/config/config-matchers.d.ts +63 -16
  36. package/dist/config/config-matchers.js +143 -8
  37. package/dist/config/config-matchers.js.map +1 -1
  38. package/dist/config/dotenv.d.ts +11 -1
  39. package/dist/config/dotenv.js.map +1 -1
  40. package/dist/config/next-config.d.ts +107 -5
  41. package/dist/config/next-config.js +233 -7
  42. package/dist/config/next-config.js.map +1 -1
  43. package/dist/config/tsconfig-paths.d.ts +13 -0
  44. package/dist/config/tsconfig-paths.js +117 -0
  45. package/dist/config/tsconfig-paths.js.map +1 -0
  46. package/dist/deploy.js +104 -41
  47. package/dist/deploy.js.map +1 -1
  48. package/dist/entries/app-browser-entry.d.ts +2 -2
  49. package/dist/entries/app-browser-entry.js +34 -3
  50. package/dist/entries/app-browser-entry.js.map +1 -1
  51. package/dist/entries/app-rsc-entry.d.ts +19 -1
  52. package/dist/entries/app-rsc-entry.js +89 -23
  53. package/dist/entries/app-rsc-entry.js.map +1 -1
  54. package/dist/entries/app-rsc-manifest.d.ts +10 -0
  55. package/dist/entries/app-rsc-manifest.js +57 -7
  56. package/dist/entries/app-rsc-manifest.js.map +1 -1
  57. package/dist/entries/app-ssr-entry.d.ts +3 -3
  58. package/dist/entries/app-ssr-entry.js +4 -4
  59. package/dist/entries/app-ssr-entry.js.map +1 -1
  60. package/dist/entries/pages-client-entry.js +21 -7
  61. package/dist/entries/pages-client-entry.js.map +1 -1
  62. package/dist/entries/pages-server-entry.js +77 -9
  63. package/dist/entries/pages-server-entry.js.map +1 -1
  64. package/dist/entries/runtime-entry-module.d.ts +2 -1
  65. package/dist/entries/runtime-entry-module.js +9 -3
  66. package/dist/entries/runtime-entry-module.js.map +1 -1
  67. package/dist/index.js +260 -75
  68. package/dist/index.js.map +1 -1
  69. package/dist/plugins/client-reference-dedup.d.ts +15 -2
  70. package/dist/plugins/client-reference-dedup.js +138 -16
  71. package/dist/plugins/client-reference-dedup.js.map +1 -1
  72. package/dist/plugins/css-data-url.d.ts +7 -0
  73. package/dist/plugins/css-data-url.js +81 -0
  74. package/dist/plugins/css-data-url.js.map +1 -0
  75. package/dist/plugins/fonts.d.ts +2 -2
  76. package/dist/plugins/fonts.js +20 -9
  77. package/dist/plugins/fonts.js.map +1 -1
  78. package/dist/plugins/middleware-server-only.d.ts +54 -0
  79. package/dist/plugins/middleware-server-only.js +91 -0
  80. package/dist/plugins/middleware-server-only.js.map +1 -0
  81. package/dist/plugins/optimize-imports.js +4 -4
  82. package/dist/plugins/optimize-imports.js.map +1 -1
  83. package/dist/plugins/sass.d.ts +34 -0
  84. package/dist/plugins/sass.js +22 -0
  85. package/dist/plugins/sass.js.map +1 -0
  86. package/dist/plugins/strip-server-exports.js +5 -8
  87. package/dist/plugins/strip-server-exports.js.map +1 -1
  88. package/dist/routing/app-route-graph.d.ts +50 -2
  89. package/dist/routing/app-route-graph.js +140 -16
  90. package/dist/routing/app-route-graph.js.map +1 -1
  91. package/dist/routing/app-router.d.ts +2 -2
  92. package/dist/routing/app-router.js +2 -2
  93. package/dist/routing/app-router.js.map +1 -1
  94. package/dist/routing/route-pattern.d.ts +56 -1
  95. package/dist/routing/route-pattern.js +60 -1
  96. package/dist/routing/route-pattern.js.map +1 -1
  97. package/dist/routing/utils.d.ts +2 -1
  98. package/dist/routing/utils.js +4 -1
  99. package/dist/routing/utils.js.map +1 -1
  100. package/dist/server/api-handler.js +139 -37
  101. package/dist/server/api-handler.js.map +1 -1
  102. package/dist/server/app-browser-action-result.d.ts +27 -2
  103. package/dist/server/app-browser-action-result.js +63 -2
  104. package/dist/server/app-browser-action-result.js.map +1 -1
  105. package/dist/server/app-browser-entry.js +493 -195
  106. package/dist/server/app-browser-entry.js.map +1 -1
  107. package/dist/server/app-browser-hydration.d.ts +13 -1
  108. package/dist/server/app-browser-hydration.js +9 -1
  109. package/dist/server/app-browser-hydration.js.map +1 -1
  110. package/dist/server/app-browser-interception-context.d.ts +24 -0
  111. package/dist/server/app-browser-interception-context.js +32 -0
  112. package/dist/server/app-browser-interception-context.js.map +1 -0
  113. package/dist/server/app-browser-navigation-controller.d.ts +17 -2
  114. package/dist/server/app-browser-navigation-controller.js +33 -10
  115. package/dist/server/app-browser-navigation-controller.js.map +1 -1
  116. package/dist/server/app-browser-popstate.d.ts +16 -0
  117. package/dist/server/app-browser-popstate.js +17 -0
  118. package/dist/server/app-browser-popstate.js.map +1 -0
  119. package/dist/server/app-browser-rsc-redirect.d.ts +29 -0
  120. package/dist/server/app-browser-rsc-redirect.js +37 -0
  121. package/dist/server/app-browser-rsc-redirect.js.map +1 -0
  122. package/dist/server/app-browser-state.d.ts +28 -7
  123. package/dist/server/app-browser-state.js +63 -27
  124. package/dist/server/app-browser-state.js.map +1 -1
  125. package/dist/server/app-browser-stream.d.ts +9 -17
  126. package/dist/server/app-browser-stream.js +18 -13
  127. package/dist/server/app-browser-stream.js.map +1 -1
  128. package/dist/server/app-browser-visible-commit.d.ts +7 -1
  129. package/dist/server/app-browser-visible-commit.js +39 -5
  130. package/dist/server/app-browser-visible-commit.js.map +1 -1
  131. package/dist/server/app-elements-wire.d.ts +43 -6
  132. package/dist/server/app-elements-wire.js +189 -7
  133. package/dist/server/app-elements-wire.js.map +1 -1
  134. package/dist/server/app-elements.d.ts +3 -2
  135. package/dist/server/app-elements.js +3 -2
  136. package/dist/server/app-elements.js.map +1 -1
  137. package/dist/server/app-fallback-renderer.d.ts +10 -1
  138. package/dist/server/app-fallback-renderer.js +41 -3
  139. package/dist/server/app-fallback-renderer.js.map +1 -1
  140. package/dist/server/app-history-state.d.ts +26 -0
  141. package/dist/server/app-history-state.js +53 -0
  142. package/dist/server/app-history-state.js.map +1 -0
  143. package/dist/server/app-middleware.d.ts +13 -0
  144. package/dist/server/app-middleware.js +3 -1
  145. package/dist/server/app-middleware.js.map +1 -1
  146. package/dist/server/app-optimistic-routing.d.ts +54 -0
  147. package/dist/server/app-optimistic-routing.js +200 -0
  148. package/dist/server/app-optimistic-routing.js.map +1 -0
  149. package/dist/server/app-page-boundary-render.d.ts +10 -1
  150. package/dist/server/app-page-boundary-render.js +13 -6
  151. package/dist/server/app-page-boundary-render.js.map +1 -1
  152. package/dist/server/app-page-boundary.js +3 -2
  153. package/dist/server/app-page-boundary.js.map +1 -1
  154. package/dist/server/app-page-cache.d.ts +26 -1
  155. package/dist/server/app-page-cache.js +86 -14
  156. package/dist/server/app-page-cache.js.map +1 -1
  157. package/dist/server/app-page-dispatch.d.ts +7 -0
  158. package/dist/server/app-page-dispatch.js +96 -12
  159. package/dist/server/app-page-dispatch.js.map +1 -1
  160. package/dist/server/app-page-element-builder.d.ts +7 -0
  161. package/dist/server/app-page-element-builder.js +34 -5
  162. package/dist/server/app-page-element-builder.js.map +1 -1
  163. package/dist/server/app-page-execution.d.ts +28 -1
  164. package/dist/server/app-page-execution.js +91 -7
  165. package/dist/server/app-page-execution.js.map +1 -1
  166. package/dist/server/app-page-head.d.ts +7 -0
  167. package/dist/server/app-page-head.js +23 -3
  168. package/dist/server/app-page-head.js.map +1 -1
  169. package/dist/server/app-page-probe.d.ts +23 -1
  170. package/dist/server/app-page-probe.js +29 -1
  171. package/dist/server/app-page-probe.js.map +1 -1
  172. package/dist/server/app-page-render-observation.d.ts +35 -0
  173. package/dist/server/app-page-render-observation.js +68 -0
  174. package/dist/server/app-page-render-observation.js.map +1 -0
  175. package/dist/server/app-page-render.d.ts +7 -1
  176. package/dist/server/app-page-render.js +81 -4
  177. package/dist/server/app-page-render.js.map +1 -1
  178. package/dist/server/app-page-request.d.ts +1 -0
  179. package/dist/server/app-page-request.js.map +1 -1
  180. package/dist/server/app-page-response.js +7 -5
  181. package/dist/server/app-page-response.js.map +1 -1
  182. package/dist/server/app-page-route-wiring.d.ts +3 -1
  183. package/dist/server/app-page-route-wiring.js +59 -24
  184. package/dist/server/app-page-route-wiring.js.map +1 -1
  185. package/dist/server/app-page-stream.d.ts +5 -0
  186. package/dist/server/app-page-stream.js +2 -0
  187. package/dist/server/app-page-stream.js.map +1 -1
  188. package/dist/server/app-prerender-static-params.d.ts +2 -1
  189. package/dist/server/app-prerender-static-params.js +44 -8
  190. package/dist/server/app-prerender-static-params.js.map +1 -1
  191. package/dist/server/app-route-handler-cache.d.ts +2 -2
  192. package/dist/server/app-route-handler-cache.js +3 -2
  193. package/dist/server/app-route-handler-cache.js.map +1 -1
  194. package/dist/server/app-route-handler-dispatch.d.ts +6 -1
  195. package/dist/server/app-route-handler-dispatch.js +1 -1
  196. package/dist/server/app-route-handler-dispatch.js.map +1 -1
  197. package/dist/server/app-route-handler-execution.d.ts +17 -2
  198. package/dist/server/app-route-handler-execution.js.map +1 -1
  199. package/dist/server/app-route-handler-response.js +5 -4
  200. package/dist/server/app-route-handler-response.js.map +1 -1
  201. package/dist/server/app-router-entry.js +7 -15
  202. package/dist/server/app-router-entry.js.map +1 -1
  203. package/dist/server/app-rsc-cache-busting.d.ts +19 -1
  204. package/dist/server/app-rsc-cache-busting.js +36 -1
  205. package/dist/server/app-rsc-cache-busting.js.map +1 -1
  206. package/dist/server/app-rsc-embedded-chunks.d.ts +9 -0
  207. package/dist/server/app-rsc-embedded-chunks.js +34 -0
  208. package/dist/server/app-rsc-embedded-chunks.js.map +1 -0
  209. package/dist/server/app-rsc-errors.d.ts +4 -1
  210. package/dist/server/app-rsc-errors.js +1 -1
  211. package/dist/server/app-rsc-errors.js.map +1 -1
  212. package/dist/server/app-rsc-handler.d.ts +21 -5
  213. package/dist/server/app-rsc-handler.js +38 -15
  214. package/dist/server/app-rsc-handler.js.map +1 -1
  215. package/dist/server/app-rsc-render-mode.d.ts +4 -3
  216. package/dist/server/app-rsc-render-mode.js +7 -1
  217. package/dist/server/app-rsc-render-mode.js.map +1 -1
  218. package/dist/server/app-rsc-request-normalization.d.ts +4 -1
  219. package/dist/server/app-rsc-request-normalization.js +4 -1
  220. package/dist/server/app-rsc-request-normalization.js.map +1 -1
  221. package/dist/server/app-rsc-response-finalizer.d.ts +8 -1
  222. package/dist/server/app-rsc-response-finalizer.js +10 -3
  223. package/dist/server/app-rsc-response-finalizer.js.map +1 -1
  224. package/dist/server/app-rsc-route-matching.d.ts +23 -0
  225. package/dist/server/app-rsc-route-matching.js +47 -25
  226. package/dist/server/app-rsc-route-matching.js.map +1 -1
  227. package/dist/server/app-server-action-execution.d.ts +35 -3
  228. package/dist/server/app-server-action-execution.js +87 -33
  229. package/dist/server/app-server-action-execution.js.map +1 -1
  230. package/dist/server/app-ssr-entry.d.ts +3 -0
  231. package/dist/server/app-ssr-entry.js +83 -58
  232. package/dist/server/app-ssr-entry.js.map +1 -1
  233. package/dist/server/app-ssr-error-meta.d.ts +14 -0
  234. package/dist/server/app-ssr-error-meta.js +50 -0
  235. package/dist/server/app-ssr-error-meta.js.map +1 -0
  236. package/dist/server/app-ssr-stream.d.ts +7 -2
  237. package/dist/server/app-ssr-stream.js +26 -15
  238. package/dist/server/app-ssr-stream.js.map +1 -1
  239. package/dist/server/artifact-compatibility.d.ts +13 -3
  240. package/dist/server/artifact-compatibility.js +12 -8
  241. package/dist/server/artifact-compatibility.js.map +1 -1
  242. package/dist/server/cache-headers.d.ts +7 -0
  243. package/dist/server/cache-headers.js +19 -0
  244. package/dist/server/cache-headers.js.map +1 -0
  245. package/dist/server/cache-proof.d.ts +170 -5
  246. package/dist/server/cache-proof.js +472 -18
  247. package/dist/server/cache-proof.js.map +1 -1
  248. package/dist/server/client-reuse-manifest.d.ts +99 -0
  249. package/dist/server/client-reuse-manifest.js +212 -0
  250. package/dist/server/client-reuse-manifest.js.map +1 -0
  251. package/dist/server/default-global-error-module.d.ts +20 -0
  252. package/dist/server/default-global-error-module.js +20 -0
  253. package/dist/server/default-global-error-module.js.map +1 -0
  254. package/dist/server/dev-lockfile.d.ts +110 -0
  255. package/dist/server/dev-lockfile.js +180 -0
  256. package/dist/server/dev-lockfile.js.map +1 -0
  257. package/dist/server/dev-server.d.ts +9 -1
  258. package/dist/server/dev-server.js +76 -19
  259. package/dist/server/dev-server.js.map +1 -1
  260. package/dist/server/edge-api-runtime.d.ts +5 -0
  261. package/dist/server/edge-api-runtime.js +8 -0
  262. package/dist/server/edge-api-runtime.js.map +1 -0
  263. package/dist/server/file-based-metadata.d.ts +13 -0
  264. package/dist/server/file-based-metadata.js +49 -2
  265. package/dist/server/file-based-metadata.js.map +1 -1
  266. package/dist/server/headers.d.ts +20 -1
  267. package/dist/server/headers.js +22 -2
  268. package/dist/server/headers.js.map +1 -1
  269. package/dist/server/html.js +1 -1
  270. package/dist/server/html.js.map +1 -1
  271. package/dist/server/http-error-responses.d.ts +26 -1
  272. package/dist/server/http-error-responses.js +32 -2
  273. package/dist/server/http-error-responses.js.map +1 -1
  274. package/dist/server/isr-cache.d.ts +8 -3
  275. package/dist/server/isr-cache.js +24 -6
  276. package/dist/server/isr-cache.js.map +1 -1
  277. package/dist/server/metadata-route-response.js +22 -5
  278. package/dist/server/metadata-route-response.js.map +1 -1
  279. package/dist/server/metadata-routes.js +27 -8
  280. package/dist/server/metadata-routes.js.map +1 -1
  281. package/dist/server/middleware-runtime.d.ts +15 -0
  282. package/dist/server/middleware-runtime.js +60 -7
  283. package/dist/server/middleware-runtime.js.map +1 -1
  284. package/dist/server/middleware.d.ts +13 -1
  285. package/dist/server/middleware.js +16 -2
  286. package/dist/server/middleware.js.map +1 -1
  287. package/dist/server/navigation-planner.d.ts +26 -6
  288. package/dist/server/navigation-planner.js +358 -24
  289. package/dist/server/navigation-planner.js.map +1 -1
  290. package/dist/server/navigation-trace.d.ts +9 -1
  291. package/dist/server/navigation-trace.js +8 -0
  292. package/dist/server/navigation-trace.js.map +1 -1
  293. package/dist/server/normalize-path.d.ts +2 -1
  294. package/dist/server/normalize-path.js +4 -1
  295. package/dist/server/normalize-path.js.map +1 -1
  296. package/dist/server/pages-api-route.d.ts +27 -1
  297. package/dist/server/pages-api-route.js +25 -3
  298. package/dist/server/pages-api-route.js.map +1 -1
  299. package/dist/server/pages-data-route.d.ts +77 -0
  300. package/dist/server/pages-data-route.js +97 -0
  301. package/dist/server/pages-data-route.js.map +1 -0
  302. package/dist/server/pages-i18n.d.ts +51 -1
  303. package/dist/server/pages-i18n.js +61 -1
  304. package/dist/server/pages-i18n.js.map +1 -1
  305. package/dist/server/pages-page-data.d.ts +32 -4
  306. package/dist/server/pages-page-data.js +52 -19
  307. package/dist/server/pages-page-data.js.map +1 -1
  308. package/dist/server/pages-page-response.d.ts +11 -1
  309. package/dist/server/pages-page-response.js +6 -4
  310. package/dist/server/pages-page-response.js.map +1 -1
  311. package/dist/server/prod-server.d.ts +26 -1
  312. package/dist/server/prod-server.js +150 -44
  313. package/dist/server/prod-server.js.map +1 -1
  314. package/dist/server/request-pipeline.d.ts +11 -2
  315. package/dist/server/request-pipeline.js +28 -11
  316. package/dist/server/request-pipeline.js.map +1 -1
  317. package/dist/server/seed-cache.d.ts +12 -31
  318. package/dist/server/seed-cache.js +22 -35
  319. package/dist/server/seed-cache.js.map +1 -1
  320. package/dist/server/server-action-not-found.d.ts +16 -3
  321. package/dist/server/server-action-not-found.js +27 -4
  322. package/dist/server/server-action-not-found.js.map +1 -1
  323. package/dist/server/server-globals.d.ts +5 -0
  324. package/dist/server/server-globals.js +37 -0
  325. package/dist/server/server-globals.js.map +1 -0
  326. package/dist/server/skip-cache-proof.d.ts +41 -0
  327. package/dist/server/skip-cache-proof.js +101 -0
  328. package/dist/server/skip-cache-proof.js.map +1 -0
  329. package/dist/server/static-file-cache.d.ts +1 -1
  330. package/dist/server/static-file-cache.js +7 -6
  331. package/dist/server/static-file-cache.js.map +1 -1
  332. package/dist/shims/cache-runtime.d.ts +19 -2
  333. package/dist/shims/cache-runtime.js +67 -11
  334. package/dist/shims/cache-runtime.js.map +1 -1
  335. package/dist/shims/cache.d.ts +5 -18
  336. package/dist/shims/cache.js +2 -0
  337. package/dist/shims/cache.js.map +1 -1
  338. package/dist/shims/client-locale.d.ts +15 -0
  339. package/dist/shims/client-locale.js +13 -0
  340. package/dist/shims/client-locale.js.map +1 -0
  341. package/dist/shims/default-global-error.d.ts +32 -0
  342. package/dist/shims/default-global-error.js +181 -0
  343. package/dist/shims/default-global-error.js.map +1 -0
  344. package/dist/shims/document.d.ts +59 -3
  345. package/dist/shims/document.js +36 -5
  346. package/dist/shims/document.js.map +1 -1
  347. package/dist/shims/error-boundary.d.ts +2 -2
  348. package/dist/shims/error-boundary.js +6 -8
  349. package/dist/shims/error-boundary.js.map +1 -1
  350. package/dist/shims/error.d.ts +18 -1
  351. package/dist/shims/error.js +56 -1
  352. package/dist/shims/error.js.map +1 -1
  353. package/dist/shims/fetch-cache.d.ts +4 -1
  354. package/dist/shims/fetch-cache.js +40 -5
  355. package/dist/shims/fetch-cache.js.map +1 -1
  356. package/dist/shims/font-google-base.d.ts +22 -8
  357. package/dist/shims/font-google-base.js +41 -71
  358. package/dist/shims/font-google-base.js.map +1 -1
  359. package/dist/shims/font-local.d.ts +3 -20
  360. package/dist/shims/font-local.js +23 -75
  361. package/dist/shims/font-local.js.map +1 -1
  362. package/dist/shims/font-utils.d.ts +51 -0
  363. package/dist/shims/font-utils.js +97 -0
  364. package/dist/shims/font-utils.js.map +1 -0
  365. package/dist/shims/form.js +13 -6
  366. package/dist/shims/form.js.map +1 -1
  367. package/dist/shims/hash-scroll.d.ts +7 -0
  368. package/dist/shims/hash-scroll.js +30 -0
  369. package/dist/shims/hash-scroll.js.map +1 -0
  370. package/dist/shims/headers.d.ts +8 -11
  371. package/dist/shims/headers.js +22 -2
  372. package/dist/shims/headers.js.map +1 -1
  373. package/dist/shims/image.d.ts +1 -0
  374. package/dist/shims/image.js +144 -78
  375. package/dist/shims/image.js.map +1 -1
  376. package/dist/shims/internal/app-router-context.d.ts +6 -6
  377. package/dist/shims/internal/app-router-context.js +17 -6
  378. package/dist/shims/internal/app-router-context.js.map +1 -1
  379. package/dist/shims/link-prefetch.d.ts +9 -1
  380. package/dist/shims/link-prefetch.js +11 -6
  381. package/dist/shims/link-prefetch.js.map +1 -1
  382. package/dist/shims/link.d.ts +33 -5
  383. package/dist/shims/link.js +205 -50
  384. package/dist/shims/link.js.map +1 -1
  385. package/dist/shims/metadata.d.ts +16 -30
  386. package/dist/shims/metadata.js +91 -32
  387. package/dist/shims/metadata.js.map +1 -1
  388. package/dist/shims/navigation.d.ts +164 -17
  389. package/dist/shims/navigation.js +355 -84
  390. package/dist/shims/navigation.js.map +1 -1
  391. package/dist/shims/navigation.react-server.d.ts +3 -2
  392. package/dist/shims/navigation.react-server.js +5 -2
  393. package/dist/shims/navigation.react-server.js.map +1 -1
  394. package/dist/shims/og.d.ts +18 -2
  395. package/dist/shims/og.js +49 -1
  396. package/dist/shims/og.js.map +1 -0
  397. package/dist/shims/pages-router-runtime.d.ts +7 -0
  398. package/dist/shims/pages-router-runtime.js +16 -0
  399. package/dist/shims/pages-router-runtime.js.map +1 -0
  400. package/dist/shims/request-state-types.d.ts +1 -1
  401. package/dist/shims/root-params.d.ts +3 -1
  402. package/dist/shims/root-params.js +11 -3
  403. package/dist/shims/root-params.js.map +1 -1
  404. package/dist/shims/router-state.d.ts +1 -0
  405. package/dist/shims/router-state.js.map +1 -1
  406. package/dist/shims/router.d.ts +40 -7
  407. package/dist/shims/router.js +355 -250
  408. package/dist/shims/router.js.map +1 -1
  409. package/dist/shims/script.js +110 -32
  410. package/dist/shims/script.js.map +1 -1
  411. package/dist/shims/server.d.ts +21 -4
  412. package/dist/shims/server.js +31 -10
  413. package/dist/shims/server.js.map +1 -1
  414. package/dist/shims/slot.d.ts +1 -0
  415. package/dist/shims/slot.js +45 -1
  416. package/dist/shims/slot.js.map +1 -1
  417. package/dist/shims/unified-request-context.d.ts +1 -1
  418. package/dist/shims/unified-request-context.js +2 -0
  419. package/dist/shims/unified-request-context.js.map +1 -1
  420. package/dist/shims/unrecognized-action-error.d.ts +35 -0
  421. package/dist/shims/unrecognized-action-error.js +41 -0
  422. package/dist/shims/unrecognized-action-error.js.map +1 -0
  423. package/dist/shims/url-safety.d.ts +23 -1
  424. package/dist/shims/url-safety.js +29 -2
  425. package/dist/shims/url-safety.js.map +1 -1
  426. package/dist/shims/url-utils.d.ts +21 -1
  427. package/dist/shims/url-utils.js +67 -3
  428. package/dist/shims/url-utils.js.map +1 -1
  429. package/dist/typegen.d.ts +10 -0
  430. package/dist/typegen.js +242 -0
  431. package/dist/typegen.js.map +1 -0
  432. package/dist/utils/asset-prefix.d.ts +97 -0
  433. package/dist/utils/asset-prefix.js +124 -0
  434. package/dist/utils/asset-prefix.js.map +1 -0
  435. package/dist/utils/base-path.d.ts +7 -1
  436. package/dist/utils/base-path.js +10 -1
  437. package/dist/utils/base-path.js.map +1 -1
  438. package/dist/utils/cache-control-metadata.d.ts +2 -1
  439. package/dist/utils/cache-control-metadata.js +1 -3
  440. package/dist/utils/cache-control-metadata.js.map +1 -1
  441. package/dist/utils/domain-locale.d.ts +2 -1
  442. package/dist/utils/domain-locale.js +9 -1
  443. package/dist/utils/domain-locale.js.map +1 -1
  444. package/dist/utils/lazy-chunks.d.ts +1 -1
  445. package/dist/utils/lazy-chunks.js +1 -1
  446. package/dist/utils/lazy-chunks.js.map +1 -1
  447. package/dist/utils/navigation-signal.d.ts +1 -2
  448. package/dist/utils/navigation-signal.js +1 -1
  449. package/dist/utils/navigation-signal.js.map +1 -1
  450. package/dist/utils/prerender-output-paths.d.ts +15 -0
  451. package/dist/utils/prerender-output-paths.js +24 -0
  452. package/dist/utils/prerender-output-paths.js.map +1 -0
  453. package/dist/utils/query.d.ts +17 -1
  454. package/dist/utils/query.js +36 -1
  455. package/dist/utils/query.js.map +1 -1
  456. package/dist/utils/record.d.ts +5 -0
  457. package/dist/utils/record.js +8 -0
  458. package/dist/utils/record.js.map +1 -0
  459. package/dist/utils/sorted-array.d.ts +9 -0
  460. package/dist/utils/sorted-array.js +22 -0
  461. package/dist/utils/sorted-array.js.map +1 -0
  462. package/package.json +13 -5
@@ -1,6 +1,8 @@
1
1
  import { fnv1a64 } from "../utils/hash.js";
2
+ import { evaluateArtifactCompatibility } from "./artifact-compatibility.js";
3
+ import { findSortedStringPosition } from "../utils/sorted-array.js";
2
4
  //#region src/server/cache-proof.ts
3
- const CACHE_PROOF_MODEL_SCHEMA_VERSION = 0;
5
+ const CACHE_PROOF_MODEL_SCHEMA_VERSION = 1;
4
6
  const DEFAULT_CACHE_VARIANT_BUDGET = {
5
7
  maxDimensionCount: 8,
6
8
  maxDimensionNameLength: 64,
@@ -9,6 +11,14 @@ const DEFAULT_CACHE_VARIANT_BUDGET = {
9
11
  maxValuesPerDimension: 8,
10
12
  maxVariantsPerRoute: 64
11
13
  };
14
+ const ALL_RENDER_REQUEST_API_KINDS = [
15
+ "connection",
16
+ "cookies",
17
+ "draftMode",
18
+ "headers",
19
+ "params",
20
+ "searchParams"
21
+ ];
12
22
  const PUBLIC_UNSAFE_DIMENSION_SOURCES = new Set([
13
23
  "auth",
14
24
  "cookie",
@@ -197,14 +207,6 @@ function buildCacheVariant(input) {
197
207
  kind: "breakerFallback",
198
208
  fallback: budgetFallback
199
209
  };
200
- if (input.existingVariantCount >= input.budget.maxVariantsPerRoute) return {
201
- kind: "breakerFallback",
202
- fallback: buildBreakerFallback("CP_ROUTE_VARIANT_CEILING_EXCEEDED", {
203
- existingVariantCount: input.existingVariantCount,
204
- maxVariantsPerRoute: input.budget.maxVariantsPerRoute,
205
- routeId: input.output.routeId
206
- }, "privateUncacheable", "route")
207
- };
208
210
  const dimensionInputs = mergeDimensionInputs(input.dimensions);
209
211
  if (dimensionInputs.length > input.budget.maxDimensionCount) return {
210
212
  kind: "breakerFallback",
@@ -225,7 +227,7 @@ function buildCacheVariant(input) {
225
227
  }
226
228
  dimensions.sort(compareDimensions);
227
229
  const encoded = [
228
- `schema:0`,
230
+ `schema:1`,
229
231
  encodeOutputScope(input.output),
230
232
  ...dimensions.map((dimension) => dimension.encoded)
231
233
  ].join("|");
@@ -241,8 +243,8 @@ function buildCacheVariant(input) {
241
243
  return {
242
244
  kind: "variant",
243
245
  variant: {
244
- schemaVersion: 0,
245
- cacheKey: `cp0:${fnv1a64(encoded)}`,
246
+ schemaVersion: 1,
247
+ cacheKey: `cp1:${fnv1a64(encoded)}`,
246
248
  output: input.output,
247
249
  dimensions,
248
250
  encodedLength: encoded.length,
@@ -250,6 +252,80 @@ function buildCacheVariant(input) {
250
252
  }
251
253
  };
252
254
  }
255
+ function normalizeRouteBudget(input) {
256
+ return {
257
+ routeId: input.routeId,
258
+ variantCacheKeys: sortedUnique(input.variantCacheKeys)
259
+ };
260
+ }
261
+ function buildRouteVariantCeilingFallback(variant, existingVariantCount) {
262
+ return buildBreakerFallback("CP_ROUTE_VARIANT_CEILING_EXCEEDED", {
263
+ existingVariantCount,
264
+ maxVariantsPerRoute: variant.budget.maxVariantsPerRoute,
265
+ routeId: variant.output.routeId
266
+ }, "privateUncacheable", "route");
267
+ }
268
+ function enforceCacheVariantRouteBudget(input) {
269
+ if (input.routeBudget && input.routeBudget.routeId !== input.variant.output.routeId) return {
270
+ kind: "breakerFallback",
271
+ routeBudget: normalizeRouteBudget(input.routeBudget),
272
+ fallback: buildBreakerFallback("CP_ROUTE_VARIANT_BUDGET_ROUTE_MISMATCH", {
273
+ budgetRouteId: input.routeBudget.routeId,
274
+ routeId: input.variant.output.routeId
275
+ }, "privateUncacheable", "route")
276
+ };
277
+ const routeBudget = normalizeRouteBudget(input.routeBudget ?? {
278
+ routeId: input.variant.output.routeId,
279
+ variantCacheKeys: []
280
+ });
281
+ const existingVariantCount = routeBudget.variantCacheKeys.length;
282
+ const variantKeyPosition = findSortedStringPosition(routeBudget.variantCacheKeys, input.variant.cacheKey);
283
+ if (existingVariantCount > input.variant.budget.maxVariantsPerRoute) return {
284
+ kind: "breakerFallback",
285
+ routeBudget,
286
+ fallback: buildRouteVariantCeilingFallback(input.variant, existingVariantCount)
287
+ };
288
+ if (variantKeyPosition.found) return {
289
+ kind: "variant",
290
+ variant: input.variant,
291
+ routeBudget,
292
+ didConsumeRouteVariantBudget: false
293
+ };
294
+ if (existingVariantCount >= input.variant.budget.maxVariantsPerRoute) return {
295
+ kind: "breakerFallback",
296
+ routeBudget,
297
+ fallback: buildRouteVariantCeilingFallback(input.variant, existingVariantCount)
298
+ };
299
+ return {
300
+ kind: "variant",
301
+ variant: input.variant,
302
+ routeBudget: {
303
+ routeId: routeBudget.routeId,
304
+ variantCacheKeys: [
305
+ ...routeBudget.variantCacheKeys.slice(0, variantKeyPosition.index),
306
+ input.variant.cacheKey,
307
+ ...routeBudget.variantCacheKeys.slice(variantKeyPosition.index)
308
+ ]
309
+ },
310
+ didConsumeRouteVariantBudget: true
311
+ };
312
+ }
313
+ function buildCacheVariantWithRouteBudget(input) {
314
+ const variantResult = buildCacheVariant({
315
+ budget: input.budget,
316
+ dimensions: input.dimensions,
317
+ output: input.output
318
+ });
319
+ if (variantResult.kind === "breakerFallback") return {
320
+ kind: "breakerFallback",
321
+ routeBudget: input.routeBudget ? normalizeRouteBudget(input.routeBudget) : null,
322
+ fallback: variantResult.fallback
323
+ };
324
+ return enforceCacheVariantRouteBudget({
325
+ routeBudget: input.routeBudget,
326
+ variant: variantResult.variant
327
+ });
328
+ }
253
329
  function boundaryOutcomesMatch(expected, candidate) {
254
330
  switch (expected.kind) {
255
331
  case "error": return candidate.kind === "error" && (expected.digest ?? "") === (candidate.digest ?? "");
@@ -307,36 +383,414 @@ function normalizeRequestApiObservations(observations) {
307
383
  status
308
384
  }));
309
385
  }
386
+ function cacheProofDowngradeTargetRank(target) {
387
+ switch (target) {
388
+ case "public": return 0;
389
+ case "publicVariant": return 1;
390
+ case "private": return 2;
391
+ case "privateUncacheable": return 3;
392
+ case "freshRender": return 4;
393
+ default: return assertNever(target);
394
+ }
395
+ }
396
+ function maxCacheProofDowngradeTarget(current, candidate) {
397
+ return cacheProofDowngradeTargetRank(candidate) > cacheProofDowngradeTargetRank(current) ? candidate : current;
398
+ }
399
+ function createDowngradeFallback(target, reasons) {
400
+ switch (target) {
401
+ case "public":
402
+ case "publicVariant":
403
+ case "private": return null;
404
+ case "privateUncacheable": return buildBreakerFallback("CP_PRIVATE_DYNAMIC_DOWNGRADE", {
405
+ reasonCodes: reasons.map((reason) => reason.code),
406
+ target
407
+ }, "privateUncacheable");
408
+ case "freshRender": return buildBreakerFallback("CP_PRIVATE_DYNAMIC_DOWNGRADE", {
409
+ reasonCodes: reasons.map((reason) => reason.code),
410
+ target
411
+ });
412
+ default: return assertNever(target);
413
+ }
414
+ }
415
+ function classifyObservedRequestApiDowngrade(kind) {
416
+ switch (kind) {
417
+ case "connection": return {
418
+ code: "CP_DOWNGRADE_DYNAMIC_REQUEST_API",
419
+ requestApi: "connection",
420
+ target: "freshRender"
421
+ };
422
+ case "cookies": return {
423
+ code: "CP_DOWNGRADE_PRIVATE_REQUEST_API",
424
+ requestApi: "cookies",
425
+ target: "private"
426
+ };
427
+ case "draftMode": return {
428
+ code: "CP_DOWNGRADE_DRAFT_MODE",
429
+ requestApi: "draftMode",
430
+ target: "privateUncacheable"
431
+ };
432
+ case "headers": return {
433
+ code: "CP_DOWNGRADE_PRIVATE_REQUEST_API",
434
+ requestApi: "headers",
435
+ target: "private"
436
+ };
437
+ case "params": return {
438
+ code: "CP_DOWNGRADE_PUBLIC_REQUEST_API",
439
+ requestApi: "params",
440
+ target: "publicVariant"
441
+ };
442
+ case "searchParams": return {
443
+ code: "CP_DOWNGRADE_PUBLIC_REQUEST_API",
444
+ requestApi: "searchParams",
445
+ target: "publicVariant"
446
+ };
447
+ default: return assertNever(kind);
448
+ }
449
+ }
450
+ function classifyCacheVariantDimensionDowngrade(input) {
451
+ switch (input.source) {
452
+ case "auth": return {
453
+ code: "CP_DOWNGRADE_PRIVATE_DIMENSION",
454
+ inputClass: "auth",
455
+ source: "auth",
456
+ target: "private"
457
+ };
458
+ case "cookie": return {
459
+ code: "CP_DOWNGRADE_PRIVATE_DIMENSION",
460
+ inputClass: "private",
461
+ source: "cookie",
462
+ target: "private"
463
+ };
464
+ case "draft-mode": return {
465
+ code: "CP_DOWNGRADE_PRIVATE_DIMENSION",
466
+ inputClass: "draft",
467
+ source: "draft-mode",
468
+ target: "privateUncacheable"
469
+ };
470
+ case "header": return {
471
+ code: "CP_DOWNGRADE_PRIVATE_DIMENSION",
472
+ inputClass: "private",
473
+ source: "header",
474
+ target: "private"
475
+ };
476
+ case "session": return {
477
+ code: "CP_DOWNGRADE_PRIVATE_DIMENSION",
478
+ inputClass: "session",
479
+ source: "session",
480
+ target: "private"
481
+ };
482
+ case "custom":
483
+ case "interception":
484
+ case "mounted-slots":
485
+ case "params":
486
+ case "route":
487
+ case "search": return null;
488
+ default: return assertNever(input.source);
489
+ }
490
+ }
491
+ function classifyRenderObservationDowngrade(input) {
492
+ const reasons = [];
493
+ let target = "public";
494
+ switch (input.cacheability) {
495
+ case "public": break;
496
+ case "private": {
497
+ const reason = {
498
+ code: "CP_DOWNGRADE_CACHEABILITY_PRIVATE",
499
+ target: "private"
500
+ };
501
+ reasons.push(reason);
502
+ target = maxCacheProofDowngradeTarget(target, reason.target);
503
+ break;
504
+ }
505
+ case "uncacheable": {
506
+ const reason = {
507
+ code: "CP_DOWNGRADE_CACHEABILITY_UNCACHEABLE",
508
+ target: "privateUncacheable"
509
+ };
510
+ reasons.push(reason);
511
+ target = maxCacheProofDowngradeTarget(target, reason.target);
512
+ break;
513
+ }
514
+ case "unknown": {
515
+ const reason = {
516
+ code: "CP_DOWNGRADE_CACHEABILITY_UNKNOWN",
517
+ target: "freshRender"
518
+ };
519
+ reasons.push(reason);
520
+ target = maxCacheProofDowngradeTarget(target, reason.target);
521
+ break;
522
+ }
523
+ default: assertNever(input.cacheability);
524
+ }
525
+ if (input.completeness !== "complete") {
526
+ const reason = {
527
+ code: "CP_DOWNGRADE_INCOMPLETE_OBSERVATION",
528
+ completeness: input.completeness,
529
+ target: "freshRender"
530
+ };
531
+ reasons.push(reason);
532
+ target = maxCacheProofDowngradeTarget(target, reason.target);
533
+ }
534
+ if (input.dynamicFetches.length > 0) {
535
+ const reason = {
536
+ code: "CP_DOWNGRADE_DYNAMIC_FETCH",
537
+ dynamicFetchCount: input.dynamicFetches.length,
538
+ target: "freshRender"
539
+ };
540
+ reasons.push(reason);
541
+ target = maxCacheProofDowngradeTarget(target, reason.target);
542
+ }
543
+ const requestApis = normalizeRequestApiObservations(input.requestApis);
544
+ for (const requestApi of requestApis) {
545
+ if (requestApi.status === "notObserved") continue;
546
+ const reason = requestApi.status === "unknown" ? {
547
+ code: "CP_DOWNGRADE_UNKNOWN_REQUEST_API",
548
+ requestApi: requestApi.kind,
549
+ target: "freshRender"
550
+ } : classifyObservedRequestApiDowngrade(requestApi.kind);
551
+ reasons.push(reason);
552
+ target = maxCacheProofDowngradeTarget(target, reason.target);
553
+ }
554
+ return {
555
+ target,
556
+ reasons,
557
+ fallback: createDowngradeFallback(target, reasons),
558
+ isPublicCacheCandidate: target === "public" || target === "publicVariant"
559
+ };
560
+ }
561
+ function buildRenderRequestApiObservations(input) {
562
+ const observedKinds = new Set(input.observed);
563
+ const absentStatus = input.completeness === "complete" ? "notObserved" : "unknown";
564
+ return ALL_RENDER_REQUEST_API_KINDS.map((kind) => ({
565
+ kind,
566
+ status: observedKinds.has(kind) ? "observed" : absentStatus
567
+ }));
568
+ }
310
569
  function buildRenderObservation(input) {
570
+ const requestApis = normalizeRequestApiObservations(input.requestApis);
571
+ const dynamicFetches = sortedUniqueRedacted(input.dynamicFetches);
311
572
  return {
312
- schemaVersion: 0,
573
+ schemaVersion: 1,
313
574
  output: input.output,
314
575
  completeness: input.completeness,
315
576
  boundaryOutcome: input.boundaryOutcome,
316
- requestApis: normalizeRequestApiObservations(input.requestApis),
317
- dynamicFetches: sortedUniqueRedacted(input.dynamicFetches),
577
+ requestApis,
578
+ dynamicFetches,
318
579
  cacheTags: sortedUnique(input.cacheTags),
319
580
  pathTags: sortedUnique(input.pathTags),
320
- cacheability: input.cacheability
581
+ cacheability: input.cacheability,
582
+ downgrade: classifyRenderObservationDowngrade({
583
+ cacheability: input.cacheability,
584
+ completeness: input.completeness,
585
+ dynamicFetches,
586
+ requestApis
587
+ })
321
588
  };
322
589
  }
323
590
  function hasCompleteNegativeRequestApiProof(observation, requiredApis) {
324
591
  if (observation.completeness !== "complete") return false;
325
592
  const statuses = /* @__PURE__ */ new Map();
326
- for (const requestApi of observation.requestApis) statuses.set(requestApi.kind, requestApi.status);
593
+ for (const requestApi of normalizeRequestApiObservations(observation.requestApis)) statuses.set(requestApi.kind, requestApi.status);
327
594
  for (const api of requiredApis) if (statuses.get(api) !== "notObserved") return false;
328
595
  return true;
329
596
  }
597
+ function isStaticLayoutOutputScope(output) {
598
+ return output.kind === "layout";
599
+ }
600
+ function rejectStaticLayoutReuseProof(code, fields, mode = "renderFresh") {
601
+ return {
602
+ kind: "rejected",
603
+ fallback: buildBreakerFallback(code, fields, mode)
604
+ };
605
+ }
606
+ function getRequestApiStatus(observations, kind) {
607
+ let status = null;
608
+ for (const requestApi of observations) {
609
+ if (requestApi.kind !== kind) continue;
610
+ if (status === null || requestApiStatusRank(requestApi.status) > requestApiStatusRank(status)) status = requestApi.status;
611
+ }
612
+ return status ?? "missing";
613
+ }
614
+ function createStaticLayoutDowngradeFallback(downgrade) {
615
+ const mode = downgrade.target === "privateUncacheable" ? "privateUncacheable" : "renderFresh";
616
+ return buildBreakerFallback("CP_STATIC_LAYOUT_PRIVATE_DYNAMIC_DOWNGRADE", {
617
+ reasonCodes: downgrade.reasons.map((reason) => reason.code),
618
+ target: downgrade.target
619
+ }, mode);
620
+ }
621
+ function outputFieldMismatch(candidate, observation) {
622
+ if (candidate.layoutId !== observation.layoutId) return "layoutId";
623
+ if (candidate.rootBoundaryId !== observation.rootBoundaryId) return "rootBoundaryId";
624
+ if (candidate.routeId !== observation.routeId) return "routeId";
625
+ return null;
626
+ }
627
+ function buildStaticLayoutReuseProof(input) {
628
+ if (!isStaticLayoutOutputScope(input.currentOutput)) return rejectStaticLayoutReuseProof("CP_STATIC_LAYOUT_CURRENT_OUTPUT_KIND", { currentOutputKind: input.currentOutput.kind });
629
+ if (!isStaticLayoutOutputScope(input.candidateVariant.output)) return rejectStaticLayoutReuseProof("CP_STATIC_LAYOUT_CANDIDATE_OUTPUT_KIND", { candidateOutputKind: input.candidateVariant.output.kind });
630
+ if (!isStaticLayoutOutputScope(input.candidateObservation.output)) return rejectStaticLayoutReuseProof("CP_STATIC_LAYOUT_OBSERVATION_OUTPUT_KIND", { observationOutputKind: input.candidateObservation.output.kind });
631
+ const currentOutput = input.currentOutput;
632
+ const candidateOutput = input.candidateVariant.output;
633
+ const observationOutput = input.candidateObservation.output;
634
+ const requestApis = normalizeRequestApiObservations(input.candidateObservation.requestApis);
635
+ const candidateObservation = {
636
+ ...input.candidateObservation,
637
+ requestApis,
638
+ downgrade: classifyRenderObservationDowngrade({
639
+ cacheability: input.candidateObservation.cacheability,
640
+ completeness: input.candidateObservation.completeness,
641
+ dynamicFetches: input.candidateObservation.dynamicFetches,
642
+ requestApis
643
+ })
644
+ };
645
+ const observedOutputMismatch = outputFieldMismatch(candidateOutput, observationOutput);
646
+ if (observedOutputMismatch) return rejectStaticLayoutReuseProof("CP_STATIC_LAYOUT_OBSERVATION_OUTPUT_MISMATCH", {
647
+ candidateLayoutId: candidateOutput.layoutId,
648
+ candidateRootBoundaryId: candidateOutput.rootBoundaryId,
649
+ candidateRouteId: candidateOutput.routeId,
650
+ field: observedOutputMismatch,
651
+ observationLayoutId: observationOutput.layoutId,
652
+ observationRootBoundaryId: observationOutput.rootBoundaryId,
653
+ observationRouteId: observationOutput.routeId
654
+ });
655
+ if (currentOutput.layoutId !== candidateOutput.layoutId) return rejectStaticLayoutReuseProof("CP_STATIC_LAYOUT_ID_MISMATCH", {
656
+ candidateLayoutId: candidateOutput.layoutId,
657
+ currentLayoutId: currentOutput.layoutId
658
+ });
659
+ if (currentOutput.rootBoundaryId === null || candidateOutput.rootBoundaryId === null) return rejectStaticLayoutReuseProof("CP_STATIC_LAYOUT_ROOT_BOUNDARY_UNKNOWN", {
660
+ candidateRootBoundaryId: candidateOutput.rootBoundaryId,
661
+ currentRootBoundaryId: currentOutput.rootBoundaryId
662
+ });
663
+ if (currentOutput.rootBoundaryId !== candidateOutput.rootBoundaryId) return rejectStaticLayoutReuseProof("CP_STATIC_LAYOUT_ROOT_BOUNDARY_MISMATCH", {
664
+ candidateRootBoundaryId: candidateOutput.rootBoundaryId,
665
+ currentRootBoundaryId: currentOutput.rootBoundaryId
666
+ });
667
+ const boundaryCompatibility = buildBoundaryOutcomeCompatibility({
668
+ candidate: candidateObservation.boundaryOutcome,
669
+ expected: { kind: "success" }
670
+ });
671
+ if (boundaryCompatibility.kind === "incompatible") return {
672
+ kind: "rejected",
673
+ fallback: boundaryCompatibility.fallback
674
+ };
675
+ if (input.candidateVariant.dimensions.length > 0) return rejectStaticLayoutReuseProof("CP_STATIC_LAYOUT_VARIANT_DIMENSION_UNPROVEN", {
676
+ dimensionCount: input.candidateVariant.dimensions.length,
677
+ sources: sortedUnique(input.candidateVariant.dimensions.map((dimension) => dimension.source))
678
+ });
679
+ if (!candidateObservation.downgrade.isPublicCacheCandidate) return {
680
+ kind: "rejected",
681
+ fallback: createStaticLayoutDowngradeFallback(candidateObservation.downgrade)
682
+ };
683
+ const requiredNegativeRequestApis = ALL_RENDER_REQUEST_API_KINDS;
684
+ for (const api of requiredNegativeRequestApis) {
685
+ const status = getRequestApiStatus(candidateObservation.requestApis, api);
686
+ if (status === "notObserved") continue;
687
+ return rejectStaticLayoutReuseProof(status === "missing" ? "CP_STATIC_LAYOUT_REQUEST_API_UNKNOWN" : "CP_STATIC_LAYOUT_REQUEST_API_OBSERVED", {
688
+ requestApi: api,
689
+ status
690
+ });
691
+ }
692
+ return {
693
+ kind: "proof",
694
+ proof: {
695
+ authorizesRuntimeReuse: true,
696
+ candidateOutput,
697
+ code: "CP_STATIC_LAYOUT_REUSE_PROVEN",
698
+ currentOutput,
699
+ fields: {
700
+ candidateRouteId: candidateOutput.routeId,
701
+ currentRouteId: currentOutput.routeId,
702
+ layoutId: currentOutput.layoutId,
703
+ rootBoundaryId: currentOutput.rootBoundaryId
704
+ },
705
+ observation: candidateObservation,
706
+ requiredNegativeRequestApis: [...requiredNegativeRequestApis],
707
+ reuseClass: "static-layout",
708
+ variant: input.candidateVariant
709
+ }
710
+ };
711
+ }
712
+ function createCacheProofHotPathMetric(outcome, code, fields) {
713
+ return {
714
+ name: "vinext.cache.static_layout_artifact_reuse",
715
+ outcome,
716
+ code,
717
+ fields
718
+ };
719
+ }
720
+ function createStaticLayoutArtifactReuseFallback(fallback) {
721
+ return {
722
+ kind: "fallback",
723
+ canReuse: false,
724
+ fallback,
725
+ metric: createCacheProofHotPathMetric("fallback", fallback.code, fallback.fields)
726
+ };
727
+ }
728
+ function createStaticLayoutArtifactReuseDecision(input) {
729
+ if (input.candidateVariant.kind === "breakerFallback") return createStaticLayoutArtifactReuseFallback(input.candidateVariant.fallback);
730
+ const artifactCompatibility = evaluateArtifactCompatibility(input.currentArtifactCompatibility, input.candidateArtifactCompatibility, { compatibilityMap: input.compatibilityMap });
731
+ if (artifactCompatibility.kind === "unknown") return createStaticLayoutArtifactReuseFallback(buildBreakerFallback("CP_ARTIFACT_COMPATIBILITY_UNKNOWN", {
732
+ compatibilityFallback: artifactCompatibility.fallback,
733
+ reason: artifactCompatibility.reason
734
+ }));
735
+ if (artifactCompatibility.kind === "incompatible") return createStaticLayoutArtifactReuseFallback(buildBreakerFallback("CP_ARTIFACT_COMPATIBILITY_INCOMPATIBLE", {
736
+ compatibilityFallback: artifactCompatibility.fallback,
737
+ reason: artifactCompatibility.reason
738
+ }));
739
+ const proof = buildStaticLayoutReuseProof({
740
+ candidateObservation: input.candidateObservation,
741
+ candidateVariant: input.candidateVariant.variant,
742
+ currentOutput: input.currentOutput
743
+ });
744
+ if (proof.kind === "rejected") return createStaticLayoutArtifactReuseFallback(proof.fallback);
745
+ return {
746
+ kind: "reuse",
747
+ canReuse: true,
748
+ proof: {
749
+ ...proof.proof,
750
+ candidateArtifactCompatibility: { ...input.candidateArtifactCompatibility }
751
+ },
752
+ metric: createCacheProofHotPathMetric("reuse", proof.proof.code, proof.proof.fields)
753
+ };
754
+ }
755
+ function createCacheEntryReuseProof(decision) {
756
+ if (decision === null) return {
757
+ kind: "runtime-cache-entry",
758
+ decision: null
759
+ };
760
+ switch (decision.kind) {
761
+ case "reuse": return {
762
+ kind: "runtime-cache-entry",
763
+ decision: {
764
+ canReuse: true,
765
+ code: decision.proof.code,
766
+ kind: "reuse",
767
+ reuseClass: decision.proof.reuseClass
768
+ }
769
+ };
770
+ case "fallback": return {
771
+ kind: "runtime-cache-entry",
772
+ decision: {
773
+ canReuse: false,
774
+ code: decision.fallback.code,
775
+ kind: "reject",
776
+ mode: decision.fallback.mode,
777
+ scope: decision.fallback.scope
778
+ }
779
+ };
780
+ default: return assertNever(decision);
781
+ }
782
+ }
330
783
  function createDisabledCacheProofDecision(input) {
331
784
  return {
332
785
  kind: "disabled",
333
786
  canReuse: false,
334
787
  variant: input.variant,
335
788
  observation: input.observation,
789
+ ...input.staticLayoutProof ? { staticLayoutProof: input.staticLayoutProof } : {},
336
790
  fallback: buildBreakerFallback("CP_MODEL_DISABLED")
337
791
  };
338
792
  }
339
793
  //#endregion
340
- export { CACHE_PROOF_MODEL_SCHEMA_VERSION, DEFAULT_CACHE_VARIANT_BUDGET, buildBoundaryOutcomeCompatibility, buildCacheVariant, buildRenderObservation, createAppRouteCacheProofGraphScope, createDisabledCacheProofDecision, hasCompleteNegativeRequestApiProof };
794
+ export { ALL_RENDER_REQUEST_API_KINDS, CACHE_PROOF_MODEL_SCHEMA_VERSION, DEFAULT_CACHE_VARIANT_BUDGET, buildBoundaryOutcomeCompatibility, buildCacheVariant, buildCacheVariantWithRouteBudget, buildRenderObservation, buildRenderRequestApiObservations, buildStaticLayoutReuseProof, classifyCacheVariantDimensionDowngrade, classifyRenderObservationDowngrade, createAppRouteCacheProofGraphScope, createCacheEntryReuseProof, createDisabledCacheProofDecision, createStaticLayoutArtifactReuseDecision, enforceCacheVariantRouteBudget, hasCompleteNegativeRequestApiProof };
341
795
 
342
796
  //# sourceMappingURL=cache-proof.js.map