UNPKG

@breautek/storm

Version:

Object-Oriented REST API framework

116 lines 3.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MetricStore = void 0; const tslib_1 = require("tslib"); const prom = tslib_1.__importStar(require("prom-client")); class CounterWrapper { constructor(config) { this.$inner = new prom.Counter({ name: config.name, help: config.help, labelNames: config.labelNames ?? [] }); } inc(labelsOrValue, value) { if (typeof labelsOrValue === 'number') { this.$inner.inc(labelsOrValue); } else if (labelsOrValue !== undefined) { this.$inner.inc(labelsOrValue, value); } else { this.$inner.inc(); } } } class GaugeWrapper { constructor(config) { this.$inner = new prom.Gauge({ name: config.name, help: config.help, labelNames: config.labelNames ?? [] }); } set(labelsOrValue, value) { if (typeof labelsOrValue === 'number') { this.$inner.set(labelsOrValue); } else { this.$inner.set(labelsOrValue, value); } } inc(labelsOrValue, value) { if (typeof labelsOrValue === 'number') { this.$inner.inc(labelsOrValue); } else if (labelsOrValue !== undefined) { this.$inner.inc(labelsOrValue, value); } else { this.$inner.inc(); } } dec(labelsOrValue, value) { if (typeof labelsOrValue === 'number') { this.$inner.dec(labelsOrValue); } else if (labelsOrValue !== undefined) { this.$inner.dec(labelsOrValue, value); } else { this.$inner.dec(); } } } class HistogramWrapper { constructor(config) { this.$inner = new prom.Histogram({ name: config.name, help: config.help, labelNames: config.labelNames ?? [], ...(config.buckets !== undefined ? { buckets: config.buckets } : {}) }); } observe(labelsOrValue, value) { if (typeof labelsOrValue === 'number') { this.$inner.observe(labelsOrValue); } else { this.$inner.observe(labelsOrValue, value); } } startTimer(labels) { return this.$inner.startTimer(labels); } } class MetricStore { constructor() { prom.collectDefaultMetrics(); } static getInstance() { if (!MetricStore.$instance) { MetricStore.$instance = new MetricStore(); } return MetricStore.$instance; } setDefaultLabels(labels) { prom.register.setDefaultLabels(labels); } createCounter(config) { return new CounterWrapper(config); } createGauge(config) { return new GaugeWrapper(config); } createHistogram(config) { return new HistogramWrapper(config); } async getMetrics() { return { type: prom.register.contentType, content: await prom.register.metrics() }; } } exports.MetricStore = MetricStore; //# sourceMappingURL=MetricStore.js.map