failproofai 1.0.12 → 1.0.13-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +13 -13
- package/.next/standalone/.next/prerender-manifest.json +4 -4
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_global-error/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page.js +2 -1
- package/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +4 -3
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/audit/invite/route.js +6 -5
- package/.next/standalone/.next/server/app/api/audit/invite/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/run/route.js +27 -26
- package/.next/standalone/.next/server/app/api/audit/run/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/audit/status/route.js +4 -3
- package/.next/standalone/.next/server/app/api/audit/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-request/route.js +6 -5
- package/.next/standalone/.next/server/app/api/auth/login-request/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/login-verify/route.js +6 -5
- package/.next/standalone/.next/server/app/api/auth/login-verify/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/logout/route.js +6 -5
- package/.next/standalone/.next/server/app/api/auth/logout/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/auth/status/route.js +6 -5
- package/.next/standalone/.next/server/app/api/auth/status/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js +4 -3
- package/.next/standalone/.next/server/app/api/download/[project]/[session]/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/audit/page.js +7 -6
- package/.next/standalone/.next/server/app/audit/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/audit/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/page.js +6 -5
- package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/policies/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/policies/page/server-reference-manifest.json +14 -14
- package/.next/standalone/.next/server/app/policies/page.js +5 -4
- package/.next/standalone/.next/server/app/policies/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/policies/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page.js +21 -20
- package/.next/standalone/.next/server/app/project/[name]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/react-loadable-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page/server-reference-manifest.json +2 -2
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js +10 -9
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/project/[name]/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/projects/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/projects/page/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/server/app/projects/page.js +7 -6
- package/.next/standalone/.next/server/app/projects/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/projects/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/settings/page/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/settings/page/server-reference-manifest.json +8 -8
- package/.next/standalone/.next/server/app/settings/page.js +6 -5
- package/.next/standalone/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/chunks/{[externals]__0vt9i6fqinjne._.js → [externals]__1h83uo-b1b6-2._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[externals]__214wn4wh2x79y._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[externals]__1rlxpymm37wel._.js → [root-of-the-server]__031qp1lkow_kc._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__038kwryp970nh._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0_hsnj_a2mvl_._.js → [root-of-the-server]__03s1za0hn71yp._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0wg9dk8x8bnau._.js → [root-of-the-server]__07a0sa6fuw5_b._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08atcie7jzswm._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08dchfudh2_4f._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0car70pylmvor._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0spt0kv8azrpl._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__12kq3x-h7t7i1._.js → [root-of-the-server]__0yvyp5b7jmlc4._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__02vous7mpi2xm._.js → [root-of-the-server]__145vo_drnuvas._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[externals]__0h0p9dmv_e7r7._.js → [root-of-the-server]__1a2d0ewycsp6k._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[externals]__1_407huhlmj1m._.js → [root-of-the-server]__1am_1tz0o0aqz._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__03i5o4a840guz._.js → [root-of-the-server]__1gxfzuvpyw30j._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1j6kfp0vzu5rw._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1l0ayum_hqqsw._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1lh8c0mmhdrbj._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1o9rznwc0w7og._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0f_4g-vazrvxv._.js → [root-of-the-server]__1o_622x0fglpr._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1oclamblhzhrf._.js +68 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1v1-l-83czzsr._.js +63 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__1a5zkndjwlc13._.js → [root-of-the-server]__1wwi53kkqhnfi._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{_1y590mjzpkbos._.js → _02sa8fcu9_9xo._.js} +2 -2
- package/.next/standalone/.next/server/chunks/_0tovk6q0miud6._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0trp3ycqv17cl._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1-2owkp-1_987._.js +1 -1
- package/.next/standalone/.next/server/chunks/_13ltj8a9z92o8._.js +1 -1
- package/.next/standalone/.next/server/chunks/_15k37au70vjvg._.js +1 -1
- package/.next/standalone/.next/server/chunks/_18rfu4__wjhwb._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1ek68lnh2daur._.js +2 -2
- package/.next/standalone/.next/server/chunks/_1fz8m31sndkcu._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1ogwigfb0163w._.js +1 -1
- package/.next/standalone/.next/server/chunks/_1vslkoe35wok6._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_@opentelemetry_api_build_esm_index_0oo58a7rymoxh.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_@opentelemetry_api_build_esm_index_1jp9ij0_ddtgk.js +3 -0
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_01r25oigsgz07._.js +2 -2
- package/.next/standalone/.next/server/chunks/node_modules_posthog-node_dist_entrypoints_index_node_mjs_09z9-p77cu37y._.js +2 -2
- package/.next/standalone/.next/server/chunks/package_json_[json]_cjs_1nxcc4vkpxxu7._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0ffu2-38y03ic._.js → [root-of-the-server]__021vebe-4il8s._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__075uro8t92s0_._.js +14 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08ch3staq3ejw._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[externals]__12qr51qgrrt6o._.js → [root-of-the-server]__097i34ct1o88x._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0alpzjn3450sr._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0aup10z2o8zc1._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bigvy9xmv2ka._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0bioghlkjf7s7._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__01j58mdcdw0vn._.js → [root-of-the-server]__0ed1zh4scn7-k._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0naevg4bcoh54._.js → [root-of-the-server]__0evgy902m9h5e._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0h86bl2qf0k_o._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__167mipqmjprq5._.js → [root-of-the-server]__0mhtkwwx1pxcq._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0nhm28v58ty9z._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pia5h3p8re4c._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vse4qi496ol-._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__17r4zrwanhp6r._.js → [root-of-the-server]__0yb3u36xjy3b9._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0g8b0kyorya-t._.js → [root-of-the-server]__0ywj2u6ovfm_5._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1-ey9fgesfbc0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0zn1d4blhd3bu._.js → [root-of-the-server]__10v5cyxvj64j4._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__15usvs-ms-0hf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__16gb3_92zvk5x._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__190xwrr5zrfi3._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1avi2kypusyb_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1vx7o8ukefudh._.js → [root-of-the-server]__1guwlpkyurdn9._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1k96jctukf65_._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1r7drlqli-ado._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1sj-wn2jp6va5._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__1vofkb2oq7p7e._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1s2-ck3k3rsoo._.js → [root-of-the-server]__20dt376-socef._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__1lnfv02ucky7m._.js → [root-of-the-server]__2158020r_amn9._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_1d98fyfrcaqhy._.js → _0bc4f4quq6w47._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0eoura3_9gjb-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0ouu886szh6yj._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0pedwblqdoh58._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1_ozgifqv1ssi._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_1djqs9i27e4kg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_next-internal_server_app_policies_page_actions_1sp2-yo5_vm5f.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/app_actions_get-scheduled-audit_ts_0ei9snixb5fd-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_audit__components_audit-dashboard_tsx_0p9ud47q0xq5w._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_global-error_tsx_1kp6l3x33jqb6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_policies_hooks-client_tsx_19dqvpcz0uxur._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/app_settings_02tf1h47jmhhd._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_09s4n108bqreq._.js → node_modules_0ptcnmeaxvd_a._.js} +22 -2
- package/.next/standalone/.next/server/chunks/ssr/node_modules_@opentelemetry_api_build_esm_index_0ntwr8lzj6p2i.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{node_modules_html-to-image_es_index_0tqc05n832v7a.js → node_modules_html-to-image_es_index_1jwgv0pf-gy96.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_0bz67659f5z-3._.js +32 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +3 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_0ocrceo0c9psx._.js +32 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1alv566ojmz5j._.js +32 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1khq67j4vo9y4._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_shared_lib_0ftnv26hg1lry._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_0dagmbznysrc2._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_posthog-node_dist_entrypoints_index_node_mjs_11bnuznb72p7z._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/package_json_[json]_cjs_013tntikdft59._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +13 -13
- package/.next/standalone/.next/server/middleware.js +2 -2
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/preview-props.json +3 -3
- package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/server-reference-manifest.json +23 -23
- package/.next/standalone/.next/static/chunks/0cbom4-ijx_a_.js +1 -0
- package/.next/standalone/.next/static/chunks/0u5weo5jdn2s8.js +1 -0
- package/.next/standalone/.next/static/chunks/{0el9n3h9_zp5m.js → 18-icoqze51kl.js} +1 -1
- package/.next/standalone/.next/static/chunks/2d-u90dt4-8rd.js +6 -0
- package/.next/standalone/.next/static/chunks/2n-bzb7pxe7hu.js +1 -0
- package/.next/standalone/.next/static/chunks/{0umzct31duk5g.js → 2zc7lg-jq353g.js} +1 -1
- package/.next/standalone/.next/static/chunks/{27cavoc8paelg.js → 33djjf12bhcsv.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0wobqgosirs8p.js → 38u_i3j5funpi.js} +1 -1
- package/.next/standalone/.next/static/chunks/3symuj7t4js-c.js +1 -0
- package/.next/standalone/.next/static/chunks/{1kduj74-715jh.js → 3vzut6zpdrvtx.js} +1 -1
- package/.next/standalone/.next/static/chunks/{063al_q720fkj.js → 3xgxl1s_in776.js} +2 -2
- package/.next/standalone/SECURITY.md +20 -4
- package/.next/standalone/fp-cloud-cli/CHANGELOG.md +15 -1
- package/.next/standalone/fp-cloud-cli/fp_cli/_version.py +1 -1
- package/.next/standalone/fp-cloud-cli/uv.lock +4 -4
- package/.next/standalone/hermes-plugin/plugin.yaml +1 -1
- package/.next/standalone/node_modules/@next/env/package.json +1 -1
- package/.next/standalone/node_modules/next/dist/build/swc/index.js +1 -1
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +24 -24
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +26 -26
- package/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +3 -3
- package/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +13 -13
- package/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/app-render/app-render.js +41 -40
- package/.next/standalone/node_modules/next/dist/server/app-render/async-local-storage.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering-validation.js +814 -0
- package/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering.js +1 -799
- package/.next/standalone/node_modules/next/dist/server/base-server.js +39 -5
- package/.next/standalone/node_modules/next/dist/server/config.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +2 -2
- package/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/dedupe-fetch.js +4 -43
- package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch-symbol.js +13 -0
- package/.next/standalone/node_modules/next/dist/server/lib/patch-fetch.js +3 -7
- package/.next/standalone/node_modules/next/dist/server/lib/router-server.js +3 -3
- package/.next/standalone/node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js +77 -12
- package/.next/standalone/node_modules/next/dist/server/lib/start-server.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/lib/trace/constants.js +12 -0
- package/.next/standalone/node_modules/next/dist/server/lib/trace/tracer.js +30 -14
- package/.next/standalone/node_modules/next/dist/server/next-server.js +10 -11
- package/.next/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +29 -23
- package/.next/standalone/node_modules/next/dist/server/route-modules/route-module.js +85 -8
- package/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +1 -1
- package/.next/standalone/node_modules/next/dist/server/web/adapter.js +124 -65
- package/.next/standalone/node_modules/next/dist/server/web/forward-trace-context.js +102 -0
- package/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
- package/.next/standalone/node_modules/next/dist/telemetry/events/version.js +2 -2
- package/.next/standalone/node_modules/next/package.json +10 -10
- package/.next/standalone/node_modules/react/cjs/react.production.js +1 -1
- package/.next/standalone/node_modules/react/package.json +1 -1
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +1 -1
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +1 -1
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +31 -27
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +33 -27
- package/.next/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +38 -30
- package/.next/standalone/node_modules/react-dom/cjs/react-dom.production.js +1 -1
- package/.next/standalone/node_modules/react-dom/package.json +2 -2
- package/.next/standalone/package.json +10 -10
- package/.next/standalone/sdk/python/CHANGELOG.md +8 -4
- package/.next/standalone/sdk/python/failproofai_sdk/evaluator/source.py +2 -2
- package/.next/standalone/sdk/python/pyproject.toml +2 -7
- package/.next/standalone/sdk/python/skill/references/frameworks.md +0 -15
- package/.next/standalone/sdk/python/tests/test_docs.py +1 -4
- package/.next/standalone/sdk/python/tests/test_evaluator_source.py +1 -1
- package/.next/standalone/sdk/python/tests/test_packaging.py +4 -7
- package/.next/standalone/sdk/python/tests/test_zero_dependencies.py +2 -13
- package/.next/standalone/sdk/python/uv.lock +43 -905
- package/.next/standalone/sdk/typescript/CHANGELOG.md +52 -0
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package-lock.json +176 -68
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-4/package.json +2 -2
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package-lock.json +3 -3
- package/.next/standalone/sdk/typescript/integration/fixtures/ai-5/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package-lock.json +115 -98
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-0.3/package.json +3 -3
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package-lock.json +4 -4
- package/.next/standalone/sdk/typescript/integration/fixtures/langchain-dup-core/package.json +1 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package-lock.json +171 -149
- package/.next/standalone/sdk/typescript/integration/fixtures/llamaindex-0.11/package.json +5 -2
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package-lock.json +27 -15
- package/.next/standalone/sdk/typescript/integration/fixtures/mastra-1/package.json +2 -1
- package/.next/standalone/sdk/typescript/integration/fixtures/runtimes/deno-npm.ts +1 -1
- package/.next/standalone/server.js +1 -1
- package/README.md +0 -6
- package/dist/cli.mjs +12 -11
- package/dist/worker.mjs +1 -1
- package/hermes-plugin/plugin.yaml +1 -1
- package/openclaw-plugin/daemon-client.js +254 -0
- package/openclaw-plugin/hooks.js +187 -0
- package/openclaw-plugin/index.js +17 -211
- package/package.json +10 -10
- package/scripts/sync-agent-cli-harnesses-prompt.md +26 -31
- package/src/hooks/enforcement-capability.ts +1 -1
- package/src/hooks/integrations.ts +5 -2
- package/.next/standalone/.codex/hooks.json +0 -76
- package/.next/standalone/.cursor/hooks.json +0 -47
- package/.next/standalone/.factory/hooks.json +0 -112
- package/.next/standalone/.next/server/chunks/[externals]__1x24dzcbbq6-g._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0__a_je8fsn65._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l-oi4gdtmlo5._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t9ufnv5hi2hq._.js +0 -327
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1aaw59g-5uty7._.js +0 -322
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__1hqpg6vgmfexv._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[externals]__0ilfh9mfnzsth._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[externals]__0ohnuzsaozaca._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0pwj2h2efe5f-._.js +0 -14
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_0zuikgt2xho-v._.js +0 -271
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_158jo-9mwvgad._.js +0 -291
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_19r82zsxo2jj1._.js +0 -291
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_1dupwucoqt5qm._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_next_dist_shared_lib_03w27x2kh17_8._.js +0 -23
- package/.next/standalone/.next/static/chunks/0k7g_8x3o6gd-.js +0 -1
- package/.next/standalone/.next/static/chunks/12rug3jilwqzs.js +0 -1
- package/.next/standalone/.next/static/chunks/2701amhrbsbot.js +0 -1
- package/.next/standalone/.next/static/chunks/2ve23a7keupjw.js +0 -1
- package/.next/standalone/.next/static/chunks/3bv6xaoitjpnh.js +0 -6
- package/.next/standalone/.opencode/opencode.json +0 -4
- package/.next/standalone/.opencode/plugins/failproofai.mjs +0 -210
- package/.next/standalone/.pi/settings.json +0 -5
- package/.next/standalone/node_modules/react/cjs/react.development.js +0 -1330
- package/scripts/dev-hook.mjs +0 -333
- /package/.next/standalone/.next/static/{D7LY1YSrw96ZxKSpxxrFw → 1n2dyfTQb0MDajeqlipJy}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{D7LY1YSrw96ZxKSpxxrFw → 1n2dyfTQb0MDajeqlipJy}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{D7LY1YSrw96ZxKSpxxrFw → 1n2dyfTQb0MDajeqlipJy}/_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
|
-
|
|
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
|