dd-trace 5.55.0 → 5.57.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 (150) hide show
  1. package/LICENSE-3rdparty.csv +1 -0
  2. package/index.d.ts +44 -2
  3. package/init.js +4 -1
  4. package/package.json +24 -23
  5. package/packages/datadog-core/src/utils/src/set.js +8 -10
  6. package/packages/datadog-esbuild/index.js +22 -0
  7. package/packages/datadog-instrumentations/src/cassandra-driver.js +43 -60
  8. package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +12 -12
  9. package/packages/datadog-instrumentations/src/cucumber.js +4 -6
  10. package/packages/datadog-instrumentations/src/elasticsearch.js +16 -19
  11. package/packages/datadog-instrumentations/src/fastify.js +91 -9
  12. package/packages/datadog-instrumentations/src/helpers/bundler-register.js +20 -5
  13. package/packages/datadog-instrumentations/src/helpers/check-require-cache.js +2 -2
  14. package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -0
  15. package/packages/datadog-instrumentations/src/helpers/register.js +17 -5
  16. package/packages/datadog-instrumentations/src/ioredis.js +8 -13
  17. package/packages/datadog-instrumentations/src/iovalkey.js +10 -14
  18. package/packages/datadog-instrumentations/src/jest.js +423 -325
  19. package/packages/datadog-instrumentations/src/memcached.js +17 -24
  20. package/packages/datadog-instrumentations/src/mocha/main.js +7 -6
  21. package/packages/datadog-instrumentations/src/moleculer/client.js +9 -10
  22. package/packages/datadog-instrumentations/src/moleculer/server.js +12 -13
  23. package/packages/datadog-instrumentations/src/openai.js +30 -2
  24. package/packages/datadog-instrumentations/src/playwright.js +4 -1
  25. package/packages/datadog-instrumentations/src/prisma.js +116 -0
  26. package/packages/datadog-instrumentations/src/redis.js +32 -43
  27. package/packages/datadog-instrumentations/src/router.js +1 -1
  28. package/packages/datadog-instrumentations/src/sharedb.js +10 -16
  29. package/packages/datadog-instrumentations/src/vitest.js +4 -4
  30. package/packages/datadog-plugin-aws-sdk/src/base.js +6 -1
  31. package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +9 -4
  32. package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +3 -2
  33. package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +2 -1
  34. package/packages/datadog-plugin-aws-sdk/src/util.js +2 -2
  35. package/packages/datadog-plugin-azure-functions/src/index.js +5 -4
  36. package/packages/datadog-plugin-bunyan/src/index.js +2 -2
  37. package/packages/datadog-plugin-cassandra-driver/src/index.js +6 -2
  38. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/batch-consumer.js +1 -1
  39. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/consumer.js +1 -1
  40. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
  41. package/packages/datadog-plugin-confluentinc-kafka-javascript/src/producer.js +1 -1
  42. package/packages/datadog-plugin-cucumber/src/index.js +4 -2
  43. package/packages/datadog-plugin-cypress/src/cypress-plugin.js +9 -5
  44. package/packages/datadog-plugin-elasticsearch/src/index.js +12 -4
  45. package/packages/datadog-plugin-http/src/client.js +1 -0
  46. package/packages/datadog-plugin-http/src/server.js +2 -1
  47. package/packages/datadog-plugin-http2/src/client.js +1 -0
  48. package/packages/datadog-plugin-http2/src/server.js +1 -0
  49. package/packages/datadog-plugin-jest/src/index.js +4 -3
  50. package/packages/datadog-plugin-memcached/src/index.js +6 -2
  51. package/packages/datadog-plugin-mocha/src/index.js +3 -2
  52. package/packages/datadog-plugin-moleculer/src/client.js +15 -9
  53. package/packages/datadog-plugin-moleculer/src/server.js +9 -5
  54. package/packages/datadog-plugin-next/src/index.js +2 -1
  55. package/packages/datadog-plugin-openai/src/tracing.js +127 -80
  56. package/packages/datadog-plugin-oracledb/src/index.js +2 -1
  57. package/packages/datadog-plugin-pino/src/index.js +2 -2
  58. package/packages/datadog-plugin-prisma/src/client.js +62 -0
  59. package/packages/datadog-plugin-prisma/src/engine.js +81 -0
  60. package/packages/datadog-plugin-prisma/src/index.js +22 -0
  61. package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +1 -1
  62. package/packages/datadog-plugin-redis/src/index.js +9 -3
  63. package/packages/datadog-plugin-router/src/index.js +1 -0
  64. package/packages/datadog-plugin-sharedb/src/index.js +13 -5
  65. package/packages/datadog-plugin-winston/src/index.js +2 -2
  66. package/packages/dd-trace/src/appsec/channels.js +26 -21
  67. package/packages/dd-trace/src/appsec/iast/analyzers/sql-injection-analyzer.js +1 -1
  68. package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +13 -20
  69. package/packages/dd-trace/src/appsec/iast/security-controls/index.js +1 -1
  70. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +44 -1
  71. package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +2 -1
  72. package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +7 -2
  73. package/packages/dd-trace/src/appsec/iast/taint-tracking/source-types.js +0 -1
  74. package/packages/dd-trace/src/appsec/index.js +28 -2
  75. package/packages/dd-trace/src/appsec/rasp/utils.js +0 -5
  76. package/packages/dd-trace/src/appsec/reporter.js +6 -4
  77. package/packages/dd-trace/src/baggage.js +2 -2
  78. package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +3 -3
  79. package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +1 -1
  80. package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +1 -1
  81. package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +1 -1
  82. package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +2 -2
  83. package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +6 -6
  84. package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -3
  85. package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +3 -3
  86. package/packages/dd-trace/src/config.js +334 -312
  87. package/packages/dd-trace/src/constants.js +2 -1
  88. package/packages/dd-trace/src/crashtracking/crashtracker.js +12 -14
  89. package/packages/dd-trace/src/datastreams/context.js +1 -1
  90. package/packages/dd-trace/src/datastreams/processor.js +1 -1
  91. package/packages/dd-trace/src/datastreams/writer.js +3 -3
  92. package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +6 -3
  93. package/packages/dd-trace/src/debugger/devtools_client/condition.js +1 -1
  94. package/packages/dd-trace/src/debugger/devtools_client/index.js +2 -3
  95. package/packages/dd-trace/src/debugger/devtools_client/send.js +5 -1
  96. package/packages/dd-trace/src/debugger/devtools_client/state.js +7 -4
  97. package/packages/dd-trace/src/debugger/devtools_client/status.js +5 -1
  98. package/packages/dd-trace/src/dogstatsd.js +3 -3
  99. package/packages/dd-trace/src/exporters/agent/index.js +10 -5
  100. package/packages/dd-trace/src/exporters/agent/writer.js +4 -2
  101. package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +2 -2
  102. package/packages/dd-trace/src/exporters/log/index.js +1 -1
  103. package/packages/dd-trace/src/exporters/span-stats/writer.js +2 -2
  104. package/packages/dd-trace/src/guardrails/index.js +3 -1
  105. package/packages/dd-trace/src/guardrails/telemetry.js +1 -1
  106. package/packages/dd-trace/src/llmobs/index.js +11 -5
  107. package/packages/dd-trace/src/llmobs/plugins/base.js +2 -2
  108. package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +1 -1
  109. package/packages/dd-trace/src/llmobs/tagger.js +13 -13
  110. package/packages/dd-trace/src/llmobs/writers/base.js +2 -2
  111. package/packages/dd-trace/src/llmobs/writers/spans.js +2 -2
  112. package/packages/dd-trace/src/opentelemetry/tracer.js +1 -1
  113. package/packages/dd-trace/src/opentracing/propagation/text_map.js +22 -28
  114. package/packages/dd-trace/src/opentracing/span.js +1 -0
  115. package/packages/dd-trace/src/plugin_manager.js +3 -3
  116. package/packages/dd-trace/src/plugins/cache.js +2 -2
  117. package/packages/dd-trace/src/plugins/ci_plugin.js +11 -7
  118. package/packages/dd-trace/src/plugins/database.js +3 -1
  119. package/packages/dd-trace/src/plugins/index.js +1 -0
  120. package/packages/dd-trace/src/plugins/log_plugin.js +5 -1
  121. package/packages/dd-trace/src/plugins/outbound.js +8 -6
  122. package/packages/dd-trace/src/plugins/structured_log_plugin.js +9 -0
  123. package/packages/dd-trace/src/plugins/tracing.js +1 -1
  124. package/packages/dd-trace/src/plugins/util/ci.js +83 -30
  125. package/packages/dd-trace/src/plugins/util/git.js +1 -0
  126. package/packages/dd-trace/src/plugins/util/inferred_proxy.js +3 -2
  127. package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -0
  128. package/packages/dd-trace/src/plugins/util/tags.js +4 -1
  129. package/packages/dd-trace/src/plugins/util/test.js +80 -10
  130. package/packages/dd-trace/src/plugins/util/web.js +1 -0
  131. package/packages/dd-trace/src/profiler.js +0 -2
  132. package/packages/dd-trace/src/profiling/exporter_cli.js +1 -3
  133. package/packages/dd-trace/src/profiling/profilers/events.js +10 -2
  134. package/packages/dd-trace/src/profiling/ssi-heuristics.js +18 -126
  135. package/packages/dd-trace/src/proxy.js +12 -27
  136. package/packages/dd-trace/src/runtime_metrics/index.js +1 -1
  137. package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +14 -45
  138. package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +2 -2
  139. package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +4 -0
  140. package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +2 -2
  141. package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +4 -0
  142. package/packages/dd-trace/src/supported-configurations.json +13 -3
  143. package/packages/dd-trace/src/telemetry/telemetry.js +11 -4
  144. package/packages/dd-trace/src/tracer.js +11 -0
  145. package/packages/dd-trace/src/tracer_metadata.js +25 -0
  146. package/packages/dd-trace/src/util.js +11 -4
  147. package/version.js +3 -1
  148. package/packages/datadog-core/src/utils/src/get.js +0 -11
  149. package/packages/datadog-core/src/utils/src/has.js +0 -14
  150. package/packages/dd-trace/src/profiling/ssi-telemetry-mock-profiler.js +0 -30
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "supportedConfigurations": {
3
3
  "DD_AAS_DOTNET_EXTENSION_VERSION": ["A"],
4
+ "DD_ACTION_EXECUTION_ID": ["A"],
4
5
  "DD_AGENT_HOST": ["A"],
5
6
  "DD_AGENTLESS_LOG_SUBMISSION_ENABLED": ["A"],
6
7
  "DD_AGENTLESS_LOG_SUBMISSION_URL": ["A"],
@@ -49,6 +50,7 @@
49
50
  "DD_CODE_ORIGIN_FOR_SPANS_ENABLED": ["A"],
50
51
  "DD_CODE_ORIGIN_FOR_SPANS_EXPERIMENTAL_EXIT_SPANS_ENABLED": ["A"],
51
52
  "DD_CRASHTRACKING_ENABLED": ["A"],
53
+ "DD_CUSTOM_TRACE_ID": ["A"],
52
54
  "DD_DATA_STREAMS_ENABLED": ["A"],
53
55
  "DD_DBM_PROPAGATION_MODE": ["A"],
54
56
  "DD_DOGSTATSD_HOST": ["A"],
@@ -56,6 +58,7 @@
56
58
  "DD_DYNAMIC_INSTRUMENTATION_ENABLED": ["A"],
57
59
  "DD_DYNAMIC_INSTRUMENTATION_REDACTED_IDENTIFIERS": ["A"],
58
60
  "DD_DYNAMIC_INSTRUMENTATION_REDACTION_EXCLUDED_IDENTIFIERS": ["A"],
61
+ "DD_DYNAMIC_INSTRUMENTATION_UPLOAD_INTERVAL_SECONDS": ["A"],
59
62
  "DD_ENV": ["A"],
60
63
  "DD_EXPERIMENTAL_APPSEC_STANDALONE_ENABLED": ["A"],
61
64
  "DD_EXTERNAL_ENV": ["A"],
@@ -71,6 +74,8 @@
71
74
  "DD_GIT_PROPERTIES_FILE": ["A"],
72
75
  "DD_GIT_REPOSITORY_URL": ["A"],
73
76
  "DD_GIT_TAG": ["A"],
77
+ "DD_GIT_PULL_REQUEST_BASE_BRANCH": ["A"],
78
+ "DD_GIT_PULL_REQUEST_BASE_BRANCH_SHA": ["A"],
74
79
  "DD_GRPC_CLIENT_ERROR_STATUSES": ["A"],
75
80
  "DD_GRPC_SERVER_ERROR_STATUSES": ["A"],
76
81
  "DD_IAST_DB_ROWS_TO_TAINT": ["A"],
@@ -105,6 +110,7 @@
105
110
  "DD_MINI_AGENT_PATH": ["A"],
106
111
  "DD_OPENAI_LOGS_ENABLED": ["A"],
107
112
  "DD_OPENAI_SPAN_CHAR_LIMIT": ["A"],
113
+ "DD_PIPELINE_EXECUTION_ID": ["A"],
108
114
  "DD_PLAYWRIGHT_WORKER": ["A"],
109
115
  "DD_PROFILING_CODEHOTSPOTS_ENABLED": ["A"],
110
116
  "DD_PROFILING_CPU_ENABLED": ["A"],
@@ -125,7 +131,10 @@
125
131
  "DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS": ["A"],
126
132
  "DD_REMOTE_CONFIGURATION_ENABLED": ["A"],
127
133
  "DD_RUNTIME_METRICS_ENABLED": ["A"],
134
+ "DD_RUNTIME_METRICS_EVENT_LOOP_ENABLED": ["A"],
135
+ "DD_RUNTIME_METRICS_GC_ENABLED": ["A"],
128
136
  "DD_RUNTIME_METRICS_FLUSH_INTERVAL": ["A"],
137
+ "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED": ["A"],
129
138
  "DD_SERVICE_MAPPING": ["A"],
130
139
  "DD_SERVICE": ["A"],
131
140
  "DD_SITE": ["A"],
@@ -144,7 +153,6 @@
144
153
  "DD_TEST_MANAGEMENT_ATTEMPT_TO_FIX_RETRIES": ["A"],
145
154
  "DD_TEST_MANAGEMENT_ENABLED": ["A"],
146
155
  "DD_TEST_SESSION_NAME": ["A"],
147
- "DD_TRACE__CONFLUENTINC_KAFKA_JAVASCRIPT_ENABLED": ["A"],
148
156
  "DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED": ["A"],
149
157
  "DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED": ["A"],
150
158
  "DD_TRACE_AEROSPIKE_ENABLED": ["A"],
@@ -237,7 +245,6 @@
237
245
  "DD_TRACE_EXPERIMENTAL_B3_ENABLED": ["A"],
238
246
  "DD_TRACE_EXPERIMENTAL_EXPORTER": ["A"],
239
247
  "DD_TRACE_EXPERIMENTAL_GET_RUM_DATA_ENABLED": ["A"],
240
- "DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED": ["A"],
241
248
  "DD_TRACE_EXPERIMENTAL_SPAN_COUNTS": ["A"],
242
249
  "DD_TRACE_EXPERIMENTAL_STATE_TRACKING": ["A"],
243
250
  "DD_TRACE_EXPRESS_ENABLED": ["A"],
@@ -350,6 +357,7 @@
350
357
  "DD_TRACE_PLAYWRIGHT_CORE_ENABLED": ["A"],
351
358
  "DD_TRACE_PLAYWRIGHT_ENABLED": ["A"],
352
359
  "DD_TRACE_PLAYWRIGHT_TEST_ENABLED": ["A"],
360
+ "DD_TRACE_PRISMA_ENABLED": ["A"],
353
361
  "DD_TRACE_PROCESS_ENABLED": ["A"],
354
362
  "DD_TRACE_PROMISE_ENABLED": ["A"],
355
363
  "DD_TRACE_PROMISE_JS_ENABLED": ["A"],
@@ -426,6 +434,7 @@
426
434
  "DD_PROFILING_ENDPOINT_COLLECTION_ENABLED": ["DD_PROFILING_EXPERIMENTAL_ENDPOINT_COLLECTION_ENABLED"],
427
435
  "DD_PROFILING_TIMELINE_ENABLED": ["DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED"],
428
436
  "DD_REMOTE_CONFIGURATION_ENABLED": ["DD_REMOTE_CONFIG_ENABLED" ],
437
+ "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED": ["DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED"],
429
438
  "DD_SERVICE": ["DD_SERVICE_NAME"],
430
439
  "DD_TRACE_AGENT_URL": ["DD_TRACE_URL"]
431
440
  },
