dd-trace 5.81.0 → 5.82.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/index.d.ts +7 -0
- package/loader-hook.mjs +7 -2
- package/package.json +13 -18
- package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
- package/packages/datadog-esbuild/index.js +8 -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 +2 -2
- 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 +2 -2
- 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 +12 -13
- 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 +1 -1
- 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/register.js +6 -4
- 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/ioredis.js +1 -1
- package/packages/datadog-instrumentations/src/iovalkey.js +1 -1
- package/packages/datadog-instrumentations/src/jest.js +2 -2
- package/packages/datadog-instrumentations/src/kafkajs.js +3 -3
- package/packages/datadog-instrumentations/src/knex.js +1 -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/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 +1 -1
- package/packages/datadog-instrumentations/src/mysql2.js +1 -1
- package/packages/datadog-instrumentations/src/net.js +1 -1
- package/packages/datadog-instrumentations/src/next.js +1 -1
- package/packages/datadog-instrumentations/src/nyc.js +1 -1
- 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 +1 -1
- package/packages/datadog-instrumentations/src/pg.js +3 -3
- package/packages/datadog-instrumentations/src/pino.js +1 -1
- package/packages/datadog-instrumentations/src/playwright.js +1 -1
- 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 +1 -1
- 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 +4 -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/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 +19 -5
- package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
- package/packages/datadog-plugin-azure-service-bus/src/producer.js +4 -0
- 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-cypress/src/plugin.js +1 -1
- package/packages/datadog-plugin-express/src/index.js +1 -1
- 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-kafkajs/src/index.js +1 -1
- package/packages/datadog-plugin-langchain/src/index.js +1 -1
- package/packages/datadog-plugin-moleculer/src/index.js +1 -1
- package/packages/datadog-plugin-mongodb-core/src/index.js +6 -2
- 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-rhea/src/index.js +1 -1
- 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/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 +10 -14
- 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 +1 -1
- 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 +8 -2
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +6 -0
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +1 -1
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +1 -1
- package/packages/dd-trace/src/config/remote_config.js +34 -0
- package/packages/dd-trace/src/config.js +29 -28
- package/packages/dd-trace/src/config_defaults.js +2 -1
- package/packages/dd-trace/src/constants.js +5 -0
- package/packages/dd-trace/src/crashtracking/crashtracker.js +10 -1
- 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 +2 -2
- package/packages/dd-trace/src/datastreams/writer.js +2 -2
- package/packages/dd-trace/src/debugger/config.js +1 -0
- 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 +3 -3
- 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/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 +1 -1
- package/packages/dd-trace/src/dogstatsd.js +3 -2
- package/packages/dd-trace/src/encode/0.4.js +1 -1
- 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 +1 -1
- package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +1 -1
- package/packages/dd-trace/src/exporters/common/request.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 +1 -1
- package/packages/dd-trace/src/guardrails/index.js +6 -3
- package/packages/dd-trace/src/id.js +1 -1
- package/packages/dd-trace/src/index.js +1 -1
- package/packages/dd-trace/src/lambda/handler.js +4 -4
- package/packages/dd-trace/src/lambda/index.js +1 -1
- package/packages/dd-trace/src/lambda/runtime/patch.js +4 -4
- package/packages/dd-trace/src/lambda/runtime/ritm.js +1 -1
- package/packages/dd-trace/src/llmobs/constants/tags.js +7 -1
- package/packages/dd-trace/src/llmobs/index.js +8 -9
- 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 +16 -1
- 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 +15 -22
- package/packages/dd-trace/src/llmobs/span_processor.js +9 -13
- package/packages/dd-trace/src/llmobs/telemetry.js +3 -4
- package/packages/dd-trace/src/llmobs/writers/base.js +2 -2
- package/packages/dd-trace/src/llmobs/writers/spans.js +1 -2
- package/packages/dd-trace/src/log/index.js +1 -1
- package/packages/dd-trace/src/noop/proxy.js +2 -2
- 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 +5 -5
- 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_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 +3 -3
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +24 -8
- package/packages/dd-trace/src/opentracing/span.js +3 -3
- 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 +1 -1
- 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 +1 -1
- 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 +24 -24
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +1 -1
- 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/profiling/config.js +32 -21
- package/packages/dd-trace/src/profiling/exporter_cli.js +4 -4
- package/packages/dd-trace/src/profiling/exporters/agent.js +5 -5
- 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 +4 -5
- 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 +12 -18
- 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 +50 -27
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +1 -1
- package/packages/dd-trace/src/serverless.js +16 -0
- 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 +2 -2
- 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 +3 -3
- package/packages/dd-trace/src/supported-configurations.json +3 -0
- package/packages/dd-trace/src/telemetry/dependencies.js +3 -3
- package/packages/dd-trace/src/telemetry/endpoints.js +8 -8
- package/packages/dd-trace/src/telemetry/logs/index.js +1 -1
- package/packages/dd-trace/src/telemetry/telemetry.js +11 -6
- 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
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
const { logs } = require('@opentelemetry/api-logs')
|
|
3
3
|
const { context } = require('@opentelemetry/api')
|
|
4
|
-
const Logger = require('./logger')
|
|
5
4
|
const log = require('../../log')
|
|
6
5
|
const ContextManager = require('../context_manager')
|
|
6
|
+
const Logger = require('./logger')
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* @typedef {import('@opentelemetry/api-logs').Logger} Logger
|
|
@@ -26,7 +26,7 @@ class LoggerProvider {
|
|
|
26
26
|
/**
|
|
27
27
|
* Creates a new LoggerProvider instance with a single processor for Datadog Agent export.
|
|
28
28
|
*
|
|
29
|
-
* @param {
|
|
29
|
+
* @param {object} [options] - LoggerProvider options
|
|
30
30
|
* @param {BatchLogRecordProcessor} [options.processor] - Single LogRecordProcessor instance for
|
|
31
31
|
* exporting logs to Datadog Agent
|
|
32
32
|
*/
|
|
@@ -40,9 +40,9 @@ class LoggerProvider {
|
|
|
40
40
|
/**
|
|
41
41
|
* Gets or creates a logger instance.
|
|
42
42
|
*
|
|
43
|
-
* @param {string|
|
|
43
|
+
* @param {string | object} nameOrOptions - Logger name or options object
|
|
44
44
|
* @param {string} [version] - Logger version (when nameOrOptions is a string)
|
|
45
|
-
* @param {
|
|
45
|
+
* @param {object} [options] - Additional options (when nameOrOptions is a string)
|
|
46
46
|
* @returns {Logger} Logger instance
|
|
47
47
|
*/
|
|
48
48
|
getLogger (nameOrOptions, version, options = {}) {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const OtlpTransformerBase = require('../otlp/otlp_transformer_base')
|
|
4
3
|
const { SeverityNumber } = require('@opentelemetry/api-logs')
|
|
5
|
-
const { getProtobufTypes } = require('../otlp/protobuf_loader')
|
|
6
4
|
const { trace } = require('@opentelemetry/api')
|
|
7
5
|
|
|
6
|
+
const OtlpTransformerBase = require('../otlp/otlp_transformer_base')
|
|
7
|
+
const { getProtobufTypes } = require('../otlp/protobuf_loader')
|
|
8
|
+
|
|
8
9
|
/**
|
|
9
10
|
* @typedef {import('@opentelemetry/api-logs').LogRecord} LogRecord
|
|
10
11
|
*/
|
|
@@ -105,7 +106,7 @@ class OtlpTransformer extends OtlpTransformerBase {
|
|
|
105
106
|
/**
|
|
106
107
|
* Creates scope logs grouped by instrumentation library.
|
|
107
108
|
* @param {LogRecord[]} logRecords - Array of log records to transform
|
|
108
|
-
* @returns {
|
|
109
|
+
* @returns {object[]} Array of scope log objects
|
|
109
110
|
*/
|
|
110
111
|
#transformScope (logRecords) {
|
|
111
112
|
const groupedRecords = this.groupByInstrumentationScope(logRecords)
|
|
@@ -131,7 +132,7 @@ class OtlpTransformer extends OtlpTransformerBase {
|
|
|
131
132
|
/**
|
|
132
133
|
* Transforms a single log record to OTLP format.
|
|
133
134
|
* @param {LogRecord} logRecord - Log record to transform
|
|
134
|
-
* @returns {
|
|
135
|
+
* @returns {object} OTLP log record object
|
|
135
136
|
*/
|
|
136
137
|
#transformLogRecord (logRecord) {
|
|
137
138
|
const spanContext = this.#extractSpanContext(logRecord.context)
|
|
@@ -176,8 +177,8 @@ class OtlpTransformer extends OtlpTransformerBase {
|
|
|
176
177
|
|
|
177
178
|
/**
|
|
178
179
|
* Extracts span context from the log record's context.
|
|
179
|
-
* @param {
|
|
180
|
-
* @returns {
|
|
180
|
+
* @param {object} logContext - The log record's context
|
|
181
|
+
* @returns {object | null} Span context or null if not available
|
|
181
182
|
*/
|
|
182
183
|
#extractSpanContext (logContext) {
|
|
183
184
|
if (!logContext) return null
|
|
@@ -214,8 +215,8 @@ class OtlpTransformer extends OtlpTransformerBase {
|
|
|
214
215
|
|
|
215
216
|
/**
|
|
216
217
|
* Transforms log body to OTLP AnyValue format.
|
|
217
|
-
* @param {
|
|
218
|
-
* @returns {
|
|
218
|
+
* @param {import('@opentelemetry/api-logs').LogBody} body - Log body to transform
|
|
219
|
+
* @returns {object} OTLP AnyValue object
|
|
219
220
|
*/
|
|
220
221
|
#transformBody (body) {
|
|
221
222
|
if (typeof body === 'string') {
|
|
@@ -9,7 +9,7 @@ const { METRIC_TYPES } = require('./constants')
|
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* @typedef {
|
|
12
|
+
* @typedef {object} Measurement
|
|
13
13
|
* @property {string} name - Instrument name
|
|
14
14
|
* @property {string} description - Instrument description
|
|
15
15
|
* @property {string} unit - Measurement unit
|
|
@@ -30,11 +30,11 @@ class Instrument {
|
|
|
30
30
|
* Creates a new instrument instance.
|
|
31
31
|
*
|
|
32
32
|
* @param {string} name - Instrument name (e.g., 'http.request.duration')
|
|
33
|
-
* @param {
|
|
33
|
+
* @param {object} options - Instrument configuration options
|
|
34
34
|
* @param {string} [options.description] - Human-readable description of the instrument
|
|
35
35
|
* @param {string} [options.unit] - Unit of measurement (e.g., 'ms', 'bytes', '1')
|
|
36
36
|
* @param {InstrumentationScope} instrumentationScope - Instrumentation scope for this instrument
|
|
37
|
-
* @param {
|
|
37
|
+
* @param {object} reader - Metric reader for recording measurements
|
|
38
38
|
*/
|
|
39
39
|
constructor (name, options, instrumentationScope, reader) {
|
|
40
40
|
this.name = name
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { VERSION: packageVersion } = require('../../../../../version')
|
|
4
|
+
const log = require('../../log')
|
|
4
5
|
const {
|
|
5
6
|
Counter, UpDownCounter, Histogram, Gauge, ObservableGauge, ObservableCounter, ObservableUpDownCounter
|
|
6
7
|
} = require('./instruments')
|
|
7
|
-
const log = require('../../log')
|
|
8
8
|
const { METRIC_TYPES } = require('./constants')
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -31,7 +31,7 @@ class Meter {
|
|
|
31
31
|
* @param {string} [instrumentationScope.name] - Meter name (defaults to 'dd-trace-js')
|
|
32
32
|
* @param {string} [instrumentationScope.version] - Meter version (defaults to tracer version)
|
|
33
33
|
* @param {string} [instrumentationScope.schemaUrl] - Schema URL
|
|
34
|
-
* @param {
|
|
34
|
+
* @param {object} [instrumentationScope.attributes] - Attributes for the instrumentation scope
|
|
35
35
|
*/
|
|
36
36
|
constructor (
|
|
37
37
|
meterProvider,
|
|
@@ -85,7 +85,7 @@ class OtlpTransformer extends OtlpTransformerBase {
|
|
|
85
85
|
* Creates scope metrics grouped by instrumentation scope.
|
|
86
86
|
* @param {Iterable<AggregatedMetric>} metrics - Iterable of metrics to transform
|
|
87
87
|
* @param {boolean} isJson - Whether to format for JSON output
|
|
88
|
-
* @returns {Array<
|
|
88
|
+
* @returns {Array<object>} Array of scope metric objects
|
|
89
89
|
*
|
|
90
90
|
*/
|
|
91
91
|
#transformScope (metrics, isJson = false) {
|
|
@@ -125,7 +125,7 @@ class OtlpTransformer extends OtlpTransformerBase {
|
|
|
125
125
|
*
|
|
126
126
|
* @param {AggregatedMetric} metric - The metric to transform
|
|
127
127
|
* @param {boolean} isJson - Whether to output JSON format (vs protobuf)
|
|
128
|
-
* @returns {
|
|
128
|
+
* @returns {object} - The metric transformed to OTLP protobuf or JSON format
|
|
129
129
|
*/
|
|
130
130
|
#transformMetric (metric, isJson = false) {
|
|
131
131
|
const result = {
|
|
@@ -176,7 +176,7 @@ class OtlpTransformer extends OtlpTransformerBase {
|
|
|
176
176
|
*
|
|
177
177
|
* @param {HistogramDataPoint} dp - The histogram data point to transform
|
|
178
178
|
* @param {boolean} isJson - Whether to output JSON format (vs protobuf)
|
|
179
|
-
* @returns {
|
|
179
|
+
* @returns {object} The histogram data point transformed to OTLP protobuf format
|
|
180
180
|
*/
|
|
181
181
|
#transformHistogramDataPoint (dp, isJson) {
|
|
182
182
|
const attributes = isJson
|
|
@@ -209,7 +209,7 @@ class OtlpTransformer extends OtlpTransformerBase {
|
|
|
209
209
|
*
|
|
210
210
|
* @param {NumberDataPoint} dataPoint - The number data point to transform
|
|
211
211
|
* @param {boolean} isJson - Whether to output JSON format (vs protobuf)
|
|
212
|
-
* @returns {
|
|
212
|
+
* @returns {object} The number data point transformed to OTLP protobuf format
|
|
213
213
|
*/
|
|
214
214
|
#transformNumberDataPoint (dataPoint, isJson) {
|
|
215
215
|
const attributes = isJson
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const log = require('../../log')
|
|
4
|
+
const { stableStringify } = require('../otlp/otlp_transformer_base')
|
|
3
5
|
const {
|
|
4
6
|
METRIC_TYPES, TEMPORALITY, DEFAULT_HISTOGRAM_BUCKETS, DEFAULT_MAX_MEASUREMENT_QUEUE_SIZE
|
|
5
7
|
} = require('./constants')
|
|
6
|
-
const log = require('../../log')
|
|
7
|
-
const { stableStringify } = require('../otlp/otlp_transformer_base')
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @typedef {import('@opentelemetry/api').Attributes} Attributes
|
|
@@ -13,7 +13,32 @@ const { stableStringify } = require('../otlp/otlp_transformer_base')
|
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
|
-
* @typedef {
|
|
16
|
+
* @typedef {{ value: number, startTime: number }} SumCumulativeState
|
|
17
|
+
*
|
|
18
|
+
* @typedef {{
|
|
19
|
+
* count: number,
|
|
20
|
+
* sum: number,
|
|
21
|
+
* min: number,
|
|
22
|
+
* max: number,
|
|
23
|
+
* bucketCounts: number[],
|
|
24
|
+
* startTime: number
|
|
25
|
+
* }} HistogramCumulativeState
|
|
26
|
+
*
|
|
27
|
+
* @typedef {SumCumulativeState | HistogramCumulativeState} CumulativeStateValue
|
|
28
|
+
*
|
|
29
|
+
* @typedef {{
|
|
30
|
+
* count: number,
|
|
31
|
+
* sum: number,
|
|
32
|
+
* min?: number,
|
|
33
|
+
* max?: number,
|
|
34
|
+
* bucketCounts: number[]
|
|
35
|
+
* }} HistogramLastExportedState
|
|
36
|
+
*
|
|
37
|
+
* @typedef {number | HistogramLastExportedState} LastExportedStateValue
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @typedef {object} NumberDataPoint
|
|
17
42
|
* @property {Attributes} attributes - Number data point metric attributes
|
|
18
43
|
* @property {string} attrKey - Stable stringified key for attributes
|
|
19
44
|
* @property {number} timeUnixNano - Timestamp in nanoseconds
|
|
@@ -22,7 +47,7 @@ const { stableStringify } = require('../otlp/otlp_transformer_base')
|
|
|
22
47
|
*/
|
|
23
48
|
|
|
24
49
|
/**
|
|
25
|
-
* @typedef {
|
|
50
|
+
* @typedef {object} HistogramDataPoint
|
|
26
51
|
* @property {Attributes} attributes - Histogram data point metric attributes
|
|
27
52
|
* @property {string} attrKey - Stable stringified key for attributes
|
|
28
53
|
* @property {number} timeUnixNano - Timestamp in nanoseconds
|
|
@@ -36,7 +61,7 @@ const { stableStringify } = require('../otlp/otlp_transformer_base')
|
|
|
36
61
|
*/
|
|
37
62
|
|
|
38
63
|
/**
|
|
39
|
-
* @typedef {
|
|
64
|
+
* @typedef {object} AggregatedMetricDataPoint
|
|
40
65
|
* @property {Attributes} attributes - Aggregated metric data point metric attributes
|
|
41
66
|
* @property {string} attrKey - Stable stringified key for attributes
|
|
42
67
|
* @property {number} timeUnixNano - Timestamp in nanoseconds
|
|
@@ -50,7 +75,7 @@ const { stableStringify } = require('../otlp/otlp_transformer_base')
|
|
|
50
75
|
*/
|
|
51
76
|
|
|
52
77
|
/**
|
|
53
|
-
* @typedef {
|
|
78
|
+
* @typedef {object} AggregatedMetric
|
|
54
79
|
* @property {string} name - Metric name
|
|
55
80
|
* @property {string} description - Metric description
|
|
56
81
|
* @property {string} unit - Metric unit
|
|
@@ -255,8 +280,8 @@ class MetricAggregator {
|
|
|
255
280
|
* Aggregates measurements into metrics.
|
|
256
281
|
*
|
|
257
282
|
* @param {Measurement[]} measurements - The measurements to aggregate
|
|
258
|
-
* @param {Map<string,
|
|
259
|
-
* @param {Map<string,
|
|
283
|
+
* @param {Map<string, CumulativeStateValue>} cumulativeState - The cumulative state of the metrics
|
|
284
|
+
* @param {Map<string, LastExportedStateValue>} lastExportedState - The last exported state of the metrics
|
|
260
285
|
* @returns {Iterable<AggregatedMetric>} The aggregated metrics
|
|
261
286
|
*/
|
|
262
287
|
aggregate (measurements, cumulativeState, lastExportedState) {
|
|
@@ -353,7 +378,7 @@ class MetricAggregator {
|
|
|
353
378
|
* Applies delta temporality to the metrics.
|
|
354
379
|
*
|
|
355
380
|
* @param {Iterable<AggregatedMetric>} metrics - The metrics to apply delta temporality to
|
|
356
|
-
* @param {Map<string,
|
|
381
|
+
* @param {Map<string, LastExportedStateValue>} lastExportedState - The last exported state of the metrics
|
|
357
382
|
* @returns {void}
|
|
358
383
|
*/
|
|
359
384
|
#applyDeltaTemporality (metrics, lastExportedState) {
|
|
@@ -424,7 +449,7 @@ class MetricAggregator {
|
|
|
424
449
|
* @param {string} attrKey - The attribute key
|
|
425
450
|
* @param {number} timestamp - The timestamp of the measurement
|
|
426
451
|
* @param {string} stateKey - The state key
|
|
427
|
-
* @param {Map<string,
|
|
452
|
+
* @param {Map<string, CumulativeStateValue>} cumulativeState - The cumulative state of the metrics
|
|
428
453
|
*/
|
|
429
454
|
#aggregateSum (metric, value, attributes, attrKey, timestamp, stateKey, cumulativeState) {
|
|
430
455
|
if (!cumulativeState.has(stateKey)) {
|
|
@@ -478,7 +503,7 @@ class MetricAggregator {
|
|
|
478
503
|
* @param {string} attrKey - The attribute key
|
|
479
504
|
* @param {number} timestamp - The timestamp of the measurement
|
|
480
505
|
* @param {string} stateKey - The state key
|
|
481
|
-
* @param {Map<string,
|
|
506
|
+
* @param {Map<string, CumulativeStateValue>} cumulativeState - The cumulative state of the metrics
|
|
482
507
|
* @returns {void}
|
|
483
508
|
*/
|
|
484
509
|
#aggregateHistogram (metric, value, attributes, attrKey, timestamp, stateKey, cumulativeState) {
|
|
@@ -4,6 +4,7 @@ const log = require('../../log')
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @typedef {import('@opentelemetry/api').Attributes} Attributes
|
|
7
|
+
* @typedef {import('@opentelemetry/api').AttributeValue} AttributeValue
|
|
7
8
|
*/
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -61,7 +62,7 @@ class OtlpTransformerBase {
|
|
|
61
62
|
|
|
62
63
|
/**
|
|
63
64
|
* Transforms resource attributes to OTLP resource format.
|
|
64
|
-
* @returns {
|
|
65
|
+
* @returns {object} OTLP resource object
|
|
65
66
|
* @protected
|
|
66
67
|
*/
|
|
67
68
|
transformResource () {
|
|
@@ -73,8 +74,8 @@ class OtlpTransformerBase {
|
|
|
73
74
|
|
|
74
75
|
/**
|
|
75
76
|
* Transforms attributes to OTLP KeyValue format.
|
|
76
|
-
* @param {
|
|
77
|
-
* @returns {
|
|
77
|
+
* @param {Attributes} attributes - Attributes to transform
|
|
78
|
+
* @returns {object[]} Array of OTLP KeyValue objects
|
|
78
79
|
* @protected
|
|
79
80
|
*/
|
|
80
81
|
transformAttributes (attributes) {
|
|
@@ -86,8 +87,8 @@ class OtlpTransformerBase {
|
|
|
86
87
|
|
|
87
88
|
/**
|
|
88
89
|
* Transforms attributes to JSON format (simplified).
|
|
89
|
-
* @param {
|
|
90
|
-
* @returns {
|
|
90
|
+
* @param {object} attributes - Attributes to transform
|
|
91
|
+
* @returns {object[]} Array of OTLP KeyValue objects with string values
|
|
91
92
|
* @protected
|
|
92
93
|
*/
|
|
93
94
|
attributesToJson (attributes) {
|
|
@@ -103,8 +104,8 @@ class OtlpTransformerBase {
|
|
|
103
104
|
* Transforms any value to OTLP AnyValue format.
|
|
104
105
|
* Supports: strings, numbers (int/double), booleans, arrays.
|
|
105
106
|
* Objects are filtered out by sanitizeAttributes before reaching this method.
|
|
106
|
-
* @param {
|
|
107
|
-
* @returns {
|
|
107
|
+
* @param {AttributeValue | null | undefined} value - Value to transform
|
|
108
|
+
* @returns {object} OTLP AnyValue object
|
|
108
109
|
* @protected
|
|
109
110
|
*/
|
|
110
111
|
transformAnyValue (value) {
|
|
@@ -130,8 +131,8 @@ class OtlpTransformerBase {
|
|
|
130
131
|
|
|
131
132
|
/**
|
|
132
133
|
* Serializes data to protobuf format.
|
|
133
|
-
* @param {
|
|
134
|
-
* @param {
|
|
134
|
+
* @param {object} protoType - Protobuf type from protobuf_loader
|
|
135
|
+
* @param {object} data - Data to serialize
|
|
135
136
|
* @returns {Buffer} Protobuf-encoded data
|
|
136
137
|
* @protected
|
|
137
138
|
*/
|
|
@@ -143,7 +144,7 @@ class OtlpTransformerBase {
|
|
|
143
144
|
|
|
144
145
|
/**
|
|
145
146
|
* Serializes data to JSON format.
|
|
146
|
-
* @param {
|
|
147
|
+
* @param {object} data - Data to serialize
|
|
147
148
|
* @returns {Buffer} JSON-encoded data
|
|
148
149
|
* @protected
|
|
149
150
|
*/
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
* - https://github.com/open-telemetry/opentelemetry-proto (v1.7.0)
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
-
const protobuf = require('../../../../../vendor/dist/protobufjs')
|
|
18
17
|
const path = require('path')
|
|
18
|
+
const protobuf = require('../../../../../vendor/dist/protobufjs')
|
|
19
19
|
|
|
20
20
|
let _root = null
|
|
21
21
|
let protoLogsService = null
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const { performance } = require('perf_hooks')
|
|
3
4
|
const api = require('@opentelemetry/api')
|
|
4
5
|
|
|
5
|
-
const { performance } = require('perf_hooks')
|
|
6
6
|
const { timeOrigin } = performance
|
|
7
7
|
|
|
8
8
|
const { timeInputToHrTime } = require('../../../../vendor/dist/@opentelemetry/core')
|
|
@@ -13,8 +13,8 @@ const { ERROR_MESSAGE, ERROR_TYPE, ERROR_STACK, IGNORE_OTEL_ERROR } = require('.
|
|
|
13
13
|
const { SERVICE_NAME, RESOURCE_NAME, SPAN_KIND } = require('../../../../ext/tags')
|
|
14
14
|
const kinds = require('../../../../ext/kinds')
|
|
15
15
|
|
|
16
|
-
const SpanContext = require('./span_context')
|
|
17
16
|
const id = require('../id')
|
|
17
|
+
const SpanContext = require('./span_context')
|
|
18
18
|
|
|
19
19
|
// The one built into OTel rounds so we lose sub-millisecond precision.
|
|
20
20
|
function hrTimeToMilliseconds (time) {
|
|
@@ -3,13 +3,13 @@
|
|
|
3
3
|
const api = require('@opentelemetry/api')
|
|
4
4
|
const { sanitizeAttributes } = require('../../../../vendor/dist/@opentelemetry/core')
|
|
5
5
|
|
|
6
|
-
const Sampler = require('./sampler')
|
|
7
|
-
const Span = require('./span')
|
|
8
6
|
const id = require('../id')
|
|
9
7
|
const log = require('../log')
|
|
10
|
-
const SpanContext = require('./span_context')
|
|
11
8
|
const TextMapPropagator = require('../opentracing/propagation/text_map')
|
|
12
9
|
const TraceState = require('../opentracing/propagation/tracestate')
|
|
10
|
+
const SpanContext = require('./span_context')
|
|
11
|
+
const Span = require('./span')
|
|
12
|
+
const Sampler = require('./sampler')
|
|
13
13
|
|
|
14
14
|
class Tracer {
|
|
15
15
|
constructor (library, config, tracerProvider) {
|
|
@@ -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
|
|
|
@@ -36,6 +36,9 @@ const b3HeaderExpr = /^(([0-9a-f]{16}){1,2}-[0-9a-f]{16}(-[01d](-[0-9a-f]{16})?)
|
|
|
36
36
|
const baggageExpr = new RegExp(`^${baggagePrefix}(.+)$`)
|
|
37
37
|
const tagKeyExpr = /^_dd\.p\.[\x21-\x2B\x2D-\x7E]+$/ // ASCII minus spaces and commas
|
|
38
38
|
const tagValueExpr = /^[\x20-\x2B\x2D-\x7E]*$/ // ASCII minus commas
|
|
39
|
+
// RFC7230 token (used by HTTP header field-name) and compatible with Node's header name validation.
|
|
40
|
+
// See https://www.rfc-editor.org/rfc/rfc7230#section-3.2.6
|
|
41
|
+
const httpHeaderNameExpr = /^[0-9A-Za-z!#$%&'*+\-.^_`|~]+$/
|
|
39
42
|
const traceparentExpr = /^([a-f0-9]{2})-([a-f0-9]{32})-([a-f0-9]{16})-([a-f0-9]{2})(-.*)?$/i
|
|
40
43
|
const traceparentKey = 'traceparent'
|
|
41
44
|
const tracestateKey = 'tracestate'
|
|
@@ -130,9 +133,21 @@ class TextMapPropagator {
|
|
|
130
133
|
|
|
131
134
|
_injectBaggageItems (spanContext, carrier) {
|
|
132
135
|
if (this._config.legacyBaggageEnabled) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
+
const baggageItems = spanContext?._baggageItems
|
|
137
|
+
if (baggageItems) {
|
|
138
|
+
for (const key of Object.keys(baggageItems)) {
|
|
139
|
+
const headerName = baggagePrefix + key
|
|
140
|
+
|
|
141
|
+
// Legacy OpenTracing baggage is propagated as individual headers (ot-baggage-*),
|
|
142
|
+
// so it must always be representable as a valid HTTP header name.
|
|
143
|
+
if (!httpHeaderNameExpr.test(headerName)) {
|
|
144
|
+
tracerMetrics.count('context_header_style.malformed', ['header_style:baggage']).inc()
|
|
145
|
+
continue
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
carrier[headerName] = String(baggageItems[key])
|
|
149
|
+
}
|
|
150
|
+
}
|
|
136
151
|
}
|
|
137
152
|
if (this._hasPropagationStyle('inject', 'baggage')) {
|
|
138
153
|
let baggage = ''
|
|
@@ -646,9 +661,10 @@ class TextMapPropagator {
|
|
|
646
661
|
|
|
647
662
|
_extractBaggageItems (carrier, spanContext) {
|
|
648
663
|
if (!this._hasPropagationStyle('extract', 'baggage')) return
|
|
649
|
-
if (!carrier
|
|
664
|
+
if (!carrier?.baggage) return
|
|
650
665
|
const baggages = carrier.baggage.split(',')
|
|
651
|
-
const
|
|
666
|
+
const tagAllKeys = this._config.baggageTagKeys === '*'
|
|
667
|
+
const keysToSpanTag = tagAllKeys
|
|
652
668
|
? undefined
|
|
653
669
|
: new Set(this._config.baggageTagKeys.split(','))
|
|
654
670
|
for (const keyValue of baggages) {
|
|
@@ -665,7 +681,7 @@ class TextMapPropagator {
|
|
|
665
681
|
removeAllBaggageItems()
|
|
666
682
|
return
|
|
667
683
|
}
|
|
668
|
-
if (spanContext && (
|
|
684
|
+
if (spanContext && (tagAllKeys || keysToSpanTag?.has(key))) {
|
|
669
685
|
spanContext._trace.tags['baggage.' + key] = value
|
|
670
686
|
}
|
|
671
687
|
setBaggageItem(key, value)
|
|
@@ -4,16 +4,16 @@
|
|
|
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 { channel } = require('dc-polyfill')
|
|
15
|
-
const util = require('util')
|
|
16
15
|
const { getEnvironmentVariable } = require('../config-helper')
|
|
16
|
+
const SpanContext = require('./span_context')
|
|
17
17
|
|
|
18
18
|
const tracerMetrics = telemetryMetrics.manager.namespace('tracers')
|
|
19
19
|
|
|
@@ -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,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { channel } = require('dc-polyfill')
|
|
4
|
+
const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
|
|
4
5
|
const { isFalse, isTrue, normalizePluginEnvName } = require('./util')
|
|
5
6
|
const plugins = require('./plugins')
|
|
6
7
|
const log = require('./log')
|
|
7
|
-
const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
|
|
8
8
|
|
|
9
9
|
// Test optimization plugins that should only be enabled when isCiVisibility is true
|
|
10
10
|
const TEST_OPTIMIZATION_PLUGINS = new Set([
|
|
@@ -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',
|