UNPKG

autotel

Version:
110 lines (106 loc) 3.19 kB
import { A as AutotelConfig } from './init-CMuTaFAV.cjs'; import { SamplingPreset } from './sampling.cjs'; import '@opentelemetry/sdk-trace-base'; import '@opentelemetry/sdk-node'; import '@opentelemetry/resources'; import './event-subscriber.cjs'; import './logger.cjs'; import 'pino'; import '@opentelemetry/api'; import '@opentelemetry/sdk-metrics'; import '@opentelemetry/sdk-logs'; import './filtering-span-processor.cjs'; import './span-name-normalizer.cjs'; import './attribute-redacting-processor.cjs'; import './processors.cjs'; /** * YAML configuration loader for autotel * * Supports: * - Auto-discovery of autotel.yaml in cwd * - AUTOTEL_CONFIG_FILE env var override * - Environment variable substitution: ${env:VAR} and ${env:VAR:-default} * * @example Auto-discovery * ```yaml * # autotel.yaml in project root * service: * name: my-service * exporter: * endpoint: ${env:OTEL_EXPORTER_OTLP_ENDPOINT:-http://localhost:4318} * ``` * * @example Explicit path * ```bash * AUTOTEL_CONFIG_FILE=./config/otel.yaml tsx --import autotel/auto src/index.ts * ``` */ /** * YAML config structure * Maps to AutotelConfig with user-friendly naming */ interface YamlConfig { service?: { name?: string; version?: string; environment?: string; }; exporter?: { endpoint?: string; protocol?: 'http' | 'grpc'; headers?: Record<string, string>; }; resource?: Record<string, string | number | boolean>; sampling?: { preset?: SamplingPreset; type?: 'adaptive' | 'always_on' | 'always_off' | 'ratio'; ratio?: number; baseline_rate?: number; always_sample_errors?: boolean; always_sample_slow?: boolean; slow_threshold_ms?: number; }; autoInstrumentations?: string[] | Record<string, { enabled?: boolean; }>; debug?: boolean; } /** * Load and parse YAML config file (auto-discovery) * * Automatically finds and loads autotel.yaml or uses AUTOTEL_CONFIG_FILE. * Returns null if no config file found (not an error - YAML config is optional). * * @returns Partial AutotelConfig or null if no config file found * * @example * const yamlConfig = loadYamlConfig(); * if (yamlConfig) { * init({ ...yamlConfig, debug: true }); * } */ declare function loadYamlConfig(): Partial<AutotelConfig> | null; /** * Load YAML config from a specific file path * * Unlike loadYamlConfig(), this throws if the file cannot be read. * * @param filePath - Path to YAML config file * @returns Partial AutotelConfig * @throws Error if file cannot be read or parsed * * @example * import { loadYamlConfigFromFile } from 'autotel/yaml'; * import { init } from 'autotel'; * * const config = loadYamlConfigFromFile('./config/otel.yaml'); * init({ ...config, debug: true }); */ declare function loadYamlConfigFromFile(filePath: string): Partial<AutotelConfig>; /** * Check if a YAML config file exists (without loading it) * * @returns true if a config file would be found by loadYamlConfig() */ declare function hasYamlConfig(): boolean; export { type YamlConfig, hasYamlConfig, loadYamlConfig, loadYamlConfigFromFile };