next 13.4.13-canary.8 → 13.4.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/next +2 -2
- package/dist/bin/next.map +1 -1
- package/dist/build/analysis/get-page-static-info.js +17 -4
- package/dist/build/analysis/get-page-static-info.js.map +1 -1
- package/dist/build/index.js +8 -3
- package/dist/build/index.js.map +1 -1
- package/dist/build/swc/index.d.ts +5 -1
- package/dist/build/swc/index.js +6 -4
- package/dist/build/swc/index.js.map +1 -1
- package/dist/build/swc/options.js +6 -3
- package/dist/build/swc/options.js.map +1 -1
- package/dist/build/webpack/loaders/next-route-loader/templates/app-page.d.ts +1 -2
- package/dist/build/webpack/loaders/next-route-loader/templates/app-page.js +42 -2
- package/dist/build/webpack/loaders/next-route-loader/templates/app-page.js.map +1 -1
- package/dist/build/webpack/loaders/next-route-loader/templates/app-route.d.ts +1 -2
- package/dist/build/webpack/loaders/next-route-loader/templates/app-route.js +3 -2
- package/dist/build/webpack/loaders/next-route-loader/templates/app-route.js.map +1 -1
- package/dist/build/webpack/loaders/next-route-loader/templates/pages-api.d.ts +1 -2
- package/dist/build/webpack/loaders/next-route-loader/templates/pages-api.js +4 -2
- package/dist/build/webpack/loaders/next-route-loader/templates/pages-api.js.map +1 -1
- package/dist/build/webpack/loaders/next-route-loader/templates/pages.d.ts +1 -2
- package/dist/build/webpack/loaders/next-route-loader/templates/pages.js +4 -2
- package/dist/build/webpack/loaders/next-route-loader/templates/pages.js.map +1 -1
- package/dist/build/webpack/plugins/middleware-plugin.js +3 -0
- package/dist/build/webpack/plugins/middleware-plugin.js.map +1 -1
- package/dist/build/webpack-config.js +17 -3
- package/dist/build/webpack-config.js.map +1 -1
- package/dist/cli/next-build.js +1 -1
- package/dist/cli/next-build.js.map +1 -1
- package/dist/cli/next-info.d.ts +5 -0
- package/dist/cli/next-info.js +392 -20
- package/dist/cli/next-info.js.map +1 -1
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/components/app-router.js +6 -3
- package/dist/client/components/app-router.js.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/legacy/image.js.map +1 -1
- package/dist/client/remove-base-path.js +2 -0
- package/dist/client/remove-base-path.js.map +1 -1
- package/dist/client/route-loader.d.ts +1 -0
- package/dist/client/route-loader.js.map +1 -1
- package/dist/client/webpack.js +1 -0
- package/dist/client/webpack.js.map +1 -1
- package/dist/compiled/@next/font/dist/google/font-data.json +465 -45
- package/dist/compiled/@next/font/dist/google/index.d.ts +311 -47
- package/dist/compiled/babel-packages/packages-bundle.js +2 -2
- package/dist/compiled/micromatch/index.js +4 -4
- package/dist/compiled/minimal-next-server/next-server.js +1 -1
- package/dist/compiled/minimal-next-server/next-server.js.cache +0 -0
- package/dist/compiled/sass-loader/cjs.js +1 -1
- package/dist/compiled/webpack/bundle5.js +1 -1
- package/dist/esm/build/analysis/get-page-static-info.js +17 -4
- package/dist/esm/build/analysis/get-page-static-info.js.map +1 -1
- package/dist/esm/build/index.js +9 -4
- package/dist/esm/build/index.js.map +1 -1
- package/dist/esm/build/swc/index.js +2 -2
- package/dist/esm/build/swc/index.js.map +1 -1
- package/dist/esm/build/swc/options.js +6 -3
- package/dist/esm/build/swc/options.js.map +1 -1
- package/dist/esm/build/webpack/loaders/next-route-loader/templates/app-page.js +3 -1
- package/dist/esm/build/webpack/loaders/next-route-loader/templates/app-page.js.map +1 -1
- package/dist/esm/build/webpack/loaders/next-route-loader/templates/app-route.js +3 -1
- package/dist/esm/build/webpack/loaders/next-route-loader/templates/app-route.js.map +1 -1
- package/dist/esm/build/webpack/loaders/next-route-loader/templates/pages-api.js +3 -1
- package/dist/esm/build/webpack/loaders/next-route-loader/templates/pages-api.js.map +1 -1
- package/dist/esm/build/webpack/loaders/next-route-loader/templates/pages.js +3 -1
- package/dist/esm/build/webpack/loaders/next-route-loader/templates/pages.js.map +1 -1
- package/dist/esm/build/webpack/plugins/middleware-plugin.js +4 -1
- package/dist/esm/build/webpack/plugins/middleware-plugin.js.map +1 -1
- package/dist/esm/build/webpack-config.js +17 -3
- package/dist/esm/build/webpack-config.js.map +1 -1
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/components/app-router.js +6 -3
- package/dist/esm/client/components/app-router.js.map +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/client/legacy/image.js.map +1 -1
- package/dist/esm/client/remove-base-path.js +2 -0
- package/dist/esm/client/remove-base-path.js.map +1 -1
- package/dist/esm/client/route-loader.js.map +1 -1
- package/dist/esm/client/webpack.js +1 -0
- package/dist/esm/client/webpack.js.map +1 -1
- package/dist/esm/lib/format-server-error.js +5 -2
- package/dist/esm/lib/format-server-error.js.map +1 -1
- package/dist/esm/lib/metadata/metadata.js +85 -56
- package/dist/esm/lib/metadata/metadata.js.map +1 -1
- package/dist/esm/lib/metadata/types/metadata-interface.js.map +1 -1
- package/dist/esm/server/app-render/app-render.js +89 -68
- package/dist/esm/server/app-render/app-render.js.map +1 -1
- package/dist/esm/server/async-storage/request-async-storage-wrapper.js +8 -3
- package/dist/esm/server/async-storage/request-async-storage-wrapper.js.map +1 -1
- package/dist/esm/server/base-server.js +17 -23
- package/dist/esm/server/base-server.js.map +1 -1
- package/dist/esm/server/config-utils.js +0 -4
- package/dist/esm/server/config-utils.js.map +1 -1
- package/dist/esm/server/config.js +16 -0
- package/dist/esm/server/config.js.map +1 -1
- package/dist/esm/server/dev/hot-reloader.js +1 -1
- package/dist/esm/server/dev/next-dev-server.js +1 -3
- package/dist/esm/server/dev/next-dev-server.js.map +1 -1
- package/dist/esm/server/future/route-matches/route-match.js +1 -25
- package/dist/esm/server/future/route-matches/route-match.js.map +1 -1
- package/dist/esm/server/future/route-modules/app-page/module.js +0 -3
- package/dist/esm/server/future/route-modules/app-page/module.js.map +1 -1
- package/dist/esm/server/future/route-modules/app-route/helpers/parsed-url-query-to-params.js +15 -0
- package/dist/esm/server/future/route-modules/app-route/helpers/parsed-url-query-to-params.js.map +1 -0
- package/dist/esm/server/future/route-modules/app-route/module.js +2 -1
- package/dist/esm/server/future/route-modules/app-route/module.js.map +1 -1
- package/dist/esm/server/future/route-modules/pages/module.js +0 -3
- package/dist/esm/server/future/route-modules/pages/module.js.map +1 -1
- package/dist/esm/server/future/route-modules/pages-api/module.js +0 -3
- package/dist/esm/server/future/route-modules/pages-api/module.js.map +1 -1
- package/dist/esm/server/future/route-modules/route-module.js.map +1 -1
- package/dist/esm/server/lib/incremental-cache/file-system-cache.js +4 -1
- package/dist/esm/server/lib/incremental-cache/file-system-cache.js.map +1 -1
- package/dist/esm/server/lib/patch-fetch.js +1 -1
- package/dist/esm/server/lib/patch-fetch.js.map +1 -1
- package/dist/esm/server/lib/router-server.js +4 -1
- package/dist/esm/server/lib/router-server.js.map +1 -1
- package/dist/esm/server/lib/router-utils/setup-dev.js +1 -1
- package/dist/esm/server/lib/router-utils/setup-dev.js.map +1 -1
- package/dist/esm/server/lib/start-server.js +2 -1
- package/dist/esm/server/lib/start-server.js.map +1 -1
- package/dist/esm/server/next-server.js +14 -1
- package/dist/esm/server/next-server.js.map +1 -1
- package/dist/esm/server/next.js +5 -5
- package/dist/esm/server/next.js.map +1 -1
- package/dist/esm/server/require-hook.js +3 -2
- package/dist/esm/server/require-hook.js.map +1 -1
- package/dist/esm/server/typescript/constant.js +3 -1
- package/dist/esm/server/typescript/constant.js.map +1 -1
- package/dist/esm/server/web/adapter.js +27 -1
- package/dist/esm/server/web/adapter.js.map +1 -1
- package/dist/esm/server/web/edge-route-module-wrapper.js +3 -2
- package/dist/esm/server/web/edge-route-module-wrapper.js.map +1 -1
- package/dist/esm/server/web/spec-extension/adapters/request-cookies.js +3 -3
- package/dist/esm/server/web/spec-extension/adapters/request-cookies.js.map +1 -1
- package/dist/esm/shared/lib/fnv1a.js +1 -1
- package/dist/esm/shared/lib/fnv1a.js.map +1 -1
- package/dist/lib/format-server-error.js +5 -2
- package/dist/lib/format-server-error.js.map +1 -1
- package/dist/lib/metadata/metadata.d.ts +2 -2
- package/dist/lib/metadata/metadata.js +81 -57
- package/dist/lib/metadata/metadata.js.map +1 -1
- package/dist/server/app-render/app-render.js +88 -67
- package/dist/server/app-render/app-render.js.map +1 -1
- package/dist/server/app-render/types.d.ts +1 -0
- package/dist/server/async-storage/request-async-storage-wrapper.js +8 -3
- package/dist/server/async-storage/request-async-storage-wrapper.js.map +1 -1
- package/dist/server/base-server.d.ts +0 -3
- package/dist/server/base-server.js +16 -22
- package/dist/server/base-server.js.map +1 -1
- package/dist/server/config-shared.d.ts +2 -2
- package/dist/server/config-utils.js +0 -4
- package/dist/server/config-utils.js.map +1 -1
- package/dist/server/config.js +16 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/dev/hot-reloader.js +1 -1
- package/dist/server/dev/next-dev-server.d.ts +0 -1
- package/dist/server/dev/next-dev-server.js +1 -3
- package/dist/server/dev/next-dev-server.js.map +1 -1
- package/dist/server/future/route-matches/route-match.d.ts +0 -20
- package/dist/server/future/route-matches/route-match.js +0 -29
- package/dist/server/future/route-matches/route-match.js.map +1 -1
- package/dist/server/future/route-modules/app-page/module.d.ts +0 -1
- package/dist/server/future/route-modules/app-page/module.js +0 -3
- package/dist/server/future/route-modules/app-page/module.js.map +1 -1
- package/dist/server/future/route-modules/app-route/helpers/parsed-url-query-to-params.d.ts +9 -0
- package/dist/server/future/route-modules/app-route/helpers/parsed-url-query-to-params.js +20 -0
- package/dist/server/future/route-modules/app-route/helpers/parsed-url-query-to-params.js.map +1 -0
- package/dist/server/future/route-modules/app-route/module.js +2 -1
- package/dist/server/future/route-modules/app-route/module.js.map +1 -1
- package/dist/server/future/route-modules/pages/module.d.ts +0 -1
- package/dist/server/future/route-modules/pages/module.js +0 -3
- package/dist/server/future/route-modules/pages/module.js.map +1 -1
- package/dist/server/future/route-modules/pages-api/module.d.ts +0 -1
- package/dist/server/future/route-modules/pages-api/module.js +0 -3
- package/dist/server/future/route-modules/pages-api/module.js.map +1 -1
- package/dist/server/future/route-modules/route-module.d.ts +1 -6
- package/dist/server/future/route-modules/route-module.js.map +1 -1
- package/dist/server/lib/incremental-cache/file-system-cache.js +4 -1
- package/dist/server/lib/incremental-cache/file-system-cache.js.map +1 -1
- package/dist/server/lib/patch-fetch.js +1 -1
- package/dist/server/lib/patch-fetch.js.map +1 -1
- package/dist/server/lib/router-server.js +4 -1
- package/dist/server/lib/router-server.js.map +1 -1
- package/dist/server/lib/router-utils/setup-dev.js +1 -1
- package/dist/server/lib/router-utils/setup-dev.js.map +1 -1
- package/dist/server/lib/start-server.js +2 -1
- package/dist/server/lib/start-server.js.map +1 -1
- package/dist/server/next-server.js +14 -1
- package/dist/server/next-server.js.map +1 -1
- package/dist/server/next.js +5 -5
- package/dist/server/next.js.map +1 -1
- package/dist/server/require-hook.d.ts +1 -1
- package/dist/server/require-hook.js +2 -2
- package/dist/server/require-hook.js.map +1 -1
- package/dist/server/typescript/constant.js +3 -1
- package/dist/server/typescript/constant.js.map +1 -1
- package/dist/server/web/adapter.js +27 -1
- package/dist/server/web/adapter.js.map +1 -1
- package/dist/server/web/edge-route-module-wrapper.d.ts +2 -3
- package/dist/server/web/edge-route-module-wrapper.js +3 -2
- package/dist/server/web/edge-route-module-wrapper.js.map +1 -1
- package/dist/server/web/spec-extension/adapters/request-cookies.d.ts +1 -4
- package/dist/server/web/spec-extension/adapters/request-cookies.js +3 -3
- package/dist/server/web/spec-extension/adapters/request-cookies.js.map +1 -1
- package/dist/shared/lib/fnv1a.js +1 -1
- package/dist/shared/lib/fnv1a.js.map +1 -1
- package/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/telemetry/events/session-stopped.js +2 -2
- package/dist/telemetry/events/version.js +2 -2
- package/package.json +16 -22
- package/dist/esm/server/future/route-handler-managers/route-handler-manager.js +0 -18
- package/dist/esm/server/future/route-handler-managers/route-handler-manager.js.map +0 -1
- package/dist/server/future/route-handler-managers/route-handler-manager.d.ts +0 -13
- package/dist/server/future/route-handler-managers/route-handler-manager.js +0 -28
- package/dist/server/future/route-handler-managers/route-handler-manager.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/route-loader.ts"],"names":["getAssetPathFromRoute","__unsafeCreateTrustedScriptURL","requestIdleCallback","MS_MAX_IDLE_DELAY","withFuture","key","map","generator","entry","get","future","Promise","resolve","resolver","prom","set","then","value","catch","err","delete","ASSET_LOAD_ERROR","Symbol","markAssetError","Object","defineProperty","isAssetError","hasPrefetch","link","document","createElement","window","MSInputMethodContext","documentMode","relList","supports","canPrefetch","getAssetQueryString","process","env","NEXT_DEPLOYMENT_ID","prefetchViaDom","href","as","reject","selector","querySelector","rel","crossOrigin","__NEXT_CROSS_ORIGIN","onload","onerror","Error","head","appendChild","appendScript","src","script","body","devBuildPromise","resolvePromiseWithTimeout","p","ms","cancelled","r","NODE_ENV","setTimeout","getClientBuildManifest","self","__BUILD_MANIFEST","onBuildManifest","cb","__BUILD_MANIFEST_CB","getFilesForRoute","assetPrefix","route","scriptUrl","encodeURI","scripts","css","manifest","allFiles","filter","v","endsWith","createRouteLoader","entrypoints","Map","loadedScripts","styleSheets","routes","maybeExecuteScript","toString","fetchStyleSheet","fetch","res","ok","text","content","whenEntrypoint","onEntrypoint","execute","exports","component","default","error","undefined","input","old","loadRoute","prefetch","devBuildPromiseResolve","all","has","entrypoint","styles","assign","finally","cn","navigator","connection","saveData","test","effectiveType","output"],"mappings":"AAEA,OAAOA,2BAA2B,uDAAsD;AACxF,SAASC,8BAA8B,QAAQ,kBAAiB;AAChE,SAASC,mBAAmB,QAAQ,0BAAyB;AAE7D,uEAAuE;AACvE,yEAAyE;AACzE,2EAA2E;AAC3E,oCAAoC;AACpC,MAAMC,oBAAoB;
|
|
1
|
+
{"version":3,"sources":["../../src/client/route-loader.ts"],"names":["getAssetPathFromRoute","__unsafeCreateTrustedScriptURL","requestIdleCallback","MS_MAX_IDLE_DELAY","withFuture","key","map","generator","entry","get","future","Promise","resolve","resolver","prom","set","then","value","catch","err","delete","ASSET_LOAD_ERROR","Symbol","markAssetError","Object","defineProperty","isAssetError","hasPrefetch","link","document","createElement","window","MSInputMethodContext","documentMode","relList","supports","canPrefetch","getAssetQueryString","process","env","NEXT_DEPLOYMENT_ID","prefetchViaDom","href","as","reject","selector","querySelector","rel","crossOrigin","__NEXT_CROSS_ORIGIN","onload","onerror","Error","head","appendChild","appendScript","src","script","body","devBuildPromise","resolvePromiseWithTimeout","p","ms","cancelled","r","NODE_ENV","setTimeout","getClientBuildManifest","self","__BUILD_MANIFEST","onBuildManifest","cb","__BUILD_MANIFEST_CB","getFilesForRoute","assetPrefix","route","scriptUrl","encodeURI","scripts","css","manifest","allFiles","filter","v","endsWith","createRouteLoader","entrypoints","Map","loadedScripts","styleSheets","routes","maybeExecuteScript","toString","fetchStyleSheet","fetch","res","ok","text","content","whenEntrypoint","onEntrypoint","execute","exports","component","default","error","undefined","input","old","loadRoute","prefetch","devBuildPromiseResolve","all","has","entrypoint","styles","assign","finally","cn","navigator","connection","saveData","test","effectiveType","output"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/webpack.ts"],"names":["addChunkSuffix","getOriginalChunk","chunkId","process","env","NEXT_DEPLOYMENT_ID","getChunkScriptFilename","__webpack_require__","u","getChunkCssFilename","k","getMiniCssFilename","miniCssF","self","__next_require__","__next_set_public_path__","path","__webpack_public_path__"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/client/webpack.ts"],"names":["addChunkSuffix","getOriginalChunk","chunkId","process","env","NEXT_DEPLOYMENT_ID","getChunkScriptFilename","__webpack_require__","u","getChunkCssFilename","k","getMiniCssFilename","miniCssF","self","__next_require__","__next_set_public_path__","path","__webpack_public_path__"],"mappings":"AAAA,6DAA6D;AAK7D,MAAMA,iBACJ,CAACC,mBAA+C,CAACC,UAAiB;QAChE,OACED,iBAAiBC,WACjB,CAAA,AAAC,KACCC,CAAAA,QAAQC,GAAG,CAACC,kBAAkB,GAC1B,AAAC,UAAOF,QAAQC,GAAG,CAACC,kBAAkB,GACtC,EAAE,AAAD,CACN;IAEL;AAEF,6DAA6D;AAC7D,MAAMC,yBAAyBC,oBAAoBC,CAAC;AACpD,oCAAoC;AACpCD,oBAAoBC,CAAC,GAAGR,eAAeM;AAEvC,oCAAoC;AACpC,MAAMG,sBAAsBF,oBAAoBG,CAAC;AACjD,oCAAoC;AACpCH,oBAAoBG,CAAC,GAAGV,eAAeS;AAEvC,oCAAoC;AACpC,MAAME,qBAAqBJ,oBAAoBK,QAAQ;AACvD,oCAAoC;AACpCL,oBAAoBK,QAAQ,GAAGZ,eAAeW;AAI5CE,KAAaC,gBAAgB,GAAGP;AAChCM,KAAaE,wBAAwB,GAAG,CAACC,OAAiB;IAC1D,6DAA6D;IAC7DC,0BAA0BD;AAC5B;AArCA,WAuCS"}
|
|
@@ -8,7 +8,9 @@ const invalidServerComponentReactHooks = [
|
|
|
8
8
|
"useRef",
|
|
9
9
|
"useState",
|
|
10
10
|
"useSyncExternalStore",
|
|
11
|
-
"useTransition"
|
|
11
|
+
"useTransition",
|
|
12
|
+
"experimental_useOptimistic",
|
|
13
|
+
"useOptimistic"
|
|
12
14
|
];
|
|
13
15
|
function setMessage(error, message) {
|
|
14
16
|
error.message = message;
|
|
@@ -34,7 +36,8 @@ ${addedMessage}`);
|
|
|
34
36
|
return;
|
|
35
37
|
}
|
|
36
38
|
for (const clientHook of invalidServerComponentReactHooks){
|
|
37
|
-
|
|
39
|
+
const regex = new RegExp(`\\b${clientHook}\\b.*is not a function`);
|
|
40
|
+
if (regex.test(error.message)) {
|
|
38
41
|
setMessage(error, `${clientHook} only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more: https://nextjs.org/docs/messages/react-client-hook-in-server-component`);
|
|
39
42
|
return;
|
|
40
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/format-server-error.ts"],"names":["invalidServerComponentReactHooks","setMessage","error","message","stack","lines","split","join","formatServerError","includes","addedMessage","clientHook"],"mappings":"AAAA,MAAMA,mCAAmC;IACvC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,SAASC,WAAWC,KAAY,EAAEC,OAAe,EAAQ;IACvDD,MAAMC,OAAO,GAAGA;IAChB,IAAID,MAAME,KAAK,EAAE;QACf,MAAMC,QAAQH,MAAME,KAAK,CAACE,KAAK,CAAC;QAChCD,KAAK,CAAC,EAAE,GAAGF;QACXD,MAAME,KAAK,GAAGC,MAAME,IAAI,CAAC;IAC3B,CAAC;AACH;AAEA,OAAO,SAASC,kBAAkBN,KAAY,EAAQ;IACpD,IAAI,OAAOA,CAAAA,gBAAAA,KAAAA,IAAAA,MAAOC,OAAO,AAAD,MAAM,UAAU;IAExC,IACED,MAAMC,OAAO,CAACM,QAAQ,CACpB,+DAEF;QACA,MAAMC,eACJ;QAEF,qEAAqE;QACrE,IAAIR,MAAMC,OAAO,CAACM,QAAQ,CAACC,eAAe;QAE1CT,WACEC,OACA,CAAC,EAAEA,MAAMC,OAAO,CAAC;;AAEvB,EAAEO,aAAa,CAAC;QAEZ;IACF,CAAC;IAED,IAAIR,MAAMC,OAAO,CAACM,QAAQ,CAAC,oCAAoC;QAC7DR,WACEC,OACA;QAEF;IACF,CAAC;IAED,KAAK,MAAMS,cAAcX,iCAAkC;QACzD,
|
|
1
|
+
{"version":3,"sources":["../../src/lib/format-server-error.ts"],"names":["invalidServerComponentReactHooks","setMessage","error","message","stack","lines","split","join","formatServerError","includes","addedMessage","clientHook","regex","RegExp","test"],"mappings":"AAAA,MAAMA,mCAAmC;IACvC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,SAASC,WAAWC,KAAY,EAAEC,OAAe,EAAQ;IACvDD,MAAMC,OAAO,GAAGA;IAChB,IAAID,MAAME,KAAK,EAAE;QACf,MAAMC,QAAQH,MAAME,KAAK,CAACE,KAAK,CAAC;QAChCD,KAAK,CAAC,EAAE,GAAGF;QACXD,MAAME,KAAK,GAAGC,MAAME,IAAI,CAAC;IAC3B,CAAC;AACH;AAEA,OAAO,SAASC,kBAAkBN,KAAY,EAAQ;IACpD,IAAI,OAAOA,CAAAA,gBAAAA,KAAAA,IAAAA,MAAOC,OAAO,AAAD,MAAM,UAAU;IAExC,IACED,MAAMC,OAAO,CAACM,QAAQ,CACpB,+DAEF;QACA,MAAMC,eACJ;QAEF,qEAAqE;QACrE,IAAIR,MAAMC,OAAO,CAACM,QAAQ,CAACC,eAAe;QAE1CT,WACEC,OACA,CAAC,EAAEA,MAAMC,OAAO,CAAC;;AAEvB,EAAEO,aAAa,CAAC;QAEZ;IACF,CAAC;IAED,IAAIR,MAAMC,OAAO,CAACM,QAAQ,CAAC,oCAAoC;QAC7DR,WACEC,OACA;QAEF;IACF,CAAC;IAED,KAAK,MAAMS,cAAcX,iCAAkC;QACzD,MAAMY,QAAQ,IAAIC,OAAO,CAAC,GAAG,EAAEF,WAAW,sBAAsB,CAAC;QACjE,IAAIC,MAAME,IAAI,CAACZ,MAAMC,OAAO,GAAG;YAC7BF,WACEC,OACA,CAAC,EAAES,WAAW,oLAAoL,CAAC;YAErM;QACF,CAAC;IACH;AACF,CAAC"}
|
|
@@ -6,67 +6,96 @@ import { IconsMetadata } from "./generate/icons";
|
|
|
6
6
|
import { accumulateMetadata, resolveMetadata } from "./resolve-metadata";
|
|
7
7
|
import { MetaFilter } from "./generate/meta";
|
|
8
8
|
import { createDefaultMetadata } from "./default-metadata";
|
|
9
|
-
//
|
|
10
|
-
|
|
9
|
+
// Use a promise to share the status of the metadata resolving,
|
|
10
|
+
// returning two components `MetadataTree` and `MetadataOutlet`
|
|
11
|
+
// `MetadataTree` is the one that will be rendered at first in the content sequence for metadata tags.
|
|
12
|
+
// `MetadataOutlet` is the one that will be rendered under error boundaries for metadata resolving errors.
|
|
13
|
+
// In this way we can let the metadata tags always render successfully,
|
|
14
|
+
// and the error will be caught by the error boundary and trigger fallbacks.
|
|
15
|
+
export function createMetadataComponents({ tree , pathname , searchParams , getDynamicParamFromSegment , appUsingSizeAdjust , errorType }) {
|
|
11
16
|
const metadataContext = {
|
|
12
17
|
pathname
|
|
13
18
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
searchParams,
|
|
19
|
-
getDynamicParamFromSegment,
|
|
20
|
-
errorConvention: errorType === "redirect" ? undefined : errorType
|
|
19
|
+
let resolve;
|
|
20
|
+
// Only use promise.resolve here to avoid unhandled rejections
|
|
21
|
+
const metadataErrorResolving = new Promise((res)=>{
|
|
22
|
+
resolve = res;
|
|
21
23
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
async function MetadataTree() {
|
|
25
|
+
const defaultMetadata = createDefaultMetadata();
|
|
26
|
+
let metadata = defaultMetadata;
|
|
27
|
+
try {
|
|
28
|
+
const resolvedMetadata = await resolveMetadata({
|
|
29
|
+
tree,
|
|
30
|
+
parentParams: {},
|
|
31
|
+
metadataItems: [],
|
|
32
|
+
searchParams,
|
|
33
|
+
getDynamicParamFromSegment,
|
|
34
|
+
errorConvention: errorType === "redirect" ? undefined : errorType
|
|
35
|
+
});
|
|
36
|
+
// Skip for redirect case as for the temporary redirect case we don't need the metadata on client
|
|
37
|
+
if (errorType === "redirect") {
|
|
38
|
+
metadata = defaultMetadata;
|
|
39
|
+
} else {
|
|
40
|
+
metadata = await accumulateMetadata(resolvedMetadata, metadataContext);
|
|
41
|
+
}
|
|
42
|
+
resolve(undefined);
|
|
43
|
+
} catch (error) {
|
|
44
|
+
resolve(error);
|
|
45
|
+
}
|
|
46
|
+
const elements = MetaFilter([
|
|
47
|
+
BasicMetadata({
|
|
48
|
+
metadata
|
|
49
|
+
}),
|
|
50
|
+
AlternatesMetadata({
|
|
51
|
+
alternates: metadata.alternates
|
|
52
|
+
}),
|
|
53
|
+
ItunesMeta({
|
|
54
|
+
itunes: metadata.itunes
|
|
55
|
+
}),
|
|
56
|
+
FormatDetectionMeta({
|
|
57
|
+
formatDetection: metadata.formatDetection
|
|
58
|
+
}),
|
|
59
|
+
VerificationMeta({
|
|
60
|
+
verification: metadata.verification
|
|
61
|
+
}),
|
|
62
|
+
AppleWebAppMeta({
|
|
63
|
+
appleWebApp: metadata.appleWebApp
|
|
64
|
+
}),
|
|
65
|
+
OpenGraphMetadata({
|
|
66
|
+
openGraph: metadata.openGraph
|
|
67
|
+
}),
|
|
68
|
+
TwitterMetadata({
|
|
69
|
+
twitter: metadata.twitter
|
|
70
|
+
}),
|
|
71
|
+
AppLinksMeta({
|
|
72
|
+
appLinks: metadata.appLinks
|
|
73
|
+
}),
|
|
74
|
+
IconsMetadata({
|
|
75
|
+
icons: metadata.icons
|
|
76
|
+
})
|
|
77
|
+
]);
|
|
78
|
+
if (appUsingSizeAdjust) elements.push(/*#__PURE__*/ React.createElement("meta", {
|
|
79
|
+
name: "next-size-adjust"
|
|
80
|
+
}));
|
|
81
|
+
return /*#__PURE__*/ React.createElement(React.Fragment, null, elements.map((el, index)=>{
|
|
82
|
+
return /*#__PURE__*/ React.cloneElement(el, {
|
|
83
|
+
key: index
|
|
84
|
+
});
|
|
85
|
+
}));
|
|
29
86
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}),
|
|
43
|
-
VerificationMeta({
|
|
44
|
-
verification: metadata.verification
|
|
45
|
-
}),
|
|
46
|
-
AppleWebAppMeta({
|
|
47
|
-
appleWebApp: metadata.appleWebApp
|
|
48
|
-
}),
|
|
49
|
-
OpenGraphMetadata({
|
|
50
|
-
openGraph: metadata.openGraph
|
|
51
|
-
}),
|
|
52
|
-
TwitterMetadata({
|
|
53
|
-
twitter: metadata.twitter
|
|
54
|
-
}),
|
|
55
|
-
AppLinksMeta({
|
|
56
|
-
appLinks: metadata.appLinks
|
|
57
|
-
}),
|
|
58
|
-
IconsMetadata({
|
|
59
|
-
icons: metadata.icons
|
|
60
|
-
})
|
|
61
|
-
]);
|
|
62
|
-
if (appUsingSizeAdjust) elements.push(/*#__PURE__*/ React.createElement("meta", {
|
|
63
|
-
name: "next-size-adjust"
|
|
64
|
-
}));
|
|
65
|
-
return /*#__PURE__*/ React.createElement(React.Fragment, null, elements.map((el, index)=>{
|
|
66
|
-
return /*#__PURE__*/ React.cloneElement(el, {
|
|
67
|
-
key: index
|
|
68
|
-
});
|
|
69
|
-
}));
|
|
87
|
+
async function MetadataOutlet() {
|
|
88
|
+
const error = await metadataErrorResolving;
|
|
89
|
+
if (error) {
|
|
90
|
+
throw error;
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
// @ts-expect-error async server components
|
|
95
|
+
return [
|
|
96
|
+
MetadataTree,
|
|
97
|
+
MetadataOutlet
|
|
98
|
+
];
|
|
70
99
|
}
|
|
71
100
|
|
|
72
101
|
//# sourceMappingURL=metadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/metadata/metadata.tsx"],"names":["React","AppleWebAppMeta","FormatDetectionMeta","ItunesMeta","BasicMetadata","VerificationMeta","AlternatesMetadata","OpenGraphMetadata","TwitterMetadata","AppLinksMeta","IconsMetadata","accumulateMetadata","resolveMetadata","MetaFilter","createDefaultMetadata","
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/metadata/metadata.tsx"],"names":["React","AppleWebAppMeta","FormatDetectionMeta","ItunesMeta","BasicMetadata","VerificationMeta","AlternatesMetadata","OpenGraphMetadata","TwitterMetadata","AppLinksMeta","IconsMetadata","accumulateMetadata","resolveMetadata","MetaFilter","createDefaultMetadata","createMetadataComponents","tree","pathname","searchParams","getDynamicParamFromSegment","appUsingSizeAdjust","errorType","metadataContext","resolve","metadataErrorResolving","Promise","res","MetadataTree","defaultMetadata","metadata","resolvedMetadata","parentParams","metadataItems","errorConvention","undefined","error","elements","alternates","itunes","formatDetection","verification","appleWebApp","openGraph","twitter","appLinks","icons","push","meta","name","map","el","index","cloneElement","key","MetadataOutlet"],"mappings":"AAGA,OAAOA,WAAW,QAAO;AACzB,SACEC,eAAe,EACfC,mBAAmB,EACnBC,UAAU,EACVC,aAAa,EACbC,gBAAgB,QACX,mBAAkB;AACzB,SAASC,kBAAkB,QAAQ,uBAAsB;AACzD,SACEC,iBAAiB,EACjBC,eAAe,EACfC,YAAY,QACP,uBAAsB;AAC7B,SAASC,aAAa,QAAQ,mBAAkB;AAChD,SAASC,kBAAkB,EAAEC,eAAe,QAAQ,qBAAoB;AACxE,SAASC,UAAU,QAAQ,kBAAiB;AAE5C,SAASC,qBAAqB,QAAQ,qBAAoB;AAE1D,+DAA+D;AAC/D,+DAA+D;AAC/D,sGAAsG;AACtG,0GAA0G;AAC1G,uEAAuE;AACvE,4EAA4E;AAC5E,OAAO,SAASC,yBAAyB,EACvCC,KAAI,EACJC,SAAQ,EACRC,aAAY,EACZC,2BAA0B,EAC1BC,mBAAkB,EAClBC,UAAS,EAQV,EAA8C;IAC7C,MAAMC,kBAAkB;QACtBL;IACF;IAEA,IAAIM;IACJ,8DAA8D;IAC9D,MAAMC,yBAAyB,IAAIC,QAA2B,CAACC,MAAQ;QACrEH,UAAUG;IACZ;IAEA,eAAeC,eAAe;QAC5B,MAAMC,kBAAkBd;QACxB,IAAIe,WAAyCD;QAC7C,IAAI;YACF,MAAME,mBAAmB,MAAMlB,gBAAgB;gBAC7CI;gBACAe,cAAc,CAAC;gBACfC,eAAe,EAAE;gBACjBd;gBACAC;gBACAc,iBAAiBZ,cAAc,aAAaa,YAAYb,SAAS;YACnE;YAEA,iGAAiG;YACjG,IAAIA,cAAc,YAAY;gBAC5BQ,WAAWD;YACb,OAAO;gBACLC,WAAW,MAAMlB,mBAAmBmB,kBAAkBR;YACxD,CAAC;YACDC,QAAQW;QACV,EAAE,OAAOC,OAAY;YACnBZ,QAAQY;QACV;QAEA,MAAMC,WAAWvB,WAAW;YAC1BT,cAAc;gBAAEyB;YAAS;YACzBvB,mBAAmB;gBAAE+B,YAAYR,SAASQ,UAAU;YAAC;YACrDlC,WAAW;gBAAEmC,QAAQT,SAASS,MAAM;YAAC;YACrCpC,oBAAoB;gBAAEqC,iBAAiBV,SAASU,eAAe;YAAC;YAChElC,iBAAiB;gBAAEmC,cAAcX,SAASW,YAAY;YAAC;YACvDvC,gBAAgB;gBAAEwC,aAAaZ,SAASY,WAAW;YAAC;YACpDlC,kBAAkB;gBAAEmC,WAAWb,SAASa,SAAS;YAAC;YAClDlC,gBAAgB;gBAAEmC,SAASd,SAASc,OAAO;YAAC;YAC5ClC,aAAa;gBAAEmC,UAAUf,SAASe,QAAQ;YAAC;YAC3ClC,cAAc;gBAAEmC,OAAOhB,SAASgB,KAAK;YAAC;SACvC;QAED,IAAIzB,oBAAoBgB,SAASU,IAAI,eAAC,oBAACC;YAAKC,MAAK;;QAEjD,qBACE,0CACGZ,SAASa,GAAG,CAAC,CAACC,IAAIC,QAAU;YAC3B,qBAAOnD,MAAMoD,YAAY,CAACF,IAA0B;gBAAEG,KAAKF;YAAM;QACnE;IAGN;IAEA,eAAeG,iBAAiB;QAC9B,MAAMnB,QAAQ,MAAMX;QACpB,IAAIW,OAAO;YACT,MAAMA,MAAK;QACb,CAAC;QACD,OAAO,IAAI;IACb;IAEA,2CAA2C;IAC3C,OAAO;QAACR;QAAc2B;KAAe;AACvC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/lib/metadata/types/metadata-interface.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/lib/metadata/types/metadata-interface.ts"],"names":[],"mappings":"AAAA,WA0jBuE"}
|
|
@@ -6,7 +6,7 @@ import { renderToInitialStream, createBufferedTransformStream, continueFromIniti
|
|
|
6
6
|
import { canSegmentBeOverridden, matchSegment } from "../../client/components/match-segments";
|
|
7
7
|
import { stripInternalQueries } from "../internal-utils";
|
|
8
8
|
import { NEXT_ROUTER_PREFETCH, NEXT_ROUTER_STATE_TREE, RSC } from "../../client/components/app-router-headers";
|
|
9
|
-
import {
|
|
9
|
+
import { createMetadataComponents } from "../../lib/metadata/metadata";
|
|
10
10
|
import { RequestAsyncStorageWrapper } from "../async-storage/request-async-storage-wrapper";
|
|
11
11
|
import { StaticGenerationAsyncStorageWrapper } from "../async-storage/static-generation-async-storage-wrapper";
|
|
12
12
|
import { isClientReference } from "../../lib/client-reference";
|
|
@@ -48,17 +48,17 @@ function createNotFoundLoaderTree(loaderTree) {
|
|
|
48
48
|
];
|
|
49
49
|
}
|
|
50
50
|
// Find the closest matched component in the loader tree for a given component type
|
|
51
|
-
function findMatchedComponent(loaderTree, componentType,
|
|
52
|
-
const [, parallelRoutes, components] = loaderTree;
|
|
51
|
+
function findMatchedComponent(loaderTree, componentType, result) {
|
|
52
|
+
const [segment, parallelRoutes, components] = loaderTree;
|
|
53
53
|
const childKeys = Object.keys(parallelRoutes);
|
|
54
54
|
result = components[componentType] || result;
|
|
55
55
|
// reached the end of the tree
|
|
56
|
-
if (
|
|
56
|
+
if (segment === "__DEFAULT__" || segment === "__PAGE__") {
|
|
57
57
|
return result;
|
|
58
58
|
}
|
|
59
59
|
for (const key of childKeys){
|
|
60
60
|
const childTree = parallelRoutes[key];
|
|
61
|
-
const matchedComponent = findMatchedComponent(childTree, componentType,
|
|
61
|
+
const matchedComponent = findMatchedComponent(childTree, componentType, result);
|
|
62
62
|
if (matchedComponent) {
|
|
63
63
|
return matchedComponent;
|
|
64
64
|
}
|
|
@@ -105,6 +105,11 @@ function hasLoadingComponentInTree(tree) {
|
|
|
105
105
|
export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts) {
|
|
106
106
|
const isFlight = req.headers[RSC.toLowerCase()] !== undefined;
|
|
107
107
|
const pathname = validateURL(req.url);
|
|
108
|
+
// A unique request timestamp used by development to ensure that it's
|
|
109
|
+
// consistent and won't change during this request. This is important to
|
|
110
|
+
// avoid that resources can be deduped by React Float if the same resource is
|
|
111
|
+
// rendered or preloaded multiple times: `<link href="a.css?v={Date.now()}"/>`.
|
|
112
|
+
const DEV_REQUEST_TS = Date.now();
|
|
108
113
|
const { buildManifest , subresourceIntegrityManifest , serverActionsManifest , ComponentMod , dev , nextFontManifest , supportsDynamicHTML , nextConfigOutput , serverActionsBodySizeLimit } = renderOpts;
|
|
109
114
|
const appUsingSizeAdjust = !!(nextFontManifest == null ? void 0 : nextFontManifest.appUsingSizeAdjust);
|
|
110
115
|
const clientReferenceManifest = renderOpts.clientReferenceManifest;
|
|
@@ -259,7 +264,7 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
259
264
|
const isDev = process.env.NODE_ENV === "development";
|
|
260
265
|
let qs = "";
|
|
261
266
|
if (isDev && addTimestamp) {
|
|
262
|
-
qs += `?v=${
|
|
267
|
+
qs += `?v=${DEV_REQUEST_TS}`;
|
|
263
268
|
}
|
|
264
269
|
if (renderOpts.deploymentId) {
|
|
265
270
|
qs += `${isDev ? "&" : "?"}dpl=${renderOpts.deploymentId}`;
|
|
@@ -364,7 +369,7 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
364
369
|
};
|
|
365
370
|
/**
|
|
366
371
|
* Use the provided loader tree to create the React Component tree.
|
|
367
|
-
*/ const createComponentTree = async ({ createSegmentPath , loaderTree: tree , parentParams , firstItem , rootLayoutIncluded , injectedCSS , injectedFontPreloadTags , asNotFound })=>{
|
|
372
|
+
*/ const createComponentTree = async ({ createSegmentPath , loaderTree: tree , parentParams , firstItem , rootLayoutIncluded , injectedCSS , injectedFontPreloadTags , asNotFound , metadataOutlet })=>{
|
|
368
373
|
const { page , layoutOrPagePath , segment , components , parallelRoutes } = parseLoaderTree(tree);
|
|
369
374
|
const { layout , template , error , loading , "not-found": notFound } = components;
|
|
370
375
|
const injectedCSSWithCurrentLayout = new Set(injectedCSS);
|
|
@@ -405,7 +410,9 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
405
410
|
filePath: notFound[1],
|
|
406
411
|
getComponent: notFound[0],
|
|
407
412
|
injectedCSS: injectedCSSWithCurrentLayout
|
|
408
|
-
}) : [
|
|
413
|
+
}) : [
|
|
414
|
+
rootLayoutIncluded ? undefined : DefaultNotFound
|
|
415
|
+
];
|
|
409
416
|
let dynamic = layoutOrPageMod == null ? void 0 : layoutOrPageMod.dynamic;
|
|
410
417
|
if (nextConfigOutput === "export") {
|
|
411
418
|
if (!dynamic || dynamic === "auto") {
|
|
@@ -538,7 +545,8 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
538
545
|
rootLayoutIncluded: rootLayoutIncludedAtThisLevelOrAbove,
|
|
539
546
|
injectedCSS: injectedCSSWithCurrentLayout,
|
|
540
547
|
injectedFontPreloadTags: injectedFontPreloadTagsWithCurrentLayout,
|
|
541
|
-
asNotFound
|
|
548
|
+
asNotFound,
|
|
549
|
+
metadataOutlet
|
|
542
550
|
});
|
|
543
551
|
const childProp = {
|
|
544
552
|
current: /*#__PURE__*/ React.createElement(ChildComponent, null),
|
|
@@ -585,7 +593,7 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
585
593
|
if (NotFound && asNotFound && // In development, it could hit the parallel-route-default not found, so we only need to check the segment.
|
|
586
594
|
// Or if there's no parallel routes means it reaches the end.
|
|
587
595
|
(segment === "__DEFAULT__" && !parallelRouteMap.length || // For production build the original pathname is /_not-found, always render not-found component.
|
|
588
|
-
renderOpts.originalPathname === "/_not-found")) {
|
|
596
|
+
!renderOpts.dev && renderOpts.originalPathname === "/_not-found")) {
|
|
589
597
|
notFoundComponent = {
|
|
590
598
|
children: /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement("meta", {
|
|
591
599
|
name: "robots",
|
|
@@ -619,7 +627,7 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
619
627
|
}
|
|
620
628
|
return {
|
|
621
629
|
Component: ()=>{
|
|
622
|
-
return /*#__PURE__*/ React.createElement(React.Fragment, null, isPage && isClientComponent && isStaticGeneration ? /*#__PURE__*/ React.createElement(StaticGenerationSearchParamsBailoutProvider, {
|
|
630
|
+
return /*#__PURE__*/ React.createElement(React.Fragment, null, isPage ? metadataOutlet : null, isPage && isClientComponent && isStaticGeneration ? /*#__PURE__*/ React.createElement(StaticGenerationSearchParamsBailoutProvider, {
|
|
623
631
|
propsForComponent: props,
|
|
624
632
|
Component: Component
|
|
625
633
|
}) : /*#__PURE__*/ React.createElement(Component, props), null);
|
|
@@ -632,7 +640,7 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
632
640
|
/**
|
|
633
641
|
* Use router state to decide at what common layout to render the page.
|
|
634
642
|
* This can either be the common layout between two pages or a specific place to start rendering from using the "refetch" marker in the tree.
|
|
635
|
-
*/ const walkTreeWithFlightRouterState = async ({ createSegmentPath , loaderTreeToFilter , parentParams , isFirst , flightRouterState , parentRendered , rscPayloadHead , injectedCSS , injectedFontPreloadTags , rootLayoutIncluded , asNotFound })=>{
|
|
643
|
+
*/ const walkTreeWithFlightRouterState = async ({ createSegmentPath , loaderTreeToFilter , parentParams , isFirst , flightRouterState , parentRendered , rscPayloadHead , injectedCSS , injectedFontPreloadTags , rootLayoutIncluded , asNotFound , metadataOutlet })=>{
|
|
636
644
|
const [segment, parallelRoutes, components] = loaderTreeToFilter;
|
|
637
645
|
const parallelRoutesKeys = Object.keys(parallelRoutes);
|
|
638
646
|
const { layout } = components;
|
|
@@ -677,7 +685,8 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
677
685
|
injectedFontPreloadTags,
|
|
678
686
|
// This is intentionally not "rootLayoutIncludedAtThisLevelOrAbove" as createComponentTree starts at the current level and does a check for "rootLayoutAtThisLevel" too.
|
|
679
687
|
rootLayoutIncluded,
|
|
680
|
-
asNotFound
|
|
688
|
+
asNotFound,
|
|
689
|
+
metadataOutlet
|
|
681
690
|
});
|
|
682
691
|
return /*#__PURE__*/ React.createElement(Component, null);
|
|
683
692
|
}),
|
|
@@ -729,7 +738,8 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
729
738
|
injectedCSS: injectedCSSWithCurrentLayout,
|
|
730
739
|
injectedFontPreloadTags: injectedFontPreloadTagsWithCurrentLayout,
|
|
731
740
|
rootLayoutIncluded: rootLayoutIncludedAtThisLevelOrAbove,
|
|
732
|
-
asNotFound
|
|
741
|
+
asNotFound,
|
|
742
|
+
metadataOutlet
|
|
733
743
|
});
|
|
734
744
|
return path.map((item)=>{
|
|
735
745
|
// we don't need to send over default routes in the flight data
|
|
@@ -748,27 +758,34 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
748
758
|
};
|
|
749
759
|
// Flight data that is going to be passed to the browser.
|
|
750
760
|
// Currently a single item array but in the future multiple patches might be combined in a single request.
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
parentParams: {},
|
|
755
|
-
flightRouterState: providedFlightRouterState,
|
|
756
|
-
isFirst: true,
|
|
757
|
-
// For flight, render metadata inside leaf page
|
|
758
|
-
rscPayloadHead: /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(MetadataTree, {
|
|
759
|
-
key: requestId,
|
|
761
|
+
let flightData = null;
|
|
762
|
+
if (!(options == null ? void 0 : options.skipFlight)) {
|
|
763
|
+
const [MetadataTree, MetadataOutlet] = createMetadataComponents({
|
|
760
764
|
tree: loaderTree,
|
|
761
|
-
pathname
|
|
765
|
+
pathname,
|
|
762
766
|
searchParams: providedSearchParams,
|
|
763
|
-
getDynamicParamFromSegment
|
|
764
|
-
appUsingSizeAdjust
|
|
765
|
-
})
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
767
|
+
getDynamicParamFromSegment,
|
|
768
|
+
appUsingSizeAdjust
|
|
769
|
+
});
|
|
770
|
+
flightData = (await walkTreeWithFlightRouterState({
|
|
771
|
+
createSegmentPath: (child)=>child,
|
|
772
|
+
loaderTreeToFilter: loaderTree,
|
|
773
|
+
parentParams: {},
|
|
774
|
+
flightRouterState: providedFlightRouterState,
|
|
775
|
+
isFirst: true,
|
|
776
|
+
// For flight, render metadata inside leaf page
|
|
777
|
+
rscPayloadHead: // Adding requestId as react key to make metadata remount for each render
|
|
778
|
+
/*#__PURE__*/ React.createElement(MetadataTree, {
|
|
779
|
+
key: requestId
|
|
780
|
+
}),
|
|
781
|
+
injectedCSS: new Set(),
|
|
782
|
+
injectedFontPreloadTags: new Set(),
|
|
783
|
+
rootLayoutIncluded: false,
|
|
784
|
+
asNotFound: pagePath === "/404" || (options == null ? void 0 : options.asNotFound),
|
|
785
|
+
metadataOutlet: /*#__PURE__*/ React.createElement(MetadataOutlet, null)
|
|
786
|
+
})).map((path)=>path.slice(1)) // remove the '' (root) segment
|
|
787
|
+
;
|
|
788
|
+
}
|
|
772
789
|
const buildIdFlightDataPair = [
|
|
773
790
|
renderOpts.buildId,
|
|
774
791
|
flightData
|
|
@@ -810,13 +827,8 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
810
827
|
getTree: ()=>createFlightRouterStateFromLoaderTree(loaderTree, getDynamicParamFromSegment, query)
|
|
811
828
|
}
|
|
812
829
|
} : {};
|
|
813
|
-
async function getNotFound(tree, injectedCSS
|
|
814
|
-
|
|
815
|
-
// For instance:
|
|
816
|
-
// pathname '/abc' will be 0 depth, means stop at the root level
|
|
817
|
-
// pathname '/abc/def' will be 1 depth, means stop at the first level
|
|
818
|
-
const depth = requestPathname.split("/").length - 2;
|
|
819
|
-
const notFound = findMatchedComponent(tree, "not-found", depth);
|
|
830
|
+
async function getNotFound(tree, injectedCSS) {
|
|
831
|
+
const notFound = findMatchedComponent(tree, "not-found");
|
|
820
832
|
const [NotFound, notFoundStyles] = notFound ? await createComponentAndStyles({
|
|
821
833
|
filePath: notFound[1],
|
|
822
834
|
getComponent: notFound[0],
|
|
@@ -849,6 +861,15 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
849
861
|
// Create full component tree from root to leaf.
|
|
850
862
|
const injectedCSS = new Set();
|
|
851
863
|
const injectedFontPreloadTags = new Set();
|
|
864
|
+
const initialTree = createFlightRouterStateFromLoaderTree(loaderTreeToRender, getDynamicParamFromSegment, query);
|
|
865
|
+
const [MetadataTree, MetadataOutlet] = createMetadataComponents({
|
|
866
|
+
tree: loaderTreeToRender,
|
|
867
|
+
errorType: props.asNotFound ? "not-found" : undefined,
|
|
868
|
+
pathname: pathname,
|
|
869
|
+
searchParams: providedSearchParams,
|
|
870
|
+
getDynamicParamFromSegment: getDynamicParamFromSegment,
|
|
871
|
+
appUsingSizeAdjust: appUsingSizeAdjust
|
|
872
|
+
});
|
|
852
873
|
const { Component: ComponentTree , styles } = await createComponentTree({
|
|
853
874
|
createSegmentPath: (child)=>child,
|
|
854
875
|
loaderTree: loaderTreeToRender,
|
|
@@ -857,26 +878,18 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
857
878
|
injectedCSS,
|
|
858
879
|
injectedFontPreloadTags,
|
|
859
880
|
rootLayoutIncluded: false,
|
|
860
|
-
asNotFound: props.asNotFound
|
|
881
|
+
asNotFound: props.asNotFound,
|
|
882
|
+
metadataOutlet: /*#__PURE__*/ React.createElement(MetadataOutlet, null)
|
|
861
883
|
});
|
|
862
|
-
const createMetadata = (errorType)=>// Adding key={requestId} to make metadata remount for each render
|
|
863
|
-
// @ts-expect-error allow to use async server component
|
|
864
|
-
/*#__PURE__*/ React.createElement(MetadataTree, {
|
|
865
|
-
key: requestId,
|
|
866
|
-
tree: loaderTreeToRender,
|
|
867
|
-
errorType: errorType,
|
|
868
|
-
pathname: pathname,
|
|
869
|
-
searchParams: providedSearchParams,
|
|
870
|
-
getDynamicParamFromSegment: getDynamicParamFromSegment,
|
|
871
|
-
appUsingSizeAdjust: appUsingSizeAdjust
|
|
872
|
-
});
|
|
873
|
-
const initialTree = createFlightRouterStateFromLoaderTree(loaderTreeToRender, getDynamicParamFromSegment, query);
|
|
874
884
|
return /*#__PURE__*/ React.createElement(React.Fragment, null, styles, /*#__PURE__*/ React.createElement(AppRouter, {
|
|
875
885
|
buildId: renderOpts.buildId,
|
|
876
886
|
assetPrefix: assetPrefix,
|
|
877
887
|
initialCanonicalUrl: pathname,
|
|
878
888
|
initialTree: initialTree,
|
|
879
|
-
initialHead:
|
|
889
|
+
initialHead: // Adding requestId as react key to make metadata remount for each render
|
|
890
|
+
/*#__PURE__*/ React.createElement(MetadataTree, {
|
|
891
|
+
key: requestId
|
|
892
|
+
}),
|
|
880
893
|
globalErrorComponent: GlobalError
|
|
881
894
|
}, /*#__PURE__*/ React.createElement(ComponentTree, null)));
|
|
882
895
|
}, ComponentMod, serverComponentsRenderOpts, serverComponentsErrorHandler, nonce);
|
|
@@ -960,9 +973,15 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
960
973
|
// Include hydration scripts in the HTML
|
|
961
974
|
bootstrapScripts: [
|
|
962
975
|
...subresourceIntegrityManifest ? buildManifest.rootMainFiles.map((src)=>({
|
|
963
|
-
src: `${assetPrefix}/_next/` + src +
|
|
976
|
+
src: `${assetPrefix}/_next/` + src + // Always include the timestamp query in development
|
|
977
|
+
// as Safari caches them during the same session, no
|
|
978
|
+
// matter what cache headers are set.
|
|
979
|
+
getAssetQueryString(true),
|
|
964
980
|
integrity: subresourceIntegrityManifest[src]
|
|
965
|
-
})) : buildManifest.rootMainFiles.map((src)=>`${assetPrefix}/_next/` + src +
|
|
981
|
+
})) : buildManifest.rootMainFiles.map((src)=>`${assetPrefix}/_next/` + src + // Always include the timestamp query in development
|
|
982
|
+
// as Safari caches them during the same session, no
|
|
983
|
+
// matter what cache headers are set.
|
|
984
|
+
getAssetQueryString(true))
|
|
966
985
|
]
|
|
967
986
|
}
|
|
968
987
|
});
|
|
@@ -1001,10 +1020,6 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
1001
1020
|
res.setHeader("Location", getURLFromRedirectError(err));
|
|
1002
1021
|
}
|
|
1003
1022
|
const is404 = res.statusCode === 404;
|
|
1004
|
-
const injectedCSS = new Set();
|
|
1005
|
-
const injectedFontPreloadTags = new Set();
|
|
1006
|
-
const [RootLayout, rootStyles] = await getRootLayout(tree, injectedCSS, injectedFontPreloadTags);
|
|
1007
|
-
const [NotFound, notFoundStyles] = await getNotFound(tree, injectedCSS, pathname);
|
|
1008
1023
|
// Preserve the existing RSC inline chunks from the page rendering.
|
|
1009
1024
|
// For 404 errors: the metadata from layout can be skipped with the error page.
|
|
1010
1025
|
// For other errors (such as redirection): it can still be re-thrown on client.
|
|
@@ -1022,22 +1037,28 @@ export async function renderToHTMLOrFlight(req, res, pagePath, query, renderOpts
|
|
|
1022
1037
|
content: "not-found"
|
|
1023
1038
|
}));
|
|
1024
1039
|
const ErrorPage = createServerComponentRenderer(async ()=>{
|
|
1025
|
-
const
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
errorType: errorType,
|
|
1040
|
+
const [MetadataTree, MetadataOutlet] = createMetadataComponents({
|
|
1041
|
+
tree,
|
|
1042
|
+
pathname,
|
|
1043
|
+
errorType,
|
|
1030
1044
|
searchParams: providedSearchParams,
|
|
1031
|
-
getDynamicParamFromSegment
|
|
1032
|
-
appUsingSizeAdjust
|
|
1045
|
+
getDynamicParamFromSegment,
|
|
1046
|
+
appUsingSizeAdjust
|
|
1047
|
+
});
|
|
1048
|
+
const head = /*#__PURE__*/ React.createElement(React.Fragment, null, /*#__PURE__*/ React.createElement(MetadataTree, {
|
|
1049
|
+
key: requestId
|
|
1033
1050
|
}), errorMeta);
|
|
1034
1051
|
const notFoundLoaderTree = is404 ? createNotFoundLoaderTree(tree) : tree;
|
|
1035
1052
|
const initialTree = createFlightRouterStateFromLoaderTree(notFoundLoaderTree, getDynamicParamFromSegment, query);
|
|
1053
|
+
const injectedCSS = new Set();
|
|
1054
|
+
const injectedFontPreloadTags = new Set();
|
|
1055
|
+
const [RootLayout, rootStyles] = await getRootLayout(tree, injectedCSS, injectedFontPreloadTags);
|
|
1056
|
+
const [NotFound, notFoundStyles] = await getNotFound(!renderOpts.dev && renderOpts.originalPathname === "/_not-found" ? notFoundLoaderTree : tree, injectedCSS);
|
|
1036
1057
|
const GlobalNotFound = NotFound || DefaultNotFound;
|
|
1037
1058
|
const ErrorLayout = RootLayout || ErrorHtml;
|
|
1038
1059
|
const notFoundElement = /*#__PURE__*/ React.createElement(ErrorLayout, {
|
|
1039
1060
|
params: {}
|
|
1040
|
-
}, rootStyles, notFoundStyles, /*#__PURE__*/ React.createElement(GlobalNotFound, null));
|
|
1061
|
+
}, /*#__PURE__*/ React.createElement(MetadataOutlet, null), rootStyles, notFoundStyles, /*#__PURE__*/ React.createElement(GlobalNotFound, null));
|
|
1041
1062
|
// For metadata notFound error there's no global not found boundary on top
|
|
1042
1063
|
// so we create a not found page with AppRouter
|
|
1043
1064
|
return /*#__PURE__*/ React.createElement(AppRouter, {
|