{"version":3,"sources":["../../../../../src/shared/lib/turbopack/manifest-loader.ts"],"sourcesContent":["import type {\n  EdgeFunctionDefinition,\n  MiddlewareManifest,\n} from '../../../build/webpack/plugins/middleware-plugin'\nimport type { BuildManifest } from '../../../server/get-page-files'\nimport type { PagesManifest } from '../../../build/webpack/plugins/pages-manifest-plugin'\nimport type { ActionManifest } from '../../../build/webpack/plugins/flight-client-entry-plugin'\nimport type { NextFontManifest } from '../../../build/webpack/plugins/next-font-manifest-plugin'\nimport type { REACT_LOADABLE_MANIFEST } from '../constants'\nimport {\n  APP_PATHS_MANIFEST,\n  BUILD_MANIFEST,\n  CLIENT_STATIC_FILES_PATH,\n  INTERCEPTION_ROUTE_REWRITE_MANIFEST,\n  MIDDLEWARE_BUILD_MANIFEST,\n  MIDDLEWARE_MANIFEST,\n  NEXT_FONT_MANIFEST,\n  PAGES_MANIFEST,\n  SERVER_REFERENCE_MANIFEST,\n  SUBRESOURCE_INTEGRITY_MANIFEST,\n  TURBOPACK_CLIENT_BUILD_MANIFEST,\n  TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST,\n} from '../constants'\nimport { join, posix } from 'path'\nimport { readFileSync } from 'fs'\nimport type { SetupOpts } from '../../../server/lib/router-utils/setup-dev-bundler'\nimport { deleteCache } from '../../../server/dev/require-cache'\nimport { writeFileAtomic } from '../../../lib/fs/write-atomic'\nimport getAssetPathFromRoute from '../router/utils/get-asset-path-from-route'\nimport { getEntryKey, type EntryKey } from './entry-key'\nimport type { CustomRoutes } from '../../../lib/load-custom-routes'\nimport { getSortedRoutes } from '../router/utils'\nimport { existsSync } from 'fs'\nimport {\n  addMetadataIdToRoute,\n  addRouteSuffix,\n  removeRouteSuffix,\n} from '../../../server/dev/turbopack-utils'\nimport { tryToParsePath } from '../../../lib/try-to-parse-path'\nimport { safePathToRegexp } from '../router/utils/route-match-utils'\nimport type { Entrypoints } from '../../../build/swc/types'\nimport {\n  normalizeRewritesForBuildManifest,\n  type ClientBuildManifest,\n  srcEmptySsgManifest,\n  processRoute,\n  createEdgeRuntimeManifest,\n} from '../../../build/webpack/plugins/build-manifest-plugin-utils'\nimport type { SubresourceIntegrityManifest } from '../../../build'\n\ninterface InstrumentationDefinition {\n  files: string[]\n  name: 'instrumentation'\n}\n\ntype TurbopackMiddlewareManifest = MiddlewareManifest & {\n  instrumentation?: InstrumentationDefinition\n}\n\ntype ManifestName =\n  | typeof MIDDLEWARE_MANIFEST\n  | typeof BUILD_MANIFEST\n  | typeof PAGES_MANIFEST\n  | typeof APP_PATHS_MANIFEST\n  | `${typeof SERVER_REFERENCE_MANIFEST}.json`\n  | `${typeof SUBRESOURCE_INTEGRITY_MANIFEST}.json`\n  | `${typeof NEXT_FONT_MANIFEST}.json`\n  | typeof REACT_LOADABLE_MANIFEST\n  | typeof TURBOPACK_CLIENT_BUILD_MANIFEST\n\nconst getManifestPath = (\n  page: string,\n  distDir: string,\n  name: ManifestName,\n  type: string,\n  firstCall: boolean\n) => {\n  let manifestPath = posix.join(\n    distDir,\n    `server`,\n    type,\n    type === 'middleware' || type === 'instrumentation'\n      ? ''\n      : type === 'app'\n        ? page\n        : getAssetPathFromRoute(page),\n    name\n  )\n\n  if (firstCall) {\n    const isSitemapRoute = /[\\\\/]sitemap(.xml)?\\/route$/.test(page)\n    // Check the ambiguity of /sitemap and /sitemap.xml\n    if (isSitemapRoute && !existsSync(manifestPath)) {\n      manifestPath = getManifestPath(\n        page.replace(/\\/sitemap\\/route$/, '/sitemap.xml/route'),\n        distDir,\n        name,\n        type,\n        false\n      )\n    }\n    // existsSync is faster than using the async version\n    if (!existsSync(manifestPath) && page.endsWith('/route')) {\n      // TODO: Improve implementation of metadata routes, currently it requires this extra check for the variants of the files that can be written.\n      let basePage = removeRouteSuffix(page)\n      // For sitemap.xml routes with generateSitemaps, the manifest is at\n      // /sitemap/[__metadata_id__]/route (without .xml), because the route\n      // handler serves at /sitemap/[id] not /sitemap.xml/[id]\n      if (basePage.endsWith('/sitemap.xml')) {\n        basePage = basePage.slice(0, -'.xml'.length)\n      }\n      let metadataPage = addRouteSuffix(addMetadataIdToRoute(basePage))\n      manifestPath = getManifestPath(metadataPage, distDir, name, type, false)\n    }\n  }\n\n  return manifestPath\n}\n\nfunction readPartialManifestContent(\n  distDir: string,\n  name: ManifestName,\n  pageName: string,\n  type: 'pages' | 'app' | 'middleware' | 'instrumentation' = 'pages'\n): string {\n  const page = pageName\n  const manifestPath = getManifestPath(page, distDir, name, type, true)\n  return readFileSync(posix.join(manifestPath), 'utf-8')\n}\n\n/// Helper class that stores a map of manifests and tracks if they have changed\n/// since the last time they were written to disk. This is used to avoid\n/// unnecessary writes to disk.\nclass ManifestsMap<K, V> {\n  private rawMap = new Map<K, string>()\n  private map = new Map<K, V>()\n  private extraInvalidationKey: string | undefined = undefined\n  private changed = true\n\n  set(key: K, value: string) {\n    if (this.rawMap.get(key) === value) return\n    this.changed = true\n    this.rawMap.set(key, value)\n    this.map.set(key, JSON.parse(value))\n  }\n\n  delete(key: K) {\n    if (this.map.has(key)) {\n      this.changed = true\n      this.rawMap.delete(key)\n      this.map.delete(key)\n    }\n  }\n\n  get(key: K) {\n    return this.map.get(key)\n  }\n\n  takeChanged(extraInvalidationKey?: any) {\n    let changed = this.changed\n    if (extraInvalidationKey !== undefined) {\n      const stringified = JSON.stringify(extraInvalidationKey)\n      if (this.extraInvalidationKey !== stringified) {\n        this.extraInvalidationKey = stringified\n        changed = true\n      }\n    }\n    this.changed = false\n    return changed\n  }\n\n  values() {\n    return this.map.values()\n  }\n}\n\nexport class TurbopackManifestLoader {\n  private actionManifests: ManifestsMap<EntryKey, ActionManifest> =\n    new ManifestsMap()\n  private appPathsManifests: ManifestsMap<EntryKey, PagesManifest> =\n    new ManifestsMap()\n  private buildManifests: ManifestsMap<EntryKey, BuildManifest> =\n    new ManifestsMap()\n  private clientBuildManifests: ManifestsMap<EntryKey, ClientBuildManifest> =\n    new ManifestsMap()\n  private fontManifests: ManifestsMap<EntryKey, NextFontManifest> =\n    new ManifestsMap()\n  private middlewareManifests: ManifestsMap<\n    EntryKey,\n    TurbopackMiddlewareManifest\n  > = new ManifestsMap()\n  private pagesManifests: ManifestsMap<string, PagesManifest> =\n    new ManifestsMap()\n  private sriManifests: ManifestsMap<EntryKey, SubresourceIntegrityManifest> =\n    new ManifestsMap()\n  private encryptionKey: string\n  /// interceptionRewrites that have been written to disk\n  /// This is used to avoid unnecessary writes if the rewrites haven't changed\n  private cachedInterceptionRewrites: string | undefined = undefined\n  private pendingCacheDeletes: string[] = []\n\n  private readonly distDir: string\n  private readonly buildId: string\n  private readonly dev: boolean\n  private readonly sriEnabled: boolean\n\n  constructor({\n    distDir,\n    buildId,\n    encryptionKey,\n    dev,\n    sriEnabled,\n  }: {\n    buildId: string\n    distDir: string\n    encryptionKey: string\n    dev: boolean\n    sriEnabled: boolean\n  }) {\n    this.distDir = distDir\n    this.buildId = buildId\n    this.encryptionKey = encryptionKey\n    this.dev = dev\n    this.sriEnabled = sriEnabled\n  }\n\n  delete(key: EntryKey) {\n    this.actionManifests.delete(key)\n    this.appPathsManifests.delete(key)\n    this.buildManifests.delete(key)\n    this.clientBuildManifests.delete(key)\n    this.fontManifests.delete(key)\n    this.middlewareManifests.delete(key)\n    this.pagesManifests.delete(key)\n  }\n\n  loadActionManifest(pageName: string): void {\n    this.actionManifests.set(\n      getEntryKey('app', 'server', pageName),\n      readPartialManifestContent(\n        this.distDir,\n        `${SERVER_REFERENCE_MANIFEST}.json`,\n        pageName,\n        'app'\n      )\n    )\n  }\n\n  private mergeActionManifests(manifests: Iterable<ActionManifest>) {\n    type ActionEntries = ActionManifest['edge' | 'node']\n    const manifest: ActionManifest = {\n      node: {},\n      edge: {},\n      encryptionKey: this.encryptionKey,\n    }\n\n    function mergeActionIds(\n      actionEntries: ActionEntries,\n      other: ActionEntries\n    ): void {\n      for (const key in other) {\n        const action = (actionEntries[key] ??= {\n          workers: {},\n        })\n        action.filename = other[key].filename\n        action.exportedName = other[key].exportedName\n        Object.assign(action.workers, other[key].workers)\n      }\n    }\n\n    for (const m of manifests) {\n      mergeActionIds(manifest.node, m.node)\n      mergeActionIds(manifest.edge, m.edge)\n    }\n    for (const key in manifest.node) {\n      const entry = manifest.node[key]\n      entry.workers = sortObjectByKey(entry.workers)\n    }\n    for (const key in manifest.edge) {\n      const entry = manifest.edge[key]\n      entry.workers = sortObjectByKey(entry.workers)\n    }\n\n    return manifest\n  }\n\n  private writeActionManifest(): void {\n    if (!this.actionManifests.takeChanged()) {\n      return\n    }\n    const actionManifest = this.mergeActionManifests(\n      this.actionManifests.values()\n    )\n    const actionManifestJsonPath = join(\n      this.distDir,\n      'server',\n      `${SERVER_REFERENCE_MANIFEST}.json`\n    )\n    const actionManifestJsPath = join(\n      this.distDir,\n      'server',\n      `${SERVER_REFERENCE_MANIFEST}.js`\n    )\n    const json = JSON.stringify(actionManifest, null, 2)\n    this.pendingCacheDeletes.push(actionManifestJsonPath)\n    this.pendingCacheDeletes.push(actionManifestJsPath)\n    writeFileAtomic(actionManifestJsonPath, json)\n    writeFileAtomic(\n      actionManifestJsPath,\n      `self.__RSC_SERVER_MANIFEST=${JSON.stringify(json)}`\n    )\n  }\n\n  loadAppPathsManifest(pageName: string): void {\n    this.appPathsManifests.set(\n      getEntryKey('app', 'server', pageName),\n      readPartialManifestContent(\n        this.distDir,\n        APP_PATHS_MANIFEST,\n        pageName,\n        'app'\n      )\n    )\n  }\n\n  private writeAppPathsManifest(): void {\n    if (!this.appPathsManifests.takeChanged()) {\n      return\n    }\n    const appPathsManifest = this.mergePagesManifests(\n      this.appPathsManifests.values()\n    )\n    const appPathsManifestPath = join(\n      this.distDir,\n      'server',\n      APP_PATHS_MANIFEST\n    )\n    this.pendingCacheDeletes.push(appPathsManifestPath)\n    writeFileAtomic(\n      appPathsManifestPath,\n      JSON.stringify(appPathsManifest, null, 2)\n    )\n  }\n\n  private writeSriManifest(): void {\n    if (!this.sriEnabled || !this.sriManifests.takeChanged()) {\n      return\n    }\n    const sriManifest = this.mergeSriManifests(this.sriManifests.values())\n    const pathJson = join(\n      this.distDir,\n      'server',\n      `${SUBRESOURCE_INTEGRITY_MANIFEST}.json`\n    )\n    const pathJs = join(\n      this.distDir,\n      'server',\n      `${SUBRESOURCE_INTEGRITY_MANIFEST}.js`\n    )\n    this.pendingCacheDeletes.push(pathJson)\n    this.pendingCacheDeletes.push(pathJs)\n    writeFileAtomic(pathJson, JSON.stringify(sriManifest, null, 2))\n    writeFileAtomic(\n      pathJs,\n      `self.__SUBRESOURCE_INTEGRITY_MANIFEST=${JSON.stringify(\n        JSON.stringify(sriManifest)\n      )}`\n    )\n  }\n\n  loadBuildManifest(pageName: string, type: 'app' | 'pages' = 'pages'): void {\n    this.buildManifests.set(\n      getEntryKey(type, 'server', pageName),\n      readPartialManifestContent(this.distDir, BUILD_MANIFEST, pageName, type)\n    )\n  }\n\n  loadClientBuildManifest(\n    pageName: string,\n    type: 'app' | 'pages' = 'pages'\n  ): void {\n    this.clientBuildManifests.set(\n      getEntryKey(type, 'server', pageName),\n      readPartialManifestContent(\n        this.distDir,\n        TURBOPACK_CLIENT_BUILD_MANIFEST,\n        pageName,\n        type\n      )\n    )\n  }\n\n  loadSriManifest(pageName: string, type: 'app' | 'pages' = 'pages'): void {\n    if (!this.sriEnabled) return\n    this.sriManifests.set(\n      getEntryKey(type, 'client', pageName),\n      readPartialManifestContent(\n        this.distDir,\n        `${SUBRESOURCE_INTEGRITY_MANIFEST}.json`,\n        pageName,\n        type\n      )\n    )\n  }\n\n  private mergeBuildManifests(\n    manifests: Iterable<BuildManifest>,\n    lowPriorityFiles: string[]\n  ) {\n    const manifest: Partial<BuildManifest> & Pick<BuildManifest, 'pages'> = {\n      pages: {\n        '/_app': [],\n      },\n      // Something in next.js depends on these to exist even for app dir rendering\n      devFiles: [],\n      polyfillFiles: [],\n      lowPriorityFiles,\n      rootMainFiles: [],\n    }\n    for (const m of manifests) {\n      Object.assign(manifest.pages, m.pages)\n      if (m.rootMainFiles.length) manifest.rootMainFiles = m.rootMainFiles\n      // polyfillFiles should always be the same, so we can overwrite instead of actually merging\n      if (m.polyfillFiles.length) manifest.polyfillFiles = m.polyfillFiles\n    }\n    manifest.pages = sortObjectByKey(manifest.pages) as BuildManifest['pages']\n    return manifest\n  }\n\n  private mergeClientBuildManifests(\n    manifests: Iterable<ClientBuildManifest>,\n    rewrites: CustomRoutes['rewrites'],\n    sortedPageKeys: string[]\n  ): ClientBuildManifest {\n    const manifest = {\n      __rewrites: rewrites as any,\n      sortedPages: sortedPageKeys,\n    }\n    for (const m of manifests) {\n      Object.assign(manifest, m)\n    }\n    return sortObjectByKey(manifest)\n  }\n\n  private writeInterceptionRouteRewriteManifest(\n    devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined,\n    productionRewrites: CustomRoutes['rewrites'] | undefined\n  ): void {\n    const rewrites = productionRewrites ?? {\n      ...devRewrites,\n      beforeFiles: (devRewrites?.beforeFiles ?? []).map(processRoute),\n      afterFiles: (devRewrites?.afterFiles ?? []).map(processRoute),\n      fallback: (devRewrites?.fallback ?? []).map(processRoute),\n    }\n\n    const interceptionRewrites = JSON.stringify(\n      rewrites.beforeFiles.filter(\n        (\n          require('../../../lib/is-interception-route-rewrite') as typeof import('../../../lib/is-interception-route-rewrite')\n        ).isInterceptionRouteRewrite\n      )\n    )\n\n    if (this.cachedInterceptionRewrites === interceptionRewrites) {\n      return\n    }\n    this.cachedInterceptionRewrites = interceptionRewrites\n\n    const interceptionRewriteManifestPath = join(\n      this.distDir,\n      'server',\n      `${INTERCEPTION_ROUTE_REWRITE_MANIFEST}.js`\n    )\n    this.pendingCacheDeletes.push(interceptionRewriteManifestPath)\n\n    writeFileAtomic(\n      interceptionRewriteManifestPath,\n      `self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST=${JSON.stringify(\n        interceptionRewrites\n      )};`\n    )\n  }\n\n  private writeBuildManifest(lowPriorityFiles: string[]): void {\n    if (!this.buildManifests.takeChanged()) {\n      return\n    }\n    const buildManifest = this.mergeBuildManifests(\n      this.buildManifests.values(),\n      lowPriorityFiles\n    )\n\n    const buildManifestPath = join(this.distDir, BUILD_MANIFEST)\n    const middlewareBuildManifestPath = join(\n      this.distDir,\n      'server',\n      `${MIDDLEWARE_BUILD_MANIFEST}.js`\n    )\n\n    this.pendingCacheDeletes.push(buildManifestPath)\n    this.pendingCacheDeletes.push(middlewareBuildManifestPath)\n    writeFileAtomic(buildManifestPath, JSON.stringify(buildManifest, null, 2))\n    writeFileAtomic(\n      middlewareBuildManifestPath,\n      createEdgeRuntimeManifest(buildManifest)\n    )\n\n    // Write fallback build manifest\n    const fallbackBuildManifest = this.mergeBuildManifests(\n      [\n        this.buildManifests.get(getEntryKey('pages', 'server', '_app')),\n        this.buildManifests.get(getEntryKey('pages', 'server', '_error')),\n      ].filter(Boolean) as BuildManifest[],\n      lowPriorityFiles\n    )\n    const fallbackBuildManifestPath = join(\n      this.distDir,\n      `fallback-${BUILD_MANIFEST}`\n    )\n    this.pendingCacheDeletes.push(fallbackBuildManifestPath)\n    writeFileAtomic(\n      fallbackBuildManifestPath,\n      JSON.stringify(fallbackBuildManifest, null, 2)\n    )\n  }\n\n  private writeClientBuildManifest(\n    entrypoints: Entrypoints,\n    devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined,\n    productionRewrites: CustomRoutes['rewrites'] | undefined\n  ): string[] {\n    const rewrites = normalizeRewritesForBuildManifest(\n      productionRewrites ?? {\n        ...devRewrites,\n        beforeFiles: (devRewrites?.beforeFiles ?? []).map(processRoute),\n        afterFiles: (devRewrites?.afterFiles ?? []).map(processRoute),\n        fallback: (devRewrites?.fallback ?? []).map(processRoute),\n      }\n    )\n\n    const pagesKeys = [...entrypoints.page.keys()]\n    if (entrypoints.global.app) {\n      pagesKeys.push('/_app')\n    }\n    if (entrypoints.global.error) {\n      pagesKeys.push('/_error')\n    }\n\n    const sortedPageKeys = getSortedRoutes(pagesKeys)\n\n    let buildManifestPath = posix.join(\n      CLIENT_STATIC_FILES_PATH,\n      this.buildId,\n      '_buildManifest.js'\n    )\n    let ssgManifestPath = posix.join(\n      CLIENT_STATIC_FILES_PATH,\n      this.buildId,\n      '_ssgManifest.js'\n    )\n\n    if (\n      this.dev &&\n      !this.clientBuildManifests.takeChanged({ rewrites, sortedPageKeys })\n    ) {\n      return [buildManifestPath, ssgManifestPath]\n    }\n\n    const clientBuildManifest = this.mergeClientBuildManifests(\n      this.clientBuildManifests.values(),\n      rewrites,\n      sortedPageKeys\n    )\n    const clientBuildManifestJs = `self.__BUILD_MANIFEST = ${JSON.stringify(\n      clientBuildManifest,\n      null,\n      2\n    )};self.__BUILD_MANIFEST_CB && self.__BUILD_MANIFEST_CB()`\n\n    writeFileAtomic(\n      join(this.distDir, buildManifestPath),\n      clientBuildManifestJs\n    )\n    // This is just an empty placeholder, the actual manifest is written after prerendering in\n    // packages/next/src/build/index.ts\n    writeFileAtomic(join(this.distDir, ssgManifestPath), srcEmptySsgManifest)\n\n    return [buildManifestPath, ssgManifestPath]\n  }\n\n  loadFontManifest(pageName: string, type: 'app' | 'pages' = 'pages'): void {\n    this.fontManifests.set(\n      getEntryKey(type, 'server', pageName),\n      readPartialManifestContent(\n        this.distDir,\n        `${NEXT_FONT_MANIFEST}.json`,\n        pageName,\n        type\n      )\n    )\n  }\n\n  private mergeFontManifests(manifests: Iterable<NextFontManifest>) {\n    const manifest: NextFontManifest = {\n      app: {},\n      appUsingSizeAdjust: false,\n      pages: {},\n      pagesUsingSizeAdjust: false,\n    }\n    for (const m of manifests) {\n      Object.assign(manifest.app, m.app)\n      Object.assign(manifest.pages, m.pages)\n\n      manifest.appUsingSizeAdjust =\n        manifest.appUsingSizeAdjust || m.appUsingSizeAdjust\n      manifest.pagesUsingSizeAdjust =\n        manifest.pagesUsingSizeAdjust || m.pagesUsingSizeAdjust\n    }\n    manifest.app = sortObjectByKey(manifest.app)\n    manifest.pages = sortObjectByKey(manifest.pages)\n    return manifest\n  }\n\n  private async writeNextFontManifest(): Promise<void> {\n    if (!this.fontManifests.takeChanged()) {\n      return\n    }\n    const fontManifest = this.mergeFontManifests(this.fontManifests.values())\n    const json = JSON.stringify(fontManifest, null, 2)\n\n    const fontManifestJsonPath = join(\n      this.distDir,\n      'server',\n      `${NEXT_FONT_MANIFEST}.json`\n    )\n    const fontManifestJsPath = join(\n      this.distDir,\n      'server',\n      `${NEXT_FONT_MANIFEST}.js`\n    )\n    this.pendingCacheDeletes.push(fontManifestJsonPath)\n    this.pendingCacheDeletes.push(fontManifestJsPath)\n    writeFileAtomic(fontManifestJsonPath, json)\n    writeFileAtomic(\n      fontManifestJsPath,\n      `self.__NEXT_FONT_MANIFEST=${JSON.stringify(json)}`\n    )\n  }\n\n  /**\n   * @returns If the manifest was written or not\n   */\n  loadMiddlewareManifest(\n    pageName: string,\n    type: 'pages' | 'app' | 'middleware' | 'instrumentation'\n  ): boolean {\n    const middlewareManifestPath = getManifestPath(\n      pageName,\n      this.distDir,\n      MIDDLEWARE_MANIFEST,\n      type,\n      true\n    )\n\n    // middlewareManifest is actually \"edge manifest\" and not all routes are edge runtime. If it is not written we skip it.\n    if (!existsSync(middlewareManifestPath)) {\n      return false\n    }\n\n    this.middlewareManifests.set(\n      getEntryKey(\n        type === 'middleware' || type === 'instrumentation' ? 'root' : type,\n        'server',\n        pageName\n      ),\n      readPartialManifestContent(\n        this.distDir,\n        MIDDLEWARE_MANIFEST,\n        pageName,\n        type\n      )\n    )\n\n    return true\n  }\n\n  getMiddlewareManifest(key: EntryKey) {\n    return this.middlewareManifests.get(key)\n  }\n\n  deleteMiddlewareManifest(key: EntryKey) {\n    return this.middlewareManifests.delete(key)\n  }\n\n  private mergeMiddlewareManifests(\n    manifests: Iterable<TurbopackMiddlewareManifest>\n  ): MiddlewareManifest {\n    const manifest: MiddlewareManifest = {\n      version: 3,\n      middleware: {},\n      sortedMiddleware: [],\n      functions: {},\n    }\n    let instrumentation: InstrumentationDefinition | undefined = undefined\n    for (const m of manifests) {\n      Object.assign(manifest.functions, m.functions)\n      Object.assign(manifest.middleware, m.middleware)\n      if (m.instrumentation) {\n        instrumentation = m.instrumentation\n      }\n    }\n    manifest.functions = sortObjectByKey(manifest.functions)\n    manifest.middleware = sortObjectByKey(manifest.middleware)\n    const updateFunctionDefinition = (\n      fun: EdgeFunctionDefinition\n    ): EdgeFunctionDefinition => {\n      return {\n        ...fun,\n        files: [...(instrumentation?.files ?? []), ...fun.files],\n      }\n    }\n    for (const key of Object.keys(manifest.middleware)) {\n      const value = manifest.middleware[key]\n      manifest.middleware[key] = updateFunctionDefinition(value)\n    }\n    for (const key of Object.keys(manifest.functions)) {\n      const value = manifest.functions[key]\n      manifest.functions[key] = updateFunctionDefinition(value)\n    }\n    for (const fun of Object.values(manifest.functions).concat(\n      Object.values(manifest.middleware)\n    )) {\n      for (const matcher of fun.matchers) {\n        if (!matcher.regexp) {\n          matcher.regexp = safePathToRegexp(matcher.originalSource, [], {\n            delimiter: '/',\n            sensitive: false,\n            strict: true,\n          }).source.replaceAll('\\\\/', '/')\n        }\n      }\n    }\n    manifest.sortedMiddleware = Object.keys(manifest.middleware)\n\n    return manifest\n  }\n\n  private writeMiddlewareManifest(): {\n    clientMiddlewareManifestPath: string\n  } {\n    let clientMiddlewareManifestPath = posix.join(\n      CLIENT_STATIC_FILES_PATH,\n      this.buildId,\n      TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST\n    )\n\n    if (this.dev && !this.middlewareManifests.takeChanged()) {\n      return {\n        clientMiddlewareManifestPath,\n      }\n    }\n    const middlewareManifest = this.mergeMiddlewareManifests(\n      this.middlewareManifests.values()\n    )\n\n    // Server middleware manifest\n\n    // Normalize regexes as it uses path-to-regexp\n    for (const key in middlewareManifest.middleware) {\n      middlewareManifest.middleware[key].matchers.forEach((matcher) => {\n        if (!matcher.regexp.startsWith('^')) {\n          const parsedPage = tryToParsePath(matcher.regexp)\n          if (parsedPage.error || !parsedPage.regexStr) {\n            throw new Error(`Invalid source: ${matcher.regexp}`)\n          }\n          matcher.regexp = parsedPage.regexStr\n        }\n      })\n    }\n\n    const middlewareManifestPath = join(\n      this.distDir,\n      'server',\n      MIDDLEWARE_MANIFEST\n    )\n    this.pendingCacheDeletes.push(middlewareManifestPath)\n    writeFileAtomic(\n      middlewareManifestPath,\n      JSON.stringify(middlewareManifest, null, 2)\n    )\n\n    // Client middleware manifest This is only used in dev though, packages/next/src/build/index.ts\n    // writes the mainfest again for builds.\n    const matchers = middlewareManifest?.middleware['/']?.matchers || []\n\n    const clientMiddlewareManifestJs = `self.__MIDDLEWARE_MATCHERS = ${JSON.stringify(\n      matchers,\n      null,\n      2\n    )};self.__MIDDLEWARE_MATCHERS_CB && self.__MIDDLEWARE_MATCHERS_CB()`\n\n    this.pendingCacheDeletes.push(clientMiddlewareManifestPath)\n    writeFileAtomic(\n      join(this.distDir, clientMiddlewareManifestPath),\n      clientMiddlewareManifestJs\n    )\n\n    return {\n      clientMiddlewareManifestPath,\n    }\n  }\n\n  loadPagesManifest(pageName: string): void {\n    this.pagesManifests.set(\n      getEntryKey('pages', 'server', pageName),\n      readPartialManifestContent(this.distDir, PAGES_MANIFEST, pageName)\n    )\n  }\n\n  private mergePagesManifests(manifests: Iterable<PagesManifest>) {\n    const manifest: PagesManifest = {}\n    for (const m of manifests) {\n      Object.assign(manifest, m)\n    }\n    return sortObjectByKey(manifest)\n  }\n\n  private mergeSriManifests(manifests: Iterable<SubresourceIntegrityManifest>) {\n    const manifest: SubresourceIntegrityManifest = {}\n    for (const m of manifests) {\n      Object.assign(manifest, m)\n    }\n    return sortObjectByKey(manifest)\n  }\n\n  private writePagesManifest(): void {\n    if (!this.pagesManifests.takeChanged()) {\n      return\n    }\n    const pagesManifest = this.mergePagesManifests(this.pagesManifests.values())\n    const pagesManifestPath = join(this.distDir, 'server', PAGES_MANIFEST)\n    this.pendingCacheDeletes.push(pagesManifestPath)\n    writeFileAtomic(pagesManifestPath, JSON.stringify(pagesManifest, null, 2))\n  }\n\n  writeManifests({\n    devRewrites,\n    productionRewrites,\n    entrypoints,\n  }: {\n    devRewrites: SetupOpts['fsChecker']['rewrites'] | undefined\n    productionRewrites: CustomRoutes['rewrites'] | undefined\n    entrypoints: Entrypoints\n  }): void {\n    this.writeActionManifest()\n    this.writeAppPathsManifest()\n    const lowPriorityFiles = this.writeClientBuildManifest(\n      entrypoints,\n      devRewrites,\n      productionRewrites\n    )\n    const { clientMiddlewareManifestPath } = this.writeMiddlewareManifest()\n    this.writeBuildManifest([...lowPriorityFiles, clientMiddlewareManifestPath])\n    this.writeInterceptionRouteRewriteManifest(devRewrites, productionRewrites)\n    this.writeNextFontManifest()\n    this.writePagesManifest()\n\n    this.writeSriManifest()\n\n    // Flush all queued cache deletions in a single require.cache scan\n    if (this.pendingCacheDeletes.length > 0) {\n      deleteCache(this.pendingCacheDeletes)\n      this.pendingCacheDeletes = []\n    }\n  }\n}\n\nfunction sortObjectByKey(obj: Record<string, any>) {\n  return Object.keys(obj)\n    .sort()\n    .reduce(\n      (acc, key) => {\n        acc[key] = obj[key]\n        return acc\n      },\n      {} as Record<string, any>\n    )\n}\n"],"names":["APP_PATHS_MANIFEST","BUILD_MANIFEST","CLIENT_STATIC_FILES_PATH","INTERCEPTION_ROUTE_REWRITE_MANIFEST","MIDDLEWARE_BUILD_MANIFEST","MIDDLEWARE_MANIFEST","NEXT_FONT_MANIFEST","PAGES_MANIFEST","SERVER_REFERENCE_MANIFEST","SUBRESOURCE_INTEGRITY_MANIFEST","TURBOPACK_CLIENT_BUILD_MANIFEST","TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST","join","posix","readFileSync","deleteCache","writeFileAtomic","getAssetPathFromRoute","getEntryKey","getSortedRoutes","existsSync","addMetadataIdToRoute","addRouteSuffix","removeRouteSuffix","tryToParsePath","safePathToRegexp","normalizeRewritesForBuildManifest","srcEmptySsgManifest","processRoute","createEdgeRuntimeManifest","getManifestPath","page","distDir","name","type","firstCall","manifestPath","isSitemapRoute","test","replace","endsWith","basePage","slice","length","metadataPage","readPartialManifestContent","pageName","ManifestsMap","set","key","value","rawMap","get","changed","map","JSON","parse","delete","has","takeChanged","extraInvalidationKey","undefined","stringified","stringify","values","Map","TurbopackManifestLoader","constructor","buildId","encryptionKey","dev","sriEnabled","actionManifests","appPathsManifests","buildManifests","clientBuildManifests","fontManifests","middlewareManifests","pagesManifests","sriManifests","cachedInterceptionRewrites","pendingCacheDeletes","loadActionManifest","mergeActionManifests","manifests","manifest","node","edge","mergeActionIds","actionEntries","other","action","workers","filename","exportedName","Object","assign","m","entry","sortObjectByKey","writeActionManifest","actionManifest","actionManifestJsonPath","actionManifestJsPath","json","push","loadAppPathsManifest","writeAppPathsManifest","appPathsManifest","mergePagesManifests","appPathsManifestPath","writeSriManifest","sriManifest","mergeSriManifests","pathJson","pathJs","loadBuildManifest","loadClientBuildManifest","loadSriManifest","mergeBuildManifests","lowPriorityFiles","pages","devFiles","polyfillFiles","rootMainFiles","mergeClientBuildManifests","rewrites","sortedPageKeys","__rewrites","sortedPages","writeInterceptionRouteRewriteManifest","devRewrites","productionRewrites","beforeFiles","afterFiles","fallback","interceptionRewrites","filter","require","isInterceptionRouteRewrite","interceptionRewriteManifestPath","writeBuildManifest","buildManifest","buildManifestPath","middlewareBuildManifestPath","fallbackBuildManifest","Boolean","fallbackBuildManifestPath","writeClientBuildManifest","entrypoints","pagesKeys","keys","global","app","error","ssgManifestPath","clientBuildManifest","clientBuildManifestJs","loadFontManifest","mergeFontManifests","appUsingSizeAdjust","pagesUsingSizeAdjust","writeNextFontManifest","fontManifest","fontManifestJsonPath","fontManifestJsPath","loadMiddlewareManifest","middlewareManifestPath","getMiddlewareManifest","deleteMiddlewareManifest","mergeMiddlewareManifests","version","middleware","sortedMiddleware","functions","instrumentation","updateFunctionDefinition","fun","files","concat","matcher","matchers","regexp","originalSource","delimiter","sensitive","strict","source","replaceAll","writeMiddlewareManifest","clientMiddlewareManifestPath","middlewareManifest","forEach","startsWith","parsedPage","regexStr","Error","clientMiddlewareManifestJs","loadPagesManifest","writePagesManifest","pagesManifest","pagesManifestPath","writeManifests","obj","sort","reduce","acc"],"mappings":"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","ignoreList":[0]}