vtex
Version:
The platform for e-commerce apps
86 lines (85 loc) • 4.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ErrorReport = void 0;
const tslib_1 = require("tslib");
const node_error_report_1 = require("@vtex/node-error-report");
const chalk_1 = tslib_1.__importDefault(require("chalk"));
const pkg = tslib_1.__importStar(require("../../../package.json"));
const logger_1 = tslib_1.__importDefault(require("../logger"));
const SessionManager_1 = require("../session/SessionManager");
const getPlatform_1 = require("../../lib/utils/getPlatform");
const TelemetryCollector_1 = require("../../lib/telemetry/TelemetryCollector");
const ErrorKinds_1 = require("./ErrorKinds");
class ErrorReport extends node_error_report_1.ErrorReportBase {
constructor(args) {
var _a;
const { workspace, account } = SessionManager_1.SessionManager.getSingleton();
const env = {
account,
workspace,
toolbeltVersion: pkg.version,
nodeVersion: process.version,
platform: getPlatform_1.getPlatform(),
command: process.argv.slice(2).join(' '),
};
super({
...args,
details: {
...args.details,
env,
},
});
this.shouldRemoteReport = (_a = args.shouldRemoteReport) !== null && _a !== void 0 ? _a : true;
}
static isFlowIssue(err) {
return err instanceof ErrorReport && err.kind === ErrorKinds_1.ErrorKinds.FLOW_ISSUE_ERROR;
}
static create(args) {
return new ErrorReport({
shouldRemoteReport: args.shouldRemoteReport,
...node_error_report_1.createErrorReportBaseArgs(args),
});
}
static createAndMaybeRegisterOnTelemetry(args) {
return ErrorReport.create(args).maybeSendToTelemetry();
}
logErrorForUser(opts) {
var _a, _b, _c, _d;
const { coreLogLevelDefault, requestDataLogLevelDefault } = {
coreLogLevelDefault: (_a = opts === null || opts === void 0 ? void 0 : opts.coreLogLevelDefault) !== null && _a !== void 0 ? _a : 'error',
requestDataLogLevelDefault: (_b = opts === null || opts === void 0 ? void 0 : opts.requestDataLogLevelDefault) !== null && _b !== void 0 ? _b : 'debug',
};
const coreLogLevels = {
errorId: coreLogLevelDefault,
errorKind: coreLogLevelDefault,
errorMessage: coreLogLevelDefault,
...(_c = opts === null || opts === void 0 ? void 0 : opts.logLevels) === null || _c === void 0 ? void 0 : _c.core,
};
const requestDataLogLevels = {
requestInfo: requestDataLogLevelDefault,
requestStatus: requestDataLogLevelDefault,
...(_d = opts === null || opts === void 0 ? void 0 : opts.logLevels) === null || _d === void 0 ? void 0 : _d.requestData,
};
logger_1.default[coreLogLevels.errorKind](chalk_1.default `{bold ErrorKind:} ${this.kind}`);
logger_1.default[coreLogLevels.errorMessage](chalk_1.default `{bold Message:} ${this.message}`);
if (this.shouldRemoteReport) {
logger_1.default[coreLogLevels.errorId](chalk_1.default `{bold ErrorID:} ${this.metadata.errorId}`);
}
if (node_error_report_1.isRequestInfo(this.parsedInfo)) {
const { method, url } = this.parsedInfo.requestConfig;
logger_1.default[requestDataLogLevels.requestInfo](chalk_1.default `{bold Request:} ${method} ${url}`);
if (this.parsedInfo.response) {
const { status } = this.parsedInfo.response;
logger_1.default[requestDataLogLevels.requestStatus](chalk_1.default `{bold Status:} ${status.toString()}`);
}
}
return this;
}
maybeSendToTelemetry() {
if (this.shouldRemoteReport && !this.isErrorReported()) {
TelemetryCollector_1.TelemetryCollector.getCollector().registerError(this);
}
return this;
}
}
exports.ErrorReport = ErrorReport;