failproofai 1.0.12 → 1.0.13-beta.2

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 (302) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +13 -13
  3. package/.next/standalone/.next/prerender-manifest.json +4 -4
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
  6. package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
  7. package/.next/standalone/.next/server/app/_global-error/page.js +2 -1
  8. package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.rsc +2 -2
  12. package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
  13. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  14. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
  16. package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  17. package/.next/standalone/.next/server/app/_not-found/page.js +4 -3
  18. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
  22. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  23. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  24. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  25. package/.next/standalone/.next/server/app/api/audit/invite/route.js +6 -5
  26. package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
  27. package/.next/standalone/.next/server/app/api/audit/run/route.js +27 -26
  28. package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
  29. package/.next/standalone/.next/server/app/api/audit/status/route.js +4 -3
  30. package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
  31. package/.next/standalone/.next/server/app/api/auth/login-request/route.js +6 -5
  32. package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
  33. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js +6 -5
  34. package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/api/auth/logout/route.js +6 -5
  36. package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
  37. package/.next/standalone/.next/server/app/api/auth/status/route.js +6 -5
  38. package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
  39. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js +4 -3
  40. package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
  41. package/.next/standalone/.next/server/app/audit/page/build-manifest.json +2 -2
  42. package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
  43. package/.next/standalone/.next/server/app/audit/page.js +7 -6
  44. package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
  45. package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/index.html +1 -1
  47. package/.next/standalone/.next/server/app/index.rsc +3 -3
  48. package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  49. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
  50. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  51. package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
  52. package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
  53. package/.next/standalone/.next/server/app/page.js +6 -5
  54. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  55. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  56. package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
  57. package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
  58. package/.next/standalone/.next/server/app/policies/page.js +5 -4
  59. package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
  60. package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
  61. package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
  62. package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
  63. package/.next/standalone/.next/server/app/project/[name]/page.js +21 -20
  64. package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
  65. package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
  66. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
  67. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
  68. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
  69. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +10 -9
  70. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
  71. package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
  72. package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
  73. package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
  74. package/.next/standalone/.next/server/app/projects/page.js +7 -6
  75. package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
  76. package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  77. package/.next/standalone/.next/server/app/settings/page/build-manifest.json +2 -2
  78. package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  79. package/.next/standalone/.next/server/app/settings/page.js +6 -5
  80. package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
  81. package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/chunks/{[externals]__0vt9i6fqinjne._.js → [externals]__1h83uo-b1b6-2._.js} +1 -1
  83. package/.next/standalone/.next/server/chunks/[externals]__214wn4wh2x79y._.js +3 -0
  84. package/.next/standalone/.next/server/chunks/{[externals]__1rlxpymm37wel._.js → [root-of-the-server]__031qp1lkow_kc._.js} +2 -2
  85. package/.next/standalone/.next/server/chunks/[root-of-the-server]__038kwryp970nh._.js +3 -0
  86. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0_hsnj_a2mvl_._.js → [root-of-the-server]__03s1za0hn71yp._.js} +2 -2
  87. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0wg9dk8x8bnau._.js → [root-of-the-server]__07a0sa6fuw5_b._.js} +2 -2
  88. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08atcie7jzswm._.js +3 -0
  89. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08dchfudh2_4f._.js +1 -1
  90. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0car70pylmvor._.js +3 -0
  91. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0spt0kv8azrpl._.js +1 -1
  92. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__12kq3x-h7t7i1._.js → [root-of-the-server]__0yvyp5b7jmlc4._.js} +2 -2
  93. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__02vous7mpi2xm._.js → [root-of-the-server]__145vo_drnuvas._.js} +2 -2
  94. package/.next/standalone/.next/server/chunks/{[externals]__0h0p9dmv_e7r7._.js → [root-of-the-server]__1a2d0ewycsp6k._.js} +2 -2
  95. package/.next/standalone/.next/server/chunks/{[externals]__1_407huhlmj1m._.js → [root-of-the-server]__1am_1tz0o0aqz._.js} +2 -2
  96. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__03i5o4a840guz._.js → [root-of-the-server]__1gxfzuvpyw30j._.js} +1 -1
  97. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1j6kfp0vzu5rw._.js +3 -0
  98. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1l0ayum_hqqsw._.js +3 -0
  99. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1lh8c0mmhdrbj._.js +3 -0
  100. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1o9rznwc0w7og._.js +3 -0
  101. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0f_4g-vazrvxv._.js → [root-of-the-server]__1o_622x0fglpr._.js} +1 -1
  102. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1oclamblhzhrf._.js +68 -0
  103. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1v1-l-83czzsr._.js +63 -0
  104. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1a5zkndjwlc13._.js → [root-of-the-server]__1wwi53kkqhnfi._.js} +1 -1
  105. package/.next/standalone/.next/server/chunks/{_1y590mjzpkbos._.js → _02sa8fcu9_9xo._.js} +2 -2
  106. package/.next/standalone/.next/server/chunks/_0tovk6q0miud6._.js +1 -1
  107. package/.next/standalone/.next/server/chunks/_0trp3ycqv17cl._.js +1 -1
  108. package/.next/standalone/.next/server/chunks/_1-2owkp-1_987._.js +1 -1
  109. package/.next/standalone/.next/server/chunks/_13ltj8a9z92o8._.js +1 -1
  110. package/.next/standalone/.next/server/chunks/_15k37au70vjvg._.js +1 -1
  111. package/.next/standalone/.next/server/chunks/_18rfu4__wjhwb._.js +1 -1
  112. package/.next/standalone/.next/server/chunks/_1ek68lnh2daur._.js +2 -2
  113. package/.next/standalone/.next/server/chunks/_1fz8m31sndkcu._.js +1 -1
  114. package/.next/standalone/.next/server/chunks/_1ogwigfb0163w._.js +1 -1
  115. package/.next/standalone/.next/server/chunks/_1vslkoe35wok6._.js +1 -1
  116. package/.next/standalone/.next/server/chunks/node_modules_@opentelemetry_api_build_esm_index_0oo58a7rymoxh.js +3 -0
  117. package/.next/standalone/.next/server/chunks/node_modules_@opentelemetry_api_build_esm_index_1jp9ij0_ddtgk.js +3 -0
  118. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oigsgz07._.js +2 -2
  119. package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p77cu37y._.js +2 -2
  120. package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4vkpxxu7._.js +1 -1
  121. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ffu2-38y03ic._.js → [root-of-the-server]__021vebe-4il8s._.js} +1 -1
  122. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__075uro8t92s0_._.js +14 -0
  123. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
  124. package/.next/standalone/.next/server/chunks/ssr/{[externals]__12qr51qgrrt6o._.js → [root-of-the-server]__097i34ct1o88x._.js} +2 -2
  125. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0alpzjn3450sr._.js +3 -0
  126. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0aup10z2o8zc1._.js +3 -0
  127. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bigvy9xmv2ka._.js +1 -1
  128. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bioghlkjf7s7._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__01j58mdcdw0vn._.js → [root-of-the-server]__0ed1zh4scn7-k._.js} +1 -1
  130. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0naevg4bcoh54._.js → [root-of-the-server]__0evgy902m9h5e._.js} +2 -2
  131. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h86bl2qf0k_o._.js +1 -1
  132. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0nhm28v58ty9z._.js +3 -0
  133. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pia5h3p8re4c._.js +1 -1
  134. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vse4qi496ol-._.js +3 -0
  135. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__17r4zrwanhp6r._.js → [root-of-the-server]__0yb3u36xjy3b9._.js} +1 -1
  136. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0g8b0kyorya-t._.js → [root-of-the-server]__0ywj2u6ovfm_5._.js} +1 -1
  137. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1-ey9fgesfbc0._.js +1 -1
  138. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0zn1d4blhd3bu._.js → [root-of-the-server]__10v5cyxvj64j4._.js} +1 -1
  139. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15usvs-ms-0hf._.js +1 -1
  140. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16gb3_92zvk5x._.js +1 -1
  141. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__190xwrr5zrfi3._.js +3 -0
  142. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__167mipqmjprq5._.js → [root-of-the-server]__19nvo1qfswchs._.js} +2 -2
  143. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1avi2kypusyb_._.js +1 -1
  144. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1vx7o8ukefudh._.js → [root-of-the-server]__1guwlpkyurdn9._.js} +1 -1
  145. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1k96jctukf65_._.js +3 -0
  146. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1r7drlqli-ado._.js +1 -1
  147. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1sj-wn2jp6va5._.js +3 -0
  148. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1vofkb2oq7p7e._.js +1 -1
  149. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1s2-ck3k3rsoo._.js → [root-of-the-server]__20dt376-socef._.js} +1 -1
  150. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1lnfv02ucky7m._.js → [root-of-the-server]__2158020r_amn9._.js} +1 -1
  151. package/.next/standalone/.next/server/chunks/ssr/_0eoura3_9gjb-._.js +1 -1
  152. package/.next/standalone/.next/server/chunks/ssr/_0pedwblqdoh58._.js +1 -1
  153. package/.next/standalone/.next/server/chunks/ssr/_1_ozgifqv1ssi._.js +1 -1
  154. package/.next/standalone/.next/server/chunks/ssr/_1djqs9i27e4kg._.js +1 -1
  155. package/.next/standalone/.next/server/chunks/ssr/{_1d98fyfrcaqhy._.js → _1nvqg4si0splb._.js} +2 -2
  156. package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js +2 -2
  157. package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9snixb5fd-._.js +1 -1
  158. package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47q0xq5w._.js +1 -1
  159. package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js +1 -1
  160. package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpcz0uxur._.js +1 -1
  161. package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h47jmhhd._.js +1 -1
  162. package/.next/standalone/.next/server/chunks/ssr/{node_modules_09s4n108bqreq._.js → node_modules_0ptcnmeaxvd_a._.js} +22 -2
  163. package/.next/standalone/.next/server/chunks/ssr/node_modules_@opentelemetry_api_build_esm_index_0ntwr8lzj6p2i.js +3 -0
  164. package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_0tqc05n832v7a.js → node_modules_html-to-image_es_index_1gk40bvx2bftt.js} +1 -1
  165. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_0bz67659f5z-3._.js +32 -0
  166. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +3 -3
  167. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0ocrceo0c9psx._.js +32 -0
  168. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1alv566ojmz5j._.js +32 -0
  169. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1khq67j4vo9y4._.js +3 -0
  170. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_shared_lib_0ftnv26hg1lry._.js +3 -0
  171. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0dagmbznysrc2._.js +1 -1
  172. package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuznb72p7z._.js +2 -2
  173. package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
  174. package/.next/standalone/.next/server/middleware-build-manifest.js +13 -13
  175. package/.next/standalone/.next/server/middleware.js +2 -2
  176. package/.next/standalone/.next/server/pages/404.html +1 -1
  177. package/.next/standalone/.next/server/pages/500.html +1 -1
  178. package/.next/standalone/.next/server/preview-props.json +3 -3
  179. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  180. package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
  181. package/.next/standalone/.next/static/chunks/061bksch79zq2.js +1 -0
  182. package/.next/standalone/.next/static/chunks/{0wobqgosirs8p.js → 1l9lji2he-mbw.js} +1 -1
  183. package/.next/standalone/.next/static/chunks/{1kduj74-715jh.js → 1mkf3bas1g5ka.js} +1 -1
  184. package/.next/standalone/.next/static/chunks/22gs9785ug-vp.js +1 -0
  185. package/.next/standalone/.next/static/chunks/{0el9n3h9_zp5m.js → 2f9-xdgd1o3r5.js} +1 -1
  186. package/.next/standalone/.next/static/chunks/{0umzct31duk5g.js → 2q-6h4rclnu98.js} +1 -1
  187. package/.next/standalone/.next/static/chunks/{27cavoc8paelg.js → 2x-77r0k0xm3b.js} +1 -1
  188. package/.next/standalone/.next/static/chunks/2xox4fr0q-ftn.js +1 -0
  189. package/.next/standalone/.next/static/chunks/3lgxb73wehfv2.js +1 -0
  190. package/.next/standalone/.next/static/chunks/{063al_q720fkj.js → 3xgxl1s_in776.js} +2 -2
  191. package/.next/standalone/.next/static/chunks/44rukkkzacqkl.js +6 -0
  192. package/.next/standalone/SECURITY.md +20 -4
  193. package/.next/standalone/fp-cloud-cli/CHANGELOG.md +15 -1
  194. package/.next/standalone/fp-cloud-cli/fp_cli/_version.py +1 -1
  195. package/.next/standalone/fp-cloud-cli/uv.lock +4 -4
  196. package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
  197. package/.next/standalone/node_modules/@next/env/package.json +1 -1
  198. package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
  199. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +24 -24
  200. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +26 -26
  201. package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +3 -3
  202. package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +13 -13
  203. package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
  204. package/.next/standalone/node_modules/next/dist/server/app-render/app-render.js +41 -40
  205. package/.next/standalone/node_modules/next/dist/server/app-render/async-local-storage.js +1 -1
  206. package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering-validation.js +814 -0
  207. package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering.js +1 -799
  208. package/.next/standalone/node_modules/next/dist/server/base-server.js +39 -5
  209. package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
  210. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
  211. package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
  212. package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
  213. package/.next/standalone/node_modules/next/dist/server/lib/dedupe-fetch.js +4 -43
  214. package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch-symbol.js +13 -0
  215. package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch.js +3 -7
  216. package/.next/standalone/node_modules/next/dist/server/lib/router-server.js +3 -3
  217. package/.next/standalone/node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js +77 -12
  218. package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
  219. package/.next/standalone/node_modules/next/dist/server/lib/trace/constants.js +12 -0
  220. package/.next/standalone/node_modules/next/dist/server/lib/trace/tracer.js +30 -14
  221. package/.next/standalone/node_modules/next/dist/server/next-server.js +10 -11
  222. package/.next/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +29 -23
  223. package/.next/standalone/node_modules/next/dist/server/route-modules/route-module.js +85 -8
  224. package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1 -1
  225. package/.next/standalone/node_modules/next/dist/server/web/adapter.js +124 -65
  226. package/.next/standalone/node_modules/next/dist/server/web/forward-trace-context.js +102 -0
  227. package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  228. package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  229. package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
  230. package/.next/standalone/node_modules/next/package.json +10 -10
  231. package/.next/standalone/node_modules/react/cjs/react.production.js +1 -1
  232. package/.next/standalone/node_modules/react/package.json +1 -1
  233. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
  234. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
  235. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +31 -27
  236. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +33 -27
  237. package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +38 -30
  238. package/.next/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
  239. package/.next/standalone/node_modules/react-dom/package.json +2 -2
  240. package/.next/standalone/package.json +10 -10
  241. package/.next/standalone/sdk/python/CHANGELOG.md +8 -4
  242. package/.next/standalone/sdk/python/failproofai_sdk/evaluator/source.py +2 -2
  243. package/.next/standalone/sdk/python/pyproject.toml +2 -7
  244. package/.next/standalone/sdk/python/skill/references/frameworks.md +0 -15
  245. package/.next/standalone/sdk/python/tests/test_docs.py +1 -4
  246. package/.next/standalone/sdk/python/tests/test_evaluator_source.py +1 -1
  247. package/.next/standalone/sdk/python/tests/test_packaging.py +4 -7
  248. package/.next/standalone/sdk/python/tests/test_zero_dependencies.py +2 -13
  249. package/.next/standalone/sdk/python/uv.lock +40 -902
  250. package/.next/standalone/sdk/typescript/CHANGELOG.md +52 -0
  251. package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package-lock.json +176 -68
  252. package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package.json +2 -2
  253. package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package-lock.json +3 -3
  254. package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package.json +1 -1
  255. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package-lock.json +115 -98
  256. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package.json +3 -3
  257. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package-lock.json +4 -4
  258. package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package.json +1 -1
  259. package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package-lock.json +171 -149
  260. package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package.json +5 -2
  261. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package-lock.json +27 -15
  262. package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package.json +2 -1
  263. package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/deno-npm.ts +1 -1
  264. package/.next/standalone/server.js +1 -1
  265. package/README.md +0 -6
  266. package/dist/cli.mjs +369 -221
  267. package/dist/worker.mjs +1 -1
  268. package/hermes-plugin/plugin.yaml +1 -1
  269. package/package.json +10 -10
  270. package/scripts/sync-agent-cli-harnesses-prompt.md +26 -31
  271. package/src/hooks/daemon-service.ts +168 -3
  272. package/src/hooks/uninstall-cli.ts +3 -0
  273. package/.next/standalone/.codex/hooks.json +0 -76
  274. package/.next/standalone/.cursor/hooks.json +0 -47
  275. package/.next/standalone/.factory/hooks.json +0 -112
  276. package/.next/standalone/.next/server/chunks/[externals]__1x24dzcbbq6-g._.js +0 -3
  277. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0__a_je8fsn65._.js +0 -3
  278. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-oi4gdtmlo5._.js +0 -3
  279. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t9ufnv5hi2hq._.js +0 -327
  280. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1aaw59g-5uty7._.js +0 -322
  281. package/.next/standalone/.next/server/chunks/[root-of-the-server]__1hqpg6vgmfexv._.js +0 -3
  282. package/.next/standalone/.next/server/chunks/ssr/[externals]__0ilfh9mfnzsth._.js +0 -3
  283. package/.next/standalone/.next/server/chunks/ssr/[externals]__0ohnuzsaozaca._.js +0 -3
  284. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pwj2h2efe5f-._.js +0 -14
  285. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js +0 -271
  286. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_158jo-9mwvgad._.js +0 -291
  287. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_19r82zsxo2jj1._.js +0 -291
  288. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js +0 -3
  289. package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js +0 -23
  290. package/.next/standalone/.next/static/chunks/0k7g_8x3o6gd-.js +0 -1
  291. package/.next/standalone/.next/static/chunks/12rug3jilwqzs.js +0 -1
  292. package/.next/standalone/.next/static/chunks/2701amhrbsbot.js +0 -1
  293. package/.next/standalone/.next/static/chunks/2ve23a7keupjw.js +0 -1
  294. package/.next/standalone/.next/static/chunks/3bv6xaoitjpnh.js +0 -6
  295. package/.next/standalone/.opencode/opencode.json +0 -4
  296. package/.next/standalone/.opencode/plugins/failproofai.mjs +0 -210
  297. package/.next/standalone/.pi/settings.json +0 -5
  298. package/.next/standalone/node_modules/react/cjs/react.development.js +0 -1330
  299. package/scripts/dev-hook.mjs +0 -333
  300. /package/.next/standalone/.next/static/{D7LY1YSrw96ZxKSpxxrFw → TdOlUedz_AHC-0Ops67a_}/_buildManifest.js +0 -0
  301. /package/.next/standalone/.next/static/{D7LY1YSrw96ZxKSpxxrFw → TdOlUedz_AHC-0Ops67a_}/_clientMiddlewareManifest.js +0 -0
  302. /package/.next/standalone/.next/static/{D7LY1YSrw96ZxKSpxxrFw → TdOlUedz_AHC-0Ops67a_}/_ssgManifest.js +0 -0
