{"version":3,"sources":["../../../../../src/build/webpack/plugins/middleware-plugin.ts"],"sourcesContent":["import type {\n  AssetBinding,\n  EdgeMiddlewareMeta,\n} from '../loaders/get-module-build-info'\nimport type { EdgeSSRMeta } from '../loaders/get-module-build-info'\nimport type { ProxyMatcher } from '../../analysis/get-page-static-info'\nimport { getNamedMiddlewareRegex } from '../../../shared/lib/router/utils/route-regex'\nimport { getModuleBuildInfo } from '../loaders/get-module-build-info'\nimport { getSortedRoutes } from '../../../shared/lib/router/utils'\nimport { webpack, sources } from 'next/dist/compiled/webpack/webpack'\nimport picomatch from 'next/dist/compiled/picomatch'\nimport path from 'path'\nimport {\n  EDGE_RUNTIME_WEBPACK,\n  EDGE_UNSUPPORTED_NODE_APIS,\n  MIDDLEWARE_BUILD_MANIFEST,\n  CLIENT_REFERENCE_MANIFEST,\n  MIDDLEWARE_MANIFEST,\n  MIDDLEWARE_REACT_LOADABLE_MANIFEST,\n  SUBRESOURCE_INTEGRITY_MANIFEST,\n  NEXT_FONT_MANIFEST,\n  SERVER_REFERENCE_MANIFEST,\n  INTERCEPTION_ROUTE_REWRITE_MANIFEST,\n  DYNAMIC_CSS_MANIFEST,\n  SERVER_FILES_MANIFEST,\n} from '../../../shared/lib/constants'\nimport type { ProxyConfig } from '../../analysis/get-page-static-info'\nimport type { Telemetry } from '../../../telemetry/storage'\nimport { traceGlobals } from '../../../trace/shared'\nimport { EVENT_BUILD_FEATURE_USAGE } from '../../../telemetry/events'\nimport { normalizeAppPath } from '../../../shared/lib/router/utils/app-paths'\nimport {\n  INSTRUMENTATION_HOOK_FILENAME,\n  WEBPACK_LAYERS,\n} from '../../../lib/constants'\nimport type { CustomRoutes } from '../../../lib/load-custom-routes'\nimport { isInterceptionRouteRewrite } from '../../../lib/is-interception-route-rewrite'\nimport { getDynamicCodeEvaluationError } from './wellknown-errors-plugin/parse-dynamic-code-evaluation-error'\nimport { getModuleReferencesInOrder } from '../utils'\n\nconst KNOWN_SAFE_DYNAMIC_PACKAGES =\n  require('../../../lib/known-edge-safe-packages.json') as string[]\n\nexport interface EdgeFunctionDefinition {\n  files: string[]\n  name: string\n  page: string\n  /**\n   * Canonical entrypoint module path (relative to distDir) for this edge function.\n   */\n  entrypoint: string\n  matchers: ProxyMatcher[]\n  env: Record<string, string>\n  wasm?: AssetBinding[]\n  assets?: AssetBinding[]\n  regions?: string[] | string\n}\n\nexport interface MiddlewareManifest {\n  version: 3\n  sortedMiddleware: string[]\n  middleware: { [page: string]: EdgeFunctionDefinition }\n  functions: { [page: string]: EdgeFunctionDefinition }\n}\n\ninterface EntryMetadata {\n  edgeMiddleware?: EdgeMiddlewareMeta\n  edgeApiFunction?: EdgeMiddlewareMeta\n  edgeSSR?: EdgeSSRMeta\n  wasmBindings: Map<string, string>\n  assetBindings: Map<string, string>\n  regions?: string[] | string\n}\n\nconst NAME = 'MiddlewarePlugin'\nconst MANIFEST_VERSION = 3\n\n/**\n * Checks the value of usingIndirectEval and when it is a set of modules it\n * check if any of the modules is actually being used. If the value is\n * simply truthy it will return true.\n */\nfunction isUsingIndirectEvalAndUsedByExports(args: {\n  module: webpack.Module\n  moduleGraph: webpack.ModuleGraph\n  runtime: any\n  usingIndirectEval: true | Set<string>\n  wp: typeof webpack\n}): boolean {\n  const { moduleGraph, runtime, module, usingIndirectEval, wp } = args\n  if (typeof usingIndirectEval === 'boolean') {\n    return usingIndirectEval\n  }\n\n  const exportsInfo = moduleGraph.getExportsInfo(module)\n  for (const exportName of usingIndirectEval) {\n    if (exportsInfo.getUsed(exportName, runtime) !== wp.UsageState.Unused) {\n      return true\n    }\n  }\n\n  return false\n}\n\nfunction getEntryFiles(\n  entryFiles: string[],\n  meta: EntryMetadata,\n  hasInstrumentationHook: boolean,\n  opts: Options\n) {\n  const files: string[] = []\n  if (meta.edgeSSR) {\n    if (meta.edgeSSR.isServerComponent) {\n      files.push(`server/${SERVER_REFERENCE_MANIFEST}.js`)\n      if (opts.sriEnabled) {\n        files.push(`server/${SUBRESOURCE_INTEGRITY_MANIFEST}.js`)\n      }\n      files.push(\n        ...entryFiles\n          .filter(\n            (file) =>\n              file.startsWith('app/') && !file.endsWith('.hot-update.js')\n          )\n          .map(\n            (file) =>\n              'server/' +\n              file.replace(/\\.js$/, '_' + CLIENT_REFERENCE_MANIFEST + '.js')\n          )\n      )\n    }\n    if (!opts.dev && !meta.edgeSSR.isAppDir) {\n      files.push(`server/${DYNAMIC_CSS_MANIFEST}.js`)\n    }\n\n    files.push(\n      `server/${MIDDLEWARE_BUILD_MANIFEST}.js`,\n      `server/${MIDDLEWARE_REACT_LOADABLE_MANIFEST}.js`,\n      `server/${NEXT_FONT_MANIFEST}.js`,\n      `server/${INTERCEPTION_ROUTE_REWRITE_MANIFEST}.js`\n    )\n\n    if (!opts.dev) {\n      files.push(`${SERVER_FILES_MANIFEST}.js`)\n    }\n  }\n\n  if (hasInstrumentationHook) {\n    files.push(`server/edge-${INSTRUMENTATION_HOOK_FILENAME}.js`)\n  }\n\n  files.push(\n    ...entryFiles\n      .filter((file) => !file.endsWith('.hot-update.js'))\n      .map((file) => 'server/' + file)\n  )\n\n  return files\n}\n\nfunction getEntrypointFile(entrypoint: {\n  getEntrypointChunk(): { files: Iterable<string> }\n  getFiles(): Iterable<string>\n}): string {\n  const getJsFile = (files: Iterable<string>): string | undefined => {\n    for (const file of files) {\n      if (!file.endsWith('.hot-update.js') && /\\.(?:js|mjs|cjs)$/i.test(file)) {\n        return `server/${file}`\n      }\n    }\n  }\n\n  const file =\n    getJsFile(entrypoint.getEntrypointChunk().files) ||\n    getJsFile(entrypoint.getFiles())\n\n  if (!file) {\n    throw new Error(\n      'Expected edge function entrypoint to emit a JavaScript file'\n    )\n  }\n\n  return file\n}\n\nfunction getCreateAssets(params: {\n  compilation: webpack.Compilation\n  metadataByEntry: Map<string, EntryMetadata>\n  opts: Options\n}) {\n  const { compilation, metadataByEntry, opts } = params\n  return () => {\n    const middlewareManifest: MiddlewareManifest = {\n      version: MANIFEST_VERSION,\n      middleware: {},\n      functions: {},\n      sortedMiddleware: [],\n    }\n\n    const hasInstrumentationHook = compilation.entrypoints.has(\n      INSTRUMENTATION_HOOK_FILENAME\n    )\n\n    // we only emit this entry for the edge runtime since it doesn't have access to a routes manifest\n    // and we don't need to provide the entire route manifest, just the interception routes.\n    const interceptionRewrites = JSON.stringify(\n      opts.rewrites.beforeFiles.filter(isInterceptionRouteRewrite)\n    )\n    compilation.emitAsset(\n      `${INTERCEPTION_ROUTE_REWRITE_MANIFEST}.js`,\n      new sources.RawSource(\n        `self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST=${JSON.stringify(\n          interceptionRewrites\n        )}`\n      ) as unknown as webpack.sources.RawSource\n    )\n\n    for (const entrypoint of compilation.entrypoints.values()) {\n      if (!entrypoint.name) {\n        continue\n      }\n\n      // There should always be metadata for the entrypoint.\n      const metadata = metadataByEntry.get(entrypoint.name)\n      const page =\n        metadata?.edgeMiddleware?.page ||\n        metadata?.edgeSSR?.page ||\n        metadata?.edgeApiFunction?.page\n      if (!page) {\n        continue\n      }\n\n      const matcherSource = metadata.edgeSSR?.isAppDir\n        ? normalizeAppPath(page)\n        : page\n\n      const catchAll = !metadata.edgeSSR && !metadata.edgeApiFunction\n\n      const { namedRegex } = getNamedMiddlewareRegex(matcherSource, {\n        catchAll,\n      })\n      const matchers = metadata?.edgeMiddleware?.matchers ?? [\n        {\n          regexp: namedRegex,\n          originalSource: page === '/' && catchAll ? '/:path*' : matcherSource,\n        },\n      ]\n\n      const isEdgeFunction = !!(metadata.edgeApiFunction || metadata.edgeSSR)\n      const edgeFunctionDefinition: EdgeFunctionDefinition = {\n        files: getEntryFiles(\n          entrypoint.getFiles(),\n          metadata,\n          hasInstrumentationHook,\n          opts\n        ),\n        entrypoint: getEntrypointFile(entrypoint),\n        name: entrypoint.name,\n        page: page,\n        matchers,\n        wasm: Array.from(metadata.wasmBindings, ([name, filePath]) => ({\n          name,\n          filePath,\n        })),\n        assets: Array.from(metadata.assetBindings, ([name, filePath]) => ({\n          name,\n          filePath,\n        })),\n        env: opts.edgeEnvironments,\n        ...(metadata.regions && { regions: metadata.regions }),\n      }\n\n      if (isEdgeFunction) {\n        middlewareManifest.functions[page] = edgeFunctionDefinition\n      } else {\n        middlewareManifest.middleware[page] = edgeFunctionDefinition\n      }\n    }\n\n    middlewareManifest.sortedMiddleware = getSortedRoutes(\n      Object.keys(middlewareManifest.middleware)\n    )\n\n    compilation.emitAsset(\n      MIDDLEWARE_MANIFEST,\n      new sources.RawSource(\n        JSON.stringify(middlewareManifest, null, 2)\n      ) as unknown as webpack.sources.RawSource\n    )\n  }\n}\n\nfunction buildWebpackError({\n  message,\n  loc,\n  compilation,\n  entryModule,\n  parser,\n}: {\n  message: string\n  loc?: any\n  compilation: webpack.Compilation\n  entryModule?: webpack.Module\n  parser?: webpack.javascript.JavascriptParser\n}) {\n  const error = new compilation.compiler.webpack.WebpackError(message)\n  error.name = NAME\n  const module = entryModule ?? parser?.state.current\n  if (module) {\n    error.module = module\n  }\n  error.loc = loc\n  return error\n}\n\nfunction isInMiddlewareLayer(parser: webpack.javascript.JavascriptParser) {\n  const layer = parser.state.module?.layer\n  return layer === WEBPACK_LAYERS.middleware || layer === WEBPACK_LAYERS.apiEdge\n}\n\nfunction isNodeJsModule(moduleName: string) {\n  return (require('module') as typeof import('module')).builtinModules.includes(\n    moduleName\n  )\n}\n\nfunction isBunModule(moduleName: string) {\n  return moduleName === 'bun' || moduleName.startsWith('bun:')\n}\n\nfunction isDynamicCodeEvaluationAllowed(\n  fileName: string,\n  middlewareConfig?: ProxyConfig,\n  rootDir?: string\n) {\n  // Some packages are known to use `eval` but are safe to use in the Edge\n  // Runtime because the dynamic code will never be executed.\n  if (\n    KNOWN_SAFE_DYNAMIC_PACKAGES.some((pkg) =>\n      fileName.includes(`/node_modules/${pkg}/`.replace(/\\//g, path.sep))\n    )\n  ) {\n    return true\n  }\n\n  const name = fileName.replace(rootDir ?? '', '')\n\n  return picomatch(middlewareConfig?.unstable_allowDynamic ?? [], {\n    dot: true,\n  })(name)\n}\n\nfunction buildUnsupportedApiError({\n  apiName,\n  loc,\n  ...rest\n}: {\n  apiName: string\n  loc: any\n  compilation: webpack.Compilation\n  parser: webpack.javascript.JavascriptParser\n}) {\n  return buildWebpackError({\n    message: `A Node.js API is used (${apiName} at line: ${loc.start.line}) which is not supported in the Edge Runtime.\nLearn more: https://nextjs.org/docs/api-reference/edge-runtime`,\n    loc,\n    ...rest,\n  })\n}\n\nfunction registerUnsupportedApiHooks(\n  parser: webpack.javascript.JavascriptParser,\n  compilation: webpack.Compilation\n) {\n  for (const expression of EDGE_UNSUPPORTED_NODE_APIS) {\n    const warnForUnsupportedApi = (node: any) => {\n      if (!isInMiddlewareLayer(parser)) {\n        return\n      }\n      compilation.warnings.push(\n        buildUnsupportedApiError({\n          compilation,\n          parser,\n          apiName: expression,\n          ...node,\n        })\n      )\n      return true\n    }\n    parser.hooks.call.for(expression).tap(NAME, warnForUnsupportedApi)\n    parser.hooks.expression.for(expression).tap(NAME, warnForUnsupportedApi)\n    parser.hooks.callMemberChain\n      .for(expression)\n      .tap(NAME, warnForUnsupportedApi)\n    parser.hooks.expressionMemberChain\n      .for(expression)\n      .tap(NAME, warnForUnsupportedApi)\n  }\n\n  const warnForUnsupportedProcessApi = (node: any, [callee]: string[]) => {\n    if (!isInMiddlewareLayer(parser) || callee === 'env') {\n      return\n    }\n    compilation.warnings.push(\n      buildUnsupportedApiError({\n        compilation,\n        parser,\n        apiName: `process.${callee}`,\n        ...node,\n      })\n    )\n    return true\n  }\n\n  parser.hooks.callMemberChain\n    .for('process')\n    .tap(NAME, warnForUnsupportedProcessApi)\n  parser.hooks.expressionMemberChain\n    .for('process')\n    .tap(NAME, warnForUnsupportedProcessApi)\n}\n\nfunction getCodeAnalyzer(params: {\n  dev: boolean\n  compiler: webpack.Compiler\n  compilation: webpack.Compilation\n}) {\n  return (parser: webpack.javascript.JavascriptParser) => {\n    const {\n      dev,\n      compiler: { webpack: wp },\n      compilation,\n    } = params\n    const { hooks } = parser\n\n    /**\n     * For an expression this will check the graph to ensure it is being used\n     * by exports. Then it will store in the module buildInfo a boolean to\n     * express that it contains dynamic code and, if it is available, the\n     * module path that is using it.\n     */\n    const handleExpression = () => {\n      if (!isInMiddlewareLayer(parser)) {\n        return\n      }\n\n      wp.optimize.InnerGraph.onUsage(parser.state, (used = true) => {\n        const buildInfo = getModuleBuildInfo(parser.state.module)\n        if (buildInfo.usingIndirectEval === true || used === false) {\n          return\n        }\n\n        if (!buildInfo.usingIndirectEval || used === true) {\n          buildInfo.usingIndirectEval = used\n          return\n        }\n\n        buildInfo.usingIndirectEval = new Set([\n          ...Array.from(buildInfo.usingIndirectEval),\n          ...Array.from(used),\n        ])\n      })\n    }\n\n    /**\n     * This expression handler allows to wrap a dynamic code expression with a\n     * function call where we can warn about dynamic code not being allowed\n     * but actually execute the expression.\n     */\n    const handleWrapExpression = (expr: any) => {\n      if (!isInMiddlewareLayer(parser)) {\n        return\n      }\n\n      const { ConstDependency } = wp.dependencies\n      const dep1 = new ConstDependency(\n        '__next_eval__(function() { return ',\n        expr.range[0]\n      )\n      dep1.loc = expr.loc\n      parser.state.module.addPresentationalDependency(dep1)\n      const dep2 = new ConstDependency('})', expr.range[1])\n      dep2.loc = expr.loc\n      parser.state.module.addPresentationalDependency(dep2)\n\n      handleExpression()\n      return true\n    }\n\n    /**\n     * This expression handler allows to wrap a WebAssembly.compile invocation with a\n     * function call where we can warn about WASM code generation not being allowed\n     * but actually execute the expression.\n     */\n    const handleWrapWasmCompileExpression = (expr: any) => {\n      if (!isInMiddlewareLayer(parser)) {\n        return\n      }\n\n      const { ConstDependency } = wp.dependencies\n      const dep1 = new ConstDependency(\n        '__next_webassembly_compile__(function() { return ',\n        expr.range[0]\n      )\n      dep1.loc = expr.loc\n      parser.state.module.addPresentationalDependency(dep1)\n      const dep2 = new ConstDependency('})', expr.range[1])\n      dep2.loc = expr.loc\n      parser.state.module.addPresentationalDependency(dep2)\n\n      handleExpression()\n    }\n\n    /**\n     * This expression handler allows to wrap a WebAssembly.instatiate invocation with a\n     * function call where we can warn about WASM code generation not being allowed\n     * but actually execute the expression.\n     *\n     * Note that we don't update `usingIndirectEval`, i.e. we don't abort a production build\n     * since we can't determine statically if the first parameter is a module (legit use) or\n     * a buffer (dynamic code generation).\n     */\n    const handleWrapWasmInstantiateExpression = (expr: any) => {\n      if (!isInMiddlewareLayer(parser)) {\n        return\n      }\n\n      if (dev) {\n        const { ConstDependency } = wp.dependencies\n        const dep1 = new ConstDependency(\n          '__next_webassembly_instantiate__(function() { return ',\n          expr.range[0]\n        )\n        dep1.loc = expr.loc\n        parser.state.module.addPresentationalDependency(dep1)\n        const dep2 = new ConstDependency('})', expr.range[1])\n        dep2.loc = expr.loc\n        parser.state.module.addPresentationalDependency(dep2)\n      }\n    }\n\n    /**\n     * Handler to store original source location of static and dynamic imports into module's buildInfo.\n     */\n    const handleImport = (node: any) => {\n      if (isInMiddlewareLayer(parser) && node.source?.value && node?.loc) {\n        const { module, source } = parser.state\n        const buildInfo = getModuleBuildInfo(module)\n        if (!buildInfo.importLocByPath) {\n          buildInfo.importLocByPath = new Map()\n        }\n\n        const importedModule = node.source.value?.toString()\n        buildInfo.importLocByPath.set(importedModule, {\n          sourcePosition: {\n            ...node.loc.start,\n            source: module.identifier(),\n          },\n          sourceContent: source.toString(),\n        })\n\n        if (\n          !dev &&\n          (isNodeJsModule(importedModule) || isBunModule(importedModule)) &&\n          !SUPPORTED_NATIVE_MODULES.includes(importedModule)\n        ) {\n          const isBun = isBunModule(importedModule)\n          compilation.warnings.push(\n            buildWebpackError({\n              message: `A ${isBun ? 'Bun' : 'Node.js'} module is loaded ('${importedModule}' at line ${node.loc.start.line}) which is not supported in the Edge Runtime.\nLearn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime`,\n              compilation,\n              parser,\n              ...node,\n            })\n          )\n        }\n      }\n    }\n\n    /**\n     * A noop handler to skip analyzing some cases.\n     * Order matters: for it to work, it must be registered first\n     */\n    const skip = () => (isInMiddlewareLayer(parser) ? true : undefined)\n\n    for (const prefix of ['', 'global.']) {\n      hooks.expression.for(`${prefix}Function.prototype`).tap(NAME, skip)\n      hooks.expression.for(`${prefix}Function.bind`).tap(NAME, skip)\n      hooks.call.for(`${prefix}eval`).tap(NAME, handleWrapExpression)\n      hooks.call.for(`${prefix}Function`).tap(NAME, handleWrapExpression)\n      hooks.new.for(`${prefix}Function`).tap(NAME, handleWrapExpression)\n      hooks.call\n        .for(`${prefix}WebAssembly.compile`)\n        .tap(NAME, handleWrapWasmCompileExpression)\n      hooks.call\n        .for(`${prefix}WebAssembly.instantiate`)\n        .tap(NAME, handleWrapWasmInstantiateExpression)\n    }\n\n    hooks.importCall.tap(NAME, handleImport)\n    hooks.import.tap(NAME, handleImport)\n\n    if (!dev) {\n      // do not issue compilation warning on dev: invoking code will provide details\n      registerUnsupportedApiHooks(parser, compilation)\n    }\n  }\n}\n\nasync function codeAnalyzerBySwc(\n  compilation: webpack.Compilation,\n  modules: Iterable<webpack.Module>,\n  dev: boolean\n) {\n  const binding = require('../../swc') as typeof import('../../swc')\n  for (const module of modules) {\n    if (\n      module.layer !== WEBPACK_LAYERS.middleware &&\n      module.layer !== WEBPACK_LAYERS.apiEdge\n    ) {\n      continue\n    }\n    if (module.constructor.name !== 'NormalModule') {\n      continue\n    }\n    const normalModule = module as webpack.NormalModule\n    if (!normalModule.type.startsWith('javascript')) {\n      // Only analyze JavaScript modules\n      continue\n    }\n    const originalSource = normalModule.originalSource()\n    if (!originalSource) {\n      continue\n    }\n    const source = originalSource.source()\n    if (typeof source !== 'string') {\n      continue\n    }\n    const diagnostics = await binding.warnForEdgeRuntime(source, !dev)\n    for (const diagnostic of diagnostics) {\n      const webpackError = buildWebpackError({\n        message: diagnostic.message,\n        loc: diagnostic.loc,\n        compilation,\n        entryModule: module,\n      })\n      if (diagnostic.severity === 'Warning') {\n        compilation.warnings.push(webpackError)\n      } else {\n        compilation.errors.push(webpackError)\n      }\n    }\n  }\n}\n\nfunction getExtractMetadata(params: {\n  compilation: webpack.Compilation\n  compiler: webpack.Compiler\n  dev: boolean\n  metadataByEntry: Map<string, EntryMetadata>\n}): () => Promise<void> {\n  const { dev, compilation, metadataByEntry, compiler } = params\n  const { webpack: wp } = compiler\n  return async () => {\n    metadataByEntry.clear()\n    const telemetry: Telemetry | undefined = traceGlobals.get('telemetry')\n\n    for (const [entryName, entry] of compilation.entries) {\n      if (entry.options.runtime !== EDGE_RUNTIME_WEBPACK) {\n        // Only process edge runtime entries\n        continue\n      }\n      const entryDependency = entry.dependencies?.[0]\n      const resolvedModule =\n        compilation.moduleGraph.getResolvedModule(entryDependency)\n      if (!resolvedModule) {\n        continue\n      }\n      const { rootDir, route } = getModuleBuildInfo(resolvedModule)\n\n      const { moduleGraph } = compilation\n      const modules = new Set<webpack.NormalModule>()\n      const addEntriesFromDependency = (dependency: any) => {\n        const module = moduleGraph.getModule(dependency)\n        if (module) {\n          modules.add(module as webpack.NormalModule)\n        }\n      }\n\n      entry.dependencies.forEach(addEntriesFromDependency)\n      entry.includeDependencies.forEach(addEntriesFromDependency)\n\n      const entryMetadata: EntryMetadata = {\n        wasmBindings: new Map(),\n        assetBindings: new Map(),\n      }\n\n      if (route?.middlewareConfig?.regions) {\n        entryMetadata.regions = route.middlewareConfig.regions\n      }\n\n      if (route?.preferredRegion) {\n        const preferredRegion = route.preferredRegion\n        entryMetadata.regions =\n          // Ensures preferredRegion is always an array in the manifest.\n          typeof preferredRegion === 'string'\n            ? [preferredRegion]\n            : preferredRegion\n      }\n\n      let ogImageGenerationCount = 0\n\n      for (const module of modules) {\n        const buildInfo = getModuleBuildInfo(module)\n\n        /**\n         * Check if it uses the image generation feature.\n         */\n        if (!dev) {\n          const resource = module.resource\n          const hasOGImageGeneration =\n            resource &&\n            /[\\\\/]node_modules[\\\\/]@vercel[\\\\/]og[\\\\/]dist[\\\\/]index\\.(edge|node)\\.js$|[\\\\/]next[\\\\/]dist[\\\\/](esm[\\\\/])?server[\\\\/]og[\\\\/]image-response\\.js$/.test(\n              resource\n            )\n\n          if (hasOGImageGeneration) {\n            ogImageGenerationCount++\n          }\n        }\n\n        /**\n         * When building for production checks if the module is using `eval`\n         * and in such case produces a compilation error. The module has to\n         * be in use.\n         */\n        if (\n          !dev &&\n          buildInfo.usingIndirectEval &&\n          isUsingIndirectEvalAndUsedByExports({\n            module,\n            moduleGraph,\n            runtime: wp.util.runtime.getEntryRuntime(compilation, entryName),\n            usingIndirectEval: buildInfo.usingIndirectEval,\n            wp,\n          })\n        ) {\n          const id = module.identifier()\n          if (/node_modules[\\\\/]regenerator-runtime[\\\\/]runtime\\.js/.test(id)) {\n            continue\n          }\n          if (route?.middlewareConfig?.unstable_allowDynamic) {\n            telemetry?.record({\n              eventName: 'NEXT_EDGE_ALLOW_DYNAMIC_USED',\n              payload: {\n                file: route?.absolutePagePath.replace(rootDir ?? '', ''),\n                config: route?.middlewareConfig,\n                fileWithDynamicCode: module.userRequest.replace(\n                  rootDir ?? '',\n                  ''\n                ),\n              },\n            })\n          }\n          if (\n            !isDynamicCodeEvaluationAllowed(\n              module.userRequest,\n              route?.middlewareConfig,\n              rootDir\n            )\n          ) {\n            const message = `Dynamic Code Evaluation (e. g. 'eval', 'new Function', 'WebAssembly.compile') not allowed in Edge Runtime ${\n              typeof buildInfo.usingIndirectEval !== 'boolean'\n                ? `\\nUsed by ${Array.from(buildInfo.usingIndirectEval).join(\n                    ', '\n                  )}`\n                : ''\n            }\\nLearn More: https://nextjs.org/docs/messages/edge-dynamic-code-evaluation`\n            compilation.errors.push(\n              getDynamicCodeEvaluationError(\n                message,\n                module,\n                compilation,\n                compiler\n              )\n            )\n          }\n        }\n\n        /**\n         * The entry module has to be either a page or a middleware and hold\n         * the corresponding metadata.\n         */\n        if (buildInfo?.nextEdgeSSR) {\n          entryMetadata.edgeSSR = buildInfo.nextEdgeSSR\n        } else if (buildInfo?.nextEdgeMiddleware) {\n          entryMetadata.edgeMiddleware = buildInfo.nextEdgeMiddleware\n        } else if (buildInfo?.nextEdgeApiFunction) {\n          entryMetadata.edgeApiFunction = buildInfo.nextEdgeApiFunction\n        }\n\n        /**\n         * If the module is a WASM module we read the binding information and\n         * append it to the entry wasm bindings.\n         */\n        if (buildInfo?.nextWasmMiddlewareBinding) {\n          entryMetadata.wasmBindings.set(\n            buildInfo.nextWasmMiddlewareBinding.name,\n            buildInfo.nextWasmMiddlewareBinding.filePath\n          )\n        }\n\n        if (buildInfo?.nextAssetMiddlewareBinding) {\n          entryMetadata.assetBindings.set(\n            buildInfo.nextAssetMiddlewareBinding.name,\n            buildInfo.nextAssetMiddlewareBinding.filePath\n          )\n        }\n\n        /**\n         * Append to the list of modules to process outgoingConnections from\n         * the module that is being processed.\n         */\n        for (const conn of getModuleReferencesInOrder(module, moduleGraph)) {\n          if (conn.module) {\n            modules.add(conn.module as webpack.NormalModule)\n          }\n        }\n      }\n\n      telemetry?.record({\n        eventName: EVENT_BUILD_FEATURE_USAGE,\n        payload: {\n          featureName: 'vercelImageGeneration',\n          invocationCount: ogImageGenerationCount,\n        },\n      })\n      metadataByEntry.set(entryName, entryMetadata)\n    }\n  }\n}\n\n// These values will be replaced again in edge runtime deployment build.\n// `buildId` represents BUILD_ID to be externalized in env vars.\n// `encryptionKey` represents server action encryption key to be externalized in env vars.\ntype EdgeRuntimeEnvironments = Record<string, string> & {\n  __NEXT_BUILD_ID: string\n  NEXT_SERVER_ACTIONS_ENCRYPTION_KEY: string\n}\n\ninterface Options {\n  dev: boolean\n  sriEnabled: boolean\n  rewrites: CustomRoutes['rewrites']\n  edgeEnvironments: EdgeRuntimeEnvironments\n}\n\nexport default class MiddlewarePlugin {\n  private readonly dev: Options['dev']\n  private readonly sriEnabled: Options['sriEnabled']\n  private readonly rewrites: Options['rewrites']\n  private readonly edgeEnvironments: EdgeRuntimeEnvironments\n\n  constructor({ dev, sriEnabled, rewrites, edgeEnvironments }: Options) {\n    this.dev = dev\n    this.sriEnabled = sriEnabled\n    this.rewrites = rewrites\n    this.edgeEnvironments = edgeEnvironments\n  }\n\n  public apply(compiler: webpack.Compiler) {\n    compiler.hooks.compilation.tap(NAME, (compilation, params) => {\n      // parser hooks aren't available in rspack\n      if (process.env.NEXT_RSPACK) {\n        compilation.hooks.finishModules.tapPromise(NAME, async (modules) => {\n          await codeAnalyzerBySwc(compilation, modules, this.dev)\n        })\n      } else {\n        const { hooks } = params.normalModuleFactory\n        /**\n         * This is the static code analysis phase.\n         */\n        const codeAnalyzer = getCodeAnalyzer({\n          dev: this.dev,\n          compiler,\n          compilation,\n        })\n\n        hooks.parser.for('javascript/auto').tap(NAME, codeAnalyzer)\n        hooks.parser.for('javascript/dynamic').tap(NAME, codeAnalyzer)\n        hooks.parser.for('javascript/esm').tap(NAME, codeAnalyzer)\n      }\n\n      /**\n       * Extract all metadata for the entry points in a Map object.\n       */\n      const metadataByEntry = new Map<string, EntryMetadata>()\n      compilation.hooks.finishModules.tapPromise(\n        NAME,\n        getExtractMetadata({\n          compilation,\n          compiler,\n          dev: this.dev,\n          metadataByEntry,\n        })\n      )\n\n      /**\n       * Emit the middleware manifest.\n       */\n      compilation.hooks.processAssets.tap(\n        {\n          name: 'NextJsMiddlewareManifest',\n          stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONS,\n        },\n        getCreateAssets({\n          compilation,\n          metadataByEntry,\n          opts: {\n            sriEnabled: this.sriEnabled,\n            rewrites: this.rewrites,\n            edgeEnvironments: this.edgeEnvironments,\n            dev: this.dev,\n          },\n        })\n      )\n    })\n  }\n}\n\nexport const SUPPORTED_NATIVE_MODULES = [\n  'buffer',\n  'events',\n  'assert',\n  'util',\n  'async_hooks',\n] as const\n\nconst supportedEdgePolyfills = new Set<string>(SUPPORTED_NATIVE_MODULES)\n\nexport function getEdgePolyfilledModules() {\n  const records: Record<string, string> = {}\n  for (const mod of SUPPORTED_NATIVE_MODULES) {\n    records[mod] = `commonjs node:${mod}`\n    records[`node:${mod}`] = `commonjs node:${mod}`\n  }\n  return records\n}\n\nexport async function handleWebpackExternalForEdgeRuntime({\n  request,\n  context,\n  contextInfo,\n  getResolve,\n}: {\n  request: string\n  context: string\n  contextInfo: any\n  getResolve: () => any\n}) {\n  if (\n    (contextInfo.issuerLayer === WEBPACK_LAYERS.middleware ||\n      contextInfo.issuerLayer === WEBPACK_LAYERS.apiEdge) &&\n    (isNodeJsModule(request) || isBunModule(request)) &&\n    !supportedEdgePolyfills.has(request)\n  ) {\n    // allows user to provide and use their polyfills, as we do with buffer.\n    try {\n      await getResolve()(context, request)\n    } catch {\n      return `root globalThis.__import_unsupported('${request}')`\n    }\n  }\n}\n"],"names":["getNamedMiddlewareRegex","getModuleBuildInfo","getSortedRoutes","webpack","sources","picomatch","path","EDGE_RUNTIME_WEBPACK","EDGE_UNSUPPORTED_NODE_APIS","MIDDLEWARE_BUILD_MANIFEST","CLIENT_REFERENCE_MANIFEST","MIDDLEWARE_MANIFEST","MIDDLEWARE_REACT_LOADABLE_MANIFEST","SUBRESOURCE_INTEGRITY_MANIFEST","NEXT_FONT_MANIFEST","SERVER_REFERENCE_MANIFEST","INTERCEPTION_ROUTE_REWRITE_MANIFEST","DYNAMIC_CSS_MANIFEST","SERVER_FILES_MANIFEST","traceGlobals","EVENT_BUILD_FEATURE_USAGE","normalizeAppPath","INSTRUMENTATION_HOOK_FILENAME","WEBPACK_LAYERS","isInterceptionRouteRewrite","getDynamicCodeEvaluationError","getModuleReferencesInOrder","KNOWN_SAFE_DYNAMIC_PACKAGES","require","NAME","MANIFEST_VERSION","isUsingIndirectEvalAndUsedByExports","args","moduleGraph","runtime","module","usingIndirectEval","wp","exportsInfo","getExportsInfo","exportName","getUsed","UsageState","Unused","getEntryFiles","entryFiles","meta","hasInstrumentationHook","opts","files","edgeSSR","isServerComponent","push","sriEnabled","filter","file","startsWith","endsWith","map","replace","dev","isAppDir","getEntrypointFile","entrypoint","getJsFile","test","getEntrypointChunk","getFiles","Error","getCreateAssets","params","compilation","metadataByEntry","middlewareManifest","version","middleware","functions","sortedMiddleware","entrypoints","has","interceptionRewrites","JSON","stringify","rewrites","beforeFiles","emitAsset","RawSource","values","metadata","name","get","page","edgeMiddleware","edgeApiFunction","matcherSource","catchAll","namedRegex","matchers","regexp","originalSource","isEdgeFunction","edgeFunctionDefinition","wasm","Array","from","wasmBindings","filePath","assets","assetBindings","env","edgeEnvironments","regions","Object","keys","buildWebpackError","message","loc","entryModule","parser","error","compiler","WebpackError","state","current","isInMiddlewareLayer","layer","apiEdge","isNodeJsModule","moduleName","builtinModules","includes","isBunModule","isDynamicCodeEvaluationAllowed","fileName","middlewareConfig","rootDir","some","pkg","sep","unstable_allowDynamic","dot","buildUnsupportedApiError","apiName","rest","start","line","registerUnsupportedApiHooks","expression","warnForUnsupportedApi","node","warnings","hooks","call","for","tap","callMemberChain","expressionMemberChain","warnForUnsupportedProcessApi","callee","getCodeAnalyzer","handleExpression","optimize","InnerGraph","onUsage","used","buildInfo","Set","handleWrapExpression","expr","ConstDependency","dependencies","dep1","range","addPresentationalDependency","dep2","handleWrapWasmCompileExpression","handleWrapWasmInstantiateExpression","handleImport","source","value","importLocByPath","Map","importedModule","toString","set","sourcePosition","identifier","sourceContent","SUPPORTED_NATIVE_MODULES","isBun","skip","undefined","prefix","new","importCall","import","codeAnalyzerBySwc","modules","binding","constructor","normalModule","type","diagnostics","warnForEdgeRuntime","diagnostic","webpackError","severity","errors","getExtractMetadata","clear","telemetry","entryName","entry","entries","route","options","entryDependency","resolvedModule","getResolvedModule","addEntriesFromDependency","dependency","getModule","add","forEach","includeDependencies","entryMetadata","preferredRegion","ogImageGenerationCount","resource","hasOGImageGeneration","util","getEntryRuntime","id","record","eventName","payload","absolutePagePath","config","fileWithDynamicCode","userRequest","join","nextEdgeSSR","nextEdgeMiddleware","nextEdgeApiFunction","nextWasmMiddlewareBinding","nextAssetMiddlewareBinding","conn","featureName","invocationCount","MiddlewarePlugin","apply","process","NEXT_RSPACK","finishModules","tapPromise","normalModuleFactory","codeAnalyzer","processAssets","stage","Compilation","PROCESS_ASSETS_STAGE_ADDITIONS","supportedEdgePolyfills","getEdgePolyfilledModules","records","mod","handleWebpackExternalForEdgeRuntime","request","context","contextInfo","getResolve","issuerLayer"],"mappings":"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","ignoreList":[0]}