next 15.2.0-canary.50 → 15.2.0-canary.52
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.
Potentially problematic release.
This version of next might be problematic. Click here for more details.
- package/dist/bin/next +1 -1
- package/dist/build/index.js +2 -2
- package/dist/build/load-jsconfig.d.ts +1 -0
- package/dist/build/load-jsconfig.js +2 -1
- package/dist/build/load-jsconfig.js.map +1 -1
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack-config.d.ts +3 -1
- package/dist/build/webpack-config.js +44 -23
- package/dist/build/webpack-config.js.map +1 -1
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/components/errors/attach-hydration-error-state.js +37 -24
- package/dist/client/components/errors/attach-hydration-error-state.js.map +1 -1
- package/dist/client/components/errors/hydration-error-info.js +86 -19
- package/dist/client/components/errors/hydration-error-info.js.map +1 -1
- package/dist/client/components/is-hydration-error.d.ts +1 -0
- package/dist/client/components/is-hydration-error.js +41 -3
- package/dist/client/components/is-hydration-error.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/errors.js +1 -2
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/errors.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.d.ts +1 -56
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.js +4 -240
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.stories.js +0 -21
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.stories.js.map +1 -1
- package/dist/client/components/react-dev-overlay/hydration-diff/diff-view.d.ts +54 -0
- package/dist/client/components/react-dev-overlay/hydration-diff/diff-view.js +101 -0
- package/dist/client/components/react-dev-overlay/hydration-diff/diff-view.js.map +1 -0
- package/dist/client/components/react-dev-overlay/internal/container/Errors.js +1 -2
- package/dist/client/components/react-dev-overlay/internal/container/Errors.js.map +1 -1
- package/dist/client/components/react-dev-overlay/internal/container/RuntimeError/component-stack-pseudo-html.d.ts +2 -56
- package/dist/client/components/react-dev-overlay/internal/container/RuntimeError/component-stack-pseudo-html.js +28 -227
- package/dist/client/components/react-dev-overlay/internal/container/RuntimeError/component-stack-pseudo-html.js.map +1 -1
- package/dist/client/components/react-dev-overlay/internal/container/RuntimeError/index.js +1 -1
- package/dist/client/components/react-dev-overlay/internal/container/RuntimeError/index.js.map +1 -1
- package/dist/client/components/react-dev-overlay/internal/styles/ComponentStyles.js +3 -1
- package/dist/client/components/react-dev-overlay/internal/styles/ComponentStyles.js.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/next-server/app-page-experimental.runtime.dev.js +2 -2
- package/dist/compiled/next-server/app-page-experimental.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/app-page.runtime.dev.js +2 -2
- package/dist/compiled/next-server/app-page.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/server.runtime.prod.js +6 -6
- package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
- package/dist/esm/build/index.js +2 -2
- package/dist/esm/build/load-jsconfig.js +2 -1
- package/dist/esm/build/load-jsconfig.js.map +1 -1
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/webpack-config.js +44 -23
- package/dist/esm/build/webpack-config.js.map +1 -1
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/components/errors/attach-hydration-error-state.js +38 -25
- package/dist/esm/client/components/errors/attach-hydration-error-state.js.map +1 -1
- package/dist/esm/client/components/errors/hydration-error-info.js +87 -20
- package/dist/esm/client/components/errors/hydration-error-info.js.map +1 -1
- package/dist/esm/client/components/is-hydration-error.js +36 -2
- package/dist/esm/client/components/is-hydration-error.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/errors.js +1 -2
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/errors.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.js +3 -287
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.stories.js +0 -21
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.stories.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/hydration-diff/diff-view.js +132 -0
- package/dist/esm/client/components/react-dev-overlay/hydration-diff/diff-view.js.map +1 -0
- package/dist/esm/client/components/react-dev-overlay/internal/container/Errors.js +1 -2
- package/dist/esm/client/components/react-dev-overlay/internal/container/Errors.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/internal/container/RuntimeError/component-stack-pseudo-html.js +12 -271
- package/dist/esm/client/components/react-dev-overlay/internal/container/RuntimeError/component-stack-pseudo-html.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/internal/container/RuntimeError/index.js +1 -1
- package/dist/esm/client/components/react-dev-overlay/internal/container/RuntimeError/index.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/internal/styles/ComponentStyles.js +3 -1
- package/dist/esm/client/components/react-dev-overlay/internal/styles/ComponentStyles.js.map +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/lib/metadata/metadata.js +2 -2
- package/dist/esm/lib/metadata/metadata.js.map +1 -1
- package/dist/esm/server/config.js +1 -1
- package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/lib/metadata/metadata.js +2 -2
- package/dist/lib/metadata/metadata.js.map +1 -1
- package/dist/server/config.js +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +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 +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/metadata/metadata.tsx"],"sourcesContent":["import type { ParsedUrlQuery } from 'querystring'\nimport type { GetDynamicParamFromSegment } from '../../server/app-render/app-render'\nimport type { LoaderTree } from '../../server/lib/app-dir-module'\nimport type { CreateServerParamsForMetadata } from '../../server/request/params'\n\nimport { Suspense, cache, cloneElement } from 'react'\nimport {\n AppleWebAppMeta,\n FormatDetectionMeta,\n ItunesMeta,\n BasicMeta,\n ViewportMeta,\n VerificationMeta,\n FacebookMeta,\n} from './generate/basic'\nimport { AlternatesMetadata } from './generate/alternate'\nimport {\n OpenGraphMetadata,\n TwitterMetadata,\n AppLinksMeta,\n} from './generate/opengraph'\nimport { IconsMetadata } from './generate/icons'\nimport {\n type MetadataErrorType,\n resolveMetadata,\n resolveViewport,\n} from './resolve-metadata'\nimport { MetaFilter } from './generate/meta'\nimport type {\n ResolvedMetadata,\n ResolvedViewport,\n} from './types/metadata-interface'\nimport { isHTTPAccessFallbackError } from '../../client/components/http-access-fallback/http-access-fallback'\nimport type { MetadataContext } from './types/resolvers'\nimport type { WorkStore } from '../../server/app-render/work-async-storage.external'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n} from './metadata-constants'\nimport { AsyncMetadata } from './async-metadata'\nimport { isPostpone } from '../../server/lib/router-utils/is-postpone'\n\n// Use a promise to share the status of the metadata resolving,\n// returning two components `MetadataTree` and `MetadataOutlet`\n// `MetadataTree` is the one that will be rendered at first in the content sequence for metadata tags.\n// `MetadataOutlet` is the one that will be rendered under error boundaries for metadata resolving errors.\n// In this way we can let the metadata tags always render successfully,\n// and the error will be caught by the error boundary and trigger fallbacks.\nexport function createMetadataComponents({\n tree,\n searchParams,\n metadataContext,\n getDynamicParamFromSegment,\n appUsingSizeAdjustment,\n errorType,\n createServerParamsForMetadata,\n workStore,\n MetadataBoundary,\n ViewportBoundary,\n serveStreamingMetadata,\n}: {\n tree: LoaderTree\n searchParams: Promise<ParsedUrlQuery>\n metadataContext: MetadataContext\n getDynamicParamFromSegment: GetDynamicParamFromSegment\n appUsingSizeAdjustment: boolean\n errorType?: MetadataErrorType | 'redirect'\n createServerParamsForMetadata: CreateServerParamsForMetadata\n workStore: WorkStore\n MetadataBoundary: (props: { children: React.ReactNode }) => React.ReactNode\n ViewportBoundary: (props: { children: React.ReactNode }) => React.ReactNode\n serveStreamingMetadata: boolean\n}): {\n MetadataTree: React.ComponentType\n ViewportTree: React.ComponentType\n getMetadataReady: () => Promise<void>\n getViewportReady: () => Promise<void>\n} {\n function ViewportTree() {\n return (\n <>\n <ViewportBoundary>\n <Viewport />\n </ViewportBoundary>\n {/* This meta tag is for next/font which is still required to be blocking. */}\n {appUsingSizeAdjustment ? (\n <meta name=\"next-size-adjust\" content=\"\" />\n ) : null}\n </>\n )\n }\n\n function MetadataTree() {\n return (\n <MetadataBoundary>\n <Metadata />\n </MetadataBoundary>\n )\n }\n\n function viewport() {\n return getResolvedViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n errorType\n )\n }\n\n async function Viewport() {\n try {\n return await viewport()\n } catch (error) {\n if (!errorType && isHTTPAccessFallbackError(error)) {\n try {\n return await getNotFoundViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore\n )\n } catch {}\n }\n // We don't actually want to error in this component. We will\n // also error in the MetadataOutlet which causes the error to\n // bubble from the right position in the page to be caught by the\n // appropriate boundaries\n return null\n }\n }\n Viewport.displayName = VIEWPORT_BOUNDARY_NAME\n\n function metadata() {\n return getResolvedMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n errorType\n )\n }\n\n async function resolveFinalMetadata() {\n try {\n return await metadata()\n } catch (metadataErr) {\n if (!errorType && isHTTPAccessFallbackError(metadataErr)) {\n try {\n return await getNotFoundMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore\n )\n } catch (notFoundMetadataErr) {\n // In PPR rendering we still need to throw the postpone error.\n // If metadata is postponed, React needs to be aware of the location of error.\n if (isPostpone(notFoundMetadataErr)) {\n throw notFoundMetadataErr\n }\n }\n }\n // In PPR rendering we still need to throw the postpone error.\n // If metadata is postponed, React needs to be aware of the location of error.\n if (isPostpone(metadataErr)) {\n throw metadataErr\n }\n // We don't actually want to error in this component. We will\n // also error in the MetadataOutlet which causes the error to\n // bubble from the right position in the page to be caught by the\n // appropriate boundaries\n return null\n }\n }\n async function Metadata() {\n const promise = resolveFinalMetadata()\n if (serveStreamingMetadata) {\n return (\n <Suspense fallback={null}>\n <AsyncMetadata promise={promise} />\n </Suspense>\n )\n }\n return await promise\n }\n\n Metadata.displayName = METADATA_BOUNDARY_NAME\n\n async function getMetadataReady(): Promise<void> {\n // Only warm up metadata() call when it's blocking metadata,\n // otherwise it will be fully managed by AsyncMetadata component.\n if (!serveStreamingMetadata) {\n await metadata()\n }\n return undefined\n }\n\n async function getViewportReady(): Promise<void> {\n await viewport()\n return undefined\n }\n\n return {\n ViewportTree,\n MetadataTree,\n getViewportReady,\n getMetadataReady,\n }\n}\n\nconst getResolvedMetadata = cache(getResolvedMetadataImpl)\nasync function getResolvedMetadataImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorType?: MetadataErrorType | 'redirect'\n): Promise<React.ReactNode> {\n const errorConvention = errorType === 'redirect' ? undefined : errorType\n return renderMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n errorConvention\n )\n}\n\nconst getNotFoundMetadata = cache(getNotFoundMetadataImpl)\nasync function getNotFoundMetadataImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore\n): Promise<React.ReactNode> {\n const notFoundErrorConvention = 'not-found'\n return renderMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n notFoundErrorConvention\n )\n}\n\nconst getResolvedViewport = cache(getResolvedViewportImpl)\nasync function getResolvedViewportImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorType?: MetadataErrorType | 'redirect'\n): Promise<React.ReactNode> {\n const errorConvention = errorType === 'redirect' ? undefined : errorType\n return renderViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n errorConvention\n )\n}\n\nconst getNotFoundViewport = cache(getNotFoundViewportImpl)\nasync function getNotFoundViewportImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore\n): Promise<React.ReactNode> {\n const notFoundErrorConvention = 'not-found'\n return renderViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n notFoundErrorConvention\n )\n}\n\nasync function renderMetadata(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorConvention?: MetadataErrorType\n) {\n const resolvedMetadata = await resolveMetadata(\n tree,\n searchParams,\n errorConvention,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n metadataContext\n )\n const elements: Array<React.ReactNode> =\n createMetadataElements(resolvedMetadata)\n return (\n <>\n {elements.map((el, index) => {\n return cloneElement(el as React.ReactElement, { key: index })\n })}\n </>\n )\n}\n\nasync function renderViewport(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorConvention?: MetadataErrorType\n) {\n const notFoundResolvedViewport = await resolveViewport(\n tree,\n searchParams,\n errorConvention,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore\n )\n\n const elements: Array<React.ReactNode> = createViewportElements(\n notFoundResolvedViewport\n )\n return (\n <>\n {elements.map((el, index) => {\n return cloneElement(el as React.ReactElement, { key: index })\n })}\n </>\n )\n}\n\nfunction createMetadataElements(metadata: ResolvedMetadata) {\n return MetaFilter([\n BasicMeta({ metadata }),\n AlternatesMetadata({ alternates: metadata.alternates }),\n ItunesMeta({ itunes: metadata.itunes }),\n FacebookMeta({ facebook: metadata.facebook }),\n FormatDetectionMeta({ formatDetection: metadata.formatDetection }),\n VerificationMeta({ verification: metadata.verification }),\n AppleWebAppMeta({ appleWebApp: metadata.appleWebApp }),\n OpenGraphMetadata({ openGraph: metadata.openGraph }),\n TwitterMetadata({ twitter: metadata.twitter }),\n AppLinksMeta({ appLinks: metadata.appLinks }),\n IconsMetadata({ icons: metadata.icons }),\n ])\n}\n\nfunction createViewportElements(viewport: ResolvedViewport) {\n return MetaFilter([ViewportMeta({ viewport: viewport })])\n}\n"],"names":["Suspense","cache","cloneElement","AppleWebAppMeta","FormatDetectionMeta","ItunesMeta","BasicMeta","ViewportMeta","VerificationMeta","FacebookMeta","AlternatesMetadata","OpenGraphMetadata","TwitterMetadata","AppLinksMeta","IconsMetadata","resolveMetadata","resolveViewport","MetaFilter","isHTTPAccessFallbackError","METADATA_BOUNDARY_NAME","VIEWPORT_BOUNDARY_NAME","AsyncMetadata","isPostpone","createMetadataComponents","tree","searchParams","metadataContext","getDynamicParamFromSegment","appUsingSizeAdjustment","errorType","createServerParamsForMetadata","workStore","MetadataBoundary","ViewportBoundary","serveStreamingMetadata","ViewportTree","Viewport","meta","name","content","MetadataTree","Metadata","viewport","getResolvedViewport","error","getNotFoundViewport","displayName","metadata","getResolvedMetadata","resolveFinalMetadata","metadataErr","getNotFoundMetadata","notFoundMetadataErr","promise","fallback","getMetadataReady","undefined","getViewportReady","getResolvedMetadataImpl","errorConvention","renderMetadata","getNotFoundMetadataImpl","notFoundErrorConvention","getResolvedViewportImpl","renderViewport","getNotFoundViewportImpl","resolvedMetadata","elements","createMetadataElements","map","el","index","key","notFoundResolvedViewport","createViewportElements","alternates","itunes","facebook","formatDetection","verification","appleWebApp","openGraph","twitter","appLinks","icons"],"mappings":";AAKA,SAASA,QAAQ,EAAEC,KAAK,EAAEC,YAAY,QAAQ,QAAO;AACrD,SACEC,eAAe,EACfC,mBAAmB,EACnBC,UAAU,EACVC,SAAS,EACTC,YAAY,EACZC,gBAAgB,EAChBC,YAAY,QACP,mBAAkB;AACzB,SAASC,kBAAkB,QAAQ,uBAAsB;AACzD,SACEC,iBAAiB,EACjBC,eAAe,EACfC,YAAY,QACP,uBAAsB;AAC7B,SAASC,aAAa,QAAQ,mBAAkB;AAChD,SAEEC,eAAe,EACfC,eAAe,QACV,qBAAoB;AAC3B,SAASC,UAAU,QAAQ,kBAAiB;AAK5C,SAASC,yBAAyB,QAAQ,oEAAmE;AAG7G,SACEC,sBAAsB,EACtBC,sBAAsB,QACjB,uBAAsB;AAC7B,SAASC,aAAa,QAAQ,mBAAkB;AAChD,SAASC,UAAU,QAAQ,4CAA2C;AAEtE,+DAA+D;AAC/D,+DAA+D;AAC/D,sGAAsG;AACtG,0GAA0G;AAC1G,uEAAuE;AACvE,4EAA4E;AAC5E,OAAO,SAASC,yBAAyB,EACvCC,IAAI,EACJC,YAAY,EACZC,eAAe,EACfC,0BAA0B,EAC1BC,sBAAsB,EACtBC,SAAS,EACTC,6BAA6B,EAC7BC,SAAS,EACTC,gBAAgB,EAChBC,gBAAgB,EAChBC,sBAAsB,EAavB;IAMC,SAASC;QACP,qBACE;;8BACE,KAACF;8BACC,cAAA,KAACG;;gBAGFR,uCACC,KAACS;oBAAKC,MAAK;oBAAmBC,SAAQ;qBACpC;;;IAGV;IAEA,SAASC;QACP,qBACE,KAACR;sBACC,cAAA,KAACS;;IAGP;IAEA,SAASC;QACP,OAAOC,oBACLnB,MACAC,cACAE,4BACAG,+BACAC,WACAF;IAEJ;IAEA,eAAeO;QACb,IAAI;YACF,OAAO,MAAMM;QACf,EAAE,OAAOE,OAAO;YACd,IAAI,CAACf,aAAaX,0BAA0B0B,QAAQ;gBAClD,IAAI;oBACF,OAAO,MAAMC,oBACXrB,MACAC,cACAE,4BACAG,+BACAC;gBAEJ,EAAE,OAAM,CAAC;YACX;YACA,6DAA6D;YAC7D,6DAA6D;YAC7D,iEAAiE;YACjE,yBAAyB;YACzB,OAAO;QACT;IACF;IACAK,SAASU,WAAW,GAAG1B;IAEvB,SAAS2B;QACP,OAAOC,oBACLxB,MACAC,cACAE,4BACAD,iBACAI,+BACAC,WACAF;IAEJ;IAEA,eAAeoB;QACb,IAAI;YACF,OAAO,MAAMF;QACf,EAAE,OAAOG,aAAa;YACpB,IAAI,CAACrB,aAAaX,0BAA0BgC,cAAc;gBACxD,IAAI;oBACF,OAAO,MAAMC,oBACX3B,MACAC,cACAE,4BACAD,iBACAI,+BACAC;gBAEJ,EAAE,OAAOqB,qBAAqB;oBAC5B,8DAA8D;oBAC9D,8EAA8E;oBAC9E,IAAI9B,WAAW8B,sBAAsB;wBACnC,MAAMA;oBACR;gBACF;YACF;YACA,8DAA8D;YAC9D,8EAA8E;YAC9E,IAAI9B,WAAW4B,cAAc;gBAC3B,MAAMA;YACR;YACA,6DAA6D;YAC7D,6DAA6D;YAC7D,iEAAiE;YACjE,yBAAyB;YACzB,OAAO;QACT;IACF;IACA,eAAeT;QACb,MAAMY,UAAUJ;QAChB,IAAIf,wBAAwB;YAC1B,qBACE,KAAClC;gBAASsD,UAAU;0BAClB,cAAA,KAACjC;oBAAcgC,SAASA;;;QAG9B;QACA,OAAO,MAAMA;IACf;IAEAZ,SAASK,WAAW,GAAG3B;IAEvB,eAAeoC;QACb,4DAA4D;QAC5D,iEAAiE;QACjE,IAAI,CAACrB,wBAAwB;YAC3B,MAAMa;QACR;QACA,OAAOS;IACT;IAEA,eAAeC;QACb,MAAMf;QACN,OAAOc;IACT;IAEA,OAAO;QACLrB;QACAK;QACAiB;QACAF;IACF;AACF;AAEA,MAAMP,sBAAsB/C,MAAMyD;AAClC,eAAeA,wBACblC,IAAgB,EAChBC,YAAqC,EACrCE,0BAAsD,EACtDD,eAAgC,EAChCI,6BAA4D,EAC5DC,SAAoB,EACpBF,SAA0C;IAE1C,MAAM8B,kBAAkB9B,cAAc,aAAa2B,YAAY3B;IAC/D,OAAO+B,eACLpC,MACAC,cACAE,4BACAD,iBACAI,+BACAC,WACA4B;AAEJ;AAEA,MAAMR,sBAAsBlD,MAAM4D;AAClC,eAAeA,wBACbrC,IAAgB,EAChBC,YAAqC,EACrCE,0BAAsD,EACtDD,eAAgC,EAChCI,6BAA4D,EAC5DC,SAAoB;IAEpB,MAAM+B,0BAA0B;IAChC,OAAOF,eACLpC,MACAC,cACAE,4BACAD,iBACAI,+BACAC,WACA+B;AAEJ;AAEA,MAAMnB,sBAAsB1C,MAAM8D;AAClC,eAAeA,wBACbvC,IAAgB,EAChBC,YAAqC,EACrCE,0BAAsD,EACtDG,6BAA4D,EAC5DC,SAAoB,EACpBF,SAA0C;IAE1C,MAAM8B,kBAAkB9B,cAAc,aAAa2B,YAAY3B;IAC/D,OAAOmC,eACLxC,MACAC,cACAE,4BACAG,+BACAC,WACA4B;AAEJ;AAEA,MAAMd,sBAAsB5C,MAAMgE;AAClC,eAAeA,wBACbzC,IAAgB,EAChBC,YAAqC,EACrCE,0BAAsD,EACtDG,6BAA4D,EAC5DC,SAAoB;IAEpB,MAAM+B,0BAA0B;IAChC,OAAOE,eACLxC,MACAC,cACAE,4BACAG,+BACAC,WACA+B;AAEJ;AAEA,eAAeF,eACbpC,IAAgB,EAChBC,YAAqC,EACrCE,0BAAsD,EACtDD,eAAgC,EAChCI,6BAA4D,EAC5DC,SAAoB,EACpB4B,eAAmC;IAEnC,MAAMO,mBAAmB,MAAMnD,gBAC7BS,MACAC,cACAkC,iBACAhC,4BACAG,+BACAC,WACAL;IAEF,MAAMyC,WACJC,uBAAuBF;IACzB,qBACE;kBACGC,SAASE,GAAG,CAAC,CAACC,IAAIC;YACjB,qBAAOrE,aAAaoE,IAA0B;gBAAEE,KAAKD;YAAM;QAC7D;;AAGN;AAEA,eAAeP,eACbxC,IAAgB,EAChBC,YAAqC,EACrCE,0BAAsD,EACtDG,6BAA4D,EAC5DC,SAAoB,EACpB4B,eAAmC;IAEnC,MAAMc,2BAA2B,MAAMzD,gBACrCQ,MACAC,cACAkC,iBACAhC,4BACAG,+BACAC;IAGF,MAAMoC,WAAmCO,uBACvCD;IAEF,qBACE;kBACGN,SAASE,GAAG,CAAC,CAACC,IAAIC;YACjB,qBAAOrE,aAAaoE,IAA0B;gBAAEE,KAAKD;YAAM;QAC7D;;AAGN;AAEA,SAASH,uBAAuBrB,QAA0B;IACxD,OAAO9B,WAAW;QAChBX,UAAU;YAAEyC;QAAS;QACrBrC,mBAAmB;YAAEiE,YAAY5B,SAAS4B,UAAU;QAAC;QACrDtE,WAAW;YAAEuE,QAAQ7B,SAAS6B,MAAM;QAAC;QACrCnE,aAAa;YAAEoE,UAAU9B,SAAS8B,QAAQ;QAAC;QAC3CzE,oBAAoB;YAAE0E,iBAAiB/B,SAAS+B,eAAe;QAAC;QAChEtE,iBAAiB;YAAEuE,cAAchC,SAASgC,YAAY;QAAC;QACvD5E,gBAAgB;YAAE6E,aAAajC,SAASiC,WAAW;QAAC;QACpDrE,kBAAkB;YAAEsE,WAAWlC,SAASkC,SAAS;QAAC;QAClDrE,gBAAgB;YAAEsE,SAASnC,SAASmC,OAAO;QAAC;QAC5CrE,aAAa;YAAEsE,UAAUpC,SAASoC,QAAQ;QAAC;QAC3CrE,cAAc;YAAEsE,OAAOrC,SAASqC,KAAK;QAAC;KACvC;AACH;AAEA,SAASV,uBAAuBhC,QAA0B;IACxD,OAAOzB,WAAW;QAACV,aAAa;YAAEmC,UAAUA;QAAS;KAAG;AAC1D"}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/metadata/metadata.tsx"],"sourcesContent":["import type { ParsedUrlQuery } from 'querystring'\nimport type { GetDynamicParamFromSegment } from '../../server/app-render/app-render'\nimport type { LoaderTree } from '../../server/lib/app-dir-module'\nimport type { CreateServerParamsForMetadata } from '../../server/request/params'\n\nimport { Suspense, cache, cloneElement } from 'react'\nimport {\n AppleWebAppMeta,\n FormatDetectionMeta,\n ItunesMeta,\n BasicMeta,\n ViewportMeta,\n VerificationMeta,\n FacebookMeta,\n} from './generate/basic'\nimport { AlternatesMetadata } from './generate/alternate'\nimport {\n OpenGraphMetadata,\n TwitterMetadata,\n AppLinksMeta,\n} from './generate/opengraph'\nimport { IconsMetadata } from './generate/icons'\nimport {\n type MetadataErrorType,\n resolveMetadata,\n resolveViewport,\n} from './resolve-metadata'\nimport { MetaFilter } from './generate/meta'\nimport type {\n ResolvedMetadata,\n ResolvedViewport,\n} from './types/metadata-interface'\nimport { isHTTPAccessFallbackError } from '../../client/components/http-access-fallback/http-access-fallback'\nimport type { MetadataContext } from './types/resolvers'\nimport type { WorkStore } from '../../server/app-render/work-async-storage.external'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n} from './metadata-constants'\nimport { AsyncMetadata } from './async-metadata'\nimport { isPostpone } from '../../server/lib/router-utils/is-postpone'\n\n// Use a promise to share the status of the metadata resolving,\n// returning two components `MetadataTree` and `MetadataOutlet`\n// `MetadataTree` is the one that will be rendered at first in the content sequence for metadata tags.\n// `MetadataOutlet` is the one that will be rendered under error boundaries for metadata resolving errors.\n// In this way we can let the metadata tags always render successfully,\n// and the error will be caught by the error boundary and trigger fallbacks.\nexport function createMetadataComponents({\n tree,\n searchParams,\n metadataContext,\n getDynamicParamFromSegment,\n appUsingSizeAdjustment,\n errorType,\n createServerParamsForMetadata,\n workStore,\n MetadataBoundary,\n ViewportBoundary,\n serveStreamingMetadata,\n}: {\n tree: LoaderTree\n searchParams: Promise<ParsedUrlQuery>\n metadataContext: MetadataContext\n getDynamicParamFromSegment: GetDynamicParamFromSegment\n appUsingSizeAdjustment: boolean\n errorType?: MetadataErrorType | 'redirect'\n createServerParamsForMetadata: CreateServerParamsForMetadata\n workStore: WorkStore\n MetadataBoundary: (props: { children: React.ReactNode }) => React.ReactNode\n ViewportBoundary: (props: { children: React.ReactNode }) => React.ReactNode\n serveStreamingMetadata: boolean\n}): {\n MetadataTree: React.ComponentType\n ViewportTree: React.ComponentType\n getMetadataReady: () => Promise<void>\n getViewportReady: () => Promise<void>\n} {\n function ViewportTree() {\n return (\n <>\n <ViewportBoundary>\n <Viewport />\n </ViewportBoundary>\n {/* This meta tag is for next/font which is still required to be blocking. */}\n {appUsingSizeAdjustment ? (\n <meta name=\"next-size-adjust\" content=\"\" />\n ) : null}\n </>\n )\n }\n\n function MetadataTree() {\n return (\n <MetadataBoundary>\n <Metadata />\n </MetadataBoundary>\n )\n }\n\n function viewport() {\n return getResolvedViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n errorType\n )\n }\n\n async function Viewport() {\n try {\n return await viewport()\n } catch (error) {\n if (!errorType && isHTTPAccessFallbackError(error)) {\n try {\n return await getNotFoundViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore\n )\n } catch {}\n }\n // We don't actually want to error in this component. We will\n // also error in the MetadataOutlet which causes the error to\n // bubble from the right position in the page to be caught by the\n // appropriate boundaries\n return null\n }\n }\n Viewport.displayName = VIEWPORT_BOUNDARY_NAME\n\n function metadata() {\n return getResolvedMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n errorType\n )\n }\n\n async function resolveFinalMetadata() {\n try {\n return await metadata()\n } catch (metadataErr) {\n if (!errorType && isHTTPAccessFallbackError(metadataErr)) {\n try {\n return await getNotFoundMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore\n )\n } catch (notFoundMetadataErr) {\n // In PPR rendering we still need to throw the postpone error.\n // If metadata is postponed, React needs to be aware of the location of error.\n if (serveStreamingMetadata && isPostpone(notFoundMetadataErr)) {\n throw notFoundMetadataErr\n }\n }\n }\n // In PPR rendering we still need to throw the postpone error.\n // If metadata is postponed, React needs to be aware of the location of error.\n if (serveStreamingMetadata && isPostpone(metadataErr)) {\n throw metadataErr\n }\n // We don't actually want to error in this component. We will\n // also error in the MetadataOutlet which causes the error to\n // bubble from the right position in the page to be caught by the\n // appropriate boundaries\n return null\n }\n }\n async function Metadata() {\n const promise = resolveFinalMetadata()\n if (serveStreamingMetadata) {\n return (\n <Suspense fallback={null}>\n <AsyncMetadata promise={promise} />\n </Suspense>\n )\n }\n return await promise\n }\n\n Metadata.displayName = METADATA_BOUNDARY_NAME\n\n async function getMetadataReady(): Promise<void> {\n // Only warm up metadata() call when it's blocking metadata,\n // otherwise it will be fully managed by AsyncMetadata component.\n if (!serveStreamingMetadata) {\n await metadata()\n }\n return undefined\n }\n\n async function getViewportReady(): Promise<void> {\n await viewport()\n return undefined\n }\n\n return {\n ViewportTree,\n MetadataTree,\n getViewportReady,\n getMetadataReady,\n }\n}\n\nconst getResolvedMetadata = cache(getResolvedMetadataImpl)\nasync function getResolvedMetadataImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorType?: MetadataErrorType | 'redirect'\n): Promise<React.ReactNode> {\n const errorConvention = errorType === 'redirect' ? undefined : errorType\n return renderMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n errorConvention\n )\n}\n\nconst getNotFoundMetadata = cache(getNotFoundMetadataImpl)\nasync function getNotFoundMetadataImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore\n): Promise<React.ReactNode> {\n const notFoundErrorConvention = 'not-found'\n return renderMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n notFoundErrorConvention\n )\n}\n\nconst getResolvedViewport = cache(getResolvedViewportImpl)\nasync function getResolvedViewportImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorType?: MetadataErrorType | 'redirect'\n): Promise<React.ReactNode> {\n const errorConvention = errorType === 'redirect' ? undefined : errorType\n return renderViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n errorConvention\n )\n}\n\nconst getNotFoundViewport = cache(getNotFoundViewportImpl)\nasync function getNotFoundViewportImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore\n): Promise<React.ReactNode> {\n const notFoundErrorConvention = 'not-found'\n return renderViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n notFoundErrorConvention\n )\n}\n\nasync function renderMetadata(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorConvention?: MetadataErrorType\n) {\n const resolvedMetadata = await resolveMetadata(\n tree,\n searchParams,\n errorConvention,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n metadataContext\n )\n const elements: Array<React.ReactNode> =\n createMetadataElements(resolvedMetadata)\n return (\n <>\n {elements.map((el, index) => {\n return cloneElement(el as React.ReactElement, { key: index })\n })}\n </>\n )\n}\n\nasync function renderViewport(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorConvention?: MetadataErrorType\n) {\n const notFoundResolvedViewport = await resolveViewport(\n tree,\n searchParams,\n errorConvention,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore\n )\n\n const elements: Array<React.ReactNode> = createViewportElements(\n notFoundResolvedViewport\n )\n return (\n <>\n {elements.map((el, index) => {\n return cloneElement(el as React.ReactElement, { key: index })\n })}\n </>\n )\n}\n\nfunction createMetadataElements(metadata: ResolvedMetadata) {\n return MetaFilter([\n BasicMeta({ metadata }),\n AlternatesMetadata({ alternates: metadata.alternates }),\n ItunesMeta({ itunes: metadata.itunes }),\n FacebookMeta({ facebook: metadata.facebook }),\n FormatDetectionMeta({ formatDetection: metadata.formatDetection }),\n VerificationMeta({ verification: metadata.verification }),\n AppleWebAppMeta({ appleWebApp: metadata.appleWebApp }),\n OpenGraphMetadata({ openGraph: metadata.openGraph }),\n TwitterMetadata({ twitter: metadata.twitter }),\n AppLinksMeta({ appLinks: metadata.appLinks }),\n IconsMetadata({ icons: metadata.icons }),\n ])\n}\n\nfunction createViewportElements(viewport: ResolvedViewport) {\n return MetaFilter([ViewportMeta({ viewport: viewport })])\n}\n"],"names":["Suspense","cache","cloneElement","AppleWebAppMeta","FormatDetectionMeta","ItunesMeta","BasicMeta","ViewportMeta","VerificationMeta","FacebookMeta","AlternatesMetadata","OpenGraphMetadata","TwitterMetadata","AppLinksMeta","IconsMetadata","resolveMetadata","resolveViewport","MetaFilter","isHTTPAccessFallbackError","METADATA_BOUNDARY_NAME","VIEWPORT_BOUNDARY_NAME","AsyncMetadata","isPostpone","createMetadataComponents","tree","searchParams","metadataContext","getDynamicParamFromSegment","appUsingSizeAdjustment","errorType","createServerParamsForMetadata","workStore","MetadataBoundary","ViewportBoundary","serveStreamingMetadata","ViewportTree","Viewport","meta","name","content","MetadataTree","Metadata","viewport","getResolvedViewport","error","getNotFoundViewport","displayName","metadata","getResolvedMetadata","resolveFinalMetadata","metadataErr","getNotFoundMetadata","notFoundMetadataErr","promise","fallback","getMetadataReady","undefined","getViewportReady","getResolvedMetadataImpl","errorConvention","renderMetadata","getNotFoundMetadataImpl","notFoundErrorConvention","getResolvedViewportImpl","renderViewport","getNotFoundViewportImpl","resolvedMetadata","elements","createMetadataElements","map","el","index","key","notFoundResolvedViewport","createViewportElements","alternates","itunes","facebook","formatDetection","verification","appleWebApp","openGraph","twitter","appLinks","icons"],"mappings":"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"}
|
|
@@ -177,7 +177,7 @@ function assignDefaults(dir, userConfig, silent) {
|
|
|
177
177
|
enumerable: false
|
|
178
178
|
});
|
|
179
179
|
}
|
|
180
|
-
if (!((_process_env___NEXT_VERSION = "15.2.0-canary.
|
|
180
|
+
if (!((_process_env___NEXT_VERSION = "15.2.0-canary.52") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV) {
|
|
181
181
|
var _result_experimental7, _result_experimental8, _result_experimental_turbo3, _result_experimental9;
|
|
182
182
|
// Prevents usage of certain experimental features outside of canary
|
|
183
183
|
if ((_result_experimental7 = result.experimental) == null ? void 0 : _result_experimental7.ppr) {
|
|
@@ -80,7 +80,7 @@ export async function createHotReloaderTurbopack(opts, serverFields, distDir, re
|
|
|
80
80
|
}
|
|
81
81
|
const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
|
|
82
82
|
const hotReloaderSpan = trace('hot-reloader', undefined, {
|
|
83
|
-
version: "15.2.0-canary.
|
|
83
|
+
version: "15.2.0-canary.52"
|
|
84
84
|
});
|
|
85
85
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
86
86
|
// of the current `next dev` invocation.
|
|
@@ -178,7 +178,7 @@ export default class HotReloaderWebpack {
|
|
|
178
178
|
this.previewProps = previewProps;
|
|
179
179
|
this.rewrites = rewrites;
|
|
180
180
|
this.hotReloaderSpan = trace('hot-reloader', undefined, {
|
|
181
|
-
version: "15.2.0-canary.
|
|
181
|
+
version: "15.2.0-canary.52"
|
|
182
182
|
});
|
|
183
183
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
184
184
|
// of the current `next dev` invocation.
|
|
@@ -4,7 +4,7 @@ import { bold, purple } from '../../lib/picocolors';
|
|
|
4
4
|
import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from '../../shared/lib/constants';
|
|
5
5
|
import loadConfig, { getConfiguredExperimentalFeatures } from '../config';
|
|
6
6
|
export function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, maxExperimentalFeatures = Infinity }) {
|
|
7
|
-
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.2.0-canary.
|
|
7
|
+
Log.bootstrap(`${bold(purple(`${Log.prefixes.ready} Next.js ${"15.2.0-canary.52"}`))}${process.env.TURBOPACK ? ' (Turbopack)' : ''}`);
|
|
8
8
|
if (appUrl) {
|
|
9
9
|
Log.bootstrap(`- Local: ${appUrl}`);
|
|
10
10
|
}
|
|
@@ -43,7 +43,7 @@ export async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup,
|
|
|
43
43
|
export async function startServer(serverOptions) {
|
|
44
44
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
|
45
45
|
let { port } = serverOptions;
|
|
46
|
-
process.title = `next-server (v${"15.2.0-canary.
|
|
46
|
+
process.title = `next-server (v${"15.2.0-canary.52"})`;
|
|
47
47
|
let handlersReady = ()=>{};
|
|
48
48
|
let handlersError = ()=>{};
|
|
49
49
|
let handlersPromise = new Promise((resolve, reject)=>{
|
|
@@ -72,14 +72,14 @@ function createMetadataComponents({ tree, searchParams, metadataContext, getDyna
|
|
|
72
72
|
} catch (notFoundMetadataErr) {
|
|
73
73
|
// In PPR rendering we still need to throw the postpone error.
|
|
74
74
|
// If metadata is postponed, React needs to be aware of the location of error.
|
|
75
|
-
if ((0, _ispostpone.isPostpone)(notFoundMetadataErr)) {
|
|
75
|
+
if (serveStreamingMetadata && (0, _ispostpone.isPostpone)(notFoundMetadataErr)) {
|
|
76
76
|
throw notFoundMetadataErr;
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
// In PPR rendering we still need to throw the postpone error.
|
|
81
81
|
// If metadata is postponed, React needs to be aware of the location of error.
|
|
82
|
-
if ((0, _ispostpone.isPostpone)(metadataErr)) {
|
|
82
|
+
if (serveStreamingMetadata && (0, _ispostpone.isPostpone)(metadataErr)) {
|
|
83
83
|
throw metadataErr;
|
|
84
84
|
}
|
|
85
85
|
// We don't actually want to error in this component. We will
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/metadata/metadata.tsx"],"sourcesContent":["import type { ParsedUrlQuery } from 'querystring'\nimport type { GetDynamicParamFromSegment } from '../../server/app-render/app-render'\nimport type { LoaderTree } from '../../server/lib/app-dir-module'\nimport type { CreateServerParamsForMetadata } from '../../server/request/params'\n\nimport { Suspense, cache, cloneElement } from 'react'\nimport {\n AppleWebAppMeta,\n FormatDetectionMeta,\n ItunesMeta,\n BasicMeta,\n ViewportMeta,\n VerificationMeta,\n FacebookMeta,\n} from './generate/basic'\nimport { AlternatesMetadata } from './generate/alternate'\nimport {\n OpenGraphMetadata,\n TwitterMetadata,\n AppLinksMeta,\n} from './generate/opengraph'\nimport { IconsMetadata } from './generate/icons'\nimport {\n type MetadataErrorType,\n resolveMetadata,\n resolveViewport,\n} from './resolve-metadata'\nimport { MetaFilter } from './generate/meta'\nimport type {\n ResolvedMetadata,\n ResolvedViewport,\n} from './types/metadata-interface'\nimport { isHTTPAccessFallbackError } from '../../client/components/http-access-fallback/http-access-fallback'\nimport type { MetadataContext } from './types/resolvers'\nimport type { WorkStore } from '../../server/app-render/work-async-storage.external'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n} from './metadata-constants'\nimport { AsyncMetadata } from './async-metadata'\nimport { isPostpone } from '../../server/lib/router-utils/is-postpone'\n\n// Use a promise to share the status of the metadata resolving,\n// returning two components `MetadataTree` and `MetadataOutlet`\n// `MetadataTree` is the one that will be rendered at first in the content sequence for metadata tags.\n// `MetadataOutlet` is the one that will be rendered under error boundaries for metadata resolving errors.\n// In this way we can let the metadata tags always render successfully,\n// and the error will be caught by the error boundary and trigger fallbacks.\nexport function createMetadataComponents({\n tree,\n searchParams,\n metadataContext,\n getDynamicParamFromSegment,\n appUsingSizeAdjustment,\n errorType,\n createServerParamsForMetadata,\n workStore,\n MetadataBoundary,\n ViewportBoundary,\n serveStreamingMetadata,\n}: {\n tree: LoaderTree\n searchParams: Promise<ParsedUrlQuery>\n metadataContext: MetadataContext\n getDynamicParamFromSegment: GetDynamicParamFromSegment\n appUsingSizeAdjustment: boolean\n errorType?: MetadataErrorType | 'redirect'\n createServerParamsForMetadata: CreateServerParamsForMetadata\n workStore: WorkStore\n MetadataBoundary: (props: { children: React.ReactNode }) => React.ReactNode\n ViewportBoundary: (props: { children: React.ReactNode }) => React.ReactNode\n serveStreamingMetadata: boolean\n}): {\n MetadataTree: React.ComponentType\n ViewportTree: React.ComponentType\n getMetadataReady: () => Promise<void>\n getViewportReady: () => Promise<void>\n} {\n function ViewportTree() {\n return (\n <>\n <ViewportBoundary>\n <Viewport />\n </ViewportBoundary>\n {/* This meta tag is for next/font which is still required to be blocking. */}\n {appUsingSizeAdjustment ? (\n <meta name=\"next-size-adjust\" content=\"\" />\n ) : null}\n </>\n )\n }\n\n function MetadataTree() {\n return (\n <MetadataBoundary>\n <Metadata />\n </MetadataBoundary>\n )\n }\n\n function viewport() {\n return getResolvedViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n errorType\n )\n }\n\n async function Viewport() {\n try {\n return await viewport()\n } catch (error) {\n if (!errorType && isHTTPAccessFallbackError(error)) {\n try {\n return await getNotFoundViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore\n )\n } catch {}\n }\n // We don't actually want to error in this component. We will\n // also error in the MetadataOutlet which causes the error to\n // bubble from the right position in the page to be caught by the\n // appropriate boundaries\n return null\n }\n }\n Viewport.displayName = VIEWPORT_BOUNDARY_NAME\n\n function metadata() {\n return getResolvedMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n errorType\n )\n }\n\n async function resolveFinalMetadata() {\n try {\n return await metadata()\n } catch (metadataErr) {\n if (!errorType && isHTTPAccessFallbackError(metadataErr)) {\n try {\n return await getNotFoundMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore\n )\n } catch (notFoundMetadataErr) {\n // In PPR rendering we still need to throw the postpone error.\n // If metadata is postponed, React needs to be aware of the location of error.\n if (isPostpone(notFoundMetadataErr)) {\n throw notFoundMetadataErr\n }\n }\n }\n // In PPR rendering we still need to throw the postpone error.\n // If metadata is postponed, React needs to be aware of the location of error.\n if (isPostpone(metadataErr)) {\n throw metadataErr\n }\n // We don't actually want to error in this component. We will\n // also error in the MetadataOutlet which causes the error to\n // bubble from the right position in the page to be caught by the\n // appropriate boundaries\n return null\n }\n }\n async function Metadata() {\n const promise = resolveFinalMetadata()\n if (serveStreamingMetadata) {\n return (\n <Suspense fallback={null}>\n <AsyncMetadata promise={promise} />\n </Suspense>\n )\n }\n return await promise\n }\n\n Metadata.displayName = METADATA_BOUNDARY_NAME\n\n async function getMetadataReady(): Promise<void> {\n // Only warm up metadata() call when it's blocking metadata,\n // otherwise it will be fully managed by AsyncMetadata component.\n if (!serveStreamingMetadata) {\n await metadata()\n }\n return undefined\n }\n\n async function getViewportReady(): Promise<void> {\n await viewport()\n return undefined\n }\n\n return {\n ViewportTree,\n MetadataTree,\n getViewportReady,\n getMetadataReady,\n }\n}\n\nconst getResolvedMetadata = cache(getResolvedMetadataImpl)\nasync function getResolvedMetadataImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorType?: MetadataErrorType | 'redirect'\n): Promise<React.ReactNode> {\n const errorConvention = errorType === 'redirect' ? undefined : errorType\n return renderMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n errorConvention\n )\n}\n\nconst getNotFoundMetadata = cache(getNotFoundMetadataImpl)\nasync function getNotFoundMetadataImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore\n): Promise<React.ReactNode> {\n const notFoundErrorConvention = 'not-found'\n return renderMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n notFoundErrorConvention\n )\n}\n\nconst getResolvedViewport = cache(getResolvedViewportImpl)\nasync function getResolvedViewportImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorType?: MetadataErrorType | 'redirect'\n): Promise<React.ReactNode> {\n const errorConvention = errorType === 'redirect' ? undefined : errorType\n return renderViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n errorConvention\n )\n}\n\nconst getNotFoundViewport = cache(getNotFoundViewportImpl)\nasync function getNotFoundViewportImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore\n): Promise<React.ReactNode> {\n const notFoundErrorConvention = 'not-found'\n return renderViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n notFoundErrorConvention\n )\n}\n\nasync function renderMetadata(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorConvention?: MetadataErrorType\n) {\n const resolvedMetadata = await resolveMetadata(\n tree,\n searchParams,\n errorConvention,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n metadataContext\n )\n const elements: Array<React.ReactNode> =\n createMetadataElements(resolvedMetadata)\n return (\n <>\n {elements.map((el, index) => {\n return cloneElement(el as React.ReactElement, { key: index })\n })}\n </>\n )\n}\n\nasync function renderViewport(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorConvention?: MetadataErrorType\n) {\n const notFoundResolvedViewport = await resolveViewport(\n tree,\n searchParams,\n errorConvention,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore\n )\n\n const elements: Array<React.ReactNode> = createViewportElements(\n notFoundResolvedViewport\n )\n return (\n <>\n {elements.map((el, index) => {\n return cloneElement(el as React.ReactElement, { key: index })\n })}\n </>\n )\n}\n\nfunction createMetadataElements(metadata: ResolvedMetadata) {\n return MetaFilter([\n BasicMeta({ metadata }),\n AlternatesMetadata({ alternates: metadata.alternates }),\n ItunesMeta({ itunes: metadata.itunes }),\n FacebookMeta({ facebook: metadata.facebook }),\n FormatDetectionMeta({ formatDetection: metadata.formatDetection }),\n VerificationMeta({ verification: metadata.verification }),\n AppleWebAppMeta({ appleWebApp: metadata.appleWebApp }),\n OpenGraphMetadata({ openGraph: metadata.openGraph }),\n TwitterMetadata({ twitter: metadata.twitter }),\n AppLinksMeta({ appLinks: metadata.appLinks }),\n IconsMetadata({ icons: metadata.icons }),\n ])\n}\n\nfunction createViewportElements(viewport: ResolvedViewport) {\n return MetaFilter([ViewportMeta({ viewport: viewport })])\n}\n"],"names":["createMetadataComponents","tree","searchParams","metadataContext","getDynamicParamFromSegment","appUsingSizeAdjustment","errorType","createServerParamsForMetadata","workStore","MetadataBoundary","ViewportBoundary","serveStreamingMetadata","ViewportTree","Viewport","meta","name","content","MetadataTree","Metadata","viewport","getResolvedViewport","error","isHTTPAccessFallbackError","getNotFoundViewport","displayName","VIEWPORT_BOUNDARY_NAME","metadata","getResolvedMetadata","resolveFinalMetadata","metadataErr","getNotFoundMetadata","notFoundMetadataErr","isPostpone","promise","Suspense","fallback","AsyncMetadata","METADATA_BOUNDARY_NAME","getMetadataReady","undefined","getViewportReady","cache","getResolvedMetadataImpl","errorConvention","renderMetadata","getNotFoundMetadataImpl","notFoundErrorConvention","getResolvedViewportImpl","renderViewport","getNotFoundViewportImpl","resolvedMetadata","resolveMetadata","elements","createMetadataElements","map","el","index","cloneElement","key","notFoundResolvedViewport","resolveViewport","createViewportElements","MetaFilter","BasicMeta","AlternatesMetadata","alternates","ItunesMeta","itunes","FacebookMeta","facebook","FormatDetectionMeta","formatDetection","VerificationMeta","verification","AppleWebAppMeta","appleWebApp","OpenGraphMetadata","openGraph","TwitterMetadata","twitter","AppLinksMeta","appLinks","IconsMetadata","icons","ViewportMeta"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/metadata/metadata.tsx"],"sourcesContent":["import type { ParsedUrlQuery } from 'querystring'\nimport type { GetDynamicParamFromSegment } from '../../server/app-render/app-render'\nimport type { LoaderTree } from '../../server/lib/app-dir-module'\nimport type { CreateServerParamsForMetadata } from '../../server/request/params'\n\nimport { Suspense, cache, cloneElement } from 'react'\nimport {\n AppleWebAppMeta,\n FormatDetectionMeta,\n ItunesMeta,\n BasicMeta,\n ViewportMeta,\n VerificationMeta,\n FacebookMeta,\n} from './generate/basic'\nimport { AlternatesMetadata } from './generate/alternate'\nimport {\n OpenGraphMetadata,\n TwitterMetadata,\n AppLinksMeta,\n} from './generate/opengraph'\nimport { IconsMetadata } from './generate/icons'\nimport {\n type MetadataErrorType,\n resolveMetadata,\n resolveViewport,\n} from './resolve-metadata'\nimport { MetaFilter } from './generate/meta'\nimport type {\n ResolvedMetadata,\n ResolvedViewport,\n} from './types/metadata-interface'\nimport { isHTTPAccessFallbackError } from '../../client/components/http-access-fallback/http-access-fallback'\nimport type { MetadataContext } from './types/resolvers'\nimport type { WorkStore } from '../../server/app-render/work-async-storage.external'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n} from './metadata-constants'\nimport { AsyncMetadata } from './async-metadata'\nimport { isPostpone } from '../../server/lib/router-utils/is-postpone'\n\n// Use a promise to share the status of the metadata resolving,\n// returning two components `MetadataTree` and `MetadataOutlet`\n// `MetadataTree` is the one that will be rendered at first in the content sequence for metadata tags.\n// `MetadataOutlet` is the one that will be rendered under error boundaries for metadata resolving errors.\n// In this way we can let the metadata tags always render successfully,\n// and the error will be caught by the error boundary and trigger fallbacks.\nexport function createMetadataComponents({\n tree,\n searchParams,\n metadataContext,\n getDynamicParamFromSegment,\n appUsingSizeAdjustment,\n errorType,\n createServerParamsForMetadata,\n workStore,\n MetadataBoundary,\n ViewportBoundary,\n serveStreamingMetadata,\n}: {\n tree: LoaderTree\n searchParams: Promise<ParsedUrlQuery>\n metadataContext: MetadataContext\n getDynamicParamFromSegment: GetDynamicParamFromSegment\n appUsingSizeAdjustment: boolean\n errorType?: MetadataErrorType | 'redirect'\n createServerParamsForMetadata: CreateServerParamsForMetadata\n workStore: WorkStore\n MetadataBoundary: (props: { children: React.ReactNode }) => React.ReactNode\n ViewportBoundary: (props: { children: React.ReactNode }) => React.ReactNode\n serveStreamingMetadata: boolean\n}): {\n MetadataTree: React.ComponentType\n ViewportTree: React.ComponentType\n getMetadataReady: () => Promise<void>\n getViewportReady: () => Promise<void>\n} {\n function ViewportTree() {\n return (\n <>\n <ViewportBoundary>\n <Viewport />\n </ViewportBoundary>\n {/* This meta tag is for next/font which is still required to be blocking. */}\n {appUsingSizeAdjustment ? (\n <meta name=\"next-size-adjust\" content=\"\" />\n ) : null}\n </>\n )\n }\n\n function MetadataTree() {\n return (\n <MetadataBoundary>\n <Metadata />\n </MetadataBoundary>\n )\n }\n\n function viewport() {\n return getResolvedViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n errorType\n )\n }\n\n async function Viewport() {\n try {\n return await viewport()\n } catch (error) {\n if (!errorType && isHTTPAccessFallbackError(error)) {\n try {\n return await getNotFoundViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore\n )\n } catch {}\n }\n // We don't actually want to error in this component. We will\n // also error in the MetadataOutlet which causes the error to\n // bubble from the right position in the page to be caught by the\n // appropriate boundaries\n return null\n }\n }\n Viewport.displayName = VIEWPORT_BOUNDARY_NAME\n\n function metadata() {\n return getResolvedMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n errorType\n )\n }\n\n async function resolveFinalMetadata() {\n try {\n return await metadata()\n } catch (metadataErr) {\n if (!errorType && isHTTPAccessFallbackError(metadataErr)) {\n try {\n return await getNotFoundMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore\n )\n } catch (notFoundMetadataErr) {\n // In PPR rendering we still need to throw the postpone error.\n // If metadata is postponed, React needs to be aware of the location of error.\n if (serveStreamingMetadata && isPostpone(notFoundMetadataErr)) {\n throw notFoundMetadataErr\n }\n }\n }\n // In PPR rendering we still need to throw the postpone error.\n // If metadata is postponed, React needs to be aware of the location of error.\n if (serveStreamingMetadata && isPostpone(metadataErr)) {\n throw metadataErr\n }\n // We don't actually want to error in this component. We will\n // also error in the MetadataOutlet which causes the error to\n // bubble from the right position in the page to be caught by the\n // appropriate boundaries\n return null\n }\n }\n async function Metadata() {\n const promise = resolveFinalMetadata()\n if (serveStreamingMetadata) {\n return (\n <Suspense fallback={null}>\n <AsyncMetadata promise={promise} />\n </Suspense>\n )\n }\n return await promise\n }\n\n Metadata.displayName = METADATA_BOUNDARY_NAME\n\n async function getMetadataReady(): Promise<void> {\n // Only warm up metadata() call when it's blocking metadata,\n // otherwise it will be fully managed by AsyncMetadata component.\n if (!serveStreamingMetadata) {\n await metadata()\n }\n return undefined\n }\n\n async function getViewportReady(): Promise<void> {\n await viewport()\n return undefined\n }\n\n return {\n ViewportTree,\n MetadataTree,\n getViewportReady,\n getMetadataReady,\n }\n}\n\nconst getResolvedMetadata = cache(getResolvedMetadataImpl)\nasync function getResolvedMetadataImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorType?: MetadataErrorType | 'redirect'\n): Promise<React.ReactNode> {\n const errorConvention = errorType === 'redirect' ? undefined : errorType\n return renderMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n errorConvention\n )\n}\n\nconst getNotFoundMetadata = cache(getNotFoundMetadataImpl)\nasync function getNotFoundMetadataImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore\n): Promise<React.ReactNode> {\n const notFoundErrorConvention = 'not-found'\n return renderMetadata(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n metadataContext,\n createServerParamsForMetadata,\n workStore,\n notFoundErrorConvention\n )\n}\n\nconst getResolvedViewport = cache(getResolvedViewportImpl)\nasync function getResolvedViewportImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorType?: MetadataErrorType | 'redirect'\n): Promise<React.ReactNode> {\n const errorConvention = errorType === 'redirect' ? undefined : errorType\n return renderViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n errorConvention\n )\n}\n\nconst getNotFoundViewport = cache(getNotFoundViewportImpl)\nasync function getNotFoundViewportImpl(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore\n): Promise<React.ReactNode> {\n const notFoundErrorConvention = 'not-found'\n return renderViewport(\n tree,\n searchParams,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n notFoundErrorConvention\n )\n}\n\nasync function renderMetadata(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n metadataContext: MetadataContext,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorConvention?: MetadataErrorType\n) {\n const resolvedMetadata = await resolveMetadata(\n tree,\n searchParams,\n errorConvention,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore,\n metadataContext\n )\n const elements: Array<React.ReactNode> =\n createMetadataElements(resolvedMetadata)\n return (\n <>\n {elements.map((el, index) => {\n return cloneElement(el as React.ReactElement, { key: index })\n })}\n </>\n )\n}\n\nasync function renderViewport(\n tree: LoaderTree,\n searchParams: Promise<ParsedUrlQuery>,\n getDynamicParamFromSegment: GetDynamicParamFromSegment,\n createServerParamsForMetadata: CreateServerParamsForMetadata,\n workStore: WorkStore,\n errorConvention?: MetadataErrorType\n) {\n const notFoundResolvedViewport = await resolveViewport(\n tree,\n searchParams,\n errorConvention,\n getDynamicParamFromSegment,\n createServerParamsForMetadata,\n workStore\n )\n\n const elements: Array<React.ReactNode> = createViewportElements(\n notFoundResolvedViewport\n )\n return (\n <>\n {elements.map((el, index) => {\n return cloneElement(el as React.ReactElement, { key: index })\n })}\n </>\n )\n}\n\nfunction createMetadataElements(metadata: ResolvedMetadata) {\n return MetaFilter([\n BasicMeta({ metadata }),\n AlternatesMetadata({ alternates: metadata.alternates }),\n ItunesMeta({ itunes: metadata.itunes }),\n FacebookMeta({ facebook: metadata.facebook }),\n FormatDetectionMeta({ formatDetection: metadata.formatDetection }),\n VerificationMeta({ verification: metadata.verification }),\n AppleWebAppMeta({ appleWebApp: metadata.appleWebApp }),\n OpenGraphMetadata({ openGraph: metadata.openGraph }),\n TwitterMetadata({ twitter: metadata.twitter }),\n AppLinksMeta({ appLinks: metadata.appLinks }),\n IconsMetadata({ icons: metadata.icons }),\n ])\n}\n\nfunction createViewportElements(viewport: ResolvedViewport) {\n return MetaFilter([ViewportMeta({ viewport: viewport })])\n}\n"],"names":["createMetadataComponents","tree","searchParams","metadataContext","getDynamicParamFromSegment","appUsingSizeAdjustment","errorType","createServerParamsForMetadata","workStore","MetadataBoundary","ViewportBoundary","serveStreamingMetadata","ViewportTree","Viewport","meta","name","content","MetadataTree","Metadata","viewport","getResolvedViewport","error","isHTTPAccessFallbackError","getNotFoundViewport","displayName","VIEWPORT_BOUNDARY_NAME","metadata","getResolvedMetadata","resolveFinalMetadata","metadataErr","getNotFoundMetadata","notFoundMetadataErr","isPostpone","promise","Suspense","fallback","AsyncMetadata","METADATA_BOUNDARY_NAME","getMetadataReady","undefined","getViewportReady","cache","getResolvedMetadataImpl","errorConvention","renderMetadata","getNotFoundMetadataImpl","notFoundErrorConvention","getResolvedViewportImpl","renderViewport","getNotFoundViewportImpl","resolvedMetadata","resolveMetadata","elements","createMetadataElements","map","el","index","cloneElement","key","notFoundResolvedViewport","resolveViewport","createViewportElements","MetaFilter","BasicMeta","AlternatesMetadata","alternates","ItunesMeta","itunes","FacebookMeta","facebook","FormatDetectionMeta","formatDetection","VerificationMeta","verification","AppleWebAppMeta","appleWebApp","OpenGraphMetadata","openGraph","TwitterMetadata","twitter","AppLinksMeta","appLinks","IconsMetadata","icons","ViewportMeta"],"mappings":"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"}
|
package/dist/server/config.js
CHANGED
|
@@ -256,7 +256,7 @@ function assignDefaults(dir, userConfig, silent) {
|
|
|
256
256
|
enumerable: false
|
|
257
257
|
});
|
|
258
258
|
}
|
|
259
|
-
if (!((_process_env___NEXT_VERSION = "15.2.0-canary.
|
|
259
|
+
if (!((_process_env___NEXT_VERSION = "15.2.0-canary.52") == null ? void 0 : _process_env___NEXT_VERSION.includes('canary')) && !process.env.__NEXT_TEST_MODE && !process.env.NEXT_PRIVATE_LOCAL_DEV) {
|
|
260
260
|
var _result_experimental7, _result_experimental8, _result_experimental_turbo3, _result_experimental9;
|
|
261
261
|
// Prevents usage of certain experimental features outside of canary
|
|
262
262
|
if ((_result_experimental7 = result.experimental) == null ? void 0 : _result_experimental7.ppr) {
|
|
@@ -136,7 +136,7 @@ async function createHotReloaderTurbopack(opts, serverFields, distDir, resetFetc
|
|
|
136
136
|
}
|
|
137
137
|
const hasRewrites = opts.fsChecker.rewrites.afterFiles.length > 0 || opts.fsChecker.rewrites.beforeFiles.length > 0 || opts.fsChecker.rewrites.fallback.length > 0;
|
|
138
138
|
const hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
|
|
139
|
-
version: "15.2.0-canary.
|
|
139
|
+
version: "15.2.0-canary.52"
|
|
140
140
|
});
|
|
141
141
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
142
142
|
// of the current `next dev` invocation.
|
|
@@ -254,7 +254,7 @@ class HotReloaderWebpack {
|
|
|
254
254
|
this.previewProps = previewProps;
|
|
255
255
|
this.rewrites = rewrites;
|
|
256
256
|
this.hotReloaderSpan = (0, _trace.trace)('hot-reloader', undefined, {
|
|
257
|
-
version: "15.2.0-canary.
|
|
257
|
+
version: "15.2.0-canary.52"
|
|
258
258
|
});
|
|
259
259
|
// Ensure the hotReloaderSpan is flushed immediately as it's the parentSpan for all processing
|
|
260
260
|
// of the current `next dev` invocation.
|
|
@@ -67,7 +67,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
|
67
67
|
return newObj;
|
|
68
68
|
}
|
|
69
69
|
function logStartInfo({ networkUrl, appUrl, envInfo, experimentalFeatures, maxExperimentalFeatures = Infinity }) {
|
|
70
|
-
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.2.0-canary.
|
|
70
|
+
_log.bootstrap(`${(0, _picocolors.bold)((0, _picocolors.purple)(`${_log.prefixes.ready} Next.js ${"15.2.0-canary.52"}`))}${process.env.TURBOPACK ? ' (Turbopack)' : ''}`);
|
|
71
71
|
if (appUrl) {
|
|
72
72
|
_log.bootstrap(`- Local: ${appUrl}`);
|
|
73
73
|
}
|
|
@@ -111,7 +111,7 @@ async function getRequestHandlers({ dir, port, isDev, onDevServerCleanup, server
|
|
|
111
111
|
async function startServer(serverOptions) {
|
|
112
112
|
const { dir, isDev, hostname, minimalMode, allowRetry, keepAliveTimeout, selfSignedCertificate } = serverOptions;
|
|
113
113
|
let { port } = serverOptions;
|
|
114
|
-
process.title = `next-server (v${"15.2.0-canary.
|
|
114
|
+
process.title = `next-server (v${"15.2.0-canary.52"})`;
|
|
115
115
|
let handlersReady = ()=>{};
|
|
116
116
|
let handlersError = ()=>{};
|
|
117
117
|
let handlersPromise = new Promise((resolve, reject)=>{
|
|
@@ -11,11 +11,11 @@ Object.defineProperty(exports, "eventCliSessionStopped", {
|
|
|
11
11
|
const EVENT_VERSION = 'NEXT_CLI_SESSION_STOPPED';
|
|
12
12
|
function eventCliSessionStopped(event) {
|
|
13
13
|
// This should be an invariant, if it fails our build tooling is broken.
|
|
14
|
-
if (typeof "15.2.0-canary.
|
|
14
|
+
if (typeof "15.2.0-canary.52" !== 'string') {
|
|
15
15
|
return [];
|
|
16
16
|
}
|
|
17
17
|
const payload = {
|
|
18
|
-
nextVersion: "15.2.0-canary.
|
|
18
|
+
nextVersion: "15.2.0-canary.52",
|
|
19
19
|
nodeVersion: process.version,
|
|
20
20
|
cliCommand: event.cliCommand,
|
|
21
21
|
durationMilliseconds: event.durationMilliseconds,
|
|
@@ -36,12 +36,12 @@ function hasBabelConfig(dir) {
|
|
|
36
36
|
function eventCliSession(dir, nextConfig, event) {
|
|
37
37
|
var _nextConfig_experimental_staleTimes, _nextConfig_experimental_staleTimes1, _nextConfig_experimental_reactCompiler, _nextConfig_experimental_reactCompiler1;
|
|
38
38
|
// This should be an invariant, if it fails our build tooling is broken.
|
|
39
|
-
if (typeof "15.2.0-canary.
|
|
39
|
+
if (typeof "15.2.0-canary.52" !== 'string') {
|
|
40
40
|
return [];
|
|
41
41
|
}
|
|
42
42
|
const { images, i18n } = nextConfig || {};
|
|
43
43
|
const payload = {
|
|
44
|
-
nextVersion: "15.2.0-canary.
|
|
44
|
+
nextVersion: "15.2.0-canary.52",
|
|
45
45
|
nodeVersion: process.version,
|
|
46
46
|
cliCommand: event.cliCommand,
|
|
47
47
|
isSrcDir: event.isSrcDir,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "next",
|
|
3
|
-
"version": "15.2.0-canary.
|
|
3
|
+
"version": "15.2.0-canary.52",
|
|
4
4
|
"description": "The React Framework",
|
|
5
5
|
"main": "./dist/server/next.js",
|
|
6
6
|
"license": "MIT",
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
]
|
|
101
101
|
},
|
|
102
102
|
"dependencies": {
|
|
103
|
-
"@next/env": "15.2.0-canary.
|
|
103
|
+
"@next/env": "15.2.0-canary.52",
|
|
104
104
|
"@swc/counter": "0.1.3",
|
|
105
105
|
"@swc/helpers": "0.5.15",
|
|
106
106
|
"busboy": "1.6.0",
|
|
@@ -132,14 +132,14 @@
|
|
|
132
132
|
},
|
|
133
133
|
"optionalDependencies": {
|
|
134
134
|
"sharp": "^0.33.5",
|
|
135
|
-
"@next/swc-darwin-arm64": "15.2.0-canary.
|
|
136
|
-
"@next/swc-darwin-x64": "15.2.0-canary.
|
|
137
|
-
"@next/swc-linux-arm64-gnu": "15.2.0-canary.
|
|
138
|
-
"@next/swc-linux-arm64-musl": "15.2.0-canary.
|
|
139
|
-
"@next/swc-linux-x64-gnu": "15.2.0-canary.
|
|
140
|
-
"@next/swc-linux-x64-musl": "15.2.0-canary.
|
|
141
|
-
"@next/swc-win32-arm64-msvc": "15.2.0-canary.
|
|
142
|
-
"@next/swc-win32-x64-msvc": "15.2.0-canary.
|
|
135
|
+
"@next/swc-darwin-arm64": "15.2.0-canary.52",
|
|
136
|
+
"@next/swc-darwin-x64": "15.2.0-canary.52",
|
|
137
|
+
"@next/swc-linux-arm64-gnu": "15.2.0-canary.52",
|
|
138
|
+
"@next/swc-linux-arm64-musl": "15.2.0-canary.52",
|
|
139
|
+
"@next/swc-linux-x64-gnu": "15.2.0-canary.52",
|
|
140
|
+
"@next/swc-linux-x64-musl": "15.2.0-canary.52",
|
|
141
|
+
"@next/swc-win32-arm64-msvc": "15.2.0-canary.52",
|
|
142
|
+
"@next/swc-win32-x64-msvc": "15.2.0-canary.52"
|
|
143
143
|
},
|
|
144
144
|
"devDependencies": {
|
|
145
145
|
"@ampproject/toolbox-optimizer": "2.8.3",
|
|
@@ -172,11 +172,11 @@
|
|
|
172
172
|
"@jest/types": "29.5.0",
|
|
173
173
|
"@mswjs/interceptors": "0.23.0",
|
|
174
174
|
"@napi-rs/triples": "1.2.0",
|
|
175
|
-
"@next/font": "15.2.0-canary.
|
|
176
|
-
"@next/polyfill-module": "15.2.0-canary.
|
|
177
|
-
"@next/polyfill-nomodule": "15.2.0-canary.
|
|
178
|
-
"@next/react-refresh-utils": "15.2.0-canary.
|
|
179
|
-
"@next/swc": "15.2.0-canary.
|
|
175
|
+
"@next/font": "15.2.0-canary.52",
|
|
176
|
+
"@next/polyfill-module": "15.2.0-canary.52",
|
|
177
|
+
"@next/polyfill-nomodule": "15.2.0-canary.52",
|
|
178
|
+
"@next/react-refresh-utils": "15.2.0-canary.52",
|
|
179
|
+
"@next/swc": "15.2.0-canary.52",
|
|
180
180
|
"@opentelemetry/api": "1.6.0",
|
|
181
181
|
"@playwright/test": "1.41.2",
|
|
182
182
|
"@storybook/addon-a11y": "8.5.2",
|