🚀. Socket Launch Week Day 2:Introducing Manifest Alerts.Learn more
Sign In

@opentelemetry/sdk-node

Package Overview
Dependencies
Maintainers
6
Versions
246
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@opentelemetry/sdk-node - npm Package Compare versions

Comparing version
0.218.0
to
0.219.0
+0
-1
build/src/index.d.ts

@@ -13,3 +13,2 @@ export * as api from '@opentelemetry/api';

export { startNodeSDK } from './start';
export { buildSamplerFromConfig } from './utils';
//# sourceMappingURL=index.d.ts.map
+1
-3

@@ -7,3 +7,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.buildSamplerFromConfig = exports.startNodeSDK = exports.NodeSDK = exports.tracing = exports.resources = exports.node = exports.metrics = exports.logs = exports.core = exports.contextBase = exports.api = void 0;
exports.startNodeSDK = exports.NodeSDK = exports.tracing = exports.resources = exports.node = exports.metrics = exports.logs = exports.core = exports.contextBase = exports.api = void 0;
// This is a meta-package, and these exist in to re-export *all* items from

@@ -27,4 +27,2 @@ // the individual packages as individual _namespaces_, so wildcard exports are

Object.defineProperty(exports, "startNodeSDK", { enumerable: true, get: function () { return start_1.startNodeSDK; } });
var utils_1 = require("./utils");
Object.defineProperty(exports, "buildSamplerFromConfig", { enumerable: true, get: function () { return utils_1.buildSamplerFromConfig; } });
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,0CAA0C;AAE1C,yCAAyC;AACzC,4CAA0C;AAC1C,oDAAkD;AAClD,8CAA4C;AAC5C,kDAAgD;AAChD,wDAAsD;AACtD,wDAAsD;AACtD,wDAAsD;AACtD,2DAAyD;AACzD,wCAAwC;AAExC,6BAAgC;AAAvB,8FAAA,OAAO,OAAA;AAGhB,iCAAuC;AAA9B,qGAAA,YAAY,OAAA;AACrB,iCAAiD;AAAxC,+GAAA,sBAAsB,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// This is a meta-package, and these exist in to re-export *all* items from\n// the individual packages as individual _namespaces_, so wildcard exports are\n// appropriate here. Otherwise, it'd be a pain to enumerate and keep things\n// in-sync with all the upstream packages.\n\n/* eslint-disable no-restricted-syntax */\nexport * as api from '@opentelemetry/api';\nexport * as contextBase from '@opentelemetry/api';\nexport * as core from '@opentelemetry/core';\nexport * as logs from '@opentelemetry/sdk-logs';\nexport * as metrics from '@opentelemetry/sdk-metrics';\nexport * as node from '@opentelemetry/sdk-trace-node';\nexport * as resources from '@opentelemetry/resources';\nexport * as tracing from '@opentelemetry/sdk-trace-base';\n/* eslint-enable no-restricted-syntax */\n\nexport { NodeSDK } from './sdk';\nexport type { LoggerProviderConfig, MeterProviderConfig } from './sdk';\nexport type { NodeSDKConfiguration } from './types';\nexport { startNodeSDK } from './start';\nexport { buildSamplerFromConfig } from './utils';\n"]}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,0CAA0C;AAE1C,yCAAyC;AACzC,4CAA0C;AAC1C,oDAAkD;AAClD,8CAA4C;AAC5C,kDAAgD;AAChD,wDAAsD;AACtD,wDAAsD;AACtD,wDAAsD;AACtD,2DAAyD;AACzD,wCAAwC;AAExC,6BAAgC;AAAvB,8FAAA,OAAO,OAAA;AAGhB,iCAAuC;AAA9B,qGAAA,YAAY,OAAA","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// This is a meta-package, and these exist in to re-export *all* items from\n// the individual packages as individual _namespaces_, so wildcard exports are\n// appropriate here. Otherwise, it'd be a pain to enumerate and keep things\n// in-sync with all the upstream packages.\n\n/* eslint-disable no-restricted-syntax */\nexport * as api from '@opentelemetry/api';\nexport * as contextBase from '@opentelemetry/api';\nexport * as core from '@opentelemetry/core';\nexport * as logs from '@opentelemetry/sdk-logs';\nexport * as metrics from '@opentelemetry/sdk-metrics';\nexport * as node from '@opentelemetry/sdk-trace-node';\nexport * as resources from '@opentelemetry/resources';\nexport * as tracing from '@opentelemetry/sdk-trace-base';\n/* eslint-enable no-restricted-syntax */\n\nexport { NodeSDK } from './sdk';\nexport type { LoggerProviderConfig, MeterProviderConfig } from './sdk';\nexport type { NodeSDKConfiguration } from './types';\nexport { startNodeSDK } from './start';\n"]}

@@ -35,3 +35,3 @@ "use strict";

if (enabledExporters.includes('none')) {
api_1.diag.info(`OTEL_METRICS_EXPORTER contains "none". Metric provider will not be initialized.`);
api_1.diag.info('OTEL_METRICS_EXPORTER contains "none". Metric provider will not be initialized.');
return metricReaders;

@@ -138,3 +138,2 @@ }

const spanProcessor = configuration.spanProcessor ??
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
new sdk_trace_base_1.BatchSpanProcessor(configuration.traceExporter);

@@ -218,2 +217,3 @@ const spanProcessors = configuration.spanProcessors ?? [spanProcessor];

readers: this._meterProviderConfig.readers,
sdkMetricsEnabled,
});

@@ -275,3 +275,3 @@ this._meterProvider = meterProvider;

