@evoscientist/webui 0.2.5 → 0.2.6

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 (934) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/build-manifest.json +13 -10
  3. package/dist/.next/prerender-manifest.json +18 -3
  4. package/dist/.next/required-server-files.json +27 -8
  5. package/dist/.next/server/app/_global-error/page/build-manifest.json +10 -7
  6. package/dist/.next/server/app/_global-error/page.js +6 -6
  7. package/dist/.next/server/app/_global-error/page.js.nft.json +1 -1
  8. package/dist/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/dist/.next/server/app/_global-error.html +1 -1
  10. package/dist/.next/server/app/_global-error.meta +11 -4
  11. package/dist/.next/server/app/_global-error.rsc +9 -9
  12. package/dist/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +16 -2
  13. package/dist/.next/server/app/_global-error.segments/_full.segment.rsc +9 -9
  14. package/dist/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/dist/.next/server/app/_not-found/page/build-manifest.json +10 -7
  16. package/dist/.next/server/app/_not-found/page/next-font-manifest.json +1 -1
  17. package/dist/.next/server/app/_not-found/page.js +9 -10
  18. package/dist/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/dist/.next/server/app/_not-found.html +1 -1
  21. package/dist/.next/server/app/_not-found.meta +16 -5
  22. package/dist/.next/server/app/_not-found.rsc +15 -15
  23. package/dist/.next/server/app/_not-found.segments/_full.segment.rsc +15 -15
  24. package/dist/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +22 -2
  25. package/dist/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/dist/.next/server/app/api/evosci-config/route/build-manifest.json +4 -1
  27. package/dist/.next/server/app/api/evosci-config/route.js +3 -3
  28. package/dist/.next/server/app/api/evosci-config/route.js.nft.json +1 -1
  29. package/dist/.next/server/app/api/evosci-config/route_client-reference-manifest.js +1 -1
  30. package/dist/.next/server/app/api/memory/executions/route/build-manifest.json +4 -1
  31. package/dist/.next/server/app/api/memory/executions/route.js +4 -3
  32. package/dist/.next/server/app/api/memory/executions/route.js.nft.json +1 -1
  33. package/dist/.next/server/app/api/memory/executions/route_client-reference-manifest.js +1 -1
  34. package/dist/.next/server/app/api/memory/observations/route/build-manifest.json +4 -1
  35. package/dist/.next/server/app/api/memory/observations/route.js +4 -3
  36. package/dist/.next/server/app/api/memory/observations/route.js.nft.json +1 -1
  37. package/dist/.next/server/app/api/memory/observations/route_client-reference-manifest.js +1 -1
  38. package/dist/.next/server/app/api/memory/route/build-manifest.json +4 -1
  39. package/dist/.next/server/app/api/memory/route.js +4 -3
  40. package/dist/.next/server/app/api/memory/route.js.nft.json +1 -1
  41. package/dist/.next/server/app/api/memory/route_client-reference-manifest.js +1 -1
  42. package/dist/.next/server/app/api/skills/catalog/route/build-manifest.json +4 -1
  43. package/dist/.next/server/app/api/skills/catalog/route.js +3 -3
  44. package/dist/.next/server/app/api/skills/catalog/route.js.nft.json +1 -1
  45. package/dist/.next/server/app/api/skills/catalog/route_client-reference-manifest.js +1 -1
  46. package/dist/.next/server/app/api/skills/detail/route/build-manifest.json +4 -1
  47. package/dist/.next/server/app/api/skills/detail/route.js +3 -3
  48. package/dist/.next/server/app/api/skills/detail/route.js.nft.json +1 -1
  49. package/dist/.next/server/app/api/skills/detail/route_client-reference-manifest.js +1 -1
  50. package/dist/.next/server/app/api/skills/install/route/build-manifest.json +4 -1
  51. package/dist/.next/server/app/api/skills/install/route.js +3 -3
  52. package/dist/.next/server/app/api/skills/install/route.js.nft.json +1 -1
  53. package/dist/.next/server/app/api/skills/install/route_client-reference-manifest.js +1 -1
  54. package/dist/.next/server/app/api/skills/route/build-manifest.json +4 -1
  55. package/dist/.next/server/app/api/skills/route.js +4 -3
  56. package/dist/.next/server/app/api/skills/route.js.nft.json +1 -1
  57. package/dist/.next/server/app/api/skills/route_client-reference-manifest.js +1 -1
  58. package/dist/.next/server/app/api/workspace/download/route/build-manifest.json +4 -1
  59. package/dist/.next/server/app/api/workspace/download/route.js +4 -3
  60. package/dist/.next/server/app/api/workspace/download/route.js.nft.json +1 -1
  61. package/dist/.next/server/app/api/workspace/download/route_client-reference-manifest.js +1 -1
  62. package/dist/.next/server/app/api/workspace/file/route/build-manifest.json +4 -1
  63. package/dist/.next/server/app/api/workspace/file/route.js +4 -4
  64. package/dist/.next/server/app/api/workspace/file/route.js.nft.json +1 -1
  65. package/dist/.next/server/app/api/workspace/file/route_client-reference-manifest.js +1 -1
  66. package/dist/.next/server/app/api/workspace/route/build-manifest.json +4 -1
  67. package/dist/.next/server/app/api/workspace/route.js +4 -3
  68. package/dist/.next/server/app/api/workspace/route.js.nft.json +1 -1
  69. package/dist/.next/server/app/api/workspace/route_client-reference-manifest.js +1 -1
  70. package/dist/.next/server/app/api/workspace/upload/route/build-manifest.json +4 -1
  71. package/dist/.next/server/app/api/workspace/upload/route.js +4 -3
  72. package/dist/.next/server/app/api/workspace/upload/route.js.nft.json +1 -1
  73. package/dist/.next/server/app/api/workspace/upload/route_client-reference-manifest.js +1 -1
  74. package/dist/.next/server/app/icon.png/route/build-manifest.json +4 -1
  75. package/dist/.next/server/app/icon.png/route.js +4 -4
  76. package/dist/.next/server/app/icon.png/route.js.nft.json +1 -1
  77. package/dist/.next/server/app/index.html +1 -1
  78. package/dist/.next/server/app/index.meta +11 -4
  79. package/dist/.next/server/app/index.rsc +16 -16
  80. package/dist/.next/server/app/index.segments/__PAGE__.segment.rsc +22 -5
  81. package/dist/.next/server/app/index.segments/_full.segment.rsc +16 -16
  82. package/dist/.next/server/app/index.segments/_tree.segment.rsc +3 -3
  83. package/dist/.next/server/app/page/build-manifest.json +10 -7
  84. package/dist/.next/server/app/page/next-font-manifest.json +1 -1
  85. package/dist/.next/server/app/page.js +10 -11
  86. package/dist/.next/server/app/page.js.nft.json +1 -1
  87. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  88. package/dist/.next/server/chunks/[externals]__0l8ei7u._.js +3 -0
  89. package/dist/.next/server/chunks/[root-of-the-server]__0239a1s._.js +3 -0
  90. package/dist/.next/server/chunks/[root-of-the-server]__0d2jr7j._.js +3 -0
  91. package/dist/.next/server/chunks/[root-of-the-server]__0jsq76h._.js +6 -0
  92. package/dist/.next/server/chunks/[root-of-the-server]__0k-rs5f._.js +6 -0
  93. package/dist/.next/server/chunks/[root-of-the-server]__0key-2n._.js +3 -0
  94. package/dist/.next/server/chunks/[root-of-the-server]__0l3yhx4._.js +160 -0
  95. package/dist/.next/server/chunks/[root-of-the-server]__0nn8czk._.js +6 -0
  96. package/dist/.next/server/chunks/[root-of-the-server]__0t923su._.js +3 -0
  97. package/dist/.next/server/chunks/[root-of-the-server]__0zqsdzd._.js +3 -0
  98. package/dist/.next/server/chunks/[root-of-the-server]__1alqt3_._.js +6 -0
  99. package/dist/.next/server/chunks/[turbopack]_runtime.js +97 -193
  100. package/dist/.next/server/chunks/_00r_7g_._.js +3 -0
  101. package/dist/.next/server/chunks/_042sj8j._.js +3 -0
  102. package/dist/.next/server/chunks/_0lp3ten._.js +3 -0
  103. package/dist/.next/server/chunks/_0m7b81h._.js +3 -0
  104. package/dist/.next/server/chunks/_13lro7d._.js +3 -0
  105. package/dist/.next/server/chunks/_154zcbx._.js +3 -0
  106. package/dist/.next/server/chunks/_1_oz68h._.js +3 -0
  107. package/dist/.next/server/chunks/_1lqtgjk._.js +3 -0
  108. package/dist/.next/server/chunks/{_next-internal_server_app_api_evosci-config_route_actions_0nka7fr.js → _next-internal_server_app_api_evosci-config_route_actions_13cf33i.js} +1 -1
  109. package/dist/.next/server/chunks/{_next-internal_server_app_api_memory_executions_route_actions_02b~_kt.js → _next-internal_server_app_api_memory_executions_route_actions_041n8x6.js} +1 -1
  110. package/dist/.next/server/chunks/{_next-internal_server_app_api_memory_observations_route_actions_0qhyoqo.js → _next-internal_server_app_api_memory_observations_route_actions_18ivi6u.js} +1 -1
  111. package/dist/.next/server/chunks/{_next-internal_server_app_api_memory_route_actions_0jf5z0q.js → _next-internal_server_app_api_memory_route_actions_0y2o7lg.js} +1 -1
  112. package/dist/.next/server/chunks/{_next-internal_server_app_api_skills_catalog_route_actions_0pp.pug.js → _next-internal_server_app_api_skills_catalog_route_actions_173mjj2.js} +1 -1
  113. package/dist/.next/server/chunks/{_next-internal_server_app_api_skills_detail_route_actions_02~v0so.js → _next-internal_server_app_api_skills_detail_route_actions_058ebza.js} +1 -1
  114. package/dist/.next/server/chunks/{_next-internal_server_app_api_skills_install_route_actions_03-v3ve.js → _next-internal_server_app_api_skills_install_route_actions_06zjol4.js} +1 -1
  115. package/dist/.next/server/chunks/{_next-internal_server_app_api_skills_route_actions_0kp0j6w.js → _next-internal_server_app_api_skills_route_actions_0_9y-ex.js} +1 -1
  116. package/dist/.next/server/chunks/{_next-internal_server_app_api_workspace_download_route_actions_0y83v2y.js → _next-internal_server_app_api_workspace_download_route_actions_1m4_t05.js} +1 -1
  117. package/dist/.next/server/chunks/{_next-internal_server_app_api_workspace_file_route_actions_06tfudj.js → _next-internal_server_app_api_workspace_file_route_actions_0bvzn6g.js} +1 -1
  118. package/dist/.next/server/chunks/{_next-internal_server_app_api_workspace_route_actions_0rc11bi.js → _next-internal_server_app_api_workspace_route_actions_19-xkal.js} +1 -1
  119. package/dist/.next/server/chunks/{_next-internal_server_app_api_workspace_upload_route_actions_070kzk5.js → _next-internal_server_app_api_workspace_upload_route_actions_0ccjxm_.js} +1 -1
  120. package/dist/.next/server/chunks/{_next-internal_server_app_icon_png_route_actions_12.gv.r.js → _next-internal_server_app_icon_png_route_actions_1-lsc8h.js} +1 -1
  121. package/dist/.next/server/chunks/ssr/{0t6k_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-NNHCCRGN_mjs_01.5gnv._.js → 1daa_@mermaid-js_parser_dist_chunks_mermaid-parser_core_chunk-NNHCCRGN_mjs_03i6i8q._.js} +3 -3
  122. package/dist/.next/server/chunks/ssr/{0t6k_mermaid_dist_chunks_mermaid_core_mindmap-definition-RKZ34NQL_mjs_0ya3nf7._.js → 1daa_mermaid_dist_chunks_mermaid_core_mindmap-definition-RKZ34NQL_mjs_1m8bey3._.js} +1 -1
  123. package/dist/.next/server/chunks/ssr/{0t6k_mermaid_dist_chunks_mermaid_core_requirementDiagram-4Y6WPE33_mjs_07c4~j8._.js → 1daa_mermaid_dist_chunks_mermaid_core_requirementDiagram-4Y6WPE33_mjs_0cvy8c2._.js} +1 -1
  124. package/dist/.next/server/chunks/ssr/{0t6k_mermaid_dist_chunks_mermaid_core_timeline-definition-PNZ67QCA_mjs_0i6u~cs._.js → 1daa_mermaid_dist_chunks_mermaid_core_timeline-definition-PNZ67QCA_mjs_0vzw4gu._.js} +1 -1
  125. package/dist/.next/server/chunks/ssr/{0_lp_modules_mermaid_dist_chunks_mermaid_core_gitGraphDiagram-PVQCEYII_mjs_0xc8cuq._.js → 1q96_modules_mermaid_dist_chunks_mermaid_core_gitGraphDiagram-PVQCEYII_mjs_1kl1645._.js} +1 -1
  126. package/dist/.next/server/chunks/ssr/{0_lp_modules_mermaid_dist_chunks_mermaid_core_ishikawaDiagram-YF4QCWOH_mjs_12xi8w0._.js → 1q96_modules_mermaid_dist_chunks_mermaid_core_ishikawaDiagram-YF4QCWOH_mjs_1-btteu._.js} +1 -1
  127. package/dist/.next/server/chunks/ssr/{0_lp_modules_mermaid_dist_chunks_mermaid_core_journeyDiagram-JHISSGLW_mjs_0d.k2tv._.js → 1q96_modules_mermaid_dist_chunks_mermaid_core_journeyDiagram-JHISSGLW_mjs_0omhwqk._.js} +1 -1
  128. package/dist/.next/server/chunks/ssr/{0_lp_modules_mermaid_dist_chunks_mermaid_core_kanban-definition-UN3LZRKU_mjs_02zfksy._.js → 1q96_modules_mermaid_dist_chunks_mermaid_core_kanban-definition-UN3LZRKU_mjs_052rc5y._.js} +1 -1
  129. package/dist/.next/server/chunks/ssr/{0_lp_modules_mermaid_dist_chunks_mermaid_core_quadrantDiagram-W4KKPZXB_mjs_0c30c1e._.js → 1q96_modules_mermaid_dist_chunks_mermaid_core_quadrantDiagram-W4KKPZXB_mjs_0l8r0bx._.js} +1 -1
  130. package/dist/.next/server/chunks/ssr/{0_lp_modules_mermaid_dist_chunks_mermaid_core_sequenceDiagram-3UESZ5HK_mjs_07fd9jw._.js → 1q96_modules_mermaid_dist_chunks_mermaid_core_sequenceDiagram-3UESZ5HK_mjs_0c-9sj0._.js} +1 -1
  131. package/dist/.next/server/chunks/ssr/{0_lp_modules_mermaid_dist_chunks_mermaid_core_wardleyDiagram-YWT4CUSO_mjs_0a2sjhb._.js → 1q96_modules_mermaid_dist_chunks_mermaid_core_wardleyDiagram-YWT4CUSO_mjs_0hqmyh5._.js} +1 -1
  132. package/dist/.next/server/chunks/ssr/{0_lp_modules_mermaid_dist_chunks_mermaid_core_xychartDiagram-2RQKCTM6_mjs_0xpvx~c._.js → 1q96_modules_mermaid_dist_chunks_mermaid_core_xychartDiagram-2RQKCTM6_mjs_1l5rlhy._.js} +1 -1
  133. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0471z20._.js +3 -0
  134. package/dist/.next/server/chunks/ssr/{[root-of-the-server]__031lpnq._.js → [root-of-the-server]__05c-vrc._.js} +7 -7
  135. package/dist/.next/server/chunks/ssr/[root-of-the-server]__09pnxvp._.js +33 -0
  136. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0c75weq._.js +3 -0
  137. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0imtqxe._.js +3 -0
  138. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0nzxyl0._.js +3 -0
  139. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0o0ct70._.js +3 -0
  140. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0owaq8w._.js +12 -0
  141. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0xpcv9w._.js +14 -0
  142. package/dist/.next/server/chunks/ssr/[root-of-the-server]__1f4zvj-._.js +3 -0
  143. package/dist/.next/server/chunks/ssr/[root-of-the-server]__1io3bae._.js +33 -0
  144. package/dist/.next/server/chunks/ssr/[turbopack]_runtime.js +97 -193
  145. package/dist/.next/server/chunks/ssr/_05yvop-._.js +4 -0
  146. package/dist/.next/server/chunks/ssr/{_next-internal_server_app__global-error_page_actions_0k77kol.js → _next-internal_server_app__global-error_page_actions_0zi5s8-.js} +1 -1
  147. package/dist/.next/server/chunks/ssr/{_next-internal_server_app__not-found_page_actions_0eq97pa.js → _next-internal_server_app__not-found_page_actions_0pt47yr.js} +1 -1
  148. package/dist/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js +3 -0
  149. package/dist/.next/server/chunks/ssr/{node_modules_0v29g77._.js → node_modules_0-n78w2._.js} +3 -3
  150. package/dist/.next/server/chunks/ssr/node_modules_00cex-8._.js +3 -0
  151. package/dist/.next/server/chunks/ssr/node_modules_0456qqx._.js +17 -0
  152. package/dist/.next/server/chunks/ssr/{node_modules_0po23em._.js → node_modules_07zdzg3._.js} +3 -3
  153. package/dist/.next/server/chunks/ssr/node_modules_082g_84._.js +31 -0
  154. package/dist/.next/server/chunks/ssr/node_modules_0_w_s0o._.js +3 -0
  155. package/dist/.next/server/chunks/ssr/node_modules_0chqc93._.js +11 -0
  156. package/dist/.next/server/chunks/ssr/{node_modules_09w7yel._.js → node_modules_0h91jdk._.js} +2 -2
  157. package/dist/.next/server/chunks/ssr/{node_modules_0x8-epl._.js → node_modules_0i3cah4._.js} +3 -3
  158. package/dist/.next/server/chunks/ssr/node_modules_0jx8vby._.js +3 -0
  159. package/dist/.next/server/chunks/ssr/node_modules_0kh3gaq._.js +45 -0
  160. package/dist/.next/server/chunks/ssr/node_modules_0oiuulr._.js +3 -0
  161. package/dist/.next/server/chunks/ssr/node_modules_0sud39z._.js +3 -0
  162. package/dist/.next/server/chunks/ssr/node_modules_0ty2qhi._.js +3 -0
  163. package/dist/.next/server/chunks/ssr/node_modules_0u1te_7._.js +3 -0
  164. package/dist/.next/server/chunks/ssr/node_modules_0uvms5m._.js +3 -0
  165. package/dist/.next/server/chunks/ssr/{node_modules_0hsalo_._.js → node_modules_0v4zc0t._.js} +2 -2
  166. package/dist/.next/server/chunks/ssr/{node_modules_0j48jbs._.js → node_modules_0xme7lg._.js} +2 -2
  167. package/dist/.next/server/chunks/ssr/node_modules_0z2foqi._.js +3 -0
  168. package/dist/.next/server/chunks/ssr/node_modules_0z4gniu._.js +17 -0
  169. package/dist/.next/server/chunks/ssr/{node_modules_0makin.._.js → node_modules_1-wfv6i._.js} +1 -1
  170. package/dist/.next/server/chunks/ssr/node_modules_111pp7w._.js +3 -0
  171. package/dist/.next/server/chunks/ssr/node_modules_15pczok._.js +3 -0
  172. package/dist/.next/server/chunks/ssr/node_modules_16l6ua_._.js +3 -0
  173. package/dist/.next/server/chunks/ssr/node_modules_16q2m8u._.js +3 -0
  174. package/dist/.next/server/chunks/ssr/node_modules_17rj81n._.js +3 -0
  175. package/dist/.next/server/chunks/ssr/node_modules_1831lye._.js +3 -0
  176. package/dist/.next/server/chunks/ssr/node_modules_19b6jde._.js +3 -0
  177. package/dist/.next/server/chunks/ssr/node_modules_1_jf-yx._.js +17 -0
  178. package/dist/.next/server/chunks/ssr/node_modules_1_v-pb8._.js +3 -0
  179. package/dist/.next/server/chunks/ssr/node_modules_1bmqmso._.js +3 -0
  180. package/dist/.next/server/chunks/ssr/node_modules_1jpcwgl._.js +151 -0
  181. package/dist/.next/server/chunks/ssr/node_modules_1lio4hi._.js +3 -0
  182. package/dist/.next/server/chunks/ssr/{node_modules_0~gyl9u._.js → node_modules_1nck62h._.js} +1 -1
  183. package/dist/.next/server/chunks/ssr/{node_modules_0z~-p3m._.js → node_modules_1p9b60w._.js} +2 -2
  184. package/dist/.next/server/chunks/ssr/node_modules_1tj6b0h._.js +3 -0
  185. package/dist/.next/server/chunks/ssr/{node_modules_0xheqa8._.js → node_modules_1z_uie6._.js} +2 -2
  186. package/dist/.next/server/chunks/ssr/node_modules_1zskgct._.js +26 -0
  187. package/dist/.next/server/chunks/ssr/{node_modules_13oabuj._.js → node_modules_20p8pl7._.js} +2 -2
  188. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_01lis5y._.js +3 -0
  189. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_07fm7s3._.js +3 -0
  190. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0kitx9n._.js +3 -0
  191. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0x5ivvr._.js +3 -0
  192. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_145f4t2._.js +3 -0
  193. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_1_o7dux._.js +3 -0
  194. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_1alyi8-._.js +3 -0
  195. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_1bxlr8e._.js +3 -0
  196. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_1grmhd9._.js +3 -0
  197. package/dist/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_00~7fbh._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_01pthdh._.js} +1 -1
  198. package/dist/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_01-g753._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_03fanqm._.js} +1 -1
  199. package/dist/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_02.ao_s._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0597f-k._.js} +1 -1
  200. package/dist/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0l0_~d-._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0__ix0y._.js} +1 -1
  201. package/dist/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0c.1f2e._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0muxjzn._.js} +1 -1
  202. package/dist/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0pjzhbh._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_16vf13h._.js} +1 -1
  203. package/dist/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0uq.qxy._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1fzbfn5._.js} +1 -1
  204. package/dist/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0_yd3ib._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1quf15b._.js} +1 -1
  205. package/dist/.next/server/chunks/ssr/{node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_0.ksprp._.js → node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_1vi37xl._.js} +1 -1
  206. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_20vrei_._.js +3 -0
  207. package/dist/.next/server/chunks/ssr/{node_modules_cytoscape_dist_cytoscape_esm_mjs_0642y5z._.js → node_modules_cytoscape_dist_cytoscape_esm_mjs_0arohj6._.js} +2 -2
  208. package/dist/.next/server/chunks/ssr/node_modules_dagre-d3-es_src_dagre_index_0g66msq.js +3 -0
  209. package/dist/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0oc7z2j._.js → node_modules_katex_dist_katex_mjs_04eh6b6._.js} +1 -1
  210. package/dist/.next/server/chunks/ssr/{node_modules_katex_dist_katex_mjs_0zuygmo._.js → node_modules_katex_dist_katex_mjs_1oxucd3._.js} +1 -1
  211. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_blockDiagram-GPEHLZMM_mjs_0bclh9~._.js → node_modules_mermaid_dist_chunks_mermaid_core_blockDiagram-GPEHLZMM_mjs_0jxv2ay._.js} +2 -2
  212. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_c4Diagram-AAUBKEIU_mjs_11i~hhk._.js → node_modules_mermaid_dist_chunks_mermaid_core_c4Diagram-AAUBKEIU_mjs_1yyt6ej._.js} +1 -1
  213. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_chunk-3OPIFGDE_mjs_0p4md.t._.js → node_modules_mermaid_dist_chunks_mermaid_core_chunk-3OPIFGDE_mjs_165ua5_._.js} +1 -1
  214. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_chunk-5ZQYHXKU_mjs_0p7as5d._.js → node_modules_mermaid_dist_chunks_mermaid_core_chunk-5ZQYHXKU_mjs_16ac76u._.js} +2 -2
  215. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_chunk-727SXJPM_mjs_05x94.y._.js → node_modules_mermaid_dist_chunks_mermaid_core_chunk-727SXJPM_mjs_0a9kagr._.js} +1 -1
  216. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_chunk-AQP2D5EJ_mjs_0_foecb._.js → node_modules_mermaid_dist_chunks_mermaid_core_chunk-AQP2D5EJ_mjs_1p-51mn._.js} +1 -1
  217. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_chunk-CSCIHK7Q_mjs_0g3lwf.._.js → node_modules_mermaid_dist_chunks_mermaid_core_chunk-CSCIHK7Q_mjs_0savw5-._.js} +1 -1
  218. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_chunk-KSCS5N6A_mjs_0.lzb4g._.js → node_modules_mermaid_dist_chunks_mermaid_core_chunk-KSCS5N6A_mjs_1vk17qr._.js} +1 -1
  219. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_chunk-O5CBEL6O_mjs_041viuq._.js → node_modules_mermaid_dist_chunks_mermaid_core_chunk-O5CBEL6O_mjs_074844c._.js} +1 -1
  220. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_chunk-XPW4576I_mjs_0h8ib.t._.js → node_modules_mermaid_dist_chunks_mermaid_core_chunk-XPW4576I_mjs_0u9wa-b._.js} +2 -2
  221. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_dagre-BM42HDAG_mjs_0itw5kh._.js → node_modules_mermaid_dist_chunks_mermaid_core_dagre-BM42HDAG_mjs_0w_brpy._.js} +1 -1
  222. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_diagram-OG6HWLK6_mjs_0et-fze._.js → node_modules_mermaid_dist_chunks_mermaid_core_diagram-OG6HWLK6_mjs_0pzbdul._.js} +1 -1
  223. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_erDiagram-TEJ5UH35_mjs_12bfcsi._.js → node_modules_mermaid_dist_chunks_mermaid_core_erDiagram-TEJ5UH35_mjs_1_cyy1q._.js} +1 -1
  224. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_flowDiagram-I6XJVG4X_mjs_0136c8y._.js → node_modules_mermaid_dist_chunks_mermaid_core_flowDiagram-I6XJVG4X_mjs_01y3363._.js} +1 -1
  225. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_sankeyDiagram-5OEKKPKP_mjs_0z55106._.js → node_modules_mermaid_dist_chunks_mermaid_core_sankeyDiagram-5OEKKPKP_mjs_1nsv0tt._.js} +1 -1
  226. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_stateDiagram-AJRCARHV_mjs_0azazz~._.js → node_modules_mermaid_dist_chunks_mermaid_core_stateDiagram-AJRCARHV_mjs_0j4-fk2._.js} +1 -1
  227. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_chunks_mermaid_core_vennDiagram-CIIHVFJN_mjs_0wzofym._.js → node_modules_mermaid_dist_chunks_mermaid_core_vennDiagram-CIIHVFJN_mjs_1jvbrvq._.js} +1 -1
  228. package/dist/.next/server/chunks/ssr/{node_modules_mermaid_dist_mermaid_core_mjs_0rr2bb.._.js → node_modules_mermaid_dist_mermaid_core_mjs_1ao-jv5._.js} +1 -1
  229. package/dist/.next/server/chunks/ssr/node_modules_next_dist_1n3w9lb._.js +6 -0
  230. package/dist/.next/server/chunks/ssr/node_modules_next_dist_1vz8kh1._.js +3 -0
  231. package/dist/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
  232. package/dist/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_forbidden_0ghu-f7.js → node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js} +2 -2
  233. package/dist/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js +3 -0
  234. package/dist/.next/server/chunks/ssr/{node_modules_next_dist_client_components_builtin_unauthorized_0cjv-23.js → node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js} +2 -2
  235. package/dist/.next/server/chunks/ssr/{node_modules_roughjs_bundled_rough_esm_0opq-c5.js → node_modules_roughjs_bundled_rough_esm_15c9pcx.js} +1 -1
  236. package/dist/.next/server/middleware-build-manifest.js +13 -10
  237. package/dist/.next/server/next-font-manifest.js +1 -1
  238. package/dist/.next/server/next-font-manifest.json +2 -2
  239. package/dist/.next/server/pages/404.html +1 -1
  240. package/dist/.next/server/pages/500.html +1 -1
  241. package/dist/.next/server/prefetch-hints.json +34 -1
  242. package/dist/.next/server/server-reference-manifest.js +1 -1
  243. package/dist/.next/server/server-reference-manifest.json +1 -1
  244. package/dist/.next/static/chunks/{0wbhqz.-ey98b.js → 01nhrh-3r57wh.js} +1 -1
  245. package/dist/.next/static/chunks/02g89o135esk3.js +22 -0
  246. package/dist/.next/static/chunks/03regxjjibliy.js +29 -0
  247. package/dist/.next/static/chunks/{0n46g0ilh8wj..js → 05cl5ojgc4_ku.js} +6 -6
  248. package/dist/.next/static/chunks/0c4y7_xzemq6-.js +1 -0
  249. package/dist/.next/static/chunks/{0p9rfgg_duajn.js → 0dm2etancr7wp.js} +1 -1
  250. package/dist/.next/static/chunks/{0hq~c-~dp2g~1.js → 0l2v1ybx0rm07.js} +1 -1
  251. package/dist/.next/static/chunks/{104yvyc1ce3q5.js → 0o19535rrdg5j.js} +1 -1
  252. package/dist/.next/static/chunks/0piaur2yhvb4v.js +1 -0
  253. package/dist/.next/static/chunks/{0rhvismtjivza.js → 0s3geiy0as3cz.js} +5 -5
  254. package/dist/.next/static/chunks/12b5tf_04ca4i.js +10 -0
  255. package/dist/.next/static/chunks/{0qm2930z0c.8m.js → 15746zaz9af2k.js} +16 -16
  256. package/dist/.next/static/chunks/15m2ikcj71414.js +1 -0
  257. package/dist/.next/static/chunks/{07znaqalfuldz.js → 17y1ca1c2d1k0.js} +1 -1
  258. package/dist/.next/static/chunks/{187v8dzyf1l-f.js → 18dnd1yq8sjcm.js} +1 -1
  259. package/dist/.next/static/chunks/1h978hs06gqwr.js +1 -0
  260. package/dist/.next/static/chunks/1s8wltynx2kei.js +24 -0
  261. package/dist/.next/static/chunks/1vqrf8u3eyf8l.js +1 -0
  262. package/dist/.next/static/chunks/{11h85j-8~tny3.js → 1wsp3h55ims3-.js} +1 -1
  263. package/dist/.next/static/chunks/1x1nff_ltcu7m.js +1 -0
  264. package/dist/.next/static/chunks/1ztlt8o8gnas8.js +1 -0
  265. package/dist/.next/static/chunks/{0mo3-obfy2_6v.js → 2-tnv5f86ywqz.js} +2 -2
  266. package/dist/.next/static/chunks/20uqpnur2j1hn.js +1 -0
  267. package/dist/.next/static/chunks/{175hd_pl41_vh.js → 26t_0sbrej8uf.js} +2 -2
  268. package/dist/.next/static/chunks/28flaeabfo316.js +31 -0
  269. package/dist/.next/static/chunks/2ba37l0xctlco.js +1 -0
  270. package/dist/.next/static/chunks/2ia3pig2diart.js +43 -0
  271. package/dist/.next/static/chunks/{0ez8v7k1e7v4o.js → 2qe97b2xjvm_s.js} +1 -1
  272. package/dist/.next/static/chunks/2rob7uh46oj_f.js +10 -0
  273. package/dist/.next/static/chunks/2v_t22-0u_seu.js +1 -0
  274. package/dist/.next/static/chunks/2zf625u-tcwdn.js +1 -0
  275. package/dist/.next/static/chunks/{0cs_h74-ljzlt.js → 3-q38f64d_smq.js} +3 -3
  276. package/dist/.next/static/chunks/31ttnjt6g35a0.js +1 -0
  277. package/dist/.next/static/chunks/33t46atd3n2zd.js +1 -0
  278. package/dist/.next/static/chunks/{0dsde0n1co0l..js → 357a_3k2qrz6b.js} +1 -1
  279. package/dist/.next/static/chunks/383s4_f7pq0oz.js +1 -0
  280. package/dist/.next/static/chunks/3cnkwh7z04e3e.js +24 -0
  281. package/dist/.next/static/chunks/{0e~yxiezknbzn.css → 3cyn-rs5rpay6.css} +2 -2
  282. package/dist/.next/static/chunks/3s7at3o7ube_p.js +9 -0
  283. package/dist/.next/static/chunks/{16m14x8k2fnon.js → 3wb9uvu5ii1sy.js} +1 -1
  284. package/dist/.next/static/chunks/41ii5ld31fjk5.js +148 -0
  285. package/dist/.next/static/chunks/turbopack-3cm-eevva8ksw.js +1 -0
  286. package/dist/node_modules/@img/sharp-darwin-arm64/index.cjs +2 -0
  287. package/dist/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64-0.35.3.node +0 -0
  288. package/dist/node_modules/@img/sharp-darwin-arm64/package.json +5 -4
  289. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/README.md +15 -15
  290. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/lib/glib-2.0/include/glibconfig.h +1 -3
  291. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/lib/{libvips-cpp.8.17.3.dylib → libvips-cpp.8.18.3.dylib} +0 -0
  292. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/package.json +3 -2
  293. package/dist/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +21 -21
  294. package/dist/node_modules/@next/env/dist/index.js +1 -1
  295. package/dist/node_modules/@next/env/package.json +8 -8
  296. package/dist/node_modules/@swc/helpers/esm/_interop_require_default.js +4 -0
  297. package/dist/node_modules/@swc/helpers/esm/_interop_require_wildcard.js +36 -0
  298. package/dist/node_modules/@swc/helpers/package.json +703 -469
  299. package/dist/node_modules/next/dist/build/define-env.js +10 -2
  300. package/dist/node_modules/next/dist/build/duration-to-string.js +2 -3
  301. package/dist/node_modules/next/dist/build/next-config-ts/transpile-config.js +3 -114
  302. package/dist/node_modules/next/dist/build/segment-config/app/app-segment-config.js +35 -19
  303. package/dist/node_modules/next/dist/build/segment-config/app/app-segments.js +11 -1
  304. package/dist/node_modules/next/dist/build/static-paths/app.js +66 -19
  305. package/dist/node_modules/next/dist/build/swc/index.js +84 -23
  306. package/dist/node_modules/next/dist/build/swc/jest-transformer.js +1 -0
  307. package/dist/node_modules/next/dist/build/swc/options.js +13 -5
  308. package/dist/node_modules/next/dist/build/utils.js +112 -70
  309. package/dist/node_modules/next/dist/cli/next-test.js +2 -1
  310. package/dist/node_modules/next/dist/client/components/app-router-headers.js +0 -10
  311. package/dist/node_modules/next/dist/client/components/app-router-instance.js +50 -40
  312. package/dist/node_modules/next/dist/client/components/app-router.js +9 -1
  313. package/dist/node_modules/next/dist/client/components/error-boundary.js +13 -9
  314. package/dist/node_modules/next/dist/client/components/handle-isr-error.js +3 -3
  315. package/dist/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js +2 -2
  316. package/dist/node_modules/next/dist/{server/app-render/instant-validation/instant-samples-client.js → client/components/instant-samples.js} +13 -7
  317. package/dist/node_modules/next/dist/client/components/links.js +25 -8
  318. package/dist/node_modules/next/dist/client/components/nav-failure-handler.js +1 -1
  319. package/dist/node_modules/next/dist/client/components/navigation-dynamic-rendering.js +38 -0
  320. package/dist/node_modules/next/dist/client/components/navigation-untracked.js +5 -3
  321. package/dist/node_modules/next/dist/client/components/navigation.js +30 -9
  322. package/dist/node_modules/next/dist/client/components/offline.js +172 -0
  323. package/dist/node_modules/next/dist/client/components/readonly-url-search-params.js +5 -0
  324. package/dist/node_modules/next/dist/client/components/redirect.js +2 -2
  325. package/dist/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js +5 -1
  326. package/dist/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js +25 -17
  327. package/dist/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js +196 -50
  328. package/dist/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js +30 -19
  329. package/dist/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js +235 -102
  330. package/dist/node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js +8 -2
  331. package/dist/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +12 -5
  332. package/dist/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js +15 -2
  333. package/dist/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +38 -9
  334. package/dist/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +11 -2
  335. package/dist/node_modules/next/dist/client/components/router-reducer/router-reducer.js +10 -2
  336. package/dist/node_modules/next/dist/client/components/router-transition.js +135 -0
  337. package/dist/node_modules/next/dist/client/components/segment-cache/bfcache.js +9 -7
  338. package/dist/node_modules/next/dist/client/components/segment-cache/cache-key.js +31 -3
  339. package/dist/node_modules/next/dist/client/components/segment-cache/cache-map.js +33 -12
  340. package/dist/node_modules/next/dist/client/components/segment-cache/cache.js +1089 -338
  341. package/dist/node_modules/next/dist/client/components/segment-cache/fetch.js +37 -0
  342. package/dist/node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js +324 -103
  343. package/dist/node_modules/next/dist/client/components/segment-cache/navigation.js +218 -42
  344. package/dist/node_modules/next/dist/client/components/segment-cache/optimistic-routes.js +222 -117
  345. package/dist/node_modules/next/dist/client/components/segment-cache/prefetch.js +2 -1
  346. package/dist/node_modules/next/dist/client/components/segment-cache/scheduler.js +756 -235
  347. package/dist/node_modules/next/dist/client/components/segment-cache/types.js +19 -4
  348. package/dist/node_modules/next/dist/client/components/segment-cache/vary-path.js +50 -2
  349. package/dist/node_modules/next/dist/client/components/server-async-storage.js +43 -0
  350. package/dist/node_modules/next/dist/client/components/unstable-rethrow.js +15 -8
  351. package/dist/node_modules/next/dist/client/components/use-offline.js +68 -0
  352. package/dist/node_modules/next/dist/client/dev/debug-channel.js +367 -11
  353. package/dist/node_modules/next/dist/client/flight-data-helpers.js +4 -1
  354. package/dist/node_modules/next/dist/client/normalize-trailing-slash.js +2 -1
  355. package/dist/node_modules/next/dist/client/route-params.js +12 -10
  356. package/dist/node_modules/next/dist/compiled/@hapi/accept/index.js +1 -1
  357. package/dist/node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/index.js +1 -1
  358. package/dist/node_modules/next/dist/compiled/@napi-rs/triples/index.js +1 -1
  359. package/dist/node_modules/next/dist/compiled/@opentelemetry/api/index.js +1 -1
  360. package/dist/node_modules/next/dist/compiled/@vercel/detect-agent/index.js +1 -0
  361. package/dist/node_modules/next/dist/compiled/@vercel/detect-agent/package.json +1 -0
  362. package/dist/node_modules/next/dist/compiled/async-retry/index.js +1 -1
  363. package/dist/node_modules/next/dist/compiled/async-sema/index.js +1 -1
  364. package/dist/node_modules/next/dist/compiled/busboy/index.js +1 -1
  365. package/dist/node_modules/next/dist/compiled/bytes/index.js +2 -2
  366. package/dist/node_modules/next/dist/compiled/ci-info/index.js +1 -1
  367. package/dist/node_modules/next/dist/compiled/commander/index.js +1 -1
  368. package/dist/node_modules/next/dist/compiled/comment-json/index.js +2 -2
  369. package/dist/node_modules/next/dist/compiled/compression/index.js +10 -10
  370. package/dist/node_modules/next/dist/compiled/conf/index.js +2 -14
  371. package/dist/node_modules/next/dist/compiled/content-disposition/index.js +2 -2
  372. package/dist/node_modules/next/dist/compiled/cross-spawn/index.js +1 -1
  373. package/dist/node_modules/next/dist/compiled/debug/index.js +1 -1
  374. package/dist/node_modules/next/dist/compiled/edge-runtime/index.js +1 -1
  375. package/dist/node_modules/next/dist/compiled/find-up/index.js +1 -1
  376. package/dist/node_modules/next/dist/compiled/fresh/index.js +2 -2
  377. package/dist/node_modules/next/dist/compiled/httpxy/index.js +1 -0
  378. package/dist/node_modules/next/dist/compiled/httpxy/package.json +1 -0
  379. package/dist/node_modules/next/dist/compiled/image-detector/detector.js +1 -1
  380. package/dist/node_modules/next/dist/compiled/image-size/index.js +1 -1
  381. package/dist/node_modules/next/dist/compiled/ipaddr.js/ipaddr.js +1 -1
  382. package/dist/node_modules/next/dist/compiled/is-animated/index.js +1 -1
  383. package/dist/node_modules/next/dist/compiled/is-docker/index.js +1 -1
  384. package/dist/node_modules/next/dist/compiled/is-wsl/index.js +1 -1
  385. package/dist/node_modules/next/dist/compiled/jsonwebtoken/index.js +3 -3
  386. package/dist/node_modules/next/dist/compiled/nanoid/index.cjs +1 -1
  387. package/dist/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +144 -15
  388. package/dist/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +144 -15
  389. package/dist/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +3 -3
  390. package/dist/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +12 -12
  391. package/dist/node_modules/next/dist/compiled/p-limit/index.js +1 -1
  392. package/dist/node_modules/next/dist/compiled/p-queue/index.js +1 -1
  393. package/dist/node_modules/next/dist/compiled/path-browserify/index.js +1 -1
  394. package/dist/node_modules/next/dist/compiled/picomatch/index.js +1 -1
  395. package/dist/node_modules/next/dist/compiled/react-is/package.json +3 -3
  396. package/dist/node_modules/next/dist/compiled/semver/index.js +1 -1
  397. package/dist/node_modules/next/dist/compiled/send/index.js +13 -13
  398. package/dist/node_modules/next/dist/compiled/source-map/source-map.js +1 -1
  399. package/dist/node_modules/next/dist/compiled/string-hash/index.js +1 -1
  400. package/dist/node_modules/next/dist/compiled/strip-ansi/index.js +1 -1
  401. package/dist/node_modules/next/dist/compiled/superstruct/index.cjs +1 -1
  402. package/dist/node_modules/next/dist/compiled/tar/index.min.js +1 -1
  403. package/dist/node_modules/next/dist/compiled/text-table/index.js +1 -1
  404. package/dist/node_modules/next/dist/compiled/watchpack/watchpack.js +1 -1
  405. package/dist/node_modules/next/dist/compiled/write-file-atomic/index.js +1 -0
  406. package/dist/node_modules/next/dist/compiled/write-file-atomic/package.json +1 -0
  407. package/dist/node_modules/next/dist/compiled/ws/index.js +1 -1
  408. package/dist/node_modules/next/dist/compiled/zod/index.cjs +1 -1
  409. package/dist/node_modules/next/dist/compiled/zod-validation-error/index.js +1 -1
  410. package/dist/node_modules/next/dist/experimental/testmode/fetch.js +8 -0
  411. package/dist/node_modules/next/dist/experimental/testmode/httpget.js +9 -2
  412. package/dist/node_modules/next/dist/experimental/testmode/server.js +11 -0
  413. package/dist/node_modules/next/dist/lib/bundler.js +72 -1
  414. package/dist/node_modules/next/dist/lib/create-client-router-filter.js +16 -0
  415. package/dist/node_modules/next/dist/lib/find-root.js +187 -33
  416. package/dist/node_modules/next/dist/lib/format-dynamic-import-path.js +23 -4
  417. package/dist/node_modules/next/dist/lib/git-worktree.js +74 -0
  418. package/dist/node_modules/next/dist/lib/helpers/get-pkg-manager.js +10 -8
  419. package/dist/node_modules/next/dist/lib/helpers/git.js +59 -0
  420. package/dist/node_modules/next/dist/lib/install-dependencies.js +1 -1
  421. package/dist/node_modules/next/dist/lib/is-serializable-props.js +5 -0
  422. package/dist/node_modules/next/dist/lib/metadata/get-metadata-route.js +54 -15
  423. package/dist/node_modules/next/dist/lib/metadata/metadata.js +20 -46
  424. package/dist/node_modules/next/dist/lib/metadata/resolve-metadata.js +14 -14
  425. package/dist/node_modules/next/dist/lib/needs-experimental-react.js +2 -2
  426. package/dist/node_modules/next/dist/lib/patch-incorrect-lockfile.js +5 -5
  427. package/dist/node_modules/next/dist/lib/profiles-dir.js +45 -0
  428. package/dist/node_modules/next/dist/lib/require-instrumentation-client.js +10 -4
  429. package/dist/node_modules/next/dist/lib/resolve-build-paths.js +38 -10
  430. package/dist/node_modules/next/dist/lib/turbopack-cache-seed.js +171 -0
  431. package/dist/node_modules/next/dist/lib/typescript/getTypeScriptConfiguration.js +4 -84
  432. package/dist/node_modules/next/dist/lib/typescript/loadTsConfig.js +181 -0
  433. package/dist/node_modules/next/dist/lib/typescript/missingDependencyError.js +2 -3
  434. package/dist/node_modules/next/dist/lib/typescript/runTypeCheckCli.js +53 -0
  435. package/dist/node_modules/next/dist/lib/typescript/runTypeScriptCli.js +256 -0
  436. package/dist/node_modules/next/dist/lib/typescript/writeAppTypeDeclarations.js +2 -0
  437. package/dist/node_modules/next/dist/lib/verify-partytown-setup.js +15 -26
  438. package/dist/node_modules/next/dist/lib/verify-typescript-setup.js +97 -56
  439. package/dist/node_modules/next/dist/server/after/after-context.js +55 -17
  440. package/dist/node_modules/next/dist/server/after/after.js +4 -2
  441. package/dist/node_modules/next/dist/server/api-utils/index.js +20 -4
  442. package/dist/node_modules/next/dist/server/api-utils/node/try-get-preview-data.js +5 -2
  443. package/dist/node_modules/next/dist/server/app-render/action-handler.js +162 -54
  444. package/dist/node_modules/next/dist/server/app-render/app-render-prerender-utils.js +176 -11
  445. package/dist/node_modules/next/dist/server/app-render/app-render.js +3249 -1275
  446. package/dist/node_modules/next/dist/server/app-render/blocking-route-messages.js +181 -0
  447. package/dist/node_modules/next/dist/server/app-render/collect-segment-data.js +531 -210
  448. package/dist/node_modules/next/dist/server/app-render/create-component-styles-and-scripts.js +9 -4
  449. package/dist/node_modules/next/dist/server/app-render/create-component-tree.js +13 -77
  450. package/dist/node_modules/next/dist/server/app-render/create-error-handler.js +19 -18
  451. package/dist/node_modules/next/dist/server/app-render/create-flight-router-state-from-loader-tree.js +78 -26
  452. package/dist/node_modules/next/dist/server/app-render/debug-channel-server.js +26 -9
  453. package/dist/node_modules/next/dist/server/app-render/debug-channel-server.node.js +60 -0
  454. package/dist/node_modules/next/dist/server/app-render/debug-channel-server.web.js +8 -19
  455. package/dist/node_modules/next/dist/server/app-render/dev-validation-error-delivery.js +37 -0
  456. package/dist/node_modules/next/dist/server/app-render/dev-validation-events.js +26 -0
  457. package/dist/node_modules/next/dist/server/app-render/dev-validation-scheduler.js +87 -0
  458. package/dist/node_modules/next/dist/server/app-render/dev-validation-worker-globals.js +41 -0
  459. package/dist/node_modules/next/dist/server/app-render/dev-validation-worker-snapshot.js +79 -0
  460. package/dist/node_modules/next/dist/server/app-render/dynamic-rendering.js +261 -204
  461. package/dist/node_modules/next/dist/server/app-render/encryption.js +11 -9
  462. package/dist/node_modules/next/dist/server/app-render/entry-base.js +25 -16
  463. package/dist/node_modules/next/dist/server/app-render/get-css-inlined-link-tags.js +2 -6
  464. package/dist/node_modules/next/dist/server/app-render/get-layer-assets.js +11 -7
  465. package/dist/node_modules/next/dist/server/app-render/instant-test-bootstrap.js +20 -0
  466. package/dist/node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js +21 -3
  467. package/dist/node_modules/next/dist/server/app-render/instant-validation/boundary-impl.js +25 -1
  468. package/dist/node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js +24 -4
  469. package/dist/node_modules/next/dist/server/app-render/instant-validation/instant-config.js +119 -59
  470. package/dist/node_modules/next/dist/server/app-render/instant-validation/instant-samples.js +10 -10
  471. package/dist/node_modules/next/dist/server/app-render/instant-validation/instant-validation.js +394 -173
  472. package/dist/node_modules/next/dist/server/app-render/make-get-server-inserted-html.js +3 -4
  473. package/dist/node_modules/next/dist/server/app-render/manifests-singleton.js +78 -15
  474. package/dist/node_modules/next/dist/server/app-render/module-loading/instrument-module-getter.js +32 -0
  475. package/dist/node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js +2 -6
  476. package/dist/node_modules/next/dist/server/app-render/postponed-state.js +78 -5
  477. package/dist/node_modules/next/dist/server/app-render/render-css-resource.js +20 -15
  478. package/dist/node_modules/next/dist/server/app-render/staged-rendering.js +182 -201
  479. package/dist/node_modules/next/dist/server/app-render/stale-time.js +0 -10
  480. package/dist/node_modules/next/dist/server/app-render/stream-ops.js +85 -36
  481. package/dist/node_modules/next/dist/server/app-render/stream-ops.node.js +842 -0
  482. package/dist/node_modules/next/dist/server/app-render/stream-ops.web.js +116 -30
  483. package/dist/node_modules/next/dist/server/app-render/sync-io-messages.js +67 -0
  484. package/dist/node_modules/next/dist/server/app-render/use-flight-response.js +11 -8
  485. package/dist/node_modules/next/dist/server/app-render/vary-params.js +113 -188
  486. package/dist/node_modules/next/dist/server/app-render/wait-for-response.js +36 -0
  487. package/dist/node_modules/next/dist/server/app-render/walk-tree-with-flight-router-state.js +11 -6
  488. package/dist/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js +33 -63
  489. package/dist/node_modules/next/dist/server/async-storage/draft-mode-provider.js +2 -2
  490. package/dist/node_modules/next/dist/server/async-storage/request-store.js +84 -27
  491. package/dist/node_modules/next/dist/server/async-storage/work-store.js +7 -1
  492. package/dist/node_modules/next/dist/server/base-server.js +147 -72
  493. package/dist/node_modules/next/dist/server/body-streams.js +9 -1
  494. package/dist/node_modules/next/dist/server/client-component-renderer-logger.js +2 -2
  495. package/dist/node_modules/next/dist/server/config-schema.js +84 -10
  496. package/dist/node_modules/next/dist/server/config-shared.js +46 -20
  497. package/dist/node_modules/next/dist/server/config.js +343 -52
  498. package/dist/node_modules/next/dist/server/dev/browser-logs/file-logger.js +4 -4
  499. package/dist/node_modules/next/dist/server/dev/browser-logs/receive-logs.js +152 -100
  500. package/dist/node_modules/next/dist/server/dev/debug-channel.js +48 -23
  501. package/dist/node_modules/next/dist/server/dev/dev-validation-worker-pool.js +232 -0
  502. package/dist/node_modules/next/dist/server/dev/dev-validation-worker.js +308 -0
  503. package/dist/node_modules/next/dist/server/dev/hot-middleware.js +3 -1
  504. package/dist/node_modules/next/dist/server/dev/hot-reloader-rspack.js +1 -1
  505. package/dist/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +420 -144
  506. package/dist/node_modules/next/dist/server/dev/hot-reloader-types.js +2 -0
  507. package/dist/node_modules/next/dist/server/dev/hot-reloader-webpack.js +17 -23
  508. package/dist/node_modules/next/dist/server/dev/log-requests.js +3 -0
  509. package/dist/node_modules/next/dist/server/dev/middleware-turbopack.js +26 -7
  510. package/dist/node_modules/next/dist/server/dev/middleware-webpack.js +20 -8
  511. package/dist/node_modules/next/dist/server/dev/node-stack-frames.js +9 -0
  512. package/dist/node_modules/next/dist/server/dev/require-cache.js +33 -3
  513. package/dist/node_modules/next/dist/server/dev/serialized-errors.js +1 -1
  514. package/dist/node_modules/next/dist/server/dev/static-paths-worker.js +4 -3
  515. package/dist/node_modules/next/dist/server/dev/turbopack-utils.js +52 -12
  516. package/dist/node_modules/next/dist/server/dev/use-cache-probe-pool.js +177 -0
  517. package/dist/node_modules/next/dist/server/dev/use-cache-probe-worker.js +180 -0
  518. package/dist/node_modules/next/dist/server/dynamic-rendering-utils.js +200 -23
  519. package/dist/node_modules/next/dist/server/get-page-files.js +20 -3
  520. package/dist/node_modules/next/dist/server/image-optimizer.js +47 -39
  521. package/dist/node_modules/next/dist/server/lib/app-info-log.js +19 -16
  522. package/dist/node_modules/next/dist/server/lib/cache-handlers/default.js +41 -5
  523. package/dist/node_modules/next/dist/server/lib/cpu-profile.js +2 -5
  524. package/dist/node_modules/next/dist/server/lib/dev-bundler-service.js +17 -2
  525. package/dist/node_modules/next/dist/server/lib/encode-header-safe.js +44 -0
  526. package/dist/node_modules/next/dist/server/lib/generate-agent-files.js +180 -0
  527. package/dist/node_modules/next/dist/server/lib/implicit-tags.js +16 -6
  528. package/dist/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +17 -4
  529. package/dist/node_modules/next/dist/server/lib/incremental-cache/index.js +120 -74
  530. package/dist/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +13 -11
  531. package/dist/node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js +1 -1
  532. package/dist/node_modules/next/dist/server/lib/is-non-html-sec-fetch-dest.js +38 -0
  533. package/dist/node_modules/next/dist/server/lib/lazy-module.js +80 -0
  534. package/dist/node_modules/next/dist/server/lib/lru-cache.js +1 -1
  535. package/dist/node_modules/next/dist/server/lib/mock-request.js +1 -1
  536. package/dist/node_modules/next/dist/server/lib/params-utils.js +70 -0
  537. package/dist/node_modules/next/dist/server/lib/patch-fetch.js +66 -17
  538. package/dist/node_modules/next/dist/server/lib/release-compression-stream.js +24 -0
  539. package/dist/node_modules/next/dist/server/lib/render-server.js +3 -1
  540. package/dist/node_modules/next/dist/server/lib/router-server.js +70 -13
  541. package/dist/node_modules/next/dist/server/lib/router-utils/block-cross-site-dev.js +2 -2
  542. package/dist/node_modules/next/dist/server/lib/router-utils/cache-life-type-utils.js +1 -0
  543. package/dist/node_modules/next/dist/server/lib/router-utils/filesystem.js +31 -10
  544. package/dist/node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js +54 -36
  545. package/dist/node_modules/next/dist/server/lib/router-utils/proxy-request.js +19 -9
  546. package/dist/node_modules/next/dist/server/lib/router-utils/resolve-routes.js +5 -2
  547. package/dist/node_modules/next/dist/server/lib/router-utils/root-params-type-utils.js +61 -0
  548. package/dist/node_modules/next/dist/server/lib/router-utils/route-types-utils.js +40 -0
  549. package/dist/node_modules/next/dist/server/lib/router-utils/typegen.js +55 -21
  550. package/dist/node_modules/next/dist/server/lib/source-maps.js +54 -9
  551. package/dist/node_modules/next/dist/server/lib/start-server.js +69 -23
  552. package/dist/node_modules/next/dist/server/lib/streaming-metadata.js +11 -22
  553. package/dist/node_modules/next/dist/server/lib/trace/constants.js +5 -0
  554. package/dist/node_modules/next/dist/server/lib/trace/local-span-recorder.js +385 -0
  555. package/dist/node_modules/next/dist/server/lib/trace/request-insights-identity.js +39 -0
  556. package/dist/node_modules/next/dist/server/lib/trace/request-insights.js +308 -0
  557. package/dist/node_modules/next/dist/server/lib/trace/span-store.js +69 -0
  558. package/dist/node_modules/next/dist/server/lib/trace/tracer.js +123 -11
  559. package/dist/node_modules/next/dist/server/lib/utils.js +14 -0
  560. package/dist/node_modules/next/dist/server/load-components.js +8 -2
  561. package/dist/node_modules/next/dist/server/mcp/get-or-create-mcp-server.js +10 -0
  562. package/dist/node_modules/next/dist/server/mcp/tools/compile-route.js +86 -0
  563. package/dist/node_modules/next/dist/server/mcp/tools/get-compilation-issues.js +68 -0
  564. package/dist/node_modules/next/dist/server/mcp/tools/get-request-insights.js +57 -0
  565. package/dist/node_modules/next/dist/server/mcp/tools/utils/format-compilation-issues.js +72 -0
  566. package/dist/node_modules/next/dist/server/mcp/tools/utils/resolve-path-to-route.js +49 -0
  567. package/dist/node_modules/next/dist/server/next-server.js +30 -16
  568. package/dist/node_modules/next/dist/server/next.js +42 -12
  569. package/dist/node_modules/next/dist/server/node-environment-extensions/io-utils.js +31 -124
  570. package/dist/node_modules/next/dist/server/node-environment-extensions/process-error-handlers.js +156 -77
  571. package/dist/node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js +12 -2
  572. package/dist/node_modules/next/dist/server/og/cache-image-response.js +341 -0
  573. package/dist/node_modules/next/dist/server/og/image-response.js +22 -3
  574. package/dist/node_modules/next/dist/server/patch-error-inspect.js +70 -16
  575. package/dist/node_modules/next/dist/server/pipe-readable.js +73 -1
  576. package/dist/node_modules/next/dist/server/render-result.js +42 -0
  577. package/dist/node_modules/next/dist/server/render.js +3 -1
  578. package/dist/node_modules/next/dist/server/request/connection.js +6 -4
  579. package/dist/node_modules/next/dist/server/request/cookies.js +18 -14
  580. package/dist/node_modules/next/dist/server/request/draft-mode.js +11 -3
  581. package/dist/node_modules/next/dist/server/request/fallback-params.js +1 -1
  582. package/dist/node_modules/next/dist/server/request/headers.js +16 -10
  583. package/dist/node_modules/next/dist/server/request/io.js +96 -0
  584. package/dist/node_modules/next/dist/server/request/params.js +191 -84
  585. package/dist/node_modules/next/dist/server/request/pathname.js +24 -2
  586. package/dist/node_modules/next/dist/server/request/root-params.js +9 -1
  587. package/dist/node_modules/next/dist/server/request/search-params.js +126 -70
  588. package/dist/node_modules/next/dist/server/request/utils.js +39 -6
  589. package/dist/node_modules/next/dist/server/response-cache/index.js +36 -24
  590. package/dist/node_modules/next/dist/server/resume-data-cache/cache-store.js +7 -2
  591. package/dist/node_modules/next/dist/server/resume-data-cache/resume-data-cache.js +25 -7
  592. package/dist/node_modules/next/dist/server/revalidation-utils.js +1 -2
  593. package/dist/node_modules/next/dist/server/route-modules/app-page/module.js +15 -1
  594. package/dist/node_modules/next/dist/server/route-modules/app-page/normalize-request-url.js +40 -3
  595. package/dist/node_modules/next/dist/server/route-modules/app-route/module.js +79 -46
  596. package/dist/node_modules/next/dist/server/route-modules/pages/pages-handler.js +270 -248
  597. package/dist/node_modules/next/dist/server/route-modules/route-module.js +45 -8
  598. package/dist/node_modules/next/dist/server/stream-utils/node-buffered-transform-stream.js +51 -0
  599. package/dist/node_modules/next/dist/server/stream-utils/node-web-streams-helper.js +90 -69
  600. package/dist/node_modules/next/dist/server/typescript/index.js +3 -3
  601. package/dist/node_modules/next/dist/server/typescript/rules/client-boundary.js +7 -4
  602. package/dist/node_modules/next/dist/server/typescript/rules/config.js +50 -28
  603. package/dist/node_modules/next/dist/server/use-cache/cache-life-profile.js +84 -0
  604. package/dist/node_modules/next/dist/server/use-cache/cache-life.js +4 -65
  605. package/dist/node_modules/next/dist/server/use-cache/clone-cache-entry.js +28 -0
  606. package/dist/node_modules/next/dist/server/use-cache/constants.js +24 -8
  607. package/dist/node_modules/next/dist/server/use-cache/handlers.js +166 -13
  608. package/dist/node_modules/next/dist/server/use-cache/tiered-cache-handler.js +145 -0
  609. package/dist/node_modules/next/dist/server/use-cache/use-cache-errors.js +34 -11
  610. package/dist/node_modules/next/dist/server/use-cache/use-cache-probe-globals.js +39 -0
  611. package/dist/node_modules/next/dist/server/use-cache/use-cache-probe-scheduler.js +117 -0
  612. package/dist/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1475 -458
  613. package/dist/node_modules/next/dist/server/web/adapter.js +37 -4
  614. package/dist/node_modules/next/dist/server/web/edge-route-module-wrapper.js +14 -2
  615. package/dist/node_modules/next/dist/server/web/error.js +15 -0
  616. package/dist/node_modules/next/dist/server/web/sandbox/context.js +8 -2
  617. package/dist/node_modules/next/dist/server/web/sandbox/resource-managers.js +45 -10
  618. package/dist/node_modules/next/dist/server/web/spec-extension/adapters/headers.js +103 -2
  619. package/dist/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js +15 -0
  620. package/dist/node_modules/next/dist/server/web/spec-extension/revalidate.js +18 -6
  621. package/dist/node_modules/next/dist/server/web/spec-extension/unstable-cache.js +35 -17
  622. package/dist/node_modules/next/dist/server/web/spec-extension/url-pattern.js +1 -2
  623. package/dist/node_modules/next/dist/shared/lib/app-router-types.js +125 -12
  624. package/dist/node_modules/next/dist/shared/lib/constants.js +5 -0
  625. package/dist/node_modules/next/dist/shared/lib/deployment-id.js +1 -1
  626. package/dist/node_modules/next/dist/shared/lib/errors/empty-generate-static-params-error.js +14 -7
  627. package/dist/node_modules/next/dist/shared/lib/errors/hard-deprecated-config-error.js +5 -0
  628. package/dist/node_modules/next/dist/shared/lib/head.js +5 -4
  629. package/dist/node_modules/next/dist/shared/lib/instant-messages.js +43 -0
  630. package/dist/node_modules/next/dist/shared/lib/invariant-error.js +5 -0
  631. package/dist/node_modules/next/dist/shared/lib/request-insights.js +30 -0
  632. package/dist/node_modules/next/dist/shared/lib/router/adapters.js +4 -1
  633. package/dist/node_modules/next/dist/shared/lib/router/routes/app.js +36 -12
  634. package/dist/node_modules/next/dist/shared/lib/router/utils/escape-path-delimiters.js +1 -1
  635. package/dist/node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js +1 -1
  636. package/dist/node_modules/next/dist/shared/lib/router/utils/prepare-destination.js +2 -1
  637. package/dist/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js +5 -4
  638. package/dist/node_modules/next/dist/shared/lib/router/utils/sorted-routes.js +1 -1
  639. package/dist/node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js +46 -12
  640. package/dist/node_modules/next/dist/shared/lib/server-reference-info.js +12 -0
  641. package/dist/node_modules/next/dist/shared/lib/utils.js +10 -1
  642. package/dist/node_modules/next/dist/telemetry/agent-name.js +20 -0
  643. package/dist/node_modules/next/dist/telemetry/anonymous-meta.js +4 -2
  644. package/dist/node_modules/next/dist/telemetry/events/build.js +13 -0
  645. package/dist/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  646. package/dist/node_modules/next/dist/telemetry/events/version.js +6 -4
  647. package/dist/node_modules/next/dist/telemetry/storage.js +6 -2
  648. package/dist/node_modules/next/dist/trace/report/to-json.js +7 -1
  649. package/dist/node_modules/next/package.json +16 -255
  650. package/dist/node_modules/semver/package.json +38 -0
  651. package/dist/node_modules/sharp/{lib/channel.js → dist/channel.cjs} +1 -1
  652. package/dist/node_modules/sharp/dist/channel.mjs +177 -0
  653. package/dist/node_modules/sharp/{lib/colour.js → dist/colour.cjs} +11 -7
  654. package/dist/node_modules/sharp/dist/colour.mjs +199 -0
  655. package/dist/node_modules/sharp/{lib/composite.js → dist/composite.cjs} +2 -1
  656. package/dist/node_modules/sharp/dist/composite.mjs +213 -0
  657. package/dist/node_modules/sharp/{lib/constructor.js → dist/constructor.cjs} +41 -29
  658. package/dist/node_modules/sharp/dist/constructor.mjs +511 -0
  659. package/dist/node_modules/sharp/dist/index.cjs +25 -0
  660. package/dist/node_modules/sharp/dist/index.d.cts +1999 -0
  661. package/dist/node_modules/sharp/dist/index.d.mts +2046 -0
  662. package/dist/node_modules/sharp/dist/index.mjs +25 -0
  663. package/dist/node_modules/sharp/{lib/input.js → dist/input.cjs} +27 -22
  664. package/dist/node_modules/sharp/dist/input.mjs +814 -0
  665. package/dist/node_modules/sharp/{lib/is.js → dist/is.cjs} +1 -1
  666. package/dist/node_modules/sharp/dist/is.mjs +143 -0
  667. package/dist/node_modules/sharp/{lib/libvips.js → dist/libvips.cjs} +35 -30
  668. package/dist/node_modules/sharp/dist/libvips.mjs +212 -0
  669. package/dist/node_modules/sharp/{lib/operation.js → dist/operation.cjs} +33 -51
  670. package/dist/node_modules/sharp/dist/operation.mjs +998 -0
  671. package/dist/node_modules/sharp/{lib/output.js → dist/output.cjs} +162 -40
  672. package/dist/node_modules/sharp/dist/output.mjs +1788 -0
  673. package/dist/node_modules/sharp/{lib/resize.js → dist/resize.cjs} +46 -24
  674. package/dist/node_modules/sharp/dist/resize.mjs +617 -0
  675. package/dist/node_modules/sharp/dist/sharp.cjs +174 -0
  676. package/dist/node_modules/sharp/dist/sharp.mjs +174 -0
  677. package/dist/node_modules/sharp/{lib/utility.js → dist/utility.cjs} +18 -8
  678. package/dist/node_modules/sharp/dist/utility.mjs +301 -0
  679. package/dist/node_modules/sharp/node_modules/semver/classes/range.js +17 -4
  680. package/dist/node_modules/sharp/node_modules/semver/classes/semver.js +19 -2
  681. package/dist/node_modules/sharp/node_modules/semver/functions/clean.js +8 -0
  682. package/dist/node_modules/sharp/node_modules/semver/functions/compare-build.js +9 -0
  683. package/dist/node_modules/sharp/node_modules/semver/functions/compare-loose.js +5 -0
  684. package/dist/node_modules/sharp/node_modules/semver/functions/diff.js +60 -0
  685. package/dist/node_modules/sharp/node_modules/semver/functions/inc.js +21 -0
  686. package/dist/node_modules/sharp/node_modules/semver/functions/major.js +5 -0
  687. package/dist/node_modules/sharp/node_modules/semver/functions/minor.js +5 -0
  688. package/dist/node_modules/sharp/node_modules/semver/functions/patch.js +5 -0
  689. package/dist/node_modules/sharp/node_modules/semver/functions/prerelease.js +8 -0
  690. package/dist/node_modules/sharp/node_modules/semver/functions/rcompare.js +5 -0
  691. package/dist/node_modules/sharp/node_modules/semver/functions/rsort.js +5 -0
  692. package/dist/node_modules/sharp/node_modules/semver/functions/sort.js +5 -0
  693. package/dist/node_modules/sharp/node_modules/semver/functions/truncate.js +48 -0
  694. package/dist/node_modules/sharp/node_modules/semver/functions/valid.js +8 -0
  695. package/dist/node_modules/sharp/node_modules/semver/index.js +93 -0
  696. package/dist/node_modules/sharp/node_modules/semver/package.json +2 -2
  697. package/dist/node_modules/sharp/node_modules/semver/ranges/gtr.js +6 -0
  698. package/dist/node_modules/sharp/node_modules/semver/ranges/intersects.js +9 -0
  699. package/dist/node_modules/sharp/node_modules/semver/ranges/ltr.js +6 -0
  700. package/dist/node_modules/sharp/node_modules/semver/ranges/max-satisfying.js +27 -0
  701. package/dist/node_modules/sharp/node_modules/semver/ranges/min-satisfying.js +26 -0
  702. package/dist/node_modules/sharp/node_modules/semver/ranges/min-version.js +63 -0
  703. package/dist/node_modules/sharp/node_modules/semver/ranges/outside.js +82 -0
  704. package/dist/node_modules/sharp/node_modules/semver/ranges/simplify.js +49 -0
  705. package/dist/node_modules/sharp/node_modules/semver/ranges/subset.js +249 -0
  706. package/dist/node_modules/sharp/node_modules/semver/ranges/to-comparators.js +10 -0
  707. package/dist/node_modules/sharp/node_modules/semver/ranges/valid.js +13 -0
  708. package/dist/node_modules/sharp/package.json +77 -52
  709. package/dist/package.json +2 -2
  710. package/dist/server.js +1 -1
  711. package/package.json +2 -2
  712. package/dist/.next/server/app/_global-error.segments/_head.segment.rsc +0 -5
  713. package/dist/.next/server/app/_global-error.segments/_index.segment.rsc +0 -5
  714. package/dist/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
  715. package/dist/.next/server/app/_not-found.segments/_index.segment.rsc +0 -8
  716. package/dist/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
  717. package/dist/.next/server/app/index.segments/_head.segment.rsc +0 -6
  718. package/dist/.next/server/app/index.segments/_index.segment.rsc +0 -8
  719. package/dist/.next/server/chunks/[externals]_next_dist_0arv.vj._.js +0 -3
  720. package/dist/.next/server/chunks/[root-of-the-server]__04y5ms7._.js +0 -6
  721. package/dist/.next/server/chunks/[root-of-the-server]__05vp2x.._.js +0 -3
  722. package/dist/.next/server/chunks/[root-of-the-server]__08kko28._.js +0 -3
  723. package/dist/.next/server/chunks/[root-of-the-server]__0bpxd~j._.js +0 -3
  724. package/dist/.next/server/chunks/[root-of-the-server]__0cnmh23._.js +0 -3
  725. package/dist/.next/server/chunks/[root-of-the-server]__0j8-xkl._.js +0 -13
  726. package/dist/.next/server/chunks/[root-of-the-server]__0nngqla._.js +0 -6
  727. package/dist/.next/server/chunks/[root-of-the-server]__0o.c5k_._.js +0 -3
  728. package/dist/.next/server/chunks/[root-of-the-server]__0pz~0wz._.js +0 -6
  729. package/dist/.next/server/chunks/[root-of-the-server]__0s6.s21._.js +0 -6
  730. package/dist/.next/server/chunks/[root-of-the-server]__0vunt~c._.js +0 -3
  731. package/dist/.next/server/chunks/[root-of-the-server]__0xoct7b._.js +0 -3
  732. package/dist/.next/server/chunks/[root-of-the-server]__0yvyeh4._.js +0 -3
  733. package/dist/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0dh.2jf.js +0 -3
  734. package/dist/.next/server/chunks/node_modules_next_dist_esm_build_templates_app-route_0qs61ly.js +0 -3
  735. package/dist/.next/server/chunks/ssr/[root-of-the-server]__01cqrhy._.js +0 -33
  736. package/dist/.next/server/chunks/ssr/[root-of-the-server]__098zro9._.js +0 -19
  737. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0cylknl._.js +0 -12
  738. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0e_kl3j._.js +0 -3
  739. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0e~coys._.js +0 -3
  740. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0lb9jwe._.js +0 -3
  741. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0tcyn68._.js +0 -33
  742. package/dist/.next/server/chunks/ssr/[root-of-the-server]__0zi~h76._.js +0 -3
  743. package/dist/.next/server/chunks/ssr/[root-of-the-server]__1130a6w._.js +0 -3
  744. package/dist/.next/server/chunks/ssr/[root-of-the-server]__12~42ln._.js +0 -3
  745. package/dist/.next/server/chunks/ssr/_03eop86._.js +0 -4
  746. package/dist/.next/server/chunks/ssr/_next-internal_server_app_page_actions_09-gtaw.js +0 -3
  747. package/dist/.next/server/chunks/ssr/node_modules_0-9jf7s._.js +0 -3
  748. package/dist/.next/server/chunks/ssr/node_modules_0.l_o9k._.js +0 -26
  749. package/dist/.next/server/chunks/ssr/node_modules_00-o__w._.js +0 -45
  750. package/dist/.next/server/chunks/ssr/node_modules_00yk8df._.js +0 -3
  751. package/dist/.next/server/chunks/ssr/node_modules_01rqq7y._.js +0 -3
  752. package/dist/.next/server/chunks/ssr/node_modules_050o3~0._.js +0 -3
  753. package/dist/.next/server/chunks/ssr/node_modules_09x0yif._.js +0 -3
  754. package/dist/.next/server/chunks/ssr/node_modules_0_ce7g1._.js +0 -3
  755. package/dist/.next/server/chunks/ssr/node_modules_0a61e8g._.js +0 -3
  756. package/dist/.next/server/chunks/ssr/node_modules_0a9st_6._.js +0 -3
  757. package/dist/.next/server/chunks/ssr/node_modules_0cdeu-p._.js +0 -6
  758. package/dist/.next/server/chunks/ssr/node_modules_0d91z34._.js +0 -11
  759. package/dist/.next/server/chunks/ssr/node_modules_0exnvlg._.js +0 -17
  760. package/dist/.next/server/chunks/ssr/node_modules_0h3oz6o._.js +0 -3
  761. package/dist/.next/server/chunks/ssr/node_modules_0kf5axs._.js +0 -3
  762. package/dist/.next/server/chunks/ssr/node_modules_0k~wgzn._.js +0 -3
  763. package/dist/.next/server/chunks/ssr/node_modules_0l-2che._.js +0 -3
  764. package/dist/.next/server/chunks/ssr/node_modules_0m8d9.a._.js +0 -3
  765. package/dist/.next/server/chunks/ssr/node_modules_0p1ro75._.js +0 -3
  766. package/dist/.next/server/chunks/ssr/node_modules_0q8gl61._.js +0 -3
  767. package/dist/.next/server/chunks/ssr/node_modules_0s8hn7e._.js +0 -3
  768. package/dist/.next/server/chunks/ssr/node_modules_0skn4ke._.js +0 -3
  769. package/dist/.next/server/chunks/ssr/node_modules_0u1jua0._.js +0 -17
  770. package/dist/.next/server/chunks/ssr/node_modules_0ujy5r7._.js +0 -3
  771. package/dist/.next/server/chunks/ssr/node_modules_0xl3swb._.js +0 -17
  772. package/dist/.next/server/chunks/ssr/node_modules_0yx-7n5._.js +0 -31
  773. package/dist/.next/server/chunks/ssr/node_modules_11r29oo._.js +0 -3
  774. package/dist/.next/server/chunks/ssr/node_modules_12uy2-t._.js +0 -3
  775. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_00zox90._.js +0 -3
  776. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_048nvza._.js +0 -3
  777. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0bqbkzr._.js +0 -3
  778. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0iy4ann._.js +0 -3
  779. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0n~wpy6._.js +0 -3
  780. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0rp8krb._.js +0 -3
  781. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0se--ys._.js +0 -3
  782. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_0v554rd._.js +0 -3
  783. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_12i5eeu._.js +0 -3
  784. package/dist/.next/server/chunks/ssr/node_modules_@mermaid-js_parser_dist_chunks_mermaid-parser_core_13s5vbm._.js +0 -3
  785. package/dist/.next/server/chunks/ssr/node_modules_dagre-d3-es_src_dagre_index_097t5l0.js +0 -3
  786. package/dist/.next/server/chunks/ssr/node_modules_next_dist_0xdsm99._.js +0 -6
  787. package/dist/.next/server/chunks/ssr/node_modules_next_dist_client_components_0inhx6q._.js +0 -3
  788. package/dist/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0lgvd_..js +0 -3
  789. package/dist/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00t_ate.js +0 -4
  790. package/dist/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_031v14j.js +0 -4
  791. package/dist/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0rc3ul_.js +0 -4
  792. package/dist/.next/static/chunks/0-.wbb-l7eg0y.js +0 -1
  793. package/dist/.next/static/chunks/0-6znc4v4kg4~.js +0 -1
  794. package/dist/.next/static/chunks/038jxymv2x4u-.js +0 -148
  795. package/dist/.next/static/chunks/08nzg~fbi7p-7.js +0 -1
  796. package/dist/.next/static/chunks/0aqpm5mabssqz.js +0 -1
  797. package/dist/.next/static/chunks/0dcu67gngfgpb.js +0 -4
  798. package/dist/.next/static/chunks/0do2sl_ugmstg.js +0 -10
  799. package/dist/.next/static/chunks/0ge0mq0ea60lx.js +0 -1
  800. package/dist/.next/static/chunks/0h-pxsp01miga.js +0 -1
  801. package/dist/.next/static/chunks/0i8pgzf~hu-3m.js +0 -24
  802. package/dist/.next/static/chunks/0icpvuwlmnlty.js +0 -43
  803. package/dist/.next/static/chunks/0ipk1er3w80bj.js +0 -24
  804. package/dist/.next/static/chunks/0lfej4svc~ist.js +0 -1
  805. package/dist/.next/static/chunks/0lmzx880lnpb..js +0 -1
  806. package/dist/.next/static/chunks/0luwdx.2p-x9e.js +0 -31
  807. package/dist/.next/static/chunks/0npm9l63~4j0v.js +0 -1
  808. package/dist/.next/static/chunks/0r~zu0c3j_b7p.js +0 -1
  809. package/dist/.next/static/chunks/0w57stq9f_irn.js +0 -10
  810. package/dist/.next/static/chunks/0~b.d.ay4u9zg.js +0 -2
  811. package/dist/.next/static/chunks/112qdnf547wz8.js +0 -1
  812. package/dist/.next/static/chunks/11uh-ttx4zin-.js +0 -9
  813. package/dist/.next/static/chunks/14i46k409qlt0.js +0 -1
  814. package/dist/.next/static/chunks/14j238ax8coge.js +0 -29
  815. package/dist/.next/static/chunks/14u7twut.vmn5.js +0 -1
  816. package/dist/.next/static/chunks/16k05wezoz4u0.js +0 -1
  817. package/dist/.next/static/chunks/turbopack-12mx7z-ex6m1h.js +0 -1
  818. package/dist/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  819. package/dist/node_modules/next/dist/client/components/unstable-rethrow.browser.js +0 -28
  820. package/dist/node_modules/next/dist/client/components/unstable-rethrow.server.js +0 -32
  821. package/dist/node_modules/next/dist/compiled/http-proxy/index.js +0 -34
  822. package/dist/node_modules/next/dist/compiled/http-proxy/package.json +0 -1
  823. package/dist/node_modules/next/dist/lib/fatal-error.js +0 -14
  824. package/dist/node_modules/next/dist/shared/lib/errors/canary-only-config-error.js +0 -39
  825. package/dist/node_modules/sharp/lib/index.js +0 -16
  826. package/dist/node_modules/sharp/lib/sharp.js +0 -121
  827. /package/dist/.next/static/{KtUBUvcK3Gu2PuRf9GGiJ → OdIi-OEl7eDEMfmeeT85N}/_buildManifest.js +0 -0
  828. /package/dist/.next/static/{KtUBUvcK3Gu2PuRf9GGiJ → OdIi-OEl7eDEMfmeeT85N}/_clientMiddlewareManifest.js +0 -0
  829. /package/dist/.next/static/{KtUBUvcK3Gu2PuRf9GGiJ → OdIi-OEl7eDEMfmeeT85N}/_ssgManifest.js +0 -0
  830. /package/dist/.next/static/chunks/{01ontipw7_pn-.js → 059oqdb-4djh4.js} +0 -0
  831. /package/dist/.next/static/chunks/{03lth2le32c6r.js → 0bk3aw3m9c72a.js} +0 -0
  832. /package/dist/.next/static/chunks/{03l_lqxocp3uj.js → 0bko6sy3fi25l.js} +0 -0
  833. /package/dist/.next/static/chunks/{03v0v690_bw8u.js → 0catqiaei7kwh.js} +0 -0
  834. /package/dist/.next/static/chunks/{03yru4-m-450t.js → 0cm59yzmvnr6a.js} +0 -0
  835. /package/dist/.next/static/chunks/{03~yq9q893hmn.js → 0cz1d0mv5g_q7.js} +0 -0
  836. /package/dist/.next/static/chunks/{06o.rsm2b~dht.js → 0ll25xvc8tvc7.js} +0 -0
  837. /package/dist/.next/static/chunks/{08o5wsrurx9ux.js → 0r-qze3me8owo.js} +0 -0
  838. /package/dist/.next/static/chunks/{09~n7y-jkmjlj.js → 0wf_g68m1dyuq.js} +0 -0
  839. /package/dist/.next/static/chunks/{0awsj.h.eiuen.js → 0z7hf76h0cz39.js} +0 -0
  840. /package/dist/.next/static/chunks/{0axtn1ln1j35_.js → 0zao0i_njogzy.js} +0 -0
  841. /package/dist/.next/static/chunks/{0c5xj4q0jmdu0.js → 11jp13p4e7ycl.js} +0 -0
  842. /package/dist/.next/static/chunks/{0cu8k_dz43e4y.js → 13j02-7zvh70e.js} +0 -0
  843. /package/dist/.next/static/chunks/{0e4xdug~7dxzk.js → 17zvg7jc-nx5v.js} +0 -0
  844. /package/dist/.next/static/chunks/{0f8bbcvfh6x_j.js → 1bi4m489puezc.js} +0 -0
  845. /package/dist/.next/static/chunks/{0gq18q-ip0uh2.js → 1g6nbgmclpjgd.js} +0 -0
  846. /package/dist/.next/static/chunks/{0k9_1v72yx36d.js → 1rxbddx-dyypf.js} +0 -0
  847. /package/dist/.next/static/chunks/{0l3uvjh3oslhq.js → 1un-c368y76x-.js} +0 -0
  848. /package/dist/.next/static/chunks/{0lypu-.xpph9..js → 1x5foe7mtvd8m.js} +0 -0
  849. /package/dist/.next/static/chunks/{0ortphe030oky.js → 24c-6p_4lbozm.js} +0 -0
  850. /package/dist/.next/static/chunks/{0oufb2b491l23.js → 24l5e3uup8rxf.js} +0 -0
  851. /package/dist/.next/static/chunks/{0ps77yd96walr.js → 27n_wru0tprv5.js} +0 -0
  852. /package/dist/.next/static/chunks/{0qfu4h5g.k-yt.js → 29x7ecuc6vybp.js} +0 -0
  853. /package/dist/.next/static/chunks/{0rmt10l3458p_.js → 2dqeid-8xhwun.js} +0 -0
  854. /package/dist/.next/static/chunks/{0s0v8xobo-2ok.js → 2f6739bq5ewxz.js} +0 -0
  855. /package/dist/.next/static/chunks/{0s8nwq43gep9_.js → 2fuc_smcevit1.js} +0 -0
  856. /package/dist/.next/static/chunks/{0spswjguxbqfn.js → 2h7acwi-mfsrx.js} +0 -0
  857. /package/dist/.next/static/chunks/{0xxouzzjw_a6q.js → 2y3wq_x8yyu_b.js} +0 -0
  858. /package/dist/.next/static/chunks/{0ydl92ezt_ppz.js → 2zrfdnujo3u51.js} +0 -0
  859. /package/dist/.next/static/chunks/{16pzrphqjtyli.js → 3-t8rqn47mim5.js} +0 -0
  860. /package/dist/.next/static/chunks/{0~.e-m04zn5l_.js → 3cvv663zekq_n.js} +0 -0
  861. /package/dist/.next/static/chunks/{11luuvvu~stmv.js → 3l6bwn061vy22.js} +0 -0
  862. /package/dist/.next/static/chunks/{11_7qxlc92f5s.js → 3mcxvhb8ujk39.js} +0 -0
  863. /package/dist/.next/static/chunks/{13mjf5q.pema_.js → 3rru41488bc4e.js} +0 -0
  864. /package/dist/.next/static/chunks/{159151ghv9-cc.js → 3x5hww03ialmf.js} +0 -0
  865. /package/dist/.next/static/chunks/{15r_pfbdb2jhp.js → 3ypwau9uw-qzz.js} +0 -0
  866. /package/dist/.next/static/chunks/{182b_f_n0-cdr.js → 44dlrjamdw9zn.js} +0 -0
  867. /package/dist/.next/static/media/{1bffadaabf893a1e-s.16ipb6fqu393i.woff2 → 1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2} +0 -0
  868. /package/dist/.next/static/media/{2bbe8d2671613f1f-s.067x_6k0k23tk.woff2 → 2bbe8d2671613f1f-s.0k62hbripvv8p.woff2} +0 -0
  869. /package/dist/.next/static/media/{2c55a0e60120577a-s.0bjc5tiuqdqro.woff2 → 2c55a0e60120577a-s.0-dom-5bn10r2.woff2} +0 -0
  870. /package/dist/.next/static/media/{5476f68d60460930-s.0wxq9webf.ew4.woff2 → 5476f68d60460930-s.2uwcyprjm3xu3.woff2} +0 -0
  871. /package/dist/.next/static/media/{83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2 → 83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2} +0 -0
  872. /package/dist/.next/static/media/{9c72aa0f40e4eef8-s.0m6w47a4e5dy9.woff2 → 9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2} +0 -0
  873. /package/dist/.next/static/media/{KaTeX_AMS-Regular.0b~8ki5y928w2.woff → KaTeX_AMS-Regular.10y3kupq4t663.woff} +0 -0
  874. /package/dist/.next/static/media/{KaTeX_AMS-Regular.0p1vbqd84i2~o.woff2 → KaTeX_AMS-Regular.25ieegmnh38ts.woff2} +0 -0
  875. /package/dist/.next/static/media/{KaTeX_AMS-Regular.173t6ktr7uf-w.ttf → KaTeX_AMS-Regular.418dr7cz3fo2x.ttf} +0 -0
  876. /package/dist/.next/static/media/{KaTeX_Caligraphic-Bold.01-pzluls4zgb.woff2 → KaTeX_Caligraphic-Bold.06b-ya9t43ioz.woff2} +0 -0
  877. /package/dist/.next/static/media/{KaTeX_Caligraphic-Bold.0x2v1lwn~880f.woff → KaTeX_Caligraphic-Bold.2vmk2hva4ctha.woff} +0 -0
  878. /package/dist/.next/static/media/{KaTeX_Caligraphic-Bold.16zv5fax0h0ka.ttf → KaTeX_Caligraphic-Bold.40ltxhe834pns.ttf} +0 -0
  879. /package/dist/.next/static/media/{KaTeX_Caligraphic-Regular.02i3z7wig438t.ttf → KaTeX_Caligraphic-Regular.07-7u27-nhn_r.ttf} +0 -0
  880. /package/dist/.next/static/media/{KaTeX_Caligraphic-Regular.0rysu1t-ncjq8.woff2 → KaTeX_Caligraphic-Regular.2eph4dlhid_m9.woff2} +0 -0
  881. /package/dist/.next/static/media/{KaTeX_Caligraphic-Regular.10927swgekwun.woff → KaTeX_Caligraphic-Regular.3gxeetazf831f.woff} +0 -0
  882. /package/dist/.next/static/media/{KaTeX_Fraktur-Bold.0et27v~3~4uhe.ttf → KaTeX_Fraktur-Bold.19yqa_tc9d_gx.ttf} +0 -0
  883. /package/dist/.next/static/media/{KaTeX_Fraktur-Bold.0e-16u10iuyyf.woff → KaTeX_Fraktur-Bold.1alcy76__wdj2.woff} +0 -0
  884. /package/dist/.next/static/media/{KaTeX_Fraktur-Bold.0w23i72~hprpq.woff2 → KaTeX_Fraktur-Bold.2sasz-d-jtw8y.woff2} +0 -0
  885. /package/dist/.next/static/media/{KaTeX_Fraktur-Regular.0b.riegzdfue2.woff → KaTeX_Fraktur-Regular.110oo81prr9n5.woff} +0 -0
  886. /package/dist/.next/static/media/{KaTeX_Fraktur-Regular.0rekyoa-52fj_.woff2 → KaTeX_Fraktur-Regular.2d10y4xmjvzlf.woff2} +0 -0
  887. /package/dist/.next/static/media/{KaTeX_Fraktur-Regular.0vjwa15znhk~4.ttf → KaTeX_Fraktur-Regular.2qhy34r6a05dn.ttf} +0 -0
  888. /package/dist/.next/static/media/{KaTeX_Main-Bold.09i7~607shf-h.ttf → KaTeX_Main-Bold.0us_n0tnxlxu7.ttf} +0 -0
  889. /package/dist/.next/static/media/{KaTeX_Main-Bold.09lmynrorhcbw.woff → KaTeX_Main-Bold.0v1esh257kqpe.woff} +0 -0
  890. /package/dist/.next/static/media/{KaTeX_Main-Bold.16pfc63_du6mx.woff2 → KaTeX_Main-Bold.3-rowy8o6_4ky.woff2} +0 -0
  891. /package/dist/.next/static/media/{KaTeX_Main-BoldItalic.0cp37g7x1q8h6.woff → KaTeX_Main-BoldItalic.13355ck5zr48q.woff} +0 -0
  892. /package/dist/.next/static/media/{KaTeX_Main-BoldItalic.0d54rk08rx11s.woff2 → KaTeX_Main-BoldItalic.14r2naom8mrec.woff2} +0 -0
  893. /package/dist/.next/static/media/{KaTeX_Main-BoldItalic.15j6k~hix2t_0.ttf → KaTeX_Main-BoldItalic.3x_u9cepaced0.ttf} +0 -0
  894. /package/dist/.next/static/media/{KaTeX_Main-Italic.0382gqciexmbu.woff → KaTeX_Main-Italic.0afv392dj4w59.woff} +0 -0
  895. /package/dist/.next/static/media/{KaTeX_Main-Italic.06o5nq0_91v60.woff2 → KaTeX_Main-Italic.0lig0v9j0700p.woff2} +0 -0
  896. /package/dist/.next/static/media/{KaTeX_Main-Italic.0su4i6mm18-wo.ttf → KaTeX_Main-Italic.2hkw3230mfwcv.ttf} +0 -0
  897. /package/dist/.next/static/media/{KaTeX_Main-Regular.08zh8z.7shijf.ttf → KaTeX_Main-Regular.0symfa7dqj6jd.ttf} +0 -0
  898. /package/dist/.next/static/media/{KaTeX_Main-Regular.0diheg01zyoph.woff → KaTeX_Main-Regular.15u8r3b2y7fv4.woff} +0 -0
  899. /package/dist/.next/static/media/{KaTeX_Main-Regular.0kaf-ag2_wkm-.woff2 → KaTeX_Main-Regular.1ryvsdzh2w1_e.woff2} +0 -0
  900. /package/dist/.next/static/media/{KaTeX_Math-BoldItalic.0ajzxypnbx1h1.ttf → KaTeX_Math-BoldItalic.0y5w36a5aq__2.ttf} +0 -0
  901. /package/dist/.next/static/media/{KaTeX_Math-BoldItalic.0ck1myuerwyqw.woff → KaTeX_Math-BoldItalic.12pl58orkw9rg.woff} +0 -0
  902. /package/dist/.next/static/media/{KaTeX_Math-BoldItalic.0ja97dn.cpc87.woff2 → KaTeX_Math-BoldItalic.1oopuu636h4il.woff2} +0 -0
  903. /package/dist/.next/static/media/{KaTeX_Math-Italic.09xkhecjcn5r9.woff → KaTeX_Math-Italic.0w0b1ugh62cfr.woff} +0 -0
  904. /package/dist/.next/static/media/{KaTeX_Math-Italic.0x23a-bmp-5tg.ttf → KaTeX_Math-Italic.2vkekfblmz5nb.ttf} +0 -0
  905. /package/dist/.next/static/media/{KaTeX_Math-Italic.0zrha2c4sl2je.woff2 → KaTeX_Math-Italic.32405s1aq8vas.woff2} +0 -0
  906. /package/dist/.next/static/media/{KaTeX_SansSerif-Bold.05a9.pc1j_zx9.woff2 → KaTeX_SansSerif-Bold.0h3wi2z_eouyg.woff2} +0 -0
  907. /package/dist/.next/static/media/{KaTeX_SansSerif-Bold.0jcl-ayi1uun0.woff → KaTeX_SansSerif-Bold.1ovw5p-yjp56g.woff} +0 -0
  908. /package/dist/.next/static/media/{KaTeX_SansSerif-Bold.0re8y.dm7.mt5.ttf → KaTeX_SansSerif-Bold.2d03q85pwxpti.ttf} +0 -0
  909. /package/dist/.next/static/media/{KaTeX_SansSerif-Italic.0a0234dc3s62j.woff2 → KaTeX_SansSerif-Italic.0wkjc4dm2kcit.woff2} +0 -0
  910. /package/dist/.next/static/media/{KaTeX_SansSerif-Italic.0judofdln9731.woff → KaTeX_SansSerif-Italic.1qavw__2zz8gk.woff} +0 -0
  911. /package/dist/.next/static/media/{KaTeX_SansSerif-Italic.10z1iap9pfus8.ttf → KaTeX_SansSerif-Italic.3i-q087b23-m8.ttf} +0 -0
  912. /package/dist/.next/static/media/{KaTeX_SansSerif-Regular.0h9yjlugq4q_e.woff → KaTeX_SansSerif-Regular.1i4afx8nk8n4r.woff} +0 -0
  913. /package/dist/.next/static/media/{KaTeX_SansSerif-Regular.0v6gcj32-czft.woff2 → KaTeX_SansSerif-Regular.2peiewu59z3d-.woff2} +0 -0
  914. /package/dist/.next/static/media/{KaTeX_SansSerif-Regular.0zm18kga42ebc.ttf → KaTeX_SansSerif-Regular.31pbu25feko_c.ttf} +0 -0
  915. /package/dist/.next/static/media/{KaTeX_Script-Regular.0c4.h-mer83d_.woff2 → KaTeX_Script-Regular.11h14300o9pd0.woff2} +0 -0
  916. /package/dist/.next/static/media/{KaTeX_Script-Regular.0q14y6zkzlpob.ttf → KaTeX_Script-Regular.28p_x7iz71ofe.ttf} +0 -0
  917. /package/dist/.next/static/media/{KaTeX_Script-Regular.0ze6v4r_-99oy.woff → KaTeX_Script-Regular.3110jb9c-bxna.woff} +0 -0
  918. /package/dist/.next/static/media/{KaTeX_Size1-Regular.013x6a4ierotp.woff2 → KaTeX_Size1-Regular.03lhvx36ekcou.woff2} +0 -0
  919. /package/dist/.next/static/media/{KaTeX_Size1-Regular.0kidw0oi.m68o.woff → KaTeX_Size1-Regular.1slf4bh0hc6vm.woff} +0 -0
  920. /package/dist/.next/static/media/{KaTeX_Size1-Regular.0m6y-i6wfokni.ttf → KaTeX_Size1-Regular.1y57-ck23ey8c.ttf} +0 -0
  921. /package/dist/.next/static/media/{KaTeX_Size2-Regular.0blpmluwilgbg.woff → KaTeX_Size2-Regular.0-kwyvx03omo8.woff} +0 -0
  922. /package/dist/.next/static/media/{KaTeX_Size2-Regular.0d5inmyp-tyv3.woff2 → KaTeX_Size2-Regular.14s5gg-puz6h-.woff2} +0 -0
  923. /package/dist/.next/static/media/{KaTeX_Size2-Regular.0wnhnvj-.k9d5.ttf → KaTeX_Size2-Regular.2u0s-b07k2o9m.ttf} +0 -0
  924. /package/dist/.next/static/media/{KaTeX_Size3-Regular.01h0xm_sfctj3.woff → KaTeX_Size3-Regular.04o9a_02gu_e8.woff} +0 -0
  925. /package/dist/.next/static/media/{KaTeX_Size3-Regular.0iukctyhw5j56.woff2 → KaTeX_Size3-Regular.1n1rgzz84z8r9.woff2} +0 -0
  926. /package/dist/.next/static/media/{KaTeX_Size3-Regular.0jl8mqyf4gzpn.ttf → KaTeX_Size3-Regular.1pkn-dge4q0fv.ttf} +0 -0
  927. /package/dist/.next/static/media/{KaTeX_Size4-Regular.0w3.rb_c4stzk.woff2 → KaTeX_Size4-Regular.2sgotkdv3dcyv.woff2} +0 -0
  928. /package/dist/.next/static/media/{KaTeX_Size4-Regular.0wr_9l81-mu06.ttf → KaTeX_Size4-Regular.2uelkfk2yna5e.ttf} +0 -0
  929. /package/dist/.next/static/media/{KaTeX_Size4-Regular.12tvaesf3.zl3.woff → KaTeX_Size4-Regular.3p2r1l7xmebxv.woff} +0 -0
  930. /package/dist/.next/static/media/{KaTeX_Typewriter-Regular.0c4zdxz~8frhm.woff2 → KaTeX_Typewriter-Regular.11gr2d2wuwz77.woff2} +0 -0
  931. /package/dist/.next/static/media/{KaTeX_Typewriter-Regular.0cgrzn5l3kao5.woff → KaTeX_Typewriter-Regular.12f8myjij3617.woff} +0 -0
  932. /package/dist/.next/static/media/{KaTeX_Typewriter-Regular.128~qc3858otl.ttf → KaTeX_Typewriter-Regular.3nee9kjfy6nm8.ttf} +0 -0
  933. /package/dist/.next/static/media/{ad66f9afd8947f86-s.11u06r12fd6v_.woff2 → ad66f9afd8947f86-s.3lvt2whj97whp.woff2} +0 -0
  934. /package/dist/.next/static/media/{icon.0j1xc6-m~vsbh.png → icon.1n_rla2f79pbj.png} +0 -0
