@selfage/nested_error
Version:
Builds nested errors while preserving stacks.
29 lines • 2.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StdError = exports.NestedError = void 0;
class NestedError extends Error {
constructor(name, message, cause) {
super(message);
this.cause = cause;
this.name = name;
// stack is a non-standard property that its implementation is not in
// specification.
if (this.stack && this.cause) {
if (this.cause.stack) {
this.stack = this.stack + "\nCaused by: " + cause.stack;
}
else {
this.stack = this.stack + "\nCaused by: " + cause;
}
}
}
}
exports.NestedError = NestedError;
class StdError extends NestedError {
constructor(message, cause) {
super("StdError", message, cause);
this.cause = cause;
}
}
exports.StdError = StdError;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFhLFdBQVksU0FBUSxLQUFLO0lBQ3BDLFlBQW1CLElBQVksRUFBRSxPQUFnQixFQUFTLEtBQVc7UUFDbkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRHlDLFVBQUssR0FBTCxLQUFLLENBQU07UUFFbkUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFFakIscUVBQXFFO1FBQ3JFLGlCQUFpQjtRQUNqQixJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLGVBQWUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQzFELENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsZUFBZSxHQUFHLEtBQUssQ0FBQztZQUNwRCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWZELGtDQWVDO0FBRUQsTUFBYSxRQUFTLFNBQVEsV0FBVztJQUN2QyxZQUFtQixPQUFnQixFQUFTLEtBQVc7UUFDckQsS0FBSyxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFEUSxVQUFLLEdBQUwsS0FBSyxDQUFNO0lBRXZELENBQUM7Q0FDRjtBQUpELDRCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIE5lc3RlZEVycm9yIGV4dGVuZHMgRXJyb3Ige1xyXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIHB1YmxpYyBjYXVzZT86IGFueSkge1xyXG4gICAgc3VwZXIobWVzc2FnZSk7XHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG5cclxuICAgIC8vIHN0YWNrIGlzIGEgbm9uLXN0YW5kYXJkIHByb3BlcnR5IHRoYXQgaXRzIGltcGxlbWVudGF0aW9uIGlzIG5vdCBpblxyXG4gICAgLy8gc3BlY2lmaWNhdGlvbi5cclxuICAgIGlmICh0aGlzLnN0YWNrICYmIHRoaXMuY2F1c2UpIHtcclxuICAgICAgaWYgKHRoaXMuY2F1c2Uuc3RhY2spIHtcclxuICAgICAgICB0aGlzLnN0YWNrID0gdGhpcy5zdGFjayArIFwiXFxuQ2F1c2VkIGJ5OiBcIiArIGNhdXNlLnN0YWNrO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3RhY2sgPSB0aGlzLnN0YWNrICsgXCJcXG5DYXVzZWQgYnk6IFwiICsgY2F1c2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTdGRFcnJvciBleHRlbmRzIE5lc3RlZEVycm9yIHtcclxuICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZywgcHVibGljIGNhdXNlPzogYW55KSB7XHJcbiAgICBzdXBlcihcIlN0ZEVycm9yXCIsIG1lc3NhZ2UsIGNhdXNlKTtcclxuICB9XHJcbn1cclxuIl19