UNPKG

@texagon/nestjs-health

Version:

A comprehensive health monitoring package for NestJS applications with metrics and Kubernetes-ready health checks

62 lines 3 kB
"use strict"; 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 HealthModule_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.HealthModule = exports.MODULE_OPTIONS_TOKEN = void 0; const common_1 = require("@nestjs/common"); const terminus_1 = require("@nestjs/terminus"); const axios_1 = require("@nestjs/axios"); const health_controller_1 = require("./health.controller"); const health_service_1 = require("./health.service"); const metrics_service_1 = require("./metrics.service"); const request_logger_middleware_1 = require("./request-logger.middleware"); exports.MODULE_OPTIONS_TOKEN = "HEALTH_MODULE_OPTIONS"; let HealthModule = HealthModule_1 = class HealthModule { static register(options = {}) { const defaultOptions = { enableMemoryMonitoring: true, enableDiskMonitoring: false, diskPath: "/", diskThresholdPercent: 75, routePrefix: "health", passwordProtected: false, password: "", }; const moduleOptions = Object.assign(Object.assign({}, defaultOptions), options); if (moduleOptions.passwordProtected && !moduleOptions.password) { throw new Error("Password is required when passwordProtected is true"); } return { module: HealthModule_1, imports: [terminus_1.TerminusModule, axios_1.HttpModule], providers: [ health_service_1.HealthService, metrics_service_1.MetricsService, { provide: exports.MODULE_OPTIONS_TOKEN, useValue: moduleOptions, }, ], controllers: [health_controller_1.HealthController], exports: [health_service_1.HealthService, metrics_service_1.MetricsService], }; } configure(consumer) { consumer.apply(request_logger_middleware_1.RequestLoggerMiddleware).forRoutes("*"); } }; exports.HealthModule = HealthModule; exports.HealthModule = HealthModule = HealthModule_1 = __decorate([ (0, common_1.Module)({ imports: [terminus_1.TerminusModule, axios_1.HttpModule], controllers: [health_controller_1.HealthController], providers: [health_service_1.HealthService, metrics_service_1.MetricsService], exports: [health_service_1.HealthService, metrics_service_1.MetricsService], }) ], HealthModule); //# sourceMappingURL=health.module.js.map