{"version":3,"file":"index.cjs","sources":["../src/webpack-bundle-analysis/utils/findFileFormat.ts","../src/webpack-bundle-analysis/utils/processAssets.ts","../src/webpack-bundle-analysis/utils/processChunks.ts","../src/webpack-bundle-analysis/utils/processModules.ts","../src/webpack-bundle-analysis/webpackBundleAnalysisPlugin.ts","../src/index.ts"],"sourcesContent":["const STRIP_CHARS_REGEX = /(\\w|\\[|]|\\/)/g;\n\nexport interface FindFilenameFormatArgs {\n  assetName: string;\n  filename: string;\n  assetModuleFilename: string;\n  chunkFilename: string;\n  cssFilename: string;\n  cssChunkFilename: string;\n}\n\nexport const findFilenameFormat = ({\n  assetName,\n  filename,\n  assetModuleFilename,\n  chunkFilename,\n  cssFilename,\n  cssChunkFilename,\n}: FindFilenameFormatArgs) => {\n  const currAssetFormat = assetName.replaceAll(STRIP_CHARS_REGEX, \"\");\n\n  if (\n    filename !== \"\" &&\n    currAssetFormat.includes(filename.replaceAll(STRIP_CHARS_REGEX, \"\"))\n  ) {\n    return filename;\n  }\n\n  if (\n    chunkFilename !== \"\" &&\n    currAssetFormat.includes(chunkFilename.replaceAll(STRIP_CHARS_REGEX, \"\"))\n  ) {\n    return chunkFilename;\n  }\n\n  if (\n    cssFilename !== \"\" &&\n    currAssetFormat.includes(cssFilename.replaceAll(STRIP_CHARS_REGEX, \"\"))\n  ) {\n    return cssFilename;\n  }\n\n  if (\n    cssChunkFilename !== \"\" &&\n    currAssetFormat.includes(cssChunkFilename.replaceAll(STRIP_CHARS_REGEX, \"\"))\n  ) {\n    return cssChunkFilename;\n  }\n\n  if (\n    assetModuleFilename !== \"\" &&\n    currAssetFormat.includes(\n      assetModuleFilename.replaceAll(STRIP_CHARS_REGEX, \"\"),\n    )\n  ) {\n    return assetModuleFilename;\n  }\n\n  return \"\";\n};\n","import path from \"node:path\";\nimport {\n  normalizePath,\n  type Asset,\n  getCompressedSize,\n  type MetaFramework,\n} from \"@codecov/bundler-plugin-core\";\nimport { type StatsAsset, type Compilation } from \"webpack\";\nimport { findFilenameFormat } from \"./findFileFormat.ts\";\n\nexport interface ProcessAssetsArgs {\n  assets: StatsAsset[];\n  compilation: Compilation;\n  metaFramework: MetaFramework;\n}\n\nexport const processAssets = async ({\n  assets,\n  compilation,\n  metaFramework,\n}: ProcessAssetsArgs) => {\n  const outputOptions = compilation.outputOptions;\n  const collectedAssets: Asset[] = [];\n\n  const filename =\n    typeof outputOptions.filename === \"string\" ? outputOptions.filename : \"\";\n  const assetModuleFilename =\n    typeof outputOptions.assetModuleFilename === \"string\"\n      ? outputOptions.assetModuleFilename\n      : \"\";\n  const chunkFilename =\n    typeof outputOptions.chunkFilename === \"string\"\n      ? outputOptions.chunkFilename\n      : \"\";\n  const cssFilename =\n    typeof outputOptions.cssFilename === \"string\"\n      ? outputOptions.cssFilename\n      : \"\";\n  const cssChunkFilename =\n    typeof outputOptions.chunkFilename === \"string\"\n      ? outputOptions.chunkFilename\n      : \"\";\n\n  await Promise.all(\n    assets.map(async (asset) => {\n      const format = findFilenameFormat({\n        assetName: asset.name,\n        filename,\n        assetModuleFilename,\n        chunkFilename,\n        cssFilename,\n        cssChunkFilename,\n      });\n\n      if (path.extname(asset.name) === \".map\") {\n        return;\n      }\n\n      const currentAsset = compilation.getAsset(asset.name);\n\n      let compressedSize = null;\n      if (currentAsset) {\n        compressedSize = await getCompressedSize({\n          fileName: asset.name,\n          code: currentAsset.source.source(),\n        });\n      }\n\n      collectedAssets.push({\n        name: asset.name,\n        size: asset.size,\n        gzipSize: compressedSize,\n        normalized: normalizePath(asset.name, format, metaFramework),\n      });\n    }),\n  );\n\n  return collectedAssets;\n};\n","import { red } from \"@codecov/bundler-plugin-core\";\nimport { type StatsChunk } from \"webpack\";\n\nexport interface ProcessChunksArgs {\n  chunks: StatsChunk[];\n  chunkIdMap: Map<number | string, string>;\n}\n\nexport const processChunks = ({ chunks, chunkIdMap }: ProcessChunksArgs) => {\n  // need a reference of all chunks by their id so we can use it to collect\n  // the dynamic imports from the children chunks without having to search\n  // through the entire list of chunks every time\n  const referenceChunkMapById = new Map<PropertyKey, StatsChunk>();\n  chunks.forEach((chunk) => {\n    if (chunk.id) {\n      referenceChunkMapById.set(chunk.id.toString(), chunk);\n    }\n  });\n\n  return chunks.map((chunk, index) => {\n    const chunkId = chunk.id ?? \"\";\n    const uniqueId = `${index}-${chunkId}`;\n    chunkIdMap.set(chunkId, uniqueId);\n\n    const dynamicImports: string[] = [];\n    chunk.children?.forEach((child) => {\n      const childIdString = child.toString();\n      const childChunk = referenceChunkMapById.get(childIdString);\n\n      if (!childChunk || !childChunk.files) {\n        red(`Child chunk ${childIdString} not found in chunkMap`);\n      } else {\n        dynamicImports.push(...childChunk.files);\n      }\n    });\n\n    return {\n      id: chunk.id?.toString() ?? \"\",\n      uniqueId: uniqueId,\n      entry: chunk.entry,\n      initial: chunk.initial,\n      files: chunk.files ?? [],\n      names: chunk.names ?? [],\n      dynamicImports: dynamicImports,\n    };\n  });\n};\n","import { type StatsModule } from \"webpack\";\n\nexport interface ProcessChunksArgs {\n  modules: StatsModule[];\n  chunkIdMap: Map<number | string, string>;\n}\n\nexport const processModules = ({ modules, chunkIdMap }: ProcessChunksArgs) => {\n  return modules.map((module) => {\n    const chunks = module.chunks ?? [];\n    const chunkUniqueIds: string[] = [];\n\n    chunks.forEach((chunk) => {\n      const chunkUniqueId = chunkIdMap.get(chunk);\n\n      if (chunkUniqueId) {\n        chunkUniqueIds.push(chunkUniqueId);\n      }\n    });\n\n    return {\n      name: module.name ?? \"\",\n      size: module.size ?? 0,\n      chunkUniqueIds: chunkUniqueIds,\n    };\n  });\n};\n","import { type BundleAnalysisUploadPlugin } from \"@codecov/bundler-plugin-core\";\nimport { createRequire } from \"node:module\";\nimport type * as TWebpack from \"webpack\";\n\nimport { processAssets, processChunks, processModules } from \"./utils\";\n\nexport const webpackBundleAnalysisPlugin: BundleAnalysisUploadPlugin = ({\n  output,\n  pluginName,\n  pluginVersion,\n}) => ({\n  version: output.version,\n  name: pluginName,\n  pluginVersion,\n  buildStart: () => {\n    output.start();\n    output.setPlugin(pluginName, pluginVersion);\n  },\n  buildEnd: () => {\n    output.end();\n  },\n  writeBundle: async () => {\n    await output.write();\n  },\n  webpack(compiler) {\n    const generatedRequire = createRequire(import.meta.url);\n    const webpack = generatedRequire(\"webpack\") as typeof TWebpack;\n\n    compiler.hooks.thisCompilation.tap(pluginName, (compilation) => {\n      compilation.hooks.processAssets.tapPromise(\n        {\n          name: pluginName,\n          stage: webpack.Compilation.PROCESS_ASSETS_STAGE_REPORT,\n        },\n        async () => {\n          output.setBundleName(output.originalBundleName);\n          // Webpack base chunk format options: https://webpack.js.org/configuration/output/#outputchunkformat\n          if (typeof compilation.outputOptions.chunkFormat === \"string\") {\n            if (compilation.name && compilation.name !== \"\") {\n              output.setBundleName(`${output.bundleName}-${compilation.name}`);\n            }\n\n            let chunkFormat = compilation.outputOptions.chunkFormat;\n            if (chunkFormat === \"commonjs\") {\n              chunkFormat = \"cjs\";\n            } else if (chunkFormat === \"module\") {\n              chunkFormat = \"esm\";\n            }\n\n            output.setBundleName(`${output.bundleName}-${chunkFormat}`);\n          }\n\n          const compilationStats = compilation.getStats().toJson({\n            assets: true,\n            chunks: true,\n            modules: true,\n            builtAt: true,\n            hash: true,\n          });\n\n          output.bundler = {\n            name: \"webpack\",\n            version: webpack.version,\n          };\n\n          const outputOptions = compilation.outputOptions;\n          const { assets, chunks, modules } = compilationStats;\n\n          if (assets) {\n            const collectedAssets = await processAssets({\n              assets,\n              compilation,\n              metaFramework: output.metaFramework,\n            });\n\n            output.assets = collectedAssets;\n          }\n\n          // need to collect all possible chunk ids beforehand\n          // this collection is done in the processChunks function\n          const chunkIdMap = new Map<number | string, string>();\n          if (chunks) {\n            output.chunks = processChunks({ chunks, chunkIdMap });\n          }\n\n          if (modules) {\n            output.modules = processModules({ modules, chunkIdMap });\n          }\n\n          output.duration = Date.now() - (output.builtAt ?? 0);\n          output.outputPath = outputOptions.path ?? \"\";\n\n          // only output file if running dry run\n          if (output.dryRun) {\n            const { RawSource } = webpack.sources;\n            compilation.emitAsset(\n              `${output.bundleName}-stats.json`,\n              new RawSource(output.bundleStatsToJson()),\n            );\n          }\n        },\n      );\n    });\n  },\n});\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n  type UnpluginOptions,\n  createWebpackPlugin,\n  type WebpackPluginInstance,\n} from \"unplugin\";\nimport {\n  normalizeOptions,\n  type Options,\n  checkNodeVersion,\n  Output,\n  handleErrors,\n  createSentryInstance,\n  telemetryPlugin,\n} from \"@codecov/bundler-plugin-core\";\n\nimport { webpackBundleAnalysisPlugin } from \"./webpack-bundle-analysis/webpackBundleAnalysisPlugin\";\n\nimport {\n  findFilenameFormat,\n  processAssets,\n  processChunks,\n  processModules,\n} from \"./webpack-bundle-analysis/utils\";\n\n// @ts-expect-error this value is being replaced by rollup\nconst PLUGIN_NAME = __PACKAGE_NAME__ as string;\n// @ts-expect-error this value is being replaced by rollup\nconst PLUGIN_VERSION = __PACKAGE_VERSION__ as string;\n\nconst codecovWebpackPluginFactory = createWebpackPlugin<Options, true>(\n  (userOptions, unpluginMetaContext) => {\n    if (checkNodeVersion(unpluginMetaContext)) {\n      return [];\n    }\n\n    const normalizedOptions = normalizeOptions(userOptions);\n    if (!normalizedOptions.success) {\n      const { shouldExit } = handleErrors(normalizedOptions);\n\n      if (shouldExit) {\n        process.exit(1);\n      }\n      return [];\n    }\n\n    const plugins: UnpluginOptions[] = [];\n    const options = normalizedOptions.options;\n    const sentryConfig = createSentryInstance({\n      telemetry: options.telemetry,\n      isDryRun: options.dryRun,\n      pluginName: PLUGIN_NAME,\n      pluginVersion: PLUGIN_VERSION,\n      options,\n      bundler: unpluginMetaContext.framework,\n    });\n\n    const output = new Output(\n      options,\n      { metaFramework: unpluginMetaContext.framework },\n      sentryConfig,\n    );\n\n    if (options.enableBundleAnalysis) {\n      plugins.push(\n        telemetryPlugin({\n          sentryClient: sentryConfig.sentryClient,\n          sentryScope: sentryConfig.sentryScope,\n          telemetry: options.telemetry,\n        }),\n        webpackBundleAnalysisPlugin({\n          output,\n          pluginName: PLUGIN_NAME,\n          pluginVersion: PLUGIN_VERSION,\n        }),\n      );\n    }\n\n    return plugins;\n  },\n);\n\n/**\n * Details for the Codecov Webpack plugin.\n *\n * @example\n * ```typescript\n * // webpack.config.js\n * const path = require(\"path\");\n * const { codecovWebpackPlugin } = require(\"@codecov/webpack-plugin\");\n *\n * module.exports = {\n *   entry: \"./src/index.js\",\n *   mode: \"production\",\n *   output: {\n *     filename: \"main.js\",\n *     path: path.resolve(__dirname, \"dist\"),\n *   },\n *   plugins: [\n *     // Put the Codecov vite plugin after all other plugins\n *     codecovWebpackPlugin({\n *       enableBundleAnalysis: true,\n *       bundleName: \"example-webpack-bundle\",\n *       gitService: \"github\",\n *     }),\n *    ],\n * };\n * ```\n *\n * @see {@link @codecov/bundler-plugin-core!Options | Options} for list of options.\n */\nexport const codecovWebpackPlugin: (options: Options) => WebpackPluginInstance =\n  codecovWebpackPluginFactory;\n\n/**\n * Do not use this plugin directly. For internal use only.\n *\n * Used to expose the webpack bundle analysis unplugin plugin that can be combined with other\n * plugins to create a single plugin for a given meta-framework.\n *\n * @internal\n */\nexport const _internal_webpackBundleAnalysisPlugin =\n  webpackBundleAnalysisPlugin;\n\n/**\n * Do not use this plugin directly. For internal use only.\n *\n * Used to find the filename format for a given compilation.\n *\n * @internal\n */\nexport const _internal_findFilenameFormat = findFilenameFormat;\n\n/**\n * Do not use this plugin directly. For internal use only.\n *\n * Used to process webpack assets in other plugins.\n *\n * @internal\n */\nexport const _internal_processAssets = processAssets;\n\n/**\n * Do not use this plugin directly. For internal use only.\n *\n * Used to process webpack chunks in other plugins.\n *\n * @internal\n */\nexport const _internal_processChunks = processChunks;\n\n/**\n * Do not use this plugin directly. For internal use only.\n *\n * Used to process webpack modules in other plugins.\n *\n * @internal\n */\nexport const _internal_processModules = processModules;\n"],"names":["path","getCompressedSize","normalizePath","red","createRequire","createWebpackPlugin","checkNodeVersion","normalizeOptions","handleErrors","createSentryInstance","Output","telemetryPlugin"],"mappings":"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"}