@qrvey/health-checker
Version:
 
71 lines (54 loc) • 2.25 kB
TypeScript
type Dependency = 'database' | 'cache' | 'eventBroker';
type HealthStatus = 'OK' | 'FAILED';
interface EventBrokerHealthCheckerResult {
status: HealthStatus;
metadata: {
consumersSet?: Set<string>;
};
}
interface IHealthChecker<T = void> {
dependency: Dependency;
check(params?: DependencyHealthCheckerParams): Promise<T>;
}
interface IEventBrokerParams {
queues?: string[];
hostName?: string;
consumersSet?: Set<string>;
omitPing?: boolean;
returnConsumersSet?: boolean;
}
type CheckerRegistry = {
cache: IHealthChecker<void>;
database: IHealthChecker<void>;
eventBroker: IHealthChecker<EventBrokerHealthCheckerResult>;
};
type DependencyHealthDetail = {
status: HealthStatus;
durationMs?: number;
metadata?: Record<string, unknown>;
};
type HealthCheckResult = {
status: HealthStatus;
details: Partial<Record<Dependency, DependencyHealthDetail>>;
};
type HealthCheckerParams = {
eventBroker?: IEventBrokerParams;
hostName?: string;
skip?: string[];
force?: boolean;
};
type DependencyHealthCheckerParams = {
hostName?: string;
} & Partial<Record<Dependency, unknown>>;
declare class HealthCheckService {
static check(dependencies: Dependency[], params?: HealthCheckerParams): Promise<HealthCheckResult>;
}
declare const PostgreSQLHealthChecker: IHealthChecker;
declare const RedisHealthChecker: IHealthChecker;
declare const RabbitMQHealthChecker: IHealthChecker<EventBrokerHealthCheckerResult>;
declare function registerHealthCheck(dependency: Dependency | Dependency[]): void;
declare function clearRegistry(): void;
declare const OK: HealthStatus;
declare const FAILED: HealthStatus;
declare const DEFAULT_HEALTH_STATUS: "OK";
export { RedisHealthChecker as CacheHealthChecker, type CheckerRegistry, DEFAULT_HEALTH_STATUS, PostgreSQLHealthChecker as DatabaseHealthChecker, type Dependency, type DependencyHealthCheckerParams, type DependencyHealthDetail, RabbitMQHealthChecker as EventBrokerHealthChecker, type EventBrokerHealthCheckerResult, FAILED, type HealthCheckResult, HealthCheckService, type HealthCheckerParams, type HealthStatus, type IEventBrokerParams, type IHealthChecker, OK, clearRegistry, registerHealthCheck };