putmein-test 1.0.0
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/README.md +93 -0
- package/bin/ray.js +311 -0
- package/dist/brain/brain +0 -0
- package/dist/cohen/cohen +0 -0
- package/dist/ray/.next/BUILD_ID +1 -0
- package/dist/ray/.next/app-path-routes-manifest.json +78 -0
- package/dist/ray/.next/build-manifest.json +25 -0
- package/dist/ray/.next/package.json +1 -0
- package/dist/ray/.next/prerender-manifest.json +157 -0
- package/dist/ray/.next/required-server-files.json +352 -0
- package/dist/ray/.next/routes-manifest.json +558 -0
- package/dist/ray/.next/server/app/(auth)/login/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(auth)/login/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(auth)/login/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(auth)/login/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(auth)/login/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(auth)/login/page.js +14 -0
- package/dist/ray/.next/server/app/(auth)/login/page.js.map +5 -0
- package/dist/ray/.next/server/app/(auth)/login/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(auth)/login/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(auth)/register/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(auth)/register/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(auth)/register/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(auth)/register/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(auth)/register/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(auth)/register/page.js +14 -0
- package/dist/ray/.next/server/app/(auth)/register/page.js.map +5 -0
- package/dist/ray/.next/server/app/(auth)/register/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(auth)/register/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/[sessionId]/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/[sessionId]/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/[sessionId]/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/[sessionId]/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/[sessionId]/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/[sessionId]/page.js +17 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/[sessionId]/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/[sessionId]/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/[sessionId]/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/[id]/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/[id]/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/[id]/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/[id]/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/[id]/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/[id]/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/[id]/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/[id]/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/[id]/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/cicd/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/[id]/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/[id]/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/[id]/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/[id]/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/[id]/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/[id]/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/[id]/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/[id]/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/[id]/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/containers/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/[id]/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/[id]/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/[id]/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/[id]/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/[id]/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/[id]/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/[id]/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/[id]/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/[id]/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/deployments/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/github/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/github/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/github/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/github/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/github/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/github/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/github/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/github/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/github/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/[id]/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/[id]/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/[id]/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/[id]/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/[id]/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/[id]/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/[id]/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/[id]/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/[id]/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/monitor/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/page.js +15 -0
- package/dist/ray/.next/server/app/(dashboard)/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/[id]/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/[id]/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/[id]/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/[id]/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/[id]/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/[id]/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/[id]/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/[id]/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/[id]/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/[id]/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/[id]/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/[id]/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/[id]/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/[id]/page/server-reference-manifest.json +16 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/[id]/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/[id]/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/[id]/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/[id]/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/page/server-reference-manifest.json +16 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/servers/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/(dashboard)/settings/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/(dashboard)/settings/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/(dashboard)/settings/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/(dashboard)/settings/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/settings/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/(dashboard)/settings/page.js +16 -0
- package/dist/ray/.next/server/app/(dashboard)/settings/page.js.map +5 -0
- package/dist/ray/.next/server/app/(dashboard)/settings/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/_global-error/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
- package/dist/ray/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/_global-error/page.js +9 -0
- package/dist/ray/.next/server/app/_global-error/page.js.map +5 -0
- package/dist/ray/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/_global-error.html +1 -0
- package/dist/ray/.next/server/app/_global-error.meta +22 -0
- package/dist/ray/.next/server/app/_global-error.rsc +15 -0
- package/dist/ray/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +20 -0
- package/dist/ray/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
- package/dist/ray/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/dist/ray/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/_not-found/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/_not-found/page.js +12 -0
- package/dist/ray/.next/server/app/_not-found/page.js.map +5 -0
- package/dist/ray/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/_not-found.html +1 -0
- package/dist/ray/.next/server/app/_not-found.meta +27 -0
- package/dist/ray/.next/server/app/_not-found.rsc +16 -0
- package/dist/ray/.next/server/app/_not-found.segments/_full.segment.rsc +16 -0
- package/dist/ray/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +22 -0
- package/dist/ray/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -0
- package/dist/ray/.next/server/app/api/auth/login/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/auth/login/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/auth/login/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/auth/login/route.js +10 -0
- package/dist/ray/.next/server/app/api/auth/login/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/auth/login/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/auth/login/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/auth/logout/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/auth/logout/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/auth/logout/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/auth/logout/route.js +7 -0
- package/dist/ray/.next/server/app/api/auth/logout/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/auth/logout/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/auth/logout/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/auth/register/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/auth/register/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/auth/register/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/auth/register/route.js +10 -0
- package/dist/ray/.next/server/app/api/auth/register/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/auth/register/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/auth/register/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/chat/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/chat/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/chat/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/chat/route.js +10 -0
- package/dist/ray/.next/server/app/api/chat/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/chat/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/chat/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/cicd/[id]/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/cicd/[id]/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/cicd/[id]/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/cicd/[id]/route.js +11 -0
- package/dist/ray/.next/server/app/api/cicd/[id]/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/cicd/[id]/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/cicd/[id]/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/cicd/poll/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/cicd/poll/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/cicd/poll/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/cicd/poll/route.js +11 -0
- package/dist/ray/.next/server/app/api/cicd/poll/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/cicd/poll/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/cicd/poll/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/cicd/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/cicd/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/cicd/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/cicd/route.js +12 -0
- package/dist/ray/.next/server/app/api/cicd/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/cicd/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/cicd/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/containers/[id]/action/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/containers/[id]/action/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/containers/[id]/action/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/containers/[id]/action/route.js +9 -0
- package/dist/ray/.next/server/app/api/containers/[id]/action/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/containers/[id]/action/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/containers/[id]/action/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/containers/[id]/logs/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/containers/[id]/logs/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/containers/[id]/logs/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/containers/[id]/logs/route.js +9 -0
- package/dist/ray/.next/server/app/api/containers/[id]/logs/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/containers/[id]/logs/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/containers/[id]/logs/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/containers/[id]/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/containers/[id]/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/containers/[id]/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/containers/[id]/route.js +10 -0
- package/dist/ray/.next/server/app/api/containers/[id]/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/containers/[id]/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/containers/[id]/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/containers/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/containers/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/containers/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/containers/route.js +10 -0
- package/dist/ray/.next/server/app/api/containers/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/containers/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/containers/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/deploy/[id]/action/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/deploy/[id]/action/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/deploy/[id]/action/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/deploy/[id]/action/route.js +11 -0
- package/dist/ray/.next/server/app/api/deploy/[id]/action/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/deploy/[id]/action/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/deploy/[id]/action/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/deploy/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/deploy/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/deploy/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/deploy/route.js +11 -0
- package/dist/ray/.next/server/app/api/deploy/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/deploy/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/deploy/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/deploy/upload/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/deploy/upload/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/deploy/upload/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/deploy/upload/route.js +10 -0
- package/dist/ray/.next/server/app/api/deploy/upload/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/deploy/upload/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/deploy/upload/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/diagnose/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/diagnose/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/diagnose/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/diagnose/route.js +10 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/diagnose/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/diagnose/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/diagnose/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/redeploy/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/redeploy/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/redeploy/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/redeploy/route.js +10 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/redeploy/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/redeploy/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/redeploy/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/route.js +10 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/deployments/[id]/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/deployments/active/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/deployments/active/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/deployments/active/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/deployments/active/route.js +11 -0
- package/dist/ray/.next/server/app/api/deployments/active/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/deployments/active/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/deployments/active/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/deployments/internal/save-deployment/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/deployments/internal/save-deployment/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/deployments/internal/save-deployment/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/deployments/internal/save-deployment/route.js +9 -0
- package/dist/ray/.next/server/app/api/deployments/internal/save-deployment/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/deployments/internal/save-deployment/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/deployments/internal/save-deployment/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/deployments/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/deployments/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/deployments/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/deployments/route.js +11 -0
- package/dist/ray/.next/server/app/api/deployments/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/deployments/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/deployments/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/github/app/callback/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/github/app/callback/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/github/app/callback/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/github/app/callback/route.js +11 -0
- package/dist/ray/.next/server/app/api/github/app/callback/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/github/app/callback/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/github/app/callback/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/github/app/manifest/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/github/app/manifest/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/github/app/manifest/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/github/app/manifest/route.js +7 -0
- package/dist/ray/.next/server/app/api/github/app/manifest/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/github/app/manifest/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/github/app/manifest/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/github/connect/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/github/connect/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/github/connect/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/github/connect/route.js +10 -0
- package/dist/ray/.next/server/app/api/github/connect/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/github/connect/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/github/connect/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/github/repos/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/github/repos/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/github/repos/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/github/repos/route.js +10 -0
- package/dist/ray/.next/server/app/api/github/repos/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/github/repos/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/github/repos/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/github/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/github/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/github/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/github/route.js +11 -0
- package/dist/ray/.next/server/app/api/github/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/github/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/github/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/github/status/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/github/status/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/github/status/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/github/status/route.js +10 -0
- package/dist/ray/.next/server/app/api/github/status/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/github/status/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/github/status/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/[id]/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/[id]/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/[id]/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/[id]/route.js +10 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/[id]/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/[id]/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/[id]/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/route.js +10 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/alerts/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/internal/add-project/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/internal/add-project/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/internal/add-project/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/internal/add-project/route.js +9 -0
- package/dist/ray/.next/server/app/api/monitor/internal/add-project/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/internal/add-project/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/internal/add-project/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/internal/update-project/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/internal/update-project/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/internal/update-project/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/internal/update-project/route.js +8 -0
- package/dist/ray/.next/server/app/api/monitor/internal/update-project/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/internal/update-project/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/internal/update-project/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/process/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/process/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/process/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/process/route.js +9 -0
- package/dist/ray/.next/server/app/api/monitor/process/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/process/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/process/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/diagnose/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/diagnose/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/diagnose/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/diagnose/route.js +10 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/diagnose/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/diagnose/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/diagnose/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/fix/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/fix/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/fix/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/fix/route.js +10 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/fix/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/fix/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/fix/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/logs/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/logs/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/logs/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/logs/route.js +10 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/logs/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/logs/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/logs/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/memory/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/memory/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/memory/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/memory/route.js +10 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/memory/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/memory/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/memory/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/route.js +11 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/run/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/run/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/run/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/run/route.js +11 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/run/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/run/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/projects/[id]/run/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/projects/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/projects/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/projects/route.js +11 -0
- package/dist/ray/.next/server/app/api/monitor/projects/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/projects/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/projects/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/monitor/stream/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/monitor/stream/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/monitor/stream/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/monitor/stream/route.js +9 -0
- package/dist/ray/.next/server/app/api/monitor/stream/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/monitor/stream/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/monitor/stream/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/ports/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/ports/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/ports/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/ports/route.js +10 -0
- package/dist/ray/.next/server/app/api/ports/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/ports/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/ports/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/projects/[id]/domain-check/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/projects/[id]/domain-check/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/projects/[id]/domain-check/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/projects/[id]/domain-check/route.js +9 -0
- package/dist/ray/.next/server/app/api/projects/[id]/domain-check/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/projects/[id]/domain-check/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/projects/[id]/domain-check/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/projects/[id]/env/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/projects/[id]/env/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/projects/[id]/env/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/projects/[id]/env/route.js +11 -0
- package/dist/ray/.next/server/app/api/projects/[id]/env/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/projects/[id]/env/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/projects/[id]/env/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/projects/[id]/file-content/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/projects/[id]/file-content/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/projects/[id]/file-content/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/projects/[id]/file-content/route.js +10 -0
- package/dist/ray/.next/server/app/api/projects/[id]/file-content/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/projects/[id]/file-content/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/projects/[id]/file-content/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/projects/[id]/files/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/projects/[id]/files/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/projects/[id]/files/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/projects/[id]/files/route.js +10 -0
- package/dist/ray/.next/server/app/api/projects/[id]/files/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/projects/[id]/files/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/projects/[id]/files/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/projects/[id]/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/projects/[id]/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/projects/[id]/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/projects/[id]/route.js +11 -0
- package/dist/ray/.next/server/app/api/projects/[id]/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/projects/[id]/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/projects/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/projects/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/projects/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/projects/route.js +11 -0
- package/dist/ray/.next/server/app/api/projects/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/projects/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/projects/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/generate-title/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/generate-title/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/generate-title/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/generate-title/route.js +10 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/generate-title/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/generate-title/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/generate-title/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/messages/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/messages/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/messages/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/messages/route.js +10 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/messages/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/messages/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/messages/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/route.js +10 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/sessions/[id]/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/sessions/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/sessions/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/sessions/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/sessions/route.js +10 -0
- package/dist/ray/.next/server/app/api/sessions/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/sessions/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/sessions/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/settings/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/settings/route.js +9 -0
- package/dist/ray/.next/server/app/api/settings/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/settings/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/webhooks/github/[id]/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/webhooks/github/[id]/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/webhooks/github/[id]/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/webhooks/github/[id]/route.js +8 -0
- package/dist/ray/.next/server/app/api/webhooks/github/[id]/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/webhooks/github/[id]/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/webhooks/github/[id]/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/api/webhooks/github/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/api/webhooks/github/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/api/webhooks/github/route/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/api/webhooks/github/route.js +9 -0
- package/dist/ray/.next/server/app/api/webhooks/github/route.js.map +5 -0
- package/dist/ray/.next/server/app/api/webhooks/github/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/api/webhooks/github/route_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/favicon.ico/route/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/favicon.ico/route/build-manifest.json +12 -0
- package/dist/ray/.next/server/app/favicon.ico/route.js +8 -0
- package/dist/ray/.next/server/app/favicon.ico/route.js.map +5 -0
- package/dist/ray/.next/server/app/favicon.ico/route.js.nft.json +1 -0
- package/dist/ray/.next/server/app/favicon.ico.body +0 -0
- package/dist/ray/.next/server/app/favicon.ico.meta +1 -0
- package/dist/ray/.next/server/app/login.html +1 -0
- package/dist/ray/.next/server/app/login.meta +31 -0
- package/dist/ray/.next/server/app/login.rsc +22 -0
- package/dist/ray/.next/server/app/login.segments/!KGF1dGgp/login/__PAGE__.segment.rsc +27 -0
- package/dist/ray/.next/server/app/login.segments/_full.segment.rsc +22 -0
- package/dist/ray/.next/server/app/login.segments/_tree.segment.rsc +4 -0
- package/dist/ray/.next/server/app/page/app-paths-manifest.json +3 -0
- package/dist/ray/.next/server/app/page/build-manifest.json +21 -0
- package/dist/ray/.next/server/app/page/next-font-manifest.json +11 -0
- package/dist/ray/.next/server/app/page/react-loadable-manifest.json +1 -0
- package/dist/ray/.next/server/app/page/server-reference-manifest.json +4 -0
- package/dist/ray/.next/server/app/page.js +15 -0
- package/dist/ray/.next/server/app/page.js.map +5 -0
- package/dist/ray/.next/server/app/page.js.nft.json +1 -0
- package/dist/ray/.next/server/app/page_client-reference-manifest.js +3 -0
- package/dist/ray/.next/server/app/register.html +1 -0
- package/dist/ray/.next/server/app/register.meta +31 -0
- package/dist/ray/.next/server/app/register.rsc +22 -0
- package/dist/ray/.next/server/app/register.segments/!KGF1dGgp/register/__PAGE__.segment.rsc +27 -0
- package/dist/ray/.next/server/app/register.segments/_full.segment.rsc +22 -0
- package/dist/ray/.next/server/app/register.segments/_tree.segment.rsc +4 -0
- package/dist/ray/.next/server/app-paths-manifest.json +78 -0
- package/dist/ray/.next/server/chunks/1oeh_server_app_api_deployments_internal_save-deployment_route_actions_16l57wt.js +3 -0
- package/dist/ray/.next/server/chunks/1oeh_server_app_api_monitor_internal_update-project_route_actions_0rv-_k_.js +3 -0
- package/dist/ray/.next/server/chunks/1oeh_server_app_api_monitor_projects_[id]_diagnose_route_actions_19rwss9.js +3 -0
- package/dist/ray/.next/server/chunks/[externals]__0_burez._.js +3 -0
- package/dist/ray/.next/server/chunks/[externals]__0bwk60o._.js +3 -0
- package/dist/ray/.next/server/chunks/[externals]__0su6gxy._.js +3 -0
- package/dist/ray/.next/server/chunks/[externals]__14kfdpf._.js +3 -0
- package/dist/ray/.next/server/chunks/[externals]_child_process_17eio63._.js +3 -0
- package/dist/ray/.next/server/chunks/[externals]_util_1jlmhhy._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0-m2dss._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__00_hq9v._.js +153 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__00fys1d._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__00gul7y._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__00p0nlw._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__02jvwmh._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__03-y9x_._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__04kysi4._.js +6 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__07o6_7e._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__085oz7g._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0brsz6n._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0ceqo59._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0dpk86c._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0j0i--u._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0jff-wg._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0lijwpm._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0mzel5m._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0n31rue._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0p-ah62._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0ph8op9._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0s9388-._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0s9z45u._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0spav2d._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0t_2p_e._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0tj_gck._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0x54s0q._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0xbtjoa._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__0zkidx6._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__10g8xkn._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__10stn5_._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__110dqtn._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__11pa906._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__12tyokc._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__14oyxq6._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__14sjgdf._.js +5 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__15-fati._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__17e6c57._.js +6 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1d-w0wg._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1fw9lv4._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1fxmaq4._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1jlb-hl._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1m6l0st._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1msdzjr._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1nf6z4s._.js +165 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1psg21i._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1rwurib._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1u7y5z_._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__1uu427c._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__208tvax._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__20fiz3c._.js +3 -0
- package/dist/ray/.next/server/chunks/[root-of-the-server]__21bivwf._.js +3 -0
- package/dist/ray/.next/server/chunks/[turbopack]_runtime.js +807 -0
- package/dist/ray/.next/server/chunks/_0-yfwt_._.js +3 -0
- package/dist/ray/.next/server/chunks/_004qego._.js +3 -0
- package/dist/ray/.next/server/chunks/_06rjxfb._.js +3 -0
- package/dist/ray/.next/server/chunks/_0dr9glm._.js +5 -0
- package/dist/ray/.next/server/chunks/_0igzcb-._.js +4 -0
- package/dist/ray/.next/server/chunks/_0knpucz._.js +6 -0
- package/dist/ray/.next/server/chunks/_0mihiqc._.js +3 -0
- package/dist/ray/.next/server/chunks/_0qzh6lb._.js +3 -0
- package/dist/ray/.next/server/chunks/_0u5b_5s._.js +3 -0
- package/dist/ray/.next/server/chunks/_0zfb6l-._.js +6 -0
- package/dist/ray/.next/server/chunks/_0zkbs0c._.js +5 -0
- package/dist/ray/.next/server/chunks/_10ewwxb._.js +3 -0
- package/dist/ray/.next/server/chunks/_11x09ym._.js +6 -0
- package/dist/ray/.next/server/chunks/_12824ye._.js +3 -0
- package/dist/ray/.next/server/chunks/_146xyuw._.js +3 -0
- package/dist/ray/.next/server/chunks/_1g-wo_m._.js +7 -0
- package/dist/ray/.next/server/chunks/_1h-q25y._.js +3 -0
- package/dist/ray/.next/server/chunks/_1lndqp7._.js +3 -0
- package/dist/ray/.next/server/chunks/_1mxn_lb._.js +3 -0
- package/dist/ray/.next/server/chunks/_1o1h4lj._.js +6 -0
- package/dist/ray/.next/server/chunks/_1om7v4s._.js +3 -0
- package/dist/ray/.next/server/chunks/_1uiy6df._.js +19 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_auth_login_route_actions_1ox7zi0.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_auth_logout_route_actions_0regwyr.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_auth_register_route_actions_0g4vfdr.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_chat_route_actions_1d_pld-.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_cicd_[id]_route_actions_178ff8u.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_cicd_poll_route_actions_1m8gn_f.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_cicd_route_actions_00q85x3.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_containers_[id]_action_route_actions_0atcrmg.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_containers_[id]_logs_route_actions_1ad5fw1.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_containers_[id]_route_actions_1cyp5fy.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_containers_route_actions_07xxnqh.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_deploy_[id]_action_route_actions_1kel52u.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_deploy_route_actions_1jb0gl_.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_deploy_upload_route_actions_17d0eqy.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_deployments_[id]_diagnose_route_actions_0w2ihfl.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_deployments_[id]_redeploy_route_actions_0ui73a2.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_deployments_[id]_route_actions_038rkvv.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_deployments_active_route_actions_0zgmbtm.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_deployments_route_actions_1f_eb99.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_github_app_callback_route_actions_0zg34iu.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_github_app_manifest_route_actions_1_2dhal.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_github_connect_route_actions_0qg3ppd.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_github_repos_route_actions_1usicza.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_github_route_actions_1zpdgoh.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_github_status_route_actions_1l82gyr.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_alerts_[id]_route_actions_0qosujn.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_alerts_route_actions_0n-m8tw.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_internal_add-project_route_actions_17kkmz8.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_process_route_actions_1rmvb83.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_projects_[id]_fix_route_actions_032q0u-.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_projects_[id]_logs_route_actions_13cplry.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_projects_[id]_memory_route_actions_0yr3pn7.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_projects_[id]_route_actions_0enie3k.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_projects_[id]_run_route_actions_0gwk_h3.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_projects_route_actions_1_3-j7x.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_monitor_stream_route_actions_1f22mb6.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_ports_route_actions_1epz24h.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_projects_[id]_domain-check_route_actions_1rj_zug.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_projects_[id]_env_route_actions_0ce2m54.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_projects_[id]_file-content_route_actions_19olxry.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_projects_[id]_files_route_actions_0ugi5a5.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_projects_[id]_route_actions_0xth066.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_projects_route_actions_0h5ne2f.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_sessions_[id]_generate-title_route_actions_0jzyt4m.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_sessions_[id]_messages_route_actions_1t3zmy6.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_sessions_[id]_route_actions_0ppm8x-.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_sessions_route_actions_1lwcye0.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_webhooks_github_[id]_route_actions_1g8u78o.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_api_webhooks_github_route_actions_1kcg086.js +3 -0
- package/dist/ray/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js +3 -0
- package/dist/ray/.next/server/chunks/node_modules_bcryptjs_index_0k82xso.js +3 -0
- package/dist/ray/.next/server/chunks/node_modules_next_1_14bcs._.js +3 -0
- package/dist/ray/.next/server/chunks/node_modules_next_1zdbrne._.js +10 -0
- package/dist/ray/.next/server/chunks/src_lib_1hgyysj._.js +3 -0
- package/dist/ray/.next/server/chunks/src_lib_auth_ts_1_aqh19._.js +3 -0
- package/dist/ray/.next/server/chunks/src_lib_cicd-sync_ts_098uczb._.js +3 -0
- package/dist/ray/.next/server/chunks/src_lib_github-app_ts_1b5tnv1._.js +3 -0
- package/dist/ray/.next/server/chunks/src_lib_port-manager_ts_18dpekm._.js +3 -0
- package/dist/ray/.next/server/chunks/src_lib_settings_ts_1mn2j0n._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[externals]_node_path_1pmhwj3._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__01g-0nc._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__038v-gh._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__04ekmqn._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0_l3wob._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0a2-efg._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0a_psut._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0e5tza8._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0gboso8._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0gz2but._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0hg5gib._.js +33 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0hn4xlv._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0i48bpf._.js +54 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0j1jv2k._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0n3n_r_._.js +4 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0t4_c67._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0w8myo0._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__0xtssj3._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__17v-f6m._.js +14 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1_h7ex8._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1_u_x8w._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1d4nq1g._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1fp1d8o._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1jnbbbr._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1k9qnxu._.js +33 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1mkuege._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1phe9fx._.js +4 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1q2--xw._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1ut539c._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1vs0leg._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[root-of-the-server]__1xd2-ld._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/[turbopack]_runtime.js +807 -0
- package/dist/ray/.next/server/chunks/ssr/_0d1f_2z._.js +23 -0
- package/dist/ray/.next/server/chunks/ssr/_1_4a0wv._.js +23 -0
- package/dist/ray/.next/server/chunks/ssr/_1kysctd._.js +19 -0
- package/dist/ray/.next/server/chunks/ssr/_1lh0agw._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_1qxsll8._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_1vk1his._.js +5 -0
- package/dist/ray/.next/server/chunks/ssr/_1vzw803._.js +23 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(auth)_login_page_actions_1jr42c1.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(auth)_register_page_actions_04l6fhn.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_chat_[sessionId]_page_actions_1rh_o0l.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_chat_page_actions_0d6mkhk.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_cicd_[id]_page_actions_1xfmr84.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_cicd_page_actions_1d03sqw.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_containers_[id]_page_actions_0doi5za.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_containers_page_actions_0_ww-ad.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_deployments_[id]_page_actions_20y9uey.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_deployments_page_actions_0fu3iro.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_github_page_actions_1tx_3r-.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_monitor_[id]_page_actions_003kpqa.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_monitor_page_actions_1ogpdj3.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_page_actions_081_9zj.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_projects_[id]_page_actions_0puqd88.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_projects_page_actions_20sdhto.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_(dashboard)_settings_page_actions_0sbdv_1.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(auth)_layout_tsx_1vfqhb4._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_cicd_[id]_page_tsx_12t87_j._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_cicd_page_tsx_0t0k1hz._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_containers_[id]_page_tsx_1yp5npr._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_containers_page_tsx_1kssro3._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_deployments_[id]_page_tsx_041ro4o._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_deployments_page_tsx_13f_f2f._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_github_page_tsx_1zoi9kw._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_monitor_[id]_page_tsx_086thg6._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_monitor_page_tsx_0z85uxa._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_projects_[id]_page_tsx_212l__t._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_projects_page_tsx_0h6o0mb._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/app_(dashboard)_settings_page_tsx_1hwv4x8._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_1wax83z._.js +33 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_@iconify_react_dist_iconify_1c0t5dh.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_@swc_helpers_cjs__interop_require_default_cjs_1ztp13a._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_0q-cedu._.js +151 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_0x3i8za._.js +131 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_1ri7jnr._.js +151 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_dist_019lm6c._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_dist_0ufhxsd._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_dist_1n3w9lb._.js +6 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_dist_1v8aef8._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +3 -0
- package/dist/ray/.next/server/chunks/ssr/src_components_ClientLayout_tsx_09h5za2._.js +4 -0
- package/dist/ray/.next/server/chunks/ssr/src_lib_auth_ts_11yt3pa._.js +3 -0
- package/dist/ray/.next/server/functions-config-manifest.json +54 -0
- package/dist/ray/.next/server/middleware-build-manifest.js +25 -0
- package/dist/ray/.next/server/middleware-manifest.json +6 -0
- package/dist/ray/.next/server/middleware.js +5 -0
- package/dist/ray/.next/server/next-font-manifest.js +1 -0
- package/dist/ray/.next/server/next-font-manifest.json +91 -0
- package/dist/ray/.next/server/pages/404.html +1 -0
- package/dist/ray/.next/server/pages/500.html +1 -0
- package/dist/ray/.next/server/pages-manifest.json +4 -0
- package/dist/ray/.next/server/prefetch-hints.json +63 -0
- package/dist/ray/.next/server/server-reference-manifest.js +1 -0
- package/dist/ray/.next/server/server-reference-manifest.json +22 -0
- package/dist/ray/.next/static/Hhx7q8xLPLV444ELbuAGL/_buildManifest.js +11 -0
- package/dist/ray/.next/static/Hhx7q8xLPLV444ELbuAGL/_clientMiddlewareManifest.js +26 -0
- package/dist/ray/.next/static/Hhx7q8xLPLV444ELbuAGL/_ssgManifest.js +1 -0
- package/dist/ray/.next/static/chunks/057zaow3ejc2s.js +3 -0
- package/dist/ray/.next/static/chunks/0cl8a5ke4ebd-.js +1 -0
- package/dist/ray/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
- package/dist/ray/.next/static/chunks/0edte-771726v.js +22 -0
- package/dist/ray/.next/static/chunks/0ehjiuuxbbhq9.js +1 -0
- package/dist/ray/.next/static/chunks/0h2boyvse-55_.js +1 -0
- package/dist/ray/.next/static/chunks/0lx_9ubdg54-q.js +1 -0
- package/dist/ray/.next/static/chunks/0mn5c-hbwvron.js +1 -0
- package/dist/ray/.next/static/chunks/11be91k_gj8bl.js +1 -0
- package/dist/ray/.next/static/chunks/1cndzqkdiiv5d.js +2 -0
- package/dist/ray/.next/static/chunks/1kcfbnumrv6bw.js +1 -0
- package/dist/ray/.next/static/chunks/1sor35imexzf_.js +52 -0
- package/dist/ray/.next/static/chunks/1w-bqsd916ol7.js +1 -0
- package/dist/ray/.next/static/chunks/1zvw3x1hotg92.js +1 -0
- package/dist/ray/.next/static/chunks/26bihah57sagr.js +1 -0
- package/dist/ray/.next/static/chunks/28gn02g-uwi5m.js +31 -0
- package/dist/ray/.next/static/chunks/2_mtnd40ksed5.js +1 -0
- package/dist/ray/.next/static/chunks/2kxrkwdtqtpn_.js +1 -0
- package/dist/ray/.next/static/chunks/2od_4s-_f7365.css +3 -0
- package/dist/ray/.next/static/chunks/2r4gozoz7uq_w.js +1 -0
- package/dist/ray/.next/static/chunks/2uf20jtnosvwz.js +1 -0
- package/dist/ray/.next/static/chunks/2uky4weffsyt6.js +1 -0
- package/dist/ray/.next/static/chunks/3069xhmif25yi.js +1 -0
- package/dist/ray/.next/static/chunks/36lykygisjvqk.js +1 -0
- package/dist/ray/.next/static/chunks/3ks7vxg9c78or.js +1 -0
- package/dist/ray/.next/static/chunks/3oo43sgxzkog4.js +1 -0
- package/dist/ray/.next/static/chunks/3rt1e672-3al9.js +1 -0
- package/dist/ray/.next/static/chunks/turbopack-1mudd67qgc20e.js +1 -0
- package/dist/ray/.next/static/media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2 +0 -0
- package/dist/ray/.next/static/media/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2 +0 -0
- package/dist/ray/.next/static/media/2c55a0e60120577a-s.0-dom-5bn10r2.woff2 +0 -0
- package/dist/ray/.next/static/media/49f942778c02d562-s.p.1xq-g4rc1ujk8.woff2 +0 -0
- package/dist/ray/.next/static/media/5476f68d60460930-s.2uwcyprjm3xu3.woff2 +0 -0
- package/dist/ray/.next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2 +0 -0
- package/dist/ray/.next/static/media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2 +0 -0
- package/dist/ray/.next/static/media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2 +0 -0
- package/dist/ray/.next/static/media/d3fb408517bcf18c-s.08pyjpi43yc3w.woff2 +0 -0
- package/dist/ray/.next/static/media/favicon.2b0rxwd35s4-e.ico +0 -0
- package/dist/ray/next.config.ts +8 -0
- package/dist/ray/node_modules/.prisma/client/default.js +5 -0
- package/dist/ray/node_modules/.prisma/client/index.js +433 -0
- package/dist/ray/node_modules/.prisma/client/package.json +139 -0
- package/dist/ray/node_modules/.prisma/client/query_compiler_fast_bg.js +2 -0
- package/dist/ray/node_modules/.prisma/client/query_compiler_fast_bg.wasm-base64.js +2 -0
- package/dist/ray/node_modules/@emnapi/runtime/dist/emnapi.cjs.js +1398 -0
- package/dist/ray/node_modules/@emnapi/runtime/dist/emnapi.cjs.min.js +1 -0
- package/dist/ray/node_modules/@emnapi/runtime/index.js +5 -0
- package/dist/ray/node_modules/@emnapi/runtime/package.json +48 -0
- package/dist/ray/node_modules/@img/colour/color.cjs +1596 -0
- package/dist/ray/node_modules/@img/colour/index.cjs +1 -0
- package/dist/ray/node_modules/@img/colour/package.json +58 -0
- package/dist/ray/node_modules/@img/sharp-darwin-arm64/index.cjs +2 -0
- package/dist/ray/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64-0.35.4.node +0 -0
- package/dist/ray/node_modules/@img/sharp-darwin-arm64/package.json +41 -0
- package/dist/ray/node_modules/@img/sharp-libvips-darwin-arm64/README.md +46 -0
- package/dist/ray/node_modules/@img/sharp-libvips-darwin-arm64/lib/glib-2.0/include/glibconfig.h +218 -0
- package/dist/ray/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +1 -0
- package/dist/ray/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.18.6.dylib +0 -0
- package/dist/ray/node_modules/@img/sharp-libvips-darwin-arm64/package.json +37 -0
- package/dist/ray/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +30 -0
- package/dist/ray/node_modules/@img/sharp-wasm32/index.cjs +1 -0
- package/dist/ray/node_modules/@img/sharp-wasm32/lib/sharp-wasm32-0.35.4.node.js +1 -0
- package/dist/ray/node_modules/@img/sharp-wasm32/lib/sharp-wasm32-0.35.4.node.wasm +0 -0
- package/dist/ray/node_modules/@img/sharp-wasm32/package.json +37 -0
- package/dist/ray/node_modules/@img/sharp-wasm32/versions.json +21 -0
- package/dist/ray/node_modules/@next/env/dist/index.js +1 -0
- package/dist/ray/node_modules/@next/env/package.json +36 -0
- package/dist/ray/node_modules/@prisma/client/default.js +3 -0
- package/dist/ray/node_modules/@prisma/client/package.json +276 -0
- package/dist/ray/node_modules/@prisma/client/runtime/client.js +101 -0
- package/dist/ray/node_modules/@prisma/client-runtime-utils/dist/index.js +2559 -0
- package/dist/ray/node_modules/@prisma/client-runtime-utils/package.json +39 -0
- package/dist/ray/node_modules/@swc/helpers/cjs/_interop_require_default.cjs +6 -0
- package/dist/ray/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs +38 -0
- package/dist/ray/node_modules/@swc/helpers/esm/_interop_require_default.js +4 -0
- package/dist/ray/node_modules/@swc/helpers/esm/_interop_require_wildcard.js +36 -0
- package/dist/ray/node_modules/@swc/helpers/package.json +705 -0
- package/dist/ray/node_modules/client-only/index.js +0 -0
- package/dist/ray/node_modules/client-only/package.json +19 -0
- package/dist/ray/node_modules/detect-libc/lib/detect-libc.js +313 -0
- package/dist/ray/node_modules/detect-libc/lib/elf.js +39 -0
- package/dist/ray/node_modules/detect-libc/lib/filesystem.js +51 -0
- package/dist/ray/node_modules/detect-libc/lib/process.js +24 -0
- package/dist/ray/node_modules/detect-libc/package.json +44 -0
- package/dist/ray/node_modules/next/dist/build/adapter/setup-node-env.external.js +15 -0
- package/dist/ray/node_modules/next/dist/build/define-env.js +263 -0
- package/dist/ray/node_modules/next/dist/build/duration-to-string.js +98 -0
- package/dist/ray/node_modules/next/dist/build/get-supported-browsers.js +38 -0
- package/dist/ray/node_modules/next/dist/build/next-config-ts/require-hook.js +85 -0
- package/dist/ray/node_modules/next/dist/build/next-config-ts/transpile-config.js +140 -0
- package/dist/ray/node_modules/next/dist/build/output/format.js +84 -0
- package/dist/ray/node_modules/next/dist/build/output/log.js +135 -0
- package/dist/ray/node_modules/next/dist/build/segment-config/app/app-segment-config.js +178 -0
- package/dist/ray/node_modules/next/dist/build/segment-config/app/app-segments.js +147 -0
- package/dist/ray/node_modules/next/dist/build/segment-config/app/collect-root-param-keys.js +52 -0
- package/dist/ray/node_modules/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js +137 -0
- package/dist/ray/node_modules/next/dist/build/static-paths/app.js +783 -0
- package/dist/ray/node_modules/next/dist/build/static-paths/pages.js +169 -0
- package/dist/ray/node_modules/next/dist/build/static-paths/utils.js +119 -0
- package/dist/ray/node_modules/next/dist/build/swc/helpers.js +15 -0
- package/dist/ray/node_modules/next/dist/build/swc/index.js +1409 -0
- package/dist/ray/node_modules/next/dist/build/swc/install-bindings.js +30 -0
- package/dist/ray/node_modules/next/dist/build/swc/jest-transformer.js +77 -0
- package/dist/ray/node_modules/next/dist/build/swc/loaderWorkerPool.js +40 -0
- package/dist/ray/node_modules/next/dist/build/swc/options.js +411 -0
- package/dist/ray/node_modules/next/dist/build/swc/types.js +6 -0
- package/dist/ray/node_modules/next/dist/build/utils.js +1258 -0
- package/dist/ray/node_modules/next/dist/cli/next-test.js +171 -0
- package/dist/ray/node_modules/next/dist/client/add-base-path.js +24 -0
- package/dist/ray/node_modules/next/dist/client/app-call-server.js +34 -0
- package/dist/ray/node_modules/next/dist/client/app-find-source-map-url.js +39 -0
- package/dist/ray/node_modules/next/dist/client/assign-location.js +29 -0
- package/dist/ray/node_modules/next/dist/client/components/app-router-announcer.js +78 -0
- package/dist/ray/node_modules/next/dist/client/components/app-router-headers.js +128 -0
- package/dist/ray/node_modules/next/dist/client/components/app-router-instance.js +407 -0
- package/dist/ray/node_modules/next/dist/client/components/app-router-utils.js +62 -0
- package/dist/ray/node_modules/next/dist/client/components/app-router.js +522 -0
- package/dist/ray/node_modules/next/dist/client/components/builtin/default.js +35 -0
- package/dist/ray/node_modules/next/dist/client/components/builtin/error-styles.js +165 -0
- package/dist/ray/node_modules/next/dist/client/components/builtin/global-error.js +100 -0
- package/dist/ray/node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js +52 -0
- package/dist/ray/node_modules/next/dist/client/components/error-boundary.js +148 -0
- package/dist/ray/node_modules/next/dist/client/components/errors/graceful-degrade-boundary.js +86 -0
- package/dist/ray/node_modules/next/dist/client/components/errors/root-error-boundary.js +41 -0
- package/dist/ray/node_modules/next/dist/client/components/forbidden.js +48 -0
- package/dist/ray/node_modules/next/dist/client/components/handle-isr-error.js +30 -0
- package/dist/ray/node_modules/next/dist/client/components/hooks-server-context.js +42 -0
- package/dist/ray/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js +125 -0
- package/dist/ray/node_modules/next/dist/client/components/http-access-fallback/http-access-fallback.js +72 -0
- package/dist/ray/node_modules/next/dist/client/components/instant-samples.js +134 -0
- package/dist/ray/node_modules/next/dist/client/components/is-next-router-error.js +23 -0
- package/dist/ray/node_modules/next/dist/client/components/links.js +316 -0
- package/dist/ray/node_modules/next/dist/client/components/match-segments.js +32 -0
- package/dist/ray/node_modules/next/dist/client/components/nav-failure-handler.js +61 -0
- package/dist/ray/node_modules/next/dist/client/components/navigation-devtools.js +126 -0
- package/dist/ray/node_modules/next/dist/client/components/navigation-dynamic-rendering.js +38 -0
- package/dist/ray/node_modules/next/dist/client/components/navigation-untracked.js +69 -0
- package/dist/ray/node_modules/next/dist/client/components/navigation.js +246 -0
- package/dist/ray/node_modules/next/dist/client/components/navigation.react-server.js +75 -0
- package/dist/ray/node_modules/next/dist/client/components/not-found.js +42 -0
- package/dist/ray/node_modules/next/dist/client/components/offline.js +172 -0
- package/dist/ray/node_modules/next/dist/client/components/readonly-url-search-params.js +46 -0
- package/dist/ray/node_modules/next/dist/client/components/redirect-boundary.js +107 -0
- package/dist/ray/node_modules/next/dist/client/components/redirect-error.js +43 -0
- package/dist/ray/node_modules/next/dist/client/components/redirect-status-code.js +24 -0
- package/dist/ray/node_modules/next/dist/client/components/redirect.js +91 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js +205 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js +21 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js +161 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js +32 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js +603 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js +70 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/ppr-navigations.js +1474 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/reducers/committed-state.js +49 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js +63 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/reducers/has-interception-route-in-current-tree.js +38 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js +29 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js +56 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +90 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js +75 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +349 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +67 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js +70 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/router-reducer.js +74 -0
- package/dist/ray/node_modules/next/dist/client/components/router-reducer/set-cache-busting-search-param.js +66 -0
- package/dist/ray/node_modules/next/dist/client/components/router-transition.js +135 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/bfcache.js +130 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/cache-key.js +56 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/cache-map.js +326 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/cache.js +2684 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/fetch.js +37 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/lru.js +152 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js +415 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/navigation.js +773 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/optimistic-routes.js +648 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/prefetch.js +32 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/scheduler.js +1770 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/types.js +84 -0
- package/dist/ray/node_modules/next/dist/client/components/segment-cache/vary-path.js +326 -0
- package/dist/ray/node_modules/next/dist/client/components/server-async-storage.js +43 -0
- package/dist/ray/node_modules/next/dist/client/components/static-generation-bailout.js +42 -0
- package/dist/ray/node_modules/next/dist/client/components/unauthorized.js +49 -0
- package/dist/ray/node_modules/next/dist/client/components/unrecognized-action-error.js +39 -0
- package/dist/ray/node_modules/next/dist/client/components/unresolved-thenable.js +23 -0
- package/dist/ray/node_modules/next/dist/client/components/unstable-rethrow.js +32 -0
- package/dist/ray/node_modules/next/dist/client/components/use-action-queue.js +148 -0
- package/dist/ray/node_modules/next/dist/client/components/use-offline.js +68 -0
- package/dist/ray/node_modules/next/dist/client/dev/debug-channel.js +428 -0
- package/dist/ray/node_modules/next/dist/client/flight-data-helpers.js +235 -0
- package/dist/ray/node_modules/next/dist/client/has-base-path.js +23 -0
- package/dist/ray/node_modules/next/dist/client/lib/console.js +177 -0
- package/dist/ray/node_modules/next/dist/client/lib/javascript-url.js +32 -0
- package/dist/ray/node_modules/next/dist/client/navigation-build-id.js +53 -0
- package/dist/ray/node_modules/next/dist/client/normalize-trailing-slash.js +37 -0
- package/dist/ray/node_modules/next/dist/client/remove-base-path.js +32 -0
- package/dist/ray/node_modules/next/dist/client/route-params.js +249 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js +339 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/cookies/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/ponyfill/index.js +46 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/ponyfill/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/primitives/abort-controller.js.text.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/primitives/console.js.text.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/primitives/events.js.text.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/primitives/index.js +5 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/primitives/load.js +18713 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/primitives/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/primitives/stream.js +44 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/primitives/timers.js.text.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@edge-runtime/primitives/url.js.text.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@hapi/accept/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@hapi/accept/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@napi-rs/triples/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@napi-rs/triples/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@opentelemetry/api/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@opentelemetry/api/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@vercel/detect-agent/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/@vercel/detect-agent/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/async-retry/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/async-retry/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/async-sema/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/async-sema/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/busboy/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/busboy/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/bytes/index.js +8 -0
- package/dist/ray/node_modules/next/dist/compiled/bytes/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/ci-info/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/ci-info/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/commander/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/commander/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/comment-json/index.js +7 -0
- package/dist/ray/node_modules/next/dist/compiled/comment-json/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/compression/index.js +58 -0
- package/dist/ray/node_modules/next/dist/compiled/compression/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/conf/index.js +3 -0
- package/dist/ray/node_modules/next/dist/compiled/conf/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/content-disposition/index.js +6 -0
- package/dist/ray/node_modules/next/dist/compiled/content-disposition/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/cookie/index.js +7 -0
- package/dist/ray/node_modules/next/dist/compiled/cookie/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/cross-spawn/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/cross-spawn/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/debug/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/debug/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/edge-runtime/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/edge-runtime/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/find-up/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/find-up/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/fresh/index.js +8 -0
- package/dist/ray/node_modules/next/dist/compiled/fresh/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/httpxy/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/httpxy/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/image-detector/detector.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/image-size/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/image-size/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/ipaddr.js/ipaddr.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/ipaddr.js/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/is-animated/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/is-animated/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/is-docker/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/is-docker/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/is-wsl/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/is-wsl/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/jsonwebtoken/index.js +11 -0
- package/dist/ray/node_modules/next/dist/compiled/jsonwebtoken/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/nanoid/index.cjs +1 -0
- package/dist/ray/node_modules/next/dist/compiled/nanoid/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +183 -0
- package/dist/ray/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +183 -0
- package/dist/ray/node_modules/next/dist/compiled/next-server/app-route-turbo.runtime.prod.js +6 -0
- package/dist/ray/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +20 -0
- package/dist/ray/node_modules/next/dist/compiled/p-limit/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/p-limit/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/p-queue/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/p-queue/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/path-browserify/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/path-browserify/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/path-to-regexp/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/path-to-regexp/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/picomatch/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/picomatch/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/react-is/cjs/react-is.development.js +133 -0
- package/dist/ray/node_modules/next/dist/compiled/react-is/cjs/react-is.production.js +130 -0
- package/dist/ray/node_modules/next/dist/compiled/react-is/index.js +7 -0
- package/dist/ray/node_modules/next/dist/compiled/react-is/package.json +26 -0
- package/dist/ray/node_modules/next/dist/compiled/regenerator-runtime/package.json +19 -0
- package/dist/ray/node_modules/next/dist/compiled/regenerator-runtime/runtime.js +729 -0
- package/dist/ray/node_modules/next/dist/compiled/semver/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/semver/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/send/index.js +70 -0
- package/dist/ray/node_modules/next/dist/compiled/send/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/source-map/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/source-map/source-map.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/stacktrace-parser/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/string-hash/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/string-hash/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/strip-ansi/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/strip-ansi/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/superstruct/index.cjs +1 -0
- package/dist/ray/node_modules/next/dist/compiled/superstruct/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/tar/index.min.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/tar/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/text-table/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/text-table/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/watchpack/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/watchpack/watchpack.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/write-file-atomic/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/write-file-atomic/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/ws/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/ws/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/zod/index.cjs +1 -0
- package/dist/ray/node_modules/next/dist/compiled/zod/package.json +1 -0
- package/dist/ray/node_modules/next/dist/compiled/zod-validation-error/index.js +1 -0
- package/dist/ray/node_modules/next/dist/compiled/zod-validation-error/package.json +1 -0
- package/dist/ray/node_modules/next/dist/experimental/testmode/context.js +57 -0
- package/dist/ray/node_modules/next/dist/experimental/testmode/fetch.js +150 -0
- package/dist/ray/node_modules/next/dist/experimental/testmode/httpget.js +33 -0
- package/dist/ray/node_modules/next/dist/experimental/testmode/server-edge.js +32 -0
- package/dist/ray/node_modules/next/dist/experimental/testmode/server.js +73 -0
- package/dist/ray/node_modules/next/dist/export/helpers/create-incremental-cache.js +61 -0
- package/dist/ray/node_modules/next/dist/lib/batcher.js +65 -0
- package/dist/ray/node_modules/next/dist/lib/build-custom-route.js +46 -0
- package/dist/ray/node_modules/next/dist/lib/bundler.js +168 -0
- package/dist/ray/node_modules/next/dist/lib/client-and-server-references.js +54 -0
- package/dist/ray/node_modules/next/dist/lib/coalesced-function.js +39 -0
- package/dist/ray/node_modules/next/dist/lib/compile-error.js +14 -0
- package/dist/ray/node_modules/next/dist/lib/constants.js +420 -0
- package/dist/ray/node_modules/next/dist/lib/create-client-router-filter.js +83 -0
- package/dist/ray/node_modules/next/dist/lib/default-transpiled-packages.json +1 -0
- package/dist/ray/node_modules/next/dist/lib/detached-promise.js +32 -0
- package/dist/ray/node_modules/next/dist/lib/detect-typo.js +51 -0
- package/dist/ray/node_modules/next/dist/lib/download-swc.js +183 -0
- package/dist/ray/node_modules/next/dist/lib/error-telemetry-utils.js +42 -0
- package/dist/ray/node_modules/next/dist/lib/fallback.js +100 -0
- package/dist/ray/node_modules/next/dist/lib/file-exists.js +53 -0
- package/dist/ray/node_modules/next/dist/lib/find-config.js +102 -0
- package/dist/ray/node_modules/next/dist/lib/find-pages-dir.js +65 -0
- package/dist/ray/node_modules/next/dist/lib/find-root.js +280 -0
- package/dist/ray/node_modules/next/dist/lib/format-cli-help-output.js +84 -0
- package/dist/ray/node_modules/next/dist/lib/format-dynamic-import-path.js +43 -0
- package/dist/ray/node_modules/next/dist/lib/format-server-error.js +75 -0
- package/dist/ray/node_modules/next/dist/lib/framework/boundary-components.js +62 -0
- package/dist/ray/node_modules/next/dist/lib/framework/boundary-constants.js +36 -0
- package/dist/ray/node_modules/next/dist/lib/fs/rename.js +87 -0
- package/dist/ray/node_modules/next/dist/lib/fs/write-atomic.js +28 -0
- package/dist/ray/node_modules/next/dist/lib/generate-interception-routes-rewrites.js +52 -0
- package/dist/ray/node_modules/next/dist/lib/get-files-in-dir.js +33 -0
- package/dist/ray/node_modules/next/dist/lib/get-network-host.js +44 -0
- package/dist/ray/node_modules/next/dist/lib/get-package-version.js +118 -0
- package/dist/ray/node_modules/next/dist/lib/get-project-dir.js +51 -0
- package/dist/ray/node_modules/next/dist/lib/git-worktree.js +74 -0
- package/dist/ray/node_modules/next/dist/lib/has-necessary-dependencies.js +49 -0
- package/dist/ray/node_modules/next/dist/lib/helpers/get-cache-directory.js +66 -0
- package/dist/ray/node_modules/next/dist/lib/helpers/get-npx-command.js +29 -0
- package/dist/ray/node_modules/next/dist/lib/helpers/get-online.js +50 -0
- package/dist/ray/node_modules/next/dist/lib/helpers/get-pkg-manager.js +65 -0
- package/dist/ray/node_modules/next/dist/lib/helpers/get-registry.js +45 -0
- package/dist/ray/node_modules/next/dist/lib/helpers/get-reserved-port.js +116 -0
- package/dist/ray/node_modules/next/dist/lib/helpers/git.js +59 -0
- package/dist/ray/node_modules/next/dist/lib/helpers/install.js +83 -0
- package/dist/ray/node_modules/next/dist/lib/import-next-warning.js +50 -0
- package/dist/ray/node_modules/next/dist/lib/inline-static-env.js +112 -0
- package/dist/ray/node_modules/next/dist/lib/install-dependencies.js +40 -0
- package/dist/ray/node_modules/next/dist/lib/interop-default.js +16 -0
- package/dist/ray/node_modules/next/dist/lib/is-api-route.js +15 -0
- package/dist/ray/node_modules/next/dist/lib/is-app-page-route.js +15 -0
- package/dist/ray/node_modules/next/dist/lib/is-app-route-route.js +15 -0
- package/dist/ray/node_modules/next/dist/lib/is-edge-runtime.js +16 -0
- package/dist/ray/node_modules/next/dist/lib/is-error.js +78 -0
- package/dist/ray/node_modules/next/dist/lib/is-interception-route-rewrite.js +18 -0
- package/dist/ray/node_modules/next/dist/lib/is-internal-component.js +36 -0
- package/dist/ray/node_modules/next/dist/lib/is-serializable-props.js +111 -0
- package/dist/ray/node_modules/next/dist/lib/known-edge-safe-packages.json +1 -0
- package/dist/ray/node_modules/next/dist/lib/load-custom-routes.js +594 -0
- package/dist/ray/node_modules/next/dist/lib/memory/gc-observer.js +53 -0
- package/dist/ray/node_modules/next/dist/lib/memory/shutdown.js +29 -0
- package/dist/ray/node_modules/next/dist/lib/memory/startup.js +47 -0
- package/dist/ray/node_modules/next/dist/lib/memory/trace.js +109 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/constants.js +40 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/default-metadata.js +82 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/generate/icon-mark.js +22 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/generate/utils.js +52 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/get-metadata-route.js +162 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/is-metadata-route.js +221 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/metadata-context.js +18 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/metadata.js +1660 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/resolve-metadata.js +884 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/resolvers/resolve-basics.js +232 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/resolvers/resolve-icons.js +56 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/resolvers/resolve-opengraph.js +199 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/resolvers/resolve-title.js +40 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/resolvers/resolve-url.js +135 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/types/alternative-urls-types.js +7 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/types/extra-types.js +9 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/types/icons.js +6 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/types/manifest-types.js +6 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/types/metadata-interface.js +18 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/types/metadata-types.js +10 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/types/opengraph-types.js +6 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/types/resolvers.js +6 -0
- package/dist/ray/node_modules/next/dist/lib/metadata/types/twitter-types.js +7 -0
- package/dist/ray/node_modules/next/dist/lib/mime-type.js +20 -0
- package/dist/ray/node_modules/next/dist/lib/mkcert.js +204 -0
- package/dist/ray/node_modules/next/dist/lib/multi-file-writer.js +75 -0
- package/dist/ray/node_modules/next/dist/lib/needs-experimental-react.js +16 -0
- package/dist/ray/node_modules/next/dist/lib/non-nullable.js +15 -0
- package/dist/ray/node_modules/next/dist/lib/normalize-path.js +21 -0
- package/dist/ray/node_modules/next/dist/lib/oxford-comma-list.js +15 -0
- package/dist/ray/node_modules/next/dist/lib/page-types.js +18 -0
- package/dist/ray/node_modules/next/dist/lib/patch-incorrect-lockfile.js +185 -0
- package/dist/ray/node_modules/next/dist/lib/pick.js +19 -0
- package/dist/ray/node_modules/next/dist/lib/picocolors.js +177 -0
- package/dist/ray/node_modules/next/dist/lib/pretty-bytes.js +74 -0
- package/dist/ray/node_modules/next/dist/lib/profiles-dir.js +45 -0
- package/dist/ray/node_modules/next/dist/lib/realpath.js +20 -0
- package/dist/ray/node_modules/next/dist/lib/recursive-copy.js +76 -0
- package/dist/ray/node_modules/next/dist/lib/recursive-delete.js +137 -0
- package/dist/ray/node_modules/next/dist/lib/recursive-readdir.js +124 -0
- package/dist/ray/node_modules/next/dist/lib/redirect-status.js +46 -0
- package/dist/ray/node_modules/next/dist/lib/require-instrumentation-client.js +32 -0
- package/dist/ray/node_modules/next/dist/lib/resolve-build-paths.js +182 -0
- package/dist/ray/node_modules/next/dist/lib/resolve-from.js +65 -0
- package/dist/ray/node_modules/next/dist/lib/route-pattern-normalizer.js +107 -0
- package/dist/ray/node_modules/next/dist/lib/scheduler.js +64 -0
- package/dist/ray/node_modules/next/dist/lib/semver-noop.js +18 -0
- package/dist/ray/node_modules/next/dist/lib/server-external-packages.jsonc +103 -0
- package/dist/ray/node_modules/next/dist/lib/setup-exception-listeners.js +11 -0
- package/dist/ray/node_modules/next/dist/lib/static-env.js +92 -0
- package/dist/ray/node_modules/next/dist/lib/try-to-parse-path.js +67 -0
- package/dist/ray/node_modules/next/dist/lib/turbopack-cache-seed.js +171 -0
- package/dist/ray/node_modules/next/dist/lib/turbopack-warning.js +185 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/diagnosticFormatter.js +243 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/getTypeScriptConfiguration.js +73 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/getTypeScriptIntent.js +52 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/loadTsConfig.js +181 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/missingDependencyError.js +26 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/runTypeCheck.js +149 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/runTypeCheckCli.js +53 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/runTypeScriptCli.js +256 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/type-paths.js +51 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/writeAppTypeDeclarations.js +77 -0
- package/dist/ray/node_modules/next/dist/lib/typescript/writeConfigurationDefaults.js +395 -0
- package/dist/ray/node_modules/next/dist/lib/url.js +75 -0
- package/dist/ray/node_modules/next/dist/lib/verify-partytown-setup.js +104 -0
- package/dist/ray/node_modules/next/dist/lib/verify-root-layout.js +165 -0
- package/dist/ray/node_modules/next/dist/lib/verify-typescript-setup.js +269 -0
- package/dist/ray/node_modules/next/dist/lib/wait.js +19 -0
- package/dist/ray/node_modules/next/dist/lib/with-promise-cache.js +24 -0
- package/dist/ray/node_modules/next/dist/lib/worker.js +234 -0
- package/dist/ray/node_modules/next/dist/server/ReactDOMServerPages.js +16 -0
- package/dist/ray/node_modules/next/dist/server/accept-header.js +132 -0
- package/dist/ray/node_modules/next/dist/server/after/after-context.js +178 -0
- package/dist/ray/node_modules/next/dist/server/after/after.js +28 -0
- package/dist/ray/node_modules/next/dist/server/after/awaiter.js +74 -0
- package/dist/ray/node_modules/next/dist/server/after/builtin-request-context.js +38 -0
- package/dist/ray/node_modules/next/dist/server/after/index.js +21 -0
- package/dist/ray/node_modules/next/dist/server/after/run-with-after.js +35 -0
- package/dist/ray/node_modules/next/dist/server/api-utils/get-cookie-parser.js +22 -0
- package/dist/ray/node_modules/next/dist/server/api-utils/index.js +217 -0
- package/dist/ray/node_modules/next/dist/server/api-utils/node/api-resolver.js +395 -0
- package/dist/ray/node_modules/next/dist/server/api-utils/node/parse-body.js +79 -0
- package/dist/ray/node_modules/next/dist/server/api-utils/node/try-get-preview-data.js +89 -0
- package/dist/ray/node_modules/next/dist/server/api-utils/web.js +17 -0
- package/dist/ray/node_modules/next/dist/server/app-render/action-async-storage-instance.js +14 -0
- package/dist/ray/node_modules/next/dist/server/app-render/action-async-storage.external.js +13 -0
- package/dist/ray/node_modules/next/dist/server/app-render/action-handler.js +1125 -0
- package/dist/ray/node_modules/next/dist/server/app-render/after-task-async-storage-instance.js +14 -0
- package/dist/ray/node_modules/next/dist/server/app-render/after-task-async-storage.external.js +13 -0
- package/dist/ray/node_modules/next/dist/server/app-render/app-render-prerender-utils.js +332 -0
- package/dist/ray/node_modules/next/dist/server/app-render/app-render-render-utils.js +76 -0
- package/dist/ray/node_modules/next/dist/server/app-render/app-render-scheduling.js +188 -0
- package/dist/ray/node_modules/next/dist/server/app-render/app-render.js +6496 -0
- package/dist/ray/node_modules/next/dist/server/app-render/async-local-storage.js +76 -0
- package/dist/ray/node_modules/next/dist/server/app-render/blocking-route-messages.js +181 -0
- package/dist/ray/node_modules/next/dist/server/app-render/cache-signal.js +181 -0
- package/dist/ray/node_modules/next/dist/server/app-render/collect-segment-data.js +937 -0
- package/dist/ray/node_modules/next/dist/server/app-render/console-async-storage-instance.js +14 -0
- package/dist/ray/node_modules/next/dist/server/app-render/console-async-storage.external.js +13 -0
- package/dist/ray/node_modules/next/dist/server/app-render/create-component-styles-and-scripts.js +38 -0
- package/dist/ray/node_modules/next/dist/server/app-render/create-component-tree.js +806 -0
- package/dist/ray/node_modules/next/dist/server/app-render/create-error-handler.js +190 -0
- package/dist/ray/node_modules/next/dist/server/app-render/create-flight-router-state-from-loader-tree.js +154 -0
- package/dist/ray/node_modules/next/dist/server/app-render/csrf-protection.js +86 -0
- package/dist/ray/node_modules/next/dist/server/app-render/debug-channel-server.js +47 -0
- package/dist/ray/node_modules/next/dist/server/app-render/debug-channel-server.node.js +60 -0
- package/dist/ray/node_modules/next/dist/server/app-render/debug-channel-server.web.js +60 -0
- package/dist/ray/node_modules/next/dist/server/app-render/dev-validation-error-delivery.js +37 -0
- package/dist/ray/node_modules/next/dist/server/app-render/dev-validation-events.js +26 -0
- package/dist/ray/node_modules/next/dist/server/app-render/dev-validation-scheduler.js +87 -0
- package/dist/ray/node_modules/next/dist/server/app-render/dev-validation-worker-globals.js +41 -0
- package/dist/ray/node_modules/next/dist/server/app-render/dev-validation-worker-snapshot.js +79 -0
- package/dist/ray/node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js +14 -0
- package/dist/ray/node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js +13 -0
- package/dist/ray/node_modules/next/dist/server/app-render/dynamic-rendering.js +1201 -0
- package/dist/ray/node_modules/next/dist/server/app-render/encryption-utils-server.js +114 -0
- package/dist/ray/node_modules/next/dist/server/app-render/encryption-utils.js +93 -0
- package/dist/ray/node_modules/next/dist/server/app-render/encryption.js +261 -0
- package/dist/ray/node_modules/next/dist/server/app-render/entry-base.js +265 -0
- package/dist/ray/node_modules/next/dist/server/app-render/flight-render-result.js +28 -0
- package/dist/ray/node_modules/next/dist/server/app-render/get-asset-query-string.js +29 -0
- package/dist/ray/node_modules/next/dist/server/app-render/get-css-inlined-link-tags.js +45 -0
- package/dist/ray/node_modules/next/dist/server/app-render/get-layer-assets.js +69 -0
- package/dist/ray/node_modules/next/dist/server/app-render/get-preloadable-fonts.js +39 -0
- package/dist/ray/node_modules/next/dist/server/app-render/get-script-nonce-from-header.js +32 -0
- package/dist/ray/node_modules/next/dist/server/app-render/get-short-dynamic-param-type.js +25 -0
- package/dist/ray/node_modules/next/dist/server/app-render/has-loading-component-in-tree.js +19 -0
- package/dist/ray/node_modules/next/dist/server/app-render/instant-test-bootstrap.js +20 -0
- package/dist/ray/node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js +31 -0
- package/dist/ray/node_modules/next/dist/server/app-render/instant-validation/boundary-impl.js +127 -0
- package/dist/ray/node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js +38 -0
- package/dist/ray/node_modules/next/dist/server/app-render/instant-validation/instant-config.js +241 -0
- package/dist/ray/node_modules/next/dist/server/app-render/instant-validation/instant-samples.js +432 -0
- package/dist/ray/node_modules/next/dist/server/app-render/instant-validation/instant-validation-error.js +33 -0
- package/dist/ray/node_modules/next/dist/server/app-render/instant-validation/instant-validation.js +934 -0
- package/dist/ray/node_modules/next/dist/server/app-render/instant-validation/stream-utils.js +96 -0
- package/dist/ray/node_modules/next/dist/server/app-render/interop-default.js +17 -0
- package/dist/ray/node_modules/next/dist/server/app-render/make-get-server-inserted-html.js +91 -0
- package/dist/ray/node_modules/next/dist/server/app-render/manifests-singleton.js +327 -0
- package/dist/ray/node_modules/next/dist/server/app-render/metadata-insertion/create-server-inserted-metadata.js +29 -0
- package/dist/ray/node_modules/next/dist/server/app-render/module-loading/instrument-module-getter.js +32 -0
- package/dist/ray/node_modules/next/dist/server/app-render/module-loading/track-dynamic-import.js +57 -0
- package/dist/ray/node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js +32 -0
- package/dist/ray/node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js +62 -0
- package/dist/ray/node_modules/next/dist/server/app-render/parse-and-validate-flight-router-state.js +49 -0
- package/dist/ray/node_modules/next/dist/server/app-render/postponed-state.js +230 -0
- package/dist/ray/node_modules/next/dist/server/app-render/prospective-render-utils.js +74 -0
- package/dist/ray/node_modules/next/dist/server/app-render/react-large-shell-error.js +17 -0
- package/dist/ray/node_modules/next/dist/server/app-render/react-server.node.js +39 -0
- package/dist/ray/node_modules/next/dist/server/app-render/render-css-resource.js +57 -0
- package/dist/ray/node_modules/next/dist/server/app-render/required-scripts.js +76 -0
- package/dist/ray/node_modules/next/dist/server/app-render/rsc/postpone.js +18 -0
- package/dist/ray/node_modules/next/dist/server/app-render/rsc/preloads.js +74 -0
- package/dist/ray/node_modules/next/dist/server/app-render/rsc/taint.js +79 -0
- package/dist/ray/node_modules/next/dist/server/app-render/segment-explorer-path.js +128 -0
- package/dist/ray/node_modules/next/dist/server/app-render/server-inserted-html.js +77 -0
- package/dist/ray/node_modules/next/dist/server/app-render/staged-rendering.js +324 -0
- package/dist/ray/node_modules/next/dist/server/app-render/stale-time.js +101 -0
- package/dist/ray/node_modules/next/dist/server/app-render/stream-ops.js +155 -0
- package/dist/ray/node_modules/next/dist/server/app-render/stream-ops.node.js +842 -0
- package/dist/ray/node_modules/next/dist/server/app-render/stream-ops.web.js +249 -0
- package/dist/ray/node_modules/next/dist/server/app-render/strip-flight-headers.js +18 -0
- package/dist/ray/node_modules/next/dist/server/app-render/sync-io-messages.js +67 -0
- package/dist/ray/node_modules/next/dist/server/app-render/types.js +65 -0
- package/dist/ray/node_modules/next/dist/server/app-render/use-flight-response.js +217 -0
- package/dist/ray/node_modules/next/dist/server/app-render/vary-params.js +261 -0
- package/dist/ray/node_modules/next/dist/server/app-render/wait-for-response.js +36 -0
- package/dist/ray/node_modules/next/dist/server/app-render/walk-tree-with-flight-router-state.js +237 -0
- package/dist/ray/node_modules/next/dist/server/app-render/work-async-storage-instance.js +14 -0
- package/dist/ray/node_modules/next/dist/server/app-render/work-async-storage.external.js +13 -0
- package/dist/ray/node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js +14 -0
- package/dist/ray/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js +250 -0
- package/dist/ray/node_modules/next/dist/server/async-storage/draft-mode-provider.js +62 -0
- package/dist/ray/node_modules/next/dist/server/async-storage/request-store.js +201 -0
- package/dist/ray/node_modules/next/dist/server/async-storage/with-store.js +6 -0
- package/dist/ray/node_modules/next/dist/server/async-storage/work-store.js +98 -0
- package/dist/ray/node_modules/next/dist/server/base-http/helpers.js +36 -0
- package/dist/ray/node_modules/next/dist/server/base-http/index.js +54 -0
- package/dist/ray/node_modules/next/dist/server/base-http/node.js +147 -0
- package/dist/ray/node_modules/next/dist/server/base-http/web.js +124 -0
- package/dist/ray/node_modules/next/dist/server/base-server.js +1957 -0
- package/dist/ray/node_modules/next/dist/server/body-streams.js +122 -0
- package/dist/ray/node_modules/next/dist/server/cache-dir.js +26 -0
- package/dist/ray/node_modules/next/dist/server/capsize-font-metrics.json +181516 -0
- package/dist/ray/node_modules/next/dist/server/ci-info.js +41 -0
- package/dist/ray/node_modules/next/dist/server/client-component-renderer-logger.js +70 -0
- package/dist/ray/node_modules/next/dist/server/config-schema.js +800 -0
- package/dist/ray/node_modules/next/dist/server/config-shared.js +395 -0
- package/dist/ray/node_modules/next/dist/server/config-utils.js +185 -0
- package/dist/ray/node_modules/next/dist/server/config.js +1836 -0
- package/dist/ray/node_modules/next/dist/server/create-deduped-by-callsite-server-error-logger.js +96 -0
- package/dist/ray/node_modules/next/dist/server/crypto-utils.js +70 -0
- package/dist/ray/node_modules/next/dist/server/dev/browser-logs/file-logger.js +186 -0
- package/dist/ray/node_modules/next/dist/server/dev/browser-logs/receive-logs.js +610 -0
- package/dist/ray/node_modules/next/dist/server/dev/browser-logs/source-map.js +222 -0
- package/dist/ray/node_modules/next/dist/server/dev/debug-channel.js +112 -0
- package/dist/ray/node_modules/next/dist/server/dev/dev-indicator-server-state.js +15 -0
- package/dist/ray/node_modules/next/dist/server/dev/dev-validation-worker-pool.js +232 -0
- package/dist/ray/node_modules/next/dist/server/dev/dev-validation-worker.js +308 -0
- package/dist/ray/node_modules/next/dist/server/dev/get-source-map-from-file.js +100 -0
- package/dist/ray/node_modules/next/dist/server/dev/hot-middleware.js +276 -0
- package/dist/ray/node_modules/next/dist/server/dev/hot-reloader-rspack.js +171 -0
- package/dist/ray/node_modules/next/dist/server/dev/hot-reloader-shared-utils.js +56 -0
- package/dist/ray/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +1756 -0
- package/dist/ray/node_modules/next/dist/server/dev/hot-reloader-types.js +60 -0
- package/dist/ray/node_modules/next/dist/server/dev/hot-reloader-webpack.js +1380 -0
- package/dist/ray/node_modules/next/dist/server/dev/log-requests.js +152 -0
- package/dist/ray/node_modules/next/dist/server/dev/messages.js +74 -0
- package/dist/ray/node_modules/next/dist/server/dev/middleware-turbopack.js +422 -0
- package/dist/ray/node_modules/next/dist/server/dev/middleware-webpack.js +495 -0
- package/dist/ray/node_modules/next/dist/server/dev/node-stack-frames.js +81 -0
- package/dist/ray/node_modules/next/dist/server/dev/on-demand-entry-handler.js +773 -0
- package/dist/ray/node_modules/next/dist/server/dev/parse-version-info.js +108 -0
- package/dist/ray/node_modules/next/dist/server/dev/require-cache.js +109 -0
- package/dist/ray/node_modules/next/dist/server/dev/serialized-errors.js +67 -0
- package/dist/ray/node_modules/next/dist/server/dev/server-action-logger.js +37 -0
- package/dist/ray/node_modules/next/dist/server/dev/static-paths-worker.js +106 -0
- package/dist/ray/node_modules/next/dist/server/dev/turbopack-utils.js +727 -0
- package/dist/ray/node_modules/next/dist/server/dev/use-cache-probe-pool.js +177 -0
- package/dist/ray/node_modules/next/dist/server/dev/use-cache-probe-worker.js +180 -0
- package/dist/ray/node_modules/next/dist/server/dynamic-rendering-utils.js +285 -0
- package/dist/ray/node_modules/next/dist/server/font-utils.js +43 -0
- package/dist/ray/node_modules/next/dist/server/get-app-route-from-entrypoint.js +30 -0
- package/dist/ray/node_modules/next/dist/server/get-page-files.js +40 -0
- package/dist/ray/node_modules/next/dist/server/get-route-from-entrypoint.js +35 -0
- package/dist/ray/node_modules/next/dist/server/image-optimizer.js +1248 -0
- package/dist/ray/node_modules/next/dist/server/instrumentation/types.js +6 -0
- package/dist/ray/node_modules/next/dist/server/instrumentation/utils.js +21 -0
- package/dist/ray/node_modules/next/dist/server/internal-utils.js +39 -0
- package/dist/ray/node_modules/next/dist/server/is-private-ip.js +36 -0
- package/dist/ray/node_modules/next/dist/server/lib/app-dir-module.js +59 -0
- package/dist/ray/node_modules/next/dist/server/lib/app-info-log.js +135 -0
- package/dist/ray/node_modules/next/dist/server/lib/async-callback-set.js +29 -0
- package/dist/ray/node_modules/next/dist/server/lib/cache-control.js +22 -0
- package/dist/ray/node_modules/next/dist/server/lib/cache-handlers/default.external.js +18 -0
- package/dist/ray/node_modules/next/dist/server/lib/cache-handlers/default.js +196 -0
- package/dist/ray/node_modules/next/dist/server/lib/cache-handlers/types.js +8 -0
- package/dist/ray/node_modules/next/dist/server/lib/chrome-devtools-workspace.js +116 -0
- package/dist/ray/node_modules/next/dist/server/lib/clone-response.js +77 -0
- package/dist/ray/node_modules/next/dist/server/lib/cpu-profile.js +56 -0
- package/dist/ray/node_modules/next/dist/server/lib/decode-query-path-parameter.js +26 -0
- package/dist/ray/node_modules/next/dist/server/lib/dedupe-fetch.js +163 -0
- package/dist/ray/node_modules/next/dist/server/lib/dev-bundler-service.js +110 -0
- package/dist/ray/node_modules/next/dist/server/lib/disk-lru-cache.external.js +57 -0
- package/dist/ray/node_modules/next/dist/server/lib/encode-header-safe.js +44 -0
- package/dist/ray/node_modules/next/dist/server/lib/etag.js +56 -0
- package/dist/ray/node_modules/next/dist/server/lib/experimental/create-env-definitions.js +48 -0
- package/dist/ray/node_modules/next/dist/server/lib/experimental/ppr.js +47 -0
- package/dist/ray/node_modules/next/dist/server/lib/find-page-file.js +147 -0
- package/dist/ray/node_modules/next/dist/server/lib/fix-mojibake.js +25 -0
- package/dist/ray/node_modules/next/dist/server/lib/format-hostname.js +16 -0
- package/dist/ray/node_modules/next/dist/server/lib/generate-agent-files.js +180 -0
- package/dist/ray/node_modules/next/dist/server/lib/i18n-provider.js +129 -0
- package/dist/ray/node_modules/next/dist/server/lib/implicit-tags.js +87 -0
- package/dist/ray/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +348 -0
- package/dist/ray/node_modules/next/dist/server/lib/incremental-cache/index.js +547 -0
- package/dist/ray/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +59 -0
- package/dist/ray/node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js +73 -0
- package/dist/ray/node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js +55 -0
- package/dist/ray/node_modules/next/dist/server/lib/install-code-frame.js +22 -0
- package/dist/ray/node_modules/next/dist/server/lib/is-ipv6.js +41 -0
- package/dist/ray/node_modules/next/dist/server/lib/is-non-html-sec-fetch-dest.js +38 -0
- package/dist/ray/node_modules/next/dist/server/lib/is-rsc-request.js +18 -0
- package/dist/ray/node_modules/next/dist/server/lib/lazy-module.js +80 -0
- package/dist/ray/node_modules/next/dist/server/lib/lazy-result.js +46 -0
- package/dist/ray/node_modules/next/dist/server/lib/lru-cache.js +191 -0
- package/dist/ray/node_modules/next/dist/server/lib/match-next-data-pathname.js +18 -0
- package/dist/ray/node_modules/next/dist/server/lib/mock-request.js +441 -0
- package/dist/ray/node_modules/next/dist/server/lib/module-loader/module-loader.js +8 -0
- package/dist/ray/node_modules/next/dist/server/lib/module-loader/node-module-loader.js +25 -0
- package/dist/ray/node_modules/next/dist/server/lib/module-loader/route-module-loader.js +26 -0
- package/dist/ray/node_modules/next/dist/server/lib/node-fs-methods.js +28 -0
- package/dist/ray/node_modules/next/dist/server/lib/params-utils.js +70 -0
- package/dist/ray/node_modules/next/dist/server/lib/parse-stack.js +46 -0
- package/dist/ray/node_modules/next/dist/server/lib/patch-fetch.js +1027 -0
- package/dist/ray/node_modules/next/dist/server/lib/patch-set-header.js +45 -0
- package/dist/ray/node_modules/next/dist/server/lib/postponed-request-body.js +64 -0
- package/dist/ray/node_modules/next/dist/server/lib/release-compression-stream.js +24 -0
- package/dist/ray/node_modules/next/dist/server/lib/render-server.js +157 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-server.js +756 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/block-cross-site-dev.js +110 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/build-data-route.js +48 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/build-prefetch-segment-data-route.js +50 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/cache-life-type-utils.js +212 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/decode-path-params.js +42 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/filesystem.js +612 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js +89 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js +114 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/is-postpone.js +16 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/proxy-request.js +128 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/resolve-routes.js +646 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/root-params-type-utils.js +61 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/route-types-utils.js +326 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/router-server-context.js +26 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/typegen.js +892 -0
- package/dist/ray/node_modules/next/dist/server/lib/router-utils/types.js +6 -0
- package/dist/ray/node_modules/next/dist/server/lib/server-action-request-meta.js +53 -0
- package/dist/ray/node_modules/next/dist/server/lib/server-ipc/utils.js +83 -0
- package/dist/ray/node_modules/next/dist/server/lib/source-maps.js +241 -0
- package/dist/ray/node_modules/next/dist/server/lib/start-server.js +540 -0
- package/dist/ray/node_modules/next/dist/server/lib/streaming-metadata.js +27 -0
- package/dist/ray/node_modules/next/dist/server/lib/to-route.js +37 -0
- package/dist/ray/node_modules/next/dist/server/lib/trace/constants.js +208 -0
- package/dist/ray/node_modules/next/dist/server/lib/trace/local-span-recorder.js +385 -0
- package/dist/ray/node_modules/next/dist/server/lib/trace/request-insights-identity.js +39 -0
- package/dist/ray/node_modules/next/dist/server/lib/trace/request-insights.js +308 -0
- package/dist/ray/node_modules/next/dist/server/lib/trace/span-store.js +69 -0
- package/dist/ray/node_modules/next/dist/server/lib/trace/tracer.js +392 -0
- package/dist/ray/node_modules/next/dist/server/lib/trace/utils.js +16 -0
- package/dist/ray/node_modules/next/dist/server/lib/types.js +6 -0
- package/dist/ray/node_modules/next/dist/server/lib/utils.js +292 -0
- package/dist/ray/node_modules/next/dist/server/lib/worker-utils.js +36 -0
- package/dist/ray/node_modules/next/dist/server/load-components.js +185 -0
- package/dist/ray/node_modules/next/dist/server/load-default-error-components.js +41 -0
- package/dist/ray/node_modules/next/dist/server/load-manifest.external.js +117 -0
- package/dist/ray/node_modules/next/dist/server/match-bundle.js +25 -0
- package/dist/ray/node_modules/next/dist/server/mcp/get-mcp-middleware.js +49 -0
- package/dist/ray/node_modules/next/dist/server/mcp/get-or-create-mcp-server.js +51 -0
- package/dist/ray/node_modules/next/dist/server/mcp/mcp-telemetry-tracker.js +82 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/compile-route.js +86 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/get-compilation-issues.js +68 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/get-errors.js +114 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/get-logs.js +67 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/get-page-metadata.js +188 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/get-project-metadata.js +59 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/get-request-insights.js +57 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/get-routes.js +136 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/get-server-action-by-id.js +121 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/next-instance-error-state.js +31 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/utils/browser-communication.js +90 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/utils/format-compilation-issues.js +72 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/utils/format-errors.js +137 -0
- package/dist/ray/node_modules/next/dist/server/mcp/tools/utils/resolve-path-to-route.js +49 -0
- package/dist/ray/node_modules/next/dist/server/next-server.js +1443 -0
- package/dist/ray/node_modules/next/dist/server/next-typescript.js +13 -0
- package/dist/ray/node_modules/next/dist/server/next.js +485 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-baseline.js +25 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/console-dim.external.js +301 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/console-exit.js +49 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/console-file.js +56 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/date.js +52 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/error-inspect.js +8 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js +577 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/global-behaviors.js +33 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/io-utils.js +102 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/node-crypto.js +103 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/process-error-handlers.js +170 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/random.js +28 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js +518 -0
- package/dist/ray/node_modules/next/dist/server/node-environment-extensions/web-crypto.js +45 -0
- package/dist/ray/node_modules/next/dist/server/node-environment.js +19 -0
- package/dist/ray/node_modules/next/dist/server/node-polyfill-crypto.js +21 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/absolute-filename-normalizer.js +33 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/built/app/app-bundle-path-normalizer.js +54 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/built/app/app-filename-normalizer.js +22 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/built/app/app-page-normalizer.js +40 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/built/app/app-pathname-normalizer.js +55 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/built/app/index.js +42 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/built/pages/index.js +44 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/built/pages/pages-bundle-path-normalizer.js +55 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/built/pages/pages-filename-normalizer.js +22 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/built/pages/pages-page-normalizer.js +19 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/built/pages/pages-pathname-normalizer.js +19 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/locale-route-normalizer.js +26 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/normalizer.js +6 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/normalizers.js +23 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/prefixing-normalizer.js +26 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/request/base-path.js +25 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/request/next-data.js +38 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/request/pathname-normalizer.js +6 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/request/prefix.js +39 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/request/rsc.js +19 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/request/segment-prefix-rsc.js +33 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/request/suffix.js +27 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/underscore-normalizer.js +17 -0
- package/dist/ray/node_modules/next/dist/server/normalizers/wrap-normalizer-fn.js +17 -0
- package/dist/ray/node_modules/next/dist/server/og/cache-image-response.js +341 -0
- package/dist/ray/node_modules/next/dist/server/og/image-response.js +72 -0
- package/dist/ray/node_modules/next/dist/server/patch-error-inspect.js +507 -0
- package/dist/ray/node_modules/next/dist/server/pipe-readable.js +212 -0
- package/dist/ray/node_modules/next/dist/server/post-process.js +39 -0
- package/dist/ray/node_modules/next/dist/server/render-result.js +246 -0
- package/dist/ray/node_modules/next/dist/server/render.js +1150 -0
- package/dist/ray/node_modules/next/dist/server/request/connection.js +135 -0
- package/dist/ray/node_modules/next/dist/server/request/cookies.js +239 -0
- package/dist/ray/node_modules/next/dist/server/request/draft-mode.js +238 -0
- package/dist/ray/node_modules/next/dist/server/request/fallback-params.js +95 -0
- package/dist/ray/node_modules/next/dist/server/request/headers.js +235 -0
- package/dist/ray/node_modules/next/dist/server/request/io.js +96 -0
- package/dist/ray/node_modules/next/dist/server/request/params.js +634 -0
- package/dist/ray/node_modules/next/dist/server/request/pathname.js +141 -0
- package/dist/ray/node_modules/next/dist/server/request/root-params.js +202 -0
- package/dist/ray/node_modules/next/dist/server/request/search-params.js +582 -0
- package/dist/ray/node_modules/next/dist/server/request/utils.js +84 -0
- package/dist/ray/node_modules/next/dist/server/request-meta.js +55 -0
- package/dist/ray/node_modules/next/dist/server/require-hook.js +82 -0
- package/dist/ray/node_modules/next/dist/server/require.js +109 -0
- package/dist/ray/node_modules/next/dist/server/response-cache/index.js +323 -0
- package/dist/ray/node_modules/next/dist/server/response-cache/types.js +41 -0
- package/dist/ray/node_modules/next/dist/server/response-cache/utils.js +104 -0
- package/dist/ray/node_modules/next/dist/server/response-cache/web.js +101 -0
- package/dist/ray/node_modules/next/dist/server/resume-data-cache/cache-store.js +101 -0
- package/dist/ray/node_modules/next/dist/server/resume-data-cache/resume-data-cache.js +142 -0
- package/dist/ray/node_modules/next/dist/server/revalidation-utils.js +156 -0
- package/dist/ray/node_modules/next/dist/server/route-definitions/app-page-route-definition.js +16 -0
- package/dist/ray/node_modules/next/dist/server/route-definitions/app-route-route-definition.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-definitions/locale-route-definition.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-definitions/pages-api-route-definition.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-definitions/pages-route-definition.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-definitions/route-definition.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-kind.js +32 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-managers/default-route-matcher-manager.js +239 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-managers/dev-route-matcher-manager.js +120 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-managers/route-matcher-manager.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/app-page-route-matcher-provider.js +55 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/app-route-route-matcher-provider.js +43 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-page-route-matcher-provider.js +91 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-route-route-matcher-provider.js +112 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/dev/dev-pages-api-route-matcher-provider.js +77 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/dev/dev-pages-route-matcher-provider.js +77 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/dev/file-cache-route-matcher-provider.js +28 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/batched-file-reader.js +106 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/default-file-reader.js +42 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/file-reader.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/helpers/cached-route-matcher-provider.js +30 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/manifest-loader.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/node-manifest-loader.js +34 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/server-manifest-loader.js +20 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/manifest-route-matcher-provider.js +21 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/pages-api-route-matcher-provider.js +55 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/pages-route-matcher-provider.js +64 -0
- package/dist/ray/node_modules/next/dist/server/route-matcher-providers/route-matcher-provider.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-matchers/app-page-route-matcher.js +18 -0
- package/dist/ray/node_modules/next/dist/server/route-matchers/app-route-route-matcher.js +15 -0
- package/dist/ray/node_modules/next/dist/server/route-matchers/locale-route-matcher.js +68 -0
- package/dist/ray/node_modules/next/dist/server/route-matchers/pages-api-route-matcher.js +30 -0
- package/dist/ray/node_modules/next/dist/server/route-matchers/pages-route-matcher.js +30 -0
- package/dist/ray/node_modules/next/dist/server/route-matchers/route-matcher.js +54 -0
- package/dist/ray/node_modules/next/dist/server/route-matches/app-page-route-match.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-matches/app-route-route-match.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-matches/locale-route-match.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-matches/pages-api-route-match.js +16 -0
- package/dist/ray/node_modules/next/dist/server/route-matches/pages-route-match.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-matches/route-match.js +6 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/helpers/prerender-manifest-matcher.js +51 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/module.compiled.js +36 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/module.js +176 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/module.render.js +24 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/normalize-request-url.js +62 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/app-router-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/entrypoints.js +87 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/head-manager-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/hooks-client-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/image-config-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/router-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/contexts/server-inserted-html.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.js +140 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-compiler-runtime.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-dom.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-jsx-runtime.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-server.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-turbopack-static.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react-server-dom-webpack-static.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/react.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.js +125 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-compiler-runtime.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom-server.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-dom.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-turbopack-client.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/react.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-route/helpers/auto-implement-methods.js +85 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-route/helpers/clean-url.js +24 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-route/helpers/get-pathname-from-absolute-path.js +29 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-route/helpers/is-static-gen-enabled.js +15 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-route/helpers/parsed-url-query-to-params.js +20 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-route/module.compiled.js +36 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-route/module.js +948 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/app-route/shared-modules.js +56 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/checks.js +45 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/builtin/_error.js +100 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/module.compiled.js +20 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/module.js +92 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/module.render.js +24 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/pages-handler.js +567 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/vendored/contexts/app-router-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/vendored/contexts/entrypoints.js +102 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/vendored/contexts/head-manager-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/vendored/contexts/hooks-client-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/vendored/contexts/html-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/vendored/contexts/image-config-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/vendored/contexts/loadable-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/vendored/contexts/loadable.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/vendored/contexts/router-context.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages/vendored/contexts/server-inserted-html.js +4 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages-api/module.compiled.js +20 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/pages-api/module.js +58 -0
- package/dist/ray/node_modules/next/dist/server/route-modules/route-module.js +697 -0
- package/dist/ray/node_modules/next/dist/server/runtime-reacts.external.js +46 -0
- package/dist/ray/node_modules/next/dist/server/send-payload.js +88 -0
- package/dist/ray/node_modules/next/dist/server/send-response.js +70 -0
- package/dist/ray/node_modules/next/dist/server/serve-static.js +66 -0
- package/dist/ray/node_modules/next/dist/server/server-route-utils.js +30 -0
- package/dist/ray/node_modules/next/dist/server/server-utils.js +340 -0
- package/dist/ray/node_modules/next/dist/server/setup-http-agent-env.js +31 -0
- package/dist/ray/node_modules/next/dist/server/stream-utils/encoded-tags.js +122 -0
- package/dist/ray/node_modules/next/dist/server/stream-utils/node-buffered-transform-stream.js +51 -0
- package/dist/ray/node_modules/next/dist/server/stream-utils/node-web-streams-helper.js +939 -0
- package/dist/ray/node_modules/next/dist/server/stream-utils/uint8array-helpers.js +74 -0
- package/dist/ray/node_modules/next/dist/server/typescript/constant.js +98 -0
- package/dist/ray/node_modules/next/dist/server/typescript/index.js +199 -0
- package/dist/ray/node_modules/next/dist/server/typescript/rules/client-boundary.js +100 -0
- package/dist/ray/node_modules/next/dist/server/typescript/rules/config.js +534 -0
- package/dist/ray/node_modules/next/dist/server/typescript/rules/entry.js +149 -0
- package/dist/ray/node_modules/next/dist/server/typescript/rules/error.js +38 -0
- package/dist/ray/node_modules/next/dist/server/typescript/rules/metadata.js +234 -0
- package/dist/ray/node_modules/next/dist/server/typescript/rules/server-boundary.js +115 -0
- package/dist/ray/node_modules/next/dist/server/typescript/rules/server.js +79 -0
- package/dist/ray/node_modules/next/dist/server/typescript/utils.js +212 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/cache-life-profile.js +84 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/cache-life.js +102 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/cache-tag.js +52 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/clone-cache-entry.js +28 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/constants.js +44 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/handlers.js +274 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/tiered-cache-handler.js +145 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/use-cache-errors.js +59 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/use-cache-probe-globals.js +39 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/use-cache-probe-scheduler.js +117 -0
- package/dist/ray/node_modules/next/dist/server/use-cache/use-cache-wrapper.js +2605 -0
- package/dist/ray/node_modules/next/dist/server/utils.js +73 -0
- package/dist/ray/node_modules/next/dist/server/web/adapter.js +428 -0
- package/dist/ray/node_modules/next/dist/server/web/edge-route-module-wrapper.js +136 -0
- package/dist/ray/node_modules/next/dist/server/web/error.js +69 -0
- package/dist/ray/node_modules/next/dist/server/web/exports/index.js +56 -0
- package/dist/ray/node_modules/next/dist/server/web/get-edge-preview-props.js +23 -0
- package/dist/ray/node_modules/next/dist/server/web/globals.js +128 -0
- package/dist/ray/node_modules/next/dist/server/web/http.js +39 -0
- package/dist/ray/node_modules/next/dist/server/web/internal-edge-wait-until.js +64 -0
- package/dist/ray/node_modules/next/dist/server/web/next-url.js +199 -0
- package/dist/ray/node_modules/next/dist/server/web/sandbox/context.js +468 -0
- package/dist/ray/node_modules/next/dist/server/web/sandbox/fetch-inline-assets.js +35 -0
- package/dist/ray/node_modules/next/dist/server/web/sandbox/index.js +28 -0
- package/dist/ray/node_modules/next/dist/server/web/sandbox/resource-managers.js +123 -0
- package/dist/ray/node_modules/next/dist/server/web/sandbox/sandbox.js +137 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/adapters/headers.js +293 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/adapters/next-request.js +142 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/adapters/reflect.js +30 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js +226 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/cookies.js +29 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/fetch-event.js +98 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/image-response.js +22 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/request.js +99 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/response.js +136 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/revalidate.js +226 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/unstable-cache.js +307 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/unstable-no-store.js +51 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/url-pattern.js +13 -0
- package/dist/ray/node_modules/next/dist/server/web/spec-extension/user-agent.js +46 -0
- package/dist/ray/node_modules/next/dist/server/web/types.js +6 -0
- package/dist/ray/node_modules/next/dist/server/web/utils.js +151 -0
- package/dist/ray/node_modules/next/dist/server/web/web-on-close.js +87 -0
- package/dist/ray/node_modules/next/dist/shared/lib/action-revalidation-kind.js +31 -0
- package/dist/ray/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js +50 -0
- package/dist/ray/node_modules/next/dist/shared/lib/app-router-types.js +159 -0
- package/dist/ray/node_modules/next/dist/shared/lib/constants.js +453 -0
- package/dist/ray/node_modules/next/dist/shared/lib/deep-freeze.js +30 -0
- package/dist/ray/node_modules/next/dist/shared/lib/deployment-id.js +63 -0
- package/dist/ray/node_modules/next/dist/shared/lib/dset.js +34 -0
- package/dist/ray/node_modules/next/dist/shared/lib/encode-uri-path.js +15 -0
- package/dist/ray/node_modules/next/dist/shared/lib/entry-constants.js +36 -0
- package/dist/ray/node_modules/next/dist/shared/lib/error-source.js +36 -0
- package/dist/ray/node_modules/next/dist/shared/lib/errors/code-frame.js +20 -0
- package/dist/ray/node_modules/next/dist/shared/lib/errors/constants.js +19 -0
- package/dist/ray/node_modules/next/dist/shared/lib/errors/empty-generate-static-params-error.js +31 -0
- package/dist/ray/node_modules/next/dist/shared/lib/errors/hard-deprecated-config-error.js +25 -0
- package/dist/ray/node_modules/next/dist/shared/lib/escape-regexp.js +22 -0
- package/dist/ray/node_modules/next/dist/shared/lib/get-hostname.js +23 -0
- package/dist/ray/node_modules/next/dist/shared/lib/hash.js +42 -0
- package/dist/ray/node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js +18 -0
- package/dist/ray/node_modules/next/dist/shared/lib/head.js +164 -0
- package/dist/ray/node_modules/next/dist/shared/lib/hooks-client-context.shared-runtime.js +60 -0
- package/dist/ray/node_modules/next/dist/shared/lib/html-context.shared-runtime.js +40 -0
- package/dist/ray/node_modules/next/dist/shared/lib/htmlescape.js +52 -0
- package/dist/ray/node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js +25 -0
- package/dist/ray/node_modules/next/dist/shared/lib/i18n/get-locale-redirect.js +59 -0
- package/dist/ray/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js +54 -0
- package/dist/ray/node_modules/next/dist/shared/lib/image-blur-svg.js +22 -0
- package/dist/ray/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js +19 -0
- package/dist/ray/node_modules/next/dist/shared/lib/image-config.js +77 -0
- package/dist/ray/node_modules/next/dist/shared/lib/instant-messages.js +43 -0
- package/dist/ray/node_modules/next/dist/shared/lib/invariant-error.js +23 -0
- package/dist/ray/node_modules/next/dist/shared/lib/is-plain-object.js +42 -0
- package/dist/ray/node_modules/next/dist/shared/lib/is-thenable.js +20 -0
- package/dist/ray/node_modules/next/dist/shared/lib/isomorphic/path.js +14 -0
- package/dist/ray/node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js +37 -0
- package/dist/ray/node_modules/next/dist/shared/lib/loadable-context.shared-runtime.js +19 -0
- package/dist/ray/node_modules/next/dist/shared/lib/loadable.shared-runtime.js +246 -0
- package/dist/ray/node_modules/next/dist/shared/lib/match-local-pattern.js +46 -0
- package/dist/ray/node_modules/next/dist/shared/lib/match-remote-pattern.js +63 -0
- package/dist/ray/node_modules/next/dist/shared/lib/modern-browserslist-target.js +15 -0
- package/dist/ray/node_modules/next/dist/shared/lib/no-fallback-error.external.js +18 -0
- package/dist/ray/node_modules/next/dist/shared/lib/normalized-asset-prefix.js +28 -0
- package/dist/ray/node_modules/next/dist/shared/lib/page-path/absolute-path-to-page.js +26 -0
- package/dist/ray/node_modules/next/dist/shared/lib/page-path/denormalize-page-path.js +18 -0
- package/dist/ray/node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js +18 -0
- package/dist/ray/node_modules/next/dist/shared/lib/page-path/get-page-paths.js +40 -0
- package/dist/ray/node_modules/next/dist/shared/lib/page-path/normalize-data-path.js +23 -0
- package/dist/ray/node_modules/next/dist/shared/lib/page-path/normalize-page-path.js +26 -0
- package/dist/ray/node_modules/next/dist/shared/lib/page-path/normalize-path-sep.js +19 -0
- package/dist/ray/node_modules/next/dist/shared/lib/page-path/remove-page-path-tail.js +20 -0
- package/dist/ray/node_modules/next/dist/shared/lib/promise-with-resolvers.js +26 -0
- package/dist/ray/node_modules/next/dist/shared/lib/request-insights.js +30 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/adapters.js +139 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/routes/app.js +158 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/add-locale.js +28 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js +20 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js +20 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/app-paths.js +62 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/as-path-to-search-params.js +17 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/cache-busting-search-param.js +70 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/escape-path-delimiters.js +16 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js +27 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/format-url.js +111 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js +174 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js +52 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/get-route-from-asset-path.js +25 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/get-segment-param.js +90 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/html-bots.js +17 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/index.js +30 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/interception-prefix-from-param-type.js +33 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/interception-routes.js +108 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/is-bot.js +57 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/is-dynamic.js +26 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/middleware-route-matcher.js +31 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/parse-loader-tree.js +30 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/parse-path.js +33 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js +43 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/parse-url.js +38 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js +20 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/path-match.js +49 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/prepare-destination.js +293 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/querystring.js +79 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/relativize-url.js +40 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js +39 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js +22 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js +116 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/route-match-utils.js +113 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/route-matcher.js +45 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/route-regex.js +256 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router/utils/sorted-routes.js +244 -0
- package/dist/ray/node_modules/next/dist/shared/lib/router-context.shared-runtime.js +18 -0
- package/dist/ray/node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js +99 -0
- package/dist/ray/node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js +66 -0
- package/dist/ray/node_modules/next/dist/shared/lib/segment.js +102 -0
- package/dist/ray/node_modules/next/dist/shared/lib/server-inserted-html.shared-runtime.js +35 -0
- package/dist/ray/node_modules/next/dist/shared/lib/server-reference-info.js +68 -0
- package/dist/ray/node_modules/next/dist/shared/lib/side-effect.js +63 -0
- package/dist/ray/node_modules/next/dist/shared/lib/size-limit.js +40 -0
- package/dist/ray/node_modules/next/dist/shared/lib/turbopack/internal-error.js +53 -0
- package/dist/ray/node_modules/next/dist/shared/lib/utils/reflect-utils.js +69 -0
- package/dist/ray/node_modules/next/dist/shared/lib/utils/warn-once.js +22 -0
- package/dist/ray/node_modules/next/dist/shared/lib/utils.js +216 -0
- package/dist/ray/node_modules/next/dist/shared/lib/zod.js +101 -0
- package/dist/ray/node_modules/next/dist/telemetry/agent-name.js +20 -0
- package/dist/ray/node_modules/next/dist/telemetry/anonymous-meta.js +91 -0
- package/dist/ray/node_modules/next/dist/telemetry/detached-flush.js +56 -0
- package/dist/ray/node_modules/next/dist/telemetry/events/build.js +187 -0
- package/dist/ray/node_modules/next/dist/telemetry/events/index.js +41 -0
- package/dist/ray/node_modules/next/dist/telemetry/events/plugins.js +51 -0
- package/dist/ray/node_modules/next/dist/telemetry/events/swc-load-failure.js +55 -0
- package/dist/ray/node_modules/next/dist/telemetry/events/version.js +68 -0
- package/dist/ray/node_modules/next/dist/telemetry/flush-telemetry.js +19 -0
- package/dist/ray/node_modules/next/dist/telemetry/post-telemetry-payload.js +48 -0
- package/dist/ray/node_modules/next/dist/telemetry/project-id.js +48 -0
- package/dist/ray/node_modules/next/dist/telemetry/storage.js +305 -0
- package/dist/ray/node_modules/next/dist/trace/index.js +58 -0
- package/dist/ray/node_modules/next/dist/trace/report/index.js +37 -0
- package/dist/ray/node_modules/next/dist/trace/report/to-json-build.js +40 -0
- package/dist/ray/node_modules/next/dist/trace/report/to-json.js +171 -0
- package/dist/ray/node_modules/next/dist/trace/report/to-telemetry.js +36 -0
- package/dist/ray/node_modules/next/dist/trace/shared.js +39 -0
- package/dist/ray/node_modules/next/dist/trace/trace.js +211 -0
- package/dist/ray/node_modules/next/package.json +139 -0
- package/dist/ray/node_modules/react/cjs/react-compiler-runtime.production.js +16 -0
- package/dist/ray/node_modules/react/cjs/react-jsx-dev-runtime.production.js +14 -0
- package/dist/ray/node_modules/react/cjs/react-jsx-runtime.production.js +34 -0
- package/dist/ray/node_modules/react/cjs/react.development.js +1284 -0
- package/dist/ray/node_modules/react/cjs/react.production.js +542 -0
- package/dist/ray/node_modules/react/compiler-runtime.js +14 -0
- package/dist/ray/node_modules/react/index.js +7 -0
- package/dist/ray/node_modules/react/jsx-dev-runtime.js +7 -0
- package/dist/ray/node_modules/react/jsx-runtime.js +7 -0
- package/dist/ray/node_modules/react/package.json +51 -0
- package/dist/ray/node_modules/react-dom/cjs/react-dom-server-legacy.browser.production.js +6603 -0
- package/dist/ray/node_modules/react-dom/cjs/react-dom-server-legacy.node.production.js +6692 -0
- package/dist/ray/node_modules/react-dom/cjs/react-dom-server.browser.production.js +7410 -0
- package/dist/ray/node_modules/react-dom/cjs/react-dom-server.edge.production.js +7512 -0
- package/dist/ray/node_modules/react-dom/cjs/react-dom-server.node.production.js +7707 -0
- package/dist/ray/node_modules/react-dom/cjs/react-dom.production.js +210 -0
- package/dist/ray/node_modules/react-dom/index.js +38 -0
- package/dist/ray/node_modules/react-dom/package.json +117 -0
- package/dist/ray/node_modules/react-dom/server.browser.js +16 -0
- package/dist/ray/node_modules/react-dom/server.edge.js +17 -0
- package/dist/ray/node_modules/react-dom/server.node.js +18 -0
- package/dist/ray/node_modules/react-dom/static.node.js +14 -0
- package/dist/ray/node_modules/semver/package.json +38 -0
- package/dist/ray/node_modules/sharp/dist/channel.cjs +177 -0
- package/dist/ray/node_modules/sharp/dist/channel.mjs +177 -0
- package/dist/ray/node_modules/sharp/dist/colour.cjs +199 -0
- package/dist/ray/node_modules/sharp/dist/colour.mjs +199 -0
- package/dist/ray/node_modules/sharp/dist/composite.cjs +213 -0
- package/dist/ray/node_modules/sharp/dist/composite.mjs +213 -0
- package/dist/ray/node_modules/sharp/dist/constructor.cjs +511 -0
- package/dist/ray/node_modules/sharp/dist/constructor.mjs +511 -0
- package/dist/ray/node_modules/sharp/dist/index.cjs +25 -0
- package/dist/ray/node_modules/sharp/dist/index.d.cts +1999 -0
- package/dist/ray/node_modules/sharp/dist/index.d.mts +2046 -0
- package/dist/ray/node_modules/sharp/dist/index.mjs +25 -0
- package/dist/ray/node_modules/sharp/dist/input.cjs +819 -0
- package/dist/ray/node_modules/sharp/dist/input.mjs +819 -0
- package/dist/ray/node_modules/sharp/dist/is.cjs +143 -0
- package/dist/ray/node_modules/sharp/dist/is.mjs +143 -0
- package/dist/ray/node_modules/sharp/dist/libvips.cjs +212 -0
- package/dist/ray/node_modules/sharp/dist/libvips.mjs +212 -0
- package/dist/ray/node_modules/sharp/dist/operation.cjs +1002 -0
- package/dist/ray/node_modules/sharp/dist/operation.mjs +1002 -0
- package/dist/ray/node_modules/sharp/dist/output.cjs +1785 -0
- package/dist/ray/node_modules/sharp/dist/output.mjs +1785 -0
- package/dist/ray/node_modules/sharp/dist/resize.cjs +617 -0
- package/dist/ray/node_modules/sharp/dist/resize.mjs +617 -0
- package/dist/ray/node_modules/sharp/dist/sharp.cjs +174 -0
- package/dist/ray/node_modules/sharp/dist/sharp.mjs +174 -0
- package/dist/ray/node_modules/sharp/dist/utility.cjs +301 -0
- package/dist/ray/node_modules/sharp/dist/utility.mjs +301 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/classes/comparator.js +143 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/classes/range.js +577 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/classes/semver.js +350 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/clean.js +8 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/cmp.js +54 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/coerce.js +62 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/compare-build.js +9 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/compare-loose.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/compare.js +7 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/diff.js +60 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/eq.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/gt.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/gte.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/inc.js +21 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/lt.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/lte.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/major.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/minor.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/neq.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/parse.js +18 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/patch.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/prerelease.js +8 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/rcompare.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/rsort.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/satisfies.js +12 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/sort.js +5 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/truncate.js +48 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/functions/valid.js +8 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/index.js +93 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/internal/constants.js +37 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/internal/debug.js +11 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/internal/identifiers.js +29 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/internal/lrucache.js +42 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/internal/parse-options.js +17 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/internal/re.js +223 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/package.json +78 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/gtr.js +6 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/intersects.js +9 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/ltr.js +6 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/min-version.js +63 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/outside.js +82 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/simplify.js +49 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/subset.js +249 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/to-comparators.js +10 -0
- package/dist/ray/node_modules/sharp/node_modules/semver/ranges/valid.js +13 -0
- package/dist/ray/node_modules/sharp/package.json +227 -0
- package/dist/ray/node_modules/styled-jsx/dist/index/index.js +499 -0
- package/dist/ray/node_modules/styled-jsx/index.js +1 -0
- package/dist/ray/node_modules/styled-jsx/package.json +132 -0
- package/dist/ray/node_modules/styled-jsx/style.js +1 -0
- package/dist/ray/package.json +46 -0
- package/dist/ray/public/ai/DeepSeek.svg +1 -0
- package/dist/ray/public/ai/claude.svg +1 -0
- package/dist/ray/public/ai/gemini.svg +1 -0
- package/dist/ray/public/ai/openai.svg +1 -0
- package/dist/ray/public/ai/openrouter.svg +1 -0
- package/dist/ray/public/ai/ozias.png +0 -0
- package/dist/ray/public/ai/ozias.svg +20 -0
- package/dist/ray/public/logo.svg +1 -0
- package/dist/ray/server.js +38 -0
- package/ecosystem.config.js +97 -0
- package/package.json +42 -0
|
@@ -0,0 +1,2684 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
0 && (module.exports = {
|
|
6
|
+
EntryStatus: null,
|
|
7
|
+
MetadataOnlyRequestTree: null,
|
|
8
|
+
attemptToFulfillDynamicSegmentFromBFCache: null,
|
|
9
|
+
attemptToUpgradeSegmentFromBFCache: null,
|
|
10
|
+
canNewFetchStrategyProvideMoreContent: null,
|
|
11
|
+
convertReusedFlightRouterStateToRouteTree: null,
|
|
12
|
+
convertRootFlightRouterStateToRouteTree: null,
|
|
13
|
+
convertRouteTreeToFlightRouterState: null,
|
|
14
|
+
createDetachedSegmentCacheEntry: null,
|
|
15
|
+
createMetadataRouteTree: null,
|
|
16
|
+
createNonTaskyPrefetchResponseStream: null,
|
|
17
|
+
deprecated_requestOptimisticRouteCacheEntry: null,
|
|
18
|
+
fetchRouteOnCacheMiss: null,
|
|
19
|
+
fetchSegmentPrefetchesUsingDynamicRequest: null,
|
|
20
|
+
fetchSegmentsOnCacheMiss: null,
|
|
21
|
+
fulfillRouteCacheEntry: null,
|
|
22
|
+
getCurrentRouteCacheVersion: null,
|
|
23
|
+
getCurrentSegmentCacheVersion: null,
|
|
24
|
+
getStaleTimeMs: null,
|
|
25
|
+
invalidateEntirePrefetchCache: null,
|
|
26
|
+
invalidateRouteCacheEntries: null,
|
|
27
|
+
invalidateSegmentCacheEntries: null,
|
|
28
|
+
markRouteEntryAsDynamicRewrite: null,
|
|
29
|
+
overwriteRevalidatingSegmentCacheEntry: null,
|
|
30
|
+
pingInvalidationListeners: null,
|
|
31
|
+
processRuntimePrefetchStream: null,
|
|
32
|
+
readOrCreateRevalidatingSegmentEntry: null,
|
|
33
|
+
readOrCreateRouteCacheEntry: null,
|
|
34
|
+
readOrCreateSegmentCacheEntry: null,
|
|
35
|
+
readRouteCacheEntry: null,
|
|
36
|
+
readSegmentCacheEntryForNavigation: null,
|
|
37
|
+
resolveStaleAt: null,
|
|
38
|
+
segmentCacheMap: null,
|
|
39
|
+
stripIsPartialByte: null,
|
|
40
|
+
upgradeToPendingSegment: null,
|
|
41
|
+
upsertSegmentEntry: null,
|
|
42
|
+
waitForSegmentCacheEntry: null,
|
|
43
|
+
writeDynamicRenderResponseIntoCache: null,
|
|
44
|
+
writePrerenderResponseIntoCache: null,
|
|
45
|
+
writeRouteIntoCache: null
|
|
46
|
+
});
|
|
47
|
+
function _export(target, all) {
|
|
48
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: all[name]
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
_export(exports, {
|
|
54
|
+
EntryStatus: function() {
|
|
55
|
+
return _cachemap.EntryStatus;
|
|
56
|
+
},
|
|
57
|
+
MetadataOnlyRequestTree: function() {
|
|
58
|
+
return MetadataOnlyRequestTree;
|
|
59
|
+
},
|
|
60
|
+
attemptToFulfillDynamicSegmentFromBFCache: function() {
|
|
61
|
+
return attemptToFulfillDynamicSegmentFromBFCache;
|
|
62
|
+
},
|
|
63
|
+
attemptToUpgradeSegmentFromBFCache: function() {
|
|
64
|
+
return attemptToUpgradeSegmentFromBFCache;
|
|
65
|
+
},
|
|
66
|
+
canNewFetchStrategyProvideMoreContent: function() {
|
|
67
|
+
return canNewFetchStrategyProvideMoreContent;
|
|
68
|
+
},
|
|
69
|
+
convertReusedFlightRouterStateToRouteTree: function() {
|
|
70
|
+
return convertReusedFlightRouterStateToRouteTree;
|
|
71
|
+
},
|
|
72
|
+
convertRootFlightRouterStateToRouteTree: function() {
|
|
73
|
+
return convertRootFlightRouterStateToRouteTree;
|
|
74
|
+
},
|
|
75
|
+
convertRouteTreeToFlightRouterState: function() {
|
|
76
|
+
return convertRouteTreeToFlightRouterState;
|
|
77
|
+
},
|
|
78
|
+
createDetachedSegmentCacheEntry: function() {
|
|
79
|
+
return createDetachedSegmentCacheEntry;
|
|
80
|
+
},
|
|
81
|
+
createMetadataRouteTree: function() {
|
|
82
|
+
return createMetadataRouteTree;
|
|
83
|
+
},
|
|
84
|
+
createNonTaskyPrefetchResponseStream: function() {
|
|
85
|
+
return createNonTaskyPrefetchResponseStream;
|
|
86
|
+
},
|
|
87
|
+
deprecated_requestOptimisticRouteCacheEntry: function() {
|
|
88
|
+
return deprecated_requestOptimisticRouteCacheEntry;
|
|
89
|
+
},
|
|
90
|
+
fetchRouteOnCacheMiss: function() {
|
|
91
|
+
return fetchRouteOnCacheMiss;
|
|
92
|
+
},
|
|
93
|
+
fetchSegmentPrefetchesUsingDynamicRequest: function() {
|
|
94
|
+
return fetchSegmentPrefetchesUsingDynamicRequest;
|
|
95
|
+
},
|
|
96
|
+
fetchSegmentsOnCacheMiss: function() {
|
|
97
|
+
return fetchSegmentsOnCacheMiss;
|
|
98
|
+
},
|
|
99
|
+
fulfillRouteCacheEntry: function() {
|
|
100
|
+
return fulfillRouteCacheEntry;
|
|
101
|
+
},
|
|
102
|
+
getCurrentRouteCacheVersion: function() {
|
|
103
|
+
return getCurrentRouteCacheVersion;
|
|
104
|
+
},
|
|
105
|
+
getCurrentSegmentCacheVersion: function() {
|
|
106
|
+
return getCurrentSegmentCacheVersion;
|
|
107
|
+
},
|
|
108
|
+
getStaleTimeMs: function() {
|
|
109
|
+
return getStaleTimeMs;
|
|
110
|
+
},
|
|
111
|
+
invalidateEntirePrefetchCache: function() {
|
|
112
|
+
return invalidateEntirePrefetchCache;
|
|
113
|
+
},
|
|
114
|
+
invalidateRouteCacheEntries: function() {
|
|
115
|
+
return invalidateRouteCacheEntries;
|
|
116
|
+
},
|
|
117
|
+
invalidateSegmentCacheEntries: function() {
|
|
118
|
+
return invalidateSegmentCacheEntries;
|
|
119
|
+
},
|
|
120
|
+
markRouteEntryAsDynamicRewrite: function() {
|
|
121
|
+
return markRouteEntryAsDynamicRewrite;
|
|
122
|
+
},
|
|
123
|
+
overwriteRevalidatingSegmentCacheEntry: function() {
|
|
124
|
+
return overwriteRevalidatingSegmentCacheEntry;
|
|
125
|
+
},
|
|
126
|
+
pingInvalidationListeners: function() {
|
|
127
|
+
return pingInvalidationListeners;
|
|
128
|
+
},
|
|
129
|
+
processRuntimePrefetchStream: function() {
|
|
130
|
+
return processRuntimePrefetchStream;
|
|
131
|
+
},
|
|
132
|
+
readOrCreateRevalidatingSegmentEntry: function() {
|
|
133
|
+
return readOrCreateRevalidatingSegmentEntry;
|
|
134
|
+
},
|
|
135
|
+
readOrCreateRouteCacheEntry: function() {
|
|
136
|
+
return readOrCreateRouteCacheEntry;
|
|
137
|
+
},
|
|
138
|
+
readOrCreateSegmentCacheEntry: function() {
|
|
139
|
+
return readOrCreateSegmentCacheEntry;
|
|
140
|
+
},
|
|
141
|
+
readRouteCacheEntry: function() {
|
|
142
|
+
return readRouteCacheEntry;
|
|
143
|
+
},
|
|
144
|
+
readSegmentCacheEntryForNavigation: function() {
|
|
145
|
+
return readSegmentCacheEntryForNavigation;
|
|
146
|
+
},
|
|
147
|
+
resolveStaleAt: function() {
|
|
148
|
+
return resolveStaleAt;
|
|
149
|
+
},
|
|
150
|
+
segmentCacheMap: function() {
|
|
151
|
+
return segmentCacheMap;
|
|
152
|
+
},
|
|
153
|
+
stripIsPartialByte: function() {
|
|
154
|
+
return stripIsPartialByte;
|
|
155
|
+
},
|
|
156
|
+
upgradeToPendingSegment: function() {
|
|
157
|
+
return upgradeToPendingSegment;
|
|
158
|
+
},
|
|
159
|
+
upsertSegmentEntry: function() {
|
|
160
|
+
return upsertSegmentEntry;
|
|
161
|
+
},
|
|
162
|
+
waitForSegmentCacheEntry: function() {
|
|
163
|
+
return waitForSegmentCacheEntry;
|
|
164
|
+
},
|
|
165
|
+
writeDynamicRenderResponseIntoCache: function() {
|
|
166
|
+
return writeDynamicRenderResponseIntoCache;
|
|
167
|
+
},
|
|
168
|
+
writePrerenderResponseIntoCache: function() {
|
|
169
|
+
return writePrerenderResponseIntoCache;
|
|
170
|
+
},
|
|
171
|
+
writeRouteIntoCache: function() {
|
|
172
|
+
return writeRouteIntoCache;
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
const _approutertypes = require("../../../shared/lib/app-router-types");
|
|
176
|
+
const _varyparamsdecoding = require("../../../shared/lib/segment-cache/vary-params-decoding");
|
|
177
|
+
const _approuterheaders = require("../app-router-headers");
|
|
178
|
+
const _fetchserverresponse = require("../router-reducer/fetch-server-response");
|
|
179
|
+
const _fetch = require("./fetch");
|
|
180
|
+
const _scheduler = require("./scheduler");
|
|
181
|
+
const _varypath = require("./vary-path");
|
|
182
|
+
const _createhreffromurl = require("../router-reducer/create-href-from-url");
|
|
183
|
+
const _cachekey = require("./cache-key");
|
|
184
|
+
const _routeparams = require("../../route-params");
|
|
185
|
+
const _cachemap = require("./cache-map");
|
|
186
|
+
const _segmentvalueencoding = require("../../../shared/lib/segment-cache/segment-value-encoding");
|
|
187
|
+
const _flightdatahelpers = require("../../flight-data-helpers");
|
|
188
|
+
const _navigatereducer = require("../router-reducer/reducers/navigate-reducer");
|
|
189
|
+
const _links = require("../links");
|
|
190
|
+
const _segment = require("../../../shared/lib/segment");
|
|
191
|
+
const _types = require("./types");
|
|
192
|
+
const _promisewithresolvers = require("../../../shared/lib/promise-with-resolvers");
|
|
193
|
+
const _bfcache = require("./bfcache");
|
|
194
|
+
const _optimisticroutes = require("./optimistic-routes");
|
|
195
|
+
const _navigation = require("./navigation");
|
|
196
|
+
const _navigationbuildid = require("../../navigation-build-id");
|
|
197
|
+
const _constants = require("../../../lib/constants");
|
|
198
|
+
function getStaleTimeMs(staleTimeSeconds) {
|
|
199
|
+
return Math.max(staleTimeSeconds, 30) * 1000;
|
|
200
|
+
}
|
|
201
|
+
const isOutputExportMode = process.env.NODE_ENV === 'production' && process.env.__NEXT_CONFIG_OUTPUT === 'export';
|
|
202
|
+
const MetadataOnlyRequestTree = [
|
|
203
|
+
'',
|
|
204
|
+
{},
|
|
205
|
+
null,
|
|
206
|
+
'metadata-only'
|
|
207
|
+
];
|
|
208
|
+
const routeCacheMap = (0, _cachemap.createCacheMap)();
|
|
209
|
+
const segmentCacheMap = (0, _cachemap.createCacheMap)();
|
|
210
|
+
// All invalidation listeners for the whole cache are tracked in single set.
|
|
211
|
+
// Since we don't yet support tag or path-based invalidation, there's no point
|
|
212
|
+
// tracking them any more granularly than this. Once we add granular
|
|
213
|
+
// invalidation, that may change, though generally the model is to just notify
|
|
214
|
+
// the listeners and allow the caller to poll the prefetch cache with a new
|
|
215
|
+
// prefetch task if desired.
|
|
216
|
+
let invalidationListeners = null;
|
|
217
|
+
// Incrementing counters used to track cache invalidations. Route and segment
|
|
218
|
+
// caches have separate versions so they can be invalidated independently.
|
|
219
|
+
// Invalidation does not eagerly evict anything from the cache; entries are
|
|
220
|
+
// lazily evicted when read.
|
|
221
|
+
let currentRouteCacheVersion = 0;
|
|
222
|
+
let currentSegmentCacheVersion = 0;
|
|
223
|
+
function getCurrentRouteCacheVersion() {
|
|
224
|
+
return currentRouteCacheVersion;
|
|
225
|
+
}
|
|
226
|
+
function getCurrentSegmentCacheVersion() {
|
|
227
|
+
return currentSegmentCacheVersion;
|
|
228
|
+
}
|
|
229
|
+
function invalidateEntirePrefetchCache(nextUrl, tree) {
|
|
230
|
+
currentRouteCacheVersion++;
|
|
231
|
+
currentSegmentCacheVersion++;
|
|
232
|
+
(0, _links.pingVisibleLinks)(nextUrl, tree);
|
|
233
|
+
pingInvalidationListeners(nextUrl, tree);
|
|
234
|
+
}
|
|
235
|
+
function invalidateRouteCacheEntries(nextUrl, tree) {
|
|
236
|
+
currentRouteCacheVersion++;
|
|
237
|
+
(0, _links.pingVisibleLinks)(nextUrl, tree);
|
|
238
|
+
pingInvalidationListeners(nextUrl, tree);
|
|
239
|
+
}
|
|
240
|
+
function invalidateSegmentCacheEntries(nextUrl, tree) {
|
|
241
|
+
currentSegmentCacheVersion++;
|
|
242
|
+
(0, _links.pingVisibleLinks)(nextUrl, tree);
|
|
243
|
+
pingInvalidationListeners(nextUrl, tree);
|
|
244
|
+
}
|
|
245
|
+
function attachInvalidationListener(task) {
|
|
246
|
+
// This function is called whenever a prefetch task reads a cache entry. If
|
|
247
|
+
// the task has an onInvalidate function associated with it — i.e. the one
|
|
248
|
+
// optionally passed to router.prefetch(onInvalidate) — then we attach that
|
|
249
|
+
// listener to the every cache entry that the task reads. Then, if an entry
|
|
250
|
+
// is invalidated, we call the function.
|
|
251
|
+
if (task.onInvalidate !== null) {
|
|
252
|
+
if (invalidationListeners === null) {
|
|
253
|
+
invalidationListeners = new Set([
|
|
254
|
+
task
|
|
255
|
+
]);
|
|
256
|
+
} else {
|
|
257
|
+
invalidationListeners.add(task);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
function notifyInvalidationListener(task) {
|
|
262
|
+
const onInvalidate = task.onInvalidate;
|
|
263
|
+
if (onInvalidate !== null) {
|
|
264
|
+
// Clear the callback from the task object to guarantee it's not called more
|
|
265
|
+
// than once.
|
|
266
|
+
task.onInvalidate = null;
|
|
267
|
+
// This is a user-space function, so we must wrap in try/catch.
|
|
268
|
+
try {
|
|
269
|
+
onInvalidate();
|
|
270
|
+
} catch (error) {
|
|
271
|
+
if (typeof reportError === 'function') {
|
|
272
|
+
reportError(error);
|
|
273
|
+
} else {
|
|
274
|
+
console.error(error);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
function pingInvalidationListeners(nextUrl, tree) {
|
|
280
|
+
// The rough equivalent of pingVisibleLinks, but for onInvalidate callbacks.
|
|
281
|
+
// This is called when the Next-Url or the base tree changes, since those
|
|
282
|
+
// may affect the result of a prefetch task. It's also called after a
|
|
283
|
+
// cache invalidation.
|
|
284
|
+
if (invalidationListeners !== null) {
|
|
285
|
+
const tasks = invalidationListeners;
|
|
286
|
+
invalidationListeners = null;
|
|
287
|
+
for (const task of tasks){
|
|
288
|
+
if ((0, _scheduler.isPrefetchTaskDirty)(task, nextUrl, tree)) {
|
|
289
|
+
notifyInvalidationListener(task);
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
function readRouteCacheEntry(now, key) {
|
|
295
|
+
const varyPath = (0, _varypath.getRouteVaryPath)(key.pathname, key.search, key.nextUrl);
|
|
296
|
+
const isRevalidation = false;
|
|
297
|
+
const existingEntry = (0, _cachemap.getFromCacheMap)(now, getCurrentRouteCacheVersion(), routeCacheMap, varyPath, isRevalidation, false);
|
|
298
|
+
if (existingEntry !== null) {
|
|
299
|
+
return existingEntry;
|
|
300
|
+
}
|
|
301
|
+
// No cache hit. Attempt to construct from template using the new
|
|
302
|
+
// optimistic routing mechanism (pattern-based matching).
|
|
303
|
+
if (process.env.__NEXT_OPTIMISTIC_ROUTING) {
|
|
304
|
+
return (0, _optimisticroutes.matchKnownRoute)(now, key.pathname, key.search);
|
|
305
|
+
}
|
|
306
|
+
return null;
|
|
307
|
+
}
|
|
308
|
+
function readSegmentCacheEntryForNavigation(now, // The map the navigation is bound to: a locked navigation's driving-task
|
|
309
|
+
// map, or the shared map otherwise.
|
|
310
|
+
map, varyPath, restrictToShell = false) {
|
|
311
|
+
const isRevalidation = false;
|
|
312
|
+
let lookupVaryPath = varyPath;
|
|
313
|
+
if (process.env.__NEXT_EXPOSE_TESTING_API && restrictToShell) {
|
|
314
|
+
// Instant Navigation Testing API: we're navigating to a link that 1) has
|
|
315
|
+
// Partial Prefetching enabled, and 2) does not have a prefetch prop set.
|
|
316
|
+
// Only the shell may render, not anything that varies on concrete route
|
|
317
|
+
// params.
|
|
318
|
+
lookupVaryPath = (0, _varypath.getShellSegmentVaryPath)(varyPath);
|
|
319
|
+
}
|
|
320
|
+
// Prefer a Fulfilled entry (e.g. a cached shell) over a more-specific
|
|
321
|
+
// Pending/Rejected one so it renders immediately instead of blocking on an
|
|
322
|
+
// in-flight entry.
|
|
323
|
+
const fulfilled = (0, _cachemap.getFromCacheMap)(now, getCurrentSegmentCacheVersion(), map, lookupVaryPath, isRevalidation, true);
|
|
324
|
+
if (fulfilled !== null) {
|
|
325
|
+
return fulfilled;
|
|
326
|
+
}
|
|
327
|
+
return (0, _cachemap.getFromCacheMap)(now, getCurrentSegmentCacheVersion(), map, lookupVaryPath, isRevalidation, false);
|
|
328
|
+
}
|
|
329
|
+
function readRevalidatingSegmentCacheEntry(now, map, varyPath) {
|
|
330
|
+
const isRevalidation = true;
|
|
331
|
+
return (0, _cachemap.getFromCacheMap)(now, getCurrentSegmentCacheVersion(), map, varyPath, isRevalidation, false);
|
|
332
|
+
}
|
|
333
|
+
function waitForSegmentCacheEntry(pendingEntry) {
|
|
334
|
+
// Because the entry is pending, there's already a in-progress request.
|
|
335
|
+
// Attach a promise to the entry that will resolve when the server responds.
|
|
336
|
+
let promiseWithResolvers = pendingEntry.promise;
|
|
337
|
+
if (promiseWithResolvers === null) {
|
|
338
|
+
promiseWithResolvers = pendingEntry.promise = (0, _promisewithresolvers.createPromiseWithResolvers)();
|
|
339
|
+
} else {
|
|
340
|
+
// There's already a promise we can use
|
|
341
|
+
}
|
|
342
|
+
return promiseWithResolvers.promise;
|
|
343
|
+
}
|
|
344
|
+
function createDetachedRouteCacheEntry() {
|
|
345
|
+
return {
|
|
346
|
+
canonicalUrl: null,
|
|
347
|
+
status: _cachemap.EntryStatus.Empty,
|
|
348
|
+
blockedTasks: null,
|
|
349
|
+
tree: null,
|
|
350
|
+
metadata: null,
|
|
351
|
+
// This is initialized to true because we don't know yet whether the route
|
|
352
|
+
// could be intercepted. It's only set to false once we receive a response
|
|
353
|
+
// from the server.
|
|
354
|
+
couldBeIntercepted: true,
|
|
355
|
+
// Similarly, we don't yet know if the route supports PPR.
|
|
356
|
+
supportsPerSegmentPrefetching: false,
|
|
357
|
+
hasDynamicRewrite: false,
|
|
358
|
+
renderedSearch: null,
|
|
359
|
+
// Map-related fields
|
|
360
|
+
ref: null,
|
|
361
|
+
size: 0,
|
|
362
|
+
// Since this is an empty entry, there's no reason to ever evict it. It will
|
|
363
|
+
// be updated when the data is populated.
|
|
364
|
+
staleAt: Infinity,
|
|
365
|
+
version: getCurrentRouteCacheVersion()
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
function readOrCreateRouteCacheEntry(now, task, key) {
|
|
369
|
+
attachInvalidationListener(task);
|
|
370
|
+
const existingEntry = readRouteCacheEntry(now, key);
|
|
371
|
+
if (existingEntry !== null) {
|
|
372
|
+
return existingEntry;
|
|
373
|
+
}
|
|
374
|
+
// Create a pending entry and add it to the cache.
|
|
375
|
+
const pendingEntry = createDetachedRouteCacheEntry();
|
|
376
|
+
const varyPath = (0, _varypath.getRouteVaryPath)(key.pathname, key.search, key.nextUrl);
|
|
377
|
+
const isRevalidation = false;
|
|
378
|
+
(0, _cachemap.setInCacheMap)(routeCacheMap, varyPath, pendingEntry, isRevalidation);
|
|
379
|
+
return pendingEntry;
|
|
380
|
+
}
|
|
381
|
+
function deprecated_requestOptimisticRouteCacheEntry(now, requestedUrl, nextUrl) {
|
|
382
|
+
// This function is called during a navigation when there was no matching
|
|
383
|
+
// route tree in the prefetch cache. Before de-opting to a blocking,
|
|
384
|
+
// unprefetched navigation, we will first attempt to construct an "optimistic"
|
|
385
|
+
// route tree by checking the cache for similar routes.
|
|
386
|
+
//
|
|
387
|
+
// Check if there's a route with the same pathname, but with different
|
|
388
|
+
// search params. We can then base our optimistic route tree on this entry.
|
|
389
|
+
//
|
|
390
|
+
// Conceptually, we are simulating what would happen if we did perform a
|
|
391
|
+
// prefetch the requested URL, under the assumption that the server will
|
|
392
|
+
// not redirect or rewrite the request in a different manner than the
|
|
393
|
+
// base route tree. This assumption might not hold, in which case we'll have
|
|
394
|
+
// to recover when we perform the dynamic navigation request. However, this
|
|
395
|
+
// is what would happen if a route were dynamically rewritten/redirected
|
|
396
|
+
// in between the prefetch and the navigation. So the logic needs to exist
|
|
397
|
+
// to handle this case regardless.
|
|
398
|
+
// Look for a route with the same pathname, but with an empty search string.
|
|
399
|
+
// TODO: There's nothing inherently special about the empty search string;
|
|
400
|
+
// it's chosen somewhat arbitrarily, with the rationale that it's the most
|
|
401
|
+
// likely one to exist. But we should update this to match _any_ search
|
|
402
|
+
// string. The plan is to generalize this logic alongside other improvements
|
|
403
|
+
// related to "fallback" cache entries.
|
|
404
|
+
const requestedSearch = requestedUrl.search;
|
|
405
|
+
if (requestedSearch === '') {
|
|
406
|
+
// The caller would have already checked if a route with an empty search
|
|
407
|
+
// string is in the cache. So we can bail out here.
|
|
408
|
+
return null;
|
|
409
|
+
}
|
|
410
|
+
const urlWithoutSearchParams = new URL(requestedUrl);
|
|
411
|
+
urlWithoutSearchParams.search = '';
|
|
412
|
+
const routeWithNoSearchParams = readRouteCacheEntry(now, (0, _cachekey.createCacheKey)(urlWithoutSearchParams.href, nextUrl));
|
|
413
|
+
if (routeWithNoSearchParams === null || routeWithNoSearchParams.status !== _cachemap.EntryStatus.Fulfilled) {
|
|
414
|
+
// Bail out of constructing an optimistic route tree. This will result in
|
|
415
|
+
// a blocking, unprefetched navigation.
|
|
416
|
+
return null;
|
|
417
|
+
}
|
|
418
|
+
// Now we have a base route tree we can "patch" with our optimistic values.
|
|
419
|
+
// Optimistically assume that redirects for the requested pathname do
|
|
420
|
+
// not vary on the search string. Therefore, if the base route was
|
|
421
|
+
// redirected to a different search string, then the optimistic route
|
|
422
|
+
// should be redirected to the same search string. Otherwise, we use
|
|
423
|
+
// the requested search string.
|
|
424
|
+
const canonicalUrlForRouteWithNoSearchParams = new URL(routeWithNoSearchParams.canonicalUrl, requestedUrl.origin);
|
|
425
|
+
const optimisticCanonicalSearch = canonicalUrlForRouteWithNoSearchParams.search !== '' ? canonicalUrlForRouteWithNoSearchParams.search : requestedSearch;
|
|
426
|
+
// Similarly, optimistically assume that rewrites for the requested
|
|
427
|
+
// pathname do not vary on the search string. Therefore, if the base
|
|
428
|
+
// route was rewritten to a different search string, then the optimistic
|
|
429
|
+
// route should be rewritten to the same search string. Otherwise, we use
|
|
430
|
+
// the requested search string.
|
|
431
|
+
const optimisticRenderedSearch = routeWithNoSearchParams.renderedSearch !== '' ? routeWithNoSearchParams.renderedSearch : requestedSearch;
|
|
432
|
+
const optimisticUrl = new URL(routeWithNoSearchParams.canonicalUrl, location.origin);
|
|
433
|
+
optimisticUrl.search = optimisticCanonicalSearch;
|
|
434
|
+
const optimisticCanonicalUrl = (0, _createhreffromurl.createHrefFromUrl)(optimisticUrl);
|
|
435
|
+
const optimisticRouteTree = deprecated_createOptimisticRouteTree(routeWithNoSearchParams.tree, optimisticRenderedSearch);
|
|
436
|
+
const optimisticMetadataTree = deprecated_createOptimisticRouteTree(routeWithNoSearchParams.metadata, optimisticRenderedSearch);
|
|
437
|
+
// Clone the base route tree, and override the relevant fields with our
|
|
438
|
+
// optimistic values.
|
|
439
|
+
const optimisticEntry = {
|
|
440
|
+
canonicalUrl: optimisticCanonicalUrl,
|
|
441
|
+
status: _cachemap.EntryStatus.Fulfilled,
|
|
442
|
+
// This isn't cloned because it's instance-specific
|
|
443
|
+
blockedTasks: null,
|
|
444
|
+
tree: optimisticRouteTree,
|
|
445
|
+
metadata: optimisticMetadataTree,
|
|
446
|
+
couldBeIntercepted: routeWithNoSearchParams.couldBeIntercepted,
|
|
447
|
+
supportsPerSegmentPrefetching: routeWithNoSearchParams.supportsPerSegmentPrefetching,
|
|
448
|
+
hasDynamicRewrite: routeWithNoSearchParams.hasDynamicRewrite,
|
|
449
|
+
// Override the rendered search with the optimistic value.
|
|
450
|
+
renderedSearch: optimisticRenderedSearch,
|
|
451
|
+
// Map-related fields
|
|
452
|
+
ref: null,
|
|
453
|
+
size: 0,
|
|
454
|
+
staleAt: routeWithNoSearchParams.staleAt,
|
|
455
|
+
version: routeWithNoSearchParams.version
|
|
456
|
+
};
|
|
457
|
+
// Do not insert this entry into the cache. It only exists so we can
|
|
458
|
+
// perform the current navigation. Just return it to the caller.
|
|
459
|
+
return optimisticEntry;
|
|
460
|
+
}
|
|
461
|
+
function deprecated_createOptimisticRouteTree(tree, newRenderedSearch) {
|
|
462
|
+
// Create a new route tree that identical to the original one except for
|
|
463
|
+
// the rendered search string, which is contained in the vary path.
|
|
464
|
+
let clonedSlots = null;
|
|
465
|
+
const originalSlots = tree.slots;
|
|
466
|
+
if (originalSlots !== null) {
|
|
467
|
+
clonedSlots = new Map();
|
|
468
|
+
for (const [parallelRouteKey, childTree] of originalSlots){
|
|
469
|
+
clonedSlots.set(parallelRouteKey, deprecated_createOptimisticRouteTree(childTree, newRenderedSearch));
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
// We only need to clone the vary path if the route is a page.
|
|
473
|
+
if (tree.isPage) {
|
|
474
|
+
// The shell vary path Fallbacks search params, so it's unaffected by the
|
|
475
|
+
// new rendered search and can be reused as-is.
|
|
476
|
+
return {
|
|
477
|
+
requestKey: tree.requestKey,
|
|
478
|
+
segment: tree.segment,
|
|
479
|
+
shellVaryPath: tree.shellVaryPath,
|
|
480
|
+
refreshState: tree.refreshState,
|
|
481
|
+
varyPath: (0, _varypath.clonePageVaryPathWithNewSearchParams)(tree.varyPath, newRenderedSearch),
|
|
482
|
+
isPage: true,
|
|
483
|
+
slots: clonedSlots,
|
|
484
|
+
prefetchHints: tree.prefetchHints
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
return {
|
|
488
|
+
requestKey: tree.requestKey,
|
|
489
|
+
segment: tree.segment,
|
|
490
|
+
shellVaryPath: tree.shellVaryPath,
|
|
491
|
+
refreshState: tree.refreshState,
|
|
492
|
+
varyPath: tree.varyPath,
|
|
493
|
+
isPage: false,
|
|
494
|
+
slots: clonedSlots,
|
|
495
|
+
prefetchHints: tree.prefetchHints
|
|
496
|
+
};
|
|
497
|
+
}
|
|
498
|
+
function readOrCreateSegmentCacheEntry(now, // The map the calling task operates in (`PrefetchTask.segmentCacheMap`,
|
|
499
|
+
// captured when the task was scheduled).
|
|
500
|
+
map, fetchStrategy, tree) {
|
|
501
|
+
const existingEntry = (0, _cachemap.getFromCacheMap)(now, getCurrentSegmentCacheVersion(), map, tree.varyPath, false, false);
|
|
502
|
+
if (existingEntry !== null) {
|
|
503
|
+
return existingEntry;
|
|
504
|
+
}
|
|
505
|
+
return insertEmptySegmentCacheEntry(now, map, fetchStrategy, tree);
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Creates an empty segment cache entry and inserts it into the cache, keyed
|
|
509
|
+
* at the vary path a request made with the given fetch strategy is stored
|
|
510
|
+
* under. The stale time is set to a default value; the actual stale time will
|
|
511
|
+
* be set when the entry is fulfilled with data from the server response.
|
|
512
|
+
*/ function insertEmptySegmentCacheEntry(now, map, fetchStrategy, tree) {
|
|
513
|
+
const varyPathForRequest = (0, _varypath.getSegmentVaryPathForRequest)(fetchStrategy, tree);
|
|
514
|
+
const emptyEntry = createDetachedSegmentCacheEntry(now);
|
|
515
|
+
const isRevalidation = false;
|
|
516
|
+
(0, _cachemap.setInCacheMap)(map, varyPathForRequest, emptyEntry, isRevalidation);
|
|
517
|
+
return emptyEntry;
|
|
518
|
+
}
|
|
519
|
+
function readOrCreateRevalidatingSegmentEntry(now, // The map the calling task operates in (`PrefetchTask.segmentCacheMap`).
|
|
520
|
+
map, fetchStrategy, tree) {
|
|
521
|
+
// This function is called when we've already confirmed that a particular
|
|
522
|
+
// segment is cached, but we want to perform another request anyway in case it
|
|
523
|
+
// returns more complete and/or fresher data than we already have. The logic
|
|
524
|
+
// for deciding whether to replace the existing entry is handled elsewhere;
|
|
525
|
+
// this function just handles retrieving a cache entry that we can use to
|
|
526
|
+
// track the revalidation.
|
|
527
|
+
//
|
|
528
|
+
// The reason revalidations are stored in the cache is because we need to be
|
|
529
|
+
// able to dedupe multiple revalidation requests. The reason they have to be
|
|
530
|
+
// handled specially is because we shouldn't overwrite a "normal" entry if
|
|
531
|
+
// one exists at the same keypath. So, for each internal cache location, there
|
|
532
|
+
// is a special "revalidation" slot that is used solely for this purpose.
|
|
533
|
+
//
|
|
534
|
+
// You can think of it as if all the revalidation entries were stored in a
|
|
535
|
+
// separate cache map from the canonical entries, and then transfered to the
|
|
536
|
+
// canonical cache map once the request is complete — this isn't how it's
|
|
537
|
+
// actually implemented, since it's more efficient to store them in the same
|
|
538
|
+
// data structure as the normal entries, but that's how it's modeled
|
|
539
|
+
// conceptually.
|
|
540
|
+
// TODO: Once we implement Fallback behavior for params, where an entry is
|
|
541
|
+
// re-keyed based on response information, we'll need to account for the
|
|
542
|
+
// possibility that the keypath of the previous entry is more generic than
|
|
543
|
+
// the keypath of the revalidating entry. In other words, the server could
|
|
544
|
+
// return a less generic entry upon revalidation. For now, though, this isn't
|
|
545
|
+
// a concern because the keypath is based solely on the prefetch strategy,
|
|
546
|
+
// not on data contained in the response.
|
|
547
|
+
const existingEntry = readRevalidatingSegmentCacheEntry(now, map, tree.varyPath);
|
|
548
|
+
if (existingEntry !== null) {
|
|
549
|
+
return existingEntry;
|
|
550
|
+
}
|
|
551
|
+
// Create a pending entry and add it to the cache. The stale time is set to a
|
|
552
|
+
// default value; the actual stale time will be set when the entry is
|
|
553
|
+
// fulfilled with data from the server response.
|
|
554
|
+
const varyPathForRequest = (0, _varypath.getSegmentVaryPathForRequest)(fetchStrategy, tree);
|
|
555
|
+
const pendingEntry = createDetachedSegmentCacheEntry(now);
|
|
556
|
+
const isRevalidation = true;
|
|
557
|
+
(0, _cachemap.setInCacheMap)(map, varyPathForRequest, pendingEntry, isRevalidation);
|
|
558
|
+
return pendingEntry;
|
|
559
|
+
}
|
|
560
|
+
function overwriteRevalidatingSegmentCacheEntry(now, // The map the calling task operates in (`PrefetchTask.segmentCacheMap`).
|
|
561
|
+
map, fetchStrategy, tree) {
|
|
562
|
+
// This function is called when we've already decided to replace an existing
|
|
563
|
+
// revalidation entry. Create a new entry and write it into the cache,
|
|
564
|
+
// overwriting the previous value. The stale time is set to a default value;
|
|
565
|
+
// the actual stale time will be set when the entry is fulfilled with data
|
|
566
|
+
// from the server response.
|
|
567
|
+
const varyPathForRequest = (0, _varypath.getSegmentVaryPathForRequest)(fetchStrategy, tree);
|
|
568
|
+
const pendingEntry = createDetachedSegmentCacheEntry(now);
|
|
569
|
+
const isRevalidation = true;
|
|
570
|
+
(0, _cachemap.setInCacheMap)(map, varyPathForRequest, pendingEntry, isRevalidation);
|
|
571
|
+
return pendingEntry;
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Whether an existing cache entry is preferred over an incoming candidate —
|
|
575
|
+
* i.e. the candidate does NOT supersede it. (On an exact tie — same fetch
|
|
576
|
+
* strategy, same partialness — this returns false, so the candidate replaces
|
|
577
|
+
* the existing entry.) This is the precedence rule used both when deciding
|
|
578
|
+
* whether an upsert may replace the entry at its own keypath, and when
|
|
579
|
+
* deciding whether an entry at a more specific keypath may be evicted because
|
|
580
|
+
* it shadows a just-inserted candidate (see `evictShadowingSegmentEntries`).
|
|
581
|
+
*
|
|
582
|
+
* Note that "less/more specific" in the comments below refers to fetch
|
|
583
|
+
* strategy content tiers (how much content a strategy can produce), not the
|
|
584
|
+
* vary-path specificity the eviction docs are concerned with.
|
|
585
|
+
*/ function isExistingSegmentEntryPreferred(existingEntry, candidateEntry) {
|
|
586
|
+
return(// We fetched the new segment using a different, less specific fetch
|
|
587
|
+
// strategy than the segment we already have in the cache, so it can't
|
|
588
|
+
// have more content.
|
|
589
|
+
candidateEntry.fetchStrategy !== existingEntry.fetchStrategy && !canNewFetchStrategyProvideMoreContent(existingEntry.fetchStrategy, candidateEntry.fetchStrategy) || // The existing entry isn't partial, but the new one is.
|
|
590
|
+
// (TODO: can this be true if `candidateEntry.fetchStrategy >= existingEntry.fetchStrategy`?)
|
|
591
|
+
!existingEntry.isPartial && candidateEntry.isPartial);
|
|
592
|
+
}
|
|
593
|
+
function upsertSegmentEntry(now, // The map the whole upsert (existing-entry read, insert, shadow eviction)
|
|
594
|
+
// operates in. Prefetch response-write paths pass the spawning task's map
|
|
595
|
+
// (`PrefetchTask.segmentCacheMap`), so a response that lands after a
|
|
596
|
+
// testing-lock scope boundary still writes into the map its entries
|
|
597
|
+
// live in.
|
|
598
|
+
map, varyPath, candidateEntry, // The fully concrete vary path a read for this segment position resolves
|
|
599
|
+
// against (all concrete param values, i.e. `tree.varyPath`) — the most
|
|
600
|
+
// specific path a read would use. Note this is the opposite of the
|
|
601
|
+
// generalized keying path that `getSegmentVaryPathForRequest` computes.
|
|
602
|
+
// Used to detect and evict stale entries at more specific keypaths that
|
|
603
|
+
// would otherwise shadow the candidate. Pass null when there's no request
|
|
604
|
+
// context; the shadow check is skipped.
|
|
605
|
+
lookupVaryPath) {
|
|
606
|
+
// We have a new entry that has not yet been inserted into the cache. Before
|
|
607
|
+
// we do so, we need to confirm whether it takes precedence over the existing
|
|
608
|
+
// entry (if one exists).
|
|
609
|
+
// TODO: We should not upsert an entry if its key was invalidated in the time
|
|
610
|
+
// since the request was made. We can do that by passing the "owner" entry to
|
|
611
|
+
// this function and confirming it's the same as `existingEntry`.
|
|
612
|
+
if ((0, _cachemap.isValueExpired)(now, getCurrentSegmentCacheVersion(), candidateEntry)) {
|
|
613
|
+
// The entry is expired. We cannot upsert it.
|
|
614
|
+
return null;
|
|
615
|
+
}
|
|
616
|
+
const existingEntry = (0, _cachemap.getFromCacheMap)(now, getCurrentSegmentCacheVersion(), map, varyPath, false, false);
|
|
617
|
+
if (existingEntry !== null) {
|
|
618
|
+
// Don't replace a more specific segment with a less-specific one. A case where this
|
|
619
|
+
// might happen is if the existing segment was fetched via
|
|
620
|
+
// `<Link prefetch={true}>`.
|
|
621
|
+
if (isExistingSegmentEntryPreferred(existingEntry, candidateEntry)) {
|
|
622
|
+
// The candidate does not supersede the existing entry. Leave the
|
|
623
|
+
// existing entry in place and discard the candidate by not inserting it.
|
|
624
|
+
//
|
|
625
|
+
// We must not mutate the candidate here (e.g. downgrade it to Rejected or
|
|
626
|
+
// null out its `rsc`). The caller does not transfer exclusive ownership
|
|
627
|
+
// of it: it may already have been fulfilled, resolving its promise to a
|
|
628
|
+
// waiter that holds the entry and reads `rsc` off it later. A navigation
|
|
629
|
+
// seed is such a waiter, via `waitForSegmentCacheEntry`. Nulling `rsc`
|
|
630
|
+
// after the fact resolves that read to `null`, so the waiter loses the
|
|
631
|
+
// data it was about to render. Declining to insert it is enough: the
|
|
632
|
+
// existing entry stays canonical, and the candidate keeps its valid (if
|
|
633
|
+
// less complete) data for any waiter that already took it.
|
|
634
|
+
return null;
|
|
635
|
+
}
|
|
636
|
+
// Ping any tasks blocked on the existing entry before replacing it so they
|
|
637
|
+
// re-run and pick up the new entry. Without this, tasks waiting on the
|
|
638
|
+
// existing Empty/Pending entry would be stranded — the new fulfilled
|
|
639
|
+
// candidate has no blockedTasks of its own.
|
|
640
|
+
if (existingEntry.status === _cachemap.EntryStatus.Empty || existingEntry.status === _cachemap.EntryStatus.Pending) {
|
|
641
|
+
pingBlockedTasks(existingEntry);
|
|
642
|
+
}
|
|
643
|
+
// Replace the existing entry by writing the candidate over its keypath
|
|
644
|
+
// below (the same mechanism `overwriteRevalidatingSegmentCacheEntry`
|
|
645
|
+
// uses). We intentionally do NOT call `deleteFromCacheMap` first: deleting
|
|
646
|
+
// vacates the canonical slot, and `deleteMapEntry` promotes a pending
|
|
647
|
+
// Revalidation-slot entry into the vacated slot — which the immediate
|
|
648
|
+
// insert below would then silently overwrite. The in-flight revalidation
|
|
649
|
+
// would vanish from the map, so the next scheduler pass would find an
|
|
650
|
+
// empty revalidation slot and spawn a duplicate request instead of
|
|
651
|
+
// deduping against it. Replacing in place never vacates the slot, so
|
|
652
|
+
// promotion never runs and the pending revalidating entry stays in its
|
|
653
|
+
// Revalidation slot where `readOrCreateRevalidatingSegmentEntry`'s dedupe
|
|
654
|
+
// finds it.
|
|
655
|
+
//
|
|
656
|
+
// The displaced entry's map/LRU accounting is handled by the replacement
|
|
657
|
+
// itself: `setMapEntryValue` drops the displaced value's `ref` and
|
|
658
|
+
// `updateLruSize` swaps its size for the candidate's, which is exactly
|
|
659
|
+
// what delete-then-insert did.
|
|
660
|
+
}
|
|
661
|
+
const isRevalidation = false;
|
|
662
|
+
(0, _cachemap.setInCacheMap)(map, varyPath, candidateEntry, isRevalidation);
|
|
663
|
+
if (lookupVaryPath !== null) {
|
|
664
|
+
evictShadowingSegmentEntries(now, map, lookupVaryPath, candidateEntry);
|
|
665
|
+
}
|
|
666
|
+
return candidateEntry;
|
|
667
|
+
}
|
|
668
|
+
/**
|
|
669
|
+
* Evicts stale entries at more specific keypaths that shadow a just-inserted
|
|
670
|
+
* candidate entry.
|
|
671
|
+
*
|
|
672
|
+
* A response can be written to the cache at a MORE GENERIC vary path than the
|
|
673
|
+
* path the request was issued against — for example, the server may report
|
|
674
|
+
* that a segment doesn't vary on a param, so the entry is re-keyed with that
|
|
675
|
+
* param as Fallback. Meanwhile, an older, less useful entry can exist at a
|
|
676
|
+
* more specific path within the same fallback chain — for example, a partial
|
|
677
|
+
* shell entry keyed with root params concrete (see
|
|
678
|
+
* `getShellSegmentVaryPath`). Because segment lookup is
|
|
679
|
+
* most-specific-match-wins, every subsequent read at the concrete request
|
|
680
|
+
* path keeps returning the stale specific entry, and the more complete
|
|
681
|
+
* generic entry is unreachable from that URL. That both wastes the completed
|
|
682
|
+
* request and can loop: a prefetch task that revalidated the segment reads
|
|
683
|
+
* back the same stale entry, decides it needs to revalidate again, and
|
|
684
|
+
* repeats forever.
|
|
685
|
+
*
|
|
686
|
+
* The upsert is the one moment we know the ordering between the two entries:
|
|
687
|
+
* the candidate was produced by a request for this segment position, and
|
|
688
|
+
* `lookupVaryPath` is the fully concrete path a read for that position
|
|
689
|
+
* resolves against, so any entry that a read at that path would return in the
|
|
690
|
+
* candidate's stead is directly comparable to it. If such an entry is settled
|
|
691
|
+
* and the candidate supersedes it — under the same precedence rules the
|
|
692
|
+
* upsert applies at its own keypath — we know we never want to match against
|
|
693
|
+
* it again, so delete it, making the candidate reachable.
|
|
694
|
+
*
|
|
695
|
+
* Non-settled entries are never evicted here: a Pending entry is owned by an
|
|
696
|
+
* in-flight request that will settle it, and an Empty entry is a placeholder
|
|
697
|
+
* that a scheduler pass may still claim and upgrade.
|
|
698
|
+
*/ function evictShadowingSegmentEntries(now, map, lookupVaryPath, candidateEntry) {
|
|
699
|
+
// There can in principle be multiple shadowing entries at successively less
|
|
700
|
+
// specific keypaths, so loop until the read returns the candidate (or an
|
|
701
|
+
// entry we don't supersede). Each iteration re-reads and re-checks from
|
|
702
|
+
// scratch (in part because `deleteFromCacheMap` can promote a settled
|
|
703
|
+
// Revalidation-slot value into the just-vacated slot, surfacing a new entry
|
|
704
|
+
// at the same keypath). Each iteration deletes an entry from the map, so
|
|
705
|
+
// the loop terminates naturally; the bound is defensive, and 32 is far
|
|
706
|
+
// beyond any real fallback chain, which is bounded by the vary
|
|
707
|
+
// path's length.
|
|
708
|
+
for(let i = 0; i < 32; i++){
|
|
709
|
+
const shadowEntry = (0, _cachemap.getFromCacheMap)(now, getCurrentSegmentCacheVersion(), map, lookupVaryPath, false, false);
|
|
710
|
+
if (shadowEntry === null || shadowEntry === candidateEntry) {
|
|
711
|
+
// The candidate is reachable from the lookup path (or the read missed
|
|
712
|
+
// entirely, e.g. because the candidate expired). Done.
|
|
713
|
+
return;
|
|
714
|
+
}
|
|
715
|
+
if (shadowEntry.status !== _cachemap.EntryStatus.Fulfilled && shadowEntry.status !== _cachemap.EntryStatus.Rejected) {
|
|
716
|
+
// Only settled entries may be evicted. A Pending entry is held by an
|
|
717
|
+
// in-flight request and will settle on its own.
|
|
718
|
+
return;
|
|
719
|
+
}
|
|
720
|
+
if (isExistingSegmentEntryPreferred(shadowEntry, candidateEntry)) {
|
|
721
|
+
// The shadowing entry is preferred over the candidate (e.g. it's a
|
|
722
|
+
// complete entry fetched with a more specific strategy). Leave it —
|
|
723
|
+
// reads at this path should keep matching it.
|
|
724
|
+
return;
|
|
725
|
+
}
|
|
726
|
+
// The candidate supersedes the shadowing entry. Evict it. Settled entries
|
|
727
|
+
// shouldn't have blocked tasks (Fulfilled always has `blockedTasks:
|
|
728
|
+
// null`, and Rejected entries were pinged at rejection), but ping
|
|
729
|
+
// defensively before deleting, matching the upsert-evict pattern above.
|
|
730
|
+
pingBlockedTasks(shadowEntry);
|
|
731
|
+
(0, _cachemap.deleteFromCacheMap)(shadowEntry);
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
function createDetachedSegmentCacheEntry(now) {
|
|
735
|
+
// Default stale time for pending segment cache entries. The actual stale time
|
|
736
|
+
// is set when the entry is fulfilled with data from the server response.
|
|
737
|
+
const staleAt = now + 30 * 1000;
|
|
738
|
+
const emptyEntry = {
|
|
739
|
+
status: _cachemap.EntryStatus.Empty,
|
|
740
|
+
blockedTasks: null,
|
|
741
|
+
// Default to assuming the fetch strategy will be PPR. This will be updated
|
|
742
|
+
// when a fetch is actually initiated.
|
|
743
|
+
fetchStrategy: _types.FetchStrategy.PPR,
|
|
744
|
+
rsc: null,
|
|
745
|
+
isPartial: true,
|
|
746
|
+
isUpgradeableISRFallback: false,
|
|
747
|
+
promise: null,
|
|
748
|
+
// Map-related fields
|
|
749
|
+
ref: null,
|
|
750
|
+
size: 0,
|
|
751
|
+
staleAt,
|
|
752
|
+
version: 0
|
|
753
|
+
};
|
|
754
|
+
return emptyEntry;
|
|
755
|
+
}
|
|
756
|
+
function upgradeToPendingSegment(emptyEntry, fetchStrategy) {
|
|
757
|
+
const pendingEntry = emptyEntry;
|
|
758
|
+
pendingEntry.status = _cachemap.EntryStatus.Pending;
|
|
759
|
+
pendingEntry.fetchStrategy = fetchStrategy;
|
|
760
|
+
if (fetchStrategy === _types.FetchStrategy.Full) {
|
|
761
|
+
// We can assume the response will contain the full segment data. Set this
|
|
762
|
+
// to false so we know it's OK to omit this segment from any navigation
|
|
763
|
+
// requests that may happen while the data is still pending.
|
|
764
|
+
pendingEntry.isPartial = false;
|
|
765
|
+
}
|
|
766
|
+
// Set the version here, since this is right before the request is initiated.
|
|
767
|
+
// The next time the segment cache version is incremented, the entry will
|
|
768
|
+
// effectively be evicted. This happens before initiating the request, rather
|
|
769
|
+
// than when receiving the response, because it's guaranteed to happen
|
|
770
|
+
// before the data is read on the server.
|
|
771
|
+
pendingEntry.version = getCurrentSegmentCacheVersion();
|
|
772
|
+
return pendingEntry;
|
|
773
|
+
}
|
|
774
|
+
function attemptToFulfillDynamicSegmentFromBFCache(now, segment, tree) {
|
|
775
|
+
// Attempts to fulfill an empty segment cache entry using data from the
|
|
776
|
+
// bfcache. This is only valid during a Full prefetch (i.e. one that includes
|
|
777
|
+
// dynamic data), because the bfcache stores data from navigations which
|
|
778
|
+
// always include dynamic data.
|
|
779
|
+
// We always use the canonical vary path when checking the bfcache. This is
|
|
780
|
+
// the same operation we'd use to access the cache during a
|
|
781
|
+
// regular navigation.
|
|
782
|
+
const varyPath = tree.varyPath;
|
|
783
|
+
// Read from the BFCache without expiring it (pass -1). We check freshness
|
|
784
|
+
// ourselves using navigatedAt, because the BFCache's staleAt may have been
|
|
785
|
+
// overridden by a per-page unstable_dynamicStaleTime and can't be used to
|
|
786
|
+
// derive the original request time.
|
|
787
|
+
const bfcacheEntry = (0, _bfcache.readFromBFCache)(varyPath);
|
|
788
|
+
if (bfcacheEntry !== null) {
|
|
789
|
+
// The stale time for dynamic prefetches (default: 5 mins) is different
|
|
790
|
+
// from the stale time for regular navigations (default: 0 secs). Use
|
|
791
|
+
// navigatedAt to compute the correct expiry for prefetch purposes.
|
|
792
|
+
const dynamicPrefetchStaleAt = bfcacheEntry.navigatedAt + _navigatereducer.STATIC_STALETIME_MS;
|
|
793
|
+
if (now > dynamicPrefetchStaleAt) {
|
|
794
|
+
return null;
|
|
795
|
+
}
|
|
796
|
+
const pendingSegment = upgradeToPendingSegment(segment, _types.FetchStrategy.Full);
|
|
797
|
+
const isPartial = false;
|
|
798
|
+
return fulfillSegmentCacheEntry(pendingSegment, bfcacheEntry.rsc, dynamicPrefetchStaleAt, isPartial, // bfcache data is concrete, never an ISR fallback.
|
|
799
|
+
false, _types.FetchStrategy.Full);
|
|
800
|
+
}
|
|
801
|
+
return null;
|
|
802
|
+
}
|
|
803
|
+
function attemptToUpgradeSegmentFromBFCache(now, // The map the calling task operates in (`PrefetchTask.segmentCacheMap`).
|
|
804
|
+
map, tree) {
|
|
805
|
+
const varyPath = tree.varyPath;
|
|
806
|
+
const bfcacheEntry = (0, _bfcache.readFromBFCache)(varyPath);
|
|
807
|
+
if (bfcacheEntry !== null) {
|
|
808
|
+
const dynamicPrefetchStaleAt = bfcacheEntry.navigatedAt + _navigatereducer.STATIC_STALETIME_MS;
|
|
809
|
+
if (now > dynamicPrefetchStaleAt) {
|
|
810
|
+
return null;
|
|
811
|
+
}
|
|
812
|
+
const pendingSegment = upgradeToPendingSegment(createDetachedSegmentCacheEntry(now), _types.FetchStrategy.Full);
|
|
813
|
+
const isPartial = false;
|
|
814
|
+
const newEntry = fulfillSegmentCacheEntry(pendingSegment, bfcacheEntry.rsc, dynamicPrefetchStaleAt, isPartial, // bfcache data is concrete, never an ISR fallback.
|
|
815
|
+
false, _types.FetchStrategy.Full);
|
|
816
|
+
const segmentVaryPath = (0, _varypath.getSegmentVaryPathForRequest)(_types.FetchStrategy.Full, tree);
|
|
817
|
+
const upserted = upsertSegmentEntry(now, map, segmentVaryPath, newEntry, // The concrete lookup path this BFCache upgrade applies to. (In
|
|
818
|
+
// practice a Full request path is already fully concrete, so nothing
|
|
819
|
+
// can shadow the new entry and the shadow check is a no-op.)
|
|
820
|
+
tree.varyPath);
|
|
821
|
+
if (upserted !== null && upserted.status === _cachemap.EntryStatus.Fulfilled) {
|
|
822
|
+
return upserted;
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
return null;
|
|
826
|
+
}
|
|
827
|
+
function pingBlockedTasks(entry) {
|
|
828
|
+
const blockedTasks = entry.blockedTasks;
|
|
829
|
+
if (blockedTasks !== null) {
|
|
830
|
+
for (const task of blockedTasks){
|
|
831
|
+
(0, _scheduler.pingPrefetchTask)(task);
|
|
832
|
+
}
|
|
833
|
+
entry.blockedTasks = null;
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
function createMetadataRouteTree(metadataVaryPath) {
|
|
837
|
+
// The Head is not actually part of the route tree, but other than that, it's
|
|
838
|
+
// fetched and cached like a segment. Some functions expect a RouteTree
|
|
839
|
+
// object, so rather than fork the logic in all those places, we use this
|
|
840
|
+
// "fake" one.
|
|
841
|
+
const metadata = {
|
|
842
|
+
requestKey: _segmentvalueencoding.HEAD_REQUEST_KEY,
|
|
843
|
+
segment: _segmentvalueencoding.HEAD_REQUEST_KEY,
|
|
844
|
+
shellVaryPath: (0, _varypath.getShellSegmentVaryPath)(metadataVaryPath),
|
|
845
|
+
refreshState: null,
|
|
846
|
+
varyPath: metadataVaryPath,
|
|
847
|
+
// The metadata isn't really a "page" (though it isn't really a "segment"
|
|
848
|
+
// either) but for the purposes of how this field is used, it behaves like
|
|
849
|
+
// one. If this logic ever gets more complex we can change this to an enum.
|
|
850
|
+
isPage: true,
|
|
851
|
+
slots: null,
|
|
852
|
+
prefetchHints: 0
|
|
853
|
+
};
|
|
854
|
+
return metadata;
|
|
855
|
+
}
|
|
856
|
+
function fulfillRouteCacheEntry(now, entry, tree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching) {
|
|
857
|
+
// Get the rendered search from the vary path
|
|
858
|
+
const renderedSearch = (0, _varypath.getRenderedSearchFromVaryPath)(metadataVaryPath) ?? '';
|
|
859
|
+
const fulfilledEntry = entry;
|
|
860
|
+
fulfilledEntry.status = _cachemap.EntryStatus.Fulfilled;
|
|
861
|
+
fulfilledEntry.tree = tree;
|
|
862
|
+
fulfilledEntry.metadata = createMetadataRouteTree(metadataVaryPath);
|
|
863
|
+
// Route structure is essentially static — it only changes on deploy.
|
|
864
|
+
// Always use the static stale time.
|
|
865
|
+
// NOTE: An exception is rewrites/redirects in middleware or proxy, which can
|
|
866
|
+
// change routes dynamically. We have other strategies for handling those.
|
|
867
|
+
//
|
|
868
|
+
// If the route tree has stale inlining hints (e.g. the initial RSC payload
|
|
869
|
+
// for a build-time static page, generated before collectPrefetchHints ran),
|
|
870
|
+
// immediately expire the entry so it gets re-fetched with correct hints.
|
|
871
|
+
// The segment data itself is still valid — only the route tree (which
|
|
872
|
+
// contains the hint bits) needs to be re-fetched.
|
|
873
|
+
if (tree.prefetchHints & _approutertypes.PrefetchHint.InliningHintsStale) {
|
|
874
|
+
fulfilledEntry.staleAt = -1;
|
|
875
|
+
} else {
|
|
876
|
+
fulfilledEntry.staleAt = now + _navigatereducer.STATIC_STALETIME_MS;
|
|
877
|
+
}
|
|
878
|
+
fulfilledEntry.couldBeIntercepted = couldBeIntercepted;
|
|
879
|
+
fulfilledEntry.canonicalUrl = canonicalUrl;
|
|
880
|
+
fulfilledEntry.renderedSearch = renderedSearch;
|
|
881
|
+
fulfilledEntry.supportsPerSegmentPrefetching = supportsPerSegmentPrefetching;
|
|
882
|
+
fulfilledEntry.hasDynamicRewrite = false;
|
|
883
|
+
pingBlockedTasks(entry);
|
|
884
|
+
return fulfilledEntry;
|
|
885
|
+
}
|
|
886
|
+
function writeRouteIntoCache(now, pathname, search, nextUrl, tree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching) {
|
|
887
|
+
const pendingEntry = createDetachedRouteCacheEntry();
|
|
888
|
+
const fulfilledEntry = fulfillRouteCacheEntry(now, pendingEntry, tree, metadataVaryPath, couldBeIntercepted, canonicalUrl, supportsPerSegmentPrefetching);
|
|
889
|
+
const varyPath = (0, _varypath.getFulfilledRouteVaryPath)(pathname, search, nextUrl, couldBeIntercepted);
|
|
890
|
+
const isRevalidation = false;
|
|
891
|
+
(0, _cachemap.setInCacheMap)(routeCacheMap, varyPath, fulfilledEntry, isRevalidation);
|
|
892
|
+
return fulfilledEntry;
|
|
893
|
+
}
|
|
894
|
+
function markRouteEntryAsDynamicRewrite(entry) {
|
|
895
|
+
entry.hasDynamicRewrite = true;
|
|
896
|
+
// Note: The caller is responsible for also calling invalidateRouteCacheEntries
|
|
897
|
+
// to invalidate other entries that may have been derived from this template
|
|
898
|
+
// before we knew it had a dynamic rewrite.
|
|
899
|
+
}
|
|
900
|
+
function fulfillSegmentCacheEntry(segmentCacheEntry, rsc, staleAt, isPartial, // Only static (per-segment PPR) responses can be ISR fallbacks; all other
|
|
901
|
+
// callers pass false. Always assigned (even when false) so that re-fulfilling
|
|
902
|
+
// a previously-fallback entry with a concrete response clears the flag and
|
|
903
|
+
// ends the retry loop.
|
|
904
|
+
isUpgradeableISRFallback, // The strategy tier describing the CONTENT this entry is fulfilled with —
|
|
905
|
+
// which comes from the response, not the tier the entry was requested at.
|
|
906
|
+
// Usually the two agree, but when a response's shell payload IS the full
|
|
907
|
+
// response (no shell/full split), shell-spawned entries are fulfilled with
|
|
908
|
+
// full-tier content and recorded as such (see the promotion in
|
|
909
|
+
// writeSegmentBundleResponse). Always assigned, replacing
|
|
910
|
+
// the spawn-time strategy set by upgradeToPendingSegment; the write walks'
|
|
911
|
+
// matching and keying decisions all happen against the spawn-time
|
|
912
|
+
// strategy, before fulfillment, so they are unaffected. See
|
|
913
|
+
// SegmentCacheEntryShared['fetchStrategy'].
|
|
914
|
+
fetchStrategy) {
|
|
915
|
+
const fulfilledEntry = segmentCacheEntry;
|
|
916
|
+
fulfilledEntry.status = _cachemap.EntryStatus.Fulfilled;
|
|
917
|
+
fulfilledEntry.rsc = rsc;
|
|
918
|
+
fulfilledEntry.staleAt = staleAt;
|
|
919
|
+
fulfilledEntry.isPartial = isPartial;
|
|
920
|
+
fulfilledEntry.isUpgradeableISRFallback = isUpgradeableISRFallback;
|
|
921
|
+
fulfilledEntry.fetchStrategy = fetchStrategy;
|
|
922
|
+
// Resolve any listeners that were waiting for this data.
|
|
923
|
+
if (segmentCacheEntry.promise !== null) {
|
|
924
|
+
segmentCacheEntry.promise.resolve(fulfilledEntry);
|
|
925
|
+
// Free the promise for garbage collection.
|
|
926
|
+
fulfilledEntry.promise = null;
|
|
927
|
+
}
|
|
928
|
+
pingBlockedTasks(segmentCacheEntry);
|
|
929
|
+
return fulfilledEntry;
|
|
930
|
+
}
|
|
931
|
+
function rejectRouteCacheEntry(entry, staleAt) {
|
|
932
|
+
const rejectedEntry = entry;
|
|
933
|
+
rejectedEntry.status = _cachemap.EntryStatus.Rejected;
|
|
934
|
+
rejectedEntry.staleAt = staleAt;
|
|
935
|
+
pingBlockedTasks(entry);
|
|
936
|
+
}
|
|
937
|
+
function rejectSegmentCacheEntry(entry, staleAt) {
|
|
938
|
+
const rejectedEntry = entry;
|
|
939
|
+
rejectedEntry.status = _cachemap.EntryStatus.Rejected;
|
|
940
|
+
rejectedEntry.staleAt = staleAt;
|
|
941
|
+
if (entry.promise !== null) {
|
|
942
|
+
// NOTE: We don't currently propagate the reason the prefetch was canceled
|
|
943
|
+
// but we could by accepting a `reason` argument.
|
|
944
|
+
entry.promise.resolve(null);
|
|
945
|
+
entry.promise = null;
|
|
946
|
+
}
|
|
947
|
+
pingBlockedTasks(entry);
|
|
948
|
+
}
|
|
949
|
+
function convertRootTreePrefetchToRouteTree(rootTree, renderedPathname, renderedSearch, acc) {
|
|
950
|
+
// Remove trailing and leading slashes
|
|
951
|
+
const pathnameParts = (0, _cachekey.splitPathnameIntoParts)(renderedPathname);
|
|
952
|
+
const index = 0;
|
|
953
|
+
const rootSegment = _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY;
|
|
954
|
+
return convertTreePrefetchToRouteTree(rootTree.tree, rootSegment, null, _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY, pathnameParts, index, renderedSearch, acc);
|
|
955
|
+
}
|
|
956
|
+
function convertTreePrefetchToRouteTree(prefetch, segment, partialVaryPath, requestKey, pathnameParts, pathnamePartsIndex, renderedSearch, acc) {
|
|
957
|
+
// Converts the route tree sent by the server into the format used by the
|
|
958
|
+
// cache. The cached version of the tree includes additional fields, such as a
|
|
959
|
+
// cache key for each segment. Since this is frequently accessed, we compute
|
|
960
|
+
// it once instead of on every access. This same cache key is also used to
|
|
961
|
+
// request the segment from the server.
|
|
962
|
+
let slots = null;
|
|
963
|
+
let isPage;
|
|
964
|
+
let varyPath;
|
|
965
|
+
const prefetchSlots = prefetch.slots;
|
|
966
|
+
if (prefetchSlots !== null) {
|
|
967
|
+
isPage = false;
|
|
968
|
+
varyPath = (0, _varypath.finalizeLayoutVaryPath)(requestKey, partialVaryPath);
|
|
969
|
+
slots = new Map();
|
|
970
|
+
for(let parallelRouteKey in prefetchSlots){
|
|
971
|
+
const childPrefetch = prefetchSlots[parallelRouteKey];
|
|
972
|
+
const childSegmentName = childPrefetch.name;
|
|
973
|
+
const childParam = childPrefetch.param;
|
|
974
|
+
let childDoesAppearInURL;
|
|
975
|
+
let childSegment;
|
|
976
|
+
let childPartialVaryPath;
|
|
977
|
+
if (childParam !== null) {
|
|
978
|
+
// This segment is parameterized. Get the param from the pathname.
|
|
979
|
+
const childParamValue = (0, _routeparams.parseDynamicParamFromURLPart)(childParam.type, pathnameParts, pathnamePartsIndex);
|
|
980
|
+
// Assign a cache key to the segment, based on the param value. In the
|
|
981
|
+
// pre-Segment Cache implementation, the server computes this and sends
|
|
982
|
+
// it in the body of the response. In the Segment Cache implementation,
|
|
983
|
+
// the server sends an empty string and we fill it in here.
|
|
984
|
+
// TODO: We're intentionally not adding the search param to page
|
|
985
|
+
// segments here; it's tracked separately and added back during a read.
|
|
986
|
+
// This would clearer if we waited to construct the segment until it's
|
|
987
|
+
// read from the cache, since that's effectively what we're
|
|
988
|
+
// doing anyway.
|
|
989
|
+
const childParamKey = // The server omits this field from the prefetch response when
|
|
990
|
+
// cacheComponents is enabled.
|
|
991
|
+
childParam.key !== null ? childParam.key : (0, _routeparams.getCacheKeyForDynamicParam)(childParamValue, '');
|
|
992
|
+
childPartialVaryPath = (0, _varypath.appendLayoutVaryPath)(partialVaryPath, childParamKey, childSegmentName, // The child's param is a root param iff the child segment is at or
|
|
993
|
+
// above the root layout, which the server marks directly.
|
|
994
|
+
(childPrefetch.prefetchHints & _approutertypes.PrefetchHint.IsRootLayoutOrAbove) !== 0);
|
|
995
|
+
childSegment = [
|
|
996
|
+
childSegmentName,
|
|
997
|
+
childParamKey,
|
|
998
|
+
childParam.type,
|
|
999
|
+
childParam.siblings
|
|
1000
|
+
];
|
|
1001
|
+
childDoesAppearInURL = true;
|
|
1002
|
+
} else {
|
|
1003
|
+
// This segment does not have a param. Inherit the partial vary path of
|
|
1004
|
+
// the parent.
|
|
1005
|
+
childPartialVaryPath = partialVaryPath;
|
|
1006
|
+
childSegment = childSegmentName;
|
|
1007
|
+
childDoesAppearInURL = (0, _routeparams.doesStaticSegmentAppearInURL)(childSegmentName);
|
|
1008
|
+
}
|
|
1009
|
+
// Only increment the index if the segment appears in the URL. If it's a
|
|
1010
|
+
// "virtual" segment, like a route group, it remains the same.
|
|
1011
|
+
const childPathnamePartsIndex = childDoesAppearInURL ? pathnamePartsIndex + 1 : pathnamePartsIndex;
|
|
1012
|
+
const childRequestKeyPart = (0, _segmentvalueencoding.createSegmentRequestKeyPart)(childSegment);
|
|
1013
|
+
const childRequestKey = (0, _segmentvalueencoding.appendSegmentRequestKeyPart)(requestKey, parallelRouteKey, childRequestKeyPart);
|
|
1014
|
+
slots.set(parallelRouteKey, convertTreePrefetchToRouteTree(childPrefetch, childSegment, childPartialVaryPath, childRequestKey, pathnameParts, childPathnamePartsIndex, renderedSearch, acc));
|
|
1015
|
+
}
|
|
1016
|
+
} else {
|
|
1017
|
+
if (requestKey.endsWith(_segment.PAGE_SEGMENT_KEY)) {
|
|
1018
|
+
// This is a page segment.
|
|
1019
|
+
isPage = true;
|
|
1020
|
+
varyPath = (0, _varypath.finalizePageVaryPath)(requestKey, renderedSearch, partialVaryPath);
|
|
1021
|
+
// The metadata "segment" is not part the route tree, but it has the same
|
|
1022
|
+
// conceptual params as a page segment. Write the vary path into the
|
|
1023
|
+
// accumulator object. If there are multiple parallel pages, we use the
|
|
1024
|
+
// first one. Which page we choose is arbitrary as long as it's
|
|
1025
|
+
// consistently the same one every time every time. See
|
|
1026
|
+
// finalizeMetadataVaryPath for more details.
|
|
1027
|
+
if (acc.metadataVaryPath === null) {
|
|
1028
|
+
acc.metadataVaryPath = (0, _varypath.finalizeMetadataVaryPath)(requestKey, renderedSearch, partialVaryPath);
|
|
1029
|
+
}
|
|
1030
|
+
} else {
|
|
1031
|
+
// This is a layout segment.
|
|
1032
|
+
isPage = false;
|
|
1033
|
+
varyPath = (0, _varypath.finalizeLayoutVaryPath)(requestKey, partialVaryPath);
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
1036
|
+
return {
|
|
1037
|
+
requestKey,
|
|
1038
|
+
segment,
|
|
1039
|
+
shellVaryPath: (0, _varypath.getShellSegmentVaryPath)(varyPath),
|
|
1040
|
+
refreshState: null,
|
|
1041
|
+
// TODO: Cheating the type system here a bit because TypeScript can't tell
|
|
1042
|
+
// that the type of isPage and varyPath are consistent. The fix would be to
|
|
1043
|
+
// create separate constructors and call the appropriate one from each of
|
|
1044
|
+
// the branches above. Just seems a bit overkill only for one field so I'll
|
|
1045
|
+
// leave it as-is for now. If isPage were wrong it would break the behavior
|
|
1046
|
+
// and we'd catch it quickly, anyway.
|
|
1047
|
+
varyPath: varyPath,
|
|
1048
|
+
isPage: isPage,
|
|
1049
|
+
slots,
|
|
1050
|
+
prefetchHints: prefetch.prefetchHints
|
|
1051
|
+
};
|
|
1052
|
+
}
|
|
1053
|
+
function convertRootFlightRouterStateToRouteTree(flightRouterState, renderedSearch, acc) {
|
|
1054
|
+
return convertFlightRouterStateToRouteTree(flightRouterState, _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY, null, renderedSearch, acc);
|
|
1055
|
+
}
|
|
1056
|
+
function convertReusedFlightRouterStateToRouteTree(parentRouteTree, parallelRouteKey, flightRouterState, renderedSearch, acc) {
|
|
1057
|
+
// Create a RouteTree for a FlightRouterState that was reused from an older
|
|
1058
|
+
// route. This happens during a navigation when a parallel route slot does not
|
|
1059
|
+
// match the target route; we reuse whatever slot was already active.
|
|
1060
|
+
// Unlike a FlightRouterState, the RouteTree type contains backreferences to
|
|
1061
|
+
// the parent segments. Append the vary path to the parent's vary path.
|
|
1062
|
+
const parentPartialVaryPath = parentRouteTree.isPage ? (0, _varypath.getPartialPageVaryPath)(parentRouteTree.varyPath) : (0, _varypath.getPartialLayoutVaryPath)(parentRouteTree.varyPath);
|
|
1063
|
+
const segment = flightRouterState[0];
|
|
1064
|
+
// And the request key.
|
|
1065
|
+
const parentRequestKey = parentRouteTree.requestKey;
|
|
1066
|
+
const requestKeyPart = (0, _segmentvalueencoding.createSegmentRequestKeyPart)(segment);
|
|
1067
|
+
const requestKey = (0, _segmentvalueencoding.appendSegmentRequestKeyPart)(parentRequestKey, parallelRouteKey, requestKeyPart);
|
|
1068
|
+
return convertFlightRouterStateToRouteTree(flightRouterState, requestKey, parentPartialVaryPath, renderedSearch, acc);
|
|
1069
|
+
}
|
|
1070
|
+
function convertFlightRouterStateToRouteTree(flightRouterState, requestKey, parentPartialVaryPath, parentRenderedSearch, acc) {
|
|
1071
|
+
const originalSegment = flightRouterState[0];
|
|
1072
|
+
// This segment's param (if any) is a root param iff the segment is at or
|
|
1073
|
+
// above the root layout, which the server marks directly.
|
|
1074
|
+
const isRootParam = ((flightRouterState[4] ?? 0) & _approutertypes.PrefetchHint.IsRootLayoutOrAbove) !== 0;
|
|
1075
|
+
// If the FlightRouterState has a refresh state, then this segment is part of
|
|
1076
|
+
// an inactive parallel route. It has a different rendered search query than
|
|
1077
|
+
// the outer parent route. In order to construct the inactive route correctly,
|
|
1078
|
+
// we must restore the query that was originally used to render it.
|
|
1079
|
+
const compressedRefreshState = flightRouterState[2] ?? null;
|
|
1080
|
+
const refreshState = compressedRefreshState !== null ? {
|
|
1081
|
+
canonicalUrl: compressedRefreshState[0],
|
|
1082
|
+
renderedSearch: compressedRefreshState[1]
|
|
1083
|
+
} : null;
|
|
1084
|
+
const renderedSearch = refreshState !== null ? refreshState.renderedSearch : parentRenderedSearch;
|
|
1085
|
+
let segment;
|
|
1086
|
+
let partialVaryPath;
|
|
1087
|
+
let isPage;
|
|
1088
|
+
let varyPath;
|
|
1089
|
+
if (Array.isArray(originalSegment)) {
|
|
1090
|
+
isPage = false;
|
|
1091
|
+
const paramCacheKey = originalSegment[1];
|
|
1092
|
+
const paramName = originalSegment[0];
|
|
1093
|
+
partialVaryPath = (0, _varypath.appendLayoutVaryPath)(parentPartialVaryPath, paramCacheKey, paramName, isRootParam);
|
|
1094
|
+
varyPath = (0, _varypath.finalizeLayoutVaryPath)(requestKey, partialVaryPath);
|
|
1095
|
+
segment = originalSegment;
|
|
1096
|
+
} else {
|
|
1097
|
+
// This segment does not have a param. Inherit the partial vary path of
|
|
1098
|
+
// the parent.
|
|
1099
|
+
partialVaryPath = parentPartialVaryPath;
|
|
1100
|
+
if (requestKey.endsWith(_segment.PAGE_SEGMENT_KEY)) {
|
|
1101
|
+
// This is a page segment.
|
|
1102
|
+
isPage = true;
|
|
1103
|
+
// The navigation implementation expects the search params to be included
|
|
1104
|
+
// in the segment. However, in the case of a static response, the search
|
|
1105
|
+
// params are omitted. So the client needs to add them back in when reading
|
|
1106
|
+
// from the Segment Cache.
|
|
1107
|
+
//
|
|
1108
|
+
// For consistency, we'll do this for dynamic responses, too.
|
|
1109
|
+
//
|
|
1110
|
+
// TODO: We should move search params out of FlightRouterState and handle
|
|
1111
|
+
// them entirely on the client, similar to our plan for dynamic params.
|
|
1112
|
+
segment = _segment.PAGE_SEGMENT_KEY;
|
|
1113
|
+
varyPath = (0, _varypath.finalizePageVaryPath)(requestKey, renderedSearch, partialVaryPath);
|
|
1114
|
+
// The metadata "segment" is not part the route tree, but it has the same
|
|
1115
|
+
// conceptual params as a page segment. Write the vary path into the
|
|
1116
|
+
// accumulator object. If there are multiple parallel pages, we use the
|
|
1117
|
+
// first one. Which page we choose is arbitrary as long as it's
|
|
1118
|
+
// consistently the same one every time every time. See
|
|
1119
|
+
// finalizeMetadataVaryPath for more details.
|
|
1120
|
+
if (acc.metadataVaryPath === null) {
|
|
1121
|
+
acc.metadataVaryPath = (0, _varypath.finalizeMetadataVaryPath)(requestKey, renderedSearch, partialVaryPath);
|
|
1122
|
+
}
|
|
1123
|
+
} else {
|
|
1124
|
+
// This is a layout segment.
|
|
1125
|
+
isPage = false;
|
|
1126
|
+
segment = originalSegment;
|
|
1127
|
+
varyPath = (0, _varypath.finalizeLayoutVaryPath)(requestKey, partialVaryPath);
|
|
1128
|
+
}
|
|
1129
|
+
}
|
|
1130
|
+
let slots = null;
|
|
1131
|
+
const parallelRoutes = flightRouterState[1];
|
|
1132
|
+
for(let parallelRouteKey in parallelRoutes){
|
|
1133
|
+
const childRouterState = parallelRoutes[parallelRouteKey];
|
|
1134
|
+
const childSegment = childRouterState[0];
|
|
1135
|
+
// TODO: Eventually, the param values will not be included in the response
|
|
1136
|
+
// from the server. We'll instead fill them in on the client by parsing
|
|
1137
|
+
// the URL. This is where we'll do that.
|
|
1138
|
+
const childRequestKeyPart = (0, _segmentvalueencoding.createSegmentRequestKeyPart)(childSegment);
|
|
1139
|
+
const childRequestKey = (0, _segmentvalueencoding.appendSegmentRequestKeyPart)(requestKey, parallelRouteKey, childRequestKeyPart);
|
|
1140
|
+
const childTree = convertFlightRouterStateToRouteTree(childRouterState, childRequestKey, partialVaryPath, renderedSearch, acc);
|
|
1141
|
+
if (slots === null) {
|
|
1142
|
+
slots = new Map();
|
|
1143
|
+
}
|
|
1144
|
+
slots.set(parallelRouteKey, childTree);
|
|
1145
|
+
}
|
|
1146
|
+
return {
|
|
1147
|
+
requestKey,
|
|
1148
|
+
segment,
|
|
1149
|
+
shellVaryPath: (0, _varypath.getShellSegmentVaryPath)(varyPath),
|
|
1150
|
+
refreshState,
|
|
1151
|
+
// TODO: Cheating the type system here a bit because TypeScript can't tell
|
|
1152
|
+
// that the type of isPage and varyPath are consistent. The fix would be to
|
|
1153
|
+
// create separate constructors and call the appropriate one from each of
|
|
1154
|
+
// the branches above. Just seems a bit overkill only for one field so I'll
|
|
1155
|
+
// leave it as-is for now. If isPage were wrong it would break the behavior
|
|
1156
|
+
// and we'd catch it quickly, anyway.
|
|
1157
|
+
varyPath: varyPath,
|
|
1158
|
+
isPage: isPage,
|
|
1159
|
+
slots,
|
|
1160
|
+
prefetchHints: flightRouterState[4] ?? 0
|
|
1161
|
+
};
|
|
1162
|
+
}
|
|
1163
|
+
function convertRouteTreeToFlightRouterState(routeTree) {
|
|
1164
|
+
const parallelRoutes = {};
|
|
1165
|
+
const slots = routeTree.slots;
|
|
1166
|
+
if (slots !== null) {
|
|
1167
|
+
for (const [parallelRouteKey, childTree] of slots){
|
|
1168
|
+
parallelRoutes[parallelRouteKey] = convertRouteTreeToFlightRouterState(childTree);
|
|
1169
|
+
}
|
|
1170
|
+
}
|
|
1171
|
+
const flightRouterState = [
|
|
1172
|
+
routeTree.segment,
|
|
1173
|
+
parallelRoutes,
|
|
1174
|
+
null,
|
|
1175
|
+
null
|
|
1176
|
+
];
|
|
1177
|
+
if (routeTree.prefetchHints !== 0) {
|
|
1178
|
+
flightRouterState[4] = routeTree.prefetchHints;
|
|
1179
|
+
}
|
|
1180
|
+
return flightRouterState;
|
|
1181
|
+
}
|
|
1182
|
+
async function fetchRouteOnCacheMiss(entry, key, // The spawning task's `PrefetchTask.segmentCacheMap`, for the legacy
|
|
1183
|
+
// branch that writes segment data included in the tree response.
|
|
1184
|
+
map) {
|
|
1185
|
+
// This function is allowed to use async/await because it contains the actual
|
|
1186
|
+
// fetch that gets issued on a cache miss. Notice it writes the result to the
|
|
1187
|
+
// cache entry directly, rather than return data that is then written by
|
|
1188
|
+
// the caller.
|
|
1189
|
+
const pathname = key.pathname;
|
|
1190
|
+
const search = key.search;
|
|
1191
|
+
const nextUrl = key.nextUrl;
|
|
1192
|
+
const segmentPath = '/_tree';
|
|
1193
|
+
const headers = {
|
|
1194
|
+
[_approuterheaders.RSC_HEADER]: '1',
|
|
1195
|
+
[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER]: '1',
|
|
1196
|
+
[_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]: segmentPath
|
|
1197
|
+
};
|
|
1198
|
+
if (nextUrl !== null) {
|
|
1199
|
+
headers[_approuterheaders.NEXT_URL] = nextUrl;
|
|
1200
|
+
}
|
|
1201
|
+
try {
|
|
1202
|
+
const url = new URL(pathname + search, location.origin);
|
|
1203
|
+
let response;
|
|
1204
|
+
let urlAfterRedirects;
|
|
1205
|
+
if (isOutputExportMode) {
|
|
1206
|
+
// In output: "export" mode, we can't use headers to request a particular
|
|
1207
|
+
// segment. Instead, we encode the extra request information into the URL.
|
|
1208
|
+
// This is not part of the "public" interface of the app; it's an internal
|
|
1209
|
+
// Next.js implementation detail that the app developer should not need to
|
|
1210
|
+
// concern themselves with.
|
|
1211
|
+
//
|
|
1212
|
+
// For example, to request a segment:
|
|
1213
|
+
//
|
|
1214
|
+
// Path passed to <Link>: /path/to/page
|
|
1215
|
+
// Path passed to fetch: /path/to/page/__next-segments/_tree
|
|
1216
|
+
//
|
|
1217
|
+
// (This is not the exact protocol, just an illustration.)
|
|
1218
|
+
//
|
|
1219
|
+
// Before we do that, though, we need to account for redirects. Even in
|
|
1220
|
+
// output: "export" mode, a proxy might redirect the page to a different
|
|
1221
|
+
// location, but we shouldn't assume or expect that they also redirect all
|
|
1222
|
+
// the segment files, too.
|
|
1223
|
+
//
|
|
1224
|
+
// To check whether the page is redirected, previously we perform a range
|
|
1225
|
+
// request of 64 bytes of the HTML document to check if the target page
|
|
1226
|
+
// is part of this app (by checking if build id matches). Only if the target
|
|
1227
|
+
// page is part of this app do we determine the final canonical URL.
|
|
1228
|
+
//
|
|
1229
|
+
// However, as mentioned in https://github.com/vercel/next.js/pull/85903,
|
|
1230
|
+
// some popular static hosting providers (like Cloudflare Pages or Render.com)
|
|
1231
|
+
// do not support range requests, in the worst case, the entire HTML instead
|
|
1232
|
+
// of 64 bytes could be returned, which is wasteful.
|
|
1233
|
+
//
|
|
1234
|
+
// So instead, we drops the check for build id here, and simply perform
|
|
1235
|
+
// a HEAD request to rejects 1xx/4xx/5xx responses, and then determine the
|
|
1236
|
+
// final URL after redirects.
|
|
1237
|
+
//
|
|
1238
|
+
// NOTE: We could embed the route tree into the HTML document, to avoid
|
|
1239
|
+
// a second request. We're not doing that currently because it would make
|
|
1240
|
+
// the HTML document larger and affect normal page loads.
|
|
1241
|
+
const headResponse = await (0, _fetch.fetch)(url, {
|
|
1242
|
+
method: 'HEAD'
|
|
1243
|
+
});
|
|
1244
|
+
if (headResponse.status < 200 || headResponse.status >= 400) {
|
|
1245
|
+
// The target page responded w/o a successful status code
|
|
1246
|
+
// Could be a WAF serving a 403, or a 5xx from a backend
|
|
1247
|
+
//
|
|
1248
|
+
// Note that we can't use headResponse.ok here, because
|
|
1249
|
+
// Response#ok returns `false` with 3xx responses.
|
|
1250
|
+
rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);
|
|
1251
|
+
return null;
|
|
1252
|
+
}
|
|
1253
|
+
urlAfterRedirects = headResponse.redirected ? new URL(headResponse.url) : url;
|
|
1254
|
+
response = await fetchPrefetchResponse(addSegmentPathToUrlInOutputExportMode(urlAfterRedirects, segmentPath), headers);
|
|
1255
|
+
} else {
|
|
1256
|
+
// "Server" mode. We can use request headers instead of the pathname.
|
|
1257
|
+
// TODO: The eventual plan is to get rid of our custom request headers and
|
|
1258
|
+
// encode everything into the URL, using a similar strategy to the
|
|
1259
|
+
// "output: export" block above.
|
|
1260
|
+
response = await fetchPrefetchResponse(url, headers);
|
|
1261
|
+
urlAfterRedirects = response !== null && response.redirected ? new URL(response.url) : url;
|
|
1262
|
+
}
|
|
1263
|
+
if (!response || !response.ok || !response.body) {
|
|
1264
|
+
// Server responded with an error, or with a miss. We should still cache
|
|
1265
|
+
// the response, but we can try again after 10 seconds.
|
|
1266
|
+
rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);
|
|
1267
|
+
return null;
|
|
1268
|
+
}
|
|
1269
|
+
// TODO: The canonical URL is the href without the origin. I think
|
|
1270
|
+
// historically the reason for this is because the initial canonical URL
|
|
1271
|
+
// gets passed as a prop to the top-level React component, which means it
|
|
1272
|
+
// needs to be computed during SSR. If it were to include the origin, it
|
|
1273
|
+
// would need to always be same as location.origin on the client, to prevent
|
|
1274
|
+
// a hydration mismatch. To sidestep this complexity, we omit the origin.
|
|
1275
|
+
//
|
|
1276
|
+
// However, since this is neither a native URL object nor a fully qualified
|
|
1277
|
+
// URL string, we need to be careful about how we use it. To prevent subtle
|
|
1278
|
+
// mistakes, we should create a special type for it, instead of just string.
|
|
1279
|
+
// Or, we should just use a (readonly) URL object instead. The type of the
|
|
1280
|
+
// prop that we pass to seed the initial state does not need to be the same
|
|
1281
|
+
// type as the state itself.
|
|
1282
|
+
const canonicalUrl = (0, _createhreffromurl.createHrefFromUrl)(urlAfterRedirects);
|
|
1283
|
+
// Check whether the response varies based on the Next-Url header.
|
|
1284
|
+
const varyHeader = response.headers.get('vary');
|
|
1285
|
+
const couldBeIntercepted = varyHeader !== null && varyHeader.includes(_approuterheaders.NEXT_URL);
|
|
1286
|
+
// TODO: The `closed` promise was originally used to track when a streaming
|
|
1287
|
+
// network connection closes, so the scheduler could limit concurrent
|
|
1288
|
+
// connections. Now that prefetch responses are buffered, `closed` is
|
|
1289
|
+
// resolved immediately after buffering — before the outer function even
|
|
1290
|
+
// returns. This mechanism is only still meaningful for dynamic (Full)
|
|
1291
|
+
// prefetches, which use incremental streaming. Consider removing the
|
|
1292
|
+
// `closed` plumbing for buffered prefetch paths.
|
|
1293
|
+
const closed = (0, _promisewithresolvers.createPromiseWithResolvers)();
|
|
1294
|
+
// This checks whether the response was served from the per-segment cache,
|
|
1295
|
+
// rather than the old prefetching flow. If it fails, it implies that PPR
|
|
1296
|
+
// is disabled on this route.
|
|
1297
|
+
const routeIsPPREnabled = response.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER) === '2' || // In output: "export" mode, we can't rely on response headers. But if we
|
|
1298
|
+
// receive a well-formed response, we can assume it's a static response,
|
|
1299
|
+
// because all data is static in this mode.
|
|
1300
|
+
isOutputExportMode;
|
|
1301
|
+
if (routeIsPPREnabled) {
|
|
1302
|
+
const { stream: prefetchStream, size: responseSize } = await createNonTaskyPrefetchResponseStream(response.body);
|
|
1303
|
+
closed.resolve();
|
|
1304
|
+
(0, _cachemap.setSizeInCacheMap)(entry, responseSize);
|
|
1305
|
+
const serverData = await (0, _fetchserverresponse.createFromNextReadableStream)(prefetchStream, headers, {
|
|
1306
|
+
allowPartialStream: true
|
|
1307
|
+
});
|
|
1308
|
+
if ((response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverData.buildId) !== (0, _navigationbuildid.getNavigationBuildId)()) {
|
|
1309
|
+
// The server build does not match the client. Treat as a 404. During
|
|
1310
|
+
// an actual navigation, the router will trigger an MPA navigation.
|
|
1311
|
+
// TODO: We should cache the fact that this is an MPA navigation.
|
|
1312
|
+
rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);
|
|
1313
|
+
return null;
|
|
1314
|
+
}
|
|
1315
|
+
// Get the params that were used to render the target page. These may
|
|
1316
|
+
// be different from the params in the request URL, if the page
|
|
1317
|
+
// was rewritten.
|
|
1318
|
+
const renderedPathname = (0, _routeparams.getRenderedPathname)(response);
|
|
1319
|
+
const renderedSearch = (0, _routeparams.getRenderedSearch)(response);
|
|
1320
|
+
// Convert the server-sent data into the RouteTree format used by the
|
|
1321
|
+
// client cache.
|
|
1322
|
+
//
|
|
1323
|
+
// During this traversal, we accumulate additional data into this
|
|
1324
|
+
// "accumulator" object.
|
|
1325
|
+
const acc = {
|
|
1326
|
+
metadataVaryPath: null,
|
|
1327
|
+
treeDivergedFromBase: false
|
|
1328
|
+
};
|
|
1329
|
+
const routeTree = convertRootTreePrefetchToRouteTree(serverData, renderedPathname, renderedSearch, acc);
|
|
1330
|
+
const metadataVaryPath = acc.metadataVaryPath;
|
|
1331
|
+
if (metadataVaryPath === null) {
|
|
1332
|
+
rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);
|
|
1333
|
+
return null;
|
|
1334
|
+
}
|
|
1335
|
+
(0, _optimisticroutes.discoverKnownRoute)(Date.now(), pathname, search, nextUrl, entry, routeTree, metadataVaryPath, couldBeIntercepted, canonicalUrl, routeIsPPREnabled, false // hasDynamicRewrite
|
|
1336
|
+
);
|
|
1337
|
+
} else {
|
|
1338
|
+
// PPR is not enabled for this route. The server responds with a
|
|
1339
|
+
// different format (FlightRouterState) that we need to convert.
|
|
1340
|
+
// TODO: We will unify the responses eventually. I'm keeping the types
|
|
1341
|
+
// separate for now because FlightRouterState has so many
|
|
1342
|
+
// overloaded concerns.
|
|
1343
|
+
const { stream: prefetchStream, size: responseSize } = await createNonTaskyPrefetchResponseStream(response.body);
|
|
1344
|
+
closed.resolve();
|
|
1345
|
+
(0, _cachemap.setSizeInCacheMap)(entry, responseSize);
|
|
1346
|
+
const serverData = await (0, _fetchserverresponse.createFromNextReadableStream)(prefetchStream, headers, {
|
|
1347
|
+
allowPartialStream: true
|
|
1348
|
+
});
|
|
1349
|
+
if ((response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverData.b) !== (0, _navigationbuildid.getNavigationBuildId)()) {
|
|
1350
|
+
// The server build does not match the client. Treat as a 404. During
|
|
1351
|
+
// an actual navigation, the router will trigger an MPA navigation.
|
|
1352
|
+
// TODO: We should cache the fact that this is an MPA navigation.
|
|
1353
|
+
rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);
|
|
1354
|
+
return null;
|
|
1355
|
+
}
|
|
1356
|
+
// Read head vary params synchronously (unioning in the response-level
|
|
1357
|
+
// root params). Individual segments carry their own iterables in
|
|
1358
|
+
// CacheNodeSeedData; the root iterable is threaded down so each segment
|
|
1359
|
+
// unions it too.
|
|
1360
|
+
const headVaryParams = (0, _varyparamsdecoding.readVaryParams)(serverData.h, serverData.r);
|
|
1361
|
+
writeDynamicTreeResponseIntoCache(Date.now(), // The non-PPR response format is what we'd get if we prefetched these segments
|
|
1362
|
+
// using the LoadingBoundary fetch strategy, so mark their cache entries accordingly.
|
|
1363
|
+
_types.FetchStrategy.LoadingBoundary, response, serverData, entry, couldBeIntercepted, canonicalUrl, routeIsPPREnabled, headVaryParams, serverData.r ?? null, pathname, search, nextUrl, map);
|
|
1364
|
+
}
|
|
1365
|
+
if (!couldBeIntercepted) {
|
|
1366
|
+
// This route will never be intercepted. So we can use this entry for all
|
|
1367
|
+
// requests to this route, regardless of the Next-Url header. This works
|
|
1368
|
+
// because when reading the cache we always check for a valid
|
|
1369
|
+
// non-intercepted entry first.
|
|
1370
|
+
// Re-key the entry. The `set` implementation handles removing it from
|
|
1371
|
+
// its previous position in the cache. We don't need to do anything to
|
|
1372
|
+
// update the LRU, because the entry is already in it.
|
|
1373
|
+
// TODO: Treat this as an upsert — should check if an entry already
|
|
1374
|
+
// exists at the new keypath, and if so, whether we should keep that
|
|
1375
|
+
// one instead.
|
|
1376
|
+
const fulfilledVaryPath = (0, _varypath.getFulfilledRouteVaryPath)(pathname, search, nextUrl, couldBeIntercepted);
|
|
1377
|
+
const isRevalidation = false;
|
|
1378
|
+
(0, _cachemap.setInCacheMap)(routeCacheMap, fulfilledVaryPath, entry, isRevalidation);
|
|
1379
|
+
}
|
|
1380
|
+
// Return a promise that resolves when the network connection closes, so
|
|
1381
|
+
// the scheduler can track the number of concurrent network connections.
|
|
1382
|
+
return {
|
|
1383
|
+
value: null,
|
|
1384
|
+
closed: closed.promise
|
|
1385
|
+
};
|
|
1386
|
+
} catch (error) {
|
|
1387
|
+
// Either the connection itself failed, or something bad happened while
|
|
1388
|
+
// decoding the response. If we're offline, reject with staleAt=-1 so the
|
|
1389
|
+
// entry immediately expires and gets retried once the scheduler is
|
|
1390
|
+
// re-pinged after connectivity is restored.
|
|
1391
|
+
if (process.env.__NEXT_USE_OFFLINE) {
|
|
1392
|
+
const { checkOfflineError } = require('../offline');
|
|
1393
|
+
if (checkOfflineError(error)) {
|
|
1394
|
+
// Unlike navigations and server actions, prefetches don't await
|
|
1395
|
+
// waitForConnection — they just reject the cache entry with an
|
|
1396
|
+
// immediate expiration so it gets retried once the scheduler is
|
|
1397
|
+
// re-pinged after connectivity is restored.
|
|
1398
|
+
rejectRouteCacheEntry(entry, -1);
|
|
1399
|
+
return null;
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
rejectRouteCacheEntry(entry, Date.now() + 10 * 1000);
|
|
1403
|
+
return null;
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1406
|
+
function rejectRemainingSegmentsInBundle(entries, staleAt) {
|
|
1407
|
+
let node = entries;
|
|
1408
|
+
while(node !== null){
|
|
1409
|
+
if (node.entry !== null && node.entry.status === _cachemap.EntryStatus.Pending) {
|
|
1410
|
+
rejectSegmentCacheEntry(node.entry, staleAt);
|
|
1411
|
+
}
|
|
1412
|
+
node = node.parent;
|
|
1413
|
+
}
|
|
1414
|
+
}
|
|
1415
|
+
// When a static (per-segment PPR) prefetch receives an upgradeable fallback
|
|
1416
|
+
// shell, the localized retry loop re-issues the same fetch after this delay to
|
|
1417
|
+
// pick up the concrete version once the server's background regeneration
|
|
1418
|
+
// finishes.
|
|
1419
|
+
const FALLBACK_RETRY_DELAY_MS = 2000;
|
|
1420
|
+
// Maximum number of fallback retries per task, to avoid looping indefinitely
|
|
1421
|
+
// if the server keeps returning a fallback (e.g. misconfiguration).
|
|
1422
|
+
const MAX_FALLBACK_RETRIES = 3;
|
|
1423
|
+
async function fetchSegmentsOnCacheMiss(task, route, routeKey, tree, segments, segmentCount, // Which walk spawned the bundle's entries. The request on the wire is
|
|
1424
|
+
// identical either way; this only decides which payload of the response
|
|
1425
|
+
// fulfills the entries.
|
|
1426
|
+
fetchStrategy) {
|
|
1427
|
+
// This function is allowed to use async/await because it contains the actual
|
|
1428
|
+
// fetch that gets issued on a cache miss. Notice it writes the result to the
|
|
1429
|
+
// cache entry directly, rather than return data that is then written by
|
|
1430
|
+
// the caller.
|
|
1431
|
+
//
|
|
1432
|
+
// Segment fetches are non-blocking so we don't need to ping the scheduler
|
|
1433
|
+
// on completion.
|
|
1434
|
+
let result;
|
|
1435
|
+
try {
|
|
1436
|
+
result = await fetchSegmentsOnCacheMissImpl(route, routeKey, tree);
|
|
1437
|
+
} catch (error) {
|
|
1438
|
+
// The connection failed, or the response couldn't be decoded. Reject the
|
|
1439
|
+
// pending entries so they don't stay Pending forever, and get retried once
|
|
1440
|
+
// the entry expires. If we're offline, expire immediately (-1) so the entry
|
|
1441
|
+
// is re-fetched once the scheduler is re-pinged on reconnect; otherwise
|
|
1442
|
+
// apply a 10s backoff. (Unlike navigations and server actions, prefetches
|
|
1443
|
+
// don't await `waitForConnection`.)
|
|
1444
|
+
let staleAt = Date.now() + 10 * 1000;
|
|
1445
|
+
if (process.env.__NEXT_USE_OFFLINE) {
|
|
1446
|
+
const { checkOfflineError } = require('../offline');
|
|
1447
|
+
if (checkOfflineError(error)) {
|
|
1448
|
+
staleAt = -1;
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
rejectRemainingSegmentsInBundle(segments, staleAt);
|
|
1452
|
+
return null;
|
|
1453
|
+
}
|
|
1454
|
+
if (result === null) {
|
|
1455
|
+
// The response was fetched but isn't usable yet (server error/miss, empty
|
|
1456
|
+
// data, or a build-id mismatch — the server may be transiently unready).
|
|
1457
|
+
// Reject with a short backoff so the entries are retried soon.
|
|
1458
|
+
rejectRemainingSegmentsInBundle(segments, Date.now() + 10 * 1000);
|
|
1459
|
+
return null;
|
|
1460
|
+
}
|
|
1461
|
+
const { serverResponse, shellResponse, responseSize, closed } = result;
|
|
1462
|
+
const now = Date.now();
|
|
1463
|
+
writeSegmentBundleResponseVariants(task.segmentCacheMap, serverResponse, shellResponse, responseSize, segments, segmentCount, now, fetchStrategy);
|
|
1464
|
+
// If the server served an upgradeable fallback shell, drive a localized
|
|
1465
|
+
// retry loop to pick up the concrete version once the server's background
|
|
1466
|
+
// regeneration finishes. Only the first such response per task starts a loop
|
|
1467
|
+
// (`fallbackRetryStatus === Empty`); once it leaves Empty, no second loop is
|
|
1468
|
+
// started — sibling bundle responses that also got a fallback don't, and
|
|
1469
|
+
// neither does a re-hover.
|
|
1470
|
+
if (serverResponse.isUpgradeableISRFallback && task.fallbackRetryStatus === _cachemap.EntryStatus.Empty && !task.isCanceled) {
|
|
1471
|
+
task.fallbackRetryStatus = _cachemap.EntryStatus.Pending;
|
|
1472
|
+
// Fire-and-forget: the loop drives itself via timers and pings the task
|
|
1473
|
+
// on success.
|
|
1474
|
+
void retryUpgradeableFallbackPrefetch(task, route, routeKey, tree, segments, segmentCount, fetchStrategy);
|
|
1475
|
+
}
|
|
1476
|
+
return {
|
|
1477
|
+
value: null,
|
|
1478
|
+
closed
|
|
1479
|
+
};
|
|
1480
|
+
}
|
|
1481
|
+
/**
|
|
1482
|
+
* Issues a single segment-bundle prefetch request, validates it, and decodes
|
|
1483
|
+
* the response. Returns the decoded response (see the return type below)
|
|
1484
|
+
* on success, or `null` if the response was fetched but isn't usable yet
|
|
1485
|
+
* (server error/miss, empty data, or a build-id mismatch — the server may be
|
|
1486
|
+
* transiently unready, so it's worth retrying). THROWS if the connection failed
|
|
1487
|
+
* or the response couldn't be decoded; re-issuing the identical request won't
|
|
1488
|
+
* fix that, so callers should give up rather than retry.
|
|
1489
|
+
*
|
|
1490
|
+
* This deliberately does NOT touch the cache — it neither writes the decoded
|
|
1491
|
+
* segments nor rejects entries. The caller decides what to do with the result:
|
|
1492
|
+
* write it (`fetchSegmentsOnCacheMiss`) or ignore it and try again (the retry
|
|
1493
|
+
* loop). Calling this again with the same arguments reproduces the exact same
|
|
1494
|
+
* request.
|
|
1495
|
+
*/ async function fetchSegmentsOnCacheMissImpl(route, routeKey, tree) {
|
|
1496
|
+
// Use the canonical URL to request the segment, not the original URL. These
|
|
1497
|
+
// are usually the same, but the canonical URL will be different if the route
|
|
1498
|
+
// tree response was redirected. To avoid an extra waterfall on every segment
|
|
1499
|
+
// request, we pass the redirected URL instead of the original one.
|
|
1500
|
+
const url = new URL(route.canonicalUrl, location.origin);
|
|
1501
|
+
const nextUrl = routeKey.nextUrl;
|
|
1502
|
+
const requestKey = tree.requestKey;
|
|
1503
|
+
const normalizedRequestKey = requestKey === _segmentvalueencoding.ROOT_SEGMENT_REQUEST_KEY ? // handling of these requests, we encode the root segment path as
|
|
1504
|
+
// `_index` instead of as an empty string. This should be treated as
|
|
1505
|
+
// an implementation detail and not as a stable part of the protocol.
|
|
1506
|
+
// It just needs to match the equivalent logic that happens when
|
|
1507
|
+
// prerendering the responses. It should not leak outside of Next.js.
|
|
1508
|
+
'/_index' : requestKey;
|
|
1509
|
+
const headers = {
|
|
1510
|
+
[_approuterheaders.RSC_HEADER]: '1',
|
|
1511
|
+
[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER]: '1',
|
|
1512
|
+
[_approuterheaders.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]: normalizedRequestKey
|
|
1513
|
+
};
|
|
1514
|
+
if (nextUrl !== null) {
|
|
1515
|
+
headers[_approuterheaders.NEXT_URL] = nextUrl;
|
|
1516
|
+
}
|
|
1517
|
+
const requestUrl = isOutputExportMode ? addSegmentPathToUrlInOutputExportMode(url, normalizedRequestKey) : url;
|
|
1518
|
+
const response = await fetchPrefetchResponse(requestUrl, headers);
|
|
1519
|
+
if (!response || !response.ok || // This checks whether the response was served from the per-segment cache,
|
|
1520
|
+
// rather than the old prefetching flow. If it fails, it implies that PPR
|
|
1521
|
+
// is disabled on this route. Theoretically this should never happen
|
|
1522
|
+
// because we only issue requests for segments once we've verified that
|
|
1523
|
+
// the route supports PPR.
|
|
1524
|
+
response.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER) !== '2' && // In output: "export" mode, we can't rely on response headers. But if
|
|
1525
|
+
// we receive a well-formed response, we can assume it's a static
|
|
1526
|
+
// response, because all data is static in this mode.
|
|
1527
|
+
!isOutputExportMode || !response.body) {
|
|
1528
|
+
// Server responded with an error or a miss — fetched but not usable.
|
|
1529
|
+
return null;
|
|
1530
|
+
}
|
|
1531
|
+
// See TODO in fetchRouteOnCacheMiss about removing `closed` for
|
|
1532
|
+
// buffered prefetch paths.
|
|
1533
|
+
const closed = (0, _promisewithresolvers.createPromiseWithResolvers)();
|
|
1534
|
+
const { stream: prefetchStream, size: responseSize, buffer } = await createNonTaskyPrefetchResponseStream(response.body);
|
|
1535
|
+
closed.resolve();
|
|
1536
|
+
// Parse the response. Always a SegmentPrefetchResponse with a build ID and a
|
|
1537
|
+
// data array. A connection drop or malformed stream throws here, which
|
|
1538
|
+
// propagates to the caller as a non-retryable failure.
|
|
1539
|
+
const serverResponse = await (0, _fetchserverresponse.createFromNextReadableStream)(prefetchStream, headers, {
|
|
1540
|
+
allowPartialStream: true
|
|
1541
|
+
});
|
|
1542
|
+
if (serverResponse.data.length === 0) {
|
|
1543
|
+
return null;
|
|
1544
|
+
}
|
|
1545
|
+
if ((response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverResponse.buildId) !== (0, _navigationbuildid.getNavigationBuildId)()) {
|
|
1546
|
+
// The server build does not match the client. Treat as a 404. During
|
|
1547
|
+
// an actual navigation, the router will trigger an MPA navigation.
|
|
1548
|
+
return null;
|
|
1549
|
+
}
|
|
1550
|
+
// Extract the shell payload, if the response carries a distinct one
|
|
1551
|
+
// (positive shell byte offset): decode the buffered bytes a SECOND time,
|
|
1552
|
+
// truncated at the boundary. The truncation is what produces the shell
|
|
1553
|
+
// variant: each segment's param-dependent rows land past the boundary and
|
|
1554
|
+
// decode as still-pending, which renders as the param fallback. It also
|
|
1555
|
+
// rewinds the response's signals — `needsRuntimeRequest` and `isPartial`
|
|
1556
|
+
// fulfillments past the boundary read as pending in this decode, so a
|
|
1557
|
+
// post-shell runtime-data access doesn't mark the shell variant itself as
|
|
1558
|
+
// needing a runtime request.
|
|
1559
|
+
// (The offset is never legitimately pending or 0 in this decode: the full
|
|
1560
|
+
// buffer is present, and the server only ever emits a positive offset or
|
|
1561
|
+
// null. Reading 0 — the default for an unfulfilled `a` — therefore means a
|
|
1562
|
+
// bug in Next.js itself, and is handled like an error: the response is
|
|
1563
|
+
// treated as carrying no shell, and the scheduler skips the affected
|
|
1564
|
+
// segments rather than falling back to a runtime request — see the
|
|
1565
|
+
// `shellResponse === null` handling in writeSegmentBundleResponseVariants.
|
|
1566
|
+
// Failing in that direction costs a shell prefetch but never leaks
|
|
1567
|
+
// post-shell content into shell positions.)
|
|
1568
|
+
const shellOffset = readFulfilledValue(serverResponse.a, 0);
|
|
1569
|
+
let shellResponse;
|
|
1570
|
+
if (shellOffset === null) {
|
|
1571
|
+
shellResponse = serverResponse;
|
|
1572
|
+
} else if (shellOffset === 0) {
|
|
1573
|
+
shellResponse = null;
|
|
1574
|
+
} else {
|
|
1575
|
+
try {
|
|
1576
|
+
shellResponse = await (0, _fetchserverresponse.decodeBufferedStage)(buffer.subarray(0, shellOffset), headers);
|
|
1577
|
+
} catch {
|
|
1578
|
+
// The truncated prefix couldn't be decoded. Treat it as if no shell
|
|
1579
|
+
// exists; the full payload is still usable. (For a StaticShell-spawned
|
|
1580
|
+
// bundle this means the spawned entries are rejected — the scheduler
|
|
1581
|
+
// then skips them rather than issuing a runtime substitute; see the
|
|
1582
|
+
// no-shell branch in fetchSegmentsOnCacheMiss.)
|
|
1583
|
+
shellResponse = null;
|
|
1584
|
+
}
|
|
1585
|
+
}
|
|
1586
|
+
return {
|
|
1587
|
+
serverResponse,
|
|
1588
|
+
responseSize,
|
|
1589
|
+
shellResponse,
|
|
1590
|
+
closed: closed.promise
|
|
1591
|
+
};
|
|
1592
|
+
}
|
|
1593
|
+
/**
|
|
1594
|
+
* Writes every payload of a parsed segment-bundle response into the cache.
|
|
1595
|
+
* The bundle's entries are fulfilled by the payload matching the walk that
|
|
1596
|
+
* spawned them; the other payload, when distinct, is written with a detached
|
|
1597
|
+
* copy of the bundle. The full payload is written first so the shell write's
|
|
1598
|
+
* shadow eviction sees the fresh concrete entry.
|
|
1599
|
+
*
|
|
1600
|
+
* Shared by the initial fetch (`fetchSegmentsOnCacheMiss`) and the localized
|
|
1601
|
+
* fallback-retry loop. The retry's bundle entries are already settled, so
|
|
1602
|
+
* for that caller every write is a detached upsert and the rejection below
|
|
1603
|
+
* is a no-op (it only touches Pending entries).
|
|
1604
|
+
*/ function writeSegmentBundleResponseVariants(// The map the bundle's entries live in (pinned when the request was
|
|
1605
|
+
// spawned).
|
|
1606
|
+
map, serverResponse, shellResponse, responseSize, segments, segmentCount, now, // Which walk spawned the bundle's entries; decides which payload fulfills
|
|
1607
|
+
// them. See fetchSegmentsOnCacheMiss.
|
|
1608
|
+
fetchStrategy) {
|
|
1609
|
+
if (fetchStrategy === _types.FetchStrategy.StaticShell) {
|
|
1610
|
+
if (shellResponse !== serverResponse) {
|
|
1611
|
+
writeSegmentBundleResponse(map, serverResponse, responseSize, detachEntriesFromSegmentBundle(segments), segmentCount, now, _types.FetchStrategy.PPR, _types.FetchStrategy.PPR);
|
|
1612
|
+
}
|
|
1613
|
+
if (shellResponse === null) {
|
|
1614
|
+
// No shell exists. Reject the spawned entries so the task isn't
|
|
1615
|
+
// stranded blocking on them. Note the scheduler does NOT fall back to
|
|
1616
|
+
// a runtime request for rejected segments — it skips them outright (see
|
|
1617
|
+
// the Rejected case in pingSegmentBundle in scheduler.ts), so these
|
|
1618
|
+
// segments get no shell prefetch and no runtime substitute until the
|
|
1619
|
+
// rejection's backoff expires.
|
|
1620
|
+
rejectRemainingSegmentsInBundle(segments, now + 10 * 1000);
|
|
1621
|
+
} else {
|
|
1622
|
+
writeSegmentBundleResponse(map, shellResponse, responseSize, segments, segmentCount, now, _types.FetchStrategy.StaticShell, // When the shell IS the full response (no shell/full split), the
|
|
1623
|
+
// entries this write fulfills carry full-tier content, so PPR is the
|
|
1624
|
+
// strategy that describes it.
|
|
1625
|
+
shellResponse === serverResponse ? _types.FetchStrategy.PPR : _types.FetchStrategy.StaticShell);
|
|
1626
|
+
}
|
|
1627
|
+
} else {
|
|
1628
|
+
writeSegmentBundleResponse(map, serverResponse, responseSize, segments, segmentCount, now, _types.FetchStrategy.PPR, _types.FetchStrategy.PPR);
|
|
1629
|
+
if (shellResponse !== null && shellResponse !== serverResponse) {
|
|
1630
|
+
writeSegmentBundleResponse(map, shellResponse, responseSize, detachEntriesFromSegmentBundle(segments), segmentCount, now, _types.FetchStrategy.StaticShell, _types.FetchStrategy.StaticShell);
|
|
1631
|
+
}
|
|
1632
|
+
}
|
|
1633
|
+
}
|
|
1634
|
+
/**
|
|
1635
|
+
* Writes one payload of a parsed segment-bundle response into the cache:
|
|
1636
|
+
* distributes the response size across the bundle, then walks the segments
|
|
1637
|
+
* list and the response's `data` array in parallel, fulfilling/upserting
|
|
1638
|
+
* each entry. Any segments the server didn't return are rejected so they
|
|
1639
|
+
* don't stay Pending forever.
|
|
1640
|
+
*
|
|
1641
|
+
* `fetchStrategy` says which of the response's payloads this call is
|
|
1642
|
+
* writing — StaticShell for the shell payload, PPR for the full payload —
|
|
1643
|
+
* which determines the vary paths the entries are keyed at.
|
|
1644
|
+
*
|
|
1645
|
+
* The walk fulfills any Pending entry in `segments`, so the caller must
|
|
1646
|
+
* pass the bundle only to the walk matching the entries' own strategy, and
|
|
1647
|
+
* a detached copy to the other. In particular, fulfilling a spawned
|
|
1648
|
+
* StaticShell entry with the concrete payload would leak param-dependent
|
|
1649
|
+
* content into shell positions: during a navigation, a pending entry can be
|
|
1650
|
+
* rendered as a promise that resolves to its eventual value.
|
|
1651
|
+
*
|
|
1652
|
+
* Shared by the initial fetch and the localized fallback-retry loop (which
|
|
1653
|
+
* re-issues the same request and upserts the upgraded result here).
|
|
1654
|
+
*/ function writeSegmentBundleResponse(map, serverResponse, responseSize, segments, segmentCount, now, fetchStrategy, // The strategy tier that describes this payload's CONTENT, recorded on
|
|
1655
|
+
// the entries it fulfills. Differs from `fetchStrategy` (which drives
|
|
1656
|
+
// matching and keying) in one case: a StaticShell write whose payload IS
|
|
1657
|
+
// the full response (no shell/full split) records PPR — see
|
|
1658
|
+
// writeSegmentBundleResponseVariants.
|
|
1659
|
+
payloadFetchStrategy) {
|
|
1660
|
+
// Distribute the response size evenly across all segments in the bundle.
|
|
1661
|
+
// (When a response produces two payload writes, each write distributes the
|
|
1662
|
+
// full response size — intentionally double-charging the LRU for one wire
|
|
1663
|
+
// response, since it produced two live entries per segment.)
|
|
1664
|
+
const averageSize = responseSize / segmentCount;
|
|
1665
|
+
let sizeNode = segments;
|
|
1666
|
+
while(sizeNode !== null){
|
|
1667
|
+
if (sizeNode.entry !== null) {
|
|
1668
|
+
(0, _cachemap.setSizeInCacheMap)(sizeNode.entry, averageSize);
|
|
1669
|
+
}
|
|
1670
|
+
sizeNode = sizeNode.parent;
|
|
1671
|
+
}
|
|
1672
|
+
const serverDataArray = serverResponse.data;
|
|
1673
|
+
// True if the server served an upgradeable fallback shell (page not yet
|
|
1674
|
+
// prerendered with concrete params, but the route can be upgraded). Applies
|
|
1675
|
+
// to the whole response and is recorded on each fulfilled entry.
|
|
1676
|
+
const responseIsUpgradeableISRFallback = serverResponse.isUpgradeableISRFallback;
|
|
1677
|
+
// Whether the render that produced this payload accessed runtime data
|
|
1678
|
+
// (page-global; combined with each segment's `isPartial` below to decide
|
|
1679
|
+
// the tier each entry records). Read from THIS decode's thenable status,
|
|
1680
|
+
// which scopes it to the payload being written — see
|
|
1681
|
+
// `SegmentPrefetchResponse['needsRuntimeRequest']` for the encoding.
|
|
1682
|
+
//
|
|
1683
|
+
// Reading it from the same decode that produced the entry's data is what
|
|
1684
|
+
// makes the answer rewindable: a truncated shell decode reads a post-shell
|
|
1685
|
+
// runtime access as pending, i.e. `false`, because the shell variant itself
|
|
1686
|
+
// doesn't need that data.
|
|
1687
|
+
//
|
|
1688
|
+
// It is load-bearing in one direction only. A false `true` costs a wasted
|
|
1689
|
+
// runtime request; a false `false` would record too high a tier and skip a
|
|
1690
|
+
// runtime request that had more content.
|
|
1691
|
+
const responseNeedsRuntimeRequest = readFulfilledValue(serverResponse.needsRuntimeRequest, false);
|
|
1692
|
+
let node = segments;
|
|
1693
|
+
let dataIndex = 0;
|
|
1694
|
+
while(node !== null && dataIndex < serverDataArray.length){
|
|
1695
|
+
const data = serverDataArray[dataIndex];
|
|
1696
|
+
// Null data means this segment has prefetching disabled
|
|
1697
|
+
// (prefetch: 'force-disabled' — Partial Prefetching segments have static
|
|
1698
|
+
// data, so the server emits a real slot for them). Skip it without
|
|
1699
|
+
// creating a cache entry.
|
|
1700
|
+
if (data === null || node.tree === null) {
|
|
1701
|
+
// The server's and the client's prefetch-disabled hints normally agree,
|
|
1702
|
+
// so there shouldn't be a spawned entry for a segment the server
|
|
1703
|
+
// skipped. But if they disagree, a Pending entry that a task blocked on
|
|
1704
|
+
// would otherwise never settle, stranding the task forever. Settle
|
|
1705
|
+
// it defensively.
|
|
1706
|
+
if (node.entry !== null && node.entry.status === _cachemap.EntryStatus.Pending) {
|
|
1707
|
+
rejectSegmentCacheEntry(node.entry, now + 10 * 1000);
|
|
1708
|
+
}
|
|
1709
|
+
node = node.parent;
|
|
1710
|
+
dataIndex++;
|
|
1711
|
+
continue;
|
|
1712
|
+
}
|
|
1713
|
+
// The segment's late-resolving metadata can be read synchronously
|
|
1714
|
+
// because the payload was fully buffered before it was decoded (and, for
|
|
1715
|
+
// a truncated shell decode, delivered as a single chunk).
|
|
1716
|
+
const entryStaleAt = readFulfilledStaleAt(now, data.staleTime);
|
|
1717
|
+
// Root params are emitted once at the top level of the response and
|
|
1718
|
+
// unioned into each segment's set here, same as for a route-level
|
|
1719
|
+
// response.
|
|
1720
|
+
const varyParams = (0, _varyparamsdecoding.readVaryParams)(data.varyParams, serverResponse.rootVaryParams);
|
|
1721
|
+
const isPartial = readFulfilledIsPartial(data.isPartial);
|
|
1722
|
+
// A runtime prefetch can only provide more content than this entry if the
|
|
1723
|
+
// render accessed runtime data AND this particular segment has holes — a
|
|
1724
|
+
// fully static segment gains nothing from a runtime request no matter
|
|
1725
|
+
// what the page accessed.
|
|
1726
|
+
const needsRuntimeRequest = responseNeedsRuntimeRequest && isPartial;
|
|
1727
|
+
// An entry records the tier of the content that actually satisfied it,
|
|
1728
|
+
// which spans both axes: shell-vs-concrete AND static-vs-runtime.
|
|
1729
|
+
//
|
|
1730
|
+
// When this payload fully satisfied the segment — no runtime request
|
|
1731
|
+
// needed — the content is as complete as a RUNTIME response of the same
|
|
1732
|
+
// variant would have been, so it records that runtime tier. That's what
|
|
1733
|
+
// lets the scheduler decide "would a runtime request return more?" by
|
|
1734
|
+
// comparing tiers alone, with no separate signal to consult.
|
|
1735
|
+
//
|
|
1736
|
+
// Otherwise the content is only as complete as the static tier it was
|
|
1737
|
+
// requested at, so a follow-up runtime request can still supersede it.
|
|
1738
|
+
const recordedFetchStrategy = !needsRuntimeRequest ? payloadFetchStrategy === _types.FetchStrategy.StaticShell ? _types.FetchStrategy.RuntimeShell : _types.FetchStrategy.PPRRuntime : fetchStrategy;
|
|
1739
|
+
// Key the entry by which params the server said this segment depends on.
|
|
1740
|
+
// Reusing one copy across param values is the point of the shell, but it
|
|
1741
|
+
// requires knowing the content doesn't depend on those params, and the
|
|
1742
|
+
// server's report is the direct evidence of that.
|
|
1743
|
+
//
|
|
1744
|
+
// Without that report, assume every param varies. The exception is a
|
|
1745
|
+
// shell variant, which reduces param-dependent content to param
|
|
1746
|
+
// fallbacks, so it really is good for any value of them.
|
|
1747
|
+
const payloadVaryPath = process.env.__NEXT_VARY_PARAMS && varyParams !== null ? (0, _varypath.getFulfilledSegmentVaryPath)(node.tree.varyPath, varyParams) : (0, _varypath.getSegmentVaryPathForRequest)(payloadFetchStrategy, node.tree);
|
|
1748
|
+
const nodeEntry = node.entry;
|
|
1749
|
+
if (nodeEntry !== null && nodeEntry.status === _cachemap.EntryStatus.Pending) {
|
|
1750
|
+
// We own this entry — fulfill it directly.
|
|
1751
|
+
const fulfilledEntry = fulfillSegmentCacheEntry(nodeEntry, data.rsc, entryStaleAt, isPartial, responseIsUpgradeableISRFallback, recordedFetchStrategy);
|
|
1752
|
+
// Move the entry to that key. This is load-bearing rather than a no-op:
|
|
1753
|
+
// a task spawns its entries before it knows what the response will
|
|
1754
|
+
// contain, so the key it guessed can be more reusable than the response
|
|
1755
|
+
// turned out to deserve.
|
|
1756
|
+
//
|
|
1757
|
+
// Pass the concrete lookup path — the most specific path a read for
|
|
1758
|
+
// this segment position would use — so that if the entry lands at a
|
|
1759
|
+
// more generic key, a stale entry at a more specific one can't shadow
|
|
1760
|
+
// it. See evictShadowingSegmentEntries. The upsert (rather than a bare
|
|
1761
|
+
// set) applies the usual precedence rules, so a concurrent task's more
|
|
1762
|
+
// complete response already in this slot isn't downgraded.
|
|
1763
|
+
upsertSegmentEntry(now, map, payloadVaryPath, fulfilledEntry, node.tree.varyPath);
|
|
1764
|
+
} else {
|
|
1765
|
+
// We don't own this entry. Create a detached entry and attempt to
|
|
1766
|
+
// upsert it into this payload's slot.
|
|
1767
|
+
const detachedEntry = createDetachedSegmentCacheEntry(now);
|
|
1768
|
+
const fulfilledEntry = fulfillSegmentCacheEntry(upgradeToPendingSegment(detachedEntry, fetchStrategy), data.rsc, entryStaleAt, isPartial, responseIsUpgradeableISRFallback, recordedFetchStrategy);
|
|
1769
|
+
upsertSegmentEntry(now, map, payloadVaryPath, fulfilledEntry, node.tree.varyPath);
|
|
1770
|
+
}
|
|
1771
|
+
node = node.parent;
|
|
1772
|
+
dataIndex++;
|
|
1773
|
+
}
|
|
1774
|
+
// If the server returned fewer segments than expected, reject any
|
|
1775
|
+
// remaining pending entries so they don't stay Pending forever.
|
|
1776
|
+
if (node !== null) {
|
|
1777
|
+
rejectRemainingSegmentsInBundle(node, now + 10 * 1000);
|
|
1778
|
+
}
|
|
1779
|
+
}
|
|
1780
|
+
/**
|
|
1781
|
+
* Clones a SegmentBundle chain with every `entry` removed, so a write walk
|
|
1782
|
+
* over it is pure detached upserts. Used for the payload that does NOT
|
|
1783
|
+
* match the bundle's spawned entries (see writeSegmentBundleResponse).
|
|
1784
|
+
*/ function detachEntriesFromSegmentBundle(segments) {
|
|
1785
|
+
const head = {
|
|
1786
|
+
tree: segments.tree,
|
|
1787
|
+
entry: null,
|
|
1788
|
+
parent: null
|
|
1789
|
+
};
|
|
1790
|
+
let clonedTail = head;
|
|
1791
|
+
let node = segments.parent;
|
|
1792
|
+
while(node !== null){
|
|
1793
|
+
const clonedNode = {
|
|
1794
|
+
tree: node.tree,
|
|
1795
|
+
entry: null,
|
|
1796
|
+
parent: null
|
|
1797
|
+
};
|
|
1798
|
+
clonedTail.parent = clonedNode;
|
|
1799
|
+
clonedTail = clonedNode;
|
|
1800
|
+
node = node.parent;
|
|
1801
|
+
}
|
|
1802
|
+
return head;
|
|
1803
|
+
}
|
|
1804
|
+
// TODO: Consolidate the read* helpers below with the ones in
|
|
1805
|
+
// vary-params-decoding — they all perform a version of the same synchronous
|
|
1806
|
+
// read of a buffered decode's late-resolving values.
|
|
1807
|
+
/**
|
|
1808
|
+
* Reads a segment's partialness from its `isPartial` promise. (Unlike the
|
|
1809
|
+
* values read via `readFulfilledValue` below, the fulfillment value here is
|
|
1810
|
+
* void — partialness is encoded as the ABSENCE of a fulfillment.) The server
|
|
1811
|
+
* fulfills it only for a fully-static segment and leaves it pending for a
|
|
1812
|
+
* partial one (see `SegmentPrefetch['isPartial']`), so partial == not
|
|
1813
|
+
* fulfilled. The read is synchronous because the response is fully buffered
|
|
1814
|
+
* before it's decoded, so a fulfillment is already visible on the thenable's
|
|
1815
|
+
* status — the same trick `readVaryParams` uses for the vary params iterables.
|
|
1816
|
+
*/ function readFulfilledIsPartial(isPartial) {
|
|
1817
|
+
const thenable = isPartial;
|
|
1818
|
+
// Force Flight to unwrap a received-but-not-yet-settled row. A pending row,
|
|
1819
|
+
// or a truncated shell decode whose fulfillment landed past the boundary,
|
|
1820
|
+
// stays non-fulfilled — read as partial, which is correct either way.
|
|
1821
|
+
thenable.then(noop, noop);
|
|
1822
|
+
return thenable.status !== 'fulfilled';
|
|
1823
|
+
}
|
|
1824
|
+
/**
|
|
1825
|
+
* Reads a late-resolving value off a fully-buffered decode's thenable status,
|
|
1826
|
+
* using the same trick as above. Returns `valueIfUnresolved` for a row that
|
|
1827
|
+
* is pending or absent in this decode — e.g. one whose fulfillment landed
|
|
1828
|
+
* past a truncated shell decode's boundary. That's what scopes a response's
|
|
1829
|
+
* late-resolving signals to the payload being decoded.
|
|
1830
|
+
*/ function readFulfilledValue(valueFromServer, valueIfUnresolved) {
|
|
1831
|
+
const thenable = valueFromServer;
|
|
1832
|
+
// Force Flight to unwrap a received-but-not-yet-settled row.
|
|
1833
|
+
thenable.then(noop, noop);
|
|
1834
|
+
if (thenable.status === 'fulfilled' && thenable.value !== undefined) {
|
|
1835
|
+
return thenable.value;
|
|
1836
|
+
}
|
|
1837
|
+
return valueIfUnresolved;
|
|
1838
|
+
}
|
|
1839
|
+
/**
|
|
1840
|
+
* Reads a stale-at time from the staleTime async iterable of a fully-buffered
|
|
1841
|
+
* response — segment bundles and stage decodes, which go through
|
|
1842
|
+
* `createNonTaskyPrefetchResponseStream`. Because the bytes are all present,
|
|
1843
|
+
* each yielded value is already visible on its chunk's thenable status (the
|
|
1844
|
+
* same trick `readVaryParams` uses), so this drains synchronously and takes
|
|
1845
|
+
* the last value (the final staleTime, as `resolveStaleAt` does for the
|
|
1846
|
+
* async case). A missing iterable, or a truncated shell decode whose value
|
|
1847
|
+
* landed past the boundary, reads as absent and falls back to the static
|
|
1848
|
+
* stale time.
|
|
1849
|
+
*
|
|
1850
|
+
* For the one response kind that isn't buffered when read — a dynamic `Full`
|
|
1851
|
+
* response (fetchStrategy.Full with Partial Prefetching disabled) — use
|
|
1852
|
+
* `resolveStaleAt` instead, since its values aren't materialized synchronously.
|
|
1853
|
+
*/ function readFulfilledStaleAt(now, staleTime) {
|
|
1854
|
+
if (staleTime === undefined) {
|
|
1855
|
+
return now + _navigatereducer.STATIC_STALETIME_MS;
|
|
1856
|
+
}
|
|
1857
|
+
const iterator = staleTime[Symbol.asyncIterator]();
|
|
1858
|
+
let staleTimeSeconds;
|
|
1859
|
+
while(true){
|
|
1860
|
+
const chunk = iterator.next();
|
|
1861
|
+
chunk.then(noop, noop);
|
|
1862
|
+
if (chunk.status !== 'fulfilled' || chunk.value === undefined) {
|
|
1863
|
+
break;
|
|
1864
|
+
}
|
|
1865
|
+
if (chunk.value.done) {
|
|
1866
|
+
break;
|
|
1867
|
+
}
|
|
1868
|
+
staleTimeSeconds = chunk.value.value;
|
|
1869
|
+
}
|
|
1870
|
+
if (staleTimeSeconds === undefined || isNaN(staleTimeSeconds)) {
|
|
1871
|
+
return now + _navigatereducer.STATIC_STALETIME_MS;
|
|
1872
|
+
}
|
|
1873
|
+
return now + getStaleTimeMs(staleTimeSeconds);
|
|
1874
|
+
}
|
|
1875
|
+
const noop = ()=>{};
|
|
1876
|
+
/**
|
|
1877
|
+
* The localized retry loop for an upgradeable fallback shell. Re-issues the
|
|
1878
|
+
* exact same segment-bundle request (via `fetchSegmentsOnCacheMissImpl`) up to
|
|
1879
|
+
* MAX_FALLBACK_RETRIES times, FALLBACK_RETRY_DELAY_MS apart, until the server
|
|
1880
|
+
* returns the concrete (upgraded) version. On success it upserts the upgraded
|
|
1881
|
+
* segments (so they aren't re-fetched) and pings the task, so the task's
|
|
1882
|
+
* *other* fallback segments get re-attempted. If every attempt is still a
|
|
1883
|
+
* fallback (or fails), it gives up.
|
|
1884
|
+
*
|
|
1885
|
+
* A loop runs at most once per task, ever (the caller gates on
|
|
1886
|
+
* `fallbackRetryStatus === Empty`, set to `Pending` before this runs and never
|
|
1887
|
+
* reset to `Empty`). The sleep timer is never `clearTimeout`-ed, so the awaited
|
|
1888
|
+
* sleep always settles; the loop simply checks `isCanceled` after waking and
|
|
1889
|
+
* bails if the task was canceled in the meantime. On success the status becomes
|
|
1890
|
+
* `Fulfilled`; on any non-success exit (exhausted retries, fetch error, or
|
|
1891
|
+
* cancel) it becomes `Rejected`.
|
|
1892
|
+
*/ async function retryUpgradeableFallbackPrefetch(task, route, routeKey, tree, segments, segmentCount, // The strategy the initial fetch wrote its payloads with; the upgraded
|
|
1893
|
+
// result is written through the same payload fork so the same cache slots
|
|
1894
|
+
// (including the shell paths) are upgraded.
|
|
1895
|
+
fetchStrategy) {
|
|
1896
|
+
for(let attempt = 0; attempt < MAX_FALLBACK_RETRIES; attempt++){
|
|
1897
|
+
await new Promise((resolve)=>setTimeout(resolve, FALLBACK_RETRY_DELAY_MS));
|
|
1898
|
+
if (task.isCanceled) {
|
|
1899
|
+
break;
|
|
1900
|
+
}
|
|
1901
|
+
let result;
|
|
1902
|
+
try {
|
|
1903
|
+
result = await fetchSegmentsOnCacheMissImpl(route, routeKey, tree);
|
|
1904
|
+
} catch {
|
|
1905
|
+
break;
|
|
1906
|
+
}
|
|
1907
|
+
if (task.isCanceled) {
|
|
1908
|
+
break;
|
|
1909
|
+
}
|
|
1910
|
+
if (result === null) {
|
|
1911
|
+
continue;
|
|
1912
|
+
}
|
|
1913
|
+
if (result.serverResponse.isUpgradeableISRFallback) {
|
|
1914
|
+
continue;
|
|
1915
|
+
}
|
|
1916
|
+
// Success: the server returned the concrete (upgraded) version. Write it
|
|
1917
|
+
// back through the same payload fork as the initial fetch, so every slot
|
|
1918
|
+
// the initial fetch wrote — including the shell paths, even when the
|
|
1919
|
+
// upgraded response is fully static (shell === full) — is upgraded. The
|
|
1920
|
+
// bundle's entries were already settled by the initial fetch, so every
|
|
1921
|
+
// write is a detached upsert that replaces the fallback. Mark the loop
|
|
1922
|
+
// fulfilled and ping the task; its other fallback segments are now
|
|
1923
|
+
// allowed to revalidate.
|
|
1924
|
+
const { serverResponse, shellResponse, responseSize } = result;
|
|
1925
|
+
const now = Date.now();
|
|
1926
|
+
writeSegmentBundleResponseVariants(task.segmentCacheMap, serverResponse, shellResponse, responseSize, segments, segmentCount, now, fetchStrategy);
|
|
1927
|
+
task.fallbackRetryStatus = _cachemap.EntryStatus.Fulfilled;
|
|
1928
|
+
(0, _scheduler.pingPrefetchTask)(task);
|
|
1929
|
+
return;
|
|
1930
|
+
}
|
|
1931
|
+
// The loop finished without success (exhausted its retries, broke out on a
|
|
1932
|
+
// fetch error, or the task was canceled). It won't run again for this task.
|
|
1933
|
+
task.fallbackRetryStatus = _cachemap.EntryStatus.Rejected;
|
|
1934
|
+
}
|
|
1935
|
+
async function fetchSegmentPrefetchesUsingDynamicRequest(task, route, fetchStrategy, dynamicRequestTree, spawnedEntries) {
|
|
1936
|
+
const key = task.key;
|
|
1937
|
+
const url = new URL(route.canonicalUrl, location.origin);
|
|
1938
|
+
const nextUrl = key.nextUrl;
|
|
1939
|
+
if (spawnedEntries.size === 1 && spawnedEntries.has(route.metadata.requestKey)) {
|
|
1940
|
+
// The only thing pending is the head. Instruct the server to
|
|
1941
|
+
// skip over everything else.
|
|
1942
|
+
// TODO: Lift this logic into the caller. Or perhaps unify the
|
|
1943
|
+
// "request tree" and the spawnedEntries into the same type so they are
|
|
1944
|
+
// guaranteed to always been in sync.
|
|
1945
|
+
dynamicRequestTree = MetadataOnlyRequestTree;
|
|
1946
|
+
}
|
|
1947
|
+
const headers = {
|
|
1948
|
+
[_approuterheaders.RSC_HEADER]: '1',
|
|
1949
|
+
[_approuterheaders.NEXT_ROUTER_STATE_TREE_HEADER]: (0, _flightdatahelpers.prepareFlightRouterStateForRequest)(dynamicRequestTree)
|
|
1950
|
+
};
|
|
1951
|
+
if (nextUrl !== null) {
|
|
1952
|
+
headers[_approuterheaders.NEXT_URL] = nextUrl;
|
|
1953
|
+
}
|
|
1954
|
+
switch(fetchStrategy){
|
|
1955
|
+
case _types.FetchStrategy.Full:
|
|
1956
|
+
{
|
|
1957
|
+
break;
|
|
1958
|
+
}
|
|
1959
|
+
case _types.FetchStrategy.PPRRuntime:
|
|
1960
|
+
{
|
|
1961
|
+
headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER] = '2';
|
|
1962
|
+
break;
|
|
1963
|
+
}
|
|
1964
|
+
case _types.FetchStrategy.RuntimeShell:
|
|
1965
|
+
{
|
|
1966
|
+
headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER] = '3';
|
|
1967
|
+
break;
|
|
1968
|
+
}
|
|
1969
|
+
case _types.FetchStrategy.LoadingBoundary:
|
|
1970
|
+
{
|
|
1971
|
+
headers[_approuterheaders.NEXT_ROUTER_PREFETCH_HEADER] = '1';
|
|
1972
|
+
break;
|
|
1973
|
+
}
|
|
1974
|
+
default:
|
|
1975
|
+
{
|
|
1976
|
+
fetchStrategy;
|
|
1977
|
+
}
|
|
1978
|
+
}
|
|
1979
|
+
try {
|
|
1980
|
+
const response = await fetchPrefetchResponse(url, headers);
|
|
1981
|
+
if (!response || !response.ok || !response.body) {
|
|
1982
|
+
// Server responded with an error, or with a miss. We should still cache
|
|
1983
|
+
// the response, but we can try again after 10 seconds.
|
|
1984
|
+
rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);
|
|
1985
|
+
return null;
|
|
1986
|
+
}
|
|
1987
|
+
const renderedSearch = (0, _routeparams.getRenderedSearch)(response);
|
|
1988
|
+
if (renderedSearch !== route.renderedSearch) {
|
|
1989
|
+
// The search params that were used to render the target page are
|
|
1990
|
+
// different from the search params in the request URL. This only happens
|
|
1991
|
+
// when there's a dynamic rewrite in between the tree prefetch and the
|
|
1992
|
+
// data prefetch.
|
|
1993
|
+
// TODO: For now, since this is an edge case, we reject the prefetch, but
|
|
1994
|
+
// the proper way to handle this is to evict the stale route tree entry
|
|
1995
|
+
// then fill the cache with the new response.
|
|
1996
|
+
rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);
|
|
1997
|
+
return null;
|
|
1998
|
+
}
|
|
1999
|
+
// Track when the network connection closes. Only meaningful for Full
|
|
2000
|
+
// (dynamic) prefetches which use incremental streaming. For buffered
|
|
2001
|
+
// paths, this is resolved immediately — see TODO in fetchRouteOnCacheMiss.
|
|
2002
|
+
const closed = (0, _promisewithresolvers.createPromiseWithResolvers)();
|
|
2003
|
+
let fulfilledEntries = null;
|
|
2004
|
+
let prefetchStream;
|
|
2005
|
+
let bufferedResponseSize = null;
|
|
2006
|
+
if (fetchStrategy === _types.FetchStrategy.Full) {
|
|
2007
|
+
// Full prefetches are dynamic responses stored in the prefetch cache.
|
|
2008
|
+
// They don't carry vary params or other cache metadata, so there's no
|
|
2009
|
+
// need to buffer them. Use the incremental version to allow data to be
|
|
2010
|
+
// processed as it arrives.
|
|
2011
|
+
prefetchStream = createIncrementalPrefetchResponseStream(response.body, closed.resolve, function onResponseSizeUpdate(totalBytesReceivedSoFar) {
|
|
2012
|
+
// When processing a dynamic response, we don't know how large each
|
|
2013
|
+
// individual segment is, so approximate by assigning each segment
|
|
2014
|
+
// the average of the total response size.
|
|
2015
|
+
if (fulfilledEntries === null) {
|
|
2016
|
+
// Haven't received enough data yet to know which segments
|
|
2017
|
+
// were included.
|
|
2018
|
+
return;
|
|
2019
|
+
}
|
|
2020
|
+
const averageSize = totalBytesReceivedSoFar / fulfilledEntries.length;
|
|
2021
|
+
for (const entry of fulfilledEntries){
|
|
2022
|
+
(0, _cachemap.setSizeInCacheMap)(entry, averageSize);
|
|
2023
|
+
}
|
|
2024
|
+
});
|
|
2025
|
+
} else {
|
|
2026
|
+
const { stream, size } = await createNonTaskyPrefetchResponseStream(response.body);
|
|
2027
|
+
closed.resolve();
|
|
2028
|
+
prefetchStream = stream;
|
|
2029
|
+
bufferedResponseSize = size;
|
|
2030
|
+
}
|
|
2031
|
+
const [serverData, cacheData] = await Promise.all([
|
|
2032
|
+
(0, _fetchserverresponse.createFromNextReadableStream)(prefetchStream, headers, {
|
|
2033
|
+
allowPartialStream: true
|
|
2034
|
+
}),
|
|
2035
|
+
response.cacheData
|
|
2036
|
+
]);
|
|
2037
|
+
const now = Date.now();
|
|
2038
|
+
const staleAt = await resolveStaleAt(now, serverData.s, response);
|
|
2039
|
+
const buildId = response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverData.b;
|
|
2040
|
+
// Check if a reusable App Shell can be extracted from the main response.
|
|
2041
|
+
let serverDataThatSatisfiesSpawnedEntries;
|
|
2042
|
+
// The shell and full response have independent stale times. Track the
|
|
2043
|
+
// staleAt that corresponds to whatever payload the spawned entries get
|
|
2044
|
+
// filled with below.
|
|
2045
|
+
let staleAtForSpawnedEntries = staleAt;
|
|
2046
|
+
if (cacheData === null) {
|
|
2047
|
+
// No shell can be extracted without cache metadata (only present when
|
|
2048
|
+
// Cached Navigations is enabled). For routes without a distinct App Shell
|
|
2049
|
+
// the extraction below is a no-op anyway (`resolveShellStageData` returns
|
|
2050
|
+
// null), so this just short-circuits that case.
|
|
2051
|
+
serverDataThatSatisfiesSpawnedEntries = serverData;
|
|
2052
|
+
} else {
|
|
2053
|
+
const shellStageData = await (0, _fetchserverresponse.resolveShellStageData)(cacheData, serverData, headers);
|
|
2054
|
+
if (shellStageData === null) {
|
|
2055
|
+
// No App Shell can be extracted. This usually means the entire response
|
|
2056
|
+
// _is_ the App Shell. The other possibility (for now, until the feature
|
|
2057
|
+
// is fully stabilized) is that App Shells are not yet enabled. Either
|
|
2058
|
+
// way, there's nothing extra for us to do: fulfill the pending entries
|
|
2059
|
+
// using the response from the server.
|
|
2060
|
+
serverDataThatSatisfiesSpawnedEntries = serverData;
|
|
2061
|
+
} else {
|
|
2062
|
+
// Successfully extracted an App Shell that is a subset of the main
|
|
2063
|
+
// response. Depending on the type of prefetch this is, we need to
|
|
2064
|
+
// decide whether to fulfill the pending entries with the shell or with
|
|
2065
|
+
// the entire response. In either scenario, we'll be inserting _both_
|
|
2066
|
+
// versions of the response into the cache; the extra logic is only
|
|
2067
|
+
// here so that we don't fulfill pending shell entries with something
|
|
2068
|
+
// that's more concrete than what they expect.
|
|
2069
|
+
// TODO: The only reason this matters is because during a navigation,
|
|
2070
|
+
// if a segment is still pending, we render a promise that resolves to
|
|
2071
|
+
// the eventual value of that segment. But that means we cannot
|
|
2072
|
+
// eventually resolve that segment to something more concrete than what
|
|
2073
|
+
// was already requested. Hence the extra logic here. A cleaner way to
|
|
2074
|
+
// model this, though, is whenever we render a promise that resolves to
|
|
2075
|
+
// the result of a pending entry, do one additional cache look-up right
|
|
2076
|
+
// after the promise resolves, to ensure we never get a mismatching
|
|
2077
|
+
// entry. Leaving this for a follow up.
|
|
2078
|
+
// shellStageData is a fully-buffered stage decode, so read staleTime
|
|
2079
|
+
// synchronously off the thenable status.
|
|
2080
|
+
const shellStaleAt = readFulfilledStaleAt(now, shellStageData.s);
|
|
2081
|
+
if (fetchStrategy === _types.FetchStrategy.RuntimeShell) {
|
|
2082
|
+
// This is a Shell prefetch, so the pending entries must be fulfilled
|
|
2083
|
+
// with the shell.
|
|
2084
|
+
serverDataThatSatisfiesSpawnedEntries = shellStageData;
|
|
2085
|
+
staleAtForSpawnedEntries = shellStaleAt;
|
|
2086
|
+
// Separately, we'll also cache the entire response, by upserting it
|
|
2087
|
+
// into the cache.
|
|
2088
|
+
writePrerenderResponseIntoCache(now, _types.FetchStrategy.PPR, serverData.f, buildId, serverData.h, serverData.r ?? null, staleAt, dynamicRequestTree, renderedSearch, cacheData.isResponsePartial, task.segmentCacheMap);
|
|
2089
|
+
} else {
|
|
2090
|
+
// This is _not_ a Shell prefetch, so the pending entries should be
|
|
2091
|
+
// fulfilled with the entire response.
|
|
2092
|
+
serverDataThatSatisfiesSpawnedEntries = serverData;
|
|
2093
|
+
// Additionally, we might as well upsert the extracted Shell into the
|
|
2094
|
+
// cache, too.
|
|
2095
|
+
// `shellStageData` is only provided in cases where the shell is
|
|
2096
|
+
// different from the main response. If they are equivalent, this
|
|
2097
|
+
// branch is skipped. So it follows that any shell data reaches
|
|
2098
|
+
// this path must be partial -- it does not represent the entire
|
|
2099
|
+
// UI of the target page.
|
|
2100
|
+
const isShellStagePartial = true;
|
|
2101
|
+
writePrerenderResponseIntoCache(now, _types.FetchStrategy.RuntimeShell, shellStageData.f, buildId, shellStageData.h, shellStageData.r ?? null, shellStaleAt, dynamicRequestTree, renderedSearch, isShellStagePartial, task.segmentCacheMap);
|
|
2102
|
+
}
|
|
2103
|
+
}
|
|
2104
|
+
}
|
|
2105
|
+
// Read head vary params synchronously (unioning in the response-level root
|
|
2106
|
+
// params). Individual segments carry their own iterables in
|
|
2107
|
+
// CacheNodeSeedData; the root iterable is threaded down so each segment
|
|
2108
|
+
// unions it too.
|
|
2109
|
+
const rootVaryParamsIterable = serverDataThatSatisfiesSpawnedEntries.r ?? null;
|
|
2110
|
+
const headVaryParams = (0, _varyparamsdecoding.readVaryParams)(serverDataThatSatisfiesSpawnedEntries.h, rootVaryParamsIterable);
|
|
2111
|
+
// PPRRuntime and RuntimeShell prefetches are partial when the server
|
|
2112
|
+
// marks the response as '~' (Partial). RuntimeShell additionally omits
|
|
2113
|
+
// every dynamic suspense boundary below the App Shell, so its segments
|
|
2114
|
+
// are always partial regardless of what the server marker says.
|
|
2115
|
+
// Full/LoadingBoundary prefetches are always complete.
|
|
2116
|
+
const isResponsePartial = fetchStrategy === _types.FetchStrategy.RuntimeShell || fetchStrategy === _types.FetchStrategy.PPRRuntime && (cacheData?.isResponsePartial ?? false);
|
|
2117
|
+
const flightDatas = (0, _flightdatahelpers.normalizeFlightData)(serverDataThatSatisfiesSpawnedEntries.f);
|
|
2118
|
+
if (typeof flightDatas === 'string') {
|
|
2119
|
+
rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);
|
|
2120
|
+
return null;
|
|
2121
|
+
}
|
|
2122
|
+
const navigationSeed = (0, _navigation.convertServerPatchToFullTree)(now, dynamicRequestTree, flightDatas, renderedSearch, // Not needed for prefetch responses; pass unknown to use the default.
|
|
2123
|
+
_bfcache.UnknownDynamicStaleTime);
|
|
2124
|
+
if (navigationSeed.treeDivergedFromBase && // A head-only request uses the MetadataOnlyRequestTree stub rather than
|
|
2125
|
+
// a tree derived from the route entry, so divergence from it carries
|
|
2126
|
+
// no signal.
|
|
2127
|
+
// TODO: This special case goes away once convertServerPatchToFullTree
|
|
2128
|
+
// diffs against the base RouteTree (route.tree) instead of the
|
|
2129
|
+
// request tree.
|
|
2130
|
+
dynamicRequestTree !== MetadataOnlyRequestTree) {
|
|
2131
|
+
// The server rendered a different route tree than the one we requested:
|
|
2132
|
+
// the URL has a rewrite that behaves dynamically, so the params baked
|
|
2133
|
+
// into the request are wrong and the server can never fulfill it. Mark
|
|
2134
|
+
// the route entry — which doubles as the stored prediction pattern, so
|
|
2135
|
+
// this also disables a bad prediction (see matchKnownRoute) that would
|
|
2136
|
+
// otherwise be re-derived on every retry — and invalidate entries that
|
|
2137
|
+
// were derived from it. This mirrors dispatchRetryDueToTreeMismatch on
|
|
2138
|
+
// the navigation path. It can't loop: the refetched route entry is
|
|
2139
|
+
// built from the server's response, so it only mismatches again if the
|
|
2140
|
+
// rewrite's behavior changes again.
|
|
2141
|
+
markRouteEntryAsDynamicRewrite(route);
|
|
2142
|
+
invalidateRouteCacheEntries(key.nextUrl, task.treeAtTimeOfPrefetch);
|
|
2143
|
+
// Reject with an immediate expiration instead of the usual backoff: the
|
|
2144
|
+
// invalidation above triggers a re-prefetch, which per the above does
|
|
2145
|
+
// not loop.
|
|
2146
|
+
// TODO: Consider also bounding retries with a counter on the task
|
|
2147
|
+
// object, so a prefetch that repeatedly fails to settle backs off
|
|
2148
|
+
// regardless of the reason.
|
|
2149
|
+
rejectSegmentEntriesIfStillPending(spawnedEntries, -1);
|
|
2150
|
+
return null;
|
|
2151
|
+
}
|
|
2152
|
+
// Aside from writing the data into the cache, this function also returns
|
|
2153
|
+
// the entries that were fulfilled, so we can streamingly update their sizes
|
|
2154
|
+
// in the LRU as more data comes in.
|
|
2155
|
+
fulfilledEntries = writeDynamicRenderResponseIntoCache(now, fetchStrategy, flightDatas, buildId, isResponsePartial, headVaryParams, rootVaryParamsIterable, staleAtForSpawnedEntries, navigationSeed, spawnedEntries, task.segmentCacheMap);
|
|
2156
|
+
// For buffered responses, update LRU sizes now that we know which
|
|
2157
|
+
// entries were fulfilled.
|
|
2158
|
+
if (bufferedResponseSize !== null && fulfilledEntries !== null && fulfilledEntries.length > 0) {
|
|
2159
|
+
const averageSize = bufferedResponseSize / fulfilledEntries.length;
|
|
2160
|
+
for (const entry of fulfilledEntries){
|
|
2161
|
+
(0, _cachemap.setSizeInCacheMap)(entry, averageSize);
|
|
2162
|
+
}
|
|
2163
|
+
}
|
|
2164
|
+
// Return a promise that resolves when the network connection closes, so
|
|
2165
|
+
// the scheduler can track the number of concurrent network connections.
|
|
2166
|
+
return {
|
|
2167
|
+
value: null,
|
|
2168
|
+
closed: closed.promise
|
|
2169
|
+
};
|
|
2170
|
+
} catch (error) {
|
|
2171
|
+
if (process.env.__NEXT_USE_OFFLINE) {
|
|
2172
|
+
const { checkOfflineError } = require('../offline');
|
|
2173
|
+
if (checkOfflineError(error)) {
|
|
2174
|
+
// Unlike navigations and server actions, prefetches don't await
|
|
2175
|
+
// waitForConnection — they just reject the cache entry with an
|
|
2176
|
+
// immediate expiration so it gets retried once the scheduler is
|
|
2177
|
+
// re-pinged after connectivity is restored.
|
|
2178
|
+
rejectSegmentEntriesIfStillPending(spawnedEntries, -1);
|
|
2179
|
+
return null;
|
|
2180
|
+
}
|
|
2181
|
+
}
|
|
2182
|
+
rejectSegmentEntriesIfStillPending(spawnedEntries, Date.now() + 10 * 1000);
|
|
2183
|
+
return null;
|
|
2184
|
+
}
|
|
2185
|
+
}
|
|
2186
|
+
function writeDynamicTreeResponseIntoCache(now, fetchStrategy, response, serverData, entry, couldBeIntercepted, canonicalUrl, routeIsPPREnabled, headVaryParams, rootVaryParamsIterable, originalPathname, originalSearch, nextUrl, // The spawning task's `PrefetchTask.segmentCacheMap`.
|
|
2187
|
+
map) {
|
|
2188
|
+
const renderedSearch = (0, _routeparams.getRenderedSearch)(response);
|
|
2189
|
+
const normalizedFlightDataResult = (0, _flightdatahelpers.normalizeFlightData)(serverData.f);
|
|
2190
|
+
if (// A string result means navigating to this route will result in an
|
|
2191
|
+
// MPA navigation.
|
|
2192
|
+
typeof normalizedFlightDataResult === 'string' || normalizedFlightDataResult.length !== 1) {
|
|
2193
|
+
rejectRouteCacheEntry(entry, now + 10 * 1000);
|
|
2194
|
+
return;
|
|
2195
|
+
}
|
|
2196
|
+
const flightData = normalizedFlightDataResult[0];
|
|
2197
|
+
if (!flightData.isRootRender) {
|
|
2198
|
+
// Unexpected response format.
|
|
2199
|
+
rejectRouteCacheEntry(entry, now + 10 * 1000);
|
|
2200
|
+
return;
|
|
2201
|
+
}
|
|
2202
|
+
const flightRouterState = flightData.tree;
|
|
2203
|
+
// If the response was postponed, segments may contain dynamic holes.
|
|
2204
|
+
// The head has its own partiality flag (flightDataEntry.isHeadPartial)
|
|
2205
|
+
// which is handled separately in writeDynamicRenderResponseIntoCache.
|
|
2206
|
+
const isResponsePartial = response.headers.get(_approuterheaders.NEXT_DID_POSTPONE_HEADER) === '1';
|
|
2207
|
+
// Convert the server-sent data into the RouteTree format used by the
|
|
2208
|
+
// client cache.
|
|
2209
|
+
//
|
|
2210
|
+
// During this traversal, we accumulate additional data into this
|
|
2211
|
+
// "accumulator" object.
|
|
2212
|
+
const acc = {
|
|
2213
|
+
metadataVaryPath: null,
|
|
2214
|
+
treeDivergedFromBase: false
|
|
2215
|
+
};
|
|
2216
|
+
const routeTree = convertRootFlightRouterStateToRouteTree(flightRouterState, renderedSearch, acc);
|
|
2217
|
+
const metadataVaryPath = acc.metadataVaryPath;
|
|
2218
|
+
if (metadataVaryPath === null) {
|
|
2219
|
+
rejectRouteCacheEntry(entry, now + 10 * 1000);
|
|
2220
|
+
return;
|
|
2221
|
+
}
|
|
2222
|
+
(0, _optimisticroutes.discoverKnownRoute)(now, originalPathname, originalSearch, nextUrl, entry, routeTree, metadataVaryPath, couldBeIntercepted, canonicalUrl, routeIsPPREnabled, false // hasDynamicRewrite
|
|
2223
|
+
);
|
|
2224
|
+
// If the server sent segment data as part of the response, we should write
|
|
2225
|
+
// it into the cache to prevent a second, redundant prefetch request.
|
|
2226
|
+
// TODO: This is a leftover branch from before Client Segment Cache was
|
|
2227
|
+
// enabled everywhere. Tree prefetches should never include segment data. We
|
|
2228
|
+
// can delete it. Leaving for a subsequent PR.
|
|
2229
|
+
const navigationSeed = (0, _navigation.convertServerPatchToFullTree)(now, flightRouterState, normalizedFlightDataResult, renderedSearch, _bfcache.UnknownDynamicStaleTime);
|
|
2230
|
+
const buildId = response.headers.get(_constants.NEXT_NAV_DEPLOYMENT_ID_HEADER) ?? serverData.b;
|
|
2231
|
+
writeDynamicRenderResponseIntoCache(now, fetchStrategy, normalizedFlightDataResult, buildId, isResponsePartial, headVaryParams, rootVaryParamsIterable, getStaleAtFromHeader(now, response), navigationSeed, null, map);
|
|
2232
|
+
}
|
|
2233
|
+
function rejectSegmentEntriesIfStillPending(entries, staleAt) {
|
|
2234
|
+
const fulfilledEntries = [];
|
|
2235
|
+
for (const entry of entries.values()){
|
|
2236
|
+
if (entry.status === _cachemap.EntryStatus.Pending) {
|
|
2237
|
+
rejectSegmentCacheEntry(entry, staleAt);
|
|
2238
|
+
} else if (entry.status === _cachemap.EntryStatus.Fulfilled) {
|
|
2239
|
+
fulfilledEntries.push(entry);
|
|
2240
|
+
}
|
|
2241
|
+
}
|
|
2242
|
+
return fulfilledEntries;
|
|
2243
|
+
}
|
|
2244
|
+
function writeDynamicRenderResponseIntoCache(now, fetchStrategy, flightDatas, buildId, isResponsePartial, headVaryParams, rootVaryParamsIterable, staleAt, navigationSeed, spawnedEntries, // The map the work that spawned this response's request is bound to: the
|
|
2245
|
+
// spawning task's `PrefetchTask.segmentCacheMap` for prefetches, the
|
|
2246
|
+
// navigation's map for navigation-side writes. Binding the write to the
|
|
2247
|
+
// requesting work means a response that lands after a testing-lock scope
|
|
2248
|
+
// boundary still writes into the map its entries live in.
|
|
2249
|
+
map) {
|
|
2250
|
+
if (buildId && buildId !== (0, _navigationbuildid.getNavigationBuildId)()) {
|
|
2251
|
+
// The server build does not match the client. Treat as a 404. During
|
|
2252
|
+
// an actual navigation, the router will trigger an MPA navigation.
|
|
2253
|
+
if (spawnedEntries !== null) {
|
|
2254
|
+
rejectSegmentEntriesIfStillPending(spawnedEntries, now + 10 * 1000);
|
|
2255
|
+
}
|
|
2256
|
+
return null;
|
|
2257
|
+
}
|
|
2258
|
+
const routeTree = navigationSeed.routeTree;
|
|
2259
|
+
const metadataTree = navigationSeed.metadataVaryPath !== null ? createMetadataRouteTree(navigationSeed.metadataVaryPath) : null;
|
|
2260
|
+
for (const flightDataEntry of flightDatas){
|
|
2261
|
+
const seedData = flightDataEntry.seedData;
|
|
2262
|
+
if (seedData !== null) {
|
|
2263
|
+
// The data sent by the server represents only a subtree of the app. We
|
|
2264
|
+
// need to find the part of the task tree that matches the response.
|
|
2265
|
+
//
|
|
2266
|
+
// segmentPath represents the parent path of subtree. It's a repeating
|
|
2267
|
+
// pattern of parallel route key and segment:
|
|
2268
|
+
//
|
|
2269
|
+
// [string, Segment, string, Segment, string, Segment, ...]
|
|
2270
|
+
const segmentPath = flightDataEntry.segmentPath;
|
|
2271
|
+
let tree = routeTree;
|
|
2272
|
+
for(let i = 0; i < segmentPath.length; i += 2){
|
|
2273
|
+
const parallelRouteKey = segmentPath[i];
|
|
2274
|
+
const childTree = tree?.slots?.get(parallelRouteKey);
|
|
2275
|
+
if (childTree !== undefined) {
|
|
2276
|
+
tree = childTree;
|
|
2277
|
+
} else {
|
|
2278
|
+
if (spawnedEntries !== null) {
|
|
2279
|
+
rejectSegmentEntriesIfStillPending(spawnedEntries, now + 10 * 1000);
|
|
2280
|
+
}
|
|
2281
|
+
return null;
|
|
2282
|
+
}
|
|
2283
|
+
}
|
|
2284
|
+
writeSeedDataIntoCache(now, // A response write is bound to the map its entries live in (the
|
|
2285
|
+
// spawning task's `PrefetchTask.segmentCacheMap`).
|
|
2286
|
+
map, fetchStrategy, tree, staleAt, seedData, isResponsePartial, rootVaryParamsIterable, spawnedEntries);
|
|
2287
|
+
}
|
|
2288
|
+
const head = flightDataEntry.head;
|
|
2289
|
+
if (head !== null && metadataTree !== null) {
|
|
2290
|
+
// When Cache Components is enabled, the server's `isHeadPartial` flag
|
|
2291
|
+
// (isPossiblyPartialHead in app-render.tsx) is unreliable: it's computed
|
|
2292
|
+
// before the head is serialized, so it's conservatively `true` for every
|
|
2293
|
+
// statically-generated PPR page — even pages whose head is actually
|
|
2294
|
+
// complete — and it's `false` for runtime/dynamic responses whose head is
|
|
2295
|
+
// actually partial (e.g. a route with an async `generateMetadata`). So we
|
|
2296
|
+
// ignore it and derive the head's partiality from whether the response
|
|
2297
|
+
// itself was partial, exactly as we do for segments (see
|
|
2298
|
+
// `writeSeedDataIntoCache`). A non-partial response carries a complete
|
|
2299
|
+
// head; a partial (postponed) one does not.
|
|
2300
|
+
//
|
|
2301
|
+
// Without Cache Components, the server sends the correct isHeadPartial.
|
|
2302
|
+
const isHeadPartial = process.env.__NEXT_CACHE_COMPONENTS ? isResponsePartial : flightDataEntry.isHeadPartial;
|
|
2303
|
+
fulfillEntrySpawnedByRuntimePrefetch(now, // A response write is bound to the map its entries live in (the
|
|
2304
|
+
// spawning task's `PrefetchTask.segmentCacheMap`).
|
|
2305
|
+
map, fetchStrategy, head, isHeadPartial, staleAt, // For head entries, use the head-specific vary params passed as
|
|
2306
|
+
// parameter.
|
|
2307
|
+
headVaryParams, metadataTree, spawnedEntries);
|
|
2308
|
+
}
|
|
2309
|
+
}
|
|
2310
|
+
// Any entry that's still pending was intentionally not rendered by the
|
|
2311
|
+
// server, because it was inside the loading boundary. Mark them as rejected
|
|
2312
|
+
// so we know not to fetch them again.
|
|
2313
|
+
// TODO: If PPR is enabled on some routes but not others, then it's possible
|
|
2314
|
+
// that a different page is able to do a per-segment prefetch of one of the
|
|
2315
|
+
// segments we're marking as rejected here. We should mark on the segment
|
|
2316
|
+
// somehow that the reason for the rejection is because of a non-PPR prefetch.
|
|
2317
|
+
// That way a per-segment prefetch knows to disregard the rejection.
|
|
2318
|
+
if (spawnedEntries !== null) {
|
|
2319
|
+
const fulfilledEntries = rejectSegmentEntriesIfStillPending(spawnedEntries, now + 10 * 1000);
|
|
2320
|
+
return fulfilledEntries;
|
|
2321
|
+
}
|
|
2322
|
+
return null;
|
|
2323
|
+
}
|
|
2324
|
+
function writeSeedDataIntoCache(now, map, fetchStrategy, tree, staleAt, seedData, isResponsePartial, rootVaryParamsIterable, entriesOwnedByCurrentTask) {
|
|
2325
|
+
// This function is used to write the result of a runtime server request
|
|
2326
|
+
// (CacheNodeSeedData) into the prefetch cache.
|
|
2327
|
+
const rsc = seedData[0];
|
|
2328
|
+
const isPartial = rsc === null || isResponsePartial;
|
|
2329
|
+
// Each segment carries its own vary params iterable in the seed data, which
|
|
2330
|
+
// drains to the set of params the segment accessed during render. A null
|
|
2331
|
+
// iterable means tracking was not enabled (not a prerender). readVaryParams
|
|
2332
|
+
// unions in the response-level root params.
|
|
2333
|
+
const varyParams = (0, _varyparamsdecoding.readVaryParams)(seedData[4], rootVaryParamsIterable);
|
|
2334
|
+
fulfillEntrySpawnedByRuntimePrefetch(now, // A response write is bound to the map its entries live in (the spawning
|
|
2335
|
+
// task's `PrefetchTask.segmentCacheMap`).
|
|
2336
|
+
map, fetchStrategy, rsc, isPartial, staleAt, varyParams, tree, entriesOwnedByCurrentTask);
|
|
2337
|
+
// Recursively write the child data into the cache.
|
|
2338
|
+
const slots = tree.slots;
|
|
2339
|
+
if (slots !== null) {
|
|
2340
|
+
const seedDataChildren = seedData[1];
|
|
2341
|
+
for (const [parallelRouteKey, childTree] of slots){
|
|
2342
|
+
const childSeedData = seedDataChildren[parallelRouteKey];
|
|
2343
|
+
if (childSeedData !== null && childSeedData !== undefined) {
|
|
2344
|
+
writeSeedDataIntoCache(now, map, fetchStrategy, childTree, staleAt, childSeedData, isResponsePartial, rootVaryParamsIterable, entriesOwnedByCurrentTask);
|
|
2345
|
+
}
|
|
2346
|
+
}
|
|
2347
|
+
}
|
|
2348
|
+
}
|
|
2349
|
+
function fulfillEntrySpawnedByRuntimePrefetch(now, map, fetchStrategy, rsc, isPartial, staleAt, segmentVaryParams, tree, entriesOwnedByCurrentTask) {
|
|
2350
|
+
// Decide whether to re-key the entry under a more generic vary path based on
|
|
2351
|
+
// which params the segment actually depends on.
|
|
2352
|
+
//
|
|
2353
|
+
// Skip re-keying for Full prefetches: as of today, `varyParams` tracking only
|
|
2354
|
+
// works within the static stage portion of a response. A Full prefetch
|
|
2355
|
+
// response covers all stages, and we can't track params during the dynamic
|
|
2356
|
+
// stage without dead-locking the Flight stream, so the server-reported set is
|
|
2357
|
+
// incomplete and can't be trusted for the full response. Re-keying with an
|
|
2358
|
+
// untrustworthy set could replace concrete params with Fallback and let
|
|
2359
|
+
// unrelated URLs read each other's content from the cache.
|
|
2360
|
+
//
|
|
2361
|
+
// For RuntimeShell prefetches, always re-key to the precomputed shell vary
|
|
2362
|
+
// path. A shell entry is spawned at a concrete param path but is reusable
|
|
2363
|
+
// across all of them; tree.shellVaryPath (root-param values kept, every other
|
|
2364
|
+
// param replaced with Fallback) is exactly the path that shell reads look it
|
|
2365
|
+
// up under.
|
|
2366
|
+
let fulfilledVaryPath = null;
|
|
2367
|
+
if (process.env.__NEXT_VARY_PARAMS) {
|
|
2368
|
+
if (fetchStrategy === _types.FetchStrategy.RuntimeShell) {
|
|
2369
|
+
fulfilledVaryPath = tree.shellVaryPath;
|
|
2370
|
+
} else if (fetchStrategy !== _types.FetchStrategy.Full && segmentVaryParams !== null) {
|
|
2371
|
+
fulfilledVaryPath = (0, _varypath.getFulfilledSegmentVaryPath)(tree.varyPath, segmentVaryParams);
|
|
2372
|
+
}
|
|
2373
|
+
}
|
|
2374
|
+
// We should only write into cache entries that are owned by us. Or create
|
|
2375
|
+
// a new one and write into that. We must never write over an entry that was
|
|
2376
|
+
// created by a different task, because that causes data races.
|
|
2377
|
+
const ownedEntry = entriesOwnedByCurrentTask !== null ? entriesOwnedByCurrentTask.get(tree.requestKey) : undefined;
|
|
2378
|
+
if (ownedEntry !== undefined) {
|
|
2379
|
+
const fulfilledEntry = fulfillSegmentCacheEntry(ownedEntry, rsc, staleAt, isPartial, // Dynamic-request (Full/Runtime) responses are not ISR fallbacks.
|
|
2380
|
+
false, fetchStrategy);
|
|
2381
|
+
// Re-key the entry at its canonical path. When `varyParams` produced a
|
|
2382
|
+
// generalized path above, use that; otherwise fall back to the request's
|
|
2383
|
+
// own keying (this is load-bearing for entries spawned as revalidations:
|
|
2384
|
+
// without the re-key they'd stay in their Revalidation slot forever,
|
|
2385
|
+
// invisible to canonical reads, and the partial entry that prompted the
|
|
2386
|
+
// revalidation would keep serving navigations). Full responses are
|
|
2387
|
+
// excluded, matching the varyParams re-key: they're spawned as canonical
|
|
2388
|
+
// entries at their final path, and their vary tracking can't be trusted
|
|
2389
|
+
// for re-keying (see the fulfilledVaryPath derivation above).
|
|
2390
|
+
const canonicalVaryPath = fulfilledVaryPath !== null ? fulfilledVaryPath : fetchStrategy !== _types.FetchStrategy.Full ? (0, _varypath.getSegmentVaryPathForRequest)(fetchStrategy, tree) : null;
|
|
2391
|
+
if (canonicalVaryPath !== null) {
|
|
2392
|
+
const isRevalidation = false;
|
|
2393
|
+
(0, _cachemap.setInCacheMap)(map, canonicalVaryPath, fulfilledEntry, isRevalidation);
|
|
2394
|
+
// The re-key moved the entry to a more generic path (and, for a spawned
|
|
2395
|
+
// revalidation, vacated its Revalidation slot). A stale settled entry
|
|
2396
|
+
// at a more specific path — e.g. the partial entry that prompted the
|
|
2397
|
+
// revalidation — would shadow every read at the concrete lookup path,
|
|
2398
|
+
// causing the scheduler to keep re-reading the stale entry and respawn
|
|
2399
|
+
// the revalidation forever. Evict it so the fulfilled entry is
|
|
2400
|
+
// reachable. See evictShadowingSegmentEntries.
|
|
2401
|
+
evictShadowingSegmentEntries(now, map, tree.varyPath, fulfilledEntry);
|
|
2402
|
+
}
|
|
2403
|
+
} else {
|
|
2404
|
+
// There's no matching entry. Attempt to create a new one.
|
|
2405
|
+
let possiblyNewEntry = (0, _cachemap.getFromCacheMap)(now, getCurrentSegmentCacheVersion(), map, tree.varyPath, false, false);
|
|
2406
|
+
if (possiblyNewEntry === null) {
|
|
2407
|
+
possiblyNewEntry = insertEmptySegmentCacheEntry(now, map, fetchStrategy, tree);
|
|
2408
|
+
}
|
|
2409
|
+
if (possiblyNewEntry.status === _cachemap.EntryStatus.Empty) {
|
|
2410
|
+
// Confirmed this is a new entry. We can fulfill it.
|
|
2411
|
+
const newEntry = possiblyNewEntry;
|
|
2412
|
+
const fulfilledEntry = fulfillSegmentCacheEntry(upgradeToPendingSegment(newEntry, fetchStrategy), rsc, staleAt, isPartial, // Dynamic-request (Full/Runtime) responses are not ISR fallbacks.
|
|
2413
|
+
false, fetchStrategy);
|
|
2414
|
+
if (fulfilledVaryPath !== null) {
|
|
2415
|
+
const isRevalidation = false;
|
|
2416
|
+
(0, _cachemap.setInCacheMap)(map, fulfilledVaryPath, fulfilledEntry, isRevalidation);
|
|
2417
|
+
// Same as the owned-entry re-key above. Usually the entry really is
|
|
2418
|
+
// new — the read a moment ago returned nothing at the concrete lookup
|
|
2419
|
+
// path, so nothing can shadow it and this is a no-op — but this
|
|
2420
|
+
// branch also claims a pre-existing Empty entry, and re-keying that
|
|
2421
|
+
// away can expose a stale settled entry at an intermediate path.
|
|
2422
|
+
evictShadowingSegmentEntries(now, map, tree.varyPath, fulfilledEntry);
|
|
2423
|
+
}
|
|
2424
|
+
} else {
|
|
2425
|
+
// There was already an entry in the cache. But we may be able to
|
|
2426
|
+
// replace it with the new one from the server.
|
|
2427
|
+
const newEntry = fulfillSegmentCacheEntry(upgradeToPendingSegment(createDetachedSegmentCacheEntry(now), fetchStrategy), rsc, staleAt, isPartial, // Dynamic-request (Full/Runtime) responses are not ISR fallbacks.
|
|
2428
|
+
false, fetchStrategy);
|
|
2429
|
+
const varyPath = fulfilledVaryPath !== null ? fulfilledVaryPath : (0, _varypath.getSegmentVaryPathForRequest)(fetchStrategy, tree);
|
|
2430
|
+
// Pass the concrete lookup path so that if the entry was re-keyed to
|
|
2431
|
+
// a more generic path, any stale settled entry at a more specific path
|
|
2432
|
+
// that would shadow it is evicted (the upsert handles this; the other
|
|
2433
|
+
// branches above call evictShadowingSegmentEntries themselves).
|
|
2434
|
+
upsertSegmentEntry(now, map, varyPath, newEntry, tree.varyPath);
|
|
2435
|
+
}
|
|
2436
|
+
}
|
|
2437
|
+
}
|
|
2438
|
+
async function fetchPrefetchResponse(url, headers) {
|
|
2439
|
+
const fetchPriority = 'low';
|
|
2440
|
+
// When issuing a prefetch request, don't immediately decode the response; we
|
|
2441
|
+
// use the lower level `createFromResponse` API instead because we need to do
|
|
2442
|
+
// some extra processing of the response stream. See
|
|
2443
|
+
// `createNonTaskyPrefetchResponseStream` for more details.
|
|
2444
|
+
const shouldImmediatelyDecode = false;
|
|
2445
|
+
const response = await (0, _fetchserverresponse.createFetch)(url, headers, fetchPriority, shouldImmediatelyDecode);
|
|
2446
|
+
if (!response.ok) {
|
|
2447
|
+
return null;
|
|
2448
|
+
}
|
|
2449
|
+
// Check the content type
|
|
2450
|
+
if (isOutputExportMode) {
|
|
2451
|
+
// In output: "export" mode, we relaxed about the content type, since it's
|
|
2452
|
+
// not Next.js that's serving the response. If the status is OK, assume the
|
|
2453
|
+
// response is valid. If it's not a valid response, the Flight client won't
|
|
2454
|
+
// be able to decode it, and we'll treat it as a miss.
|
|
2455
|
+
} else {
|
|
2456
|
+
const contentType = response.headers.get('content-type');
|
|
2457
|
+
const isFlightResponse = contentType && contentType.startsWith(_approuterheaders.RSC_CONTENT_TYPE_HEADER);
|
|
2458
|
+
if (!isFlightResponse) {
|
|
2459
|
+
return null;
|
|
2460
|
+
}
|
|
2461
|
+
}
|
|
2462
|
+
return response;
|
|
2463
|
+
}
|
|
2464
|
+
async function createNonTaskyPrefetchResponseStream(body, byteLimit) {
|
|
2465
|
+
// Buffer the entire response before passing it to the Flight client. This
|
|
2466
|
+
// ensures that when Flight processes the stream, all model data is available
|
|
2467
|
+
// synchronously. This is important for readVaryParams, which synchronously
|
|
2468
|
+
// checks the thenable status — if data arrived in multiple network chunks,
|
|
2469
|
+
// the thenables might not yet be fulfilled.
|
|
2470
|
+
//
|
|
2471
|
+
// TODO: There are too many intermediate stream transformations in the
|
|
2472
|
+
// prefetch response pipeline (e.g. stripIsPartialByte, this function).
|
|
2473
|
+
// These could all be consolidated into a single transformation. Refactor
|
|
2474
|
+
// once the cached navigations experiment lands.
|
|
2475
|
+
//
|
|
2476
|
+
// Read the response from the network, optionally truncating at byteLimit.
|
|
2477
|
+
const reader = body.getReader();
|
|
2478
|
+
const chunks = [];
|
|
2479
|
+
let size = 0;
|
|
2480
|
+
while(true){
|
|
2481
|
+
const { done, value } = await reader.read();
|
|
2482
|
+
if (done) break;
|
|
2483
|
+
if (byteLimit !== undefined && size + value.byteLength >= byteLimit) {
|
|
2484
|
+
const remaining = byteLimit - size;
|
|
2485
|
+
if (remaining > 0) {
|
|
2486
|
+
chunks.push(value.byteLength > remaining ? value.subarray(0, remaining) : value);
|
|
2487
|
+
size += remaining;
|
|
2488
|
+
}
|
|
2489
|
+
reader.cancel();
|
|
2490
|
+
break;
|
|
2491
|
+
}
|
|
2492
|
+
chunks.push(value);
|
|
2493
|
+
size += value.byteLength;
|
|
2494
|
+
}
|
|
2495
|
+
// Concatenate into a single chunk so that Flight's processBinaryChunk
|
|
2496
|
+
// processes all rows synchronously in one call. Multiple chunks would not
|
|
2497
|
+
// be sufficient: even though reader.read() resolves as a microtask for
|
|
2498
|
+
// already-enqueued data, the `await` continuation from
|
|
2499
|
+
// createFromReadableStream can interleave between chunks. If the root
|
|
2500
|
+
// model row isn't the first row (e.g. outlined values come first), the
|
|
2501
|
+
// PromiseResolveThenableJob from `await` can cause the root to initialize
|
|
2502
|
+
// eagerly, scheduling the continuation before remaining chunks (including
|
|
2503
|
+
// promise value rows) are processed. A single chunk avoids this.
|
|
2504
|
+
let buffer;
|
|
2505
|
+
if (chunks.length === 1) {
|
|
2506
|
+
buffer = chunks[0];
|
|
2507
|
+
} else if (chunks.length > 1) {
|
|
2508
|
+
buffer = new Uint8Array(size);
|
|
2509
|
+
let offset = 0;
|
|
2510
|
+
for (const chunk of chunks){
|
|
2511
|
+
buffer.set(chunk, offset);
|
|
2512
|
+
offset += chunk.byteLength;
|
|
2513
|
+
}
|
|
2514
|
+
} else {
|
|
2515
|
+
buffer = new Uint8Array(0);
|
|
2516
|
+
}
|
|
2517
|
+
const stream = new ReadableStream({
|
|
2518
|
+
start (controller) {
|
|
2519
|
+
controller.enqueue(buffer);
|
|
2520
|
+
controller.close();
|
|
2521
|
+
}
|
|
2522
|
+
});
|
|
2523
|
+
return {
|
|
2524
|
+
stream,
|
|
2525
|
+
size,
|
|
2526
|
+
buffer
|
|
2527
|
+
};
|
|
2528
|
+
}
|
|
2529
|
+
/**
|
|
2530
|
+
* Creates a streaming (non-buffered) prefetch response stream for dynamic/Full
|
|
2531
|
+
* prefetches. These are essentially dynamic responses that get stored in the
|
|
2532
|
+
* prefetch cache — they don't carry vary params or other cache metadata that
|
|
2533
|
+
* requires synchronous thenable resolution, so there's no need to buffer them.
|
|
2534
|
+
* They should continue to stream so consumers can process data as it arrives.
|
|
2535
|
+
*/ function createIncrementalPrefetchResponseStream(originalFlightStream, onStreamClose, onResponseSizeUpdate) {
|
|
2536
|
+
// While processing the original stream, we incrementally update the size
|
|
2537
|
+
// of the cache entry in the LRU.
|
|
2538
|
+
let totalByteLength = 0;
|
|
2539
|
+
const reader = originalFlightStream.getReader();
|
|
2540
|
+
return new ReadableStream({
|
|
2541
|
+
async pull (controller) {
|
|
2542
|
+
while(true){
|
|
2543
|
+
const { done, value } = await reader.read();
|
|
2544
|
+
if (!done) {
|
|
2545
|
+
// Pass to the target stream and keep consuming the Flight response
|
|
2546
|
+
// from the server.
|
|
2547
|
+
controller.enqueue(value);
|
|
2548
|
+
// Incrementally update the size of the cache entry in the LRU.
|
|
2549
|
+
totalByteLength += value.byteLength;
|
|
2550
|
+
onResponseSizeUpdate(totalByteLength);
|
|
2551
|
+
continue;
|
|
2552
|
+
}
|
|
2553
|
+
controller.close();
|
|
2554
|
+
onStreamClose();
|
|
2555
|
+
return;
|
|
2556
|
+
}
|
|
2557
|
+
}
|
|
2558
|
+
});
|
|
2559
|
+
}
|
|
2560
|
+
function addSegmentPathToUrlInOutputExportMode(url, segmentPath) {
|
|
2561
|
+
if (isOutputExportMode) {
|
|
2562
|
+
// In output: "export" mode, we cannot use a header to encode the segment
|
|
2563
|
+
// path. Instead, we append it to the end of the pathname.
|
|
2564
|
+
const staticUrl = new URL(url);
|
|
2565
|
+
const routeDir = staticUrl.pathname.endsWith('/') ? staticUrl.pathname.slice(0, -1) : staticUrl.pathname;
|
|
2566
|
+
const staticExportFilename = (0, _segmentvalueencoding.convertSegmentPathToStaticExportFilename)(segmentPath);
|
|
2567
|
+
staticUrl.pathname = `${routeDir}/${staticExportFilename}`;
|
|
2568
|
+
return staticUrl;
|
|
2569
|
+
}
|
|
2570
|
+
return url;
|
|
2571
|
+
}
|
|
2572
|
+
function canNewFetchStrategyProvideMoreContent(currentStrategy, newStrategy) {
|
|
2573
|
+
return currentStrategy < newStrategy;
|
|
2574
|
+
}
|
|
2575
|
+
function getStaleAtFromHeader(now, response) {
|
|
2576
|
+
const staleTimeSeconds = parseInt(response.headers.get(_approuterheaders.NEXT_ROUTER_STALE_TIME_HEADER) ?? '', 10);
|
|
2577
|
+
const staleTimeMs = !isNaN(staleTimeSeconds) ? getStaleTimeMs(staleTimeSeconds) : _navigatereducer.STATIC_STALETIME_MS;
|
|
2578
|
+
return now + staleTimeMs;
|
|
2579
|
+
}
|
|
2580
|
+
async function resolveStaleAt(now, staleTimeIterable, response) {
|
|
2581
|
+
if (staleTimeIterable !== undefined) {
|
|
2582
|
+
// Iterate the async iterable and take the last yielded value. The server
|
|
2583
|
+
// yields updated staleTime values during the render; the last one is the
|
|
2584
|
+
// final staleTime.
|
|
2585
|
+
let staleTimeSeconds;
|
|
2586
|
+
for await (const value of staleTimeIterable){
|
|
2587
|
+
staleTimeSeconds = value;
|
|
2588
|
+
}
|
|
2589
|
+
if (staleTimeSeconds !== undefined) {
|
|
2590
|
+
const staleTimeMs = isNaN(staleTimeSeconds) ? _navigatereducer.STATIC_STALETIME_MS : getStaleTimeMs(staleTimeSeconds);
|
|
2591
|
+
return now + staleTimeMs;
|
|
2592
|
+
}
|
|
2593
|
+
}
|
|
2594
|
+
if (response !== undefined) {
|
|
2595
|
+
return getStaleAtFromHeader(now, response);
|
|
2596
|
+
}
|
|
2597
|
+
return now + _navigatereducer.STATIC_STALETIME_MS;
|
|
2598
|
+
}
|
|
2599
|
+
function writePrerenderResponseIntoCache(now, fetchStrategy, flightData, buildId, headVaryParamsIterable, rootVaryParamsIterable, staleAt, baseTree, renderedSearch, isResponsePartial, // The map the work that spawned this response's request is bound to. See
|
|
2600
|
+
// writeDynamicRenderResponseIntoCache.
|
|
2601
|
+
map) {
|
|
2602
|
+
// Root params are emitted once at the top level; readVaryParams unions them
|
|
2603
|
+
// into the head, and they're threaded down to each segment below.
|
|
2604
|
+
const headVaryParams = (0, _varyparamsdecoding.readVaryParams)(headVaryParamsIterable, rootVaryParamsIterable);
|
|
2605
|
+
const flightDatas = (0, _flightdatahelpers.normalizeFlightData)(flightData);
|
|
2606
|
+
if (typeof flightDatas === 'string') {
|
|
2607
|
+
return;
|
|
2608
|
+
}
|
|
2609
|
+
const navigationSeed = (0, _navigation.convertServerPatchToFullTree)(now, baseTree, flightDatas, renderedSearch, _bfcache.UnknownDynamicStaleTime);
|
|
2610
|
+
writeDynamicRenderResponseIntoCache(now, fetchStrategy, flightDatas, buildId, isResponsePartial, headVaryParams, rootVaryParamsIterable, staleAt, navigationSeed, null, map);
|
|
2611
|
+
}
|
|
2612
|
+
async function processRuntimePrefetchStream(now, runtimePrefetchStream, baseTree, renderedSearch) {
|
|
2613
|
+
const { stream, isPartial } = await stripIsPartialByte(runtimePrefetchStream);
|
|
2614
|
+
const serverData = await (0, _fetchserverresponse.createFromNextReadableStream)(stream, undefined, {
|
|
2615
|
+
allowPartialStream: true
|
|
2616
|
+
});
|
|
2617
|
+
// Root params are emitted once at the top level; readVaryParams unions them
|
|
2618
|
+
// into the head, and we return the iterable so the caller can union it into
|
|
2619
|
+
// each segment too.
|
|
2620
|
+
const rootVaryParamsIterable = serverData.r ?? null;
|
|
2621
|
+
const headVaryParams = (0, _varyparamsdecoding.readVaryParams)(serverData.h, rootVaryParamsIterable);
|
|
2622
|
+
const staleAt = await resolveStaleAt(now, serverData.s);
|
|
2623
|
+
const flightDatas = (0, _flightdatahelpers.normalizeFlightData)(serverData.f);
|
|
2624
|
+
if (typeof flightDatas === 'string') {
|
|
2625
|
+
return null;
|
|
2626
|
+
}
|
|
2627
|
+
const navigationSeed = (0, _navigation.convertServerPatchToFullTree)(now, baseTree, flightDatas, renderedSearch, _bfcache.UnknownDynamicStaleTime);
|
|
2628
|
+
return {
|
|
2629
|
+
flightDatas,
|
|
2630
|
+
navigationSeed,
|
|
2631
|
+
buildId: serverData.b,
|
|
2632
|
+
isResponsePartial: isPartial,
|
|
2633
|
+
headVaryParams,
|
|
2634
|
+
rootVaryParamsIterable,
|
|
2635
|
+
staleAt
|
|
2636
|
+
};
|
|
2637
|
+
}
|
|
2638
|
+
async function stripIsPartialByte(stream) {
|
|
2639
|
+
// When there is no recognized marker byte, the fallback depends on whether
|
|
2640
|
+
// Cached Navigations is enabled. When enabled, dynamic navigation responses
|
|
2641
|
+
// don't have a marker but may contain dynamic holes, so they are treated as
|
|
2642
|
+
// partial. When disabled, unmarked responses are treated as non-partial.
|
|
2643
|
+
const defaultIsPartial = !!process.env.__NEXT_EXPERIMENTAL_CACHED_NAVIGATIONS;
|
|
2644
|
+
const reader = stream.getReader();
|
|
2645
|
+
const { done, value } = await reader.read();
|
|
2646
|
+
if (done || !value || value.byteLength === 0) {
|
|
2647
|
+
return {
|
|
2648
|
+
stream: new ReadableStream({
|
|
2649
|
+
start: (c)=>c.close()
|
|
2650
|
+
}),
|
|
2651
|
+
isPartial: defaultIsPartial
|
|
2652
|
+
};
|
|
2653
|
+
}
|
|
2654
|
+
const firstByte = value[0];
|
|
2655
|
+
const hasMarker = firstByte === 0x23 || firstByte === 0x7e;
|
|
2656
|
+
const isPartial = hasMarker ? firstByte === 0x7e : defaultIsPartial;
|
|
2657
|
+
const remainder = hasMarker ? value.byteLength > 1 ? value.subarray(1) : null : value;
|
|
2658
|
+
return {
|
|
2659
|
+
isPartial,
|
|
2660
|
+
stream: new ReadableStream({
|
|
2661
|
+
start (controller) {
|
|
2662
|
+
if (remainder) {
|
|
2663
|
+
controller.enqueue(remainder);
|
|
2664
|
+
}
|
|
2665
|
+
},
|
|
2666
|
+
async pull (controller) {
|
|
2667
|
+
const result = await reader.read();
|
|
2668
|
+
if (result.done) {
|
|
2669
|
+
controller.close();
|
|
2670
|
+
} else {
|
|
2671
|
+
controller.enqueue(result.value);
|
|
2672
|
+
}
|
|
2673
|
+
}
|
|
2674
|
+
})
|
|
2675
|
+
};
|
|
2676
|
+
}
|
|
2677
|
+
|
|
2678
|
+
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
|
|
2679
|
+
Object.defineProperty(exports.default, '__esModule', { value: true });
|
|
2680
|
+
Object.assign(exports.default, exports);
|
|
2681
|
+
module.exports = exports.default;
|
|
2682
|
+
}
|
|
2683
|
+
|
|
2684
|
+
//# sourceMappingURL=cache.js.map
|