@@ -9,7 +9,8 @@ Object.defineProperty(exports, "__esModule", {
9
9
  pingPrefetchTask: null,
10
10
  reschedulePrefetchTask: null,
11
11
  schedulePrefetchTask: null,
12
- startRevalidationCooldown: null
12
+ startRevalidationCooldown: null,
13
+ subtreeHasSpeculativePrefetch: null
13
14
  });
14
15
  function _export(target, all) {
15
16
  for(var name in all)Object.defineProperty(target, name, {
@@ -38,12 +39,16 @@ _export(exports, {
38
39
  },
39
40
  startRevalidationCooldown: function() {
40
41
  return startRevalidationCooldown;
42
+ },
43
+ subtreeHasSpeculativePrefetch: function() {
44
+ return subtreeHasSpeculativePrefetch;
41
45
  }
42
46
  });
43
47
  const _approutertypes = require("../../../shared/lib/app-router-types");
44
48
  const _matchsegments = require("../match-segments");
45
49
  const _cache = require("./cache");
46
50
  const _cachekey = require("./cache-key");
51
+ const _routeparams = require("../../route-params");
47
52
  const _types = require("./types");
48
53
  const _segment = require("../../../shared/lib/segment");
49
54
  const _lru = require("./lru");
@@ -76,25 +81,41 @@ function startRevalidationCooldown() {
76
81
  pingPrefetchScheduler();
77
82
  }, REVALIDATION_COOLDOWN_MS);
78
83
  }
