@opentelemetry/configuration 0.300.0-rc.0 → 0.301.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +23 -136
  2. package/dist/index.cjs +5 -6
  3. package/dist/index.d.cts +2 -4
  4. package/dist/index.d.mts +2 -4
  5. package/dist/index.mjs +2 -3
  6. package/dist/{FileConfigFactory.cjs → parse.cjs} +23 -26
  7. package/dist/parse.cjs.map +1 -0
  8. package/dist/{FileConfigFactory.d.cts → parse.d.cts} +5 -4
  9. package/dist/parse.d.cts.map +1 -0
  10. package/dist/{FileConfigFactory.d.mts → parse.d.mts} +5 -4
  11. package/dist/parse.d.mts.map +1 -0
  12. package/dist/{FileConfigFactory.mjs → parse.mjs} +22 -25
  13. package/dist/parse.mjs.map +1 -0
  14. package/dist/utils.cjs +0 -60
  15. package/dist/utils.cjs.map +1 -1
  16. package/dist/utils.mjs +1 -55
  17. package/dist/utils.mjs.map +1 -1
  18. package/package.json +5 -5
  19. package/dist/ConfigFactory.cjs +0 -12
  20. package/dist/ConfigFactory.cjs.map +0 -1
  21. package/dist/ConfigFactory.d.cts +0 -6
  22. package/dist/ConfigFactory.d.cts.map +0 -1
  23. package/dist/ConfigFactory.d.mts +0 -6
  24. package/dist/ConfigFactory.d.mts.map +0 -1
  25. package/dist/ConfigFactory.mjs +0 -12
  26. package/dist/ConfigFactory.mjs.map +0 -1
  27. package/dist/EnvDefinition.cjs +0 -34
  28. package/dist/EnvDefinition.cjs.map +0 -1
  29. package/dist/EnvDefinition.mjs +0 -33
  30. package/dist/EnvDefinition.mjs.map +0 -1
  31. package/dist/EnvReader.cjs +0 -37
  32. package/dist/EnvReader.cjs.map +0 -1
  33. package/dist/EnvReader.mjs +0 -36
  34. package/dist/EnvReader.mjs.map +0 -1
  35. package/dist/EnvironmentConfigFactory.cjs +0 -354
  36. package/dist/EnvironmentConfigFactory.cjs.map +0 -1
  37. package/dist/EnvironmentConfigFactory.mjs +0 -347
  38. package/dist/EnvironmentConfigFactory.mjs.map +0 -1
  39. package/dist/FileConfigFactory.cjs.map +0 -1
  40. package/dist/FileConfigFactory.d.cts.map +0 -1
  41. package/dist/FileConfigFactory.d.mts.map +0 -1
  42. package/dist/FileConfigFactory.mjs.map +0 -1
  43. package/dist/IConfigFactory.d.cts +0 -13
  44. package/dist/IConfigFactory.d.cts.map +0 -1
  45. package/dist/IConfigFactory.d.mts +0 -13
  46. package/dist/IConfigFactory.d.mts.map +0 -1
