UNPKG

unleash-client

Version:
100 lines 3.02 kB
import { EventEmitter } from 'events'; import { CustomHeaders, CustomHeadersFunction } from './headers'; import { HttpOptions } from './http-options'; import { CollectedMetric, ImpactMetricsDataSource } from './impact-metrics/metric-types'; export interface MetricsOptions { appName: string; instanceId: string; connectionId: string; strategies: string[]; metricsInterval: number; metricsJitter?: number; disableMetrics?: boolean; url: string; headers?: CustomHeaders; customHeadersFunction?: CustomHeadersFunction; timeout?: number; httpOptions?: HttpOptions; metricRegistry?: ImpactMetricsDataSource; } interface VariantBucket { [s: string]: number; } interface Bucket { start: Date; stop?: Date; toggles: { [s: string]: { yes: number; no: number; variants: VariantBucket; }; }; } type PlatformName = 'bun' | 'deno' | 'node' | 'unknown'; interface BaseMetricsData { appName: string; instanceId: string; connectionId: string; platformName: PlatformName; platformVersion: string; yggdrasilVersion: null; specVersion: string; } interface MetricsData extends BaseMetricsData { bucket: Bucket; impactMetrics?: CollectedMetric[]; } interface RegistrationData extends BaseMetricsData { sdkVersion: string; strategies: string[]; started: Date; interval: number; } export default class Metrics extends EventEmitter { private bucket; private appName; private instanceId; private connectionId; private sdkVersion; private strategies; private metricsInterval; private metricsJitter; private failures; private disabled; private url; private timer; private started; private headers?; private customHeadersFunction?; private timeout?; private httpOptions?; private platformData; private metricRegistry?; constructor({ appName, instanceId, connectionId, strategies, metricsInterval, metricsJitter, disableMetrics, url, headers, customHeadersFunction, timeout, httpOptions, metricRegistry, }: MetricsOptions); private getAppliedJitter; getFailures(): number; getInterval(): number; private startTimer; start(): void; stop(): void; registerInstance(): Promise<boolean>; configurationError(url: string, statusCode: number): void; backoff(url: string, statusCode: number): void; sendMetrics(): Promise<void>; reduceBackoff(): void; assertBucket(name: string): void; count(name: string, enabled: boolean): void; countVariant(name: string, variantName: string): void; private increaseCounter; private increaseVariantCounter; private bucketIsEmpty; private createBucket; private resetBucket; createMetricsData(impactMetrics: CollectedMetric[]): MetricsData; private restoreBucket; getClientData(): RegistrationData; private getPlatformData; } export {}; //# sourceMappingURL=metrics.d.ts.map