@burdenoff/be-sdk 2026.725.2 → 2026.803.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-32KT5RF2.js → chunk-4OPOVK54.js} +3 -3
- package/dist/{chunk-32KT5RF2.js.map → chunk-4OPOVK54.js.map} +1 -1
- package/dist/{chunk-ACYGOENW.js → chunk-GTX65XAP.js} +3 -3
- package/dist/{chunk-ACYGOENW.js.map → chunk-GTX65XAP.js.map} +1 -1
- package/dist/{chunk-REF7PANB.js → chunk-Q6UAOZFZ.js} +29 -8
- package/dist/chunk-Q6UAOZFZ.js.map +1 -0
- package/dist/index.js +5 -5
- package/dist/instrumentation/index.js +2 -2
- package/dist/metrics/index.js +2 -2
- package/dist/server/index.js +2 -2
- package/dist/telemetry/index.js +3 -3
- package/package.json +3 -3
- package/dist/chunk-REF7PANB.js.map +0 -1
|
@@ -296,6 +296,23 @@ function getLabelKey(labels) {
|
|
|
296
296
|
return Object.entries(labels).sort(([a], [b]) => a.localeCompare(b)).map(([k, v]) => `${k}=${v}`).join(",");
|
|
297
297
|
}
|
|
298
298
|
__name(getLabelKey, "getLabelKey");
|
|
299
|
+
function escapePrometheusLabelValue(value) {
|
|
300
|
+
return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n");
|
|
301
|
+
}
|
|
302
|
+
__name(escapePrometheusLabelValue, "escapePrometheusLabelValue");
|
|
303
|
+
function formatPrometheusLabelPairs(labelKey) {
|
|
304
|
+
if (!labelKey) return "";
|
|
305
|
+
const pairs = [];
|
|
306
|
+
for (const part of labelKey.split(",")) {
|
|
307
|
+
const eq = part.indexOf("=");
|
|
308
|
+
if (eq <= 0) continue;
|
|
309
|
+
const name = part.slice(0, eq);
|
|
310
|
+
const value = part.slice(eq + 1);
|
|
311
|
+
pairs.push(`${name}="${escapePrometheusLabelValue(value)}"`);
|
|
312
|
+
}
|
|
313
|
+
return pairs.join(",");
|
|
314
|
+
}
|
|
315
|
+
__name(formatPrometheusLabelPairs, "formatPrometheusLabelPairs");
|
|
299
316
|
var InMemoryCounter = class InMemoryCounter2 {
|
|
300
317
|
static {
|
|
301
318
|
__name(this, "InMemoryCounter");
|
|
@@ -719,7 +736,8 @@ var MetricsRegistry = class {
|
|
|
719
736
|
lines.push(`# HELP ${counter.getName()} ${counter.getDescription()}`);
|
|
720
737
|
lines.push(`# TYPE ${counter.getName()} counter`);
|
|
721
738
|
for (const [labels, value] of counter.getAllValues()) {
|
|
722
|
-
const
|
|
739
|
+
const pairs = formatPrometheusLabelPairs(labels);
|
|
740
|
+
const labelStr = pairs ? `{${pairs}}` : "";
|
|
723
741
|
lines.push(`${counter.getName()}${labelStr} ${value}`);
|
|
724
742
|
}
|
|
725
743
|
}
|
|
@@ -732,13 +750,14 @@ var MetricsRegistry = class {
|
|
|
732
750
|
lines.push(`# HELP ${histogram.getName()} ${histogram.getDescription()}`);
|
|
733
751
|
lines.push(`# TYPE ${histogram.getName()} histogram`);
|
|
734
752
|
for (const [labels, data] of histogram.getAllData()) {
|
|
735
|
-
const
|
|
753
|
+
const pairs = formatPrometheusLabelPairs(labels);
|
|
754
|
+
const labelStr = pairs ? `,${pairs}` : "";
|
|
736
755
|
for (const [le, count] of data.buckets) {
|
|
737
756
|
const leStr = le === Infinity ? "+Inf" : le.toString();
|
|
738
757
|
lines.push(`${histogram.getName()}_bucket{le="${leStr}"${labelStr}} ${count}`);
|
|
739
758
|
}
|
|
740
|
-
lines.push(`${histogram.getName()}_sum{${
|
|
741
|
-
lines.push(`${histogram.getName()}_count{${
|
|
759
|
+
lines.push(`${histogram.getName()}_sum{${pairs}} ${data.sum}`);
|
|
760
|
+
lines.push(`${histogram.getName()}_count{${pairs}} ${data.count}`);
|
|
742
761
|
}
|
|
743
762
|
}
|
|
744
763
|
}
|
|
@@ -750,7 +769,8 @@ var MetricsRegistry = class {
|
|
|
750
769
|
lines.push(`# HELP ${gauge.getName()} ${gauge.getDescription()}`);
|
|
751
770
|
lines.push(`# TYPE ${gauge.getName()} gauge`);
|
|
752
771
|
for (const [labels, value] of gauge.getAllValues()) {
|
|
753
|
-
const
|
|
772
|
+
const pairs = formatPrometheusLabelPairs(labels);
|
|
773
|
+
const labelStr = pairs ? `{${pairs}}` : "";
|
|
754
774
|
lines.push(`${gauge.getName()}${labelStr} ${value}`);
|
|
755
775
|
}
|
|
756
776
|
}
|
|
@@ -763,7 +783,8 @@ var MetricsRegistry = class {
|
|
|
763
783
|
lines.push(`# HELP ${counter.getName()} ${counter.getDescription()}`);
|
|
764
784
|
lines.push(`# TYPE ${counter.getName()} gauge`);
|
|
765
785
|
for (const [labels, value] of counter.getAllValues()) {
|
|
766
|
-
const
|
|
786
|
+
const pairs = formatPrometheusLabelPairs(labels);
|
|
787
|
+
const labelStr = pairs ? `{${pairs}}` : "";
|
|
767
788
|
lines.push(`${counter.getName()}${labelStr} ${value}`);
|
|
768
789
|
}
|
|
769
790
|
}
|
|
@@ -848,5 +869,5 @@ function createUpDownCounter(name, description) {
|
|
|
848
869
|
__name(createUpDownCounter, "createUpDownCounter");
|
|
849
870
|
|
|
850
871
|
export { DEFAULT_CACHE_CONFIG, DEFAULT_DATABASE_CONFIG, DEFAULT_EVENT_QUEUE_CONFIG, DEFAULT_FEATURE_FLAGS, DEFAULT_GRAPHQL_CONFIG, DEFAULT_HTTP_CONFIG, DEFAULT_LOGGING_CONFIG, DEFAULT_METRICS_CONFIG, DEFAULT_TRACING_CONFIG, ENV_VARS, MetricsRegistry, buildDatabaseConfig, buildFeatureFlags, buildGraphQLConfig, buildInstrumentationConfig, buildMetricsConfig, buildTracingConfig, createCounter, createGauge, createHistogram, createUpDownCounter, getInstrumentationConfig, getMetricsRegistry, initializeInstrumentationConfig, initializeMetricsRegistry, isFeatureEnabled, isInstrumentationConfigInitialized, isMetricsRegistryInitialized, resetInstrumentationConfig, resetMetricsRegistry, updateInstrumentationConfig };
|
|
851
|
-
//# sourceMappingURL=chunk-
|
|
852
|
-
//# sourceMappingURL=chunk-
|
|
872
|
+
//# sourceMappingURL=chunk-Q6UAOZFZ.js.map
|
|
873
|
+
//# sourceMappingURL=chunk-Q6UAOZFZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/instrumentation/config.ts","../src/instrumentation/metrics-collector.ts"],"names":["ENV_VARS","INSTRUMENTATION_ENABLED","INSTRUMENTATION_TRACING","INSTRUMENTATION_METRICS","INSTRUMENTATION_LOGGING","INSTRUMENTATION_GRAPHQL","INSTRUMENTATION_DATABASE","INSTRUMENTATION_HTTP","INSTRUMENTATION_CACHE","INSTRUMENTATION_EVENT_QUEUE","OTEL_SERVICE_NAME","OTEL_SERVICE_VERSION","OTEL_ENVIRONMENT","OTEL_EXPORTER_OTLP_ENDPOINT","OTEL_EXPORTER_TYPE","OTEL_SAMPLING_RATE","OTEL_PROPAGATION_FORMAT","METRICS_EXPORTER_TYPE","METRICS_PROMETHEUS_ENDPOINT","METRICS_PROMETHEUS_PORT","METRICS_COLLECT_INTERVAL","METRICS_DEFAULT_ENABLED","METRICS_PREFIX","DB_INSTRUMENTATION_INCLUDE_STATEMENT","DB_INSTRUMENTATION_SLOW_QUERY_THRESHOLD","GRAPHQL_INSTRUMENTATION_INCLUDE_DOCUMENT","GRAPHQL_INSTRUMENTATION_INCLUDE_VARIABLES","GRAPHQL_INSTRUMENTATION_INCLUDE_RESOLVERS","getEnvBoolean","key","defaultValue","value","process","env","undefined","toLowerCase","getEnvNumber","parsed","parseFloat","isNaN","getEnvString","DEFAULT_FEATURE_FLAGS","tracing","metrics","logging","graphql","database","http","cache","eventQueue","DEFAULT_TRACING_CONFIG","enabled","serviceName","serviceVersion","environment","exporterType","samplingRate","propagationFormat","resourceAttributes","ignoredRoutes","ignoredOperations","DEFAULT_METRICS_CONFIG","prometheusEndpoint","prometheusPort","collectInterval","defaultMetrics","metricPrefix","DEFAULT_LOGGING_CONFIG","includeTraceId","includeSpanId","includeTraceFlags","level","DEFAULT_GRAPHQL_CONFIG","includeDocument","includeVariables","includeResult","documentDepth","includeResolvers","resolverSpanDepth","DEFAULT_DATABASE_CONFIG","includeStatement","includeParameters","includeRowCount","slowQueryThreshold","DEFAULT_HTTP_CONFIG","includeRequestHeaders","includeResponseHeaders","includeRequestBody","includeResponseBody","redactedHeaders","maxBodySize","DEFAULT_CACHE_CONFIG","includeKey","includeValueSize","includeTTL","DEFAULT_EVENT_QUEUE_CONFIG","includePayload","includeHeaders","maxPayloadSize","globalConfig","buildFeatureFlags","overrides","buildTracingConfig","exporterEndpoint","buildMetricsConfig","buildDatabaseConfig","buildGraphQLConfig","buildInstrumentationConfig","features","initializeInstrumentationConfig","getInstrumentationConfig","Error","isInstrumentationConfigInitialized","isFeatureEnabled","feature","updateInstrumentationConfig","updates","resetInstrumentationConfig","getLabelKey","labels","Object","keys","length","entries","sort","a","b","localeCompare","map","k","v","join","escapePrometheusLabelValue","replace","formatPrometheusLabelPairs","labelKey","pairs","part","split","eq","indexOf","name","slice","push","InMemoryCounter","values","Map","description","add","current","get","set","inc","getValue","getName","getDescription","getAllValues","reset","clear","InMemoryHistogram","boundaries","record","existing","shift","getData","count","sum","min","max","avg","buckets","percentiles","p50","p75","p90","p95","p99","sorted","reduce","boundary","filter","Infinity","percentile","p","index","Math","ceil","getAllData","result","parseLabels","InMemoryGauge","sub","InMemoryUpDownCounter","NoOpCounter","NoOpHistogram","NoOpGauge","NoOpUpDownCounter","MetricsRegistry","counters","histograms","gauges","upDownCounters","getServiceName","isEnabled","getPrefixedName","createCounter","prefixedName","counter","createHistogram","histogram","createGauge","gauge","createUpDownCounter","createFromDefinition","definition","type","getAllMetrics","Array","from","c","h","data","g","exportCountersToPrometheus","lines","labelStr","exportHistogramsToPrometheus","le","leStr","toString","exportGaugesToPrometheus","exportUpDownCountersToPrometheus","toPrometheusFormat","globalRegistry","initializeMetricsRegistry","getMetricsRegistry","isMetricsRegistryInitialized","resetMetricsRegistry"],"mappings":"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","file":"chunk-Q6UAOZFZ.js","sourcesContent":["/**\n * Instrumentation Configuration\n *\n * Provides configuration management for OpenTelemetry instrumentation\n * with environment variable support and sensible defaults.\n *\n * @module instrumentation/config\n * @category Observability\n */\n\nimport type {\n CacheInstrumentationConfig,\n DatabaseInstrumentationConfig,\n EventQueueInstrumentationConfig,\n GraphQLInstrumentationConfig,\n HTTPInstrumentationConfig,\n InstrumentationConfig,\n InstrumentationFeatureFlags,\n LoggingConfig,\n MetricsConfig,\n TracingConfig,\n} from './types.js';\n\n/**\n * Environment variable names for instrumentation configuration\n */\nexport const ENV_VARS = {\n // Master switch\n INSTRUMENTATION_ENABLED: 'INSTRUMENTATION_ENABLED',\n\n // Feature flags\n INSTRUMENTATION_TRACING: 'INSTRUMENTATION_TRACING',\n INSTRUMENTATION_METRICS: 'INSTRUMENTATION_METRICS',\n INSTRUMENTATION_LOGGING: 'INSTRUMENTATION_LOGGING',\n INSTRUMENTATION_GRAPHQL: 'INSTRUMENTATION_GRAPHQL',\n INSTRUMENTATION_DATABASE: 'INSTRUMENTATION_DATABASE',\n INSTRUMENTATION_HTTP: 'INSTRUMENTATION_HTTP',\n INSTRUMENTATION_CACHE: 'INSTRUMENTATION_CACHE',\n INSTRUMENTATION_EVENT_QUEUE: 'INSTRUMENTATION_EVENT_QUEUE',\n\n // Tracing\n OTEL_SERVICE_NAME: 'OTEL_SERVICE_NAME',\n OTEL_SERVICE_VERSION: 'OTEL_SERVICE_VERSION',\n OTEL_ENVIRONMENT: 'OTEL_ENVIRONMENT',\n OTEL_EXPORTER_OTLP_ENDPOINT: 'OTEL_EXPORTER_OTLP_ENDPOINT',\n OTEL_EXPORTER_TYPE: 'OTEL_EXPORTER_TYPE',\n OTEL_SAMPLING_RATE: 'OTEL_SAMPLING_RATE',\n OTEL_PROPAGATION_FORMAT: 'OTEL_PROPAGATION_FORMAT',\n\n // Metrics\n METRICS_EXPORTER_TYPE: 'METRICS_EXPORTER_TYPE',\n METRICS_PROMETHEUS_ENDPOINT: 'METRICS_PROMETHEUS_ENDPOINT',\n METRICS_PROMETHEUS_PORT: 'METRICS_PROMETHEUS_PORT',\n METRICS_COLLECT_INTERVAL: 'METRICS_COLLECT_INTERVAL',\n METRICS_DEFAULT_ENABLED: 'METRICS_DEFAULT_ENABLED',\n METRICS_PREFIX: 'METRICS_PREFIX',\n\n // Database\n DB_INSTRUMENTATION_INCLUDE_STATEMENT: 'DB_INSTRUMENTATION_INCLUDE_STATEMENT',\n DB_INSTRUMENTATION_SLOW_QUERY_THRESHOLD: 'DB_INSTRUMENTATION_SLOW_QUERY_THRESHOLD',\n\n // GraphQL\n GRAPHQL_INSTRUMENTATION_INCLUDE_DOCUMENT: 'GRAPHQL_INSTRUMENTATION_INCLUDE_DOCUMENT',\n GRAPHQL_INSTRUMENTATION_INCLUDE_VARIABLES: 'GRAPHQL_INSTRUMENTATION_INCLUDE_VARIABLES',\n GRAPHQL_INSTRUMENTATION_INCLUDE_RESOLVERS: 'GRAPHQL_INSTRUMENTATION_INCLUDE_RESOLVERS',\n} as const;\n\n/**\n * Get environment variable as boolean\n */\nfunction getEnvBoolean(key: string, defaultValue: boolean): boolean {\n const value = process.env[key];\n if (value === undefined || value === '') return defaultValue;\n return value.toLowerCase() === 'true' || value === '1';\n}\n\n/**\n * Get environment variable as number\n */\nfunction getEnvNumber(key: string, defaultValue: number): number {\n const value = process.env[key];\n if (value === undefined || value === '') return defaultValue;\n const parsed = parseFloat(value);\n return isNaN(parsed) ? defaultValue : parsed;\n}\n\n/**\n * Get environment variable as string\n */\nfunction getEnvString(key: string, defaultValue: string): string {\n const value = process.env[key];\n return value !== undefined && value !== '' ? value : defaultValue;\n}\n\n/**\n * Default feature flags\n */\nexport const DEFAULT_FEATURE_FLAGS: InstrumentationFeatureFlags = {\n tracing: true,\n metrics: true,\n logging: true,\n graphql: true,\n database: true,\n http: true,\n cache: true,\n eventQueue: true,\n};\n\n/**\n * Default tracing configuration\n */\nexport const DEFAULT_TRACING_CONFIG: TracingConfig = {\n enabled: true,\n serviceName: 'unknown-service',\n serviceVersion: '1.0.0',\n environment: 'development',\n exporterType: 'none',\n samplingRate: 1.0,\n propagationFormat: 'w3c',\n resourceAttributes: {},\n ignoredRoutes: ['/health', '/ready', '/live', '/metrics'],\n ignoredOperations: ['IntrospectionQuery'],\n};\n\n/**\n * Default metrics configuration\n */\nexport const DEFAULT_METRICS_CONFIG: MetricsConfig = {\n enabled: true,\n serviceName: 'unknown-service',\n exporterType: 'none',\n prometheusEndpoint: '/metrics',\n prometheusPort: 9090,\n collectInterval: 60000,\n defaultMetrics: true,\n metricPrefix: '',\n};\n\n/**\n * Default logging configuration\n */\nexport const DEFAULT_LOGGING_CONFIG: LoggingConfig = {\n enabled: true,\n includeTraceId: true,\n includeSpanId: true,\n includeTraceFlags: false,\n level: 'info',\n};\n\n/**\n * Default GraphQL instrumentation configuration\n */\nexport const DEFAULT_GRAPHQL_CONFIG: GraphQLInstrumentationConfig = {\n enabled: true,\n includeDocument: false,\n includeVariables: false,\n includeResult: false,\n documentDepth: 3,\n ignoredOperations: ['IntrospectionQuery'],\n includeResolvers: true,\n resolverSpanDepth: 3,\n};\n\n/**\n * Default database instrumentation configuration\n */\nexport const DEFAULT_DATABASE_CONFIG: DatabaseInstrumentationConfig = {\n enabled: true,\n includeStatement: false,\n includeParameters: false,\n includeRowCount: true,\n slowQueryThreshold: 1000,\n ignoredOperations: [],\n};\n\n/**\n * Default HTTP instrumentation configuration\n */\nexport const DEFAULT_HTTP_CONFIG: HTTPInstrumentationConfig = {\n enabled: true,\n includeRequestHeaders: false,\n includeResponseHeaders: false,\n includeRequestBody: false,\n includeResponseBody: false,\n redactedHeaders: ['authorization', 'cookie', 'set-cookie', 'x-api-key'],\n ignoredRoutes: ['/health', '/ready', '/live', '/metrics'],\n maxBodySize: 10240,\n};\n\n/**\n * Default cache instrumentation configuration\n */\nexport const DEFAULT_CACHE_CONFIG: CacheInstrumentationConfig = {\n enabled: true,\n includeKey: true,\n includeValueSize: true,\n includeTTL: true,\n};\n\n/**\n * Default event queue instrumentation configuration\n */\nexport const DEFAULT_EVENT_QUEUE_CONFIG: EventQueueInstrumentationConfig = {\n enabled: true,\n includePayload: false,\n includeHeaders: true,\n maxPayloadSize: 1024,\n};\n\n/**\n * Global instrumentation configuration state\n */\nlet globalConfig: InstrumentationConfig | null = null;\n\n/**\n * Build feature flags from environment variables\n */\nexport function buildFeatureFlags(overrides?: Partial<InstrumentationFeatureFlags>): InstrumentationFeatureFlags {\n return {\n tracing: getEnvBoolean(ENV_VARS.INSTRUMENTATION_TRACING, DEFAULT_FEATURE_FLAGS.tracing),\n metrics: getEnvBoolean(ENV_VARS.INSTRUMENTATION_METRICS, DEFAULT_FEATURE_FLAGS.metrics),\n logging: getEnvBoolean(ENV_VARS.INSTRUMENTATION_LOGGING, DEFAULT_FEATURE_FLAGS.logging),\n graphql: getEnvBoolean(ENV_VARS.INSTRUMENTATION_GRAPHQL, DEFAULT_FEATURE_FLAGS.graphql),\n database: getEnvBoolean(ENV_VARS.INSTRUMENTATION_DATABASE, DEFAULT_FEATURE_FLAGS.database),\n http: getEnvBoolean(ENV_VARS.INSTRUMENTATION_HTTP, DEFAULT_FEATURE_FLAGS.http),\n cache: getEnvBoolean(ENV_VARS.INSTRUMENTATION_CACHE, DEFAULT_FEATURE_FLAGS.cache),\n eventQueue: getEnvBoolean(ENV_VARS.INSTRUMENTATION_EVENT_QUEUE, DEFAULT_FEATURE_FLAGS.eventQueue),\n ...overrides,\n };\n}\n\n/**\n * Build tracing configuration from environment variables\n */\nexport function buildTracingConfig(serviceName: string, overrides?: Partial<TracingConfig>): TracingConfig {\n return {\n enabled: getEnvBoolean(ENV_VARS.INSTRUMENTATION_TRACING, DEFAULT_TRACING_CONFIG.enabled),\n serviceName: getEnvString(ENV_VARS.OTEL_SERVICE_NAME, serviceName),\n serviceVersion: getEnvString(ENV_VARS.OTEL_SERVICE_VERSION, DEFAULT_TRACING_CONFIG.serviceVersion!),\n environment: getEnvString(ENV_VARS.OTEL_ENVIRONMENT, process.env['NODE_ENV'] || 'development'),\n exporterEndpoint: process.env[ENV_VARS.OTEL_EXPORTER_OTLP_ENDPOINT],\n exporterType: getEnvString(ENV_VARS.OTEL_EXPORTER_TYPE, DEFAULT_TRACING_CONFIG.exporterType!) as\n | 'otlp'\n | 'console'\n | 'none',\n samplingRate: getEnvNumber(ENV_VARS.OTEL_SAMPLING_RATE, DEFAULT_TRACING_CONFIG.samplingRate!),\n propagationFormat: getEnvString(ENV_VARS.OTEL_PROPAGATION_FORMAT, DEFAULT_TRACING_CONFIG.propagationFormat!) as\n | 'w3c'\n | 'b3'\n | 'jaeger',\n resourceAttributes: DEFAULT_TRACING_CONFIG.resourceAttributes,\n ignoredRoutes: DEFAULT_TRACING_CONFIG.ignoredRoutes,\n ignoredOperations: DEFAULT_TRACING_CONFIG.ignoredOperations,\n ...overrides,\n };\n}\n\n/**\n * Build metrics configuration from environment variables\n */\nexport function buildMetricsConfig(serviceName: string, overrides?: Partial<MetricsConfig>): MetricsConfig {\n return {\n enabled: getEnvBoolean(ENV_VARS.INSTRUMENTATION_METRICS, DEFAULT_METRICS_CONFIG.enabled),\n serviceName: getEnvString(ENV_VARS.OTEL_SERVICE_NAME, serviceName),\n exporterEndpoint: process.env[ENV_VARS.OTEL_EXPORTER_OTLP_ENDPOINT],\n exporterType: getEnvString(ENV_VARS.METRICS_EXPORTER_TYPE, DEFAULT_METRICS_CONFIG.exporterType!) as\n | 'otlp'\n | 'prometheus'\n | 'console'\n | 'none',\n prometheusEndpoint: getEnvString(ENV_VARS.METRICS_PROMETHEUS_ENDPOINT, DEFAULT_METRICS_CONFIG.prometheusEndpoint!),\n prometheusPort: getEnvNumber(ENV_VARS.METRICS_PROMETHEUS_PORT, DEFAULT_METRICS_CONFIG.prometheusPort!),\n collectInterval: getEnvNumber(ENV_VARS.METRICS_COLLECT_INTERVAL, DEFAULT_METRICS_CONFIG.collectInterval!),\n defaultMetrics: getEnvBoolean(ENV_VARS.METRICS_DEFAULT_ENABLED, DEFAULT_METRICS_CONFIG.defaultMetrics!),\n metricPrefix: getEnvString(ENV_VARS.METRICS_PREFIX, DEFAULT_METRICS_CONFIG.metricPrefix!),\n ...overrides,\n };\n}\n\n/**\n * Build database instrumentation configuration\n */\nexport function buildDatabaseConfig(overrides?: Partial<DatabaseInstrumentationConfig>): DatabaseInstrumentationConfig {\n return {\n enabled: getEnvBoolean(ENV_VARS.INSTRUMENTATION_DATABASE, DEFAULT_DATABASE_CONFIG.enabled),\n includeStatement: getEnvBoolean(\n ENV_VARS.DB_INSTRUMENTATION_INCLUDE_STATEMENT,\n DEFAULT_DATABASE_CONFIG.includeStatement!\n ),\n includeParameters: DEFAULT_DATABASE_CONFIG.includeParameters,\n includeRowCount: DEFAULT_DATABASE_CONFIG.includeRowCount,\n slowQueryThreshold: getEnvNumber(\n ENV_VARS.DB_INSTRUMENTATION_SLOW_QUERY_THRESHOLD,\n DEFAULT_DATABASE_CONFIG.slowQueryThreshold!\n ),\n ignoredOperations: DEFAULT_DATABASE_CONFIG.ignoredOperations,\n ...overrides,\n };\n}\n\n/**\n * Build GraphQL instrumentation configuration\n */\nexport function buildGraphQLConfig(overrides?: Partial<GraphQLInstrumentationConfig>): GraphQLInstrumentationConfig {\n return {\n enabled: getEnvBoolean(ENV_VARS.INSTRUMENTATION_GRAPHQL, DEFAULT_GRAPHQL_CONFIG.enabled),\n includeDocument: getEnvBoolean(\n ENV_VARS.GRAPHQL_INSTRUMENTATION_INCLUDE_DOCUMENT,\n DEFAULT_GRAPHQL_CONFIG.includeDocument!\n ),\n includeVariables: getEnvBoolean(\n ENV_VARS.GRAPHQL_INSTRUMENTATION_INCLUDE_VARIABLES,\n DEFAULT_GRAPHQL_CONFIG.includeVariables!\n ),\n includeResult: DEFAULT_GRAPHQL_CONFIG.includeResult,\n documentDepth: DEFAULT_GRAPHQL_CONFIG.documentDepth,\n ignoredOperations: DEFAULT_GRAPHQL_CONFIG.ignoredOperations,\n includeResolvers: getEnvBoolean(\n ENV_VARS.GRAPHQL_INSTRUMENTATION_INCLUDE_RESOLVERS,\n DEFAULT_GRAPHQL_CONFIG.includeResolvers!\n ),\n resolverSpanDepth: DEFAULT_GRAPHQL_CONFIG.resolverSpanDepth,\n ...overrides,\n };\n}\n\n/**\n * Build complete instrumentation configuration\n */\nexport function buildInstrumentationConfig(\n serviceName: string,\n overrides?: Partial<InstrumentationConfig>\n): InstrumentationConfig {\n const enabled = getEnvBoolean(ENV_VARS.INSTRUMENTATION_ENABLED, true);\n\n return {\n enabled,\n features: buildFeatureFlags(overrides?.features),\n tracing: buildTracingConfig(serviceName, overrides?.tracing),\n metrics: buildMetricsConfig(serviceName, overrides?.metrics),\n logging: { ...DEFAULT_LOGGING_CONFIG, ...overrides?.logging },\n graphql: buildGraphQLConfig(overrides?.graphql),\n database: buildDatabaseConfig(overrides?.database),\n http: { ...DEFAULT_HTTP_CONFIG, ...overrides?.http },\n cache: { ...DEFAULT_CACHE_CONFIG, ...overrides?.cache },\n eventQueue: { ...DEFAULT_EVENT_QUEUE_CONFIG, ...overrides?.eventQueue },\n };\n}\n\n/**\n * Initialize global instrumentation configuration\n */\nexport function initializeInstrumentationConfig(\n serviceName: string,\n overrides?: Partial<InstrumentationConfig>\n): InstrumentationConfig {\n globalConfig = buildInstrumentationConfig(serviceName, overrides);\n return globalConfig;\n}\n\n/**\n * Get current instrumentation configuration\n * @throws Error if configuration not initialized\n */\nexport function getInstrumentationConfig(): InstrumentationConfig {\n if (!globalConfig) {\n throw new Error('Instrumentation config not initialized. Call initializeInstrumentationConfig() first.');\n }\n return globalConfig;\n}\n\n/**\n * Check if instrumentation configuration is initialized\n */\nexport function isInstrumentationConfigInitialized(): boolean {\n return globalConfig !== null;\n}\n\n/**\n * Check if a specific feature is enabled\n */\nexport function isFeatureEnabled(feature: keyof InstrumentationFeatureFlags): boolean {\n if (!globalConfig) return false;\n return globalConfig.enabled && globalConfig.features[feature];\n}\n\n/**\n * Update instrumentation configuration at runtime\n */\nexport function updateInstrumentationConfig(updates: Partial<InstrumentationConfig>): InstrumentationConfig {\n if (!globalConfig) {\n throw new Error('Instrumentation config not initialized. Call initializeInstrumentationConfig() first.');\n }\n globalConfig = { ...globalConfig, ...updates };\n return globalConfig;\n}\n\n/**\n * Reset instrumentation configuration (useful for testing)\n */\nexport function resetInstrumentationConfig(): void {\n globalConfig = null;\n}\n","/**\n * Metrics Collector Module\n *\n * OpenTelemetry-style metrics collection with counters, histograms,\n * and gauges for comprehensive service monitoring.\n *\n * @module instrumentation/metrics-collector\n * @category Observability\n */\n\nimport { isFeatureEnabled, isInstrumentationConfigInitialized } from './config.js';\nimport type { MetricDefinition } from './types.js';\n\n/**\n * Metric labels\n */\nexport type MetricLabels = Record<string, string>;\n\n/**\n * Counter metric interface\n */\nexport interface Counter {\n /** Add value to counter */\n add(value: number, labels?: MetricLabels): void;\n /** Increment counter by 1 */\n inc(labels?: MetricLabels): void;\n /** Get current value */\n getValue(labels?: MetricLabels): number;\n}\n\n/**\n * Histogram metric interface\n */\nexport interface Histogram {\n /** Record a value */\n record(value: number, labels?: MetricLabels): void;\n /** Get histogram data */\n getData(labels?: MetricLabels): HistogramData;\n}\n\n/**\n * Histogram data\n */\nexport interface HistogramData {\n count: number;\n sum: number;\n min: number;\n max: number;\n avg: number;\n buckets: Map<number, number>;\n percentiles: {\n p50: number;\n p75: number;\n p90: number;\n p95: number;\n p99: number;\n };\n}\n\n/**\n * Gauge metric interface\n */\nexport interface Gauge {\n /** Set gauge value */\n set(value: number, labels?: MetricLabels): void;\n /** Add to gauge value */\n add(value: number, labels?: MetricLabels): void;\n /** Subtract from gauge value */\n sub(value: number, labels?: MetricLabels): void;\n /** Get current value */\n getValue(labels?: MetricLabels): number;\n}\n\n/**\n * UpDownCounter metric interface (can go up or down)\n */\nexport interface UpDownCounter {\n /** Add value (can be negative) */\n add(value: number, labels?: MetricLabels): void;\n /** Get current value */\n getValue(labels?: MetricLabels): number;\n}\n\n/**\n * Generate label key for storage\n */\nfunction getLabelKey(labels?: MetricLabels): string {\n if (!labels || Object.keys(labels).length === 0) return '';\n return Object.entries(labels)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([k, v]) => `${k}=${v}`)\n .join(',');\n}\n\n/**\n * Escape a label value for the Prometheus text exposition format.\n *\n * The spec requires backslash, double quote, and line feed to be escaped.\n */\nfunction escapePrometheusLabelValue(value: string): string {\n return value.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n');\n}\n\n/**\n * Render the internal label key (`k=v,k2=v2`) as Prometheus label pairs\n * (`k=\"v\",k2=\"v2\"`), without the surrounding braces.\n *\n * The internal key is a Map key, not an exposition fragment: it leaves values\n * unquoted. Interpolating it straight into `{...}` produced output such as\n * `svc_requests{service=tags} 1`, which Prometheus rejects as a parse error —\n * and a parse error fails the *entire* scrape, not just the offending line, so\n * every service exposing SDK metrics scraped as down.\n *\n * Values containing a comma remain ambiguous because the flat key cannot encode\n * them; such labels are dropped rather than emitted as malformed pairs.\n */\nfunction formatPrometheusLabelPairs(labelKey: string): string {\n if (!labelKey) return '';\n const pairs: string[] = [];\n for (const part of labelKey.split(',')) {\n const eq = part.indexOf('=');\n if (eq <= 0) continue;\n const name = part.slice(0, eq);\n const value = part.slice(eq + 1);\n pairs.push(`${name}=\"${escapePrometheusLabelValue(value)}\"`);\n }\n return pairs.join(',');\n}\n\n/**\n * In-memory counter implementation\n */\nclass InMemoryCounter implements Counter {\n private values: Map<string, number> = new Map();\n private readonly name: string;\n private readonly description: string;\n\n constructor(name: string, description: string) {\n this.name = name;\n this.description = description;\n }\n\n add(value: number, labels?: MetricLabels): void {\n const key = getLabelKey(labels);\n const current = this.values.get(key) || 0;\n this.values.set(key, current + value);\n }\n\n inc(labels?: MetricLabels): void {\n this.add(1, labels);\n }\n\n getValue(labels?: MetricLabels): number {\n const key = getLabelKey(labels);\n return this.values.get(key) || 0;\n }\n\n getName(): string {\n return this.name;\n }\n\n getDescription(): string {\n return this.description;\n }\n\n getAllValues(): Map<string, number> {\n return new Map(this.values);\n }\n\n reset(): void {\n this.values.clear();\n }\n}\n\n/**\n * In-memory histogram implementation\n */\nclass InMemoryHistogram implements Histogram {\n private values: Map<string, number[]> = new Map();\n private readonly name: string;\n private readonly description: string;\n private readonly boundaries: number[];\n\n constructor(name: string, description: string, boundaries?: number[]) {\n this.name = name;\n this.description = description;\n this.boundaries = boundaries || [5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000];\n }\n\n record(value: number, labels?: MetricLabels): void {\n const key = getLabelKey(labels);\n const existing = this.values.get(key) || [];\n existing.push(value);\n\n // Keep only last 10000 values per label combination\n if (existing.length > 10000) {\n existing.shift();\n }\n\n this.values.set(key, existing);\n }\n\n getData(labels?: MetricLabels): HistogramData {\n const key = getLabelKey(labels);\n const values = this.values.get(key) || [];\n\n if (values.length === 0) {\n return {\n count: 0,\n sum: 0,\n min: 0,\n max: 0,\n avg: 0,\n buckets: new Map(),\n percentiles: { p50: 0, p75: 0, p90: 0, p95: 0, p99: 0 },\n };\n }\n\n const sorted = [...values].sort((a, b) => a - b);\n const sum = values.reduce((a, b) => a + b, 0);\n\n // Calculate bucket counts\n const buckets = new Map<number, number>();\n for (const boundary of this.boundaries) {\n buckets.set(boundary, values.filter((v) => v <= boundary).length);\n }\n buckets.set(Infinity, values.length);\n\n // Calculate percentiles\n const percentile = (p: number): number => {\n const index = Math.ceil((p / 100) * sorted.length) - 1;\n return sorted[Math.max(0, index)] || 0;\n };\n\n return {\n count: values.length,\n sum,\n min: sorted[0] || 0,\n max: sorted[sorted.length - 1] || 0,\n avg: sum / values.length,\n buckets,\n percentiles: {\n p50: percentile(50),\n p75: percentile(75),\n p90: percentile(90),\n p95: percentile(95),\n p99: percentile(99),\n },\n };\n }\n\n getName(): string {\n return this.name;\n }\n\n getDescription(): string {\n return this.description;\n }\n\n getAllData(): Map<string, HistogramData> {\n const result = new Map<string, HistogramData>();\n for (const [key] of this.values) {\n result.set(key, this.getData(key ? this.parseLabels(key) : undefined));\n }\n return result;\n }\n\n private parseLabels(key: string): MetricLabels {\n const labels: MetricLabels = {};\n for (const part of key.split(',')) {\n const [k, v] = part.split('=');\n if (k && v) labels[k] = v;\n }\n return labels;\n }\n\n reset(): void {\n this.values.clear();\n }\n}\n\n/**\n * In-memory gauge implementation\n */\nclass InMemoryGauge implements Gauge {\n private values: Map<string, number> = new Map();\n private readonly name: string;\n private readonly description: string;\n\n constructor(name: string, description: string) {\n this.name = name;\n this.description = description;\n }\n\n set(value: number, labels?: MetricLabels): void {\n const key = getLabelKey(labels);\n this.values.set(key, value);\n }\n\n // eslint-disable-next-line sonarjs/no-identical-functions -- Shared implementation across metric types by design\n add(value: number, labels?: MetricLabels): void {\n const key = getLabelKey(labels);\n const current = this.values.get(key) || 0;\n this.values.set(key, current + value);\n }\n\n sub(value: number, labels?: MetricLabels): void {\n this.add(-value, labels);\n }\n\n getValue(labels?: MetricLabels): number {\n const key = getLabelKey(labels);\n return this.values.get(key) || 0;\n }\n\n getName(): string {\n return this.name;\n }\n\n getDescription(): string {\n return this.description;\n }\n\n getAllValues(): Map<string, number> {\n return new Map(this.values);\n }\n\n reset(): void {\n this.values.clear();\n }\n}\n\n/**\n * In-memory UpDownCounter implementation\n */\nclass InMemoryUpDownCounter implements UpDownCounter {\n private values: Map<string, number> = new Map();\n private readonly name: string;\n private readonly description: string;\n\n constructor(name: string, description: string) {\n this.name = name;\n this.description = description;\n }\n\n // eslint-disable-next-line sonarjs/no-identical-functions -- Shared implementation across metric types by design\n add(value: number, labels?: MetricLabels): void {\n const key = getLabelKey(labels);\n const current = this.values.get(key) || 0;\n this.values.set(key, current + value);\n }\n\n getValue(labels?: MetricLabels): number {\n const key = getLabelKey(labels);\n return this.values.get(key) || 0;\n }\n\n getName(): string {\n return this.name;\n }\n\n getDescription(): string {\n return this.description;\n }\n\n getAllValues(): Map<string, number> {\n return new Map(this.values);\n }\n\n reset(): void {\n this.values.clear();\n }\n}\n\n/**\n * No-op implementations for when metrics are disabled\n */\nclass NoOpCounter implements Counter {\n add(): void {}\n inc(): void {}\n getValue(): number {\n return 0;\n }\n}\n\nclass NoOpHistogram implements Histogram {\n record(): void {}\n getData(): HistogramData {\n return {\n count: 0,\n sum: 0,\n min: 0,\n max: 0,\n avg: 0,\n buckets: new Map(),\n percentiles: { p50: 0, p75: 0, p90: 0, p95: 0, p99: 0 },\n };\n }\n}\n\nclass NoOpGauge implements Gauge {\n set(): void {}\n add(): void {}\n sub(): void {}\n getValue(): number {\n return 0;\n }\n}\n\nclass NoOpUpDownCounter implements UpDownCounter {\n add(): void {}\n getValue(): number {\n return 0;\n }\n}\n\n/**\n * Metrics registry for managing all metrics\n */\nexport class MetricsRegistry {\n private counters: Map<string, InMemoryCounter> = new Map();\n private histograms: Map<string, InMemoryHistogram> = new Map();\n private gauges: Map<string, InMemoryGauge> = new Map();\n private upDownCounters: Map<string, InMemoryUpDownCounter> = new Map();\n private serviceName: string;\n private metricPrefix: string;\n\n constructor(serviceName: string, metricPrefix = '') {\n this.serviceName = serviceName;\n this.metricPrefix = metricPrefix;\n }\n\n /**\n * Get service name\n */\n getServiceName(): string {\n return this.serviceName;\n }\n\n /**\n * Check if metrics are enabled\n */\n private isEnabled(): boolean {\n return isInstrumentationConfigInitialized() && isFeatureEnabled('metrics');\n }\n\n /**\n * Get prefixed metric name\n */\n private getPrefixedName(name: string): string {\n return this.metricPrefix ? `${this.metricPrefix}_${name}` : name;\n }\n\n /**\n * Create or get a counter\n */\n createCounter(name: string, description: string): Counter {\n if (!this.isEnabled()) {\n return new NoOpCounter();\n }\n\n const prefixedName = this.getPrefixedName(name);\n let counter = this.counters.get(prefixedName);\n if (!counter) {\n counter = new InMemoryCounter(prefixedName, description);\n this.counters.set(prefixedName, counter);\n }\n return counter;\n }\n\n /**\n * Create or get a histogram\n */\n createHistogram(name: string, description: string, boundaries?: number[]): Histogram {\n if (!this.isEnabled()) {\n return new NoOpHistogram();\n }\n\n const prefixedName = this.getPrefixedName(name);\n let histogram = this.histograms.get(prefixedName);\n if (!histogram) {\n histogram = new InMemoryHistogram(prefixedName, description, boundaries);\n this.histograms.set(prefixedName, histogram);\n }\n return histogram;\n }\n\n /**\n * Create or get a gauge\n */\n createGauge(name: string, description: string): Gauge {\n if (!this.isEnabled()) {\n return new NoOpGauge();\n }\n\n const prefixedName = this.getPrefixedName(name);\n let gauge = this.gauges.get(prefixedName);\n if (!gauge) {\n gauge = new InMemoryGauge(prefixedName, description);\n this.gauges.set(prefixedName, gauge);\n }\n return gauge;\n }\n\n /**\n * Create or get an up-down counter\n */\n createUpDownCounter(name: string, description: string): UpDownCounter {\n if (!this.isEnabled()) {\n return new NoOpUpDownCounter();\n }\n\n const prefixedName = this.getPrefixedName(name);\n let counter = this.upDownCounters.get(prefixedName);\n if (!counter) {\n counter = new InMemoryUpDownCounter(prefixedName, description);\n this.upDownCounters.set(prefixedName, counter);\n }\n return counter;\n }\n\n /**\n * Create metric from definition\n */\n createFromDefinition(definition: MetricDefinition): Counter | Histogram | Gauge | UpDownCounter {\n switch (definition.type) {\n case 'counter':\n return this.createCounter(definition.name, definition.description);\n case 'histogram':\n return this.createHistogram(definition.name, definition.description, definition.boundaries);\n case 'gauge':\n return this.createGauge(definition.name, definition.description);\n case 'upDownCounter':\n return this.createUpDownCounter(definition.name, definition.description);\n default:\n throw new Error(`Unknown metric type: ${definition.type}`);\n }\n }\n\n /**\n * Get all metrics data\n */\n getAllMetrics(): {\n counters: Array<{ name: string; description: string; values: Map<string, number> }>;\n histograms: Array<{ name: string; description: string; data: Map<string, HistogramData> }>;\n gauges: Array<{ name: string; description: string; values: Map<string, number> }>;\n upDownCounters: Array<{ name: string; description: string; values: Map<string, number> }>;\n } {\n return {\n counters: Array.from(this.counters.values()).map((c) => ({\n name: c.getName(),\n description: c.getDescription(),\n values: c.getAllValues(),\n })),\n histograms: Array.from(this.histograms.values()).map((h) => ({\n name: h.getName(),\n description: h.getDescription(),\n data: h.getAllData(),\n })),\n gauges: Array.from(this.gauges.values()).map((g) => ({\n name: g.getName(),\n description: g.getDescription(),\n values: g.getAllValues(),\n })),\n upDownCounters: Array.from(this.upDownCounters.values()).map((c) => ({\n name: c.getName(),\n description: c.getDescription(),\n values: c.getAllValues(),\n })),\n };\n }\n\n /**\n * Export counter metrics to Prometheus format\n */\n private exportCountersToPrometheus(lines: string[]): void {\n for (const counter of this.counters.values()) {\n lines.push(`# HELP ${counter.getName()} ${counter.getDescription()}`);\n lines.push(`# TYPE ${counter.getName()} counter`);\n for (const [labels, value] of counter.getAllValues()) {\n const pairs = formatPrometheusLabelPairs(labels);\n const labelStr = pairs ? `{${pairs}}` : '';\n lines.push(`${counter.getName()}${labelStr} ${value}`);\n }\n }\n }\n\n /**\n * Export histogram metrics to Prometheus format\n */\n private exportHistogramsToPrometheus(lines: string[]): void {\n for (const histogram of this.histograms.values()) {\n lines.push(`# HELP ${histogram.getName()} ${histogram.getDescription()}`);\n lines.push(`# TYPE ${histogram.getName()} histogram`);\n for (const [labels, data] of histogram.getAllData()) {\n const pairs = formatPrometheusLabelPairs(labels);\n const labelStr = pairs ? `,${pairs}` : '';\n for (const [le, count] of data.buckets) {\n const leStr = le === Infinity ? '+Inf' : le.toString();\n lines.push(`${histogram.getName()}_bucket{le=\"${leStr}\"${labelStr}} ${count}`);\n }\n lines.push(`${histogram.getName()}_sum{${pairs}} ${data.sum}`);\n lines.push(`${histogram.getName()}_count{${pairs}} ${data.count}`);\n }\n }\n }\n\n /**\n * Export gauge metrics to Prometheus format\n */\n private exportGaugesToPrometheus(lines: string[]): void {\n for (const gauge of this.gauges.values()) {\n lines.push(`# HELP ${gauge.getName()} ${gauge.getDescription()}`);\n lines.push(`# TYPE ${gauge.getName()} gauge`);\n for (const [labels, value] of gauge.getAllValues()) {\n const pairs = formatPrometheusLabelPairs(labels);\n const labelStr = pairs ? `{${pairs}}` : '';\n lines.push(`${gauge.getName()}${labelStr} ${value}`);\n }\n }\n }\n\n /**\n * Export up-down counter metrics to Prometheus format (as gauges)\n */\n private exportUpDownCountersToPrometheus(lines: string[]): void {\n for (const counter of this.upDownCounters.values()) {\n lines.push(`# HELP ${counter.getName()} ${counter.getDescription()}`);\n lines.push(`# TYPE ${counter.getName()} gauge`);\n for (const [labels, value] of counter.getAllValues()) {\n const pairs = formatPrometheusLabelPairs(labels);\n const labelStr = pairs ? `{${pairs}}` : '';\n lines.push(`${counter.getName()}${labelStr} ${value}`);\n }\n }\n }\n\n /**\n * Export metrics in Prometheus format\n */\n toPrometheusFormat(): string {\n const lines: string[] = [];\n\n this.exportCountersToPrometheus(lines);\n this.exportHistogramsToPrometheus(lines);\n this.exportGaugesToPrometheus(lines);\n this.exportUpDownCountersToPrometheus(lines);\n\n return lines.join('\\n');\n }\n\n /**\n * Reset all metrics\n */\n reset(): void {\n for (const counter of this.counters.values()) {\n counter.reset();\n }\n for (const histogram of this.histograms.values()) {\n histogram.reset();\n }\n for (const gauge of this.gauges.values()) {\n gauge.reset();\n }\n for (const counter of this.upDownCounters.values()) {\n counter.reset();\n }\n }\n\n /**\n * Clear all metrics (remove registrations)\n */\n clear(): void {\n this.counters.clear();\n this.histograms.clear();\n this.gauges.clear();\n this.upDownCounters.clear();\n }\n}\n\n/**\n * Global metrics registry\n */\nlet globalRegistry: MetricsRegistry | null = null;\n\n/**\n * Initialize global metrics registry\n */\nexport function initializeMetricsRegistry(serviceName: string, metricPrefix = ''): MetricsRegistry {\n globalRegistry = new MetricsRegistry(serviceName, metricPrefix);\n return globalRegistry;\n}\n\n/**\n * Get global metrics registry\n */\nexport function getMetricsRegistry(): MetricsRegistry {\n if (!globalRegistry) {\n globalRegistry = new MetricsRegistry('unknown-service');\n }\n return globalRegistry;\n}\n\n/**\n * Check if metrics registry is initialized\n */\nexport function isMetricsRegistryInitialized(): boolean {\n return globalRegistry !== null;\n}\n\n/**\n * Reset global metrics registry (useful for testing)\n */\nexport function resetMetricsRegistry(): void {\n if (globalRegistry) {\n globalRegistry.clear();\n }\n globalRegistry = null;\n}\n\n/**\n * Convenience functions for creating metrics\n */\nexport function createCounter(name: string, description: string): Counter {\n return getMetricsRegistry().createCounter(name, description);\n}\n\nexport function createHistogram(name: string, description: string, boundaries?: number[]): Histogram {\n return getMetricsRegistry().createHistogram(name, description, boundaries);\n}\n\nexport function createGauge(name: string, description: string): Gauge {\n return getMetricsRegistry().createGauge(name, description);\n}\n\nexport function createUpDownCounter(name: string, description: string): UpDownCounter {\n return getMetricsRegistry().createUpDownCounter(name, description);\n}\n"]}
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export { TemporalClient, TemporalClientFactory, TemporalModule, TemporalWorker, TemporalWorkerFactory, TemporalWorkerManager } from './chunk-IC7YDBGE.js';
|
|
2
1
|
import { ActivityModule, UsageModule, TrackerModule } from './chunk-VOJROV6C.js';
|
|
3
2
|
export { ActivityModule, TrackerModule, UsageModule } from './chunk-VOJROV6C.js';
|
|
4
3
|
export { platform_exports as Platform } from './chunk-WCJIZR5Q.js';
|
|
5
|
-
export { prisma_exports as Prisma } from './chunk-MX4AHK3E.js';
|
|
6
4
|
import { RBACModule } from './chunk-S32JOMMW.js';
|
|
7
5
|
export { RBACModule, createRBACDirective, createRBACDirectiveForLayer, createRBACDirectiveFromEnv } from './chunk-S32JOMMW.js';
|
|
6
|
+
export { prisma_exports as Prisma } from './chunk-MX4AHK3E.js';
|
|
8
7
|
import './chunk-KESVEZB2.js';
|
|
9
8
|
export { sharing_exports as Sharing } from './chunk-XD5ZK727.js';
|
|
10
|
-
export {
|
|
11
|
-
|
|
9
|
+
export { TemporalClient, TemporalClientFactory, TemporalModule, TemporalWorker, TemporalWorkerFactory, TemporalWorkerManager } from './chunk-IC7YDBGE.js';
|
|
10
|
+
export { instrumentation_exports as Instrumentation } from './chunk-GTX65XAP.js';
|
|
11
|
+
import './chunk-Q6UAOZFZ.js';
|
|
12
12
|
export { middleware_exports as Middleware } from './chunk-2HANKZZM.js';
|
|
13
13
|
import { TenantNotificationsModule, NotificationsModule } from './chunk-TORD32GS.js';
|
|
14
14
|
export { tenant_notifications_exports as Notifications, NotificationsModule } from './chunk-TORD32GS.js';
|
|
@@ -38,10 +38,10 @@ export { ContextManager } from './chunk-RZOFS2BQ.js';
|
|
|
38
38
|
import { AuthModule } from './chunk-RXMOV3YE.js';
|
|
39
39
|
export { AuthModule } from './chunk-RXMOV3YE.js';
|
|
40
40
|
export { utils_exports as Utils } from './chunk-B7I4TABG.js';
|
|
41
|
-
export { captcha_exports as Captcha, isCaptchaEnabled, verifyCaptcha, verifyCaptchaIfEnabled } from './chunk-YMZEUTD2.js';
|
|
42
41
|
export { cache_exports as Cache } from './chunk-IIYIO2GG.js';
|
|
43
42
|
import { disposeAll } from './chunk-VBXPFYZ5.js';
|
|
44
43
|
export { lifecycle_exports as Lifecycle, disposeAll, getRegisteredDisposableCount, registerDisposable, unregisterDisposable } from './chunk-VBXPFYZ5.js';
|
|
44
|
+
export { captcha_exports as Captcha, isCaptchaEnabled, verifyCaptcha, verifyCaptchaIfEnabled } from './chunk-YMZEUTD2.js';
|
|
45
45
|
export { createInternalClient, createInternalClientForTenant, createInternalClientForWorkspaces } from './chunk-VI4VSNTI.js';
|
|
46
46
|
export { crypto_exports as Crypto } from './chunk-SBS4S2PJ.js';
|
|
47
47
|
import { DatabaseModule } from './chunk-A6DGEZJ4.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { Instrument, Log, Metric, STANDARD_METRICS, SpanKind, SpanStatus, Trace, Tracer, createApolloInlineTracePlugin, createGraphQLInstrumentationPlugin, createPrometheusPlugin, extractOperationInfo, extractTraceContext, getGraphQLOperationFromContext, getGraphQLSpanFromContext, getLogger, getTraceContext, getTracer, initializeInstrumentation, initializeTracer, injectTraceContext, instrumentResolver, instrumentResolverMap, instrumented, isApolloInlineTraceAvailable, isInstrumentationInitialized, isPrometheusAvailable, isTracerInitialized, resetInstrumentation, setupInstrumentation, startSpan, traced, withSpan } from '../chunk-
|
|
2
|
-
export { DEFAULT_CACHE_CONFIG, DEFAULT_DATABASE_CONFIG, DEFAULT_EVENT_QUEUE_CONFIG, DEFAULT_FEATURE_FLAGS, DEFAULT_GRAPHQL_CONFIG, DEFAULT_HTTP_CONFIG, DEFAULT_LOGGING_CONFIG, DEFAULT_METRICS_CONFIG, DEFAULT_TRACING_CONFIG, ENV_VARS, MetricsRegistry, buildDatabaseConfig, buildFeatureFlags, buildGraphQLConfig, buildInstrumentationConfig, buildMetricsConfig, buildTracingConfig, createCounter, createGauge, createHistogram, createUpDownCounter, getInstrumentationConfig, getMetricsRegistry, initializeInstrumentationConfig, initializeMetricsRegistry, isFeatureEnabled, isInstrumentationConfigInitialized, isMetricsRegistryInitialized, resetInstrumentationConfig, resetMetricsRegistry, updateInstrumentationConfig } from '../chunk-
|
|
1
|
+
export { Instrument, Log, Metric, STANDARD_METRICS, SpanKind, SpanStatus, Trace, Tracer, createApolloInlineTracePlugin, createGraphQLInstrumentationPlugin, createPrometheusPlugin, extractOperationInfo, extractTraceContext, getGraphQLOperationFromContext, getGraphQLSpanFromContext, getLogger, getTraceContext, getTracer, initializeInstrumentation, initializeTracer, injectTraceContext, instrumentResolver, instrumentResolverMap, instrumented, isApolloInlineTraceAvailable, isInstrumentationInitialized, isPrometheusAvailable, isTracerInitialized, resetInstrumentation, setupInstrumentation, startSpan, traced, withSpan } from '../chunk-GTX65XAP.js';
|
|
2
|
+
export { DEFAULT_CACHE_CONFIG, DEFAULT_DATABASE_CONFIG, DEFAULT_EVENT_QUEUE_CONFIG, DEFAULT_FEATURE_FLAGS, DEFAULT_GRAPHQL_CONFIG, DEFAULT_HTTP_CONFIG, DEFAULT_LOGGING_CONFIG, DEFAULT_METRICS_CONFIG, DEFAULT_TRACING_CONFIG, ENV_VARS, MetricsRegistry, buildDatabaseConfig, buildFeatureFlags, buildGraphQLConfig, buildInstrumentationConfig, buildMetricsConfig, buildTracingConfig, createCounter, createGauge, createHistogram, createUpDownCounter, getInstrumentationConfig, getMetricsRegistry, initializeInstrumentationConfig, initializeMetricsRegistry, isFeatureEnabled, isInstrumentationConfigInitialized, isMetricsRegistryInitialized, resetInstrumentationConfig, resetMetricsRegistry, updateInstrumentationConfig } from '../chunk-Q6UAOZFZ.js';
|
|
3
3
|
export { logger } from '../chunk-CBZNP6RF.js';
|
|
4
4
|
import '../chunk-XE4OXN2W.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/metrics/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { getWorkspaceQuotaRegistry, resetWorkspaceQuotaRegistry } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { getWorkspaceQuotaRegistry, resetWorkspaceQuotaRegistry } from '../chunk-4OPOVK54.js';
|
|
2
|
+
import '../chunk-Q6UAOZFZ.js';
|
|
3
3
|
import '../chunk-XE4OXN2W.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/server/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createHumanReadableErrorPlugin, formatHttpError, normalizeGraphQLResponse, createHttpErrorResponse } from '../chunk-OQLDXOZ3.js';
|
|
2
2
|
export { UserFacingGraphQLError, createHttpErrorResponse, createHumanReadableErrorPlugin, createWorkspaceGuardPlugin, formatHttpError, normalizeError, normalizeExecutionResultErrors, normalizeGraphQLResponse, normalizeGraphQLResponsePayload, toUserFacingGraphQLError } from '../chunk-OQLDXOZ3.js';
|
|
3
|
-
import { getWorkspaceQuotaRegistry } from '../chunk-
|
|
3
|
+
import { getWorkspaceQuotaRegistry } from '../chunk-4OPOVK54.js';
|
|
4
4
|
import { setWorkspaceContext } from '../chunk-KESVEZB2.js';
|
|
5
|
-
import { getMetricsRegistry } from '../chunk-
|
|
5
|
+
import { getMetricsRegistry } from '../chunk-Q6UAOZFZ.js';
|
|
6
6
|
import { I18n } from '../chunk-ULFFX3YE.js';
|
|
7
7
|
import { ContextManager } from '../chunk-RZOFS2BQ.js';
|
|
8
8
|
import { logger } from '../chunk-CBZNP6RF.js';
|
package/dist/telemetry/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { DEFAULT_REDACT_PATHS, createPinoLogger } from '../chunk-RNR45JQH.js';
|
|
2
|
-
import { setActiveTelemetryLogger, setupInstrumentation } from '../chunk-
|
|
3
|
-
export { initializeInstrumentation, setupInstrumentation } from '../chunk-
|
|
4
|
-
import '../chunk-
|
|
2
|
+
import { setActiveTelemetryLogger, setupInstrumentation } from '../chunk-GTX65XAP.js';
|
|
3
|
+
export { initializeInstrumentation, setupInstrumentation } from '../chunk-GTX65XAP.js';
|
|
4
|
+
import '../chunk-Q6UAOZFZ.js';
|
|
5
5
|
import { redactSensitiveFields, logger } from '../chunk-CBZNP6RF.js';
|
|
6
6
|
import { __name } from '../chunk-XE4OXN2W.js';
|
|
7
7
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@burdenoff/be-sdk",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.803.1",
|
|
4
4
|
"description": "Backend SDK for Burdenoff products providing unified access to notifications, RBAC, activity tracking, usage monitoring, and more",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"dev": "tsx watch ./src/index.ts",
|
|
75
75
|
"build": "NODE_OPTIONS=--max-old-space-size=4096 tsup src/index.ts src/init/index.ts src/logger/index.ts src/cache/index.ts src/database/index.ts src/event-queue/index.ts src/lifecycle/index.ts src/graph/index.ts src/middleware/index.ts src/observability/index.ts src/graphql/index.ts src/graphql/services/index.ts src/prisma/index.ts src/utils/index.ts src/notifications/index.ts src/tracker/index.ts src/export/index.ts src/dataloader/index.ts src/prisma/generator/index.ts src/server/index.ts src/i18n/index.ts src/instrumentation/index.ts src/rbac/index.ts src/temporal/index.ts src/client/internal-client.ts src/layer/index.ts src/gateway/index.ts src/gateway/security/index.ts src/crypto/index.ts src/feature-flags/index.ts src/telemetry/index.ts src/auth/index.ts src/captcha/index.ts src/metrics/index.ts src/platform/index.ts src/resource-caps/index.ts src/sharding/index.ts src/sharing/index.ts --format esm --dts --clean --shims && bun run pack:tgz",
|
|
76
76
|
"build:watch": "tsup src/index.ts src/init/index.ts src/logger/index.ts src/cache/index.ts src/database/index.ts src/event-queue/index.ts src/lifecycle/index.ts src/graph/index.ts src/middleware/index.ts src/observability/index.ts src/graphql/index.ts src/graphql/services/index.ts src/prisma/index.ts src/utils/index.ts src/notifications/index.ts src/tracker/index.ts src/export/index.ts src/dataloader/index.ts src/prisma/generator/index.ts src/server/index.ts src/i18n/index.ts src/instrumentation/index.ts src/rbac/index.ts src/temporal/index.ts src/client/internal-client.ts src/layer/index.ts src/gateway/index.ts src/gateway/security/index.ts src/crypto/index.ts src/feature-flags/index.ts src/telemetry/index.ts src/auth/index.ts src/captcha/index.ts src/metrics/index.ts src/platform/index.ts src/resource-caps/index.ts src/sharding/index.ts src/sharing/index.ts --format esm --dts --watch --shims",
|
|
77
|
-
"typecheck": "tsc --noEmit",
|
|
77
|
+
"typecheck": "bash scripts/build-limits.sh tsc --noEmit",
|
|
78
78
|
"lint": "eslint ./src",
|
|
79
79
|
"lint:sanity": "if [ \"${CI:-}\" = \"true\" ]; then bun run lint; else bun run lint -- --cache --cache-location .eslintcache; fi",
|
|
80
80
|
"lint:fix": "eslint ./src --fix",
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
"test:coverage": "bun test --coverage",
|
|
86
86
|
"test:ci": "if ls src/**/*.test.ts 1>/dev/null 2>&1; then bun test; else echo 'No test files found, skipping'; fi",
|
|
87
87
|
"audit": "bunx better-npm-audit audit --level moderate 2>/dev/null || echo 'Audit completed (install better-npm-audit for detailed report)'",
|
|
88
|
-
"sanity": "bun run format:check && bun run lint:sanity && bun run typecheck && bun run build && bun run test:ci && bun run audit",
|
|
88
|
+
"sanity": "bash scripts/build-limits.sh --gate bash -c 'bun run format:check && bun run lint:sanity && bun run typecheck && bun run build && bun run test:ci && bun run audit'",
|
|
89
89
|
"prepublishOnly": "bun run build",
|
|
90
90
|
"pack:tgz": "mkdir -p dist && rm -rf dist/burdenoff-be-sdk.tgz && bun pm pack --filename dist/burdenoff-be-sdk.tgz"
|
|
91
91
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/instrumentation/config.ts","../src/instrumentation/metrics-collector.ts"],"names":["ENV_VARS","INSTRUMENTATION_ENABLED","INSTRUMENTATION_TRACING","INSTRUMENTATION_METRICS","INSTRUMENTATION_LOGGING","INSTRUMENTATION_GRAPHQL","INSTRUMENTATION_DATABASE","INSTRUMENTATION_HTTP","INSTRUMENTATION_CACHE","INSTRUMENTATION_EVENT_QUEUE","OTEL_SERVICE_NAME","OTEL_SERVICE_VERSION","OTEL_ENVIRONMENT","OTEL_EXPORTER_OTLP_ENDPOINT","OTEL_EXPORTER_TYPE","OTEL_SAMPLING_RATE","OTEL_PROPAGATION_FORMAT","METRICS_EXPORTER_TYPE","METRICS_PROMETHEUS_ENDPOINT","METRICS_PROMETHEUS_PORT","METRICS_COLLECT_INTERVAL","METRICS_DEFAULT_ENABLED","METRICS_PREFIX","DB_INSTRUMENTATION_INCLUDE_STATEMENT","DB_INSTRUMENTATION_SLOW_QUERY_THRESHOLD","GRAPHQL_INSTRUMENTATION_INCLUDE_DOCUMENT","GRAPHQL_INSTRUMENTATION_INCLUDE_VARIABLES","GRAPHQL_INSTRUMENTATION_INCLUDE_RESOLVERS","getEnvBoolean","key","defaultValue","value","process","env","undefined","toLowerCase","getEnvNumber","parsed","parseFloat","isNaN","getEnvString","DEFAULT_FEATURE_FLAGS","tracing","metrics","logging","graphql","database","http","cache","eventQueue","DEFAULT_TRACING_CONFIG","enabled","serviceName","serviceVersion","environment","exporterType","samplingRate","propagationFormat","resourceAttributes","ignoredRoutes","ignoredOperations","DEFAULT_METRICS_CONFIG","prometheusEndpoint","prometheusPort","collectInterval","defaultMetrics","metricPrefix","DEFAULT_LOGGING_CONFIG","includeTraceId","includeSpanId","includeTraceFlags","level","DEFAULT_GRAPHQL_CONFIG","includeDocument","includeVariables","includeResult","documentDepth","includeResolvers","resolverSpanDepth","DEFAULT_DATABASE_CONFIG","includeStatement","includeParameters","includeRowCount","slowQueryThreshold","DEFAULT_HTTP_CONFIG","includeRequestHeaders","includeResponseHeaders","includeRequestBody","includeResponseBody","redactedHeaders","maxBodySize","DEFAULT_CACHE_CONFIG","includeKey","includeValueSize","includeTTL","DEFAULT_EVENT_QUEUE_CONFIG","includePayload","includeHeaders","maxPayloadSize","globalConfig","buildFeatureFlags","overrides","buildTracingConfig","exporterEndpoint","buildMetricsConfig","buildDatabaseConfig","buildGraphQLConfig","buildInstrumentationConfig","features","initializeInstrumentationConfig","getInstrumentationConfig","Error","isInstrumentationConfigInitialized","isFeatureEnabled","feature","updateInstrumentationConfig","updates","resetInstrumentationConfig","getLabelKey","labels","Object","keys","length","entries","sort","a","b","localeCompare","map","k","v","join","InMemoryCounter","values","Map","name","description","add","current","get","set","inc","getValue","getName","getDescription","getAllValues","reset","clear","InMemoryHistogram","boundaries","record","existing","push","shift","getData","count","sum","min","max","avg","buckets","percentiles","p50","p75","p90","p95","p99","sorted","reduce","boundary","filter","Infinity","percentile","p","index","Math","ceil","getAllData","result","parseLabels","part","split","InMemoryGauge","sub","InMemoryUpDownCounter","NoOpCounter","NoOpHistogram","NoOpGauge","NoOpUpDownCounter","MetricsRegistry","counters","histograms","gauges","upDownCounters","getServiceName","isEnabled","getPrefixedName","createCounter","prefixedName","counter","createHistogram","histogram","createGauge","gauge","createUpDownCounter","createFromDefinition","definition","type","getAllMetrics","Array","from","c","h","data","g","exportCountersToPrometheus","lines","labelStr","exportHistogramsToPrometheus","le","leStr","toString","exportGaugesToPrometheus","exportUpDownCountersToPrometheus","toPrometheusFormat","globalRegistry","initializeMetricsRegistry","getMetricsRegistry","isMetricsRegistryInitialized","resetMetricsRegistry"],"mappings":"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","file":"chunk-REF7PANB.js","sourcesContent":["/**\n * Instrumentation Configuration\n *\n * Provides configuration management for OpenTelemetry instrumentation\n * with environment variable support and sensible defaults.\n *\n * @module instrumentation/config\n * @category Observability\n */\n\nimport type {\n CacheInstrumentationConfig,\n DatabaseInstrumentationConfig,\n EventQueueInstrumentationConfig,\n GraphQLInstrumentationConfig,\n HTTPInstrumentationConfig,\n InstrumentationConfig,\n InstrumentationFeatureFlags,\n LoggingConfig,\n MetricsConfig,\n TracingConfig,\n} from './types.js';\n\n/**\n * Environment variable names for instrumentation configuration\n */\nexport const ENV_VARS = {\n // Master switch\n INSTRUMENTATION_ENABLED: 'INSTRUMENTATION_ENABLED',\n\n // Feature flags\n INSTRUMENTATION_TRACING: 'INSTRUMENTATION_TRACING',\n INSTRUMENTATION_METRICS: 'INSTRUMENTATION_METRICS',\n INSTRUMENTATION_LOGGING: 'INSTRUMENTATION_LOGGING',\n INSTRUMENTATION_GRAPHQL: 'INSTRUMENTATION_GRAPHQL',\n INSTRUMENTATION_DATABASE: 'INSTRUMENTATION_DATABASE',\n INSTRUMENTATION_HTTP: 'INSTRUMENTATION_HTTP',\n INSTRUMENTATION_CACHE: 'INSTRUMENTATION_CACHE',\n INSTRUMENTATION_EVENT_QUEUE: 'INSTRUMENTATION_EVENT_QUEUE',\n\n // Tracing\n OTEL_SERVICE_NAME: 'OTEL_SERVICE_NAME',\n OTEL_SERVICE_VERSION: 'OTEL_SERVICE_VERSION',\n OTEL_ENVIRONMENT: 'OTEL_ENVIRONMENT',\n OTEL_EXPORTER_OTLP_ENDPOINT: 'OTEL_EXPORTER_OTLP_ENDPOINT',\n OTEL_EXPORTER_TYPE: 'OTEL_EXPORTER_TYPE',\n OTEL_SAMPLING_RATE: 'OTEL_SAMPLING_RATE',\n OTEL_PROPAGATION_FORMAT: 'OTEL_PROPAGATION_FORMAT',\n\n // Metrics\n METRICS_EXPORTER_TYPE: 'METRICS_EXPORTER_TYPE',\n METRICS_PROMETHEUS_ENDPOINT: 'METRICS_PROMETHEUS_ENDPOINT',\n METRICS_PROMETHEUS_PORT: 'METRICS_PROMETHEUS_PORT',\n METRICS_COLLECT_INTERVAL: 'METRICS_COLLECT_INTERVAL',\n METRICS_DEFAULT_ENABLED: 'METRICS_DEFAULT_ENABLED',\n METRICS_PREFIX: 'METRICS_PREFIX',\n\n // Database\n DB_INSTRUMENTATION_INCLUDE_STATEMENT: 'DB_INSTRUMENTATION_INCLUDE_STATEMENT',\n DB_INSTRUMENTATION_SLOW_QUERY_THRESHOLD: 'DB_INSTRUMENTATION_SLOW_QUERY_THRESHOLD',\n\n // GraphQL\n GRAPHQL_INSTRUMENTATION_INCLUDE_DOCUMENT: 'GRAPHQL_INSTRUMENTATION_INCLUDE_DOCUMENT',\n GRAPHQL_INSTRUMENTATION_INCLUDE_VARIABLES: 'GRAPHQL_INSTRUMENTATION_INCLUDE_VARIABLES',\n GRAPHQL_INSTRUMENTATION_INCLUDE_RESOLVERS: 'GRAPHQL_INSTRUMENTATION_INCLUDE_RESOLVERS',\n} as const;\n\n/**\n * Get environment variable as boolean\n */\nfunction getEnvBoolean(key: string, defaultValue: boolean): boolean {\n const value = process.env[key];\n if (value === undefined || value === '') return defaultValue;\n return value.toLowerCase() === 'true' || value === '1';\n}\n\n/**\n * Get environment variable as number\n */\nfunction getEnvNumber(key: string, defaultValue: number): number {\n const value = process.env[key];\n if (value === undefined || value === '') return defaultValue;\n const parsed = parseFloat(value);\n return isNaN(parsed) ? defaultValue : parsed;\n}\n\n/**\n * Get environment variable as string\n */\nfunction getEnvString(key: string, defaultValue: string): string {\n const value = process.env[key];\n return value !== undefined && value !== '' ? value : defaultValue;\n}\n\n/**\n * Default feature flags\n */\nexport const DEFAULT_FEATURE_FLAGS: InstrumentationFeatureFlags = {\n tracing: true,\n metrics: true,\n logging: true,\n graphql: true,\n database: true,\n http: true,\n cache: true,\n eventQueue: true,\n};\n\n/**\n * Default tracing configuration\n */\nexport const DEFAULT_TRACING_CONFIG: TracingConfig = {\n enabled: true,\n serviceName: 'unknown-service',\n serviceVersion: '1.0.0',\n environment: 'development',\n exporterType: 'none',\n samplingRate: 1.0,\n propagationFormat: 'w3c',\n resourceAttributes: {},\n ignoredRoutes: ['/health', '/ready', '/live', '/metrics'],\n ignoredOperations: ['IntrospectionQuery'],\n};\n\n/**\n * Default metrics configuration\n */\nexport const DEFAULT_METRICS_CONFIG: MetricsConfig = {\n enabled: true,\n serviceName: 'unknown-service',\n exporterType: 'none',\n prometheusEndpoint: '/metrics',\n prometheusPort: 9090,\n collectInterval: 60000,\n defaultMetrics: true,\n metricPrefix: '',\n};\n\n/**\n * Default logging configuration\n */\nexport const DEFAULT_LOGGING_CONFIG: LoggingConfig = {\n enabled: true,\n includeTraceId: true,\n includeSpanId: true,\n includeTraceFlags: false,\n level: 'info',\n};\n\n/**\n * Default GraphQL instrumentation configuration\n */\nexport const DEFAULT_GRAPHQL_CONFIG: GraphQLInstrumentationConfig = {\n enabled: true,\n includeDocument: false,\n includeVariables: false,\n includeResult: false,\n documentDepth: 3,\n ignoredOperations: ['IntrospectionQuery'],\n includeResolvers: true,\n resolverSpanDepth: 3,\n};\n\n/**\n * Default database instrumentation configuration\n */\nexport const DEFAULT_DATABASE_CONFIG: DatabaseInstrumentationConfig = {\n enabled: true,\n includeStatement: false,\n includeParameters: false,\n includeRowCount: true,\n slowQueryThreshold: 1000,\n ignoredOperations: [],\n};\n\n/**\n * Default HTTP instrumentation configuration\n */\nexport const DEFAULT_HTTP_CONFIG: HTTPInstrumentationConfig = {\n enabled: true,\n includeRequestHeaders: false,\n includeResponseHeaders: false,\n includeRequestBody: false,\n includeResponseBody: false,\n redactedHeaders: ['authorization', 'cookie', 'set-cookie', 'x-api-key'],\n ignoredRoutes: ['/health', '/ready', '/live', '/metrics'],\n maxBodySize: 10240,\n};\n\n/**\n * Default cache instrumentation configuration\n */\nexport const DEFAULT_CACHE_CONFIG: CacheInstrumentationConfig = {\n enabled: true,\n includeKey: true,\n includeValueSize: true,\n includeTTL: true,\n};\n\n/**\n * Default event queue instrumentation configuration\n */\nexport const DEFAULT_EVENT_QUEUE_CONFIG: EventQueueInstrumentationConfig = {\n enabled: true,\n includePayload: false,\n includeHeaders: true,\n maxPayloadSize: 1024,\n};\n\n/**\n * Global instrumentation configuration state\n */\nlet globalConfig: InstrumentationConfig | null = null;\n\n/**\n * Build feature flags from environment variables\n */\nexport function buildFeatureFlags(overrides?: Partial<InstrumentationFeatureFlags>): InstrumentationFeatureFlags {\n return {\n tracing: getEnvBoolean(ENV_VARS.INSTRUMENTATION_TRACING, DEFAULT_FEATURE_FLAGS.tracing),\n metrics: getEnvBoolean(ENV_VARS.INSTRUMENTATION_METRICS, DEFAULT_FEATURE_FLAGS.metrics),\n logging: getEnvBoolean(ENV_VARS.INSTRUMENTATION_LOGGING, DEFAULT_FEATURE_FLAGS.logging),\n graphql: getEnvBoolean(ENV_VARS.INSTRUMENTATION_GRAPHQL, DEFAULT_FEATURE_FLAGS.graphql),\n database: getEnvBoolean(ENV_VARS.INSTRUMENTATION_DATABASE, DEFAULT_FEATURE_FLAGS.database),\n http: getEnvBoolean(ENV_VARS.INSTRUMENTATION_HTTP, DEFAULT_FEATURE_FLAGS.http),\n cache: getEnvBoolean(ENV_VARS.INSTRUMENTATION_CACHE, DEFAULT_FEATURE_FLAGS.cache),\n eventQueue: getEnvBoolean(ENV_VARS.INSTRUMENTATION_EVENT_QUEUE, DEFAULT_FEATURE_FLAGS.eventQueue),\n ...overrides,\n };\n}\n\n/**\n * Build tracing configuration from environment variables\n */\nexport function buildTracingConfig(serviceName: string, overrides?: Partial<TracingConfig>): TracingConfig {\n return {\n enabled: getEnvBoolean(ENV_VARS.INSTRUMENTATION_TRACING, DEFAULT_TRACING_CONFIG.enabled),\n serviceName: getEnvString(ENV_VARS.OTEL_SERVICE_NAME, serviceName),\n serviceVersion: getEnvString(ENV_VARS.OTEL_SERVICE_VERSION, DEFAULT_TRACING_CONFIG.serviceVersion!),\n environment: getEnvString(ENV_VARS.OTEL_ENVIRONMENT, process.env['NODE_ENV'] || 'development'),\n exporterEndpoint: process.env[ENV_VARS.OTEL_EXPORTER_OTLP_ENDPOINT],\n exporterType: getEnvString(ENV_VARS.OTEL_EXPORTER_TYPE, DEFAULT_TRACING_CONFIG.exporterType!) as\n | 'otlp'\n | 'console'\n | 'none',\n samplingRate: getEnvNumber(ENV_VARS.OTEL_SAMPLING_RATE, DEFAULT_TRACING_CONFIG.samplingRate!),\n propagationFormat: getEnvString(ENV_VARS.OTEL_PROPAGATION_FORMAT, DEFAULT_TRACING_CONFIG.propagationFormat!) as\n | 'w3c'\n | 'b3'\n | 'jaeger',\n resourceAttributes: DEFAULT_TRACING_CONFIG.resourceAttributes,\n ignoredRoutes: DEFAULT_TRACING_CONFIG.ignoredRoutes,\n ignoredOperations: DEFAULT_TRACING_CONFIG.ignoredOperations,\n ...overrides,\n };\n}\n\n/**\n * Build metrics configuration from environment variables\n */\nexport function buildMetricsConfig(serviceName: string, overrides?: Partial<MetricsConfig>): MetricsConfig {\n return {\n enabled: getEnvBoolean(ENV_VARS.INSTRUMENTATION_METRICS, DEFAULT_METRICS_CONFIG.enabled),\n serviceName: getEnvString(ENV_VARS.OTEL_SERVICE_NAME, serviceName),\n exporterEndpoint: process.env[ENV_VARS.OTEL_EXPORTER_OTLP_ENDPOINT],\n exporterType: getEnvString(ENV_VARS.METRICS_EXPORTER_TYPE, DEFAULT_METRICS_CONFIG.exporterType!) as\n | 'otlp'\n | 'prometheus'\n | 'console'\n | 'none',\n prometheusEndpoint: getEnvString(ENV_VARS.METRICS_PROMETHEUS_ENDPOINT, DEFAULT_METRICS_CONFIG.prometheusEndpoint!),\n prometheusPort: getEnvNumber(ENV_VARS.METRICS_PROMETHEUS_PORT, DEFAULT_METRICS_CONFIG.prometheusPort!),\n collectInterval: getEnvNumber(ENV_VARS.METRICS_COLLECT_INTERVAL, DEFAULT_METRICS_CONFIG.collectInterval!),\n defaultMetrics: getEnvBoolean(ENV_VARS.METRICS_DEFAULT_ENABLED, DEFAULT_METRICS_CONFIG.defaultMetrics!),\n metricPrefix: getEnvString(ENV_VARS.METRICS_PREFIX, DEFAULT_METRICS_CONFIG.metricPrefix!),\n ...overrides,\n };\n}\n\n/**\n * Build database instrumentation configuration\n */\nexport function buildDatabaseConfig(overrides?: Partial<DatabaseInstrumentationConfig>): DatabaseInstrumentationConfig {\n return {\n enabled: getEnvBoolean(ENV_VARS.INSTRUMENTATION_DATABASE, DEFAULT_DATABASE_CONFIG.enabled),\n includeStatement: getEnvBoolean(\n ENV_VARS.DB_INSTRUMENTATION_INCLUDE_STATEMENT,\n DEFAULT_DATABASE_CONFIG.includeStatement!\n ),\n includeParameters: DEFAULT_DATABASE_CONFIG.includeParameters,\n includeRowCount: DEFAULT_DATABASE_CONFIG.includeRowCount,\n slowQueryThreshold: getEnvNumber(\n ENV_VARS.DB_INSTRUMENTATION_SLOW_QUERY_THRESHOLD,\n DEFAULT_DATABASE_CONFIG.slowQueryThreshold!\n ),\n ignoredOperations: DEFAULT_DATABASE_CONFIG.ignoredOperations,\n ...overrides,\n };\n}\n\n/**\n * Build GraphQL instrumentation configuration\n */\nexport function buildGraphQLConfig(overrides?: Partial<GraphQLInstrumentationConfig>): GraphQLInstrumentationConfig {\n return {\n enabled: getEnvBoolean(ENV_VARS.INSTRUMENTATION_GRAPHQL, DEFAULT_GRAPHQL_CONFIG.enabled),\n includeDocument: getEnvBoolean(\n ENV_VARS.GRAPHQL_INSTRUMENTATION_INCLUDE_DOCUMENT,\n DEFAULT_GRAPHQL_CONFIG.includeDocument!\n ),\n includeVariables: getEnvBoolean(\n ENV_VARS.GRAPHQL_INSTRUMENTATION_INCLUDE_VARIABLES,\n DEFAULT_GRAPHQL_CONFIG.includeVariables!\n ),\n includeResult: DEFAULT_GRAPHQL_CONFIG.includeResult,\n documentDepth: DEFAULT_GRAPHQL_CONFIG.documentDepth,\n ignoredOperations: DEFAULT_GRAPHQL_CONFIG.ignoredOperations,\n includeResolvers: getEnvBoolean(\n ENV_VARS.GRAPHQL_INSTRUMENTATION_INCLUDE_RESOLVERS,\n DEFAULT_GRAPHQL_CONFIG.includeResolvers!\n ),\n resolverSpanDepth: DEFAULT_GRAPHQL_CONFIG.resolverSpanDepth,\n ...overrides,\n };\n}\n\n/**\n * Build complete instrumentation configuration\n */\nexport function buildInstrumentationConfig(\n serviceName: string,\n overrides?: Partial<InstrumentationConfig>\n): InstrumentationConfig {\n const enabled = getEnvBoolean(ENV_VARS.INSTRUMENTATION_ENABLED, true);\n\n return {\n enabled,\n features: buildFeatureFlags(overrides?.features),\n tracing: buildTracingConfig(serviceName, overrides?.tracing),\n metrics: buildMetricsConfig(serviceName, overrides?.metrics),\n logging: { ...DEFAULT_LOGGING_CONFIG, ...overrides?.logging },\n graphql: buildGraphQLConfig(overrides?.graphql),\n database: buildDatabaseConfig(overrides?.database),\n http: { ...DEFAULT_HTTP_CONFIG, ...overrides?.http },\n cache: { ...DEFAULT_CACHE_CONFIG, ...overrides?.cache },\n eventQueue: { ...DEFAULT_EVENT_QUEUE_CONFIG, ...overrides?.eventQueue },\n };\n}\n\n/**\n * Initialize global instrumentation configuration\n */\nexport function initializeInstrumentationConfig(\n serviceName: string,\n overrides?: Partial<InstrumentationConfig>\n): InstrumentationConfig {\n globalConfig = buildInstrumentationConfig(serviceName, overrides);\n return globalConfig;\n}\n\n/**\n * Get current instrumentation configuration\n * @throws Error if configuration not initialized\n */\nexport function getInstrumentationConfig(): InstrumentationConfig {\n if (!globalConfig) {\n throw new Error('Instrumentation config not initialized. Call initializeInstrumentationConfig() first.');\n }\n return globalConfig;\n}\n\n/**\n * Check if instrumentation configuration is initialized\n */\nexport function isInstrumentationConfigInitialized(): boolean {\n return globalConfig !== null;\n}\n\n/**\n * Check if a specific feature is enabled\n */\nexport function isFeatureEnabled(feature: keyof InstrumentationFeatureFlags): boolean {\n if (!globalConfig) return false;\n return globalConfig.enabled && globalConfig.features[feature];\n}\n\n/**\n * Update instrumentation configuration at runtime\n */\nexport function updateInstrumentationConfig(updates: Partial<InstrumentationConfig>): InstrumentationConfig {\n if (!globalConfig) {\n throw new Error('Instrumentation config not initialized. Call initializeInstrumentationConfig() first.');\n }\n globalConfig = { ...globalConfig, ...updates };\n return globalConfig;\n}\n\n/**\n * Reset instrumentation configuration (useful for testing)\n */\nexport function resetInstrumentationConfig(): void {\n globalConfig = null;\n}\n","/**\n * Metrics Collector Module\n *\n * OpenTelemetry-style metrics collection with counters, histograms,\n * and gauges for comprehensive service monitoring.\n *\n * @module instrumentation/metrics-collector\n * @category Observability\n */\n\nimport { isFeatureEnabled, isInstrumentationConfigInitialized } from './config.js';\nimport type { MetricDefinition } from './types.js';\n\n/**\n * Metric labels\n */\nexport type MetricLabels = Record<string, string>;\n\n/**\n * Counter metric interface\n */\nexport interface Counter {\n /** Add value to counter */\n add(value: number, labels?: MetricLabels): void;\n /** Increment counter by 1 */\n inc(labels?: MetricLabels): void;\n /** Get current value */\n getValue(labels?: MetricLabels): number;\n}\n\n/**\n * Histogram metric interface\n */\nexport interface Histogram {\n /** Record a value */\n record(value: number, labels?: MetricLabels): void;\n /** Get histogram data */\n getData(labels?: MetricLabels): HistogramData;\n}\n\n/**\n * Histogram data\n */\nexport interface HistogramData {\n count: number;\n sum: number;\n min: number;\n max: number;\n avg: number;\n buckets: Map<number, number>;\n percentiles: {\n p50: number;\n p75: number;\n p90: number;\n p95: number;\n p99: number;\n };\n}\n\n/**\n * Gauge metric interface\n */\nexport interface Gauge {\n /** Set gauge value */\n set(value: number, labels?: MetricLabels): void;\n /** Add to gauge value */\n add(value: number, labels?: MetricLabels): void;\n /** Subtract from gauge value */\n sub(value: number, labels?: MetricLabels): void;\n /** Get current value */\n getValue(labels?: MetricLabels): number;\n}\n\n/**\n * UpDownCounter metric interface (can go up or down)\n */\nexport interface UpDownCounter {\n /** Add value (can be negative) */\n add(value: number, labels?: MetricLabels): void;\n /** Get current value */\n getValue(labels?: MetricLabels): number;\n}\n\n/**\n * Generate label key for storage\n */\nfunction getLabelKey(labels?: MetricLabels): string {\n if (!labels || Object.keys(labels).length === 0) return '';\n return Object.entries(labels)\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([k, v]) => `${k}=${v}`)\n .join(',');\n}\n\n/**\n * In-memory counter implementation\n */\nclass InMemoryCounter implements Counter {\n private values: Map<string, number> = new Map();\n private readonly name: string;\n private readonly description: string;\n\n constructor(name: string, description: string) {\n this.name = name;\n this.description = description;\n }\n\n add(value: number, labels?: MetricLabels): void {\n const key = getLabelKey(labels);\n const current = this.values.get(key) || 0;\n this.values.set(key, current + value);\n }\n\n inc(labels?: MetricLabels): void {\n this.add(1, labels);\n }\n\n getValue(labels?: MetricLabels): number {\n const key = getLabelKey(labels);\n return this.values.get(key) || 0;\n }\n\n getName(): string {\n return this.name;\n }\n\n getDescription(): string {\n return this.description;\n }\n\n getAllValues(): Map<string, number> {\n return new Map(this.values);\n }\n\n reset(): void {\n this.values.clear();\n }\n}\n\n/**\n * In-memory histogram implementation\n */\nclass InMemoryHistogram implements Histogram {\n private values: Map<string, number[]> = new Map();\n private readonly name: string;\n private readonly description: string;\n private readonly boundaries: number[];\n\n constructor(name: string, description: string, boundaries?: number[]) {\n this.name = name;\n this.description = description;\n this.boundaries = boundaries || [5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000];\n }\n\n record(value: number, labels?: MetricLabels): void {\n const key = getLabelKey(labels);\n const existing = this.values.get(key) || [];\n existing.push(value);\n\n // Keep only last 10000 values per label combination\n if (existing.length > 10000) {\n existing.shift();\n }\n\n this.values.set(key, existing);\n }\n\n getData(labels?: MetricLabels): HistogramData {\n const key = getLabelKey(labels);\n const values = this.values.get(key) || [];\n\n if (values.length === 0) {\n return {\n count: 0,\n sum: 0,\n min: 0,\n max: 0,\n avg: 0,\n buckets: new Map(),\n percentiles: { p50: 0, p75: 0, p90: 0, p95: 0, p99: 0 },\n };\n }\n\n const sorted = [...values].sort((a, b) => a - b);\n const sum = values.reduce((a, b) => a + b, 0);\n\n // Calculate bucket counts\n const buckets = new Map<number, number>();\n for (const boundary of this.boundaries) {\n buckets.set(boundary, values.filter((v) => v <= boundary).length);\n }\n buckets.set(Infinity, values.length);\n\n // Calculate percentiles\n const percentile = (p: number): number => {\n const index = Math.ceil((p / 100) * sorted.length) - 1;\n return sorted[Math.max(0, index)] || 0;\n };\n\n return {\n count: values.length,\n sum,\n min: sorted[0] || 0,\n max: sorted[sorted.length - 1] || 0,\n avg: sum / values.length,\n buckets,\n percentiles: {\n p50: percentile(50),\n p75: percentile(75),\n p90: percentile(90),\n p95: percentile(95),\n p99: percentile(99),\n },\n };\n }\n\n getName(): string {\n return this.name;\n }\n\n getDescription(): string {\n return this.description;\n }\n\n getAllData(): Map<string, HistogramData> {\n const result = new Map<string, HistogramData>();\n for (const [key] of this.values) {\n result.set(key, this.getData(key ? this.parseLabels(key) : undefined));\n }\n return result;\n }\n\n private parseLabels(key: string): MetricLabels {\n const labels: MetricLabels = {};\n for (const part of key.split(',')) {\n const [k, v] = part.split('=');\n if (k && v) labels[k] = v;\n }\n return labels;\n }\n\n reset(): void {\n this.values.clear();\n }\n}\n\n/**\n * In-memory gauge implementation\n */\nclass InMemoryGauge implements Gauge {\n private values: Map<string, number> = new Map();\n private readonly name: string;\n private readonly description: string;\n\n constructor(name: string, description: string) {\n this.name = name;\n this.description = description;\n }\n\n set(value: number, labels?: MetricLabels): void {\n const key = getLabelKey(labels);\n this.values.set(key, value);\n }\n\n // eslint-disable-next-line sonarjs/no-identical-functions -- Shared implementation across metric types by design\n add(value: number, labels?: MetricLabels): void {\n const key = getLabelKey(labels);\n const current = this.values.get(key) || 0;\n this.values.set(key, current + value);\n }\n\n sub(value: number, labels?: MetricLabels): void {\n this.add(-value, labels);\n }\n\n getValue(labels?: MetricLabels): number {\n const key = getLabelKey(labels);\n return this.values.get(key) || 0;\n }\n\n getName(): string {\n return this.name;\n }\n\n getDescription(): string {\n return this.description;\n }\n\n getAllValues(): Map<string, number> {\n return new Map(this.values);\n }\n\n reset(): void {\n this.values.clear();\n }\n}\n\n/**\n * In-memory UpDownCounter implementation\n */\nclass InMemoryUpDownCounter implements UpDownCounter {\n private values: Map<string, number> = new Map();\n private readonly name: string;\n private readonly description: string;\n\n constructor(name: string, description: string) {\n this.name = name;\n this.description = description;\n }\n\n // eslint-disable-next-line sonarjs/no-identical-functions -- Shared implementation across metric types by design\n add(value: number, labels?: MetricLabels): void {\n const key = getLabelKey(labels);\n const current = this.values.get(key) || 0;\n this.values.set(key, current + value);\n }\n\n getValue(labels?: MetricLabels): number {\n const key = getLabelKey(labels);\n return this.values.get(key) || 0;\n }\n\n getName(): string {\n return this.name;\n }\n\n getDescription(): string {\n return this.description;\n }\n\n getAllValues(): Map<string, number> {\n return new Map(this.values);\n }\n\n reset(): void {\n this.values.clear();\n }\n}\n\n/**\n * No-op implementations for when metrics are disabled\n */\nclass NoOpCounter implements Counter {\n add(): void {}\n inc(): void {}\n getValue(): number {\n return 0;\n }\n}\n\nclass NoOpHistogram implements Histogram {\n record(): void {}\n getData(): HistogramData {\n return {\n count: 0,\n sum: 0,\n min: 0,\n max: 0,\n avg: 0,\n buckets: new Map(),\n percentiles: { p50: 0, p75: 0, p90: 0, p95: 0, p99: 0 },\n };\n }\n}\n\nclass NoOpGauge implements Gauge {\n set(): void {}\n add(): void {}\n sub(): void {}\n getValue(): number {\n return 0;\n }\n}\n\nclass NoOpUpDownCounter implements UpDownCounter {\n add(): void {}\n getValue(): number {\n return 0;\n }\n}\n\n/**\n * Metrics registry for managing all metrics\n */\nexport class MetricsRegistry {\n private counters: Map<string, InMemoryCounter> = new Map();\n private histograms: Map<string, InMemoryHistogram> = new Map();\n private gauges: Map<string, InMemoryGauge> = new Map();\n private upDownCounters: Map<string, InMemoryUpDownCounter> = new Map();\n private serviceName: string;\n private metricPrefix: string;\n\n constructor(serviceName: string, metricPrefix = '') {\n this.serviceName = serviceName;\n this.metricPrefix = metricPrefix;\n }\n\n /**\n * Get service name\n */\n getServiceName(): string {\n return this.serviceName;\n }\n\n /**\n * Check if metrics are enabled\n */\n private isEnabled(): boolean {\n return isInstrumentationConfigInitialized() && isFeatureEnabled('metrics');\n }\n\n /**\n * Get prefixed metric name\n */\n private getPrefixedName(name: string): string {\n return this.metricPrefix ? `${this.metricPrefix}_${name}` : name;\n }\n\n /**\n * Create or get a counter\n */\n createCounter(name: string, description: string): Counter {\n if (!this.isEnabled()) {\n return new NoOpCounter();\n }\n\n const prefixedName = this.getPrefixedName(name);\n let counter = this.counters.get(prefixedName);\n if (!counter) {\n counter = new InMemoryCounter(prefixedName, description);\n this.counters.set(prefixedName, counter);\n }\n return counter;\n }\n\n /**\n * Create or get a histogram\n */\n createHistogram(name: string, description: string, boundaries?: number[]): Histogram {\n if (!this.isEnabled()) {\n return new NoOpHistogram();\n }\n\n const prefixedName = this.getPrefixedName(name);\n let histogram = this.histograms.get(prefixedName);\n if (!histogram) {\n histogram = new InMemoryHistogram(prefixedName, description, boundaries);\n this.histograms.set(prefixedName, histogram);\n }\n return histogram;\n }\n\n /**\n * Create or get a gauge\n */\n createGauge(name: string, description: string): Gauge {\n if (!this.isEnabled()) {\n return new NoOpGauge();\n }\n\n const prefixedName = this.getPrefixedName(name);\n let gauge = this.gauges.get(prefixedName);\n if (!gauge) {\n gauge = new InMemoryGauge(prefixedName, description);\n this.gauges.set(prefixedName, gauge);\n }\n return gauge;\n }\n\n /**\n * Create or get an up-down counter\n */\n createUpDownCounter(name: string, description: string): UpDownCounter {\n if (!this.isEnabled()) {\n return new NoOpUpDownCounter();\n }\n\n const prefixedName = this.getPrefixedName(name);\n let counter = this.upDownCounters.get(prefixedName);\n if (!counter) {\n counter = new InMemoryUpDownCounter(prefixedName, description);\n this.upDownCounters.set(prefixedName, counter);\n }\n return counter;\n }\n\n /**\n * Create metric from definition\n */\n createFromDefinition(definition: MetricDefinition): Counter | Histogram | Gauge | UpDownCounter {\n switch (definition.type) {\n case 'counter':\n return this.createCounter(definition.name, definition.description);\n case 'histogram':\n return this.createHistogram(definition.name, definition.description, definition.boundaries);\n case 'gauge':\n return this.createGauge(definition.name, definition.description);\n case 'upDownCounter':\n return this.createUpDownCounter(definition.name, definition.description);\n default:\n throw new Error(`Unknown metric type: ${definition.type}`);\n }\n }\n\n /**\n * Get all metrics data\n */\n getAllMetrics(): {\n counters: Array<{ name: string; description: string; values: Map<string, number> }>;\n histograms: Array<{ name: string; description: string; data: Map<string, HistogramData> }>;\n gauges: Array<{ name: string; description: string; values: Map<string, number> }>;\n upDownCounters: Array<{ name: string; description: string; values: Map<string, number> }>;\n } {\n return {\n counters: Array.from(this.counters.values()).map((c) => ({\n name: c.getName(),\n description: c.getDescription(),\n values: c.getAllValues(),\n })),\n histograms: Array.from(this.histograms.values()).map((h) => ({\n name: h.getName(),\n description: h.getDescription(),\n data: h.getAllData(),\n })),\n gauges: Array.from(this.gauges.values()).map((g) => ({\n name: g.getName(),\n description: g.getDescription(),\n values: g.getAllValues(),\n })),\n upDownCounters: Array.from(this.upDownCounters.values()).map((c) => ({\n name: c.getName(),\n description: c.getDescription(),\n values: c.getAllValues(),\n })),\n };\n }\n\n /**\n * Export counter metrics to Prometheus format\n */\n private exportCountersToPrometheus(lines: string[]): void {\n for (const counter of this.counters.values()) {\n lines.push(`# HELP ${counter.getName()} ${counter.getDescription()}`);\n lines.push(`# TYPE ${counter.getName()} counter`);\n for (const [labels, value] of counter.getAllValues()) {\n const labelStr = labels ? `{${labels}}` : '';\n lines.push(`${counter.getName()}${labelStr} ${value}`);\n }\n }\n }\n\n /**\n * Export histogram metrics to Prometheus format\n */\n private exportHistogramsToPrometheus(lines: string[]): void {\n for (const histogram of this.histograms.values()) {\n lines.push(`# HELP ${histogram.getName()} ${histogram.getDescription()}`);\n lines.push(`# TYPE ${histogram.getName()} histogram`);\n for (const [labels, data] of histogram.getAllData()) {\n const labelStr = labels ? `,${labels}` : '';\n for (const [le, count] of data.buckets) {\n const leStr = le === Infinity ? '+Inf' : le.toString();\n lines.push(`${histogram.getName()}_bucket{le=\"${leStr}\"${labelStr}} ${count}`);\n }\n lines.push(`${histogram.getName()}_sum{${labels || ''}} ${data.sum}`);\n lines.push(`${histogram.getName()}_count{${labels || ''}} ${data.count}`);\n }\n }\n }\n\n /**\n * Export gauge metrics to Prometheus format\n */\n private exportGaugesToPrometheus(lines: string[]): void {\n for (const gauge of this.gauges.values()) {\n lines.push(`# HELP ${gauge.getName()} ${gauge.getDescription()}`);\n lines.push(`# TYPE ${gauge.getName()} gauge`);\n for (const [labels, value] of gauge.getAllValues()) {\n const labelStr = labels ? `{${labels}}` : '';\n lines.push(`${gauge.getName()}${labelStr} ${value}`);\n }\n }\n }\n\n /**\n * Export up-down counter metrics to Prometheus format (as gauges)\n */\n private exportUpDownCountersToPrometheus(lines: string[]): void {\n for (const counter of this.upDownCounters.values()) {\n lines.push(`# HELP ${counter.getName()} ${counter.getDescription()}`);\n lines.push(`# TYPE ${counter.getName()} gauge`);\n for (const [labels, value] of counter.getAllValues()) {\n const labelStr = labels ? `{${labels}}` : '';\n lines.push(`${counter.getName()}${labelStr} ${value}`);\n }\n }\n }\n\n /**\n * Export metrics in Prometheus format\n */\n toPrometheusFormat(): string {\n const lines: string[] = [];\n\n this.exportCountersToPrometheus(lines);\n this.exportHistogramsToPrometheus(lines);\n this.exportGaugesToPrometheus(lines);\n this.exportUpDownCountersToPrometheus(lines);\n\n return lines.join('\\n');\n }\n\n /**\n * Reset all metrics\n */\n reset(): void {\n for (const counter of this.counters.values()) {\n counter.reset();\n }\n for (const histogram of this.histograms.values()) {\n histogram.reset();\n }\n for (const gauge of this.gauges.values()) {\n gauge.reset();\n }\n for (const counter of this.upDownCounters.values()) {\n counter.reset();\n }\n }\n\n /**\n * Clear all metrics (remove registrations)\n */\n clear(): void {\n this.counters.clear();\n this.histograms.clear();\n this.gauges.clear();\n this.upDownCounters.clear();\n }\n}\n\n/**\n * Global metrics registry\n */\nlet globalRegistry: MetricsRegistry | null = null;\n\n/**\n * Initialize global metrics registry\n */\nexport function initializeMetricsRegistry(serviceName: string, metricPrefix = ''): MetricsRegistry {\n globalRegistry = new MetricsRegistry(serviceName, metricPrefix);\n return globalRegistry;\n}\n\n/**\n * Get global metrics registry\n */\nexport function getMetricsRegistry(): MetricsRegistry {\n if (!globalRegistry) {\n globalRegistry = new MetricsRegistry('unknown-service');\n }\n return globalRegistry;\n}\n\n/**\n * Check if metrics registry is initialized\n */\nexport function isMetricsRegistryInitialized(): boolean {\n return globalRegistry !== null;\n}\n\n/**\n * Reset global metrics registry (useful for testing)\n */\nexport function resetMetricsRegistry(): void {\n if (globalRegistry) {\n globalRegistry.clear();\n }\n globalRegistry = null;\n}\n\n/**\n * Convenience functions for creating metrics\n */\nexport function createCounter(name: string, description: string): Counter {\n return getMetricsRegistry().createCounter(name, description);\n}\n\nexport function createHistogram(name: string, description: string, boundaries?: number[]): Histogram {\n return getMetricsRegistry().createHistogram(name, description, boundaries);\n}\n\nexport function createGauge(name: string, description: string): Gauge {\n return getMetricsRegistry().createGauge(name, description);\n}\n\nexport function createUpDownCounter(name: string, description: string): UpDownCounter {\n return getMetricsRegistry().createUpDownCounter(name, description);\n}\n"]}
|