UNPKG

@elsikora/nestjs-crud-automator

Version:

A library for automating the creation of CRUD operations in NestJS.

110 lines (106 loc) 5.41 kB
'use strict'; var tslib_es6 = require('../../external/tslib/tslib.es6.js'); var date_constant = require('../../constant/date.constant.js'); var exception_constant = require('../../constant/dto/exception.constant.js'); var number_constant = require('../../constant/number.constant.js'); var enum_decorator = require('../../decorator/api/property/enum.decorator.js'); var number_decorator = require('../../decorator/api/property/number.decorator.js'); var string_decorator = require('../../decorator/api/property/string.decorator.js'); var uuid_decorator = require('../../decorator/api/property/uuid.decorator.js'); require('../../enum/decorator/api/action.enum.js'); require('../../enum/decorator/api/authentication-type.enum.js'); require('../../enum/decorator/api/controller/load-relations-strategy.enum.js'); require('../../enum/decorator/api/controller/request-transformer-type.enum.js'); require('../../enum/decorator/api/dto-type.enum.js'); require('../../enum/decorator/api/function/type.enum.js'); require('../../enum/decorator/api/on-type.enum.js'); require('../../enum/decorator/api/property/data-type.enum.js'); require('../../enum/decorator/api/property/date/identifier.enum.js'); require('../../enum/decorator/api/property/date/type.enum.js'); require('../../enum/decorator/api/property/desribe-type.enum.js'); var numberType_enum = require('../../enum/decorator/api/property/number-type.enum.js'); var stringType_enum = require('../../enum/decorator/api/property/string-type.enum.js'); require('../../enum/decorator/api/route-type.enum.js'); var common = require('@nestjs/common'); var camelCaseString_utility = require('../camel-case-string.utility.js'); const exceptionDtoCache = new Map(); /** * Creates exception DTOs with standardized properties based on HTTP status codes. * Generates a class with properties like correlationID, error name, message, status code, and timestamp, * all properly decorated with Swagger and validation decorators. * @param {HttpStatus} httpStatus - The HTTP status code for the exception * @returns {Type<unknown>} A generated DTO class for the exception */ function DtoGenerateException(httpStatus) { const cached = exceptionDtoCache.get(httpStatus); if (cached) { return cached; } const errorName = common.HttpStatus[httpStatus]; class GeneratedErrorDTO { correlationID; error = camelCaseString_utility.CamelCaseString(errorName); message = "Error message"; statusCode = httpStatus; timestamp; } tslib_es6.__decorate([ uuid_decorator.ApiPropertyUUID({ entity: { name: "Correlation" }, isResponse: true }), tslib_es6.__metadata("design:type", String) ], GeneratedErrorDTO.prototype, "correlationID", void 0); tslib_es6.__decorate([ string_decorator.ApiPropertyString({ description: "name", entity: { name: "Error" }, exampleValue: camelCaseString_utility.CamelCaseString(errorName), format: stringType_enum.EApiPropertyStringType.STRING, isResponse: true, maxLength: exception_constant.EXCEPTION_DTO_CONSTANT.MAXIMUM_ERROR_LENGTH, minLength: exception_constant.EXCEPTION_DTO_CONSTANT.MINIMUM_ERROR_LENGTH, pattern: "/^[a-zA-Z_ ]{3,64}$/", }), tslib_es6.__metadata("design:type", String) ], GeneratedErrorDTO.prototype, "error", void 0); tslib_es6.__decorate([ string_decorator.ApiPropertyString({ description: "message", entity: { name: "Error" }, exampleValue: "Error message", format: stringType_enum.EApiPropertyStringType.STRING, isResponse: true, maxLength: exception_constant.EXCEPTION_DTO_CONSTANT.MAXIMUM_ERROR_MESSAGE_LENGTH, minLength: exception_constant.EXCEPTION_DTO_CONSTANT.MINIMUM_ERROR_MESSAGE_LENGTH, pattern: "/^[a-zA-Z_ ]{3,64}$/", }), tslib_es6.__metadata("design:type", String) ], GeneratedErrorDTO.prototype, "message", void 0); tslib_es6.__decorate([ enum_decorator.ApiPropertyEnum({ description: "status code", entity: { name: "Error" }, enum: common.HttpStatus, enumName: "EHttpStatus", exampleValue: httpStatus, isResponse: true, }), tslib_es6.__metadata("design:type", Number) ], GeneratedErrorDTO.prototype, "statusCode", void 0); tslib_es6.__decorate([ number_decorator.ApiPropertyNumber({ description: "timestamp", entity: { name: "Error" }, exampleValue: Date.now(), format: numberType_enum.EApiPropertyNumberType.INTEGER, isResponse: true, maximum: date_constant.DATE_CONSTANT.MAXIMUM_UNIX_TIME, minimum: date_constant.DATE_CONSTANT.MINIMUM_UNIX_TIME, multipleOf: number_constant.NUMBER_CONSTANT.ONE, }), tslib_es6.__metadata("design:type", Number) ], GeneratedErrorDTO.prototype, "timestamp", void 0); Object.defineProperty(GeneratedErrorDTO, "name", { value: `Exception${camelCaseString_utility.CamelCaseString(errorName)}DTO` }); exceptionDtoCache.set(httpStatus, GeneratedErrorDTO); return GeneratedErrorDTO; } exports.DtoGenerateException = DtoGenerateException; //# sourceMappingURL=generate-exception.utility.js.map