@codelionapps/unharness 0.0.0-stage → 0.1.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/LICENSE +21 -0
- package/README.md +330 -2
- package/bin/unharness.js +15 -0
- package/dashboard/.next/standalone/dashboard/.next/BUILD_ID +1 -0
- package/dashboard/.next/standalone/dashboard/.next/UNHARNESS_BUILD_DONE +0 -0
- package/dashboard/.next/standalone/dashboard/.next/app-path-routes-manifest.json +11 -0
- package/dashboard/.next/standalone/dashboard/.next/build-manifest.json +94 -0
- package/dashboard/.next/standalone/dashboard/.next/package.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/prerender-manifest.json +72 -0
- package/dashboard/.next/standalone/dashboard/.next/required-server-files.json +368 -0
- package/dashboard/.next/standalone/dashboard/.next/routes-manifest.json +102 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page/build-manifest.json +21 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page.js +11 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page.js.map +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.html +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.meta +30 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +18 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +23 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +18 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +2 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page/build-manifest.json +21 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page/next-font-manifest.json +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page.js +14 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page.js.map +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/api/unharness/route/app-paths-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/api/unharness/route/build-manifest.json +12 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/api/unharness/route/server-reference-manifest.json +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/api/unharness/route.js +7 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/api/unharness/route.js.map +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/api/unharness/route.js.nft.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/api/unharness/route_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/compare/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/compare/page/build-manifest.json +21 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/compare/page/next-font-manifest.json +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/compare/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/compare/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/compare/page.js +18 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/compare/page.js.map +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/compare/page.js.nft.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/compare/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/icon.svg/route/app-paths-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/icon.svg/route/build-manifest.json +12 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/icon.svg/route.js +7 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/icon.svg/route.js.map +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/icon.svg/route.js.nft.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/icon.svg.body +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/icon.svg.meta +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/page/build-manifest.json +21 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/page/next-font-manifest.json +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/page.js +18 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/page.js.map +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/page.js.nft.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/[id]/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/[id]/page/build-manifest.json +21 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/[id]/page/next-font-manifest.json +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/[id]/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/[id]/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/[id]/page.js +18 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/[id]/page.js.map +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/[id]/page.js.nft.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/[id]/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/page/build-manifest.json +21 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/page/next-font-manifest.json +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/page.js +17 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/page.js.map +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/page.js.nft.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/runs/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/setup/page/app-paths-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/setup/page/build-manifest.json +21 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/setup/page/next-font-manifest.json +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/setup/page/react-loadable-manifest.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/setup/page/server-reference-manifest.json +4 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/setup/page.js +17 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/setup/page.js.map +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/setup/page.js.nft.json +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app/setup/page_client-reference-manifest.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/app-paths-manifest.json +11 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/[externals]__01t2nd50u5k0d._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/[externals]__0bwf06g0pqv3h._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/[externals]__1p2j9_5g429uh._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/[root-of-the-server]__0et0fkanwxxur._.js +68 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/[root-of-the-server]__15bjnu5yieigz._.js +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/[turbopack]_runtime.js +937 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/_1-uxi_ka-dy7f._.js +61 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/_1cf_ofyvvip7w._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/dashboard__next-internal_server_app_api_unharness_route_actions_0idahp0hszu62.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/dashboard__next-internal_server_app_icon_svg_route_actions_04_c50qf4s1__.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0e4r8nifm7acf._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0iouqk55sdstw._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0py1t7q9ntzgc._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0qcba441g9j7r._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0wa-x71951lbx._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__19fljo_8kk85l._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1u6lhnfk61fw4._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1uyyd8v8upnf3._.js +14 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[root-of-the-server]__20ejk3g6jcji-._.js +110 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/[turbopack]_runtime.js +937 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/_01bzqkhgvulml._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard__next-internal_server_app__global-error_page_actions_1tjktvdwype04.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard__next-internal_server_app__not-found_page_actions_1chp6c-vsqob8.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard__next-internal_server_app_compare_page_actions_0yvj-bxnypqy9.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard__next-internal_server_app_page_actions_1wdlm_33hg0oy.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard__next-internal_server_app_runs_[id]_page_actions_1yv7i200qm874.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard__next-internal_server_app_runs_page_actions_0j5zwb1ilucsr.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard__next-internal_server_app_setup_page_actions_0oowi28yqn1aa.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_app_charts_tsx_0tszf3h61tpzg._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_app_compare_page_tsx_0f6y9yl_umbwg._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_app_page_tsx_0ih6_j2n6j4ya._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_app_runs_page_tsx_0uftws_qldjqo._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/dashboard_app_setup_page_tsx_0k3bphpyf611u._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_01xbj_9zg44kw._.js +33 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_0gxlxpuufujz9._.js +33 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_0janj0i6dqko7._.js +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_0vn8q0im74u1u._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j32_ibz4._.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9mbf-fh.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892nagajq.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0xky89qu.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_compiled_@edge-runtime_cookies_index_1kiz_an963mbg.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_ozp0yuu4qg1.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0j87yuz4ra2av.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tu9pkc8da8u2.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z4y02i7.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1e2gs9uhe-2mi.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1s_41xd6mnrrx.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1yvj-i4d766aw.js +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/chunks/ssr/src_queries_ts_1qvec252dciw9._.js +17 -0
- package/dashboard/.next/standalone/dashboard/.next/server/functions-config-manifest.json +14 -0
- package/dashboard/.next/standalone/dashboard/.next/server/middleware-build-manifest.js +94 -0
- package/dashboard/.next/standalone/dashboard/.next/server/middleware-manifest.json +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/middleware.js +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/next-font-manifest.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/next-font-manifest.json +6 -0
- package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/pages-manifest.json +3 -0
- package/dashboard/.next/standalone/dashboard/.next/server/prefetch-hints.json +11 -0
- package/dashboard/.next/standalone/dashboard/.next/server/preview-props.json +5 -0
- package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.json +5 -0
- package/dashboard/.next/standalone/dashboard/.next/static/aBZEFjL-d2jaSL3uX4Mft/_buildManifest.js +11 -0
- package/dashboard/.next/standalone/dashboard/.next/static/aBZEFjL-d2jaSL3uX4Mft/_clientMiddlewareManifest.js +6 -0
- package/dashboard/.next/standalone/dashboard/.next/static/aBZEFjL-d2jaSL3uX4Mft/_ssgManifest.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/0r-yur70-ku2o.js +22 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/0umf92h1sb77c.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/27_tnesx4_7-4.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/2bs2_lhv9t90b.css +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/3cfn99dbrcvvp.js +31 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/3wbm-994r45kr.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/chunks/turbopack-3-ry682tkyiqk.js +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/icon.2s3751p6y-0bd.svg +1 -0
- package/dashboard/.next/standalone/dashboard/.next/static/media/pricing-snapshot.2oehiifqte0u8.json +886 -0
- package/dashboard/.next/standalone/dashboard/server.js +38 -0
- package/dashboard/.next/standalone/dashboard/tsconfig.json +38 -0
- package/dashboard/.next/standalone/node_modules/@next/env/dist/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/@next/env/package.json +36 -0
- package/dashboard/.next/standalone/node_modules/@swc/helpers/cjs/_interop_require_default.cjs +6 -0
- package/dashboard/.next/standalone/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs +38 -0
- package/dashboard/.next/standalone/node_modules/@swc/helpers/esm/_interop_require_default.js +4 -0
- package/dashboard/.next/standalone/node_modules/@swc/helpers/esm/_interop_require_wildcard.js +36 -0
- package/dashboard/.next/standalone/node_modules/@swc/helpers/package.json +705 -0
- package/dashboard/.next/standalone/node_modules/client-only/index.js +0 -0
- package/dashboard/.next/standalone/node_modules/client-only/package.json +19 -0
- package/dashboard/.next/standalone/node_modules/detect-libc/lib/detect-libc.js +313 -0
- package/dashboard/.next/standalone/node_modules/detect-libc/lib/elf.js +39 -0
- package/dashboard/.next/standalone/node_modules/detect-libc/lib/filesystem.js +51 -0
- package/dashboard/.next/standalone/node_modules/detect-libc/lib/process.js +24 -0
- package/dashboard/.next/standalone/node_modules/detect-libc/package.json +44 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/adapter/setup-node-env.external.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/define-env.js +257 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/duration-to-string.js +98 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/get-supported-browsers.js +38 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/next-config-ts/require-hook.js +85 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/next-config-ts/transpile-config.js +136 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/nft.js +119 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/output/format.js +84 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/output/log.js +135 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/segment-config/app/app-segment-config.js +192 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/segment-config/app/app-segments.js +238 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/segment-config/app/collect-root-param-keys.js +48 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js +143 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/static-paths/app.js +880 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/static-paths/pages.js +137 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/static-paths/param-matching.js +200 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/static-paths/utils.js +119 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/swc/helpers.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/swc/index.js +1339 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/swc/install-bindings.js +30 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/swc/jest-transformer.js +77 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/swc/loaderWorkerPool.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/swc/options.js +411 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/swc/types.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/build/utils.js +1348 -0
- package/dashboard/.next/standalone/node_modules/next/dist/cli/next-test.js +175 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/add-base-path.js +24 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/app-call-server.js +32 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/app-find-source-map-url.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/assign-location.js +29 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/app-router-announcer.js +78 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/app-router-headers.js +128 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/app-router-instance.js +263 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/app-router-state.js +527 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/app-router-utils.js +58 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/app-router.js +531 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/builtin/default.js +35 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/builtin/error-styles.js +165 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/builtin/global-error.js +100 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js +48 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/error-boundary.js +148 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js +86 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/errors/root-error-boundary.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/forbidden.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/handle-isr-error.js +45 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/hooks-server-context.js +42 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js +125 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js +72 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/instant-samples.js +127 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/is-next-router-error.js +23 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/links.js +315 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/nav-failure-handler.js +61 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/navigation-devtools.js +126 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/navigation-dynamic-rendering.js +38 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/navigation-untracked.js +68 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/navigation.js +242 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/navigation.react-server.js +71 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/navigator.js +73 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/not-found.js +38 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/offline.js +172 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/prefetch.js +83 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/readonly-url-search-params.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/redirect-boundary.js +107 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/redirect-error.js +43 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/redirect-status-code.js +24 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/redirect.js +79 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/render-tree.js +1439 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js +213 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js +21 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js +174 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/create-segment-key.js +42 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js +624 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js +70 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/committed-state.js +49 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js +38 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js +29 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js +56 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +93 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js +78 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +350 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +67 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js +70 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/router-reducer.js +66 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js +66 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/router-transition.js +135 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/bfcache.js +120 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/cache-key.js +56 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/cache-map.js +326 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/cache.js +2671 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/decode-server-response.js +419 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/fetch.js +37 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/lru.js +152 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js +415 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/optimistic-routes.js +643 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/scheduler.js +1809 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/types.js +93 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/segment-cache/vary-path.js +340 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/sequential-router-queue.js +163 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/server-async-storage.js +43 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/static-generation-bailout.js +42 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/unauthorized.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/unrecognized-action-error.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/unresolved-thenable.js +23 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/unstable-rethrow.js +31 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/use-action-queue.js +140 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/components/use-offline.js +68 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/dev/debug-channel.js +111 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/flight-data-helpers.js +182 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/has-base-path.js +23 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/lib/console.js +177 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/lib/javascript-url.js +32 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/navigation-build-id.js +53 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/normalize-trailing-slash.js +37 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/remove-base-path.js +32 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/route-params.js +271 -0
- package/dashboard/.next/standalone/node_modules/next/dist/client/sequential-call-server.js +45 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js +339 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/cookies/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/ponyfill/index.js +46 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/ponyfill/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/abort-controller.js.text.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/console.js.text.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/events.js.text.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/index.js +5 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/load.js +18713 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/stream.js +44 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/timers.js.text.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@edge-runtime/primitives/url.js.text.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@hapi/accept/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@hapi/accept/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@napi-rs/triples/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@napi-rs/triples/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@opentelemetry/api/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@opentelemetry/api/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@vercel/detect-agent/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/@vercel/detect-agent/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/async-retry/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/async-retry/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/async-sema/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/async-sema/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/busboy/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/busboy/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/bytes/index.js +8 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/bytes/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/ci-info/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/ci-info/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/commander/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/commander/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/comment-json/index.js +7 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/comment-json/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/compression/index.js +58 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/compression/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/conf/index.js +3 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/conf/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/content-disposition/index.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/content-disposition/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/cookie/index.js +7 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/cookie/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/cross-spawn/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/cross-spawn/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/debug/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/debug/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/edge-runtime/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/edge-runtime/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/find-up/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/find-up/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/fresh/index.js +8 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/fresh/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/hash.js/sha256/256.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/hash.js/sha256/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/httpxy/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/httpxy/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/image-detector/detector.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/image-size/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/image-size/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/ipaddr.js/ipaddr.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/ipaddr.js/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/is-animated/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/is-animated/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/is-docker/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/is-docker/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/is-wsl/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/is-wsl/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/jsonwebtoken/index.js +11 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/jsonwebtoken/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/nanoid/index.cjs +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/nanoid/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +327 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +327 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +8 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/p-limit/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/p-limit/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/p-queue/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/p-queue/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/path-browserify/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/path-browserify/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/path-to-regexp/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/path-to-regexp/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/picomatch/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/picomatch/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/react-is/cjs/react-is.development.js +133 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/react-is/cjs/react-is.production.js +130 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/react-is/index.js +7 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/react-is/package.json +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/regenerator-runtime/package.json +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/regenerator-runtime/runtime.js +729 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/semver/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/semver/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/send/index.js +70 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/send/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/source-map/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/source-map/source-map.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/stacktrace-parser/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/string-hash/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/string-hash/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/strip-ansi/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/strip-ansi/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/superstruct/index.cjs +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/superstruct/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/tar/index.min.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/tar/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/text-table/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/text-table/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/watchpack/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/watchpack/watchpack.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/write-file-atomic/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/write-file-atomic/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/ws/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/ws/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/zod/index.cjs +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/zod/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/zod-validation-error/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/compiled/zod-validation-error/package.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/experimental/testmode/context.js +57 -0
- package/dashboard/.next/standalone/node_modules/next/dist/experimental/testmode/fetch.js +150 -0
- package/dashboard/.next/standalone/node_modules/next/dist/experimental/testmode/httpget.js +33 -0
- package/dashboard/.next/standalone/node_modules/next/dist/experimental/testmode/server-edge.js +32 -0
- package/dashboard/.next/standalone/node_modules/next/dist/experimental/testmode/server.js +73 -0
- package/dashboard/.next/standalone/node_modules/next/dist/export/helpers/create-incremental-cache.js +66 -0
- package/dashboard/.next/standalone/node_modules/next/dist/export/utils.js +37 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/batcher.js +65 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/build-custom-route.js +46 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/bundler.js +168 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/client-and-server-references.js +54 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/coalesced-function.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/compile-error.js +14 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/constants.js +420 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/create-client-router-filter.js +83 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/default-transpiled-packages.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/detect-typo.js +51 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/dist-dir.js +88 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/download-swc.js +175 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/fallback.js +88 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/file-exists.js +53 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/find-config.js +102 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/find-pages-dir.js +57 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/find-root.js +280 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/format-cli-help-output.js +84 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/format-dynamic-import-path.js +43 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/format-server-error.js +75 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/framework/boundary-components.js +62 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/framework/boundary-constants.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/fs/rename.js +87 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/fs/write-atomic.js +28 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/generate-interception-routes-rewrites.js +52 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/get-files-in-dir.js +33 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/get-network-host.js +44 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/get-package-version.js +118 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/get-project-dir.js +51 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/git-worktree.js +74 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/has-necessary-dependencies.js +49 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/helpers/get-cache-directory.js +62 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/helpers/get-npx-command.js +29 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/helpers/get-online.js +50 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/helpers/get-pkg-manager.js +65 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/helpers/get-registry.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/helpers/get-reserved-port.js +116 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/helpers/git.js +104 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/helpers/install.js +83 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/import-next-warning.js +50 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/inline-static-env.js +108 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/install-dependencies.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/interop-default.js +16 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/is-api-route.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/is-app-page-route.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/is-app-route-route.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/is-edge-runtime.js +16 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/is-error.js +66 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/is-interception-route-rewrite.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/is-internal-component.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/is-serializable-props.js +82 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/known-edge-safe-packages.json +1 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/load-custom-routes.js +594 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/memory/gc-observer.js +53 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/memory/shutdown.js +29 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/memory/startup.js +47 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/memory/trace.js +109 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/constants.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/default-metadata.js +82 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/generate/icon-mark.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/generate/utils.js +52 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/get-metadata-route.js +162 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/index.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/is-metadata-route.js +221 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/metadata-context.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/metadata-elements.js +1498 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/metadata-parallel.js +175 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/metadata-resolution-primitives.js +467 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/metadata.js +174 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/resolve-metadata-parallel.js +632 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/resolve-metadata.js +485 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js +232 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js +56 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js +199 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-title.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/resolvers/resolve-url.js +135 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/types/alternative-urls-types.js +7 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/types/extra-types.js +9 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/types/icons.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/types/manifest-types.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/types/metadata-interface.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/types/metadata-types.js +10 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/types/opengraph-types.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/types/resolvers.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/metadata/types/twitter-types.js +7 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/mime-type.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/mkcert.js +188 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/multi-file-writer.js +75 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/needs-experimental-react.js +16 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/non-nullable.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/normalize-path.js +21 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/oxford-comma-list.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/page-types.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/patch-incorrect-lockfile.js +181 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/pick.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/picocolors.js +187 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/pretty-bytes.js +70 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/profiles-dir.js +45 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/realpath.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/recursive-copy.js +76 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/recursive-delete.js +176 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/recursive-readdir.js +124 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/redirect-status.js +46 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/require-instrumentation-client.js +32 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/resolve-build-paths.js +178 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/resolve-from.js +57 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/route-pattern-normalizer.js +107 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/scheduler.js +64 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/semver-noop.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/server-external-packages.jsonc +103 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/setup-exception-listeners.js +11 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/static-env.js +88 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/try-to-parse-path.js +67 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/turbopack-cache-seed.js +171 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/turbopack-warning.js +185 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/diagnosticFormatter.js +243 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/getTypeScriptConfiguration.js +61 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/getTypeScriptIntent.js +52 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/loadTsConfig.js +181 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/missingDependencyError.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/runTypeCheck.js +141 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/runTypeCheckCli.js +52 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/runTypeScriptCli.js +244 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/type-paths.js +51 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/writeAppTypeDeclarations.js +77 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/typescript/writeConfigurationDefaults.js +395 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/url.js +75 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/verify-partytown-setup.js +100 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/verify-root-layout.js +165 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/verify-typescript-setup.js +271 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/wait.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/warn-missing-react-dependencies.js +33 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/with-promise-cache.js +24 -0
- package/dashboard/.next/standalone/node_modules/next/dist/lib/worker.js +230 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/ReactDOMServerPages.js +16 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/accept-header.js +120 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/after/after-context.js +158 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/after/after.js +24 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/after/awaiter.js +70 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/after/builtin-request-context.js +38 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/after/index.js +21 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/after/run-with-after.js +35 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/api-utils/get-cookie-parser.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/api-utils/index.js +208 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/api-utils/node/api-resolver.js +355 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/api-utils/node/parse-body.js +67 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/api-utils/node/try-get-preview-data.js +89 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/api-utils/web.js +17 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/action-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/action-async-storage.external.js +13 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/action-handler.js +1088 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/after-task-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/after-task-async-storage.external.js +13 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/app-render-prerender-utils.js +308 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/app-render-render-utils.js +72 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/app-render-scheduling.js +176 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/app-render.js +6632 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/async-local-storage.js +81 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/blocking-route-messages.js +230 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/cache-signal.js +207 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/collect-segment-data.js +1003 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/console-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/console-async-storage.external.js +13 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/create-component-styles-and-scripts.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/create-component-tree.js +782 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/create-error-handler.js +196 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/create-transport-tree-from-loader-tree.js +190 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/csrf-protection.js +86 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/debug-channel-server.js +47 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/debug-channel-server.node.js +60 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/debug-channel-server.web.js +56 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/dev-validation-error-delivery.js +28 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/dev-validation-events.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/dev-validation-scheduler.js +86 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/dev-validation-worker-globals.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/dev-validation-worker-snapshot.js +81 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering-client.js +124 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering-validation.js +814 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/dynamic-rendering.js +334 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/encryption-utils-server.js +114 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/encryption-utils.js +89 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/encryption.js +248 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/entry-base.js +260 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/flight-render-result.js +28 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/get-asset-query-string.js +29 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/get-css-inlined-link-tags.js +45 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/get-layer-assets.js +69 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/get-preloadable-fonts.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/get-script-nonce-from-header.js +32 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/get-short-dynamic-param-type.js +25 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/has-loading-component-in-tree.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/instant-test-bootstrap.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js +31 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-impl.js +118 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js +38 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-config.js +233 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-samples.js +383 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js +33 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/instant-validation.js +873 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/instant-validation/stream-utils.js +88 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/interop-default.js +17 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/make-get-server-inserted-html.js +91 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/manifests-singleton.js +399 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.js +29 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/module-loading/instrument-module-getter.js +32 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/module-loading/track-dynamic-import.js +49 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js +32 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js +62 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/parse-and-validate-flight-router-state.js +37 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/postponed-state.js +266 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/prospective-render-utils.js +70 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/react-large-shell-error.js +17 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/react-server.node.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/render-css-resource.js +57 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/render-in-browser.js +27 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/required-scripts.js +72 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/rsc/preloads.js +74 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/rsc/taint.js +75 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/segment-config/ensure-static.js +206 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/segment-explorer-path.js +128 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/server-inserted-html.js +77 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/staged-rendering.js +316 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/stale-time.js +101 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/stream-ops.js +155 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/stream-ops.node.js +848 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/stream-ops.web.js +233 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/strip-flight-headers.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/sync-io-messages.js +59 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/types.js +66 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/use-flight-response.js +204 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/vary-params.js +262 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/wait-for-response.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/walk-tree-with-flight-router-state.js +235 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/work-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/work-async-storage.external.js +13 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js +14 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js +260 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/async-storage/draft-mode-provider.js +58 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/async-storage/request-store.js +202 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/async-storage/with-store.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/async-storage/work-store.js +96 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/base-http/helpers.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/base-http/index.js +54 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/base-http/node.js +143 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/base-http/web.js +116 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/base-server.js +2181 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/body-streams.js +122 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/cache-dir.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/capsize-font-metrics.json +181516 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/ci-info.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/client-component-renderer-logger.js +171 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/config-schema.js +852 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/config-shared.js +417 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/config-utils.js +185 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/config.js +1658 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js +96 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/crypto-utils.js +70 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/browser-logs/file-logger.js +186 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/browser-logs/receive-logs.js +610 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/browser-logs/source-map.js +222 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/debug-channel.js +108 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/dev-indicator-server-state.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/dev-validation-worker-pool.js +233 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/dev-validation-worker.js +308 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/get-source-map-from-file.js +80 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/hot-middleware.js +302 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-rspack.js +171 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-shared-utils.js +56 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +1894 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-types.js +63 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1386 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/log-requests.js +152 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/messages.js +66 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/middleware-turbopack.js +406 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/middleware-webpack.js +487 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/node-stack-frames.js +64 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/on-demand-entry-handler.js +773 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/parse-version-info.js +108 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/require-cache.js +109 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/runtime-error-state.js +220 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/serialized-errors.js +63 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/server-action-logger.js +37 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/static-paths-worker.js +107 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/turbopack-utils.js +711 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/use-cache-probe-pool.js +178 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dev/use-cache-probe-worker.js +181 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/dynamic-rendering-utils.js +528 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/font-utils.js +43 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/get-app-route-from-entrypoint.js +30 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/get-page-files.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/get-route-from-entrypoint.js +35 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/image-optimizer/detect-content-type.js +229 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/image-optimizer/extract-etag.js +53 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/image-optimizer/get-image-size.js +25 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/image-optimizer/get-max-age.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/image-optimizer/get-previously-cached-image-or-null.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/image-optimizer/image-error.js +23 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/image-optimizer/image-type.js +86 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/image-optimizer/transform.js +227 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/image-optimizer.js +878 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/instrumentation/types.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/instrumentation/utils.js +21 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/internal-utils.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/is-private-ip.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/app-dir-module.js +59 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/app-info-log.js +145 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/async-callback-set.js +29 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/cache-control.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/cache-handlers/default.external.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/cache-handlers/default.js +192 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/cache-handlers/types.js +8 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/chrome-devtools-workspace.js +112 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/clone-response.js +77 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/cpu-profile.js +56 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/decode-query-path-parameter.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/dedupe-fetch.js +120 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/dev-bundler-service.js +110 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/disk-lru-cache.external.js +63 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/encode-header-safe.js +44 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/etag.js +56 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/experimental/create-env-definitions.js +48 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/find-page-file.js +147 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/fix-mojibake.js +25 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/format-hostname.js +16 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/generate-agent-files.js +303 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/i18n-provider.js +125 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/implicit-tags.js +87 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +500 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/index.js +556 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +55 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js +81 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js +55 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/install-code-frame.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/is-ipv6.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/is-non-html-sec-fetch-dest.js +38 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/is-rsc-request.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/lazy-module.js +76 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/lazy-result.js +46 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/lru-cache.js +187 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/match-next-data-pathname.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/mock-request.js +345 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/module-loader/module-loader.js +8 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/module-loader/node-module-loader.js +21 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/module-loader/route-module-loader.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/node-fs-methods.js +42 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/params-utils.js +52 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/parse-stack.js +46 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/patch-fetch-symbol.js +13 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/patch-fetch.js +1029 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/patch-set-header.js +45 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/postponed-request-body.js +60 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/release-compression-stream.js +24 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/render-server.js +149 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/route-cache-key.js +77 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-server.js +826 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/block-cross-site-dev.js +108 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/build-data-route.js +71 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.js +50 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/cache-life-type-utils.js +181 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/decode-path-params.js +38 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/filesystem.js +793 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js +214 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js +110 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/normalize-catchall-routes.js +320 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/proxy-request.js +128 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/resolve-routes.js +652 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/root-params-type-utils.js +61 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/route-types-utils.js +326 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/router-server-context.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/strict-route-matching-config.js +28 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/typegen.js +938 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/router-utils/types.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/server-action-request-meta.js +53 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/server-ipc/utils.js +83 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/source-maps.js +241 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/start-server.js +550 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/streaming-metadata.js +27 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/to-route.js +37 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/trace/constants.js +260 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/trace/local-span-recorder.js +385 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/trace/request-insights-identity.js +37 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/trace/request-insights.js +308 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/trace/span-store.js +69 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/trace/tracer.js +408 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/trace/utils.js +16 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/types.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/utils.js +343 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/lib/worker-utils.js +32 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/load-components.js +190 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/load-default-error-components.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/load-manifest.external.js +116 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/match-bundle.js +25 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/get-mcp-middleware.js +51 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/get-or-create-mcp-server.js +51 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/mcp-telemetry-tracker.js +82 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/compile-route.js +86 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/get-compilation-issues.js +68 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/get-errors.js +114 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/get-logs.js +67 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/get-page-metadata.js +188 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/get-project-metadata.js +59 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/get-request-insights.js +57 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/get-routes.js +136 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/get-server-action-by-id.js +121 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/next-instance-error-state.js +31 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/utils/browser-communication.js +82 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/utils/format-compilation-issues.js +72 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/utils/format-errors.js +137 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/mcp/tools/utils/resolve-path-to-route.js +49 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/next-server.js +1452 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/next-typescript.js +13 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/next.js +473 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-baseline.js +25 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/console-dim.external.js +300 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/console-exit.js +49 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/console-file.js +56 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/date.js +52 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/error-inspect.js +8 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js +630 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/global-behaviors.js +29 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/io-utils.js +103 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/node-crypto.js +103 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/process-error-handlers.js +161 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/random.js +28 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js +507 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment-extensions/web-crypto.js +45 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-environment.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/node-polyfill-crypto.js +21 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/absolute-filename-normalizer.js +33 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/built/app/app-bundle-path-normalizer.js +54 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/built/app/app-filename-normalizer.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/built/app/app-page-normalizer.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/built/app/app-pathname-normalizer.js +55 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/built/app/index.js +42 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/built/pages/index.js +44 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-bundle-path-normalizer.js +55 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-filename-normalizer.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-page-normalizer.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/built/pages/pages-pathname-normalizer.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/locale-route-normalizer.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/normalizer.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/normalizers.js +23 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/prefixing-normalizer.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/request/base-path.js +21 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/request/next-data.js +34 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/request/pathname-normalizer.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/request/prefix.js +35 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/request/rsc.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.js +33 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/request/suffix.js +27 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/underscore-normalizer.js +17 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/normalizers/wrap-normalizer-fn.js +17 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/og/cache-image-response.js +336 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/og/image-response.js +72 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/patch-error-inspect.js +515 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/pipe-readable.js +224 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/post-process.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/render-result.js +234 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/render.js +1004 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/cache-stages.js +250 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/connection.js +104 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/cookies.js +204 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/draft-mode.js +192 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/fallback-params.js +109 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/headers.js +201 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/io.js +87 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/params.js +500 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/pathname.js +89 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/root-params.js +146 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/search-params.js +505 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request/utils.js +77 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/request-meta.js +55 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/require-hook.js +82 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/require.js +109 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/response-cache/index.js +361 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/response-cache/types.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/response-cache/utils.js +100 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/response-cache/web.js +104 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/resume-data-cache/cache-store.js +119 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/resume-data-cache/resume-data-cache.js +144 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/revalidation-utils.js +158 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-definitions/app-page-route-definition.js +16 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-definitions/app-route-route-definition.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-definitions/locale-route-definition.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-definitions/pages-api-route-definition.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-definitions/pages-route-definition.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-definitions/route-definition.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-kind.js +32 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-matches/app-page-route-match.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-matches/app-route-route-match.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-matches/locale-route-match.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-matches/pages-api-route-match.js +16 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-matches/pages-route-match.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-matches/route-match.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/dev-render-context.js +23 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/helpers/prerender-manifest-matcher.js +52 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/module.compiled.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/module.js +188 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/module.render.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/normalize-request-url.js +62 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/parse-request-headers.js +58 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.js +87 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/head-manager-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/image-config-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/router-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.js +136 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-server.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-static.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.js +121 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtime.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom-server.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-turbopack-client.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/auto-implement-methods.js +81 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/clean-url.js +24 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/get-pathname-from-absolute-path.js +29 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/is-static-gen-enabled.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-route/helpers/parsed-url-query-to-params.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-route/module.compiled.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-route/module.js +915 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/app-route/shared-modules.js +56 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/checks.js +45 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/builtin/_error.js +100 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/module.compiled.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/module.js +92 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/module.render.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/pages-handler.js +582 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/app-router-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.js +102 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/head-manager-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/hooks-client-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/html-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/image-config-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/loadable-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/loadable.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/router-context.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages/vendored/contexts/server-inserted-html.js +4 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages-api/module.compiled.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/pages-api/module.js +54 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/route-modules/route-module.js +777 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/runtime-reacts.external.js +46 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/send-payload.js +88 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/send-response.js +70 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/serve-static.js +62 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/server-route-utils.js +30 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/server-utils.js +340 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/setup-http-agent-env.js +27 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/stream-utils/encoded-tags.js +122 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/stream-utils/node-buffered-transform-stream.js +51 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/stream-utils/node-web-streams-helper.js +935 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/stream-utils/uint8array-helpers.js +74 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/typescript/constant.js +100 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/typescript/index.js +199 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/typescript/rules/client-boundary.js +100 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/typescript/rules/config.js +561 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/typescript/rules/entry.js +149 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/typescript/rules/error.js +38 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/typescript/rules/metadata.js +234 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/typescript/rules/server-boundary.js +115 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/typescript/rules/server.js +79 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/typescript/utils.js +212 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/cache-life-profile.js +60 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/cache-life.js +79 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/cache-tag.js +46 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/clone-cache-entry.js +28 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/constants.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/handlers.js +265 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/tiered-cache-handler.js +147 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-errors.js +58 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-messages.js +190 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-probe-globals.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-probe-scheduler.js +117 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +2689 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/utils.js +73 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/adapter.js +466 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/edge-route-module-wrapper.js +135 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/error.js +54 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/exports/index.js +56 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/forward-trace-context.js +102 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/get-edge-preview-props.js +23 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/globals.js +116 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/http.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/internal-edge-wait-until.js +64 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/next-url.js +195 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/sandbox/context.js +444 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/sandbox/fetch-inline-assets.js +35 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/sandbox/index.js +28 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/sandbox/resource-managers.js +123 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/sandbox/sandbox.js +133 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/adapters/headers.js +288 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/adapters/next-request.js +138 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js +30 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js +221 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/cookies.js +29 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/fetch-event.js +90 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/image-response.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/request.js +99 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/response.js +128 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/revalidate.js +188 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/unstable-cache.js +299 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/unstable-no-store.js +50 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/url-pattern.js +13 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/spec-extension/user-agent.js +46 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/types.js +6 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/utils.js +147 -0
- package/dashboard/.next/standalone/node_modules/next/dist/server/web/web-on-close.js +79 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/action-revalidation-kind.js +31 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js +50 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/app-router-types.js +169 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/constants.js +458 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/deep-freeze.js +30 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/deployment-id.js +63 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/dset.js +34 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/encode-uri-path.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/entry-constants.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/error-source.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/errors/code-frame.js +21 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/errors/constants.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/errors/empty-generate-static-params-error.js +27 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/errors/ensure-static-gsp-errors.js +30 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/errors/hard-deprecated-config-error.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/escape-regexp.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/get-hostname.js +23 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/hash.js +42 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/head.js +164 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js +60 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/html-context.shared-runtime.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/htmlescape.js +52 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js +25 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/i18n/get-locale-redirect.js +59 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js +54 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/image-blur-svg.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/image-config.js +128 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/instant-messages.js +35 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/invariant-error.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/is-plain-object.js +42 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/is-thenable.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/isomorphic/path.js +14 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js +37 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/lazy-dynamic/react-browser-bailout.js +45 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/loadable-context.shared-runtime.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/loadable.shared-runtime.js +246 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/magic-identifier.js +198 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/match-local-pattern.js +46 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/match-remote-pattern.js +59 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/modern-browserslist-target.js +15 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/no-fallback-error.external.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/normalized-asset-prefix.js +28 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/page-path/absolute-path-to-page.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/page-path/get-page-paths.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/page-path/normalize-data-path.js +23 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/page-path/normalize-page-path.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/page-path/normalize-path-sep.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/page-path/remove-page-path-tail.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/promise-with-resolvers.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/request-insights.js +30 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/adapters.js +139 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/routes/app.js +146 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/add-locale.js +28 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/app-paths.js +84 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/as-path-to-search-params.js +17 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js +70 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/escape-path-delimiters.js +16 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js +27 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/format-url.js +111 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js +166 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js +52 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/get-route-from-asset-path.js +25 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/get-segment-param.js +90 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/html-bots.js +17 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/index.js +30 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/interception-prefix-from-param-type.js +33 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/interception-routes.js +151 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/is-bot.js +57 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/is-dynamic.js +26 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.js +31 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js +30 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/parse-path.js +33 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/parse-url.js +38 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/path-match.js +49 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/prepare-destination.js +289 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/querystring.js +110 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/relativize-url.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js +112 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/route-match-utils.js +113 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/route-matcher.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/route-regex.js +256 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router/utils/sorted-routes.js +200 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/router-context.shared-runtime.js +18 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/rsc-transport.js +108 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js +86 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js +87 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/segment.js +90 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.js +35 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/server-reference-info.js +68 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/side-effect.js +63 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/size-limit.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/turbopack/internal-error.js +48 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/utils/reflect-utils.js +69 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/utils/warn-once.js +22 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/utils.js +207 -0
- package/dashboard/.next/standalone/node_modules/next/dist/shared/lib/zod.js +97 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/agent-name.js +20 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/anonymous-meta.js +91 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/detached-flush.js +49 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/events/build.js +186 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/events/index.js +41 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/events/plugins.js +51 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/events/swc-load-failure.js +55 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/events/version.js +68 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/flush-telemetry.js +19 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/post-telemetry-payload.js +44 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/project-id.js +48 -0
- package/dashboard/.next/standalone/node_modules/next/dist/telemetry/storage.js +317 -0
- package/dashboard/.next/standalone/node_modules/next/dist/trace/index.js +58 -0
- package/dashboard/.next/standalone/node_modules/next/dist/trace/report/index.js +40 -0
- package/dashboard/.next/standalone/node_modules/next/dist/trace/report/to-json-build.js +42 -0
- package/dashboard/.next/standalone/node_modules/next/dist/trace/report/to-json.js +215 -0
- package/dashboard/.next/standalone/node_modules/next/dist/trace/report/to-telemetry.js +36 -0
- package/dashboard/.next/standalone/node_modules/next/dist/trace/shared.js +39 -0
- package/dashboard/.next/standalone/node_modules/next/dist/trace/trace.js +216 -0
- package/dashboard/.next/standalone/node_modules/next/package.json +140 -0
- package/dashboard/.next/standalone/node_modules/react/cjs/react-compiler-runtime.production.js +16 -0
- package/dashboard/.next/standalone/node_modules/react/cjs/react-jsx-dev-runtime.production.js +14 -0
- package/dashboard/.next/standalone/node_modules/react/cjs/react-jsx-runtime.production.js +34 -0
- package/dashboard/.next/standalone/node_modules/react/cjs/react.production.js +565 -0
- package/dashboard/.next/standalone/node_modules/react/compiler-runtime.js +14 -0
- package/dashboard/.next/standalone/node_modules/react/index.js +7 -0
- package/dashboard/.next/standalone/node_modules/react/jsx-dev-runtime.js +7 -0
- package/dashboard/.next/standalone/node_modules/react/jsx-runtime.js +7 -0
- package/dashboard/.next/standalone/node_modules/react/package.json +51 -0
- package/dashboard/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +6978 -0
- package/dashboard/.next/standalone/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +7072 -0
- package/dashboard/.next/standalone/node_modules/react-dom/cjs/react-dom-server.browser.production.js +7846 -0
- package/dashboard/.next/standalone/node_modules/react-dom/cjs/react-dom-server.edge.production.js +7955 -0
- package/dashboard/.next/standalone/node_modules/react-dom/cjs/react-dom-server.node.production.js +8134 -0
- package/dashboard/.next/standalone/node_modules/react-dom/cjs/react-dom.production.js +229 -0
- package/dashboard/.next/standalone/node_modules/react-dom/index.js +38 -0
- package/dashboard/.next/standalone/node_modules/react-dom/package.json +117 -0
- package/dashboard/.next/standalone/node_modules/react-dom/server.browser.js +16 -0
- package/dashboard/.next/standalone/node_modules/react-dom/server.edge.js +17 -0
- package/dashboard/.next/standalone/node_modules/react-dom/server.node.js +18 -0
- package/dashboard/.next/standalone/node_modules/react-dom/static.node.js +14 -0
- package/dashboard/.next/standalone/node_modules/semver/classes/comparator.js +143 -0
- package/dashboard/.next/standalone/node_modules/semver/classes/range.js +577 -0
- package/dashboard/.next/standalone/node_modules/semver/classes/semver.js +350 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/clean.js +8 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/cmp.js +54 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/coerce.js +62 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/compare-build.js +9 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/compare-loose.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/compare.js +7 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/diff.js +60 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/eq.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/gt.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/gte.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/inc.js +21 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/lt.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/lte.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/major.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/minor.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/neq.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/parse.js +18 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/patch.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/prerelease.js +8 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/rcompare.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/rsort.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/satisfies.js +12 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/sort.js +5 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/truncate.js +48 -0
- package/dashboard/.next/standalone/node_modules/semver/functions/valid.js +8 -0
- package/dashboard/.next/standalone/node_modules/semver/index.js +93 -0
- package/dashboard/.next/standalone/node_modules/semver/internal/constants.js +37 -0
- package/dashboard/.next/standalone/node_modules/semver/internal/debug.js +11 -0
- package/dashboard/.next/standalone/node_modules/semver/internal/identifiers.js +29 -0
- package/dashboard/.next/standalone/node_modules/semver/internal/lrucache.js +42 -0
- package/dashboard/.next/standalone/node_modules/semver/internal/parse-options.js +17 -0
- package/dashboard/.next/standalone/node_modules/semver/internal/re.js +223 -0
- package/dashboard/.next/standalone/node_modules/semver/package.json +78 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/gtr.js +6 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/intersects.js +9 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/ltr.js +6 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/min-version.js +63 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/outside.js +82 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/simplify.js +49 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/subset.js +249 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/to-comparators.js +10 -0
- package/dashboard/.next/standalone/node_modules/semver/ranges/valid.js +13 -0
- package/dashboard/.next/standalone/node_modules/styled-jsx/dist/index/index.js +499 -0
- package/dashboard/.next/standalone/node_modules/styled-jsx/index.js +1 -0
- package/dashboard/.next/standalone/node_modules/styled-jsx/package.json +132 -0
- package/dashboard/.next/standalone/node_modules/styled-jsx/style.js +1 -0
- package/dashboard/.next/standalone/package.json +1 -0
- package/dist/adapters/claude-code.js +351 -0
- package/dist/adapters/codex.js +565 -0
- package/dist/adapters/eve.js +173 -0
- package/dist/checks.js +142 -0
- package/dist/cli.js +471 -0
- package/dist/collector.js +180 -0
- package/dist/db.js +171 -0
- package/dist/fingerprint.js +57 -0
- package/dist/pricing-snapshot.json +886 -0
- package/dist/pricing.js +70 -0
- package/dist/profiles.js +84 -0
- package/dist/queries.js +352 -0
- package/dist/setup.js +264 -0
- package/dist/types.js +3 -0
- package/dist/update.js +50 -0
- package/dist/util.js +107 -0
- package/package.json +53 -4
- package/skills/summarize-run/SKILL.md +22 -0
- package/skills/unharness/SKILL.md +18 -0
- package/src/adapters/claude-code.ts +352 -0
- package/src/adapters/codex.ts +488 -0
- package/src/adapters/eve.ts +180 -0
- package/src/checks.ts +134 -0
- package/src/cli.ts +439 -0
- package/src/collector.ts +178 -0
- package/src/db.ts +182 -0
- package/src/fingerprint.ts +60 -0
- package/src/pricing-snapshot.json +886 -0
- package/src/pricing.ts +83 -0
- package/src/profiles.ts +92 -0
- package/src/queries.ts +422 -0
- package/src/setup.ts +255 -0
- package/src/types.ts +153 -0
- package/src/update.ts +44 -0
- package/src/util.ts +105 -0
|
@@ -0,0 +1,1809 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
0 && (module.exports = {
|
|
6
|
+
cancelPrefetchTask: null,
|
|
7
|
+
isPrefetchTaskDirty: null,
|
|
8
|
+
needsSpeculativePrefetch: null,
|
|
9
|
+
pingPrefetchScheduler: null,
|
|
10
|
+
pingPrefetchTask: null,
|
|
11
|
+
reschedulePrefetchTask: null,
|
|
12
|
+
schedulePrefetchTask: null,
|
|
13
|
+
startRevalidationCooldown: null
|
|
14
|
+
});
|
|
15
|
+
function _export(target, all) {
|
|
16
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: all[name]
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
_export(exports, {
|
|
22
|
+
cancelPrefetchTask: function() {
|
|
23
|
+
return cancelPrefetchTask;
|
|
24
|
+
},
|
|
25
|
+
isPrefetchTaskDirty: function() {
|
|
26
|
+
return isPrefetchTaskDirty;
|
|
27
|
+
},
|
|
28
|
+
needsSpeculativePrefetch: function() {
|
|
29
|
+
return needsSpeculativePrefetch;
|
|
30
|
+
},
|
|
31
|
+
pingPrefetchScheduler: function() {
|
|
32
|
+
return pingPrefetchScheduler;
|
|
33
|
+
},
|
|
34
|
+
pingPrefetchTask: function() {
|
|
35
|
+
return pingPrefetchTask;
|
|
36
|
+
},
|
|
37
|
+
reschedulePrefetchTask: function() {
|
|
38
|
+
return reschedulePrefetchTask;
|
|
39
|
+
},
|
|
40
|
+
schedulePrefetchTask: function() {
|
|
41
|
+
return schedulePrefetchTask;
|
|
42
|
+
},
|
|
43
|
+
startRevalidationCooldown: function() {
|
|
44
|
+
return startRevalidationCooldown;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
const _varypath = require("./vary-path");
|
|
48
|
+
const _approutertypes = require("../../../shared/lib/app-router-types");
|
|
49
|
+
const _cache = require("./cache");
|
|
50
|
+
const _cachekey = require("./cache-key");
|
|
51
|
+
const _types = require("./types");
|
|
52
|
+
const _lru = require("./lru");
|
|
53
|
+
const scheduleMicrotask = typeof queueMicrotask === 'function' ? queueMicrotask : (fn)=>Promise.resolve().then(fn).catch((error)=>setTimeout(()=>{
|
|
54
|
+
throw error;
|
|
55
|
+
}));
|
|
56
|
+
const taskHeap = [];
|
|
57
|
+
let inProgressRequests = 0;
|
|
58
|
+
let sortIdCounter = 0;
|
|
59
|
+
let didScheduleMicrotask = false;
|
|
60
|
+
// The most recently hovered (or touched, etc) link, i.e. the most recent task
|
|
61
|
+
// scheduled at Intent priority. There's only ever a single task at Intent
|
|
62
|
+
// priority at a time. We reserve special network bandwidth for this task only.
|
|
63
|
+
let mostRecentlyHoveredLink = null;
|
|
64
|
+
// CDN cache propagation delay after revalidation (in milliseconds)
|
|
65
|
+
const REVALIDATION_COOLDOWN_MS = 300;
|
|
66
|
+
// Timeout handle for the revalidation cooldown. When non-null, prefetch
|
|
67
|
+
// requests are blocked to allow CDN cache propagation.
|
|
68
|
+
let revalidationCooldownTimeoutHandle = null;
|
|
69
|
+
function startRevalidationCooldown() {
|
|
70
|
+
// Clear any existing timeout in case multiple revalidations happen
|
|
71
|
+
// in quick succession.
|
|
72
|
+
if (revalidationCooldownTimeoutHandle !== null) {
|
|
73
|
+
clearTimeout(revalidationCooldownTimeoutHandle);
|
|
74
|
+
}
|
|
75
|
+
// Schedule the cooldown to expire after the delay.
|
|
76
|
+
revalidationCooldownTimeoutHandle = setTimeout(()=>{
|
|
77
|
+
revalidationCooldownTimeoutHandle = null;
|
|
78
|
+
// Retry the prefetch queue now that the cooldown has expired.
|
|
79
|
+
pingPrefetchScheduler();
|
|
80
|
+
}, REVALIDATION_COOLDOWN_MS);
|
|
81
|
+
}
|
|
82
|
+
function schedulePrefetchTask(key, renderTreeAtTimeOfPrefetch, fetchStrategy, priority, onInvalidate, navigationLockPrefetch) {
|
|
83
|
+
// Bind the task to the segment cache map that is active right now: the
|
|
84
|
+
// shared map, unless the Instant Navigation Testing lock is held, in which
|
|
85
|
+
// case the task gets the lock scope's private map. This is the single
|
|
86
|
+
// place work is bound to a map based on lock state — everything downstream
|
|
87
|
+
// receives the map explicitly. See `segmentCacheMap` in cache.ts.
|
|
88
|
+
let taskSegmentCacheMap = _cache.segmentCacheMap;
|
|
89
|
+
if (process.env.__NEXT_EXPOSE_TESTING_API) {
|
|
90
|
+
const { getNavigationLockSegmentCacheMap } = require('./navigation-testing-lock');
|
|
91
|
+
const lockMap = getNavigationLockSegmentCacheMap();
|
|
92
|
+
if (lockMap !== null) {
|
|
93
|
+
taskSegmentCacheMap = lockMap;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Spawn a new prefetch task
|
|
97
|
+
const task = {
|
|
98
|
+
key,
|
|
99
|
+
renderTreeAtTimeOfPrefetch,
|
|
100
|
+
routeCacheVersion: (0, _cache.getCurrentRouteCacheVersion)(),
|
|
101
|
+
segmentCacheVersion: (0, _cache.getCurrentSegmentCacheVersion)(),
|
|
102
|
+
segmentCacheMap: taskSegmentCacheMap,
|
|
103
|
+
priority,
|
|
104
|
+
phase: 2,
|
|
105
|
+
hasBackgroundWork: false,
|
|
106
|
+
hasPendingResponses: false,
|
|
107
|
+
spawnedRuntimePrefetches: null,
|
|
108
|
+
fetchStrategy,
|
|
109
|
+
sortId: sortIdCounter++,
|
|
110
|
+
isCanceled: false,
|
|
111
|
+
fallbackRetryStatus: _cache.EntryStatus.Empty,
|
|
112
|
+
onInvalidate,
|
|
113
|
+
_heapIndex: -1
|
|
114
|
+
};
|
|
115
|
+
if (process.env.__NEXT_EXPOSE_TESTING_API) {
|
|
116
|
+
task._navigationLockPrefetch = navigationLockPrefetch;
|
|
117
|
+
}
|
|
118
|
+
trackMostRecentlyHoveredLink(task);
|
|
119
|
+
heapPush(taskHeap, task);
|
|
120
|
+
// Schedule an async task to process the queue.
|
|
121
|
+
//
|
|
122
|
+
// The main reason we process the queue in an async task is for batching.
|
|
123
|
+
// It's common for a single JS task/event to trigger multiple prefetches.
|
|
124
|
+
// By deferring to a microtask, we only process the queue once per JS task.
|
|
125
|
+
// If they have different priorities, it also ensures they are processed in
|
|
126
|
+
// the optimal order.
|
|
127
|
+
pingPrefetchScheduler();
|
|
128
|
+
return task;
|
|
129
|
+
}
|
|
130
|
+
function cancelPrefetchTask(task) {
|
|
131
|
+
// Remove the prefetch task from the queue. If the task already completed,
|
|
132
|
+
// then this is a no-op.
|
|
133
|
+
//
|
|
134
|
+
// We must also explicitly mark the task as canceled so that a blocked task
|
|
135
|
+
// does not get added back to the queue when it's pinged by the network.
|
|
136
|
+
task.isCanceled = true;
|
|
137
|
+
// A running fallback-retry loop notices `isCanceled` when it next wakes and
|
|
138
|
+
// bails (settling its status to Rejected), so there's nothing to clean up here.
|
|
139
|
+
heapDelete(taskHeap, task);
|
|
140
|
+
}
|
|
141
|
+
function reschedulePrefetchTask(task, renderTreeAtTimeOfPrefetch, fetchStrategy, priority) {
|
|
142
|
+
// Bump the prefetch task to the top of the queue, as if it were a fresh
|
|
143
|
+
// task. This is essentially the same as canceling the task and scheduling
|
|
144
|
+
// a new one, except it reuses the original object.
|
|
145
|
+
//
|
|
146
|
+
// The primary use case is to increase the priority of a Link-initated
|
|
147
|
+
// prefetch on hover.
|
|
148
|
+
// Un-cancel the task, in case it was previously canceled.
|
|
149
|
+
task.isCanceled = false;
|
|
150
|
+
task.phase = 2;
|
|
151
|
+
// Note: fallback-retry state is deliberately NOT reset here. A retry loop runs
|
|
152
|
+
// at most once per task, even across reschedules, so a re-hover never starts a
|
|
153
|
+
// second loop. A loop already running simply continues (it only stops on
|
|
154
|
+
// cancel); `fallbackRetryStatus` never returns to `Empty` once it leaves it.
|
|
155
|
+
// Assign a new sort ID to move it ahead of all other tasks at the same
|
|
156
|
+
// priority level. (Higher sort IDs are processed first.)
|
|
157
|
+
task.sortId = sortIdCounter++;
|
|
158
|
+
task.priority = // If this task is the most recently hovered link, maintain its
|
|
159
|
+
// Intent priority, even if the rescheduled priority is lower.
|
|
160
|
+
task === mostRecentlyHoveredLink ? _types.PrefetchPriority.Intent : priority;
|
|
161
|
+
task.renderTreeAtTimeOfPrefetch = renderTreeAtTimeOfPrefetch;
|
|
162
|
+
task.fetchStrategy = fetchStrategy;
|
|
163
|
+
trackMostRecentlyHoveredLink(task);
|
|
164
|
+
if (task._heapIndex !== -1) {
|
|
165
|
+
// The task is already in the queue.
|
|
166
|
+
heapResift(taskHeap, task);
|
|
167
|
+
} else {
|
|
168
|
+
heapPush(taskHeap, task);
|
|
169
|
+
}
|
|
170
|
+
pingPrefetchScheduler();
|
|
171
|
+
}
|
|
172
|
+
function isPrefetchTaskDirty(task, nextUrl, root) {
|
|
173
|
+
// This is used to quickly bail out of a prefetch task if the result is
|
|
174
|
+
// guaranteed to not have changed since the task was initiated. This is
|
|
175
|
+
// strictly an optimization — theoretically, if it always returned true, no
|
|
176
|
+
// behavior should change because a full prefetch task will effectively
|
|
177
|
+
// perform the same checks.
|
|
178
|
+
return task.routeCacheVersion !== (0, _cache.getCurrentRouteCacheVersion)() || task.segmentCacheVersion !== (0, _cache.getCurrentSegmentCacheVersion)() || task.renderTreeAtTimeOfPrefetch !== root || task.key.nextUrl !== nextUrl;
|
|
179
|
+
}
|
|
180
|
+
function trackMostRecentlyHoveredLink(task) {
|
|
181
|
+
// Track the mostly recently hovered link, i.e. the most recently scheduled
|
|
182
|
+
// task at Intent priority. There must only be one such task at a time.
|
|
183
|
+
if (task.priority === _types.PrefetchPriority.Intent && task !== mostRecentlyHoveredLink) {
|
|
184
|
+
if (mostRecentlyHoveredLink !== null) {
|
|
185
|
+
// Bump the previously hovered link's priority down to Default.
|
|
186
|
+
if (mostRecentlyHoveredLink.priority !== _types.PrefetchPriority.Background) {
|
|
187
|
+
mostRecentlyHoveredLink.priority = _types.PrefetchPriority.Default;
|
|
188
|
+
heapResift(taskHeap, mostRecentlyHoveredLink);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
mostRecentlyHoveredLink = task;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function pingPrefetchScheduler() {
|
|
195
|
+
if (didScheduleMicrotask) {
|
|
196
|
+
// Already scheduled a task to process the queue
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
didScheduleMicrotask = true;
|
|
200
|
+
scheduleMicrotask(processQueueInMicrotask);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Checks if we've exceeded the maximum number of concurrent prefetch requests,
|
|
204
|
+
* to avoid saturating the browser's internal network queue. This is a
|
|
205
|
+
* cooperative limit — prefetch tasks should check this before issuing
|
|
206
|
+
* new requests.
|
|
207
|
+
*
|
|
208
|
+
* Also checks if we're within the revalidation cooldown window, during which
|
|
209
|
+
* prefetch requests are delayed to allow CDN cache propagation.
|
|
210
|
+
*/ function hasNetworkBandwidth(task) {
|
|
211
|
+
// When offline, don't issue any prefetch requests. The scheduler will be
|
|
212
|
+
// re-pinged when connectivity is restored.
|
|
213
|
+
if (process.env.__NEXT_USE_OFFLINE) {
|
|
214
|
+
const { getOffline } = require('../offline');
|
|
215
|
+
if (getOffline()) {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Check if we're within the revalidation cooldown window
|
|
220
|
+
if (revalidationCooldownTimeoutHandle !== null) {
|
|
221
|
+
// We're within the cooldown window. Return false to prevent prefetching.
|
|
222
|
+
// When the cooldown expires, the timeout will call ensureWorkIsScheduled()
|
|
223
|
+
// to retry the queue.
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
// TODO: Also check if there's an in-progress navigation. We should never
|
|
227
|
+
// add prefetch requests to the network queue if an actual navigation is
|
|
228
|
+
// taking place, to ensure there's sufficient bandwidth for render-blocking
|
|
229
|
+
// data and resources.
|
|
230
|
+
// TODO: Consider reserving some amount of bandwidth for static prefetches.
|
|
231
|
+
if (task.priority === _types.PrefetchPriority.Intent) {
|
|
232
|
+
// The most recently hovered link is allowed to exceed the default limit.
|
|
233
|
+
//
|
|
234
|
+
// The goal is to always have enough bandwidth to start a new prefetch
|
|
235
|
+
// request when hovering over a link.
|
|
236
|
+
//
|
|
237
|
+
// However, because we don't abort in-progress requests, it's still possible
|
|
238
|
+
// we'll run out of bandwidth. When links are hovered in quick succession,
|
|
239
|
+
// there could be multiple hover requests running simultaneously.
|
|
240
|
+
return inProgressRequests < 12;
|
|
241
|
+
}
|
|
242
|
+
// The default limit is lower than the limit for a hovered link.
|
|
243
|
+
return inProgressRequests < 4;
|
|
244
|
+
}
|
|
245
|
+
function spawnPrefetchSubtask(prefetchSubtask) {
|
|
246
|
+
// When the scheduler spawns an async task, we don't await its result.
|
|
247
|
+
// Instead, the async task writes its result directly into the cache, then
|
|
248
|
+
// pings the scheduler to continue.
|
|
249
|
+
//
|
|
250
|
+
// We process server responses streamingly, so the prefetch subtask will
|
|
251
|
+
// likely resolve before we're finished receiving all the data. The subtask
|
|
252
|
+
// result includes a promise that resolves once the network connection is
|
|
253
|
+
// closed. The scheduler uses this to control network bandwidth by tracking
|
|
254
|
+
// and limiting the number of concurrent requests.
|
|
255
|
+
inProgressRequests++;
|
|
256
|
+
return prefetchSubtask.then((result)=>{
|
|
257
|
+
if (result === null) {
|
|
258
|
+
// The prefetch task errored before it could start processing the
|
|
259
|
+
// network stream. Assume the connection is closed.
|
|
260
|
+
onPrefetchConnectionClosed();
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
// Wait for the connection to close before freeing up more bandwidth.
|
|
264
|
+
result.closed.then(onPrefetchConnectionClosed);
|
|
265
|
+
return result.value;
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
function onPrefetchConnectionClosed() {
|
|
269
|
+
inProgressRequests--;
|
|
270
|
+
// Notify the scheduler that we have more bandwidth, and can continue
|
|
271
|
+
// processing tasks.
|
|
272
|
+
pingPrefetchScheduler();
|
|
273
|
+
}
|
|
274
|
+
function pingPrefetchTask(task) {
|
|
275
|
+
// "Ping" a prefetch that's already in progress to notify it of new data.
|
|
276
|
+
if (// Check if prefetch was canceled.
|
|
277
|
+
task.isCanceled || // Check if prefetch is already queued.
|
|
278
|
+
task._heapIndex !== -1) {
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
// Add the task back to the queue.
|
|
282
|
+
heapPush(taskHeap, task);
|
|
283
|
+
pingPrefetchScheduler();
|
|
284
|
+
}
|
|
285
|
+
function processQueueInMicrotask() {
|
|
286
|
+
didScheduleMicrotask = false;
|
|
287
|
+
// We aim to minimize how often we read the current time. Since nearly all
|
|
288
|
+
// functions in the prefetch scheduler are synchronous, we can read the time
|
|
289
|
+
// once and pass it as an argument wherever it's needed.
|
|
290
|
+
const now = Date.now();
|
|
291
|
+
// Process the task queue until we run out of network bandwidth.
|
|
292
|
+
let task = heapPeek(taskHeap);
|
|
293
|
+
while(task !== null && hasNetworkBandwidth(task)){
|
|
294
|
+
task.routeCacheVersion = (0, _cache.getCurrentRouteCacheVersion)();
|
|
295
|
+
task.segmentCacheVersion = (0, _cache.getCurrentSegmentCacheVersion)();
|
|
296
|
+
const exitStatus = pingRoute(now, task);
|
|
297
|
+
// These fields are only valid for a single "pass" — one pingRoute
|
|
298
|
+
// invocation for a task, which is what the comments here also call an
|
|
299
|
+
// attempt or an iteration. Reset them after each iteration of the
|
|
300
|
+
// task queue.
|
|
301
|
+
const hasBackgroundWork = task.hasBackgroundWork;
|
|
302
|
+
task.hasBackgroundWork = false;
|
|
303
|
+
task.hasPendingResponses = false;
|
|
304
|
+
task.spawnedRuntimePrefetches = null;
|
|
305
|
+
switch(exitStatus){
|
|
306
|
+
case 0:
|
|
307
|
+
// The task yielded because there are too many requests in progress.
|
|
308
|
+
// Stop processing tasks until we have more bandwidth.
|
|
309
|
+
return;
|
|
310
|
+
case 1:
|
|
311
|
+
// The task is blocked. It needs more data before it can proceed.
|
|
312
|
+
// Keep the task out of the queue until the server responds.
|
|
313
|
+
heapPop(taskHeap);
|
|
314
|
+
// Continue to the next task
|
|
315
|
+
task = heapPeek(taskHeap);
|
|
316
|
+
continue;
|
|
317
|
+
case 2:
|
|
318
|
+
if (task.phase === 2) {
|
|
319
|
+
// Finished prefetching the route tree. The two-phase (Shell then
|
|
320
|
+
// Speculative) flow only applies to routes that have opted into
|
|
321
|
+
// Partial Prefetching — either globally via the `partialPrefetching`
|
|
322
|
+
// config or per segment (`prefetch: 'partial'`), both surfaced as the
|
|
323
|
+
// `SubtreeHasPartialPrefetching` hint on the route tree. Every other
|
|
324
|
+
// route skips the Shell phase and goes straight to Speculative.
|
|
325
|
+
//
|
|
326
|
+
// The route entry is fulfilled at this point (the RouteTree phase
|
|
327
|
+
// just completed), so its prefetch hints are available.
|
|
328
|
+
const route = (0, _cache.readRouteCacheEntry)(now, task.key);
|
|
329
|
+
const routeHasPartialPrefetching = route !== null && route.status === _cache.EntryStatus.Fulfilled && (route.root.tree.prefetchHints & _approutertypes.PrefetchHint.SubtreeHasPartialPrefetching) !== 0;
|
|
330
|
+
task.phase = routeHasPartialPrefetching ? 1 : 0;
|
|
331
|
+
heapResift(taskHeap, task);
|
|
332
|
+
} else if (task.phase === 1) {
|
|
333
|
+
// Shell phase complete — a Done exit means the pass observed every
|
|
334
|
+
// response it cares about (otherwise it would have exited Blocked;
|
|
335
|
+
// see hasPendingResponses). Always advance to Speculative regardless
|
|
336
|
+
// of whether Shell-phase work fired — Speculative is responsible
|
|
337
|
+
// for the per-link concrete work and runs even on routes whose
|
|
338
|
+
// shell phase was a no-op.
|
|
339
|
+
task.phase = 0;
|
|
340
|
+
heapResift(taskHeap, task);
|
|
341
|
+
} else if (hasBackgroundWork) {
|
|
342
|
+
// The task spawned additional background work. Reschedule the task
|
|
343
|
+
// at background priority.
|
|
344
|
+
task.priority = _types.PrefetchPriority.Background;
|
|
345
|
+
heapResift(taskHeap, task);
|
|
346
|
+
} else {
|
|
347
|
+
// The prefetch is complete. Continue to the next task.
|
|
348
|
+
//
|
|
349
|
+
// Completion is terminal in the normal flow: a task only completes
|
|
350
|
+
// after a full pass observed every response it cares about. In rare
|
|
351
|
+
// cases, though, a task can complete while still registered on an
|
|
352
|
+
// entry from an earlier pass whose subtree the final pass no longer
|
|
353
|
+
// reached; when that entry later settles, it re-pings the completed
|
|
354
|
+
// task. The re-run is a harmless idempotent no-op, but any
|
|
355
|
+
// per-completion side effect added here must be idempotent or
|
|
356
|
+
// once-guarded — in particular, the navigation-lock release below
|
|
357
|
+
// must not fire twice (hence the nulling).
|
|
358
|
+
if (process.env.__NEXT_EXPOSE_TESTING_API && task._navigationLockPrefetch != null) {
|
|
359
|
+
// This locked-navigation prefetch is complete: the final pass
|
|
360
|
+
// observed every segment response it cares about, so the data the
|
|
361
|
+
// navigation will read has settled. Resolve the prefetch's
|
|
362
|
+
// promise (awaited by `ensurePrefetchThenNavigate`) so the
|
|
363
|
+
// navigation proceeds against present data rather than a
|
|
364
|
+
// still-in-flight entry.
|
|
365
|
+
const { resolveNavigationLockPrefetch } = require('./navigation-testing-lock');
|
|
366
|
+
resolveNavigationLockPrefetch(task._navigationLockPrefetch);
|
|
367
|
+
// Release at most once per task: a stale registration from an
|
|
368
|
+
// earlier pass can re-ping a completed task (see above), so it can
|
|
369
|
+
// pass through here again.
|
|
370
|
+
task._navigationLockPrefetch = null;
|
|
371
|
+
}
|
|
372
|
+
heapPop(taskHeap);
|
|
373
|
+
}
|
|
374
|
+
task = heapPeek(taskHeap);
|
|
375
|
+
continue;
|
|
376
|
+
default:
|
|
377
|
+
exitStatus;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
// Run LRU cleanup only when the scheduler is fully idle: no queued tasks and
|
|
381
|
+
// no in-progress requests. At that point, all active prefetch tasks have
|
|
382
|
+
// finished reading from the cache (moving recently used entries to the front
|
|
383
|
+
// of the list), so only genuinely stale data gets evicted.
|
|
384
|
+
if (task === null && inProgressRequests === 0) {
|
|
385
|
+
(0, _lru.cleanup)();
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Check this during a prefetch task to determine if background work can be
|
|
390
|
+
* performed. If so, it evaluates to `true`. Otherwise, it returns `false`,
|
|
391
|
+
* while also scheduling a background task to run later. Usage:
|
|
392
|
+
*
|
|
393
|
+
* @example
|
|
394
|
+
* if (background(task)) {
|
|
395
|
+
* // Perform background-pri work
|
|
396
|
+
* }
|
|
397
|
+
*
|
|
398
|
+
* TODO: Model "background" as a phase (like Shell / Speculative) rather
|
|
399
|
+
* than as a priority. Conceptually it's the same pattern: defer work
|
|
400
|
+
* until a later pass over the task. The current priority-based encoding
|
|
401
|
+
* predates the phase model and could be unified.
|
|
402
|
+
*/ function background(task) {
|
|
403
|
+
if (task.priority === _types.PrefetchPriority.Background) {
|
|
404
|
+
return true;
|
|
405
|
+
}
|
|
406
|
+
task.hasBackgroundWork = true;
|
|
407
|
+
return false;
|
|
408
|
+
}
|
|
409
|
+
function pingRoute(now, task) {
|
|
410
|
+
const key = task.key;
|
|
411
|
+
const route = (0, _cache.readOrCreateRouteCacheEntry)(now, task, key);
|
|
412
|
+
const exitStatus = pingRootRouteTree(now, task, route);
|
|
413
|
+
if (exitStatus !== 0 && key.search !== '') {
|
|
414
|
+
// If the URL has a non-empty search string, also prefetch the pathname
|
|
415
|
+
// without the search string. We use the searchless route tree as a base for
|
|
416
|
+
// optimistic routing; see requestOptimisticRouteCacheEntry for details.
|
|
417
|
+
//
|
|
418
|
+
// Note that we don't need to prefetch any of the segment data. Just the
|
|
419
|
+
// route tree.
|
|
420
|
+
//
|
|
421
|
+
// TODO: This is a temporary solution; the plan is to replace this by adding
|
|
422
|
+
// a wildcard lookup method to the TupleMap implementation. This is
|
|
423
|
+
// non-trivial to implement because it needs to account for things like
|
|
424
|
+
// fallback route entries, hence this temporary workaround.
|
|
425
|
+
const url = new URL(key.pathname, location.origin);
|
|
426
|
+
const keyWithoutSearch = (0, _cachekey.createCacheKey)(url.href, key.nextUrl);
|
|
427
|
+
const routeWithoutSearch = (0, _cache.readOrCreateRouteCacheEntry)(now, task, keyWithoutSearch);
|
|
428
|
+
switch(routeWithoutSearch.status){
|
|
429
|
+
case _cache.EntryStatus.Empty:
|
|
430
|
+
{
|
|
431
|
+
if (background(task)) {
|
|
432
|
+
routeWithoutSearch.status = _cache.EntryStatus.Pending;
|
|
433
|
+
spawnPrefetchSubtask((0, _cache.fetchRouteOnCacheMiss)(routeWithoutSearch, keyWithoutSearch));
|
|
434
|
+
}
|
|
435
|
+
break;
|
|
436
|
+
}
|
|
437
|
+
case _cache.EntryStatus.Pending:
|
|
438
|
+
case _cache.EntryStatus.Fulfilled:
|
|
439
|
+
case _cache.EntryStatus.Rejected:
|
|
440
|
+
{
|
|
441
|
+
break;
|
|
442
|
+
}
|
|
443
|
+
default:
|
|
444
|
+
routeWithoutSearch;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
if (exitStatus === 2 && task.hasPendingResponses) {
|
|
448
|
+
// The pass traversed the whole tree, but some segment responses haven't
|
|
449
|
+
// arrived yet, so the current phase isn't actually complete. Block until
|
|
450
|
+
// they do (see blockTaskOnPendingResponse for the full rationale).
|
|
451
|
+
return 1;
|
|
452
|
+
}
|
|
453
|
+
return exitStatus;
|
|
454
|
+
}
|
|
455
|
+
function pingRootRouteTree(now, task, route) {
|
|
456
|
+
switch(route.status){
|
|
457
|
+
case _cache.EntryStatus.Empty:
|
|
458
|
+
{
|
|
459
|
+
// Route is not yet cached, and there's no request already in progress.
|
|
460
|
+
// Spawn a task to request the route, load it into the cache, and ping
|
|
461
|
+
// the task to continue.
|
|
462
|
+
// TODO: There are multiple strategies in the <Link> API for prefetching
|
|
463
|
+
// a route. Currently we've only implemented the main one: per-segment,
|
|
464
|
+
// static-data only.
|
|
465
|
+
//
|
|
466
|
+
// There's also `<Link prefetch={true}>`
|
|
467
|
+
// which prefetch both static *and* dynamic data.
|
|
468
|
+
// Similarly, we need to fallback to the old, per-page
|
|
469
|
+
// behavior if PPR is disabled for a route (via the incremental opt-in).
|
|
470
|
+
//
|
|
471
|
+
// Those cases will be handled here.
|
|
472
|
+
spawnPrefetchSubtask((0, _cache.fetchRouteOnCacheMiss)(route, task.key));
|
|
473
|
+
// If the request takes longer than a minute, a subsequent request should
|
|
474
|
+
// retry instead of waiting for this one. When the response is received,
|
|
475
|
+
// this value will be replaced by a new value based on the stale time sent
|
|
476
|
+
// from the server.
|
|
477
|
+
// TODO: We should probably also manually abort the fetch task, to reclaim
|
|
478
|
+
// server bandwidth.
|
|
479
|
+
route.staleAt = now + 60 * 1000;
|
|
480
|
+
// Upgrade to Pending so we know there's already a request in progress
|
|
481
|
+
route.status = _cache.EntryStatus.Pending;
|
|
482
|
+
// Intentional fallthrough to the Pending branch
|
|
483
|
+
}
|
|
484
|
+
case _cache.EntryStatus.Pending:
|
|
485
|
+
{
|
|
486
|
+
// Still pending. We can't start prefetching the segments until the route
|
|
487
|
+
// tree has loaded. Add the task to the set of blocked tasks so that it
|
|
488
|
+
// is notified when the route tree is ready.
|
|
489
|
+
const blockedTasks = route.blockedTasks;
|
|
490
|
+
if (blockedTasks === null) {
|
|
491
|
+
route.blockedTasks = new Set([
|
|
492
|
+
task
|
|
493
|
+
]);
|
|
494
|
+
} else {
|
|
495
|
+
blockedTasks.add(task);
|
|
496
|
+
}
|
|
497
|
+
return 1;
|
|
498
|
+
}
|
|
499
|
+
case _cache.EntryStatus.Rejected:
|
|
500
|
+
{
|
|
501
|
+
// Route tree failed to load. Treat as a 404.
|
|
502
|
+
return 2;
|
|
503
|
+
}
|
|
504
|
+
case _cache.EntryStatus.Fulfilled:
|
|
505
|
+
{
|
|
506
|
+
if (task.phase === 2) {
|
|
507
|
+
// Do not prefetch segment data during the route tree phase.
|
|
508
|
+
return 2;
|
|
509
|
+
}
|
|
510
|
+
// Recursively fill in the segment tree.
|
|
511
|
+
if (!hasNetworkBandwidth(task)) {
|
|
512
|
+
// Stop prefetching segments until there's more bandwidth.
|
|
513
|
+
return 0;
|
|
514
|
+
}
|
|
515
|
+
const tree = route.root.tree;
|
|
516
|
+
// A task's fetch strategy gets set to `PPR` for any "auto" prefetch.
|
|
517
|
+
// If it turned out that the route isn't PPR-enabled, we need to use `LoadingBoundary` instead.
|
|
518
|
+
// We don't need to do this for runtime prefetches, because those are only available in
|
|
519
|
+
// `cacheComponents`, where every route is PPR.
|
|
520
|
+
let fetchStrategy;
|
|
521
|
+
if (tree.prefetchHints & _approutertypes.PrefetchHint.SubtreeHasPartialPrefetching) {
|
|
522
|
+
// If Partial Prefetching is enabled anywhere on the target route,
|
|
523
|
+
// ignore the fetch strategy and switch to unified strategy used by
|
|
524
|
+
// Cache Components (called `PPR` for now, will likely be renamed).
|
|
525
|
+
//
|
|
526
|
+
// In practice, this just means that a "full" prefetch (<Link
|
|
527
|
+
// prefetch={true}>) has no effect. You're meant to use Runtime
|
|
528
|
+
// Prefetching instead — that's the new pattern that replaces
|
|
529
|
+
// prefetch={true}.
|
|
530
|
+
//
|
|
531
|
+
// The reason we check for the Partial Prefetching opt-in rather than
|
|
532
|
+
// the `cacheComponents` flag is to support incremental adoption.
|
|
533
|
+
// `prefetch={true}` will continue to work until you opt into
|
|
534
|
+
// Partial Prefetching.
|
|
535
|
+
fetchStrategy = _types.FetchStrategy.PPR;
|
|
536
|
+
} else if (task.fetchStrategy === _types.FetchStrategy.PPR) {
|
|
537
|
+
fetchStrategy = route.supportsPerSegmentPrefetching ? _types.FetchStrategy.PPR : _types.FetchStrategy.LoadingBoundary;
|
|
538
|
+
} else {
|
|
539
|
+
fetchStrategy = task.fetchStrategy;
|
|
540
|
+
}
|
|
541
|
+
switch(fetchStrategy){
|
|
542
|
+
case _types.FetchStrategy.PPR:
|
|
543
|
+
{
|
|
544
|
+
// For Cache Components pages, each segment may be prefetched
|
|
545
|
+
// statically or using a runtime request, based on various
|
|
546
|
+
// configurations and heuristics. We'll do this in two passes: first
|
|
547
|
+
// traverse the tree and perform all the static prefetches.
|
|
548
|
+
//
|
|
549
|
+
// Then, if there are any segments that need a runtime request,
|
|
550
|
+
// do another pass to perform a runtime prefetch.
|
|
551
|
+
// Derive the static walk's parameters once per pass; the walk
|
|
552
|
+
// functions below receive them as arguments and are phase-agnostic.
|
|
553
|
+
// During the Shell phase the walk requests each segment's
|
|
554
|
+
// shell-stage variant (keyed at the shell vary paths); otherwise
|
|
555
|
+
// it's the ordinary per-segment static strategy. This is the only
|
|
556
|
+
// place the phase is consulted — everything below keys off
|
|
557
|
+
// the strategy.
|
|
558
|
+
const staticWalkStrategy = task.phase === 1 ? _types.FetchStrategy.StaticShell : _types.FetchStrategy.PPR;
|
|
559
|
+
// In PPF, links may skip speculative prefetching if they only need a shell.
|
|
560
|
+
if (staticWalkStrategy === _types.FetchStrategy.PPR && !needsSpeculativePrefetch(task.fetchStrategy, route.root.tree.prefetchHints)) {
|
|
561
|
+
return 2;
|
|
562
|
+
}
|
|
563
|
+
// The head is a one-node tree beside the route tree (see
|
|
564
|
+
// createMetadataRouteTree in cache.ts); it takes the same walk as
|
|
565
|
+
// a segment the current page doesn't have. If the head was inlined
|
|
566
|
+
// into a page's bundle (HeadOutlined is NOT set on the root), skip
|
|
567
|
+
// the standalone walk — the head data will arrive as part of that
|
|
568
|
+
// page's response, and its runtime-completeness signal is carried
|
|
569
|
+
// by that page's own entries.
|
|
570
|
+
const head = route.root.head;
|
|
571
|
+
if (!process.env.__NEXT_PREFETCH_INLINING || (route.root.tree.prefetchHints & _approutertypes.PrefetchHint.HeadOutlined) !== 0 || // An inlined head that can't attempt a static fetch still deopts
|
|
572
|
+
// to the runtime request (the first check of the decision point
|
|
573
|
+
// in pingSegmentInCacheComponentsTree); only the static fetch
|
|
574
|
+
// itself is skipped for an inlined head.
|
|
575
|
+
walkCanUseRuntimeRequests(staticWalkStrategy, route) && !shouldSegmentAttemptStaticRequest(staticWalkStrategy, head)) {
|
|
576
|
+
const headExitStatus = pingNewPartOfCacheComponentsTree(now, task, route, head, null, staticWalkStrategy);
|
|
577
|
+
if (headExitStatus === 0) {
|
|
578
|
+
return 0;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
const exitStatus = pingSharedPartOfCacheComponentsTree(now, task, route, task.renderTreeAtTimeOfPrefetch.tree, tree, null, staticWalkStrategy);
|
|
582
|
+
if (exitStatus === 0) {
|
|
583
|
+
// Child yielded without finishing.
|
|
584
|
+
return 0;
|
|
585
|
+
}
|
|
586
|
+
// `pingSegmentInCacheComponentsTree` may have determined that
|
|
587
|
+
// we need to do a runtime prefetch for one or more segments.
|
|
588
|
+
// Bail out early if runtime prefetches are not permitted for this route.
|
|
589
|
+
if (walkCanUseRuntimeRequests(staticWalkStrategy, route)) {
|
|
590
|
+
const runtimeStrategy = staticWalkStrategy === _types.FetchStrategy.StaticShell ? _types.FetchStrategy.RuntimeShell : _types.FetchStrategy.PPRRuntime;
|
|
591
|
+
// spawnedRuntimePrefetches was populated during the traversal
|
|
592
|
+
// above: every subtree in the new part of the tree that needs a
|
|
593
|
+
// runtime prefetch, the head included — it registers under its
|
|
594
|
+
// own request key, like any segment, when its own static attempt
|
|
595
|
+
// was insufficient or never happened.
|
|
596
|
+
//
|
|
597
|
+
// If it's null, nothing in the new part of the tree is a candidate
|
|
598
|
+
// for runtime prefetching, and we don't fetch the head, either —
|
|
599
|
+
// the head is runtime prefetched only if something is.
|
|
600
|
+
const spawnedRuntimePrefetches = task.spawnedRuntimePrefetches;
|
|
601
|
+
if (spawnedRuntimePrefetches !== null) {
|
|
602
|
+
const spawnedEntries = new Map();
|
|
603
|
+
// The head has no position in the request tree — a runtime
|
|
604
|
+
// response carries it beside the segments (see
|
|
605
|
+
// writeServerResponseIntoCache in cache.ts) — so the head's
|
|
606
|
+
// own request tree is discarded.
|
|
607
|
+
pingRouteTreeAndIncludeDynamicData(now, task, route, head, false, spawnedEntries, runtimeStrategy);
|
|
608
|
+
const requestTree = pingRuntimePrefetches(now, task, route, tree, spawnedRuntimePrefetches, spawnedEntries, runtimeStrategy);
|
|
609
|
+
if (spawnedEntries.size > 0) {
|
|
610
|
+
spawnPrefetchSubtask((0, _cache.fetchSegmentPrefetchesUsingRuntimeRequest)(task, route, runtimeStrategy, requestTree, spawnedEntries));
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
return 2;
|
|
615
|
+
}
|
|
616
|
+
case _types.FetchStrategy.Full:
|
|
617
|
+
case _types.FetchStrategy.PPRRuntime:
|
|
618
|
+
case _types.FetchStrategy.LoadingBoundary:
|
|
619
|
+
{
|
|
620
|
+
if (task.phase === 1) {
|
|
621
|
+
// Shell phase only does work on routes that use the PPR strategy
|
|
622
|
+
// (Cache Components routes). Other strategies are Shell no-ops
|
|
623
|
+
// and fall through to Speculative.
|
|
624
|
+
return 2;
|
|
625
|
+
}
|
|
626
|
+
// Prefetch multiple segments using a single runtime request.
|
|
627
|
+
// TODO: We can consolidate this branch with previous one by modeling
|
|
628
|
+
// it as if the first segment in the new tree has runtime prefetching
|
|
629
|
+
// enabled. Will do this as a follow-up refactor. Might want to remove
|
|
630
|
+
// the special metatdata case below first. In the meantime, it's not
|
|
631
|
+
// really that much duplication, just would be nice to remove one of
|
|
632
|
+
// these codepaths.
|
|
633
|
+
const spawnedEntries = new Map();
|
|
634
|
+
// The head has no position in the request tree — a runtime response
|
|
635
|
+
// carries it beside the segments (see writeServerResponseIntoCache
|
|
636
|
+
// in cache.ts) — so the head's own request tree is discarded.
|
|
637
|
+
const head = route.root.head;
|
|
638
|
+
pingRouteTreeAndIncludeDynamicData(now, task, route, head, false, spawnedEntries, // When prefetching the head, there's no difference between Full
|
|
639
|
+
// and LoadingBoundary: the head has no loading boundary, so a
|
|
640
|
+
// LoadingBoundary request would skip it.
|
|
641
|
+
fetchStrategy === _types.FetchStrategy.LoadingBoundary ? _types.FetchStrategy.Full : fetchStrategy);
|
|
642
|
+
const dynamicRequestTree = diffRouteTreeAgainstCurrent(now, task, route, task.renderTreeAtTimeOfPrefetch.tree, tree, spawnedEntries, fetchStrategy);
|
|
643
|
+
let needsDynamicRequest = spawnedEntries.size > 0;
|
|
644
|
+
if (needsDynamicRequest) {
|
|
645
|
+
spawnPrefetchSubtask((0, _cache.fetchSegmentPrefetchesUsingRuntimeRequest)(task, route, fetchStrategy, dynamicRequestTree, spawnedEntries));
|
|
646
|
+
}
|
|
647
|
+
return 2;
|
|
648
|
+
}
|
|
649
|
+
default:
|
|
650
|
+
fetchStrategy;
|
|
651
|
+
}
|
|
652
|
+
break;
|
|
653
|
+
}
|
|
654
|
+
default:
|
|
655
|
+
{
|
|
656
|
+
route;
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
return 2;
|
|
660
|
+
}
|
|
661
|
+
/**
|
|
662
|
+
* Whether the task can use runtime requests to prefetch the content.
|
|
663
|
+
*
|
|
664
|
+
* This is true for every walk of a route that opts into Partial Prefetching
|
|
665
|
+
* (any segment with a partial-prefetching config, or the global `partialPrefetching`
|
|
666
|
+
* flag, indicated by `SubtreeHasPartialPrefetching` on the route root),
|
|
667
|
+
* in both the Shell and Speculative phases.
|
|
668
|
+
*
|
|
669
|
+
* Note that this does not mean that the route *will* use runtime requests --
|
|
670
|
+
* it might be optimized statically, either because it does not use runtime data
|
|
671
|
+
* in the shell/prefetch, or if it's forced to use static requests by
|
|
672
|
+
* `export const ensureStatic = "shell" | "prefetch" | "navigation"`.
|
|
673
|
+
*
|
|
674
|
+
* Routes without Partial Prefetching never use runtime requests for prefetches
|
|
675
|
+
* (excluding `Full` prefetches)
|
|
676
|
+
*/ function walkCanUseRuntimeRequests(staticWalkStrategy, route) {
|
|
677
|
+
if (staticWalkStrategy === _types.FetchStrategy.StaticShell) {
|
|
678
|
+
// `FetchStrategy.StaticShell` is only used on PPF routes.
|
|
679
|
+
return true;
|
|
680
|
+
}
|
|
681
|
+
// `FetchStrategy.PPR` can only use runtime requests if PPF is enabled on the route.
|
|
682
|
+
return (route.root.tree.prefetchHints & _approutertypes.PrefetchHint.SubtreeHasPartialPrefetching) !== 0;
|
|
683
|
+
}
|
|
684
|
+
/**
|
|
685
|
+
* Whether a static request for this segment should be attempted.
|
|
686
|
+
* This may vary on the static walk's strategy, because we might e.g.
|
|
687
|
+
* have a shell that's static, but a prefetch that requires runtime requests.
|
|
688
|
+
*
|
|
689
|
+
* NOTE: Should only be used on Partial Prefetching routes, where
|
|
690
|
+
* `walkCanUseRuntimeRequests` is true.
|
|
691
|
+
* */ function shouldSegmentAttemptStaticRequest(staticWalkStrategy, tree) {
|
|
692
|
+
const { prefetchHints } = tree;
|
|
693
|
+
switch(staticWalkStrategy){
|
|
694
|
+
case _types.FetchStrategy.StaticShell:
|
|
695
|
+
return (prefetchHints & _approutertypes.PrefetchHint.ShouldAttemptStaticShell) !== 0;
|
|
696
|
+
case _types.FetchStrategy.PPR:
|
|
697
|
+
return (prefetchHints & _approutertypes.PrefetchHint.ShouldAttemptStaticPrefetch) !== 0;
|
|
698
|
+
default:
|
|
699
|
+
staticWalkStrategy;
|
|
700
|
+
return false;
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* The runtime counterpart of a pass's static walk strategy: the strategy the
|
|
705
|
+
* batched runtime request uses if this walk deopts. Each phase has exactly one
|
|
706
|
+
* — the Shell phase escalates to a shell-scoped runtime request
|
|
707
|
+
* (RuntimeShell), the Speculative phase to a per-link concrete
|
|
708
|
+
* runtime prefetch.
|
|
709
|
+
*/ function getRuntimeStrategyForWalk(staticWalkStrategy) {
|
|
710
|
+
return staticWalkStrategy === _types.FetchStrategy.StaticShell ? _types.FetchStrategy.RuntimeShell : _types.FetchStrategy.PPRRuntime;
|
|
711
|
+
}
|
|
712
|
+
/**
|
|
713
|
+
* Whether this phase's runtime request would return more content for a
|
|
714
|
+
* fulfilled entry than the entry already holds.
|
|
715
|
+
*
|
|
716
|
+
* An entry records the tier its CONTENT achieved, not the one it was requested
|
|
717
|
+
* at, and that tier spans both axes — so a static response that needed no
|
|
718
|
+
* runtime data records the runtime counterpart of its own variant (see
|
|
719
|
+
* `recordedFetchStrategy` in cache.ts). That makes this a pure tier
|
|
720
|
+
* comparison: an entry at or above the phase's runtime tier has nothing to
|
|
721
|
+
* gain from it.
|
|
722
|
+
*/ function wouldRuntimeRequestProvideMore(entry, staticWalkStrategy) {
|
|
723
|
+
return (0, _cache.canNewFetchStrategyProvideMoreContent)(entry.fetchStrategy, getRuntimeStrategyForWalk(staticWalkStrategy));
|
|
724
|
+
}
|
|
725
|
+
/**
|
|
726
|
+
* Whether a fulfilled shell-tier entry should take a static attempt (a
|
|
727
|
+
* spawned revalidation at the walk's static tier) before its position deopts
|
|
728
|
+
* to a runtime request. A shell-tier recorded entry (StaticShell or
|
|
729
|
+
* RuntimeShell) is not evidence that a static attempt would be pointless —
|
|
730
|
+
* unlike a concrete static (PPR) entry, where a static re-fetch would return
|
|
731
|
+
* the same bytes — so when the segment's hint says a static attempt is
|
|
732
|
+
* worthwhile (the build-time prerender accessed no runtime data), the
|
|
733
|
+
* attempt is taken and its response's own verdict decides whether to
|
|
734
|
+
* escalate afterward.
|
|
735
|
+
*
|
|
736
|
+
* Consults the revalidation slot so an attempt that already ran and settled
|
|
737
|
+
* without healing the entry (a rejected attempt: server miss or network
|
|
738
|
+
* error; a successful one upserts over the shell-tier entry, so the caller
|
|
739
|
+
* reads the healed entry instead) doesn't suppress the runtime deopt
|
|
740
|
+
* forever. The slot read creates an Empty placeholder on first evaluation —
|
|
741
|
+
* there is no read-only variant — which is harmless: when the entry is
|
|
742
|
+
* eligible, the spawn that follows claims the same slot.
|
|
743
|
+
*/ function isShellEntryEligibleForStaticAttempt(now, map, entry, tree, fetchStrategy) {
|
|
744
|
+
if (!((entry.fetchStrategy === _types.FetchStrategy.StaticShell || entry.fetchStrategy === _types.FetchStrategy.RuntimeShell) && shouldSegmentAttemptStaticRequest(fetchStrategy, tree) && // if the `fetchStrategy` is `FetchStrategy.PPR`, it might provide more content
|
|
745
|
+
// (e.g. static params that this shell doesn't have)
|
|
746
|
+
(0, _cache.canNewFetchStrategyProvideMoreContent)(entry.fetchStrategy, fetchStrategy))) {
|
|
747
|
+
return false;
|
|
748
|
+
}
|
|
749
|
+
const revalidatingEntry = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, map, fetchStrategy, tree);
|
|
750
|
+
return revalidatingEntry.status === _cache.EntryStatus.Empty || revalidatingEntry.status === _cache.EntryStatus.Pending;
|
|
751
|
+
}
|
|
752
|
+
/**
|
|
753
|
+
* Register a subtree root (the head is one, under its own request key) for
|
|
754
|
+
* the batched runtime request issued by the gate at the end of
|
|
755
|
+
* pingRootRouteTree.
|
|
756
|
+
*/ function addSpawnedRuntimePrefetch(task, requestKey) {
|
|
757
|
+
if (task.spawnedRuntimePrefetches === null) {
|
|
758
|
+
task.spawnedRuntimePrefetches = new Set([
|
|
759
|
+
requestKey
|
|
760
|
+
]);
|
|
761
|
+
} else {
|
|
762
|
+
task.spawnedRuntimePrefetches.add(requestKey);
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
// TODO: Rename dynamic -> runtime throughout this module
|
|
766
|
+
/**
|
|
767
|
+
* The static walk over the part of the target route that also exists on the
|
|
768
|
+
* current page: the current page's node and the target route's node at the
|
|
769
|
+
* same position in the tree. It mirrors the navigation's traversal order (see
|
|
770
|
+
* updateRenderTreeOnNavigation in render-tree.ts): first whether the route
|
|
771
|
+
* position still matches — if not, this node begins the new part of the route
|
|
772
|
+
* (pingNewPartOfCacheComponentsTree) — and then whether any of the node's
|
|
773
|
+
* param values changed — if so, the node and everything below it begin the
|
|
774
|
+
* new part of the route too. The walk does not consult which params a
|
|
775
|
+
* segment read, so it prefetches more than the navigation replaces: the
|
|
776
|
+
* navigation keeps data whose read params did not change and decides each
|
|
777
|
+
* descendant on its own. A node the walk keeps is prefetched at the ordinary
|
|
778
|
+
* static tier.
|
|
779
|
+
* Its children continue here wherever the current page has a child in the
|
|
780
|
+
* same slot; a child in a slot the current page doesn't have enters the new
|
|
781
|
+
* part of the route directly.
|
|
782
|
+
*
|
|
783
|
+
* Bundle chains must not cross the strategy boundary: a kept node walks at
|
|
784
|
+
* PPR while a Shell-phase new part walks at StaticShell, and a chain spanning
|
|
785
|
+
* both would fulfill the kept node's concrete-path entry with shell-variant
|
|
786
|
+
* data. Nor may the chain be finished by fetching the new-part node at PPR
|
|
787
|
+
* — that would prefetch new-part segments at the concrete tier during the
|
|
788
|
+
* Shell phase, which only the Speculative phase is allowed to do. So the
|
|
789
|
+
* chain is dropped wherever the walk hands off to the new part during a
|
|
790
|
+
* StaticShell walk, exactly like the drop sites in
|
|
791
|
+
* pingSegmentInCacheComponentsTree: nothing in a dropped chain was upgraded
|
|
792
|
+
* to Pending, so no entry is stranded, and the inlined kept data is fetched
|
|
793
|
+
* by the Speculative pass whenever its walk of the new part permits the
|
|
794
|
+
* child fetch.
|
|
795
|
+
*/ function pingSharedPartOfCacheComponentsTree(now, task, route, currentTree, newTree, parentBundle, // The per-pass static walk strategy; see pingRootRouteTree where
|
|
796
|
+
// it's derived.
|
|
797
|
+
fetchStrategy) {
|
|
798
|
+
if (!(0, _cache.doesRouteStructureMatch)(currentTree, newTree)) {
|
|
799
|
+
// We're entering the part of the target route that doesn't exist on the
|
|
800
|
+
// current page.
|
|
801
|
+
return pingNewPartOfCacheComponentsTree(now, task, route, newTree, fetchStrategy === _types.FetchStrategy.StaticShell ? null : parentBundle, fetchStrategy);
|
|
802
|
+
}
|
|
803
|
+
if ((0, _varypath.compareParams)(currentTree.varyPath, newTree.varyPath) !== _varypath.ParamsChange.None) {
|
|
804
|
+
// A param changed. The navigation replaces only the data that read it and
|
|
805
|
+
// decides each descendant on its own (see updateRenderTreeOnNavigation in
|
|
806
|
+
// render-tree.ts); this walk doesn't know what each segment read, so it
|
|
807
|
+
// prefetches the whole subtree.
|
|
808
|
+
return pingNewPartOfCacheComponentsTree(now, task, route, newTree, fetchStrategy === _types.FetchStrategy.StaticShell ? null : parentBundle, fetchStrategy);
|
|
809
|
+
}
|
|
810
|
+
// The navigation keeps this segment's current data. A kept segment always
|
|
811
|
+
// performs the ordinary static (PPR) prefetch, regardless of phase.
|
|
812
|
+
// Phase-specific strategies — the runtime shell request and the Shell
|
|
813
|
+
// phase's StaticShell walk — apply only to the new part of the tree, so the
|
|
814
|
+
// per-pass walk strategy is irrelevant here. (The needs-runtime signal is
|
|
815
|
+
// ignored: kept segments are already rendered on the current page, so a
|
|
816
|
+
// runtime prefetch has nothing to add.)
|
|
817
|
+
const bundleInProgress = accumulateSegmentBundle(now, task, route, newTree, parentBundle, _types.FetchStrategy.PPR, true).bundle;
|
|
818
|
+
// Recursively ping the children, continuing in lockstep with the current
|
|
819
|
+
// page wherever it has a child in the same slot.
|
|
820
|
+
const newTreeChildren = newTree.slots;
|
|
821
|
+
if (newTreeChildren !== null) {
|
|
822
|
+
const currentSlots = currentTree.slots;
|
|
823
|
+
for (const [parallelRouteKey, newTreeChild] of newTreeChildren){
|
|
824
|
+
if (!hasNetworkBandwidth(task)) {
|
|
825
|
+
// Stop prefetching segments until there's more bandwidth.
|
|
826
|
+
return 0;
|
|
827
|
+
}
|
|
828
|
+
// Only pass the bundle to the child that accepts it. A parent is
|
|
829
|
+
// only ever bundled into one child.
|
|
830
|
+
const bundleForChild = process.env.__NEXT_PREFETCH_INLINING && bundleInProgress !== null && newTreeChild.prefetchHints & _approutertypes.PrefetchHint.ParentInlinedIntoSelf ? bundleInProgress : null;
|
|
831
|
+
let currentTreeChild = undefined;
|
|
832
|
+
if (currentSlots !== null) {
|
|
833
|
+
currentTreeChild = currentSlots.get(parallelRouteKey);
|
|
834
|
+
}
|
|
835
|
+
let childExitStatus;
|
|
836
|
+
if (currentTreeChild !== undefined) {
|
|
837
|
+
childExitStatus = pingSharedPartOfCacheComponentsTree(now, task, route, currentTreeChild, newTreeChild, bundleForChild, fetchStrategy);
|
|
838
|
+
} else {
|
|
839
|
+
childExitStatus = pingNewPartOfCacheComponentsTree(now, task, route, newTreeChild, fetchStrategy === _types.FetchStrategy.StaticShell ? null : bundleForChild, fetchStrategy);
|
|
840
|
+
}
|
|
841
|
+
if (childExitStatus === 0) {
|
|
842
|
+
// Child yielded without finishing.
|
|
843
|
+
return 0;
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
// The static attempt was sufficient for this segment (each child is its
|
|
848
|
+
// own decision point) — or parts of it are still in flight, in which case
|
|
849
|
+
// the task is blocked and the decision re-runs against the received
|
|
850
|
+
// responses.
|
|
851
|
+
return 2;
|
|
852
|
+
}
|
|
853
|
+
/**
|
|
854
|
+
* The static walk over the part of the target route that doesn't exist on
|
|
855
|
+
* the current page. Nothing here is compared against the current tree: every
|
|
856
|
+
* segment goes through the per-segment decision point.
|
|
857
|
+
*/ function pingNewPartOfCacheComponentsTree(now, task, route, tree, parentBundle, // The per-pass static walk strategy; see pingRootRouteTree where
|
|
858
|
+
// it's derived.
|
|
859
|
+
fetchStrategy) {
|
|
860
|
+
const accumulation = pingSegmentInCacheComponentsTree(now, task, route, tree, parentBundle, fetchStrategy);
|
|
861
|
+
if (accumulation === null) {
|
|
862
|
+
return 2;
|
|
863
|
+
}
|
|
864
|
+
const bundleInProgress = accumulation.bundle;
|
|
865
|
+
// Recursively ping the children.
|
|
866
|
+
const treeChildren = tree.slots;
|
|
867
|
+
if (treeChildren !== null) {
|
|
868
|
+
for (const treeChild of treeChildren.values()){
|
|
869
|
+
if (!hasNetworkBandwidth(task)) {
|
|
870
|
+
// Stop prefetching segments until there's more bandwidth.
|
|
871
|
+
return 0;
|
|
872
|
+
}
|
|
873
|
+
// Only pass the bundle to the child that accepts it. A parent is
|
|
874
|
+
// only ever bundled into one child.
|
|
875
|
+
const bundleForChild = process.env.__NEXT_PREFETCH_INLINING && bundleInProgress !== null && treeChild.prefetchHints & _approutertypes.PrefetchHint.ParentInlinedIntoSelf ? bundleInProgress : null;
|
|
876
|
+
const childExitStatus = pingNewPartOfCacheComponentsTree(now, task, route, treeChild, bundleForChild, fetchStrategy);
|
|
877
|
+
if (childExitStatus === 0) {
|
|
878
|
+
// Child yielded without finishing.
|
|
879
|
+
return 0;
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
}
|
|
883
|
+
// The static attempt was sufficient for this segment (each child is its
|
|
884
|
+
// own decision point) — or parts of it are still in flight, in which case
|
|
885
|
+
// the task is blocked and the decision re-runs against the received
|
|
886
|
+
// responses.
|
|
887
|
+
return 2;
|
|
888
|
+
}
|
|
889
|
+
/**
|
|
890
|
+
* The per-segment decision point of the static walk: the one place that
|
|
891
|
+
* decides how a segment in the new part of the route — one the navigation
|
|
892
|
+
* won't keep — is prefetched (pingNewPartOfCacheComponentsTree).
|
|
893
|
+
*
|
|
894
|
+
* When Cache Components is enabled (or PPR, or a fully static route when PPR
|
|
895
|
+
* is disabled; those cases are treated equivalently to Cache Components), we
|
|
896
|
+
* prefetch each segment individually, statically, at the per-pass strategy
|
|
897
|
+
* derived in pingRootRouteTree.
|
|
898
|
+
*
|
|
899
|
+
* This is where we decide whether we should use runtime requests, if the walk
|
|
900
|
+
* is allowed to do so (see `walkCanUseRuntimeRequests`).
|
|
901
|
+
*
|
|
902
|
+
* If runtime requests are allowed, but the segment's node has one of the
|
|
903
|
+
* `ShouldAttemptStatic{Shell,Prefetch}` hints set (either because the build-time
|
|
904
|
+
* prerender accessed no runtime data, or because of `ensureStatic`), then its
|
|
905
|
+
* subtree should be prefetched statically first.
|
|
906
|
+
* However, the hint may be stale after a revalidation, so we'll also check the
|
|
907
|
+
* `needsRuntimeRequest` promise on the static response, and will follow up with
|
|
908
|
+
* a runtime request if needed.
|
|
909
|
+
* Pending responses block the task, so the attempt is serial, never raced:
|
|
910
|
+
* static attempt → observe → runtime (if needed).
|
|
911
|
+
*
|
|
912
|
+
* The static hints and `needsRuntimeRequest` have no effect if runtime requests
|
|
913
|
+
* are not allowed (i.e. outside of Partial Prefetching).
|
|
914
|
+
*
|
|
915
|
+
* Returns the segment's bundle accumulation when the walk should continue
|
|
916
|
+
* into its children, and null when the walk stops at this segment: the link
|
|
917
|
+
* needs no speculative prefetch, or the segment deopted and the batched
|
|
918
|
+
* runtime request covers the whole subtree.
|
|
919
|
+
*/ function pingSegmentInCacheComponentsTree(now, task, route, tree, parentBundle, // The per-pass static walk strategy; see pingRootRouteTree where
|
|
920
|
+
// it's derived.
|
|
921
|
+
fetchStrategy) {
|
|
922
|
+
// In PPF, links may skip speculative prefetching if they only need a shell.
|
|
923
|
+
if (fetchStrategy === _types.FetchStrategy.PPR && !needsSpeculativePrefetch(task.fetchStrategy, route.root.tree.prefetchHints)) {
|
|
924
|
+
return null;
|
|
925
|
+
}
|
|
926
|
+
// Constant for the whole pass; recomputed here only because the walk is
|
|
927
|
+
// recursive and the check is cheap.
|
|
928
|
+
const canUseRuntimeRequests = walkCanUseRuntimeRequests(fetchStrategy, route);
|
|
929
|
+
// A force-disabled segment deliberately does NOT deopt here: disabling
|
|
930
|
+
// prefetch is passive. It never initiates a request — its accumulation
|
|
931
|
+
// below contributes nothing — and must never be the reason a runtime
|
|
932
|
+
// prefetch spawns, though it may ride along in a runtime response issued
|
|
933
|
+
// on another segment's behalf.
|
|
934
|
+
if (canUseRuntimeRequests && !shouldSegmentAttemptStaticRequest(fetchStrategy, tree)) {
|
|
935
|
+
// Deopt directly to a runtime prefetch, without a static attempt.
|
|
936
|
+
addSpawnedRuntimePrefetch(task, tree.requestKey);
|
|
937
|
+
// If there's a pending static bundle from a parent, we need to finish
|
|
938
|
+
// prefetching it before bailing out to runtime prefetching.
|
|
939
|
+
if (parentBundle !== null) {
|
|
940
|
+
finishStaticBundleOnRuntimeBailout(now, task, route, tree, parentBundle, fetchStrategy);
|
|
941
|
+
}
|
|
942
|
+
return null;
|
|
943
|
+
}
|
|
944
|
+
// Prefetch this segment and its subtree statically, using the normal
|
|
945
|
+
// static bundling walk.
|
|
946
|
+
const accumulation = accumulateSegmentBundle(now, task, route, tree, parentBundle, fetchStrategy, true);
|
|
947
|
+
if (canUseRuntimeRequests && accumulation.needsRuntimeRequest) {
|
|
948
|
+
// The static attempt for this segment was insufficient. Stop the walk
|
|
949
|
+
// and deopt — the runtime prefetch covers the whole subtree. (Unlike the
|
|
950
|
+
// direct deopt above, any open bundle is dropped rather than finished: a
|
|
951
|
+
// fulfilled InlinedIntoChild node can report a true signal while its
|
|
952
|
+
// chain is still open. That's safe — nothing in an un-pinged chain was
|
|
953
|
+
// upgraded to Pending, so no entry is stranded blocking the task, and
|
|
954
|
+
// Empty entries in the dropped chain are re-fetched by a later pass.)
|
|
955
|
+
addSpawnedRuntimePrefetch(task, tree.requestKey);
|
|
956
|
+
return null;
|
|
957
|
+
}
|
|
958
|
+
return accumulation;
|
|
959
|
+
}
|
|
960
|
+
function diffRouteTreeAgainstCurrent(now, task, route, oldTree, newTree, spawnedEntries, fetchStrategy) {
|
|
961
|
+
// This is a single recursive traversal that does multiple things:
|
|
962
|
+
// - Finds the segments that differ from the current route, comparing each
|
|
963
|
+
// segment the same way the navigation will (see
|
|
964
|
+
// updateRenderTreeOnNavigation in render-tree.ts): its route position,
|
|
965
|
+
// then whether any of its param values changed.
|
|
966
|
+
// - Constructs a request tree (FlightRouterState) that describes which
|
|
967
|
+
// segments need to be prefetched and which ones are already cached.
|
|
968
|
+
// - Creates a set of pending cache entries for the segments that need to
|
|
969
|
+
// be prefetched, so that a subsequent prefetch task does not request the
|
|
970
|
+
// same segments again.
|
|
971
|
+
const oldSlots = oldTree.slots;
|
|
972
|
+
const newTreeChildren = newTree.slots;
|
|
973
|
+
let requestTreeChildren = {};
|
|
974
|
+
if (newTreeChildren !== null) {
|
|
975
|
+
for (const [parallelRouteKey, newTreeChild] of newTreeChildren){
|
|
976
|
+
const oldTreeChild = oldSlots?.get(parallelRouteKey);
|
|
977
|
+
requestTreeChildren[parallelRouteKey] = diffSegmentAgainstCurrent(now, task, route, oldTreeChild, newTreeChild, spawnedEntries, fetchStrategy);
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
const requestTree = [
|
|
981
|
+
newTree.segment,
|
|
982
|
+
requestTreeChildren,
|
|
983
|
+
null,
|
|
984
|
+
null
|
|
985
|
+
];
|
|
986
|
+
if (newTree.prefetchHints !== 0) {
|
|
987
|
+
requestTree[4] = newTree.prefetchHints;
|
|
988
|
+
}
|
|
989
|
+
return requestTree;
|
|
990
|
+
}
|
|
991
|
+
/**
|
|
992
|
+
* The per-segment decision of a runtime request's tree walk
|
|
993
|
+
* (diffRouteTreeAgainstCurrent): the segment at this position of the target
|
|
994
|
+
* route, and the current page's segment at the same position, if it has one.
|
|
995
|
+
* A segment the navigation keeps — same route position, and none of its param
|
|
996
|
+
* values changed — is omitted from the request and the walk continues into
|
|
997
|
+
* its children. Otherwise this segment begins a part of the tree that needs
|
|
998
|
+
* to be prefetched (unless everything is already cached), requested according
|
|
999
|
+
* to the strategy.
|
|
1000
|
+
*/ function diffSegmentAgainstCurrent(now, task, route, oldTree, newTree, spawnedEntries, fetchStrategy) {
|
|
1001
|
+
if (oldTree !== undefined && (0, _cache.doesRouteStructureMatch)(oldTree, newTree)) {
|
|
1002
|
+
// This segment is already part of the current route.
|
|
1003
|
+
if ((0, _varypath.compareParams)(oldTree.varyPath, newTree.varyPath) === _varypath.ParamsChange.None) {
|
|
1004
|
+
// The navigation keeps its data. Keep traversing.
|
|
1005
|
+
return diffRouteTreeAgainstCurrent(now, task, route, oldTree, newTree, spawnedEntries, fetchStrategy);
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
// This segment is not part of the current route, or the navigation
|
|
1009
|
+
// replaces its data. We're entering a part of the tree that we need to
|
|
1010
|
+
// prefetch (unless everything is already cached).
|
|
1011
|
+
switch(fetchStrategy){
|
|
1012
|
+
case _types.FetchStrategy.LoadingBoundary:
|
|
1013
|
+
{
|
|
1014
|
+
// When PPR is disabled, we can't prefetch per segment. We must
|
|
1015
|
+
// fallback to the old prefetch behavior and send a runtime request.
|
|
1016
|
+
// Only routes that include a loading boundary can be prefetched in
|
|
1017
|
+
// this way.
|
|
1018
|
+
//
|
|
1019
|
+
// This is simlar to a "full" prefetch, but we're much more
|
|
1020
|
+
// conservative about which segments to include in the request.
|
|
1021
|
+
//
|
|
1022
|
+
// The server will only render up to the first loading boundary
|
|
1023
|
+
// inside new part of the tree. If there's no loading boundary
|
|
1024
|
+
// anywhere in the tree, the server will never return any data, so
|
|
1025
|
+
// we can skip the request.
|
|
1026
|
+
const subtreeHasLoadingBoundary = (newTree.prefetchHints & (_approutertypes.PrefetchHint.SegmentHasLoadingBoundary | _approutertypes.PrefetchHint.SubtreeHasLoadingBoundary)) !== 0;
|
|
1027
|
+
if (subtreeHasLoadingBoundary) {
|
|
1028
|
+
return pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, newTree, null, spawnedEntries);
|
|
1029
|
+
}
|
|
1030
|
+
// There's no loading boundary within this tree. Bail out.
|
|
1031
|
+
return (0, _cache.convertRouteTreeToFlightRouterState)(newTree);
|
|
1032
|
+
}
|
|
1033
|
+
case _types.FetchStrategy.PPRRuntime:
|
|
1034
|
+
{
|
|
1035
|
+
// This is a runtime prefetch. Fetch all cacheable data in the tree,
|
|
1036
|
+
// not just the static PPR shell.
|
|
1037
|
+
return pingRouteTreeAndIncludeDynamicData(now, task, route, newTree, false, spawnedEntries, fetchStrategy);
|
|
1038
|
+
}
|
|
1039
|
+
case _types.FetchStrategy.Full:
|
|
1040
|
+
{
|
|
1041
|
+
// This is a "full" prefetch. Fetch all the data in the tree, both
|
|
1042
|
+
// static and dynamic. We issue roughly the same request that we
|
|
1043
|
+
// would during a real navigation. The goal is that once the
|
|
1044
|
+
// navigation occurs, the router should not have to fetch any
|
|
1045
|
+
// additional data.
|
|
1046
|
+
//
|
|
1047
|
+
// Although the response will include dynamic data, opting into a
|
|
1048
|
+
// Full prefetch — via <Link prefetch={true}> — implicitly
|
|
1049
|
+
// instructs the cache to treat the response as "static", or non-
|
|
1050
|
+
// dynamic, since the whole point is to cache it for
|
|
1051
|
+
// future navigations.
|
|
1052
|
+
//
|
|
1053
|
+
// Construct a tree (currently a FlightRouterState) that represents
|
|
1054
|
+
// which segments need to be prefetched and which ones are already
|
|
1055
|
+
// cached. If the tree is empty, then we can exit. Otherwise, we'll
|
|
1056
|
+
// send the request tree to the server and use the response to
|
|
1057
|
+
// populate the segment cache.
|
|
1058
|
+
return pingRouteTreeAndIncludeDynamicData(now, task, route, newTree, false, spawnedEntries, fetchStrategy);
|
|
1059
|
+
}
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1062
|
+
function pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, tree, refetchMarkerContext, spawnedEntries) {
|
|
1063
|
+
// This function is similar to pingRouteTreeAndIncludeDynamicData, except the
|
|
1064
|
+
// server is only going to return a minimal loading state — it will stop
|
|
1065
|
+
// rendering at the first loading boundary. Whereas a Full prefetch is
|
|
1066
|
+
// intentionally aggressive and tries to pretfetch all the data that will be
|
|
1067
|
+
// needed for a navigation, a LoadingBoundary prefetch is much more
|
|
1068
|
+
// conservative. For example, it will omit from the request tree any segment
|
|
1069
|
+
// that is already cached, regardles of whether it's partial or full. By
|
|
1070
|
+
// contrast, a Full prefetch will refetch partial segments.
|
|
1071
|
+
// "inside-shared-layout" tells the server where to start looking for a
|
|
1072
|
+
// loading boundary.
|
|
1073
|
+
let refetchMarker = refetchMarkerContext === null ? 'inside-shared-layout' : null;
|
|
1074
|
+
const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.segmentCacheMap, task.fetchStrategy, tree);
|
|
1075
|
+
switch(segment.status){
|
|
1076
|
+
case _cache.EntryStatus.Empty:
|
|
1077
|
+
{
|
|
1078
|
+
// This segment is not cached. Add a refetch marker so the server knows
|
|
1079
|
+
// to start rendering here.
|
|
1080
|
+
// TODO: Instead of a "refetch" marker, we could just omit this subtree's
|
|
1081
|
+
// FlightRouterState from the request tree. I think this would probably
|
|
1082
|
+
// already work even without any updates to the server. For consistency,
|
|
1083
|
+
// though, I'll send the full tree and we'll look into this later as part
|
|
1084
|
+
// of a larger redesign of the request protocol.
|
|
1085
|
+
// Add the pending cache entry to the result map.
|
|
1086
|
+
const pendingSegment = (0, _cache.upgradeToPendingSegment)(segment, // Set the fetch strategy to LoadingBoundary to indicate that the server
|
|
1087
|
+
// might not include it in the pending response. If another route is able
|
|
1088
|
+
// to issue a per-segment request, we'll do that in the background.
|
|
1089
|
+
_types.FetchStrategy.LoadingBoundary);
|
|
1090
|
+
spawnedEntries.set(tree.requestKey, pendingSegment);
|
|
1091
|
+
// The pass blocks on every request it spawns, not just requests it
|
|
1092
|
+
// finds already in flight.
|
|
1093
|
+
blockTaskOnPendingResponse(task, pendingSegment);
|
|
1094
|
+
if (refetchMarkerContext !== 'refetch') {
|
|
1095
|
+
refetchMarker = refetchMarkerContext = 'refetch';
|
|
1096
|
+
} else {
|
|
1097
|
+
// There's already a parent with a refetch marker, so we don't need
|
|
1098
|
+
// to add another one.
|
|
1099
|
+
}
|
|
1100
|
+
break;
|
|
1101
|
+
}
|
|
1102
|
+
case _cache.EntryStatus.Fulfilled:
|
|
1103
|
+
{
|
|
1104
|
+
// The segment is already cached.
|
|
1105
|
+
const segmentHasLoadingBoundary = (tree.prefetchHints & _approutertypes.PrefetchHint.SegmentHasLoadingBoundary) !== 0;
|
|
1106
|
+
if (segmentHasLoadingBoundary) {
|
|
1107
|
+
// This segment has a loading boundary, which means the server won't
|
|
1108
|
+
// render its children. So there's nothing left to prefetch along this
|
|
1109
|
+
// path. We can bail out.
|
|
1110
|
+
return (0, _cache.convertRouteTreeToFlightRouterState)(tree);
|
|
1111
|
+
}
|
|
1112
|
+
break;
|
|
1113
|
+
}
|
|
1114
|
+
case _cache.EntryStatus.Pending:
|
|
1115
|
+
{
|
|
1116
|
+
// There's another prefetch currently in progress. Don't add the refetch
|
|
1117
|
+
// marker yet, so the server knows it can skip rendering this segment.
|
|
1118
|
+
// The pass still depends on the in-flight response, so wait for it
|
|
1119
|
+
// before the phase can complete.
|
|
1120
|
+
blockTaskOnPendingResponse(task, segment);
|
|
1121
|
+
break;
|
|
1122
|
+
}
|
|
1123
|
+
case _cache.EntryStatus.Rejected:
|
|
1124
|
+
{
|
|
1125
|
+
break;
|
|
1126
|
+
}
|
|
1127
|
+
default:
|
|
1128
|
+
segment;
|
|
1129
|
+
}
|
|
1130
|
+
const requestTreeChildren = {};
|
|
1131
|
+
if (tree.slots !== null) {
|
|
1132
|
+
for (const [parallelRouteKey, childTree] of tree.slots){
|
|
1133
|
+
requestTreeChildren[parallelRouteKey] = pingPPRDisabledRouteTreeUpToLoadingBoundary(now, task, route, childTree, refetchMarkerContext, spawnedEntries);
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
const requestTree = [
|
|
1137
|
+
tree.segment,
|
|
1138
|
+
requestTreeChildren,
|
|
1139
|
+
null,
|
|
1140
|
+
refetchMarker
|
|
1141
|
+
];
|
|
1142
|
+
if (tree.prefetchHints !== 0) {
|
|
1143
|
+
requestTree[4] = tree.prefetchHints;
|
|
1144
|
+
}
|
|
1145
|
+
return requestTree;
|
|
1146
|
+
}
|
|
1147
|
+
/**
|
|
1148
|
+
* Called during a pass when a segment's response hasn't been received yet —
|
|
1149
|
+
* whether the request was just spawned by this pass or was already in flight.
|
|
1150
|
+
* Marks the task as blocked: a phase only completes once a full pass observes
|
|
1151
|
+
* every segment response it cares about, because later decisions (like
|
|
1152
|
+
* whether a segment needs a follow-up runtime request) are made against the
|
|
1153
|
+
* contents of those responses, and a phase may need to restart its work based
|
|
1154
|
+
* on what they contain. The task is re-pinged (via pingBlockedTasks in
|
|
1155
|
+
* cache.ts) when the entry resolves, re-running the pass against the
|
|
1156
|
+
* received data. Only a pass that observes every response may advance the
|
|
1157
|
+
* phase or complete the task.
|
|
1158
|
+
*
|
|
1159
|
+
* Never call this for an entry that's already Rejected — nothing ever pings
|
|
1160
|
+
* a Rejected entry, so registering on one would strand the task. A rejected
|
|
1161
|
+
* segment is simply skipped: the pass keeps prefetching the rest of the tree
|
|
1162
|
+
* without it.
|
|
1163
|
+
*/ function blockTaskOnPendingResponse(task, segment) {
|
|
1164
|
+
// This state is reset after each iteration of the task queue. We use it to
|
|
1165
|
+
// inform the scheduler that the task is blocked.
|
|
1166
|
+
task.hasPendingResponses = true;
|
|
1167
|
+
// Add the task to this segment's blocked tasks, so it can be rescheduled
|
|
1168
|
+
// once the segment finishes loading.
|
|
1169
|
+
if (segment.blockedTasks === null) {
|
|
1170
|
+
segment.blockedTasks = new Set([
|
|
1171
|
+
task
|
|
1172
|
+
]);
|
|
1173
|
+
} else {
|
|
1174
|
+
segment.blockedTasks.add(task);
|
|
1175
|
+
}
|
|
1176
|
+
}
|
|
1177
|
+
function pingRouteTreeAndIncludeDynamicData(now, task, route, tree, isInsideRefetchingParent, spawnedEntries, fetchStrategy) {
|
|
1178
|
+
// The tree we're constructing is the same shape as the tree we're navigating
|
|
1179
|
+
// to. But even though this is a "new" tree, some of the individual segments
|
|
1180
|
+
// may be cached as a result of other route prefetches.
|
|
1181
|
+
//
|
|
1182
|
+
// So we need to find the first uncached segment along each path add an
|
|
1183
|
+
// explicit "refetch" marker so the server knows where to start rendering.
|
|
1184
|
+
// Once the server starts rendering along a path, it keeps rendering the
|
|
1185
|
+
// entire subtree.
|
|
1186
|
+
const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.segmentCacheMap, // Note that `fetchStrategy` might be different from `task.fetchStrategy`,
|
|
1187
|
+
// and we have to use the former here.
|
|
1188
|
+
// We can have a task with `FetchStrategy.PPR` where some of its segments are configured to
|
|
1189
|
+
// always use runtime prefetching (via `export const prefetch`), and those should check for
|
|
1190
|
+
// entries that include search params.
|
|
1191
|
+
fetchStrategy, tree);
|
|
1192
|
+
let spawnedSegment = null;
|
|
1193
|
+
switch(segment.status){
|
|
1194
|
+
case _cache.EntryStatus.Empty:
|
|
1195
|
+
{
|
|
1196
|
+
// This segment is not cached.
|
|
1197
|
+
if (fetchStrategy === _types.FetchStrategy.Full) {
|
|
1198
|
+
// Check if there's a matching entry in the bfcache. If so, fulfill the
|
|
1199
|
+
// segment using the bfcache entry instead of issuing a new request.
|
|
1200
|
+
const fulfilled = (0, _cache.attemptToFulfillDynamicSegmentFromBFCache)(now, segment, tree);
|
|
1201
|
+
if (fulfilled !== null) {
|
|
1202
|
+
break;
|
|
1203
|
+
}
|
|
1204
|
+
}
|
|
1205
|
+
// Include it in the request.
|
|
1206
|
+
spawnedSegment = (0, _cache.upgradeToPendingSegment)(segment, fetchStrategy);
|
|
1207
|
+
break;
|
|
1208
|
+
}
|
|
1209
|
+
case _cache.EntryStatus.Fulfilled:
|
|
1210
|
+
{
|
|
1211
|
+
// The segment is already cached.
|
|
1212
|
+
if (segment.isPartial && (0, _cache.canNewFetchStrategyProvideMoreContent)(segment.fetchStrategy, fetchStrategy)) {
|
|
1213
|
+
// The cached segment contains dynamic holes, and was prefetched using a
|
|
1214
|
+
// less specific strategy than the current one. This means we're in one
|
|
1215
|
+
// of these cases:
|
|
1216
|
+
// - we have a static prefetch, and we're doing a runtime prefetch
|
|
1217
|
+
// - we have a static or runtime prefetch, and we're doing a Full
|
|
1218
|
+
// prefetch (or a navigation).
|
|
1219
|
+
// In either case, we need to include it in the request to get a more
|
|
1220
|
+
// specific (or full) version. However, if there's a non-stale bfcache
|
|
1221
|
+
// entry from a previous navigation, prefer that over making a new
|
|
1222
|
+
// request.
|
|
1223
|
+
if (fetchStrategy === _types.FetchStrategy.Full) {
|
|
1224
|
+
const fulfilled = (0, _cache.attemptToUpgradeSegmentFromBFCache)(now, task.segmentCacheMap, tree);
|
|
1225
|
+
if (fulfilled !== null) {
|
|
1226
|
+
break;
|
|
1227
|
+
}
|
|
1228
|
+
}
|
|
1229
|
+
spawnedSegment = pingFullSegmentRevalidation(now, task, tree, fetchStrategy);
|
|
1230
|
+
}
|
|
1231
|
+
break;
|
|
1232
|
+
}
|
|
1233
|
+
case _cache.EntryStatus.Pending:
|
|
1234
|
+
case _cache.EntryStatus.Rejected:
|
|
1235
|
+
{
|
|
1236
|
+
// There's either another prefetch currently in progress, or the previous
|
|
1237
|
+
// attempt failed. If the new strategy can provide more content, fetch it again.
|
|
1238
|
+
if ((0, _cache.canNewFetchStrategyProvideMoreContent)(segment.fetchStrategy, fetchStrategy)) {
|
|
1239
|
+
spawnedSegment = pingFullSegmentRevalidation(now, task, tree, fetchStrategy);
|
|
1240
|
+
}
|
|
1241
|
+
if (segment.status === _cache.EntryStatus.Pending) {
|
|
1242
|
+
// A response for this segment is still in flight. The pass must
|
|
1243
|
+
// observe it before the phase can complete.
|
|
1244
|
+
blockTaskOnPendingResponse(task, segment);
|
|
1245
|
+
} else {
|
|
1246
|
+
// The segment failed to load, or the server intentionally omitted it
|
|
1247
|
+
// from a response (both are encoded as Rejected). Skip it and keep
|
|
1248
|
+
// prefetching the rest of the tree; the entry's staleAt governs when
|
|
1249
|
+
// it may be retried. Don't register the task on the rejected entry —
|
|
1250
|
+
// nothing ever pings a Rejected entry.
|
|
1251
|
+
//
|
|
1252
|
+
// TODO: The cache encodes real failures and intentional server
|
|
1253
|
+
// omissions identically (both Rejected); with per-segment skipping
|
|
1254
|
+
// this has no task-lifecycle consequence, but distinguishing them
|
|
1255
|
+
// could still be useful someday.
|
|
1256
|
+
}
|
|
1257
|
+
break;
|
|
1258
|
+
}
|
|
1259
|
+
default:
|
|
1260
|
+
segment;
|
|
1261
|
+
}
|
|
1262
|
+
if (spawnedSegment !== null) {
|
|
1263
|
+
// A pass must observe the response for every request it spawns before
|
|
1264
|
+
// its phase can complete — not just requests it finds already in flight.
|
|
1265
|
+
// Block on the entry we just spawned; the task is re-pinged when it's
|
|
1266
|
+
// fulfilled or rejected.
|
|
1267
|
+
blockTaskOnPendingResponse(task, spawnedSegment);
|
|
1268
|
+
}
|
|
1269
|
+
const requestTreeChildren = {};
|
|
1270
|
+
if (tree.slots !== null) {
|
|
1271
|
+
for (const [parallelRouteKey, childTree] of tree.slots){
|
|
1272
|
+
requestTreeChildren[parallelRouteKey] = pingRouteTreeAndIncludeDynamicData(now, task, route, childTree, isInsideRefetchingParent || spawnedSegment !== null, spawnedEntries, fetchStrategy);
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
if (spawnedSegment !== null) {
|
|
1276
|
+
// Add the pending entry to the result map.
|
|
1277
|
+
spawnedEntries.set(tree.requestKey, spawnedSegment);
|
|
1278
|
+
}
|
|
1279
|
+
// Don't bother to add a refetch marker if one is already present in a parent.
|
|
1280
|
+
const refetchMarker = !isInsideRefetchingParent && spawnedSegment !== null ? 'refetch' : null;
|
|
1281
|
+
const requestTree = [
|
|
1282
|
+
tree.segment,
|
|
1283
|
+
requestTreeChildren,
|
|
1284
|
+
null,
|
|
1285
|
+
refetchMarker
|
|
1286
|
+
];
|
|
1287
|
+
if (tree.prefetchHints !== 0) {
|
|
1288
|
+
requestTree[4] = tree.prefetchHints;
|
|
1289
|
+
}
|
|
1290
|
+
return requestTree;
|
|
1291
|
+
}
|
|
1292
|
+
function pingRuntimePrefetches(now, task, route, tree, spawnedRuntimePrefetches, spawnedEntries, fetchStrategy) {
|
|
1293
|
+
// Construct a request tree (FlightRouterState) for a runtime prefetch. If
|
|
1294
|
+
// a segment is part of the runtime prefetch, the tree is constructed by
|
|
1295
|
+
// diffing against what's already in the prefetch cache. Otherwise, we send
|
|
1296
|
+
// a regular FlightRouterState with no special markers.
|
|
1297
|
+
//
|
|
1298
|
+
// See pingRouteTreeAndIncludeDynamicData for details.
|
|
1299
|
+
if (spawnedRuntimePrefetches.has(tree.requestKey)) {
|
|
1300
|
+
// This segment needs a runtime prefetch.
|
|
1301
|
+
return pingRouteTreeAndIncludeDynamicData(now, task, route, tree, false, spawnedEntries, fetchStrategy);
|
|
1302
|
+
}
|
|
1303
|
+
let requestTreeChildren = {};
|
|
1304
|
+
const slots = tree.slots;
|
|
1305
|
+
if (slots !== null) {
|
|
1306
|
+
for (const [parallelRouteKey, childTree] of slots){
|
|
1307
|
+
requestTreeChildren[parallelRouteKey] = pingRuntimePrefetches(now, task, route, childTree, spawnedRuntimePrefetches, spawnedEntries, fetchStrategy);
|
|
1308
|
+
}
|
|
1309
|
+
}
|
|
1310
|
+
// This segment is not part of the runtime prefetch. Clone the base tree.
|
|
1311
|
+
const requestTree = [
|
|
1312
|
+
tree.segment,
|
|
1313
|
+
requestTreeChildren,
|
|
1314
|
+
null,
|
|
1315
|
+
null
|
|
1316
|
+
];
|
|
1317
|
+
if (tree.prefetchHints !== 0) {
|
|
1318
|
+
requestTree[4] = tree.prefetchHints;
|
|
1319
|
+
}
|
|
1320
|
+
return requestTree;
|
|
1321
|
+
}
|
|
1322
|
+
/**
|
|
1323
|
+
* Walk a SegmentBundle, apply status-based logic to each entry, and if any
|
|
1324
|
+
* entries need data, spawn a single fetch request for the whole bundle.
|
|
1325
|
+
*
|
|
1326
|
+
* Returns true if a fulfilled entry in the bundle reported that a runtime
|
|
1327
|
+
* request would return more content than the entry contains
|
|
1328
|
+
* (needsRuntimeRequest, derived at write time from the response that
|
|
1329
|
+
* produced the entry). The callers surface this signal to the per-segment
|
|
1330
|
+
* decision point in pingSegmentInCacheComponentsTree, which uses it during
|
|
1331
|
+
* a static attempt to decide whether to fall back to a runtime prefetch. One
|
|
1332
|
+
* exception withholds the signal: a shell-tier entry whose segment carries
|
|
1333
|
+
* the static-attempt hint spawns a concrete static attempt first — see the
|
|
1334
|
+
* Fulfilled case.
|
|
1335
|
+
*/ function pingSegmentBundle(now, task, route, routeKey, tree, segments, // Per-pass static walk strategy; see pingRootRouteTree where it's derived.
|
|
1336
|
+
fetchStrategy, // False when finishing an open bundle chain on a runtime-prefetch bailout
|
|
1337
|
+
// (finishStaticBundleOnRuntimeBailout). The finish exists only to fetch
|
|
1338
|
+
// data the batched runtime request won't cover — Empty entries in the
|
|
1339
|
+
// chain — so it must not spawn revalidations over entries that are
|
|
1340
|
+
// already settled or in flight: the chain's terminal segments are inside
|
|
1341
|
+
// the deopted subtree, and re-fetching their static bundle would at best
|
|
1342
|
+
// duplicate the runtime request and at worst replace a runtime-complete
|
|
1343
|
+
// entry (e.g. a RuntimeShell-tier entry) with a less complete static
|
|
1344
|
+
// fallback response.
|
|
1345
|
+
spawnRevalidations) {
|
|
1346
|
+
let needsRuntimeRequest = false;
|
|
1347
|
+
// The pending entries this task owns — Empty entries upgraded here, plus
|
|
1348
|
+
// any revalidations spawned here — keyed by segment request key. If any
|
|
1349
|
+
// accumulate, a single fetch is spawned for the whole bundle, and the
|
|
1350
|
+
// response fulfills them.
|
|
1351
|
+
let spawnedEntries = null;
|
|
1352
|
+
let node = segments;
|
|
1353
|
+
while(node !== null){
|
|
1354
|
+
const nodeEntry = node.entry;
|
|
1355
|
+
const nodeTree = node.tree;
|
|
1356
|
+
if (nodeEntry === null || nodeTree === null) {
|
|
1357
|
+
node = node.parent;
|
|
1358
|
+
continue;
|
|
1359
|
+
}
|
|
1360
|
+
switch(nodeEntry.status){
|
|
1361
|
+
case _cache.EntryStatus.Empty:
|
|
1362
|
+
{
|
|
1363
|
+
const pendingEntry = (0, _cache.upgradeToPendingSegment)(nodeEntry, fetchStrategy);
|
|
1364
|
+
if (spawnedEntries === null) {
|
|
1365
|
+
spawnedEntries = new Map();
|
|
1366
|
+
}
|
|
1367
|
+
spawnedEntries.set(nodeTree.requestKey, pendingEntry);
|
|
1368
|
+
// The pass blocks on every request it spawns, not just requests it
|
|
1369
|
+
// finds already in flight.
|
|
1370
|
+
blockTaskOnPendingResponse(task, pendingEntry);
|
|
1371
|
+
break;
|
|
1372
|
+
}
|
|
1373
|
+
case _cache.EntryStatus.Pending:
|
|
1374
|
+
if (spawnRevalidations && // During a static shell attempt, never spawn revalidations — just
|
|
1375
|
+
// wait for the in-flight response (blocked below); its sufficiency
|
|
1376
|
+
// is checked on the re-run pass.
|
|
1377
|
+
fetchStrategy === _types.FetchStrategy.PPR && (0, _cache.canNewFetchStrategyProvideMoreContent)(nodeEntry.fetchStrategy, fetchStrategy)) {
|
|
1378
|
+
const revalidatingEntry = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, task.segmentCacheMap, fetchStrategy, nodeTree);
|
|
1379
|
+
if (revalidatingEntry.status === _cache.EntryStatus.Empty) {
|
|
1380
|
+
const pendingEntry = (0, _cache.upgradeToPendingSegment)(revalidatingEntry, fetchStrategy);
|
|
1381
|
+
if (spawnedEntries === null) {
|
|
1382
|
+
spawnedEntries = new Map();
|
|
1383
|
+
}
|
|
1384
|
+
spawnedEntries.set(nodeTree.requestKey, pendingEntry);
|
|
1385
|
+
// Block on the revalidation request we just spawned, in
|
|
1386
|
+
// addition to the original in-flight entry (blocked below).
|
|
1387
|
+
blockTaskOnPendingResponse(task, pendingEntry);
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
blockTaskOnPendingResponse(task, nodeEntry);
|
|
1391
|
+
break;
|
|
1392
|
+
case _cache.EntryStatus.Rejected:
|
|
1393
|
+
if (spawnRevalidations && // During a static shell attempt, a rejected entry is skipped
|
|
1394
|
+
// outright: no retry revalidation, and — deliberately — no runtime
|
|
1395
|
+
// fallback either (per-segment rejection semantics; the entry's
|
|
1396
|
+
// staleAt governs when it may be retried). Note that the cache
|
|
1397
|
+
// path encodes "no shell exists" (a static response whose shell
|
|
1398
|
+
// byte offset is 0, i.e. the page wasn't produced by staged
|
|
1399
|
+
// rendering) as a rejection too, so such segments get no shell
|
|
1400
|
+
// prefetch at all — an edge that shouldn't occur for hint-set
|
|
1401
|
+
// Cache Components routes.
|
|
1402
|
+
fetchStrategy === _types.FetchStrategy.PPR && (0, _cache.canNewFetchStrategyProvideMoreContent)(nodeEntry.fetchStrategy, fetchStrategy)) {
|
|
1403
|
+
const revalidatingEntry = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, task.segmentCacheMap, fetchStrategy, nodeTree);
|
|
1404
|
+
if (revalidatingEntry.status === _cache.EntryStatus.Empty) {
|
|
1405
|
+
const pendingEntry = (0, _cache.upgradeToPendingSegment)(revalidatingEntry, fetchStrategy);
|
|
1406
|
+
if (spawnedEntries === null) {
|
|
1407
|
+
spawnedEntries = new Map();
|
|
1408
|
+
}
|
|
1409
|
+
spawnedEntries.set(nodeTree.requestKey, pendingEntry);
|
|
1410
|
+
// Block on the retry revalidation we just spawned, like any
|
|
1411
|
+
// other pending response. If the retry succeeds, its upsert
|
|
1412
|
+
// evicts the rejected entry (see evictShadowingSegmentEntries
|
|
1413
|
+
// in cache.ts) and the re-run pass reads the healed data. If it
|
|
1414
|
+
// rejects too, the re-run observes a settled revalidation and
|
|
1415
|
+
// moves on.
|
|
1416
|
+
blockTaskOnPendingResponse(task, pendingEntry);
|
|
1417
|
+
}
|
|
1418
|
+
}
|
|
1419
|
+
break;
|
|
1420
|
+
case _cache.EntryStatus.Fulfilled:
|
|
1421
|
+
{
|
|
1422
|
+
let willBeSupersededByRuntimeRequest = false;
|
|
1423
|
+
if (walkCanUseRuntimeRequests(fetchStrategy, route)) {
|
|
1424
|
+
const runtimeWouldProvideMore = wouldRuntimeRequestProvideMore(nodeEntry, fetchStrategy);
|
|
1425
|
+
// An eligible shell-tier entry takes the static attempt path below
|
|
1426
|
+
// (the revalidation) instead of deopting straight to a runtime
|
|
1427
|
+
// request; see isShellEntryEligibleForStaticAttempt. The attempt
|
|
1428
|
+
// can't recur: its response records at least the concrete static
|
|
1429
|
+
// tier, which fails the shell-tier check on the re-run pass — and an
|
|
1430
|
+
// attempt that already settled without healing the entry reads as
|
|
1431
|
+
// ineligible, so the deopt proceeds after all.
|
|
1432
|
+
const shellEntryEligibleForStaticAttempt = isShellEntryEligibleForStaticAttempt(now, task.segmentCacheMap, nodeEntry, nodeTree, fetchStrategy);
|
|
1433
|
+
if (runtimeWouldProvideMore && !shellEntryEligibleForStaticAttempt) {
|
|
1434
|
+
// A runtime request would return more content for this segment
|
|
1435
|
+
// than the entry contains. Surface it via the return value, so the
|
|
1436
|
+
// caller can deopt this subtree to a runtime prefetch. (An
|
|
1437
|
+
// eligible shell-tier entry withholds the signal for this pass:
|
|
1438
|
+
// the static attempt spawned below blocks the task, and the re-run
|
|
1439
|
+
// pass reads the attempt's result instead.)
|
|
1440
|
+
needsRuntimeRequest = true;
|
|
1441
|
+
// If a runtime request would return more content skip the static path
|
|
1442
|
+
// entirely — unless the entry is an eligible shell-tier entry (see above),
|
|
1443
|
+
// whose static attempt IS this upgrade.
|
|
1444
|
+
// Otherwise the runtime request covers this segment and supersedes
|
|
1445
|
+
// anything a static fetch could add, so a static upgrade would at best
|
|
1446
|
+
// duplicate it — delivering the same content twice — and at worst replace
|
|
1447
|
+
// runtime content with static content.
|
|
1448
|
+
willBeSupersededByRuntimeRequest = true;
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
// If this is the speculative phase (not the shell phase), check if we
|
|
1452
|
+
// should attempt to upgrade a fallback ISR response to a concrete
|
|
1453
|
+
// version.
|
|
1454
|
+
//
|
|
1455
|
+
// For entries below this phase's tier, upgrade during the phase
|
|
1456
|
+
// itself — no background deferral, since the whole point of the
|
|
1457
|
+
// Speculative phase is to bring the cache up to the
|
|
1458
|
+
// per-link-concrete tier. `isPartial` ensures a complete entry isn't
|
|
1459
|
+
// re-fetched.
|
|
1460
|
+
//
|
|
1461
|
+
// If we can use runtime requests and a runtime request would provide more
|
|
1462
|
+
// data, we also skip the upgrade (see `willBeSupersededByRuntimeRequest`)
|
|
1463
|
+
const isUpgradeableISRFallbackRetry = fetchStrategy === _types.FetchStrategy.PPR && nodeEntry.isUpgradeableISRFallback && // If the status is empty, then we haven't yet attempted to upgrade
|
|
1464
|
+
// the fallback.
|
|
1465
|
+
//
|
|
1466
|
+
// If the status is fulfilled, then the fallback was
|
|
1467
|
+
// successfully upgraded to a concrete version.
|
|
1468
|
+
//
|
|
1469
|
+
// Do not attempt to upgrade if the status is Pending or Rejected.
|
|
1470
|
+
(task.fallbackRetryStatus === _cache.EntryStatus.Empty || task.fallbackRetryStatus === _cache.EntryStatus.Fulfilled);
|
|
1471
|
+
if (spawnRevalidations && !willBeSupersededByRuntimeRequest && (nodeEntry.isPartial && (0, _cache.canNewFetchStrategyProvideMoreContent)(nodeEntry.fetchStrategy, fetchStrategy) || isUpgradeableISRFallbackRetry)) {
|
|
1472
|
+
const revalidatingEntry = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, task.segmentCacheMap, fetchStrategy, nodeTree);
|
|
1473
|
+
if (revalidatingEntry.status === _cache.EntryStatus.Empty) {
|
|
1474
|
+
const pendingEntry = (0, _cache.upgradeToPendingSegment)(revalidatingEntry, fetchStrategy);
|
|
1475
|
+
if (spawnedEntries === null) {
|
|
1476
|
+
spawnedEntries = new Map();
|
|
1477
|
+
}
|
|
1478
|
+
spawnedEntries.set(nodeTree.requestKey, pendingEntry);
|
|
1479
|
+
// The pass blocks on every request it spawns, including
|
|
1480
|
+
// revalidations of an already-fulfilled entry.
|
|
1481
|
+
blockTaskOnPendingResponse(task, pendingEntry);
|
|
1482
|
+
} else {
|
|
1483
|
+
// A non-empty revalidating entry means a request is already in
|
|
1484
|
+
// flight (or recently settled), so we dedupe and don't issue a
|
|
1485
|
+
// competing one — including for ISR-fallback upgrades, which then
|
|
1486
|
+
// share the same revalidation across tasks.
|
|
1487
|
+
if (revalidatingEntry.status === _cache.EntryStatus.Pending) {
|
|
1488
|
+
// The deduped-against revalidation is still in flight, and this
|
|
1489
|
+
// pass depends on its response. Wait for it before the phase
|
|
1490
|
+
// can complete. (A settled revalidation we chose not to use
|
|
1491
|
+
// needs no waiting and is not a prefetch failure — the base
|
|
1492
|
+
// entry here is already Fulfilled. A settled revalidation
|
|
1493
|
+
// can't strand an eligible shell-tier entry either:
|
|
1494
|
+
// isShellEntryEligibleForStaticAttempt reads the slot, so a
|
|
1495
|
+
// settled attempt makes the entry ineligible and the runtime
|
|
1496
|
+
// deopt proceeds above.)
|
|
1497
|
+
blockTaskOnPendingResponse(task, revalidatingEntry);
|
|
1498
|
+
}
|
|
1499
|
+
}
|
|
1500
|
+
}
|
|
1501
|
+
break;
|
|
1502
|
+
}
|
|
1503
|
+
default:
|
|
1504
|
+
nodeEntry;
|
|
1505
|
+
}
|
|
1506
|
+
node = node.parent;
|
|
1507
|
+
}
|
|
1508
|
+
if (spawnedEntries !== null) {
|
|
1509
|
+
spawnPrefetchSubtask((0, _cache.fetchSegmentPrefetchesUsingStaticRequest)(task, route, routeKey, tree, spawnedEntries, fetchStrategy));
|
|
1510
|
+
}
|
|
1511
|
+
return needsRuntimeRequest;
|
|
1512
|
+
}
|
|
1513
|
+
/**
|
|
1514
|
+
* During the tree walk, decide whether this segment should be added to the
|
|
1515
|
+
* in-progress bundle (if it has InlinedIntoChild) or finalize the bundle
|
|
1516
|
+
* and ping it, triggering a fetch if any of its entries need data (if it
|
|
1517
|
+
* doesn't). Returns the updated bundle to pass to children (null if the
|
|
1518
|
+
* bundle was finalized here), along with the needs-runtime signal from the
|
|
1519
|
+
* bundle ping, if one happened (always false otherwise).
|
|
1520
|
+
*/ function accumulateSegmentBundle(now, task, route, tree, parentBundle, // Per-pass static walk strategy; see pingRootRouteTree where it's derived.
|
|
1521
|
+
// PPR for the normal static bundling walk; StaticShell during the Shell
|
|
1522
|
+
// phase's static shell attempt, whose entries are keyed at the shell
|
|
1523
|
+
// vary paths.
|
|
1524
|
+
fetchStrategy, // False when finishing a chain on a runtime-prefetch bailout; see
|
|
1525
|
+
// pingSegmentBundle.
|
|
1526
|
+
spawnRevalidations) {
|
|
1527
|
+
// Prefetching is disabled for this segment (prefetch: 'force-disabled'):
|
|
1528
|
+
// the server emits identity only for its response node, and it
|
|
1529
|
+
// participates in the bundle chain with null tree/entry — no cache entry
|
|
1530
|
+
// is created for it.
|
|
1531
|
+
// (Partial Prefetching segments are NOT in this mask — the server emits
|
|
1532
|
+
// static data for them unconditionally.) Intentionally not gated by the
|
|
1533
|
+
// prefetch inlining flag: we never statically prefetch unprefetchable
|
|
1534
|
+
// segments.
|
|
1535
|
+
if (tree.prefetchHints & _approutertypes.StaticPrefetchDisabled) {
|
|
1536
|
+
return {
|
|
1537
|
+
bundle: {
|
|
1538
|
+
tree: null,
|
|
1539
|
+
entry: null,
|
|
1540
|
+
parent: parentBundle
|
|
1541
|
+
},
|
|
1542
|
+
needsRuntimeRequest: false
|
|
1543
|
+
};
|
|
1544
|
+
}
|
|
1545
|
+
const segment = (0, _cache.readOrCreateSegmentCacheEntry)(now, task.segmentCacheMap, fetchStrategy, tree);
|
|
1546
|
+
if (process.env.__NEXT_PREFETCH_INLINING && tree.prefetchHints & _approutertypes.PrefetchHint.InlinedIntoChild) {
|
|
1547
|
+
if (segment.status === _cache.EntryStatus.Pending) {
|
|
1548
|
+
// The chain this entry joins may be dropped before it's ever pinged
|
|
1549
|
+
// (see the drop sites in pingSegmentInCacheComponentsTree), and only
|
|
1550
|
+
// the ping blocks on Pending entries. Register on the in-flight
|
|
1551
|
+
// response at read time instead, so the pass observes it before the
|
|
1552
|
+
// phase can complete even if the chain is dropped. When the chain does
|
|
1553
|
+
// get pinged, the ping's own registration dedupes against this one.
|
|
1554
|
+
blockTaskOnPendingResponse(task, segment);
|
|
1555
|
+
}
|
|
1556
|
+
return {
|
|
1557
|
+
bundle: {
|
|
1558
|
+
tree,
|
|
1559
|
+
entry: segment,
|
|
1560
|
+
parent: parentBundle
|
|
1561
|
+
},
|
|
1562
|
+
// No bundle ping happens here, but the node's own entry may already be
|
|
1563
|
+
// fulfilled and insufficient. Report that signal directly: the chain
|
|
1564
|
+
// ping only reaches the terminal descendant, and if that descendant is
|
|
1565
|
+
// itself a decision point it consumes the signal for its own subtree,
|
|
1566
|
+
// leaving this ancestor's insufficiency invisible to the decision
|
|
1567
|
+
// point above it. An eligible shell-tier entry withholds the signal,
|
|
1568
|
+
// the same exception the bundle ping applies: deopting here would
|
|
1569
|
+
// pre-empt the static attempt the chain ping spawns for this node when
|
|
1570
|
+
// it reaches the terminal descendant (its Fulfilled case runs for
|
|
1571
|
+
// every node in the chain).
|
|
1572
|
+
needsRuntimeRequest: segment.status === _cache.EntryStatus.Fulfilled && wouldRuntimeRequestProvideMore(segment, fetchStrategy) && !isShellEntryEligibleForStaticAttempt(now, task.segmentCacheMap, segment, tree, fetchStrategy)
|
|
1573
|
+
};
|
|
1574
|
+
}
|
|
1575
|
+
// Not bundled. Build a single-node bundle and ping it. If this page
|
|
1576
|
+
// accepts the head (HeadInlinedIntoSelf), prepend the head's cache entry
|
|
1577
|
+
// to the bundle.
|
|
1578
|
+
let effectiveParent = parentBundle;
|
|
1579
|
+
if (process.env.__NEXT_PREFETCH_INLINING && tree.prefetchHints & _approutertypes.PrefetchHint.HeadInlinedIntoSelf) {
|
|
1580
|
+
effectiveParent = {
|
|
1581
|
+
tree: route.root.head,
|
|
1582
|
+
entry: (0, _cache.readOrCreateSegmentCacheEntry)(now, task.segmentCacheMap, fetchStrategy, route.root.head),
|
|
1583
|
+
parent: parentBundle
|
|
1584
|
+
};
|
|
1585
|
+
}
|
|
1586
|
+
const segments = {
|
|
1587
|
+
tree,
|
|
1588
|
+
entry: segment,
|
|
1589
|
+
parent: effectiveParent
|
|
1590
|
+
};
|
|
1591
|
+
const needsRuntimeRequest = pingSegmentBundle(now, task, route, task.key, tree, segments, fetchStrategy, spawnRevalidations);
|
|
1592
|
+
return {
|
|
1593
|
+
bundle: null,
|
|
1594
|
+
needsRuntimeRequest
|
|
1595
|
+
};
|
|
1596
|
+
}
|
|
1597
|
+
function finishStaticBundleOnRuntimeBailout(now, task, route, tree, parentBundle, // The same static walk strategy the parent bundle was accumulated with.
|
|
1598
|
+
// Any needs-runtime signal from finishing the bundle is dropped: the
|
|
1599
|
+
// caller is already deopting this subtree to a runtime prefetch.
|
|
1600
|
+
fetchStrategy) {
|
|
1601
|
+
const bundle = accumulateSegmentBundle(now, task, route, tree, parentBundle, fetchStrategy, // The batched runtime request covers the deopted subtree; only fetch
|
|
1602
|
+
// Empty entries the chain would otherwise strand — never spawn
|
|
1603
|
+
// revalidations over settled or in-flight ones. See pingSegmentBundle.
|
|
1604
|
+
false).bundle;
|
|
1605
|
+
if (bundle === null) {
|
|
1606
|
+
return;
|
|
1607
|
+
}
|
|
1608
|
+
if (tree.slots !== null) {
|
|
1609
|
+
for (const childTree of tree.slots.values()){
|
|
1610
|
+
if (childTree.prefetchHints & _approutertypes.PrefetchHint.ParentInlinedIntoSelf) {
|
|
1611
|
+
finishStaticBundleOnRuntimeBailout(now, task, route, childTree, bundle, fetchStrategy);
|
|
1612
|
+
return;
|
|
1613
|
+
}
|
|
1614
|
+
}
|
|
1615
|
+
}
|
|
1616
|
+
}
|
|
1617
|
+
function pingFullSegmentRevalidation(now, task, tree, fetchStrategy) {
|
|
1618
|
+
const revalidatingSegment = (0, _cache.readOrCreateRevalidatingSegmentEntry)(now, task.segmentCacheMap, fetchStrategy, tree);
|
|
1619
|
+
if (revalidatingSegment.status === _cache.EntryStatus.Empty) {
|
|
1620
|
+
// During a Full/PPRRuntime prefetch, a single runtime request is made for
|
|
1621
|
+
// all the segments that we need. So we don't initiate a request here
|
|
1622
|
+
// directly. By returning a pending entry from this function, it signals
|
|
1623
|
+
// to the caller that this segment should be included in the request
|
|
1624
|
+
// that's sent to the server.
|
|
1625
|
+
const pendingSegment = (0, _cache.upgradeToPendingSegment)(revalidatingSegment, fetchStrategy);
|
|
1626
|
+
// The upsert is handled by writeSegmentDataIntoCache
|
|
1627
|
+
// when the runtime request's response is written into the cache.
|
|
1628
|
+
return pendingSegment;
|
|
1629
|
+
} else {
|
|
1630
|
+
// There's already a revalidation in progress.
|
|
1631
|
+
const nonEmptyRevalidatingSegment = revalidatingSegment;
|
|
1632
|
+
if ((0, _cache.canNewFetchStrategyProvideMoreContent)(nonEmptyRevalidatingSegment.fetchStrategy, fetchStrategy)) {
|
|
1633
|
+
// The existing revalidation was fetched using a less specific strategy.
|
|
1634
|
+
// Reset it and start a new revalidation.
|
|
1635
|
+
const emptySegment = (0, _cache.overwriteRevalidatingSegmentCacheEntry)(now, task.segmentCacheMap, fetchStrategy, tree);
|
|
1636
|
+
const pendingSegment = (0, _cache.upgradeToPendingSegment)(emptySegment, fetchStrategy);
|
|
1637
|
+
// The upsert is handled by writeSegmentDataIntoCache
|
|
1638
|
+
// when the runtime request's response is written into the cache.
|
|
1639
|
+
return pendingSegment;
|
|
1640
|
+
}
|
|
1641
|
+
switch(nonEmptyRevalidatingSegment.status){
|
|
1642
|
+
case _cache.EntryStatus.Pending:
|
|
1643
|
+
// There's already an in-progress prefetch that includes this segment.
|
|
1644
|
+
// The pass needs the contents of that response, too. Wait for it
|
|
1645
|
+
// before the phase can complete.
|
|
1646
|
+
blockTaskOnPendingResponse(task, nonEmptyRevalidatingSegment);
|
|
1647
|
+
return null;
|
|
1648
|
+
case _cache.EntryStatus.Fulfilled:
|
|
1649
|
+
case _cache.EntryStatus.Rejected:
|
|
1650
|
+
// A previous revalidation attempt finished, but we chose not to replace
|
|
1651
|
+
// the existing entry in the cache. Don't try again until or unless the
|
|
1652
|
+
// revalidation entry expires.
|
|
1653
|
+
return null;
|
|
1654
|
+
default:
|
|
1655
|
+
nonEmptyRevalidatingSegment;
|
|
1656
|
+
return null;
|
|
1657
|
+
}
|
|
1658
|
+
}
|
|
1659
|
+
}
|
|
1660
|
+
function needsSpeculativePrefetch(taskfetchStrategy, rootPrefetchHints) {
|
|
1661
|
+
if ((rootPrefetchHints & _approutertypes.PrefetchHint.SubtreeHasPartialPrefetching) !== 0) {
|
|
1662
|
+
// PPF - only needs a speculative prefetch if this is a `<Link prefetch={true}>`.
|
|
1663
|
+
return taskfetchStrategy === _types.FetchStrategy.Full;
|
|
1664
|
+
} else {
|
|
1665
|
+
// non-PPF -- all prefetches are speculative.
|
|
1666
|
+
return true;
|
|
1667
|
+
}
|
|
1668
|
+
}
|
|
1669
|
+
// -----------------------------------------------------------------------------
|
|
1670
|
+
// The remainder of the module is a MinHeap implementation. Try not to put any
|
|
1671
|
+
// logic below here unless it's related to the heap algorithm. We can extract
|
|
1672
|
+
// this to a separate module if/when we need multiple kinds of heaps.
|
|
1673
|
+
// -----------------------------------------------------------------------------
|
|
1674
|
+
function compareQueuePriority(a, b) {
|
|
1675
|
+
// Since the queue is a MinHeap, this should return a positive number if b is
|
|
1676
|
+
// higher priority than a, and a negative number if a is higher priority
|
|
1677
|
+
// than b.
|
|
1678
|
+
// `priority` is an integer, where higher numbers are higher priority.
|
|
1679
|
+
const priorityDiff = b.priority - a.priority;
|
|
1680
|
+
if (priorityDiff !== 0) {
|
|
1681
|
+
return priorityDiff;
|
|
1682
|
+
}
|
|
1683
|
+
// If the priority is the same, check which phase the prefetch is in — is it
|
|
1684
|
+
// prefetching the route tree, or the segments? Route trees are prioritized.
|
|
1685
|
+
const phaseDiff = b.phase - a.phase;
|
|
1686
|
+
if (phaseDiff !== 0) {
|
|
1687
|
+
return phaseDiff;
|
|
1688
|
+
}
|
|
1689
|
+
// Finally, check the insertion order. `sortId` is an incrementing counter
|
|
1690
|
+
// assigned to prefetches. We want to process the newest prefetches first.
|
|
1691
|
+
return b.sortId - a.sortId;
|
|
1692
|
+
}
|
|
1693
|
+
function heapPush(heap, node) {
|
|
1694
|
+
const index = heap.length;
|
|
1695
|
+
heap.push(node);
|
|
1696
|
+
node._heapIndex = index;
|
|
1697
|
+
heapSiftUp(heap, node, index);
|
|
1698
|
+
}
|
|
1699
|
+
function heapPeek(heap) {
|
|
1700
|
+
return heap.length === 0 ? null : heap[0];
|
|
1701
|
+
}
|
|
1702
|
+
function heapPop(heap) {
|
|
1703
|
+
if (heap.length === 0) {
|
|
1704
|
+
return null;
|
|
1705
|
+
}
|
|
1706
|
+
const first = heap[0];
|
|
1707
|
+
first._heapIndex = -1;
|
|
1708
|
+
const last = heap.pop();
|
|
1709
|
+
if (last !== first) {
|
|
1710
|
+
heap[0] = last;
|
|
1711
|
+
last._heapIndex = 0;
|
|
1712
|
+
heapSiftDown(heap, last, 0);
|
|
1713
|
+
}
|
|
1714
|
+
return first;
|
|
1715
|
+
}
|
|
1716
|
+
function heapDelete(heap, node) {
|
|
1717
|
+
const index = node._heapIndex;
|
|
1718
|
+
if (index !== -1) {
|
|
1719
|
+
node._heapIndex = -1;
|
|
1720
|
+
if (heap.length !== 0) {
|
|
1721
|
+
const last = heap.pop();
|
|
1722
|
+
if (last !== node) {
|
|
1723
|
+
heap[index] = last;
|
|
1724
|
+
last._heapIndex = index;
|
|
1725
|
+
heapSiftDown(heap, last, index);
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
}
|
|
1730
|
+
function heapResift(heap, node) {
|
|
1731
|
+
const index = node._heapIndex;
|
|
1732
|
+
if (index !== -1) {
|
|
1733
|
+
if (index === 0) {
|
|
1734
|
+
heapSiftDown(heap, node, 0);
|
|
1735
|
+
} else {
|
|
1736
|
+
const parentIndex = index - 1 >>> 1;
|
|
1737
|
+
const parent = heap[parentIndex];
|
|
1738
|
+
if (compareQueuePriority(parent, node) > 0) {
|
|
1739
|
+
// The parent is larger. Sift up.
|
|
1740
|
+
heapSiftUp(heap, node, index);
|
|
1741
|
+
} else {
|
|
1742
|
+
// The parent is smaller (or equal). Sift down.
|
|
1743
|
+
heapSiftDown(heap, node, index);
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
}
|
|
1747
|
+
}
|
|
1748
|
+
function heapSiftUp(heap, node, i) {
|
|
1749
|
+
let index = i;
|
|
1750
|
+
while(index > 0){
|
|
1751
|
+
const parentIndex = index - 1 >>> 1;
|
|
1752
|
+
const parent = heap[parentIndex];
|
|
1753
|
+
if (compareQueuePriority(parent, node) > 0) {
|
|
1754
|
+
// The parent is larger. Swap positions.
|
|
1755
|
+
heap[parentIndex] = node;
|
|
1756
|
+
node._heapIndex = parentIndex;
|
|
1757
|
+
heap[index] = parent;
|
|
1758
|
+
parent._heapIndex = index;
|
|
1759
|
+
index = parentIndex;
|
|
1760
|
+
} else {
|
|
1761
|
+
// The parent is smaller. Exit.
|
|
1762
|
+
return;
|
|
1763
|
+
}
|
|
1764
|
+
}
|
|
1765
|
+
}
|
|
1766
|
+
function heapSiftDown(heap, node, i) {
|
|
1767
|
+
let index = i;
|
|
1768
|
+
const length = heap.length;
|
|
1769
|
+
const halfLength = length >>> 1;
|
|
1770
|
+
while(index < halfLength){
|
|
1771
|
+
const leftIndex = (index + 1) * 2 - 1;
|
|
1772
|
+
const left = heap[leftIndex];
|
|
1773
|
+
const rightIndex = leftIndex + 1;
|
|
1774
|
+
const right = heap[rightIndex];
|
|
1775
|
+
// If the left or right node is smaller, swap with the smaller of those.
|
|
1776
|
+
if (compareQueuePriority(left, node) < 0) {
|
|
1777
|
+
if (rightIndex < length && compareQueuePriority(right, left) < 0) {
|
|
1778
|
+
heap[index] = right;
|
|
1779
|
+
right._heapIndex = index;
|
|
1780
|
+
heap[rightIndex] = node;
|
|
1781
|
+
node._heapIndex = rightIndex;
|
|
1782
|
+
index = rightIndex;
|
|
1783
|
+
} else {
|
|
1784
|
+
heap[index] = left;
|
|
1785
|
+
left._heapIndex = index;
|
|
1786
|
+
heap[leftIndex] = node;
|
|
1787
|
+
node._heapIndex = leftIndex;
|
|
1788
|
+
index = leftIndex;
|
|
1789
|
+
}
|
|
1790
|
+
} else if (rightIndex < length && compareQueuePriority(right, node) < 0) {
|
|
1791
|
+
heap[index] = right;
|
|
1792
|
+
right._heapIndex = index;
|
|
1793
|
+
heap[rightIndex] = node;
|
|
1794
|
+
node._heapIndex = rightIndex;
|
|
1795
|
+
index = rightIndex;
|
|
1796
|
+
} else {
|
|
1797
|
+
// Neither child is smaller. Exit.
|
|
1798
|
+
return;
|
|
1799
|
+
}
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
|
|
1803
|
+
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
|
|
1804
|
+
Object.defineProperty(exports.default, '__esModule', { value: true });
|
|
1805
|
+
Object.assign(exports.default, exports);
|
|
1806
|
+
module.exports = exports.default;
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1809
|
+
//# sourceMappingURL=scheduler.js.map
|