79
- function schedulePrefetchTask(key, treeAtTimeOfPrefetch, fetchStrategy, priority, onInvalidate, _onComplete) {
84
+ function schedulePrefetchTask(key, treeAtTimeOfPrefetch, fetchStrategy, priority, onInvalidate, navigationLockPrefetch) {
85
+ // Bind the task to the segment cache map that is active right now: the
86
+ // shared map, unless the Instant Navigation Testing lock is held, in which
87
+ // case the task gets the lock scope's private map. This is the single
88
+ // place work is bound to a map based on lock state — everything downstream
89
+ // receives the map explicitly. See `segmentCacheMap` in cache.ts.
90
+ let taskSegmentCacheMap = _cache.segmentCacheMap;
91
+ if (process.env.__NEXT_EXPOSE_TESTING_API) {
92
+ const { getNavigationLockSegmentCacheMap } = require('./navigation-testing-lock');
93
+ const lockMap = getNavigationLockSegmentCacheMap();
94
+ if (lockMap !== null) {
95
+ taskSegmentCacheMap = lockMap;
96
+ }
97
+ }
80
98
  // Spawn a new prefetch task
81
99
  const task = {
82
100
  key,
83
101
  treeAtTimeOfPrefetch,
84
102
  routeCacheVersion: (0, _cache.getCurrentRouteCacheVersion)(),
85
103
  segmentCacheVersion: (0, _cache.getCurrentSegmentCacheVersion)(),
104
+ segmentCacheMap: taskSegmentCacheMap,
86
105
  priority,
87
- phase: 1,
106
+ phase: 2,
88
107
  hasBackgroundWork: false,
108
+ hasPendingResponses: false,
89
109
  spawnedRuntimePrefetches: null,
90
110
  fetchStrategy,
91
111
  sortId: sortIdCounter++,
92
112
  isCanceled: false,
113
+ fallbackRetryStatus: _cache.EntryStatus.Empty,
93
114
  onInvalidate,
94
115
  _heapIndex: -1
95
116
  };
96
117
  if (process.env.__NEXT_EXPOSE_TESTING_API) {
97
- task._onComplete = _onComplete;
118
+ task._navigationLockPrefetch = navigationLockPrefetch;
98
119
  }
99
120
  trackMostRecentlyHoveredLink(task);
100
121
  heapPush(taskHeap, task);
@@ -115,15 +136,9 @@ function cancelPrefetchTask(task) {
115
136
  // We must also explicitly mark the task as canceled so that a blocked task
116
137
  // does not get added back to the queue when it's pinged by the network.
117
138
  task.isCanceled = true;
139
+ // A running fallback-retry loop notices `isCanceled` when it next wakes and
140
+ // bails (settling its status to Rejected), so there's nothing to clean up here.
118
141
  heapDelete(taskHeap, task);
119
- if (process.env.__NEXT_EXPOSE_TESTING_API) {
120
- // Call completion callback. In practice this shouldn't be reached for
121
- // test-initiated prefetches since cancellation is only used by the Link
122
- // component when elements scroll out of viewport.
123
- const onComplete = task._onComplete;
124
- task._onComplete = undefined;
125
- onComplete?.();
126
- }
127
142
  }
128
143
  function reschedulePrefetchTask(task, treeAtTimeOfPrefetch, fetchStrategy, priority) {
129
144
  // Bump the prefetch task to the top of the queue, as if it were a fresh
@@ -132,13 +147,13 @@ function reschedulePrefetchTask(task, treeAtTimeOfPrefetch, fetchStrategy, prior
132
147
  //
133
148
  // The primary use case is to increase the priority of a Link-initated
134
149
  // prefetch on hover.
135
- //
136
- // Note: _onComplete is not reset here because it's preserved on the same
137
- // task object. When the rescheduled task completes, the original callback
138
- // will still be invoked.
139
150
  // Un-cancel the task, in case it was previously canceled.
140
151
  task.isCanceled = false;
141
- task.phase = 1;
152
+ task.phase = 2;
153
+ // Note: fallback-retry state is deliberately NOT reset here. A retry loop runs
154
+ // at most once per task, even across reschedules, so a re-hover never starts a
155
+ // second loop. A loop already running simply continues (it only stops on
156
+ // cancel); `fallbackRetryStatus` never returns to `Empty` once it leaves it.
142
157
  // Assign a new sort ID to move it ahead of all other tasks at the same
143
158
  // priority level. (Higher sort IDs are processed first.)
144
159
  task.sortId = sortIdCounter++;
@@ -195,6 +210,14 @@ function pingPrefetchScheduler() {
195
210
  * Also checks if we're within the revalidation cooldown window, during which
196
211
  * prefetch requests are delayed to allow CDN cache propagation.
197
212
  */ function hasNetworkBandwidth(task) {
213
+ // When offline, don't issue any prefetch requests. The scheduler will be
214
+ // re-pinged when connectivity is restored.
215
+ if (process.env.__NEXT_USE_OFFLINE) {
216
+ const { getOffline } = require('../offline');
217
+ if (getOffline()) {
218
+ return false;
219
+ }
220
+ }
198
221
  // Check if we're within the revalidation cooldown window
199
222
  if (revalidationCooldownTimeoutHandle !== null) {
200
223
  // We're within the cooldown window. Return false to prevent prefetching.
@@ -273,10 +296,13 @@ function processQueueInMicrotask() {
273
296
  task.routeCacheVersion = (0, _cache.getCurrentRouteCacheVersion)();
274
297
  task.segmentCacheVersion = (0, _cache.getCurrentSegmentCacheVersion)();
275
298
  const exitStatus = pingRoute(now, task);
276
- // These fields are only valid for a single attempt. Reset them after each
277
- // iteration of the task queue.
299
+ // These fields are only valid for a single "pass" — one pingRoute
300
+ // invocation for a task, which is what the comments here also call an
301
+ // attempt or an iteration. Reset them after each iteration of the
302
+ // task queue.
278
303
  const hasBackgroundWork = task.hasBackgroundWork;
279
304
  task.hasBackgroundWork = false;
305
+ task.hasPendingResponses = false;
280
306
  task.spawnedRuntimePrefetches = null;
281
307
  switch(exitStatus){
282
308
  case 0:
@@ -291,9 +317,28 @@ function processQueueInMicrotask() {
291
317
  task = heapPeek(taskHeap);
292
318
  continue;
293
319
  case 2:
294
- if (task.phase === 1) {
295
- // Finished prefetching the route tree. Proceed to prefetching
296
- // the segments.
320
+ if (task.phase === 2) {
321
+ // Finished prefetching the route tree. The two-phase (Shell then
322
+ // Speculative) flow only applies to routes that have opted into
323
+ // Partial Prefetching — either globally via the `partialPrefetching`
324
+ // config or per segment (`prefetch: 'partial'` or
325
+ // `'unstable_eager'`), all surfaced as the
326
+ // `SubtreeHasPartialPrefetching` hint on the route tree. Every other
327
+ // route skips the Shell phase and goes straight to Speculative.
328
+ //
329
+ // The route entry is fulfilled at this point (the RouteTree phase
330
+ // just completed), so its prefetch hints are available.
331
+ const route = (0, _cache.readRouteCacheEntry)(now, task.key);
332
+ const routeHasPartialPrefetching = route !== null && route.status === _cache.EntryStatus.Fulfilled && (route.tree.prefetchHints & _approutertypes.PrefetchHint.SubtreeHasPartialPrefetching) !== 0;
333
+ task.phase = routeHasPartialPrefetching ? 1 : 0;
334
+ heapResift(taskHeap, task);
335
+ } else if (task.phase === 1) {
336
+ // Shell phase complete — a Done exit means the pass observed every
337
+ // response it cares about (otherwise it would have exited Blocked;
338
+ // see hasPendingResponses). Always advance to Speculative regardless
339
+ // of whether Shell-phase work fired — Speculative is responsible
340
+ // for the per-link concrete work and runs even on routes whose
341
+ // shell phase was a no-op.
297
342
  task.phase = 0;
298
343
  heapResift(taskHeap, task);
299
344
  } else if (hasBackgroundWork) {
@@ -303,12 +348,29 @@ function processQueueInMicrotask() {
303
348
  heapResift(taskHeap, task);
304
349
  } else {
305
350
  // The prefetch is complete. Continue to the next task.
306
- if (process.env.__NEXT_EXPOSE_TESTING_API) {
307
- // Notify the Instant Navigation Testing API that the prefetch has
308
- // completed, so it can proceed with navigation.
309
- const onComplete = task._onComplete;
310
- task._onComplete = undefined;
311
- onComplete?.();
351
+ //
352
+ // Completion is terminal in the normal flow: a task only completes
353
+ // after a full pass observed every response it cares about. In rare
354
+ // cases, though, a task can complete while still registered on an
355
+ // entry from an earlier pass whose subtree the final pass no longer
356
+ // reached; when that entry later settles, it re-pings the completed
357
+ // task. The re-run is a harmless idempotent no-op, but any
358
+ // per-completion side effect added here must be idempotent or
359
+ // once-guarded — in particular, the navigation-lock release below
360
+ // must not fire twice (hence the nulling).
361
+ if (process.env.__NEXT_EXPOSE_TESTING_API && task._navigationLockPrefetch != null) {
362
+ // This locked-navigation prefetch is complete: the final pass
363
+ // observed every segment response it cares about, so the data the
364
+ // navigation will read has settled. Resolve the prefetch's
365
+ // promise (awaited by `ensurePrefetchThenNavigate`) so the
366
+ // navigation proceeds against present data rather than a
367
+ // still-in-flight entry.
368
+ const { resolveNavigationLockPrefetch } = require('./navigation-testing-lock');
369
+ resolveNavigationLockPrefetch(task._navigationLockPrefetch);
370
+ // Release at most once per task: a stale registration from an
371
+ // earlier pass can re-ping a completed task (see above), so it can
372
+ // pass through here again.
373
+ task._navigationLockPrefetch = null;
312
374
  }
313
375
  heapPop(taskHeap);
314
376
  }
@@ -335,6 +397,11 @@ function processQueueInMicrotask() {
335
397
  * if (background(task)) {
336
398
  * // Perform background-pri work
337
399
  * }
400
+ *
401
+ * TODO: Model "background" as a phase (like Shell / Speculative) rather
402
+ * than as a priority. Conceptually it's the same pattern: defer work
403
+ * until a later pass over the task. The current priority-based encoding
404
+ * predates the phase model and could be unified.
338
405
  */ function background(task) {
339
406
  if (task.priority === _types.PrefetchPriority.Background) {
340
407
  return true;
@@ -366,7 +433,7 @@ function pingRoute(now, task) {
366
433
  {
367
434
  if (background(task)) {
368
435
  routeWithoutSearch.status = _cache.EntryStatus.Pending;
369
- spawnPrefetchSubtask((0, _cache.fetchRouteOnCacheMiss)(routeWithoutSearch, keyWithoutSearch));
436
+ spawnPrefetchSubtask((0, _cache.fetchRouteOnCacheMiss)(routeWithoutSearch, keyWithoutSearch, task.segmentCacheMap));
370
437
  }
371
438
  break;
372
439
  }
@@ -380,6 +447,12 @@ function pingRoute(now, task) {
380
447
  routeWithoutSearch;
381
448
  }
382
449
  }
450
+ if (exitStatus === 2 && task.hasPendingResponses) {
451
+ // The pass traversed the whole tree, but some segment responses haven't
452
+ // arrived yet, so the current phase isn't actually complete. Block until
453
+ // they do (see blockTaskOnPendingResponse for the full rationale).
454
+ return 1;
455
+ }
383
456
  return exitStatus;
384
457
  }
385
458
  function pingRootRouteTree(now, task, route) {
@@ -399,7 +472,7 @@ function pingRootRouteTree(now, task, route) {
399
472
  // behavior if PPR is disabled for a route (via the incremental opt-in).
400
473
  //
401
474
  // Those cases will be handled here.
402
- spawnPrefetchSubtask((0, _cache.fetchRouteOnCacheMiss)(route, task.key));
475
+ spawnPrefetchSubtask((0, _cache.fetchRouteOnCacheMiss)(route, task.key, task.segmentCacheMap));
403
476
  // If the request takes longer than a minute, a subsequent request should
404
477
  // retry instead of waiting for this one. When the response is received,
405
478
  // this value will be replaced by a new value based on the stale time sent
@@ -433,8 +506,8 @@ function pingRootRouteTree(now, task, route) {
433
506
  }
434
507
  case _cache.EntryStatus.Fulfilled:
435
508
  {
436
- if (task.phase !== 0) {
437
- // Do not prefetch segment data until we've entered the segment phase.
509
+ if (task.phase === 2) {
510
+ // Do not prefetch segment data during the route tree phase.
438
511
  return 2;
439
512
  }
440
513
  // Recursively fill in the segment tree.
@@ -448,19 +521,20 @@ function pingRootRouteTree(now, task, route) {
448
521
  // We don't need to do this for runtime prefetches, because those are only available in
449
522
  // `cacheComponents`, where every route is PPR.
450
523
  let fetchStrategy;
451
- if (tree.prefetchHints & _approutertypes.PrefetchHint.SubtreeHasInstant) {
452
- // If `instant` is defined anywhere on the target route, ignore the
453
- // fetch strategy and switch to unified strategy used by Cache
454
- // Components (called `PPR` for now, will likely be renamed).
524
+ if (tree.prefetchHints & _approutertypes.PrefetchHint.SubtreeHasPartialPrefetching) {
525
+ // If Partial Prefetching is enabled anywhere on the target route,
526
+ // ignore the fetch strategy and switch to unified strategy used by
527
+ // Cache Components (called `PPR` for now, will likely be renamed).
455
528
  //
456
529
  // In practice, this just means that a "full" prefetch (<Link
457
530
  // prefetch={true}>) has no effect. You're meant to use Runtime
458
531
  // Prefetching instead — that's the new pattern that replaces
459
532
  // prefetch={true}.
460
533
  //
461
- // The reason we check for `instant` rather than the `cacheComponents`
462
- // flag is to support incremental adoption. `prefetch={true}` will
463
- // continue to work until you opt into `instant`.
534
+ // The reason we check for the Partial Prefetching opt-in rather than
535
+ // the `cacheComponents` flag is to support incremental adoption.
536
+ // `prefetch={true}` will continue to work until you opt into
537
+ // Partial Prefetching.
464
538
  fetchStrategy = _types.FetchStrategy.PPR;
465
539
  } else if (task.fetchStrategy === _types.FetchStrategy.PPR) {
466
540
  fetchStrategy = route.supportsPerSegmentPrefetching ? _types.FetchStrategy.PPR : _types.FetchStrategy.LoadingBoundary;
@@ -477,24 +551,54 @@ function pingRootRouteTree(now, task, route) {
477
551
  //
478
552
  // Then, if there are any segments that need a runtime request,
479
553
  // do another pass to perform a runtime prefetch.
480
- pingStaticHead(now, task, route);
481
- const exitStatus = pingSharedPartOfCacheComponentsTree(now, task, route, task.treeAtTimeOfPrefetch, tree);
554
+ // Derive the static walk's parameters once per pass; the walk
555
+ // functions below receive them as arguments and are phase-agnostic.
556
+ // During the Shell phase the walk targets the App Shell variant of
557
+ // each segment (keyed at the shell vary paths); otherwise it's the
558
+ // ordinary per-segment static strategy. This is the only place the
559
+ // phase is consulted — everything below keys off the strategy.
560
+ const staticWalkStrategy = task.phase === 1 ? _types.FetchStrategy.StaticShell : _types.FetchStrategy.PPR;
561
+ if (staticWalkStrategy === _types.FetchStrategy.PPR && !subtreeHasSpeculativePrefetch(task.fetchStrategy, tree.prefetchHints)) {
562
+ // Nothing in the target route needs to be speculatively prefetched.
563
+ // Bail out. (A PPR walk is the Speculative pass; same check as
564
+ // the per-subtree bail in pingNewPartOfCacheComponentsTree.)
565
+ return 2;
566
+ }
567
+ pingStaticHead(now, task, route, staticWalkStrategy);
568
+ const exitStatus = pingSharedPartOfCacheComponentsTree(now, task, route, task.treeAtTimeOfPrefetch, tree, null, staticWalkStrategy);
482
569
  if (exitStatus === 0) {
483
570
  // Child yielded without finishing.
484
571
  return 0;
485
572
  }
486
- const spawnedRuntimePrefetches = task.spawnedRuntimePrefetches;
487
- if (spawnedRuntimePrefetches !== null) {
488
- // During the first pass, we discovered segments that require a
489
- // runtime prefetch. Do a second pass to construct a request tree.
490
- const spawnedEntries = new Map();
491
- pingRuntimeHead(now, task, route, spawnedEntries, _types.FetchStrategy.PPRRuntime);
492
- const requestTree = pingRuntimePrefetches(now, task, route, tree, spawnedRuntimePrefetches, spawnedEntries);
493
- let needsDynamicRequest = spawnedEntries.size > 0;
494
- if (needsDynamicRequest) {
495
- // Perform a dynamic prefetch request and populate the cache with
496
- // the result.
497
- spawnPrefetchSubtask((0, _cache.fetchSegmentPrefetchesUsingDynamicRequest)(task, route, _types.FetchStrategy.PPRRuntime, requestTree, spawnedEntries));
573
+ // We may need to do a runtime prefetch for one or more segments.
574
+ // Before checking, we can do some fast checks to bail out of this
575
+ // branch early.
576
+ //
577
+ // Runtime prefetches are only issued for walks that require runtime
578
+ // completeness — the same per-pass predicate that produced the
579
+ // deopt registrations during the traversal above; see the decision
580
+ // point in pingNewPartOfCacheComponentsTree. Which segments
581
+ // actually need a runtime request — registered directly, or only
582
+ // as the fallback after an insufficient static attempt — was
583
+ // decided there.
584
+ if (walkRequiresRuntimeCompleteness(staticWalkStrategy, route)) {
585
+ const runtimeStrategy = staticWalkStrategy === _types.FetchStrategy.StaticShell ? _types.FetchStrategy.RuntimeShell : _types.FetchStrategy.PPRRuntime;
586
+ // spawnedRuntimePrefetches was populated during the traversal
587
+ // above: every subtree in the new part of the tree that needs a
588
+ // runtime prefetch — plus, during the Shell phase, the head, if
589
+ // its static attempt was insufficient (see above).
590
+ //
591
+ // If it's null, nothing in the new part of the tree is a candidate
592
+ // for runtime prefetching, and we don't fetch the head, either —
593
+ // the head is runtime prefetched only if one of the segments is.
594
+ const spawnedRuntimePrefetches = task.spawnedRuntimePrefetches;
595
+ if (spawnedRuntimePrefetches !== null) {
596
+ const spawnedEntries = new Map();
597
+ pingRuntimeHead(now, task, route, spawnedEntries, runtimeStrategy);
598
+ const requestTree = pingRuntimePrefetches(now, task, route, tree, spawnedRuntimePrefetches, spawnedEntries, runtimeStrategy);
599
+ if (spawnedEntries.size > 0) {
600
+ spawnPrefetchSubtask((0, _cache.fetchSegmentPrefetchesUsingDynamicRequest)(task, route, runtimeStrategy, requestTree, spawnedEntries));
601
+ }
498
602
  }
499
603
  }
500
604
  return 2;
@@ -503,6 +607,12 @@ function pingRootRouteTree(now, task, route) {
503
607
  case _types.FetchStrategy.PPRRuntime:
504
608
  case _types.FetchStrategy.LoadingBoundary:
505
609
  {
610
+ if (task.phase === 1) {
611
+ // Shell phase only does work on routes that use the PPR strategy
612
+ // (Cache Components routes). Other strategies are Shell no-ops
613
+ // and fall through to Speculative.
614
+ return 2;
615
+ }
506
616
  // Prefetch multiple segments using a single dynamic request.
507
617
  // TODO: We can consolidate this branch with previous one by modeling
508
618
  // it as if the first segment in the new tree has runtime prefetching
@@ -531,11 +641,127 @@ function pingRootRouteTree(now, task, route) {
531
641
  }
532
642
  return 2;
533
643
  }
534
- function pingStaticHead(now, task, route) {
535
- // The Head data for a page (metadata, viewport) is not really a route
536
- // segment, in the sense that it doesn't appear in the route tree. But we
537
- // store it in the cache as if it were, using a special key.
538
- pingStaticSegmentData(now, task, route, (0, _cache.readOrCreateSegmentCacheEntry)(now, _types.FetchStrategy.PPR, route.metadata), task.key, route.metadata);
644
+ /**
645
+ * Prefetches the Head data for a page (metadata, viewport). The Head is not
646
+ * really a route segment, in the sense that it doesn't appear in the route
647
+ * tree, but we store it in the cache as if it were, using a special key.
648
+ *
649
+ * Symmetric with the per-segment decision point in
650
+ * pingNewPartOfCacheComponentsTree: the head deopts to the runtime prefetch
651
+ * path either when it requires runtime completeness and no static attempt is
652
+ * happening, or when a fulfilled static head entry reported that a runtime
653
+ * request would return more content than the entry contains. Deopting
654
+ * registers the head under its metadata request key, which makes the runtime
655
+ * gate in pingRootRouteTree fire even when every tree segment was
656
+ * sufficient; pingRuntimeHead performs the actual head work.
657
+ */ function pingStaticHead(now, task, route, // The per-pass static walk strategy; see pingRootRouteTree where
658
+ // it's derived.
659
+ fetchStrategy) {
660
+ // The head is subject to the same per-pass runtime-completeness contract
661
+ // as the route's segments: during an App Shell walk, and during any walk
662
+ // of a Partial Prefetching route, the head needs a response at least as
663
+ // complete as a runtime one.
664
+ const headRequiresRuntimeCompleteness = walkRequiresRuntimeCompleteness(fetchStrategy, route);
665
+ if (headRequiresRuntimeCompleteness && // The head is not a tree node — it hangs off the route root — so the
666
+ // static-attempt hint is read from the root's node. (Segments read the
667
+ // bit from their own node; see the decision point in
668
+ // pingNewPartOfCacheComponentsTree.)
669
+ (route.tree.prefetchHints & _approutertypes.PrefetchHint.ShouldAttemptStaticPrefetch) === 0) {
670
+ // No static attempt: the head arrives via the runtime request instead.
671
+ addSpawnedRuntimePrefetch(task, route.metadata.requestKey);
672
+ return;
673
+ }
674
+ if (// If the head was inlined into a page's bundle (HeadOutlined is NOT set
675
+ // on the root), skip the standalone fetch — the head data will arrive
676
+ // as part of that page's response, and its runtime-completeness signal
677
+ // is carried by that page's own entries.
678
+ process.env.__NEXT_PREFETCH_INLINING && !(route.tree.prefetchHints & _approutertypes.PrefetchHint.HeadOutlined)) {
679
+ return;
680
+ }
681
+ const segments = {
682
+ tree: route.metadata,
683
+ entry: (0, _cache.readOrCreateSegmentCacheEntry)(now, task.segmentCacheMap, fetchStrategy, route.metadata),
684
+ parent: null
685
+ };
686
+ const needsRuntimeRequest = pingSegmentBundle(now, task, route, task.key, route.metadata, segments, fetchStrategy, true);
687
+ if (headRequiresRuntimeCompleteness && needsRuntimeRequest) {
688
+ // The static attempt was insufficient for the head. Deopt to a
689
+ // runtime prefetch. (Outside of runtime-completeness contexts the
690
+ // head's signal is unused — a partial static head is filled in by the
691
+ // navigation-time request, as with any other static segment.)
692
+ addSpawnedRuntimePrefetch(task, route.metadata.requestKey);
693
+ }
694
+ }
695
+ /**
696
+ * Whether the task needs a cache entry at least as complete as a runtime
697
+ * response for every segment it walks before the prefetch counts as done.
698
+ * Runtime completeness is the universal contract for Partial Prefetching,
699
+ * so the predicate is per pass, not per segment:
700
+ *
701
+ * - Every walk of a route that opts into Partial Prefetching (any segment
702
+ * with a partial-prefetching config, or the global `partialPrefetching`
703
+ * flag — both surfaced as SubtreeHasPartialPrefetching on the route
704
+ * root), in both the Shell and Speculative phases.
705
+ * - Every App Shell (StaticShell) walk, because the App Shell must be
706
+ * reusable across all params by definition. (In practice this is implied
707
+ * by the first case — the Shell phase only runs for Partial Prefetching
708
+ * routes.)
709
+ *
710
+ * Routes without Partial Prefetching keep the static-only contract: their
711
+ * walks prefetch static data and partial entries are acceptable — the
712
+ * dynamic holes are filled by the navigation-time request.
713
+ *
714
+ * Note that on a Partial Prefetching route, non-eager subtrees are still
715
+ * skipped by the Speculative pass of a default (auto) link — eagerness is
716
+ * unaffected by this predicate. But every segment the pass DOES walk (eager
717
+ * segments, and everything on a `prefetch={true}` walk) is held to the
718
+ * runtime-completeness contract. The contract is affordable because most
719
+ * routes carry the ShouldAttemptStaticPrefetch hint: their segments are
720
+ * prefetched statically and the responses' own sufficiency signal makes a
721
+ * runtime request rare. On a hint-unset route, a walked segment deopts
722
+ * directly to the batched runtime request — which then serves the segment's
723
+ * whole subtree, so navigations into it are complete without a
724
+ * navigation-time request.
725
+ *
726
+ * This is also the gate for the batched runtime request at the end of
727
+ * pingRootRouteTree; requiring runtime completeness does not itself mean a
728
+ * runtime request is issued for a given segment — see the decision point in
729
+ * pingNewPartOfCacheComponentsTree.
730
+ */ function walkRequiresRuntimeCompleteness(staticWalkStrategy, route) {
731
+ return staticWalkStrategy === _types.FetchStrategy.StaticShell || (route.tree.prefetchHints & _approutertypes.PrefetchHint.SubtreeHasPartialPrefetching) !== 0;
732
+ }
733
+ /**
734
+ * The runtime counterpart of a pass's static walk strategy: the strategy the
735
+ * batched runtime request uses if this walk deopts. Each phase has exactly one
736
+ * — the Shell phase escalates to a runtime App Shell, the Speculative phase to
737
+ * a per-link concrete runtime prefetch.
738
+ */ function getRuntimeStrategyForWalk(staticWalkStrategy) {
739
+ return staticWalkStrategy === _types.FetchStrategy.StaticShell ? _types.FetchStrategy.RuntimeShell : _types.FetchStrategy.PPRRuntime;
740
+ }
741
+ /**
742
+ * Whether this phase's runtime request would return more content for a
743
+ * fulfilled entry than the entry already holds.
744
+ *
745
+ * An entry records the tier its CONTENT achieved, not the one it was requested
746
+ * at, and that tier spans both axes — so a static response that needed no
747
+ * runtime data records the runtime counterpart of its own variant (see
748
+ * `recordedFetchStrategy` in cache.ts). That makes this a pure tier
749
+ * comparison: an entry at or above the phase's runtime tier has nothing to
750
+ * gain from it.
751
+ */ function wouldRuntimeRequestProvideMore(entry, staticWalkStrategy) {
752
+ return (0, _cache.canNewFetchStrategyProvideMoreContent)(entry.fetchStrategy, getRuntimeStrategyForWalk(staticWalkStrategy));
753
+ }
754
+ /**
755
+ * Register a subtree root (or the head's metadata key) for the batched
756
+ * runtime request issued by the gate at the end of pingRootRouteTree.
757
+ */ function addSpawnedRuntimePrefetch(task, requestKey) {
758
+ if (task.spawnedRuntimePrefetches === null) {
759
+ task.spawnedRuntimePrefetches = new Set([
760
+ requestKey
761
+ ]);
762
+ } else {
763
+ task.spawnedRuntimePrefetches.add(requestKey);
764
+ }
539
765
  }
540
766
  function pingRuntimeHead(now, task, route, spawnedEntries, fetchStrategy) {
541
767
  pingRouteTreeAndIncludeDynamicData(now, task, route, route.metadata, false, spawnedEntries, // When prefetching the head, there's no difference between Full
@@ -543,7 +769,9 @@ function pingRuntimeHead(now, task, route, spawnedEntries, fetchStrategy) {
543
769
  fetchStrategy === _types.FetchStrategy.LoadingBoundary ? _types.FetchStrategy.Full : fetchStrategy);
544
770
  }
545
771
  // TODO: Rename dynamic -> runtime throughout this module
546
- function pingSharedPartOfCacheComponentsTree(now, task, route, oldTree, newTree) {
772
+ function pingSharedPartOfCacheComponentsTree(now, task, route, oldTree, newTree, parentBundle, // The per-pass static walk strategy; see pingRootRouteTree where
773
+ // it's derived.
774
+ fetchStrategy) {
547
775
  // When Cache Components is enabled (or PPR, or a fully static route when PPR
548
776
  // is disabled; those cases are treated equivalently to Cache Components), we
549
777
  // start by prefetching each segment individually. Once we reach the "new"
@@ -554,30 +782,51 @@ function pingSharedPartOfCacheComponentsTree(now, task, route, oldTree, newTree)
554
782
  // The traversal starts in the "shared" part of the tree. Once we reach the
555
783
  // "new" part of the tree, we switch to a different traversal,
556
784
  // pingNewPartOfCacheComponentsTree.
557
- // Prefetch this segment's static data.
558
- const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.fetchStrategy, newTree);
559
- pingStaticSegmentData(now, task, route, segment, task.key, newTree);
785
+ // The shared part of the tree always performs the ordinary static (PPR)
786
+ // prefetch, regardless of phase. Phase-specific strategies — the runtime
787
+ // shell request and the Shell phase's StaticShell walk — apply only to the
788
+ // new part of the tree, so the per-pass walk strategy is irrelevant here.
789
+ // (The needs-runtime signal is ignored: shared segments are already
790
+ // rendered on the current page, so a runtime prefetch has nothing to add.)
791
+ const bundleInProgress = accumulateSegmentBundle(now, task, route, newTree, parentBundle, _types.FetchStrategy.PPR, true).bundle;
560
792
  // Recursively ping the children.
561
793
  const oldTreeChildren = oldTree[1];
562
794
  const newTreeChildren = newTree.slots;
563
795
  if (newTreeChildren !== null) {
564
- for(const parallelRouteKey in newTreeChildren){
796
+ for (const [parallelRouteKey, newTreeChild] of newTreeChildren){
565
797
  if (!hasNetworkBandwidth(task)) {
566
798
  // Stop prefetching segments until there's more bandwidth.
567
799
  return 0;
568
800
  }
569
- const newTreeChild = newTreeChildren[parallelRouteKey];
570
801
  const newTreeChildSegment = newTreeChild.segment;
571
802
  const oldTreeChild = oldTreeChildren[parallelRouteKey];
572
803
  const oldTreeChildSegment = oldTreeChild?.[0];
804
+ // Only pass the bundle to the child that accepts it. A parent is
805
+ // only ever bundled into one child.
806
+ const bundleForChild = process.env.__NEXT_PREFETCH_INLINING && bundleInProgress !== null && newTreeChild.prefetchHints & _approutertypes.PrefetchHint.ParentInlinedIntoSelf ? bundleInProgress : null;
573
807
  let childExitStatus;
574
808
  if (oldTreeChildSegment !== undefined && doesCurrentSegmentMatchCachedSegment(route, newTreeChildSegment, oldTreeChildSegment)) {
575
809
  // We're still in the "shared" part of the tree.
576
- childExitStatus = pingSharedPartOfCacheComponentsTree(now, task, route, oldTreeChild, newTreeChild);
810
+ childExitStatus = pingSharedPartOfCacheComponentsTree(now, task, route, oldTreeChild, newTreeChild, bundleForChild, fetchStrategy);
577
811
  } else {
578
812
  // We've entered the "new" part of the tree. Switch
579
813
  // traversal functions.
580
- childExitStatus = pingNewPartOfCacheComponentsTree(now, task, route, newTreeChild);
814
+ //
815
+ // Bundle chains must not cross the strategy boundary: the shared
816
+ // part walks at PPR while a Shell-phase new part walks at
817
+ // StaticShell, and a chain spanning both would fulfill the shared
818
+ // parent's concrete-path entry with shell-variant data. Nor may we
819
+ // finish the chain by fetching the new-part child at PPR here —
820
+ // that would prefetch new-part segments at the concrete tier
821
+ // during the Shell phase, which only the Speculative phase is
822
+ // allowed to do. So drop the bundle instead, exactly like the
823
+ // Speculative walk's subtree bail does when a chain crosses into a
824
+ // subtree it skips: nothing in a dropped chain was upgraded to
825
+ // Pending, so no entry is stranded, and the inlined shared data is
826
+ // fetched by the Speculative pass whenever its walk of the new
827
+ // part permits the child fetch.
828
+ const bundleForNewPart = fetchStrategy === _types.FetchStrategy.StaticShell ? null : bundleForChild;
829
+ childExitStatus = pingNewPartOfCacheComponentsTree(now, task, route, newTreeChild, bundleForNewPart, fetchStrategy);
581
830
  }
582
831
  if (childExitStatus === 0) {
583
832
  // Child yielded without finishing.
@@ -587,61 +836,105 @@ function pingSharedPartOfCacheComponentsTree(now, task, route, oldTree, newTree)
587
836
  }
588
837
  return 2;
589
838
  }
590
- function pingNewPartOfCacheComponentsTree(now, task, route, tree) {
591
- // We're now prefetching in the "new" part of the tree, the part that doesn't
592
- // exist on the current page. (In other words, we're deeper than the
593
- // shared layouts.) Segments in here default to being prefetched statically.
594
- // However, if the server instructs us to, we may switch to a runtime
595
- // prefetch instead. Traverse the tree and check at each segment.
596
- if (tree.prefetchHints & _approutertypes.PrefetchHint.HasRuntimePrefetch) {
597
- // This route has a runtime prefetch response. Since we're below the shared
598
- // layout, everything from this point should be prefetched using a single,
599
- // combined runtime request, rather than using per-segment static requests.
600
- // This is true even if some of the child segments are known to be fully
601
- // static — once we've decided to perform a runtime prefetch, we might as
602
- // well respond with the static segments in the same roundtrip. (That's how
603
- // regular navigations work, too.) We'll still skip over segments that are
604
- // already cached, though.
605
- //
606
- // It's the server's responsibility to set a reasonable value of
607
- // `hasRuntimePrefetch`. Currently it's user-defined, but eventually, the
608
- // server may send a value of `false` even if the user opts in, if it
609
- // determines during build that the route is always fully static. There are
610
- // more optimizations we can do once we implement fallback param
611
- // tracking, too.
612
- //
613
- // Use the task object to collect the segments that need a runtime prefetch.
614
- // This will signal to the outer task queue that a second traversal is
615
- // required to construct a request tree.
616
- if (task.spawnedRuntimePrefetches === null) {
617
- task.spawnedRuntimePrefetches = new Set([
618
- tree.requestKey
619
- ]);
620
- } else {
621
- task.spawnedRuntimePrefetches.add(tree.requestKey);
839
+ function pingNewPartOfCacheComponentsTree(now, task, route, tree, parentBundle, // The per-pass static walk strategy; see pingRootRouteTree where
840
+ // it's derived.
841
+ fetchStrategy) {
842
+ // We're now prefetching in the "new" part of the tree, the part that
843
+ // doesn't exist on the current page. (In other words, we're deeper than
844
+ // the shared layouts.) Segments in here default to being prefetched
845
+ // statically, at the per-pass strategy derived in pingRootRouteTree.
846
+ //
847
+ // When the walk requires runtime completeness — an entry at least as
848
+ // complete as a runtime response for every segment before the prefetch
849
+ // can complete (see walkRequiresRuntimeCompleteness) — this function is
850
+ // also the per-segment decision point. If the segment's node carries the
851
+ // ShouldAttemptStaticPrefetch hint (the build-time prerender accessed no
852
+ // runtime data), its subtree is prefetched statically first,
853
+ // and the responses themselves decide whether that was enough: every
854
+ // fulfilled entry carries a needsRuntimeRequest signal. Pending responses
855
+ // block the task, so the attempt is serial, never raced: static attempt →
856
+ // observe → runtime only if needed. Without the hint, the segment deopts
857
+ // directly. Deopting registers the segment's request key in
858
+ // spawnedRuntimePrefetches; the runtime gate at the end of
859
+ // pingRootRouteTree issues a single batched runtime request for
860
+ // everything that accumulated, and that request re-fetches the whole
861
+ // subtree, so the walk stops descending at a deopt.
862
+ //
863
+ // Outside a runtime-completeness walk the same needsRuntimeRequest signal
864
+ // is routine and ignored — any partial entry of a page that accesses
865
+ // runtime data carries it, and the dynamic holes are filled by the
866
+ // navigation-time request.
867
+ if (// Only the Speculative pass skips subtrees with nothing to speculatively
868
+ // prefetch. (It's also the only pass that walks at FetchStrategy.PPR;
869
+ // the Shell phase walks at StaticShell and covers the whole new tree.)
870
+ fetchStrategy === _types.FetchStrategy.PPR && !subtreeHasSpeculativePrefetch(task.fetchStrategy, tree.prefetchHints)) {
871
+ // Nothing in the new part of the tree needs to be speculatively prefetched.
872
+ // Bail out.
873
+ return 2;
874
+ }
875
+ // Constant for the whole pass; recomputed here only because the walk is
876
+ // recursive and the check is cheap.
877
+ const segmentRequiresRuntimeCompleteness = walkRequiresRuntimeCompleteness(fetchStrategy, route);
878
+ // TODO: The static-attempt hint reflects the build-time prerender's whole
879
+ // runtime-data tracking, so a page that always accesses
880
+ // runtime data after the shell stage never attempts a static prefetch —
881
+ // even though its shell variant is rewindable at the shell boundary and
882
+ // perfectly reusable. The server could emit a second bit derived from the
883
+ // shell-stage value ("a static SHELL attempt is worthwhile even though
884
+ // the page accesses runtime data post-shell") to let such pages attempt
885
+ // static, too.
886
+ // A force-disabled segment deliberately does NOT deopt here: disabling
887
+ // prefetch is passive. It never initiates a request — its accumulation
888
+ // below contributes nothing — and must never be the reason a runtime
889
+ // prefetch spawns, though it may ride along in a runtime response issued
890
+ // on another segment's behalf.
891
+ const attemptStaticPrefetchOfSegment = (tree.prefetchHints & _approutertypes.PrefetchHint.ShouldAttemptStaticPrefetch) !== 0;
892
+ if (segmentRequiresRuntimeCompleteness && !attemptStaticPrefetchOfSegment) {
893
+ // Deopt directly to a runtime prefetch, without a static attempt.
894
+ addSpawnedRuntimePrefetch(task, tree.requestKey);
895
+ // If there's a pending static bundle from a parent, we need to finish
896
+ // prefetching it before bailing out to runtime prefetching.
897
+ if (parentBundle !== null) {
898
+ finishStaticBundleOnRuntimeBailout(now, task, route, tree, parentBundle, fetchStrategy);
622
899
  }
623
- // Then exit the traversal without prefetching anything further.
624
900
  return 2;
625
901
  }
626
- // This segment should not be runtime prefetched. Prefetch its static data.
627
- const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.fetchStrategy, tree);
628
- pingStaticSegmentData(now, task, route, segment, task.key, tree);
902
+ // Prefetch this segment and its subtree statically, using the normal
903
+ // static bundling walk.
904
+ const accumulation = accumulateSegmentBundle(now, task, route, tree, parentBundle, fetchStrategy, true);
905
+ const bundleInProgress = accumulation.bundle;
906
+ if (segmentRequiresRuntimeCompleteness && accumulation.needsRuntimeRequest) {
907
+ // The static attempt for this segment was insufficient. Stop the walk
908
+ // and deopt — the runtime prefetch covers the whole subtree. (Unlike the
909
+ // direct deopt above, any open bundle is dropped rather than finished: a
910
+ // fulfilled InlinedIntoChild node can report a true signal while its
911
+ // chain is still open. That's safe — nothing in an un-pinged chain was
912
+ // upgraded to Pending, so no entry is stranded blocking the task, and
913
+ // Empty entries in the dropped chain are re-fetched by a later pass.)
914
+ addSpawnedRuntimePrefetch(task, tree.requestKey);
915
+ return 2;
916
+ }
629
917
  if (tree.slots !== null) {
630
918
  if (!hasNetworkBandwidth(task)) {
631
919
  // Stop prefetching segments until there's more bandwidth.
632
920
  return 0;
633
921
  }
634
922
  // Recursively ping the children.
635
- for(const parallelRouteKey in tree.slots){
636
- const childTree = tree.slots[parallelRouteKey];
637
- const childExitStatus = pingNewPartOfCacheComponentsTree(now, task, route, childTree);
638
- if (childExitStatus === 0) {
923
+ for (const childTree of tree.slots.values()){
924
+ // Only pass the bundle to the child that accepts it. A parent is
925
+ // only ever bundled into one child.
926
+ const bundleForChild = process.env.__NEXT_PREFETCH_INLINING && bundleInProgress !== null && childTree.prefetchHints & _approutertypes.PrefetchHint.ParentInlinedIntoSelf ? bundleInProgress : null;
927
+ const childResult = pingNewPartOfCacheComponentsTree(now, task, route, childTree, bundleForChild, fetchStrategy);
928
+ if (childResult === 0) {
639
929
  // Child yielded without finishing.
640
930
  return 0;
641
931
  }
642
932
  }
643
933
  }
644
- // This segment and all its children have finished prefetching.
934
+ // The static attempt was sufficient for this segment (each child is its
935
+ // own decision point) — or parts of it are still in flight, in which case
936
+ // the task is blocked and the decision re-runs against the received
937
+ // responses.
645
938
  return 2;
646
939
  }
647
940
  function diffRouteTreeAgainstCurrent(now, task, route, oldTree, newTree, spawnedEntries, fetchStrategy) {
@@ -658,8 +951,7 @@ function diffRouteTreeAgainstCurrent(now, task, route, oldTree, newTree, spawned
658
951
  const newTreeChildren = newTree.slots;
659
952
  let requestTreeChildren = {};
660
953
  if (newTreeChildren !== null) {
661
- for(const parallelRouteKey in newTreeChildren){
662
- const newTreeChild = newTreeChildren[parallelRouteKey];
954
+ for (const [parallelRouteKey, newTreeChild] of newTreeChildren){
663
955
  const newTreeChildSegment = newTreeChild.segment;
664
956
  const oldTreeChild = oldTreeChildren[parallelRouteKey];
665
957
  const oldTreeChildSegment = oldTreeChild?.[0];
@@ -734,6 +1026,9 @@ function diffRouteTreeAgainstCurrent(now, task, route, oldTree, newTree, spawned
734
1026
  null,
735
1027
  null
736
1028
  ];
1029
+ if (newTree.prefetchHints !== 0) {
1030
+ requestTree[4] = newTree.prefetchHints;
1031
+ }
737
1032
  return requestTree;
738
1033
  }
739
1034
  function pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, tree, refetchMarkerContext, spawnedEntries) {
@@ -748,7 +1043,7 @@ function pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, tree, ref
748
1043
  // "inside-shared-layout" tells the server where to start looking for a
749
1044
  // loading boundary.
750
1045
  let refetchMarker = refetchMarkerContext === null ? 'inside-shared-layout' : null;
751
- const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.fetchStrategy, tree);
1046
+ const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.segmentCacheMap, task.fetchStrategy, tree);
752
1047
  switch(segment.status){
753
1048
  case _cache.EntryStatus.Empty:
754
1049
  {
@@ -760,10 +1055,14 @@ function pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, tree, ref
760
1055
  // though, I'll send the full tree and we'll look into this later as part
761
1056
  // of a larger redesign of the request protocol.
762
1057
  // Add the pending cache entry to the result map.
763
- spawnedEntries.set(tree.requestKey, (0, _cache.upgradeToPendingSegment)(segment, // Set the fetch strategy to LoadingBoundary to indicate that the server
1058
+ const pendingSegment = (0, _cache.upgradeToPendingSegment)(segment, // Set the fetch strategy to LoadingBoundary to indicate that the server
764
1059
  // might not include it in the pending response. If another route is able
765
1060
  // to issue a per-segment request, we'll do that in the background.
766
- _types.FetchStrategy.LoadingBoundary));
1061
+ _types.FetchStrategy.LoadingBoundary);
1062
+ spawnedEntries.set(tree.requestKey, pendingSegment);
1063
+ // The pass blocks on every request it spawns, not just requests it
1064
+ // finds already in flight.
1065
+ blockTaskOnPendingResponse(task, pendingSegment);
767
1066
  if (refetchMarkerContext !== 'refetch') {
768
1067
  refetchMarker = refetchMarkerContext = 'refetch';
769
1068
  } else {
@@ -786,6 +1085,11 @@ function pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, tree, ref
786
1085
  }
787
1086
  case _cache.EntryStatus.Pending:
788
1087
  {
1088
+ // There's another prefetch currently in progress. Don't add the refetch
1089
+ // marker yet, so the server knows it can skip rendering this segment.
1090
+ // The pass still depends on the in-flight response, so wait for it
1091
+ // before the phase can complete.
1092
+ blockTaskOnPendingResponse(task, segment);
789
1093
  break;
790
1094
  }
791
1095
  case _cache.EntryStatus.Rejected:
@@ -797,8 +1101,7 @@ function pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, tree, ref
797
1101
  }
798
1102
  const requestTreeChildren = {};
799
1103
  if (tree.slots !== null) {
800
- for(const parallelRouteKey in tree.slots){
801
- const childTree = tree.slots[parallelRouteKey];
1104
+ for (const [parallelRouteKey, childTree] of tree.slots){
802
1105
  requestTreeChildren[parallelRouteKey] = pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, childTree, refetchMarkerContext, spawnedEntries);
803
1106
  }
804
1107
  }
@@ -808,8 +1111,41 @@ function pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, tree, ref
808
1111
  null,
809
1112
  refetchMarker
810
1113
  ];
1114
+ if (tree.prefetchHints !== 0) {
1115
+ requestTree[4] = tree.prefetchHints;
1116
+ }
811
1117
  return requestTree;
812
1118
  }
1119
+ /**
1120
+ * Called during a pass when a segment's response hasn't been received yet —
1121
+ * whether the request was just spawned by this pass or was already in flight.
1122
+ * Marks the task as blocked: a phase only completes once a full pass observes
1123
+ * every segment response it cares about, because later decisions (like
1124
+ * whether a segment needs a follow-up runtime request) are made against the
1125
+ * contents of those responses, and a phase may need to restart its work based
1126
+ * on what they contain. The task is re-pinged (via pingBlockedTasks in
1127
+ * cache.ts) when the entry resolves, re-running the pass against the
1128
+ * received data. Only a pass that observes every response may advance the
1129
+ * phase or complete the task.
1130
+ *
1131
+ * Never call this for an entry that's already Rejected — nothing ever pings
1132
+ * a Rejected entry, so registering on one would strand the task. A rejected
1133
+ * segment is simply skipped: the pass keeps prefetching the rest of the tree
1134
+ * without it.
1135
+ */ function blockTaskOnPendingResponse(task, segment) {
1136
+ // This state is reset after each iteration of the task queue. We use it to
1137
+ // inform the scheduler that the task is blocked.
1138
+ task.hasPendingResponses = true;
1139
+ // Add the task to this segment's blocked tasks, so it can be rescheduled
1140
+ // once the segment finishes loading.
1141
+ if (segment.blockedTasks === null) {
1142
+ segment.blockedTasks = new Set([
1143
+ task
1144
+ ]);
1145
+ } else {
1146
+ segment.blockedTasks.add(task);
1147
+ }
1148
+ }
813
1149
  function pingRouteTreeAndIncludeDynamicData(now, task, route, tree, isInsideRefetchingParent, spawnedEntries, fetchStrategy) {
814
1150
  // The tree we're constructing is the same shape as the tree we're navigating
815
1151
  // to. But even though this is a "new" tree, some of the individual segments
@@ -819,7 +1155,7 @@ function pingRouteTreeAndIncludeDynamicData(now, task, route, tree, isInsideRefe
819
1155
  // explicit "refetch" marker so the server knows where to start rendering.
820
1156
  // Once the server starts rendering along a path, it keeps rendering the
821
1157
  // entire subtree.
822
- const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, // Note that `fetchStrategy` might be different from `task.fetchStrategy`,
1158
+ const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.segmentCacheMap, // Note that `fetchStrategy` might be different from `task.fetchStrategy`,
823
1159
  // and we have to use the former here.
824
1160
  // We can have a task with `FetchStrategy.PPR` where some of its segments are configured to
825
1161
  // always use runtime prefetching (via `export const prefetch`), and those should check for
@@ -857,12 +1193,12 @@ function pingRouteTreeAndIncludeDynamicData(now, task, route, tree, isInsideRefe
857
1193
  // entry from a previous navigation, prefer that over making a new
858
1194
  // request.
859
1195
  if (fetchStrategy === _types.FetchStrategy.Full) {
860
- const fulfilled = (0, _cache.attemptToUpgradeSegmentFromBFCache)(now, tree);
1196
+ const fulfilled = (0, _cache.attemptToUpgradeSegmentFromBFCache)(now, task.segmentCacheMap, tree);
861
1197
  if (fulfilled !== null) {
862
1198
  break;
863
1199
  }
864
1200
  }
865
- spawnedSegment = pingFullSegmentRevalidation(now, tree, fetchStrategy);
1201
+ spawnedSegment = pingFullSegmentRevalidation(now, task, tree, fetchStrategy);
866
1202
  }
867
1203
  break;
868
1204
  }
@@ -872,17 +1208,39 @@ function pingRouteTreeAndIncludeDynamicData(now, task, route, tree, isInsideRefe
872
1208
  // There's either another prefetch currently in progress, or the previous
873
1209
  // attempt failed. If the new strategy can provide more content, fetch it again.
874
1210
  if ((0, _cache.canNewFetchStrategyProvideMoreContent)(segment.fetchStrategy, fetchStrategy)) {
875
- spawnedSegment = pingFullSegmentRevalidation(now, tree, fetchStrategy);
1211
+ spawnedSegment = pingFullSegmentRevalidation(now, task, tree, fetchStrategy);
1212
+ }
1213
+ if (segment.status === _cache.EntryStatus.Pending) {
1214
+ // A response for this segment is still in flight. The pass must
1215
+ // observe it before the phase can complete.
1216
+ blockTaskOnPendingResponse(task, segment);
1217
+ } else {
1218
+ // The segment failed to load, or the server intentionally omitted it
1219
+ // from a response (both are encoded as Rejected). Skip it and keep
1220
+ // prefetching the rest of the tree; the entry's staleAt governs when
1221
+ // it may be retried. Don't register the task on the rejected entry —
1222
+ // nothing ever pings a Rejected entry.
1223
+ //
1224
+ // TODO: The cache encodes real failures and intentional server
1225
+ // omissions identically (both Rejected); with per-segment skipping
1226
+ // this has no task-lifecycle consequence, but distinguishing them
1227
+ // could still be useful someday.
876
1228
  }
877
1229
  break;
878
1230
  }
879
1231
  default:
880
1232
  segment;
881
1233
  }
1234
+ if (spawnedSegment !== null) {
1235
+ // A pass must observe the response for every request it spawns before
1236
+ // its phase can complete — not just requests it finds already in flight.
1237
+ // Block on the entry we just spawned; the task is re-pinged when it's
1238
+ // fulfilled or rejected.
1239
+ blockTaskOnPendingResponse(task, spawnedSegment);
1240
+ }
882
1241
  const requestTreeChildren = {};
883
1242
  if (tree.slots !== null) {
884
- for(const parallelRouteKey in tree.slots){
885
- const childTree = tree.slots[parallelRouteKey];
1243
+ for (const [parallelRouteKey, childTree] of tree.slots){
886
1244
  requestTreeChildren[parallelRouteKey] = pingRouteTreeAndIncludeDynamicData(now, task, route, childTree, isInsideRefetchingParent || spawnedSegment !== null, spawnedEntries, fetchStrategy);
887
1245
  }
888
1246
  }
@@ -898,9 +1256,12 @@ function pingRouteTreeAndIncludeDynamicData(now, task, route, tree, isInsideRefe
898
1256
  null,
899
1257
  refetchMarker
900
1258
  ];
1259
+ if (tree.prefetchHints !== 0) {
1260
+ requestTree[4] = tree.prefetchHints;
1261
+ }
901
1262
  return requestTree;
902
1263
  }
903
- function pingRuntimePrefetches(now, task, route, tree, spawnedRuntimePrefetches, spawnedEntries) {
1264
+ function pingRuntimePrefetches(now, task, route, tree, spawnedRuntimePrefetches, spawnedEntries, fetchStrategy) {
904
1265
  // Construct a request tree (FlightRouterState) for a runtime prefetch. If
905
1266
  // a segment is part of the runtime prefetch, the tree is constructed by
906
1267
  // diffing against what's already in the prefetch cache. Otherwise, we send
@@ -909,14 +1270,13 @@ function pingRuntimePrefetches(now, task, route, tree, spawnedRuntimePrefetches,
909
1270
  // See pingRouteTreeAndIncludeDynamicData for details.
910
1271
  if (spawnedRuntimePrefetches.has(tree.requestKey)) {
911
1272
  // This segment needs a runtime prefetch.
912
- return pingRouteTreeAndIncludeDynamicData(now, task, route, tree, false, spawnedEntries, _types.FetchStrategy.PPRRuntime);
1273
+ return pingRouteTreeAndIncludeDynamicData(now, task, route, tree, false, spawnedEntries, fetchStrategy);
913
1274
  }
914
1275
  let requestTreeChildren = {};
915
1276
  const slots = tree.slots;
916
1277
  if (slots !== null) {
917
- for(const parallelRouteKey in slots){
918
- const childTree = slots[parallelRouteKey];
919
- requestTreeChildren[parallelRouteKey] = pingRuntimePrefetches(now, task, route, childTree, spawnedRuntimePrefetches, spawnedEntries);
1278
+ for (const [parallelRouteKey, childTree] of slots){
1279
+ requestTreeChildren[parallelRouteKey] = pingRuntimePrefetches(now, task, route, childTree, spawnedRuntimePrefetches, spawnedEntries, fetchStrategy);
920
1280
  }
921
1281
  }
922
1282
  // This segment is not part of the runtime prefetch. Clone the base tree.
@@ -926,131 +1286,281 @@ function pingRuntimePrefetches(now, task, route, tree, spawnedRuntimePrefetches,
926
1286
  null,
927
1287
  null
928
1288
  ];
1289
+ if (tree.prefetchHints !== 0) {
1290
+ requestTree[4] = tree.prefetchHints;
1291
+ }
929
1292
  return requestTree;
930
1293
  }
931
- function pingStaticSegmentData(now, task, route, segment, routeKey, tree) {
932
- switch(segment.status){
933
- case _cache.EntryStatus.Empty:
934
- if (process.env.__NEXT_PREFETCH_INLINING) {
935
- // All segment data for this route is bundled into a single
936
- // /_inlined response. Walk the full route tree to collect all
937
- // Empty segments, upgrade them to Pending, and spawn one
938
- // bundled request. Subsequent calls for other segments in the
939
- // same tree will see them as Pending and skip.
940
- const inlinedEntries = collectInlinedEntries(now, route);
941
- if (inlinedEntries.size > 0) {
942
- spawnPrefetchSubtask((0, _cache.fetchInlinedSegmentsOnCacheMiss)(route, routeKey, route.tree, inlinedEntries));
943
- }
1294
+ /**
1295
+ * Walk a SegmentBundle, apply status-based logic to each entry, and if any
1296
+ * entries need data, spawn a single fetch request for the whole bundle.
1297
+ *
1298
+ * Returns true if a fulfilled entry in the bundle reported that a runtime
1299
+ * request would return more content than the entry contains
1300
+ * (needsRuntimeRequest, derived at write time from the response that
1301
+ * produced the entry). The callers surface this signal to the per-segment
1302
+ * decision point in pingNewPartOfCacheComponentsTree (and its analog for
1303
+ * the head in pingStaticHead), which uses it during a static attempt to
1304
+ * decide whether to fall back to a runtime prefetch.
1305
+ */ function pingSegmentBundle(now, task, route, routeKey, tree, segments, // Per-pass static walk strategy; see pingRootRouteTree where it's derived.
1306
+ fetchStrategy, // False when finishing an open bundle chain on a runtime-prefetch bailout
1307
+ // (finishStaticBundleOnRuntimeBailout). The finish exists only to fetch
1308
+ // data the batched runtime request won't cover — Empty entries in the
1309
+ // chain — so it must not spawn revalidations over entries that are
1310
+ // already settled or in flight: the chain's terminal segments are inside
1311
+ // the deopted subtree, and re-fetching their static bundle would at best
1312
+ // duplicate the runtime request and at worst replace a runtime-complete
1313
+ // entry (e.g. a runtime App Shell) with a less complete static fallback
1314
+ // response.
1315
+ spawnRevalidations) {
1316
+ let segmentCount = 0;
1317
+ let needsFetch = false;
1318
+ let needsRuntimeRequest = false;
1319
+ let node = segments;
1320
+ while(node !== null){
1321
+ segmentCount++;
1322
+ const nodeEntry = node.entry;
1323
+ const nodeTree = node.tree;
1324
+ if (nodeEntry === null || nodeTree === null) {
1325
+ node = node.parent;
1326
+ continue;
1327
+ }
1328
+ switch(nodeEntry.status){
1329
+ case _cache.EntryStatus.Empty:
1330
+ (0, _cache.upgradeToPendingSegment)(nodeEntry, fetchStrategy);
1331
+ needsFetch = true;
1332
+ // The pass blocks on every request it spawns, not just requests it
1333
+ // finds already in flight.
1334
+ blockTaskOnPendingResponse(task, nodeEntry);
944
1335
  break;
945
- }
946
- // Upgrade to Pending so we know there's already a request in progress
947
- spawnPrefetchSubtask((0, _cache.fetchSegmentOnCacheMiss)(route, (0, _cache.upgradeToPendingSegment)(segment, _types.FetchStrategy.PPR), routeKey, tree));
948
- break;
949
- case _cache.EntryStatus.Pending:
950
- {
951
- // There's already a request in progress. Depending on what kind of
952
- // request it is, we may want to revalidate it.
953
- switch(segment.fetchStrategy){
954
- case _types.FetchStrategy.PPR:
955
- case _types.FetchStrategy.PPRRuntime:
956
- case _types.FetchStrategy.Full:
957
- break;
958
- case _types.FetchStrategy.LoadingBoundary:
959
- // There's a pending request, but because it's using the old
960
- // prefetching strategy, we can't be sure if it will be fulfilled by
961
- // the response — it might be inside the loading boundary. Perform
962
- // a revalidation, but because it's speculative, wait to do it at
963
- // background priority.
964
- if (background(task)) {
965
- // TODO: Instead of speculatively revalidating, consider including
966
- // `hasLoading` in the route tree prefetch response.
967
- pingPPRSegmentRevalidation(now, route, routeKey, tree);
968
- }
969
- break;
970
- default:
971
- segment.fetchStrategy;
1336
+ case _cache.EntryStatus.Pending:
1337
+ if (spawnRevalidations && // During a static shell attempt, never spawn revalidations — just
1338
+ // wait for the in-flight response (blocked below); its sufficiency
1339
+ // is checked on the re-run pass.
1340
+ fetchStrategy === _types.FetchStrategy.PPR && (0, _cache.canNewFetchStrategyProvideMoreContent)(nodeEntry.fetchStrategy, fetchStrategy)) {
1341
+ const revalidatingEntry = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, task.segmentCacheMap, fetchStrategy, nodeTree);
1342
+ if (revalidatingEntry.status === _cache.EntryStatus.Empty) {
1343
+ (0, _cache.upgradeToPendingSegment)(revalidatingEntry, fetchStrategy);
1344
+ node.entry = revalidatingEntry;
1345
+ needsFetch = true;
1346
+ // Block on the revalidation request we just spawned, in
1347
+ // addition to the original in-flight entry (blocked below).
1348
+ blockTaskOnPendingResponse(task, revalidatingEntry);
1349
+ } else {
1350
+ node.entry = null;
1351
+ }
1352
+ } else {
1353
+ node.entry = null;
972
1354
  }
1355
+ blockTaskOnPendingResponse(task, nodeEntry);
973
1356
  break;
974
- }
975
- case _cache.EntryStatus.Rejected:
976
- {
977
- // The existing entry in the cache was rejected. Depending on how it
978
- // was originally fetched, we may or may not want to revalidate it.
979
- switch(segment.fetchStrategy){
980
- case _types.FetchStrategy.PPR:
981
- case _types.FetchStrategy.PPRRuntime:
982
- case _types.FetchStrategy.Full:
983
- break;
984
- case _types.FetchStrategy.LoadingBoundary:
985
- // There's a rejected entry, but it was fetched using the loading
986
- // boundary strategy. So the reason it wasn't returned by the server
987
- // might just be because it was inside a loading boundary. Or because
988
- // there was a dynamic rewrite. Revalidate it using the per-
989
- // segment strategy.
990
- //
991
- // Because a rejected segment will definitely prevent the segment (and
992
- // all of its children) from rendering, we perform this revalidation
993
- // immediately instead of deferring it to a background task.
994
- pingPPRSegmentRevalidation(now, route, routeKey, tree);
995
- break;
996
- default:
997
- segment.fetchStrategy;
1357
+ case _cache.EntryStatus.Rejected:
1358
+ if (spawnRevalidations && // During a static shell attempt, a rejected entry is skipped
1359
+ // outright: no retry revalidation, and — deliberately — no runtime
1360
+ // fallback either (per-segment rejection semantics; the entry's
1361
+ // staleAt governs when it may be retried). Note that the cache
1362
+ // path encodes "no shell exists" (a static response whose shell
1363
+ // byte offset is 0, i.e. the page wasn't produced by staged
1364
+ // rendering) as a rejection too, so such segments get no shell
1365
+ // prefetch at all — an edge that shouldn't occur for hint-set
1366
+ // Cache Components routes.
1367
+ fetchStrategy === _types.FetchStrategy.PPR && (0, _cache.canNewFetchStrategyProvideMoreContent)(nodeEntry.fetchStrategy, fetchStrategy)) {
1368
+ const revalidatingEntry = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, task.segmentCacheMap, fetchStrategy, nodeTree);
1369
+ if (revalidatingEntry.status === _cache.EntryStatus.Empty) {
1370
+ (0, _cache.upgradeToPendingSegment)(revalidatingEntry, fetchStrategy);
1371
+ node.entry = revalidatingEntry;
1372
+ needsFetch = true;
1373
+ // Block on the retry revalidation we just spawned, like any
1374
+ // other pending response. If the retry succeeds, its upsert
1375
+ // evicts the rejected entry (see evictShadowingSegmentEntries
1376
+ // in cache.ts) and the re-run pass reads the healed data. If it
1377
+ // rejects too, the re-run observes a settled revalidation and
1378
+ // moves on.
1379
+ blockTaskOnPendingResponse(task, revalidatingEntry);
1380
+ } else {
1381
+ node.entry = null;
1382
+ }
1383
+ } else {
1384
+ node.entry = null;
998
1385
  }
999
1386
  break;
1000
- }
1001
- case _cache.EntryStatus.Fulfilled:
1002
- break;
1003
- default:
1004
- segment;
1387
+ case _cache.EntryStatus.Fulfilled:
1388
+ {
1389
+ const runtimeWouldProvideMore = wouldRuntimeRequestProvideMore(nodeEntry, fetchStrategy);
1390
+ if (runtimeWouldProvideMore) {
1391
+ // A runtime request would return more content for this segment
1392
+ // than the entry contains. Surface it via the return value, so the
1393
+ // caller can deopt this subtree to a runtime prefetch.
1394
+ needsRuntimeRequest = true;
1395
+ }
1396
+ // For entries below this phase's tier, upgrade during the phase
1397
+ // itself — no background deferral, since the whole point of the
1398
+ // Speculative phase is to bring the cache up to the
1399
+ // per-link-concrete tier. `isPartial` ensures a complete entry isn't
1400
+ // re-fetched.
1401
+ //
1402
+ // Exception: when a runtime request would return more AND this walk
1403
+ // permits one, skip the static path entirely. The runtime request
1404
+ // covers this segment and supersedes anything a static fetch could
1405
+ // add, so a static upgrade would at best duplicate it — delivering
1406
+ // the same content twice — and at worst replace runtime content with
1407
+ // static content.
1408
+ //
1409
+ // When no runtime request is permitted, the signal is irrelevant:
1410
+ // nothing can act on it, so it must not suppress the static upgrade.
1411
+ // That's what keeps a link prefetching static content on top of a
1412
+ // cached shell.
1413
+ const willBeSupersededByRuntimeRequest = runtimeWouldProvideMore && walkRequiresRuntimeCompleteness(fetchStrategy, route);
1414
+ // Check if we should attempt to upgrade a fallback ISR response to
1415
+ // a concrete version.
1416
+ const isUpgradeableISRFallbackRetry = nodeEntry.isUpgradeableISRFallback && // If the status is empty, then we haven't yet attempted to upgrade
1417
+ // the fallback.
1418
+ //
1419
+ // If the status is fulfilled, then the fallback was
1420
+ // successfully upgraded to a concrete version.
1421
+ //
1422
+ // Do not attempt to upgrade if the status is Pending or Rejected.
1423
+ (task.fallbackRetryStatus === _cache.EntryStatus.Empty || task.fallbackRetryStatus === _cache.EntryStatus.Fulfilled);
1424
+ if (spawnRevalidations && !willBeSupersededByRuntimeRequest && (nodeEntry.isPartial && (0, _cache.canNewFetchStrategyProvideMoreContent)(nodeEntry.fetchStrategy, fetchStrategy) || isUpgradeableISRFallbackRetry)) {
1425
+ const revalidatingEntry = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, task.segmentCacheMap, fetchStrategy, nodeTree);
1426
+ if (revalidatingEntry.status === _cache.EntryStatus.Empty) {
1427
+ (0, _cache.upgradeToPendingSegment)(revalidatingEntry, fetchStrategy);
1428
+ node.entry = revalidatingEntry;
1429
+ needsFetch = true;
1430
+ // The pass blocks on every request it spawns, including
1431
+ // revalidations of an already-fulfilled entry.
1432
+ blockTaskOnPendingResponse(task, revalidatingEntry);
1433
+ } else {
1434
+ // A non-empty revalidating entry means a request is already in
1435
+ // flight (or recently settled), so we dedupe and don't issue a
1436
+ // competing one — including for ISR-fallback upgrades, which then
1437
+ // share the same revalidation across tasks.
1438
+ node.entry = null;
1439
+ if (revalidatingEntry.status === _cache.EntryStatus.Pending) {
1440
+ // The deduped-against revalidation is still in flight, and this
1441
+ // pass depends on its response. Wait for it before the phase
1442
+ // can complete. (A settled revalidation we chose not to use
1443
+ // needs no waiting and is not a prefetch failure — the base
1444
+ // entry here is already Fulfilled.)
1445
+ blockTaskOnPendingResponse(task, revalidatingEntry);
1446
+ }
1447
+ }
1448
+ } else {
1449
+ node.entry = null;
1450
+ }
1451
+ break;
1452
+ }
1453
+ default:
1454
+ nodeEntry;
1455
+ }
1456
+ node = node.parent;
1457
+ }
1458
+ if (needsFetch) {
1459
+ spawnPrefetchSubtask((0, _cache.fetchSegmentsOnCacheMiss)(task, route, routeKey, tree, segments, segmentCount, fetchStrategy));
1005
1460
  }
1006
- // Segments do not have dependent tasks, so once the prefetch is initiated,
1007
- // there's nothing else for us to do (except write the server data into the
1008
- // entry, which is handled by `fetchSegmentOnCacheMiss`).
1461
+ return needsRuntimeRequest;
1009
1462
  }
1010
1463
  /**
1011
- * Walks the RouteTree (including the head metadata) and collects any segments
1012
- * that are still Empty into a Map, upgrading them to Pending. These entries
1013
- * will be fulfilled by the inlined prefetch response.
1014
- */ function collectInlinedEntries(now, route) {
1015
- const entries = new Map();
1016
- collectInlinedEntriesImpl(now, route.tree, entries);
1017
- // Also collect the head/metadata entry.
1018
- const headEntry = (0, _cache.readOrCreateSegmentCacheEntry)(now, _types.FetchStrategy.PPR, route.metadata);
1019
- if (headEntry.status === _cache.EntryStatus.Empty) {
1020
- entries.set(route.metadata.requestKey, (0, _cache.upgradeToPendingSegment)(headEntry, _types.FetchStrategy.PPR));
1464
+ * During the tree walk, decide whether this segment should be added to the
1465
+ * in-progress bundle (if it has InlinedIntoChild) or finalize the bundle
1466
+ * and ping it, triggering a fetch if any of its entries need data (if it
1467
+ * doesn't). Returns the updated bundle to pass to children (null if the
1468
+ * bundle was finalized here), along with the needs-runtime signal from the
1469
+ * bundle ping, if one happened (always false otherwise).
1470
+ */ function accumulateSegmentBundle(now, task, route, tree, parentBundle, // Per-pass static walk strategy; see pingRootRouteTree where it's derived.
1471
+ // PPR for the normal static bundling walk; StaticShell during the Shell
1472
+ // phase's static App Shell attempt, whose entries are keyed at the shell
1473
+ // vary paths.
1474
+ fetchStrategy, // False when finishing a chain on a runtime-prefetch bailout; see
1475
+ // pingSegmentBundle.
1476
+ spawnRevalidations) {
1477
+ // Prefetching is disabled for this segment (prefetch: 'force-disabled'):
1478
+ // the server emits null for its slot, and it participates in the bundle
1479
+ // chain with null tree/entry so the null-slot positions line up.
1480
+ // (Partial Prefetching segments are NOT in this mask — the server emits
1481
+ // static data for them unconditionally.) Intentionally not gated by the
1482
+ // prefetch inlining flag: we never statically prefetch unprefetchable
1483
+ // segments.
1484
+ if (tree.prefetchHints & _approutertypes.StaticPrefetchDisabled) {
1485
+ return {
1486
+ bundle: {
1487
+ tree: null,
1488
+ entry: null,
1489
+ parent: parentBundle
1490
+ },
1491
+ needsRuntimeRequest: false
1492
+ };
1021
1493
  }
1022
- return entries;
1494
+ const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.segmentCacheMap, fetchStrategy, tree);
1495
+ if (process.env.__NEXT_PREFETCH_INLINING && tree.prefetchHints & _approutertypes.PrefetchHint.InlinedIntoChild) {
1496
+ if (segment.status === _cache.EntryStatus.Pending) {
1497
+ // The chain this entry joins may be dropped before it's ever pinged
1498
+ // (see the drop sites in pingNewPartOfCacheComponentsTree), and only
1499
+ // the ping blocks on Pending entries. Register on the in-flight
1500
+ // response at read time instead, so the pass observes it before the
1501
+ // phase can complete even if the chain is dropped. When the chain does
1502
+ // get pinged, the ping's own registration dedupes against this one.
1503
+ blockTaskOnPendingResponse(task, segment);
1504
+ }
1505
+ return {
1506
+ bundle: {
1507
+ tree,
1508
+ entry: segment,
1509
+ parent: parentBundle
1510
+ },
1511
+ // No bundle ping happens here, but the node's own entry may already be
1512
+ // fulfilled and insufficient. Report that signal directly: the chain
1513
+ // ping only reaches the terminal descendant, and if that descendant is
1514
+ // itself a decision point it consumes the signal for its own subtree,
1515
+ // leaving this ancestor's insufficiency invisible to the decision
1516
+ // point above it.
1517
+ needsRuntimeRequest: segment.status === _cache.EntryStatus.Fulfilled && wouldRuntimeRequestProvideMore(segment, fetchStrategy)
1518
+ };
1519
+ }
1520
+ // Not bundled. Build a single-node bundle and ping it. If this page
1521
+ // accepts the head (HeadInlinedIntoSelf), prepend the head's cache entry
1522
+ // to the bundle.
1523
+ let effectiveParent = parentBundle;
1524
+ if (process.env.__NEXT_PREFETCH_INLINING && tree.prefetchHints & _approutertypes.PrefetchHint.HeadInlinedIntoSelf) {
1525
+ effectiveParent = {
1526
+ tree: route.metadata,
1527
+ entry: (0, _cache.readOrCreateSegmentCacheEntry)(now, task.segmentCacheMap, fetchStrategy, route.metadata),
1528
+ parent: parentBundle
1529
+ };
1530
+ }
1531
+ const segments = {
1532
+ tree,
1533
+ entry: segment,
1534
+ parent: effectiveParent
1535
+ };
1536
+ const needsRuntimeRequest = pingSegmentBundle(now, task, route, task.key, tree, segments, fetchStrategy, spawnRevalidations);
1537
+ return {
1538
+ bundle: null,
1539
+ needsRuntimeRequest
1540
+ };
1023
1541
  }
1024
- function collectInlinedEntriesImpl(now, tree, entries) {
1025
- const entry = (0, _cache.readOrCreateSegmentCacheEntry)(now, _types.FetchStrategy.PPR, tree);
1026
- if (entry.status === _cache.EntryStatus.Empty) {
1027
- entries.set(tree.requestKey, (0, _cache.upgradeToPendingSegment)(entry, _types.FetchStrategy.PPR));
1542
+ function finishStaticBundleOnRuntimeBailout(now, task, route, tree, parentBundle, // The same static walk strategy the parent bundle was accumulated with.
1543
+ // Any needs-runtime signal from finishing the bundle is dropped: the
1544
+ // caller is already deopting this subtree to a runtime prefetch.
1545
+ fetchStrategy) {
1546
+ const bundle = accumulateSegmentBundle(now, task, route, tree, parentBundle, fetchStrategy, // The batched runtime request covers the deopted subtree; only fetch
1547
+ // Empty entries the chain would otherwise strand — never spawn
1548
+ // revalidations over settled or in-flight ones. See pingSegmentBundle.
1549
+ false).bundle;
1550
+ if (bundle === null) {
1551
+ return;
1028
1552
  }
1029
1553
  if (tree.slots !== null) {
1030
- for(const parallelRouteKey in tree.slots){
1031
- collectInlinedEntriesImpl(now, tree.slots[parallelRouteKey], entries);
1554
+ for (const childTree of tree.slots.values()){
1555
+ if (childTree.prefetchHints & _approutertypes.PrefetchHint.ParentInlinedIntoSelf) {
1556
+ finishStaticBundleOnRuntimeBailout(now, task, route, childTree, bundle, fetchStrategy);
1557
+ return;
1558
+ }
1032
1559
  }
1033
1560
  }
1034
1561
  }
1035
- function pingPPRSegmentRevalidation(now, route, routeKey, tree) {
1036
- const revalidatingSegment = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, _types.FetchStrategy.PPR, tree);
1037
- switch(revalidatingSegment.status){
1038
- case _cache.EntryStatus.Empty:
1039
- // Spawn a prefetch request. The fetch function handles upserting
1040
- // the entry at the correct fulfilled vary path upon completion.
1041
- spawnPrefetchSubtask((0, _cache.fetchSegmentOnCacheMiss)(route, (0, _cache.upgradeToPendingSegment)(revalidatingSegment, _types.FetchStrategy.PPR), routeKey, tree));
1042
- break;
1043
- case _cache.EntryStatus.Pending:
1044
- break;
1045
- case _cache.EntryStatus.Fulfilled:
1046
- case _cache.EntryStatus.Rejected:
1047
- break;
1048
- default:
1049
- revalidatingSegment;
1050
- }
1051
- }
1052
- function pingFullSegmentRevalidation(now, tree, fetchStrategy) {
1053
- const revalidatingSegment = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, fetchStrategy, tree);
1562
+ function pingFullSegmentRevalidation(now, task, tree, fetchStrategy) {
1563
+ const revalidatingSegment = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, task.segmentCacheMap, fetchStrategy, tree);
1054
1564
  if (revalidatingSegment.status === _cache.EntryStatus.Empty) {
1055
1565
  // During a Full/PPRRuntime prefetch, a single dynamic request is made for all the
1056
1566
  // segments that we need. So we don't initiate a request here directly. By
@@ -1067,7 +1577,7 @@ function pingFullSegmentRevalidation(now, tree, fetchStrategy) {
1067
1577
  if ((0, _cache.canNewFetchStrategyProvideMoreContent)(nonEmptyRevalidatingSegment.fetchStrategy, fetchStrategy)) {
1068
1578
  // The existing revalidation was fetched using a less specific strategy.
1069
1579
  // Reset it and start a new revalidation.
1070
- const emptySegment = (0, _cache.overwriteRevalidatingSegmentCacheEntry)(now, fetchStrategy, tree);
1580
+ const emptySegment = (0, _cache.overwriteRevalidatingSegmentCacheEntry)(now, task.segmentCacheMap, fetchStrategy, tree);
1071
1581
  const pendingSegment = (0, _cache.upgradeToPendingSegment)(emptySegment, fetchStrategy);
1072
1582
  // The upsert is handled by fulfillEntrySpawnedByRuntimePrefetch
1073
1583
  // when the dynamic prefetch response is written into the cache.
@@ -1076,6 +1586,9 @@ function pingFullSegmentRevalidation(now, tree, fetchStrategy) {
1076
1586
  switch(nonEmptyRevalidatingSegment.status){
1077
1587
  case _cache.EntryStatus.Pending:
1078
1588
  // There's already an in-progress prefetch that includes this segment.
1589
+ // The pass needs the contents of that response, too. Wait for it
1590
+ // before the phase can complete.
1591
+ blockTaskOnPendingResponse(task, nonEmptyRevalidatingSegment);
1079
1592
  return null;
1080
1593
  case _cache.EntryStatus.Fulfilled:
1081
1594
  case _cache.EntryStatus.Rejected:
@@ -1101,11 +1614,19 @@ function doesCurrentSegmentMatchCachedSegment(route, currentSegment, cachedSegme
1101
1614
  // _and_ the server response format, when conceptually those are three
1102
1615
  // different things and treated in different ways. We should encode more of
1103
1616
  // this information into the type design so mistakes are less likely.
1104
- return currentSegment === (0, _segment.addSearchParamsIfPageSegment)(_segment.PAGE_SEGMENT_KEY, Object.fromEntries(new URLSearchParams(route.renderedSearch)));
1617
+ return currentSegment === (0, _segment.addSearchParamsIfPageSegment)(_segment.PAGE_SEGMENT_KEY, (0, _routeparams.urlSearchParamsToParsedUrlQuery)(new URLSearchParams(route.renderedSearch)));
1105
1618
  }
1106
1619
  // Non-page segments are compared using the same function as the server
1107
1620
  return (0, _matchsegments.matchSegment)(cachedSegment, currentSegment);
1108
1621
  }
1622
+ function subtreeHasSpeculativePrefetch(fetchStrategy, prefetchHints) {
1623
+ return(// Check if this is a "full" prefetch (<Link prefetch={true}>).
1624
+ fetchStrategy === _types.FetchStrategy.Full || // Check if something in this subtree is configured to be eagerly
1625
+ // prefetched at the route level. Segments that don't opt into Partial
1626
+ // Prefetching are marked eager, so a route without any Partial Prefetching
1627
+ // still speculatively prefetches everything.
1628
+ (prefetchHints & _approutertypes.PrefetchHint.SubtreeHasEagerPrefetch) !== 0);
1629
+ }
1109
1630
  // -----------------------------------------------------------------------------
1110
1631
  // The remainder of the module is a MinHeap implementation. Try not to put any
1111
1632
  // logic below here unless it's related to the heap algorithm. We can extract