import { MetricOptions, Observer } from '@diia-inhouse/diia-metrics' import { grpcStreamMetricAllowedFields, GrpcStreamMetricLabelsMap, MetricDescriptions, MetricNames, nodeEnvAllowedFields, NodeEnvLabelsMap, } from './interfaces/metrics.js' export function createNodeEnvObserver(getEnv: () => string): Observer { return new Observer(MetricNames.NodeEnv, nodeEnvAllowedFields, MetricDescriptions.NodeEnv, { onCollect: (): ReturnType>['onCollect']> => ({ labels: { env: getEnv() }, value: 1, }), }) } export function createGrpcStreamConnectionsObserver(onCollect: () => number, serviceName: string): Observer { return new Observer( MetricNames.GrpcStreamConnections, grpcStreamMetricAllowedFields, MetricDescriptions.GrpcStreamConnections, { onCollect: () => ({ labels: { service: serviceName }, value: onCollect(), }), }, ) } export function createGrpcStreamPendingCloseObserver(onCollect: () => number, serviceName: string): Observer { return new Observer( MetricNames.GrpcStreamPendingClose, grpcStreamMetricAllowedFields, MetricDescriptions.GrpcStreamPendingClose, { onCollect: () => ({ labels: { service: serviceName }, value: onCollect(), }), }, ) }