@sentry/nextjs
Version:
Official Sentry SDK for Next.js
82 lines (68 loc) • 3.35 kB
JavaScript
import { getNextjsVersion } from '../util.js';
import { setUpBuildTimeVariables } from './buildTime.js';
import { migrateDeprecatedWebpackOptions } from './deprecatedWebpackOptions.js';
import { getBundlerInfo, maybeWarnAboutUnsupportedTurbopack, maybeWarnAboutUnsupportedRunAfterProductionCompileHook, maybeConstructTurbopackConfig, resolveUseRunAfterProductionCompileHookOption, maybeSetUpRunAfterProductionCompileHook, maybeEnableTurbopackSourcemaps, getTurbopackPatch, getWebpackPatch, getServerExternalPackagesPatch } from './getFinalConfigObjectBundlerUtils.js';
import { resolveReleaseName, maybeSetUpTunnelRouteRewriteRules, shouldReturnEarlyInExperimentalBuildMode, maybeCreateRouteManifest, getNextMajor, maybeSetClientTraceMetadataOption, maybeSetInstrumentationHookOption, warnIfMissingOnRouterTransitionStartHook } from './getFinalConfigObjectUtils.js';
/**
* Materializes the final Next.js config object with Sentry's build-time integrations applied.
*
* Note: this mutates both `incomingUserNextConfigObject` and `userSentryOptions` (to apply defaults/migrations).
*/
function getFinalConfigObject(
incomingUserNextConfigObject,
userSentryOptions,
) {
migrateDeprecatedWebpackOptions(userSentryOptions);
const releaseName = resolveReleaseName(userSentryOptions);
maybeSetUpTunnelRouteRewriteRules(incomingUserNextConfigObject, userSentryOptions);
if (shouldReturnEarlyInExperimentalBuildMode()) {
return incomingUserNextConfigObject;
}
const routeManifest = maybeCreateRouteManifest(incomingUserNextConfigObject, userSentryOptions);
setUpBuildTimeVariables(incomingUserNextConfigObject, userSentryOptions, releaseName);
const nextJsVersion = getNextjsVersion();
const nextMajor = getNextMajor(nextJsVersion);
maybeSetClientTraceMetadataOption(incomingUserNextConfigObject, nextJsVersion);
maybeSetInstrumentationHookOption(incomingUserNextConfigObject, nextJsVersion);
warnIfMissingOnRouterTransitionStartHook(userSentryOptions);
const bundlerInfo = getBundlerInfo(nextJsVersion);
maybeWarnAboutUnsupportedTurbopack(nextJsVersion, bundlerInfo);
maybeWarnAboutUnsupportedRunAfterProductionCompileHook(nextJsVersion, userSentryOptions, bundlerInfo);
const turboPackConfig = maybeConstructTurbopackConfig(
incomingUserNextConfigObject,
userSentryOptions,
routeManifest,
nextJsVersion,
bundlerInfo,
);
const shouldUseRunAfterProductionCompileHook = resolveUseRunAfterProductionCompileHookOption(
userSentryOptions,
bundlerInfo,
);
maybeSetUpRunAfterProductionCompileHook({
incomingUserNextConfigObject,
userSentryOptions,
releaseName,
nextJsVersion,
bundlerInfo,
turboPackConfig,
shouldUseRunAfterProductionCompileHook,
});
maybeEnableTurbopackSourcemaps(incomingUserNextConfigObject, userSentryOptions, bundlerInfo);
return {
...incomingUserNextConfigObject,
...getServerExternalPackagesPatch(incomingUserNextConfigObject, nextMajor),
...getWebpackPatch({
incomingUserNextConfigObject,
userSentryOptions,
releaseName,
routeManifest,
nextJsVersion,
shouldUseRunAfterProductionCompileHook,
bundlerInfo,
}),
...getTurbopackPatch(bundlerInfo, turboPackConfig),
};
}
export { getFinalConfigObject };
//# sourceMappingURL=getFinalConfigObject.js.map