@@ -1,347 +0,0 @@
1
- import { getGrpcTlsConfig, getHttpTlsConfig, initializeDefaultConfiguration, initializeDefaultLoggerProviderConfiguration, initializeDefaultMeterProviderConfiguration, initializeDefaultTracerProviderConfiguration } from "./utils.mjs";
2
- import "./EnvDefinition.mjs";
3
- import { readAllEnvVars } from "./EnvReader.mjs";
4
- import { getNumberFromEnv, getStringFromEnv, getStringListFromEnv } from "@opentelemetry/core";
5
- import { diag } from "@opentelemetry/api";
6
- //#region src/EnvironmentConfigFactory.ts
7
- /**
8
- * EnvironmentConfigProvider provides a configuration based on environment variables.
9
- */
10
- var EnvironmentConfigFactory = class {
11
- _config;
12
- constructor() {
13
- this._config = initializeDefaultConfiguration();
14
- const envValues = readAllEnvVars();
15
- this._config.disabled = envValues.OTEL_SDK_DISABLED;
16
- const logLevelString = getStringFromEnv("OTEL_LOG_LEVEL");
17
- if (logLevelString) this._config.log_level = severityNumberConfigFromLogLevelString(logLevelString);
18
- setResources(this._config);
19
- setAttributeLimits(this._config);
20
- setPropagators(this._config);
21
- setTracerProvider(this._config, envValues);
22
- setMeterProvider(this._config);
23
- setLoggerProvider(this._config);
24
- }
25
- getConfigModel() {
26
- return this._config;
27
- }
28
- };
29
- const SEV_NUM_CONFIG_FROM_LOG_LEVEL = {
30
- NONE: "fatal",
31
- ERROR: "error",
32
- WARN: "warn",
33
- INFO: "info",
34
- DEBUG: "debug",
35
- VERBOSE: "trace2",
36
- ALL: "trace"
37
- };
38
- /**
39
- * Return a declarative config SeverityNumberConfig value (as used for
40
- * `log_level`) for the given `OTEL_LOG_LEVEL` string value.
41
- *
42
- * See notes at "opentelemetr-sdk-node/src/diag.ts".
43
- */
44
- function severityNumberConfigFromLogLevelString(str) {
45
- if (!str) return;
46
- const sevNumConfig = SEV_NUM_CONFIG_FROM_LOG_LEVEL[str.toUpperCase()];
47
- if (!sevNumConfig) {
48
- diag.warn(`Unknown log level "${str}", expected one of ${Object.keys(SEV_NUM_CONFIG_FROM_LOG_LEVEL)}, using default info`);
49
- return "info";
50
- }
51
- return sevNumConfig;
52
- }
53
- function setResources(config) {
54
- if (config.resource == null) config.resource = {};
55
- const resourceAttrList = getStringFromEnv("OTEL_RESOURCE_ATTRIBUTES");
56
- const list = resourceAttrList ? resourceAttrList.split(",").map((s) => s.trim()).filter((s) => s) : [];
57
- const serviceName = getStringFromEnv("OTEL_SERVICE_NAME");
58
- if (serviceName) config.resource.attributes = [{
59
- name: "service.name",
60
- value: serviceName,
61
- type: "string"
62
- }];
63
- if (list.length > 0) {
64
- config.resource.attributes_list = resourceAttrList;
65
- if (config.resource.attributes == null) config.resource.attributes = [];
66
- for (let i = 0; i < list.length; i++) {
67
- const element = list[i].split("=");
68
- if (element[0] !== "service.name" || element[0] === "service.name" && serviceName === void 0) config.resource.attributes.push({
69
- name: element[0],
70
- value: element[1],
71
- type: "string"
72
- });
73
- }
74
- }
75
- const nodeDetectors = getStringListFromEnv("OTEL_NODE_RESOURCE_DETECTORS");
76
- if (nodeDetectors && nodeDetectors.length > 0 && !nodeDetectors.includes("none")) {
77
- const all = nodeDetectors.includes("all");
78
- const detectors = [];
79
- if (all || nodeDetectors.includes("container")) detectors.push({ container: {} });
80
- if (all || nodeDetectors.includes("host")) detectors.push({ host: {} });
81
- if (all || nodeDetectors.includes("os")) detectors.push({ os: {} });
82
- if (all || nodeDetectors.includes("process")) detectors.push({ process: {} });
83
- if (all || nodeDetectors.includes("serviceinstance")) detectors.push({ service: {} });
84
- if (all || nodeDetectors.includes("env")) detectors.push({ env: {} });
85
- if (detectors.length > 0) {
86
- if (config.resource["detection/development"] == null) config.resource["detection/development"] = {};
87
- config.resource["detection/development"].detectors = detectors;
88
- }
89
- }
90
- }
91
- function setAttributeLimits(config) {
92
- const attributeValueLengthLimit = getNumberFromEnv("OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT");
93
- if (attributeValueLengthLimit !== void 0 && attributeValueLengthLimit >= 0) {
94
- if (config.attribute_limits == null) config.attribute_limits = { attribute_count_limit: 128 };
95
- config.attribute_limits.attribute_value_length_limit = attributeValueLengthLimit;
96
- }
97
- const attributeCountLimit = getNumberFromEnv("OTEL_ATTRIBUTE_COUNT_LIMIT");
98
- if (attributeCountLimit !== void 0) {
99
- if (config.attribute_limits == null) config.attribute_limits = { attribute_count_limit: attributeCountLimit };
100
- else config.attribute_limits.attribute_count_limit = attributeCountLimit;
101
- }
102
- }
103
- function setPropagators(config) {
104
- if (config.propagator == null) config.propagator = {};
105
- const compositeList = getStringFromEnv("OTEL_PROPAGATORS");
106
- if (compositeList) {
107
- config.propagator.composite_list = compositeList;
108
- const names = compositeList.split(",").map((s) => s.trim()).filter((s) => s);
109
- if (names.length > 0) {
110
- config.propagator.composite = [];
111
- for (const name of names) config.propagator.composite.push({ [name]: {} });
112
- }
113
- }
114
- }
115
- function setSampler(config, env) {
116
- const sampler = env.OTEL_TRACES_SAMPLER;
117
- const arg = env.OTEL_TRACES_SAMPLER_ARG;
118
- if (!sampler || !config.tracer_provider) return;
119
- const ratio = arg ? parseFloat(arg) : 1;
120
- switch (sampler) {
121
- case "always_on":
122
- config.tracer_provider.sampler = { always_on: {} };
123
- break;
124
- case "always_off":
125
- config.tracer_provider.sampler = { always_off: {} };
126
- break;
127
- case "traceidratio":
128
- config.tracer_provider.sampler = { trace_id_ratio_based: { ratio } };
129
- break;
130
- case "parentbased_always_on":
131
- config.tracer_provider.sampler = { parent_based: { root: { always_on: {} } } };
132
- break;
133
- case "parentbased_always_off":
134
- config.tracer_provider.sampler = { parent_based: { root: { always_off: {} } } };
135
- break;
136
- case "parentbased_traceidratio": config.tracer_provider.sampler = { parent_based: { root: { trace_id_ratio_based: { ratio } } } };
137
- }
138
- }
139
- function setTracerProvider(config, env) {
140
- const exportersType = Array.from(new Set(getStringListFromEnv("OTEL_TRACES_EXPORTER")));
141
- if (exportersType.length === 0) return;
142
- if (exportersType.includes("none")) {
143
- diag.info("OTEL_TRACES_EXPORTER contains \"none\". Tracer provider will not be initialized.");
144
- return;
145
- }
146
- config.tracer_provider = initializeDefaultTracerProviderConfiguration();
147
- setSampler(config, env);
148
- const attributeValueLengthLimit = getNumberFromEnv("OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT");
149
- if (attributeValueLengthLimit !== void 0) config.tracer_provider.limits.attribute_value_length_limit = attributeValueLengthLimit;
150
- const attributeCountLimit = getNumberFromEnv("OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT");
151
- if (attributeCountLimit !== void 0) config.tracer_provider.limits.attribute_count_limit = attributeCountLimit;
152
- const eventCountLimit = getNumberFromEnv("OTEL_SPAN_EVENT_COUNT_LIMIT");
153
- if (eventCountLimit !== void 0) config.tracer_provider.limits.event_count_limit = eventCountLimit;
154
- const linkCountLimit = getNumberFromEnv("OTEL_SPAN_LINK_COUNT_LIMIT");
155
- if (linkCountLimit !== void 0) config.tracer_provider.limits.link_count_limit = linkCountLimit;
156
- const eventAttributeCountLimit = getNumberFromEnv("OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT");
157
- if (eventAttributeCountLimit !== void 0) config.tracer_provider.limits.event_attribute_count_limit = eventAttributeCountLimit;
158
- const linkAttributeCountLimit = getNumberFromEnv("OTEL_LINK_ATTRIBUTE_COUNT_LIMIT");
159
- if (linkAttributeCountLimit !== void 0) config.tracer_provider.limits.link_attribute_count_limit = linkAttributeCountLimit;
160
- const batch = {
161
- exporter: {},
162
- schedule_delay: getNumberFromEnv("OTEL_BSP_SCHEDULE_DELAY") ?? 5e3,
163
- export_timeout: getNumberFromEnv("OTEL_BSP_EXPORT_TIMEOUT") ?? 3e4,
164
- max_queue_size: getNumberFromEnv("OTEL_BSP_MAX_QUEUE_SIZE") ?? 2048,
165
- max_export_batch_size: getNumberFromEnv("OTEL_BSP_MAX_EXPORT_BATCH_SIZE") ?? 512
166
- };
167
- for (let i = 0; i < exportersType.length; i++) {
168
- const exporterType = exportersType[i];
169
- const batchInfo = {
170
- ...batch,
171
- exporter: {}
172
- };
173
- if (exporterType === "console") config.tracer_provider.processors.push({ simple: { exporter: { console: {} } } });
174
- else {
175
- const protocol = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_PROTOCOL") ?? "http/protobuf";
176
- const certificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CERTIFICATE");
177
- const clientKeyFile = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_KEY");
178
- const clientCertificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE");
179
- const compression = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_COMPRESSION") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_COMPRESSION");
180
- const timeout = getNumberFromEnv("OTEL_EXPORTER_OTLP_TRACES_TIMEOUT") ?? getNumberFromEnv("OTEL_EXPORTER_OTLP_TIMEOUT") ?? 1e4;
181
- const headersList = getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_HEADERS") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_HEADERS");
182
- if (protocol === "grpc") {
183
- const tls = getGrpcTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
184
- batchInfo.exporter = { otlp_grpc: {
185
- endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4317",
186
- timeout,
187
- ...tls !== void 0 && { tls },
188
- ...compression !== void 0 && { compression },
189
- ...headersList !== void 0 && { headers_list: headersList }
190
- } };
191
- } else {
192
- const tls = getHttpTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
193
- const encoding = protocol === "http/json" ? "json" : protocol === "http/protobuf" ? "protobuf" : void 0;
194
- batchInfo.exporter = { otlp_http: {
195
- endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT") ?? (getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT") ? `${getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT")}/v1/traces` : "http://localhost:4318/v1/traces"),
196
- timeout,
197
- ...tls !== void 0 && { tls },
198
- ...compression !== void 0 && { compression },
199
- ...headersList !== void 0 && { headers_list: headersList },
200
- ...encoding !== void 0 && { encoding }
201
- } };
202
- }
203
- const processor = { batch: batchInfo };
204
- config.tracer_provider.processors.push(processor);
205
- }
206
- }
207
- }
208
- function setMeterProvider(config) {
209
- const exportersType = Array.from(new Set(getStringListFromEnv("OTEL_METRICS_EXPORTER")));
210
- if (exportersType.length === 0) return;
211
- if (exportersType.includes("none")) {
212
- diag.info("OTEL_METRICS_EXPORTER contains \"none\". Meter provider will not be initialized.");
213
- return;
214
- }
215
- config.meter_provider = initializeDefaultMeterProviderConfiguration();
216
- const interval = getNumberFromEnv("OTEL_METRIC_EXPORT_INTERVAL") ?? 6e4;
217
- for (let i = 0; i < exportersType.length; i++) {
218
- const exporterType = exportersType[i];
219
- if (exporterType === "prometheus") {
220
- const pullReader = { exporter: { "prometheus/development": {
221
- host: getStringFromEnv("OTEL_EXPORTER_PROMETHEUS_HOST") ?? "localhost",
222
- port: getNumberFromEnv("OTEL_EXPORTER_PROMETHEUS_PORT") ?? 9464,
223
- scope_info_enabled: true,
224
- "target_info_enabled/development": true
225
- } } };
226
- config.meter_provider.readers.push({ pull: pullReader });
227
- continue;
228
- }
229
- const readerPeriodicInfo = {
230
- interval,
231
- timeout: getNumberFromEnv("OTEL_METRIC_EXPORT_TIMEOUT") ?? 3e4,
232
- exporter: {}
233
- };
234
- if (exporterType === "console") readerPeriodicInfo.exporter = { console: {} };
235
- else {
236
- const protocol = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_PROTOCOL") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_PROTOCOL") ?? "http/protobuf";
237
- const certificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CERTIFICATE");
238
- const clientKeyFile = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_KEY");
239
- const clientCertificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE");
240
- const compression = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_COMPRESSION") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_COMPRESSION");
241
- const timeoutExporter = getNumberFromEnv("OTEL_EXPORTER_OTLP_METRICS_TIMEOUT") ?? getNumberFromEnv("OTEL_EXPORTER_OTLP_TIMEOUT") ?? 1e4;
242
- const headersList = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_HEADERS") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_HEADERS");
243
- const rawTemporality = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE") ?? "cumulative";
244
- const temporalityPreference = [
245
- "cumulative",
246
- "delta",
247
- "low_memory"
248
- ].includes(rawTemporality) ? rawTemporality : "cumulative";
249
- const rawHistogramAgg = getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION") ?? "explicit_bucket_histogram";
250
- const defaultHistogramAggregation = ["explicit_bucket_histogram", "base2_exponential_bucket_histogram"].includes(rawHistogramAgg) ? rawHistogramAgg : "explicit_bucket_histogram";
251
- if (protocol === "grpc") {
252
- const tls = getGrpcTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
253
- readerPeriodicInfo.exporter = { otlp_grpc: {
254
- endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4317",
255
- timeout: timeoutExporter,
256
- temporality_preference: temporalityPreference,
257
- default_histogram_aggregation: defaultHistogramAggregation,
258
- ...tls !== void 0 && { tls },
259
- ...compression !== void 0 && { compression },
260
- ...headersList !== void 0 && { headers_list: headersList }
261
- } };
262
- } else {
263
- const tls = getHttpTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
264
- const encoding = protocol === "http/json" ? "json" : protocol === "http/protobuf" ? "protobuf" : void 0;
265
- readerPeriodicInfo.exporter = { otlp_http: {
266
- endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_METRICS_ENDPOINT") ?? (getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT") ? `${getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT")}/v1/metrics` : "http://localhost:4318/v1/metrics"),
267
- timeout: timeoutExporter,
268
- temporality_preference: temporalityPreference,
269
- default_histogram_aggregation: defaultHistogramAggregation,
270
- ...tls !== void 0 && { tls },
271
- ...compression !== void 0 && { compression },
272
- ...headersList !== void 0 && { headers_list: headersList },
273
- ...encoding !== void 0 && { encoding }
274
- } };
275
- }
276
- }
277
- config.meter_provider.readers.push({ periodic: readerPeriodicInfo });
278
- }
279
- const rawExemplarFilter = getStringFromEnv("OTEL_METRICS_EXEMPLAR_FILTER") ?? "trace_based";
280
- config.meter_provider.exemplar_filter = rawExemplarFilter === "default" ? "trace_based" : rawExemplarFilter;
281
- }
282
- function setLoggerProvider(config) {
283
- const exportersType = Array.from(new Set(getStringListFromEnv("OTEL_LOGS_EXPORTER")));
284
- if (exportersType.length === 0) return;
285
- if (exportersType.includes("none")) {
286
- diag.info("OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.");
287
- return;
288
- }
289
- config.logger_provider = initializeDefaultLoggerProviderConfiguration();
290
- const attributeValueLengthLimit = getNumberFromEnv("OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT");
291
- const attributeCountLimit = getNumberFromEnv("OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT");
292
- if (attributeValueLengthLimit !== void 0 || attributeCountLimit !== void 0) {
293
- if (attributeValueLengthLimit !== void 0) config.logger_provider.limits.attribute_value_length_limit = attributeValueLengthLimit;
294
- if (attributeCountLimit !== void 0) config.logger_provider.limits.attribute_count_limit = attributeCountLimit;
295
- }
296
- const batch = {
297
- exporter: {},
298
- schedule_delay: getNumberFromEnv("OTEL_BLRP_SCHEDULE_DELAY") ?? 1e3,
299
- export_timeout: getNumberFromEnv("OTEL_BLRP_EXPORT_TIMEOUT") ?? 3e4,
300
- max_queue_size: getNumberFromEnv("OTEL_BLRP_MAX_QUEUE_SIZE") ?? 2048,
301
- max_export_batch_size: getNumberFromEnv("OTEL_BLRP_MAX_EXPORT_BATCH_SIZE") ?? 512
302
- };
303
- for (let i = 0; i < exportersType.length; i++) {
304
- const exporterType = exportersType[i];
305
- const batchInfo = {
306
- ...batch,
307
- exporter: {}
308
- };
309
- if (exporterType === "console") config.logger_provider.processors.push({ simple: { exporter: { console: {} } } });
310
- else {
311
- const protocol = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_PROTOCOL") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_PROTOCOL") ?? "http/protobuf";
312
- const certificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CERTIFICATE");
313
- const clientKeyFile = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_KEY");
314
- const clientCertificateFile = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE");
315
- const compression = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_COMPRESSION") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_COMPRESSION");
316
- const timeout = getNumberFromEnv("OTEL_EXPORTER_OTLP_LOGS_TIMEOUT") ?? getNumberFromEnv("OTEL_EXPORTER_OTLP_TIMEOUT") ?? 1e4;
317
- const headersList = getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_HEADERS") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_HEADERS");
318
- if (protocol === "grpc") {
319
- const tls = getGrpcTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
320
- batchInfo.exporter = { otlp_grpc: {
321
- endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_ENDPOINT") ?? getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT") ?? "http://localhost:4317",
322
- timeout,
323
- ...tls !== void 0 && { tls },
324
- ...compression !== void 0 && { compression },
325
- ...headersList !== void 0 && { headers_list: headersList }
326
- } };
327
- } else {
328
- const tls = getHttpTlsConfig(certificateFile, clientKeyFile, clientCertificateFile);
329
- const encoding = protocol === "http/json" ? "json" : protocol === "http/protobuf" ? "protobuf" : void 0;
330
- batchInfo.exporter = { otlp_http: {
331
- endpoint: getStringFromEnv("OTEL_EXPORTER_OTLP_LOGS_ENDPOINT") ?? (getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT") ? `${getStringFromEnv("OTEL_EXPORTER_OTLP_ENDPOINT")}/v1/logs` : "http://localhost:4318/v1/logs"),
332
- timeout,
333
- ...tls !== void 0 && { tls },
334
- ...compression !== void 0 && { compression },
335
- ...headersList !== void 0 && { headers_list: headersList },
336
- ...encoding !== void 0 && { encoding }
337
- } };
338
- }
339
- const processor = { batch: batchInfo };
340
- config.logger_provider.processors.push(processor);
341
- }
342
- }
343
- }
344
- //#endregion
345
- export { EnvironmentConfigFactory, setAttributeLimits, setLoggerProvider, setMeterProvider, setPropagators, setResources, setSampler, setTracerProvider };
346
-
347
- //# sourceMappingURL=EnvironmentConfigFactory.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EnvironmentConfigFactory.mjs","names":[],"sources":["../src/EnvironmentConfigFactory.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n getStringFromEnv,\n getStringListFromEnv,\n getNumberFromEnv,\n} from '@opentelemetry/core';\nimport type { ConfigFactory } from './IConfigFactory';\nimport type {\n ExemplarFilter,\n BatchLogRecordProcessor,\n BatchSpanProcessor,\n ConfigurationModel,\n ExporterDefaultHistogramAggregation,\n ExporterTemporalityPreference,\n LogRecordExporter,\n LogRecordProcessor,\n PeriodicMetricReader,\n PushMetricExporter,\n SeverityNumber,\n SpanExporter,\n SpanProcessor,\n} from './generated/types';\nimport { diag } from '@opentelemetry/api';\nimport {\n getGrpcTlsConfig,\n getHttpTlsConfig,\n initializeDefaultConfiguration,\n initializeDefaultTracerProviderConfiguration,\n initializeDefaultMeterProviderConfiguration,\n initializeDefaultLoggerProviderConfiguration,\n} from './utils';\nimport type { EnvValues } from './EnvReader';\nimport { readAllEnvVars } from './EnvReader';\nimport { SamplerType } from './EnvDefinition';\n\ntype ExperimentalResourceDetector = NonNullable<\n NonNullable<\n NonNullable<ConfigurationModel['resource']>['detection/development']\n >['detectors']\n>[number];\n\n/**\n * EnvironmentConfigProvider provides a configuration based on environment variables.\n */\nexport class EnvironmentConfigFactory implements ConfigFactory {\n private _config: ConfigurationModel;\n\n constructor() {\n this._config = initializeDefaultConfiguration();\n const envValues = readAllEnvVars();\n this._config.disabled = envValues.OTEL_SDK_DISABLED;\n\n const logLevelString = getStringFromEnv('OTEL_LOG_LEVEL');\n if (logLevelString) {\n this._config.log_level =\n severityNumberConfigFromLogLevelString(logLevelString);\n }\n\n setResources(this._config);\n setAttributeLimits(this._config);\n setPropagators(this._config);\n setTracerProvider(this._config, envValues);\n setMeterProvider(this._config);\n setLoggerProvider(this._config);\n }\n\n getConfigModel(): ConfigurationModel {\n return this._config;\n }\n}\n\nconst SEV_NUM_CONFIG_FROM_LOG_LEVEL: { [key: string]: SeverityNumber } = {\n // Declarative config `log_level` has no \"NONE\". Using 'fatal' is\n // equivalent, because the OTel JS diag API does not have a \"fatal\" level.\n NONE: 'fatal',\n ERROR: 'error',\n WARN: 'warn',\n INFO: 'info',\n DEBUG: 'debug',\n VERBOSE: 'trace2',\n // Declarative config `log_level` has no \"ALL\". Using 'trace' is\n // equivalent, because that is the lowest SeverityNumber level.\n ALL: 'trace',\n};\n\n/**\n * Return a declarative config SeverityNumberConfig value (as used for\n * `log_level`) for the given `OTEL_LOG_LEVEL` string value.\n *\n * See notes at \"opentelemetr-sdk-node/src/diag.ts\".\n */\nfunction severityNumberConfigFromLogLevelString(\n str?: string\n): SeverityNumber | undefined {\n if (!str) {\n return undefined;\n }\n const sevNumConfig = SEV_NUM_CONFIG_FROM_LOG_LEVEL[str.toUpperCase()];\n if (!sevNumConfig) {\n diag.warn(\n `Unknown log level \"${str}\", expected one of ${Object.keys(SEV_NUM_CONFIG_FROM_LOG_LEVEL)}, using default info`\n );\n return 'info';\n }\n return sevNumConfig;\n}\n\nexport function setResources(config: ConfigurationModel): void {\n if (config.resource == null) {\n config.resource = {};\n }\n\n const resourceAttrList = getStringFromEnv('OTEL_RESOURCE_ATTRIBUTES');\n const list = resourceAttrList\n ? resourceAttrList\n .split(',')\n .map(s => s.trim())\n .filter(s => s)\n : [];\n const serviceName = getStringFromEnv('OTEL_SERVICE_NAME');\n\n if (serviceName) {\n config.resource.attributes = [\n {\n name: 'service.name',\n value: serviceName,\n type: 'string',\n },\n ];\n }\n if (list.length > 0) {\n config.resource.attributes_list = resourceAttrList;\n if (config.resource.attributes == null) {\n config.resource.attributes = [];\n }\n\n for (let i = 0; i < list.length; i++) {\n const element = list[i].split('=');\n if (\n element[0] !== 'service.name' ||\n (element[0] === 'service.name' && serviceName === undefined)\n ) {\n config.resource.attributes.push({\n name: element[0],\n value: element[1],\n type: 'string',\n });\n }\n }\n }\n\n const nodeDetectors = getStringListFromEnv('OTEL_NODE_RESOURCE_DETECTORS');\n if (\n nodeDetectors &&\n nodeDetectors.length > 0 &&\n !nodeDetectors.includes('none')\n ) {\n const all = nodeDetectors.includes('all');\n const detectors: ExperimentalResourceDetector[] = [];\n if (all || nodeDetectors.includes('container'))\n detectors.push({ container: {} });\n if (all || nodeDetectors.includes('host')) detectors.push({ host: {} });\n if (all || nodeDetectors.includes('os')) detectors.push({ os: {} });\n if (all || nodeDetectors.includes('process'))\n detectors.push({ process: {} });\n if (all || nodeDetectors.includes('serviceinstance'))\n detectors.push({ service: {} });\n if (all || nodeDetectors.includes('env')) detectors.push({ env: {} });\n if (detectors.length > 0) {\n if (config.resource['detection/development'] == null) {\n config.resource['detection/development'] = {};\n }\n config.resource['detection/development'].detectors = detectors;\n }\n }\n}\n\nexport function setAttributeLimits(config: ConfigurationModel): void {\n const attributeValueLengthLimit = getNumberFromEnv(\n 'OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n );\n if (\n attributeValueLengthLimit !== undefined &&\n attributeValueLengthLimit >= 0\n ) {\n if (config.attribute_limits == null) {\n config.attribute_limits = { attribute_count_limit: 128 };\n }\n config.attribute_limits.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n const attributeCountLimit = getNumberFromEnv('OTEL_ATTRIBUTE_COUNT_LIMIT');\n if (attributeCountLimit !== undefined) {\n if (config.attribute_limits == null) {\n config.attribute_limits = { attribute_count_limit: attributeCountLimit };\n } else {\n config.attribute_limits.attribute_count_limit = attributeCountLimit;\n }\n }\n}\n\nexport function setPropagators(config: ConfigurationModel): void {\n if (config.propagator == null) {\n config.propagator = {};\n }\n const compositeList = getStringFromEnv('OTEL_PROPAGATORS');\n if (compositeList) {\n config.propagator.composite_list = compositeList;\n const names = compositeList\n .split(',')\n .map(s => s.trim())\n .filter(s => s);\n if (names.length > 0) {\n config.propagator.composite = [];\n // Store each propagator name as a type-discriminator key. The config\n // model doesn't validate names here — known vs third-party propagators\n // are resolved when the SDK instantiates from the model.\n for (const name of names) {\n config.propagator.composite.push({ [name]: {} });\n }\n }\n }\n}\n\nexport function setSampler(config: ConfigurationModel, env: EnvValues): void {\n const sampler = env.OTEL_TRACES_SAMPLER;\n const arg = env.OTEL_TRACES_SAMPLER_ARG;\n\n if (!sampler || !config.tracer_provider) {\n return;\n }\n\n const ratio = arg ? parseFloat(arg) : 1.0;\n\n switch (sampler) {\n case SamplerType.AlwaysOn:\n config.tracer_provider.sampler = { always_on: {} };\n break;\n\n case SamplerType.AlwaysOff:\n config.tracer_provider.sampler = { always_off: {} };\n break;\n\n case SamplerType.TraceIdRatio:\n config.tracer_provider.sampler = {\n trace_id_ratio_based: { ratio },\n };\n break;\n\n case SamplerType.ParentBasedAlwaysOn:\n config.tracer_provider.sampler = {\n parent_based: { root: { always_on: {} } },\n };\n break;\n\n case SamplerType.ParentBasedAlwaysOff:\n config.tracer_provider.sampler = {\n parent_based: { root: { always_off: {} } },\n };\n break;\n\n case SamplerType.ParentBasedTraceIdRatio:\n config.tracer_provider.sampler = {\n parent_based: { root: { trace_id_ratio_based: { ratio } } },\n };\n break;\n\n default:\n // readEnvVar already warns for invalid values via allowedValues\n break;\n }\n}\n\nexport function setTracerProvider(\n config: ConfigurationModel,\n env: EnvValues\n): void {\n const exportersType = Array.from(\n new Set(getStringListFromEnv('OTEL_TRACES_EXPORTER'))\n );\n if (exportersType.length === 0) {\n return;\n }\n if (exportersType.includes('none')) {\n diag.info(\n 'OTEL_TRACES_EXPORTER contains \"none\". Tracer provider will not be initialized.'\n );\n return;\n }\n config.tracer_provider = initializeDefaultTracerProviderConfiguration();\n setSampler(config, env);\n\n const attributeValueLengthLimit = getNumberFromEnv(\n 'OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n );\n if (attributeValueLengthLimit !== undefined) {\n config.tracer_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n const attributeCountLimit = getNumberFromEnv(\n 'OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT'\n );\n if (attributeCountLimit !== undefined) {\n config.tracer_provider.limits!.attribute_count_limit = attributeCountLimit;\n }\n\n const eventCountLimit = getNumberFromEnv('OTEL_SPAN_EVENT_COUNT_LIMIT');\n if (eventCountLimit !== undefined) {\n config.tracer_provider.limits!.event_count_limit = eventCountLimit;\n }\n\n const linkCountLimit = getNumberFromEnv('OTEL_SPAN_LINK_COUNT_LIMIT');\n if (linkCountLimit !== undefined) {\n config.tracer_provider.limits!.link_count_limit = linkCountLimit;\n }\n\n const eventAttributeCountLimit = getNumberFromEnv(\n 'OTEL_EVENT_ATTRIBUTE_COUNT_LIMIT'\n );\n if (eventAttributeCountLimit !== undefined) {\n config.tracer_provider.limits!.event_attribute_count_limit =\n eventAttributeCountLimit;\n }\n\n const linkAttributeCountLimit = getNumberFromEnv(\n 'OTEL_LINK_ATTRIBUTE_COUNT_LIMIT'\n );\n if (linkAttributeCountLimit !== undefined) {\n config.tracer_provider.limits!.link_attribute_count_limit =\n linkAttributeCountLimit;\n }\n\n const batch: BatchSpanProcessor = {\n exporter: {},\n schedule_delay: getNumberFromEnv('OTEL_BSP_SCHEDULE_DELAY') ?? 5000,\n export_timeout: getNumberFromEnv('OTEL_BSP_EXPORT_TIMEOUT') ?? 30000,\n max_queue_size: getNumberFromEnv('OTEL_BSP_MAX_QUEUE_SIZE') ?? 2048,\n max_export_batch_size:\n getNumberFromEnv('OTEL_BSP_MAX_EXPORT_BATCH_SIZE') ?? 512,\n };\n\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n const batchInfo: BatchSpanProcessor = {\n ...batch,\n exporter: {},\n };\n if (exporterType === 'console') {\n const processor: SpanProcessor = {\n simple: { exporter: { console: {} } },\n };\n config.tracer_provider.processors!.push(processor);\n } else {\n const protocol =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf';\n const certificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CERTIFICATE');\n const clientKeyFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_KEY');\n const clientCertificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');\n const compression =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_COMPRESSION') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_COMPRESSION');\n const timeout =\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TRACES_TIMEOUT') ??\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TIMEOUT') ??\n 10000;\n const headersList =\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_HEADERS') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS');\n\n if (protocol === 'grpc') {\n const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const otlpGrpc: NonNullable<SpanExporter['otlp_grpc']> = {\n endpoint:\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317',\n timeout,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n };\n batchInfo.exporter = { otlp_grpc: otlpGrpc };\n } else {\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const encoding =\n protocol === 'http/json'\n ? 'json'\n : protocol === 'http/protobuf'\n ? 'protobuf'\n : undefined;\n const otlpHttp: NonNullable<SpanExporter['otlp_http']> = {\n endpoint:\n getStringFromEnv('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT') ??\n (getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')\n ? `${getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/traces`\n : 'http://localhost:4318/v1/traces'),\n timeout,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n ...(encoding !== undefined && { encoding }),\n };\n batchInfo.exporter = { otlp_http: otlpHttp };\n }\n\n const processor: SpanProcessor = { batch: batchInfo };\n config.tracer_provider.processors!.push(processor);\n }\n }\n}\n\nexport function setMeterProvider(config: ConfigurationModel): void {\n const exportersType = Array.from(\n new Set(getStringListFromEnv('OTEL_METRICS_EXPORTER'))\n );\n if (exportersType.length === 0) {\n return;\n }\n if (exportersType.includes('none')) {\n diag.info(\n 'OTEL_METRICS_EXPORTER contains \"none\". Meter provider will not be initialized.'\n );\n return;\n }\n config.meter_provider = initializeDefaultMeterProviderConfiguration();\n\n const interval = getNumberFromEnv('OTEL_METRIC_EXPORT_INTERVAL') ?? 60000;\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n if (exporterType === 'prometheus') {\n const pullReader = {\n exporter: {\n 'prometheus/development': {\n host:\n getStringFromEnv('OTEL_EXPORTER_PROMETHEUS_HOST') ?? 'localhost',\n port: getNumberFromEnv('OTEL_EXPORTER_PROMETHEUS_PORT') ?? 9464,\n scope_info_enabled: true,\n 'target_info_enabled/development': true,\n },\n },\n };\n config.meter_provider.readers!.push({ pull: pullReader });\n continue;\n }\n\n const readerPeriodicInfo: PeriodicMetricReader = {\n interval,\n timeout: getNumberFromEnv('OTEL_METRIC_EXPORT_TIMEOUT') ?? 30000,\n exporter: {},\n };\n\n if (exporterType === 'console') {\n readerPeriodicInfo.exporter = { console: {} };\n } else {\n const protocol =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf';\n const certificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CERTIFICATE');\n const clientKeyFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_KEY');\n const clientCertificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');\n const compression =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_COMPRESSION') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_COMPRESSION');\n const timeoutExporter =\n getNumberFromEnv('OTEL_EXPORTER_OTLP_METRICS_TIMEOUT') ??\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TIMEOUT') ??\n 10000;\n const headersList =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_HEADERS') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS');\n const rawTemporality =\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE') ??\n 'cumulative';\n const validTemporalities = ['cumulative', 'delta', 'low_memory'];\n const temporalityPreference = validTemporalities.includes(rawTemporality)\n ? rawTemporality\n : 'cumulative';\n const rawHistogramAgg =\n getStringFromEnv(\n 'OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION'\n ) ?? 'explicit_bucket_histogram';\n const validHistogramAggs = [\n 'explicit_bucket_histogram',\n 'base2_exponential_bucket_histogram',\n ];\n const defaultHistogramAggregation = validHistogramAggs.includes(\n rawHistogramAgg\n )\n ? rawHistogramAgg\n : 'explicit_bucket_histogram';\n\n if (protocol === 'grpc') {\n const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const otlpGrpc: NonNullable<PushMetricExporter['otlp_grpc']> = {\n endpoint:\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317',\n timeout: timeoutExporter,\n temporality_preference:\n temporalityPreference as ExporterTemporalityPreference,\n default_histogram_aggregation:\n defaultHistogramAggregation as ExporterDefaultHistogramAggregation,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n };\n readerPeriodicInfo.exporter = { otlp_grpc: otlpGrpc };\n } else {\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const encoding =\n protocol === 'http/json'\n ? 'json'\n : protocol === 'http/protobuf'\n ? 'protobuf'\n : undefined;\n const otlpHttp: NonNullable<PushMetricExporter['otlp_http']> = {\n endpoint:\n getStringFromEnv('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT') ??\n (getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')\n ? `${getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/metrics`\n : 'http://localhost:4318/v1/metrics'),\n timeout: timeoutExporter,\n temporality_preference:\n temporalityPreference as ExporterTemporalityPreference,\n default_histogram_aggregation:\n defaultHistogramAggregation as ExporterDefaultHistogramAggregation,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n ...(encoding !== undefined && { encoding }),\n };\n readerPeriodicInfo.exporter = { otlp_http: otlpHttp };\n }\n }\n config.meter_provider.readers!.push({ periodic: readerPeriodicInfo });\n }\n\n const rawExemplarFilter =\n getStringFromEnv('OTEL_METRICS_EXEMPLAR_FILTER') ?? 'trace_based';\n config.meter_provider.exemplar_filter =\n rawExemplarFilter === 'default'\n ? 'trace_based'\n : (rawExemplarFilter as ExemplarFilter);\n}\n\nexport function setLoggerProvider(config: ConfigurationModel): void {\n const exportersType = Array.from(\n new Set(getStringListFromEnv('OTEL_LOGS_EXPORTER'))\n );\n if (exportersType.length === 0) {\n return;\n }\n if (exportersType.includes('none')) {\n diag.info(\n 'OTEL_LOGS_EXPORTER contains \"none\". Logger provider will not be initialized.'\n );\n return;\n }\n config.logger_provider = initializeDefaultLoggerProviderConfiguration();\n\n const attributeValueLengthLimit = getNumberFromEnv(\n 'OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT'\n );\n const attributeCountLimit = getNumberFromEnv(\n 'OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT'\n );\n if (\n attributeValueLengthLimit !== undefined ||\n attributeCountLimit !== undefined\n ) {\n if (attributeValueLengthLimit !== undefined) {\n config.logger_provider.limits!.attribute_value_length_limit =\n attributeValueLengthLimit;\n }\n\n if (attributeCountLimit !== undefined) {\n config.logger_provider.limits!.attribute_count_limit =\n attributeCountLimit;\n }\n }\n\n const batch: BatchLogRecordProcessor = {\n exporter: {},\n schedule_delay: getNumberFromEnv('OTEL_BLRP_SCHEDULE_DELAY') ?? 1000,\n export_timeout: getNumberFromEnv('OTEL_BLRP_EXPORT_TIMEOUT') ?? 30000,\n max_queue_size: getNumberFromEnv('OTEL_BLRP_MAX_QUEUE_SIZE') ?? 2048,\n max_export_batch_size:\n getNumberFromEnv('OTEL_BLRP_MAX_EXPORT_BATCH_SIZE') ?? 512,\n };\n\n for (let i = 0; i < exportersType.length; i++) {\n const exporterType = exportersType[i];\n const batchInfo: BatchLogRecordProcessor = {\n ...batch,\n exporter: {},\n };\n if (exporterType === 'console') {\n const processor: LogRecordProcessor = {\n simple: { exporter: { console: {} } },\n };\n config.logger_provider.processors!.push(processor);\n } else {\n const protocol =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_PROTOCOL') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_PROTOCOL') ??\n 'http/protobuf';\n const certificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CERTIFICATE');\n const clientKeyFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_KEY');\n const clientCertificateFile =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE');\n const compression =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_COMPRESSION') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_COMPRESSION');\n const timeout =\n getNumberFromEnv('OTEL_EXPORTER_OTLP_LOGS_TIMEOUT') ??\n getNumberFromEnv('OTEL_EXPORTER_OTLP_TIMEOUT') ??\n 10000;\n const headersList =\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_HEADERS') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_HEADERS');\n\n if (protocol === 'grpc') {\n const tls = getGrpcTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const otlpGrpc: NonNullable<LogRecordExporter['otlp_grpc']> = {\n endpoint:\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_ENDPOINT') ??\n getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT') ??\n 'http://localhost:4317',\n timeout,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n };\n batchInfo.exporter = { otlp_grpc: otlpGrpc };\n } else {\n const tls = getHttpTlsConfig(\n certificateFile,\n clientKeyFile,\n clientCertificateFile\n );\n const encoding =\n protocol === 'http/json'\n ? 'json'\n : protocol === 'http/protobuf'\n ? 'protobuf'\n : undefined;\n const otlpHttp: NonNullable<LogRecordExporter['otlp_http']> = {\n endpoint:\n getStringFromEnv('OTEL_EXPORTER_OTLP_LOGS_ENDPOINT') ??\n (getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')\n ? `${getStringFromEnv('OTEL_EXPORTER_OTLP_ENDPOINT')}/v1/logs`\n : 'http://localhost:4318/v1/logs'),\n timeout,\n ...(tls !== undefined && { tls }),\n ...(compression !== undefined && { compression }),\n ...(headersList !== undefined && { headers_list: headersList }),\n ...(encoding !== undefined && { encoding }),\n };\n batchInfo.exporter = { otlp_http: otlpHttp };\n }\n const processor: LogRecordProcessor = { batch: batchInfo };\n config.logger_provider.processors!.push(processor);\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileConfigFactory.cjs","names":["getStringFromEnv","parseKeyPairsIntoRecord"],"sources":["../src/FileConfigFactory.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { getStringFromEnv, parseKeyPairsIntoRecord } from '@opentelemetry/core';\nimport * as fs from 'fs';\nimport * as yaml from 'yaml';\nimport type { ConfigFactory } from './IConfigFactory';\nimport { substituteEnvVars } from './utils';\nimport type {\n AttributeNameValue,\n ConfigurationModel,\n NameStringValuePair,\n TextMapPropagator,\n} from './generated/types';\n// Pre-compiled ajv validator — eliminates runtime schema compilation on cold start.\n// Generated by `npm run generate:config`; do not import ajv directly here.\n// The generated module uses CJS `module.exports = fn`. `import = require` is the\n// only TypeScript form that works equivalently under both CJS and ESM consumers.\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nimport validateConfig = require('./generated/validator');\n\nexport class FileConfigFactory implements ConfigFactory {\n private _config: ConfigurationModel;\n\n constructor() {\n this._config = parseConfigFile();\n }\n\n getConfigModel(): ConfigurationModel {\n return this._config;\n }\n}\n\n// The schema version this SDK targets. Per the configuration versioning spec,\n// an implementation MUST reject a config file whose MAJOR version differs (a\n// breaking-change boundary), accepts any MINOR version within that major, and\n// SHOULD warn when the MINOR version is newer than it targets since unknown\n// settings may be ignored. See\n// https://github.com/open-telemetry/opentelemetry-configuration/blob/main/VERSIONING.md\nconst SUPPORTED_FILE_FORMAT_MAJOR = 1;\nconst SUPPORTED_FILE_FORMAT_MINOR = 1;\n\nfunction validateFileFormat(configFile: string, fileFormat: unknown): void {\n if (typeof fileFormat !== 'string' || fileFormat.length === 0) {\n throw new Error(\n `${configFile}: Unsupported file_format: \"${fileFormat}\". Expected a \"MAJOR.MINOR\" version string.`\n );\n }\n\n // Drop any pre-release / meta tag, e.g. \"1.0-rc.2\" -> \"1.0\".\n const parts = fileFormat.split('-', 1)[0].split('.');\n const major = Number(parts[0]);\n const minor = parts.length > 1 ? Number(parts[1]) : 0;\n if (!Number.isInteger(major) || !Number.isInteger(minor)) {\n throw new Error(\n `${configFile}: Unsupported file_format: \"${fileFormat}\". Expected \"MAJOR.MINOR\" version numbers.`\n );\n }\n\n if (major !== SUPPORTED_FILE_FORMAT_MAJOR) {\n throw new Error(\n `${configFile}: Unsupported file_format: \"${fileFormat}\". This SDK supports schema version ${SUPPORTED_FILE_FORMAT_MAJOR}.x.`\n );\n }\n\n if (minor > SUPPORTED_FILE_FORMAT_MINOR) {\n diag.warn(\n `${configFile}: Configuration file_format \"${fileFormat}\" has a newer minor version than this SDK supports (${SUPPORTED_FILE_FORMAT_MAJOR}.${SUPPORTED_FILE_FORMAT_MINOR}); some settings may be ignored.`\n );\n }\n}\n\nexport function parseConfigFile(): ConfigurationModel {\n const configFile = getStringFromEnv('OTEL_CONFIG_FILE') || '';\n const file = fs.readFileSync(configFile, 'utf8');\n\n const doc = yaml.parseDocument(file, { version: '1.2' });\n substituteEnvVars(doc);\n const processed = doc.toJS() as Record<string, unknown>;\n\n validateFileFormat(configFile, processed?.file_format);\n\n const valid = validateConfig(processed);\n if (!valid) {\n let detail: string;\n if (!validateConfig.errors) {\n detail = 'unknown error';\n } else if (validateConfig.errors.length === 1) {\n const err = validateConfig.errors[0];\n detail = `${err.instancePath} ${err.message}`;\n } else {\n const sep = '\\n ';\n detail =\n sep +\n validateConfig.errors\n .map(e => `${e.instancePath} ${e.message}`)\n .join(sep);\n }\n throw new Error(\n `Invalid OpenTelemetry config file: ${configFile}: ${detail}`\n );\n }\n\n const data = processed as unknown as ConfigurationModel;\n\n // Strip file_format from output — it's a meta-field, not a config value\n delete (data as Record<string, unknown>)['file_format'];\n\n return data;\n}\n\n/**\n * Merge attributes from `resource.attributes` and `resource.attributes_list`\n * (comma-separated key=value pairs) into an `AttributeNameValue[]` array.\n * Entries already in `resource.attributes` taking precedence.\n *\n * Note: The returned array might not be a copy, so it should not be mutated.\n */\nexport function mergeResourceAttributesConfig(\n attributes?: AttributeNameValue[],\n attributes_list?: string | null\n): AttributeNameValue[] | undefined {\n if (!attributes_list) {\n return attributes;\n }\n\n const mergedAttrs = attributes ? attributes.slice() : [];\n const existingNames = new Set(mergedAttrs.map(a => a.name));\n\n let discard = false;\n const listAttrs: Record<string, string> = {};\n for (const pair of attributes_list.split(',')) {\n if (pair.trim() === '') continue;\n\n const parts = pair.split('=');\n if (parts.length !== 2) {\n diag.warn(\n `Invalid format for resource.attributes_list entry \"${pair}\": expected key=value with '=' percent-encoded in keys/values. Discarding all entries.`\n );\n discard = true;\n break;\n }\n\n const rawName = parts[0].trim();\n const rawValue = parts[1].trim();\n if (rawName === '') {\n diag.warn(\n `Empty attribute name in resource.attributes_list entry \"${pair}\". Discarding all entries.`\n );\n discard = true;\n break;\n }\n\n try {\n listAttrs[decodeURIComponent(rawName)] = decodeURIComponent(rawValue);\n } catch (e) {\n diag.warn(\n `Failed to percent-decode resource.attributes_list entry \"${pair}\", discarding all entries: ${e}`\n );\n discard = true;\n break;\n }\n }\n\n if (!discard) {\n for (const [name, value] of Object.entries(listAttrs)) {\n if (!existingNames.has(name)) {\n mergedAttrs.push({ name, value, type: 'string' });\n }\n }\n }\n\n return mergedAttrs;\n}\n\n/**\n * Merge headers from `headers` and `headers_list` (comma-separated key=value\n * pairs) into a record. Entries in `headers` take precedence.\n */\nexport function mergeHeadersConfig(\n headers?: NameStringValuePair[],\n headers_list?: string | null\n): Record<string, string> | undefined {\n if (!headers && !headers_list) {\n return undefined;\n }\n\n const mergedHeaders = parseKeyPairsIntoRecord(headers_list ?? undefined);\n headers?.forEach(header => {\n if (header.value !== null) {\n mergedHeaders[header.name] = header.value;\n }\n });\n return mergedHeaders;\n}\n\n/**\n * Merge propagator.composite_list (comma-separated propagator names) into\n * propagator.composite, with entries already in composite taking precedence.\n * Merge TextMapPropagator configs from `propagator.composite` and `propagator.composite_list`\n * (comma-separated names) into a `TextMapPropagator[]` array.\n * Entries already in `propagator.composite` taking precedence.\n *\n * Note: The returned array might not be a copy, so it should not be mutated.\n */\nexport function mergePropagatorCompositeConfig(\n composite?: TextMapPropagator[],\n composite_list?: string | null\n): TextMapPropagator[] | undefined {\n if (!composite_list) {\n return composite;\n }\n\n const mergedComposite = composite ? composite.slice() : [];\n const existingNames = new Set(mergedComposite.map(c => Object.keys(c)[0]));\n\n for (const name of composite_list.split(',')) {\n const trimmed = name.trim();\n if (trimmed && !existingNames.has(trimmed)) {\n mergedComposite.push({ [trimmed]: null });\n existingNames.add(trimmed);\n }\n }\n\n return mergedComposite;\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileConfigFactory.d.cts","names":[],"sources":["../src/FileConfigFactory.d.ts"],"mappings":";;;;;;;;;iBAewB,8BAA8B,aAAa,sBAAsB,kCAAkC;;;;;iBAKnG,mBAAmB,UAAU,uBAAuB,+BAA+B;;;;;;;;;;iBAUnF,+BAA+B,YAAY,qBAAqB,iCAAiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileConfigFactory.d.mts","names":[],"sources":["../src/FileConfigFactory.d.ts"],"mappings":";;;;;;;;;iBAewB,8BAA8B,aAAa,sBAAsB,kCAAkC;;;;;iBAKnG,mBAAmB,UAAU,uBAAuB,+BAA+B;;;;;;;;;;iBAUnF,+BAA+B,YAAY,qBAAqB,iCAAiC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileConfigFactory.mjs","names":[],"sources":["../src/FileConfigFactory.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { getStringFromEnv, parseKeyPairsIntoRecord } from '@opentelemetry/core';\nimport * as fs from 'fs';\nimport * as yaml from 'yaml';\nimport type { ConfigFactory } from './IConfigFactory';\nimport { substituteEnvVars } from './utils';\nimport type {\n AttributeNameValue,\n ConfigurationModel,\n NameStringValuePair,\n TextMapPropagator,\n} from './generated/types';\n// Pre-compiled ajv validator — eliminates runtime schema compilation on cold start.\n// Generated by `npm run generate:config`; do not import ajv directly here.\n// The generated module uses CJS `module.exports = fn`. `import = require` is the\n// only TypeScript form that works equivalently under both CJS and ESM consumers.\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nimport validateConfig = require('./generated/validator');\n\nexport class FileConfigFactory implements ConfigFactory {\n private _config: ConfigurationModel;\n\n constructor() {\n this._config = parseConfigFile();\n }\n\n getConfigModel(): ConfigurationModel {\n return this._config;\n }\n}\n\n// The schema version this SDK targets. Per the configuration versioning spec,\n// an implementation MUST reject a config file whose MAJOR version differs (a\n// breaking-change boundary), accepts any MINOR version within that major, and\n// SHOULD warn when the MINOR version is newer than it targets since unknown\n// settings may be ignored. See\n// https://github.com/open-telemetry/opentelemetry-configuration/blob/main/VERSIONING.md\nconst SUPPORTED_FILE_FORMAT_MAJOR = 1;\nconst SUPPORTED_FILE_FORMAT_MINOR = 1;\n\nfunction validateFileFormat(configFile: string, fileFormat: unknown): void {\n if (typeof fileFormat !== 'string' || fileFormat.length === 0) {\n throw new Error(\n `${configFile}: Unsupported file_format: \"${fileFormat}\". Expected a \"MAJOR.MINOR\" version string.`\n );\n }\n\n // Drop any pre-release / meta tag, e.g. \"1.0-rc.2\" -> \"1.0\".\n const parts = fileFormat.split('-', 1)[0].split('.');\n const major = Number(parts[0]);\n const minor = parts.length > 1 ? Number(parts[1]) : 0;\n if (!Number.isInteger(major) || !Number.isInteger(minor)) {\n throw new Error(\n `${configFile}: Unsupported file_format: \"${fileFormat}\". Expected \"MAJOR.MINOR\" version numbers.`\n );\n }\n\n if (major !== SUPPORTED_FILE_FORMAT_MAJOR) {\n throw new Error(\n `${configFile}: Unsupported file_format: \"${fileFormat}\". This SDK supports schema version ${SUPPORTED_FILE_FORMAT_MAJOR}.x.`\n );\n }\n\n if (minor > SUPPORTED_FILE_FORMAT_MINOR) {\n diag.warn(\n `${configFile}: Configuration file_format \"${fileFormat}\" has a newer minor version than this SDK supports (${SUPPORTED_FILE_FORMAT_MAJOR}.${SUPPORTED_FILE_FORMAT_MINOR}); some settings may be ignored.`\n );\n }\n}\n\nexport function parseConfigFile(): ConfigurationModel {\n const configFile = getStringFromEnv('OTEL_CONFIG_FILE') || '';\n const file = fs.readFileSync(configFile, 'utf8');\n\n const doc = yaml.parseDocument(file, { version: '1.2' });\n substituteEnvVars(doc);\n const processed = doc.toJS() as Record<string, unknown>;\n\n validateFileFormat(configFile, processed?.file_format);\n\n const valid = validateConfig(processed);\n if (!valid) {\n let detail: string;\n if (!validateConfig.errors) {\n detail = 'unknown error';\n } else if (validateConfig.errors.length === 1) {\n const err = validateConfig.errors[0];\n detail = `${err.instancePath} ${err.message}`;\n } else {\n const sep = '\\n ';\n detail =\n sep +\n validateConfig.errors\n .map(e => `${e.instancePath} ${e.message}`)\n .join(sep);\n }\n throw new Error(\n `Invalid OpenTelemetry config file: ${configFile}: ${detail}`\n );\n }\n\n const data = processed as unknown as ConfigurationModel;\n\n // Strip file_format from output — it's a meta-field, not a config value\n delete (data as Record<string, unknown>)['file_format'];\n\n return data;\n}\n\n/**\n * Merge attributes from `resource.attributes` and `resource.attributes_list`\n * (comma-separated key=value pairs) into an `AttributeNameValue[]` array.\n * Entries already in `resource.attributes` taking precedence.\n *\n * Note: The returned array might not be a copy, so it should not be mutated.\n */\nexport function mergeResourceAttributesConfig(\n attributes?: AttributeNameValue[],\n attributes_list?: string | null\n): AttributeNameValue[] | undefined {\n if (!attributes_list) {\n return attributes;\n }\n\n const mergedAttrs = attributes ? attributes.slice() : [];\n const existingNames = new Set(mergedAttrs.map(a => a.name));\n\n let discard = false;\n const listAttrs: Record<string, string> = {};\n for (const pair of attributes_list.split(',')) {\n if (pair.trim() === '') continue;\n\n const parts = pair.split('=');\n if (parts.length !== 2) {\n diag.warn(\n `Invalid format for resource.attributes_list entry \"${pair}\": expected key=value with '=' percent-encoded in keys/values. Discarding all entries.`\n );\n discard = true;\n break;\n }\n\n const rawName = parts[0].trim();\n const rawValue = parts[1].trim();\n if (rawName === '') {\n diag.warn(\n `Empty attribute name in resource.attributes_list entry \"${pair}\". Discarding all entries.`\n );\n discard = true;\n break;\n }\n\n try {\n listAttrs[decodeURIComponent(rawName)] = decodeURIComponent(rawValue);\n } catch (e) {\n diag.warn(\n `Failed to percent-decode resource.attributes_list entry \"${pair}\", discarding all entries: ${e}`\n );\n discard = true;\n break;\n }\n }\n\n if (!discard) {\n for (const [name, value] of Object.entries(listAttrs)) {\n if (!existingNames.has(name)) {\n mergedAttrs.push({ name, value, type: 'string' });\n }\n }\n }\n\n return mergedAttrs;\n}\n\n/**\n * Merge headers from `headers` and `headers_list` (comma-separated key=value\n * pairs) into a record. Entries in `headers` take precedence.\n */\nexport function mergeHeadersConfig(\n headers?: NameStringValuePair[],\n headers_list?: string | null\n): Record<string, string> | undefined {\n if (!headers && !headers_list) {\n return undefined;\n }\n\n const mergedHeaders = parseKeyPairsIntoRecord(headers_list ?? undefined);\n headers?.forEach(header => {\n if (header.value !== null) {\n mergedHeaders[header.name] = header.value;\n }\n });\n return mergedHeaders;\n}\n\n/**\n * Merge propagator.composite_list (comma-separated propagator names) into\n * propagator.composite, with entries already in composite taking precedence.\n * Merge TextMapPropagator configs from `propagator.composite` and `propagator.composite_list`\n * (comma-separated names) into a `TextMapPropagator[]` array.\n * Entries already in `propagator.composite` taking precedence.\n *\n * Note: The returned array might not be a copy, so it should not be mutated.\n */\nexport function mergePropagatorCompositeConfig(\n composite?: TextMapPropagator[],\n composite_list?: string | null\n): TextMapPropagator[] | undefined {\n if (!composite_list) {\n return composite;\n }\n\n const mergedComposite = composite ? composite.slice() : [];\n const existingNames = new Set(mergedComposite.map(c => Object.keys(c)[0]));\n\n for (const name of composite_list.split(',')) {\n const trimmed = name.trim();\n if (trimmed && !existingNames.has(trimmed)) {\n mergedComposite.push({ [trimmed]: null });\n existingNames.add(trimmed);\n }\n }\n\n return mergedComposite;\n}\n"],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { ConfigurationModel } from "./generated/types.cjs";
2
- //#region src/IConfigFactory.d.ts
3
- interface ConfigFactory {
4
- /**
5
- * Returns a ConfigurationModel.
6
- *
7
- * @returns ConfigurationModel a ConfigurationModel with all configuration attributes
8
- */
9
- getConfigModel(): ConfigurationModel;
10
- }
11
- //#endregion
12
- export { ConfigFactory };
13
- //# sourceMappingURL=IConfigFactory.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IConfigFactory.d.cts","names":[],"sources":["../src/IConfigFactory.d.ts"],"mappings":";;UACiB;;;;;;EAMb,kBAAkB"}
@@ -1,13 +0,0 @@
1
- import { ConfigurationModel } from "./generated/types.mjs";
2
- //#region src/IConfigFactory.d.ts
3
- interface ConfigFactory {
4
- /**
5
- * Returns a ConfigurationModel.
6
- *
7
- * @returns ConfigurationModel a ConfigurationModel with all configuration attributes
8
- */
9
- getConfigModel(): ConfigurationModel;
10
- }
11
- //#endregion
12
- export { ConfigFactory };
13
- //# sourceMappingURL=IConfigFactory.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"IConfigFactory.d.mts","names":[],"sources":["../src/IConfigFactory.d.ts"],"mappings":";;UACiB;;;;;;EAMb,kBAAkB"}