{"version":3,"sources":["../../../../src/build/analysis/get-page-static-info.ts"],"sourcesContent":["import type { NextConfig } from '../../server/config-shared'\nimport type { RouteHas } from '../../lib/load-custom-routes'\n\nimport { readFileSync } from 'fs'\nimport { relative } from 'path'\nimport { LRUCache } from '../../server/lib/lru-cache'\nimport { extractExportedConstValue } from './extract-const-value'\nimport { parseModule } from './parse-module'\nimport * as Log from '../output/log'\nimport {\n  SERVER_RUNTIME,\n  MIDDLEWARE_FILENAME,\n  PROXY_FILENAME,\n  RSC_SUFFIX,\n  RSC_SEGMENT_SUFFIX,\n  RSC_SEGMENTS_DIR_SUFFIX,\n} from '../../lib/constants'\nimport { tryToParsePath } from '../../lib/try-to-parse-path'\nimport { isAPIRoute } from '../../lib/is-api-route'\nimport { isEdgeRuntime } from '../../lib/is-edge-runtime'\nimport { RSC_MODULE_TYPES } from '../../shared/lib/constants'\nimport { escapeStringRegexp } from '../../shared/lib/escape-regexp'\nimport type { RSCMeta } from '../webpack/loaders/get-module-build-info'\nimport { PAGE_TYPES } from '../../lib/page-types'\nimport {\n  AppSegmentConfigSchemaKeys,\n  parseAppSegmentConfig,\n  type AppSegmentConfig,\n} from '../segment-config/app/app-segment-config'\nimport { reportZodError } from '../../shared/lib/zod'\nimport {\n  PagesSegmentConfigSchemaKeys,\n  parsePagesSegmentConfig,\n  type PagesSegmentConfig,\n  type PagesSegmentConfigConfig,\n} from '../segment-config/pages/pages-segment-config'\nimport {\n  MiddlewareConfigInputSchema,\n  SourceSchema,\n  type MiddlewareConfigMatcherInput,\n} from '../segment-config/middleware/middleware-config'\nimport { normalizeAppPath } from '../../shared/lib/router/utils/app-paths'\nimport { normalizePagePath } from '../../shared/lib/page-path/normalize-page-path'\nimport { isProxyFile } from '../utils'\n\nconst PARSE_PATTERN =\n  /(?<!(_jsx|jsx-))runtime|preferredRegion|getStaticProps|getServerSideProps|generateStaticParams|export const|generateImageMetadata|generateSitemaps|middleware|proxy/\n\nexport type ProxyMatcher = {\n  regexp: string\n  locale?: false\n  has?: RouteHas[]\n  missing?: RouteHas[]\n  originalSource: string\n}\n\nexport type ProxyConfig = {\n  /**\n   * The matcher for the proxy. Read more: [Next.js Docs: Proxy `matcher`](https://nextjs.org/docs/app/api-reference/file-conventions/proxy#matcher),\n   * [Next.js Docs: Proxy matching paths](https://nextjs.org/docs/app/building-your-application/routing/proxy#matching-paths)\n   */\n  matchers?: ProxyMatcher[]\n\n  /**\n   * The regions that the proxy should run in.\n   */\n  regions?: string | string[]\n\n  /**\n   * A glob, or an array of globs, ignoring dynamic code evaluation for specific\n   * files. The globs are relative to your application root folder.\n   */\n  unstable_allowDynamic?: string[]\n}\n\nexport interface AppPageStaticInfo {\n  type: PAGE_TYPES.APP\n  ssg?: boolean\n  ssr?: boolean\n  rsc?: RSCModuleType\n  generateStaticParams?: boolean\n  generateSitemaps?: boolean\n  generateImageMetadata?: boolean\n  middleware?: ProxyConfig\n  config: Omit<AppSegmentConfig, 'runtime' | 'maxDuration'> | undefined\n  runtime: AppSegmentConfig['runtime'] | undefined\n  preferredRegion: AppSegmentConfig['preferredRegion'] | undefined\n  maxDuration: number | undefined\n  hadUnsupportedValue: boolean\n}\n\nexport interface PagesPageStaticInfo {\n  type: PAGE_TYPES.PAGES\n  getStaticProps?: boolean\n  getServerSideProps?: boolean\n  rsc?: RSCModuleType\n  generateStaticParams?: boolean\n  generateSitemaps?: boolean\n  generateImageMetadata?: boolean\n  middleware?: ProxyConfig\n  config:\n    | (Omit<PagesSegmentConfig, 'runtime' | 'config' | 'maxDuration'> & {\n        config?: Omit<PagesSegmentConfigConfig, 'runtime' | 'maxDuration'>\n      })\n    | undefined\n  runtime: PagesSegmentConfig['runtime'] | undefined\n  preferredRegion: PagesSegmentConfigConfig['regions'] | undefined\n  maxDuration: number | undefined\n  hadUnsupportedValue: boolean\n}\n\nexport type PageStaticInfo = AppPageStaticInfo | PagesPageStaticInfo\n\nconst APP_ROUTE_RSC_SUFFIX_MATCHER = escapeStringRegexp(RSC_SUFFIX)\nconst APP_ROUTE_SEGMENT_PREFETCH_SUFFIX_MATCHER = `${escapeStringRegexp(RSC_SEGMENTS_DIR_SUFFIX)}/.+${escapeStringRegexp(RSC_SEGMENT_SUFFIX)}`\nconst APP_ROUTE_TRANSPORT_SUFFIX_MATCHER = `${APP_ROUTE_RSC_SUFFIX_MATCHER}|${APP_ROUTE_SEGMENT_PREFETCH_SUFFIX_MATCHER}`\nconst ROOT_APP_ROUTE_TRANSPORT_MATCHER = `/?index(?:${APP_ROUTE_TRANSPORT_SUFFIX_MATCHER})`\nconst MIDDLEWARE_DATA_SUFFIX_MATCHER = `\\\\.json|${APP_ROUTE_TRANSPORT_SUFFIX_MATCHER}`\nconst OPTIONAL_MIDDLEWARE_NEXT_DATA_PREFIX = '/:nextData(_next/data/[^/]{1,})?'\n\nconst CLIENT_MODULE_LABEL =\n  /\\/\\* __next_internal_client_entry_do_not_use__ ([^ ]*) (cjs|auto) \\*\\//\n\n// Match JSON object that may contain nested objects (for loc info)\n// The JSON ends right before the closing \" */\"\nconst ACTION_MODULE_LABEL =\n  /\\/\\* __next_internal_action_entry_do_not_use__ (\\{.*\\}) \\*\\//\n\nconst CLIENT_DIRECTIVE = 'use client'\nconst SERVER_ACTION_DIRECTIVE = 'use server'\n\nexport type RSCModuleType = 'server' | 'client'\nexport function getRSCModuleInformation(\n  source: string,\n  isReactServerLayer: boolean\n): RSCMeta {\n  const actionsJson = source.match(ACTION_MODULE_LABEL)\n  // Parse action metadata - supports both old format (string) and new format (object with loc)\n  const parsedActionsMeta = actionsJson\n    ? (JSON.parse(actionsJson[1]) as RSCMeta['actionIds'])\n    : undefined\n  const clientInfoMatch = source.match(CLIENT_MODULE_LABEL)\n  const isClientRef = !!clientInfoMatch\n\n  if (!isReactServerLayer) {\n    return {\n      type: RSC_MODULE_TYPES.client,\n      actionIds: parsedActionsMeta,\n      isClientRef,\n    }\n  }\n\n  const clientRefsString = clientInfoMatch?.[1]\n  const clientRefs = clientRefsString ? clientRefsString.split(',') : []\n  const clientEntryType = clientInfoMatch?.[2] as 'cjs' | 'auto' | undefined\n\n  const type = clientInfoMatch\n    ? RSC_MODULE_TYPES.client\n    : RSC_MODULE_TYPES.server\n\n  return {\n    type,\n    actionIds: parsedActionsMeta,\n    clientRefs,\n    clientEntryType,\n    isClientRef,\n  }\n}\n\n/**\n * Receives a parsed AST from SWC and checks if it belongs to a module that\n * requires a runtime to be specified. Those are:\n *   - Modules with `export function getStaticProps | getServerSideProps`\n *   - Modules with `export { getStaticProps | getServerSideProps } <from ...>`\n *   - Modules with `export const runtime = ...`\n */\nfunction checkExports(\n  ast: any,\n  expectedExports: string[],\n  page: string\n): {\n  getStaticProps?: boolean\n  getServerSideProps?: boolean\n  generateImageMetadata?: boolean\n  generateSitemaps?: boolean\n  generateStaticParams?: boolean\n  directives?: Set<string>\n  exports?: Set<string>\n} {\n  const exportsSet = new Set<string>([\n    'getStaticProps',\n    'getServerSideProps',\n    'generateImageMetadata',\n    'generateSitemaps',\n    'generateStaticParams',\n  ])\n  if (!Array.isArray(ast?.body)) {\n    return {}\n  }\n\n  try {\n    let getStaticProps: boolean = false\n    let getServerSideProps: boolean = false\n    let generateImageMetadata: boolean = false\n    let generateSitemaps: boolean = false\n    let generateStaticParams = false\n    let exports = new Set<string>()\n    let directives = new Set<string>()\n    let hasLeadingNonDirectiveNode = false\n\n    for (const node of ast.body) {\n      // There should be no non-string literals nodes before directives\n      if (\n        node.type === 'ExpressionStatement' &&\n        node.expression.type === 'StringLiteral'\n      ) {\n        if (!hasLeadingNonDirectiveNode) {\n          const directive = node.expression.value\n          if (CLIENT_DIRECTIVE === directive) {\n            directives.add('client')\n          }\n          if (SERVER_ACTION_DIRECTIVE === directive) {\n            directives.add('server')\n          }\n        }\n      } else {\n        hasLeadingNonDirectiveNode = true\n      }\n      if (\n        node.type === 'ExportDeclaration' &&\n        node.declaration?.type === 'VariableDeclaration'\n      ) {\n        for (const declaration of node.declaration?.declarations) {\n          if (expectedExports.includes(declaration.id.value)) {\n            exports.add(declaration.id.value)\n          }\n        }\n      }\n\n      if (\n        node.type === 'ExportDeclaration' &&\n        node.declaration?.type === 'FunctionDeclaration' &&\n        exportsSet.has(node.declaration.identifier?.value)\n      ) {\n        const id = node.declaration.identifier.value\n        getServerSideProps = id === 'getServerSideProps'\n        getStaticProps = id === 'getStaticProps'\n        generateImageMetadata = id === 'generateImageMetadata'\n        generateSitemaps = id === 'generateSitemaps'\n        generateStaticParams = id === 'generateStaticParams'\n      }\n\n      if (\n        node.type === 'ExportDeclaration' &&\n        node.declaration?.type === 'VariableDeclaration'\n      ) {\n        const id = node.declaration?.declarations[0]?.id.value\n        if (exportsSet.has(id)) {\n          getServerSideProps = id === 'getServerSideProps'\n          getStaticProps = id === 'getStaticProps'\n          generateImageMetadata = id === 'generateImageMetadata'\n          generateSitemaps = id === 'generateSitemaps'\n          generateStaticParams = id === 'generateStaticParams'\n        }\n      }\n\n      if (node.type === 'ExportNamedDeclaration') {\n        for (const specifier of node.specifiers) {\n          if (\n            specifier.type === 'ExportSpecifier' &&\n            specifier.orig?.type === 'Identifier'\n          ) {\n            const value = specifier.orig.value\n\n            if (!getServerSideProps && value === 'getServerSideProps') {\n              getServerSideProps = true\n            }\n            if (!getStaticProps && value === 'getStaticProps') {\n              getStaticProps = true\n            }\n            if (!generateImageMetadata && value === 'generateImageMetadata') {\n              generateImageMetadata = true\n            }\n            if (!generateSitemaps && value === 'generateSitemaps') {\n              generateSitemaps = true\n            }\n            if (!generateStaticParams && value === 'generateStaticParams') {\n              generateStaticParams = true\n            }\n            if (expectedExports.includes(value) && !exports.has(value)) {\n              // An export was found that was actually a re-export, and not a\n              // literal value. We should warn here.\n              Log.warn(\n                `Next.js can't recognize the exported \\`${value}\\` field in \"${page}\", it may be re-exported from another file. The default config will be used instead.`\n              )\n            }\n          }\n        }\n      }\n    }\n\n    return {\n      getStaticProps,\n      getServerSideProps,\n      generateImageMetadata,\n      generateSitemaps,\n      generateStaticParams,\n      directives,\n      exports,\n    }\n  } catch {}\n\n  return {}\n}\n\nfunction validateMiddlewareProxyExports({\n  ast,\n  page,\n  pageFilePath,\n  isDev,\n}: {\n  ast: any\n  page: string\n  pageFilePath: string\n  isDev: boolean\n}): void {\n  // Check if this is middleware/proxy\n  const isMiddleware =\n    page === `/${MIDDLEWARE_FILENAME}` || page === `/src/${MIDDLEWARE_FILENAME}`\n  const isProxy =\n    page === `/${PROXY_FILENAME}` || page === `/src/${PROXY_FILENAME}`\n\n  if (!isMiddleware && !isProxy) {\n    return\n  }\n\n  if (!ast || !Array.isArray(ast.body)) {\n    return\n  }\n\n  const fileName = isProxy ? PROXY_FILENAME : MIDDLEWARE_FILENAME\n\n  // Parse AST to get export info (since checkExports doesn't return middleware/proxy info)\n  let hasDefaultExport = false\n  let hasMiddlewareExport = false\n  let hasProxyExport = false\n\n  for (const node of ast.body) {\n    if (\n      node.type === 'ExportDefaultDeclaration' ||\n      node.type === 'ExportDefaultExpression'\n    ) {\n      hasDefaultExport = true\n    }\n\n    if (\n      node.type === 'ExportDeclaration' &&\n      node.declaration?.type === 'FunctionDeclaration'\n    ) {\n      const id = node.declaration.identifier?.value\n      if (id === 'middleware') {\n        hasMiddlewareExport = true\n      }\n      if (id === 'proxy') {\n        hasProxyExport = true\n      }\n    }\n\n    if (\n      node.type === 'ExportDeclaration' &&\n      node.declaration?.type === 'VariableDeclaration'\n    ) {\n      const id = node.declaration?.declarations[0]?.id.value\n      if (id === 'middleware') {\n        hasMiddlewareExport = true\n      }\n      if (id === 'proxy') {\n        hasProxyExport = true\n      }\n    }\n\n    if (node.type === 'ExportNamedDeclaration') {\n      for (const specifier of node.specifiers) {\n        if (\n          specifier.type === 'ExportSpecifier' &&\n          specifier.orig?.type === 'Identifier'\n        ) {\n          // Use the exported name if it exists (for aliased exports like `export { foo as proxy }`),\n          // otherwise fall back to the original name (for simple re-exports like `export { proxy }`)\n          const exportedIdentifier = specifier.exported || specifier.orig\n          const value = exportedIdentifier.value\n          if (value === 'middleware') {\n            hasMiddlewareExport = true\n          }\n          if (value === 'proxy') {\n            hasProxyExport = true\n          }\n        }\n      }\n    }\n  }\n\n  const hasValidExport =\n    hasDefaultExport ||\n    (isMiddleware && hasMiddlewareExport) ||\n    (isProxy && hasProxyExport)\n\n  const relativePath = relative(process.cwd(), pageFilePath)\n  const resolvedPath = relativePath.startsWith('.')\n    ? relativePath\n    : `./${relativePath}`\n\n  if (!hasValidExport) {\n    const message =\n      `The file \"${resolvedPath}\" must export a function, either as a default export or as a named \"${fileName}\" export.\\n` +\n      `This function is what Next.js runs for every request handled by this ${fileName === 'proxy' ? 'proxy (previously called middleware)' : 'middleware'}.\\n\\n` +\n      `Why this happens:\\n` +\n      (isProxy\n        ? \"- You are migrating from `middleware` to `proxy`, but haven't updated the exported function.\\n\"\n        : '') +\n      `- The file exists but doesn't export a function.\\n` +\n      `- The export is not a function (e.g., an object or constant).\\n` +\n      `- There's a syntax error preventing the export from being recognized.\\n\\n` +\n      `To fix it:\\n` +\n      `- Ensure this file has either a default or \"${fileName}\" function export.\\n\\n` +\n      `Learn more: https://nextjs.org/docs/messages/middleware-to-proxy`\n\n    if (isDev) {\n      // errorOnce as proxy/middleware runs per request including multiple\n      // internal _next/ routes and spams logs.\n      Log.errorOnce(message)\n    } else {\n      throw new Error(message)\n    }\n  }\n}\n\nfunction tryToReadFile(filePath: string, shouldThrow: boolean) {\n  try {\n    return readFileSync(filePath, {\n      encoding: 'utf8',\n    })\n  } catch (error: any) {\n    if (shouldThrow) {\n      error.message = `Next.js ERROR: Failed to read file ${filePath}:\\n${error.message}`\n      throw error\n    }\n  }\n}\n\n/**\n * @internal - required to exclude zod types from the build\n */\nexport function getMiddlewareMatchers(\n  matcherOrMatchers: MiddlewareConfigMatcherInput,\n  nextConfig: Pick<NextConfig, 'basePath' | 'i18n'>\n): ProxyMatcher[] {\n  const matchers = Array.isArray(matcherOrMatchers)\n    ? matcherOrMatchers\n    : [matcherOrMatchers]\n\n  const { i18n } = nextConfig\n\n  return matchers.map((matcher) => {\n    matcher = typeof matcher === 'string' ? { source: matcher } : matcher\n\n    const originalSource = matcher.source\n\n    let { source, ...rest } = matcher\n\n    const isRoot = source === '/'\n\n    if (i18n?.locales && matcher.locale !== false) {\n      source = `/:nextInternalLocale((?!_next/)[^/.]{1,})${\n        isRoot ? '' : source\n      }`\n    }\n\n    // Match transport-specific route forms that resolve to the same page.\n    // - Pages Router data routes: /_next/data/<build-id>/...\n    // - App Router transport routes: .rsc, ...segments/...segment.rsc\n    const sourceSuffix = `${\n      isRoot\n        ? `(${\n            nextConfig.i18n ? '|\\\\.json|' : ''\n          }/?index|/?index\\\\.json|${ROOT_APP_ROUTE_TRANSPORT_MATCHER})?`\n        : `{(${MIDDLEWARE_DATA_SUFFIX_MATCHER})}?`\n    }`\n    source = `${OPTIONAL_MIDDLEWARE_NEXT_DATA_PREFIX}${source}${sourceSuffix}`\n\n    if (nextConfig.basePath) {\n      source = `${nextConfig.basePath}${source}`\n    }\n\n    // Validate that the source is still.\n    const result = SourceSchema.safeParse(source)\n    if (!result.success) {\n      reportZodError('Failed to parse middleware source', result.error)\n\n      // We need to exit here because middleware being built occurs before we\n      // finish setting up the server. Exiting here is the only way to ensure\n      // that we don't hang.\n      process.exit(1)\n    }\n\n    return {\n      ...rest,\n      // We know that parsed.regexStr is not undefined because we already\n      // checked that the source is valid.\n      regexp: tryToParsePath(result.data).regexStr!,\n      originalSource: originalSource || source,\n    }\n  })\n}\n\nfunction parseMiddlewareConfig(\n  page: string,\n  rawConfig: unknown,\n  nextConfig: NextConfig\n): ProxyConfig {\n  // If there's no config to parse, then return nothing.\n  if (typeof rawConfig !== 'object' || !rawConfig) return {}\n\n  const input = MiddlewareConfigInputSchema.safeParse(rawConfig)\n  if (!input.success) {\n    reportZodError(`${page} contains invalid middleware config`, input.error)\n\n    // We need to exit here because middleware being built occurs before we\n    // finish setting up the server. Exiting here is the only way to ensure\n    // that we don't hang.\n    process.exit(1)\n  }\n\n  const config: ProxyConfig = {}\n\n  if (input.data.matcher) {\n    config.matchers = getMiddlewareMatchers(input.data.matcher, nextConfig)\n  }\n\n  if (input.data.unstable_allowDynamic) {\n    config.unstable_allowDynamic = Array.isArray(\n      input.data.unstable_allowDynamic\n    )\n      ? input.data.unstable_allowDynamic\n      : [input.data.unstable_allowDynamic]\n  }\n\n  if (input.data.regions) {\n    config.regions = input.data.regions\n  }\n\n  return config\n}\n\nconst apiRouteWarnings = new LRUCache(250)\nfunction warnAboutExperimentalEdge(apiRoute: string | null) {\n  if (\n    process.env.NODE_ENV === 'production' &&\n    process.env.NEXT_PRIVATE_BUILD_WORKER === '1'\n  ) {\n    return\n  }\n\n  if (apiRoute && apiRouteWarnings.has(apiRoute)) {\n    return\n  }\n\n  Log.warn(\n    apiRoute\n      ? `${apiRoute} provided runtime 'experimental-edge'. It can be updated to 'edge' instead.`\n      : `You are using an experimental edge runtime, the API might change.`\n  )\n\n  if (apiRoute) {\n    apiRouteWarnings.set(apiRoute, 1)\n  }\n}\n\nlet hadUnsupportedValue = false\nconst warnedUnsupportedValueMap = new LRUCache<boolean>(250, () => 1)\n\nfunction warnAboutUnsupportedValue(\n  pageFilePath: string,\n  page: string | undefined,\n  result: { unsupported: string; path?: string }\n) {\n  hadUnsupportedValue = true\n  const isProductionBuild = process.env.NODE_ENV === 'production'\n  if (\n    // we only log for the server compilation so it's not\n    // duplicated due to webpack build worker having fresh\n    // module scope for each compiler\n    process.env.NEXT_COMPILER_NAME !== 'server' ||\n    (isProductionBuild && warnedUnsupportedValueMap.has(pageFilePath))\n  ) {\n    return\n  }\n  warnedUnsupportedValueMap.set(pageFilePath, true)\n\n  const message =\n    `Next.js can't recognize the exported \\`config\\` field in ` +\n    (page ? `route \"${page}\"` : `\"${pageFilePath}\"`) +\n    ':\\n' +\n    result.unsupported +\n    (result.path ? ` at \"${result.path}\"` : '') +\n    '.\\n' +\n    'Read More - https://nextjs.org/docs/messages/invalid-page-config'\n\n  // for a build we use `Log.error` instead of throwing\n  // so that all errors can be logged before exiting the process\n  if (isProductionBuild) {\n    Log.error(message)\n  } else {\n    throw new Error(message)\n  }\n}\n\ntype GetPageStaticInfoParams = {\n  pageFilePath: string\n  nextConfig: Partial<NextConfig>\n  isDev: boolean\n  page: string\n  pageType: PAGE_TYPES\n}\n\nexport async function getAppPageStaticInfo({\n  pageFilePath,\n  nextConfig,\n  isDev,\n  page,\n}: GetPageStaticInfoParams): Promise<AppPageStaticInfo> {\n  const content = tryToReadFile(pageFilePath, !isDev)\n  if (!content || !PARSE_PATTERN.test(content)) {\n    return {\n      type: PAGE_TYPES.APP,\n      config: undefined,\n      runtime: undefined,\n      preferredRegion: undefined,\n      maxDuration: undefined,\n      hadUnsupportedValue: false,\n    }\n  }\n\n  const ast = await parseModule(pageFilePath, content)\n  validateMiddlewareProxyExports({\n    ast,\n    page,\n    pageFilePath,\n    isDev,\n  })\n\n  const {\n    generateStaticParams,\n    generateImageMetadata,\n    generateSitemaps,\n    exports,\n    directives,\n  } = checkExports(ast, AppSegmentConfigSchemaKeys, page)\n\n  const { type: rsc } = getRSCModuleInformation(content, true)\n\n  const exportedConfig: Record<string, unknown> = {}\n  if (exports) {\n    for (const property of exports) {\n      const result = extractExportedConstValue(ast, property)\n      if (result !== null && 'unsupported' in result) {\n        warnAboutUnsupportedValue(pageFilePath, page, result)\n      } else if (result !== null) {\n        exportedConfig[property] = result.value\n      }\n    }\n  }\n\n  const configResult = extractExportedConstValue(ast, 'config')\n  if (configResult !== null && 'unsupported' in configResult) {\n    warnAboutUnsupportedValue(pageFilePath, page, configResult)\n  } else if (configResult !== null) {\n    exportedConfig.config = configResult.value\n  }\n\n  const route = normalizeAppPath(page)\n  const config = parseAppSegmentConfig(exportedConfig, route)\n\n  // Prevent edge runtime and generateStaticParams in the same file.\n  if (isEdgeRuntime(config.runtime) && generateStaticParams) {\n    throw new Error(\n      `Page \"${page}\" cannot use both \\`export const runtime = 'edge'\\` and export \\`generateStaticParams\\`.`\n    )\n  }\n\n  // Prevent use client and generateStaticParams in the same file.\n  if (directives?.has('client') && generateStaticParams) {\n    throw new Error(\n      `Page \"${page}\" cannot use both \"use client\" and export function \"generateStaticParams()\".`\n    )\n  }\n\n  // Prevent use client and unstable_instant in the same file.\n  if (directives?.has('client') && 'unstable_instant' in config) {\n    throw new Error(\n      `Page \"${page}\" cannot export \"unstable_instant\" from a Client Component module. To use this API, convert this module to a Server Component by removing the \"use client\" directive.`\n    )\n  }\n\n  if ('unstable_instant' in config && !nextConfig.cacheComponents) {\n    throw new Error(\n      `Page \"${page}\" cannot use \\`export const unstable_instant = ...\\` without enabling \\`cacheComponents\\`.`\n    )\n  }\n\n  // Prevent unstable_dynamicStaleTime in layouts.\n  if ('unstable_dynamicStaleTime' in config) {\n    const isLayout = /\\/layout\\.[^/]+$/.test(pageFilePath)\n    if (isLayout) {\n      throw new Error(\n        `\"${page}\" cannot use \\`export const unstable_dynamicStaleTime\\`. This config is only supported in page files, not layouts.`\n      )\n    }\n  }\n\n  // Prevent combining unstable_dynamicStaleTime and unstable_instant.\n  if ('unstable_dynamicStaleTime' in config && 'unstable_instant' in config) {\n    throw new Error(\n      `Page \"${page}\" cannot use both \\`export const unstable_dynamicStaleTime\\` and \\`export const unstable_instant\\`.`\n    )\n  }\n\n  return {\n    type: PAGE_TYPES.APP,\n    rsc,\n    generateImageMetadata,\n    generateSitemaps,\n    generateStaticParams,\n    config,\n    middleware: parseMiddlewareConfig(page, exportedConfig.config, nextConfig),\n    runtime: config.runtime,\n    preferredRegion: config.preferredRegion,\n    maxDuration: config.maxDuration,\n    hadUnsupportedValue,\n  }\n}\n\nexport async function getPagesPageStaticInfo({\n  pageFilePath,\n  nextConfig,\n  isDev,\n  page,\n}: GetPageStaticInfoParams): Promise<PagesPageStaticInfo> {\n  const content = tryToReadFile(pageFilePath, !isDev)\n  if (!content || !PARSE_PATTERN.test(content)) {\n    return {\n      type: PAGE_TYPES.PAGES,\n      config: undefined,\n      runtime: undefined,\n      preferredRegion: undefined,\n      maxDuration: undefined,\n      hadUnsupportedValue: false,\n    }\n  }\n\n  const ast = await parseModule(pageFilePath, content)\n  validateMiddlewareProxyExports({\n    ast,\n    page,\n    pageFilePath,\n    isDev,\n  })\n\n  const { getServerSideProps, getStaticProps, exports } = checkExports(\n    ast,\n    PagesSegmentConfigSchemaKeys,\n    page\n  )\n\n  const { type: rsc } = getRSCModuleInformation(content, true)\n\n  const exportedConfig: Record<string, unknown> = {}\n  if (exports) {\n    for (const property of exports) {\n      const result = extractExportedConstValue(ast, property)\n      if (result !== null && 'unsupported' in result) {\n        warnAboutUnsupportedValue(pageFilePath, page, result)\n      } else if (result !== null) {\n        exportedConfig[property] = result.value\n      }\n    }\n  }\n\n  const configResult = extractExportedConstValue(ast, 'config')\n  if (configResult !== null && 'unsupported' in configResult) {\n    warnAboutUnsupportedValue(pageFilePath, page, configResult)\n  } else if (configResult !== null) {\n    exportedConfig.config = configResult.value\n  }\n\n  // Validate the config.\n  const route = normalizePagePath(page)\n  const config = parsePagesSegmentConfig(exportedConfig, route)\n  const isAnAPIRoute = isAPIRoute(route)\n\n  let resolvedRuntime = config.runtime ?? config.config?.runtime\n\n  if (isProxyFile(page) && resolvedRuntime) {\n    const relativePath = relative(process.cwd(), pageFilePath)\n    const resolvedPath = relativePath.startsWith('.')\n      ? relativePath\n      : `./${relativePath}`\n    const message = `Route segment config is not allowed in Proxy file at \"${resolvedPath}\". Proxy always runs on Node.js runtime. Learn more: https://nextjs.org/docs/messages/middleware-to-proxy`\n\n    if (isDev) {\n      // errorOnce as proxy/middleware runs per request including multiple\n      // internal _next/ routes and spams logs.\n      Log.errorOnce(message)\n      resolvedRuntime = SERVER_RUNTIME.nodejs\n    } else {\n      throw new Error(message)\n    }\n  }\n\n  if (resolvedRuntime === SERVER_RUNTIME.experimentalEdge) {\n    warnAboutExperimentalEdge(isAnAPIRoute ? page! : null)\n  }\n\n  if (\n    !isProxyFile(page) &&\n    resolvedRuntime === SERVER_RUNTIME.edge &&\n    page &&\n    !isAnAPIRoute\n  ) {\n    const message = `Page ${page} provided runtime 'edge', the edge runtime for rendering is currently experimental. Use runtime 'experimental-edge' instead.`\n    if (isDev) {\n      Log.error(message)\n    } else {\n      throw new Error(message)\n    }\n  }\n\n  return {\n    type: PAGE_TYPES.PAGES,\n    getStaticProps,\n    getServerSideProps,\n    rsc,\n    config,\n    middleware: parseMiddlewareConfig(page, exportedConfig.config, nextConfig),\n    runtime: resolvedRuntime,\n    preferredRegion: config.config?.regions,\n    maxDuration: config.maxDuration ?? config.config?.maxDuration,\n    hadUnsupportedValue,\n  }\n}\n\n/**\n * For a given pageFilePath and nextConfig, if the config supports it, this\n * function will read the file and return the runtime that should be used.\n * It will look into the file content only if the page *requires* a runtime\n * to be specified, that is, when gSSP or gSP is used.\n * Related discussion: https://github.com/vercel/next.js/discussions/34179\n */\nexport async function getPageStaticInfo(\n  params: GetPageStaticInfoParams\n): Promise<PageStaticInfo> {\n  if (params.pageType === PAGE_TYPES.APP) {\n    return getAppPageStaticInfo(params)\n  }\n\n  return getPagesPageStaticInfo(params)\n}\n"],"names":["readFileSync","relative","LRUCache","extractExportedConstValue","parseModule","Log","SERVER_RUNTIME","MIDDLEWARE_FILENAME","PROXY_FILENAME","RSC_SUFFIX","RSC_SEGMENT_SUFFIX","RSC_SEGMENTS_DIR_SUFFIX","tryToParsePath","isAPIRoute","isEdgeRuntime","RSC_MODULE_TYPES","escapeStringRegexp","PAGE_TYPES","AppSegmentConfigSchemaKeys","parseAppSegmentConfig","reportZodError","PagesSegmentConfigSchemaKeys","parsePagesSegmentConfig","MiddlewareConfigInputSchema","SourceSchema","normalizeAppPath","normalizePagePath","isProxyFile","PARSE_PATTERN","APP_ROUTE_RSC_SUFFIX_MATCHER","APP_ROUTE_SEGMENT_PREFETCH_SUFFIX_MATCHER","APP_ROUTE_TRANSPORT_SUFFIX_MATCHER","ROOT_APP_ROUTE_TRANSPORT_MATCHER","MIDDLEWARE_DATA_SUFFIX_MATCHER","OPTIONAL_MIDDLEWARE_NEXT_DATA_PREFIX","CLIENT_MODULE_LABEL","ACTION_MODULE_LABEL","CLIENT_DIRECTIVE","SERVER_ACTION_DIRECTIVE","getRSCModuleInformation","source","isReactServerLayer","actionsJson","match","parsedActionsMeta","JSON","parse","undefined","clientInfoMatch","isClientRef","type","client","actionIds","clientRefsString","clientRefs","split","clientEntryType","server","checkExports","ast","expectedExports","page","exportsSet","Set","Array","isArray","body","getStaticProps","getServerSideProps","generateImageMetadata","generateSitemaps","generateStaticParams","exports","directives","hasLeadingNonDirectiveNode","node","expression","directive","value","add","declaration","declarations","includes","id","has","identifier","specifier","specifiers","orig","warn","validateMiddlewareProxyExports","pageFilePath","isDev","isMiddleware","isProxy","fileName","hasDefaultExport","hasMiddlewareExport","hasProxyExport","exportedIdentifier","exported","hasValidExport","relativePath","process","cwd","resolvedPath","startsWith","message","errorOnce","Error","tryToReadFile","filePath","shouldThrow","encoding","error","getMiddlewareMatchers","matcherOrMatchers","nextConfig","matchers","i18n","map","matcher","originalSource","rest","isRoot","locales","locale","sourceSuffix","basePath","result","safeParse","success","exit","regexp","data","regexStr","parseMiddlewareConfig","rawConfig","input","config","unstable_allowDynamic","regions","apiRouteWarnings","warnAboutExperimentalEdge","apiRoute","env","NODE_ENV","NEXT_PRIVATE_BUILD_WORKER","set","hadUnsupportedValue","warnedUnsupportedValueMap","warnAboutUnsupportedValue","isProductionBuild","NEXT_COMPILER_NAME","unsupported","path","getAppPageStaticInfo","content","test","APP","runtime","preferredRegion","maxDuration","rsc","exportedConfig","property","configResult","route","cacheComponents","isLayout","middleware","getPagesPageStaticInfo","PAGES","isAnAPIRoute","resolvedRuntime","nodejs","experimentalEdge","edge","getPageStaticInfo","params","pageType"],"mappings":"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","ignoreList":[0]}