Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
1 line
16 KiB
Plaintext
1 line
16 KiB
Plaintext
{"version":3,"file":"getFinalConfigObjectBundlerUtils.js","sources":["../../../../src/config/withSentryConfig/getFinalConfigObjectBundlerUtils.ts"],"sourcesContent":["import { handleRunAfterProductionCompile } from '../handleRunAfterProductionCompile';\nimport type { RouteManifest } from '../manifest/types';\nimport { constructTurbopackConfig } from '../turbopack';\nimport type { NextConfigObject, SentryBuildOptions, TurbopackOptions } from '../types';\nimport { detectActiveBundler, supportsProductionCompileHook } from '../util';\nimport { constructWebpackConfigFunction } from '../webpack';\nimport { DEFAULT_SERVER_EXTERNAL_PACKAGES } from './constants';\nimport type { VercelCronsConfigResult } from './getFinalConfigObjectUtils';\n\n/**\n * Information about the active bundler and feature support based on Next.js version.\n */\nexport type BundlerInfo = {\n isTurbopack: boolean;\n isWebpack: boolean;\n isTurbopackSupported: boolean;\n};\n\n/**\n * Detects which bundler is active (webpack vs turbopack) and whether turbopack features are supported.\n */\nexport function getBundlerInfo(nextJsVersion: string | undefined): BundlerInfo {\n const activeBundler = detectActiveBundler();\n const isTurbopack = activeBundler === 'turbopack';\n const isWebpack = activeBundler === 'webpack';\n const isTurbopackSupported = supportsProductionCompileHook(nextJsVersion ?? '');\n\n return { isTurbopack, isWebpack, isTurbopackSupported };\n}\n\n/**\n * Warns if turbopack is in use but the detected Next.js version is unsupported.\n */\nexport function maybeWarnAboutUnsupportedTurbopack(nextJsVersion: string | undefined, bundlerInfo: BundlerInfo): void {\n // Warn if using turbopack with an unsupported Next.js version\n if (!bundlerInfo.isTurbopackSupported && bundlerInfo.isTurbopack) {\n // eslint-disable-next-line no-console\n console.warn(\n `[@sentry/nextjs] WARNING: You are using the Sentry SDK with Turbopack. The Sentry SDK is compatible with Turbopack on Next.js version 15.4.1 or later. You are currently on ${nextJsVersion}. Please upgrade to a newer Next.js version to use the Sentry SDK with Turbopack.`,\n );\n }\n}\n\n/**\n * Warns if `useRunAfterProductionCompileHook` is enabled in webpack mode but the Next.js version is unsupported.\n */\nexport function maybeWarnAboutUnsupportedRunAfterProductionCompileHook(\n nextJsVersion: string | undefined,\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): void {\n // Webpack case - warn if trying to use runAfterProductionCompile hook with unsupported Next.js version\n if (\n userSentryOptions.useRunAfterProductionCompileHook &&\n !supportsProductionCompileHook(nextJsVersion ?? '') &&\n bundlerInfo.isWebpack\n ) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] The configured `useRunAfterProductionCompileHook` option is not compatible with your current Next.js version. This option is only supported on Next.js version 15.4.1 or later. Will not run source map and release management logic.',\n );\n }\n}\n\n/**\n * Constructs turbopack config when turbopack is active.\n */\nexport function maybeConstructTurbopackConfig(\n incomingUserNextConfigObject: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n routeManifest: RouteManifest | undefined,\n nextJsVersion: string | undefined,\n bundlerInfo: BundlerInfo,\n vercelCronsConfigResult: VercelCronsConfigResult,\n): TurbopackOptions | undefined {\n if (!bundlerInfo.isTurbopack) {\n return undefined;\n }\n\n // Only pass crons config if the span-based approach is enabled\n const vercelCronsConfig = vercelCronsConfigResult.strategy === 'spans' ? vercelCronsConfigResult.config : undefined;\n\n return constructTurbopackConfig({\n userNextConfig: incomingUserNextConfigObject,\n userSentryOptions,\n routeManifest,\n nextJsVersion,\n vercelCronsConfig,\n });\n}\n\n/**\n * Resolves whether to use the `runAfterProductionCompile` hook based on options and bundler.\n */\nexport function resolveUseRunAfterProductionCompileHookOption(\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): boolean {\n // If not explicitly set, turbopack uses the runAfterProductionCompile hook (as there are no alternatives), webpack does not.\n return userSentryOptions.useRunAfterProductionCompileHook ?? (bundlerInfo.isTurbopack ? true : false);\n}\n\n/**\n * Hooks into Next.js' `compiler.runAfterProductionCompile` to run Sentry release/sourcemap handling.\n *\n * Note: this mutates `incomingUserNextConfigObject`.\n */\nexport function maybeSetUpRunAfterProductionCompileHook({\n incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n nextJsVersion,\n bundlerInfo,\n turboPackConfig,\n shouldUseRunAfterProductionCompileHook,\n}: {\n incomingUserNextConfigObject: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n nextJsVersion: string | undefined;\n bundlerInfo: BundlerInfo;\n turboPackConfig: TurbopackOptions | undefined;\n shouldUseRunAfterProductionCompileHook: boolean;\n}): void {\n if (!shouldUseRunAfterProductionCompileHook) {\n return;\n }\n\n if (!supportsProductionCompileHook(nextJsVersion ?? '')) {\n return;\n }\n\n if (incomingUserNextConfigObject?.compiler?.runAfterProductionCompile === undefined) {\n incomingUserNextConfigObject.compiler ??= {};\n\n incomingUserNextConfigObject.compiler.runAfterProductionCompile = async ({ distDir }) => {\n await handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool: bundlerInfo.isTurbopack ? 'turbopack' : 'webpack',\n usesNativeDebugIds: bundlerInfo.isTurbopack ? turboPackConfig?.debugIds : undefined,\n },\n userSentryOptions,\n );\n };\n return;\n }\n\n if (typeof incomingUserNextConfigObject.compiler.runAfterProductionCompile === 'function') {\n incomingUserNextConfigObject.compiler.runAfterProductionCompile = new Proxy(\n incomingUserNextConfigObject.compiler.runAfterProductionCompile,\n {\n async apply(target, thisArg, argArray) {\n const { distDir }: { distDir: string } = argArray[0] ?? { distDir: '.next' };\n await target.apply(thisArg, argArray);\n await handleRunAfterProductionCompile(\n {\n releaseName,\n distDir,\n buildTool: bundlerInfo.isTurbopack ? 'turbopack' : 'webpack',\n usesNativeDebugIds: bundlerInfo.isTurbopack ? turboPackConfig?.debugIds : undefined,\n },\n userSentryOptions,\n );\n },\n },\n );\n return;\n }\n\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] The configured `compiler.runAfterProductionCompile` option is not a function. Will not run source map and release management logic.',\n );\n}\n\n/**\n * For supported turbopack builds, auto-enables browser sourcemaps and defaults to deleting them after upload.\n *\n * Note: this mutates both `incomingUserNextConfigObject` and `userSentryOptions`.\n */\nexport function maybeEnableTurbopackSourcemaps(\n incomingUserNextConfigObject: NextConfigObject,\n userSentryOptions: SentryBuildOptions,\n bundlerInfo: BundlerInfo,\n): void {\n // Enable source maps for turbopack builds\n if (!bundlerInfo.isTurbopackSupported || !bundlerInfo.isTurbopack || userSentryOptions.sourcemaps?.disable) {\n return;\n }\n\n // Only set if not already configured by user\n if (incomingUserNextConfigObject.productionBrowserSourceMaps !== undefined) {\n return;\n }\n\n if (userSentryOptions.debug) {\n // eslint-disable-next-line no-console\n console.log('[@sentry/nextjs] Automatically enabling browser source map generation for turbopack build.');\n }\n incomingUserNextConfigObject.productionBrowserSourceMaps = true;\n\n // Enable source map deletion if not explicitly disabled\n if (userSentryOptions.sourcemaps?.deleteSourcemapsAfterUpload !== undefined) {\n return;\n }\n\n if (userSentryOptions.debug) {\n // eslint-disable-next-line no-console\n console.warn(\n '[@sentry/nextjs] Source maps will be automatically deleted after being uploaded to Sentry. If you want to keep the source maps, set the `sourcemaps.deleteSourcemapsAfterUpload` option to false in `withSentryConfig()`. If you do not want to generate and upload sourcemaps at all, set the `sourcemaps.disable` option to true.',\n );\n }\n\n userSentryOptions.sourcemaps = {\n ...userSentryOptions.sourcemaps,\n deleteSourcemapsAfterUpload: true,\n };\n}\n\n/**\n * Returns the patch which ensures server-side auto-instrumented packages are externalized.\n */\nexport function getServerExternalPackagesPatch(\n incomingUserNextConfigObject: NextConfigObject,\n nextMajor: number | undefined,\n): Partial<NextConfigObject> {\n if (nextMajor && nextMajor >= 15) {\n return {\n serverExternalPackages: [\n ...(incomingUserNextConfigObject.serverExternalPackages || []),\n ...DEFAULT_SERVER_EXTERNAL_PACKAGES,\n ],\n };\n }\n\n return {\n experimental: {\n ...incomingUserNextConfigObject.experimental,\n serverComponentsExternalPackages: [\n ...(incomingUserNextConfigObject.experimental?.serverComponentsExternalPackages || []),\n ...DEFAULT_SERVER_EXTERNAL_PACKAGES,\n ],\n },\n };\n}\n\n/**\n * Returns the patch for injecting Sentry's webpack config function (if enabled and applicable).\n */\nexport function getWebpackPatch({\n incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n routeManifest,\n nextJsVersion,\n shouldUseRunAfterProductionCompileHook,\n bundlerInfo,\n vercelCronsConfigResult,\n}: {\n incomingUserNextConfigObject: NextConfigObject;\n userSentryOptions: SentryBuildOptions;\n releaseName: string | undefined;\n routeManifest: RouteManifest | undefined;\n nextJsVersion: string | undefined;\n shouldUseRunAfterProductionCompileHook: boolean;\n bundlerInfo: BundlerInfo;\n vercelCronsConfigResult: VercelCronsConfigResult;\n}): Partial<NextConfigObject> {\n if (!bundlerInfo.isWebpack || userSentryOptions.webpack?.disableSentryConfig) {\n return {};\n }\n\n return {\n webpack: constructWebpackConfigFunction({\n userNextConfig: incomingUserNextConfigObject,\n userSentryOptions,\n releaseName,\n routeManifest,\n nextJsVersion,\n useRunAfterProductionCompileHook: shouldUseRunAfterProductionCompileHook,\n vercelCronsConfigResult,\n }),\n };\n}\n\n/**\n * Returns the patch for adding turbopack config (if enabled and supported).\n */\nexport function getTurbopackPatch(\n bundlerInfo: BundlerInfo,\n turboPackConfig: TurbopackOptions | undefined,\n): Partial<NextConfigObject> {\n if (!bundlerInfo.isTurbopackSupported || !bundlerInfo.isTurbopack) {\n return {};\n }\n\n return { turbopack: turboPackConfig };\n}\n"],"names":[],"mappings":"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"} |