@@ -23,35 +23,19 @@ Object.defineProperty(exports, "__esModule", {
23
23
  value: true
24
24
  });
25
25
  0 && (module.exports = {
26
- DynamicHoleKind: null,
27
- PreludeState: null,
28
26
  abortAndThrowOnSynchronousRequestDataAccess: null,
29
27
  abortOnSynchronousPlatformIOAccess: null,
30
28
  accessedDynamicData: null,
31
29
  annotateDynamicAccess: null,
32
30
  consumeDynamicAccess: null,
33
31
  createDynamicTrackingState: null,
34
- createDynamicValidationState: null,
35
32
  createHangingInputAbortSignal: null,
36
- createInstantValidationState: null,
37
33
  formatDynamicAPIAccesses: null,
38
- getDisallowedReasonsInStaticRoute: null,
39
34
  getFirstDynamicReason: null,
40
- getNavigationDisallowedDynamicReasons: null,
41
- getStaticShellDisallowedDynamicReasons: null,
42
35
  isPrerenderInterruptedError: null,
43
- logDisallowedDynamicError: null,
44
36
  markCurrentScopeAsDynamic: null,
45
- throwIfDisallowedDynamic: null,
46
- throwIfDisallowedDynamicInStaticRoute: null,
47
- throwIfSyncIOUsed: null,
48
37
  throwToInterruptStaticGeneration: null,
49
- trackAllowedDynamicAccess: null,
50
- trackDynamicAccessInStaticRoute: null,
51
- trackDynamicDataInDynamicRender: null,
52
- trackDynamicHoleInNavigation: null,
53
- trackDynamicHoleInStaticShell: null,
54
- trackThrownErrorInNavigation: null
38
+ trackDynamicDataInDynamicRender: null
55
39
  });
