@sentry/nextjs
Version:
Official Sentry SDK for Next.js
78 lines (74 loc) • 3.26 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const childProcess = require('child_process');
const fs = require('fs');
const path = require('path');
const pagesRouterDetection = require('./pagesRouterDetection.js');
const tunnel = require('./tunnel.js');
function setUpBuildTimeVariables(userNextConfig, userSentryOptions, releaseName, projectDir = process.cwd()) {
const assetPrefix = userNextConfig.assetPrefix || userNextConfig.basePath || "";
const basePath = userNextConfig.basePath ?? "";
const buildTimeVariables = {
// Make sure that if we have a windows path, the backslashes are interpreted as such (rather than as escape
// characters)
_sentryRewriteFramesDistDir: userNextConfig.distDir?.replace(/\\/g, "\\\\") || ".next",
// Get the path part of `assetPrefix`, minus any trailing slash. (We use a placeholder for the origin if
// `assetPrefix` doesn't include one. Since we only care about the path, it doesn't matter what it is.)
_sentryRewriteFramesAssetPrefixPath: assetPrefix ? new URL(assetPrefix, "http://dogs.are.great").pathname.replace(/\/$/, "") : "",
...tunnel.getTunnelRouteInjectedValues(userNextConfig, userSentryOptions, projectDir)
};
if (userNextConfig.assetPrefix) {
buildTimeVariables._assetsPrefix = userNextConfig.assetPrefix;
}
if (userSentryOptions._experimental?.thirdPartyOriginStackFrames) {
buildTimeVariables._experimentalThirdPartyOriginStackFrames = "true";
}
if (basePath) {
buildTimeVariables._sentryBasePath = basePath;
}
if (userNextConfig.assetPrefix) {
buildTimeVariables._sentryAssetPrefix = userNextConfig.assetPrefix;
}
if (userSentryOptions._experimental?.thirdPartyOriginStackFrames) {
buildTimeVariables._experimentalThirdPartyOriginStackFrames = "true";
}
if (releaseName) {
buildTimeVariables._sentryRelease = releaseName;
}
if (userNextConfig.cacheComponents) {
buildTimeVariables._sentryCacheComponents = "true";
}
if (pagesRouterDetection.hasOnlyAppRouterPages(projectDir)) {
buildTimeVariables._sentryHasPagesRouter = "false";
}
if (typeof userNextConfig.env === "object") {
userNextConfig.env = { ...buildTimeVariables, ...userNextConfig.env };
} else if (userNextConfig.env === void 0) {
userNextConfig.env = buildTimeVariables;
}
}
function getGitRevision() {
let gitRevision;
try {
gitRevision = childProcess.execSync("git rev-parse HEAD", { stdio: ["ignore", "pipe", "ignore"], windowsHide: true }).toString().trim();
} catch {
}
return gitRevision;
}
function getInstrumentationClientFileContents() {
const potentialInstrumentationClientFileLocations = [
["src", "instrumentation-client.ts"],
["src", "instrumentation-client.js"],
["instrumentation-client.ts"],
["instrumentation-client.js"]
];
for (const pathSegments of potentialInstrumentationClientFileLocations) {
try {
return fs.readFileSync(path.join(process.cwd(), ...pathSegments), "utf-8");
} catch {
}
}
}
exports.getGitRevision = getGitRevision;
exports.getInstrumentationClientFileContents = getInstrumentationClientFileContents;
exports.setUpBuildTimeVariables = setUpBuildTimeVariables;
//# sourceMappingURL=buildTime.js.map