66 lines
7.6 KiB
JavaScript
66 lines
7.6 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const error_stack_parser_1 = __importDefault(require("error-stack-parser"));
|
|
const create_stack_filter_1 = __importDefault(require("./create-stack-filter"));
|
|
const ORIGINAL_STACK_TRACE_LIMIT = Error.stackTraceLimit;
|
|
const STACK_TRACE_LIMIT = 200;
|
|
const STACK_TRACE_LINE_RE = /^\s+at\s+.*$/;
|
|
exports.default = {
|
|
isEnabled: false,
|
|
_isStackTraceLine(stackLine) {
|
|
return STACK_TRACE_LINE_RE.test(stackLine);
|
|
},
|
|
_removeStackTraceLines(error) {
|
|
if (!error.stack) {
|
|
error.stack = '';
|
|
return;
|
|
}
|
|
const stackLines = error.stack.split('\n');
|
|
let stackLinesCount = 0;
|
|
while (stackLinesCount < stackLines.length && this._isStackTraceLine(stackLines[stackLines.length - 1 - stackLinesCount]))
|
|
stackLinesCount++;
|
|
error.stack = stackLines.slice(0, stackLines.length - stackLinesCount).join('\n');
|
|
if (stackLinesCount > 0)
|
|
error.stack += '\n';
|
|
},
|
|
_getFrames(error) {
|
|
try {
|
|
return error_stack_parser_1.default.parse(error);
|
|
}
|
|
catch (e) {
|
|
return [];
|
|
}
|
|
},
|
|
_renderFrameInfo(frames) {
|
|
return frames.map(frame => frame.getSource()).join('\n');
|
|
},
|
|
get enabled() {
|
|
return this.isEnabled;
|
|
},
|
|
set enabled(val) {
|
|
if (this.isEnabled === val)
|
|
return;
|
|
this.isEnabled = val;
|
|
// NOTE: Babel errors may have really deep stacks,
|
|
// so we increase stack trace capacity
|
|
if (this.isEnabled)
|
|
Error.stackTraceLimit = STACK_TRACE_LIMIT;
|
|
else
|
|
Error.stackTraceLimit = ORIGINAL_STACK_TRACE_LIMIT;
|
|
},
|
|
cleanError(error) {
|
|
let frames = this._getFrames(error);
|
|
if (!frames.length)
|
|
return error;
|
|
this._removeStackTraceLines(error);
|
|
const stackFilterFn = (0, create_stack_filter_1.default)(ORIGINAL_STACK_TRACE_LIMIT);
|
|
frames = frames.filter(stackFilterFn);
|
|
error.stack += this._renderFrameInfo(frames);
|
|
return error;
|
|
},
|
|
};
|
|
module.exports = exports.default;
|
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stY2xlYW5pbmctaG9vay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvc3RhY2stY2xlYW5pbmctaG9vay5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRFQUFrRDtBQUNsRCxnRkFBc0Q7QUFHdEQsTUFBTSwwQkFBMEIsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO0FBQ3pELE1BQU0saUJBQWlCLEdBQVksR0FBRyxDQUFDO0FBQ3ZDLE1BQU0sbUJBQW1CLEdBQVUsY0FBYyxDQUFDO0FBR2xELGtCQUFlO0lBQ1gsU0FBUyxFQUFFLEtBQUs7SUFFaEIsaUJBQWlCLENBQUUsU0FBUztRQUN4QixPQUFPLG1CQUFtQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsc0JBQXNCLENBQUUsS0FBSztRQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRTtZQUNkLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ2pCLE9BQU87U0FDVjtRQUVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNDLElBQUksZUFBZSxHQUFHLENBQUMsQ0FBQztRQUV4QixPQUFPLGVBQWUsR0FBRyxVQUFVLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUM7WUFDckgsZUFBZSxFQUFFLENBQUM7UUFFdEIsS0FBSyxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsRixJQUFJLGVBQWUsR0FBRyxDQUFDO1lBQ25CLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxVQUFVLENBQUUsS0FBSztRQUNiLElBQUk7WUFDQSxPQUFPLDRCQUFnQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN4QztRQUNELE9BQU8sQ0FBQyxFQUFFO1lBQ04sT0FBTyxFQUFFLENBQUM7U0FDYjtJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBRSxNQUFNO1FBQ3BCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBRSxHQUFHO1FBQ1osSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLEdBQUc7WUFDdEIsT0FBTztRQUVYLElBQUksQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBRXJCLGtEQUFrRDtRQUNsRCxzQ0FBc0M7UUFDdEMsSUFBSSxJQUFJLENBQUMsU0FBUztZQUNkLEtBQUssQ0FBQyxlQUFlLEdBQUcsaUJBQWlCLENBQUM7O1lBRTFDLEtBQUssQ0FBQyxlQUFlLEdBQUcsMEJBQTBCLENBQUM7SUFDM0QsQ0FBQztJQUVELFVBQVUsQ0FBRSxLQUFLO1FBQ2IsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVwQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDZCxPQUFPLEtBQUssQ0FBQztRQUVqQixJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkMsTUFBTSxhQUFhLEdBQUcsSUFBQSw2QkFBaUIsRUFBQywwQkFBMEIsQ0FBQyxDQUFDO1FBRXBFLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXRDLEtBQUssQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTdDLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGVycm9yU3RhY2tQYXJzZXIgZnJvbSAnZXJyb3Itc3RhY2stcGFyc2VyJztcbmltcG9ydCBjcmVhdGVTdGFja0ZpbHRlciBmcm9tICcuL2NyZWF0ZS1zdGFjay1maWx0ZXInO1xuXG5cbmNvbnN0IE9SSUdJTkFMX1NUQUNLX1RSQUNFX0xJTUlUID0gRXJyb3Iuc3RhY2tUcmFjZUxpbWl0O1xuY29uc3QgU1RBQ0tfVFJBQ0VfTElNSVQgICAgICAgICAgPSAyMDA7XG5jb25zdCBTVEFDS19UUkFDRV9MSU5FX1JFICAgICAgICA9IC9eXFxzK2F0XFxzKy4qJC87XG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICAgIGlzRW5hYmxlZDogZmFsc2UsXG5cbiAgICBfaXNTdGFja1RyYWNlTGluZSAoc3RhY2tMaW5lKSB7XG4gICAgICAgIHJldHVybiBTVEFDS19UUkFDRV9MSU5FX1JFLnRlc3Qoc3RhY2tMaW5lKTtcbiAgICB9LFxuXG4gICAgX3JlbW92ZVN0YWNrVHJhY2VMaW5lcyAoZXJyb3IpIHtcbiAgICAgICAgaWYgKCFlcnJvci5zdGFjaykge1xuICAgICAgICAgICAgZXJyb3Iuc3RhY2sgPSAnJztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YWNrTGluZXMgPSBlcnJvci5zdGFjay5zcGxpdCgnXFxuJyk7XG5cbiAgICAgICAgbGV0IHN0YWNrTGluZXNDb3VudCA9IDA7XG5cbiAgICAgICAgd2hpbGUgKHN0YWNrTGluZXNDb3VudCA8IHN0YWNrTGluZXMubGVuZ3RoICYmIHRoaXMuX2lzU3RhY2tUcmFjZUxpbmUoc3RhY2tMaW5lc1tzdGFja0xpbmVzLmxlbmd0aCAtIDEgLSBzdGFja0xpbmVzQ291bnRdKSlcbiAgICAgICAgICAgIHN0YWNrTGluZXNDb3VudCsrO1xuXG4gICAgICAgIGVycm9yLnN0YWNrID0gc3RhY2tMaW5lcy5zbGljZSgwLCBzdGFja0xpbmVzLmxlbmd0aCAtIHN0YWNrTGluZXNDb3VudCkuam9pbignXFxuJyk7XG5cbiAgICAgICAgaWYgKHN0YWNrTGluZXNDb3VudCA+IDApXG4gICAgICAgICAgICBlcnJvci5zdGFjayArPSAnXFxuJztcbiAgICB9LFxuXG4gICAgX2dldEZyYW1lcyAoZXJyb3IpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBlcnJvclN0YWNrUGFyc2VyLnBhcnNlKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIF9yZW5kZXJGcmFtZUluZm8gKGZyYW1lcykge1xuICAgICAgICByZXR1cm4gZnJhbWVzLm1hcChmcmFtZSA9PiBmcmFtZS5nZXRTb3VyY2UoKSkuam9pbignXFxuJyk7XG4gICAgfSxcblxuICAgIGdldCBlbmFibGVkICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNFbmFibGVkO1xuICAgIH0sXG5cbiAgICBzZXQgZW5hYmxlZCAodmFsKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZCA9PT0gdmFsKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuaXNFbmFibGVkID0gdmFsO1xuXG4gICAgICAgIC8vIE5PVEU6IEJhYmVsIGVycm9ycyBtYXkgaGF2ZSByZWFsbHkgZGVlcCBzdGFja3MsXG4gICAgICAgIC8vIHNvIHdlIGluY3JlYXNlIHN0YWNrIHRyYWNlIGNhcGFjaXR5XG4gICAgICAgIGlmICh0aGlzLmlzRW5hYmxlZClcbiAgICAgICAgICAgIEVycm9yLnN0YWNrVHJhY2VMaW1pdCA9IFNUQUNLX1RSQUNFX0xJTUlUO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgICBFcnJvci5zdGFja1RyYWNlTGltaXQgPSBPUklHSU5BTF9TVEFDS19UUkFDRV9MSU1JVDtcbiAgICB9LFxuXG4gICAgY2xlYW5FcnJvciAoZXJyb3IpIHtcbiAgICAgICAgbGV0IGZyYW1lcyA9IHRoaXMuX2dldEZyYW1lcyhlcnJvcik7XG5cbiAgICAgICAgaWYgKCFmcmFtZXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuXG4gICAgICAgIHRoaXMuX3JlbW92ZVN0YWNrVHJhY2VMaW5lcyhlcnJvcik7XG5cbiAgICAgICAgY29uc3Qgc3RhY2tGaWx0ZXJGbiA9IGNyZWF0ZVN0YWNrRmlsdGVyKE9SSUdJTkFMX1NUQUNLX1RSQUNFX0xJTUlUKTtcblxuICAgICAgICBmcmFtZXMgPSBmcmFtZXMuZmlsdGVyKHN0YWNrRmlsdGVyRm4pO1xuXG4gICAgICAgIGVycm9yLnN0YWNrICs9IHRoaXMuX3JlbmRlckZyYW1lSW5mbyhmcmFtZXMpO1xuXG4gICAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9LFxufTtcbiJdfQ==
|