dd-trace 5.99.0 → 5.100.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 (74) hide show
  1. package/LICENSE-3rdparty.csv +0 -1
  2. package/package.json +24 -5
  3. package/packages/datadog-instrumentations/src/cucumber.js +69 -5
  4. package/packages/datadog-instrumentations/src/express.js +3 -2
  5. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
  6. package/packages/datadog-instrumentations/src/hono.js +15 -4
  7. package/packages/datadog-instrumentations/src/jest.js +89 -63
  8. package/packages/datadog-instrumentations/src/mocha/main.js +18 -22
  9. package/packages/datadog-instrumentations/src/mocha/utils.js +114 -96
  10. package/packages/datadog-instrumentations/src/mocha/worker.js +2 -2
  11. package/packages/datadog-instrumentations/src/path-to-regexp.js +44 -0
  12. package/packages/datadog-instrumentations/src/playwright.js +108 -18
  13. package/packages/datadog-instrumentations/src/router.js +53 -33
  14. package/packages/datadog-instrumentations/src/vitest.js +76 -30
  15. package/packages/datadog-plugin-aws-sdk/src/base.js +1 -1
  16. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +1 -1
  17. package/packages/datadog-plugin-bullmq/src/consumer.js +3 -2
  18. package/packages/datadog-plugin-bullmq/src/producer.js +25 -11
  19. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +32 -9
  20. package/packages/datadog-plugin-cypress/src/support.js +22 -21
  21. package/packages/datadog-plugin-dd-trace-api/src/index.js +1 -1
  22. package/packages/datadog-plugin-graphql/src/utils.js +2 -2
  23. package/packages/datadog-plugin-grpc/src/client.js +1 -1
  24. package/packages/datadog-plugin-grpc/src/server.js +1 -1
  25. package/packages/datadog-plugin-memcached/src/index.js +1 -1
  26. package/packages/datadog-plugin-mongodb-core/src/index.js +2 -3
  27. package/packages/datadog-plugin-playwright/src/index.js +6 -0
  28. package/packages/datadog-plugin-router/src/index.js +13 -0
  29. package/packages/dd-trace/index.js +4 -3
  30. package/packages/dd-trace/src/aiguard/sdk.js +2 -2
  31. package/packages/dd-trace/src/appsec/blocking.js +18 -6
  32. package/packages/dd-trace/src/appsec/graphql.js +1 -1
  33. package/packages/dd-trace/src/baggage.js +26 -13
  34. package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +1 -1
  35. package/packages/dd-trace/src/config/generated-config-types.d.ts +45 -69
  36. package/packages/dd-trace/src/config/index.js +13 -12
  37. package/packages/dd-trace/src/config/normalize-service.js +31 -0
  38. package/packages/dd-trace/src/config/supported-configurations.json +31 -76
  39. package/packages/dd-trace/src/debugger/config.js +1 -1
  40. package/packages/dd-trace/src/dogstatsd.js +5 -8
  41. package/packages/dd-trace/src/encode/0.4.js +1 -1
  42. package/packages/dd-trace/src/encode/tags-processors.js +3 -3
  43. package/packages/dd-trace/src/exporter.js +1 -1
  44. package/packages/dd-trace/src/git_metadata_tagger.js +1 -1
  45. package/packages/dd-trace/src/heap_snapshots.js +4 -4
  46. package/packages/dd-trace/src/llmobs/constants/tags.js +3 -0
  47. package/packages/dd-trace/src/llmobs/sdk.js +21 -1
  48. package/packages/dd-trace/src/llmobs/span_processor.js +14 -1
  49. package/packages/dd-trace/src/llmobs/writers/base.js +7 -1
  50. package/packages/dd-trace/src/llmobs/writers/spans.js +1 -1
  51. package/packages/dd-trace/src/openfeature/eval-metrics-hook.js +2 -2
  52. package/packages/dd-trace/src/opentelemetry/context_manager.js +11 -8
  53. package/packages/dd-trace/src/opentelemetry/logs/index.js +5 -5
  54. package/packages/dd-trace/src/opentelemetry/metrics/index.js +6 -6
  55. package/packages/dd-trace/src/opentelemetry/span-helpers.js +170 -0
  56. package/packages/dd-trace/src/opentelemetry/span.js +14 -42
  57. package/packages/dd-trace/src/opentelemetry/trace/otlp_http_trace_exporter.js +1 -1
  58. package/packages/dd-trace/src/opentelemetry/tracer.js +11 -36
  59. package/packages/dd-trace/src/opentracing/propagation/text_map.js +44 -23
  60. package/packages/dd-trace/src/opentracing/propagation/tracestate.js +42 -12
  61. package/packages/dd-trace/src/opentracing/span.js +4 -3
  62. package/packages/dd-trace/src/plugin_manager.js +6 -6
  63. package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
  64. package/packages/dd-trace/src/plugins/util/ci.js +119 -32
  65. package/packages/dd-trace/src/plugins/util/test.js +295 -29
  66. package/packages/dd-trace/src/profiling/ssi-heuristics.js +2 -2
  67. package/packages/dd-trace/src/propagation-hash/index.js +1 -1
  68. package/packages/dd-trace/src/proxy.js +9 -9
  69. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +1 -1
  70. package/packages/dd-trace/src/span_processor.js +1 -1
  71. package/packages/dd-trace/src/telemetry/telemetry.js +7 -5
  72. package/packages/dd-trace/src/tracer_metadata.js +1 -1
  73. package/vendor/dist/path-to-regexp/LICENSE +0 -21
  74. package/vendor/dist/path-to-regexp/index.js +0 -1
