{"version":3,"sources":["../../../../../src/build/webpack/plugins/next-types-plugin/index.ts"],"sourcesContent":["// DO NOT ADD NEW FEATURES TO THIS PLUGIN\n// DOING SO PREVENTS THEM FROM WORKING FOR TURBOPACK USERS.\n// FOLLOW THE PATTERN OF TYPED-ROUTES AND CACHE-LIFE GENERATION\n\nimport type { Rewrite, Redirect } from '../../../../lib/load-custom-routes'\n\nimport fs from 'fs/promises'\nimport { webpack, sources } from 'next/dist/compiled/webpack/webpack'\nimport path from 'path'\n\nimport { WEBPACK_LAYERS } from '../../../../lib/constants'\nimport { denormalizePagePath } from '../../../../shared/lib/page-path/denormalize-page-path'\nimport { ensureLeadingSlash } from '../../../../shared/lib/page-path/ensure-leading-slash'\nimport { normalizePathSep } from '../../../../shared/lib/page-path/normalize-path-sep'\nimport { HTTP_METHODS } from '../../../../server/web/http'\nimport { isDynamicRoute } from '../../../../shared/lib/router/utils'\nimport { normalizeAppPath } from '../../../../shared/lib/router/utils/app-paths'\nimport { getPageFromPath } from '../../../route-discovery'\nimport type { PageExtensions } from '../../../page-extensions-type'\nimport { getProxiedPluginState } from '../../../build-context'\n\nconst PLUGIN_NAME = 'NextTypesPlugin'\n\ntype Rewrites = {\n  fallback: Rewrite[]\n  afterFiles: Rewrite[]\n  beforeFiles: Rewrite[]\n}\n\ninterface Options {\n  dir: string\n  distDir: string\n  appDir: string\n  dev: boolean\n  isEdgeServer: boolean\n  pageExtensions: PageExtensions\n  originalRewrites: Rewrites | undefined\n  originalRedirects: Redirect[] | undefined\n}\n\nfunction createTypeGuardFile(\n  fullPath: string,\n  relativePath: string,\n  options: {\n    type: 'layout' | 'page' | 'route'\n    slots?: string[]\n  }\n) {\n  return `// File: ${fullPath}\nimport * as entry from '${relativePath}.js'\n${\n  options.type === 'route'\n    ? `import type { NextRequest } from 'next/server.js'`\n    : `import type { ResolvingMetadata, ResolvingViewport } from 'next/dist/lib/metadata/types/metadata-interface.js'`\n}\n\nimport type { InstantConfigForTypeCheckInternal } from 'next/dist/build/segment-config/app/app-segment-config.js'\n\ntype TEntry = typeof import('${relativePath}.js')\n\ntype SegmentParams<T extends Object = any> = T extends Record<string, any>\n  ? { [K in keyof T]: T[K] extends string ? string | string[] | undefined : never }\n  : T\n\n// Check that the entry is a valid entry\ncheckFields<Diff<{\n  ${\n    options.type === 'route'\n      ? HTTP_METHODS.map((method) => `${method}?: Function`).join('\\n  ')\n      : 'default: Function'\n  }\n  config?: {}\n  generateStaticParams?: Function\n  unstable_instant?: InstantConfigForTypeCheckInternal\n  unstable_dynamicStaleTime?: number\n  revalidate?: RevalidateRange<TEntry> | false\n  dynamic?: 'auto' | 'force-dynamic' | 'error' | 'force-static'\n  dynamicParams?: boolean\n  fetchCache?: 'auto' | 'force-no-store' | 'only-no-store' | 'default-no-store' | 'default-cache' | 'only-cache' | 'force-cache'\n  preferredRegion?: 'auto' | 'global' | 'home' | string | string[]\n  runtime?: 'nodejs' | 'experimental-edge' | 'edge'\n  maxDuration?: number\n  ${\n    options.type === 'route'\n      ? ''\n      : `\n  metadata?: any\n  generateMetadata?: Function\n  viewport?: any\n  generateViewport?: Function\n  `\n  }\n}, TEntry, ''>>()\n\n${options.type === 'route' ? `type RouteContext = { params: Promise<SegmentParams> }` : ''}\n${\n  options.type === 'route'\n    ? HTTP_METHODS.map(\n        (method) => `// Check the prop type of the entry function\nif ('${method}' in entry) {\n  checkFields<\n    Diff<\n      ParamCheck<Request | NextRequest>,\n      {\n        __tag__: '${method}'\n        __param_position__: 'first'\n        __param_type__: FirstArg<MaybeField<TEntry, '${method}'>>\n      },\n      '${method}'\n    >\n  >()\n  checkFields<\n    Diff<\n      ParamCheck<RouteContext>,\n      {\n        __tag__: '${method}'\n        __param_position__: 'second'\n        __param_type__: SecondArg<MaybeField<TEntry, '${method}'>>\n      },\n      '${method}'\n    >\n  >()\n  ${\n    ''\n    // Adding void to support never return type without explicit return:\n    // e.g. notFound() will interrupt the execution but the handler return type is inferred as void.\n    // x-ref: https://github.com/microsoft/TypeScript/issues/16608#issuecomment-309327984\n  }\n  checkFields<\n    Diff<\n      {\n        __tag__: '${method}',\n        __return_type__: Response | void | never | Promise<Response | void | never>\n      },\n      {\n        __tag__: '${method}',\n        __return_type__: ReturnType<MaybeField<TEntry, '${method}'>>\n      },\n      '${method}'\n    >\n  >()\n}\n`\n      ).join('')\n    : `// Check the prop type of the entry function\ncheckFields<Diff<${\n        options.type === 'page' ? 'PageProps' : 'LayoutProps'\n      }, FirstArg<TEntry['default']>, 'default'>>()\n\n// Check the arguments and return type of the generateMetadata function\nif ('generateMetadata' in entry) {\n  checkFields<Diff<${\n    options.type === 'page' ? 'PageProps' : 'LayoutProps'\n  }, FirstArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()\n  checkFields<Diff<ResolvingMetadata, SecondArg<MaybeField<TEntry, 'generateMetadata'>>, 'generateMetadata'>>()\n}\n\n// Check the arguments and return type of the generateViewport function\nif ('generateViewport' in entry) {\n  checkFields<Diff<${\n    options.type === 'page' ? 'PageProps' : 'LayoutProps'\n  }, FirstArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()\n  checkFields<Diff<ResolvingViewport, SecondArg<MaybeField<TEntry, 'generateViewport'>>, 'generateViewport'>>()\n}\n`\n}\n// Check the arguments and return type of the generateStaticParams function\nif ('generateStaticParams' in entry) {\n  checkFields<Diff<{ params: SegmentParams }, FirstArg<MaybeField<TEntry, 'generateStaticParams'>>, 'generateStaticParams'>>()\n  checkFields<Diff<{ __tag__: 'generateStaticParams', __return_type__: any[] | Promise<any[]> }, { __tag__: 'generateStaticParams', __return_type__: ReturnType<MaybeField<TEntry, 'generateStaticParams'>> }>>()\n}\n\nexport interface PageProps {\n  params?: Promise<SegmentParams>\n  searchParams?: Promise<any>\n}\nexport interface LayoutProps {\n  children?: React.ReactNode\n${\n  options.slots\n    ? options.slots.map((slot) => `  ${slot}: React.ReactNode`).join('\\n')\n    : ''\n}\n  params?: Promise<SegmentParams>\n}\n\n// =============\n// Utility types\ntype RevalidateRange<T> = T extends { revalidate: any } ? NonNegative<T['revalidate']> : never\n\n// If T is unknown or any, it will be an empty {} type. Otherwise, it will be the same as Omit<T, keyof Base>.\ntype OmitWithTag<T, K extends keyof any, _M> = Omit<T, K>\ntype Diff<Base, T extends Base, Message extends string = ''> = 0 extends (1 & T) ? {} : OmitWithTag<T, keyof Base, Message>\n\ntype FirstArg<T extends Function> = T extends (...args: [infer T, any]) => any ? unknown extends T ? any : T : never\ntype SecondArg<T extends Function> = T extends (...args: [any, infer T]) => any ? unknown extends T ? any : T : never\ntype MaybeField<T, K extends string> = T extends { [k in K]: infer G } ? G extends Function ? G : never : never\n\n${\n  options.type === 'route'\n    ? `type ParamCheck<T> = {\n  __tag__: string\n  __param_position__: string\n  __param_type__: T\n}`\n    : ''\n}\n\nfunction checkFields<_ extends { [k in keyof any]: never }>() {}\n\n// https://github.com/sindresorhus/type-fest\ntype Numeric = number | bigint\ntype Zero = 0 | 0n\ntype Negative<T extends Numeric> = T extends Zero ? never : \\`\\${T}\\` extends \\`-\\${string}\\` ? T : never\ntype NonNegative<T extends Numeric> = T extends Zero ? T : Negative<T> extends never ? T : '__invalid_negative_number__'\n`\n}\n\nasync function collectNamedSlots(layoutPath: string) {\n  const layoutDir = path.dirname(layoutPath)\n  const items = await fs.readdir(layoutDir, { withFileTypes: true })\n  const slots = []\n  for (const item of items) {\n    if (\n      item.isDirectory() &&\n      item.name.startsWith('@') &&\n      // `@children slots are matched to the children prop, and should not be handled separately for type-checking\n      item.name !== '@children'\n    ) {\n      slots.push(item.name.slice(1))\n    }\n  }\n  return slots\n}\n\n// By exposing the static route types separately as string literals,\n// editors can provide autocompletion for them. However it's currently not\n// possible to provide the same experience for dynamic routes.\n\nconst pluginState = getProxiedPluginState({\n  collectedRootParams: {} as Record<string, string[]>,\n  routeTypes: {\n    edge: {\n      static: [],\n      dynamic: [],\n    },\n    node: {\n      static: [],\n      dynamic: [],\n    },\n    extra: {\n      static: [],\n      dynamic: [],\n    },\n  } as Record<\n    'edge' | 'node' | 'extra',\n    Record<'static' | 'dynamic', string[]>\n  >,\n})\n\nfunction formatRouteToRouteType(route: string) {\n  const isDynamic = isDynamicRoute(route)\n  if (isDynamic) {\n    route = route\n      .split('/')\n      .map((part) => {\n        if (part.startsWith('[') && part.endsWith(']')) {\n          if (part.startsWith('[...')) {\n            // /[...slug]\n            return `\\${CatchAllSlug<T>}`\n          } else if (part.startsWith('[[...') && part.endsWith(']]')) {\n            // /[[...slug]]\n            return `\\${OptionalCatchAllSlug<T>}`\n          }\n          // /[slug]\n          return `\\${SafeSlug<T>}`\n        }\n        return part\n      })\n      .join('/')\n  }\n\n  return {\n    isDynamic,\n    routeType: route,\n  }\n}\n\nfunction getRootParamsFromLayouts(layouts: Record<string, string[]>) {\n  // Sort layouts by depth (descending)\n  const sortedLayouts = Object.entries(layouts).sort(\n    (a, b) => b[0].split('/').length - a[0].split('/').length\n  )\n\n  if (!sortedLayouts.length) {\n    return []\n  }\n\n  // we assume the shorted layout path is the root layout\n  let rootLayout = sortedLayouts[sortedLayouts.length - 1][0]\n\n  let rootParams = new Set<string>()\n  let isMultipleRootLayouts = false\n\n  for (const [layoutPath, params] of sortedLayouts) {\n    const allSegmentsAreDynamic = layoutPath\n      .split('/')\n      .slice(1, -1)\n      // match dynamic params but not catch-all or optional catch-all\n      .every((segment) => /^\\[[^[.\\]]+\\]$/.test(segment))\n\n    if (allSegmentsAreDynamic) {\n      if (isSubpath(rootLayout, layoutPath)) {\n        // Current path is a subpath of the root layout, update root\n        rootLayout = layoutPath\n        rootParams = new Set(params)\n      } else {\n        // Found another potential root layout\n        isMultipleRootLayouts = true\n        // Add any new params\n        for (const param of params) {\n          rootParams.add(param)\n        }\n      }\n    }\n  }\n\n  // Create result array\n  const result = Array.from(rootParams).map((param) => ({\n    param,\n    optional: isMultipleRootLayouts,\n  }))\n\n  return result\n}\n\nfunction isSubpath(parentLayoutPath: string, potentialChildLayoutPath: string) {\n  // we strip off the `layout` part of the path as those will always conflict with being a subpath\n  const parentSegments = parentLayoutPath.split('/').slice(1, -1)\n  const childSegments = potentialChildLayoutPath.split('/').slice(1, -1)\n\n  // child segments should be shorter or equal to parent segments to be a subpath\n  if (childSegments.length > parentSegments.length || !childSegments.length)\n    return false\n\n  // Verify all segment values are equal\n  return childSegments.every(\n    (childSegment, index) => childSegment === parentSegments[index]\n  )\n}\n\nfunction createServerDefinitions() {\n  return `\n  declare module 'next/server' {\n\n    import type { AsyncLocalStorage as NodeAsyncLocalStorage } from 'async_hooks'\n    declare global {\n      var AsyncLocalStorage: typeof NodeAsyncLocalStorage\n    }\n    export { NextFetchEvent } from 'next/dist/server/web/spec-extension/fetch-event'\n    export { NextRequest } from 'next/dist/server/web/spec-extension/request'\n    export { NextResponse } from 'next/dist/server/web/spec-extension/response'\n    export { NextMiddleware, MiddlewareConfig, NextProxy, ProxyConfig } from 'next/dist/server/web/types'\n    export { userAgentFromString } from 'next/dist/server/web/spec-extension/user-agent'\n    export { userAgent } from 'next/dist/server/web/spec-extension/user-agent'\n    export { URLPattern } from 'next/dist/compiled/@edge-runtime/primitives/url'\n    export { ImageResponse } from 'next/dist/server/web/spec-extension/image-response'\n    export type { ImageResponseOptions } from 'next/dist/compiled/@vercel/og/types'\n    export { after } from 'next/dist/server/after'\n    export { connection } from 'next/dist/server/request/connection'\n  }\n  `\n}\n\nconst appTypesBasePath = path.join('types', 'app')\n\nexport class NextTypesPlugin {\n  dir: string\n  distDir: string\n  appDir: string\n  dev: boolean\n  isEdgeServer: boolean\n  pageExtensions: string[]\n  pagesDir: string\n  distDirAbsolutePath: string\n\n  constructor(options: Options) {\n    this.dir = options.dir\n    this.distDir = options.distDir\n    this.appDir = options.appDir\n    this.dev = options.dev\n    this.isEdgeServer = options.isEdgeServer\n    this.pageExtensions = options.pageExtensions\n    this.pagesDir = path.join(this.appDir, '..', 'pages')\n    this.distDirAbsolutePath = path.join(this.dir, this.distDir)\n  }\n\n  getRelativePathFromAppTypesDir(moduleRelativePathToAppDir: string) {\n    const moduleAbsolutePath = path.join(\n      this.appDir,\n      moduleRelativePathToAppDir\n    )\n\n    const moduleInAppTypesAbsolutePath = path.join(\n      this.distDirAbsolutePath,\n      appTypesBasePath,\n      moduleRelativePathToAppDir\n    )\n\n    return path.relative(\n      moduleInAppTypesAbsolutePath + '/..',\n      moduleAbsolutePath\n    )\n  }\n\n  collectPage(filePath: string) {\n    const isApp = filePath.startsWith(this.appDir + path.sep)\n    const isPages = !isApp && filePath.startsWith(this.pagesDir + path.sep)\n\n    if (!isApp && !isPages) {\n      return\n    }\n\n    // Filter out non-page and non-route files in app dir\n    if (isApp && !/[/\\\\](?:page|route)\\.[^.]+$/.test(filePath)) {\n      return\n    }\n\n    // Filter out non-page files in pages dir\n    if (\n      isPages &&\n      /[/\\\\](?:_app|_document|_error|404|500)\\.[^.]+$/.test(filePath)\n    ) {\n      return\n    }\n\n    let route = (isApp ? normalizeAppPath : denormalizePagePath)(\n      ensureLeadingSlash(\n        getPageFromPath(\n          path.relative(isApp ? this.appDir : this.pagesDir, filePath),\n          this.pageExtensions\n        )\n      )\n    )\n\n    const { isDynamic, routeType } = formatRouteToRouteType(route)\n\n    pluginState.routeTypes[this.isEdgeServer ? 'edge' : 'node'][\n      isDynamic ? 'dynamic' : 'static'\n    ].push(routeType)\n  }\n\n  apply(compiler: webpack.Compiler) {\n    // From asset root to dist root\n    const assetDirRelative = this.dev\n      ? '..'\n      : this.isEdgeServer\n        ? '..'\n        : '../..'\n\n    const handleModule = async (\n      mod: webpack.NormalModule,\n      compilation: webpack.Compilation\n    ) => {\n      if (!mod.resource) return\n\n      const pageExtensionsRegex = new RegExp(\n        `\\\\.(${this.pageExtensions.join('|')})$`\n      )\n\n      if (!pageExtensionsRegex.test(mod.resource)) return\n\n      if (!mod.resource.startsWith(this.appDir + path.sep)) {\n        if (!this.dev) {\n          if (mod.resource.startsWith(this.pagesDir + path.sep)) {\n            this.collectPage(mod.resource)\n          }\n        }\n        return\n      }\n      if (mod.layer !== WEBPACK_LAYERS.reactServerComponents) return\n\n      // skip for /app/_private dir convention\n      // matches <app-dir>/**/_*\n      const IS_PRIVATE = /(?:\\/[^/]+)*\\/_.*$/.test(\n        mod.resource.replace(this.appDir, '')\n      )\n      if (IS_PRIVATE) return\n\n      const IS_LAYOUT = /[/\\\\]layout\\.[^./\\\\]+$/.test(mod.resource)\n      const IS_PAGE = !IS_LAYOUT && /[/\\\\]page\\.[^.]+$/.test(mod.resource)\n      const IS_ROUTE = !IS_PAGE && /[/\\\\]route\\.[^.]+$/.test(mod.resource)\n      const IS_IMPORTABLE = /\\.(js|jsx|ts|tsx|mjs|cjs)$/.test(mod.resource)\n      const relativePathToApp = path.relative(this.appDir, mod.resource)\n\n      if (!this.dev) {\n        if (IS_PAGE || IS_ROUTE) {\n          this.collectPage(mod.resource)\n        }\n      }\n\n      const typePath = path.join(\n        appTypesBasePath,\n        relativePathToApp.replace(pageExtensionsRegex, '.ts')\n      )\n      const relativeImportPath = normalizePathSep(\n        path\n          .join(this.getRelativePathFromAppTypesDir(relativePathToApp))\n          .replace(pageExtensionsRegex, '')\n      )\n\n      const assetPath = path.join(assetDirRelative, typePath)\n\n      // Typescript won’t allow relative-importing (for example) a .mdx file using the .js extension\n      // so for now we only generate “type guard files” for files that typescript can transform\n      if (!IS_IMPORTABLE) return\n\n      if (IS_LAYOUT) {\n        const rootLayoutPath = normalizeAppPath(\n          ensureLeadingSlash(\n            getPageFromPath(\n              path.relative(this.appDir, mod.resource),\n              this.pageExtensions\n            )\n          )\n        )\n\n        const foundParams = Array.from(\n          rootLayoutPath.matchAll(/\\[(.*?)\\]/g),\n          (match) => match[1]\n        )\n\n        pluginState.collectedRootParams[rootLayoutPath] = foundParams\n\n        const slots = await collectNamedSlots(mod.resource)\n        compilation.emitAsset(\n          assetPath,\n          new sources.RawSource(\n            createTypeGuardFile(mod.resource, relativeImportPath, {\n              type: 'layout',\n              slots,\n            })\n          ) as unknown as webpack.sources.RawSource\n        )\n      } else if (IS_PAGE) {\n        compilation.emitAsset(\n          assetPath,\n          new sources.RawSource(\n            createTypeGuardFile(mod.resource, relativeImportPath, {\n              type: 'page',\n            })\n          ) as unknown as webpack.sources.RawSource\n        )\n      } else if (IS_ROUTE) {\n        compilation.emitAsset(\n          assetPath,\n          new sources.RawSource(\n            createTypeGuardFile(mod.resource, relativeImportPath, {\n              type: 'route',\n            })\n          ) as unknown as webpack.sources.RawSource\n        )\n      }\n    }\n\n    compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {\n      compilation.hooks.processAssets.tapAsync(\n        {\n          name: PLUGIN_NAME,\n          stage: webpack.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_HASH,\n        },\n        async (_, callback) => {\n          const promises: Promise<any>[] = []\n\n          // Clear routes\n          if (this.isEdgeServer) {\n            pluginState.routeTypes.edge.dynamic = []\n            pluginState.routeTypes.edge.static = []\n          } else {\n            pluginState.routeTypes.node.dynamic = []\n            pluginState.routeTypes.node.static = []\n          }\n\n          compilation.chunkGroups.forEach((chunkGroup) => {\n            chunkGroup.chunks.forEach((chunk) => {\n              if (!chunk.name) return\n\n              // Here we only track page and route chunks.\n              if (\n                !chunk.name.startsWith('pages/') &&\n                !(\n                  chunk.name.startsWith('app/') &&\n                  (chunk.name.endsWith('/page') ||\n                    chunk.name.endsWith('/route'))\n                )\n              ) {\n                return\n              }\n\n              const chunkModules =\n                compilation.chunkGraph.getChunkModulesIterable(\n                  chunk\n                ) as Iterable<webpack.NormalModule>\n              for (const mod of chunkModules) {\n                promises.push(handleModule(mod, compilation))\n\n                // If this is a concatenation, register each child to the parent ID.\n                const anyModule = mod as unknown as {\n                  modules: webpack.NormalModule[]\n                }\n                if (anyModule.modules) {\n                  anyModule.modules.forEach((concatenatedMod) => {\n                    promises.push(handleModule(concatenatedMod, compilation))\n                  })\n                }\n              }\n            })\n          })\n\n          await Promise.all(promises)\n\n          const rootParams = getRootParamsFromLayouts(\n            pluginState.collectedRootParams\n          )\n          // If we discovered rootParams, we'll override the `next/server` types\n          // since we're able to determine the root params at build time.\n          if (rootParams.length > 0) {\n            const serverTypesPath = path.join(\n              assetDirRelative,\n              'types/server.d.ts'\n            )\n\n            compilation.emitAsset(\n              serverTypesPath,\n              new sources.RawSource(\n                createServerDefinitions()\n              ) as unknown as webpack.sources.RawSource\n            )\n          }\n\n          // Support `\"moduleResolution\": \"Node16\" | \"NodeNext\"` with `\"type\": \"module\"`\n\n          const packageJsonAssetPath = path.join(\n            assetDirRelative,\n            'types/package.json'\n          )\n\n          compilation.emitAsset(\n            packageJsonAssetPath,\n            new sources.RawSource(\n              '{\"type\": \"module\"}'\n            ) as unknown as webpack.sources.RawSource\n          )\n\n          callback()\n        }\n      )\n    })\n  }\n}\n"],"names":["NextTypesPlugin","PLUGIN_NAME","createTypeGuardFile","fullPath","relativePath","options","type","HTTP_METHODS","map","method","join","slots","slot","collectNamedSlots","layoutPath","layoutDir","path","dirname","items","fs","readdir","withFileTypes","item","isDirectory","name","startsWith","push","slice","pluginState","getProxiedPluginState","collectedRootParams","routeTypes","edge","static","dynamic","node","extra","formatRouteToRouteType","route","isDynamic","isDynamicRoute","split","part","endsWith","routeType","getRootParamsFromLayouts","layouts","sortedLayouts","Object","entries","sort","a","b","length","rootLayout","rootParams","Set","isMultipleRootLayouts","params","allSegmentsAreDynamic","every","segment","test","isSubpath","param","add","result","Array","from","optional","parentLayoutPath","potentialChildLayoutPath","parentSegments","childSegments","childSegment","index","createServerDefinitions","appTypesBasePath","constructor","dir","distDir","appDir","dev","isEdgeServer","pageExtensions","pagesDir","distDirAbsolutePath","getRelativePathFromAppTypesDir","moduleRelativePathToAppDir","moduleAbsolutePath","moduleInAppTypesAbsolutePath","relative","collectPage","filePath","isApp","sep","isPages","normalizeAppPath","denormalizePagePath","ensureLeadingSlash","getPageFromPath","apply","compiler","assetDirRelative","handleModule","mod","compilation","resource","pageExtensionsRegex","RegExp","layer","WEBPACK_LAYERS","reactServerComponents","IS_PRIVATE","replace","IS_LAYOUT","IS_PAGE","IS_ROUTE","IS_IMPORTABLE","relativePathToApp","typePath","relativeImportPath","normalizePathSep","assetPath","rootLayoutPath","foundParams","matchAll","match","emitAsset","sources","RawSource","hooks","tap","processAssets","tapAsync","stage","webpack","Compilation","PROCESS_ASSETS_STAGE_OPTIMIZE_HASH","_","callback","promises","chunkGroups","forEach","chunkGroup","chunks","chunk","chunkModules","chunkGraph","getChunkModulesIterable","anyModule","modules","concatenatedMod","Promise","all","serverTypesPath","packageJsonAssetPath"],"mappings":"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","ignoreList":[0]}