@@ -434,6 +443,7 @@
434
443
  "DD_PROFILING_EXPERIMENTAL_CPU_ENABLED": "DD_PROFILING_CPU_ENABLED",
435
444
  "DD_EXPERIMENTAL_PROFILING_ENABLED": "DD_PROFILING_ENABLED",
436
445
  "DD_PROFILING_EXPERIMENTAL_CODEHOTSPOTS_ENABLED": "DD_PROFILING_CODEHOTSPOTS_ENABLED",
437
- "DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED": "DD_PROFILING_TIMELINE_ENABLED"
446
+ "DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED": "DD_PROFILING_TIMELINE_ENABLED",
447
+ "DD_TRACE_EXPERIMENTAL_RUNTIME_ID_ENABLED": "DD_RUNTIME_METRICS_RUNTIME_ID_ENABLED"
438
448
  }
439
449
  }
@@ -28,6 +28,8 @@ const extendedHeartbeatPayload = {}
28
28
 
29
29
  const sentIntegrations = new Set()
30
30
 
31
+ let seqId = 0
32
+
31
33
  function getRetryData () {
32
34
  return retryData
33
35
  }
@@ -319,7 +321,11 @@ const nameMapping = {
319
321
  clientIpHeader: 'DD_TRACE_CLIENT_IP_HEADER',
320
322
  'grpc.client.error.statuses': 'DD_GRPC_CLIENT_ERROR_STATUSES',
321
323
  'grpc.server.error.statuses': 'DD_GRPC_SERVER_ERROR_STATUSES',
322
- traceId128BitLoggingEnabled: 'DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED'
324
+ traceId128BitLoggingEnabled: 'DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED',
325
+ instrumentationSource: 'instrumentation_source',
326
+ injectionEnabled: 'ssi_injection_enabled',
327
+ injectForce: 'ssi_forced_injection_enabled',
328
+ 'runtimeMetrics.enabled': 'runtimeMetrics'
323
329
  }
