Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
1 line
No EOL
59 KiB
Text
1 line
No EOL
59 KiB
Text
{"version":3,"sources":["../../../src/server/app-render/create-component-tree.tsx"],"sourcesContent":["import type { ComponentType } from 'react'\nimport type {\n CacheNodeSeedData,\n LoadingModuleData,\n} from '../../shared/lib/app-router-types'\nimport type { PreloadCallbacks } from './types'\nimport {\n isClientReference,\n isUseCacheFunction,\n} from '../../lib/client-and-server-references'\nimport { getLayoutOrPageModule } from '../lib/app-dir-module'\nimport type { LoaderTree } from '../lib/app-dir-module'\nimport { interopDefault } from './interop-default'\nimport { parseLoaderTree } from '../../shared/lib/router/utils/parse-loader-tree'\nimport type { AppRenderContext, GetDynamicParamFromSegment } from './app-render'\nimport { createComponentStylesAndScripts } from './create-component-styles-and-scripts'\nimport { getLayerAssets } from './get-layer-assets'\nimport { hasLoadingComponentInTree } from './has-loading-component-in-tree'\nimport { validateRevalidate } from '../lib/patch-fetch'\nimport { PARALLEL_ROUTE_DEFAULT_PATH } from '../../client/components/builtin/default'\nimport { getTracer } from '../lib/trace/tracer'\nimport { NextNodeServerSpan } from '../lib/trace/constants'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport type { Params } from '../request/params'\nimport { workUnitAsyncStorage } from './work-unit-async-storage.external'\nimport type {\n UseCacheLayoutProps,\n UseCachePageProps,\n} from '../use-cache/use-cache-wrapper'\nimport { DEFAULT_SEGMENT_KEY } from '../../shared/lib/segment'\nimport {\n BOUNDARY_PREFIX,\n BOUNDARY_SUFFIX,\n BUILTIN_PREFIX,\n getConventionPathByType,\n isNextjsBuiltinFilePath,\n} from './segment-explorer-path'\nimport type { AppSegmentConfig } from '../../build/segment-config/app/app-segment-config'\n\n/**\n * Use the provided loader tree to create the React Component tree.\n */\nexport function createComponentTree(props: {\n loaderTree: LoaderTree\n parentParams: Params\n rootLayoutIncluded: boolean\n injectedCSS: Set<string>\n injectedJS: Set<string>\n injectedFontPreloadTags: Set<string>\n ctx: AppRenderContext\n missingSlots?: Set<string>\n preloadCallbacks: PreloadCallbacks\n authInterrupts: boolean\n MetadataOutlet: ComponentType\n}): Promise<CacheNodeSeedData> {\n return getTracer().trace(\n NextNodeServerSpan.createComponentTree,\n {\n spanName: 'build component tree',\n },\n () => createComponentTreeInternal(props, true)\n )\n}\n\nfunction errorMissingDefaultExport(\n pagePath: string,\n convention: string\n): never {\n const normalizedPagePath = pagePath === '/' ? '' : pagePath\n throw new Error(\n `The default export is not a React Component in \"${normalizedPagePath}/${convention}\"`\n )\n}\n\nconst cacheNodeKey = 'c'\n\nasync function createComponentTreeInternal(\n {\n loaderTree: tree,\n parentParams,\n rootLayoutIncluded,\n injectedCSS,\n injectedJS,\n injectedFontPreloadTags,\n ctx,\n missingSlots,\n preloadCallbacks,\n authInterrupts,\n MetadataOutlet,\n }: {\n loaderTree: LoaderTree\n parentParams: Params\n rootLayoutIncluded: boolean\n injectedCSS: Set<string>\n injectedJS: Set<string>\n injectedFontPreloadTags: Set<string>\n ctx: AppRenderContext\n missingSlots?: Set<string>\n preloadCallbacks: PreloadCallbacks\n authInterrupts: boolean\n MetadataOutlet: ComponentType | null\n },\n isRoot: boolean\n): Promise<CacheNodeSeedData> {\n const {\n renderOpts: { nextConfigOutput, experimental, cacheComponents },\n workStore,\n componentMod: {\n createElement,\n Fragment,\n SegmentViewNode,\n HTTPAccessFallbackBoundary,\n LayoutRouter,\n RenderFromTemplateContext,\n ClientPageRoot,\n ClientSegmentRoot,\n createServerSearchParamsForServerPage,\n createPrerenderSearchParamsForClientPage,\n createServerParamsForServerSegment,\n createPrerenderParamsForClientSegment,\n serverHooks: { DynamicServerError },\n Postpone,\n },\n pagePath,\n getDynamicParamFromSegment,\n isPrefetch,\n query,\n } = ctx\n\n const { page, conventionPath, segment, modules, parallelRoutes } =\n parseLoaderTree(tree)\n\n const {\n layout,\n template,\n error,\n loading,\n 'not-found': notFound,\n forbidden,\n unauthorized,\n } = modules\n\n const injectedCSSWithCurrentLayout = new Set(injectedCSS)\n const injectedJSWithCurrentLayout = new Set(injectedJS)\n const injectedFontPreloadTagsWithCurrentLayout = new Set(\n injectedFontPreloadTags\n )\n\n const layerAssets = getLayerAssets({\n preloadCallbacks,\n ctx,\n layoutOrPagePath: conventionPath,\n injectedCSS: injectedCSSWithCurrentLayout,\n injectedJS: injectedJSWithCurrentLayout,\n injectedFontPreloadTags: injectedFontPreloadTagsWithCurrentLayout,\n })\n\n const [Template, templateStyles, templateScripts] = template\n ? await createComponentStylesAndScripts({\n ctx,\n filePath: template[1],\n getComponent: template[0],\n injectedCSS: injectedCSSWithCurrentLayout,\n injectedJS: injectedJSWithCurrentLayout,\n })\n : [Fragment]\n\n const [ErrorComponent, errorStyles, errorScripts] = error\n ? await createComponentStylesAndScripts({\n ctx,\n filePath: error[1],\n getComponent: error[0],\n injectedCSS: injectedCSSWithCurrentLayout,\n injectedJS: injectedJSWithCurrentLayout,\n })\n : []\n\n const [Loading, loadingStyles, loadingScripts] = loading\n ? await createComponentStylesAndScripts({\n ctx,\n filePath: loading[1],\n getComponent: loading[0],\n injectedCSS: injectedCSSWithCurrentLayout,\n injectedJS: injectedJSWithCurrentLayout,\n })\n : []\n\n const isLayout = typeof layout !== 'undefined'\n const isPage = typeof page !== 'undefined'\n const { mod: layoutOrPageMod, modType } = await getTracer().trace(\n NextNodeServerSpan.getLayoutOrPageModule,\n {\n hideSpan: !(isLayout || isPage),\n spanName: 'resolve segment modules',\n attributes: {\n 'next.segment': segment,\n },\n },\n () => getLayoutOrPageModule(tree)\n )\n\n /**\n * Checks if the current segment is a root layout.\n */\n const rootLayoutAtThisLevel = isLayout && !rootLayoutIncluded\n /**\n * Checks if the current segment or any level above it has a root layout.\n */\n const rootLayoutIncludedAtThisLevelOrAbove =\n rootLayoutIncluded || rootLayoutAtThisLevel\n\n const [NotFound, notFoundStyles] = notFound\n ? await createComponentStylesAndScripts({\n ctx,\n filePath: notFound[1],\n getComponent: notFound[0],\n injectedCSS: injectedCSSWithCurrentLayout,\n injectedJS: injectedJSWithCurrentLayout,\n })\n : []\n\n const prefetchConfig = layoutOrPageMod\n ? (layoutOrPageMod as AppSegmentConfig).unstable_prefetch\n : undefined\n /** Whether this segment should use a runtime prefetch instead of a static prefetch. */\n const hasRuntimePrefetch = prefetchConfig?.mode === 'runtime'\n\n const [Forbidden, forbiddenStyles] =\n authInterrupts && forbidden\n ? await createComponentStylesAndScripts({\n ctx,\n filePath: forbidden[1],\n getComponent: forbidden[0],\n injectedCSS: injectedCSSWithCurrentLayout,\n injectedJS: injectedJSWithCurrentLayout,\n })\n : []\n\n const [Unauthorized, unauthorizedStyles] =\n authInterrupts && unauthorized\n ? await createComponentStylesAndScripts({\n ctx,\n filePath: unauthorized[1],\n getComponent: unauthorized[0],\n injectedCSS: injectedCSSWithCurrentLayout,\n injectedJS: injectedJSWithCurrentLayout,\n })\n : []\n\n let dynamic = layoutOrPageMod?.dynamic\n\n if (nextConfigOutput === 'export') {\n if (!dynamic || dynamic === 'auto') {\n dynamic = 'error'\n } else if (dynamic === 'force-dynamic') {\n // force-dynamic is always incompatible with 'export'. We must interrupt the build\n throw new StaticGenBailoutError(\n `Page with \\`dynamic = \"force-dynamic\"\\` couldn't be exported. \\`output: \"export\"\\` requires all pages be renderable statically because there is no runtime server to dynamically render routes in this output format. Learn more: https://nextjs.org/docs/app/building-your-application/deploying/static-exports`\n )\n }\n }\n\n if (typeof dynamic === 'string') {\n // the nested most config wins so we only force-static\n // if it's configured above any parent that configured\n // otherwise\n if (dynamic === 'error') {\n workStore.dynamicShouldError = true\n } else if (dynamic === 'force-dynamic') {\n workStore.forceDynamic = true\n\n // TODO: (PPR) remove this bailout once PPR is the default\n if (workStore.isStaticGeneration && !experimental.isRoutePPREnabled) {\n // If the postpone API isn't available, we can't postpone the render and\n // therefore we can't use the dynamic API.\n const err = new DynamicServerError(\n `Page with \\`dynamic = \"force-dynamic\"\\` won't be rendered statically.`\n )\n workStore.dynamicUsageDescription = err.message\n workStore.dynamicUsageStack = err.stack\n throw err\n }\n } else {\n workStore.dynamicShouldError = false\n workStore.forceStatic = dynamic === 'force-static'\n }\n }\n\n if (typeof layoutOrPageMod?.fetchCache === 'string') {\n workStore.fetchCache = layoutOrPageMod?.fetchCache\n }\n\n if (typeof layoutOrPageMod?.revalidate !== 'undefined') {\n validateRevalidate(layoutOrPageMod?.revalidate, workStore.route)\n }\n\n if (typeof layoutOrPageMod?.revalidate === 'number') {\n const defaultRevalidate = layoutOrPageMod.revalidate as number\n\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n if (workUnitStore.revalidate > defaultRevalidate) {\n workUnitStore.revalidate = defaultRevalidate\n }\n break\n case 'request':\n // A request store doesn't have a revalidate property.\n break\n // createComponentTree is not called for these stores:\n case 'cache':\n case 'private-cache':\n case 'prerender-client':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n if (\n !workStore.forceStatic &&\n workStore.isStaticGeneration &&\n defaultRevalidate === 0 &&\n // If the postpone API isn't available, we can't postpone the render and\n // therefore we can't use the dynamic API.\n !experimental.isRoutePPREnabled\n ) {\n const dynamicUsageDescription = `revalidate: 0 configured ${segment}`\n workStore.dynamicUsageDescription = dynamicUsageDescription\n\n throw new DynamicServerError(dynamicUsageDescription)\n }\n }\n\n const isStaticGeneration = workStore.isStaticGeneration\n\n // Assume the segment we're rendering contains only partial data if PPR is\n // enabled and this is a statically generated response. This is used by the\n // client Segment Cache after a prefetch to determine if it can skip the\n // second request to fill in the dynamic data.\n //\n // It's OK for this to be `true` when the data is actually fully static, but\n // it's not OK for this to be `false` when the data possibly contains holes.\n // Although the value here is overly pessimistic, for prefetches, it will be\n // replaced by a more specific value when the data is later processed into\n // per-segment responses (see collect-segment-data.tsx)\n //\n // For dynamic requests, this must always be `false` because dynamic responses\n // are never partial.\n const isPossiblyPartialResponse =\n isStaticGeneration && experimental.isRoutePPREnabled === true\n\n const LayoutOrPage: ComponentType<any> | undefined = layoutOrPageMod\n ? interopDefault(layoutOrPageMod)\n : undefined\n\n /**\n * The React Component to render.\n */\n let MaybeComponent = LayoutOrPage\n\n if (process.env.NODE_ENV === 'development' || isStaticGeneration) {\n const { isValidElementType } =\n require('next/dist/compiled/react-is') as typeof import('next/dist/compiled/react-is')\n if (\n typeof MaybeComponent !== 'undefined' &&\n !isValidElementType(MaybeComponent)\n ) {\n errorMissingDefaultExport(pagePath, modType ?? 'page')\n }\n\n if (\n typeof ErrorComponent !== 'undefined' &&\n !isValidElementType(ErrorComponent)\n ) {\n errorMissingDefaultExport(pagePath, 'error')\n }\n\n if (typeof Loading !== 'undefined' && !isValidElementType(Loading)) {\n errorMissingDefaultExport(pagePath, 'loading')\n }\n\n if (typeof NotFound !== 'undefined' && !isValidElementType(NotFound)) {\n errorMissingDefaultExport(pagePath, 'not-found')\n }\n\n if (typeof Forbidden !== 'undefined' && !isValidElementType(Forbidden)) {\n errorMissingDefaultExport(pagePath, 'forbidden')\n }\n\n if (\n typeof Unauthorized !== 'undefined' &&\n !isValidElementType(Unauthorized)\n ) {\n errorMissingDefaultExport(pagePath, 'unauthorized')\n }\n }\n\n // Handle dynamic segment params.\n const segmentParam = getDynamicParamFromSegment(segment)\n\n // Create object holding the parent params and current params\n let currentParams: Params = parentParams\n if (segmentParam && segmentParam.value !== null) {\n currentParams = {\n ...parentParams,\n [segmentParam.param]: segmentParam.value,\n }\n }\n\n // Resolve the segment param\n const isSegmentViewEnabled = !!ctx.renderOpts.dev\n const dir =\n (process.env.NEXT_RUNTIME === 'edge'\n ? process.env.__NEXT_EDGE_PROJECT_DIR\n : ctx.renderOpts.dir) || ''\n\n const [notFoundElement, notFoundFilePath] =\n await createBoundaryConventionElement({\n ctx,\n conventionName: 'not-found',\n Component: NotFound,\n styles: notFoundStyles,\n tree,\n })\n\n const [forbiddenElement] = await createBoundaryConventionElement({\n ctx,\n conventionName: 'forbidden',\n Component: Forbidden,\n styles: forbiddenStyles,\n tree,\n })\n\n const [unauthorizedElement] = await createBoundaryConventionElement({\n ctx,\n conventionName: 'unauthorized',\n Component: Unauthorized,\n styles: unauthorizedStyles,\n tree,\n })\n\n // TODO: Combine this `map` traversal with the loop below that turns the array\n // into an object.\n const parallelRouteMap = await Promise.all(\n Object.keys(parallelRoutes).map(\n async (\n parallelRouteKey\n ): Promise<[string, React.ReactNode, CacheNodeSeedData | null]> => {\n const isChildrenRouteKey = parallelRouteKey === 'children'\n const parallelRoute = parallelRoutes[parallelRouteKey]\n\n const notFoundComponent = isChildrenRouteKey\n ? notFoundElement\n : undefined\n\n const forbiddenComponent = isChildrenRouteKey\n ? forbiddenElement\n : undefined\n\n const unauthorizedComponent = isChildrenRouteKey\n ? unauthorizedElement\n : undefined\n\n // if we're prefetching and that there's a Loading component, we bail out\n // otherwise we keep rendering for the prefetch.\n // We also want to bail out if there's no Loading component in the tree.\n let childCacheNodeSeedData: CacheNodeSeedData | null = null\n\n if (\n // Before PPR, the way instant navigations work in Next.js is we\n // prefetch everything up to the first route segment that defines a\n // loading.tsx boundary. (We do the same if there's no loading\n // boundary in the entire tree, because we don't want to prefetch too\n // much) The rest of the tree is deferred until the actual navigation.\n // It does not take into account whether the data is dynamic — even if\n // the tree is completely static, it will still defer everything\n // inside the loading boundary.\n //\n // This behavior predates PPR and is only relevant if the\n // PPR flag is not enabled.\n isPrefetch &&\n (Loading || !hasLoadingComponentInTree(parallelRoute)) &&\n // The approach with PPR is different — loading.tsx behaves like a\n // regular Suspense boundary and has no special behavior.\n //\n // With PPR, we prefetch as deeply as possible, and only defer when\n // dynamic data is accessed. If so, we only defer the nearest parent\n // Suspense boundary of the dynamic data access, regardless of whether\n // the boundary is defined by loading.tsx or a normal <Suspense>\n // component in userspace.\n //\n // NOTE: In practice this usually means we'll end up prefetching more\n // than we were before PPR, which may or may not be considered a\n // performance regression by some apps. The plan is to address this\n // before General Availability of PPR by introducing granular\n // per-segment fetching, so we can reuse as much of the tree as\n // possible during both prefetches and dynamic navigations. But during\n // the beta period, we should be clear about this trade off in our\n // communications.\n !experimental.isRoutePPREnabled\n ) {\n // Don't prefetch this child. This will trigger a lazy fetch by the\n // client router.\n } else {\n // Create the child component\n\n if (process.env.NODE_ENV === 'development' && missingSlots) {\n // When we detect the default fallback (which triggers a 404), we collect the missing slots\n // to provide more helpful debug information during development mode.\n const parsedTree = parseLoaderTree(parallelRoute)\n if (\n parsedTree.conventionPath?.endsWith(PARALLEL_ROUTE_DEFAULT_PATH)\n ) {\n missingSlots.add(parallelRouteKey)\n }\n }\n\n const seedData = await createComponentTreeInternal(\n {\n loaderTree: parallelRoute,\n parentParams: currentParams,\n rootLayoutIncluded: rootLayoutIncludedAtThisLevelOrAbove,\n injectedCSS: injectedCSSWithCurrentLayout,\n injectedJS: injectedJSWithCurrentLayout,\n injectedFontPreloadTags: injectedFontPreloadTagsWithCurrentLayout,\n ctx,\n missingSlots,\n preloadCallbacks,\n authInterrupts,\n // `StreamingMetadataOutlet` is used to conditionally throw. In the case of parallel routes we will have more than one page\n // but we only want to throw on the first one.\n MetadataOutlet: isChildrenRouteKey ? MetadataOutlet : null,\n },\n false\n )\n\n childCacheNodeSeedData = seedData\n }\n\n const templateNode = createElement(\n Template,\n null,\n createElement(RenderFromTemplateContext, null)\n )\n\n const templateFilePath = getConventionPathByType(tree, dir, 'template')\n const errorFilePath = getConventionPathByType(tree, dir, 'error')\n const loadingFilePath = getConventionPathByType(tree, dir, 'loading')\n const globalErrorFilePath = isRoot\n ? getConventionPathByType(tree, dir, 'global-error')\n : undefined\n\n const wrappedErrorStyles =\n isSegmentViewEnabled && errorFilePath\n ? createElement(\n SegmentViewNode,\n {\n type: 'error',\n pagePath: errorFilePath,\n },\n errorStyles\n )\n : errorStyles\n\n // Add a suffix to avoid conflict with the segment view node representing rendered file.\n // existence: not-found.tsx@boundary\n // rendered: not-found.tsx\n const fileNameSuffix = BOUNDARY_SUFFIX\n const segmentViewBoundaries = isSegmentViewEnabled\n ? createElement(\n Fragment,\n null,\n notFoundFilePath &&\n createElement(SegmentViewNode, {\n type: `${BOUNDARY_PREFIX}not-found`,\n pagePath: notFoundFilePath + fileNameSuffix,\n }),\n loadingFilePath &&\n createElement(SegmentViewNode, {\n type: `${BOUNDARY_PREFIX}loading`,\n pagePath: loadingFilePath + fileNameSuffix,\n }),\n errorFilePath &&\n createElement(SegmentViewNode, {\n type: `${BOUNDARY_PREFIX}error`,\n pagePath: errorFilePath + fileNameSuffix,\n }),\n globalErrorFilePath &&\n createElement(SegmentViewNode, {\n type: `${BOUNDARY_PREFIX}global-error`,\n pagePath: isNextjsBuiltinFilePath(globalErrorFilePath)\n ? `${BUILTIN_PREFIX}global-error.js${fileNameSuffix}`\n : globalErrorFilePath,\n })\n )\n : null\n\n return [\n parallelRouteKey,\n createElement(LayoutRouter, {\n parallelRouterKey: parallelRouteKey,\n error: ErrorComponent,\n errorStyles: wrappedErrorStyles,\n errorScripts: errorScripts,\n template:\n isSegmentViewEnabled && templateFilePath\n ? createElement(\n SegmentViewNode,\n {\n type: 'template',\n pagePath: templateFilePath,\n },\n templateNode\n )\n : templateNode,\n templateStyles: templateStyles,\n templateScripts: templateScripts,\n notFound: notFoundComponent,\n forbidden: forbiddenComponent,\n unauthorized: unauthorizedComponent,\n ...(isSegmentViewEnabled && {\n segmentViewBoundaries,\n }),\n }),\n childCacheNodeSeedData,\n ]\n }\n )\n )\n\n // Convert the parallel route map into an object after all promises have been resolved.\n let parallelRouteProps: { [key: string]: React.ReactNode } = {}\n let parallelRouteCacheNodeSeedData: {\n [key: string]: CacheNodeSeedData | null\n } = {}\n for (const parallelRoute of parallelRouteMap) {\n const [parallelRouteKey, parallelRouteProp, flightData] = parallelRoute\n parallelRouteProps[parallelRouteKey] = parallelRouteProp\n parallelRouteCacheNodeSeedData[parallelRouteKey] = flightData\n }\n\n let loadingElement = Loading\n ? createElement(Loading, {\n key: 'l',\n })\n : null\n const loadingFilePath = getConventionPathByType(tree, dir, 'loading')\n if (isSegmentViewEnabled && loadingElement) {\n if (loadingFilePath) {\n loadingElement = createElement(\n SegmentViewNode,\n {\n key: cacheNodeKey + '-loading',\n type: 'loading',\n pagePath: loadingFilePath,\n },\n loadingElement\n )\n }\n }\n\n const loadingData: LoadingModuleData = loadingElement\n ? [loadingElement, loadingStyles, loadingScripts]\n : null\n\n // When the segment does not have a layout or page we still have to add the layout router to ensure the path holds the loading component\n if (!MaybeComponent) {\n return [\n createElement(\n Fragment,\n {\n key: cacheNodeKey,\n },\n layerAssets,\n parallelRouteProps.children\n ),\n parallelRouteCacheNodeSeedData,\n loadingData,\n isPossiblyPartialResponse,\n hasRuntimePrefetch,\n ]\n }\n\n const Component = MaybeComponent\n // If force-dynamic is used and the current render supports postponing, we\n // replace it with a node that will postpone the render. This ensures that the\n // postpone is invoked during the react render phase and not during the next\n // render phase.\n // @TODO this does not actually do what it seems like it would or should do. The idea is that\n // if we are rendering in a force-dynamic mode and we can postpone we should only make the segments\n // that ask for force-dynamic to be dynamic, allowing other segments to still prerender. However\n // because this comes after the children traversal and the static generation store is mutated every segment\n // along the parent path of a force-dynamic segment will hit this condition effectively making the entire\n // render force-dynamic. We should refactor this function so that we can correctly track which segments\n // need to be dynamic\n if (\n workStore.isStaticGeneration &&\n workStore.forceDynamic &&\n experimental.isRoutePPREnabled\n ) {\n return [\n createElement(\n Fragment,\n {\n key: cacheNodeKey,\n },\n createElement(Postpone, {\n reason: 'dynamic = \"force-dynamic\" was used',\n route: workStore.route,\n }),\n layerAssets\n ),\n parallelRouteCacheNodeSeedData,\n loadingData,\n true,\n hasRuntimePrefetch,\n ]\n }\n\n const isClientComponent = isClientReference(layoutOrPageMod)\n\n if (\n process.env.NODE_ENV === 'development' &&\n 'params' in parallelRouteProps\n ) {\n // @TODO consider making this an error and running the check in build as well\n console.error(\n `\"params\" is a reserved prop in Layouts and Pages and cannot be used as the name of a parallel route in ${segment}`\n )\n }\n\n if (isPage) {\n const PageComponent = Component\n\n // Assign searchParams to props if this is a page\n let pageElement: React.ReactNode\n if (isClientComponent) {\n if (cacheComponents) {\n // Params are omitted when Cache Components is enabled\n pageElement = createElement(ClientPageRoot, {\n Component: PageComponent,\n serverProvidedParams: null,\n })\n } else if (isStaticGeneration) {\n const promiseOfParams =\n createPrerenderParamsForClientSegment(currentParams)\n const promiseOfSearchParams =\n createPrerenderSearchParamsForClientPage(workStore)\n pageElement = createElement(ClientPageRoot, {\n Component: PageComponent,\n serverProvidedParams: {\n searchParams: query,\n params: currentParams,\n promises: [promiseOfSearchParams, promiseOfParams],\n },\n })\n } else {\n pageElement = createElement(ClientPageRoot, {\n Component: PageComponent,\n serverProvidedParams: {\n searchParams: query,\n params: currentParams,\n promises: null,\n },\n })\n }\n } else {\n // If we are passing params to a server component Page we need to track\n // their usage in case the current render mode tracks dynamic API usage.\n const params = createServerParamsForServerSegment(\n currentParams,\n workStore\n )\n\n // If we are passing searchParams to a server component Page we need to\n // track their usage in case the current render mode tracks dynamic API\n // usage.\n let searchParams = createServerSearchParamsForServerPage(query, workStore)\n\n if (isUseCacheFunction(PageComponent)) {\n const UseCachePageComponent: ComponentType<UseCachePageProps> =\n PageComponent\n\n pageElement = createElement(UseCachePageComponent, {\n params: params,\n searchParams: searchParams,\n $$isPage: true,\n })\n } else {\n pageElement = createElement(PageComponent, {\n params: params,\n searchParams: searchParams,\n })\n }\n }\n\n const isDefaultSegment = segment === DEFAULT_SEGMENT_KEY\n const pageFilePath =\n getConventionPathByType(tree, dir, 'page') ??\n getConventionPathByType(tree, dir, 'defaultPage')\n const segmentType = isDefaultSegment ? 'default' : 'page'\n const wrappedPageElement =\n isSegmentViewEnabled && pageFilePath\n ? createElement(\n SegmentViewNode,\n {\n key: cacheNodeKey + '-' + segmentType,\n type: segmentType,\n pagePath: pageFilePath,\n },\n pageElement\n )\n : pageElement\n\n return [\n createElement(\n Fragment,\n {\n key: cacheNodeKey,\n },\n wrappedPageElement,\n layerAssets,\n MetadataOutlet ? createElement(MetadataOutlet, null) : null\n ),\n parallelRouteCacheNodeSeedData,\n loadingData,\n isPossiblyPartialResponse,\n hasRuntimePrefetch,\n ]\n } else {\n const SegmentComponent = Component\n const isRootLayoutWithChildrenSlotAndAtLeastOneMoreSlot =\n rootLayoutAtThisLevel &&\n 'children' in parallelRoutes &&\n Object.keys(parallelRoutes).length > 1\n\n let segmentNode: React.ReactNode\n\n if (isClientComponent) {\n let clientSegment: React.ReactNode\n if (cacheComponents) {\n // Params are omitted when Cache Components is enabled\n clientSegment = createElement(ClientSegmentRoot, {\n Component: SegmentComponent,\n slots: parallelRouteProps,\n serverProvidedParams: null,\n })\n } else if (isStaticGeneration) {\n const promiseOfParams =\n createPrerenderParamsForClientSegment(currentParams)\n\n clientSegment = createElement(ClientSegmentRoot, {\n Component: SegmentComponent,\n slots: parallelRouteProps,\n serverProvidedParams: {\n params: currentParams,\n promises: [promiseOfParams],\n },\n })\n } else {\n clientSegment = createElement(ClientSegmentRoot, {\n Component: SegmentComponent,\n slots: parallelRouteProps,\n serverProvidedParams: {\n params: currentParams,\n promises: null,\n },\n })\n }\n\n if (isRootLayoutWithChildrenSlotAndAtLeastOneMoreSlot) {\n let notfoundClientSegment: React.ReactNode\n let forbiddenClientSegment: React.ReactNode\n let unauthorizedClientSegment: React.ReactNode\n // TODO-APP: This is a hack to support unmatched parallel routes, which will throw `notFound()`.\n // This ensures that a `HTTPAccessFallbackBoundary` is available for when that happens,\n // but it's not ideal, as it needlessly invokes the `NotFound` component and renders the `RootLayout` twice.\n // We should instead look into handling the fallback behavior differently in development mode so that it doesn't\n // rely on the `NotFound` behavior.\n notfoundClientSegment = createErrorBoundaryClientSegmentRoot({\n ctx,\n ErrorBoundaryComponent: NotFound,\n errorElement: notFoundElement,\n ClientSegmentRoot,\n layerAssets,\n SegmentComponent,\n currentParams,\n })\n forbiddenClientSegment = createErrorBoundaryClientSegmentRoot({\n ctx,\n ErrorBoundaryComponent: Forbidden,\n errorElement: forbiddenElement,\n ClientSegmentRoot,\n layerAssets,\n SegmentComponent,\n currentParams,\n })\n unauthorizedClientSegment = createErrorBoundaryClientSegmentRoot({\n ctx,\n ErrorBoundaryComponent: Unauthorized,\n errorElement: unauthorizedElement,\n ClientSegmentRoot,\n layerAssets,\n SegmentComponent,\n currentParams,\n })\n if (\n notfoundClientSegment ||\n forbiddenClientSegment ||\n unauthorizedClientSegment\n ) {\n segmentNode = createElement(\n HTTPAccessFallbackBoundary,\n {\n key: cacheNodeKey,\n notFound: notfoundClientSegment,\n forbidden: forbiddenClientSegment,\n unauthorized: unauthorizedClientSegment,\n },\n layerAssets,\n clientSegment\n )\n } else {\n segmentNode = createElement(\n Fragment,\n {\n key: cacheNodeKey,\n },\n layerAssets,\n clientSegment\n )\n }\n } else {\n segmentNode = createElement(\n Fragment,\n {\n key: cacheNodeKey,\n },\n layerAssets,\n clientSegment\n )\n }\n } else {\n const params = createServerParamsForServerSegment(\n currentParams,\n workStore\n )\n\n let serverSegment: React.ReactNode\n\n if (isUseCacheFunction(SegmentComponent)) {\n const UseCacheLayoutComponent: ComponentType<UseCacheLayoutProps> =\n SegmentComponent\n\n serverSegment = createElement(\n UseCacheLayoutComponent,\n {\n ...parallelRouteProps,\n params: params,\n $$isLayout: true,\n },\n // Force static children here so that they're validated.\n // See https://github.com/facebook/react/pull/34846\n parallelRouteProps.children\n )\n } else {\n serverSegment = createElement(\n SegmentComponent,\n {\n ...parallelRouteProps,\n params: params,\n },\n // Force static children here so that they're validated.\n // See https://github.com/facebook/react/pull/34846\n parallelRouteProps.children\n )\n }\n\n if (isRootLayoutWithChildrenSlotAndAtLeastOneMoreSlot) {\n // TODO-APP: This is a hack to support unmatched parallel routes, which will throw `notFound()`.\n // This ensures that a `HTTPAccessFallbackBoundary` is available for when that happens,\n // but it's not ideal, as it needlessly invokes the `NotFound` component and renders the `RootLayout` twice.\n // We should instead look into handling the fallback behavior differently in development mode so that it doesn't\n // rely on the `NotFound` behavior.\n segmentNode = createElement(\n HTTPAccessFallbackBoundary,\n {\n key: cacheNodeKey,\n notFound: notFoundElement\n ? createElement(\n Fragment,\n null,\n layerAssets,\n createElement(\n SegmentComponent,\n {\n params: params,\n },\n notFoundStyles,\n notFoundElement\n )\n )\n : undefined,\n },\n layerAssets,\n serverSegment\n )\n } else {\n segmentNode = createElement(\n Fragment,\n {\n key: cacheNodeKey,\n },\n layerAssets,\n serverSegment\n )\n }\n }\n\n const layoutFilePath = getConventionPathByType(tree, dir, 'layout')\n const wrappedSegmentNode =\n isSegmentViewEnabled && layoutFilePath\n ? createElement(\n SegmentViewNode,\n {\n key: 'layout',\n type: 'layout',\n pagePath: layoutFilePath,\n },\n segmentNode\n )\n : segmentNode\n\n // For layouts we just render the component\n return [\n wrappedSegmentNode,\n parallelRouteCacheNodeSeedData,\n loadingData,\n isPossiblyPartialResponse,\n hasRuntimePrefetch,\n ]\n }\n}\n\nfunction createErrorBoundaryClientSegmentRoot({\n ctx,\n ErrorBoundaryComponent,\n errorElement,\n ClientSegmentRoot,\n layerAssets,\n SegmentComponent,\n currentParams,\n}: {\n ctx: AppRenderContext\n ErrorBoundaryComponent: ComponentType<any> | undefined\n errorElement: React.ReactNode\n ClientSegmentRoot: ComponentType<any>\n layerAssets: React.ReactNode\n SegmentComponent: ComponentType<any>\n currentParams: Params\n}) {\n const {\n componentMod: { createElement, Fragment },\n } = ctx\n if (ErrorBoundaryComponent) {\n const notFoundParallelRouteProps = {\n children: errorElement,\n }\n return createElement(\n Fragment,\n null,\n layerAssets,\n createElement(ClientSegmentRoot, {\n Component: SegmentComponent,\n slots: notFoundParallelRouteProps,\n params: currentParams,\n })\n )\n }\n return null\n}\n\nexport function getRootParams(\n loaderTree: LoaderTree,\n getDynamicParamFromSegment: GetDynamicParamFromSegment\n): Params {\n return getRootParamsImpl({}, loaderTree, getDynamicParamFromSegment)\n}\n\nfunction getRootParamsImpl(\n parentParams: Params,\n loaderTree: LoaderTree,\n getDynamicParamFromSegment: GetDynamicParamFromSegment\n): Params {\n const {\n segment,\n modules: { layout },\n parallelRoutes,\n } = parseLoaderTree(loaderTree)\n\n const segmentParam = getDynamicParamFromSegment(segment)\n\n let currentParams: Params = parentParams\n if (segmentParam && segmentParam.value !== null) {\n currentParams = {\n ...parentParams,\n [segmentParam.param]: segmentParam.value,\n }\n }\n\n const isRootLayout = typeof layout !== 'undefined'\n\n if (isRootLayout) {\n return currentParams\n } else if (!parallelRoutes.children) {\n // This should really be an error but there are bugs in Turbopack that cause\n // the _not-found LoaderTree to not have any layouts. For rootParams sake\n // this is somewhat irrelevant when you are not customizing the 404 page.\n // If you are customizing 404\n // TODO update rootParams to make all params optional if `/app/not-found.tsx` is defined\n return currentParams\n } else {\n return getRootParamsImpl(\n currentParams,\n // We stop looking for root params as soon as we hit the first layout\n // and it is not possible to use parallel route children above the root layout\n // so every parallelRoutes object that this function can visit will necessarily\n // have a single `children` prop and no others.\n parallelRoutes.children,\n getDynamicParamFromSegment\n )\n }\n}\n\nasync function createBoundaryConventionElement({\n ctx,\n conventionName,\n Component,\n styles,\n tree,\n}: {\n ctx: AppRenderContext\n conventionName:\n | 'not-found'\n | 'error'\n | 'loading'\n | 'forbidden'\n | 'unauthorized'\n Component: ComponentType<any> | undefined\n styles: React.ReactNode | undefined\n tree: LoaderTree\n}) {\n const {\n componentMod: { createElement, Fragment },\n } = ctx\n const isSegmentViewEnabled = !!ctx.renderOpts.dev\n const dir =\n (process.env.NEXT_RUNTIME === 'edge'\n ? process.env.__NEXT_EDGE_PROJECT_DIR\n : ctx.renderOpts.dir) || ''\n const { SegmentViewNode } = ctx.componentMod\n const element = Component\n ? createElement(Fragment, null, createElement(Component, null), styles)\n : undefined\n\n const pagePath = getConventionPathByType(tree, dir, conventionName)\n\n const wrappedElement =\n isSegmentViewEnabled && element\n ? createElement(\n SegmentViewNode,\n {\n key: cacheNodeKey + '-' + conventionName,\n type: conventionName,\n // TODO: Discovered when moving to `createElement`.\n // `SegmentViewNode` doesn't support undefined `pagePath`\n pagePath: pagePath!,\n },\n element\n )\n : element\n\n return [wrappedElement, pagePath] as const\n}\n"],"names":["isClientReference","isUseCacheFunction","getLayoutOrPageModule","interopDefault","parseLoaderTree","createComponentStylesAndScripts","getLayerAssets","hasLoadingComponentInTree","validateRevalidate","PARALLEL_ROUTE_DEFAULT_PATH","getTracer","NextNodeServerSpan","StaticGenBailoutError","workUnitAsyncStorage","DEFAULT_SEGMENT_KEY","BOUNDARY_PREFIX","BOUNDARY_SUFFIX","BUILTIN_PREFIX","getConventionPathByType","isNextjsBuiltinFilePath","createComponentTree","props","trace","spanName","createComponentTreeInternal","errorMissingDefaultExport","pagePath","convention","normalizedPagePath","Error","cacheNodeKey","loaderTree","tree","parentParams","rootLayoutIncluded","injectedCSS","injectedJS","injectedFontPreloadTags","ctx","missingSlots","preloadCallbacks","authInterrupts","MetadataOutlet","isRoot","renderOpts","nextConfigOutput","experimental","cacheComponents","workStore","componentMod","createElement","Fragment","SegmentViewNode","HTTPAccessFallbackBoundary","LayoutRouter","RenderFromTemplateContext","ClientPageRoot","ClientSegmentRoot","createServerSearchParamsForServerPage","createPrerenderSearchParamsForClientPage","createServerParamsForServerSegment","createPrerenderParamsForClientSegment","serverHooks","DynamicServerError","Postpone","getDynamicParamFromSegment","isPrefetch","query","page","conventionPath","segment","modules","parallelRoutes","layout","template","error","loading","notFound","forbidden","unauthorized","injectedCSSWithCurrentLayout","Set","injectedJSWithCurrentLayout","injectedFontPreloadTagsWithCurrentLayout","layerAssets","layoutOrPagePath","Template","templateStyles","templateScripts","filePath","getComponent","ErrorComponent","errorStyles","errorScripts","Loading","loadingStyles","loadingScripts","isLayout","isPage","mod","layoutOrPageMod","modType","hideSpan","attributes","rootLayoutAtThisLevel","rootLayoutIncludedAtThisLevelOrAbove","NotFound","notFoundStyles","prefetchConfig","unstable_prefetch","undefined","hasRuntimePrefetch","mode","Forbidden","forbiddenStyles","Unauthorized","unauthorizedStyles","dynamic","dynamicShouldError","forceDynamic","isStaticGeneration","isRoutePPREnabled","err","dynamicUsageDescription","message","dynamicUsageStack","stack","forceStatic","fetchCache","revalidate","route","defaultRevalidate","workUnitStore","getStore","type","isPossiblyPartialResponse","LayoutOrPage","MaybeComponent","process","env","NODE_ENV","isValidElementType","require","segmentParam","currentParams","value","param","isSegmentViewEnabled","dev","dir","NEXT_RUNTIME","__NEXT_EDGE_PROJECT_DIR","notFoundElement","notFoundFilePath","createBoundaryConventionElement","conventionName","Component","styles","forbiddenElement","unauthorizedElement","parallelRouteMap","Promise","all","Object","keys","map","parallelRouteKey","isChildrenRouteKey","parallelRoute","notFoundComponent","forbiddenComponent","unauthorizedComponent","childCacheNodeSeedData","parsedTree","endsWith","add","seedData","templateNode","templateFilePath","errorFilePath","loadingFilePath","globalErrorFilePath","wrappedErrorStyles","fileNameSuffix","segmentViewBoundaries","parallelRouterKey","parallelRouteProps","parallelRouteCacheNodeSeedData","parallelRouteProp","flightData","loadingElement","key","loadingData","children","reason","isClientComponent","console","PageComponent","pageElement","serverProvidedParams","promiseOfParams","promiseOfSearchParams","searchParams","params","promises","UseCachePageComponent","$$isPage","isDefaultSegment","pageFilePath","segmentType","wrappedPageElement","SegmentComponent","isRootLayoutWithChildrenSlotAndAtLeastOneMoreSlot","length","segmentNode","clientSegment","slots","notfoundClientSegment","forbiddenClientSegment","unauthorizedClientSegment","createErrorBoundaryClientSegmentRoot","ErrorBoundaryComponent","errorElement","serverSegment","UseCacheLayoutComponent","$$isLayout","layoutFilePath","wrappedSegmentNode","notFoundParallelRouteProps","getRootParams","getRootParamsImpl","isRootLayout","element","wrappedElement"],"mappings":"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","ignoreList":[0]} |