@webxsid/nest-exception
Version:
A centralized exception handling module for NestJS applications. It provides structured error management, logging, and automatic exception handling.
114 lines • 5.08 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var AppExceptionModule_1;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AppExceptionModule = void 0;
const common_1 = require("@nestjs/common");
const exception_registry_1 = require("./exception-registry");
const app_exception_filter_1 = require("./app-exception-filter");
const core_1 = require("@nestjs/core");
const app_exception_1 = require("./app-exception");
const exception_handler_1 = require("./exception-handler");
const constant_1 = require("./constant");
let AppExceptionModule = AppExceptionModule_1 = class AppExceptionModule {
constructor(errorRegistry) {
this.errorRegistry = errorRegistry;
}
static forRoot(options = {}) {
return {
module: AppExceptionModule_1,
global: true,
providers: this.createProviders(options),
exports: [
constant_1.AppExceptionProviderKeys.IsDevMode,
constant_1.AppExceptionProviderKeys.Errors,
constant_1.AppExceptionProviderKeys.Logger,
exception_handler_1.ExceptionHandlerService,
exception_registry_1.ExceptionRegistryService,
],
};
}
static forRootAsync(options) {
if (!options.useFactory) {
throw new Error('registerAsync requires a useFactory function.');
}
const asyncProvider = {
provide: constant_1.AppExceptionProviderKeys.ErrorOptions,
useFactory: options.useFactory,
inject: options.inject || [],
};
return {
module: AppExceptionModule_1,
global: true,
imports: options.imports || [],
providers: [
asyncProvider,
{
provide: constant_1.AppExceptionProviderKeys.IsDevMode,
useFactory: (opts) => opts.isDev ?? false,
inject: [constant_1.AppExceptionProviderKeys.ErrorOptions],
},
{
provide: constant_1.AppExceptionProviderKeys.Errors,
useFactory: (opts) => opts.errors || [],
inject: [constant_1.AppExceptionProviderKeys.ErrorOptions],
},
{
provide: constant_1.AppExceptionProviderKeys.Logger,
useFactory: (opts) => opts.logger,
inject: [constant_1.AppExceptionProviderKeys.ErrorOptions],
},
exception_handler_1.ExceptionHandlerService,
exception_registry_1.ExceptionRegistryService,
{
provide: core_1.APP_FILTER,
useClass: app_exception_filter_1.AppExceptionFilter,
},
],
exports: [
constant_1.AppExceptionProviderKeys.IsDevMode,
constant_1.AppExceptionProviderKeys.Errors,
constant_1.AppExceptionProviderKeys.Logger,
exception_handler_1.ExceptionHandlerService,
exception_registry_1.ExceptionRegistryService,
],
};
}
static createProviders(options) {
return [
{
provide: constant_1.AppExceptionProviderKeys.IsDevMode,
useValue: options.isDev ?? false,
},
{
provide: constant_1.AppExceptionProviderKeys.Errors,
useValue: options.errors || [],
},
{
provide: constant_1.AppExceptionProviderKeys.Logger,
useValue: options.logger,
},
exception_handler_1.ExceptionHandlerService,
exception_registry_1.ExceptionRegistryService,
{ provide: core_1.APP_FILTER, useClass: app_exception_filter_1.AppExceptionFilter },
];
}
onModuleInit() {
app_exception_1.AppException.init(this.errorRegistry, false);
}
};
exports.AppExceptionModule = AppExceptionModule;
exports.AppExceptionModule = AppExceptionModule = AppExceptionModule_1 = __decorate([
(0, common_1.Global)(),
(0, common_1.Module)({}),
__metadata("design:paramtypes", [exception_registry_1.ExceptionRegistryService])
], AppExceptionModule);
//# sourceMappingURL=app-exception.module.js.map