if (enabledExporters.includes('none')) {
api_1.diag.info(`OTEL_LOGS_EXPORTER contains "none". Logger provider will not be initialized.`);
api_1.diag.info('OTEL_LOGS_EXPORTER contains "none". Logger provider will not be initialized.');
return;

@@ -278,0 +278,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { metrics, trace, diag, DiagConsoleLogger } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport type {\n Resource,\n ResourceDetectionConfig,\n ResourceDetector,\n} from '@opentelemetry/resources';\nimport {\n defaultResource,\n detectResources,\n envDetector,\n hostDetector,\n processDetector,\n resourceFromAttributes,\n} from '@opentelemetry/resources';\nimport type {\n LogRecordProcessor,\n LogRecordExporter,\n} from '@opentelemetry/sdk-logs';\nimport {\n LoggerProvider,\n ConsoleLogRecordExporter,\n SimpleLogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport { OTLPLogExporter as OTLPHttpLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { OTLPLogExporter as OTLPGrpcLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc';\nimport { OTLPLogExporter as OTLPProtoLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { PrometheusExporter as PrometheusMetricExporter } from '@opentelemetry/exporter-prometheus';\nimport type { IMetricReader, ViewOptions } from '@opentelemetry/sdk-metrics';\nimport {\n MeterProvider,\n ConsoleMetricExporter,\n PeriodicExportingMetricReader,\n} from '@opentelemetry/sdk-metrics';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport type { NodeTracerConfig } from '@opentelemetry/sdk-trace-node';\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport type { NodeSDKConfiguration } from './types';\nimport {\n getBooleanFromEnv,\n getStringFromEnv,\n getStringListFromEnv,\n diagLogLevelFromString,\n} from '@opentelemetry/core';\nimport {\n getResourceDetectorsFromEnv,\n getSpanProcessorsFromEnv,\n getPropagatorFromEnv,\n setupPropagator,\n setupContextManager,\n getPeriodicExportingMetricReaderFromEnv,\n getOtlpMetricExporterFromEnv,\n getBatchLogRecordProcessorFromEnv,\n getLoggerProviderConfigFromEnv,\n} from './utils';\n\ntype TracerProviderConfig = {\n tracerConfig: NodeTracerConfig;\n spanProcessors: SpanProcessor[];\n};\n\nexport type MeterProviderConfig = {\n /**\n * Reference to the MetricReader instances by the NodeSDK\n */\n readers?: IMetricReader[];\n /**\n * List of {@link ViewOptions}s that should be passed to the MeterProvider\n */\n views?: ViewOptions[];\n};\n\nexport type LoggerProviderConfig = {\n /**\n * Reference to the LoggerRecordProcessor instance by the NodeSDK\n */\n logRecordProcessors: LogRecordProcessor[];\n};\n\n/**\n *\n * @returns MetricReader[] if appropriate environment variables are configured\n */\nfunction getMetricReadersFromEnv(): IMetricReader[] {\n const metricReaders: IMetricReader[] = [];\n const enabledExporters = Array.from(\n new Set(getStringListFromEnv('OTEL_METRICS_EXPORTER') ?? [])\n );\n\n if (enabledExporters.length === 0) {\n diag.debug('OTEL_METRICS_EXPORTER is empty. Using default otlp exporter.');\n enabledExporters.push('otlp');\n }\n\n if (enabledExporters.includes('none')) {\n diag.info(\n `OTEL_METRICS_EXPORTER contains \"none\". Metric provider will not be initialized.`\n );\n return metricReaders;\n }\n\n enabledExporters.forEach(exporter => {\n if (exporter === 'otlp') {\n metricReaders.push(\n getPeriodicExportingMetricReaderFromEnv(getOtlpMetricExporterFromEnv())\n );\n } else if (exporter === 'console') {\n metricReaders.push(\n new PeriodicExportingMetricReader({\n exporter: new ConsoleMetricExporter(),\n })\n );\n } else if (exporter === 'prometheus') {\n metricReaders.push(new PrometheusMetricExporter());\n } else {\n diag.warn(\n `Unsupported OTEL_METRICS_EXPORTER value: \"${exporter}\". Supported values are: otlp, console, prometheus, none.`\n );\n }\n });\n\n return metricReaders;\n}\n\n/**\n * A setup helper for the OpenTelemetry SDKs (logs, metrics, traces).\n * <p> After successful setup using {@link NodeSDK#start()}, use `@opentelemetry/api` to obtain the registered components.\n * <p> Use the shutdown handler {@link NodeSDK#shutdown()} to ensure your telemetry is exported before the process exits.\n *\n * @example <caption> Register SDK by using environment variables </caption>\n * const nodeSdk = new NodeSDK(); // providing no options uses OTEL_* environment variables for SDK setup.\n * nodeSdk.start(); // registers all configured SDK components\n * @example <caption> Override environment variable config with your own components </caption>\n * const nodeSdk = new NodeSDK({\n * // override the list of metric reader with your own options and ignore environment variable config\n * // explore the docs of other options to learn more!\n * metricReaders: [ new PeriodicExportingMetricReader({\n * exporter: new OTLPMetricsExporter()\n * })]\n * });\n * nodeSdk.start(); // registers all configured SDK components\n */\nexport class NodeSDK {\n private _tracerProviderConfig?: TracerProviderConfig;\n private _loggerProviderConfig?: LoggerProviderConfig;\n private _meterProviderConfig?: MeterProviderConfig;\n private _instrumentations: Instrumentation[];\n\n private _resource: Resource;\n private _resourceDetectors: Array<ResourceDetector>;\n\n private _autoDetectResources: boolean;\n\n private _tracerProvider?: NodeTracerProvider;\n private _loggerProvider?: LoggerProvider;\n private _meterProvider?: MeterProvider;\n private _serviceName?: string;\n private _configuration?: Partial<NodeSDKConfiguration>;\n\n private _disabled?: boolean;\n\n /**\n * Create a new NodeJS SDK instance\n */\n public constructor(configuration: Partial<NodeSDKConfiguration> = {}) {\n if (getBooleanFromEnv('OTEL_SDK_DISABLED')) {\n this._disabled = true;\n // Functions with possible side-effects are set\n // to no-op via the _disabled flag\n }\n\n const logLevel = getStringFromEnv('OTEL_LOG_LEVEL');\n if (logLevel != null) {\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel: diagLogLevelFromString(logLevel),\n });\n }\n\n this._configuration = configuration;\n\n this._resource = configuration.resource ?? defaultResource();\n this._autoDetectResources = configuration.autoDetectResources ?? true;\n if (!this._autoDetectResources) {\n this._resourceDetectors = [];\n } else if (configuration.resourceDetectors != null) {\n this._resourceDetectors = configuration.resourceDetectors;\n } else if (getStringFromEnv('OTEL_NODE_RESOURCE_DETECTORS')) {\n this._resourceDetectors = getResourceDetectorsFromEnv();\n } else {\n this._resourceDetectors = [envDetector, processDetector, hostDetector];\n }\n\n this._serviceName = configuration.serviceName;\n\n // If a tracer provider can be created from manual configuration, create it\n if (\n configuration.traceExporter ||\n configuration.spanProcessor ||\n configuration.spanProcessors\n ) {\n const tracerProviderConfig: NodeTracerConfig = {};\n\n if (configuration.sampler) {\n tracerProviderConfig.sampler = configuration.sampler;\n }\n if (configuration.spanLimits) {\n tracerProviderConfig.spanLimits = configuration.spanLimits;\n }\n if (configuration.idGenerator) {\n tracerProviderConfig.idGenerator = configuration.idGenerator;\n }\n\n if (configuration.spanProcessor) {\n diag.warn(\n \"The 'spanProcessor' option is deprecated. Please use 'spanProcessors' instead.\"\n );\n }\n\n const spanProcessor =\n configuration.spanProcessor ??\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n new BatchSpanProcessor(configuration.traceExporter!);\n\n const spanProcessors = configuration.spanProcessors ?? [spanProcessor];\n\n this._tracerProviderConfig = {\n tracerConfig: tracerProviderConfig,\n spanProcessors,\n };\n }\n\n if (configuration.logRecordProcessors) {\n this._loggerProviderConfig = {\n logRecordProcessors: configuration.logRecordProcessors,\n };\n } else if (configuration.logRecordProcessor) {\n this._loggerProviderConfig = {\n logRecordProcessors: [configuration.logRecordProcessor],\n };\n diag.warn(\n \"The 'logRecordProcessor' option is deprecated. Please use 'logRecordProcessors' instead.\"\n );\n } else {\n this.configureLoggerProviderFromEnv();\n }\n\n if (configuration.metricReaders) {\n this._meterProviderConfig = {\n readers: configuration.metricReaders,\n views: configuration.views,\n };\n } else if (configuration.metricReader) {\n this._meterProviderConfig = {\n readers: [configuration.metricReader],\n views: configuration.views,\n };\n diag.warn(\n \"The 'metricReader' option is deprecated. Please use 'metricReaders' instead.\"\n );\n } else {\n this._meterProviderConfig = {\n readers: getMetricReadersFromEnv(),\n views: configuration.views,\n };\n }\n\n this._instrumentations = configuration.instrumentations?.flat() ?? [];\n }\n\n /**\n * Call this method to construct SDK components and register them with the OpenTelemetry API.\n */\n public start(): void {\n if (this._disabled) {\n return;\n }\n\n registerInstrumentations({\n instrumentations: this._instrumentations,\n });\n\n setupContextManager(this._configuration?.contextManager);\n setupPropagator(\n this._configuration?.textMapPropagator === null\n ? null // null means don't set, so we cannot fall back to env config.\n : (this._configuration?.textMapPropagator ?? getPropagatorFromEnv())\n );\n\n if (this._autoDetectResources) {\n const internalConfig: ResourceDetectionConfig = {\n detectors: this._resourceDetectors,\n };\n\n this._resource = this._resource.merge(detectResources(internalConfig));\n }\n\n this._resource =\n this._serviceName === undefined\n ? this._resource\n : this._resource.merge(\n resourceFromAttributes({\n [ATTR_SERVICE_NAME]: this._serviceName,\n })\n );\n\n // While SDK metrics are unstable, we require an opt-in.\n // https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics/\n const sdkMetricsEnabled = getBooleanFromEnv(\n 'OTEL_NODE_EXPERIMENTAL_SDK_METRICS'\n );\n\n if (\n this._meterProviderConfig?.readers &&\n // only register if there is a reader, otherwise we waste compute/memory.\n this._meterProviderConfig.readers.length > 0\n ) {\n const meterProvider = new MeterProvider({\n resource: this._resource,\n views: this._meterProviderConfig?.views ?? [],\n readers: this._meterProviderConfig.readers,\n });\n\n this._meterProvider = meterProvider;\n metrics.setGlobalMeterProvider(meterProvider);\n\n // TODO: This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/3609\n // If the MeterProvider is not yet registered when instrumentations are registered, all metrics are dropped.\n // This code is obsolete once https://github.com/open-telemetry/opentelemetry-js/issues/3622 is implemented.\n for (const instrumentation of this._instrumentations) {\n instrumentation.setMeterProvider(metrics.getMeterProvider());\n }\n }\n\n const spanProcessors = this._tracerProviderConfig\n ? this._tracerProviderConfig.spanProcessors\n : getSpanProcessorsFromEnv();\n\n // Only register if there is a span processor\n if (spanProcessors.length > 0) {\n this._tracerProvider = new NodeTracerProvider({\n ...this._configuration,\n resource: this._resource,\n meterProvider: sdkMetricsEnabled ? this._meterProvider : undefined,\n spanProcessors,\n });\n trace.setGlobalTracerProvider(this._tracerProvider);\n }\n\n if (this._loggerProviderConfig) {\n const loggerProvider = new LoggerProvider({\n ...getLoggerProviderConfigFromEnv(),\n resource: this._resource,\n processors: this._loggerProviderConfig.logRecordProcessors,\n meterProvider: sdkMetricsEnabled ? this._meterProvider : undefined,\n });\n\n this._loggerProvider = loggerProvider;\n\n logs.setGlobalLoggerProvider(loggerProvider);\n }\n }\n\n public shutdown(): Promise<void> {\n const promises: Promise<unknown>[] = [];\n if (this._tracerProvider) {\n promises.push(this._tracerProvider.shutdown());\n }\n if (this._loggerProvider) {\n promises.push(this._loggerProvider.shutdown());\n }\n if (this._meterProvider) {\n promises.push(this._meterProvider.shutdown());\n }\n\n return (\n Promise.all(promises)\n // return void instead of the array from Promise.all\n .then(() => {})\n );\n }\n\n private configureLoggerProviderFromEnv(): void {\n const enabledExporters = Array.from(\n new Set(getStringListFromEnv('OTEL_LOGS_EXPORTER') ?? [])\n );\n\n if (enabledExporters.length === 0) {\n diag.debug('OTEL_LOGS_EXPORTER is empty. Using default otlp exporter.');\n enabledExporters.push('otlp');\n }\n\n if (enabledExporters.includes('none')) {\n diag.info(\n `OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.`\n );\n return;\n }\n\n const exporters: LogRecordExporter[] = [];\n\n enabledExporters.forEach(exporter => {\n if (exporter === 'otlp') {\n const protocol =\n (\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL')\n )?.trim() || 'http/protobuf'; // Using || to also fall back on empty string\n\n switch (protocol) {\n case 'grpc':\n exporters.push(new OTLPGrpcLogExporter());\n break;\n case 'http/json':\n exporters.push(new OTLPHttpLogExporter());\n break;\n case 'http/protobuf':\n exporters.push(new OTLPProtoLogExporter());\n break;\n default:\n diag.warn(\n `Unsupported OTLP logs protocol: \"${protocol}\". Using http/protobuf.`\n );\n exporters.push(new OTLPProtoLogExporter());\n }\n } else if (exporter === 'console') {\n exporters.push(new ConsoleLogRecordExporter());\n } else {\n diag.warn(\n `Unsupported OTEL_LOGS_EXPORTER value: \"${exporter}\". Supported values are: otlp, console, none.`\n );\n }\n });\n\n if (exporters.length > 0) {\n this._loggerProviderConfig = {\n logRecordProcessors: exporters.map(exporter => {\n if (exporter instanceof ConsoleLogRecordExporter) {\n return new SimpleLogRecordProcessor(exporter);\n } else {\n return getBatchLogRecordProcessorFromEnv(exporter);\n }\n }),\n };\n }\n }\n}\n"]}
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../../src/sdk.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { metrics, trace, diag, DiagConsoleLogger } from '@opentelemetry/api';\nimport { logs } from '@opentelemetry/api-logs';\nimport type { Instrumentation } from '@opentelemetry/instrumentation';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport type {\n Resource,\n ResourceDetectionConfig,\n ResourceDetector,\n} from '@opentelemetry/resources';\nimport {\n defaultResource,\n detectResources,\n envDetector,\n hostDetector,\n processDetector,\n resourceFromAttributes,\n} from '@opentelemetry/resources';\nimport type {\n LogRecordProcessor,\n LogRecordExporter,\n} from '@opentelemetry/sdk-logs';\nimport {\n LoggerProvider,\n ConsoleLogRecordExporter,\n SimpleLogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport { OTLPLogExporter as OTLPHttpLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { OTLPLogExporter as OTLPGrpcLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc';\nimport { OTLPLogExporter as OTLPProtoLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { PrometheusExporter as PrometheusMetricExporter } from '@opentelemetry/exporter-prometheus';\nimport type { IMetricReader, ViewOptions } from '@opentelemetry/sdk-metrics';\nimport {\n MeterProvider,\n ConsoleMetricExporter,\n PeriodicExportingMetricReader,\n} from '@opentelemetry/sdk-metrics';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport type { NodeTracerConfig } from '@opentelemetry/sdk-trace-node';\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport { ATTR_SERVICE_NAME } from '@opentelemetry/semantic-conventions';\nimport type { NodeSDKConfiguration } from './types';\nimport {\n getBooleanFromEnv,\n getStringFromEnv,\n getStringListFromEnv,\n diagLogLevelFromString,\n} from '@opentelemetry/core';\nimport {\n getResourceDetectorsFromEnv,\n getSpanProcessorsFromEnv,\n getPropagatorFromEnv,\n setupPropagator,\n setupContextManager,\n getPeriodicExportingMetricReaderFromEnv,\n getOtlpMetricExporterFromEnv,\n getBatchLogRecordProcessorFromEnv,\n getLoggerProviderConfigFromEnv,\n} from './utils';\n\ntype TracerProviderConfig = {\n tracerConfig: NodeTracerConfig;\n spanProcessors: SpanProcessor[];\n};\n\nexport type MeterProviderConfig = {\n /**\n * Reference to the MetricReader instances by the NodeSDK\n */\n readers?: IMetricReader[];\n /**\n * List of {@link ViewOptions}s that should be passed to the MeterProvider\n */\n views?: ViewOptions[];\n};\n\nexport type LoggerProviderConfig = {\n /**\n * Reference to the LoggerRecordProcessor instance by the NodeSDK\n */\n logRecordProcessors: LogRecordProcessor[];\n};\n\n/**\n *\n * @returns MetricReader[] if appropriate environment variables are configured\n */\nfunction getMetricReadersFromEnv(): IMetricReader[] {\n const metricReaders: IMetricReader[] = [];\n const enabledExporters = Array.from(\n new Set(getStringListFromEnv('OTEL_METRICS_EXPORTER') ?? [])\n );\n\n if (enabledExporters.length === 0) {\n diag.debug('OTEL_METRICS_EXPORTER is empty. Using default otlp exporter.');\n enabledExporters.push('otlp');\n }\n\n if (enabledExporters.includes('none')) {\n diag.info(\n 'OTEL_METRICS_EXPORTER contains \"none\". Metric provider will not be initialized.'\n );\n return metricReaders;\n }\n\n enabledExporters.forEach(exporter => {\n if (exporter === 'otlp') {\n metricReaders.push(\n getPeriodicExportingMetricReaderFromEnv(getOtlpMetricExporterFromEnv())\n );\n } else if (exporter === 'console') {\n metricReaders.push(\n new PeriodicExportingMetricReader({\n exporter: new ConsoleMetricExporter(),\n })\n );\n } else if (exporter === 'prometheus') {\n metricReaders.push(new PrometheusMetricExporter());\n } else {\n diag.warn(\n `Unsupported OTEL_METRICS_EXPORTER value: \"${exporter}\". Supported values are: otlp, console, prometheus, none.`\n );\n }\n });\n\n return metricReaders;\n}\n\n/**\n * A setup helper for the OpenTelemetry SDKs (logs, metrics, traces).\n * <p> After successful setup using {@link NodeSDK#start()}, use `@opentelemetry/api` to obtain the registered components.\n * <p> Use the shutdown handler {@link NodeSDK#shutdown()} to ensure your telemetry is exported before the process exits.\n *\n * @example <caption> Register SDK by using environment variables </caption>\n * const nodeSdk = new NodeSDK(); // providing no options uses OTEL_* environment variables for SDK setup.\n * nodeSdk.start(); // registers all configured SDK components\n * @example <caption> Override environment variable config with your own components </caption>\n * const nodeSdk = new NodeSDK({\n * // override the list of metric reader with your own options and ignore environment variable config\n * // explore the docs of other options to learn more!\n * metricReaders: [ new PeriodicExportingMetricReader({\n * exporter: new OTLPMetricsExporter()\n * })]\n * });\n * nodeSdk.start(); // registers all configured SDK components\n */\nexport class NodeSDK {\n private _tracerProviderConfig?: TracerProviderConfig;\n private _loggerProviderConfig?: LoggerProviderConfig;\n private _meterProviderConfig?: MeterProviderConfig;\n private _instrumentations: Instrumentation[];\n\n private _resource: Resource;\n private _resourceDetectors: Array<ResourceDetector>;\n\n private _autoDetectResources: boolean;\n\n private _tracerProvider?: NodeTracerProvider;\n private _loggerProvider?: LoggerProvider;\n private _meterProvider?: MeterProvider;\n private _serviceName?: string;\n private _configuration?: Partial<NodeSDKConfiguration>;\n\n private _disabled?: boolean;\n\n /**\n * Create a new NodeJS SDK instance\n */\n public constructor(configuration: Partial<NodeSDKConfiguration> = {}) {\n if (getBooleanFromEnv('OTEL_SDK_DISABLED')) {\n this._disabled = true;\n // Functions with possible side-effects are set\n // to no-op via the _disabled flag\n }\n\n const logLevel = getStringFromEnv('OTEL_LOG_LEVEL');\n if (logLevel != null) {\n diag.setLogger(new DiagConsoleLogger(), {\n logLevel: diagLogLevelFromString(logLevel),\n });\n }\n\n this._configuration = configuration;\n\n this._resource = configuration.resource ?? defaultResource();\n this._autoDetectResources = configuration.autoDetectResources ?? true;\n if (!this._autoDetectResources) {\n this._resourceDetectors = [];\n } else if (configuration.resourceDetectors != null) {\n this._resourceDetectors = configuration.resourceDetectors;\n } else if (getStringFromEnv('OTEL_NODE_RESOURCE_DETECTORS')) {\n this._resourceDetectors = getResourceDetectorsFromEnv();\n } else {\n this._resourceDetectors = [envDetector, processDetector, hostDetector];\n }\n\n this._serviceName = configuration.serviceName;\n\n // If a tracer provider can be created from manual configuration, create it\n if (\n configuration.traceExporter ||\n configuration.spanProcessor ||\n configuration.spanProcessors\n ) {\n const tracerProviderConfig: NodeTracerConfig = {};\n\n if (configuration.sampler) {\n tracerProviderConfig.sampler = configuration.sampler;\n }\n if (configuration.spanLimits) {\n tracerProviderConfig.spanLimits = configuration.spanLimits;\n }\n if (configuration.idGenerator) {\n tracerProviderConfig.idGenerator = configuration.idGenerator;\n }\n\n if (configuration.spanProcessor) {\n diag.warn(\n \"The 'spanProcessor' option is deprecated. Please use 'spanProcessors' instead.\"\n );\n }\n\n const spanProcessor =\n configuration.spanProcessor ??\n new BatchSpanProcessor(configuration.traceExporter!);\n\n const spanProcessors = configuration.spanProcessors ?? [spanProcessor];\n\n this._tracerProviderConfig = {\n tracerConfig: tracerProviderConfig,\n spanProcessors,\n };\n }\n\n if (configuration.logRecordProcessors) {\n this._loggerProviderConfig = {\n logRecordProcessors: configuration.logRecordProcessors,\n };\n } else if (configuration.logRecordProcessor) {\n this._loggerProviderConfig = {\n logRecordProcessors: [configuration.logRecordProcessor],\n };\n diag.warn(\n \"The 'logRecordProcessor' option is deprecated. Please use 'logRecordProcessors' instead.\"\n );\n } else {\n this.configureLoggerProviderFromEnv();\n }\n\n if (configuration.metricReaders) {\n this._meterProviderConfig = {\n readers: configuration.metricReaders,\n views: configuration.views,\n };\n } else if (configuration.metricReader) {\n this._meterProviderConfig = {\n readers: [configuration.metricReader],\n views: configuration.views,\n };\n diag.warn(\n \"The 'metricReader' option is deprecated. Please use 'metricReaders' instead.\"\n );\n } else {\n this._meterProviderConfig = {\n readers: getMetricReadersFromEnv(),\n views: configuration.views,\n };\n }\n\n this._instrumentations = configuration.instrumentations?.flat() ?? [];\n }\n\n /**\n * Call this method to construct SDK components and register them with the OpenTelemetry API.\n */\n public start(): void {\n if (this._disabled) {\n return;\n }\n\n registerInstrumentations({\n instrumentations: this._instrumentations,\n });\n\n setupContextManager(this._configuration?.contextManager);\n setupPropagator(\n this._configuration?.textMapPropagator === null\n ? null // null means don't set, so we cannot fall back to env config.\n : (this._configuration?.textMapPropagator ?? getPropagatorFromEnv())\n );\n\n if (this._autoDetectResources) {\n const internalConfig: ResourceDetectionConfig = {\n detectors: this._resourceDetectors,\n };\n\n this._resource = this._resource.merge(detectResources(internalConfig));\n }\n\n this._resource =\n this._serviceName === undefined\n ? this._resource\n : this._resource.merge(\n resourceFromAttributes({\n [ATTR_SERVICE_NAME]: this._serviceName,\n })\n );\n\n // While SDK metrics are unstable, we require an opt-in.\n // https://opentelemetry.io/docs/specs/semconv/otel/sdk-metrics/\n const sdkMetricsEnabled = getBooleanFromEnv(\n 'OTEL_NODE_EXPERIMENTAL_SDK_METRICS'\n );\n\n if (\n this._meterProviderConfig?.readers &&\n // only register if there is a reader, otherwise we waste compute/memory.\n this._meterProviderConfig.readers.length > 0\n ) {\n const meterProvider = new MeterProvider({\n resource: this._resource,\n views: this._meterProviderConfig?.views ?? [],\n readers: this._meterProviderConfig.readers,\n sdkMetricsEnabled,\n });\n\n this._meterProvider = meterProvider;\n metrics.setGlobalMeterProvider(meterProvider);\n\n // TODO: This is a workaround to fix https://github.com/open-telemetry/opentelemetry-js/issues/3609\n // If the MeterProvider is not yet registered when instrumentations are registered, all metrics are dropped.\n // This code is obsolete once https://github.com/open-telemetry/opentelemetry-js/issues/3622 is implemented.\n for (const instrumentation of this._instrumentations) {\n instrumentation.setMeterProvider(metrics.getMeterProvider());\n }\n }\n\n const spanProcessors = this._tracerProviderConfig\n ? this._tracerProviderConfig.spanProcessors\n : getSpanProcessorsFromEnv();\n\n // Only register if there is a span processor\n if (spanProcessors.length > 0) {\n this._tracerProvider = new NodeTracerProvider({\n ...this._configuration,\n resource: this._resource,\n meterProvider: sdkMetricsEnabled ? this._meterProvider : undefined,\n spanProcessors,\n });\n trace.setGlobalTracerProvider(this._tracerProvider);\n }\n\n if (this._loggerProviderConfig) {\n const loggerProvider = new LoggerProvider({\n ...getLoggerProviderConfigFromEnv(),\n resource: this._resource,\n processors: this._loggerProviderConfig.logRecordProcessors,\n meterProvider: sdkMetricsEnabled ? this._meterProvider : undefined,\n });\n\n this._loggerProvider = loggerProvider;\n\n logs.setGlobalLoggerProvider(loggerProvider);\n }\n }\n\n public shutdown(): Promise<void> {\n const promises: Promise<unknown>[] = [];\n if (this._tracerProvider) {\n promises.push(this._tracerProvider.shutdown());\n }\n if (this._loggerProvider) {\n promises.push(this._loggerProvider.shutdown());\n }\n if (this._meterProvider) {\n promises.push(this._meterProvider.shutdown());\n }\n\n return (\n Promise.all(promises)\n // return void instead of the array from Promise.all\n .then(() => {})\n );\n }\n\n private configureLoggerProviderFromEnv(): void {\n const enabledExporters = Array.from(\n new Set(getStringListFromEnv('OTEL_LOGS_EXPORTER') ?? [])\n );\n\n if (enabledExporters.length === 0) {\n diag.debug('OTEL_LOGS_EXPORTER is empty. Using default otlp exporter.');\n enabledExporters.push('otlp');\n }\n\n if (enabledExporters.includes('none')) {\n diag.info(\n 'OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.'\n );\n return;\n }\n\n const exporters: LogRecordExporter[] = [];\n\n enabledExporters.forEach(exporter => {\n if (exporter === 'otlp') {\n const protocol =\n (\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL')\n )?.trim() || 'http/protobuf'; // Using || to also fall back on empty string\n\n switch (protocol) {\n case 'grpc':\n exporters.push(new OTLPGrpcLogExporter());\n break;\n case 'http/json':\n exporters.push(new OTLPHttpLogExporter());\n break;\n case 'http/protobuf':\n exporters.push(new OTLPProtoLogExporter());\n break;\n default:\n diag.warn(\n `Unsupported OTLP logs protocol: \"${protocol}\". Using http/protobuf.`\n );\n exporters.push(new OTLPProtoLogExporter());\n }\n } else if (exporter === 'console') {\n exporters.push(new ConsoleLogRecordExporter());\n } else {\n diag.warn(\n `Unsupported OTEL_LOGS_EXPORTER value: \"${exporter}\". Supported values are: otlp, console, none.`\n );\n }\n });\n\n if (exporters.length > 0) {\n this._loggerProviderConfig = {\n logRecordProcessors: exporters.map(exporter => {\n if (exporter instanceof ConsoleLogRecordExporter) {\n return new SimpleLogRecordProcessor(exporter);\n } else {\n return getBatchLogRecordProcessorFromEnv(exporter);\n }\n }),\n };\n }\n }\n}\n"]}

@@ -119,4 +119,4 @@ "use strict";

generalLimits: {
attributeValueLengthLimit: config.attribute_limits?.attribute_value_length_limit,
attributeCountLimit: config.attribute_limits?.attribute_count_limit,
attributeValueLengthLimit: config.attribute_limits?.attribute_value_length_limit ?? undefined,
attributeCountLimit: config.attribute_limits?.attribute_count_limit ?? undefined,
},

@@ -123,0 +123,0 @@ // TODO (6616): support idGenerator configuration from config

@@ -1,1 +0,1 @@

{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/start.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type {\n ConfigFactory,\n ConfigurationModel,\n} from '@opentelemetry/configuration';\nimport { createConfigFactory } from '@opentelemetry/configuration';\nimport {\n context,\n diag,\n DiagConsoleLogger,\n metrics,\n trace,\n propagation,\n} from '@opentelemetry/api';\nimport {\n getInstanceID,\n getLogRecordProcessorsFromConfiguration,\n getMeterReadersFromConfiguration,\n getMeterViewsFromConfiguration,\n getPropagatorFromConfiguration,\n getResourceDetectorsFromConfiguration,\n getResourceFromConfiguration,\n getSpanLimitsFromConfiguration,\n getSpanProcessorsFromConfiguration,\n} from './utils';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport type { SDKComponents, SDKOptions } from './types';\nimport { LoggerProvider } from '@opentelemetry/sdk-logs';\nimport { MeterProvider } from '@opentelemetry/sdk-metrics';\nimport { logs } from '@opentelemetry/api-logs';\nimport type {\n Resource,\n ResourceDetectionConfig,\n ResourceDetector,\n} from '@opentelemetry/resources';\nimport {\n defaultResource,\n detectResources,\n resourceFromAttributes,\n} from '@opentelemetry/resources';\nimport { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { ATTR_SERVICE_INSTANCE_ID } from './semconv';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport { diagLogLevelFromSeverityNumberConfig } from './diag';\n\n// Exported for testing.\nexport const NOOP_SDK = {\n shutdown: async () => {},\n};\n\n/**\n * @experimental Function to start the OpenTelemetry Node SDK\n * @param sdkOptions\n */\nexport function startNodeSDK(sdkOptions?: SDKOptions): {\n shutdown: () => Promise<void>;\n} {\n let config: ConfigurationModel;\n try {\n const configFactory: ConfigFactory = createConfigFactory();\n config = configFactory.getConfigModel();\n } catch (configErr) {\n // Set the diag logger, otherwise the diag.error will typically not be shown.\n const logLevel = diagLogLevelFromSeverityNumberConfig();\n diag.setLogger(new DiagConsoleLogger(), { logLevel });\n diag.error(\n `Could not load OpenTelemetry configuration, SDK will not be setup: ${configErr.message}`\n );\n return NOOP_SDK;\n }\n\n if (config.disabled) {\n return NOOP_SDK;\n }\n\n const logLevel = diagLogLevelFromSeverityNumberConfig(config.log_level);\n diag.setLogger(new DiagConsoleLogger(), { logLevel });\n\n registerInstrumentations({\n instrumentations: sdkOptions?.instrumentations?.flat() ?? [],\n });\n\n const components = create(config, sdkOptions);\n context.setGlobalContextManager(components.contextManager);\n if (components.loggerProvider) {\n logs.setGlobalLoggerProvider(components.loggerProvider);\n }\n if (components.meterProvider) {\n metrics.setGlobalMeterProvider(components.meterProvider);\n }\n if (components.tracerProvider) {\n trace.setGlobalTracerProvider(components.tracerProvider);\n }\n if (components.propagator) {\n propagation.setGlobalPropagator(components.propagator);\n }\n\n const shutdownFn = async () => {\n const promises: Promise<unknown>[] = [];\n if (components.loggerProvider) {\n promises.push(components.loggerProvider.shutdown());\n }\n if (components.meterProvider) {\n promises.push(components.meterProvider.shutdown());\n }\n if (components.tracerProvider) {\n promises.push(components.tracerProvider.shutdown());\n }\n await Promise.all(promises);\n };\n return { shutdown: shutdownFn };\n}\n\n/**\n * Interpret configuration model and return SDK components.\n */\nfunction create(\n config: ConfigurationModel,\n sdkOptions?: SDKOptions\n): SDKComponents {\n const defaultContextManager = new AsyncLocalStorageContextManager();\n defaultContextManager.enable();\n const components: SDKComponents = {\n contextManager: defaultContextManager,\n };\n const resource = setupResource(config, sdkOptions);\n\n const propagator =\n sdkOptions?.textMapPropagator === null\n ? null\n : (sdkOptions?.textMapPropagator ??\n getPropagatorFromConfiguration(config));\n if (propagator) {\n components.propagator = propagator;\n }\n\n const logProcessors = getLogRecordProcessorsFromConfiguration(config);\n if (logProcessors) {\n const loggerProvider = new LoggerProvider({\n resource: resource,\n processors: logProcessors,\n });\n components.loggerProvider = loggerProvider;\n }\n\n const meterReaders = getMeterReadersFromConfiguration(config);\n if (meterReaders) {\n const meterViews = getMeterViewsFromConfiguration(config);\n const meterProvider = new MeterProvider({\n resource: resource,\n readers: meterReaders,\n views: meterViews ?? [],\n });\n components.meterProvider = meterProvider;\n }\n\n const spanProcessors = getSpanProcessorsFromConfiguration(config);\n if (spanProcessors) {\n const spanLimits = getSpanLimitsFromConfiguration(config);\n // TODO (6506): support sampler configuration from config\n const tracerProvider = new BasicTracerProvider({\n resource,\n spanProcessors,\n spanLimits,\n generalLimits: {\n attributeValueLengthLimit:\n config.attribute_limits?.attribute_value_length_limit,\n attributeCountLimit: config.attribute_limits?.attribute_count_limit,\n },\n // TODO (6616): support idGenerator configuration from config\n // TODO (6624): support for `meterProvider: components.meterProvider`\n });\n components.tracerProvider = tracerProvider;\n }\n\n return components;\n}\n\nexport function setupResource(\n config: ConfigurationModel,\n sdkOptions?: SDKOptions\n): Resource {\n let resource: Resource =\n getResourceFromConfiguration(config) ?? defaultResource();\n let resourceDetectors: ResourceDetector[] = [];\n\n if (sdkOptions?.resourceDetectors != null) {\n resourceDetectors = sdkOptions.resourceDetectors;\n } else if (config.resource?.['detection/development']?.detectors) {\n resourceDetectors = getResourceDetectorsFromConfiguration(config);\n }\n\n if (resourceDetectors.length > 0) {\n const internalConfig: ResourceDetectionConfig = {\n detectors: resourceDetectors,\n };\n resource = resource.merge(detectResources(internalConfig));\n }\n\n const instanceId = getInstanceID(config);\n resource =\n instanceId === undefined\n ? resource\n : resource.merge(\n resourceFromAttributes({\n [ATTR_SERVICE_INSTANCE_ID]: instanceId,\n })\n );\n\n return resource;\n}\n"]}
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/start.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\nimport type {\n ConfigFactory,\n ConfigurationModel,\n} from '@opentelemetry/configuration';\nimport { createConfigFactory } from '@opentelemetry/configuration';\nimport {\n context,\n diag,\n DiagConsoleLogger,\n metrics,\n trace,\n propagation,\n} from '@opentelemetry/api';\nimport {\n getInstanceID,\n getLogRecordProcessorsFromConfiguration,\n getMeterReadersFromConfiguration,\n getMeterViewsFromConfiguration,\n getPropagatorFromConfiguration,\n getResourceDetectorsFromConfiguration,\n getResourceFromConfiguration,\n getSpanLimitsFromConfiguration,\n getSpanProcessorsFromConfiguration,\n} from './utils';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport type { SDKComponents, SDKOptions } from './types';\nimport { LoggerProvider } from '@opentelemetry/sdk-logs';\nimport { MeterProvider } from '@opentelemetry/sdk-metrics';\nimport { logs } from '@opentelemetry/api-logs';\nimport type {\n Resource,\n ResourceDetectionConfig,\n ResourceDetector,\n} from '@opentelemetry/resources';\nimport {\n defaultResource,\n detectResources,\n resourceFromAttributes,\n} from '@opentelemetry/resources';\nimport { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { ATTR_SERVICE_INSTANCE_ID } from './semconv';\nimport { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';\nimport { diagLogLevelFromSeverityNumberConfig } from './diag';\n\n// Exported for testing.\nexport const NOOP_SDK = {\n shutdown: async () => {},\n};\n\n/**\n * @experimental Function to start the OpenTelemetry Node SDK\n * @param sdkOptions\n */\nexport function startNodeSDK(sdkOptions?: SDKOptions): {\n shutdown: () => Promise<void>;\n} {\n let config: ConfigurationModel;\n try {\n const configFactory: ConfigFactory = createConfigFactory();\n config = configFactory.getConfigModel();\n } catch (configErr) {\n // Set the diag logger, otherwise the diag.error will typically not be shown.\n const logLevel = diagLogLevelFromSeverityNumberConfig();\n diag.setLogger(new DiagConsoleLogger(), { logLevel });\n diag.error(\n `Could not load OpenTelemetry configuration, SDK will not be setup: ${configErr.message}`\n );\n return NOOP_SDK;\n }\n\n if (config.disabled) {\n return NOOP_SDK;\n }\n\n const logLevel = diagLogLevelFromSeverityNumberConfig(config.log_level);\n diag.setLogger(new DiagConsoleLogger(), { logLevel });\n\n registerInstrumentations({\n instrumentations: sdkOptions?.instrumentations?.flat() ?? [],\n });\n\n const components = create(config, sdkOptions);\n context.setGlobalContextManager(components.contextManager);\n if (components.loggerProvider) {\n logs.setGlobalLoggerProvider(components.loggerProvider);\n }\n if (components.meterProvider) {\n metrics.setGlobalMeterProvider(components.meterProvider);\n }\n if (components.tracerProvider) {\n trace.setGlobalTracerProvider(components.tracerProvider);\n }\n if (components.propagator) {\n propagation.setGlobalPropagator(components.propagator);\n }\n\n const shutdownFn = async () => {\n const promises: Promise<unknown>[] = [];\n if (components.loggerProvider) {\n promises.push(components.loggerProvider.shutdown());\n }\n if (components.meterProvider) {\n promises.push(components.meterProvider.shutdown());\n }\n if (components.tracerProvider) {\n promises.push(components.tracerProvider.shutdown());\n }\n await Promise.all(promises);\n };\n return { shutdown: shutdownFn };\n}\n\n/**\n * Interpret configuration model and return SDK components.\n */\nfunction create(\n config: ConfigurationModel,\n sdkOptions?: SDKOptions\n): SDKComponents {\n const defaultContextManager = new AsyncLocalStorageContextManager();\n defaultContextManager.enable();\n const components: SDKComponents = {\n contextManager: defaultContextManager,\n };\n const resource = setupResource(config, sdkOptions);\n\n const propagator =\n sdkOptions?.textMapPropagator === null\n ? null\n : (sdkOptions?.textMapPropagator ??\n getPropagatorFromConfiguration(config));\n if (propagator) {\n components.propagator = propagator;\n }\n\n const logProcessors = getLogRecordProcessorsFromConfiguration(config);\n if (logProcessors) {\n const loggerProvider = new LoggerProvider({\n resource: resource,\n processors: logProcessors,\n });\n components.loggerProvider = loggerProvider;\n }\n\n const meterReaders = getMeterReadersFromConfiguration(config);\n if (meterReaders) {\n const meterViews = getMeterViewsFromConfiguration(config);\n const meterProvider = new MeterProvider({\n resource: resource,\n readers: meterReaders,\n views: meterViews ?? [],\n });\n components.meterProvider = meterProvider;\n }\n\n const spanProcessors = getSpanProcessorsFromConfiguration(config);\n if (spanProcessors) {\n const spanLimits = getSpanLimitsFromConfiguration(config);\n // TODO (6506): support sampler configuration from config\n const tracerProvider = new BasicTracerProvider({\n resource,\n spanProcessors,\n spanLimits,\n generalLimits: {\n attributeValueLengthLimit:\n config.attribute_limits?.attribute_value_length_limit ?? undefined,\n attributeCountLimit:\n config.attribute_limits?.attribute_count_limit ?? undefined,\n },\n // TODO (6616): support idGenerator configuration from config\n // TODO (6624): support for `meterProvider: components.meterProvider`\n });\n components.tracerProvider = tracerProvider;\n }\n\n return components;\n}\n\nexport function setupResource(\n config: ConfigurationModel,\n sdkOptions?: SDKOptions\n): Resource {\n let resource: Resource =\n getResourceFromConfiguration(config) ?? defaultResource();\n let resourceDetectors: ResourceDetector[] = [];\n\n if (sdkOptions?.resourceDetectors != null) {\n resourceDetectors = sdkOptions.resourceDetectors;\n } else if (config.resource?.['detection/development']?.detectors) {\n resourceDetectors = getResourceDetectorsFromConfiguration(config);\n }\n\n if (resourceDetectors.length > 0) {\n const internalConfig: ResourceDetectionConfig = {\n detectors: resourceDetectors,\n };\n resource = resource.merge(detectResources(internalConfig));\n }\n\n const instanceId = getInstanceID(config);\n resource =\n instanceId === undefined\n ? resource\n : resource.merge(\n resourceFromAttributes({\n [ATTR_SERVICE_INSTANCE_ID]: instanceId,\n })\n );\n\n return resource;\n}\n"]}

@@ -60,3 +60,3 @@ /// <reference types="node" />

*/
export declare function buildSamplerFromConfig(config: SamplerConfigModel): Sampler;
export declare function buildSamplerFromConfig(samplerConfig: SamplerConfigModel): Sampler;
//# sourceMappingURL=utils.d.ts.map

@@ -23,2 +23,3 @@ "use strict";

const otlp_exporter_base_1 = require("@opentelemetry/otlp-exporter-base");
const otlp_grpc_exporter_base_1 = require("@opentelemetry/otlp-grpc-exporter-base");
const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");

@@ -37,9 +38,13 @@ const exporter_metrics_otlp_grpc_1 = require("@opentelemetry/exporter-metrics-otlp-grpc");

if (config.resource && config.resource.attributes) {
const attr = {};
const attrs = {};
for (let i = 0; i < config.resource.attributes.length; i++) {
const a = config.resource.attributes[i];
attr[a.name] = a.value;
// https://github.com/open-telemetry/opentelemetry-configuration/issues/613
// will likely clarify that entries with a `null` value should be ignored.
if (a.value !== null) {
attrs[a.name] = a.value;
}
}
return (0, resources_1.resourceFromAttributes)(attr, {
schemaUrl: config.resource.schema_url,
return (0, resources_1.resourceFromAttributes)(attrs, {
schemaUrl: config.resource.schema_url ?? undefined,
});

@@ -79,11 +84,11 @@ }

const result = [];
if (detector.host != null)
if (detector.host !== undefined)
result.push(resources_1.hostDetector);
if (detector.os != null)
if (detector.os !== undefined)
result.push(resources_1.osDetector);
if (detector.process != null)
if (detector.process !== undefined)
result.push(resources_1.processDetector);
if (detector.service != null)
if (detector.service !== undefined)
result.push(resources_1.serviceInstanceIdDetector);
if (detector.env != null)
if (detector.env !== undefined)
result.push(resources_1.envDetector);

@@ -364,10 +369,33 @@ return result;

exports.getOtlpMetricExporterFromEnv = getOtlpMetricExporterFromEnv;
function getMetricProducersFromConfiguration(producers) {
if (!producers || producers.length === 0) {
return undefined;
}
const result = [];
for (const producer of producers) {
if (producer.opencensus) {
try {
const { OpenCensusMetricProducer,
// eslint-disable-next-line @typescript-eslint/no-require-imports
} = require('@opentelemetry/shim-opencensus');
result.push(new OpenCensusMetricProducer());
}
catch {
api_1.diag.warn('OpenCensus metric producer configured but @opentelemetry/shim-opencensus is not installed.');
}
}
else {
api_1.diag.warn('Unsupported metric producer configured.');
}
}
return result.length > 0 ? result : undefined;
}
function getPeriodicMetricReaderFromConfiguration(periodic) {
if (periodic.exporter) {
let exporter;
if (periodic.exporter.otlp_http) {
const encoding = periodic.exporter.otlp_http.encoding;
if (periodic.exporter.otlp_http !== undefined) {
const encoding = periodic.exporter.otlp_http?.encoding ?? 'protobuf';
if (encoding === 'json') {
exporter = new exporter_metrics_otlp_http_1.OTLPMetricExporter({
compression: periodic.exporter.otlp_http.compression === 'gzip'
compression: periodic.exporter.otlp_http?.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP

@@ -379,3 +407,3 @@ : otlp_exporter_base_1.CompressionAlgorithm.NONE,

exporter = new exporter_metrics_otlp_proto_1.OTLPMetricExporter({
compression: periodic.exporter.otlp_http.compression === 'gzip'
compression: periodic.exporter.otlp_http?.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP

@@ -389,5 +417,5 @@ : otlp_exporter_base_1.CompressionAlgorithm.NONE,

}
if (periodic.exporter.otlp_grpc) {
if (periodic.exporter.otlp_grpc !== undefined) {
exporter = new exporter_metrics_otlp_grpc_1.OTLPMetricExporter({
compression: periodic.exporter.otlp_grpc.compression === 'gzip'
compression: periodic.exporter.otlp_grpc?.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP

@@ -397,2 +425,3 @@ : otlp_exporter_base_1.CompressionAlgorithm.NONE,

}
const metricProducers = getMetricProducersFromConfiguration(periodic.producers);
if (exporter) {

@@ -404,11 +433,13 @@ // TODO(6425): add cardinality_limits

exporter,
metricProducers,
});
}
if (periodic.exporter.console) {
if (periodic.exporter.console !== undefined) {
return new sdk_metrics_1.PeriodicExportingMetricReader({
exporter: new sdk_metrics_1.ConsoleMetricExporter(),
metricProducers,
});
}
}
api_1.diag.warn(`Unsupported Metric Exporter.`);
api_1.diag.warn('Unsupported Metric Exporter.');
return undefined;

@@ -447,36 +478,39 @@ }

function getLogRecordExporter(exporter) {
if (exporter.otlp_http) {
const encoding = exporter.otlp_http.encoding;
if (exporter.otlp_http !== undefined) {
const cfg = exporter.otlp_http;
const commonOpts = {
compression: cfg?.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP
: otlp_exporter_base_1.CompressionAlgorithm.NONE,
url: cfg?.endpoint ?? undefined,
headers: getHeadersFromConfiguration(cfg?.headers),
timeoutMillis: validateExporterTimeout(cfg?.timeout),
httpAgentOptions: getHttpAgentOptionsFromTls(cfg?.tls),
};
const encoding = cfg?.encoding ?? 'protobuf';
if (encoding === 'json') {
return new exporter_logs_otlp_http_1.OTLPLogExporter({
compression: exporter.otlp_http.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP
: otlp_exporter_base_1.CompressionAlgorithm.NONE,
});
return new exporter_logs_otlp_http_1.OTLPLogExporter(commonOpts);
}
if (encoding === 'protobuf') {
return new exporter_logs_otlp_proto_1.OTLPLogExporter({
compression: exporter.otlp_http.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP
: otlp_exporter_base_1.CompressionAlgorithm.NONE,
});
return new exporter_logs_otlp_proto_1.OTLPLogExporter(commonOpts);
}
api_1.diag.warn(`Unsupported OTLP logs encoding: ${encoding}. Using http/protobuf.`);
return new exporter_logs_otlp_proto_1.OTLPLogExporter({
compression: exporter.otlp_http.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP
: otlp_exporter_base_1.CompressionAlgorithm.NONE,
});
return new exporter_logs_otlp_proto_1.OTLPLogExporter(commonOpts);
}
else if (exporter.otlp_grpc) {
else if (exporter.otlp_grpc !== undefined) {
const cfg = exporter.otlp_grpc;
return new exporter_logs_otlp_grpc_1.OTLPLogExporter({
compression: exporter.otlp_grpc.compression === 'gzip'
compression: cfg?.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP
: otlp_exporter_base_1.CompressionAlgorithm.NONE,
url: cfg?.endpoint ?? undefined,
timeoutMillis: validateExporterTimeout(cfg?.timeout),
credentials: getGrpcCredentialsFromTls(cfg?.tls),
metadata: getGrpcMetadataFromHeaders(cfg?.headers),
});
}
else if (exporter.console) {
else if (exporter.console !== undefined) {
return new sdk_logs_1.ConsoleLogRecordExporter();
}
api_1.diag.warn(`Unsupported Exporter value. No Log Record Exporter registered`);
api_1.diag.warn('Unsupported Exporter value. No Log Record Exporter registered');
return undefined;

@@ -492,6 +526,6 @@ }

logRecordProcessors.push(new sdk_logs_1.BatchLogRecordProcessor(exporter, {
maxQueueSize: processor.batch.max_queue_size,
maxExportBatchSize: processor.batch.max_export_batch_size,
scheduledDelayMillis: processor.batch.schedule_delay,
exportTimeoutMillis: processor.batch.export_timeout,
maxQueueSize: processor.batch.max_queue_size ?? undefined,
maxExportBatchSize: processor.batch.max_export_batch_size ?? undefined,
scheduledDelayMillis: processor.batch.schedule_delay ?? undefined,
exportTimeoutMillis: processor.batch.export_timeout ?? undefined,
}));

@@ -519,3 +553,5 @@ }

headers.forEach(header => {
result[header.name] = header.value;
if (header.value !== null) {
result[header.name] = header.value;
}
});

@@ -525,46 +561,81 @@ return result;

exports.getHeadersFromConfiguration = getHeadersFromConfiguration;
/**
* Validate an exporter timeout value. The spec says 0 means "no limit
* (infinity)" but the JS exporters don't support that yet (see #6617).
* Warn and return undefined so the exporter falls back to its default.
*/
function validateExporterTimeout(timeout) {
if (timeout === null) {
return undefined;
}
else if (timeout === 0) {
api_1.diag.warn('Exporter timeout of 0 (infinite) is not supported. Using default timeout.');
return undefined;
}
return timeout;
}
function getHttpAgentOptionsFromTls(tls) {
if (tls && (tls.ca_file || tls.cert_file || tls.key_file)) {
const httpsAgentOptions = {};
if (tls.ca_file) {
try {
httpsAgentOptions.ca = fs.readFileSync(tls.ca_file);
}
catch (e) {
api_1.diag.warn(`Failed to read TLS CA file at ${tls.ca_file}: ${e}`);
}
return {
ca: readFileOrWarn(tls.ca_file, 'TLS CA'),
cert: readFileOrWarn(tls.cert_file, 'TLS cert'),
key: readFileOrWarn(tls.key_file, 'TLS key'),
};
}
return undefined;
}
exports.getHttpAgentOptionsFromTls = getHttpAgentOptionsFromTls;
function getGrpcCredentialsFromTls(tls) {
if (tls?.insecure) {
return (0, otlp_grpc_exporter_base_1.createInsecureCredentials)();
}
const rootCert = readFileOrWarn(tls?.ca_file, 'TLS CA');
const privateKey = readFileOrWarn(tls?.key_file, 'TLS key');
const certChain = readFileOrWarn(tls?.cert_file, 'TLS cert');
if (rootCert || privateKey || certChain) {
try {
return (0, otlp_grpc_exporter_base_1.createSslCredentials)(rootCert, privateKey, certChain);
}
if (tls.cert_file) {
try {
httpsAgentOptions.cert = fs.readFileSync(tls.cert_file);
}
catch (e) {
api_1.diag.warn(`Failed to read TLS cert file at ${tls.cert_file}: ${e}`);
}
catch (e) {
api_1.diag.warn(`Failed to create gRPC SSL credentials: ${e}`);
return undefined;
}
if (tls.key_file) {
try {
httpsAgentOptions.key = fs.readFileSync(tls.key_file);
}
catch (e) {
api_1.diag.warn(`Failed to read TLS key file at ${tls.key_file}: ${e}`);
}
}
return httpsAgentOptions;
}
return undefined;
}
exports.getHttpAgentOptionsFromTls = getHttpAgentOptionsFromTls;
function getGrpcMetadataFromHeaders(headers) {
if (!headers || headers.length === 0) {
return undefined;
}
const metadata = (0, otlp_grpc_exporter_base_1.createEmptyMetadata)();
for (const header of headers) {
if (header.value !== null) {
metadata.set(header.name, header.value);
}
}
return metadata;
}
function readFileOrWarn(filePath, label) {
if (!filePath)
return undefined;
try {
return fs.readFileSync(filePath);
}
catch (e) {
api_1.diag.warn(`Failed to read ${label} file at ${filePath}: ${e}`);
return undefined;
}
}
function getSpanExporter(exporter) {
if (exporter.otlp_http) {
const encoding = exporter.otlp_http.encoding;
if (exporter.otlp_http !== undefined) {
const encoding = exporter.otlp_http?.encoding ?? 'protobuf';
if (encoding === 'json') {
return new exporter_trace_otlp_http_1.OTLPTraceExporter({
compression: exporter.otlp_http.compression === 'gzip'
compression: exporter.otlp_http?.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP
: otlp_exporter_base_1.CompressionAlgorithm.NONE,
url: exporter.otlp_http.endpoint,
headers: getHeadersFromConfiguration(exporter.otlp_http.headers),
timeoutMillis: exporter.otlp_http.timeout,
httpAgentOptions: getHttpAgentOptionsFromTls(exporter.otlp_http.tls),
url: exporter.otlp_http?.endpoint ?? undefined,
headers: getHeadersFromConfiguration(exporter.otlp_http?.headers),
timeoutMillis: validateExporterTimeout(exporter.otlp_http?.timeout),
httpAgentOptions: getHttpAgentOptionsFromTls(exporter.otlp_http?.tls),
});

@@ -574,27 +645,27 @@ }

return new exporter_trace_otlp_proto_1.OTLPTraceExporter({
compression: exporter.otlp_http.compression === 'gzip'
compression: exporter.otlp_http?.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP
: otlp_exporter_base_1.CompressionAlgorithm.NONE,
url: exporter.otlp_http.endpoint,
headers: getHeadersFromConfiguration(exporter.otlp_http.headers),
timeoutMillis: exporter.otlp_http.timeout,
httpAgentOptions: getHttpAgentOptionsFromTls(exporter.otlp_http.tls),
url: exporter.otlp_http?.endpoint ?? undefined,
headers: getHeadersFromConfiguration(exporter.otlp_http?.headers),
timeoutMillis: validateExporterTimeout(exporter.otlp_http?.timeout),
httpAgentOptions: getHttpAgentOptionsFromTls(exporter.otlp_http?.tls),
});
}
}
else if (exporter.otlp_grpc) {
else if (exporter.otlp_grpc !== undefined) {
return new exporter_trace_otlp_grpc_1.OTLPTraceExporter({
compression: exporter.otlp_grpc.compression === 'gzip'
compression: exporter.otlp_grpc?.compression === 'gzip'
? otlp_exporter_base_1.CompressionAlgorithm.GZIP
: otlp_exporter_base_1.CompressionAlgorithm.NONE,
url: exporter.otlp_grpc.endpoint,
timeoutMillis: exporter.otlp_grpc.timeout,
// TODO (6614): add support for credentials
// TODO (6615): add metadata (headers) support
url: exporter.otlp_grpc?.endpoint ?? undefined,
timeoutMillis: validateExporterTimeout(exporter.otlp_grpc?.timeout),
credentials: getGrpcCredentialsFromTls(exporter.otlp_grpc?.tls),
metadata: getGrpcMetadataFromHeaders(exporter.otlp_grpc?.headers),
});
}
else if (exporter.console) {
else if (exporter.console !== undefined) {
return new sdk_trace_base_1.ConsoleSpanExporter();
}
api_1.diag.warn(`Unsupported Exporter value. No Span Exporter registered`);
api_1.diag.warn('Unsupported Exporter value. No Span Exporter registered');
return undefined;

@@ -610,6 +681,6 @@ }

spanProcessors.push(new sdk_trace_base_1.BatchSpanProcessor(exporter, {
maxQueueSize: processor.batch.max_queue_size,
maxExportBatchSize: processor.batch.max_export_batch_size,
scheduledDelayMillis: processor.batch.schedule_delay,
exportTimeoutMillis: processor.batch.export_timeout,
maxQueueSize: processor.batch.max_queue_size ?? undefined,
maxExportBatchSize: processor.batch.max_export_batch_size ?? undefined,
scheduledDelayMillis: processor.batch.schedule_delay ?? undefined,
exportTimeoutMillis: processor.batch.export_timeout ?? undefined,
}));

@@ -716,4 +787,5 @@ }

options: {
recordMinMax: aggregation.base2_exponential_bucket_histogram.record_min_max ?? true,
maxSize: aggregation.base2_exponential_bucket_histogram.max_size,
recordMinMax: aggregation.base2_exponential_bucket_histogram.record_min_max ??
undefined,
maxSize: aggregation.base2_exponential_bucket_histogram.max_size ?? undefined,
},

@@ -732,3 +804,3 @@ };

}
api_1.diag.warn(`Unsupported aggregation type`);
api_1.diag.warn('Unsupported aggregation type');
return undefined;

@@ -821,14 +893,14 @@ }

*/
function buildSamplerFromConfig(config) {
if (config.always_on !== undefined) {
function buildSamplerFromConfig(samplerConfig) {
if (samplerConfig.always_on !== undefined) {
return new sdk_trace_base_1.AlwaysOnSampler();
}
if (config.always_off !== undefined) {
if (samplerConfig.always_off !== undefined) {
return new sdk_trace_base_1.AlwaysOffSampler();
}
if (config.trace_id_ratio_based !== undefined) {
return new sdk_trace_base_1.TraceIdRatioBasedSampler(config.trace_id_ratio_based.ratio ?? DEFAULT_RATIO);
if (samplerConfig.trace_id_ratio_based !== undefined) {
return new sdk_trace_base_1.TraceIdRatioBasedSampler(samplerConfig.trace_id_ratio_based?.ratio ?? DEFAULT_RATIO);
}
if (config.parent_based !== undefined) {
const pb = config.parent_based;
if (samplerConfig.parent_based !== undefined) {
const pb = samplerConfig.parent_based ?? {};
return new sdk_trace_base_1.ParentBasedSampler({

@@ -835,0 +907,0 @@ root: pb.root ? buildSamplerFromConfig(pb.root) : new sdk_trace_base_1.AlwaysOnSampler(),

@@ -1,1 +0,1 @@

{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ContextManager, TextMapPropagator } from '@opentelemetry/api';\nimport { context, diag, propagation } from '@opentelemetry/api';\nimport {\n CompositePropagator,\n getNumberFromEnv,\n getStringFromEnv,\n getStringListFromEnv,\n W3CBaggagePropagator,\n W3CTraceContextPropagator,\n} from '@opentelemetry/core';\nimport { OTLPTraceExporter as OTLPProtoTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport { OTLPTraceExporter as OTLPHttpTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { OTLPTraceExporter as OTLPGrpcTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { ZipkinExporter } from '@opentelemetry/exporter-zipkin';\nimport type {\n DetectedResourceAttributes,\n Resource,\n ResourceDetector,\n} from '@opentelemetry/resources';\nimport {\n envDetector,\n hostDetector,\n osDetector,\n processDetector,\n resourceFromAttributes,\n serviceInstanceIdDetector,\n} from '@opentelemetry/resources';\nimport type {\n Sampler,\n SpanExporter,\n SpanLimits,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport {\n AlwaysOffSampler,\n AlwaysOnSampler,\n BatchSpanProcessor,\n ConsoleSpanExporter,\n ParentBasedSampler,\n SimpleSpanProcessor,\n TraceIdRatioBasedSampler,\n} from '@opentelemetry/sdk-trace-base';\nimport { B3InjectEncoding, B3Propagator } from '@opentelemetry/propagator-b3';\nimport { JaegerPropagator } from '@opentelemetry/propagator-jaeger';\nimport { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { OTLPLogExporter as OTLPHttpLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { OTLPLogExporter as OTLPGrpcLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc';\nimport { OTLPLogExporter as OTLPProtoLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { CompressionAlgorithm } from '@opentelemetry/otlp-exporter-base';\nimport type {\n ConfigurationModel,\n LogRecordExporterConfigModel,\n InstrumentTypeConfigModel,\n AggregationConfigModel,\n PeriodicMetricReaderConfigModel,\n SpanExporterConfigModel,\n SamplerConfigModel,\n NameStringValuePairConfigModel,\n HttpTlsConfigModel,\n} from '@opentelemetry/configuration';\nimport type {\n AggregationOption,\n IAttributesProcessor,\n IMetricReader,\n PushMetricExporter,\n ViewOptions,\n} from '@opentelemetry/sdk-metrics';\nimport {\n AggregationType,\n ConsoleMetricExporter,\n createAllowListAttributesProcessor,\n createDenyListAttributesProcessor,\n InstrumentType,\n PeriodicExportingMetricReader,\n} from '@opentelemetry/sdk-metrics';\nimport { OTLPMetricExporter as OTLPGrpcMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc';\nimport { OTLPMetricExporter as OTLPHttpMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { OTLPMetricExporter as OTLPProtoMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto';\nimport type {\n BufferConfig,\n LogRecordExporter,\n LoggerProviderOptions,\n LogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport {\n BatchLogRecordProcessor,\n ConsoleLogRecordExporter,\n SimpleLogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport * as fs from 'fs';\n\nconst RESOURCE_DETECTOR_ENVIRONMENT = 'env';\nconst RESOURCE_DETECTOR_HOST = 'host';\nconst RESOURCE_DETECTOR_OS = 'os';\nconst RESOURCE_DETECTOR_PROCESS = 'process';\nconst RESOURCE_DETECTOR_SERVICE_INSTANCE_ID = 'serviceinstance';\n\nexport function getResourceFromConfiguration(\n config: ConfigurationModel\n): Resource | undefined {\n if (config.resource && config.resource.attributes) {\n const attr: DetectedResourceAttributes = {};\n for (let i = 0; i < config.resource.attributes.length; i++) {\n const a = config.resource.attributes[i];\n attr[a.name] = a.value;\n }\n return resourceFromAttributes(attr, {\n schemaUrl: config.resource.schema_url,\n });\n }\n return undefined;\n}\n\nexport function getResourceDetectorsFromEnv(): Array<ResourceDetector> {\n // When updating this list, make sure to also update the section `resourceDetectors` on README.\n const resourceDetectors = new Map<string, ResourceDetector>([\n [RESOURCE_DETECTOR_HOST, hostDetector],\n [RESOURCE_DETECTOR_OS, osDetector],\n [RESOURCE_DETECTOR_SERVICE_INSTANCE_ID, serviceInstanceIdDetector],\n [RESOURCE_DETECTOR_PROCESS, processDetector],\n [RESOURCE_DETECTOR_ENVIRONMENT, envDetector],\n ]);\n\n const resourceDetectorsFromEnv = getStringListFromEnv(\n 'OTEL_NODE_RESOURCE_DETECTORS'\n ) ?? ['all'];\n\n if (resourceDetectorsFromEnv.includes('all')) {\n return [...resourceDetectors.values()].flat();\n }\n\n if (resourceDetectorsFromEnv.includes('none')) {\n return [];\n }\n\n return resourceDetectorsFromEnv.flatMap(detector => {\n const resourceDetector = resourceDetectors.get(detector);\n if (!resourceDetector) {\n diag.warn(\n `Invalid resource detector \"${detector}\" specified in the environment variable OTEL_NODE_RESOURCE_DETECTORS`\n );\n }\n return resourceDetector || [];\n });\n}\n\nexport function getResourceDetectorsFromConfiguration(\n config: ConfigurationModel\n): Array<ResourceDetector> {\n const detectors = config.resource?.['detection/development']?.detectors ?? [];\n\n return detectors.flatMap(detector => {\n const result: ResourceDetector[] = [];\n if (detector.host != null) result.push(hostDetector);\n if (detector.os != null) result.push(osDetector);\n if (detector.process != null) result.push(processDetector);\n if (detector.service != null) result.push(serviceInstanceIdDetector);\n if (detector.env != null) result.push(envDetector);\n return result;\n });\n}\n\nexport function getOtlpProtocolFromEnv(): string {\n return (\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf'\n );\n}\n\nfunction getOtlpExporterFromEnv(): SpanExporter {\n const protocol = getOtlpProtocolFromEnv();\n\n switch (protocol) {\n case 'grpc':\n return new OTLPGrpcTraceExporter();\n case 'http/json':\n return new OTLPHttpTraceExporter();\n case 'http/protobuf':\n return new OTLPProtoTraceExporter();\n default:\n diag.warn(\n `Unsupported OTLP traces protocol: ${protocol}. Using http/protobuf.`\n );\n return new OTLPProtoTraceExporter();\n }\n}\n\nexport function getSpanProcessorsFromEnv(): SpanProcessor[] {\n const exportersMap = new Map<string, () => SpanExporter>([\n ['otlp', () => getOtlpExporterFromEnv()],\n ['zipkin', () => new ZipkinExporter()],\n ['console', () => new ConsoleSpanExporter()],\n ]);\n const exporters: SpanExporter[] = [];\n const processors: SpanProcessor[] = [];\n let traceExportersList = Array.from(\n new Set(getStringListFromEnv('OTEL_TRACES_EXPORTER'))\n ).filter(s => s !== 'null');\n\n if (traceExportersList[0] === 'none') {\n diag.warn(\n 'OTEL_TRACES_EXPORTER contains \"none\". SDK will not be initialized.'\n );\n return [];\n }\n\n if (traceExportersList.length === 0) {\n diag.debug('OTEL_TRACES_EXPORTER is empty. Using default otlp exporter.');\n traceExportersList = ['otlp'];\n } else if (\n traceExportersList.length > 1 &&\n traceExportersList.includes('none')\n ) {\n diag.warn(\n 'OTEL_TRACES_EXPORTER contains \"none\" along with other exporters. Using default otlp exporter.'\n );\n traceExportersList = ['otlp'];\n }\n\n for (const name of traceExportersList) {\n const exporter = exportersMap.get(name)?.();\n if (exporter) {\n exporters.push(exporter);\n } else {\n diag.warn(`Unrecognized OTEL_TRACES_EXPORTER value: ${name}.`);\n }\n }\n\n for (const exp of exporters) {\n if (exp instanceof ConsoleSpanExporter) {\n processors.push(new SimpleSpanProcessor(exp));\n } else {\n processors.push(new BatchSpanProcessor(exp));\n }\n }\n\n if (exporters.length === 0) {\n diag.warn(\n 'Unable to set up trace exporter(s) due to invalid exporter and/or protocol values.'\n );\n }\n\n return processors;\n}\n\n/**\n * Get a propagator as defined by environment variables\n */\nexport function getPropagatorFromEnv(): TextMapPropagator | null | undefined {\n // Empty and undefined MUST be treated equal.\n const propagatorsEnvVarValue = getStringListFromEnv('OTEL_PROPAGATORS');\n if (propagatorsEnvVarValue == null) {\n // return undefined to fall back to default\n return undefined;\n }\n\n if (propagatorsEnvVarValue.includes('none')) {\n return null;\n }\n\n // Implementation note: this only contains specification required propagators that are actually hosted in this repo.\n // Any other propagators (like aws, aws-lambda, should go into `@opentelemetry/auto-configuration-propagators` instead).\n const propagatorsFactory = new Map<string, () => TextMapPropagator>([\n ['tracecontext', () => new W3CTraceContextPropagator()],\n ['baggage', () => new W3CBaggagePropagator()],\n ['b3', () => new B3Propagator()],\n [\n 'b3multi',\n () => new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }),\n ],\n ['jaeger', () => new JaegerPropagator()],\n ]);\n\n // Values MUST be deduplicated in order to register a Propagator only once.\n const uniquePropagatorNames = Array.from(new Set(propagatorsEnvVarValue));\n const validPropagators: TextMapPropagator[] = [];\n\n uniquePropagatorNames.forEach(name => {\n const propagator = propagatorsFactory.get(name)?.();\n if (!propagator) {\n diag.warn(\n `Propagator \"${name}\" requested through environment variable is unavailable.`\n );\n return;\n }\n\n validPropagators.push(propagator);\n });\n\n if (validPropagators.length === 0) {\n // null to signal that the default should **not** be used in its place.\n return null;\n } else if (uniquePropagatorNames.length === 1) {\n return validPropagators[0];\n } else {\n return new CompositePropagator({\n propagators: validPropagators,\n });\n }\n}\n\n/**\n * Get a propagator as defined by configuration model from configuration\n */\nexport function getPropagatorFromConfiguration(\n config: ConfigurationModel\n): TextMapPropagator | null | undefined {\n const propagatorsValue = getKeyListFromObjectArray(\n config.propagator?.composite\n );\n if (propagatorsValue == null) {\n // return undefined to fall back to default\n return undefined;\n }\n\n if (propagatorsValue.includes('none')) {\n return null;\n }\n\n // Implementation note: this only contains specification required propagators that are actually hosted in this repo.\n // Any other propagators (like aws, aws-lambda, should go into `@opentelemetry/auto-configuration-propagators` instead).\n const propagatorsFactory = new Map<string, () => TextMapPropagator>([\n ['tracecontext', () => new W3CTraceContextPropagator()],\n ['baggage', () => new W3CBaggagePropagator()],\n ['b3', () => new B3Propagator()],\n [\n 'b3multi',\n () => new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }),\n ],\n ['jaeger', () => new JaegerPropagator()],\n ]);\n\n // Values MUST be deduplicated in order to register a Propagator only once.\n const uniquePropagatorNames = Array.from(new Set(propagatorsValue));\n const validPropagators: TextMapPropagator[] = [];\n\n uniquePropagatorNames.forEach(name => {\n const propagator = propagatorsFactory.get(name)?.();\n if (!propagator) {\n diag.warn(\n `Propagator \"${name}\" requested through configuration is unavailable.`\n );\n return;\n }\n\n validPropagators.push(propagator);\n });\n\n if (validPropagators.length === 0) {\n // null to signal that the default should **not** be used in its place.\n return null;\n } else if (uniquePropagatorNames.length === 1) {\n return validPropagators[0];\n } else {\n return new CompositePropagator({\n propagators: validPropagators,\n });\n }\n}\n\nexport function setupContextManager(\n contextManager: ContextManager | null | undefined\n) {\n // null means 'do not register'\n if (contextManager === null) {\n return;\n }\n\n // undefined means 'register default'\n if (contextManager === undefined) {\n const defaultContextManager = new AsyncLocalStorageContextManager();\n defaultContextManager.enable();\n context.setGlobalContextManager(defaultContextManager);\n return;\n }\n\n contextManager.enable();\n context.setGlobalContextManager(contextManager);\n}\n\nexport function setupPropagator(\n propagator: TextMapPropagator | null | undefined\n) {\n // null means 'do not register'\n if (propagator === null) {\n return;\n }\n\n // undefined means 'register default'\n if (propagator === undefined) {\n propagation.setGlobalPropagator(\n new CompositePropagator({\n propagators: [\n new W3CTraceContextPropagator(),\n new W3CBaggagePropagator(),\n ],\n })\n );\n return;\n }\n\n propagation.setGlobalPropagator(propagator);\n}\n\nexport function getKeyListFromObjectArray(\n obj: object[] | undefined\n): string[] | undefined {\n if (!obj || obj.length === 0) {\n return undefined;\n }\n\n const keys: string[] = [];\n for (const item of obj) {\n for (const key of Object.keys(item)) {\n keys.push(key);\n }\n }\n return keys;\n}\n\nexport function getNonNegativeNumberFromEnv(\n envVarName: string\n): number | undefined {\n const value = getNumberFromEnv(envVarName);\n if (value != null && value <= 0) {\n diag.warn(\n `${envVarName} (${value}) is invalid, expected number greater than 0, using default.`\n );\n return undefined;\n }\n return value;\n}\n\nexport function getPeriodicExportingMetricReaderFromEnv(\n exporter: PushMetricExporter\n): IMetricReader {\n const defaultTimeoutMillis = 30_000;\n const defaultIntervalMillis = 60_000;\n\n const rawExportIntervalMillis = getNonNegativeNumberFromEnv(\n 'OTEL_METRIC_EXPORT_INTERVAL'\n );\n const rawExportTimeoutMillis = getNonNegativeNumberFromEnv(\n 'OTEL_METRIC_EXPORT_TIMEOUT'\n );\n\n // Apply defaults\n const exportIntervalMillis = rawExportIntervalMillis ?? defaultIntervalMillis;\n let exportTimeoutMillis = rawExportTimeoutMillis ?? defaultTimeoutMillis;\n\n // Ensure timeout doesn't exceed interval\n if (exportTimeoutMillis > exportIntervalMillis) {\n // determine which env vars were set and which ones defaulted for logging purposes\n const timeoutSource =\n rawExportTimeoutMillis != null\n ? rawExportTimeoutMillis.toString()\n : `${defaultTimeoutMillis}, default`;\n const intervalSource =\n rawExportIntervalMillis != null\n ? rawExportIntervalMillis.toString()\n : `${defaultIntervalMillis}, default`;\n\n const bothSetByUser =\n rawExportTimeoutMillis != null && rawExportIntervalMillis != null;\n const logMessage = `OTEL_METRIC_EXPORT_TIMEOUT (${timeoutSource}) is greater than OTEL_METRIC_EXPORT_INTERVAL (${intervalSource}). Clamping timeout to interval value.`;\n\n // only bother users if they explicitly set both values.\n if (bothSetByUser) {\n diag.warn(logMessage);\n } else {\n diag.info(logMessage);\n }\n\n exportTimeoutMillis = exportIntervalMillis;\n }\n\n return new PeriodicExportingMetricReader({\n exportTimeoutMillis,\n exportIntervalMillis,\n exporter,\n });\n}\n\nexport function getOtlpMetricExporterFromEnv(): PushMetricExporter {\n const protocol =\n (\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL')\n )?.trim() || 'http/protobuf'; // Using || to also fall back on empty string\n\n switch (protocol) {\n case 'grpc':\n return new OTLPGrpcMetricExporter();\n case 'http/json':\n return new OTLPHttpMetricExporter();\n case 'http/protobuf':\n return new OTLPProtoMetricExporter();\n }\n\n diag.warn(\n `Unsupported OTLP metrics protocol: \"${protocol}\". Using http/protobuf.`\n );\n return new OTLPProtoMetricExporter();\n}\n\nexport function getPeriodicMetricReaderFromConfiguration(\n periodic: PeriodicMetricReaderConfigModel\n): IMetricReader | undefined {\n if (periodic.exporter) {\n let exporter;\n if (periodic.exporter.otlp_http) {\n const encoding = periodic.exporter.otlp_http.encoding;\n if (encoding === 'json') {\n exporter = new OTLPHttpMetricExporter({\n compression:\n periodic.exporter.otlp_http.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n });\n } else if (encoding === 'protobuf') {\n exporter = new OTLPProtoMetricExporter({\n compression:\n periodic.exporter.otlp_http.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n });\n } else {\n diag.warn(`Unsupported OTLP metrics encoding: ${encoding}.`);\n }\n }\n if (periodic.exporter.otlp_grpc) {\n exporter = new OTLPGrpcMetricExporter({\n compression:\n periodic.exporter.otlp_grpc.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n });\n }\n\n if (exporter) {\n // TODO(6425): add cardinality_limits\n return new PeriodicExportingMetricReader({\n exportIntervalMillis: periodic.interval ?? 60_000,\n exportTimeoutMillis: periodic.timeout ?? 30_000,\n exporter,\n });\n }\n if (periodic.exporter.console) {\n return new PeriodicExportingMetricReader({\n exporter: new ConsoleMetricExporter(),\n });\n }\n }\n diag.warn(`Unsupported Metric Exporter.`);\n return undefined;\n}\n\n/**\n * Get LoggerProviderConfig from environment variables.\n */\nexport function getLoggerProviderConfigFromEnv(): LoggerProviderOptions {\n return {\n logRecordLimits: {\n attributeCountLimit:\n getNonNegativeNumberFromEnv('OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT') ??\n getNonNegativeNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT'),\n attributeValueLengthLimit:\n getNonNegativeNumberFromEnv(\n 'OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n ) ?? getNonNegativeNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT'),\n },\n };\n}\n\n/**\n * Get configuration for BatchLogRecordProcessor from environment variables.\n */\nexport function getBatchLogRecordProcessorConfigFromEnv(): BufferConfig {\n return {\n maxQueueSize: getNonNegativeNumberFromEnv('OTEL_BLRP_MAX_QUEUE_SIZE'),\n scheduledDelayMillis: getNonNegativeNumberFromEnv(\n 'OTEL_BLRP_SCHEDULE_DELAY'\n ),\n exportTimeoutMillis: getNonNegativeNumberFromEnv(\n 'OTEL_BLRP_EXPORT_TIMEOUT'\n ),\n maxExportBatchSize: getNonNegativeNumberFromEnv(\n 'OTEL_BLRP_MAX_EXPORT_BATCH_SIZE'\n ),\n };\n}\n\nexport function getBatchLogRecordProcessorFromEnv(\n exporter: LogRecordExporter\n): BatchLogRecordProcessor {\n return new BatchLogRecordProcessor(\n exporter,\n getBatchLogRecordProcessorConfigFromEnv()\n );\n}\n\nexport function getLogRecordExporter(\n exporter: LogRecordExporterConfigModel\n): LogRecordExporter | undefined {\n if (exporter.otlp_http) {\n const encoding = exporter.otlp_http.encoding;\n if (encoding === 'json') {\n return new OTLPHttpLogExporter({\n compression:\n exporter.otlp_http.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n });\n }\n if (encoding === 'protobuf') {\n return new OTLPProtoLogExporter({\n compression:\n exporter.otlp_http.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n });\n }\n diag.warn(\n `Unsupported OTLP logs encoding: ${encoding}. Using http/protobuf.`\n );\n return new OTLPProtoLogExporter({\n compression:\n exporter.otlp_http.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n });\n } else if (exporter.otlp_grpc) {\n return new OTLPGrpcLogExporter({\n compression:\n exporter.otlp_grpc.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n });\n } else if (exporter.console) {\n return new ConsoleLogRecordExporter();\n }\n diag.warn(`Unsupported Exporter value. No Log Record Exporter registered`);\n return undefined;\n}\n\nexport function getLogRecordProcessorsFromConfiguration(\n config: ConfigurationModel\n): LogRecordProcessor[] | undefined {\n const logRecordProcessors: LogRecordProcessor[] = [];\n config.logger_provider?.processors?.forEach(processor => {\n if (processor.batch) {\n const exporter = getLogRecordExporter(processor.batch.exporter);\n if (exporter) {\n logRecordProcessors.push(\n new BatchLogRecordProcessor(exporter, {\n maxQueueSize: processor.batch.max_queue_size,\n maxExportBatchSize: processor.batch.max_export_batch_size,\n scheduledDelayMillis: processor.batch.schedule_delay,\n exportTimeoutMillis: processor.batch.export_timeout,\n })\n );\n }\n }\n if (processor.simple) {\n const exporter = getLogRecordExporter(processor.simple.exporter);\n if (exporter) {\n logRecordProcessors.push(new SimpleLogRecordProcessor(exporter));\n }\n }\n });\n if (logRecordProcessors.length > 0) {\n return logRecordProcessors;\n }\n return undefined;\n}\n\nexport function getHeadersFromConfiguration(\n headers: NameStringValuePairConfigModel[] | undefined\n): Record<string, string> | undefined {\n if (!headers) {\n return undefined;\n }\n const result: Record<string, string> = {};\n headers.forEach(header => {\n result[header.name] = header.value;\n });\n return result;\n}\n\nexport function getHttpAgentOptionsFromTls(\n tls: HttpTlsConfigModel | undefined\n): { ca?: Buffer; cert?: Buffer; key?: Buffer } | undefined {\n if (tls && (tls.ca_file || tls.cert_file || tls.key_file)) {\n const httpsAgentOptions: { ca?: Buffer; cert?: Buffer; key?: Buffer } = {};\n if (tls.ca_file) {\n try {\n httpsAgentOptions.ca = fs.readFileSync(tls.ca_file);\n } catch (e) {\n diag.warn(`Failed to read TLS CA file at ${tls.ca_file}: ${e}`);\n }\n }\n if (tls.cert_file) {\n try {\n httpsAgentOptions.cert = fs.readFileSync(tls.cert_file);\n } catch (e) {\n diag.warn(`Failed to read TLS cert file at ${tls.cert_file}: ${e}`);\n }\n }\n if (tls.key_file) {\n try {\n httpsAgentOptions.key = fs.readFileSync(tls.key_file);\n } catch (e) {\n diag.warn(`Failed to read TLS key file at ${tls.key_file}: ${e}`);\n }\n }\n return httpsAgentOptions;\n }\n return undefined;\n}\n\nexport function getSpanExporter(\n exporter: SpanExporterConfigModel\n): SpanExporter | undefined {\n if (exporter.otlp_http) {\n const encoding = exporter.otlp_http.encoding;\n if (encoding === 'json') {\n return new OTLPHttpTraceExporter({\n compression:\n exporter.otlp_http.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n url: exporter.otlp_http.endpoint,\n headers: getHeadersFromConfiguration(exporter.otlp_http.headers),\n timeoutMillis: exporter.otlp_http.timeout,\n httpAgentOptions: getHttpAgentOptionsFromTls(exporter.otlp_http.tls),\n });\n } else {\n return new OTLPProtoTraceExporter({\n compression:\n exporter.otlp_http.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n url: exporter.otlp_http.endpoint,\n headers: getHeadersFromConfiguration(exporter.otlp_http.headers),\n timeoutMillis: exporter.otlp_http.timeout,\n httpAgentOptions: getHttpAgentOptionsFromTls(exporter.otlp_http.tls),\n });\n }\n } else if (exporter.otlp_grpc) {\n return new OTLPGrpcTraceExporter({\n compression:\n exporter.otlp_grpc.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n url: exporter.otlp_grpc.endpoint,\n timeoutMillis: exporter.otlp_grpc.timeout,\n // TODO (6614): add support for credentials\n // TODO (6615): add metadata (headers) support\n });\n } else if (exporter.console) {\n return new ConsoleSpanExporter();\n }\n diag.warn(`Unsupported Exporter value. No Span Exporter registered`);\n return undefined;\n}\n\nexport function getSpanProcessorsFromConfiguration(\n config: ConfigurationModel\n): SpanProcessor[] | undefined {\n const spanProcessors: SpanProcessor[] = [];\n config.tracer_provider?.processors?.forEach(processor => {\n if (processor.batch) {\n const exporter = getSpanExporter(processor.batch.exporter);\n if (exporter) {\n spanProcessors.push(\n new BatchSpanProcessor(exporter, {\n maxQueueSize: processor.batch.max_queue_size,\n maxExportBatchSize: processor.batch.max_export_batch_size,\n scheduledDelayMillis: processor.batch.schedule_delay,\n exportTimeoutMillis: processor.batch.export_timeout,\n })\n );\n }\n }\n if (processor.simple) {\n const exporter = getSpanExporter(processor.simple.exporter);\n if (exporter) {\n spanProcessors.push(new SimpleSpanProcessor(exporter));\n }\n }\n });\n if (spanProcessors.length > 0) {\n return spanProcessors;\n }\n return undefined;\n}\n\nexport function getSpanLimitsFromConfiguration(\n config: ConfigurationModel\n): SpanLimits | undefined {\n if (config.tracer_provider?.limits) {\n const limitsConfig = config.tracer_provider.limits;\n const spanLimits: SpanLimits = {};\n spanLimits.attributeCountLimit = limitsConfig.attribute_count_limit ?? 128;\n spanLimits.eventCountLimit = limitsConfig.event_count_limit ?? 128;\n spanLimits.linkCountLimit = limitsConfig.link_count_limit ?? 128;\n spanLimits.attributePerLinkCountLimit =\n limitsConfig.link_attribute_count_limit ?? 128;\n spanLimits.attributePerEventCountLimit =\n limitsConfig.event_attribute_count_limit ?? 128;\n\n if (limitsConfig.attribute_value_length_limit != null) {\n spanLimits.attributeValueLengthLimit =\n limitsConfig.attribute_value_length_limit;\n }\n\n return spanLimits;\n }\n return undefined;\n}\n\nexport function getMeterReadersFromConfiguration(\n config: ConfigurationModel\n): IMetricReader[] | undefined {\n const metricReaders: IMetricReader[] = [];\n config.meter_provider?.readers?.forEach(reader => {\n if (reader.periodic) {\n const periodicReader = getPeriodicMetricReaderFromConfiguration(\n reader.periodic\n );\n if (periodicReader) {\n metricReaders.push(periodicReader);\n }\n }\n });\n if (metricReaders.length > 0) {\n return metricReaders;\n }\n return undefined;\n}\n\nexport function getInstrumentType(\n instrument: InstrumentTypeConfigModel\n): InstrumentType | undefined {\n switch (instrument) {\n case 'counter':\n return InstrumentType.COUNTER;\n case 'gauge':\n return InstrumentType.GAUGE;\n case 'histogram':\n return InstrumentType.HISTOGRAM;\n case 'observable_counter':\n return InstrumentType.OBSERVABLE_COUNTER;\n case 'observable_gauge':\n return InstrumentType.OBSERVABLE_GAUGE;\n case 'observable_up_down_counter':\n return InstrumentType.OBSERVABLE_UP_DOWN_COUNTER;\n case 'up_down_counter':\n return InstrumentType.UP_DOWN_COUNTER;\n default:\n diag.warn(`Unsupported instrument type: ${instrument}`);\n return undefined;\n }\n}\n\nexport function getAggregationType(\n aggregation: AggregationConfigModel\n): AggregationOption | undefined {\n if (aggregation.default) {\n return {\n type: AggregationType.DEFAULT,\n };\n }\n if (aggregation.drop) {\n return {\n type: AggregationType.DROP,\n };\n }\n if (aggregation.explicit_bucket_histogram) {\n return {\n type: AggregationType.EXPLICIT_BUCKET_HISTOGRAM,\n options: {\n recordMinMax:\n aggregation.explicit_bucket_histogram.record_min_max ?? true,\n boundaries: aggregation.explicit_bucket_histogram.boundaries ?? [\n 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500,\n 10000,\n ],\n },\n };\n }\n\n if (aggregation.base2_exponential_bucket_histogram) {\n return {\n type: AggregationType.EXPONENTIAL_HISTOGRAM,\n options: {\n recordMinMax:\n aggregation.base2_exponential_bucket_histogram.record_min_max ?? true,\n maxSize: aggregation.base2_exponential_bucket_histogram.max_size,\n },\n };\n }\n if (aggregation.last_value) {\n return {\n type: AggregationType.LAST_VALUE,\n };\n }\n if (aggregation.sum) {\n return {\n type: AggregationType.SUM,\n };\n }\n\n diag.warn(`Unsupported aggregation type`);\n return undefined;\n}\n\nexport function getMeterViewsFromConfiguration(\n config: ConfigurationModel\n): ViewOptions[] | undefined {\n const metricViews: ViewOptions[] = [];\n config.meter_provider?.views?.forEach(view => {\n const viewOption: ViewOptions = {};\n if (view.selector) {\n if (view.selector.instrument_name) {\n viewOption.instrumentName = view.selector.instrument_name;\n }\n if (view.selector.instrument_type) {\n const instrumentType = getInstrumentType(view.selector.instrument_type);\n if (instrumentType) {\n viewOption.instrumentType = instrumentType;\n }\n }\n if (view.selector.unit) {\n viewOption.instrumentUnit = view.selector.unit;\n }\n if (view.selector.meter_name) {\n viewOption.meterName = view.selector.meter_name;\n }\n if (view.selector.meter_version) {\n viewOption.meterVersion = view.selector.meter_version;\n }\n if (view.selector.meter_schema_url) {\n viewOption.meterSchemaUrl = view.selector.meter_schema_url;\n }\n }\n if (view.stream) {\n if (view.stream.name) {\n viewOption.name = view.stream.name;\n }\n viewOption.aggregationCardinalityLimit =\n view.stream.aggregation_cardinality_limit ?? 2_000;\n if (view.stream.description) {\n viewOption.description = view.stream.description;\n }\n if (view.stream.aggregation) {\n const aggregationType = getAggregationType(view.stream.aggregation);\n if (aggregationType) {\n viewOption.aggregation = aggregationType;\n }\n }\n if (view.stream.attribute_keys) {\n const processors: IAttributesProcessor[] = [];\n if (\n view.stream.attribute_keys.included &&\n view.stream.attribute_keys.included.length > 0\n ) {\n processors.push(\n createAllowListAttributesProcessor(\n view.stream.attribute_keys.included\n )\n );\n }\n if (\n view.stream.attribute_keys.excluded &&\n view.stream.attribute_keys.excluded.length > 0\n ) {\n processors.push(\n createDenyListAttributesProcessor(\n view.stream.attribute_keys.excluded\n )\n );\n }\n if (processors.length > 0) {\n viewOption.attributesProcessors = processors;\n }\n }\n }\n\n if (Object.keys(viewOption).length > 0) {\n metricViews.push(viewOption);\n }\n });\n if (metricViews.length > 0) {\n return metricViews;\n }\n return undefined;\n}\n\nexport function getInstanceID(config: ConfigurationModel): string | undefined {\n if (config.resource?.attributes) {\n for (let i = 0; i < config.resource.attributes.length; i++) {\n const element = config.resource.attributes[i];\n if (element.name === 'service.instance.id') {\n return element.value?.toString();\n }\n }\n }\n return undefined;\n}\n\nconst DEFAULT_RATIO = 1;\n\n/**\n * Builds a {@link Sampler} from a {@link SamplerConfigModel} data model.\n * This allows sampler construction from declarative configuration.\n */\nexport function buildSamplerFromConfig(config: SamplerConfigModel): Sampler {\n if (config.always_on !== undefined) {\n return new AlwaysOnSampler();\n }\n if (config.always_off !== undefined) {\n return new AlwaysOffSampler();\n }\n if (config.trace_id_ratio_based !== undefined) {\n return new TraceIdRatioBasedSampler(\n config.trace_id_ratio_based.ratio ?? DEFAULT_RATIO\n );\n }\n if (config.parent_based !== undefined) {\n const pb = config.parent_based;\n return new ParentBasedSampler({\n root: pb.root ? buildSamplerFromConfig(pb.root) : new AlwaysOnSampler(),\n remoteParentSampled: pb.remote_parent_sampled\n ? buildSamplerFromConfig(pb.remote_parent_sampled)\n : undefined,\n remoteParentNotSampled: pb.remote_parent_not_sampled\n ? buildSamplerFromConfig(pb.remote_parent_not_sampled)\n : undefined,\n localParentSampled: pb.local_parent_sampled\n ? buildSamplerFromConfig(pb.local_parent_sampled)\n : undefined,\n localParentNotSampled: pb.local_parent_not_sampled\n ? buildSamplerFromConfig(pb.local_parent_not_sampled)\n : undefined,\n });\n }\n diag.error('Unknown sampler config, defaulting to ParentBased(AlwaysOn).');\n return new ParentBasedSampler({ root: new AlwaysOnSampler() });\n}\n"]}
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ContextManager, TextMapPropagator } from '@opentelemetry/api';\nimport { context, diag, propagation } from '@opentelemetry/api';\nimport {\n CompositePropagator,\n getNumberFromEnv,\n getStringFromEnv,\n getStringListFromEnv,\n W3CBaggagePropagator,\n W3CTraceContextPropagator,\n} from '@opentelemetry/core';\nimport { OTLPTraceExporter as OTLPProtoTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport { OTLPTraceExporter as OTLPHttpTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';\nimport { OTLPTraceExporter as OTLPGrpcTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc';\nimport { ZipkinExporter } from '@opentelemetry/exporter-zipkin';\nimport type {\n DetectedResourceAttributes,\n Resource,\n ResourceDetector,\n} from '@opentelemetry/resources';\nimport {\n envDetector,\n hostDetector,\n osDetector,\n processDetector,\n resourceFromAttributes,\n serviceInstanceIdDetector,\n} from '@opentelemetry/resources';\nimport type {\n Sampler,\n SpanExporter,\n SpanLimits,\n SpanProcessor,\n} from '@opentelemetry/sdk-trace-base';\nimport {\n AlwaysOffSampler,\n AlwaysOnSampler,\n BatchSpanProcessor,\n ConsoleSpanExporter,\n ParentBasedSampler,\n SimpleSpanProcessor,\n TraceIdRatioBasedSampler,\n} from '@opentelemetry/sdk-trace-base';\nimport { B3InjectEncoding, B3Propagator } from '@opentelemetry/propagator-b3';\nimport { JaegerPropagator } from '@opentelemetry/propagator-jaeger';\nimport { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';\nimport { OTLPLogExporter as OTLPHttpLogExporter } from '@opentelemetry/exporter-logs-otlp-http';\nimport { OTLPLogExporter as OTLPGrpcLogExporter } from '@opentelemetry/exporter-logs-otlp-grpc';\nimport { OTLPLogExporter as OTLPProtoLogExporter } from '@opentelemetry/exporter-logs-otlp-proto';\nimport { CompressionAlgorithm } from '@opentelemetry/otlp-exporter-base';\nimport {\n createEmptyMetadata,\n createInsecureCredentials,\n createSslCredentials,\n} from '@opentelemetry/otlp-grpc-exporter-base';\nimport type {\n ConfigurationModel,\n LogRecordExporterConfigModel,\n InstrumentTypeConfigModel,\n AggregationConfigModel,\n MetricProducerConfigModel,\n PeriodicMetricReaderConfigModel,\n SpanExporterConfigModel,\n SamplerConfigModel,\n NameStringValuePairConfigModel,\n HttpTlsConfigModel,\n GrpcTlsConfigModel,\n} from '@opentelemetry/configuration';\nimport type {\n AggregationOption,\n IAttributesProcessor,\n IMetricReader,\n PushMetricExporter,\n ViewOptions,\n} from '@opentelemetry/sdk-metrics';\nimport {\n AggregationType,\n ConsoleMetricExporter,\n createAllowListAttributesProcessor,\n createDenyListAttributesProcessor,\n InstrumentType,\n PeriodicExportingMetricReader,\n} from '@opentelemetry/sdk-metrics';\nimport { OTLPMetricExporter as OTLPGrpcMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc';\nimport { OTLPMetricExporter as OTLPHttpMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';\nimport { OTLPMetricExporter as OTLPProtoMetricExporter } from '@opentelemetry/exporter-metrics-otlp-proto';\nimport type {\n BufferConfig,\n LogRecordExporter,\n LoggerProviderOptions,\n LogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport type { MetricProducer } from '@opentelemetry/sdk-metrics';\nimport {\n BatchLogRecordProcessor,\n ConsoleLogRecordExporter,\n SimpleLogRecordProcessor,\n} from '@opentelemetry/sdk-logs';\nimport * as fs from 'fs';\n\nconst RESOURCE_DETECTOR_ENVIRONMENT = 'env';\nconst RESOURCE_DETECTOR_HOST = 'host';\nconst RESOURCE_DETECTOR_OS = 'os';\nconst RESOURCE_DETECTOR_PROCESS = 'process';\nconst RESOURCE_DETECTOR_SERVICE_INSTANCE_ID = 'serviceinstance';\n\nexport function getResourceFromConfiguration(\n config: ConfigurationModel\n): Resource | undefined {\n if (config.resource && config.resource.attributes) {\n const attrs: DetectedResourceAttributes = {};\n for (let i = 0; i < config.resource.attributes.length; i++) {\n const a = config.resource.attributes[i];\n // https://github.com/open-telemetry/opentelemetry-configuration/issues/613\n // will likely clarify that entries with a `null` value should be ignored.\n if (a.value !== null) {\n attrs[a.name] = a.value;\n }\n }\n return resourceFromAttributes(attrs, {\n schemaUrl: config.resource.schema_url ?? undefined,\n });\n }\n return undefined;\n}\n\nexport function getResourceDetectorsFromEnv(): Array<ResourceDetector> {\n // When updating this list, make sure to also update the section `resourceDetectors` on README.\n const resourceDetectors = new Map<string, ResourceDetector>([\n [RESOURCE_DETECTOR_HOST, hostDetector],\n [RESOURCE_DETECTOR_OS, osDetector],\n [RESOURCE_DETECTOR_SERVICE_INSTANCE_ID, serviceInstanceIdDetector],\n [RESOURCE_DETECTOR_PROCESS, processDetector],\n [RESOURCE_DETECTOR_ENVIRONMENT, envDetector],\n ]);\n\n const resourceDetectorsFromEnv = getStringListFromEnv(\n 'OTEL_NODE_RESOURCE_DETECTORS'\n ) ?? ['all'];\n\n if (resourceDetectorsFromEnv.includes('all')) {\n return [...resourceDetectors.values()].flat();\n }\n\n if (resourceDetectorsFromEnv.includes('none')) {\n return [];\n }\n\n return resourceDetectorsFromEnv.flatMap(detector => {\n const resourceDetector = resourceDetectors.get(detector);\n if (!resourceDetector) {\n diag.warn(\n `Invalid resource detector \"${detector}\" specified in the environment variable OTEL_NODE_RESOURCE_DETECTORS`\n );\n }\n return resourceDetector || [];\n });\n}\n\nexport function getResourceDetectorsFromConfiguration(\n config: ConfigurationModel\n): Array<ResourceDetector> {\n const detectors = config.resource?.['detection/development']?.detectors ?? [];\n\n return detectors.flatMap(detector => {\n const result: ResourceDetector[] = [];\n if (detector.host !== undefined) result.push(hostDetector);\n if (detector.os !== undefined) result.push(osDetector);\n if (detector.process !== undefined) result.push(processDetector);\n if (detector.service !== undefined) result.push(serviceInstanceIdDetector);\n if (detector.env !== undefined) result.push(envDetector);\n return result;\n });\n}\n\nexport function getOtlpProtocolFromEnv(): string {\n return (\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf'\n );\n}\n\nfunction getOtlpExporterFromEnv(): SpanExporter {\n const protocol = getOtlpProtocolFromEnv();\n\n switch (protocol) {\n case 'grpc':\n return new OTLPGrpcTraceExporter();\n case 'http/json':\n return new OTLPHttpTraceExporter();\n case 'http/protobuf':\n return new OTLPProtoTraceExporter();\n default:\n diag.warn(\n `Unsupported OTLP traces protocol: ${protocol}. Using http/protobuf.`\n );\n return new OTLPProtoTraceExporter();\n }\n}\n\nexport function getSpanProcessorsFromEnv(): SpanProcessor[] {\n const exportersMap = new Map<string, () => SpanExporter>([\n ['otlp', () => getOtlpExporterFromEnv()],\n ['zipkin', () => new ZipkinExporter()],\n ['console', () => new ConsoleSpanExporter()],\n ]);\n const exporters: SpanExporter[] = [];\n const processors: SpanProcessor[] = [];\n let traceExportersList = Array.from(\n new Set(getStringListFromEnv('OTEL_TRACES_EXPORTER'))\n ).filter(s => s !== 'null');\n\n if (traceExportersList[0] === 'none') {\n diag.warn(\n 'OTEL_TRACES_EXPORTER contains \"none\". SDK will not be initialized.'\n );\n return [];\n }\n\n if (traceExportersList.length === 0) {\n diag.debug('OTEL_TRACES_EXPORTER is empty. Using default otlp exporter.');\n traceExportersList = ['otlp'];\n } else if (\n traceExportersList.length > 1 &&\n traceExportersList.includes('none')\n ) {\n diag.warn(\n 'OTEL_TRACES_EXPORTER contains \"none\" along with other exporters. Using default otlp exporter.'\n );\n traceExportersList = ['otlp'];\n }\n\n for (const name of traceExportersList) {\n const exporter = exportersMap.get(name)?.();\n if (exporter) {\n exporters.push(exporter);\n } else {\n diag.warn(`Unrecognized OTEL_TRACES_EXPORTER value: ${name}.`);\n }\n }\n\n for (const exp of exporters) {\n if (exp instanceof ConsoleSpanExporter) {\n processors.push(new SimpleSpanProcessor(exp));\n } else {\n processors.push(new BatchSpanProcessor(exp));\n }\n }\n\n if (exporters.length === 0) {\n diag.warn(\n 'Unable to set up trace exporter(s) due to invalid exporter and/or protocol values.'\n );\n }\n\n return processors;\n}\n\n/**\n * Get a propagator as defined by environment variables\n */\nexport function getPropagatorFromEnv(): TextMapPropagator | null | undefined {\n // Empty and undefined MUST be treated equal.\n const propagatorsEnvVarValue = getStringListFromEnv('OTEL_PROPAGATORS');\n if (propagatorsEnvVarValue == null) {\n // return undefined to fall back to default\n return undefined;\n }\n\n if (propagatorsEnvVarValue.includes('none')) {\n return null;\n }\n\n // Implementation note: this only contains specification required propagators that are actually hosted in this repo.\n // Any other propagators (like aws, aws-lambda, should go into `@opentelemetry/auto-configuration-propagators` instead).\n const propagatorsFactory = new Map<string, () => TextMapPropagator>([\n ['tracecontext', () => new W3CTraceContextPropagator()],\n ['baggage', () => new W3CBaggagePropagator()],\n ['b3', () => new B3Propagator()],\n [\n 'b3multi',\n () => new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }),\n ],\n ['jaeger', () => new JaegerPropagator()],\n ]);\n\n // Values MUST be deduplicated in order to register a Propagator only once.\n const uniquePropagatorNames = Array.from(new Set(propagatorsEnvVarValue));\n const validPropagators: TextMapPropagator[] = [];\n\n uniquePropagatorNames.forEach(name => {\n const propagator = propagatorsFactory.get(name)?.();\n if (!propagator) {\n diag.warn(\n `Propagator \"${name}\" requested through environment variable is unavailable.`\n );\n return;\n }\n\n validPropagators.push(propagator);\n });\n\n if (validPropagators.length === 0) {\n // null to signal that the default should **not** be used in its place.\n return null;\n } else if (uniquePropagatorNames.length === 1) {\n return validPropagators[0];\n } else {\n return new CompositePropagator({\n propagators: validPropagators,\n });\n }\n}\n\n/**\n * Get a propagator as defined by configuration model from configuration\n */\nexport function getPropagatorFromConfiguration(\n config: ConfigurationModel\n): TextMapPropagator | null | undefined {\n const propagatorsValue = getKeyListFromObjectArray(\n config.propagator?.composite\n );\n if (propagatorsValue == null) {\n // return undefined to fall back to default\n return undefined;\n }\n\n if (propagatorsValue.includes('none')) {\n return null;\n }\n\n // Implementation note: this only contains specification required propagators that are actually hosted in this repo.\n // Any other propagators (like aws, aws-lambda, should go into `@opentelemetry/auto-configuration-propagators` instead).\n const propagatorsFactory = new Map<string, () => TextMapPropagator>([\n ['tracecontext', () => new W3CTraceContextPropagator()],\n ['baggage', () => new W3CBaggagePropagator()],\n ['b3', () => new B3Propagator()],\n [\n 'b3multi',\n () => new B3Propagator({ injectEncoding: B3InjectEncoding.MULTI_HEADER }),\n ],\n ['jaeger', () => new JaegerPropagator()],\n ]);\n\n // Values MUST be deduplicated in order to register a Propagator only once.\n const uniquePropagatorNames = Array.from(new Set(propagatorsValue));\n const validPropagators: TextMapPropagator[] = [];\n\n uniquePropagatorNames.forEach(name => {\n const propagator = propagatorsFactory.get(name)?.();\n if (!propagator) {\n diag.warn(\n `Propagator \"${name}\" requested through configuration is unavailable.`\n );\n return;\n }\n\n validPropagators.push(propagator);\n });\n\n if (validPropagators.length === 0) {\n // null to signal that the default should **not** be used in its place.\n return null;\n } else if (uniquePropagatorNames.length === 1) {\n return validPropagators[0];\n } else {\n return new CompositePropagator({\n propagators: validPropagators,\n });\n }\n}\n\nexport function setupContextManager(\n contextManager: ContextManager | null | undefined\n) {\n // null means 'do not register'\n if (contextManager === null) {\n return;\n }\n\n // undefined means 'register default'\n if (contextManager === undefined) {\n const defaultContextManager = new AsyncLocalStorageContextManager();\n defaultContextManager.enable();\n context.setGlobalContextManager(defaultContextManager);\n return;\n }\n\n contextManager.enable();\n context.setGlobalContextManager(contextManager);\n}\n\nexport function setupPropagator(\n propagator: TextMapPropagator | null | undefined\n) {\n // null means 'do not register'\n if (propagator === null) {\n return;\n }\n\n // undefined means 'register default'\n if (propagator === undefined) {\n propagation.setGlobalPropagator(\n new CompositePropagator({\n propagators: [\n new W3CTraceContextPropagator(),\n new W3CBaggagePropagator(),\n ],\n })\n );\n return;\n }\n\n propagation.setGlobalPropagator(propagator);\n}\n\nexport function getKeyListFromObjectArray(\n obj: object[] | undefined\n): string[] | undefined {\n if (!obj || obj.length === 0) {\n return undefined;\n }\n\n const keys: string[] = [];\n for (const item of obj) {\n for (const key of Object.keys(item)) {\n keys.push(key);\n }\n }\n return keys;\n}\n\nexport function getNonNegativeNumberFromEnv(\n envVarName: string\n): number | undefined {\n const value = getNumberFromEnv(envVarName);\n if (value != null && value <= 0) {\n diag.warn(\n `${envVarName} (${value}) is invalid, expected number greater than 0, using default.`\n );\n return undefined;\n }\n return value;\n}\n\nexport function getPeriodicExportingMetricReaderFromEnv(\n exporter: PushMetricExporter\n): IMetricReader {\n const defaultTimeoutMillis = 30_000;\n const defaultIntervalMillis = 60_000;\n\n const rawExportIntervalMillis = getNonNegativeNumberFromEnv(\n 'OTEL_METRIC_EXPORT_INTERVAL'\n );\n const rawExportTimeoutMillis = getNonNegativeNumberFromEnv(\n 'OTEL_METRIC_EXPORT_TIMEOUT'\n );\n\n // Apply defaults\n const exportIntervalMillis = rawExportIntervalMillis ?? defaultIntervalMillis;\n let exportTimeoutMillis = rawExportTimeoutMillis ?? defaultTimeoutMillis;\n\n // Ensure timeout doesn't exceed interval\n if (exportTimeoutMillis > exportIntervalMillis) {\n // determine which env vars were set and which ones defaulted for logging purposes\n const timeoutSource =\n rawExportTimeoutMillis != null\n ? rawExportTimeoutMillis.toString()\n : `${defaultTimeoutMillis}, default`;\n const intervalSource =\n rawExportIntervalMillis != null\n ? rawExportIntervalMillis.toString()\n : `${defaultIntervalMillis}, default`;\n\n const bothSetByUser =\n rawExportTimeoutMillis != null && rawExportIntervalMillis != null;\n const logMessage = `OTEL_METRIC_EXPORT_TIMEOUT (${timeoutSource}) is greater than OTEL_METRIC_EXPORT_INTERVAL (${intervalSource}). Clamping timeout to interval value.`;\n\n // only bother users if they explicitly set both values.\n if (bothSetByUser) {\n diag.warn(logMessage);\n } else {\n diag.info(logMessage);\n }\n\n exportTimeoutMillis = exportIntervalMillis;\n }\n\n return new PeriodicExportingMetricReader({\n exportTimeoutMillis,\n exportIntervalMillis,\n exporter,\n });\n}\n\nexport function getOtlpMetricExporterFromEnv(): PushMetricExporter {\n const protocol =\n (\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL')\n )?.trim() || 'http/protobuf'; // Using || to also fall back on empty string\n\n switch (protocol) {\n case 'grpc':\n return new OTLPGrpcMetricExporter();\n case 'http/json':\n return new OTLPHttpMetricExporter();\n case 'http/protobuf':\n return new OTLPProtoMetricExporter();\n }\n\n diag.warn(\n `Unsupported OTLP metrics protocol: \"${protocol}\". Using http/protobuf.`\n );\n return new OTLPProtoMetricExporter();\n}\n\nfunction getMetricProducersFromConfiguration(\n producers: MetricProducerConfigModel[] | undefined\n): MetricProducer[] | undefined {\n if (!producers || producers.length === 0) {\n return undefined;\n }\n const result: MetricProducer[] = [];\n for (const producer of producers) {\n if (producer.opencensus) {\n try {\n const {\n OpenCensusMetricProducer,\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n } = require('@opentelemetry/shim-opencensus');\n result.push(new OpenCensusMetricProducer());\n } catch {\n diag.warn(\n 'OpenCensus metric producer configured but @opentelemetry/shim-opencensus is not installed.'\n );\n }\n } else {\n diag.warn('Unsupported metric producer configured.');\n }\n }\n return result.length > 0 ? result : undefined;\n}\n\nexport function getPeriodicMetricReaderFromConfiguration(\n periodic: PeriodicMetricReaderConfigModel\n): IMetricReader | undefined {\n if (periodic.exporter) {\n let exporter;\n if (periodic.exporter.otlp_http !== undefined) {\n const encoding = periodic.exporter.otlp_http?.encoding ?? 'protobuf';\n if (encoding === 'json') {\n exporter = new OTLPHttpMetricExporter({\n compression:\n periodic.exporter.otlp_http?.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n });\n } else if (encoding === 'protobuf') {\n exporter = new OTLPProtoMetricExporter({\n compression:\n periodic.exporter.otlp_http?.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n });\n } else {\n diag.warn(`Unsupported OTLP metrics encoding: ${encoding}.`);\n }\n }\n if (periodic.exporter.otlp_grpc !== undefined) {\n exporter = new OTLPGrpcMetricExporter({\n compression:\n periodic.exporter.otlp_grpc?.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n });\n }\n\n const metricProducers = getMetricProducersFromConfiguration(\n periodic.producers\n );\n\n if (exporter) {\n // TODO(6425): add cardinality_limits\n return new PeriodicExportingMetricReader({\n exportIntervalMillis: periodic.interval ?? 60_000,\n exportTimeoutMillis: periodic.timeout ?? 30_000,\n exporter,\n metricProducers,\n });\n }\n if (periodic.exporter.console !== undefined) {\n return new PeriodicExportingMetricReader({\n exporter: new ConsoleMetricExporter(),\n metricProducers,\n });\n }\n }\n diag.warn('Unsupported Metric Exporter.');\n return undefined;\n}\n\n/**\n * Get LoggerProviderConfig from environment variables.\n */\nexport function getLoggerProviderConfigFromEnv(): LoggerProviderOptions {\n return {\n logRecordLimits: {\n attributeCountLimit:\n getNonNegativeNumberFromEnv('OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT') ??\n getNonNegativeNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT'),\n attributeValueLengthLimit:\n getNonNegativeNumberFromEnv(\n 'OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n ) ?? getNonNegativeNumberFromEnv('OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT'),\n },\n };\n}\n\n/**\n * Get configuration for BatchLogRecordProcessor from environment variables.\n */\nexport function getBatchLogRecordProcessorConfigFromEnv(): BufferConfig {\n return {\n maxQueueSize: getNonNegativeNumberFromEnv('OTEL_BLRP_MAX_QUEUE_SIZE'),\n scheduledDelayMillis: getNonNegativeNumberFromEnv(\n 'OTEL_BLRP_SCHEDULE_DELAY'\n ),\n exportTimeoutMillis: getNonNegativeNumberFromEnv(\n 'OTEL_BLRP_EXPORT_TIMEOUT'\n ),\n maxExportBatchSize: getNonNegativeNumberFromEnv(\n 'OTEL_BLRP_MAX_EXPORT_BATCH_SIZE'\n ),\n };\n}\n\nexport function getBatchLogRecordProcessorFromEnv(\n exporter: LogRecordExporter\n): BatchLogRecordProcessor {\n return new BatchLogRecordProcessor(\n exporter,\n getBatchLogRecordProcessorConfigFromEnv()\n );\n}\n\nexport function getLogRecordExporter(\n exporter: LogRecordExporterConfigModel\n): LogRecordExporter | undefined {\n if (exporter.otlp_http !== undefined) {\n const cfg = exporter.otlp_http;\n const commonOpts = {\n compression:\n cfg?.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n url: cfg?.endpoint ?? undefined,\n headers: getHeadersFromConfiguration(cfg?.headers),\n timeoutMillis: validateExporterTimeout(cfg?.timeout),\n httpAgentOptions: getHttpAgentOptionsFromTls(cfg?.tls),\n };\n const encoding = cfg?.encoding ?? 'protobuf';\n if (encoding === 'json') {\n return new OTLPHttpLogExporter(commonOpts);\n }\n if (encoding === 'protobuf') {\n return new OTLPProtoLogExporter(commonOpts);\n }\n diag.warn(\n `Unsupported OTLP logs encoding: ${encoding}. Using http/protobuf.`\n );\n return new OTLPProtoLogExporter(commonOpts);\n } else if (exporter.otlp_grpc !== undefined) {\n const cfg = exporter.otlp_grpc;\n return new OTLPGrpcLogExporter({\n compression:\n cfg?.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n url: cfg?.endpoint ?? undefined,\n timeoutMillis: validateExporterTimeout(cfg?.timeout),\n credentials: getGrpcCredentialsFromTls(cfg?.tls),\n metadata: getGrpcMetadataFromHeaders(cfg?.headers),\n });\n } else if (exporter.console !== undefined) {\n return new ConsoleLogRecordExporter();\n }\n diag.warn('Unsupported Exporter value. No Log Record Exporter registered');\n return undefined;\n}\n\nexport function getLogRecordProcessorsFromConfiguration(\n config: ConfigurationModel\n): LogRecordProcessor[] | undefined {\n const logRecordProcessors: LogRecordProcessor[] = [];\n config.logger_provider?.processors?.forEach(processor => {\n if (processor.batch) {\n const exporter = getLogRecordExporter(processor.batch.exporter);\n if (exporter) {\n logRecordProcessors.push(\n new BatchLogRecordProcessor(exporter, {\n maxQueueSize: processor.batch.max_queue_size ?? undefined,\n maxExportBatchSize:\n processor.batch.max_export_batch_size ?? undefined,\n scheduledDelayMillis: processor.batch.schedule_delay ?? undefined,\n exportTimeoutMillis: processor.batch.export_timeout ?? undefined,\n })\n );\n }\n }\n if (processor.simple) {\n const exporter = getLogRecordExporter(processor.simple.exporter);\n if (exporter) {\n logRecordProcessors.push(new SimpleLogRecordProcessor(exporter));\n }\n }\n });\n if (logRecordProcessors.length > 0) {\n return logRecordProcessors;\n }\n return undefined;\n}\n\nexport function getHeadersFromConfiguration(\n headers: NameStringValuePairConfigModel[] | undefined\n): Record<string, string> | undefined {\n if (!headers) {\n return undefined;\n }\n const result: Record<string, string> = {};\n headers.forEach(header => {\n if (header.value !== null) {\n result[header.name] = header.value;\n }\n });\n return result;\n}\n\n/**\n * Validate an exporter timeout value. The spec says 0 means \"no limit\n * (infinity)\" but the JS exporters don't support that yet (see #6617).\n * Warn and return undefined so the exporter falls back to its default.\n */\nfunction validateExporterTimeout(\n timeout: number | null | undefined\n): number | undefined {\n if (timeout === null) {\n return undefined;\n } else if (timeout === 0) {\n diag.warn(\n 'Exporter timeout of 0 (infinite) is not supported. Using default timeout.'\n );\n return undefined;\n }\n return timeout;\n}\n\nexport function getHttpAgentOptionsFromTls(\n tls: HttpTlsConfigModel | undefined\n): { ca?: Buffer; cert?: Buffer; key?: Buffer } | undefined {\n if (tls && (tls.ca_file || tls.cert_file || tls.key_file)) {\n return {\n ca: readFileOrWarn(tls.ca_file, 'TLS CA'),\n cert: readFileOrWarn(tls.cert_file, 'TLS cert'),\n key: readFileOrWarn(tls.key_file, 'TLS key'),\n };\n }\n return undefined;\n}\n\nfunction getGrpcCredentialsFromTls(tls?: GrpcTlsConfigModel) {\n if (tls?.insecure) {\n return createInsecureCredentials();\n }\n const rootCert = readFileOrWarn(tls?.ca_file, 'TLS CA');\n const privateKey = readFileOrWarn(tls?.key_file, 'TLS key');\n const certChain = readFileOrWarn(tls?.cert_file, 'TLS cert');\n if (rootCert || privateKey || certChain) {\n try {\n return createSslCredentials(rootCert, privateKey, certChain);\n } catch (e) {\n diag.warn(`Failed to create gRPC SSL credentials: ${e}`);\n return undefined;\n }\n }\n return undefined;\n}\n\nfunction getGrpcMetadataFromHeaders(\n headers: NameStringValuePairConfigModel[] | undefined\n) {\n if (!headers || headers.length === 0) {\n return undefined;\n }\n const metadata = createEmptyMetadata();\n for (const header of headers) {\n if (header.value !== null) {\n metadata.set(header.name, header.value);\n }\n }\n return metadata;\n}\n\nfunction readFileOrWarn(\n filePath: string | null | undefined,\n label: string\n): Buffer | undefined {\n if (!filePath) return undefined;\n try {\n return fs.readFileSync(filePath);\n } catch (e) {\n diag.warn(`Failed to read ${label} file at ${filePath}: ${e}`);\n return undefined;\n }\n}\n\nexport function getSpanExporter(\n exporter: SpanExporterConfigModel\n): SpanExporter | undefined {\n if (exporter.otlp_http !== undefined) {\n const encoding = exporter.otlp_http?.encoding ?? 'protobuf';\n if (encoding === 'json') {\n return new OTLPHttpTraceExporter({\n compression:\n exporter.otlp_http?.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n url: exporter.otlp_http?.endpoint ?? undefined,\n headers: getHeadersFromConfiguration(exporter.otlp_http?.headers),\n timeoutMillis: validateExporterTimeout(exporter.otlp_http?.timeout),\n httpAgentOptions: getHttpAgentOptionsFromTls(exporter.otlp_http?.tls),\n });\n } else {\n return new OTLPProtoTraceExporter({\n compression:\n exporter.otlp_http?.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n url: exporter.otlp_http?.endpoint ?? undefined,\n headers: getHeadersFromConfiguration(exporter.otlp_http?.headers),\n timeoutMillis: validateExporterTimeout(exporter.otlp_http?.timeout),\n httpAgentOptions: getHttpAgentOptionsFromTls(exporter.otlp_http?.tls),\n });\n }\n } else if (exporter.otlp_grpc !== undefined) {\n return new OTLPGrpcTraceExporter({\n compression:\n exporter.otlp_grpc?.compression === 'gzip'\n ? CompressionAlgorithm.GZIP\n : CompressionAlgorithm.NONE,\n url: exporter.otlp_grpc?.endpoint ?? undefined,\n timeoutMillis: validateExporterTimeout(exporter.otlp_grpc?.timeout),\n credentials: getGrpcCredentialsFromTls(exporter.otlp_grpc?.tls),\n metadata: getGrpcMetadataFromHeaders(exporter.otlp_grpc?.headers),\n });\n } else if (exporter.console !== undefined) {\n return new ConsoleSpanExporter();\n }\n diag.warn('Unsupported Exporter value. No Span Exporter registered');\n return undefined;\n}\n\nexport function getSpanProcessorsFromConfiguration(\n config: ConfigurationModel\n): SpanProcessor[] | undefined {\n const spanProcessors: SpanProcessor[] = [];\n config.tracer_provider?.processors?.forEach(processor => {\n if (processor.batch) {\n const exporter = getSpanExporter(processor.batch.exporter);\n if (exporter) {\n spanProcessors.push(\n new BatchSpanProcessor(exporter, {\n maxQueueSize: processor.batch.max_queue_size ?? undefined,\n maxExportBatchSize:\n processor.batch.max_export_batch_size ?? undefined,\n scheduledDelayMillis: processor.batch.schedule_delay ?? undefined,\n exportTimeoutMillis: processor.batch.export_timeout ?? undefined,\n })\n );\n }\n }\n if (processor.simple) {\n const exporter = getSpanExporter(processor.simple.exporter);\n if (exporter) {\n spanProcessors.push(new SimpleSpanProcessor(exporter));\n }\n }\n });\n if (spanProcessors.length > 0) {\n return spanProcessors;\n }\n return undefined;\n}\n\nexport function getSpanLimitsFromConfiguration(\n config: ConfigurationModel\n): SpanLimits | undefined {\n if (config.tracer_provider?.limits) {\n const limitsConfig = config.tracer_provider.limits;\n const spanLimits: SpanLimits = {};\n spanLimits.attributeCountLimit = limitsConfig.attribute_count_limit ?? 128;\n spanLimits.eventCountLimit = limitsConfig.event_count_limit ?? 128;\n spanLimits.linkCountLimit = limitsConfig.link_count_limit ?? 128;\n spanLimits.attributePerLinkCountLimit =\n limitsConfig.link_attribute_count_limit ?? 128;\n spanLimits.attributePerEventCountLimit =\n limitsConfig.event_attribute_count_limit ?? 128;\n\n if (limitsConfig.attribute_value_length_limit != null) {\n spanLimits.attributeValueLengthLimit =\n limitsConfig.attribute_value_length_limit;\n }\n\n return spanLimits;\n }\n return undefined;\n}\n\nexport function getMeterReadersFromConfiguration(\n config: ConfigurationModel\n): IMetricReader[] | undefined {\n const metricReaders: IMetricReader[] = [];\n config.meter_provider?.readers?.forEach(reader => {\n if (reader.periodic) {\n const periodicReader = getPeriodicMetricReaderFromConfiguration(\n reader.periodic\n );\n if (periodicReader) {\n metricReaders.push(periodicReader);\n }\n }\n });\n if (metricReaders.length > 0) {\n return metricReaders;\n }\n return undefined;\n}\n\nexport function getInstrumentType(\n instrument: InstrumentTypeConfigModel\n): InstrumentType | undefined {\n switch (instrument) {\n case 'counter':\n return InstrumentType.COUNTER;\n case 'gauge':\n return InstrumentType.GAUGE;\n case 'histogram':\n return InstrumentType.HISTOGRAM;\n case 'observable_counter':\n return InstrumentType.OBSERVABLE_COUNTER;\n case 'observable_gauge':\n return InstrumentType.OBSERVABLE_GAUGE;\n case 'observable_up_down_counter':\n return InstrumentType.OBSERVABLE_UP_DOWN_COUNTER;\n case 'up_down_counter':\n return InstrumentType.UP_DOWN_COUNTER;\n default:\n diag.warn(`Unsupported instrument type: ${instrument}`);\n return undefined;\n }\n}\n\nexport function getAggregationType(\n aggregation: AggregationConfigModel\n): AggregationOption | undefined {\n if (aggregation.default) {\n return {\n type: AggregationType.DEFAULT,\n };\n }\n if (aggregation.drop) {\n return {\n type: AggregationType.DROP,\n };\n }\n if (aggregation.explicit_bucket_histogram) {\n return {\n type: AggregationType.EXPLICIT_BUCKET_HISTOGRAM,\n options: {\n recordMinMax:\n aggregation.explicit_bucket_histogram.record_min_max ?? true,\n boundaries: aggregation.explicit_bucket_histogram.boundaries ?? [\n 0, 5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500,\n 10000,\n ],\n },\n };\n }\n\n if (aggregation.base2_exponential_bucket_histogram) {\n return {\n type: AggregationType.EXPONENTIAL_HISTOGRAM,\n options: {\n recordMinMax:\n aggregation.base2_exponential_bucket_histogram.record_min_max ??\n undefined,\n maxSize:\n aggregation.base2_exponential_bucket_histogram.max_size ?? undefined,\n },\n };\n }\n if (aggregation.last_value) {\n return {\n type: AggregationType.LAST_VALUE,\n };\n }\n if (aggregation.sum) {\n return {\n type: AggregationType.SUM,\n };\n }\n\n diag.warn('Unsupported aggregation type');\n return undefined;\n}\n\nexport function getMeterViewsFromConfiguration(\n config: ConfigurationModel\n): ViewOptions[] | undefined {\n const metricViews: ViewOptions[] = [];\n config.meter_provider?.views?.forEach(view => {\n const viewOption: ViewOptions = {};\n if (view.selector) {\n if (view.selector.instrument_name) {\n viewOption.instrumentName = view.selector.instrument_name;\n }\n if (view.selector.instrument_type) {\n const instrumentType = getInstrumentType(view.selector.instrument_type);\n if (instrumentType) {\n viewOption.instrumentType = instrumentType;\n }\n }\n if (view.selector.unit) {\n viewOption.instrumentUnit = view.selector.unit;\n }\n if (view.selector.meter_name) {\n viewOption.meterName = view.selector.meter_name;\n }\n if (view.selector.meter_version) {\n viewOption.meterVersion = view.selector.meter_version;\n }\n if (view.selector.meter_schema_url) {\n viewOption.meterSchemaUrl = view.selector.meter_schema_url;\n }\n }\n if (view.stream) {\n if (view.stream.name) {\n viewOption.name = view.stream.name;\n }\n viewOption.aggregationCardinalityLimit =\n view.stream.aggregation_cardinality_limit ?? 2_000;\n if (view.stream.description) {\n viewOption.description = view.stream.description;\n }\n if (view.stream.aggregation) {\n const aggregationType = getAggregationType(view.stream.aggregation);\n if (aggregationType) {\n viewOption.aggregation = aggregationType;\n }\n }\n if (view.stream.attribute_keys) {\n const processors: IAttributesProcessor[] = [];\n if (\n view.stream.attribute_keys.included &&\n view.stream.attribute_keys.included.length > 0\n ) {\n processors.push(\n createAllowListAttributesProcessor(\n view.stream.attribute_keys.included\n )\n );\n }\n if (\n view.stream.attribute_keys.excluded &&\n view.stream.attribute_keys.excluded.length > 0\n ) {\n processors.push(\n createDenyListAttributesProcessor(\n view.stream.attribute_keys.excluded\n )\n );\n }\n if (processors.length > 0) {\n viewOption.attributesProcessors = processors;\n }\n }\n }\n\n if (Object.keys(viewOption).length > 0) {\n metricViews.push(viewOption);\n }\n });\n if (metricViews.length > 0) {\n return metricViews;\n }\n return undefined;\n}\n\nexport function getInstanceID(config: ConfigurationModel): string | undefined {\n if (config.resource?.attributes) {\n for (let i = 0; i < config.resource.attributes.length; i++) {\n const element = config.resource.attributes[i];\n if (element.name === 'service.instance.id') {\n return element.value?.toString();\n }\n }\n }\n return undefined;\n}\n\nconst DEFAULT_RATIO = 1;\n\n/**\n * Builds a {@link Sampler} from a {@link SamplerConfigModel} data model.\n * This allows sampler construction from declarative configuration.\n */\nexport function buildSamplerFromConfig(\n samplerConfig: SamplerConfigModel\n): Sampler {\n if (samplerConfig.always_on !== undefined) {\n return new AlwaysOnSampler();\n }\n if (samplerConfig.always_off !== undefined) {\n return new AlwaysOffSampler();\n }\n if (samplerConfig.trace_id_ratio_based !== undefined) {\n return new TraceIdRatioBasedSampler(\n samplerConfig.trace_id_ratio_based?.ratio ?? DEFAULT_RATIO\n );\n }\n if (samplerConfig.parent_based !== undefined) {\n const pb = samplerConfig.parent_based ?? {};\n return new ParentBasedSampler({\n root: pb.root ? buildSamplerFromConfig(pb.root) : new AlwaysOnSampler(),\n remoteParentSampled: pb.remote_parent_sampled\n ? buildSamplerFromConfig(pb.remote_parent_sampled)\n : undefined,\n remoteParentNotSampled: pb.remote_parent_not_sampled\n ? buildSamplerFromConfig(pb.remote_parent_not_sampled)\n : undefined,\n localParentSampled: pb.local_parent_sampled\n ? buildSamplerFromConfig(pb.local_parent_sampled)\n : undefined,\n localParentNotSampled: pb.local_parent_not_sampled\n ? buildSamplerFromConfig(pb.local_parent_not_sampled)\n : undefined,\n });\n }\n diag.error('Unknown sampler config, defaulting to ParentBased(AlwaysOn).');\n return new ParentBasedSampler({ root: new AlwaysOnSampler() });\n}\n"]}

@@ -1,2 +0,2 @@

export declare const VERSION = "0.218.0";
export declare const VERSION = "0.219.0";
//# sourceMappingURL=version.d.ts.map

@@ -9,3 +9,3 @@ "use strict";

// this is autogenerated file, see scripts/version-update.js
exports.VERSION = '0.218.0';
exports.VERSION = '0.219.0';
//# sourceMappingURL=version.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.218.0';\n"]}
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,SAAS,CAAC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '0.219.0';\n"]}
{
"name": "@opentelemetry/sdk-node",
"version": "0.218.0",
"version": "0.219.0",
"description": "OpenTelemetry SDK for Node.js",

@@ -13,4 +13,4 @@ "main": "build/src/index.js",

"test": "nyc mocha test/**/*.test.ts",
"lint": "eslint . --ext .ts",
"lint:fix": "eslint . --ext .ts --fix",
"lint": "eslint .",
"lint:fix": "eslint . --fix",
"version": "node ../../../scripts/version-update.js",

@@ -47,26 +47,27 @@ "watch": "tsc --build --watch",

"dependencies": {
"@opentelemetry/api-logs": "0.218.0",
"@opentelemetry/configuration": "0.218.0",
"@opentelemetry/context-async-hooks": "2.7.1",
"@opentelemetry/core": "2.7.1",
"@opentelemetry/exporter-logs-otlp-grpc": "0.218.0",
"@opentelemetry/exporter-logs-otlp-http": "0.218.0",
"@opentelemetry/exporter-logs-otlp-proto": "0.218.0",
"@opentelemetry/exporter-metrics-otlp-grpc": "0.218.0",
"@opentelemetry/exporter-metrics-otlp-http": "0.218.0",
"@opentelemetry/exporter-metrics-otlp-proto": "0.218.0",
"@opentelemetry/exporter-prometheus": "0.218.0",
"@opentelemetry/exporter-trace-otlp-grpc": "0.218.0",
"@opentelemetry/exporter-trace-otlp-http": "0.218.0",
"@opentelemetry/exporter-trace-otlp-proto": "0.218.0",
"@opentelemetry/exporter-zipkin": "2.7.1",
"@opentelemetry/instrumentation": "0.218.0",
"@opentelemetry/otlp-exporter-base": "0.218.0",
"@opentelemetry/propagator-b3": "2.7.1",
"@opentelemetry/propagator-jaeger": "2.7.1",
"@opentelemetry/resources": "2.7.1",
"@opentelemetry/sdk-logs": "0.218.0",
"@opentelemetry/sdk-metrics": "2.7.1",
"@opentelemetry/sdk-trace-base": "2.7.1",
"@opentelemetry/sdk-trace-node": "2.7.1",
"@opentelemetry/api-logs": "0.219.0",
"@opentelemetry/configuration": "0.219.0",
"@opentelemetry/context-async-hooks": "2.8.0",
"@opentelemetry/core": "2.8.0",
"@opentelemetry/exporter-logs-otlp-grpc": "0.219.0",
"@opentelemetry/exporter-logs-otlp-http": "0.219.0",
"@opentelemetry/exporter-logs-otlp-proto": "0.219.0",
"@opentelemetry/exporter-metrics-otlp-grpc": "0.219.0",
"@opentelemetry/exporter-metrics-otlp-http": "0.219.0",
"@opentelemetry/exporter-metrics-otlp-proto": "0.219.0",
"@opentelemetry/exporter-prometheus": "0.219.0",
"@opentelemetry/exporter-trace-otlp-grpc": "0.219.0",
"@opentelemetry/exporter-trace-otlp-http": "0.219.0",
"@opentelemetry/exporter-trace-otlp-proto": "0.219.0",
"@opentelemetry/exporter-zipkin": "2.8.0",
"@opentelemetry/instrumentation": "0.219.0",
"@opentelemetry/otlp-exporter-base": "0.219.0",
"@opentelemetry/otlp-grpc-exporter-base": "0.219.0",
"@opentelemetry/propagator-b3": "2.8.0",
"@opentelemetry/propagator-jaeger": "2.8.0",
"@opentelemetry/resources": "2.8.0",
"@opentelemetry/sdk-logs": "0.219.0",
"@opentelemetry/sdk-metrics": "2.8.0",
"@opentelemetry/sdk-trace-base": "2.8.0",
"@opentelemetry/sdk-trace-node": "2.8.0",
"@opentelemetry/semantic-conventions": "^1.29.0"

@@ -85,3 +86,3 @@ },

"sinon": "18.0.1",
"ts-loader": "9.5.4",
"ts-loader": "9.5.7",
"typescript": "5.0.4"

@@ -91,3 +92,3 @@ },

"sideEffects": false,
"gitHead": "06ad0eaaecbd49f5ead871325f852cc2a3454079"
"gitHead": "13a035bc695996cf4aec885fef7b9866f48bc555"
}

@@ -246,2 +246,3 @@ # OpenTelemetry SDK for Node.js

- Metric reader metrics: [MetricReaderMetrics](../../../packages//sdk-metrics/src/export/MetricReaderMetrics.ts)
- Logger metrics: [LoggerMetrics.ts](../sdk-logs/src/LoggerMetrics.ts)

@@ -248,0 +249,0 @@ - Span metrics: [TracerMetrics.ts](../../../packages/opentelemetry-sdk-trace-base/src/TracerMetrics.ts)