@@ -5,7 +5,6 @@ export interface GeneratedConfig {
5
5
  _DD_APM_TRACING_AGENTLESS_ENABLED: boolean;
6
6
  apiKey: string | undefined;
7
7
  apmTracingEnabled: boolean;
8
- appKey: string | undefined;
9
8
  appsec: {
10
9
  apiSecurity: {
11
10
  downstreamBodyAnalysisSampleRate: number;
@@ -48,8 +47,6 @@ export interface GeneratedConfig {
48
47
  baggageMaxBytes: number;
49
48
  baggageMaxItems: number;
50
49
  baggageTagKeys: string[];
51
- ciVisAgentlessLogSubmissionEnabled: boolean;
52
- ciVisibilityTestSessionName: string | undefined;
53
50
  clientIpEnabled: boolean;
54
51
  clientIpHeader: string | undefined;
55
52
  cloudPayloadTagging: {
@@ -65,16 +62,15 @@ export interface GeneratedConfig {
65
62
  };
66
63
  };
67
64
  };
68
- crashtracking: {
69
- enabled: boolean;
70
- };
71
65
  dbm: {
72
66
  injectSqlBaseHash: boolean;
73
67
  };
74
68
  dbmPropagationMode: string;
75
69
  DD_ACTION_EXECUTION_ID: string | undefined;
70
+ DD_AGENTLESS_LOG_SUBMISSION_ENABLED: boolean;
76
71
  DD_AGENTLESS_LOG_SUBMISSION_URL: string | undefined;
77
72
  DD_APM_FLUSH_DEADLINE_MILLISECONDS: number;
73
+ DD_APP_KEY: string | undefined;
78
74
  DD_AZURE_RESOURCE_GROUP: string | undefined;
79
75
  DD_CIVISIBILITY_AGENTLESS_ENABLED: boolean;
80
76
  DD_CIVISIBILITY_AGENTLESS_URL: string | undefined;
@@ -83,13 +79,16 @@ export interface GeneratedConfig {
83
79
  DD_CIVISIBILITY_DANGEROUSLY_FORCE_TEST_SKIPPING: boolean;
84
80
  DD_CIVISIBILITY_ENABLED: boolean;
85
81
  DD_CIVISIBILITY_GIT_UNSHALLOW_ENABLED: boolean;
82
+ DD_CIVISIBILITY_MANUAL_API_ENABLED: boolean;
86
83
  DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS: number;
87
84
  DD_CIVISIBILITY_TEST_COMMAND: string | undefined;
88
85
  DD_CIVISIBILITY_TEST_MODULE_ID: string | undefined;
89
86
  DD_CIVISIBILITY_TEST_SESSION_ID: string | undefined;
87
+ DD_CRASHTRACKING_ENABLED: boolean;
90
88
  DD_CUSTOM_TRACE_ID: string | undefined;
91
89
  DD_ENABLE_LAGE_PACKAGE_NAME: boolean;
92
90
  DD_ENABLE_NX_SERVICE_NAME: boolean;
91
+ DD_EXPERIMENTAL_PROPAGATE_PROCESS_TAGS_ENABLED: boolean;
93
92
  DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_DIR: string;
94
93
  DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED: boolean;
95
94
  DD_EXPERIMENTAL_TEST_OPT_SETTINGS_CACHE: string;
@@ -111,8 +110,22 @@ export interface GeneratedConfig {
111
110
  DD_GIT_PULL_REQUEST_BASE_BRANCH_SHA: string | undefined;
112
111
  DD_GIT_REPOSITORY_URL: string | undefined;
113
112
  DD_GIT_TAG: string | undefined;
113
+ DD_GRPC_CLIENT_ERROR_STATUSES: number[];
114
+ DD_GRPC_SERVER_ERROR_STATUSES: number[];
115
+ DD_HEAP_SNAPSHOT_COUNT: number;
116
+ DD_HEAP_SNAPSHOT_DESTINATION: string;
117
+ DD_HEAP_SNAPSHOT_INTERVAL: number;
118
+ DD_INJECT_FORCE: boolean;
119
+ DD_INJECTION_ENABLED: string | undefined;
120
+ DD_INSTRUMENTATION_CONFIG_ID: string | undefined;
121
+ DD_INSTRUMENTATION_INSTALL_ID: string | undefined;
122
+ DD_INSTRUMENTATION_INSTALL_TIME: string | undefined;
123
+ DD_INSTRUMENTATION_INSTALL_TYPE: string | undefined;
124
+ DD_INTERNAL_PROFILING_LONG_LIVED_THRESHOLD: number;
114
125
  DD_INTERNAL_PROFILING_TIMELINE_SAMPLING_ENABLED: boolean;
115
126
  DD_LAMBDA_HANDLER: string | undefined;
127
+ DD_LOGS_OTEL_ENABLED: boolean;
128
+ DD_METRICS_OTEL_ENABLED: boolean;
116
129
  DD_MINI_AGENT_PATH: string | undefined;
117
130
  DD_PIPELINE_EXECUTION_ID: string | undefined;
118
131
  DD_PLAYWRIGHT_WORKER: string | undefined;
@@ -147,6 +160,8 @@ export interface GeneratedConfig {
147
160
  DD_TELEMETRY_FORWARDER_PATH: string | undefined;
148
161
  DD_TEST_FLEET_CONFIG_PATH: string | undefined;
149
162
  DD_TEST_LOCAL_CONFIG_PATH: string | undefined;
163
+ DD_TEST_SESSION_NAME: string | undefined;
164
+ DD_TEST_TIA_KEEP_COV_CONFIG: boolean;
150
165
  DD_TRACE_AEROSPIKE_ENABLED: boolean;
151
166
  DD_TRACE_AI_ENABLED: boolean;
152
167
  DD_TRACE_AMQP10_ENABLED: boolean;
@@ -160,6 +175,7 @@ export interface GeneratedConfig {
160
175
  DD_TRACE_APOLLO_SERVER_FASTIFY_ENABLED: boolean;
161
176
  DD_TRACE_APOLLO_SUBGRAPH_ENABLED: boolean;
162
177
  DD_TRACE_AVSC_ENABLED: boolean;
178
+ DD_TRACE_AWS_ADD_SPAN_POINTERS: boolean;
163
179
  DD_TRACE_AWS_SDK_AWS_BATCH_PROPAGATION_ENABLED: boolean;
164
180
  DD_TRACE_AWS_SDK_AWS_ENABLED: boolean;
165
181
  DD_TRACE_AWS_SDK_BATCH_PROPAGATION_ENABLED: boolean;
@@ -223,6 +239,7 @@ export interface GeneratedConfig {
223
239
  DD_TRACE_DISABLED_INSTRUMENTATIONS: string;
224
240
  DD_TRACE_DISABLED_PLUGINS: string | undefined;
225
241
  DD_TRACE_DNS_ENABLED: boolean;
242
+ DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS: string | undefined;
226
243
  DD_TRACE_ELASTIC_ELASTICSEARCH_ENABLED: boolean;
227
244
  DD_TRACE_ELASTIC_TRANSPORT_ENABLED: boolean;
228
245
  DD_TRACE_ELASTICSEARCH_ENABLED: boolean;
@@ -239,11 +256,13 @@ export interface GeneratedConfig {
239
256
  DD_TRACE_FS_ENABLED: boolean;
240
257
  DD_TRACE_GCP_PUBSUB_PUSH_ENABLED: boolean;
241
258
  DD_TRACE_GENERIC_POOL_ENABLED: boolean;
259
+ DD_TRACE_GIT_METADATA_ENABLED: boolean;
242
260
  DD_TRACE_GOOGLE_CLOUD_PUBSUB_ENABLED: boolean;
243
261
  DD_TRACE_GOOGLE_CLOUD_VERTEXAI_ENABLED: boolean;
244
262
  DD_TRACE_GOOGLE_GAX_ENABLED: boolean;
245
263
  DD_TRACE_GOOGLE_GENAI_ENABLED: boolean;
246
264
  DD_TRACE_GRAPHQL_ENABLED: boolean;
265
+ DD_TRACE_GRAPHQL_ERROR_EXTENSIONS: string[];
247
266
  DD_TRACE_GRAPHQL_TAG_ENABLED: boolean;
248
267
  DD_TRACE_GRAPHQL_TOOLS_ENABLED: boolean;
249
268
  DD_TRACE_GRAPHQL_TOOLS_EXECUTOR_ENABLED: boolean;
@@ -292,6 +311,7 @@ export interface GeneratedConfig {
292
311
  DD_TRACE_LODASH_ENABLED: boolean;
293
312
  DD_TRACE_LOOPBACK_ENABLED: boolean;
294
313
  DD_TRACE_MARIADB_ENABLED: boolean;
314
+ DD_TRACE_MEMCACHED_COMMAND_ENABLED: boolean;
295
315
  DD_TRACE_MEMCACHED_ENABLED: boolean;
296
316
  DD_TRACE_MICROGATEWAY_CORE_ENABLED: boolean;
297
317
  DD_TRACE_MIDDIE_ENABLED: boolean;
@@ -307,6 +327,7 @@ export interface GeneratedConfig {
307
327
  DD_TRACE_MULTER_ENABLED: boolean;
308
328
  DD_TRACE_MYSQL_ENABLED: boolean;
309
329
  DD_TRACE_MYSQL2_ENABLED: boolean;
330
+ DD_TRACE_NATIVE_SPAN_EVENTS: boolean;
310
331
  DD_TRACE_NET_ENABLED: boolean;
311
332
  DD_TRACE_NEXT_ENABLED: boolean;
312
333
  DD_TRACE_NODE_CHILD_PROCESS_ENABLED: boolean;
@@ -335,6 +356,8 @@ export interface GeneratedConfig {
335
356
  DD_TRACE_PROCESS_ENABLED: boolean;
336
357
  DD_TRACE_PROMISE_ENABLED: boolean;
337
358
  DD_TRACE_PROMISE_JS_ENABLED: boolean;
359
+ DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT: "continue" | "restart" | "ignore";
360
+ DD_TRACE_PROPAGATION_EXTRACT_FIRST: boolean;
338
361
  DD_TRACE_PROPAGATION_STYLE: string[];
339
362
  DD_TRACE_PROTOBUFJS_ENABLED: boolean;
340
363
  DD_TRACE_PUG_ENABLED: boolean;
@@ -352,6 +375,7 @@ export interface GeneratedConfig {
352
375
  DD_TRACE_SEQUELIZE_ENABLED: boolean;
353
376
  DD_TRACE_SHAREDB_ENABLED: boolean;
354
377
  DD_TRACE_SMITHY_SMITHY_CLIENT_ENABLED: boolean;
378
+ DD_TRACE_SPAN_LEAK_DEBUG: number;
355
379
  DD_TRACE_SQLITE3_ENABLED: boolean;
356
380
  DD_TRACE_SUFFIXPLUGIN_ENABLED: boolean;
357
381
  DD_TRACE_TAGS: Record<string, string> | undefined;
@@ -365,6 +389,7 @@ export interface GeneratedConfig {
365
389
  DD_TRACE_WINSTON_ENABLED: boolean;
366
390
  DD_TRACE_WORKERPOOL_ENABLED: boolean;
367
391
  DD_TRACE_WS_ENABLED: boolean;
392
+ DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH: number;
368
393
  DD_VITEST_WORKER: string | undefined;
369
394
  dogstatsd: {
370
395
  hostname: string;
@@ -405,26 +430,7 @@ export interface GeneratedConfig {
405
430
  flakyTestRetriesCount: number;
406
431
  flushInterval: number;
407
432
  flushMinSpans: number;
408
- gitMetadataEnabled: boolean;
409
- graphqlErrorExtensions: string[];
410
- grpc: {
411
- client: {
412
- error: {
413
- statuses: number[];
414
- };
415
- };
416
- server: {
417
- error: {
418
- statuses: number[];
419
- };
420
- };
421
- };
422
433
  headerTags: string[];
423
- heapSnapshot: {
424
- count: number;
425
- destination: string;
426
- interval: number;
427
- };
428
434
  hostname: string;
429
435
  iast: {
430
436
  dbRowsToTaint: number;
@@ -443,21 +449,11 @@ export interface GeneratedConfig {
443
449
  telemetryVerbosity: string;
444
450
  };
445
451
  inferredProxyServicesEnabled: boolean;
446
- injectForce: boolean;
447
- injectionEnabled: string | undefined;
448
- installSignature: {
449
- id: string | undefined;
450
- time: string | undefined;
451
- type: string | undefined;
452
- };
453
- instrumentation_config_id: string | undefined;
454
452
  isEarlyFlakeDetectionEnabled: boolean;
455
453
  isFlakyTestRetriesEnabled: boolean;
456
454
  isGitUploadEnabled: boolean;
457
455
  isImpactedTestsEnabled: boolean;
458
456
  isIntelligentTestRunnerEnabled: boolean;
459
- isKeepingCoverageConfiguration: boolean;
460
- isManualApiEnabled: boolean;
461
457
  isTestDynamicInstrumentationEnabled: boolean;
462
458
  isTestManagementEnabled: boolean;
463
459
  langchain: {
@@ -472,51 +468,44 @@ export interface GeneratedConfig {
472
468
  };
473
469
  logInjection: boolean;
474
470
  logLevel: "debug" | "info" | "warn" | "error";
475
- memcachedCommandEnabled: boolean;
476
471
  middlewareTracingEnabled: boolean;
477
472
  openai: {
478
473
  spanCharLimit: number;
479
474
  };
480
475
  openAiLogsEnabled: boolean;
476
+ OTEL_BSP_MAX_EXPORT_BATCH_SIZE: number;
477
+ OTEL_BSP_MAX_QUEUE_SIZE: number;
478
+ OTEL_BSP_SCHEDULE_DELAY: number;
481
479
  OTEL_EXPORTER_OTLP_ENDPOINT: string | undefined;
482
480
  OTEL_EXPORTER_OTLP_HEADERS: Record<string, string> | undefined;
481
+ OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: string;
483
482
  OTEL_EXPORTER_OTLP_LOGS_HEADERS: Record<string, string> | undefined;
483
+ OTEL_EXPORTER_OTLP_LOGS_PROTOCOL: string;
484
+ OTEL_EXPORTER_OTLP_LOGS_TIMEOUT: number;
485
+ OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: string;
484
486
  OTEL_EXPORTER_OTLP_METRICS_HEADERS: Record<string, string> | undefined;
487
+ OTEL_EXPORTER_OTLP_METRICS_PROTOCOL: string;
488
+ OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "DELTA" | "CUMULATIVE" | "LOWMEMORY";
489
+ OTEL_EXPORTER_OTLP_METRICS_TIMEOUT: number;
490
+ OTEL_EXPORTER_OTLP_PROTOCOL: string;
491
+ OTEL_EXPORTER_OTLP_TIMEOUT: number;
485
492
  OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: string;
486
493
  OTEL_EXPORTER_OTLP_TRACES_HEADERS: Record<string, string> | undefined;
487
494
  OTEL_EXPORTER_OTLP_TRACES_PROTOCOL: "http/json";
488
495
  OTEL_EXPORTER_OTLP_TRACES_TIMEOUT: number;
489
496
  OTEL_LOGS_EXPORTER: "none" | "otlp" | undefined;
497
+ OTEL_METRIC_EXPORT_INTERVAL: number;
498
+ OTEL_METRIC_EXPORT_TIMEOUT: number;
490
499
  OTEL_METRICS_EXPORTER: "none" | "otlp" | undefined;
491
500
  OTEL_RESOURCE_ATTRIBUTES: Record<string, string>;
492
501
  OTEL_SDK_DISABLED: boolean;
493
502
  OTEL_TRACES_EXPORTER: "none" | "otlp" | undefined;
494
503
  OTEL_TRACES_SAMPLER: "always_on" | "always_off" | "traceidratio" | "parentbased_always_on" | "parentbased_always_off" | "parentbased_traceidratio";
495
504
  OTEL_TRACES_SAMPLER_ARG: number | undefined;
496
- otelBatchTimeout: number;
497
- otelLogsEnabled: boolean;
498
- otelLogsProtocol: string;
499
- otelLogsTimeout: number;
500
- otelLogsUrl: string;
501
- otelMaxExportBatchSize: number;
502
- otelMaxQueueSize: number;
503
- otelMetricsEnabled: boolean;
504
- otelMetricsExportInterval: number;
505
- otelMetricsExportTimeout: number;
506
- otelMetricsProtocol: string;
507
- otelMetricsTemporalityPreference: "DELTA" | "CUMULATIVE" | "LOWMEMORY";
508
- otelMetricsTimeout: number;
509
- otelMetricsUrl: string;
510
- otelProtocol: string;
511
- otelTimeout: number;
512
505
  peerServiceMapping: Record<string, string>;
513
506
  port: string | number;
514
507
  profiling: {
515
508
  enabled: 'true' | 'false' | 'auto';
516
- longLivedThreshold: number;
517
- };
518
- propagateProcessTags: {
519
- enabled: boolean;
520
509
  };
521
510
  protocolVersion: string;
522
511
  queryStringObfuscation: string;
@@ -542,7 +531,6 @@ export interface GeneratedConfig {
542
531
  site: string;
543
532
  spanAttributeSchema: "v0" | "v1";
544
533
  spanComputePeerService: boolean;
545
- spanLeakDebug: number;
546
534
  spanRemoveIntegrationFromService: boolean;
547
535
  spanSamplingRules: import('../../../../index').SpanSamplingRule[] | undefined;
548
536
  startupLogs: boolean;
@@ -550,7 +538,6 @@ export interface GeneratedConfig {
550
538
  enabled: boolean;
551
539
  };
552
540
  tags: Record<string, string>;
553
- tagsHeaderMaxLength: number;
554
541
  telemetry: {
555
542
  debug: boolean;
556
543
  dependencyCollection: boolean;
@@ -561,19 +548,8 @@ export interface GeneratedConfig {
561
548
  metrics: boolean;
562
549
  };
563
550
  testManagementAttemptToFixRetries: number;
564
- trace: {
565
- aws: {
566
- addSpanPointers: boolean;
567
- };
568
- dynamoDb: {
569
- tablePrimaryKeys: string | undefined;
570
- };
571
- nativeSpanEvents: boolean;
572
- };
573
551
  traceId128BitGenerationEnabled: boolean;
574
552
  traceId128BitLoggingEnabled: boolean;
575
- tracePropagationBehaviorExtract: "continue" | "restart" | "ignore";
576
- tracePropagationExtractFirst: boolean;
577
553
  tracePropagationStyle: {
578
554
  extract: string[];
579
555
  inject: string[];
@@ -39,6 +39,7 @@ const {
39
39
  parseErrors,
40
40
  generateTelemetry,
41
41
  } = require('./defaults')
42
+ const { normalizeService } = require('./normalize-service')
42
43
  const { transformers } = require('./parsers')
43
44
 
44
45
  const RUNTIME_ID = uuid()
@@ -214,7 +215,7 @@ class Config extends ConfigBase {
214
215
 
215
216
  warnWrongOtelSettings()
216
217
 
217
- if (this.gitMetadataEnabled) {
218
+ if (this.DD_TRACE_GIT_METADATA_ENABLED) {
218
219
  this.#loadGitMetadata()
219
220
  }
220
221
 
@@ -355,13 +356,13 @@ class Config extends ConfigBase {
355
356
  }
356
357
  // Disable log injection when OTEL logs are enabled
357
358
  // OTEL logs and DD log injection are mutually exclusive
358
- if (this.otelLogsEnabled) {
359
+ if (this.DD_LOGS_OTEL_ENABLED) {
359
360
  setAndTrack(this, 'logInjection', false)
360
361
  }
361
- if (this.otelMetricsEnabled &&
362
+ if (this.DD_METRICS_OTEL_ENABLED &&
362
363
  trackedConfigOrigins.has('OTEL_METRICS_EXPORTER') &&
363
364
  this.OTEL_METRICS_EXPORTER === 'none') {
364
- setAndTrack(this, 'otelMetricsEnabled', false)
365
+ setAndTrack(this, 'DD_METRICS_OTEL_ENABLED', false)
365
366
  }
366
367
 
367
368
  if (this.OTEL_TRACES_EXPORTER === 'otlp' && this.protocolVersion && this.protocolVersion !== '0.4') {
@@ -427,7 +428,7 @@ class Config extends ConfigBase {
427
428
  ))
428
429
  }
429
430
 
430
- if (this.injectionEnabled) {
431
+ if (this.DD_INJECTION_ENABLED) {
431
432
  setAndTrack(this, 'instrumentationSource', 'ssi')
432
433
  }
433
434
 
@@ -513,7 +514,7 @@ class Config extends ConfigBase {
513
514
  const NX_TASK_TARGET_PROJECT = getEnvironmentVariable('NX_TASK_TARGET_PROJECT')
514
515
  if (NX_TASK_TARGET_PROJECT) {
515
516
  if (this.DD_ENABLE_NX_SERVICE_NAME) {
516
- setAndTrack(this, 'service', NX_TASK_TARGET_PROJECT)
517
+ setAndTrack(this, 'service', normalizeService(NX_TASK_TARGET_PROJECT) || 'node')
517
518
  isServiceNameInferred = true
518
519
  } else if (DD_MAJOR < 6) {
519
520
  log.warn(
@@ -536,7 +537,7 @@ class Config extends ConfigBase {
536
537
  )
537
538
  : undefined
538
539
 
539
- setAndTrack(this, 'service', serverlessName || pkg.name || 'node')
540
+ setAndTrack(this, 'service', normalizeService(serverlessName) || normalizeService(pkg.name) || 'node')
540
541
  this.tags.service ??= /** @type {string} */ (this.service)
541
542
  isServiceNameInferred = true
542
543
  }
@@ -560,7 +561,7 @@ class Config extends ConfigBase {
560
561
 
561
562
  if (IS_SERVERLESS) {
562
563
  setAndTrack(this, 'telemetry.enabled', false)
563
- setAndTrack(this, 'crashtracking.enabled', false)
564
+ setAndTrack(this, 'DD_CRASHTRACKING_ENABLED', false)
564
565
  setAndTrack(this, 'remoteConfig.enabled', false)
565
566
  }
566
567
 
@@ -600,11 +601,11 @@ class Config extends ConfigBase {
600
601
  // Default OTLP endpoints follow the configured agent host so users who point DD at a custom
601
602
  // agent (DD_AGENT_HOST / DD_TRACE_AGENT_URL) also reach OTLP on that host.
602
603
  const defaultOtlpBase = this.OTEL_EXPORTER_OTLP_ENDPOINT?.replace(/\/$/, '') ?? `http://${agentHostname}:4318`
603
- if (!this.otelLogsUrl) {
604
- setAndTrack(this, 'otelLogsUrl', `${defaultOtlpBase}/v1/logs`)
604
+ if (!this.OTEL_EXPORTER_OTLP_LOGS_ENDPOINT) {
605
+ setAndTrack(this, 'OTEL_EXPORTER_OTLP_LOGS_ENDPOINT', `${defaultOtlpBase}/v1/logs`)
605
606
  }
606
- if (!this.otelMetricsUrl) {
607
- setAndTrack(this, 'otelMetricsUrl', `${defaultOtlpBase}/v1/metrics`)
607
+ if (!this.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT) {
608
+ setAndTrack(this, 'OTEL_EXPORTER_OTLP_METRICS_ENDPOINT', `${defaultOtlpBase}/v1/metrics`)
608
609
  }
609
610
  if (!this.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT) {
610
611
  setAndTrack(this, 'OTEL_EXPORTER_OTLP_TRACES_ENDPOINT', `${defaultOtlpBase}/v1/traces`)
@@ -0,0 +1,31 @@
1
+ 'use strict'
2
+
3
+ const MAX_SERVICE_LENGTH = 100
4
+
5
+ /**
6
+ * Normalize an inferred service name so APM and runtime metrics agree.
7
+ *
8
+ * The trace agent normalizes span service names on the wire, but the
9
+ * DogStatsD client uses a different tag-value sanitizer, so an inferred
10
+ * `@scope/name` package name appears as `scope/name` in APM and
11
+ * `_scope/name` in runtime metrics. Pre-normalizing pins both consumers
12
+ * (and telemetry / process tags) to the same value.
13
+ *
14
+ * @see https://github.com/DataDog/datadog-agent/blob/main/pkg/trace/traceutil/normalize.go
15
+ * @param {string | undefined} name
16
+ */
17
+ function normalizeService (name) {
18
+ if (!name) return
19
+
20
+ let normalized = name.toLowerCase()
21
+ .replaceAll(/[^a-z0-9_:./-]/g, '_')
22
+ .replace(/^[^a-z0-9]+/, '')
23
+
24
+ if (normalized.length > MAX_SERVICE_LENGTH) {
25
+ normalized = normalized.slice(0, MAX_SERVICE_LENGTH)
26
+ }
27
+
28
+ return normalized
29
+ }
30
+
31
+ module.exports = { normalizeService }