@sentry/wizard
Version:
Sentry wizard helping you to configure your project
99 lines • 5.34 kB
JavaScript
;
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateAppConfig = exports.initializeSentryOnApplicationEntry = void 0;
// @ts-expect-error - magicast is ESM and TS complains about that. It works though
const magicast_1 = require("magicast");
const fs = __importStar(require("fs"));
const path = __importStar(require("path"));
// @ts-expect-error - clack is ESM and TS complains about that. It works though
const prompts_1 = __importDefault(require("@clack/prompts"));
const chalk_1 = __importDefault(require("chalk"));
const app_config_1 = require("./codemods/app-config");
const main_1 = require("./codemods/main");
const ast_utils_1 = require("../utils/ast-utils");
const Sentry = __importStar(require("@sentry/node"));
async function initializeSentryOnApplicationEntry(dsn, selectedFeatures) {
const appEntryFilename = 'main.ts';
const appEntryPath = path.join(process.cwd(), 'src', appEntryFilename);
const originalAppEntry = await (0, magicast_1.loadFile)(appEntryPath);
if ((0, ast_utils_1.hasSentryContent)(originalAppEntry.$ast)) {
prompts_1.default.log.warn(`File ${chalk_1.default.cyan(appEntryFilename)} already contains Sentry.
Skipping adding Sentry functionality to ${chalk_1.default.cyan(appEntryFilename)}.`);
return;
}
const updatedAppEntryMod = (0, main_1.updateAppEntryMod)(originalAppEntry, dsn, selectedFeatures);
try {
await (0, magicast_1.writeFile)(updatedAppEntryMod.$ast, appEntryPath);
}
catch (error) {
prompts_1.default.log.error(`Error while adding Sentry to ${chalk_1.default.cyan(appEntryFilename)}`);
prompts_1.default.log.warn(`Please refer to the documentation for manual setup:
${chalk_1.default.underline('https://docs.sentry.io/platforms/javascript/guides/angular/#configure')}`);
return;
}
prompts_1.default.log.success(`Successfully initialized Sentry on ${chalk_1.default.cyan(appEntryFilename)}`);
}
exports.initializeSentryOnApplicationEntry = initializeSentryOnApplicationEntry;
async function updateAppConfig(angularVersion, isTracingEnabled) {
const appConfigFilename = 'app.config.ts';
const appConfigPath = path.join(process.cwd(), 'src', 'app', appConfigFilename);
if (!fs.existsSync(appConfigPath)) {
Sentry.setTag('angular-app-config-found', false);
prompts_1.default.log.warn(`File ${chalk_1.default.cyan(appConfigFilename)} not found. Skipping adding Sentry functionality.`);
prompts_1.default.log.warn(`Please refer to the documentation for manual setup:
${chalk_1.default.underline('https://docs.sentry.io/platforms/javascript/guides/angular/#configure')}`);
return;
}
Sentry.setTag('angular-app-config-found', true);
const appConfig = await (0, magicast_1.loadFile)(appConfigPath);
if ((0, ast_utils_1.hasSentryContent)(appConfig.$ast)) {
prompts_1.default.log.warn(`File ${chalk_1.default.cyan(appConfigFilename)} already contains Sentry.
Skipping adding Sentry functionality to ${chalk_1.default.cyan(appConfigFilename)}.`);
return;
}
try {
const updatedAppConfigMod = (0, app_config_1.updateAppConfigMod)(appConfig, angularVersion, isTracingEnabled);
await (0, magicast_1.writeFile)(updatedAppConfigMod.$ast, appConfigPath);
}
catch (error) {
prompts_1.default.log.error(`Error while updating your app config ${chalk_1.default.cyan(appConfigFilename)}.`);
prompts_1.default.log.info(chalk_1.default.dim(typeof error === 'object' && error != null && 'toString' in error
? error.toString()
: typeof error === 'string'
? error
: ''));
prompts_1.default.log.warn(`Please refer to the documentation for manual setup:
${chalk_1.default.underline('https://docs.sentry.io/platforms/javascript/guides/angular/#configure')}`);
return;
}
prompts_1.default.log.success(`Successfully updated your app config ${chalk_1.default.cyan(appConfigFilename)}`);
}
exports.updateAppConfig = updateAppConfig;
//# sourceMappingURL=sdk-setup.js.map