@sentry/nextjs
Version:
Official Sentry SDK for Next.js
85 lines (82 loc) • 4.54 kB
JavaScript
import { getBuildLogger } from '../buildLogger.js';
import { getNextjsVersion } from '../util.js';
import { setUpBuildTimeVariables } from './buildTime.js';
import { getBundlerInfo, maybeWarnAboutUnsupportedTurbopack, maybeWarnAboutTurbopackModuleMetadata, maybeWarnAboutUnsupportedRunAfterProductionCompileHook, maybeConstructTurbopackConfig, resolveUseRunAfterProductionCompileHookOption, maybeSetUpRunAfterProductionCompileHook, maybeEnableTurbopackSourcemaps, maybeSetTurbopackTreeshakeDefines, resolveBuildTimeInstrumentationOption, getTurbopackPatch, getWebpackPatch, getServerExternalPackagesPatch } from './getFinalConfigObjectBundlerUtils.js';
import { resolveReleaseName, maybeSetUpTunnelRouteRewriteRules, shouldReturnEarlyInExperimentalBuildMode, maybeCreateRouteManifest, maybeGetVercelCronsConfig, getNextMajor, maybeSetClientTraceMetadataOption, maybeSetInstrumentationHookOption, warnIfMissingOnRouterTransitionStartHook, warnIfMissingInstrumentationFile } from './getFinalConfigObjectUtils.js';
function getFinalConfigObject(incomingUserNextConfigObject, userSentryOptions) {
const releaseName = resolveReleaseName(userSentryOptions);
maybeSetUpTunnelRouteRewriteRules(incomingUserNextConfigObject, userSentryOptions);
if (shouldReturnEarlyInExperimentalBuildMode(userSentryOptions.silent)) {
return incomingUserNextConfigObject;
}
const routeManifest = maybeCreateRouteManifest(incomingUserNextConfigObject, userSentryOptions);
const vercelCronsConfigResult = maybeGetVercelCronsConfig(userSentryOptions);
setUpBuildTimeVariables(incomingUserNextConfigObject, userSentryOptions, releaseName);
const nextJsVersion = getNextjsVersion();
const nextMajor = getNextMajor(nextJsVersion);
maybeSetClientTraceMetadataOption(incomingUserNextConfigObject, nextJsVersion, userSentryOptions.silent);
maybeSetInstrumentationHookOption(incomingUserNextConfigObject, nextJsVersion, userSentryOptions.silent);
warnIfMissingOnRouterTransitionStartHook(userSentryOptions);
warnIfMissingInstrumentationFile(incomingUserNextConfigObject, userSentryOptions);
const bundlerInfo = getBundlerInfo(nextJsVersion);
maybeWarnAboutUnsupportedTurbopack(nextJsVersion, bundlerInfo, userSentryOptions.silent);
maybeWarnAboutTurbopackModuleMetadata(userSentryOptions, bundlerInfo);
maybeWarnAboutApplicationKeyExcludeDependencies(userSentryOptions, bundlerInfo);
maybeWarnAboutUnsupportedRunAfterProductionCompileHook(nextJsVersion, userSentryOptions, bundlerInfo);
const turboPackConfig = maybeConstructTurbopackConfig(
incomingUserNextConfigObject,
userSentryOptions,
routeManifest,
nextJsVersion,
bundlerInfo,
vercelCronsConfigResult
);
const shouldUseRunAfterProductionCompileHook = resolveUseRunAfterProductionCompileHookOption(
userSentryOptions,
bundlerInfo
);
maybeSetUpRunAfterProductionCompileHook({
incomingUserNextConfigObject,
userSentryOptions,
releaseName,
nextJsVersion,
bundlerInfo,
turboPackConfig,
shouldUseRunAfterProductionCompileHook
});
maybeEnableTurbopackSourcemaps(incomingUserNextConfigObject, userSentryOptions, bundlerInfo);
maybeSetTurbopackTreeshakeDefines(incomingUserNextConfigObject, userSentryOptions, bundlerInfo);
const buildTimeInstrumentation = resolveBuildTimeInstrumentationOption(userSentryOptions, bundlerInfo, nextJsVersion);
return {
...incomingUserNextConfigObject,
...getServerExternalPackagesPatch(incomingUserNextConfigObject, nextMajor, buildTimeInstrumentation),
...getWebpackPatch({
incomingUserNextConfigObject,
userSentryOptions,
releaseName,
routeManifest,
nextJsVersion,
shouldUseRunAfterProductionCompileHook,
bundlerInfo,
vercelCronsConfigResult
}),
...getTurbopackPatch(bundlerInfo, turboPackConfig)
};
}
function maybeWarnAboutApplicationKeyExcludeDependencies(userSentryOptions, bundlerInfo) {
if (!userSentryOptions.applicationKeyExcludeDependencies) {
return;
}
const logger = 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."
);
}
}
export { getFinalConfigObject };
//# sourceMappingURL=getFinalConfigObject.js.map