dd-trace 5.81.0 → 5.83.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.
- package/LICENSE-3rdparty.csv +78 -79
- package/ci/init.js +6 -6
- package/index.d.ts +159 -3
- package/loader-hook.mjs +8 -3
- package/package.json +64 -66
- package/packages/datadog-core/src/storage.js +7 -7
- package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
- package/packages/datadog-esbuild/index.js +14 -7
- package/packages/datadog-esbuild/src/utils.js +14 -2
- package/packages/datadog-instrumentations/src/aerospike.js +3 -2
- package/packages/datadog-instrumentations/src/ai.js +9 -5
- package/packages/datadog-instrumentations/src/amqp10.js +1 -1
- package/packages/datadog-instrumentations/src/amqplib.js +4 -4
- package/packages/datadog-instrumentations/src/anthropic.js +2 -2
- package/packages/datadog-instrumentations/src/apollo-server-core.js +2 -2
- package/packages/datadog-instrumentations/src/apollo-server.js +1 -1
- package/packages/datadog-instrumentations/src/apollo.js +3 -2
- package/packages/datadog-instrumentations/src/avsc.js +1 -1
- package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
- package/packages/datadog-instrumentations/src/azure-event-hubs.js +4 -3
- package/packages/datadog-instrumentations/src/azure-functions.js +2 -2
- package/packages/datadog-instrumentations/src/azure-service-bus.js +3 -4
- package/packages/datadog-instrumentations/src/bluebird.js +1 -1
- package/packages/datadog-instrumentations/src/bullmq.js +11 -0
- package/packages/datadog-instrumentations/src/bunyan.js +1 -1
- package/packages/datadog-instrumentations/src/cassandra-driver.js +1 -1
- package/packages/datadog-instrumentations/src/child_process.js +3 -3
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +3 -3
- package/packages/datadog-instrumentations/src/couchbase.js +1 -1
- package/packages/datadog-instrumentations/src/crypto.js +1 -1
- package/packages/datadog-instrumentations/src/cucumber.js +13 -14
- package/packages/datadog-instrumentations/src/cypress.js +1 -1
- package/packages/datadog-instrumentations/src/dns.js +1 -1
- package/packages/datadog-instrumentations/src/elasticsearch.js +1 -1
- package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +1 -1
- package/packages/datadog-instrumentations/src/express.js +1 -1
- package/packages/datadog-instrumentations/src/fs.js +1 -1
- package/packages/datadog-instrumentations/src/generic-pool.js +1 -1
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +137 -15
- package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +2 -3
- package/packages/datadog-instrumentations/src/google-genai.js +3 -3
- package/packages/datadog-instrumentations/src/graphql.js +2 -2
- package/packages/datadog-instrumentations/src/grpc/client.js +1 -1
- package/packages/datadog-instrumentations/src/grpc/server.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/bundler-register.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/hook.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/hooks.js +4 -1
- package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/instrumentations.js +4 -3
- package/packages/datadog-instrumentations/src/helpers/register.js +9 -11
- package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +2 -2
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/bullmq.json +106 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +2 -1
- package/packages/datadog-instrumentations/src/helpers/router-helper.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/shared-utils.js +9 -0
- package/packages/datadog-instrumentations/src/hono.js +55 -10
- package/packages/datadog-instrumentations/src/http/client.js +2 -2
- package/packages/datadog-instrumentations/src/ioredis.js +1 -1
- package/packages/datadog-instrumentations/src/iovalkey.js +1 -1
- package/packages/datadog-instrumentations/src/jest.js +37 -16
- package/packages/datadog-instrumentations/src/kafkajs.js +3 -3
- package/packages/datadog-instrumentations/src/knex.js +1 -1
- package/packages/datadog-instrumentations/src/koa.js +2 -1
- package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
- package/packages/datadog-instrumentations/src/light-my-request.js +93 -0
- package/packages/datadog-instrumentations/src/limitd-client.js +1 -1
- package/packages/datadog-instrumentations/src/lodash.js +1 -2
- package/packages/datadog-instrumentations/src/mariadb.js +1 -2
- package/packages/datadog-instrumentations/src/memcached.js +1 -1
- package/packages/datadog-instrumentations/src/mocha/main.js +2 -2
- package/packages/datadog-instrumentations/src/mocha/worker.js +1 -1
- package/packages/datadog-instrumentations/src/mocha.js +1 -1
- package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
- package/packages/datadog-instrumentations/src/mongodb.js +1 -1
- package/packages/datadog-instrumentations/src/mongoose.js +1 -1
- package/packages/datadog-instrumentations/src/mquery.js +1 -1
- package/packages/datadog-instrumentations/src/mysql.js +2 -2
- package/packages/datadog-instrumentations/src/mysql2.js +3 -3
- package/packages/datadog-instrumentations/src/net.js +14 -6
- package/packages/datadog-instrumentations/src/next.js +1 -1
- package/packages/datadog-instrumentations/src/nyc.js +2 -2
- package/packages/datadog-instrumentations/src/openai.js +2 -2
- package/packages/datadog-instrumentations/src/opensearch.js +1 -1
- package/packages/datadog-instrumentations/src/oracledb.js +1 -1
- package/packages/datadog-instrumentations/src/otel-sdk-trace.js +5 -5
- package/packages/datadog-instrumentations/src/pg.js +7 -5
- package/packages/datadog-instrumentations/src/pino.js +1 -1
- package/packages/datadog-instrumentations/src/playwright.js +4 -4
- package/packages/datadog-instrumentations/src/prisma.js +52 -37
- package/packages/datadog-instrumentations/src/process.js +1 -1
- package/packages/datadog-instrumentations/src/promise-js.js +1 -1
- package/packages/datadog-instrumentations/src/promise.js +1 -1
- package/packages/datadog-instrumentations/src/protobufjs.js +1 -1
- package/packages/datadog-instrumentations/src/q.js +1 -1
- package/packages/datadog-instrumentations/src/redis.js +1 -1
- package/packages/datadog-instrumentations/src/rhea.js +1 -1
- package/packages/datadog-instrumentations/src/selenium.js +3 -3
- package/packages/datadog-instrumentations/src/sequelize.js +1 -2
- package/packages/datadog-instrumentations/src/sharedb.js +1 -1
- package/packages/datadog-instrumentations/src/tedious.js +1 -1
- package/packages/datadog-instrumentations/src/undici.js +15 -4
- package/packages/datadog-instrumentations/src/url.js +1 -1
- package/packages/datadog-instrumentations/src/vitest.js +1 -1
- package/packages/datadog-instrumentations/src/vm.js +1 -1
- package/packages/datadog-instrumentations/src/when.js +1 -1
- package/packages/datadog-instrumentations/src/winston.js +1 -1
- package/packages/datadog-instrumentations/src/ws.js +3 -2
- package/packages/datadog-plugin-amqp10/src/index.js +1 -1
- package/packages/datadog-plugin-amqplib/src/index.js +1 -1
- package/packages/datadog-plugin-anthropic/src/index.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/base.js +4 -4
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +4 -4
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/util.js +3 -3
- package/packages/datadog-plugin-azure-event-hubs/src/index.js +1 -1
- package/packages/datadog-plugin-azure-event-hubs/src/producer.js +21 -7
- package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
- package/packages/datadog-plugin-azure-service-bus/src/producer.js +6 -2
- package/packages/datadog-plugin-bullmq/src/consumer.js +60 -0
- package/packages/datadog-plugin-bullmq/src/index.js +18 -0
- package/packages/datadog-plugin-bullmq/src/producer.js +178 -0
- package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
- package/packages/datadog-plugin-cucumber/src/index.js +2 -2
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +2 -2
- package/packages/datadog-plugin-cypress/src/plugin.js +1 -1
- package/packages/datadog-plugin-dd-trace-api/src/index.js +2 -2
- package/packages/datadog-plugin-express/src/code_origin.js +21 -15
- package/packages/datadog-plugin-express/src/index.js +1 -1
- package/packages/datadog-plugin-fastify/src/code_origin.js +17 -4
- package/packages/datadog-plugin-fastify/src/index.js +1 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +13 -3
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +171 -12
- package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -2
- package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +160 -13
- package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +217 -0
- package/packages/datadog-plugin-google-cloud-vertexai/src/index.js +1 -1
- package/packages/datadog-plugin-google-genai/src/index.js +1 -1
- package/packages/datadog-plugin-graphql/src/resolve.js +1 -1
- package/packages/datadog-plugin-grpc/src/index.js +1 -1
- package/packages/datadog-plugin-http/src/client.js +2 -1
- package/packages/datadog-plugin-http/src/index.js +25 -5
- package/packages/datadog-plugin-http2/src/client.js +2 -2
- package/packages/datadog-plugin-http2/src/index.js +1 -1
- package/packages/datadog-plugin-jest/src/index.js +2 -2
- package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
- package/packages/datadog-plugin-langchain/src/index.js +1 -1
- package/packages/datadog-plugin-mocha/src/index.js +2 -2
- package/packages/datadog-plugin-moleculer/src/index.js +1 -1
- package/packages/datadog-plugin-mongodb-core/src/index.js +8 -4
- package/packages/datadog-plugin-openai/src/index.js +1 -1
- package/packages/datadog-plugin-openai/src/stream-helpers.js +30 -10
- package/packages/datadog-plugin-openai/src/tracing.js +2 -2
- package/packages/datadog-plugin-playwright/src/index.js +3 -3
- package/packages/datadog-plugin-rhea/src/index.js +1 -1
- package/packages/datadog-plugin-undici/src/index.js +305 -2
- package/packages/datadog-plugin-vitest/src/index.js +5 -5
- package/packages/datadog-plugin-ws/src/close.js +56 -3
- package/packages/datadog-plugin-ws/src/index.js +4 -0
- package/packages/datadog-plugin-ws/src/producer.js +39 -4
- package/packages/datadog-plugin-ws/src/receiver.js +39 -3
- package/packages/datadog-plugin-ws/src/server.js +13 -1
- package/packages/datadog-plugin-ws/src/util.js +107 -0
- package/packages/datadog-shimmer/src/shimmer.js +2 -2
- package/packages/dd-trace/index.js +19 -0
- package/packages/dd-trace/src/aiguard/sdk.js +3 -3
- package/packages/dd-trace/src/appsec/graphql.js +2 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/code-injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/command-injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-base-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/ldap-injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +3 -3
- package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/ssrf-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/untrusted-deserialization-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +3 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-randomness-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
- package/packages/dd-trace/src/appsec/iast/index.js +5 -5
- package/packages/dd-trace/src/appsec/iast/security-controls/index.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +1 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +11 -15
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +1 -1
- package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +3 -3
- package/packages/dd-trace/src/appsec/index.js +8 -8
- package/packages/dd-trace/src/appsec/rasp/command_injection.js +1 -1
- package/packages/dd-trace/src/appsec/rasp/index.js +3 -5
- package/packages/dd-trace/src/appsec/rasp/lfi.js +1 -1
- package/packages/dd-trace/src/appsec/rc-products.js +10 -0
- package/packages/dd-trace/src/appsec/recommended.json +230 -3
- package/packages/dd-trace/src/appsec/remote_config.js +177 -0
- package/packages/dd-trace/src/appsec/reporter.js +3 -3
- package/packages/dd-trace/src/appsec/rule_manager.js +37 -20
- package/packages/dd-trace/src/appsec/sdk/index.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/set_user.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/track_event.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/user_blocking.js +2 -2
- package/packages/dd-trace/src/appsec/user_tracking.js +2 -2
- package/packages/dd-trace/src/appsec/waf/index.js +17 -3
- package/packages/dd-trace/src/appsec/waf/waf_manager.js +11 -0
- package/packages/dd-trace/src/azure_metadata.js +15 -4
- package/packages/dd-trace/src/baggage.js +36 -11
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +5 -1
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +6 -0
- package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +4 -3
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +3 -3
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +5 -5
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +1 -1
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +2 -2
- package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +4 -4
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +4 -4
- package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +2 -2
- package/packages/dd-trace/src/{config_defaults.js → config/defaults.js} +5 -4
- package/packages/dd-trace/src/{config-helper.js → config/helper.js} +88 -15
- package/packages/dd-trace/src/{config.js → config/index.js} +115 -67
- package/packages/dd-trace/src/config/remote_config.js +202 -0
- package/packages/dd-trace/src/{config_stable.js → config/stable.js} +20 -32
- package/packages/dd-trace/src/{supported-configurations.json → config/supported-configurations.json} +5 -0
- package/packages/dd-trace/src/constants.js +5 -0
- package/packages/dd-trace/src/crashtracking/crashtracker.js +11 -2
- package/packages/dd-trace/src/datastreams/checkpointer.js +2 -2
- package/packages/dd-trace/src/datastreams/index.js +1 -1
- package/packages/dd-trace/src/datastreams/pathway.js +7 -7
- package/packages/dd-trace/src/datastreams/processor.js +3 -3
- package/packages/dd-trace/src/datastreams/writer.js +3 -3
- package/packages/dd-trace/src/debugger/config.js +1 -0
- package/packages/dd-trace/src/debugger/devtools_client/condition.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/config.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/index.js +7 -2
- package/packages/dd-trace/src/debugger/devtools_client/send.js +6 -6
- package/packages/dd-trace/src/debugger/devtools_client/session.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +5 -5
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/constants.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +2 -2
- package/packages/dd-trace/src/debugger/devtools_client/state.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/status.js +2 -2
- package/packages/dd-trace/src/debugger/index.js +84 -16
- package/packages/dd-trace/src/dogstatsd.js +5 -4
- package/packages/dd-trace/src/encode/0.4.js +3 -3
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +2 -2
- package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
- package/packages/dd-trace/src/encode/span-stats.js +6 -1
- package/packages/dd-trace/src/exporter.js +2 -2
- package/packages/dd-trace/src/exporters/agent/index.js +2 -4
- package/packages/dd-trace/src/exporters/agent/writer.js +9 -14
- package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +2 -2
- package/packages/dd-trace/src/exporters/common/docker.js +2 -2
- package/packages/dd-trace/src/exporters/common/request.js +3 -3
- package/packages/dd-trace/src/exporters/common/util.js +2 -2
- package/packages/dd-trace/src/exporters/common/writer.js +1 -1
- package/packages/dd-trace/src/exporters/span-stats/index.js +1 -1
- package/packages/dd-trace/src/external-logger/src/index.js +1 -2
- package/packages/dd-trace/src/flare/index.js +2 -2
- package/packages/dd-trace/src/guardrails/index.js +6 -3
- package/packages/dd-trace/src/guardrails/telemetry.js +1 -1
- package/packages/dd-trace/src/id.js +1 -1
- package/packages/dd-trace/src/index.js +4 -4
- package/packages/dd-trace/src/lambda/handler.js +5 -5
- package/packages/dd-trace/src/lambda/index.js +2 -2
- package/packages/dd-trace/src/lambda/runtime/patch.js +6 -6
- package/packages/dd-trace/src/lambda/runtime/ritm.js +3 -3
- package/packages/dd-trace/src/llmobs/constants/tags.js +14 -1
- package/packages/dd-trace/src/llmobs/index.js +10 -11
- package/packages/dd-trace/src/llmobs/noop.js +2 -0
- package/packages/dd-trace/src/llmobs/plugins/ai/index.js +38 -7
- package/packages/dd-trace/src/llmobs/plugins/ai/util.js +30 -9
- package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +3 -3
- package/packages/dd-trace/src/llmobs/plugins/genai/util.js +2 -2
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/embedding.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/llm.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +16 -0
- package/packages/dd-trace/src/llmobs/plugins/openai/index.js +19 -5
- package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +22 -10
- package/packages/dd-trace/src/llmobs/plugins/vertexai.js +1 -1
- package/packages/dd-trace/src/llmobs/sdk.js +46 -26
- package/packages/dd-trace/src/llmobs/span_processor.js +26 -20
- package/packages/dd-trace/src/llmobs/tagger.js +175 -1
- package/packages/dd-trace/src/llmobs/telemetry.js +3 -4
- package/packages/dd-trace/src/llmobs/writers/base.js +117 -38
- package/packages/dd-trace/src/llmobs/writers/spans.js +5 -5
- package/packages/dd-trace/src/log/index.js +5 -5
- package/packages/dd-trace/src/noop/proxy.js +5 -5
- package/packages/dd-trace/src/noop/span.js +1 -1
- package/packages/dd-trace/src/openfeature/index.js +2 -2
- package/packages/dd-trace/src/openfeature/noop.js +14 -14
- package/packages/dd-trace/src/openfeature/remote_config.js +31 -0
- package/packages/dd-trace/src/openfeature/writers/base.js +12 -13
- package/packages/dd-trace/src/openfeature/writers/exposures.js +9 -9
- package/packages/dd-trace/src/opentelemetry/context_manager.js +2 -2
- package/packages/dd-trace/src/opentelemetry/logs/logger.js +1 -1
- package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +4 -4
- package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +9 -8
- package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +3 -3
- package/packages/dd-trace/src/opentelemetry/metrics/meter.js +2 -2
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +4 -4
- package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +36 -11
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +2 -2
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +11 -10
- package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +1 -1
- package/packages/dd-trace/src/opentelemetry/span.js +2 -2
- package/packages/dd-trace/src/opentelemetry/tracer.js +51 -9
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +68 -28
- package/packages/dd-trace/src/opentracing/span.js +7 -7
- package/packages/dd-trace/src/opentracing/tracer.js +5 -5
- package/packages/dd-trace/src/payload-tagging/index.js +6 -2
- package/packages/dd-trace/src/plugin_manager.js +8 -6
- package/packages/dd-trace/src/plugins/apollo.js +1 -1
- package/packages/dd-trace/src/plugins/ci_plugin.js +27 -27
- package/packages/dd-trace/src/plugins/database.js +1 -1
- package/packages/dd-trace/src/plugins/index.js +5 -1
- package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
- package/packages/dd-trace/src/plugins/outbound.js +1 -1
- package/packages/dd-trace/src/plugins/tracing.js +1 -1
- package/packages/dd-trace/src/plugins/util/ci.js +5 -8
- package/packages/dd-trace/src/plugins/util/git-cache.js +3 -3
- package/packages/dd-trace/src/plugins/util/git.js +8 -8
- package/packages/dd-trace/src/plugins/util/stacktrace.js +1 -1
- package/packages/dd-trace/src/plugins/util/test.js +25 -25
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +41 -43
- package/packages/dd-trace/src/plugins/util/web.js +8 -5
- package/packages/dd-trace/src/priority_sampler.js +15 -16
- package/packages/dd-trace/src/process-tags/index.js +31 -29
- package/packages/dd-trace/src/profiler.js +4 -39
- package/packages/dd-trace/src/profiling/config.js +104 -50
- package/packages/dd-trace/src/profiling/exporter_cli.js +8 -8
- package/packages/dd-trace/src/profiling/exporters/agent.js +6 -6
- package/packages/dd-trace/src/profiling/exporters/event_serializer.js +9 -2
- package/packages/dd-trace/src/profiling/index.js +1 -1
- package/packages/dd-trace/src/profiling/libuv-size.js +1 -1
- package/packages/dd-trace/src/profiling/profiler.js +61 -7
- package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +1 -1
- package/packages/dd-trace/src/profiling/profilers/events.js +2 -2
- package/packages/dd-trace/src/profiling/profilers/wall.js +4 -4
- package/packages/dd-trace/src/proxy.js +43 -20
- package/packages/dd-trace/src/remote_config/capabilities.js +3 -0
- package/packages/dd-trace/src/remote_config/index.js +541 -137
- package/packages/dd-trace/src/require-package-json.js +1 -1
- package/packages/dd-trace/src/ritm.js +58 -31
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +3 -3
- package/packages/dd-trace/src/serverless.js +17 -1
- package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +8 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +8 -0
- package/packages/dd-trace/src/span_format.js +1 -1
- package/packages/dd-trace/src/span_processor.js +4 -4
- package/packages/dd-trace/src/span_stats.js +6 -4
- package/packages/dd-trace/src/standalone/index.js +1 -1
- package/packages/dd-trace/src/startup-log.js +7 -16
- package/packages/dd-trace/src/telemetry/dependencies.js +3 -3
- package/packages/dd-trace/src/telemetry/endpoints.js +75 -13
- package/packages/dd-trace/src/telemetry/logs/index.js +1 -1
- package/packages/dd-trace/src/telemetry/send-data.js +103 -4
- package/packages/dd-trace/src/telemetry/telemetry.js +238 -114
- package/packages/dd-trace/src/tracer.js +3 -3
- package/packages/dd-trace/src/tracer_metadata.js +19 -15
- package/packages/dd-trace/src/remote_config/manager.js +0 -368
- /package/packages/dd-trace/src/{git_properties.js → config/git_properties.js} +0 -0
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const { channel } = require('dc-polyfill')
|
|
3
4
|
const pick = require('../../../../datadog-core/src/utils/src/pick')
|
|
4
5
|
const id = require('../../id')
|
|
5
6
|
const DatadogSpanContext = require('../span_context')
|
|
6
7
|
const log = require('../../log')
|
|
7
|
-
const TraceState = require('./tracestate')
|
|
8
8
|
const tags = require('../../../../../ext/tags')
|
|
9
|
-
const { channel } = require('dc-polyfill')
|
|
10
9
|
const { setBaggageItem, getAllBaggageItems, removeAllBaggageItems } = require('../../baggage')
|
|
11
10
|
const telemetryMetrics = require('../../telemetry/metrics')
|
|
12
11
|
|
|
13
12
|
const { AUTO_KEEP, AUTO_REJECT, USER_KEEP } = require('../../../../../ext/priority')
|
|
13
|
+
const TraceState = require('./tracestate')
|
|
14
14
|
|
|
15
15
|
const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
|
|
16
16
|
|
|
@@ -34,8 +34,19 @@ const b3HeaderKey = 'b3'
|
|
|
34
34
|
const sqsdHeaderHey = 'x-aws-sqsd-attr-_datadog'
|
|
35
35
|
const b3HeaderExpr = /^(([0-9a-f]{16}){1,2}-[0-9a-f]{16}(-[01d](-[0-9a-f]{16})?)?|[01d])$/i
|
|
36
36
|
const baggageExpr = new RegExp(`^${baggagePrefix}(.+)$`)
|
|
37
|
+
// W3C Baggage key grammar: key = token (RFC 7230).
|
|
38
|
+
// Spec (up-to-date): "Propagation format for distributed context: Baggage" §3.3.1
|
|
39
|
+
// https://www.w3.org/TR/baggage/#header-content
|
|
40
|
+
// https://www.rfc-editor.org/rfc/rfc7230#section-3.2.6
|
|
41
|
+
const baggageTokenExpr = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/
|
|
37
42
|
const tagKeyExpr = /^_dd\.p\.[\x21-\x2B\x2D-\x7E]+$/ // ASCII minus spaces and commas
|
|
38
43
|
const tagValueExpr = /^[\x20-\x2B\x2D-\x7E]*$/ // ASCII minus commas
|
|
44
|
+
// RFC7230 token (used by HTTP header field-name) and compatible with Node's header name validation.
|
|
45
|
+
// See https://www.rfc-editor.org/rfc/rfc7230#section-3.2.6
|
|
46
|
+
const httpHeaderNameExpr = /^[0-9A-Za-z!#$%&'*+\-.^_`|~]+$/
|
|
47
|
+
// Compatible with Node's internal header value validation (allows HTAB, SP-~, and \x80-\xFF only)
|
|
48
|
+
// https://github.com/nodejs/node/blob/main/lib/_http_common.js
|
|
49
|
+
const invalidHeaderValueCharExpr = /[^\t\x20-\x7E\x80-\xFF]/
|
|
39
50
|
const traceparentExpr = /^([a-f0-9]{2})-([a-f0-9]{32})-([a-f0-9]{16})-([a-f0-9]{2})(-.*)?$/i
|
|
40
51
|
const traceparentKey = 'traceparent'
|
|
41
52
|
const tracestateKey = 'tracestate'
|
|
@@ -121,18 +132,28 @@ class TextMapPropagator {
|
|
|
121
132
|
}
|
|
122
133
|
}
|
|
123
134
|
|
|
124
|
-
_encodeOtelBaggageKey (key) {
|
|
125
|
-
let encoded = encodeURIComponent(key)
|
|
126
|
-
encoded = encoded.replaceAll('(', '%28')
|
|
127
|
-
encoded = encoded.replaceAll(')', '%29')
|
|
128
|
-
return encoded
|
|
129
|
-
}
|
|
130
|
-
|
|
131
135
|
_injectBaggageItems (spanContext, carrier) {
|
|
132
136
|
if (this._config.legacyBaggageEnabled) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
137
|
+
const baggageItems = spanContext?._baggageItems
|
|
138
|
+
if (baggageItems) {
|
|
139
|
+
for (const key of Object.keys(baggageItems)) {
|
|
140
|
+
const headerName = baggagePrefix + key
|
|
141
|
+
|
|
142
|
+
// Legacy OpenTracing baggage is propagated as individual headers (ot-baggage-*),
|
|
143
|
+
// so it must always be representable as a valid HTTP header name.
|
|
144
|
+
if (!httpHeaderNameExpr.test(headerName)) {
|
|
145
|
+
tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
|
|
146
|
+
continue
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
let headerValue = String(baggageItems[key])
|
|
150
|
+
// Avoid Node throwing ERR_INVALID_CHAR when setting header values (e.g. newline from decoded OTEL baggage).
|
|
151
|
+
if (invalidHeaderValueCharExpr.test(headerValue)) {
|
|
152
|
+
headerValue = encodeURIComponent(headerValue)
|
|
153
|
+
}
|
|
154
|
+
carrier[headerName] = headerValue
|
|
155
|
+
}
|
|
156
|
+
}
|
|
136
157
|
}
|
|
137
158
|
if (this._hasPropagationStyle('inject', 'baggage')) {
|
|
138
159
|
let baggage = ''
|
|
@@ -142,7 +163,13 @@ class TextMapPropagator {
|
|
|
142
163
|
const baggageItems = getAllBaggageItems()
|
|
143
164
|
if (!baggageItems) return
|
|
144
165
|
for (const [key, value] of Object.entries(baggageItems)) {
|
|
145
|
-
const
|
|
166
|
+
const baggageKey = String(key).trim()
|
|
167
|
+
if (!baggageKey || !baggageTokenExpr.test(baggageKey)) continue
|
|
168
|
+
|
|
169
|
+
// Do not trim values. If callers include leading/trailing whitespace, it must be percent-encoded.
|
|
170
|
+
// W3C list-member allows optional properties after ';'.
|
|
171
|
+
// https://www.w3.org/TR/baggage/#header-content
|
|
172
|
+
const item = `${baggageKey}=${encodeURIComponent(String(value))},`
|
|
146
173
|
itemCounter += 1
|
|
147
174
|
byteCounter += Buffer.byteLength(item)
|
|
148
175
|
|
|
@@ -625,13 +652,6 @@ class TextMapPropagator {
|
|
|
625
652
|
}
|
|
626
653
|
}
|
|
627
654
|
|
|
628
|
-
_decodeOtelBaggageKey (key) {
|
|
629
|
-
let decoded = decodeURIComponent(key)
|
|
630
|
-
decoded = decoded.replaceAll('%28', '(')
|
|
631
|
-
decoded = decoded.replaceAll('%29', ')')
|
|
632
|
-
return decoded
|
|
633
|
-
}
|
|
634
|
-
|
|
635
655
|
_extractLegacyBaggageItems (carrier, spanContext) {
|
|
636
656
|
if (this._config.legacyBaggageEnabled) {
|
|
637
657
|
Object.keys(carrier).forEach(key => {
|
|
@@ -646,26 +666,46 @@ class TextMapPropagator {
|
|
|
646
666
|
|
|
647
667
|
_extractBaggageItems (carrier, spanContext) {
|
|
648
668
|
if (!this._hasPropagationStyle('extract', 'baggage')) return
|
|
649
|
-
if (!carrier
|
|
669
|
+
if (!carrier?.baggage) return
|
|
650
670
|
const baggages = carrier.baggage.split(',')
|
|
651
|
-
const
|
|
671
|
+
const tagAllKeys = this._config.baggageTagKeys === '*'
|
|
672
|
+
const keysToSpanTag = tagAllKeys
|
|
652
673
|
? undefined
|
|
653
674
|
: new Set(this._config.baggageTagKeys.split(','))
|
|
654
675
|
for (const keyValue of baggages) {
|
|
655
|
-
if (!keyValue
|
|
676
|
+
if (!keyValue) continue
|
|
677
|
+
|
|
678
|
+
// Per W3C baggage, list-members can contain optional properties after `;`.
|
|
679
|
+
// Example: key=value;prop=1;prop2
|
|
680
|
+
// https://www.w3.org/TR/baggage/#header-content
|
|
681
|
+
const semicolonIdx = keyValue.indexOf(';')
|
|
682
|
+
const member = (semicolonIdx === -1 ? keyValue : keyValue.slice(0, semicolonIdx)).trim()
|
|
683
|
+
if (!member) continue
|
|
684
|
+
|
|
685
|
+
const eqIdx = member.indexOf('=')
|
|
686
|
+
if (eqIdx === -1) {
|
|
687
|
+
tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
|
|
688
|
+
removeAllBaggageItems()
|
|
689
|
+
return
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
const key = member.slice(0, eqIdx).trim()
|
|
693
|
+
let value = member.slice(eqIdx + 1).trim()
|
|
694
|
+
|
|
695
|
+
if (!baggageTokenExpr.test(key) || !value) {
|
|
656
696
|
tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
|
|
657
697
|
removeAllBaggageItems()
|
|
658
698
|
return
|
|
659
699
|
}
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
if (!key || !value) {
|
|
700
|
+
try {
|
|
701
|
+
value = decodeURIComponent(value)
|
|
702
|
+
} catch {
|
|
664
703
|
tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
|
|
665
704
|
removeAllBaggageItems()
|
|
666
705
|
return
|
|
667
706
|
}
|
|
668
|
-
|
|
707
|
+
|
|
708
|
+
if (spanContext && (tagAllKeys || keysToSpanTag?.has(key))) {
|
|
669
709
|
spanContext._trace.tags['baggage.' + key] = value
|
|
670
710
|
}
|
|
671
711
|
setBaggageItem(key, value)
|
|
@@ -4,26 +4,26 @@
|
|
|
4
4
|
const { performance } = require('perf_hooks')
|
|
5
5
|
const now = performance.now.bind(performance)
|
|
6
6
|
const dateNow = Date.now
|
|
7
|
-
const
|
|
7
|
+
const util = require('util')
|
|
8
|
+
const { channel } = require('dc-polyfill')
|
|
8
9
|
const id = require('../id')
|
|
9
10
|
const tagger = require('../tagger')
|
|
10
11
|
const runtimeMetrics = require('../runtime_metrics')
|
|
11
12
|
const log = require('../log')
|
|
12
13
|
const { storage } = require('../../../datadog-core')
|
|
13
14
|
const telemetryMetrics = require('../telemetry/metrics')
|
|
14
|
-
const {
|
|
15
|
-
const
|
|
16
|
-
const { getEnvironmentVariable } = require('../config-helper')
|
|
15
|
+
const { getValueFromEnvSources } = require('../config/helper')
|
|
16
|
+
const SpanContext = require('./span_context')
|
|
17
17
|
|
|
18
18
|
const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
|
|
19
19
|
|
|
20
|
-
const DD_TRACE_EXPERIMENTAL_STATE_TRACKING =
|
|
21
|
-
const DD_TRACE_EXPERIMENTAL_SPAN_COUNTS =
|
|
20
|
+
const DD_TRACE_EXPERIMENTAL_STATE_TRACKING = getValueFromEnvSources('DD_TRACE_EXPERIMENTAL_STATE_TRACKING')
|
|
21
|
+
const DD_TRACE_EXPERIMENTAL_SPAN_COUNTS = getValueFromEnvSources('DD_TRACE_EXPERIMENTAL_SPAN_COUNTS')
|
|
22
22
|
|
|
23
23
|
const unfinishedRegistry = createRegistry('unfinished')
|
|
24
24
|
const finishedRegistry = createRegistry('finished')
|
|
25
25
|
|
|
26
|
-
const OTEL_ENABLED = !!
|
|
26
|
+
const OTEL_ENABLED = !!getValueFromEnvSources('DD_TRACE_OTEL_ENABLED')
|
|
27
27
|
const ALLOWED = new Set(['string', 'number', 'boolean'])
|
|
28
28
|
|
|
29
29
|
const integrationCounters = {
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const os = require('os')
|
|
4
|
-
const Span = require('./span')
|
|
5
4
|
const SpanProcessor = require('../span_processor')
|
|
6
5
|
const PrioritySampler = require('../priority_sampler')
|
|
6
|
+
const formats = require('../../../../ext/formats')
|
|
7
|
+
const log = require('../log')
|
|
8
|
+
const runtimeMetrics = require('../runtime_metrics')
|
|
9
|
+
const getExporter = require('../exporter')
|
|
10
|
+
const Span = require('./span')
|
|
7
11
|
const TextMapPropagator = require('./propagation/text_map')
|
|
8
12
|
const DSMTextMapPropagator = require('./propagation/text_map_dsm')
|
|
9
13
|
const HttpPropagator = require('./propagation/http')
|
|
10
14
|
const BinaryPropagator = require('./propagation/binary')
|
|
11
15
|
const LogPropagator = require('./propagation/log')
|
|
12
|
-
const formats = require('../../../../ext/formats')
|
|
13
16
|
|
|
14
|
-
const log = require('../log')
|
|
15
|
-
const runtimeMetrics = require('../runtime_metrics')
|
|
16
|
-
const getExporter = require('../exporter')
|
|
17
17
|
const SpanContext = require('./span_context')
|
|
18
18
|
|
|
19
19
|
const REFERENCE_CHILD_OF = 'child_of'
|
|
@@ -38,7 +38,9 @@ function maybeJSONParseValue (value) {
|
|
|
38
38
|
function expand (object, expansionRules) {
|
|
39
39
|
for (const rule of expansionRules) {
|
|
40
40
|
jsonpath(rule, object, (value, _type, desc) => {
|
|
41
|
-
desc.parent
|
|
41
|
+
if (desc.parent && desc.parentProperty) {
|
|
42
|
+
desc.parent[desc.parentProperty] = maybeJSONParseValue(value)
|
|
43
|
+
}
|
|
42
44
|
})
|
|
43
45
|
}
|
|
44
46
|
}
|
|
@@ -52,7 +54,9 @@ function expand (object, expansionRules) {
|
|
|
52
54
|
function redact (object, redactionRules) {
|
|
53
55
|
for (const rule of redactionRules) {
|
|
54
56
|
jsonpath(rule, object, (_value, _type, desc) => {
|
|
55
|
-
desc.parent
|
|
57
|
+
if (desc.parent && desc.parentProperty) {
|
|
58
|
+
desc.parent[desc.parentProperty] = 'redacted'
|
|
59
|
+
}
|
|
56
60
|
})
|
|
57
61
|
}
|
|
58
62
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { channel } = require('dc-polyfill')
|
|
4
|
+
|
|
5
|
+
const { getEnvironmentVariable, getValueFromEnvSources } = require('./config/helper')
|
|
4
6
|
const { isFalse, isTrue, normalizePluginEnvName } = require('./util')
|
|
5
7
|
const plugins = require('./plugins')
|
|
6
8
|
const log = require('./log')
|
|
7
|
-
const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
|
|
8
9
|
|
|
9
10
|
// Test optimization plugins that should only be enabled when isCiVisibility is true
|
|
10
11
|
const TEST_OPTIMIZATION_PLUGINS = new Set([
|
|
@@ -24,7 +25,7 @@ if (getEnvironmentVariable('AWS_LAMBDA_FUNCTION_NAME') !== undefined) {
|
|
|
24
25
|
require('./lambda')
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
const DD_TRACE_DISABLED_PLUGINS =
|
|
28
|
+
const DD_TRACE_DISABLED_PLUGINS = getValueFromEnvSources('DD_TRACE_DISABLED_PLUGINS')
|
|
28
29
|
|
|
29
30
|
const disabledPlugins = new Set(
|
|
30
31
|
DD_TRACE_DISABLED_PLUGINS && DD_TRACE_DISABLED_PLUGINS.split(',').map(plugin => plugin.trim())
|
|
@@ -41,7 +42,7 @@ loadChannel.subscribe(({ name }) => {
|
|
|
41
42
|
function maybeEnable (Plugin) {
|
|
42
43
|
if (!Plugin || typeof Plugin !== 'function') return
|
|
43
44
|
if (!pluginClasses[Plugin.id]) {
|
|
44
|
-
const enabled =
|
|
45
|
+
const enabled = getEnabled(Plugin)
|
|
45
46
|
|
|
46
47
|
// TODO: remove the need to load the plugin class in order to disable the plugin
|
|
47
48
|
if (isFalse(enabled) || disabledPlugins.has(Plugin.id)) {
|
|
@@ -54,9 +55,9 @@ function maybeEnable (Plugin) {
|
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
|
|
57
|
-
function
|
|
58
|
+
function getEnabled (Plugin) {
|
|
58
59
|
const envName = `DD_TRACE_${Plugin.id.toUpperCase()}_ENABLED`
|
|
59
|
-
return
|
|
60
|
+
return getValueFromEnvSources(normalizePluginEnvName(envName))
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
// TODO this must always be a singleton.
|
|
@@ -94,7 +95,8 @@ module.exports = class PluginManager {
|
|
|
94
95
|
this._pluginsByName[name] = new Plugin(this._tracer, this._tracerConfig)
|
|
95
96
|
}
|
|
96
97
|
const pluginConfig = this._configsByName[name] || {
|
|
97
|
-
enabled: this._tracerConfig.plugins !== false &&
|
|
98
|
+
enabled: this._tracerConfig.plugins !== false &&
|
|
99
|
+
(!Plugin.experimental || isTrue(getEnabled(Plugin)))
|
|
98
100
|
}
|
|
99
101
|
|
|
100
102
|
// extracts predetermined configuration from tracer and combines it with plugin-specific config
|
|
@@ -1,6 +1,33 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { storage } = require('../../../datadog-core')
|
|
4
|
+
const { COMPONENT } = require('../constants')
|
|
5
|
+
const log = require('../log')
|
|
6
|
+
const {
|
|
7
|
+
incrementCountMetric,
|
|
8
|
+
distributionMetric,
|
|
9
|
+
TELEMETRY_EVENT_CREATED,
|
|
10
|
+
TELEMETRY_ITR_SKIPPED
|
|
11
|
+
} = require('../ci-visibility/telemetry')
|
|
12
|
+
const getDiClient = require('../ci-visibility/dynamic-instrumentation')
|
|
13
|
+
const { DD_MAJOR } = require('../../../../version')
|
|
14
|
+
const id = require('../id')
|
|
15
|
+
const { OS_VERSION, OS_PLATFORM, OS_ARCHITECTURE, RUNTIME_NAME, RUNTIME_VERSION } = require('./util/env')
|
|
16
|
+
const {
|
|
17
|
+
CI_PROVIDER_NAME,
|
|
18
|
+
GIT_REPOSITORY_URL,
|
|
19
|
+
GIT_COMMIT_SHA,
|
|
20
|
+
GIT_BRANCH,
|
|
21
|
+
CI_WORKSPACE_PATH,
|
|
22
|
+
GIT_COMMIT_MESSAGE,
|
|
23
|
+
GIT_TAG,
|
|
24
|
+
GIT_PULL_REQUEST_BASE_BRANCH_SHA,
|
|
25
|
+
GIT_COMMIT_HEAD_SHA,
|
|
26
|
+
GIT_PULL_REQUEST_BASE_BRANCH,
|
|
27
|
+
GIT_COMMIT_HEAD_MESSAGE
|
|
28
|
+
} = require('./util/tags')
|
|
29
|
+
const Plugin = require('./plugin')
|
|
30
|
+
const { getRepositoryRoot } = require('./util/git')
|
|
4
31
|
const {
|
|
5
32
|
getTestEnvironmentMetadata,
|
|
6
33
|
getTestSessionName,
|
|
@@ -37,33 +64,6 @@ const {
|
|
|
37
64
|
getPullRequestBaseBranch,
|
|
38
65
|
TEST_IS_TEST_FRAMEWORK_WORKER
|
|
39
66
|
} = require('./util/test')
|
|
40
|
-
const { getRepositoryRoot } = require('./util/git')
|
|
41
|
-
const Plugin = require('./plugin')
|
|
42
|
-
const { COMPONENT } = require('../constants')
|
|
43
|
-
const log = require('../log')
|
|
44
|
-
const {
|
|
45
|
-
incrementCountMetric,
|
|
46
|
-
distributionMetric,
|
|
47
|
-
TELEMETRY_EVENT_CREATED,
|
|
48
|
-
TELEMETRY_ITR_SKIPPED
|
|
49
|
-
} = require('../ci-visibility/telemetry')
|
|
50
|
-
const {
|
|
51
|
-
CI_PROVIDER_NAME,
|
|
52
|
-
GIT_REPOSITORY_URL,
|
|
53
|
-
GIT_COMMIT_SHA,
|
|
54
|
-
GIT_BRANCH,
|
|
55
|
-
CI_WORKSPACE_PATH,
|
|
56
|
-
GIT_COMMIT_MESSAGE,
|
|
57
|
-
GIT_TAG,
|
|
58
|
-
GIT_PULL_REQUEST_BASE_BRANCH_SHA,
|
|
59
|
-
GIT_COMMIT_HEAD_SHA,
|
|
60
|
-
GIT_PULL_REQUEST_BASE_BRANCH,
|
|
61
|
-
GIT_COMMIT_HEAD_MESSAGE
|
|
62
|
-
} = require('./util/tags')
|
|
63
|
-
const { OS_VERSION, OS_PLATFORM, OS_ARCHITECTURE, RUNTIME_NAME, RUNTIME_VERSION } = require('./util/env')
|
|
64
|
-
const getDiClient = require('../ci-visibility/dynamic-instrumentation')
|
|
65
|
-
const { DD_MAJOR } = require('../../../../version')
|
|
66
|
-
const id = require('../id')
|
|
67
67
|
|
|
68
68
|
const FRAMEWORK_TO_TRIMMED_COMMAND = {
|
|
69
69
|
vitest: 'vitest run',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const plugins = {
|
|
4
4
|
get '@anthropic-ai/sdk' () { return require('../../../datadog-plugin-anthropic/src') },
|
|
5
5
|
get '@apollo/gateway' () { return require('../../../datadog-plugin-apollo/src') },
|
|
6
6
|
get '@aws-sdk/smithy-client' () { return require('../../../datadog-plugin-aws-sdk/src') },
|
|
@@ -26,6 +26,7 @@ module.exports = {
|
|
|
26
26
|
get '@node-redis/client' () { return require('../../../datadog-plugin-redis/src') },
|
|
27
27
|
get '@opensearch-project/opensearch' () { return require('../../../datadog-plugin-opensearch/src') },
|
|
28
28
|
get '@prisma/client' () { return require('../../../datadog-plugin-prisma/src') },
|
|
29
|
+
get './runtime/library.js' () { return require('../../../datadog-plugin-prisma/src') },
|
|
29
30
|
get '@redis/client' () { return require('../../../datadog-plugin-redis/src') },
|
|
30
31
|
get '@smithy/smithy-client' () { return require('../../../datadog-plugin-aws-sdk/src') },
|
|
31
32
|
get '@vitest/runner' () { return require('../../../datadog-plugin-vitest/src') },
|
|
@@ -35,6 +36,7 @@ module.exports = {
|
|
|
35
36
|
get amqplib () { return require('../../../datadog-plugin-amqplib/src') },
|
|
36
37
|
get avsc () { return require('../../../datadog-plugin-avsc/src') },
|
|
37
38
|
get 'aws-sdk' () { return require('../../../datadog-plugin-aws-sdk/src') },
|
|
39
|
+
get bullmq () { return require('../../../datadog-plugin-bullmq/src') },
|
|
38
40
|
get bunyan () { return require('../../../datadog-plugin-bunyan/src') },
|
|
39
41
|
get 'cassandra-driver' () { return require('../../../datadog-plugin-cassandra-driver/src') },
|
|
40
42
|
get child_process () { return require('../../../datadog-plugin-child_process/src') },
|
|
@@ -110,3 +112,5 @@ module.exports = {
|
|
|
110
112
|
get winston () { return require('../../../datadog-plugin-winston/src') },
|
|
111
113
|
get ws () { return require('../../../datadog-plugin-ws/src') }
|
|
112
114
|
}
|
|
115
|
+
|
|
116
|
+
module.exports = plugins
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { LOG } = require('../../../../ext/formats')
|
|
4
|
-
const Plugin = require('./plugin')
|
|
5
4
|
const { storage } = require('../../../datadog-core')
|
|
5
|
+
const Plugin = require('./plugin')
|
|
6
6
|
|
|
7
7
|
function messageProxy (message, holder) {
|
|
8
8
|
return new Proxy(message, {
|
|
@@ -6,9 +6,9 @@ const {
|
|
|
6
6
|
PEER_SERVICE_SOURCE_KEY,
|
|
7
7
|
PEER_SERVICE_REMAP_KEY
|
|
8
8
|
} = require('../constants')
|
|
9
|
-
const TracingPlugin = require('./tracing')
|
|
10
9
|
const { exitTags } = require('../../../datadog-code-origin')
|
|
11
10
|
const { storage } = require('../../../datadog-core')
|
|
11
|
+
const TracingPlugin = require('./tracing')
|
|
12
12
|
|
|
13
13
|
const COMMON_PEER_SVC_SOURCE_TAGS = [
|
|
14
14
|
'net.peer.name',
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const Plugin = require('./plugin')
|
|
4
3
|
const { storage } = require('../../../datadog-core')
|
|
5
4
|
const analyticsSampler = require('../analytics_sampler')
|
|
6
5
|
const { COMPONENT } = require('../constants')
|
|
6
|
+
const Plugin = require('./plugin')
|
|
7
7
|
|
|
8
8
|
class TracingPlugin extends Plugin {
|
|
9
9
|
constructor (...args) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { readFileSync } = require('fs')
|
|
4
|
+
const { getEnvironmentVariable, getEnvironmentVariables, getValueFromEnvSources } = require('../../config/helper')
|
|
4
5
|
const {
|
|
5
6
|
GIT_BRANCH,
|
|
6
7
|
GIT_COMMIT_SHA,
|
|
@@ -32,7 +33,6 @@ const {
|
|
|
32
33
|
GIT_PULL_REQUEST_BASE_BRANCH_HEAD_SHA
|
|
33
34
|
} = require('./tags')
|
|
34
35
|
const { filterSensitiveInfoFromRepository } = require('./url')
|
|
35
|
-
const { getEnvironmentVariable, getEnvironmentVariables } = require('../../config-helper')
|
|
36
36
|
|
|
37
37
|
// Receives a string with the form 'John Doe <john.doe@gmail.com>'
|
|
38
38
|
// and returns { name: 'John Doe', email: 'john.doe@gmail.com' }
|
|
@@ -120,12 +120,12 @@ module.exports = {
|
|
|
120
120
|
GIT_COMMIT: JENKINS_GIT_COMMIT,
|
|
121
121
|
GIT_URL: JENKINS_GIT_REPOSITORY_URL,
|
|
122
122
|
GIT_URL_1: JENKINS_GIT_REPOSITORY_URL_1,
|
|
123
|
-
DD_CUSTOM_TRACE_ID,
|
|
124
123
|
NODE_NAME,
|
|
125
124
|
NODE_LABELS,
|
|
126
125
|
CHANGE_ID,
|
|
127
126
|
CHANGE_TARGET
|
|
128
127
|
} = env
|
|
128
|
+
const DD_CUSTOM_TRACE_ID = getValueFromEnvSources('DD_CUSTOM_TRACE_ID')
|
|
129
129
|
|
|
130
130
|
tags = {
|
|
131
131
|
[CI_PIPELINE_ID]: BUILD_TAG,
|
|
@@ -689,16 +689,13 @@ module.exports = {
|
|
|
689
689
|
}
|
|
690
690
|
|
|
691
691
|
if (env.CODEBUILD_INITIATOR?.startsWith('codepipeline/')) {
|
|
692
|
-
const
|
|
693
|
-
|
|
694
|
-
DD_ACTION_EXECUTION_ID,
|
|
695
|
-
DD_PIPELINE_EXECUTION_ID
|
|
696
|
-
} = env
|
|
692
|
+
const DD_ACTION_EXECUTION_ID = getValueFromEnvSources('DD_ACTION_EXECUTION_ID')
|
|
693
|
+
const DD_PIPELINE_EXECUTION_ID = getValueFromEnvSources('DD_PIPELINE_EXECUTION_ID')
|
|
697
694
|
tags = {
|
|
698
695
|
[CI_PROVIDER_NAME]: 'awscodepipeline',
|
|
699
696
|
[CI_PIPELINE_ID]: DD_PIPELINE_EXECUTION_ID,
|
|
700
697
|
[CI_ENV_VARS]: JSON.stringify({
|
|
701
|
-
CODEBUILD_BUILD_ARN,
|
|
698
|
+
CODEBUILD_BUILD_ARN: env.CODEBUILD_BUILD_ARN,
|
|
702
699
|
DD_PIPELINE_EXECUTION_ID,
|
|
703
700
|
DD_ACTION_EXECUTION_ID
|
|
704
701
|
}),
|
|
@@ -7,11 +7,11 @@ const crypto = require('crypto')
|
|
|
7
7
|
const cp = require('child_process')
|
|
8
8
|
|
|
9
9
|
const log = require('../../log')
|
|
10
|
-
const {
|
|
10
|
+
const { getValueFromEnvSources } = require('../../config/helper')
|
|
11
11
|
const { isTrue } = require('../../util')
|
|
12
12
|
|
|
13
|
-
let isGitEnabled = isTrue(
|
|
14
|
-
const GIT_CACHE_DIR =
|
|
13
|
+
let isGitEnabled = isTrue(getValueFromEnvSources('DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_ENABLED'))
|
|
14
|
+
const GIT_CACHE_DIR = getValueFromEnvSources('DD_EXPERIMENTAL_TEST_OPT_GIT_CACHE_DIR') ||
|
|
15
15
|
path.join(os.tmpdir(), 'dd-trace-git-cache')
|
|
16
16
|
|
|
17
17
|
function ensureCacheDir () {
|
|
@@ -5,6 +5,14 @@ const path = require('path')
|
|
|
5
5
|
const fs = require('fs')
|
|
6
6
|
|
|
7
7
|
const log = require('../../log')
|
|
8
|
+
const {
|
|
9
|
+
incrementCountMetric,
|
|
10
|
+
distributionMetric,
|
|
11
|
+
TELEMETRY_GIT_COMMAND,
|
|
12
|
+
TELEMETRY_GIT_COMMAND_MS,
|
|
13
|
+
TELEMETRY_GIT_COMMAND_ERRORS
|
|
14
|
+
} = require('../../ci-visibility/telemetry')
|
|
15
|
+
const { storage } = require('../../../../datadog-core')
|
|
8
16
|
const {
|
|
9
17
|
GIT_COMMIT_SHA,
|
|
10
18
|
GIT_BRANCH,
|
|
@@ -26,15 +34,7 @@ const {
|
|
|
26
34
|
GIT_COMMIT_HEAD_COMMITTER_NAME,
|
|
27
35
|
GIT_COMMIT_HEAD_MESSAGE
|
|
28
36
|
} = require('./tags')
|
|
29
|
-
const {
|
|
30
|
-
incrementCountMetric,
|
|
31
|
-
distributionMetric,
|
|
32
|
-
TELEMETRY_GIT_COMMAND,
|
|
33
|
-
TELEMETRY_GIT_COMMAND_MS,
|
|
34
|
-
TELEMETRY_GIT_COMMAND_ERRORS
|
|
35
|
-
} = require('../../ci-visibility/telemetry')
|
|
36
37
|
const { filterSensitiveInfoFromRepository } = require('./url')
|
|
37
|
-
const { storage } = require('../../../../datadog-core')
|
|
38
38
|
const { cachedExec } = require('./git-cache')
|
|
39
39
|
|
|
40
40
|
const GIT_REV_LIST_MAX_BUFFER = 12 * 1024 * 1024 // 12MB
|
|
@@ -72,7 +72,7 @@ function parseUserLandFrames (stack, limit = Infinity) {
|
|
|
72
72
|
* @param {number} end - The end index of the line to parse within the stack trace.
|
|
73
73
|
* @returns {StackFrame|undefined} The parsed frame if it is a user frame, `undefined` otherwise.
|
|
74
74
|
*
|
|
75
|
-
* @typedef {
|
|
75
|
+
* @typedef {object} StackFrame
|
|
76
76
|
* @property {string} fileName - The file name of the frame.
|
|
77
77
|
* @property {string} lineNumber - The line number of the frame.
|
|
78
78
|
* @property {string} columnNumber - The column number of the frame.
|
|
@@ -4,26 +4,23 @@ const path = require('path')
|
|
|
4
4
|
const fs = require('fs')
|
|
5
5
|
const { URL } = require('url')
|
|
6
6
|
const log = require('../../log')
|
|
7
|
-
const { getEnvironmentVariable } = require('../../config
|
|
7
|
+
const { getEnvironmentVariable } = require('../../config/helper')
|
|
8
8
|
const satisfies = require('../../../../../vendor/dist/semifies')
|
|
9
9
|
|
|
10
10
|
const istanbul = require('../../../../../vendor/dist/istanbul-lib-coverage')
|
|
11
11
|
const ignore = require('../../../../../vendor/dist/ignore')
|
|
12
12
|
|
|
13
|
+
const id = require('../../id')
|
|
13
14
|
const {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
} = require('./git')
|
|
24
|
-
const { getUserProviderGitMetadata, validateGitRepositoryUrl, validateGitCommitSha } = require('./user-provided-git')
|
|
25
|
-
const { getCIMetadata } = require('./ci')
|
|
26
|
-
const { getRuntimeAndOSMetadata } = require('./env')
|
|
15
|
+
incrementCountMetric,
|
|
16
|
+
TELEMETRY_GIT_COMMIT_SHA_DISCREPANCY,
|
|
17
|
+
TELEMETRY_GIT_SHA_MATCH
|
|
18
|
+
} = require('../../ci-visibility/telemetry')
|
|
19
|
+
|
|
20
|
+
const { SPAN_TYPE, RESOURCE_NAME, SAMPLING_PRIORITY } = require('../../../../../ext/tags')
|
|
21
|
+
const { SAMPLING_RULE_DECISION } = require('../../constants')
|
|
22
|
+
const { AUTO_KEEP } = require('../../../../../ext/priority')
|
|
23
|
+
const { version: ddTraceVersion } = require('../../../../../package.json')
|
|
27
24
|
const {
|
|
28
25
|
GIT_BRANCH,
|
|
29
26
|
GIT_COMMIT_SHA,
|
|
@@ -37,17 +34,20 @@ const {
|
|
|
37
34
|
CI_JOB_NAME,
|
|
38
35
|
GIT_COMMIT_HEAD_SHA
|
|
39
36
|
} = require('./tags')
|
|
40
|
-
const
|
|
37
|
+
const { getRuntimeAndOSMetadata } = require('./env')
|
|
38
|
+
const { getCIMetadata } = require('./ci')
|
|
39
|
+
const { getUserProviderGitMetadata, validateGitRepositoryUrl, validateGitCommitSha } = require('./user-provided-git')
|
|
41
40
|
const {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
getGitMetadata,
|
|
42
|
+
getGitInformationDiscrepancy,
|
|
43
|
+
getGitDiff,
|
|
44
|
+
getGitRemoteName,
|
|
45
|
+
getSourceBranch,
|
|
46
|
+
checkAndFetchBranch,
|
|
47
|
+
getLocalBranches,
|
|
48
|
+
getMergeBase,
|
|
49
|
+
getCounts
|
|
50
|
+
} = require('./git')
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* JSDoc types for test environment metadata helpers.
|
|
@@ -813,7 +813,7 @@ function getTestEndLine (testFn, startLine = 0) {
|
|
|
813
813
|
|
|
814
814
|
/**
|
|
815
815
|
* Gets an object of test tags from an Playwright annotations array.
|
|
816
|
-
* @param {
|
|
816
|
+
* @param {object[]} annotations - Annotations from a Playwright test.
|
|
817
817
|
* @param {string} annotations[].type - Type of annotation. A string of the shape DD_TAGS[$tag_name].
|
|
818
818
|
* @param {string} annotations[].description - Value of the tag.
|
|
819
819
|
*/
|