@opentelemetry/configuration 0.213.0 → 0.214.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"FileConfigFactory.js","sourceRoot":"","sources":["../../src/FileConfigFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diagLogLevelFromString, getStringFromEnv } from '@opentelemetry/core';\nimport {\n AttributeLimits,\n Propagator,\n ConfigurationModel,\n initializeDefaultConfiguration,\n} from './models/configModel';\nimport { ConfigFactory } from './IConfigFactory';\nimport * as fs from 'fs';\nimport * as yaml from 'yaml';\nimport {\n getBooleanFromConfigFile,\n getBooleanListFromConfigFile,\n getGrpcTlsConfig,\n getHttpTlsConfig,\n getNumberFromConfigFile,\n getNumberListFromConfigFile,\n getStringFromConfigFile,\n getStringListFromConfigFile,\n} from './utils';\nimport {\n NameStringValuePair,\n OtlpHttpEncoding,\n SeverityNumber,\n} from './models/commonModel';\nimport {\n initializeDefaultTracerProviderConfiguration,\n SpanExporter,\n SpanProcessor,\n TracerProvider,\n} from './models/tracerProviderModel';\nimport {\n ExperimentalLoggerMatcherAndConfig,\n initializeDefaultLoggerProviderConfiguration,\n LoggerProvider,\n LogRecordExporter,\n LogRecordProcessor,\n} from './models/loggerProviderModel';\nimport { AttributeNameValue } from './models/resourceModel';\nimport {\n Aggregation,\n CardinalityLimits,\n ExemplarFilter,\n ExperimentalPrometheusTranslationStrategy,\n ExporterDefaultHistogramAggregation,\n ExporterTemporalityPreference,\n initializeDefaultMeterProviderConfiguration,\n InstrumentType,\n MeterProvider,\n MetricProducer,\n MetricReader,\n PullMetricExporter,\n PushMetricExporter,\n View,\n ViewSelector,\n ViewStream,\n} from './models/meterProviderModel';\nimport { diag } from '@opentelemetry/api';\n\nexport class FileConfigFactory implements ConfigFactory {\n private _config: ConfigurationModel;\n\n constructor() {\n this._config = initializeDefaultConfiguration();\n parseConfigFile(this._config);\n }\n\n getConfigModel(): ConfigurationModel {\n return this._config;\n }\n}\n\nexport function hasValidConfigFile(): boolean {\n const configFile = getStringFromEnv('OTEL_EXPERIMENTAL_CONFIG_FILE');\n if (configFile) {\n if (\n !(configFile.endsWith('.yaml') || configFile.endsWith('.yml')) ||\n !fs.existsSync(configFile)\n ) {\n diag.warn(\n `Config file ${configFile} set on OTEL_EXPERIMENTAL_CONFIG_FILE is not valid`\n );\n return false;\n }\n return true;\n }\n return false;\n}\n\nexport function parseConfigFile(config: ConfigurationModel) {\n const supportedFileVersions = ['1.0-rc.3'];\n const configFile = getStringFromEnv('OTEL_EXPERIMENTAL_CONFIG_FILE') || '';\n const file = fs.readFileSync(configFile, 'utf8');\n const parsedContent = yaml.parse(file);\n\n if (\n parsedContent['file_format'] &&\n supportedFileVersions.includes(parsedContent['file_format'])\n ) {\n const disabled = getBooleanFromConfigFile(parsedContent['disabled']);\n if (disabled !== undefined) {\n config.disabled = disabled;\n }\n\n const logLevel = getNumberFromConfigFile(\n diagLogLevelFromString(parsedContent['log_level'])\n );\n if (logLevel) {\n config.log_level = logLevel;\n }\n\n if (parsedContent['resource']) {\n if (config.resource == null) {\n config.resource = {};\n }\n const schemaUrl = getStringFromConfigFile(\n parsedContent['resource']?.['schema_url']\n );\n if (schemaUrl) {\n config.resource.schema_url = schemaUrl;\n }\n }\n\n setResourceAttributes(\n config,\n parsedContent['resource']?.['attributes'],\n parsedContent['resource']?.['attributes_list']\n );\n setAttributeLimits(config, parsedContent['attribute_limits']);\n setPropagator(config, parsedContent['propagator']);\n setTracerProvider(config, parsedContent['tracer_provider']);\n setMeterProvider(config, parsedContent['meter_provider']);\n setLoggerProvider(config, parsedContent['logger_provider']);\n } else {\n diag.warn(\n `Unsupported File Format: ${parsedContent['file_format']}. It must be one of the following: ${supportedFileVersions}`\n );\n }\n}\n\nexport function setResourceAttributes(\n config: ConfigurationModel,\n attributes: AttributeNameValue[],\n attributeList: string\n) {\n if (attributes || attributeList) {\n const addedKeys = [];\n if (config.resource == null) {\n config.resource = {};\n }\n if (getStringFromConfigFile(attributeList)) {\n config.resource.attributes_list = getStringFromConfigFile(attributeList);\n }\n\n const list = getStringListFromConfigFile(attributeList);\n if ((list && list.length > 0) || (attributes && attributes.length > 0)) {\n config.resource.attributes = [];\n\n if (attributes) {\n for (let i = 0; i < attributes.length; i++) {\n const att = attributes[i];\n let value = att['value'];\n switch (att['type']) {\n case 'bool':\n value = getBooleanFromConfigFile(value);\n break;\n case 'bool_array':\n value = getBooleanListFromConfigFile(value);\n break;\n case 'int':\n case 'double':\n value = getNumberFromConfigFile(value);\n break;\n case 'int_array':\n case 'double_array':\n value = getNumberListFromConfigFile(value);\n break;\n case 'string_array':\n value = getStringListFromConfigFile(value);\n break;\n default:\n value = getStringFromConfigFile(value);\n break;\n }\n\n const key = getStringFromConfigFile(att['name']) ?? '';\n config.resource.attributes.push({\n name: key,\n value: value,\n type: att['type'] ?? 'string',\n });\n addedKeys.push(key);\n }\n }\n\n if (list) {\n for (let i = 0; i < list.length; i++) {\n const element = list[i].split('=');\n if (!addedKeys.includes(element[0])) {\n config.resource.attributes.push({\n name: element[0],\n value: element[1],\n type: 'string',\n });\n }\n }\n }\n }\n }\n}\n\nexport function setAttributeLimits(\n config: ConfigurationModel,\n attrLimits: AttributeLimits\n) {\n if (attrLimits) {\n if (config.attribute_limits == null) {\n config.attribute_limits = {\n attribute_count_limit: 128,\n };\n }\n const lengthLimit = getNumberFromConfigFile(\n attrLimits['attribute_value_length_limit']\n );\n if (lengthLimit) {\n config.attribute_limits.attribute_value_length_limit = lengthLimit;\n }\n const countLimit = getNumberFromConfigFile(\n attrLimits['attribute_count_limit']\n );\n if (countLimit) {\n config.attribute_limits.attribute_count_limit = countLimit;\n }\n }\n}\n\nexport function setPropagator(\n config: ConfigurationModel,\n propagator: Propagator\n): void {\n if (propagator && (propagator.composite || propagator.composite_list)) {\n const auxList = [];\n const composite = [];\n if (propagator.composite) {\n for (let i = 0; i < propagator.composite.length; i++) {\n const key = Object.keys(propagator.composite[i])[0];\n auxList.push(key);\n composite.push({ [key]: null });\n }\n }\n\n const compositeList = getStringListFromConfigFile(\n propagator['composite_list']\n );\n if (compositeList) {\n for (let i = 0; i < compositeList.length; i++) {\n if (!auxList.includes(compositeList[i])) {\n composite.push({ [compositeList[i]]: null });\n }\n }\n }\n if (composite.length > 0) {\n if (config.propagator == null) {\n config.propagator = {};\n }\n config.propagator.composite = composite;\n }\n\n const compositeListString = getStringFromConfigFile(\n propagator['composite_list']\n );\n if (compositeListString) {\n config.propagator!.composite_list = compositeListString;\n } else if (auxList.length > 0) {\n // Generate composite_list from the composite entries\n config.propagator!.composite_list = auxList.join(',');\n }\n }\n}\n\nfunction getConfigHeaders(\n h?: NameStringValuePair[]\n): NameStringValuePair[] | null {\n if (h) {\n const headers: NameStringValuePair[] = [];\n for (let i = 0; i < h.length; i++) {\n const element = h[i];\n headers.push({\n name: element['name'],\n value: element['value'],\n });\n }\n if (headers.length > 0) {\n return headers;\n }\n }\n return null;\n}\n\nenum ProviderType {\n TRACER = 0,\n METER = 1,\n LOGGER = 2,\n}\n\nfunction parseConfigSpanOrLogRecordExporter(\n exporter: SpanExporter | LogRecordExporter,\n providerType: ProviderType\n): SpanExporter | LogRecordExporter {\n const exporterType = Object.keys(exporter)[0];\n let parsedExporter: SpanExporter | LogRecordExporter = {};\n let e;\n let certFile;\n let clientCertFile;\n let clientKeyFile;\n let compression;\n let headers;\n let headersList;\n let insecure;\n let endpoint;\n\n switch (providerType) {\n case ProviderType.TRACER:\n endpoint = 'http://localhost:4318/v1/traces';\n parsedExporter = parsedExporter as SpanExporter;\n break;\n case ProviderType.LOGGER:\n endpoint = 'http://localhost:4318/v1/logs';\n parsedExporter = parsedExporter as LogRecordExporter;\n break;\n }\n\n switch (exporterType) {\n case 'otlp_http':\n e = exporter['otlp_http'];\n if (e) {\n parsedExporter = {\n otlp_http: {\n endpoint: getStringFromConfigFile(e['endpoint']) ?? endpoint,\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n encoding:\n getStringFromConfigFile(e['encoding']) === 'json'\n ? OtlpHttpEncoding.JSON\n : OtlpHttpEncoding.Protobuf,\n },\n };\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n\n const tls = getHttpTlsConfig(certFile, clientKeyFile, clientCertFile);\n if (tls) {\n parsedExporter.otlp_http!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_grpc':\n e = exporter['otlp_grpc'];\n if (e) {\n parsedExporter = {\n otlp_grpc: {\n endpoint:\n getStringFromConfigFile(e['endpoint']) ?? 'http://localhost:4317',\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n },\n };\n\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n insecure = getBooleanFromConfigFile(e['tls']['insecure']);\n\n const tls = getGrpcTlsConfig(\n certFile,\n clientKeyFile,\n clientCertFile,\n insecure\n );\n if (tls) {\n parsedExporter.otlp_grpc!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_file/development':\n e = exporter['otlp_file/development'];\n if (e) {\n parsedExporter = {\n 'otlp_file/development': {\n output_stream:\n getStringFromConfigFile(e['output_stream']) ?? 'stdout',\n },\n };\n }\n break;\n\n case 'console':\n parsedExporter = {\n console: {},\n };\n break;\n }\n\n return parsedExporter;\n}\n\nexport function setTracerProvider(\n config: ConfigurationModel,\n tracerProvider: TracerProvider\n): void {\n if (tracerProvider && tracerProvider.processors?.length > 0) {\n config.tracer_provider = initializeDefaultTracerProviderConfiguration();\n // Limits\n if (tracerProvider['limits']) {\n const attributeValueLengthLimit = getNumberFromConfigFile(\n tracerProvider['limits']['attribute_value_length_limit']\n );\n\n if (attributeValueLengthLimit) {\n config.tracer_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n const attributeCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['attribute_count_limit']\n );\n if (attributeCountLimit) {\n config.tracer_provider.limits!.attribute_count_limit =\n attributeCountLimit;\n }\n\n const eventCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['event_count_limit']\n );\n if (eventCountLimit) {\n config.tracer_provider.limits!.event_count_limit = eventCountLimit;\n }\n\n const linkCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['link_count_limit']\n );\n if (linkCountLimit) {\n config.tracer_provider.limits!.link_count_limit = linkCountLimit;\n }\n\n const eventAttributeCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['event_attribute_count_limit']\n );\n if (eventAttributeCountLimit) {\n config.tracer_provider.limits!.event_attribute_count_limit =\n eventAttributeCountLimit;\n }\n\n const linkAttributeCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['link_attribute_count_limit']\n );\n if (linkAttributeCountLimit) {\n config.tracer_provider.limits!.link_attribute_count_limit =\n linkAttributeCountLimit;\n }\n }\n\n // Processors\n for (let i = 0; i < tracerProvider['processors'].length; i++) {\n const processorType = Object.keys(tracerProvider['processors'][i])[0];\n if (processorType === 'batch') {\n const element = tracerProvider['processors'][i]['batch'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.TRACER\n );\n const batchConfig: SpanProcessor = {\n batch: {\n schedule_delay:\n getNumberFromConfigFile(element['schedule_delay']) ?? 5000,\n export_timeout:\n getNumberFromConfigFile(element['export_timeout']) ?? 30000,\n max_queue_size:\n getNumberFromConfigFile(element['max_queue_size']) ?? 2048,\n max_export_batch_size:\n getNumberFromConfigFile(element['max_export_batch_size']) ??\n 512,\n exporter: parsedExporter as SpanExporter,\n },\n };\n\n config.tracer_provider.processors.push(batchConfig);\n }\n } else if (processorType === 'simple') {\n const element = tracerProvider['processors'][i]['simple'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.TRACER\n );\n const simpleConfig: SpanProcessor = {\n simple: {\n exporter: parsedExporter as SpanExporter,\n },\n };\n\n config.tracer_provider.processors.push(simpleConfig);\n }\n }\n }\n } else if (\n tracerProvider &&\n (tracerProvider.processors == null ||\n tracerProvider.processors.length === 0)\n ) {\n diag.warn('TracerProvider must have at least one processor configured');\n }\n}\n\nfunction getCardinalityLimits(limits?: CardinalityLimits): CardinalityLimits {\n if (limits == null) {\n limits = {};\n }\n const defaultLimit = getNumberFromConfigFile(limits['default']) ?? 2000;\n\n return {\n default: defaultLimit,\n counter: getNumberFromConfigFile(limits['counter']) ?? defaultLimit,\n gauge: getNumberFromConfigFile(limits['gauge']) ?? defaultLimit,\n histogram: getNumberFromConfigFile(limits['histogram']) ?? defaultLimit,\n observable_counter:\n getNumberFromConfigFile(limits['observable_counter']) ?? defaultLimit,\n observable_gauge:\n getNumberFromConfigFile(limits['observable_gauge']) ?? defaultLimit,\n observable_up_down_counter:\n getNumberFromConfigFile(limits['observable_up_down_counter']) ??\n defaultLimit,\n up_down_counter:\n getNumberFromConfigFile(limits['up_down_counter']) ?? defaultLimit,\n };\n}\n\nfunction getProducers(producers?: MetricProducer[]): MetricProducer[] {\n const parsedProducers: MetricProducer[] = [];\n if (producers) {\n for (let j = 0; j < producers.length; j++) {\n const producer = producers[j];\n if (Object.keys(producer)[0] === 'opencensus') {\n parsedProducers.push({ opencensus: {} });\n }\n }\n }\n\n return parsedProducers;\n}\n\nexport function getTemporalityPreference(\n temporalityPreference?: ExporterTemporalityPreference\n): ExporterTemporalityPreference {\n const temporalityPreferenceType = getStringFromConfigFile(\n temporalityPreference\n );\n switch (temporalityPreferenceType) {\n case 'cumulative':\n return ExporterTemporalityPreference.Cumulative;\n case 'delta':\n return ExporterTemporalityPreference.Delta;\n case 'low_memory':\n return ExporterTemporalityPreference.LowMemory;\n default:\n return ExporterTemporalityPreference.Cumulative;\n }\n}\n\nfunction getDefaultHistogramAggregation(\n defaultHistogramAggregation?: ExporterDefaultHistogramAggregation\n): ExporterDefaultHistogramAggregation {\n const defaultHistogramAggregationType = getStringFromConfigFile(\n defaultHistogramAggregation\n );\n switch (defaultHistogramAggregationType) {\n case 'explicit_bucket_histogram':\n return ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n case 'base2_exponential_bucket_histogram':\n return ExporterDefaultHistogramAggregation.Base2ExponentialBucketHistogram;\n default:\n return ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n }\n}\n\nfunction parseMetricExporter(exporter: PushMetricExporter): PushMetricExporter {\n const exporterType = Object.keys(exporter)[0];\n let parsedExporter: PushMetricExporter = {};\n let e;\n let certFile;\n let clientCertFile;\n let clientKeyFile;\n let compression;\n let headers;\n let headersList;\n let insecure;\n\n switch (exporterType) {\n case 'otlp_http':\n e = exporter['otlp_http'];\n if (e) {\n parsedExporter = {\n otlp_http: {\n endpoint:\n getStringFromConfigFile(e['endpoint']) ??\n 'http://localhost:4318/v1/metrics',\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n encoding:\n getStringFromConfigFile(e['encoding']) === 'json'\n ? OtlpHttpEncoding.JSON\n : OtlpHttpEncoding.Protobuf,\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n\n const tls = getHttpTlsConfig(certFile, clientKeyFile, clientCertFile);\n if (tls) {\n parsedExporter.otlp_http!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_grpc':\n e = exporter['otlp_grpc'];\n if (e) {\n parsedExporter = {\n otlp_grpc: {\n endpoint:\n getStringFromConfigFile(e['endpoint']) ?? 'http://localhost:4317',\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n insecure = getBooleanFromConfigFile(e['tls']['insecure']);\n\n const tls = getGrpcTlsConfig(\n certFile,\n clientKeyFile,\n clientCertFile,\n insecure\n );\n if (tls) {\n parsedExporter.otlp_grpc!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_file/development':\n e = exporter['otlp_file/development'];\n if (e) {\n parsedExporter = {\n 'otlp_file/development': {\n output_stream:\n getStringFromConfigFile(e['output_stream']) ?? 'stdout',\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n }\n break;\n\n case 'console':\n e = exporter['console'];\n if (e) {\n parsedExporter = {\n console: {\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n }\n break;\n }\n\n return parsedExporter;\n}\n\nexport function setMeterProvider(\n config: ConfigurationModel,\n meterProvider: MeterProvider\n): void {\n if (meterProvider && meterProvider.readers?.length > 0) {\n config.meter_provider = initializeDefaultMeterProviderConfiguration();\n const exemplarFilter = getStringFromConfigFile(\n meterProvider['exemplar_filter']\n );\n if (exemplarFilter) {\n switch (exemplarFilter) {\n case 'trace_based':\n config.meter_provider.exemplar_filter = ExemplarFilter.TraceBased;\n break;\n case 'always_on':\n config.meter_provider.exemplar_filter = ExemplarFilter.AlwaysOn;\n break;\n case 'always_off':\n config.meter_provider.exemplar_filter = ExemplarFilter.AlwaysOff;\n break;\n default:\n config.meter_provider.exemplar_filter = ExemplarFilter.TraceBased;\n break;\n }\n }\n\n for (let i = 0; i < meterProvider.readers.length; i++) {\n const readerType = Object.keys(meterProvider['readers'][i])[0];\n if (readerType === 'pull') {\n const element = meterProvider['readers'][i]['pull'];\n if (element) {\n const exporter: PullMetricExporter = {\n 'prometheus/development': {\n host:\n getStringFromConfigFile(\n element['exporter']['prometheus/development']['host']\n ) ?? 'localhost',\n port:\n getNumberFromConfigFile(\n element['exporter']['prometheus/development']['port']\n ) ?? 9464,\n without_scope_info:\n getBooleanFromConfigFile(\n element['exporter']['prometheus/development'][\n 'without_scope_info'\n ]\n ) ?? false,\n without_target_info:\n getBooleanFromConfigFile(\n element['exporter']['prometheus/development'][\n 'without_target_info'\n ]\n ) ?? false,\n },\n };\n if (\n element['exporter']['prometheus/development'][\n 'with_resource_constant_labels'\n ]\n ) {\n exporter['prometheus/development']!.with_resource_constant_labels =\n {\n included:\n getStringListFromConfigFile(\n element['exporter']['prometheus/development'][\n 'with_resource_constant_labels'\n ]?.['included']\n ) ?? [],\n excluded:\n getStringListFromConfigFile(\n element['exporter']['prometheus/development'][\n 'with_resource_constant_labels'\n ]?.['excluded']\n ) ?? [],\n };\n }\n\n if (\n element['exporter']['prometheus/development'][\n 'translation_strategy'\n ]\n ) {\n const ts = getStringFromConfigFile(\n element['exporter']['prometheus/development'][\n 'translation_strategy'\n ]\n );\n switch (ts) {\n case 'underscore_escaping_with_suffixes':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.UnderscoreEscapingWithSuffixes;\n break;\n case 'underscore_escaping_without_suffixes':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.UnderscoreEscapingWithoutSuffixes;\n break;\n case 'no_utf8_escaping_with_suffixes':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.NoUtf8EscapingWithSuffixes;\n break;\n case 'no_translation':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.NoTranslation;\n break;\n }\n }\n const pullReader: MetricReader = {\n pull: {\n exporter: exporter,\n cardinality_limits: getCardinalityLimits(\n element['cardinality_limits']\n ),\n },\n };\n const p = getProducers(element['producers']);\n if (p.length > 0 && pullReader.pull) {\n pullReader.pull.producers = p;\n }\n config.meter_provider.readers.push(pullReader);\n }\n } else if (readerType === 'periodic') {\n const element = meterProvider['readers'][i]['periodic'];\n if (element) {\n const parsedExporter = parseMetricExporter(element['exporter']);\n\n const periodicReader: MetricReader = {\n periodic: {\n exporter: parsedExporter,\n cardinality_limits: getCardinalityLimits(\n element['cardinality_limits']\n ),\n interval: getNumberFromConfigFile(element['interval']) ?? 60000,\n timeout: getNumberFromConfigFile(element['timeout']) ?? 30000,\n },\n };\n const p = getProducers(element['producers']);\n if (p.length > 0 && periodicReader.periodic) {\n periodicReader.periodic.producers = p;\n }\n config.meter_provider.readers.push(periodicReader);\n }\n }\n }\n\n if (meterProvider['views'] && meterProvider['views'].length > 0) {\n config.meter_provider.views = [];\n for (let j = 0; j < meterProvider['views'].length; j++) {\n const element = meterProvider['views'][j];\n const view: View = {};\n if (element['selector']) {\n const selector: ViewSelector = {};\n const instrumentName = getStringFromConfigFile(\n element['selector']['instrument_name']\n );\n if (instrumentName) {\n selector.instrument_name = instrumentName;\n }\n\n const unit = getStringFromConfigFile(element['selector']['unit']);\n if (unit) {\n selector.unit = unit;\n }\n\n const meterName = getStringFromConfigFile(\n element['selector']['meter_name']\n );\n if (meterName) {\n selector.meter_name = meterName;\n }\n\n const meterVersion = getStringFromConfigFile(\n element['selector']['meter_version']\n );\n if (meterVersion) {\n selector.meter_version = meterVersion;\n }\n\n const meterSchemaUrl = getStringFromConfigFile(\n element['selector']['meter_schema_url']\n );\n if (meterSchemaUrl) {\n selector.meter_schema_url = meterSchemaUrl;\n }\n\n const instrumentType = getStringFromConfigFile(\n element['selector']['instrument_type']\n );\n if (instrumentType) {\n switch (instrumentType) {\n case 'counter':\n selector.instrument_type = InstrumentType.Counter;\n break;\n case 'gauge':\n selector.instrument_type = InstrumentType.Gauge;\n break;\n case 'histogram':\n selector.instrument_type = InstrumentType.Histogram;\n break;\n case 'observable_counter':\n selector.instrument_type = InstrumentType.ObservableCounter;\n break;\n case 'observable_gauge':\n selector.instrument_type = InstrumentType.ObservableGauge;\n break;\n case 'observable_up_down_counter':\n selector.instrument_type =\n InstrumentType.ObservableUpDownCounter;\n break;\n case 'up_down_counter':\n selector.instrument_type = InstrumentType.UpDownCounter;\n break;\n }\n }\n\n if (Object.keys(selector).length > 0) {\n view.selector = selector;\n }\n }\n if (element['stream']) {\n const stream: ViewStream = {};\n const name = getStringFromConfigFile(element['stream']['name']);\n if (name) {\n stream.name = name;\n }\n\n const description = getStringFromConfigFile(\n element['stream']['description']\n );\n if (description) {\n stream.description = description;\n }\n\n const aggregationCardinalityLimit = getNumberFromConfigFile(\n element['stream']['aggregation_cardinality_limit']\n );\n if (aggregationCardinalityLimit) {\n stream.aggregation_cardinality_limit = aggregationCardinalityLimit;\n }\n\n if (element['stream']['attribute_keys']) {\n stream.attribute_keys = {\n included:\n getStringListFromConfigFile(\n element['stream']['attribute_keys']['included']\n ) ?? [],\n excluded:\n getStringListFromConfigFile(\n element['stream']['attribute_keys']['excluded']\n ) ?? [],\n };\n }\n const rawAgg = element['stream']['aggregation'];\n if (rawAgg) {\n const aggregation: Aggregation = {};\n if (rawAgg['default']) {\n aggregation.default = {};\n }\n if (rawAgg['drop']) {\n aggregation.drop = {};\n }\n if (rawAgg['last_value']) {\n aggregation.last_value = {};\n }\n if (rawAgg['sum']) {\n aggregation.sum = {};\n }\n if (rawAgg['explicit_bucket_histogram']) {\n aggregation.explicit_bucket_histogram = {\n boundaries: getNumberListFromConfigFile(\n rawAgg['explicit_bucket_histogram']['boundaries']\n ) ?? [\n 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000,\n 7500, 10000,\n ],\n record_min_max:\n getBooleanFromConfigFile(\n rawAgg['explicit_bucket_histogram']['record_min_max']\n ) === false\n ? false\n : true,\n };\n }\n if (rawAgg['base2_exponential_bucket_histogram']) {\n aggregation.base2_exponential_bucket_histogram = {\n record_min_max:\n getBooleanFromConfigFile(\n rawAgg['base2_exponential_bucket_histogram'][\n 'record_min_max'\n ]\n ) === false\n ? false\n : true,\n };\n const maxScale = getNumberFromConfigFile(\n rawAgg['base2_exponential_bucket_histogram']['max_scale']\n );\n if (maxScale) {\n aggregation.base2_exponential_bucket_histogram.max_scale =\n maxScale;\n }\n\n const maxSize = getNumberFromConfigFile(\n rawAgg['base2_exponential_bucket_histogram']['max_size']\n );\n if (maxSize) {\n aggregation.base2_exponential_bucket_histogram.max_size =\n maxSize;\n }\n }\n stream.aggregation = aggregation;\n }\n if (Object.keys(stream).length > 0) {\n view.stream = stream;\n }\n }\n config.meter_provider.views.push(view);\n }\n }\n } else if (\n meterProvider &&\n (meterProvider.readers == null || meterProvider.readers.length === 0)\n ) {\n diag.warn('MeterProvider must have at least one reader configured');\n }\n}\n\nexport function getSeverity(\n severity?: SeverityNumber\n): SeverityNumber | undefined {\n const severityType = getStringFromConfigFile(severity);\n switch (severityType) {\n case 'debug':\n return SeverityNumber.DEBUG;\n case 'debug2':\n return SeverityNumber.DEBUG2;\n case 'debug3':\n return SeverityNumber.DEBUG3;\n case 'debug4':\n return SeverityNumber.DEBUG4;\n case 'info':\n return SeverityNumber.INFO;\n case 'info2':\n return SeverityNumber.INFO2;\n case 'info3':\n return SeverityNumber.INFO3;\n case 'info4':\n return SeverityNumber.INFO4;\n case 'warn':\n return SeverityNumber.WARN;\n case 'warn2':\n return SeverityNumber.WARN2;\n case 'warn3':\n return SeverityNumber.WARN3;\n case 'warn4':\n return SeverityNumber.WARN4;\n case 'error':\n return SeverityNumber.ERROR;\n case 'error2':\n return SeverityNumber.ERROR2;\n case 'error3':\n return SeverityNumber.ERROR3;\n case 'error4':\n return SeverityNumber.ERROR4;\n case 'fatal':\n return SeverityNumber.FATAL;\n case 'fatal2':\n return SeverityNumber.FATAL2;\n case 'fatal3':\n return SeverityNumber.FATAL3;\n case 'fatal4':\n return SeverityNumber.FATAL4;\n case 'trace':\n return SeverityNumber.TRACE;\n case 'trace2':\n return SeverityNumber.TRACE2;\n case 'trace3':\n return SeverityNumber.TRACE3;\n case 'trace4':\n return SeverityNumber.TRACE4;\n default:\n return undefined;\n }\n}\n\nexport function setLoggerProvider(\n config: ConfigurationModel,\n loggerProvider: LoggerProvider\n): void {\n if (loggerProvider && loggerProvider.processors?.length > 0) {\n config.logger_provider = initializeDefaultLoggerProviderConfiguration();\n // Limits\n if (loggerProvider['limits']) {\n const attributeValueLengthLimit = getNumberFromConfigFile(\n loggerProvider['limits']['attribute_value_length_limit']\n );\n const attributeCountLimit = getNumberFromConfigFile(\n loggerProvider['limits']['attribute_count_limit']\n );\n if (attributeValueLengthLimit || attributeCountLimit) {\n if (attributeValueLengthLimit) {\n config.logger_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n if (attributeCountLimit) {\n config.logger_provider.limits!.attribute_count_limit =\n attributeCountLimit;\n }\n }\n }\n\n // Processors\n for (let i = 0; i < loggerProvider['processors'].length; i++) {\n const processorType = Object.keys(loggerProvider['processors'][i])[0];\n if (processorType === 'batch') {\n const element = loggerProvider['processors'][i]['batch'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.LOGGER\n );\n const batchConfig: LogRecordProcessor = {\n batch: {\n schedule_delay:\n getNumberFromConfigFile(element['schedule_delay']) ?? 1000,\n export_timeout:\n getNumberFromConfigFile(element['export_timeout']) ?? 30000,\n max_queue_size:\n getNumberFromConfigFile(element['max_queue_size']) ?? 2048,\n max_export_batch_size:\n getNumberFromConfigFile(element['max_export_batch_size']) ??\n 512,\n exporter: parsedExporter as LogRecordExporter,\n },\n };\n\n config.logger_provider.processors.push(batchConfig);\n }\n } else if (processorType === 'simple') {\n const element = loggerProvider['processors'][i]['simple'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.LOGGER\n );\n const simpleConfig: LogRecordProcessor = {\n simple: {\n exporter: parsedExporter,\n },\n };\n\n config.logger_provider.processors.push(simpleConfig);\n }\n }\n }\n\n // logger_configurator/development\n if (loggerProvider['logger_configurator/development']) {\n const defaultConfigDisabled = getBooleanFromConfigFile(\n loggerProvider['logger_configurator/development']['default_config']?.[\n 'enabled'\n ]\n );\n if (defaultConfigDisabled || defaultConfigDisabled === false) {\n config.logger_provider['logger_configurator/development'] = {\n default_config: {\n enabled: defaultConfigDisabled,\n },\n };\n }\n\n if (\n loggerProvider['logger_configurator/development'].loggers &&\n loggerProvider['logger_configurator/development'].loggers.length > 0\n ) {\n const loggers = [];\n for (\n let i = 0;\n i < loggerProvider['logger_configurator/development'].loggers.length;\n i++\n ) {\n const logger =\n loggerProvider['logger_configurator/development'].loggers[i];\n let enabled = false;\n let traceBased;\n let minSeverity;\n if (logger['config']) {\n enabled =\n getBooleanFromConfigFile(logger['config']['enabled']) ?? false;\n traceBased = getBooleanFromConfigFile(\n logger['config']['trace_based']\n );\n if (logger['config']['minimum_severity']) {\n minSeverity = getSeverity(logger['config']['minimum_severity']);\n }\n }\n const name = getStringFromConfigFile(logger['name']);\n if (name) {\n const loggerNew: ExperimentalLoggerMatcherAndConfig = {\n name: name,\n config: {\n enabled: enabled,\n },\n };\n if (traceBased !== undefined) {\n loggerNew.config!.trace_based = traceBased;\n }\n if (minSeverity !== undefined) {\n loggerNew.config!.minimum_severity = minSeverity;\n }\n\n loggers.push(loggerNew);\n }\n }\n if (config.logger_provider['logger_configurator/development'] == null) {\n config.logger_provider['logger_configurator/development'] = {};\n }\n config.logger_provider['logger_configurator/development'].loggers =\n loggers;\n }\n }\n } else if (\n loggerProvider &&\n (loggerProvider.processors == null ||\n loggerProvider.processors.length === 0)\n ) {\n diag.warn('LoggerProvider must have at least one processor configured');\n }\n}\n"]}
1
+ {"version":3,"file":"FileConfigFactory.js","sourceRoot":"","sources":["../../src/FileConfigFactory.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diagLogLevelFromString, getStringFromEnv } from '@opentelemetry/core';\nimport type {\n AttributeLimits,\n Propagator,\n ConfigurationModel,\n} from './models/configModel';\nimport { initializeDefaultConfiguration } from './models/configModel';\nimport type { ConfigFactory } from './IConfigFactory';\nimport * as fs from 'fs';\nimport * as yaml from 'yaml';\nimport {\n getBooleanFromConfigFile,\n getBooleanListFromConfigFile,\n getGrpcTlsConfig,\n getHttpTlsConfig,\n getNumberFromConfigFile,\n getNumberListFromConfigFile,\n getStringFromConfigFile,\n getStringListFromConfigFile,\n} from './utils';\nimport type { NameStringValuePair } from './models/commonModel';\nimport { OtlpHttpEncoding, SeverityNumber } from './models/commonModel';\nimport type {\n ExperimentalComposableSampler,\n Sampler,\n SpanExporter,\n SpanProcessor,\n TracerProvider,\n} from './models/tracerProviderModel';\nimport { initializeDefaultTracerProviderConfiguration } from './models/tracerProviderModel';\nimport type {\n ExperimentalLoggerMatcherAndConfig,\n LoggerProvider,\n LogRecordExporter,\n LogRecordProcessor,\n} from './models/loggerProviderModel';\nimport { initializeDefaultLoggerProviderConfiguration } from './models/loggerProviderModel';\nimport type {\n AttributeNameValue,\n ExperimentalResourceDetection,\n ExperimentalResourceDetector,\n} from './models/resourceModel';\nimport type {\n Aggregation,\n CardinalityLimits,\n MeterProvider,\n MetricProducer,\n MetricReader,\n PullMetricExporter,\n PushMetricExporter,\n View,\n ViewSelector,\n ViewStream,\n} from './models/meterProviderModel';\nimport {\n ExemplarFilter,\n ExperimentalPrometheusTranslationStrategy,\n ExporterDefaultHistogramAggregation,\n ExporterTemporalityPreference,\n initializeDefaultMeterProviderConfiguration,\n InstrumentType,\n} from './models/meterProviderModel';\nimport { diag } from '@opentelemetry/api';\n\nexport class FileConfigFactory implements ConfigFactory {\n private _config: ConfigurationModel;\n\n constructor() {\n this._config = initializeDefaultConfiguration();\n parseConfigFile(this._config);\n }\n\n getConfigModel(): ConfigurationModel {\n return this._config;\n }\n}\n\nexport function hasValidConfigFile(): boolean {\n const configFile = getStringFromEnv('OTEL_CONFIG_FILE');\n if (configFile) {\n if (\n !(configFile.endsWith('.yaml') || configFile.endsWith('.yml')) ||\n !fs.existsSync(configFile)\n ) {\n diag.warn(\n `Config file ${configFile} set on OTEL_CONFIG_FILE is not valid`\n );\n return false;\n }\n return true;\n }\n return false;\n}\n\nexport function parseConfigFile(config: ConfigurationModel) {\n const supportedFileVersions = ['1.0-rc.3'];\n const configFile = getStringFromEnv('OTEL_CONFIG_FILE') || '';\n const file = fs.readFileSync(configFile, 'utf8');\n const parsedContent = yaml.parse(file);\n\n if (\n parsedContent['file_format'] &&\n supportedFileVersions.includes(parsedContent['file_format'])\n ) {\n const disabled = getBooleanFromConfigFile(parsedContent['disabled']);\n if (disabled !== undefined) {\n config.disabled = disabled;\n }\n\n const logLevel = getNumberFromConfigFile(\n diagLogLevelFromString(parsedContent['log_level'])\n );\n if (logLevel) {\n config.log_level = logLevel;\n }\n\n if (parsedContent['resource']) {\n if (config.resource == null) {\n config.resource = {};\n }\n const schemaUrl = getStringFromConfigFile(\n parsedContent['resource']?.['schema_url']\n );\n if (schemaUrl) {\n config.resource.schema_url = schemaUrl;\n }\n }\n\n setResourceAttributes(\n config,\n parsedContent['resource']?.['attributes'],\n parsedContent['resource']?.['attributes_list']\n );\n\n const detectionConfig =\n parsedContent['resource']?.['detection/development'];\n if (detectionConfig) {\n config.resource!['detection/development'] =\n parseDetectionDevelopment(detectionConfig);\n }\n setAttributeLimits(config, parsedContent['attribute_limits']);\n setPropagator(config, parsedContent['propagator']);\n setTracerProvider(config, parsedContent['tracer_provider']);\n setMeterProvider(config, parsedContent['meter_provider']);\n setLoggerProvider(config, parsedContent['logger_provider']);\n } else {\n diag.warn(\n `Unsupported File Format: ${parsedContent['file_format']}. It must be one of the following: ${supportedFileVersions}`\n );\n }\n}\n\nexport function setResourceAttributes(\n config: ConfigurationModel,\n attributes: AttributeNameValue[],\n attributeList: string\n) {\n if (attributes || attributeList) {\n const addedKeys = [];\n if (config.resource == null) {\n config.resource = {};\n }\n if (getStringFromConfigFile(attributeList)) {\n config.resource.attributes_list = getStringFromConfigFile(attributeList);\n }\n\n const list = getStringListFromConfigFile(attributeList);\n if ((list && list.length > 0) || (attributes && attributes.length > 0)) {\n config.resource.attributes = [];\n\n if (attributes) {\n for (let i = 0; i < attributes.length; i++) {\n const att = attributes[i];\n let value = att['value'];\n switch (att['type']) {\n case 'bool':\n value = getBooleanFromConfigFile(value);\n break;\n case 'bool_array':\n value = getBooleanListFromConfigFile(value);\n break;\n case 'int':\n case 'double':\n value = getNumberFromConfigFile(value);\n break;\n case 'int_array':\n case 'double_array':\n value = getNumberListFromConfigFile(value);\n break;\n case 'string_array':\n value = getStringListFromConfigFile(value);\n break;\n default:\n value = getStringFromConfigFile(value);\n break;\n }\n\n const key = getStringFromConfigFile(att['name']) ?? '';\n config.resource.attributes.push({\n name: key,\n value: value,\n type: att['type'] ?? 'string',\n });\n addedKeys.push(key);\n }\n }\n\n if (list) {\n for (let i = 0; i < list.length; i++) {\n const element = list[i].split('=');\n if (!addedKeys.includes(element[0])) {\n config.resource.attributes.push({\n name: element[0],\n value: element[1],\n type: 'string',\n });\n }\n }\n }\n }\n }\n}\n\nfunction parseDetectionDevelopment(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n detection: any\n): ExperimentalResourceDetection {\n const result: ExperimentalResourceDetection = {};\n\n if (detection['attributes']) {\n result.attributes = {};\n const included = detection['attributes']['included'];\n if (Array.isArray(included)) {\n result.attributes.included = included.filter(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (v: any) => typeof v === 'string'\n );\n }\n const excluded = detection['attributes']['excluded'];\n if (Array.isArray(excluded)) {\n result.attributes.excluded = excluded.filter(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (v: any) => typeof v === 'string'\n );\n }\n }\n\n if (Array.isArray(detection['detectors'])) {\n result.detectors = [];\n for (let i = 0; i < detection['detectors'].length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const d: any = detection['detectors'][i];\n if (typeof d !== 'object' || d === null) {\n continue;\n }\n const detector: ExperimentalResourceDetector = {};\n if ('container' in d) detector.container = d.container ?? {};\n if ('env' in d) detector.env = d.env ?? {};\n if ('host' in d) detector.host = d.host ?? {};\n if ('os' in d) detector.os = d.os ?? {};\n if ('process' in d) detector.process = d.process ?? {};\n if ('service' in d) detector.service = d.service ?? {};\n result.detectors.push(detector);\n }\n }\n\n return result;\n}\n\nexport function setAttributeLimits(\n config: ConfigurationModel,\n attrLimits: AttributeLimits\n) {\n if (attrLimits) {\n if (config.attribute_limits == null) {\n config.attribute_limits = {\n attribute_count_limit: 128,\n };\n }\n const lengthLimit = getNumberFromConfigFile(\n attrLimits['attribute_value_length_limit']\n );\n if (lengthLimit) {\n config.attribute_limits.attribute_value_length_limit = lengthLimit;\n }\n const countLimit = getNumberFromConfigFile(\n attrLimits['attribute_count_limit']\n );\n if (countLimit) {\n config.attribute_limits.attribute_count_limit = countLimit;\n }\n }\n}\n\nexport function setPropagator(\n config: ConfigurationModel,\n propagator: Propagator\n): void {\n if (propagator && (propagator.composite || propagator.composite_list)) {\n const auxList = [];\n const composite = [];\n if (propagator.composite) {\n for (let i = 0; i < propagator.composite.length; i++) {\n const key = Object.keys(propagator.composite[i])[0];\n auxList.push(key);\n composite.push({ [key]: null });\n }\n }\n\n const compositeList = getStringListFromConfigFile(\n propagator['composite_list']\n );\n if (compositeList) {\n for (let i = 0; i < compositeList.length; i++) {\n if (!auxList.includes(compositeList[i])) {\n composite.push({ [compositeList[i]]: null });\n }\n }\n }\n if (composite.length > 0) {\n if (config.propagator == null) {\n config.propagator = {};\n }\n config.propagator.composite = composite;\n }\n\n const compositeListString = getStringFromConfigFile(\n propagator['composite_list']\n );\n if (compositeListString) {\n config.propagator!.composite_list = compositeListString;\n } else if (auxList.length > 0) {\n // Generate composite_list from the composite entries\n config.propagator!.composite_list = auxList.join(',');\n }\n }\n}\n\nfunction parseComposableSampler(\n sampler: ExperimentalComposableSampler\n): ExperimentalComposableSampler {\n const samplerType = Object.keys(sampler)[0];\n let parsedSampler: ExperimentalComposableSampler = {};\n\n switch (samplerType) {\n case 'always_on':\n parsedSampler = { always_on: sampler['always_on'] ?? undefined };\n break;\n\n case 'always_off':\n parsedSampler = { always_off: sampler['always_off'] ?? undefined };\n break;\n\n case 'parent_threshold': {\n const s = sampler['parent_threshold'];\n if (s?.root) {\n parsedSampler = {\n parent_threshold: { root: parseComposableSampler(s.root) },\n };\n }\n break;\n }\n\n case 'probability': {\n const s = sampler['probability'];\n parsedSampler = {\n probability: {\n ratio: getNumberFromConfigFile(s?.ratio) ?? 1.0,\n },\n };\n break;\n }\n\n case 'rule_based': {\n const rb = sampler['rule_based'];\n if (rb) {\n parsedSampler = { rule_based: {} };\n if (rb.rules) {\n parsedSampler.rule_based!.rules = rb.rules.map(rule => ({\n ...rule,\n sampler: rule.sampler ? parseComposableSampler(rule.sampler) : {},\n }));\n }\n }\n break;\n }\n }\n\n return parsedSampler;\n}\n\nfunction parseSampler(sampler: Sampler): Sampler {\n const samplerType = Object.keys(sampler)[0];\n let parsedSampler: Sampler = {};\n\n switch (samplerType) {\n case 'always_on':\n parsedSampler = { always_on: sampler['always_on'] ?? undefined };\n break;\n\n case 'always_off':\n parsedSampler = { always_off: sampler['always_off'] ?? undefined };\n break;\n\n case 'trace_id_ratio_based': {\n const s = sampler['trace_id_ratio_based'];\n parsedSampler = {\n trace_id_ratio_based: {\n ratio: getNumberFromConfigFile(s?.ratio) ?? 1.0,\n },\n };\n break;\n }\n\n case 'parent_based': {\n const s = sampler['parent_based'];\n if (s) {\n parsedSampler = { parent_based: {} };\n if (s.root) {\n parsedSampler.parent_based!.root = parseSampler(s.root);\n }\n if (s.remote_parent_sampled) {\n parsedSampler.parent_based!.remote_parent_sampled = parseSampler(\n s.remote_parent_sampled\n );\n }\n if (s.remote_parent_not_sampled) {\n parsedSampler.parent_based!.remote_parent_not_sampled = parseSampler(\n s.remote_parent_not_sampled\n );\n }\n if (s.local_parent_sampled) {\n parsedSampler.parent_based!.local_parent_sampled = parseSampler(\n s.local_parent_sampled\n );\n }\n if (s.local_parent_not_sampled) {\n parsedSampler.parent_based!.local_parent_not_sampled = parseSampler(\n s.local_parent_not_sampled\n );\n }\n }\n break;\n }\n\n case 'probability/development': {\n const s = sampler['probability/development'];\n parsedSampler = {\n 'probability/development': {\n ratio: getNumberFromConfigFile(s?.ratio) ?? 1.0,\n },\n };\n break;\n }\n\n case 'composite/development': {\n const s = sampler['composite/development'];\n if (s) {\n parsedSampler = {\n 'composite/development': parseComposableSampler(s),\n };\n }\n break;\n }\n }\n\n return parsedSampler;\n}\n\nfunction getConfigHeaders(\n h?: NameStringValuePair[]\n): NameStringValuePair[] | null {\n if (h) {\n const headers: NameStringValuePair[] = [];\n for (let i = 0; i < h.length; i++) {\n const element = h[i];\n headers.push({\n name: element['name'],\n value: element['value'],\n });\n }\n if (headers.length > 0) {\n return headers;\n }\n }\n return null;\n}\n\nenum ProviderType {\n TRACER = 0,\n METER = 1,\n LOGGER = 2,\n}\n\nfunction parseConfigSpanOrLogRecordExporter(\n exporter: SpanExporter | LogRecordExporter,\n providerType: ProviderType\n): SpanExporter | LogRecordExporter {\n const exporterType = Object.keys(exporter)[0];\n let parsedExporter: SpanExporter | LogRecordExporter = {};\n let e;\n let certFile;\n let clientCertFile;\n let clientKeyFile;\n let compression;\n let headers;\n let headersList;\n let insecure;\n let endpoint;\n\n switch (providerType) {\n case ProviderType.TRACER:\n endpoint = 'http://localhost:4318/v1/traces';\n parsedExporter = parsedExporter as SpanExporter;\n break;\n case ProviderType.LOGGER:\n endpoint = 'http://localhost:4318/v1/logs';\n parsedExporter = parsedExporter as LogRecordExporter;\n break;\n }\n\n switch (exporterType) {\n case 'otlp_http':\n e = exporter['otlp_http'];\n if (e) {\n parsedExporter = {\n otlp_http: {\n endpoint: getStringFromConfigFile(e['endpoint']) ?? endpoint,\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n encoding:\n getStringFromConfigFile(e['encoding']) === 'json'\n ? OtlpHttpEncoding.JSON\n : OtlpHttpEncoding.Protobuf,\n },\n };\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n\n const tls = getHttpTlsConfig(certFile, clientKeyFile, clientCertFile);\n if (tls) {\n parsedExporter.otlp_http!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_grpc':\n e = exporter['otlp_grpc'];\n if (e) {\n parsedExporter = {\n otlp_grpc: {\n endpoint:\n getStringFromConfigFile(e['endpoint']) ?? 'http://localhost:4317',\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n },\n };\n\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n insecure = getBooleanFromConfigFile(e['tls']['insecure']);\n\n const tls = getGrpcTlsConfig(\n certFile,\n clientKeyFile,\n clientCertFile,\n insecure\n );\n if (tls) {\n parsedExporter.otlp_grpc!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_file/development':\n e = exporter['otlp_file/development'];\n if (e) {\n parsedExporter = {\n 'otlp_file/development': {\n output_stream:\n getStringFromConfigFile(e['output_stream']) ?? 'stdout',\n },\n };\n }\n break;\n\n case 'console':\n parsedExporter = {\n console: {},\n };\n break;\n }\n\n return parsedExporter;\n}\n\nexport function setTracerProvider(\n config: ConfigurationModel,\n tracerProvider: TracerProvider\n): void {\n if (tracerProvider && tracerProvider.processors?.length > 0) {\n config.tracer_provider = initializeDefaultTracerProviderConfiguration();\n // Limits\n if (tracerProvider['limits']) {\n const attributeValueLengthLimit = getNumberFromConfigFile(\n tracerProvider['limits']['attribute_value_length_limit']\n );\n\n if (attributeValueLengthLimit) {\n config.tracer_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n const attributeCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['attribute_count_limit']\n );\n if (attributeCountLimit) {\n config.tracer_provider.limits!.attribute_count_limit =\n attributeCountLimit;\n }\n\n const eventCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['event_count_limit']\n );\n if (eventCountLimit) {\n config.tracer_provider.limits!.event_count_limit = eventCountLimit;\n }\n\n const linkCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['link_count_limit']\n );\n if (linkCountLimit) {\n config.tracer_provider.limits!.link_count_limit = linkCountLimit;\n }\n\n const eventAttributeCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['event_attribute_count_limit']\n );\n if (eventAttributeCountLimit) {\n config.tracer_provider.limits!.event_attribute_count_limit =\n eventAttributeCountLimit;\n }\n\n const linkAttributeCountLimit = getNumberFromConfigFile(\n tracerProvider['limits']['link_attribute_count_limit']\n );\n if (linkAttributeCountLimit) {\n config.tracer_provider.limits!.link_attribute_count_limit =\n linkAttributeCountLimit;\n }\n }\n\n // Sampler\n if (tracerProvider['sampler']) {\n config.tracer_provider.sampler = parseSampler(tracerProvider['sampler']);\n }\n\n // Processors\n for (let i = 0; i < tracerProvider['processors'].length; i++) {\n const processorType = Object.keys(tracerProvider['processors'][i])[0];\n if (processorType === 'batch') {\n const element = tracerProvider['processors'][i]['batch'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.TRACER\n );\n const batchConfig: SpanProcessor = {\n batch: {\n schedule_delay:\n getNumberFromConfigFile(element['schedule_delay']) ?? 5000,\n export_timeout:\n getNumberFromConfigFile(element['export_timeout']) ?? 30000,\n max_queue_size:\n getNumberFromConfigFile(element['max_queue_size']) ?? 2048,\n max_export_batch_size:\n getNumberFromConfigFile(element['max_export_batch_size']) ??\n 512,\n exporter: parsedExporter as SpanExporter,\n },\n };\n\n config.tracer_provider.processors.push(batchConfig);\n }\n } else if (processorType === 'simple') {\n const element = tracerProvider['processors'][i]['simple'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.TRACER\n );\n const simpleConfig: SpanProcessor = {\n simple: {\n exporter: parsedExporter as SpanExporter,\n },\n };\n\n config.tracer_provider.processors.push(simpleConfig);\n }\n }\n }\n } else if (\n tracerProvider &&\n (tracerProvider.processors == null ||\n tracerProvider.processors.length === 0)\n ) {\n diag.warn('TracerProvider must have at least one processor configured');\n }\n}\n\nfunction getCardinalityLimits(limits?: CardinalityLimits): CardinalityLimits {\n if (limits == null) {\n limits = {};\n }\n const defaultLimit = getNumberFromConfigFile(limits['default']) ?? 2000;\n\n return {\n default: defaultLimit,\n counter: getNumberFromConfigFile(limits['counter']) ?? defaultLimit,\n gauge: getNumberFromConfigFile(limits['gauge']) ?? defaultLimit,\n histogram: getNumberFromConfigFile(limits['histogram']) ?? defaultLimit,\n observable_counter:\n getNumberFromConfigFile(limits['observable_counter']) ?? defaultLimit,\n observable_gauge:\n getNumberFromConfigFile(limits['observable_gauge']) ?? defaultLimit,\n observable_up_down_counter:\n getNumberFromConfigFile(limits['observable_up_down_counter']) ??\n defaultLimit,\n up_down_counter:\n getNumberFromConfigFile(limits['up_down_counter']) ?? defaultLimit,\n };\n}\n\nfunction getProducers(producers?: MetricProducer[]): MetricProducer[] {\n const parsedProducers: MetricProducer[] = [];\n if (producers) {\n for (let j = 0; j < producers.length; j++) {\n const producer = producers[j];\n if (Object.keys(producer)[0] === 'opencensus') {\n parsedProducers.push({ opencensus: {} });\n }\n }\n }\n\n return parsedProducers;\n}\n\nexport function getTemporalityPreference(\n temporalityPreference?: ExporterTemporalityPreference\n): ExporterTemporalityPreference {\n const temporalityPreferenceType = getStringFromConfigFile(\n temporalityPreference\n );\n switch (temporalityPreferenceType) {\n case 'cumulative':\n return ExporterTemporalityPreference.Cumulative;\n case 'delta':\n return ExporterTemporalityPreference.Delta;\n case 'low_memory':\n return ExporterTemporalityPreference.LowMemory;\n default:\n return ExporterTemporalityPreference.Cumulative;\n }\n}\n\nfunction getDefaultHistogramAggregation(\n defaultHistogramAggregation?: ExporterDefaultHistogramAggregation\n): ExporterDefaultHistogramAggregation {\n const defaultHistogramAggregationType = getStringFromConfigFile(\n defaultHistogramAggregation\n );\n switch (defaultHistogramAggregationType) {\n case 'explicit_bucket_histogram':\n return ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n case 'base2_exponential_bucket_histogram':\n return ExporterDefaultHistogramAggregation.Base2ExponentialBucketHistogram;\n default:\n return ExporterDefaultHistogramAggregation.ExplicitBucketHistogram;\n }\n}\n\nfunction parseMetricExporter(exporter: PushMetricExporter): PushMetricExporter {\n const exporterType = Object.keys(exporter)[0];\n let parsedExporter: PushMetricExporter = {};\n let e;\n let certFile;\n let clientCertFile;\n let clientKeyFile;\n let compression;\n let headers;\n let headersList;\n let insecure;\n\n switch (exporterType) {\n case 'otlp_http':\n e = exporter['otlp_http'];\n if (e) {\n parsedExporter = {\n otlp_http: {\n endpoint:\n getStringFromConfigFile(e['endpoint']) ??\n 'http://localhost:4318/v1/metrics',\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n encoding:\n getStringFromConfigFile(e['encoding']) === 'json'\n ? OtlpHttpEncoding.JSON\n : OtlpHttpEncoding.Protobuf,\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_http) {\n parsedExporter.otlp_http.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n\n const tls = getHttpTlsConfig(certFile, clientKeyFile, clientCertFile);\n if (tls) {\n parsedExporter.otlp_http!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_grpc':\n e = exporter['otlp_grpc'];\n if (e) {\n parsedExporter = {\n otlp_grpc: {\n endpoint:\n getStringFromConfigFile(e['endpoint']) ?? 'http://localhost:4317',\n timeout: getNumberFromConfigFile(e['timeout']) ?? 10000,\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n\n compression = getStringFromConfigFile(e['compression']);\n if (compression && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.compression = compression;\n }\n headersList = getStringFromConfigFile(e['headers_list']);\n if (headersList && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers_list = headersList;\n }\n headers = getConfigHeaders(e['headers']);\n if (headers && parsedExporter.otlp_grpc) {\n parsedExporter.otlp_grpc.headers = headers;\n }\n\n if (e['tls']) {\n certFile = getStringFromConfigFile(e['tls']['ca_file']);\n clientCertFile = getStringFromConfigFile(e['tls']['cert_file']);\n clientKeyFile = getStringFromConfigFile(e['tls']['key_file']);\n insecure = getBooleanFromConfigFile(e['tls']['insecure']);\n\n const tls = getGrpcTlsConfig(\n certFile,\n clientKeyFile,\n clientCertFile,\n insecure\n );\n if (tls) {\n parsedExporter.otlp_grpc!.tls = tls;\n }\n }\n }\n break;\n\n case 'otlp_file/development':\n e = exporter['otlp_file/development'];\n if (e) {\n parsedExporter = {\n 'otlp_file/development': {\n output_stream:\n getStringFromConfigFile(e['output_stream']) ?? 'stdout',\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n }\n break;\n\n case 'console':\n e = exporter['console'];\n if (e) {\n parsedExporter = {\n console: {\n temporality_preference: getTemporalityPreference(\n e['temporality_preference']\n ),\n default_histogram_aggregation: getDefaultHistogramAggregation(\n e['default_histogram_aggregation']\n ),\n },\n };\n }\n break;\n }\n\n return parsedExporter;\n}\n\nexport function setMeterProvider(\n config: ConfigurationModel,\n meterProvider: MeterProvider\n): void {\n if (meterProvider && meterProvider.readers?.length > 0) {\n config.meter_provider = initializeDefaultMeterProviderConfiguration();\n const exemplarFilter = getStringFromConfigFile(\n meterProvider['exemplar_filter']\n );\n if (exemplarFilter) {\n switch (exemplarFilter) {\n case 'trace_based':\n config.meter_provider.exemplar_filter = ExemplarFilter.TraceBased;\n break;\n case 'always_on':\n config.meter_provider.exemplar_filter = ExemplarFilter.AlwaysOn;\n break;\n case 'always_off':\n config.meter_provider.exemplar_filter = ExemplarFilter.AlwaysOff;\n break;\n default:\n config.meter_provider.exemplar_filter = ExemplarFilter.TraceBased;\n break;\n }\n }\n\n for (let i = 0; i < meterProvider.readers.length; i++) {\n const readerType = Object.keys(meterProvider['readers'][i])[0];\n if (readerType === 'pull') {\n const element = meterProvider['readers'][i]['pull'];\n if (element) {\n const exporter: PullMetricExporter = {\n 'prometheus/development': {\n host:\n getStringFromConfigFile(\n element['exporter']['prometheus/development']['host']\n ) ?? 'localhost',\n port:\n getNumberFromConfigFile(\n element['exporter']['prometheus/development']['port']\n ) ?? 9464,\n without_scope_info:\n getBooleanFromConfigFile(\n element['exporter']['prometheus/development'][\n 'without_scope_info'\n ]\n ) ?? false,\n without_target_info:\n getBooleanFromConfigFile(\n element['exporter']['prometheus/development'][\n 'without_target_info'\n ]\n ) ?? false,\n },\n };\n if (\n element['exporter']['prometheus/development'][\n 'with_resource_constant_labels'\n ]\n ) {\n exporter['prometheus/development']!.with_resource_constant_labels =\n {\n included:\n getStringListFromConfigFile(\n element['exporter']['prometheus/development'][\n 'with_resource_constant_labels'\n ]?.['included']\n ) ?? [],\n excluded:\n getStringListFromConfigFile(\n element['exporter']['prometheus/development'][\n 'with_resource_constant_labels'\n ]?.['excluded']\n ) ?? [],\n };\n }\n\n if (\n element['exporter']['prometheus/development'][\n 'translation_strategy'\n ]\n ) {\n const ts = getStringFromConfigFile(\n element['exporter']['prometheus/development'][\n 'translation_strategy'\n ]\n );\n switch (ts) {\n case 'underscore_escaping_with_suffixes':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.UnderscoreEscapingWithSuffixes;\n break;\n case 'underscore_escaping_without_suffixes':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.UnderscoreEscapingWithoutSuffixes;\n break;\n case 'no_utf8_escaping_with_suffixes':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.NoUtf8EscapingWithSuffixes;\n break;\n case 'no_translation':\n exporter['prometheus/development']!.translation_strategy =\n ExperimentalPrometheusTranslationStrategy.NoTranslation;\n break;\n }\n }\n const pullReader: MetricReader = {\n pull: {\n exporter: exporter,\n cardinality_limits: getCardinalityLimits(\n element['cardinality_limits']\n ),\n },\n };\n const p = getProducers(element['producers']);\n if (p.length > 0 && pullReader.pull) {\n pullReader.pull.producers = p;\n }\n config.meter_provider.readers.push(pullReader);\n }\n } else if (readerType === 'periodic') {\n const element = meterProvider['readers'][i]['periodic'];\n if (element) {\n const parsedExporter = parseMetricExporter(element['exporter']);\n\n const periodicReader: MetricReader = {\n periodic: {\n exporter: parsedExporter,\n cardinality_limits: getCardinalityLimits(\n element['cardinality_limits']\n ),\n interval: getNumberFromConfigFile(element['interval']) ?? 60000,\n timeout: getNumberFromConfigFile(element['timeout']) ?? 30000,\n },\n };\n const p = getProducers(element['producers']);\n if (p.length > 0 && periodicReader.periodic) {\n periodicReader.periodic.producers = p;\n }\n config.meter_provider.readers.push(periodicReader);\n }\n }\n }\n\n if (meterProvider['views'] && meterProvider['views'].length > 0) {\n config.meter_provider.views = [];\n for (let j = 0; j < meterProvider['views'].length; j++) {\n const element = meterProvider['views'][j];\n const view: View = {};\n if (element['selector']) {\n const selector: ViewSelector = {};\n const instrumentName = getStringFromConfigFile(\n element['selector']['instrument_name']\n );\n if (instrumentName) {\n selector.instrument_name = instrumentName;\n }\n\n const unit = getStringFromConfigFile(element['selector']['unit']);\n if (unit) {\n selector.unit = unit;\n }\n\n const meterName = getStringFromConfigFile(\n element['selector']['meter_name']\n );\n if (meterName) {\n selector.meter_name = meterName;\n }\n\n const meterVersion = getStringFromConfigFile(\n element['selector']['meter_version']\n );\n if (meterVersion) {\n selector.meter_version = meterVersion;\n }\n\n const meterSchemaUrl = getStringFromConfigFile(\n element['selector']['meter_schema_url']\n );\n if (meterSchemaUrl) {\n selector.meter_schema_url = meterSchemaUrl;\n }\n\n const instrumentType = getStringFromConfigFile(\n element['selector']['instrument_type']\n );\n if (instrumentType) {\n switch (instrumentType) {\n case 'counter':\n selector.instrument_type = InstrumentType.Counter;\n break;\n case 'gauge':\n selector.instrument_type = InstrumentType.Gauge;\n break;\n case 'histogram':\n selector.instrument_type = InstrumentType.Histogram;\n break;\n case 'observable_counter':\n selector.instrument_type = InstrumentType.ObservableCounter;\n break;\n case 'observable_gauge':\n selector.instrument_type = InstrumentType.ObservableGauge;\n break;\n case 'observable_up_down_counter':\n selector.instrument_type =\n InstrumentType.ObservableUpDownCounter;\n break;\n case 'up_down_counter':\n selector.instrument_type = InstrumentType.UpDownCounter;\n break;\n }\n }\n\n if (Object.keys(selector).length > 0) {\n view.selector = selector;\n }\n }\n if (element['stream']) {\n const stream: ViewStream = {};\n const name = getStringFromConfigFile(element['stream']['name']);\n if (name) {\n stream.name = name;\n }\n\n const description = getStringFromConfigFile(\n element['stream']['description']\n );\n if (description) {\n stream.description = description;\n }\n\n const aggregationCardinalityLimit = getNumberFromConfigFile(\n element['stream']['aggregation_cardinality_limit']\n );\n if (aggregationCardinalityLimit) {\n stream.aggregation_cardinality_limit = aggregationCardinalityLimit;\n }\n\n if (element['stream']['attribute_keys']) {\n stream.attribute_keys = {\n included:\n getStringListFromConfigFile(\n element['stream']['attribute_keys']['included']\n ) ?? [],\n excluded:\n getStringListFromConfigFile(\n element['stream']['attribute_keys']['excluded']\n ) ?? [],\n };\n }\n const rawAgg = element['stream']['aggregation'];\n if (rawAgg) {\n const aggregation: Aggregation = {};\n if (rawAgg['default']) {\n aggregation.default = {};\n }\n if (rawAgg['drop']) {\n aggregation.drop = {};\n }\n if (rawAgg['last_value']) {\n aggregation.last_value = {};\n }\n if (rawAgg['sum']) {\n aggregation.sum = {};\n }\n if (rawAgg['explicit_bucket_histogram']) {\n aggregation.explicit_bucket_histogram = {\n boundaries: getNumberListFromConfigFile(\n rawAgg['explicit_bucket_histogram']['boundaries']\n ) ?? [\n 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000,\n 7500, 10000,\n ],\n record_min_max:\n getBooleanFromConfigFile(\n rawAgg['explicit_bucket_histogram']['record_min_max']\n ) === false\n ? false\n : true,\n };\n }\n if (rawAgg['base2_exponential_bucket_histogram']) {\n aggregation.base2_exponential_bucket_histogram = {\n record_min_max:\n getBooleanFromConfigFile(\n rawAgg['base2_exponential_bucket_histogram'][\n 'record_min_max'\n ]\n ) === false\n ? false\n : true,\n };\n const maxScale = getNumberFromConfigFile(\n rawAgg['base2_exponential_bucket_histogram']['max_scale']\n );\n if (maxScale) {\n aggregation.base2_exponential_bucket_histogram.max_scale =\n maxScale;\n }\n\n const maxSize = getNumberFromConfigFile(\n rawAgg['base2_exponential_bucket_histogram']['max_size']\n );\n if (maxSize) {\n aggregation.base2_exponential_bucket_histogram.max_size =\n maxSize;\n }\n }\n stream.aggregation = aggregation;\n }\n if (Object.keys(stream).length > 0) {\n view.stream = stream;\n }\n }\n config.meter_provider.views.push(view);\n }\n }\n } else if (\n meterProvider &&\n (meterProvider.readers == null || meterProvider.readers.length === 0)\n ) {\n diag.warn('MeterProvider must have at least one reader configured');\n }\n}\n\nexport function getSeverity(\n severity?: SeverityNumber\n): SeverityNumber | undefined {\n const severityType = getStringFromConfigFile(severity);\n switch (severityType) {\n case 'debug':\n return SeverityNumber.DEBUG;\n case 'debug2':\n return SeverityNumber.DEBUG2;\n case 'debug3':\n return SeverityNumber.DEBUG3;\n case 'debug4':\n return SeverityNumber.DEBUG4;\n case 'info':\n return SeverityNumber.INFO;\n case 'info2':\n return SeverityNumber.INFO2;\n case 'info3':\n return SeverityNumber.INFO3;\n case 'info4':\n return SeverityNumber.INFO4;\n case 'warn':\n return SeverityNumber.WARN;\n case 'warn2':\n return SeverityNumber.WARN2;\n case 'warn3':\n return SeverityNumber.WARN3;\n case 'warn4':\n return SeverityNumber.WARN4;\n case 'error':\n return SeverityNumber.ERROR;\n case 'error2':\n return SeverityNumber.ERROR2;\n case 'error3':\n return SeverityNumber.ERROR3;\n case 'error4':\n return SeverityNumber.ERROR4;\n case 'fatal':\n return SeverityNumber.FATAL;\n case 'fatal2':\n return SeverityNumber.FATAL2;\n case 'fatal3':\n return SeverityNumber.FATAL3;\n case 'fatal4':\n return SeverityNumber.FATAL4;\n case 'trace':\n return SeverityNumber.TRACE;\n case 'trace2':\n return SeverityNumber.TRACE2;\n case 'trace3':\n return SeverityNumber.TRACE3;\n case 'trace4':\n return SeverityNumber.TRACE4;\n default:\n return undefined;\n }\n}\n\nexport function setLoggerProvider(\n config: ConfigurationModel,\n loggerProvider: LoggerProvider\n): void {\n if (loggerProvider && loggerProvider.processors?.length > 0) {\n config.logger_provider = initializeDefaultLoggerProviderConfiguration();\n // Limits\n if (loggerProvider['limits']) {\n const attributeValueLengthLimit = getNumberFromConfigFile(\n loggerProvider['limits']['attribute_value_length_limit']\n );\n const attributeCountLimit = getNumberFromConfigFile(\n loggerProvider['limits']['attribute_count_limit']\n );\n if (attributeValueLengthLimit || attributeCountLimit) {\n if (attributeValueLengthLimit) {\n config.logger_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n if (attributeCountLimit) {\n config.logger_provider.limits!.attribute_count_limit =\n attributeCountLimit;\n }\n }\n }\n\n // Processors\n for (let i = 0; i < loggerProvider['processors'].length; i++) {\n const processorType = Object.keys(loggerProvider['processors'][i])[0];\n if (processorType === 'batch') {\n const element = loggerProvider['processors'][i]['batch'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.LOGGER\n );\n const batchConfig: LogRecordProcessor = {\n batch: {\n schedule_delay:\n getNumberFromConfigFile(element['schedule_delay']) ?? 1000,\n export_timeout:\n getNumberFromConfigFile(element['export_timeout']) ?? 30000,\n max_queue_size:\n getNumberFromConfigFile(element['max_queue_size']) ?? 2048,\n max_export_batch_size:\n getNumberFromConfigFile(element['max_export_batch_size']) ??\n 512,\n exporter: parsedExporter as LogRecordExporter,\n },\n };\n\n config.logger_provider.processors.push(batchConfig);\n }\n } else if (processorType === 'simple') {\n const element = loggerProvider['processors'][i]['simple'];\n if (element) {\n const parsedExporter = parseConfigSpanOrLogRecordExporter(\n element['exporter'],\n ProviderType.LOGGER\n );\n const simpleConfig: LogRecordProcessor = {\n simple: {\n exporter: parsedExporter,\n },\n };\n\n config.logger_provider.processors.push(simpleConfig);\n }\n }\n }\n\n // logger_configurator/development\n if (loggerProvider['logger_configurator/development']) {\n const defaultConfigDisabled = getBooleanFromConfigFile(\n loggerProvider['logger_configurator/development']['default_config']?.[\n 'enabled'\n ]\n );\n if (defaultConfigDisabled || defaultConfigDisabled === false) {\n config.logger_provider['logger_configurator/development'] = {\n default_config: {\n enabled: defaultConfigDisabled,\n },\n };\n }\n\n if (\n loggerProvider['logger_configurator/development'].loggers &&\n loggerProvider['logger_configurator/development'].loggers.length > 0\n ) {\n const loggers = [];\n for (\n let i = 0;\n i < loggerProvider['logger_configurator/development'].loggers.length;\n i++\n ) {\n const logger =\n loggerProvider['logger_configurator/development'].loggers[i];\n let enabled = false;\n let traceBased;\n let minSeverity;\n if (logger['config']) {\n enabled =\n getBooleanFromConfigFile(logger['config']['enabled']) ?? false;\n traceBased = getBooleanFromConfigFile(\n logger['config']['trace_based']\n );\n if (logger['config']['minimum_severity']) {\n minSeverity = getSeverity(logger['config']['minimum_severity']);\n }\n }\n const name = getStringFromConfigFile(logger['name']);\n if (name) {\n const loggerNew: ExperimentalLoggerMatcherAndConfig = {\n name: name,\n config: {\n enabled: enabled,\n },\n };\n if (traceBased !== undefined) {\n loggerNew.config!.trace_based = traceBased;\n }\n if (minSeverity !== undefined) {\n loggerNew.config!.minimum_severity = minSeverity;\n }\n\n loggers.push(loggerNew);\n }\n }\n if (config.logger_provider['logger_configurator/development'] == null) {\n config.logger_provider['logger_configurator/development'] = {};\n }\n config.logger_provider['logger_configurator/development'].loggers =\n loggers;\n }\n }\n } else if (\n loggerProvider &&\n (loggerProvider.processors == null ||\n loggerProvider.processors.length === 0)\n ) {\n diag.warn('LoggerProvider must have at least one processor configured');\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { ConfigurationModel } from './models/configModel';
1
+ import type { ConfigurationModel } from './models/configModel';
2
2
  export interface ConfigFactory {
3
3
  /**
4
4
  * Returns a ConfigurationModel.
@@ -1 +1 @@
1
- {"version":3,"file":"IConfigFactory.js","sourceRoot":"","sources":["../../src/IConfigFactory.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ConfigurationModel } from './models/configModel';\n\nexport interface ConfigFactory {\n /**\n * Returns a ConfigurationModel.\n *\n * @returns ConfigurationModel a Configuration Model with all configuration attributes\n */\n getConfigModel(): ConfigurationModel;\n}\n"]}
1
+ {"version":3,"file":"IConfigFactory.js","sourceRoot":"","sources":["../../src/IConfigFactory.ts"],"names":[],"mappings":";AAAA;;;GAGG","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ConfigurationModel } from './models/configModel';\n\nexport interface ConfigFactory {\n /**\n * Returns a ConfigurationModel.\n *\n * @returns ConfigurationModel a Configuration Model with all configuration attributes\n */\n getConfigModel(): ConfigurationModel;\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  export type { ConfigFactory } from './IConfigFactory';
2
2
  export type { ConfigurationModel } from './models/configModel';
3
- export type { LogRecordExporter as LogRecordExporterModel } from './models/loggerProviderModel';
4
- export type { PushMetricExporter as MeterExporterModel } from './models/meterProviderModel';
5
- export type { SpanExporter as SpanExporterModel } from './models/tracerProviderModel';
3
+ export type { LogRecordExporter as LogRecordExporterConfigModel } from './models/loggerProviderModel';
4
+ export type { PushMetricExporter as PushMetricExporterConfigModel, InstrumentType as InstrumentTypeConfigModel, Aggregation as AggregationConfigModel, PeriodicMetricReader as PeriodicMetricReaderConfigModel, } from './models/meterProviderModel';
5
+ export type { SpanExporter as SpanExporterConfigModel, SpanProcessor as SpanProcessorConfigModel, } from './models/tracerProviderModel';
6
6
  export { createConfigFactory } from './ConfigFactory';
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOH,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type { ConfigFactory } from './IConfigFactory';\nexport type { ConfigurationModel } from './models/configModel';\nexport type { LogRecordExporter as LogRecordExporterModel } from './models/loggerProviderModel';\nexport type { PushMetricExporter as MeterExporterModel } from './models/meterProviderModel';\nexport type { SpanExporter as SpanExporterModel } from './models/tracerProviderModel';\nexport { createConfigFactory } from './ConfigFactory';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAeH,iDAAsD;AAA7C,oHAAA,mBAAmB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type { ConfigFactory } from './IConfigFactory';\nexport type { ConfigurationModel } from './models/configModel';\nexport type { LogRecordExporter as LogRecordExporterConfigModel } from './models/loggerProviderModel';\nexport type {\n PushMetricExporter as PushMetricExporterConfigModel,\n InstrumentType as InstrumentTypeConfigModel,\n Aggregation as AggregationConfigModel,\n PeriodicMetricReader as PeriodicMetricReaderConfigModel,\n} from './models/meterProviderModel';\nexport type {\n SpanExporter as SpanExporterConfigModel,\n SpanProcessor as SpanProcessorConfigModel,\n} from './models/tracerProviderModel';\nexport { createConfigFactory } from './ConfigFactory';\n"]}
@@ -1,7 +1,7 @@
1
- import { TracerProvider } from './tracerProviderModel';
2
- import { LoggerProvider } from './loggerProviderModel';
3
- import { Resource } from './resourceModel';
4
- import { MeterProvider } from './meterProviderModel';
1
+ import type { TracerProvider } from './tracerProviderModel';
2
+ import type { LoggerProvider } from './loggerProviderModel';
3
+ import type { Resource } from './resourceModel';
4
+ import type { MeterProvider } from './meterProviderModel';
5
5
  export interface ConfigurationModel {
6
6
  /**
7
7
  * Configure if the SDK is disabled or not.
@@ -13,11 +13,6 @@ export interface ConfigurationModel {
13
13
  * If omitted, info is used.
14
14
  */
15
15
  log_level?: number;
16
- /**
17
- * Node resource detectors
18
- * If omitted, all is used.
19
- */
20
- node_resource_detectors?: string[];
21
16
  /**
22
17
  * Configure resource for all signals.
23
18
  * If omitted, the default resource is used.
@@ -1 +1 @@
1
- {"version":3,"file":"configModel.js","sourceRoot":"","sources":["../../../src/models/configModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,CAAC;;;AAEb,4CAAkD;AA0DlD,SAAgB,8BAA8B;IAC5C,MAAM,MAAM,GAAuB;QACjC,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,kBAAY,CAAC,IAAI;QAC5B,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE;YAChB,qBAAqB,EAAE,GAAG;SAC3B;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAXD,wEAWC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n'use strict';\n\nimport { DiagLogLevel } from '@opentelemetry/api';\nimport { TracerProvider } from './tracerProviderModel';\nimport { LoggerProvider } from './loggerProviderModel';\nimport { Resource } from './resourceModel';\nimport { MeterProvider } from './meterProviderModel';\n\nexport interface ConfigurationModel {\n /**\n * Configure if the SDK is disabled or not.\n * If omitted or null, false is used.\n */\n disabled?: boolean;\n\n /**\n * Configure the log level of the internal logger used by the SDK.\n * If omitted, info is used.\n */\n log_level?: number;\n\n /**\n * Node resource detectors\n * If omitted, all is used.\n */\n node_resource_detectors?: string[];\n\n /**\n * Configure resource for all signals.\n * If omitted, the default resource is used.\n */\n resource?: Resource;\n\n /**\n * Configure general attribute limits.\n * See also tracer_provider.limits, logger_provider.limits.\n */\n attribute_limits?: AttributeLimits;\n\n /**\n * Configure text map context propagators.\n */\n propagator?: Propagator;\n\n /**\n * Configure tracer provider.\n */\n tracer_provider?: TracerProvider;\n\n /**\n * Configure meter provider.\n */\n meter_provider?: MeterProvider;\n\n /**\n * Configure logger provider.\n */\n logger_provider?: LoggerProvider;\n}\n\nexport function initializeDefaultConfiguration(): ConfigurationModel {\n const config: ConfigurationModel = {\n disabled: false,\n log_level: DiagLogLevel.INFO,\n resource: {},\n attribute_limits: {\n attribute_count_limit: 128,\n },\n };\n\n return config;\n}\nexport interface AttributeLimits {\n /**\n * Configure max attribute value size.\n * Value must be non-negative.\n * If omitted or null, there is no limit.\n */\n attribute_value_length_limit?: number;\n\n /**\n * Configure max attribute count.\n * Value must be non-negative.\n * If omitted or null, 128 is used.\n */\n attribute_count_limit: number;\n}\n\nexport interface Propagator {\n /**\n * Configure the propagators in the composite text map propagator.\n * Entries from .composite_list are appended to the list here with duplicates filtered out.\n * Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace.\n * Known third party keys include: xray.\n * If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.\n */\n composite?: object[];\n\n /**\n * Configure the propagators in the composite text map propagator.\n * Entries are appended to .composite with duplicates filtered out.\n * The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS.\n * Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace.\n * Known third party identifiers include: xray.\n * If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.\n */\n composite_list?: string;\n}\n"]}
1
+ {"version":3,"file":"configModel.js","sourceRoot":"","sources":["../../../src/models/configModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,CAAC;;;AAEb,4CAAkD;AAoDlD,SAAgB,8BAA8B;IAC5C,MAAM,MAAM,GAAuB;QACjC,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,kBAAY,CAAC,IAAI;QAC5B,QAAQ,EAAE,EAAE;QACZ,gBAAgB,EAAE;YAChB,qBAAqB,EAAE,GAAG;SAC3B;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAXD,wEAWC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n'use strict';\n\nimport { DiagLogLevel } from '@opentelemetry/api';\nimport type { TracerProvider } from './tracerProviderModel';\nimport type { LoggerProvider } from './loggerProviderModel';\nimport type { Resource } from './resourceModel';\nimport type { MeterProvider } from './meterProviderModel';\n\nexport interface ConfigurationModel {\n /**\n * Configure if the SDK is disabled or not.\n * If omitted or null, false is used.\n */\n disabled?: boolean;\n\n /**\n * Configure the log level of the internal logger used by the SDK.\n * If omitted, info is used.\n */\n log_level?: number;\n\n /**\n * Configure resource for all signals.\n * If omitted, the default resource is used.\n */\n resource?: Resource;\n\n /**\n * Configure general attribute limits.\n * See also tracer_provider.limits, logger_provider.limits.\n */\n attribute_limits?: AttributeLimits;\n\n /**\n * Configure text map context propagators.\n */\n propagator?: Propagator;\n\n /**\n * Configure tracer provider.\n */\n tracer_provider?: TracerProvider;\n\n /**\n * Configure meter provider.\n */\n meter_provider?: MeterProvider;\n\n /**\n * Configure logger provider.\n */\n logger_provider?: LoggerProvider;\n}\n\nexport function initializeDefaultConfiguration(): ConfigurationModel {\n const config: ConfigurationModel = {\n disabled: false,\n log_level: DiagLogLevel.INFO,\n resource: {},\n attribute_limits: {\n attribute_count_limit: 128,\n },\n };\n\n return config;\n}\nexport interface AttributeLimits {\n /**\n * Configure max attribute value size.\n * Value must be non-negative.\n * If omitted or null, there is no limit.\n */\n attribute_value_length_limit?: number;\n\n /**\n * Configure max attribute count.\n * Value must be non-negative.\n * If omitted or null, 128 is used.\n */\n attribute_count_limit: number;\n}\n\nexport interface Propagator {\n /**\n * Configure the propagators in the composite text map propagator.\n * Entries from .composite_list are appended to the list here with duplicates filtered out.\n * Built-in propagator keys include: tracecontext, baggage, b3, b3multi, jaeger, ottrace.\n * Known third party keys include: xray.\n * If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.\n */\n composite?: object[];\n\n /**\n * Configure the propagators in the composite text map propagator.\n * Entries are appended to .composite with duplicates filtered out.\n * The value is a comma separated list of propagator identifiers matching the format of OTEL_PROPAGATORS.\n * Built-in propagator identifiers include: tracecontext, baggage, b3, b3multi, jaeger, ottrace.\n * Known third party identifiers include: xray.\n * If the resolved list of propagators (from .composite and .composite_list) is empty, a noop propagator is used.\n */\n composite_list?: string;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { ExperimentalOtlpFileExporter, OtlpGrpcExporter, OtlpHttpExporter, SeverityNumber } from './commonModel';
1
+ import type { ExperimentalOtlpFileExporter, OtlpGrpcExporter, OtlpHttpExporter, SeverityNumber } from './commonModel';
2
2
  export declare function initializeDefaultLoggerProviderConfiguration(): Required<LoggerProvider>;
3
3
  export interface LoggerProvider {
4
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"loggerProviderModel.js","sourceRoot":"","sources":["../../../src/models/loggerProviderModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,CAAC;;;AASb,SAAgB,4CAA4C;IAC1D,OAAO;QACL,UAAU,EAAE,EAAE;QACd,MAAM,EAAE;YACN,qBAAqB,EAAE,GAAG;SAC3B;QACD,iCAAiC,EAAE,EAAE;KACtC,CAAC;AACJ,CAAC;AARD,oGAQC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n'use strict';\n\nimport {\n ExperimentalOtlpFileExporter,\n OtlpGrpcExporter,\n OtlpHttpExporter,\n SeverityNumber,\n} from './commonModel';\n\nexport function initializeDefaultLoggerProviderConfiguration(): Required<LoggerProvider> {\n return {\n processors: [],\n limits: {\n attribute_count_limit: 128,\n },\n 'logger_configurator/development': {},\n };\n}\n\nexport interface LoggerProvider {\n /**\n * Configure log record processors.\n */\n processors: LogRecordProcessor[];\n\n /**\n * Configure log record limits. See also attribute_limits.\n */\n limits?: LogRecordLimits;\n\n /**\n * Configure loggers.\n * This type is in development and subject to breaking changes in minor versions.\n */\n 'logger_configurator/development'?: ExperimentalLoggerConfigurator;\n}\n\nexport interface SimpleLogRecordProcessor {\n /**\n * Configure exporter.\n */\n exporter: LogRecordExporter;\n}\n\nexport interface BatchLogRecordProcessor {\n /**\n * Configure delay interval (in milliseconds) between two consecutive exports.\n * Value must be non-negative.\n * If omitted or null, 1000 is used for traces and 1000 for logs.\n */\n schedule_delay?: number;\n\n /**\n * Configure maximum allowed time (in milliseconds) to export data.\n * Value must be non-negative. A value of 0 indicates no limit (infinity).\n * If omitted or null, 30000 is used.\n */\n export_timeout?: number;\n\n /**\n * Configure maximum queue size. Value must be positive.\n * If omitted or null, 2048 is used.\n */\n max_queue_size?: number;\n\n /**\n * Configure maximum batch size. Value must be positive.\n * If omitted or null, 512 is used.\n */\n max_export_batch_size?: number;\n\n /**\n * Configure exporter.\n */\n exporter: LogRecordExporter;\n}\n\nexport interface LogRecordExporter {\n /**\n * Configure exporter to be OTLP with HTTP transport.\n */\n otlp_http?: OtlpHttpExporter;\n\n /**\n * Configure exporter to be OTLP with gRPC transport.\n */\n otlp_grpc?: OtlpGrpcExporter;\n\n /**\n * Configure exporter to be OTLP with file transport.\n * This type is in development and subject to breaking changes in minor versions.\n */\n 'otlp_file/development'?: ExperimentalOtlpFileExporter;\n\n /**\n * Configure exporter to be console.\n */\n console?: object;\n}\n\nexport interface LogRecordLimits {\n /**\n * Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.\n * Value must be non-negative.\n * If omitted or null, there is no limit.\n */\n attribute_value_length_limit?: number;\n\n /**\n * Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.\n * Value must be non-negative.\n * If omitted or null, 128 is used.\n */\n attribute_count_limit?: number;\n}\n\nexport interface LogRecordProcessor {\n /**\n * Configure a batch log record processor.\n */\n batch?: BatchLogRecordProcessor;\n\n /**\n * Configure a simple log record processor.\n */\n simple?: SimpleLogRecordProcessor;\n}\n\nexport interface ExperimentalLoggerConfigurator {\n /**\n * Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers.\n */\n default_config?: ExperimentalLoggerConfig;\n\n /**\n * Configure loggers.\n */\n loggers?: ExperimentalLoggerMatcherAndConfig[];\n}\n\nexport interface ExperimentalLoggerMatcherAndConfig {\n /**\n * Configure logger names to match, evaluated as follows:\n * * If the logger name exactly matches.\n * * If the logger name matches the wildcard pattern, where '?' matches any single character\n * and '*' matches any number of characters including none.\n */\n name: string;\n\n /**\n * The logger config.\n */\n config: ExperimentalLoggerConfig;\n}\n\nexport interface ExperimentalLoggerConfig {\n /**\n * Configure if the logger is enabled or not.\n */\n enabled?: boolean;\n\n /**\n * Configure severity filtering.\n * Log records with an non-zero (i.e. unspecified) severity number which is less than minimum_severity are not processed.\n */\n minimum_severity?: SeverityNumber;\n\n /**\n * Configure trace based filtering.\n * If true, log records associated with unsampled trace contexts traces are not processed. If false, or if a log record is not associated with a trace context, trace based filtering is not applied.\n */\n trace_based?: boolean;\n}\n"]}
1
+ {"version":3,"file":"loggerProviderModel.js","sourceRoot":"","sources":["../../../src/models/loggerProviderModel.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,YAAY,CAAC;;;AASb,SAAgB,4CAA4C;IAC1D,OAAO;QACL,UAAU,EAAE,EAAE;QACd,MAAM,EAAE;YACN,qBAAqB,EAAE,GAAG;SAC3B;QACD,iCAAiC,EAAE,EAAE;KACtC,CAAC;AACJ,CAAC;AARD,oGAQC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n'use strict';\n\nimport type {\n ExperimentalOtlpFileExporter,\n OtlpGrpcExporter,\n OtlpHttpExporter,\n SeverityNumber,\n} from './commonModel';\n\nexport function initializeDefaultLoggerProviderConfiguration(): Required<LoggerProvider> {\n return {\n processors: [],\n limits: {\n attribute_count_limit: 128,\n },\n 'logger_configurator/development': {},\n };\n}\n\nexport interface LoggerProvider {\n /**\n * Configure log record processors.\n */\n processors: LogRecordProcessor[];\n\n /**\n * Configure log record limits. See also attribute_limits.\n */\n limits?: LogRecordLimits;\n\n /**\n * Configure loggers.\n * This type is in development and subject to breaking changes in minor versions.\n */\n 'logger_configurator/development'?: ExperimentalLoggerConfigurator;\n}\n\nexport interface SimpleLogRecordProcessor {\n /**\n * Configure exporter.\n */\n exporter: LogRecordExporter;\n}\n\nexport interface BatchLogRecordProcessor {\n /**\n * Configure delay interval (in milliseconds) between two consecutive exports.\n * Value must be non-negative.\n * If omitted or null, 1000 is used for traces and 1000 for logs.\n */\n schedule_delay?: number;\n\n /**\n * Configure maximum allowed time (in milliseconds) to export data.\n * Value must be non-negative. A value of 0 indicates no limit (infinity).\n * If omitted or null, 30000 is used.\n */\n export_timeout?: number;\n\n /**\n * Configure maximum queue size. Value must be positive.\n * If omitted or null, 2048 is used.\n */\n max_queue_size?: number;\n\n /**\n * Configure maximum batch size. Value must be positive.\n * If omitted or null, 512 is used.\n */\n max_export_batch_size?: number;\n\n /**\n * Configure exporter.\n */\n exporter: LogRecordExporter;\n}\n\nexport interface LogRecordExporter {\n /**\n * Configure exporter to be OTLP with HTTP transport.\n */\n otlp_http?: OtlpHttpExporter;\n\n /**\n * Configure exporter to be OTLP with gRPC transport.\n */\n otlp_grpc?: OtlpGrpcExporter;\n\n /**\n * Configure exporter to be OTLP with file transport.\n * This type is in development and subject to breaking changes in minor versions.\n */\n 'otlp_file/development'?: ExperimentalOtlpFileExporter;\n\n /**\n * Configure exporter to be console.\n */\n console?: object;\n}\n\nexport interface LogRecordLimits {\n /**\n * Configure max attribute value size. Overrides .attribute_limits.attribute_value_length_limit.\n * Value must be non-negative.\n * If omitted or null, there is no limit.\n */\n attribute_value_length_limit?: number;\n\n /**\n * Configure max attribute count. Overrides .attribute_limits.attribute_count_limit.\n * Value must be non-negative.\n * If omitted or null, 128 is used.\n */\n attribute_count_limit?: number;\n}\n\nexport interface LogRecordProcessor {\n /**\n * Configure a batch log record processor.\n */\n batch?: BatchLogRecordProcessor;\n\n /**\n * Configure a simple log record processor.\n */\n simple?: SimpleLogRecordProcessor;\n}\n\nexport interface ExperimentalLoggerConfigurator {\n /**\n * Configure the default logger config used there is no matching entry in .logger_configurator/development.loggers.\n */\n default_config?: ExperimentalLoggerConfig;\n\n /**\n * Configure loggers.\n */\n loggers?: ExperimentalLoggerMatcherAndConfig[];\n}\n\nexport interface ExperimentalLoggerMatcherAndConfig {\n /**\n * Configure logger names to match, evaluated as follows:\n * * If the logger name exactly matches.\n * * If the logger name matches the wildcard pattern, where '?' matches any single character\n * and '*' matches any number of characters including none.\n */\n name: string;\n\n /**\n * The logger config.\n */\n config: ExperimentalLoggerConfig;\n}\n\nexport interface ExperimentalLoggerConfig {\n /**\n * Configure if the logger is enabled or not.\n */\n enabled?: boolean;\n\n /**\n * Configure severity filtering.\n * Log records with an non-zero (i.e. unspecified) severity number which is less than minimum_severity are not processed.\n */\n minimum_severity?: SeverityNumber;\n\n /**\n * Configure trace based filtering.\n * If true, log records associated with unsampled trace contexts traces are not processed. If false, or if a log record is not associated with a trace context, trace based filtering is not applied.\n */\n trace_based?: boolean;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { GrpcTls, HttpTls, IncludeExclude, NameStringValuePair, OtlpHttpEncoding } from './commonModel';
1
+ import type { GrpcTls, HttpTls, IncludeExclude, NameStringValuePair, OtlpHttpEncoding } from './commonModel';
2
2
  export declare function initializeDefaultMeterProviderConfiguration(): Required<MeterProvider>;
3
3
  export interface MeterProvider {
4
4
  /**