@mollitia/prometheus
Version:
Prometheus Mollitia Addon
149 lines (148 loc) • 5.03 kB
TypeScript
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 {};