diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 84dc4c0b83e..24ebe265b86 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -14,6 +14,8 @@ All notable changes to experimental packages in this project will be documented * (user-facing) `hostname` was intended for use in tests and is not used by any exporters, it will be removed in a future release * fix(exporter-*-otlp-*)!: ensure `User-Agent` header cannot be overwritten by the user [#4743](https://github.com/open-telemetry/opentelemetry-js/pull/4743) @pichlermarc * allowing overrides of the `User-Agent` header was not specification compliant. +* feat(exporter-*-otlp*)!: remove environment-variable specific code from browser exporters + * (user-facing) removes the ability to configure browser exporters by using `process.env` polyfills ### :rocket: (Enhancement) diff --git a/experimental/packages/exporter-logs-otlp-http/src/platform/browser/OTLPLogExporter.ts b/experimental/packages/exporter-logs-otlp-http/src/platform/browser/OTLPLogExporter.ts index a4f5f2ddd55..4a9ce917e25 100644 --- a/experimental/packages/exporter-logs-otlp-http/src/platform/browser/OTLPLogExporter.ts +++ b/experimental/packages/exporter-logs-otlp-http/src/platform/browser/OTLPLogExporter.ts @@ -21,7 +21,6 @@ import type { import type { OTLPExporterConfigBase } from '@opentelemetry/otlp-exporter-base'; import type { IExportLogsServiceResponse } from '@opentelemetry/otlp-transformer'; import { OTLPExporterBrowserBase } from '@opentelemetry/otlp-exporter-base'; -import { baggageUtils, getEnv } from '@opentelemetry/core'; import { JsonLogsSerializer } from '@opentelemetry/otlp-transformer'; import { getDefaultUrl } from '../config'; @@ -34,21 +33,13 @@ export class OTLPLogExporter implements LogRecordExporter { constructor(config: OTLPExporterConfigBase = {}) { - // load OTEL_EXPORTER_OTLP_LOGS_TIMEOUT env var super( { - timeoutMillis: getEnv().OTEL_EXPORTER_OTLP_LOGS_TIMEOUT, ...config, }, JsonLogsSerializer, 'application/json' ); - this._headers = { - ...this._headers, - ...baggageUtils.parseKeyPairsIntoRecord( - getEnv().OTEL_EXPORTER_OTLP_LOGS_HEADERS - ), - }; } getDefaultUrl(config: OTLPExporterConfigBase): string { diff --git a/experimental/packages/exporter-logs-otlp-http/test/browser/OTLPLogExporter.test.ts b/experimental/packages/exporter-logs-otlp-http/test/browser/OTLPLogExporter.test.ts index d8fbcfff4a2..362a3d65d23 100644 --- a/experimental/packages/exporter-logs-otlp-http/test/browser/OTLPLogExporter.test.ts +++ b/experimental/packages/exporter-logs-otlp-http/test/browser/OTLPLogExporter.test.ts @@ -24,7 +24,6 @@ import { mockedReadableLogRecord } from '../logHelper'; import { ExportResultCode } from '@opentelemetry/core'; describe('OTLPLogExporter', () => { - let envSource: Record; let collectorExporter: OTLPLogExporter; let collectorExporterConfig: OTLPExporterConfigBase; @@ -32,33 +31,11 @@ describe('OTLPLogExporter', () => { sinon.restore(); }); - if (global.process?.versions?.node === undefined) { - envSource = globalThis as unknown as Record; - } else { - envSource = process.env as Record; - } - describe('constructor', () => { it('should create an instance', () => { const exporter = new OTLPLogExporter(); assert.ok(exporter instanceof OTLPLogExporter); }); - - it('should use headers defined via env', () => { - envSource.OTEL_EXPORTER_OTLP_LOGS_HEADERS = 'foo=bar'; - const exporter = new OTLPLogExporter(); - assert.strictEqual(exporter['_headers'].foo, 'bar'); - delete envSource.OTEL_EXPORTER_OTLP_LOGS_HEADERS; - }); - - it('should use timeout defined via env', () => { - envSource.OTEL_EXPORTER_OTLP_LOGS_HEADERS = ''; - envSource.OTEL_EXPORTER_OTLP_LOGS_TIMEOUT = 30000; - const exporter = new OTLPLogExporter(); - assert.strictEqual(exporter.timeoutMillis, 30000); - delete envSource.OTEL_EXPORTER_OTLP_LOGS_HEADERS; - delete envSource.OTEL_EXPORTER_OTLP_LOGS_HEADERS; - }); }); describe('getDefaultUrl', () => { diff --git a/experimental/packages/exporter-logs-otlp-proto/src/platform/browser/OTLPLogExporter.ts b/experimental/packages/exporter-logs-otlp-proto/src/platform/browser/OTLPLogExporter.ts index 259ce6a0801..ede7ae6c156 100644 --- a/experimental/packages/exporter-logs-otlp-proto/src/platform/browser/OTLPLogExporter.ts +++ b/experimental/packages/exporter-logs-otlp-proto/src/platform/browser/OTLPLogExporter.ts @@ -14,11 +14,8 @@ * limitations under the License. */ -import { getEnv, baggageUtils } from '@opentelemetry/core'; import { OTLPExporterConfigBase, - appendResourcePathToUrl, - appendRootPathToUrlIfNeeded, OTLPExporterBrowserBase, } from '@opentelemetry/otlp-exporter-base'; import { @@ -40,11 +37,6 @@ export class OTLPLogExporter { constructor(config: OTLPExporterConfigBase = {}) { super(config, ProtobufLogsSerializer, 'application/x-protobuf'); - const env = getEnv(); - this._headers = Object.assign( - this._headers, - baggageUtils.parseKeyPairsIntoRecord(env.OTEL_EXPORTER_OTLP_LOGS_HEADERS) - ); } getDefaultUrl(config: OTLPExporterConfigBase): string { @@ -52,18 +44,6 @@ export class OTLPLogExporter return config.url; } - const env = getEnv(); - if (env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT.length > 0) { - return appendRootPathToUrlIfNeeded(env.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT); - } - - if (env.OTEL_EXPORTER_OTLP_ENDPOINT.length > 0) { - return appendResourcePathToUrl( - env.OTEL_EXPORTER_OTLP_ENDPOINT, - DEFAULT_COLLECTOR_RESOURCE_PATH - ); - } - return DEFAULT_COLLECTOR_URL; } } diff --git a/experimental/packages/exporter-trace-otlp-http/src/platform/browser/OTLPTraceExporter.ts b/experimental/packages/exporter-trace-otlp-http/src/platform/browser/OTLPTraceExporter.ts index b19ce672fd8..c9bc8e92428 100644 --- a/experimental/packages/exporter-trace-otlp-http/src/platform/browser/OTLPTraceExporter.ts +++ b/experimental/packages/exporter-trace-otlp-http/src/platform/browser/OTLPTraceExporter.ts @@ -15,11 +15,8 @@ */ import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base'; -import { getEnv, baggageUtils } from '@opentelemetry/core'; import { OTLPExporterConfigBase, - appendResourcePathToUrl, - appendRootPathToUrlIfNeeded, OTLPExporterBrowserBase, } from '@opentelemetry/otlp-exporter-base'; import { @@ -38,14 +35,7 @@ export class OTLPTraceExporter implements SpanExporter { constructor(config: OTLPExporterConfigBase = {}) { - super(config, JsonTraceSerializer, 'application/json'); - const env = getEnv(); - this._headers = Object.assign( - this._headers, - baggageUtils.parseKeyPairsIntoRecord( - env.OTEL_EXPORTER_OTLP_TRACES_HEADERS - ) - ); + super(config, JsonTraceSerializer, `application/json`); } getDefaultUrl(config: OTLPExporterConfigBase): string { @@ -53,20 +43,6 @@ export class OTLPTraceExporter return config.url; } - const env = getEnv(); - if (env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT.length > 0) { - return appendRootPathToUrlIfNeeded( - env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - ); - } - - if (env.OTEL_EXPORTER_OTLP_ENDPOINT.length > 0) { - return appendResourcePathToUrl( - env.OTEL_EXPORTER_OTLP_ENDPOINT, - DEFAULT_COLLECTOR_RESOURCE_PATH - ); - } - return DEFAULT_COLLECTOR_URL; } } diff --git a/experimental/packages/exporter-trace-otlp-http/test/browser/CollectorTraceExporter.test.ts b/experimental/packages/exporter-trace-otlp-http/test/browser/CollectorTraceExporter.test.ts index 56efeb8092b..8d021387dfd 100644 --- a/experimental/packages/exporter-trace-otlp-http/test/browser/CollectorTraceExporter.test.ts +++ b/experimental/packages/exporter-trace-otlp-http/test/browser/CollectorTraceExporter.test.ts @@ -490,102 +490,6 @@ describe('OTLPTraceExporter - browser (getDefaultUrl)', () => { }); }); -describe('when configuring via environment', () => { - const envSource = window as any; - it('should use url defined in env that ends with root path and append version and signal path', () => { - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar/'; - const collectorExporter = new OTLPTraceExporter(); - assert.strictEqual( - collectorExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_ENDPOINT}v1/traces` - ); - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; - }); - it('should use url defined in env without checking if path is already present', () => { - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar/v1/traces'; - const collectorExporter = new OTLPTraceExporter(); - assert.strictEqual( - collectorExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/traces` - ); - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; - }); - it('should use url defined in env and append version and signal', () => { - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar'; - const collectorExporter = new OTLPTraceExporter(); - assert.strictEqual( - collectorExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/traces` - ); - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; - }); - it('should override global exporter url with signal url defined in env', () => { - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar/'; - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = 'http://foo.traces/'; - const collectorExporter = new OTLPTraceExporter(); - assert.strictEqual( - collectorExporter.url, - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - ); - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = ''; - }); - it('should add root path when signal url defined in env contains no path and no root path', () => { - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = 'http://foo.bar'; - const collectorExporter = new OTLPTraceExporter(); - assert.strictEqual( - collectorExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT}/` - ); - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = ''; - }); - it('should not add root path when signal url defined in env contains root path but no path', () => { - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = 'http://foo.bar/'; - const collectorExporter = new OTLPTraceExporter(); - assert.strictEqual( - collectorExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT}` - ); - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = ''; - }); - it('should not add root path when signal url defined in env contains path', () => { - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = 'http://foo.bar/v1/traces'; - const collectorExporter = new OTLPTraceExporter(); - assert.strictEqual( - collectorExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT}` - ); - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = ''; - }); - it('should not add root path when signal url defined in env contains path and ends in /', () => { - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = 'http://foo.bar/v1/traces/'; - const collectorExporter = new OTLPTraceExporter(); - assert.strictEqual( - collectorExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT}` - ); - envSource.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT = ''; - }); - it('should use headers defined via env', () => { - envSource.OTEL_EXPORTER_OTLP_HEADERS = 'foo=bar'; - const collectorExporter = new OTLPTraceExporter({ headers: {} }); - // @ts-expect-error access internal property for testing - assert.strictEqual(collectorExporter._headers.foo, 'bar'); - envSource.OTEL_EXPORTER_OTLP_HEADERS = ''; - }); - it('should override global headers config with signal headers defined via env', () => { - envSource.OTEL_EXPORTER_OTLP_HEADERS = 'foo=bar,bar=foo'; - envSource.OTEL_EXPORTER_OTLP_TRACES_HEADERS = 'foo=boo'; - const collectorExporter = new OTLPTraceExporter({ headers: {} }); - // @ts-expect-error access internal property for testing - assert.strictEqual(collectorExporter._headers.foo, 'boo'); - // @ts-expect-error access internal property for testing - assert.strictEqual(collectorExporter._headers.bar, 'foo'); - envSource.OTEL_EXPORTER_OTLP_TRACES_HEADERS = ''; - envSource.OTEL_EXPORTER_OTLP_HEADERS = ''; - }); -}); - describe('export with retry - real http request destroyed', () => { let server: any; let collectorTraceExporter: OTLPTraceExporter; diff --git a/experimental/packages/exporter-trace-otlp-proto/src/platform/browser/OTLPTraceExporter.ts b/experimental/packages/exporter-trace-otlp-proto/src/platform/browser/OTLPTraceExporter.ts index f474e957888..82d4bc389df 100644 --- a/experimental/packages/exporter-trace-otlp-proto/src/platform/browser/OTLPTraceExporter.ts +++ b/experimental/packages/exporter-trace-otlp-proto/src/platform/browser/OTLPTraceExporter.ts @@ -15,11 +15,8 @@ */ import { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base'; -import { getEnv, baggageUtils } from '@opentelemetry/core'; import { OTLPExporterConfigBase, - appendResourcePathToUrl, - appendRootPathToUrlIfNeeded, OTLPExporterBrowserBase, } from '@opentelemetry/otlp-exporter-base'; import { @@ -39,13 +36,6 @@ export class OTLPTraceExporter { constructor(config: OTLPExporterConfigBase = {}) { super(config, ProtobufTraceSerializer, 'application/x-protobuf'); - const env = getEnv(); - this._headers = Object.assign( - this._headers, - baggageUtils.parseKeyPairsIntoRecord( - env.OTEL_EXPORTER_OTLP_TRACES_HEADERS - ) - ); } getDefaultUrl(config: OTLPExporterConfigBase): string { @@ -53,20 +43,6 @@ export class OTLPTraceExporter return config.url; } - const env = getEnv(); - if (env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT.length > 0) { - return appendRootPathToUrlIfNeeded( - env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - ); - } - - if (env.OTEL_EXPORTER_OTLP_ENDPOINT.length > 0) { - return appendResourcePathToUrl( - env.OTEL_EXPORTER_OTLP_ENDPOINT, - DEFAULT_COLLECTOR_RESOURCE_PATH - ); - } - return DEFAULT_COLLECTOR_URL; } } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts index 0fa43efa784..b84c194f914 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/src/platform/browser/OTLPMetricExporter.ts @@ -15,14 +15,11 @@ */ import { ResourceMetrics } from '@opentelemetry/sdk-metrics'; -import { baggageUtils, getEnv } from '@opentelemetry/core'; import { OTLPMetricExporterOptions } from '../../OTLPMetricExporterOptions'; import { OTLPMetricExporterBase } from '../../OTLPMetricExporterBase'; import { OTLPExporterBrowserBase, OTLPExporterConfigBase, - appendResourcePathToUrl, - appendRootPathToUrlIfNeeded, } from '@opentelemetry/otlp-exporter-base'; import { IExportMetricsServiceResponse, @@ -38,13 +35,6 @@ class OTLPExporterBrowserProxy extends OTLPExporterBrowserBase< > { constructor(config?: OTLPMetricExporterOptions & OTLPExporterConfigBase) { super(config, JsonMetricsSerializer, 'application/json'); - const env = getEnv(); - this._headers = Object.assign( - this._headers, - baggageUtils.parseKeyPairsIntoRecord( - env.OTEL_EXPORTER_OTLP_METRICS_HEADERS - ) - ); } getDefaultUrl(config: OTLPExporterConfigBase): string { @@ -52,20 +42,6 @@ class OTLPExporterBrowserProxy extends OTLPExporterBrowserBase< return config.url; } - const env = getEnv(); - if (env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT.length > 0) { - return appendRootPathToUrlIfNeeded( - env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT - ); - } - - if (env.OTEL_EXPORTER_OTLP_ENDPOINT.length > 0) { - return appendResourcePathToUrl( - env.OTEL_EXPORTER_OTLP_ENDPOINT, - DEFAULT_COLLECTOR_RESOURCE_PATH - ); - } - return DEFAULT_COLLECTOR_URL; } } diff --git a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts index 1cdccbdbd82..96af0d58f71 100644 --- a/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts +++ b/experimental/packages/opentelemetry-exporter-metrics-otlp-http/test/browser/CollectorMetricExporter.test.ts @@ -413,112 +413,3 @@ describe('OTLPMetricExporter - web', () => { }); }); }); - -describe('when configuring via environment', () => { - const envSource = window as any; - it('should use url defined in env that ends with root path and append version and signal path', () => { - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar/'; - const collectorExporter = new OTLPMetricExporter(); - assert.strictEqual( - collectorExporter._otlpExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_ENDPOINT}v1/metrics` - ); - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; - }); - it('should use url defined in env without checking if path is already present', () => { - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar/v1/metrics'; - const collectorExporter = new OTLPMetricExporter(); - assert.strictEqual( - collectorExporter._otlpExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/metrics` - ); - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; - }); - it('should use url defined in env and append version and signal', () => { - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar'; - const collectorExporter = new OTLPMetricExporter(); - assert.strictEqual( - collectorExporter._otlpExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/metrics` - ); - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; - }); - it('should override global exporter url with signal url defined in env', () => { - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = 'http://foo.bar/'; - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = 'http://foo.metrics/'; - const collectorExporter = new OTLPMetricExporter(); - assert.strictEqual( - collectorExporter._otlpExporter.url, - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT - ); - envSource.OTEL_EXPORTER_OTLP_ENDPOINT = ''; - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = ''; - }); - it('should add root path when signal url defined in env contains no path and no root path', () => { - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = 'http://foo.bar'; - const collectorExporter = new OTLPMetricExporter(); - assert.strictEqual( - collectorExporter._otlpExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT}/` - ); - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = ''; - }); - it('should not add root path when signal url defined in env contains root path but no path', () => { - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = 'http://foo.bar/'; - const collectorExporter = new OTLPMetricExporter(); - assert.strictEqual( - collectorExporter._otlpExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT}` - ); - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = ''; - }); - it('should not add root path when signal url defined in env contains path', () => { - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = 'http://foo.bar/v1/metrics'; - const collectorExporter = new OTLPMetricExporter(); - assert.strictEqual( - collectorExporter._otlpExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT}` - ); - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = ''; - }); - it('should not add root path when signal url defined in env contains path and ends in /', () => { - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = - 'http://foo.bar/v1/metrics/'; - const collectorExporter = new OTLPMetricExporter(); - assert.strictEqual( - collectorExporter._otlpExporter.url, - `${envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT}` - ); - envSource.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT = ''; - }); - it('should use headers defined via env', () => { - envSource.OTEL_EXPORTER_OTLP_HEADERS = 'foo=bar'; - const collectorExporter = new OTLPMetricExporter({ - headers: {}, - temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, - }); - assert.strictEqual( - collectorExporter['_otlpExporter']['_headers'].foo, - 'bar' - ); - envSource.OTEL_EXPORTER_OTLP_HEADERS = ''; - }); - it('should override global headers config with signal headers defined via env', () => { - envSource.OTEL_EXPORTER_OTLP_HEADERS = 'foo=bar,bar=foo'; - envSource.OTEL_EXPORTER_OTLP_METRICS_HEADERS = 'foo=boo'; - const collectorExporter = new OTLPMetricExporter({ - headers: {}, - temporalityPreference: AggregationTemporalityPreference.CUMULATIVE, - }); - assert.strictEqual( - collectorExporter['_otlpExporter']['_headers'].foo, - 'boo' - ); - assert.strictEqual( - collectorExporter['_otlpExporter']['_headers'].bar, - 'foo' - ); - envSource.OTEL_EXPORTER_OTLP_METRICS_HEADERS = ''; - envSource.OTEL_EXPORTER_OTLP_HEADERS = ''; - }); -});