56
40
  function _export(target, all) {
57
41
  for(var name in all)Object.defineProperty(target, name, {
@@ -60,12 +44,6 @@ function _export(target, all) {
60
44
  });
61
45
  }
62
46
  _export(exports, {
63
- DynamicHoleKind: function() {
64
- return DynamicHoleKind;
65
- },
66
- PreludeState: function() {
67
- return PreludeState;
68
- },
69
47
  abortAndThrowOnSynchronousRequestDataAccess: function() {
70
48
  return abortAndThrowOnSynchronousRequestDataAccess;
71
49
  },
@@ -84,88 +62,32 @@ _export(exports, {
84
62
  createDynamicTrackingState: function() {
85
63
  return createDynamicTrackingState;
86
64
  },
87
- createDynamicValidationState: function() {
88
- return createDynamicValidationState;
89
- },
90
65
  createHangingInputAbortSignal: function() {
91
66
  return createHangingInputAbortSignal;
92
67
  },
93
- createInstantValidationState: function() {
94
- return createInstantValidationState;
95
- },
96
68
  formatDynamicAPIAccesses: function() {
97
69
  return formatDynamicAPIAccesses;
98
70
  },
99
- getDisallowedReasonsInStaticRoute: function() {
100
- return getDisallowedReasonsInStaticRoute;
101
- },
102
71
  getFirstDynamicReason: function() {
103
72
  return getFirstDynamicReason;
104
73
  },
105
- getNavigationDisallowedDynamicReasons: function() {
106
- return getNavigationDisallowedDynamicReasons;
107
- },
108
- getStaticShellDisallowedDynamicReasons: function() {
109
- return getStaticShellDisallowedDynamicReasons;
110
- },
111
74
  isPrerenderInterruptedError: function() {
112
75
  return isPrerenderInterruptedError;
113
76
  },
114
- logDisallowedDynamicError: function() {
115
- return logDisallowedDynamicError;
116
- },
117
77
  markCurrentScopeAsDynamic: function() {
118
78
  return markCurrentScopeAsDynamic;
119
79
  },
120
- throwIfDisallowedDynamic: function() {
121
- return throwIfDisallowedDynamic;
122
- },
123
- throwIfDisallowedDynamicInStaticRoute: function() {
124
- return throwIfDisallowedDynamicInStaticRoute;
125
- },
126
- throwIfSyncIOUsed: function() {
127
- return throwIfSyncIOUsed;
128
- },
129
80
  throwToInterruptStaticGeneration: function() {
130
81
  return throwToInterruptStaticGeneration;
131
82
  },
132
- trackAllowedDynamicAccess: function() {
133
- return trackAllowedDynamicAccess;
134
- },
135
- trackDynamicAccessInStaticRoute: function() {
136
- return trackDynamicAccessInStaticRoute;
137
- },
138
83
  trackDynamicDataInDynamicRender: function() {
139
84
  return trackDynamicDataInDynamicRender;
140
- },
141
- trackDynamicHoleInNavigation: function() {
142
- return trackDynamicHoleInNavigation;
143
- },
144
- trackDynamicHoleInStaticShell: function() {
145
- return trackDynamicHoleInStaticShell;
146
- },
147
- trackThrownErrorInNavigation: function() {
148
- return trackThrownErrorInNavigation;
149
85
  }
150
86
  });
151
- const _react = /*#__PURE__*/ _interop_require_default(require("react"));
152
87
  const _hooksservercontext = require("../../client/components/hooks-server-context");
153
88
  const _staticgenerationbailout = require("../../client/components/static-generation-bailout");
154
89
  const _workunitasyncstorageexternal = require("./work-unit-async-storage.external");
155
- const _dynamicrenderingutils = require("../dynamic-rendering-utils");
156
- const _boundaryconstants = require("../../lib/framework/boundary-constants");
157
90
  const _scheduler = require("../../lib/scheduler");
158
- const _blockingroutemessages = require("./blocking-route-messages");
159
- const _invarianterror = require("../../shared/lib/invariant-error");
160
- const _boundaryconstants1 = require("./instant-validation/boundary-constants");
161
- const _boundarytracking = require("./instant-validation/boundary-tracking");
162
- const _instantmessages = require("../../shared/lib/instant-messages");
163
- const _reactbrowserbailout = require("../../shared/lib/lazy-dynamic/react-browser-bailout");
164
- function _interop_require_default(obj) {
165
- return obj && obj.__esModule ? obj : {
166
- default: obj
167
- };
168
- }
169
91
  function createDynamicTrackingState(isDebugDynamicAccesses) {
170
92
  return {
171
93
  isDebugDynamicAccesses,
@@ -174,19 +96,6 @@ function createDynamicTrackingState(isDebugDynamicAccesses) {
174
96
  syncDynamicErrorWithStackPostMicrotask: false
175
97
  };
176
98
  }
177
- function createDynamicValidationState() {
178
- return {
179
- hasSuspenseAboveBody: false,
180
- hasDynamicMetadata: false,
181
- dynamicMetadata: null,
182
- hasDynamicViewport: false,
183
- hasAllowedDynamic: false,
184
- dynamicErrors: []
185
- };
186
- }
187
- function getPendingClientSyncDynamicError(clientDynamic) {
188
- return clientDynamic.syncDynamicErrorWithStackPostMicrotask ? null : clientDynamic.syncDynamicErrorWithStack;
189
- }
190
99
  function getFirstDynamicReason(trackingState) {
191
100
  var _trackingState_dynamicAccesses_;
192
101
  return (_trackingState_dynamicAccesses_ = trackingState.dynamicAccesses[0]) == null ? void 0 : _trackingState_dynamicAccesses_.expression;
@@ -421,712 +330,5 @@ function annotateDynamicAccess(expression, prerenderStore) {
421
330
  });
422
331
  }
423
332
  }
424
- const hasSuspenseRegex = /\n\s+at Suspense \(<anonymous>\)/;
425
- // Common implicit body tags that React will treat as body when placed directly in html
426
- const bodyAndImplicitTags = 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6';
427
- // Detects when RootLayoutBoundary (our framework marker component) appears
428
- // after Suspense in the component stack, indicating the root layout is wrapped
429
- // within a Suspense boundary. Ensures no body/html/implicit-body components are in between.
430
- //
431
- // Example matches:
432
- // at Suspense (<anonymous>)
433
- // at __next_root_layout_boundary__ (<anonymous>)
434
- //
435
- // Or with other components in between (but not body/html/implicit-body):
436
- // at Suspense (<anonymous>)
437
- // at SomeComponent (<anonymous>)
438
- // at __next_root_layout_boundary__ (<anonymous>)
439
- const hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(`\\n\\s+at Suspense \\(<anonymous>\\)(?:(?!\\n\\s+at (?:${bodyAndImplicitTags}) \\(<anonymous>\\))[\\s\\S])*?\\n\\s+at ${_boundaryconstants.ROOT_LAYOUT_BOUNDARY_NAME} \\([^\\n]*\\)`);
440
- const hasMetadataRegex = new RegExp(`\\n\\s+at ${_boundaryconstants.METADATA_BOUNDARY_NAME}[\\n\\s]`);
441
- const hasViewportRegex = new RegExp(`\\n\\s+at ${_boundaryconstants.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`);
442
- const hasOutletRegex = new RegExp(`\\n\\s+at ${_boundaryconstants.OUTLET_BOUNDARY_NAME}[\\n\\s]`);
443
- const hasInstantValidationBoundaryRegex = new RegExp(`\\n\\s+at ${_boundaryconstants1.INSTANT_VALIDATION_BOUNDARY_NAME}[\\n\\s]`);
444
- const slotMarkerRegex = new RegExp(`\\n\\s+at ${_boundaryconstants1.INSTANT_SLOT_MARKER_PREFIX}(\\d+)${_boundaryconstants1.INSTANT_SLOT_MARKER_SUFFIX}[\\n\\s]`);
445
- /** Look up the config factory for the slot this error belongs to.
446
- * Checks the component stack for a slot marker (__next_instant_slot_N__)
447
- * and returns the config at that index. Falls back to index 0 (root
448
- * config) when no slot marker is found or the slot has no config. */ function resolveInstantStack(componentStack, dynamicValidation) {
449
- const { slotStacks } = dynamicValidation;
450
- if (slotStacks.length > 1) {
451
- const match = slotMarkerRegex.exec(componentStack);
452
- if (match) {
453
- // Slot markers are 0-indexed in the component name but
454
- // slotStacks is 1-indexed (index 0 is the root config).
455
- const slotIndex = parseInt(match[1], 10) + 1;
456
- const slotStack = slotStacks[slotIndex];
457
- if (slotStack != null) {
458
- return slotStack;
459
- }
460
- }
461
- }
462
- // Fall back to root config (index 0)
463
- return slotStacks[0] ?? null;
464
- }
465
- /**
466
- * Inspects the component stack of an outlet boundary to discover whether the
467
- * user placed a Suspense boundary above the document body, and records the
468
- * opt-in on `dynamicValidation.hasSuspenseAboveBody` if so.
469
- *
470
- * The outlet itself isn't a meaningful source of dynamic — it only resolves
471
- * when metadata/viewport are dynamic, which we track via their own boundaries.
472
- * However, the outlet renders alongside the page content, so its stack passes
473
- * through the user's layout chain (typically reaching into `<body>` via the
474
- * root layout). That makes the outlet stack our best opportunity to spot a
475
- * Suspense boundary above the body, even when no real body content is dynamic.
476
- * Without this, a route whose only dynamic source is `generateViewport()` would
477
- * miss the Suspense-above-body opt-in, because the viewport's stack lives in
478
- * the head and never sees the user's root layout.
479
- *
480
- * We deliberately only set `hasSuspenseAboveBody`, not `hasAllowedDynamic`. The
481
- * latter tracks whether the body has dynamic content that's been wrapped in
482
- * Suspense (i.e., the page is partially dynamic). The outlet rendering tells us
483
- * about the structural opt-in for an empty shell, not about the body being
484
- * partially dynamic. The distinction matters because dynamic metadata is only
485
- * acceptable when the page is partially dynamic (via real body holes), and we
486
- * don't want this outlet-based detection to mask that case.
487
- */ function trackOutletSuspenseAboveBody(componentStack, dynamicValidation) {
488
- if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {
489
- dynamicValidation.hasSuspenseAboveBody = true;
490
- }
491
- }
492
- function trackDynamicAccessInStaticRoute(dynamicReason, workStore, componentStack, dynamicValidation, clientDynamic, isServerPartial, kind) {
493
- const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic);
494
- if (hasOutletRegex.test(componentStack)) {
495
- trackOutletSuspenseAboveBody(componentStack, dynamicValidation);
496
- return;
497
- }
498
- if (hasMetadataRegex.test(componentStack)) {
499
- dynamicValidation.dynamicErrors.push(addErrorContext(createMetadataErrorInStaticRoute(kind, workStore.route), componentStack, null));
500
- return;
501
- }
502
- if (hasViewportRegex.test(componentStack)) {
503
- dynamicValidation.dynamicErrors.push(addErrorContext(createViewportErrorInStaticRoute(kind, workStore.route), componentStack, null));
504
- return;
505
- }
506
- let hasSuspense = false;
507
- if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {
508
- // this error had a Suspense boundary above it, and it's above the body as well.
509
- dynamicValidation.hasSuspenseAboveBody = true;
510
- hasSuspense = true;
511
- } else if (hasSuspenseRegex.test(componentStack)) {
512
- // this error had a Suspense boundary above it.
513
- hasSuspense = true;
514
- }
515
- if (hasSuspense) {
516
- if (!isServerPartial) {
517
- // If we don't have holes caused by server data, then any holes must be caused
518
- // by client-only code, which is allowed.
519
- dynamicValidation.hasAllowedDynamic = true;
520
- return;
521
- }
522
- // We have holes that may be caused by server data.
523
- if (syncDynamicError || (0, _dynamicrenderingutils.isClientHookDynamicError)(dynamicReason)) {
524
- // We know this hole wasn't caused by server data, so it's allowed
525
- // (because it's wrapped in a Suspense)
526
- dynamicValidation.hasAllowedDynamic = true;
527
- return;
528
- }
529
- // Any remaining hole may be caused by a server hole.
530
- // These are not allowed even with Suspense.
531
- // (NOTE: this may misreport valid client dynamic holes as server holes)
532
- dynamicValidation.dynamicErrors.push(addErrorContext(createBodyErrorInStaticRoute(kind, workStore.route), componentStack, null));
533
- return;
534
- }
535
- if (syncDynamicError) {
536
- dynamicValidation.dynamicErrors.push(syncDynamicError);
537
- return;
538
- }
539
- if ((0, _dynamicrenderingutils.isClientHookDynamicError)(dynamicReason)) {
540
- dynamicValidation.dynamicErrors.push(addErrorContext(dynamicReason, componentStack, null));
541
- return;
542
- }
543
- const error = addErrorContext(isServerPartial ? // (NOTE: this may misreport client dynamic holes as server holes)
544
- createBodyErrorInStaticRoute(kind, workStore.route) : // that server data is complete
545
- createBodyError(kind, workStore.route), componentStack, null);
546
- dynamicValidation.dynamicErrors.push(error);
547
- }
548
- function trackAllowedDynamicAccess(dynamicReason, workStore, componentStack, dynamicValidation, clientDynamic) {
549
- const dynamicHoleKind = 6;
550
- const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic);
551
- if (hasOutletRegex.test(componentStack)) {
552
- trackOutletSuspenseAboveBody(componentStack, dynamicValidation);
553
- return;
554
- } else if (hasMetadataRegex.test(componentStack)) {
555
- dynamicValidation.hasDynamicMetadata = true;
556
- return;
557
- } else if (hasViewportRegex.test(componentStack)) {
558
- dynamicValidation.hasDynamicViewport = true;
559
- return;
560
- } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {
561
- // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.
562
- // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense
563
- // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.
564
- dynamicValidation.hasAllowedDynamic = true;
565
- dynamicValidation.hasSuspenseAboveBody = true;
566
- return;
567
- } else if (hasSuspenseRegex.test(componentStack)) {
568
- // this error had a Suspense boundary above it so we don't need to report it as a source
569
- // of disallowed
570
- dynamicValidation.hasAllowedDynamic = true;
571
- return;
572
- } else if (syncDynamicError) {
573
- dynamicValidation.dynamicErrors.push(syncDynamicError);
574
- return;
575
- }
576
- if ((0, _dynamicrenderingutils.isClientHookDynamicError)(dynamicReason)) {
577
- dynamicValidation.dynamicErrors.push(addErrorContext(dynamicReason, componentStack, null));
578
- return;
579
- }
580
- const error = addErrorContext(createBodyError(dynamicHoleKind, workStore.route), componentStack, null);
581
- dynamicValidation.dynamicErrors.push(error);
582
- return;
583
- }
584
- var DynamicHoleKind = /*#__PURE__*/ function(DynamicHoleKind) {
585
- /** We know that this hole is caused by runtime data. */ DynamicHoleKind[DynamicHoleKind["Runtime"] = 1] = "Runtime";
586
- /** We know that this hole is caused by link data. */ DynamicHoleKind[DynamicHoleKind["Link"] = 2] = "Link";
587
- /** We know that this hole is caused by navigation(). */ DynamicHoleKind[DynamicHoleKind["Navigation"] = 3] = "Navigation";
588
- /** We know that this hole is caused by prefetch(). */ DynamicHoleKind[DynamicHoleKind["Prefetch"] = 4] = "Prefetch";
589
- /** We know that this hole is caused by dynamic data. */ DynamicHoleKind[DynamicHoleKind["Dynamic"] = 5] = "Dynamic";
590
- /** We know that this hole is caused by runtime or dynamic data, but don't know which. */ DynamicHoleKind[DynamicHoleKind["RuntimeOrDynamic"] = 6] = "RuntimeOrDynamic";
591
- return DynamicHoleKind;
592
- }({});
593
- function createInstantValidationState(slotStacks) {
594
- return {
595
- hasDynamicMetadata: false,
596
- hasAllowedClientDynamicAboveBoundary: false,
597
- dynamicMetadata: null,
598
- hasDynamicViewport: false,
599
- hasAllowedDynamic: false,
600
- dynamicErrors: [],
601
- validationPreventingErrors: [],
602
- thrownErrorsOutsideBoundary: [],
603
- slotStacks
604
- };
605
- }
606
- function trackDynamicHoleInNavigation(dynamicReason, workStore, componentStack, dynamicValidation, clientDynamic, kind, boundaryState) {
607
- const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic);
608
- if (hasOutletRegex.test(componentStack)) {
609
- // We don't need to track that this is dynamic. It is only so when something else is also dynamic.
610
- return;
611
- }
612
- // Resolve the config stack for this specific error. If the error
613
- // is inside a slot marker, use that slot's config. Otherwise fall
614
- // back to the default.
615
- const effectiveCreateInstantStack = resolveInstantStack(componentStack, dynamicValidation);
616
- if (hasMetadataRegex.test(componentStack)) {
617
- const error = addErrorContext(createMetadataError(kind, workStore.route), componentStack, effectiveCreateInstantStack);
618
- dynamicValidation.dynamicMetadata = error;
619
- return;
620
- }
621
- if (hasViewportRegex.test(componentStack)) {
622
- const error = addErrorContext(createViewportError(kind, workStore.route), componentStack, effectiveCreateInstantStack);
623
- dynamicValidation.dynamicErrors.push(error);
624
- return;
625
- }
626
- const boundaryLocation = hasInstantValidationBoundaryRegex.exec(componentStack);
627
- if (!boundaryLocation) {
628
- // We don't see the validation boundary in the component stack,
629
- // so this hole must be coming from a shared parent.
630
- // Shared parents are fully resolved and don't have RSC holes,
631
- // but they can still suspend in a client component during SSR.
632
- // If we managed to render all the validation boundaries, that means
633
- // that the client holes aren't blocking validation and we can disregard them.
634
- // Note that we don't even care whether they have suspense or not.
635
- if ((0, _boundarytracking.allRequiredBoundariesRendered)(boundaryState)) {
636
- dynamicValidation.hasAllowedClientDynamicAboveBoundary = true;
637
- dynamicValidation.hasAllowedDynamic = true // Holes outside the boundary contribute to allowing dynamic metadata
638
- ;
639
- return;
640
- } else {
641
- // TODO(instant-validation) TODO(NAR-787)
642
- // If shared parents blocked us from validating, we should only log
643
- // the errors from the innermost (segments), i.e. omit layouts whose
644
- // slots managed to render (because clearly they didn't block validation)
645
- const message = `Route "${workStore.route}": Could not validate \`instant\` because a Client Component in a parent segment prevented the page from rendering.`;
646
- const error = addErrorContext(new Error(message), componentStack, effectiveCreateInstantStack);
647
- dynamicValidation.validationPreventingErrors.push(error);
648
- return;
649
- }
650
- } else {
651
- // The hole originates inside the validation boundary.
652
- //
653
- // Check if we have a Suspense above the hole, but below the validation boundary.
654
- // If we do, then this dynamic usage wouldn't block a navigation to this subtree.
655
- // Conversely, if the nearest suspense is above the validation boundary, then this subtree would block.
656
- //
657
- // Note that in the component stack, children come before parents.
658
- //
659
- // Valid:
660
- // ...
661
- // at Suspense
662
- // ...
663
- // at __next_prefetch_validation_boundary__
664
- //
665
- // Invalid:
666
- // ...
667
- // at __next_prefetch_validation_boundary__
668
- // ...
669
- // at Suspense
670
- //
671
- const suspenseLocation = hasSuspenseRegex.exec(componentStack);
672
- if (suspenseLocation) {
673
- if (suspenseLocation.index < boundaryLocation.index) {
674
- dynamicValidation.hasAllowedDynamic = true;
675
- return;
676
- } else {
677
- // invalid - fallthrough
678
- }
679
- }
680
- }
681
- if (syncDynamicError) {
682
- if (effectiveCreateInstantStack !== null && syncDynamicError.cause === undefined) {
683
- syncDynamicError.cause = effectiveCreateInstantStack();
684
- }
685
- dynamicValidation.dynamicErrors.push(syncDynamicError);
686
- return;
687
- }
688
- if ((0, _dynamicrenderingutils.isClientHookDynamicError)(dynamicReason)) {
689
- dynamicValidation.dynamicErrors.push(addErrorContext(dynamicReason, componentStack, effectiveCreateInstantStack));
690
- return;
691
- }
692
- const error = addErrorContext(createBodyErrorInNavigation(kind, workStore.route), componentStack, effectiveCreateInstantStack);
693
- dynamicValidation.dynamicErrors.push(error);
694
- return;
695
- }
696
- function createBodyError(kind, route) {
697
- switch(kind){
698
- case 1:
699
- return (0, _blockingroutemessages.createRuntimeBodyError)(route);
700
- case 5:
701
- return (0, _blockingroutemessages.createDynamicBodyError)(route);
702
- case 6:
703
- return (0, _blockingroutemessages.createDynamicOrRuntimeBodyError)(route);
704
- }
705
- }
706
- function createBodyErrorInNavigation(kind, route) {
707
- switch(kind){
708
- case 1:
709
- return (0, _blockingroutemessages.createRuntimeBodyErrorInNavigation)(route);
710
- case 2:
711
- return (0, _blockingroutemessages.createLinkBodyErrorInNavigation)(route);
712
- case 3:
713
- return (0, _blockingroutemessages.createNavigationBodyErrorInNavigation)(route);
714
- case 4:
715
- return (0, _blockingroutemessages.createPrefetchBodyErrorInNavigation)(route);
716
- case 5:
717
- return (0, _blockingroutemessages.createDynamicBodyErrorInNavigation)(route);
718
- }
719
- }
720
- function createMetadataError(kind, route) {
721
- switch(kind){
722
- case 1:
723
- return (0, _blockingroutemessages.createRuntimeMetadataError)(route);
724
- case 2:
725
- return (0, _blockingroutemessages.createLinkMetadataError)(route);
726
- case 3:
727
- return (0, _blockingroutemessages.createNavigationMetadataError)(route);
728
- case 4:
729
- return (0, _blockingroutemessages.createPrefetchMetadataError)(route);
730
- case 5:
731
- return (0, _blockingroutemessages.createDynamicMetadataError)(route);
732
- case 6:
733
- return (0, _blockingroutemessages.createDynamicOrRuntimeMetadataError)(route);
734
- }
735
- }
736
- function createViewportError(kind, route) {
737
- switch(kind){
738
- case 1:
739
- return (0, _blockingroutemessages.createRuntimeViewportError)(route);
740
- case 2:
741
- return (0, _blockingroutemessages.createLinkViewportError)(route);
742
- case 3:
743
- return (0, _blockingroutemessages.createNavigationViewportError)(route);
744
- case 4:
745
- return (0, _blockingroutemessages.createPrefetchViewportError)(route);
746
- case 5:
747
- return (0, _blockingroutemessages.createDynamicViewportError)(route);
748
- case 6:
749
- return (0, _blockingroutemessages.createDynamicOrRuntimeViewportError)(route);
750
- }
751
- }
752
- function createBodyErrorInStaticRoute(kind, route) {
753
- switch(kind){
754
- case 1:
755
- return (0, _blockingroutemessages.createRuntimeBodyErrorInStaticRoute)(route);
756
- case 5:
757
- return (0, _blockingroutemessages.createDynamicBodyErrorInStaticRoute)(route);
758
- case 6:
759
- return (0, _blockingroutemessages.createNonPrerenderableBodyErrorInStaticRoute)(route);
760
- }
761
- }
762
- function createMetadataErrorInStaticRoute(kind, route) {
763
- switch(kind){
764
- case 1:
765
- return (0, _blockingroutemessages.createRuntimeMetadataErrorInStaticRoute)(route);
766
- case 5:
767
- return (0, _blockingroutemessages.createDynamicMetadataErrorInStaticRoute)(route);
768
- case 6:
769
- return (0, _blockingroutemessages.createNonPrerenderableMetadataErrorInStaticRoute)(route);
770
- }
771
- }
772
- function createViewportErrorInStaticRoute(kind, route) {
773
- switch(kind){
774
- case 1:
775
- return (0, _blockingroutemessages.createRuntimeViewportErrorInStaticRoute)(route);
776
- case 5:
777
- return (0, _blockingroutemessages.createDynamicViewportErrorInStaticRoute)(route);
778
- case 6:
779
- return (0, _blockingroutemessages.createNonPrerenderableViewportErrorInStaticRoute)(route);
780
- }
781
- }
782
- function trackThrownErrorInNavigation(workStore, dynamicValidation, thrownValue, componentStack, reactBrowserBailout) {
783
- const boundaryLocation = hasInstantValidationBoundaryRegex.exec(componentStack);
784
- if (!boundaryLocation) {
785
- // There's no validation boundary on the component stack.
786
- // This error may have blocked a boundary from rendering.
787
- // Wrap the error to provide component context.
788
- // This helps for errors from node_modules which would otherwise
789
- // have no useful stack information due to ignore-listing,
790
- // e.g. next/dynamic with `ssr: false`.
791
- if (reactBrowserBailout) {
792
- // React preserves Next's branded bailout reason as the error cause.
793
- // Replace the internal wrapper before storing the user-facing diagnostic.
794
- const browserBailoutReason = (0, _reactbrowserbailout.getReactBrowserBailoutReason)(thrownValue);
795
- if (browserBailoutReason !== undefined) {
796
- const browserBailoutError = thrownValue;
797
- browserBailoutError.cause = browserBailoutReason;
798
- }
799
- }
800
- const error = addErrorContext(new Error('An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.', {
801
- cause: thrownValue
802
- }), componentStack, null);
803
- dynamicValidation.thrownErrorsOutsideBoundary.push(error);
804
- } else {
805
- // There's validation boundary on the component stack,
806
- // so we know this error didn't block a validation boundary from rendering.
807
- // However, this error might be hiding be hiding dynamic content that would
808
- // cause validation to fail.
809
- const suspenseLocation = hasSuspenseRegex.exec(componentStack);
810
- if (suspenseLocation) {
811
- if (suspenseLocation.index < boundaryLocation.index) {
812
- // There's a Suspense below the validation boundary but above this error's location.
813
- // This subtree can't fail instant validation because any potential
814
- // dynamic holes would be guarded by the Suspense anyway,
815
- // so we can allow this.
816
- return;
817
- } else {
818
- // invalid - fallthrough
819
- }
820
- }
821
- if (reactBrowserBailout) {
822
- // React preserves Next's branded bailout reason as the error cause.
823
- // Replace the internal wrapper before storing the user-facing diagnostic.
824
- const browserBailoutReason = (0, _reactbrowserbailout.getReactBrowserBailoutReason)(thrownValue);
825
- if (browserBailoutReason !== undefined) {
826
- const browserBailoutError = thrownValue;
827
- browserBailoutError.cause = browserBailoutReason;
828
- }
829
- }
830
- const message = `Route "${workStore.route}": Could not validate \`instant\` because an error prevented the target segment from rendering.`;
831
- const error = addErrorContext(new Error(message, {
832
- cause: thrownValue
833
- }), componentStack, null // TODO(instant-validation-build): conflicting use of cause
834
- );
835
- dynamicValidation.validationPreventingErrors.push(error);
836
- }
837
- }
838
- function trackDynamicHoleInStaticShell(dynamicReason, workStore, componentStack, dynamicValidation, clientDynamic, kind) {
839
- const syncDynamicError = getPendingClientSyncDynamicError(clientDynamic);
840
- if (hasOutletRegex.test(componentStack)) {
841
- trackOutletSuspenseAboveBody(componentStack, dynamicValidation);
842
- return;
843
- } else if (hasMetadataRegex.test(componentStack)) {
844
- const error = addErrorContext(createMetadataError(kind, workStore.route), componentStack, null);
845
- dynamicValidation.dynamicMetadata = error;
846
- return;
847
- } else if (hasViewportRegex.test(componentStack)) {
848
- const error = addErrorContext(createViewportError(kind, workStore.route), componentStack, null);
849
- dynamicValidation.dynamicErrors.push(error);
850
- return;
851
- } else if (hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(componentStack)) {
852
- // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.
853
- // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense
854
- // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.
855
- dynamicValidation.hasAllowedDynamic = true;
856
- dynamicValidation.hasSuspenseAboveBody = true;
857
- return;
858
- } else if (hasSuspenseRegex.test(componentStack)) {
859
- // this error had a Suspense boundary above it so we don't need to report it as a source
860
- // of disallowed
861
- dynamicValidation.hasAllowedDynamic = true;
862
- return;
863
- } else if (syncDynamicError) {
864
- dynamicValidation.dynamicErrors.push(syncDynamicError);
865
- return;
866
- }
867
- if ((0, _dynamicrenderingutils.isClientHookDynamicError)(dynamicReason)) {
868
- dynamicValidation.dynamicErrors.push(addErrorContext(dynamicReason, componentStack, null));
869
- return;
870
- }
871
- const error = addErrorContext(kind === 1 ? (0, _blockingroutemessages.createRuntimeBodyError)(workStore.route) : (0, _blockingroutemessages.createDynamicBodyError)(workStore.route), componentStack, null);
872
- dynamicValidation.dynamicErrors.push(error);
873
- return;
874
- }
875
- /**
876
- * In dev mode, we prefer using the owner stack, otherwise the provided
877
- * component stack is used.
878
- */ function addErrorContext(error, componentStack, createInstantStack) {
879
- const ownerStack = process.env.NODE_ENV !== 'production' && _react.default.captureOwnerStack ? _react.default.captureOwnerStack() : null;
880
- if (createInstantStack !== null) {
881
- error.cause = createInstantStack();
882
- }
883
- // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right
884
- //
885
- error.stack = error.name + ': ' + error.message + (ownerStack || componentStack);
886
- return error;
887
- }
888
- var PreludeState = /*#__PURE__*/ function(PreludeState) {
889
- PreludeState[PreludeState["Full"] = 0] = "Full";
890
- PreludeState[PreludeState["Empty"] = 1] = "Empty";
891
- PreludeState[PreludeState["Errored"] = 2] = "Errored";
892
- return PreludeState;
893
- }({});
894
- function logDisallowedDynamicError(workStore, error) {
895
- console.error(error);
896
- (0, _blockingroutemessages.logBuildDebugHint)(workStore.route);
897
- }
898
- function throwIfSyncIOUsed(workStore, serverDynamic) {
899
- if (serverDynamic.syncDynamicErrorWithStack) {
900
- logDisallowedDynamicError(workStore, serverDynamic.syncDynamicErrorWithStack);
901
- throw new _staticgenerationbailout.StaticGenBailoutError();
902
- }
903
- }
904
- function throwIfDisallowedDynamic(workStore, prelude, dynamicValidation, serverDynamic, allowEmptyStaticShell) {
905
- const dynamicHoleKind = 6;
906
- throwIfSyncIOUsed(workStore, serverDynamic);
907
- // The dynamic metadata error is a mistake-detection signal. It fires when the
908
- // rest of the shell is otherwise fully static apart from metadata, suggesting
909
- // the dynamic data access in `generateMetadata` was probably unintentional.
910
- // That condition is independent of whether the user or build phase accepted
911
- // an empty shell, so we surface it before any opt-in bypass.
912
- if (prelude === 0 && dynamicValidation.hasAllowedDynamic === false && dynamicValidation.hasDynamicMetadata) {
913
- console.error(createMetadataError(dynamicHoleKind, workStore.route).message);
914
- throw new _staticgenerationbailout.StaticGenBailoutError();
915
- }
916
- // Either flag expresses "this shell is allowed to be empty/blocking":
917
- // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)
918
- // and the build-phase fallback-shell case.
919
- // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root
920
- // layout.
921
- // Treat them as synonyms for the purpose of bypassing shell-failure errors.
922
- if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {
923
- return;
924
- }
925
- if (prelude !== 0) {
926
- // We didn't have any sync bailouts but there may be user code which
927
- // blocked the root. We would have captured these during the prerender
928
- // and can log them here and then terminate the build/validating render
929
- const dynamicErrors = dynamicValidation.dynamicErrors;
930
- if (dynamicErrors.length > 0) {
931
- for(let i = 0; i < dynamicErrors.length; i++){
932
- logDisallowedDynamicError(workStore, dynamicErrors[i]);
933
- }
934
- throw new _staticgenerationbailout.StaticGenBailoutError();
935
- }
936
- // If we got this far then the only other thing that could be blocking
937
- // the root is dynamic Viewport. If this is dynamic then
938
- // you need to opt into that by adding a Suspense boundary above the body
939
- // to indicate your are ok with fully dynamic rendering.
940
- if (dynamicValidation.hasDynamicViewport) {
941
- console.error(createViewportError(dynamicHoleKind, workStore.route).message);
942
- throw new _staticgenerationbailout.StaticGenBailoutError();
943
- }
944
- if (prelude === 1) {
945
- // If we ever get this far then we messed up the tracking of invalid dynamic.
946
- // We still adhere to the constraint that you must produce a shell but invite the
947
- // user to report this as a bug in Next.js.
948
- console.error(`Route "${workStore.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`);
949
- throw new _staticgenerationbailout.StaticGenBailoutError();
950
- }
951
- }
952
- }
953
- function throwIfDisallowedDynamicInStaticRoute(workStore, prelude, dynamicValidation, serverDynamic, isFallbackShell, allowEmptyStaticShell, isServerPartial) {
954
- const reasons = getDisallowedReasonsInStaticRoute(workStore, prelude, dynamicValidation, serverDynamic, isFallbackShell, allowEmptyStaticShell, isServerPartial);
955
- if (reasons.length > 0) {
956
- for (const reason of reasons){
957
- logDisallowedDynamicError(workStore, reason);
958
- }
959
- throw new _staticgenerationbailout.StaticGenBailoutError();
960
- }
961
- }
962
- function getDisallowedReasonsInStaticRoute(workStore, prelude, dynamicValidation, serverDynamic, isFallbackShell, allowEmptyStaticShell, isServerPartial) {
963
- if (serverDynamic && serverDynamic.syncDynamicErrorWithStack) {
964
- return [
965
- serverDynamic.syncDynamicErrorWithStack
966
- ];
967
- }
968
- // We do a fallback shell prerender, but it's not meant to be validated --
969
- // we just need it to create the relevant prerender outputs.
970
- if (isFallbackShell) {
971
- return [];
972
- }
973
- // Suspense-above-body and `instant = false` bypass reporting
974
- // that the shell is blocked. However, if we have non-prerenderable server
975
- // data, we still have to error, regardless of those two.
976
- if (!isServerPartial && (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody)) {
977
- return [];
978
- }
979
- const { dynamicErrors } = dynamicValidation;
980
- if (dynamicErrors.length > 0) {
981
- return dynamicErrors;
982
- }
983
- // Dynamic data may have been passed into a client component without calling `use()`,
984
- // in which case we wouldn't see it during the prerender, but still need to error.
985
- // Fall back to a generic error message.
986
- if (isServerPartial) {
987
- return [
988
- new Error(`Route "${workStore.route}": Next.js encountered data that is not available during a static prerender, but is unable to provide a location.`)
989
- ];
990
- }
991
- if (prelude === 1 || prelude === 2) {
992
- // We've somehow ended up with an empty prelude but no dynamic errors.
993
- // We must've messed up the tracking somehow.
994
- return [
995
- new _invarianterror.InvariantError(`Route "${workStore.route}" did not produce a static shell and Next.js was unable to determine a reason.`)
996
- ];
997
- }
998
- return [];
999
- }
1000
- function getStaticShellDisallowedDynamicReasons(workStore, prelude, dynamicValidation, allowEmptyStaticShell) {
1001
- // The dynamic metadata error is a mistake-detection signal. It fires when the
1002
- // rest of the shell is otherwise fully static apart from metadata, suggesting
1003
- // the dynamic data access in `generateMetadata` was probably unintentional.
1004
- // That condition is independent of whether the user or build phase accepted
1005
- // an empty shell, so we surface it before any opt-in bypass.
1006
- if (prelude === 0 && dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicErrors.length === 0 && dynamicValidation.dynamicMetadata) {
1007
- return [
1008
- dynamicValidation.dynamicMetadata
1009
- ];
1010
- }
1011
- // Either flag expresses "this shell is allowed to be empty/blocking":
1012
- // - `allowEmptyStaticShell` covers `instant = false` (user opt-in)
1013
- // and the build-phase fallback-shell case.
1014
- // - `hasSuspenseAboveBody` is the structural opt-in inside the user's root
1015
- // layout.
1016
- // Treat them as synonyms for the purpose of bypassing shell-failure errors.
1017
- if (allowEmptyStaticShell || dynamicValidation.hasSuspenseAboveBody) {
1018
- return [];
1019
- }
1020
- if (prelude !== 0) {
1021
- // We didn't have any sync bailouts but there may be user code which
1022
- // blocked the root. We would have captured these during the prerender
1023
- // and can log them here and then terminate the build/validating render
1024
- const dynamicErrors = dynamicValidation.dynamicErrors;
1025
- if (dynamicErrors.length > 0) {
1026
- return dynamicErrors;
1027
- }
1028
- if (prelude === 1) {
1029
- // If we ever get this far then we messed up the tracking of invalid dynamic.
1030
- // We still adhere to the constraint that you must produce a shell but invite the
1031
- // user to report this as a bug in Next.js.
1032
- return [
1033
- new _invarianterror.InvariantError(`Route "${workStore.route}" did not produce a static shell and Next.js was unable to determine a reason.`)
1034
- ];
1035
- }
1036
- }
1037
- // We had a non-empty prelude and there are no dynamic holes
1038
- return [];
1039
- }
1040
- function getNavigationDisallowedDynamicReasons(workStore, prelude, dynamicValidation, validationSampleTracking, boundaryState, devRenderDidError) {
1041
- // If we have errors related to missing samples, those should take precedence over everything else.
1042
- if (validationSampleTracking) {
1043
- const { missingSampleErrors } = validationSampleTracking;
1044
- if (missingSampleErrors.length > 0) {
1045
- return missingSampleErrors;
1046
- }
1047
- }
1048
- const { validationPreventingErrors } = dynamicValidation;
1049
- if (validationPreventingErrors.length > 0) {
1050
- if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {
1051
- // The dev render already surfaced server errors to the user.
1052
- // The same errors likely caused validation to be inconclusive,
1053
- // so reporting them again as validation failures would be noisy.
1054
- return [];
1055
- }
1056
- return validationPreventingErrors;
1057
- }
1058
- // NOTE: We don't care about Suspense above body here,
1059
- // we're only concerned with the validation boundary
1060
- if (prelude !== 0) {
1061
- const dynamicErrors = dynamicValidation.dynamicErrors;
1062
- if (dynamicErrors.length > 0) {
1063
- return dynamicErrors;
1064
- }
1065
- if (prelude === 1 && !dynamicValidation.hasAllowedClientDynamicAboveBoundary && (0, _boundarytracking.allRequiredBoundariesRendered)(boundaryState)) {
1066
- // If we ever get this far then we messed up the tracking of invalid
1067
- // dynamic. (When boundaries are missing the deferred fallback below
1068
- // will surface a more useful error.)
1069
- return new _invarianterror.InvariantError(`Route "${workStore.route}" failed to render during instant validation and Next.js was unable to determine a reason.`);
1070
- }
1071
- } else {
1072
- const dynamicErrors = dynamicValidation.dynamicErrors;
1073
- if (dynamicErrors.length > 0) {
1074
- return dynamicErrors;
1075
- }
1076
- if (dynamicValidation.hasAllowedDynamic === false && dynamicValidation.dynamicMetadata) {
1077
- return [
1078
- dynamicValidation.dynamicMetadata
1079
- ];
1080
- }
1081
- }
1082
- // Missing boundaries on their own aren't a strong signal — a parent
1083
- // layout may legitimately omit a slot. Defer this so the caller can
1084
- // try shallower validation depths first; if every depth comes up
1085
- // empty we still want to surface this so the user is made aware that
1086
- // validation didn't complete. When we add a markers API, the
1087
- // marker-based variant of this check can become strict again.
1088
- if (!(0, _boundarytracking.allRequiredBoundariesRendered)(boundaryState)) {
1089
- const { thrownErrorsOutsideBoundary } = dynamicValidation;
1090
- const rootInstantStack = dynamicValidation.slotStacks[0];
1091
- if (thrownErrorsOutsideBoundary.length === 0) {
1092
- const missingFiles = [];
1093
- for (const [id, filePaths] of boundaryState.requiredIds){
1094
- if (!boundaryState.renderedIds.has(id)) {
1095
- for (const filePath of filePaths){
1096
- let normalized = filePath.replace(/^\[project\][\\/]?/, '').replace(process.cwd() + '/', '').replace(process.cwd() + '\\', '');
1097
- missingFiles.push(normalized);
1098
- }
1099
- }
1100
- }
1101
- missingFiles.sort();
1102
- return (0, _instantmessages.createUnrenderedSegmentError)(workStore.route, missingFiles);
1103
- } else if (process.env.__NEXT_DEV_SERVER && devRenderDidError) {
1104
- // Errors outside the boundary likely blocked it from rendering,
1105
- // but they're already being reported to the user via the dev
1106
- // render. Suppress the validation failure to avoid noise.
1107
- return [];
1108
- } else if (thrownErrorsOutsideBoundary.length === 1) {
1109
- const message = `Route "${workStore.route}": Could not validate \`instant\` because the target segment was prevented from rendering, likely due to the following error.`;
1110
- const error = rootInstantStack !== null ? rootInstantStack() : new Error();
1111
- error.name = 'Error';
1112
- error.message = message;
1113
- return new AggregateError([
1114
- error,
1115
- thrownErrorsOutsideBoundary[0]
1116
- ]);
1117
- } else {
1118
- const message = `Route "${workStore.route}": Could not validate \`instant\` because the target segment was prevented from rendering, likely due to one of the following errors.`;
1119
- const error = rootInstantStack !== null ? rootInstantStack() : new Error();
1120
- error.name = 'Error';
1121
- error.message = message;
1122
- return new AggregateError([
1123
- error,
1124
- ...thrownErrorsOutsideBoundary
1125
- ]);
1126
- }
1127
- }
1128
- // We had a non-empty prelude and there are no dynamic holes
1129
- return [];
1130
- }
1131
333
 
1132
334
  //# sourceMappingURL=dynamic-rendering.js.map