UNPKG

@mollitia/prometheus

Version:
149 lines (148 loc) 5.03 kB
import * as Mollitia from 'mollitia'; import * as PrometheusCircuit from './circuit.js'; import * as PrometheusTimeout from './module/timeout.js'; import * as PrometheusRetry from './module/retry.js'; import * as PrometheusBulkhead from './module/bulkhead.js'; import * as PrometheusCache from './module/cache.js'; import * as PrometheusRatelimit from './module/ratelimit.js'; import * as PrometheusFallback from './module/fallback.js'; import * as PrometheusBreaker from './module/breaker/index.js'; import * as PrometheusModule from './module/index.js'; export declare const version: string; export type CircuitFunction = (...params: any[]) => Promise<any>; declare module 'mollitia' { interface CircuitOptions { /** * Prometheus specific Circuit options. [Prometheus Addon] */ prometheus?: PrometheusCircuit.PrometheusCircuitOptions; } interface Circuit { /** * Prometheus Circuit helper. [Prometheus Addon] */ prometheus: PrometheusCircuit.PrometheusCircuitData; /** * Modifies the Circuit function. * @param func The Circuit function. * @param funcName The Method name. (snake_case). [Prometheus Addon] */ fn(func: CircuitFunction, funcName?: string): Circuit; } interface Module { /** * Prometheus Module helper. [Prometheus Addon] */ prometheus: PrometheusModule.PrometheusModuleData; } interface ModuleOptions { /** * Prometheus specific Module options. [Prometheus Addon] */ prometheus?: PrometheusModule.PrometheusModuleOptions; } interface Timeout { /** * Prometheus Timeout helper. [Prometheus Addon] */ prometheus: PrometheusTimeout.PrometheusTimeoutData; } interface Retry { /** * Prometheus Retry helper. [Prometheus Addon] */ prometheus: PrometheusRetry.PrometheusRetryData; } interface Cache { /** * Prometheus Cache helper. [Prometheus Addon] */ prometheus: PrometheusCache.PrometheusCacheData; } interface Bulkhead { /** * Prometheus Bulkhead helper. [Prometheus Addon] */ prometheus: PrometheusBulkhead.PrometheusBulkheadData; } interface Fallback { /** * Prometheus Fallback helper. [Prometheus Addon] */ prometheus: PrometheusFallback.PrometheusFallbackData; } interface Ratelimit { /** * Prometheus Ratelimit helper. [Prometheus Addon] */ prometheus: PrometheusRatelimit.PrometheusRatelimitData; } interface SlidingTimeBreaker { /** * Prometheus Sliding Time Breaker helper. [Prometheus Addon] */ prometheus: PrometheusBreaker.PrometheusBreakerData; } interface SlidingCountBreaker { /** * Prometheus Sliding Count Breaker helper. [Prometheus Addon] */ prometheus: PrometheusBreaker.PrometheusBreakerData; } } interface GlobalMetrics { [key: string]: number; } interface ModuleMetrics { [key: string]: GlobalMetrics; } interface ValueMetrics { [key: string]: { /** * Object containing all Circuit metrics. [Prometheus Addon] * @example * const metrics = MollitiaPrometheus.metrics(); * console.info(metrics.total_executions.circuits.MyCircuit); * // Returns the number of time MyCircuit has been executed. */ circuits: GlobalMetrics; /** * Object containing all Module metrics. [Prometheus Addon] * @example * const metrics = MollitiaPrometheus.metrics(); * console.info(metrics.total_executions.modules.MyModule.MyCircuit); * // Returns the number of time the MyModule has been executed in MyCircuit. */ modules: ModuleMetrics; }; } /** * Array containing every circuit. */ export declare const circuits: Mollitia.Circuit[]; /** * Array containing every modules. */ export declare const modules: Mollitia.Module[]; /** * Returns the full Mollitia metrics (Circuits and Modules) [Prometheus Addon] * @example * const metrics = MollitiaPrometheus.metrics(); * console.info(metrics.total_executions.circuits.MyCircuit); * // Returns the number of time MyCircuit has been executed. */ export declare const metrics: () => ValueMetrics; /** * Returns the full Prometheus scrap (Circuits and Modules) [Prometheus Addon] */ export declare const scrap: () => string; /** * The PrometheusAddon Class, that should be added to the core Mollitia module. [Prometheus Addon] * @example * Mollitia.use(new MollitiaPrometheus.PrometheusAddon()); */ export declare class PrometheusAddon implements Mollitia.Addon { onCircuitCreate(circuit: Mollitia.Circuit, options: Mollitia.CircuitOptions): void; onModuleCreate(module: Mollitia.Module, options: Mollitia.ModuleOptions): void; } export {};