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
100 lines
3.8 KiB
Plaintext
100 lines
3.8 KiB
Plaintext
import { detectActiveBundler } from '../util.js';
|
|
|
|
/**
|
|
* Migrates deprecated top-level webpack options to the new `webpack.*` path for backward compatibility.
|
|
* The new path takes precedence over deprecated options. This mutates the userSentryOptions object.
|
|
*/
|
|
function migrateDeprecatedWebpackOptions(userSentryOptions) {
|
|
// Initialize webpack options if not present
|
|
userSentryOptions.webpack = userSentryOptions.webpack || {};
|
|
|
|
const webpack = userSentryOptions.webpack;
|
|
|
|
const withDeprecatedFallback = (
|
|
newValue,
|
|
deprecatedValue,
|
|
message,
|
|
) => {
|
|
if (deprecatedValue !== undefined) {
|
|
// eslint-disable-next-line no-console
|
|
console.warn(message);
|
|
}
|
|
|
|
return newValue ?? deprecatedValue;
|
|
};
|
|
|
|
const deprecatedMessage = (deprecatedPath, newPath) => {
|
|
const message = `[@sentry/nextjs] DEPRECATION WARNING: ${deprecatedPath} is deprecated and will be removed in a future version. Use ${newPath} instead.`;
|
|
|
|
// In Turbopack builds, webpack configuration is not applied, so webpack-scoped options won't have any effect.
|
|
if (detectActiveBundler() === 'turbopack' && newPath.startsWith('webpack.')) {
|
|
return `${message} (Not supported with Turbopack.)`;
|
|
}
|
|
|
|
return message;
|
|
};
|
|
|
|
/* eslint-disable deprecation/deprecation */
|
|
// Migrate each deprecated option to the new path, but only if the new path isn't already set
|
|
webpack.autoInstrumentServerFunctions = withDeprecatedFallback(
|
|
webpack.autoInstrumentServerFunctions,
|
|
userSentryOptions.autoInstrumentServerFunctions,
|
|
deprecatedMessage('autoInstrumentServerFunctions', 'webpack.autoInstrumentServerFunctions'),
|
|
);
|
|
|
|
webpack.autoInstrumentMiddleware = withDeprecatedFallback(
|
|
webpack.autoInstrumentMiddleware,
|
|
userSentryOptions.autoInstrumentMiddleware,
|
|
deprecatedMessage('autoInstrumentMiddleware', 'webpack.autoInstrumentMiddleware'),
|
|
);
|
|
|
|
webpack.autoInstrumentAppDirectory = withDeprecatedFallback(
|
|
webpack.autoInstrumentAppDirectory,
|
|
userSentryOptions.autoInstrumentAppDirectory,
|
|
deprecatedMessage('autoInstrumentAppDirectory', 'webpack.autoInstrumentAppDirectory'),
|
|
);
|
|
|
|
webpack.excludeServerRoutes = withDeprecatedFallback(
|
|
webpack.excludeServerRoutes,
|
|
userSentryOptions.excludeServerRoutes,
|
|
deprecatedMessage('excludeServerRoutes', 'webpack.excludeServerRoutes'),
|
|
);
|
|
|
|
webpack.unstable_sentryWebpackPluginOptions = withDeprecatedFallback(
|
|
webpack.unstable_sentryWebpackPluginOptions,
|
|
userSentryOptions.unstable_sentryWebpackPluginOptions,
|
|
deprecatedMessage('unstable_sentryWebpackPluginOptions', 'webpack.unstable_sentryWebpackPluginOptions'),
|
|
);
|
|
|
|
webpack.disableSentryConfig = withDeprecatedFallback(
|
|
webpack.disableSentryConfig,
|
|
userSentryOptions.disableSentryWebpackConfig,
|
|
deprecatedMessage('disableSentryWebpackConfig', 'webpack.disableSentryConfig'),
|
|
);
|
|
|
|
// Handle treeshake.removeDebugLogging specially since it's nested
|
|
if (userSentryOptions.disableLogger !== undefined) {
|
|
webpack.treeshake = webpack.treeshake || {};
|
|
webpack.treeshake.removeDebugLogging = withDeprecatedFallback(
|
|
webpack.treeshake.removeDebugLogging,
|
|
userSentryOptions.disableLogger,
|
|
deprecatedMessage('disableLogger', 'webpack.treeshake.removeDebugLogging'),
|
|
);
|
|
}
|
|
|
|
webpack.automaticVercelMonitors = withDeprecatedFallback(
|
|
webpack.automaticVercelMonitors,
|
|
userSentryOptions.automaticVercelMonitors,
|
|
deprecatedMessage('automaticVercelMonitors', 'webpack.automaticVercelMonitors'),
|
|
);
|
|
|
|
webpack.reactComponentAnnotation = withDeprecatedFallback(
|
|
webpack.reactComponentAnnotation,
|
|
userSentryOptions.reactComponentAnnotation,
|
|
deprecatedMessage('reactComponentAnnotation', 'webpack.reactComponentAnnotation'),
|
|
);
|
|
}
|
|
|
|
export { migrateDeprecatedWebpackOptions };
|
|
//# sourceMappingURL=deprecatedWebpackOptions.js.map
|