UNPKG

@tsclean/core

Version:

Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.

70 lines 8.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HttpException = void 0; const utils_1 = require("../utils"); const services_1 = require("../services"); class HttpException extends Error { constructor(response, status, options) { super(); this.response = response; this.status = status; this.options = options; this.initMessage(); this.initName(); this.initCause(); } initCause() { var _a; if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.cause) { this.cause = this.options.cause; return; } if (this.response instanceof Error) { services_1.Logger.warn('DEPRECATED! Passing the error cause as the first argument to HttpException constructor is deprecated. You should use the "options" parameter instead: new HttpException("message", 400, { cause: new Error("Some Error") }) '); this.cause = this.response; } } initMessage() { if ((0, utils_1.isString)(this.response)) { this.message = this.response; } else if ((0, utils_1.isObject)(this.response) && (0, utils_1.isString)(this.response.message)) { this.message = this.response.message; } else if (this.constructor) { this.message = this.constructor.name .match(/[A-Z][a-z]+|[0-9]+/g) .join(' '); } } initName() { this.name = this.constructor.name; } getResponse() { return this.response; } getStatus() { return this.status; } static createBody(objectOrError, description, statusCode) { if (!objectOrError) return { statusCode, message: description }; return (0, utils_1.isObject)(objectOrError) && !Array.isArray(objectOrError) ? objectOrError : { statusCode, message: objectOrError, error: description }; } static extractDescriptionAndOptionsFrom(descriptionOrOptions) { const description = (0, utils_1.isString)(descriptionOrOptions) ? descriptionOrOptions : descriptionOrOptions === null || descriptionOrOptions === void 0 ? void 0 : descriptionOrOptions.description; const httpExceptionOptions = (0, utils_1.isString)(descriptionOrOptions) ? {} : descriptionOrOptions; return { description, httpExceptionOptions, }; } } exports.HttpException = HttpException; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5leGNlcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhjZXB0aW9ucy9odHRwLmV4Y2VwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvQ0FBOEM7QUFDOUMsMENBQW1DO0FBWW5DLE1BQWEsYUFBYyxTQUFRLEtBQUs7SUFFdEMsWUFDbUIsUUFBc0MsRUFDdEMsTUFBYyxFQUNkLE9BQThCO1FBRS9DLEtBQUssRUFBRSxDQUFDO1FBSlMsYUFBUSxHQUFSLFFBQVEsQ0FBOEI7UUFDdEMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBRy9DLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFJTSxTQUFTOztRQUNkLElBQUksTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxLQUFLLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ2hDLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsUUFBUSxZQUFZLEtBQUssRUFBRSxDQUFDO1lBQ25DLGlCQUFNLENBQUMsSUFBSSxDQUNQLDhOQUE4TixDQUNqTyxDQUFDO1lBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLElBQUEsZ0JBQVEsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsQ0FBQzthQUFNLElBQ0wsSUFBQSxnQkFBUSxFQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDdkIsSUFBQSxnQkFBUSxFQUFFLElBQUksQ0FBQyxRQUFnQyxDQUFDLE9BQU8sQ0FBQyxFQUN4RCxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBSSxJQUFJLENBQUMsUUFBZ0MsQ0FBQyxPQUFPLENBQUM7UUFDaEUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJO2lCQUNqQyxLQUFLLENBQUMscUJBQXFCLENBQUM7aUJBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDcEMsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxNQUFNLENBQUMsVUFBVSxDQUN0QixhQUE4QixFQUFFLFdBQW9CLEVBQUUsVUFBbUI7UUFDekUsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUVoRSxPQUFPLElBQUEsZ0JBQVEsRUFBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDO1lBQzdELENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ2pGLENBQUM7SUFFTSxNQUFNLENBQUMsZ0NBQWdDLENBQzFDLG9CQUFtRDtRQUVyRCxNQUFNLFdBQVcsR0FBRyxJQUFBLGdCQUFRLEVBQUMsb0JBQW9CLENBQUM7WUFDOUMsQ0FBQyxDQUFDLG9CQUFvQjtZQUN0QixDQUFDLENBQUMsb0JBQW9CLGFBQXBCLG9CQUFvQix1QkFBcEIsb0JBQW9CLENBQUUsV0FBVyxDQUFDO1FBRXhDLE1BQU0sb0JBQW9CLEdBQUcsSUFBQSxnQkFBUSxFQUFDLG9CQUFvQixDQUFDO1lBQ3ZELENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1FBRTNCLE9BQU87WUFDTCxXQUFXO1lBQ1gsb0JBQW9CO1NBQ3JCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFoRkQsc0NBZ0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNPYmplY3QsIGlzU3RyaW5nIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtMb2dnZXJ9IGZyb20gXCIuLi9zZXJ2aWNlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEh0dHBFeGNlcHRpb25PcHRpb25zIHtcbiAgY2F1c2U/OiBFcnJvcjtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVzY3JpcHRpb25BbmRPcHRpb25zIHtcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGh0dHBFeGNlcHRpb25PcHRpb25zPzogSHR0cEV4Y2VwdGlvbk9wdGlvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBIdHRwRXhjZXB0aW9uIGV4dGVuZHMgRXJyb3Ige1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzcG9uc2U6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGF0dXM6IG51bWJlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM/OiBIdHRwRXhjZXB0aW9uT3B0aW9ucyxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmluaXRNZXNzYWdlKCk7XG4gICAgdGhpcy5pbml0TmFtZSgpO1xuICAgIHRoaXMuaW5pdENhdXNlKCk7XG4gIH1cblxuICBwdWJsaWMgY2F1c2U6IEVycm9yIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBpbml0Q2F1c2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucz8uY2F1c2UpIHtcbiAgICAgIHRoaXMuY2F1c2UgPSB0aGlzLm9wdGlvbnMuY2F1c2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVzcG9uc2UgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgTG9nZ2VyLndhcm4oXG4gICAgICAgICAgJ0RFUFJFQ0FURUQhIFBhc3NpbmcgdGhlIGVycm9yIGNhdXNlIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBIdHRwRXhjZXB0aW9uIGNvbnN0cnVjdG9yIGlzIGRlcHJlY2F0ZWQuIFlvdSBzaG91bGQgdXNlIHRoZSBcIm9wdGlvbnNcIiBwYXJhbWV0ZXIgaW5zdGVhZDogbmV3IEh0dHBFeGNlcHRpb24oXCJtZXNzYWdlXCIsIDQwMCwgeyBjYXVzZTogbmV3IEVycm9yKFwiU29tZSBFcnJvclwiKSB9KSAnLFxuICAgICAgKTtcbiAgICAgIHRoaXMuY2F1c2UgPSB0aGlzLnJlc3BvbnNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbml0TWVzc2FnZSgpIHtcbiAgICBpZiAoaXNTdHJpbmcodGhpcy5yZXNwb25zZSkpIHtcbiAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMucmVzcG9uc2U7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGlzT2JqZWN0KHRoaXMucmVzcG9uc2UpICYmXG4gICAgICBpc1N0cmluZygodGhpcy5yZXNwb25zZSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KS5tZXNzYWdlKVxuICAgICkge1xuICAgICAgdGhpcy5tZXNzYWdlID0gKHRoaXMucmVzcG9uc2UgYXMgUmVjb3JkPHN0cmluZywgYW55PikubWVzc2FnZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uc3RydWN0b3IpIHtcbiAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuY29uc3RydWN0b3IubmFtZVxuICAgICAgICAubWF0Y2goL1tBLVpdW2Etel0rfFswLTldKy9nKVxuICAgICAgICAuam9pbignICcpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbml0TmFtZSgpOiB2b2lkIHtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVzcG9uc2UoKTogc3RyaW5nIHwgb2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdGF0dXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0dXM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNyZWF0ZUJvZHkoXG4gICAgb2JqZWN0T3JFcnJvcjogb2JqZWN0IHwgc3RyaW5nLCBkZXNjcmlwdGlvbj86IHN0cmluZywgc3RhdHVzQ29kZT86IG51bWJlcikge1xuICAgIGlmICghb2JqZWN0T3JFcnJvcikgcmV0dXJuIHsgc3RhdHVzQ29kZSwgbWVzc2FnZTogZGVzY3JpcHRpb24gfTtcblxuICAgIHJldHVybiBpc09iamVjdChvYmplY3RPckVycm9yKSAmJiAhQXJyYXkuaXNBcnJheShvYmplY3RPckVycm9yKVxuICAgICAgPyBvYmplY3RPckVycm9yIDogeyBzdGF0dXNDb2RlLCBtZXNzYWdlOiBvYmplY3RPckVycm9yLCBlcnJvcjogZGVzY3JpcHRpb24gfTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZXh0cmFjdERlc2NyaXB0aW9uQW5kT3B0aW9uc0Zyb20oXG4gICAgICBkZXNjcmlwdGlvbk9yT3B0aW9uczogc3RyaW5nIHwgSHR0cEV4Y2VwdGlvbk9wdGlvbnMsXG4gICk6IERlc2NyaXB0aW9uQW5kT3B0aW9ucyB7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBpc1N0cmluZyhkZXNjcmlwdGlvbk9yT3B0aW9ucylcbiAgICAgICAgPyBkZXNjcmlwdGlvbk9yT3B0aW9uc1xuICAgICAgICA6IGRlc2NyaXB0aW9uT3JPcHRpb25zPy5kZXNjcmlwdGlvbjtcblxuICAgIGNvbnN0IGh0dHBFeGNlcHRpb25PcHRpb25zID0gaXNTdHJpbmcoZGVzY3JpcHRpb25Pck9wdGlvbnMpXG4gICAgICAgID8ge31cbiAgICAgICAgOiBkZXNjcmlwdGlvbk9yT3B0aW9ucztcblxuICAgIHJldHVybiB7XG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGh0dHBFeGNlcHRpb25PcHRpb25zLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==