From 6f6766a255d03a8b9a6b6a092c3c40cc3145f61e Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Tue, 7 Jan 2025 11:29:04 -0800 Subject: [PATCH] Fix prerender tags when notFound is called (#74577) (#74607) This backports #74577 which ensures we don't lose tags added to a page before notFound() is called. --- .../next/src/server/app-render/app-render.tsx | 2 +- .../e2e/app-dir/app-static/app-static.test.ts | 3796 +++++++++-------- .../app/prerendered-not-found/[slug]/page.tsx | 38 + 3 files changed, 1986 insertions(+), 1850 deletions(-) create mode 100644 test/e2e/app-dir/app-static/app/prerendered-not-found/[slug]/page.tsx diff --git a/packages/next/src/server/app-render/app-render.tsx b/packages/next/src/server/app-render/app-render.tsx index d2fa77e404844..925b7f0785436 100644 --- a/packages/next/src/server/app-render/app-render.tsx +++ b/packages/next/src/server/app-render/app-render.tsx @@ -3777,7 +3777,7 @@ async function prerenderToStream( revalidate: INFINITE_CACHE, expire: INFINITE_CACHE, stale: INFINITE_CACHE, - tags: [...implicitTags], + tags: [...(prerenderStore?.tags || implicitTags)], }) const errorRSCPayload = await workUnitAsyncStorage.run( prerenderLegacyStore, diff --git a/test/e2e/app-dir/app-static/app-static.test.ts b/test/e2e/app-dir/app-static/app-static.test.ts index c0b400c8a3113..56ccad8e0a5cf 100644 --- a/test/e2e/app-dir/app-static/app-static.test.ts +++ b/test/e2e/app-dir/app-static/app-static.test.ts @@ -793,312 +793,318 @@ describe('app-dir static/dynamic handling', () => { }) expect(files.sort()).toMatchInlineSnapshot(` - [ - "(new)/custom/page.js", - "(new)/custom/page_client-reference-manifest.js", - "(new)/default-config-fetch/api/route.js", - "(new)/default-config-fetch/api/route_client-reference-manifest.js", - "(new)/default-config-fetch/page.js", - "(new)/default-config-fetch/page_client-reference-manifest.js", - "(new)/no-config-fetch/page.js", - "(new)/no-config-fetch/page_client-reference-manifest.js", - "_not-found.html", - "_not-found.rsc", - "_not-found/page.js", - "_not-found/page_client-reference-manifest.js", - "api/draft-mode/route.js", - "api/draft-mode/route_client-reference-manifest.js", - "api/large-data/route.js", - "api/large-data/route_client-reference-manifest.js", - "api/revalidate-path-edge/route.js", - "api/revalidate-path-edge/route_client-reference-manifest.js", - "api/revalidate-path-node/route.js", - "api/revalidate-path-node/route_client-reference-manifest.js", - "api/revalidate-tag-edge/route.js", - "api/revalidate-tag-edge/route_client-reference-manifest.js", - "api/revalidate-tag-node/route.js", - "api/revalidate-tag-node/route_client-reference-manifest.js", - "articles/[slug]/page.js", - "articles/[slug]/page_client-reference-manifest.js", - "articles/works.html", - "articles/works.rsc", - "blog/[author]/[slug]/page.js", - "blog/[author]/[slug]/page_client-reference-manifest.js", - "blog/[author]/page.js", - "blog/[author]/page_client-reference-manifest.js", - "blog/seb.html", - "blog/seb.rsc", - "blog/seb/second-post.html", - "blog/seb/second-post.rsc", - "blog/styfle.html", - "blog/styfle.rsc", - "blog/styfle/first-post.html", - "blog/styfle/first-post.rsc", - "blog/styfle/second-post.html", - "blog/styfle/second-post.rsc", - "blog/tim.html", - "blog/tim.rsc", - "blog/tim/first-post.html", - "blog/tim/first-post.rsc", - "default-cache-search-params/page.js", - "default-cache-search-params/page_client-reference-manifest.js", - "default-cache/page.js", - "default-cache/page_client-reference-manifest.js", - "default-config-fetch.html", - "default-config-fetch.rsc", - "dynamic-error/[id]/page.js", - "dynamic-error/[id]/page_client-reference-manifest.js", - "dynamic-no-gen-params-ssr/[slug]/page.js", - "dynamic-no-gen-params-ssr/[slug]/page_client-reference-manifest.js", - "dynamic-no-gen-params/[slug]/page.js", - "dynamic-no-gen-params/[slug]/page_client-reference-manifest.js", - "dynamic-param-edge/[slug]/page.js", - "dynamic-param-edge/[slug]/page_client-reference-manifest.js", - "fetch-no-cache/page.js", - "fetch-no-cache/page_client-reference-manifest.js", - "flight/[slug]/[slug2]/page.js", - "flight/[slug]/[slug2]/page_client-reference-manifest.js", - "force-cache-revalidate/page.js", - "force-cache-revalidate/page_client-reference-manifest.js", - "force-cache.html", - "force-cache.rsc", - "force-cache/large-data/page.js", - "force-cache/large-data/page_client-reference-manifest.js", - "force-cache/page.js", - "force-cache/page_client-reference-manifest.js", - "force-dynamic-catch-all/[slug]/[[...id]]/page.js", - "force-dynamic-catch-all/[slug]/[[...id]]/page_client-reference-manifest.js", - "force-dynamic-fetch-cache/default-cache/page.js", - "force-dynamic-fetch-cache/default-cache/page_client-reference-manifest.js", - "force-dynamic-fetch-cache/default-cache/route/route.js", - "force-dynamic-fetch-cache/default-cache/route/route_client-reference-manifest.js", - "force-dynamic-fetch-cache/force-cache/page.js", - "force-dynamic-fetch-cache/force-cache/page_client-reference-manifest.js", - "force-dynamic-fetch-cache/force-cache/route/route.js", - "force-dynamic-fetch-cache/force-cache/route/route_client-reference-manifest.js", - "force-dynamic-fetch-cache/no-fetch-cache/page.js", - "force-dynamic-fetch-cache/no-fetch-cache/page_client-reference-manifest.js", - "force-dynamic-fetch-cache/no-fetch-cache/route/route.js", - "force-dynamic-fetch-cache/no-fetch-cache/route/route_client-reference-manifest.js", - "force-dynamic-fetch-cache/revalidate/page.js", - "force-dynamic-fetch-cache/revalidate/page_client-reference-manifest.js", - "force-dynamic-fetch-cache/with-fetch-cache/page.js", - "force-dynamic-fetch-cache/with-fetch-cache/page_client-reference-manifest.js", - "force-dynamic-fetch-cache/with-fetch-cache/route/route.js", - "force-dynamic-fetch-cache/with-fetch-cache/route/route_client-reference-manifest.js", - "force-dynamic-no-prerender/[id]/page.js", - "force-dynamic-no-prerender/[id]/page_client-reference-manifest.js", - "force-dynamic-prerender/[slug]/page.js", - "force-dynamic-prerender/[slug]/page_client-reference-manifest.js", - "force-no-store-bailout/page.js", - "force-no-store-bailout/page_client-reference-manifest.js", - "force-no-store/page.js", - "force-no-store/page_client-reference-manifest.js", - "force-static-fetch-no-store.html", - "force-static-fetch-no-store.rsc", - "force-static-fetch-no-store/page.js", - "force-static-fetch-no-store/page_client-reference-manifest.js", - "force-static/[slug]/page.js", - "force-static/[slug]/page_client-reference-manifest.js", - "force-static/first.html", - "force-static/first.rsc", - "force-static/page.js", - "force-static/page_client-reference-manifest.js", - "force-static/second.html", - "force-static/second.rsc", - "gen-params-dynamic-revalidate/[slug]/page.js", - "gen-params-dynamic-revalidate/[slug]/page_client-reference-manifest.js", - "gen-params-dynamic-revalidate/one.html", - "gen-params-dynamic-revalidate/one.rsc", - "gen-params-dynamic/[slug]/page.js", - "gen-params-dynamic/[slug]/page_client-reference-manifest.js", - "hooks/use-pathname/[slug]/page.js", - "hooks/use-pathname/[slug]/page_client-reference-manifest.js", - "hooks/use-pathname/slug.html", - "hooks/use-pathname/slug.rsc", - "hooks/use-search-params/force-static.html", - "hooks/use-search-params/force-static.rsc", - "hooks/use-search-params/force-static/page.js", - "hooks/use-search-params/force-static/page_client-reference-manifest.js", - "hooks/use-search-params/with-suspense.html", - "hooks/use-search-params/with-suspense.rsc", - "hooks/use-search-params/with-suspense/page.js", - "hooks/use-search-params/with-suspense/page_client-reference-manifest.js", - "index.html", - "index.rsc", - "isr-error-handling.html", - "isr-error-handling.rsc", - "isr-error-handling/page.js", - "isr-error-handling/page_client-reference-manifest.js", - "no-config-fetch.html", - "no-config-fetch.rsc", - "no-store/dynamic/page.js", - "no-store/dynamic/page_client-reference-manifest.js", - "no-store/static.html", - "no-store/static.rsc", - "no-store/static/page.js", - "no-store/static/page_client-reference-manifest.js", - "page.js", - "page_client-reference-manifest.js", - "partial-gen-params-no-additional-lang/[lang]/[slug]/page.js", - "partial-gen-params-no-additional-lang/[lang]/[slug]/page_client-reference-manifest.js", - "partial-gen-params-no-additional-lang/en/RAND.html", - "partial-gen-params-no-additional-lang/en/RAND.rsc", - "partial-gen-params-no-additional-lang/en/first.html", - "partial-gen-params-no-additional-lang/en/first.rsc", - "partial-gen-params-no-additional-lang/en/second.html", - "partial-gen-params-no-additional-lang/en/second.rsc", - "partial-gen-params-no-additional-lang/fr/RAND.html", - "partial-gen-params-no-additional-lang/fr/RAND.rsc", - "partial-gen-params-no-additional-lang/fr/first.html", - "partial-gen-params-no-additional-lang/fr/first.rsc", - "partial-gen-params-no-additional-lang/fr/second.html", - "partial-gen-params-no-additional-lang/fr/second.rsc", - "partial-gen-params-no-additional-slug/[lang]/[slug]/page.js", - "partial-gen-params-no-additional-slug/[lang]/[slug]/page_client-reference-manifest.js", - "partial-gen-params-no-additional-slug/en/RAND.html", - "partial-gen-params-no-additional-slug/en/RAND.rsc", - "partial-gen-params-no-additional-slug/en/first.html", - "partial-gen-params-no-additional-slug/en/first.rsc", - "partial-gen-params-no-additional-slug/en/second.html", - "partial-gen-params-no-additional-slug/en/second.rsc", - "partial-gen-params-no-additional-slug/fr/RAND.html", - "partial-gen-params-no-additional-slug/fr/RAND.rsc", - "partial-gen-params-no-additional-slug/fr/first.html", - "partial-gen-params-no-additional-slug/fr/first.rsc", - "partial-gen-params-no-additional-slug/fr/second.html", - "partial-gen-params-no-additional-slug/fr/second.rsc", - "partial-gen-params/[lang]/[slug]/page.js", - "partial-gen-params/[lang]/[slug]/page_client-reference-manifest.js", - "react-fetch-deduping-edge/page.js", - "react-fetch-deduping-edge/page_client-reference-manifest.js", - "react-fetch-deduping-node/page.js", - "react-fetch-deduping-node/page_client-reference-manifest.js", - "response-url/page.js", - "response-url/page_client-reference-manifest.js", - "route-handler-edge/revalidate-360/route.js", - "route-handler-edge/revalidate-360/route_client-reference-manifest.js", - "route-handler/no-store-force-static/route.js", - "route-handler/no-store-force-static/route_client-reference-manifest.js", - "route-handler/no-store/route.js", - "route-handler/no-store/route_client-reference-manifest.js", - "route-handler/post/route.js", - "route-handler/post/route_client-reference-manifest.js", - "route-handler/revalidate-360-isr/route.js", - "route-handler/revalidate-360-isr/route_client-reference-manifest.js", - "route-handler/revalidate-360/route.js", - "route-handler/revalidate-360/route_client-reference-manifest.js", - "route-handler/static-cookies/route.js", - "route-handler/static-cookies/route_client-reference-manifest.js", - "specify-new-tags/one-tag/page.js", - "specify-new-tags/one-tag/page_client-reference-manifest.js", - "specify-new-tags/two-tags/page.js", - "specify-new-tags/two-tags/page_client-reference-manifest.js", - "ssg-draft-mode.html", - "ssg-draft-mode.rsc", - "ssg-draft-mode/[[...route]]/page.js", - "ssg-draft-mode/[[...route]]/page_client-reference-manifest.js", - "ssg-draft-mode/test-2.html", - "ssg-draft-mode/test-2.rsc", - "ssg-draft-mode/test.html", - "ssg-draft-mode/test.rsc", - "ssr-auto/cache-no-store/page.js", - "ssr-auto/cache-no-store/page_client-reference-manifest.js", - "ssr-auto/fetch-revalidate-zero/page.js", - "ssr-auto/fetch-revalidate-zero/page_client-reference-manifest.js", - "ssr-forced/page.js", - "ssr-forced/page_client-reference-manifest.js", - "stale-cache-serving-edge/app-page/page.js", - "stale-cache-serving-edge/app-page/page_client-reference-manifest.js", - "stale-cache-serving-edge/route-handler/route.js", - "stale-cache-serving-edge/route-handler/route_client-reference-manifest.js", - "stale-cache-serving/app-page/page.js", - "stale-cache-serving/app-page/page_client-reference-manifest.js", - "stale-cache-serving/route-handler/route.js", - "stale-cache-serving/route-handler/route_client-reference-manifest.js", - "static-to-dynamic-error-forced/[id]/page.js", - "static-to-dynamic-error-forced/[id]/page_client-reference-manifest.js", - "static-to-dynamic-error/[id]/page.js", - "static-to-dynamic-error/[id]/page_client-reference-manifest.js", - "strip-header-traceparent.html", - "strip-header-traceparent.rsc", - "strip-header-traceparent/page.js", - "strip-header-traceparent/page_client-reference-manifest.js", - "too-many-cache-tags/page.js", - "too-many-cache-tags/page_client-reference-manifest.js", - "unstable-cache/dynamic-undefined/page.js", - "unstable-cache/dynamic-undefined/page_client-reference-manifest.js", - "unstable-cache/dynamic/page.js", - "unstable-cache/dynamic/page_client-reference-manifest.js", - "unstable-cache/fetch/no-cache.html", - "unstable-cache/fetch/no-cache.rsc", - "unstable-cache/fetch/no-cache/page.js", - "unstable-cache/fetch/no-cache/page_client-reference-manifest.js", - "unstable-cache/fetch/no-store.html", - "unstable-cache/fetch/no-store.rsc", - "unstable-cache/fetch/no-store/page.js", - "unstable-cache/fetch/no-store/page_client-reference-manifest.js", - "variable-config-revalidate/revalidate-3.html", - "variable-config-revalidate/revalidate-3.rsc", - "variable-config-revalidate/revalidate-3/page.js", - "variable-config-revalidate/revalidate-3/page_client-reference-manifest.js", - "variable-revalidate-edge/body/page.js", - "variable-revalidate-edge/body/page_client-reference-manifest.js", - "variable-revalidate-edge/encoding/page.js", - "variable-revalidate-edge/encoding/page_client-reference-manifest.js", - "variable-revalidate-edge/no-store/page.js", - "variable-revalidate-edge/no-store/page_client-reference-manifest.js", - "variable-revalidate-edge/post-method-request/page.js", - "variable-revalidate-edge/post-method-request/page_client-reference-manifest.js", - "variable-revalidate-edge/post-method/page.js", - "variable-revalidate-edge/post-method/page_client-reference-manifest.js", - "variable-revalidate-edge/revalidate-3/page.js", - "variable-revalidate-edge/revalidate-3/page_client-reference-manifest.js", - "variable-revalidate-stable/revalidate-3.html", - "variable-revalidate-stable/revalidate-3.rsc", - "variable-revalidate-stable/revalidate-3/page.js", - "variable-revalidate-stable/revalidate-3/page_client-reference-manifest.js", - "variable-revalidate/authorization.html", - "variable-revalidate/authorization.rsc", - "variable-revalidate/authorization/page.js", - "variable-revalidate/authorization/page_client-reference-manifest.js", - "variable-revalidate/authorization/route-cookies/route.js", - "variable-revalidate/authorization/route-cookies/route_client-reference-manifest.js", - "variable-revalidate/authorization/route-request/route.js", - "variable-revalidate/authorization/route-request/route_client-reference-manifest.js", - "variable-revalidate/cookie.html", - "variable-revalidate/cookie.rsc", - "variable-revalidate/cookie/page.js", - "variable-revalidate/cookie/page_client-reference-manifest.js", - "variable-revalidate/encoding.html", - "variable-revalidate/encoding.rsc", - "variable-revalidate/encoding/page.js", - "variable-revalidate/encoding/page_client-reference-manifest.js", - "variable-revalidate/headers-instance.html", - "variable-revalidate/headers-instance.rsc", - "variable-revalidate/headers-instance/page.js", - "variable-revalidate/headers-instance/page_client-reference-manifest.js", - "variable-revalidate/no-store/page.js", - "variable-revalidate/no-store/page_client-reference-manifest.js", - "variable-revalidate/post-method-request/page.js", - "variable-revalidate/post-method-request/page_client-reference-manifest.js", - "variable-revalidate/post-method.html", - "variable-revalidate/post-method.rsc", - "variable-revalidate/post-method/page.js", - "variable-revalidate/post-method/page_client-reference-manifest.js", - "variable-revalidate/revalidate-3.html", - "variable-revalidate/revalidate-3.rsc", - "variable-revalidate/revalidate-3/page.js", - "variable-revalidate/revalidate-3/page_client-reference-manifest.js", - "variable-revalidate/revalidate-360-isr.html", - "variable-revalidate/revalidate-360-isr.rsc", - "variable-revalidate/revalidate-360-isr/page.js", - "variable-revalidate/revalidate-360-isr/page_client-reference-manifest.js", - "variable-revalidate/revalidate-360/page.js", - "variable-revalidate/revalidate-360/page_client-reference-manifest.js", - "variable-revalidate/status-code/page.js", - "variable-revalidate/status-code/page_client-reference-manifest.js", - ] + [ + "(new)/custom/page.js", + "(new)/custom/page_client-reference-manifest.js", + "(new)/default-config-fetch/api/route.js", + "(new)/default-config-fetch/api/route_client-reference-manifest.js", + "(new)/default-config-fetch/page.js", + "(new)/default-config-fetch/page_client-reference-manifest.js", + "(new)/no-config-fetch/page.js", + "(new)/no-config-fetch/page_client-reference-manifest.js", + "_not-found.html", + "_not-found.rsc", + "_not-found/page.js", + "_not-found/page_client-reference-manifest.js", + "api/draft-mode/route.js", + "api/draft-mode/route_client-reference-manifest.js", + "api/large-data/route.js", + "api/large-data/route_client-reference-manifest.js", + "api/revalidate-path-edge/route.js", + "api/revalidate-path-edge/route_client-reference-manifest.js", + "api/revalidate-path-node/route.js", + "api/revalidate-path-node/route_client-reference-manifest.js", + "api/revalidate-tag-edge/route.js", + "api/revalidate-tag-edge/route_client-reference-manifest.js", + "api/revalidate-tag-node/route.js", + "api/revalidate-tag-node/route_client-reference-manifest.js", + "articles/[slug]/page.js", + "articles/[slug]/page_client-reference-manifest.js", + "articles/works.html", + "articles/works.rsc", + "blog/[author]/[slug]/page.js", + "blog/[author]/[slug]/page_client-reference-manifest.js", + "blog/[author]/page.js", + "blog/[author]/page_client-reference-manifest.js", + "blog/seb.html", + "blog/seb.rsc", + "blog/seb/second-post.html", + "blog/seb/second-post.rsc", + "blog/styfle.html", + "blog/styfle.rsc", + "blog/styfle/first-post.html", + "blog/styfle/first-post.rsc", + "blog/styfle/second-post.html", + "blog/styfle/second-post.rsc", + "blog/tim.html", + "blog/tim.rsc", + "blog/tim/first-post.html", + "blog/tim/first-post.rsc", + "default-cache-search-params/page.js", + "default-cache-search-params/page_client-reference-manifest.js", + "default-cache/page.js", + "default-cache/page_client-reference-manifest.js", + "default-config-fetch.html", + "default-config-fetch.rsc", + "dynamic-error/[id]/page.js", + "dynamic-error/[id]/page_client-reference-manifest.js", + "dynamic-no-gen-params-ssr/[slug]/page.js", + "dynamic-no-gen-params-ssr/[slug]/page_client-reference-manifest.js", + "dynamic-no-gen-params/[slug]/page.js", + "dynamic-no-gen-params/[slug]/page_client-reference-manifest.js", + "dynamic-param-edge/[slug]/page.js", + "dynamic-param-edge/[slug]/page_client-reference-manifest.js", + "fetch-no-cache/page.js", + "fetch-no-cache/page_client-reference-manifest.js", + "flight/[slug]/[slug2]/page.js", + "flight/[slug]/[slug2]/page_client-reference-manifest.js", + "force-cache-revalidate/page.js", + "force-cache-revalidate/page_client-reference-manifest.js", + "force-cache.html", + "force-cache.rsc", + "force-cache/large-data/page.js", + "force-cache/large-data/page_client-reference-manifest.js", + "force-cache/page.js", + "force-cache/page_client-reference-manifest.js", + "force-dynamic-catch-all/[slug]/[[...id]]/page.js", + "force-dynamic-catch-all/[slug]/[[...id]]/page_client-reference-manifest.js", + "force-dynamic-fetch-cache/default-cache/page.js", + "force-dynamic-fetch-cache/default-cache/page_client-reference-manifest.js", + "force-dynamic-fetch-cache/default-cache/route/route.js", + "force-dynamic-fetch-cache/default-cache/route/route_client-reference-manifest.js", + "force-dynamic-fetch-cache/force-cache/page.js", + "force-dynamic-fetch-cache/force-cache/page_client-reference-manifest.js", + "force-dynamic-fetch-cache/force-cache/route/route.js", + "force-dynamic-fetch-cache/force-cache/route/route_client-reference-manifest.js", + "force-dynamic-fetch-cache/no-fetch-cache/page.js", + "force-dynamic-fetch-cache/no-fetch-cache/page_client-reference-manifest.js", + "force-dynamic-fetch-cache/no-fetch-cache/route/route.js", + "force-dynamic-fetch-cache/no-fetch-cache/route/route_client-reference-manifest.js", + "force-dynamic-fetch-cache/revalidate/page.js", + "force-dynamic-fetch-cache/revalidate/page_client-reference-manifest.js", + "force-dynamic-fetch-cache/with-fetch-cache/page.js", + "force-dynamic-fetch-cache/with-fetch-cache/page_client-reference-manifest.js", + "force-dynamic-fetch-cache/with-fetch-cache/route/route.js", + "force-dynamic-fetch-cache/with-fetch-cache/route/route_client-reference-manifest.js", + "force-dynamic-no-prerender/[id]/page.js", + "force-dynamic-no-prerender/[id]/page_client-reference-manifest.js", + "force-dynamic-prerender/[slug]/page.js", + "force-dynamic-prerender/[slug]/page_client-reference-manifest.js", + "force-no-store-bailout/page.js", + "force-no-store-bailout/page_client-reference-manifest.js", + "force-no-store/page.js", + "force-no-store/page_client-reference-manifest.js", + "force-static-fetch-no-store.html", + "force-static-fetch-no-store.rsc", + "force-static-fetch-no-store/page.js", + "force-static-fetch-no-store/page_client-reference-manifest.js", + "force-static/[slug]/page.js", + "force-static/[slug]/page_client-reference-manifest.js", + "force-static/first.html", + "force-static/first.rsc", + "force-static/page.js", + "force-static/page_client-reference-manifest.js", + "force-static/second.html", + "force-static/second.rsc", + "gen-params-dynamic-revalidate/[slug]/page.js", + "gen-params-dynamic-revalidate/[slug]/page_client-reference-manifest.js", + "gen-params-dynamic-revalidate/one.html", + "gen-params-dynamic-revalidate/one.rsc", + "gen-params-dynamic/[slug]/page.js", + "gen-params-dynamic/[slug]/page_client-reference-manifest.js", + "hooks/use-pathname/[slug]/page.js", + "hooks/use-pathname/[slug]/page_client-reference-manifest.js", + "hooks/use-pathname/slug.html", + "hooks/use-pathname/slug.rsc", + "hooks/use-search-params/force-static.html", + "hooks/use-search-params/force-static.rsc", + "hooks/use-search-params/force-static/page.js", + "hooks/use-search-params/force-static/page_client-reference-manifest.js", + "hooks/use-search-params/with-suspense.html", + "hooks/use-search-params/with-suspense.rsc", + "hooks/use-search-params/with-suspense/page.js", + "hooks/use-search-params/with-suspense/page_client-reference-manifest.js", + "index.html", + "index.rsc", + "isr-error-handling.html", + "isr-error-handling.rsc", + "isr-error-handling/page.js", + "isr-error-handling/page_client-reference-manifest.js", + "no-config-fetch.html", + "no-config-fetch.rsc", + "no-store/dynamic/page.js", + "no-store/dynamic/page_client-reference-manifest.js", + "no-store/static.html", + "no-store/static.rsc", + "no-store/static/page.js", + "no-store/static/page_client-reference-manifest.js", + "page.js", + "page_client-reference-manifest.js", + "partial-gen-params-no-additional-lang/[lang]/[slug]/page.js", + "partial-gen-params-no-additional-lang/[lang]/[slug]/page_client-reference-manifest.js", + "partial-gen-params-no-additional-lang/en/RAND.html", + "partial-gen-params-no-additional-lang/en/RAND.rsc", + "partial-gen-params-no-additional-lang/en/first.html", + "partial-gen-params-no-additional-lang/en/first.rsc", + "partial-gen-params-no-additional-lang/en/second.html", + "partial-gen-params-no-additional-lang/en/second.rsc", + "partial-gen-params-no-additional-lang/fr/RAND.html", + "partial-gen-params-no-additional-lang/fr/RAND.rsc", + "partial-gen-params-no-additional-lang/fr/first.html", + "partial-gen-params-no-additional-lang/fr/first.rsc", + "partial-gen-params-no-additional-lang/fr/second.html", + "partial-gen-params-no-additional-lang/fr/second.rsc", + "partial-gen-params-no-additional-slug/[lang]/[slug]/page.js", + "partial-gen-params-no-additional-slug/[lang]/[slug]/page_client-reference-manifest.js", + "partial-gen-params-no-additional-slug/en/RAND.html", + "partial-gen-params-no-additional-slug/en/RAND.rsc", + "partial-gen-params-no-additional-slug/en/first.html", + "partial-gen-params-no-additional-slug/en/first.rsc", + "partial-gen-params-no-additional-slug/en/second.html", + "partial-gen-params-no-additional-slug/en/second.rsc", + "partial-gen-params-no-additional-slug/fr/RAND.html", + "partial-gen-params-no-additional-slug/fr/RAND.rsc", + "partial-gen-params-no-additional-slug/fr/first.html", + "partial-gen-params-no-additional-slug/fr/first.rsc", + "partial-gen-params-no-additional-slug/fr/second.html", + "partial-gen-params-no-additional-slug/fr/second.rsc", + "partial-gen-params/[lang]/[slug]/page.js", + "partial-gen-params/[lang]/[slug]/page_client-reference-manifest.js", + "prerendered-not-found/[slug]/page.js", + "prerendered-not-found/[slug]/page_client-reference-manifest.js", + "prerendered-not-found/first.html", + "prerendered-not-found/first.rsc", + "prerendered-not-found/second.html", + "prerendered-not-found/second.rsc", + "react-fetch-deduping-edge/page.js", + "react-fetch-deduping-edge/page_client-reference-manifest.js", + "react-fetch-deduping-node/page.js", + "react-fetch-deduping-node/page_client-reference-manifest.js", + "response-url/page.js", + "response-url/page_client-reference-manifest.js", + "route-handler-edge/revalidate-360/route.js", + "route-handler-edge/revalidate-360/route_client-reference-manifest.js", + "route-handler/no-store-force-static/route.js", + "route-handler/no-store-force-static/route_client-reference-manifest.js", + "route-handler/no-store/route.js", + "route-handler/no-store/route_client-reference-manifest.js", + "route-handler/post/route.js", + "route-handler/post/route_client-reference-manifest.js", + "route-handler/revalidate-360-isr/route.js", + "route-handler/revalidate-360-isr/route_client-reference-manifest.js", + "route-handler/revalidate-360/route.js", + "route-handler/revalidate-360/route_client-reference-manifest.js", + "route-handler/static-cookies/route.js", + "route-handler/static-cookies/route_client-reference-manifest.js", + "specify-new-tags/one-tag/page.js", + "specify-new-tags/one-tag/page_client-reference-manifest.js", + "specify-new-tags/two-tags/page.js", + "specify-new-tags/two-tags/page_client-reference-manifest.js", + "ssg-draft-mode.html", + "ssg-draft-mode.rsc", + "ssg-draft-mode/[[...route]]/page.js", + "ssg-draft-mode/[[...route]]/page_client-reference-manifest.js", + "ssg-draft-mode/test-2.html", + "ssg-draft-mode/test-2.rsc", + "ssg-draft-mode/test.html", + "ssg-draft-mode/test.rsc", + "ssr-auto/cache-no-store/page.js", + "ssr-auto/cache-no-store/page_client-reference-manifest.js", + "ssr-auto/fetch-revalidate-zero/page.js", + "ssr-auto/fetch-revalidate-zero/page_client-reference-manifest.js", + "ssr-forced/page.js", + "ssr-forced/page_client-reference-manifest.js", + "stale-cache-serving-edge/app-page/page.js", + "stale-cache-serving-edge/app-page/page_client-reference-manifest.js", + "stale-cache-serving-edge/route-handler/route.js", + "stale-cache-serving-edge/route-handler/route_client-reference-manifest.js", + "stale-cache-serving/app-page/page.js", + "stale-cache-serving/app-page/page_client-reference-manifest.js", + "stale-cache-serving/route-handler/route.js", + "stale-cache-serving/route-handler/route_client-reference-manifest.js", + "static-to-dynamic-error-forced/[id]/page.js", + "static-to-dynamic-error-forced/[id]/page_client-reference-manifest.js", + "static-to-dynamic-error/[id]/page.js", + "static-to-dynamic-error/[id]/page_client-reference-manifest.js", + "strip-header-traceparent.html", + "strip-header-traceparent.rsc", + "strip-header-traceparent/page.js", + "strip-header-traceparent/page_client-reference-manifest.js", + "too-many-cache-tags/page.js", + "too-many-cache-tags/page_client-reference-manifest.js", + "unstable-cache/dynamic-undefined/page.js", + "unstable-cache/dynamic-undefined/page_client-reference-manifest.js", + "unstable-cache/dynamic/page.js", + "unstable-cache/dynamic/page_client-reference-manifest.js", + "unstable-cache/fetch/no-cache.html", + "unstable-cache/fetch/no-cache.rsc", + "unstable-cache/fetch/no-cache/page.js", + "unstable-cache/fetch/no-cache/page_client-reference-manifest.js", + "unstable-cache/fetch/no-store.html", + "unstable-cache/fetch/no-store.rsc", + "unstable-cache/fetch/no-store/page.js", + "unstable-cache/fetch/no-store/page_client-reference-manifest.js", + "variable-config-revalidate/revalidate-3.html", + "variable-config-revalidate/revalidate-3.rsc", + "variable-config-revalidate/revalidate-3/page.js", + "variable-config-revalidate/revalidate-3/page_client-reference-manifest.js", + "variable-revalidate-edge/body/page.js", + "variable-revalidate-edge/body/page_client-reference-manifest.js", + "variable-revalidate-edge/encoding/page.js", + "variable-revalidate-edge/encoding/page_client-reference-manifest.js", + "variable-revalidate-edge/no-store/page.js", + "variable-revalidate-edge/no-store/page_client-reference-manifest.js", + "variable-revalidate-edge/post-method-request/page.js", + "variable-revalidate-edge/post-method-request/page_client-reference-manifest.js", + "variable-revalidate-edge/post-method/page.js", + "variable-revalidate-edge/post-method/page_client-reference-manifest.js", + "variable-revalidate-edge/revalidate-3/page.js", + "variable-revalidate-edge/revalidate-3/page_client-reference-manifest.js", + "variable-revalidate-stable/revalidate-3.html", + "variable-revalidate-stable/revalidate-3.rsc", + "variable-revalidate-stable/revalidate-3/page.js", + "variable-revalidate-stable/revalidate-3/page_client-reference-manifest.js", + "variable-revalidate/authorization.html", + "variable-revalidate/authorization.rsc", + "variable-revalidate/authorization/page.js", + "variable-revalidate/authorization/page_client-reference-manifest.js", + "variable-revalidate/authorization/route-cookies/route.js", + "variable-revalidate/authorization/route-cookies/route_client-reference-manifest.js", + "variable-revalidate/authorization/route-request/route.js", + "variable-revalidate/authorization/route-request/route_client-reference-manifest.js", + "variable-revalidate/cookie.html", + "variable-revalidate/cookie.rsc", + "variable-revalidate/cookie/page.js", + "variable-revalidate/cookie/page_client-reference-manifest.js", + "variable-revalidate/encoding.html", + "variable-revalidate/encoding.rsc", + "variable-revalidate/encoding/page.js", + "variable-revalidate/encoding/page_client-reference-manifest.js", + "variable-revalidate/headers-instance.html", + "variable-revalidate/headers-instance.rsc", + "variable-revalidate/headers-instance/page.js", + "variable-revalidate/headers-instance/page_client-reference-manifest.js", + "variable-revalidate/no-store/page.js", + "variable-revalidate/no-store/page_client-reference-manifest.js", + "variable-revalidate/post-method-request/page.js", + "variable-revalidate/post-method-request/page_client-reference-manifest.js", + "variable-revalidate/post-method.html", + "variable-revalidate/post-method.rsc", + "variable-revalidate/post-method/page.js", + "variable-revalidate/post-method/page_client-reference-manifest.js", + "variable-revalidate/revalidate-3.html", + "variable-revalidate/revalidate-3.rsc", + "variable-revalidate/revalidate-3/page.js", + "variable-revalidate/revalidate-3/page_client-reference-manifest.js", + "variable-revalidate/revalidate-360-isr.html", + "variable-revalidate/revalidate-360-isr.rsc", + "variable-revalidate/revalidate-360-isr/page.js", + "variable-revalidate/revalidate-360-isr/page_client-reference-manifest.js", + "variable-revalidate/revalidate-360/page.js", + "variable-revalidate/revalidate-360/page_client-reference-manifest.js", + "variable-revalidate/status-code/page.js", + "variable-revalidate/status-code/page_client-reference-manifest.js", + ] `) }) @@ -1133,1551 +1139,1624 @@ describe('app-dir static/dynamic handling', () => { expect(curManifest.version).toBe(4) expect(curManifest.routes).toMatchInlineSnapshot(` - { - "/": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/index.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/", - }, - "/api/large-data": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": null, - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialHeaders": { - "content-type": "application/json", - "x-next-cache-tags": "_N_T_/layout,_N_T_/api/layout,_N_T_/api/large-data/layout,_N_T_/api/large-data/route,_N_T_/api/large-data", - }, - "initialRevalidateSeconds": false, - "srcRoute": "/api/large-data", - }, - "/articles/works": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/articles/works.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 1, - "srcRoute": "/articles/[slug]", - }, - "/blog/seb": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/blog/seb.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 10, - "srcRoute": "/blog/[author]", - }, - "/blog/seb/second-post": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/blog/seb/second-post.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/blog/[author]/[slug]", - }, - "/blog/styfle": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/blog/styfle.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 10, - "srcRoute": "/blog/[author]", - }, - "/blog/styfle/first-post": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/blog/styfle/first-post.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/blog/[author]/[slug]", - }, - "/blog/styfle/second-post": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/blog/styfle/second-post.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/blog/[author]/[slug]", - }, - "/blog/tim": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/blog/tim.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 10, - "srcRoute": "/blog/[author]", - }, - "/blog/tim/first-post": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/blog/tim/first-post.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/blog/[author]/[slug]", - }, - "/default-config-fetch": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/default-config-fetch.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/default-config-fetch", - }, - "/force-cache": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/force-cache.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 3, - "srcRoute": "/force-cache", - }, - "/force-static-fetch-no-store": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/force-static-fetch-no-store.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/force-static-fetch-no-store", - }, - "/force-static/first": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/force-static/first.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/force-static/[slug]", - }, - "/force-static/second": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/force-static/second.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/force-static/[slug]", - }, - "/gen-params-dynamic-revalidate/one": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/gen-params-dynamic-revalidate/one.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 3, - "srcRoute": "/gen-params-dynamic-revalidate/[slug]", - }, - "/hooks/use-pathname/slug": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/hooks/use-pathname/slug.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/hooks/use-pathname/[slug]", - }, - "/hooks/use-search-params/force-static": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/hooks/use-search-params/force-static.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/hooks/use-search-params/force-static", - }, - "/hooks/use-search-params/with-suspense": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/hooks/use-search-params/with-suspense.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/hooks/use-search-params/with-suspense", - }, - "/isr-error-handling": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/isr-error-handling.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 3, - "srcRoute": "/isr-error-handling", - }, - "/no-config-fetch": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/no-config-fetch.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/no-config-fetch", - }, - "/no-store/static": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/no-store/static.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/no-store/static", - }, - "/partial-gen-params-no-additional-lang/en/RAND": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-lang/en/RAND.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-lang/en/first": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-lang/en/first.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-lang/en/second": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-lang/en/second.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-lang/fr/RAND": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-lang/fr/RAND.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-lang/fr/first": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-lang/fr/first.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-lang/fr/second": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-lang/fr/second.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-slug/en/RAND": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-slug/en/RAND.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-slug/en/first": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-slug/en/first.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-slug/en/second": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-slug/en/second.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-slug/fr/RAND": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-slug/fr/RAND.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-slug/fr/first": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-slug/fr/first.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", - }, - "/partial-gen-params-no-additional-slug/fr/second": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-slug/fr/second.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", - }, - "/route-handler/no-store-force-static": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": null, - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialHeaders": { - "content-type": "application/json", - "x-next-cache-tags": "_N_T_/layout,_N_T_/route-handler/layout,_N_T_/route-handler/no-store-force-static/layout,_N_T_/route-handler/no-store-force-static/route,_N_T_/route-handler/no-store-force-static", - }, - "initialRevalidateSeconds": 3, - "srcRoute": "/route-handler/no-store-force-static", - }, - "/route-handler/revalidate-360-isr": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": null, - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialHeaders": { - "content-type": "application/json", - "x-next-cache-tags": "_N_T_/layout,_N_T_/route-handler/layout,_N_T_/route-handler/revalidate-360-isr/layout,_N_T_/route-handler/revalidate-360-isr/route,_N_T_/route-handler/revalidate-360-isr,thankyounext", - }, - "initialRevalidateSeconds": 10, - "srcRoute": "/route-handler/revalidate-360-isr", - }, - "/route-handler/static-cookies": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": null, - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialHeaders": { - "set-cookie": "theme=light; Path=/,my_company=ACME; Path=/", - "x-next-cache-tags": "_N_T_/layout,_N_T_/route-handler/layout,_N_T_/route-handler/static-cookies/layout,_N_T_/route-handler/static-cookies/route,_N_T_/route-handler/static-cookies", - }, - "initialRevalidateSeconds": false, - "srcRoute": "/route-handler/static-cookies", - }, - "/ssg-draft-mode": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/ssg-draft-mode.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/ssg-draft-mode/[[...route]]", - }, - "/ssg-draft-mode/test": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/ssg-draft-mode/test.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/ssg-draft-mode/[[...route]]", - }, - "/ssg-draft-mode/test-2": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/ssg-draft-mode/test-2.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/ssg-draft-mode/[[...route]]", - }, - "/strip-header-traceparent": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/strip-header-traceparent.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 50, - "srcRoute": "/strip-header-traceparent", - }, - "/unstable-cache/fetch/no-cache": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/unstable-cache/fetch/no-cache.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/unstable-cache/fetch/no-cache", - }, - "/unstable-cache/fetch/no-store": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/unstable-cache/fetch/no-store.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": false, - "srcRoute": "/unstable-cache/fetch/no-store", - }, - "/variable-config-revalidate/revalidate-3": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/variable-config-revalidate/revalidate-3.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 3, - "srcRoute": "/variable-config-revalidate/revalidate-3", - }, - "/variable-revalidate-stable/revalidate-3": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/variable-revalidate-stable/revalidate-3.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 3, - "srcRoute": "/variable-revalidate-stable/revalidate-3", - }, - "/variable-revalidate/authorization": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/variable-revalidate/authorization.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 10, - "srcRoute": "/variable-revalidate/authorization", - }, - "/variable-revalidate/cookie": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/variable-revalidate/cookie.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 3, - "srcRoute": "/variable-revalidate/cookie", - }, - "/variable-revalidate/encoding": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/variable-revalidate/encoding.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 3, - "srcRoute": "/variable-revalidate/encoding", - }, - "/variable-revalidate/headers-instance": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/variable-revalidate/headers-instance.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 10, - "srcRoute": "/variable-revalidate/headers-instance", - }, - "/variable-revalidate/post-method": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/variable-revalidate/post-method.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 10, - "srcRoute": "/variable-revalidate/post-method", - }, - "/variable-revalidate/revalidate-3": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/variable-revalidate/revalidate-3.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 3, - "srcRoute": "/variable-revalidate/revalidate-3", - }, - "/variable-revalidate/revalidate-360-isr": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/variable-revalidate/revalidate-360-isr.rsc", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "initialRevalidateSeconds": 10, - "srcRoute": "/variable-revalidate/revalidate-360-isr", - }, - } + { + "/": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/index.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/", + }, + "/api/large-data": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": null, + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialHeaders": { + "content-type": "application/json", + "x-next-cache-tags": "_N_T_/layout,_N_T_/api/layout,_N_T_/api/large-data/layout,_N_T_/api/large-data/route,_N_T_/api/large-data", + }, + "initialRevalidateSeconds": false, + "srcRoute": "/api/large-data", + }, + "/articles/works": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/articles/works.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 1, + "srcRoute": "/articles/[slug]", + }, + "/blog/seb": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/blog/seb.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 10, + "srcRoute": "/blog/[author]", + }, + "/blog/seb/second-post": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/blog/seb/second-post.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/blog/[author]/[slug]", + }, + "/blog/styfle": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/blog/styfle.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 10, + "srcRoute": "/blog/[author]", + }, + "/blog/styfle/first-post": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/blog/styfle/first-post.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/blog/[author]/[slug]", + }, + "/blog/styfle/second-post": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/blog/styfle/second-post.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/blog/[author]/[slug]", + }, + "/blog/tim": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/blog/tim.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 10, + "srcRoute": "/blog/[author]", + }, + "/blog/tim/first-post": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/blog/tim/first-post.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/blog/[author]/[slug]", + }, + "/default-config-fetch": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/default-config-fetch.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/default-config-fetch", + }, + "/force-cache": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/force-cache.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 3, + "srcRoute": "/force-cache", + }, + "/force-static-fetch-no-store": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/force-static-fetch-no-store.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/force-static-fetch-no-store", + }, + "/force-static/first": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/force-static/first.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/force-static/[slug]", + }, + "/force-static/second": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/force-static/second.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/force-static/[slug]", + }, + "/gen-params-dynamic-revalidate/one": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/gen-params-dynamic-revalidate/one.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 3, + "srcRoute": "/gen-params-dynamic-revalidate/[slug]", + }, + "/hooks/use-pathname/slug": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/hooks/use-pathname/slug.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/hooks/use-pathname/[slug]", + }, + "/hooks/use-search-params/force-static": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/hooks/use-search-params/force-static.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/hooks/use-search-params/force-static", + }, + "/hooks/use-search-params/with-suspense": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/hooks/use-search-params/with-suspense.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/hooks/use-search-params/with-suspense", + }, + "/isr-error-handling": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/isr-error-handling.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 3, + "srcRoute": "/isr-error-handling", + }, + "/no-config-fetch": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/no-config-fetch.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/no-config-fetch", + }, + "/no-store/static": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/no-store/static.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/no-store/static", + }, + "/partial-gen-params-no-additional-lang/en/RAND": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-lang/en/RAND.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-lang/en/first": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-lang/en/first.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-lang/en/second": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-lang/en/second.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-lang/fr/RAND": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-lang/fr/RAND.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-lang/fr/first": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-lang/fr/first.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-lang/fr/second": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-lang/fr/second.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-slug/en/RAND": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-slug/en/RAND.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-slug/en/first": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-slug/en/first.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-slug/en/second": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-slug/en/second.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-slug/fr/RAND": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-slug/fr/RAND.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-slug/fr/first": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-slug/fr/first.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", + }, + "/partial-gen-params-no-additional-slug/fr/second": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-slug/fr/second.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug]", + }, + "/prerendered-not-found/first": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/prerendered-not-found/first.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/prerendered-not-found/[slug]", + }, + "/prerendered-not-found/second": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/prerendered-not-found/second.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/prerendered-not-found/[slug]", + }, + "/route-handler/no-store-force-static": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": null, + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialHeaders": { + "content-type": "application/json", + "x-next-cache-tags": "_N_T_/layout,_N_T_/route-handler/layout,_N_T_/route-handler/no-store-force-static/layout,_N_T_/route-handler/no-store-force-static/route,_N_T_/route-handler/no-store-force-static", + }, + "initialRevalidateSeconds": 3, + "srcRoute": "/route-handler/no-store-force-static", + }, + "/route-handler/revalidate-360-isr": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": null, + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialHeaders": { + "content-type": "application/json", + "x-next-cache-tags": "_N_T_/layout,_N_T_/route-handler/layout,_N_T_/route-handler/revalidate-360-isr/layout,_N_T_/route-handler/revalidate-360-isr/route,_N_T_/route-handler/revalidate-360-isr,thankyounext", + }, + "initialRevalidateSeconds": 10, + "srcRoute": "/route-handler/revalidate-360-isr", + }, + "/route-handler/static-cookies": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": null, + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialHeaders": { + "set-cookie": "theme=light; Path=/,my_company=ACME; Path=/", + "x-next-cache-tags": "_N_T_/layout,_N_T_/route-handler/layout,_N_T_/route-handler/static-cookies/layout,_N_T_/route-handler/static-cookies/route,_N_T_/route-handler/static-cookies", + }, + "initialRevalidateSeconds": false, + "srcRoute": "/route-handler/static-cookies", + }, + "/ssg-draft-mode": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/ssg-draft-mode.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/ssg-draft-mode/[[...route]]", + }, + "/ssg-draft-mode/test": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/ssg-draft-mode/test.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/ssg-draft-mode/[[...route]]", + }, + "/ssg-draft-mode/test-2": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/ssg-draft-mode/test-2.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/ssg-draft-mode/[[...route]]", + }, + "/strip-header-traceparent": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/strip-header-traceparent.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 50, + "srcRoute": "/strip-header-traceparent", + }, + "/unstable-cache/fetch/no-cache": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/unstable-cache/fetch/no-cache.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/unstable-cache/fetch/no-cache", + }, + "/unstable-cache/fetch/no-store": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/unstable-cache/fetch/no-store.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": false, + "srcRoute": "/unstable-cache/fetch/no-store", + }, + "/variable-config-revalidate/revalidate-3": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/variable-config-revalidate/revalidate-3.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 3, + "srcRoute": "/variable-config-revalidate/revalidate-3", + }, + "/variable-revalidate-stable/revalidate-3": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/variable-revalidate-stable/revalidate-3.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 3, + "srcRoute": "/variable-revalidate-stable/revalidate-3", + }, + "/variable-revalidate/authorization": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/variable-revalidate/authorization.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 10, + "srcRoute": "/variable-revalidate/authorization", + }, + "/variable-revalidate/cookie": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/variable-revalidate/cookie.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 3, + "srcRoute": "/variable-revalidate/cookie", + }, + "/variable-revalidate/encoding": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/variable-revalidate/encoding.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 3, + "srcRoute": "/variable-revalidate/encoding", + }, + "/variable-revalidate/headers-instance": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/variable-revalidate/headers-instance.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 10, + "srcRoute": "/variable-revalidate/headers-instance", + }, + "/variable-revalidate/post-method": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/variable-revalidate/post-method.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 10, + "srcRoute": "/variable-revalidate/post-method", + }, + "/variable-revalidate/revalidate-3": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/variable-revalidate/revalidate-3.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 3, + "srcRoute": "/variable-revalidate/revalidate-3", + }, + "/variable-revalidate/revalidate-360-isr": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/variable-revalidate/revalidate-360-isr.rsc", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "initialRevalidateSeconds": 10, + "srcRoute": "/variable-revalidate/revalidate-360-isr", + }, + } `) expect(curManifest.dynamicRoutes).toMatchInlineSnapshot(` - { - "/articles/[slug]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/articles/[slug].rsc", - "dataRouteRegex": "^\\/articles\\/([^\\/]+?)\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": null, - "routeRegex": "^\\/articles\\/([^\\/]+?)(?:\\/)?$", - }, - "/blog/[author]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/blog/[author].rsc", - "dataRouteRegex": "^\\/blog\\/([^\\/]+?)\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": false, - "routeRegex": "^\\/blog\\/([^\\/]+?)(?:\\/)?$", - }, - "/blog/[author]/[slug]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/blog/[author]/[slug].rsc", - "dataRouteRegex": "^\\/blog\\/([^\\/]+?)\\/([^\\/]+?)\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": null, - "routeRegex": "^\\/blog\\/([^\\/]+?)\\/([^\\/]+?)(?:\\/)?$", - }, - "/dynamic-error/[id]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/dynamic-error/[id].rsc", - "dataRouteRegex": "^\\/dynamic\\-error\\/([^\\/]+?)\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": null, - "routeRegex": "^\\/dynamic\\-error\\/([^\\/]+?)(?:\\/)?$", - }, - "/force-static/[slug]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/force-static/[slug].rsc", - "dataRouteRegex": "^\\/force\\-static\\/([^\\/]+?)\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": null, - "routeRegex": "^\\/force\\-static\\/([^\\/]+?)(?:\\/)?$", - }, - "/gen-params-dynamic-revalidate/[slug]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/gen-params-dynamic-revalidate/[slug].rsc", - "dataRouteRegex": "^\\/gen\\-params\\-dynamic\\-revalidate\\/([^\\/]+?)\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": null, - "routeRegex": "^\\/gen\\-params\\-dynamic\\-revalidate\\/([^\\/]+?)(?:\\/)?$", - }, - "/hooks/use-pathname/[slug]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/hooks/use-pathname/[slug].rsc", - "dataRouteRegex": "^\\/hooks\\/use\\-pathname\\/([^\\/]+?)\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": null, - "routeRegex": "^\\/hooks\\/use\\-pathname\\/([^\\/]+?)(?:\\/)?$", - }, - "/partial-gen-params-no-additional-lang/[lang]/[slug]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug].rsc", - "dataRouteRegex": "^\\/partial\\-gen\\-params\\-no\\-additional\\-lang\\/([^\\/]+?)\\/([^\\/]+?)\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": false, - "routeRegex": "^\\/partial\\-gen\\-params\\-no\\-additional\\-lang\\/([^\\/]+?)\\/([^\\/]+?)(?:\\/)?$", - }, - "/partial-gen-params-no-additional-slug/[lang]/[slug]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug].rsc", - "dataRouteRegex": "^\\/partial\\-gen\\-params\\-no\\-additional\\-slug\\/([^\\/]+?)\\/([^\\/]+?)\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": false, - "routeRegex": "^\\/partial\\-gen\\-params\\-no\\-additional\\-slug\\/([^\\/]+?)\\/([^\\/]+?)(?:\\/)?$", - }, - "/ssg-draft-mode/[[...route]]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/ssg-draft-mode/[[...route]].rsc", - "dataRouteRegex": "^\\/ssg\\-draft\\-mode(?:\\/(.+?))?\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": null, - "routeRegex": "^\\/ssg\\-draft\\-mode(?:\\/(.+?))?(?:\\/)?$", - }, - "/static-to-dynamic-error-forced/[id]": { - "allowHeader": [ - "host", - "x-matched-path", - "x-prerender-revalidate", - "x-prerender-revalidate-if-generated", - "x-next-revalidated-tags", - "x-next-revalidate-tag-token", - ], - "dataRoute": "/static-to-dynamic-error-forced/[id].rsc", - "dataRouteRegex": "^\\/static\\-to\\-dynamic\\-error\\-forced\\/([^\\/]+?)\\.rsc$", - "experimentalBypassFor": [ - { - "key": "Next-Action", - "type": "header", - }, - { - "key": "content-type", - "type": "header", - "value": "multipart/form-data;.*", - }, - ], - "fallback": null, - "routeRegex": "^\\/static\\-to\\-dynamic\\-error\\-forced\\/([^\\/]+?)(?:\\/)?$", - }, - } + { + "/articles/[slug]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/articles/[slug].rsc", + "dataRouteRegex": "^\\/articles\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": null, + "routeRegex": "^\\/articles\\/([^\\/]+?)(?:\\/)?$", + }, + "/blog/[author]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/blog/[author].rsc", + "dataRouteRegex": "^\\/blog\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": false, + "routeRegex": "^\\/blog\\/([^\\/]+?)(?:\\/)?$", + }, + "/blog/[author]/[slug]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/blog/[author]/[slug].rsc", + "dataRouteRegex": "^\\/blog\\/([^\\/]+?)\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": null, + "routeRegex": "^\\/blog\\/([^\\/]+?)\\/([^\\/]+?)(?:\\/)?$", + }, + "/dynamic-error/[id]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/dynamic-error/[id].rsc", + "dataRouteRegex": "^\\/dynamic\\-error\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": null, + "routeRegex": "^\\/dynamic\\-error\\/([^\\/]+?)(?:\\/)?$", + }, + "/force-static/[slug]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/force-static/[slug].rsc", + "dataRouteRegex": "^\\/force\\-static\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": null, + "routeRegex": "^\\/force\\-static\\/([^\\/]+?)(?:\\/)?$", + }, + "/gen-params-dynamic-revalidate/[slug]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/gen-params-dynamic-revalidate/[slug].rsc", + "dataRouteRegex": "^\\/gen\\-params\\-dynamic\\-revalidate\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": null, + "routeRegex": "^\\/gen\\-params\\-dynamic\\-revalidate\\/([^\\/]+?)(?:\\/)?$", + }, + "/hooks/use-pathname/[slug]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/hooks/use-pathname/[slug].rsc", + "dataRouteRegex": "^\\/hooks\\/use\\-pathname\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": null, + "routeRegex": "^\\/hooks\\/use\\-pathname\\/([^\\/]+?)(?:\\/)?$", + }, + "/partial-gen-params-no-additional-lang/[lang]/[slug]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-lang/[lang]/[slug].rsc", + "dataRouteRegex": "^\\/partial\\-gen\\-params\\-no\\-additional\\-lang\\/([^\\/]+?)\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": false, + "routeRegex": "^\\/partial\\-gen\\-params\\-no\\-additional\\-lang\\/([^\\/]+?)\\/([^\\/]+?)(?:\\/)?$", + }, + "/partial-gen-params-no-additional-slug/[lang]/[slug]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/partial-gen-params-no-additional-slug/[lang]/[slug].rsc", + "dataRouteRegex": "^\\/partial\\-gen\\-params\\-no\\-additional\\-slug\\/([^\\/]+?)\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": false, + "routeRegex": "^\\/partial\\-gen\\-params\\-no\\-additional\\-slug\\/([^\\/]+?)\\/([^\\/]+?)(?:\\/)?$", + }, + "/prerendered-not-found/[slug]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/prerendered-not-found/[slug].rsc", + "dataRouteRegex": "^\\/prerendered\\-not\\-found\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": null, + "routeRegex": "^\\/prerendered\\-not\\-found\\/([^\\/]+?)(?:\\/)?$", + }, + "/ssg-draft-mode/[[...route]]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/ssg-draft-mode/[[...route]].rsc", + "dataRouteRegex": "^\\/ssg\\-draft\\-mode(?:\\/(.+?))?\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": null, + "routeRegex": "^\\/ssg\\-draft\\-mode(?:\\/(.+?))?(?:\\/)?$", + }, + "/static-to-dynamic-error-forced/[id]": { + "allowHeader": [ + "host", + "x-matched-path", + "x-prerender-revalidate", + "x-prerender-revalidate-if-generated", + "x-next-revalidated-tags", + "x-next-revalidate-tag-token", + ], + "dataRoute": "/static-to-dynamic-error-forced/[id].rsc", + "dataRouteRegex": "^\\/static\\-to\\-dynamic\\-error\\-forced\\/([^\\/]+?)\\.rsc$", + "experimentalBypassFor": [ + { + "key": "Next-Action", + "type": "header", + }, + { + "key": "content-type", + "type": "header", + "value": "multipart/form-data;.*", + }, + ], + "fallback": null, + "routeRegex": "^\\/static\\-to\\-dynamic\\-error\\-forced\\/([^\\/]+?)(?:\\/)?$", + }, + } `) }) @@ -2727,6 +2806,25 @@ describe('app-dir static/dynamic handling', () => { ) }) + it('should have correct cache tags for prerendered path', async () => { + const firstMeta = await next.readJSON( + '.next/server/app/prerendered-not-found/first.meta' + ) + const secondMeta = await next.readJSON( + '.next/server/app/prerendered-not-found/second.meta' + ) + + expect(firstMeta.status).toBe(404) + expect(firstMeta.headers['x-next-cache-tags']).toBe( + '_N_T_/layout,_N_T_/prerendered-not-found/layout,_N_T_/prerendered-not-found/[slug]/layout,_N_T_/prerendered-not-found/[slug]/page,_N_T_/prerendered-not-found/first,explicit-tag' + ) + + expect(secondMeta.status).not.toBe(404) + expect(secondMeta.headers['x-next-cache-tags']).toBe( + '_N_T_/layout,_N_T_/prerendered-not-found/layout,_N_T_/prerendered-not-found/[slug]/layout,_N_T_/prerendered-not-found/[slug]/page,_N_T_/prerendered-not-found/second,explicit-tag' + ) + }) + // build cache not leveraged for custom cache handler so not seeded if (!process.env.CUSTOM_CACHE_HANDLER) { it('should correctly error and not update cache for ISR', async () => { diff --git a/test/e2e/app-dir/app-static/app/prerendered-not-found/[slug]/page.tsx b/test/e2e/app-dir/app-static/app/prerendered-not-found/[slug]/page.tsx new file mode 100644 index 0000000000000..3c4c69da93287 --- /dev/null +++ b/test/e2e/app-dir/app-static/app/prerendered-not-found/[slug]/page.tsx @@ -0,0 +1,38 @@ +import React from 'react' +import { notFound } from 'next/navigation' + +export function generateStaticParams() { + return [ + { + slug: 'first', + }, + { + slug: 'second', + }, + ] +} + +export default async function Page(props: { + params: Promise<{ slug: string }> +}) { + const params = await props.params + await fetch('https://next-data-api.vercel.app/api/random', { + next: { + tags: ['explicit-tag'], + }, + }) + + if ( + params.slug !== 'second' && + process.env.NEXT_PHASE === 'phase-production-build' + ) { + notFound() + } + + return ( + <> +

/prerendered-not-found/{params.slug}

+

{Date.now()}

+ + ) +}