324
330
 
325
331
  const namesNeedFormatting = new Set(['DD_TAGS', 'peerServiceMapping', 'serviceMapping'])
@@ -337,9 +343,8 @@ function updateConfig (changes, config) {
337
343
 
338
344
  for (const change of changes) {
339
345
  const name = nameMapping[change.name] || change.name
340
-
341
346
  const { origin, value } = change
342
- const entry = { name, value, origin }
347
+ const entry = { name, value, origin, seq_id: seqId++ }
343
348
 
344
349
  if (namesNeedFormatting.has(entry.name)) {
345
350
  entry.value = formatMapForTelemetry(entry.value)
@@ -352,7 +357,9 @@ function updateConfig (changes, config) {
352
357
  } else if (Array.isArray(entry.value)) {
353
358
  entry.value = value.join(',')
354
359
  }
355
- configWithOrigin.set(name, entry)
360
+
361
+ // Use composite key to support multiple origins for same config name
362
+ configWithOrigin.set(`${name}|${origin}`, entry)
356
363
  }
357
364
 
358
365
  if (changed) {
@@ -24,6 +24,17 @@ class DatadogTracer extends Tracer {
24
24
  this._scope = new Scope()
25
25
  setStartupLogConfig(config)
26
26
  flushStartupLogs(log)
27
+
28
+ if (!config._isInServerlessEnvironment()) {
29
+ const storeConfig = require('./tracer_metadata')
30
+ // Keep a reference to the handle, to keep the memfd alive in memory.
31
+ // It is read by the service discovery feature.
32
+ const metadata = storeConfig(config)
33
+ if (metadata === undefined) {
34
+ log.warn('Could not store tracer configuration for service discovery')
35
+ }
36
+ this._inmem_cfg = metadata
37
+ }
27
38
  }
28
39
 
29
40
  configure (config) {
@@ -0,0 +1,25 @@
1
+ 'use strict'
2
+
3
+ // Load binding first to not import other modules if it throws
4
+ const libdatadog = require('@datadog/libdatadog')
5
+ const tracerVersion = require('../../../version').VERSION
6
+
7
+ function storeConfig (config) {
8
+ const processDiscovery = libdatadog.maybeLoad('process-discovery')
9
+ if (processDiscovery === undefined) {
10
+ return
11
+ }
12
+
13
+ const metadata = new processDiscovery.TracerMetadata(
14
+ config.tags['runtime-id'],
15
+ tracerVersion,
16
+ config.hostname,
17
+ config.server || null,
18
+ config.env || null,
19
+ config.version || null
20
+ )
21
+
22
+ return processDiscovery.storeMetadata(metadata)
23
+ }
24
+
25
+ module.exports = storeConfig
@@ -61,12 +61,10 @@ function globMatch (pattern, subject) {
61
61
  return true
62
62
  }
63
63
 
64
- // TODO: this adds stack traces relative to packages/
65
- // shouldn't paths be relative to the root of dd-trace?
66
64
  function calculateDDBasePath (dirname) {
67
65
  const dirSteps = dirname.split(path.sep)
68
66
  const packagesIndex = dirSteps.lastIndexOf('packages')
69
- return dirSteps.slice(0, packagesIndex + 1).join(path.sep) + path.sep
67
+ return dirSteps.slice(0, packagesIndex).join(path.sep) + path.sep
70
68
  }
71
69
 
72
70
  function normalizeProfilingEnabledValue (configValue) {
@@ -77,11 +75,20 @@ function normalizeProfilingEnabledValue (configValue) {
77
75
  : configValue === 'auto' ? 'auto' : undefined
78
76
  }
79
77
 
78
+ function normalizePluginEnvName (envPluginName, makeLowercase = false) {
79
+ if (envPluginName.startsWith('@')) {
80
+ envPluginName = envPluginName.slice(1)
81
+ }
82
+ envPluginName = envPluginName.replaceAll(/[^a-z0-9_]/ig, '_')
83
+ return makeLowercase ? envPluginName.toLowerCase() : envPluginName
84
+ }
85
+
80
86
  module.exports = {
81
87
  isTrue,
82
88
  isFalse,
83
89
  isError,
84
90
  globMatch,
85
91
  ddBasePath: calculateDDBasePath(__dirname),
86
- normalizeProfilingEnabledValue
92
+ normalizeProfilingEnabledValue,
93
+ normalizePluginEnvName
87
94
  }
package/version.js CHANGED
@@ -3,10 +3,12 @@
3
3
  /* eslint-disable no-var */
4
4
  /* eslint-disable unicorn/prefer-number-properties */
5
5
 
6
- var ddMatches = require('./package.json').version.match(/^(\d+)\.(\d+)\.(\d+)/)
6
+ var version = require('./package.json').version
7
+ var ddMatches = version.match(/^(\d+)\.(\d+)\.(\d+)/)
7
8
  var nodeMatches = process.versions.node.match(/^(\d+)\.(\d+)\.(\d+)/)
8
9
 
9
10
  module.exports = {
11
+ VERSION: version,
10
12
  DD_MAJOR: parseInt(ddMatches[1]),
11
13
  DD_MINOR: parseInt(ddMatches[2]),
12
14
  DD_PATCH: parseInt(ddMatches[3]),
@@ -1,11 +0,0 @@
1
- 'use strict'
2
-
3
- module.exports = function get (object, path) {
4
- const pathArr = path.split('.')
5
- let val = object
6
- for (const p of pathArr) {
7
- if (val === undefined) return val
8
- val = val[p]
9
- }
10
- return val
11
- }
@@ -1,14 +0,0 @@
1
- 'use strict'
2
-
3
- module.exports = function has (object, path) {
4
- const pathArr = path.split('.')
5
- let property = object
6
- for (const n of pathArr) {
7
- if (property.hasOwnProperty(n)) {
8
- property = property[n]
9
- } else {
10
- return false
11
- }
12
- }
13
- return true
14
- }
@@ -1,30 +0,0 @@
1
- 'use strict'
2
-
3
- const dc = require('dc-polyfill')
4
- const coalesce = require('koalas')
5
- const profileSubmittedChannel = dc.channel('datadog:profiling:mock-profile-submitted')
6
- const { getEnvironmentVariable } = require('../config-helper')
7
-
8
- const DD_PROFILING_UPLOAD_PERIOD = getEnvironmentVariable('DD_PROFILING_UPLOAD_PERIOD')
9
-
10
- let timerId
11
-
12
- module.exports = {
13
- start: config => {
14
- // Copied from packages/dd-trace/src/profiler.js
15
- const flushInterval = coalesce(config.interval, Number(DD_PROFILING_UPLOAD_PERIOD) * 1000, 65 * 1000)
16
-
17
- timerId = setTimeout(() => {
18
- profileSubmittedChannel.publish()
19
- timerId.refresh()
20
- }, flushInterval)
21
- timerId.unref()
22
- },
23
-
24
- stop: () => {
25
- if (timerId !== undefined) {
26
- clearTimeout(timerId)
27
- timerId = undefined
28
- }
29
- }
30
- }