@sentry/nextjs
Version:
Official Sentry SDK for Next.js
87 lines (83 loc) • 4.63 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const buildLogger = require('../buildLogger.js');
const util = require('../util.js');
const buildTime = require('./buildTime.js');
const getFinalConfigObjectBundlerUtils = require('./getFinalConfigObjectBundlerUtils.js');
const getFinalConfigObjectUtils = require('./getFinalConfigObjectUtils.js');
function getFinalConfigObject(incomingUserNextConfigObject, userSentryOptions) {
const releaseName = getFinalConfigObjectUtils.resolveReleaseName(userSentryOptions);
getFinalConfigObjectUtils.maybeSetUpTunnelRouteRewriteRules(incomingUserNextConfigObject, userSentryOptions);
if (getFinalConfigObjectUtils.shouldReturnEarlyInExperimentalBuildMode(userSentryOptions.silent)) {
return incomingUserNextConfigObject;
}
const routeManifest = getFinalConfigObjectUtils.maybeCreateRouteManifest(incomingUserNextConfigObject, userSentryOptions);
const vercelCronsConfigResult = getFinalConfigObjectUtils.maybeGetVercelCronsConfig(userSentryOptions);
buildTime.setUpBuildTimeVariables(incomingUserNextConfigObject, userSentryOptions, releaseName);
const nextJsVersion = util.getNextjsVersion();
const nextMajor = getFinalConfigObjectUtils.getNextMajor(nextJsVersion);
getFinalConfigObjectUtils.maybeSetClientTraceMetadataOption(incomingUserNextConfigObject, nextJsVersion, userSentryOptions.silent);
getFinalConfigObjectUtils.maybeSetInstrumentationHookOption(incomingUserNextConfigObject, nextJsVersion, userSentryOptions.silent);
getFinalConfigObjectUtils.warnIfMissingOnRouterTransitionStartHook(userSentryOptions);
getFinalConfigObjectUtils.warnIfMissingInstrumentationFile(incomingUserNextConfigObject, userSentryOptions);
const bundlerInfo = getFinalConfigObjectBundlerUtils.getBundlerInfo(nextJsVersion);
getFinalConfigObjectBundlerUtils.maybeWarnAboutUnsupportedTurbopack(nextJsVersion, bundlerInfo, userSentryOptions.silent);
getFinalConfigObjectBundlerUtils.maybeWarnAboutTurbopackModuleMetadata(userSentryOptions, bundlerInfo);
maybeWarnAboutApplicationKeyExcludeDependencies(userSentryOptions, bundlerInfo);
getFinalConfigObjectBundlerUtils.maybeWarnAboutUnsupportedRunAfterProductionCompileHook(nextJsVersion, userSentryOptions, bundlerInfo);
const turboPackConfig = getFinalConfigObjectBundlerUtils.maybeConstructTurbopackConfig(
incomingUserNextConfigObject,
userSentryOptions,
routeManifest,
nextJsVersion,
bundlerInfo,
vercelCronsConfigResult
);
const shouldUseRunAfterProductionCompileHook = getFinalConfigObjectBundlerUtils.resolveUseRunAfterProductionCompileHookOption(
userSentryOptions,
bundlerInfo
);
getFinalConfigObjectBundlerUtils.maybeSetUpRunAfterProductionCompileHook({
incomingUserNextConfigObject,
userSentryOptions,
releaseName,
nextJsVersion,
bundlerInfo,
turboPackConfig,
shouldUseRunAfterProductionCompileHook
});
getFinalConfigObjectBundlerUtils.maybeEnableTurbopackSourcemaps(incomingUserNextConfigObject, userSentryOptions, bundlerInfo);
getFinalConfigObjectBundlerUtils.maybeSetTurbopackTreeshakeDefines(incomingUserNextConfigObject, userSentryOptions, bundlerInfo);
const buildTimeInstrumentation = getFinalConfigObjectBundlerUtils.resolveBuildTimeInstrumentationOption(userSentryOptions, bundlerInfo, nextJsVersion);
return {
...incomingUserNextConfigObject,
...getFinalConfigObjectBundlerUtils.getServerExternalPackagesPatch(incomingUserNextConfigObject, nextMajor, buildTimeInstrumentation),
...getFinalConfigObjectBundlerUtils.getWebpackPatch({
incomingUserNextConfigObject,
userSentryOptions,
releaseName,
routeManifest,
nextJsVersion,
shouldUseRunAfterProductionCompileHook,
bundlerInfo,
vercelCronsConfigResult
}),
...getFinalConfigObjectBundlerUtils.getTurbopackPatch(bundlerInfo, turboPackConfig)
};
}
function maybeWarnAboutApplicationKeyExcludeDependencies(userSentryOptions, bundlerInfo) {
if (!userSentryOptions.applicationKeyExcludeDependencies) {
return;
}
const logger = buildLogger.getBuildLogger(userSentryOptions.silent);
if (!userSentryOptions.applicationKey) {
logger.warn(
"[@sentry/nextjs] `applicationKeyExcludeDependencies` requires `applicationKey` and has no effect without it."
);
} else if (bundlerInfo.isWebpack) {
logger.warn(
"[@sentry/nextjs] `applicationKeyExcludeDependencies` only applies to Turbopack builds and has no effect on webpack builds."
);
}
}
exports.getFinalConfigObject = getFinalConfigObject;
//# sourceMappingURL=getFinalConfigObject.js.map