dd-trace 5.53.0 → 5.55.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 +2 -1
- package/ci/cypress/plugin.js +8 -0
- package/ci/cypress/polyfills.js +23 -0
- package/ci/init.js +8 -7
- package/index.d.ts +33 -16
- package/initialize.mjs +5 -6
- package/package.json +40 -38
- package/packages/datadog-code-origin/index.js +22 -4
- package/packages/datadog-core/src/utils/src/get.js +1 -1
- package/packages/datadog-core/src/utils/src/has.js +1 -1
- package/packages/datadog-core/src/utils/src/kebabcase.js +4 -6
- package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
- package/packages/datadog-core/src/utils/src/pick.js +2 -2
- package/packages/datadog-core/src/utils/src/set.js +1 -1
- package/packages/datadog-core/src/utils/src/uniq.js +1 -1
- package/packages/datadog-instrumentations/src/amqp10.js +19 -17
- package/packages/datadog-instrumentations/src/amqplib.js +52 -35
- package/packages/datadog-instrumentations/src/apollo.js +2 -2
- package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
- package/packages/datadog-instrumentations/src/cassandra-driver.js +10 -10
- package/packages/datadog-instrumentations/src/child_process.js +1 -2
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +89 -75
- package/packages/datadog-instrumentations/src/cookie-parser.js +1 -1
- package/packages/datadog-instrumentations/src/couchbase.js +6 -9
- package/packages/datadog-instrumentations/src/cucumber.js +108 -68
- package/packages/datadog-instrumentations/src/cypress.js +2 -1
- package/packages/datadog-instrumentations/src/dns.js +5 -5
- package/packages/datadog-instrumentations/src/elasticsearch.js +9 -10
- package/packages/datadog-instrumentations/src/fastify.js +7 -9
- package/packages/datadog-instrumentations/src/fs.js +1 -1
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +35 -43
- package/packages/datadog-instrumentations/src/graphql.js +7 -10
- package/packages/datadog-instrumentations/src/grpc/client.js +11 -23
- package/packages/datadog-instrumentations/src/grpc/server.js +7 -20
- package/packages/datadog-instrumentations/src/hapi.js +10 -11
- package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +16 -10
- package/packages/datadog-instrumentations/src/helpers/fetch.js +4 -5
- package/packages/datadog-instrumentations/src/helpers/hook.js +2 -3
- package/packages/datadog-instrumentations/src/helpers/hooks.js +0 -1
- package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -41
- package/packages/datadog-instrumentations/src/helpers/register.js +11 -12
- package/packages/datadog-instrumentations/src/http/client.js +14 -20
- package/packages/datadog-instrumentations/src/jest.js +201 -143
- package/packages/datadog-instrumentations/src/kafkajs.js +52 -44
- package/packages/datadog-instrumentations/src/knex.js +4 -4
- package/packages/datadog-instrumentations/src/koa.js +2 -3
- package/packages/datadog-instrumentations/src/ldapjs.js +3 -4
- package/packages/datadog-instrumentations/src/mariadb.js +49 -65
- package/packages/datadog-instrumentations/src/mocha/main.js +116 -73
- package/packages/datadog-instrumentations/src/mocha/utils.js +36 -12
- package/packages/datadog-instrumentations/src/mocha/worker.js +6 -0
- package/packages/datadog-instrumentations/src/mocha.js +3 -1
- package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
- package/packages/datadog-instrumentations/src/mysql.js +30 -37
- package/packages/datadog-instrumentations/src/mysql2.js +53 -47
- package/packages/datadog-instrumentations/src/net.js +1 -1
- package/packages/datadog-instrumentations/src/next.js +1 -0
- package/packages/datadog-instrumentations/src/nyc.js +3 -2
- package/packages/datadog-instrumentations/src/openai.js +22 -24
- package/packages/datadog-instrumentations/src/oracledb.js +1 -1
- package/packages/datadog-instrumentations/src/otel-sdk-trace.js +4 -3
- package/packages/datadog-instrumentations/src/pg.js +3 -5
- package/packages/datadog-instrumentations/src/playwright.js +123 -83
- package/packages/datadog-instrumentations/src/protobufjs.js +3 -4
- package/packages/datadog-instrumentations/src/redis.js +4 -4
- package/packages/datadog-instrumentations/src/restify.js +9 -13
- package/packages/datadog-instrumentations/src/rhea.js +42 -54
- package/packages/datadog-instrumentations/src/router.js +30 -32
- package/packages/datadog-instrumentations/src/tedious.js +2 -3
- package/packages/datadog-instrumentations/src/vitest.js +87 -52
- package/packages/datadog-plugin-amqp10/src/consumer.js +7 -3
- package/packages/datadog-plugin-amqp10/src/producer.js +7 -3
- package/packages/datadog-plugin-amqplib/src/client.js +6 -2
- package/packages/datadog-plugin-amqplib/src/consumer.js +7 -3
- package/packages/datadog-plugin-amqplib/src/producer.js +7 -3
- package/packages/datadog-plugin-amqplib/src/util.js +1 -1
- package/packages/datadog-plugin-apollo/src/gateway/request.js +5 -6
- package/packages/datadog-plugin-apollo/src/gateway/validate.js +2 -3
- package/packages/datadog-plugin-avsc/src/schema_iterator.js +12 -12
- package/packages/datadog-plugin-aws-sdk/src/base.js +15 -10
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +13 -13
- package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +3 -5
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +28 -43
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +10 -11
- package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +4 -6
- package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +3 -5
- package/packages/datadog-plugin-aws-sdk/src/services/s3.js +3 -5
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +2 -3
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +11 -15
- package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/util.js +5 -6
- package/packages/datadog-plugin-cassandra-driver/src/index.js +1 -1
- package/packages/datadog-plugin-child_process/src/index.js +4 -4
- package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +23 -23
- package/packages/datadog-plugin-cucumber/src/index.js +60 -4
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +99 -28
- package/packages/datadog-plugin-cypress/src/plugin.js +11 -1
- package/packages/datadog-plugin-cypress/src/support.js +24 -5
- package/packages/datadog-plugin-dd-trace-api/src/index.js +2 -1
- package/packages/datadog-plugin-elasticsearch/src/index.js +1 -1
- package/packages/datadog-plugin-express/src/code_origin.js +30 -0
- package/packages/datadog-plugin-express/src/index.js +10 -12
- package/packages/datadog-plugin-express/src/tracing.js +19 -0
- package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +7 -3
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +12 -7
- package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +6 -2
- package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +27 -10
- package/packages/datadog-plugin-graphql/src/execute.js +2 -2
- package/packages/datadog-plugin-graphql/src/index.js +10 -8
- package/packages/datadog-plugin-graphql/src/resolve.js +19 -12
- package/packages/datadog-plugin-graphql/src/tools/index.js +1 -0
- package/packages/datadog-plugin-graphql/src/tools/signature.js +1 -0
- package/packages/datadog-plugin-graphql/src/tools/transforms.js +1 -0
- package/packages/datadog-plugin-grpc/src/client.js +2 -2
- package/packages/datadog-plugin-grpc/src/util.js +2 -2
- package/packages/datadog-plugin-http/src/client.js +23 -13
- package/packages/datadog-plugin-http2/src/client.js +24 -25
- package/packages/datadog-plugin-jest/src/index.js +26 -23
- package/packages/datadog-plugin-jest/src/util.js +8 -8
- package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +3 -1
- package/packages/datadog-plugin-kafkajs/src/consumer.js +9 -5
- package/packages/datadog-plugin-kafkajs/src/producer.js +8 -3
- package/packages/datadog-plugin-kafkajs/src/utils.js +1 -1
- package/packages/datadog-plugin-langchain/src/handlers/chain.js +7 -7
- package/packages/datadog-plugin-langchain/src/handlers/embedding.js +2 -2
- package/packages/datadog-plugin-langchain/src/handlers/language_models/chat_model.js +6 -4
- package/packages/datadog-plugin-langchain/src/handlers/language_models/llm.js +5 -4
- package/packages/datadog-plugin-langchain/src/tracing.js +11 -10
- package/packages/datadog-plugin-mariadb/src/index.js +3 -9
- package/packages/datadog-plugin-mocha/src/index.js +39 -14
- package/packages/datadog-plugin-mongodb-core/src/index.js +3 -2
- package/packages/datadog-plugin-mysql/src/index.js +22 -9
- package/packages/datadog-plugin-mysql2/src/index.js +16 -0
- package/packages/datadog-plugin-net/src/tcp.js +1 -1
- package/packages/datadog-plugin-next/src/index.js +7 -6
- package/packages/datadog-plugin-openai/src/services.js +6 -10
- package/packages/datadog-plugin-openai/src/tracing.js +12 -18
- package/packages/datadog-plugin-oracledb/src/index.js +1 -1
- package/packages/datadog-plugin-playwright/src/index.js +25 -4
- package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +8 -9
- package/packages/datadog-plugin-redis/src/index.js +2 -4
- package/packages/datadog-plugin-rhea/src/consumer.js +8 -6
- package/packages/datadog-plugin-rhea/src/producer.js +5 -2
- package/packages/datadog-plugin-router/src/index.js +1 -1
- package/packages/datadog-plugin-selenium/src/index.js +1 -6
- package/packages/datadog-plugin-vitest/src/index.js +52 -35
- package/packages/datadog-shimmer/src/shimmer.js +4 -8
- package/packages/dd-trace/src/appsec/api_security_sampler.js +2 -2
- package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
- package/packages/dd-trace/src/appsec/blocking.js +6 -20
- package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hsts-header-missing-analyzer.js +7 -12
- package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +5 -8
- package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +4 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +9 -12
- package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +5 -4
- package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +2 -3
- package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
- package/packages/dd-trace/src/appsec/iast/index.js +1 -0
- package/packages/dd-trace/src/appsec/iast/overhead-controller.js +102 -7
- package/packages/dd-trace/src/appsec/iast/path-line.js +7 -8
- package/packages/dd-trace/src/appsec/iast/security-controls/index.js +16 -24
- package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +6 -6
- package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +2 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +3 -3
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +4 -28
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +2 -8
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +3 -4
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +7 -8
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -2
- package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +7 -7
- package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +2 -3
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/range-utils.js +10 -11
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/command-sensitive-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/ldap-sensitive-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +7 -7
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +23 -28
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +3 -3
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +4 -4
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +6 -11
- package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +0 -1
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +9 -11
- package/packages/dd-trace/src/appsec/index.js +5 -5
- package/packages/dd-trace/src/appsec/rasp/index.js +15 -15
- package/packages/dd-trace/src/appsec/rasp/lfi.js +2 -1
- package/packages/dd-trace/src/appsec/reporter.js +232 -41
- package/packages/dd-trace/src/appsec/rule_manager.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/set_user.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/track_event.js +3 -3
- package/packages/dd-trace/src/appsec/stack_trace.js +2 -4
- package/packages/dd-trace/src/appsec/telemetry/index.js +31 -1
- package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -5
- package/packages/dd-trace/src/appsec/telemetry/waf.js +3 -5
- package/packages/dd-trace/src/appsec/user_tracking.js +3 -5
- package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +8 -4
- package/packages/dd-trace/src/azure_metadata.js +9 -9
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +9 -8
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +2 -2
- package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +3 -3
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +6 -4
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +6 -5
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +7 -6
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +0 -2
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +3 -2
- package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +5 -4
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +12 -8
- package/packages/dd-trace/src/ci-visibility/telemetry.js +4 -0
- package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +3 -2
- package/packages/dd-trace/src/config-helper.js +89 -0
- package/packages/dd-trace/src/config.js +159 -129
- package/packages/dd-trace/src/config_stable.js +10 -7
- package/packages/dd-trace/src/datastreams/encoding.js +9 -9
- package/packages/dd-trace/src/datastreams/fnv.js +2 -2
- package/packages/dd-trace/src/datastreams/pathway.js +4 -4
- package/packages/dd-trace/src/datastreams/processor.js +5 -7
- package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +7 -7
- package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +4 -6
- package/packages/dd-trace/src/datastreams/size.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +75 -69
- package/packages/dd-trace/src/debugger/devtools_client/condition.js +7 -10
- package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/index.js +9 -2
- package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +18 -38
- package/packages/dd-trace/src/debugger/devtools_client/send.js +3 -2
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +1 -2
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +11 -14
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +4 -4
- package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +2 -10
- package/packages/dd-trace/src/debugger/devtools_client/state.js +10 -3
- package/packages/dd-trace/src/debugger/index.js +1 -0
- package/packages/dd-trace/src/dogstatsd.js +7 -6
- package/packages/dd-trace/src/encode/0.4.js +14 -11
- package/packages/dd-trace/src/encode/0.5.js +4 -6
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +8 -8
- package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
- package/packages/dd-trace/src/encode/tags-processors.js +1 -1
- package/packages/dd-trace/src/exporter.js +7 -6
- package/packages/dd-trace/src/exporters/agent/writer.js +1 -5
- package/packages/dd-trace/src/exporters/common/docker.js +4 -3
- package/packages/dd-trace/src/exporters/common/form-data.js +6 -4
- package/packages/dd-trace/src/exporters/common/request.js +5 -2
- package/packages/dd-trace/src/exporters/common/util.js +4 -2
- package/packages/dd-trace/src/external-logger/src/index.js +5 -5
- package/packages/dd-trace/src/flare/file.js +1 -5
- package/packages/dd-trace/src/format.js +1 -1
- package/packages/dd-trace/src/git_properties.js +1 -1
- package/packages/dd-trace/src/id.js +15 -9
- package/packages/dd-trace/src/iitm.js +10 -22
- package/packages/dd-trace/src/index.js +4 -3
- package/packages/dd-trace/src/lambda/handler.js +7 -6
- package/packages/dd-trace/src/lambda/index.js +2 -1
- package/packages/dd-trace/src/lambda/runtime/patch.js +7 -6
- package/packages/dd-trace/src/lambda/runtime/ritm.js +4 -3
- package/packages/dd-trace/src/llmobs/constants/tags.js +1 -0
- package/packages/dd-trace/src/llmobs/index.js +21 -5
- package/packages/dd-trace/src/llmobs/noop.js +18 -20
- package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +6 -6
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +2 -6
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +3 -3
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +11 -13
- package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +6 -6
- package/packages/dd-trace/src/llmobs/plugins/openai.js +2 -3
- package/packages/dd-trace/src/llmobs/sdk.js +4 -3
- package/packages/dd-trace/src/llmobs/span_processor.js +1 -1
- package/packages/dd-trace/src/llmobs/tagger.js +129 -102
- package/packages/dd-trace/src/llmobs/util.js +9 -9
- package/packages/dd-trace/src/llmobs/writers/base.js +1 -1
- package/packages/dd-trace/src/llmobs/writers/util.js +1 -1
- package/packages/dd-trace/src/log/index.js +9 -8
- package/packages/dd-trace/src/log/log.js +1 -1
- package/packages/dd-trace/src/log/writer.js +3 -4
- package/packages/dd-trace/src/msgpack/chunk.js +3 -3
- package/packages/dd-trace/src/msgpack/encoder.js +31 -31
- package/packages/dd-trace/src/noop/dogstatsd.js +6 -6
- package/packages/dd-trace/src/noop/span.js +4 -6
- package/packages/dd-trace/src/noop/tracer.js +1 -2
- package/packages/dd-trace/src/opentelemetry/span_processor.js +2 -2
- package/packages/dd-trace/src/opentelemetry/tracer.js +7 -6
- package/packages/dd-trace/src/opentracing/propagation/log.js +10 -13
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +40 -37
- package/packages/dd-trace/src/opentracing/propagation/tracestate.js +8 -4
- package/packages/dd-trace/src/opentracing/span.js +16 -20
- package/packages/dd-trace/src/opentracing/tracer.js +9 -6
- package/packages/dd-trace/src/payload-tagging/config/index.js +17 -21
- package/packages/dd-trace/src/payload-tagging/index.js +1 -1
- package/packages/dd-trace/src/payload-tagging/tagging.js +6 -6
- package/packages/dd-trace/src/pkg.js +1 -1
- package/packages/dd-trace/src/plugin_manager.js +4 -3
- package/packages/dd-trace/src/plugins/ci_plugin.js +87 -11
- package/packages/dd-trace/src/plugins/consumer.js +2 -2
- package/packages/dd-trace/src/plugins/inbound.js +5 -1
- package/packages/dd-trace/src/plugins/index.js +0 -1
- package/packages/dd-trace/src/plugins/outbound.js +4 -5
- package/packages/dd-trace/src/plugins/plugin.js +1 -1
- package/packages/dd-trace/src/plugins/producer.js +2 -2
- package/packages/dd-trace/src/plugins/storage.js +2 -2
- package/packages/dd-trace/src/plugins/util/ci.js +28 -20
- package/packages/dd-trace/src/plugins/util/git.js +166 -12
- package/packages/dd-trace/src/plugins/util/inferred_proxy.js +1 -1
- package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -1
- package/packages/dd-trace/src/plugins/util/llm.js +27 -10
- package/packages/dd-trace/src/plugins/util/stacktrace.js +9 -2
- package/packages/dd-trace/src/plugins/util/test.js +315 -51
- package/packages/dd-trace/src/plugins/util/url.js +1 -1
- package/packages/dd-trace/src/plugins/util/urlfilter.js +13 -17
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +14 -4
- package/packages/dd-trace/src/plugins/util/web.js +8 -8
- package/packages/dd-trace/src/priority_sampler.js +64 -53
- package/packages/dd-trace/src/profiling/config.js +51 -35
- package/packages/dd-trace/src/profiling/exporter_cli.js +20 -20
- package/packages/dd-trace/src/profiling/exporters/agent.js +1 -1
- package/packages/dd-trace/src/profiling/exporters/event_serializer.js +7 -6
- package/packages/dd-trace/src/profiling/exporters/file.js +2 -1
- package/packages/dd-trace/src/profiling/index.js +2 -1
- package/packages/dd-trace/src/profiling/profiler.js +44 -6
- package/packages/dd-trace/src/profiling/profilers/events.js +14 -17
- package/packages/dd-trace/src/profiling/profilers/shared.js +6 -1
- package/packages/dd-trace/src/profiling/profilers/space.js +3 -3
- package/packages/dd-trace/src/profiling/profilers/wall.js +6 -7
- package/packages/dd-trace/src/profiling/ssi-heuristics.js +3 -5
- package/packages/dd-trace/src/profiling/ssi-telemetry-mock-profiler.js +3 -1
- package/packages/dd-trace/src/profiling/tagger.js +21 -13
- package/packages/dd-trace/src/profiling/webspan-utils.js +1 -1
- package/packages/dd-trace/src/proxy.js +9 -10
- package/packages/dd-trace/src/random_sampler.js +40 -0
- package/packages/dd-trace/src/rate_limiter.js +4 -4
- package/packages/dd-trace/src/remote_config/index.js +3 -7
- package/packages/dd-trace/src/remote_config/manager.js +25 -13
- package/packages/dd-trace/src/require-package-json.js +1 -1
- package/packages/dd-trace/src/ritm.js +8 -8
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +5 -4
- package/packages/dd-trace/src/sampler.js +41 -4
- package/packages/dd-trace/src/sampling_rule.js +12 -3
- package/packages/dd-trace/src/scope.js +1 -1
- package/packages/dd-trace/src/serverless.js +11 -4
- package/packages/dd-trace/src/service-naming/schemas/util.js +1 -1
- package/packages/dd-trace/src/service-naming/schemas/v0/web.js +2 -3
- package/packages/dd-trace/src/span_processor.js +5 -4
- package/packages/dd-trace/src/span_sampler.js +4 -1
- package/packages/dd-trace/src/standalone/tracesource.js +2 -3
- package/packages/dd-trace/src/standalone/tracesource_priority_sampler.js +1 -2
- package/packages/dd-trace/src/startup-log.js +6 -18
- package/packages/dd-trace/src/supported-configurations.json +439 -0
- package/packages/dd-trace/src/telemetry/dependencies.js +64 -59
- package/packages/dd-trace/src/telemetry/logs/log-collector.js +9 -10
- package/packages/dd-trace/src/telemetry/metrics.js +10 -5
- package/packages/dd-trace/src/telemetry/send-data.js +8 -7
- package/packages/dd-trace/src/telemetry/telemetry.js +31 -45
- package/packages/dd-trace/src/tracer.js +3 -7
- package/packages/dd-trace/src/util.js +1 -6
- package/version.js +1 -0
- package/packages/datadog-instrumentations/src/paperplane.js +0 -77
- package/packages/datadog-plugin-paperplane/src/index.js +0 -25
- package/packages/datadog-plugin-paperplane/src/logger.js +0 -11
- package/packages/datadog-plugin-paperplane/src/server.js +0 -24
- package/packages/dd-trace/src/appsec/iast/analyzers/header-injection-analyzer.js +0 -122
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/header-sensitive-analyzer.js +0 -20
|
@@ -24,7 +24,8 @@ const {
|
|
|
24
24
|
OUTPUT_TOKENS_METRIC_KEY,
|
|
25
25
|
TOTAL_TOKENS_METRIC_KEY,
|
|
26
26
|
INTEGRATION,
|
|
27
|
-
DECORATOR
|
|
27
|
+
DECORATOR,
|
|
28
|
+
PROPAGATED_ML_APP_KEY
|
|
28
29
|
} = require('./constants/tags')
|
|
29
30
|
|
|
30
31
|
// global registry of LLMObs spans
|
|
@@ -73,12 +74,24 @@ class LLMObsTagger {
|
|
|
73
74
|
if (integration) this._setTag(span, INTEGRATION, integration)
|
|
74
75
|
if (_decorator) this._setTag(span, DECORATOR, _decorator)
|
|
75
76
|
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
const spanMlApp =
|
|
78
|
+
mlApp ||
|
|
79
|
+
registry.get(parent)?.[ML_APP] ||
|
|
80
|
+
span.context()._trace.tags[PROPAGATED_ML_APP_KEY] ||
|
|
81
|
+
this._config.llmobs.mlApp
|
|
82
|
+
|
|
83
|
+
if (!spanMlApp) {
|
|
84
|
+
throw new Error(
|
|
85
|
+
'[LLMObs] Cannot start an LLMObs span without an mlApp configured.' +
|
|
86
|
+
'Ensure this configuration is set before running your application.'
|
|
87
|
+
)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
this._setTag(span, ML_APP, spanMlApp)
|
|
78
91
|
|
|
79
92
|
const parentId =
|
|
80
|
-
parent?.context().toSpanId()
|
|
81
|
-
span.context()._trace.tags[PROPAGATED_PARENT_ID_KEY]
|
|
93
|
+
parent?.context().toSpanId() ??
|
|
94
|
+
span.context()._trace.tags[PROPAGATED_PARENT_ID_KEY] ??
|
|
82
95
|
ROOT_PARENT_ID
|
|
83
96
|
this._setTag(span, PARENT_ID_KEY, parentId)
|
|
84
97
|
}
|
|
@@ -86,23 +99,23 @@ class LLMObsTagger {
|
|
|
86
99
|
// TODO: similarly for the following `tag` methods,
|
|
87
100
|
// how can we transition from a span weakmap to core API functionality
|
|
88
101
|
tagLLMIO (span, inputData, outputData) {
|
|
89
|
-
this
|
|
90
|
-
this
|
|
102
|
+
this.#tagMessages(span, inputData, INPUT_MESSAGES)
|
|
103
|
+
this.#tagMessages(span, outputData, OUTPUT_MESSAGES)
|
|
91
104
|
}
|
|
92
105
|
|
|
93
106
|
tagEmbeddingIO (span, inputData, outputData) {
|
|
94
|
-
this
|
|
95
|
-
this
|
|
107
|
+
this.#tagDocuments(span, inputData, INPUT_DOCUMENTS)
|
|
108
|
+
this.#tagText(span, outputData, OUTPUT_VALUE)
|
|
96
109
|
}
|
|
97
110
|
|
|
98
111
|
tagRetrievalIO (span, inputData, outputData) {
|
|
99
|
-
this
|
|
100
|
-
this
|
|
112
|
+
this.#tagText(span, inputData, INPUT_VALUE)
|
|
113
|
+
this.#tagDocuments(span, outputData, OUTPUT_DOCUMENTS)
|
|
101
114
|
}
|
|
102
115
|
|
|
103
116
|
tagTextIO (span, inputData, outputData) {
|
|
104
|
-
this
|
|
105
|
-
this
|
|
117
|
+
this.#tagText(span, inputData, INPUT_VALUE)
|
|
118
|
+
this.#tagText(span, outputData, OUTPUT_VALUE)
|
|
106
119
|
}
|
|
107
120
|
|
|
108
121
|
tagMetadata (span, metadata) {
|
|
@@ -135,7 +148,7 @@ class LLMObsTagger {
|
|
|
135
148
|
if (typeof value === 'number') {
|
|
136
149
|
filterdMetrics[processedKey] = value
|
|
137
150
|
} else {
|
|
138
|
-
this
|
|
151
|
+
this.#handleFailure(`Value for metric '${key}' must be a number, instead got ${value}`, 'invalid_metrics')
|
|
139
152
|
}
|
|
140
153
|
}
|
|
141
154
|
|
|
@@ -160,7 +173,7 @@ class LLMObsTagger {
|
|
|
160
173
|
this._setTag(span, SPAN_KIND, newKind)
|
|
161
174
|
}
|
|
162
175
|
|
|
163
|
-
|
|
176
|
+
#tagText (span, data, key) {
|
|
164
177
|
if (data) {
|
|
165
178
|
if (typeof data === 'string') {
|
|
166
179
|
this._setTag(span, key, data)
|
|
@@ -169,142 +182,156 @@ class LLMObsTagger {
|
|
|
169
182
|
this._setTag(span, key, JSON.stringify(data))
|
|
170
183
|
} catch {
|
|
171
184
|
const type = key === INPUT_VALUE ? 'input' : 'output'
|
|
172
|
-
this
|
|
185
|
+
this.#handleFailure(`Failed to parse ${type} value, must be JSON serializable.`, 'invalid_io_text')
|
|
173
186
|
}
|
|
174
187
|
}
|
|
175
188
|
}
|
|
176
189
|
}
|
|
177
190
|
|
|
178
|
-
|
|
179
|
-
if (data) {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
}
|
|
191
|
+
#tagDocuments (span, data, key) {
|
|
192
|
+
if (!data) {
|
|
193
|
+
return
|
|
194
|
+
}
|
|
183
195
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
}
|
|
196
|
+
if (!Array.isArray(data)) {
|
|
197
|
+
data = [data]
|
|
198
|
+
}
|
|
188
199
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
}
|
|
200
|
+
const documents = []
|
|
201
|
+
for (const document of data) {
|
|
202
|
+
if (typeof document === 'string') {
|
|
203
|
+
documents.push({ text: document })
|
|
204
|
+
continue
|
|
205
|
+
}
|
|
193
206
|
|
|
194
|
-
|
|
195
|
-
|
|
207
|
+
if (document == null || typeof document !== 'object') {
|
|
208
|
+
this.#handleFailure('Documents must be a string, object, or list of objects.', 'invalid_embedding_io')
|
|
209
|
+
continue
|
|
210
|
+
}
|
|
196
211
|
|
|
197
|
-
|
|
198
|
-
this._handleFailure('Document text must be a string.', 'invalid_embedding_io')
|
|
199
|
-
validDocument = false
|
|
200
|
-
}
|
|
212
|
+
const { text, name, id, score } = document
|
|
201
213
|
|
|
202
|
-
|
|
214
|
+
const valid = typeof text === 'string'
|
|
215
|
+
if (!valid) {
|
|
216
|
+
this.#handleFailure('Document text must be a string.', 'invalid_embedding_io')
|
|
217
|
+
}
|
|
203
218
|
|
|
204
|
-
|
|
205
|
-
validDocument = this._tagConditionalString(id, 'Document ID', documentObj, 'id') && validDocument
|
|
206
|
-
validDocument = this._tagConditionalNumber(score, 'Document score', documentObj, 'score') && validDocument
|
|
219
|
+
const documentObj = { text }
|
|
207
220
|
|
|
208
|
-
|
|
209
|
-
|
|
221
|
+
const condition1 = this.#tagConditionalString(name, 'Document name', documentObj, 'name')
|
|
222
|
+
const condition2 = this.#tagConditionalString(id, 'Document ID', documentObj, 'id')
|
|
223
|
+
const condition3 = this.#tagConditionalNumber(score, 'Document score', documentObj, 'score')
|
|
210
224
|
|
|
211
|
-
if (
|
|
212
|
-
|
|
225
|
+
if (valid && condition1 && condition2 && condition3) {
|
|
226
|
+
documents.push(documentObj)
|
|
213
227
|
}
|
|
214
228
|
}
|
|
215
|
-
}
|
|
216
229
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
}
|
|
230
|
+
if (documents.length) {
|
|
231
|
+
this._setTag(span, key, documents)
|
|
232
|
+
}
|
|
233
|
+
}
|
|
222
234
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
235
|
+
#filterToolCalls (toolCalls) {
|
|
236
|
+
if (!Array.isArray(toolCalls)) {
|
|
237
|
+
toolCalls = [toolCalls]
|
|
238
|
+
}
|
|
227
239
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
240
|
+
const filteredToolCalls = []
|
|
241
|
+
for (const toolCall of toolCalls) {
|
|
242
|
+
if (typeof toolCall !== 'object') {
|
|
243
|
+
this.#handleFailure('Tool call must be an object.', 'invalid_io_messages')
|
|
244
|
+
continue
|
|
245
|
+
}
|
|
232
246
|
|
|
233
|
-
|
|
247
|
+
const { name, arguments: args, toolId, type } = toolCall
|
|
248
|
+
const toolCallObj = {}
|
|
234
249
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
250
|
+
const condition1 = this.#tagConditionalString(name, 'Tool name', toolCallObj, 'name')
|
|
251
|
+
const condition2 = this.#tagConditionalObject(args, 'Tool arguments', toolCallObj, 'arguments')
|
|
252
|
+
const condition3 = this.#tagConditionalString(toolId, 'Tool ID', toolCallObj, 'tool_id')
|
|
253
|
+
const condition4 = this.#tagConditionalString(type, 'Tool type', toolCallObj, 'type')
|
|
238
254
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
255
|
+
if (condition1 && condition2 && condition3 && condition4) {
|
|
256
|
+
filteredToolCalls.push(toolCallObj)
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return filteredToolCalls
|
|
260
|
+
}
|
|
243
261
|
|
|
244
|
-
|
|
262
|
+
#tagMessages (span, data, key) {
|
|
263
|
+
if (!data) {
|
|
264
|
+
return
|
|
265
|
+
}
|
|
266
|
+
if (!Array.isArray(data)) {
|
|
267
|
+
data = [data]
|
|
268
|
+
}
|
|
245
269
|
|
|
246
|
-
|
|
247
|
-
if (!Array.isArray(toolCalls)) {
|
|
248
|
-
toolCalls = [toolCalls]
|
|
249
|
-
}
|
|
270
|
+
const messages = []
|
|
250
271
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
272
|
+
for (const message of data) {
|
|
273
|
+
if (typeof message === 'string') {
|
|
274
|
+
messages.push({ content: message })
|
|
275
|
+
continue
|
|
276
|
+
}
|
|
277
|
+
if (message == null || typeof message !== 'object') {
|
|
278
|
+
this.#handleFailure('Messages must be a string, object, or list of objects', 'invalid_io_messages')
|
|
279
|
+
continue
|
|
280
|
+
}
|
|
256
281
|
|
|
257
|
-
|
|
282
|
+
const { content = '', role } = message
|
|
283
|
+
const toolCalls = message.toolCalls
|
|
284
|
+
const messageObj = { content }
|
|
258
285
|
|
|
259
|
-
|
|
260
|
-
|
|
286
|
+
const valid = typeof content === 'string'
|
|
287
|
+
if (!valid) {
|
|
288
|
+
this.#handleFailure('Message content must be a string.', 'invalid_io_messages')
|
|
289
|
+
}
|
|
261
290
|
|
|
262
|
-
|
|
263
|
-
validTool = this._tagConditionalObject(args, 'Tool arguments', toolCallObj, 'arguments') && validTool
|
|
264
|
-
validTool = this._tagConditionalString(toolId, 'Tool ID', toolCallObj, 'tool_id') && validTool
|
|
265
|
-
validTool = this._tagConditionalString(type, 'Tool type', toolCallObj, 'type') && validTool
|
|
291
|
+
const condition = this.#tagConditionalString(role, 'Message role', messageObj, 'role')
|
|
266
292
|
|
|
267
|
-
|
|
268
|
-
|
|
293
|
+
if (toolCalls) {
|
|
294
|
+
const filteredToolCalls = this.#filterToolCalls(toolCalls)
|
|
269
295
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
}
|
|
296
|
+
if (filteredToolCalls.length) {
|
|
297
|
+
messageObj.tool_calls = filteredToolCalls
|
|
273
298
|
}
|
|
299
|
+
}
|
|
274
300
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
if (messages.length) {
|
|
279
|
-
this._setTag(span, key, messages)
|
|
301
|
+
if (valid && condition) {
|
|
302
|
+
messages.push(messageObj)
|
|
280
303
|
}
|
|
281
304
|
}
|
|
305
|
+
|
|
306
|
+
if (messages.length) {
|
|
307
|
+
this._setTag(span, key, messages)
|
|
308
|
+
}
|
|
282
309
|
}
|
|
283
310
|
|
|
284
|
-
|
|
311
|
+
#tagConditionalString (data, type, carrier, key) {
|
|
285
312
|
if (!data) return true
|
|
286
313
|
if (typeof data !== 'string') {
|
|
287
|
-
this
|
|
314
|
+
this.#handleFailure(`"${type}" must be a string.`)
|
|
288
315
|
return false
|
|
289
316
|
}
|
|
290
317
|
carrier[key] = data
|
|
291
318
|
return true
|
|
292
319
|
}
|
|
293
320
|
|
|
294
|
-
|
|
321
|
+
#tagConditionalNumber (data, type, carrier, key) {
|
|
295
322
|
if (!data) return true
|
|
296
323
|
if (typeof data !== 'number') {
|
|
297
|
-
this
|
|
324
|
+
this.#handleFailure(`"${type}" must be a number.`)
|
|
298
325
|
return false
|
|
299
326
|
}
|
|
300
327
|
carrier[key] = data
|
|
301
328
|
return true
|
|
302
329
|
}
|
|
303
330
|
|
|
304
|
-
|
|
331
|
+
#tagConditionalObject (data, type, carrier, key) {
|
|
305
332
|
if (!data) return true
|
|
306
333
|
if (typeof data !== 'object') {
|
|
307
|
-
this
|
|
334
|
+
this.#handleFailure(`"${type}" must be an object.`)
|
|
308
335
|
return false
|
|
309
336
|
}
|
|
310
337
|
carrier[key] = data
|
|
@@ -313,7 +340,7 @@ class LLMObsTagger {
|
|
|
313
340
|
|
|
314
341
|
// any public-facing LLMObs APIs using this tagger should not soft fail
|
|
315
342
|
// auto-instrumentation should soft fail
|
|
316
|
-
|
|
343
|
+
#handleFailure (msg, errorTag) {
|
|
317
344
|
if (this.softFail) {
|
|
318
345
|
log.warn(msg)
|
|
319
346
|
} else {
|
|
@@ -328,7 +355,7 @@ class LLMObsTagger {
|
|
|
328
355
|
_register (span) {
|
|
329
356
|
if (!this._config.llmobs.enabled) return
|
|
330
357
|
if (registry.has(span)) {
|
|
331
|
-
this
|
|
358
|
+
this.#handleFailure(`LLMObs Span "${span._name}" already registered.`)
|
|
332
359
|
return
|
|
333
360
|
}
|
|
334
361
|
|
|
@@ -338,12 +365,12 @@ class LLMObsTagger {
|
|
|
338
365
|
_setTag (span, key, value) {
|
|
339
366
|
if (!this._config.llmobs.enabled) return
|
|
340
367
|
if (!registry.has(span)) {
|
|
341
|
-
this
|
|
368
|
+
this.#handleFailure(`Span "${span._name}" must be an LLMObs generated span.`)
|
|
342
369
|
return
|
|
343
370
|
}
|
|
344
371
|
|
|
345
372
|
const tagsCarrier = registry.get(span)
|
|
346
|
-
|
|
373
|
+
tagsCarrier[key] = value
|
|
347
374
|
}
|
|
348
375
|
}
|
|
349
376
|
|
|
@@ -2,15 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
const { SPAN_KINDS } = require('./constants/tags')
|
|
4
4
|
|
|
5
|
-
function encodeUnicode (str) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const code =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return char
|
|
13
|
-
}).join('')
|
|
5
|
+
function encodeUnicode (str = '') {
|
|
6
|
+
let result = ''
|
|
7
|
+
for (let i = 0; i < str.length; i++) {
|
|
8
|
+
const code = str.charCodeAt(i)
|
|
9
|
+
result += code > 127 ? `\\u${code.toString(16).padStart(4, '0')}` : str[i]
|
|
10
|
+
}
|
|
11
|
+
return result
|
|
14
12
|
}
|
|
15
13
|
|
|
16
14
|
function validateKind (kind) {
|
|
@@ -107,6 +105,8 @@ function findArgumentsBounds (str) {
|
|
|
107
105
|
let end = -1
|
|
108
106
|
let closerCount = 0
|
|
109
107
|
|
|
108
|
+
// TODO(BridgeAR): This "breaks" up codePoints.
|
|
109
|
+
// Investigate if this is a problem.
|
|
110
110
|
for (let i = 0; i < str.length; i++) {
|
|
111
111
|
const char = str[i]
|
|
112
112
|
|
|
@@ -157,7 +157,7 @@ class BaseLLMObsWriter {
|
|
|
157
157
|
return encodeUnicode(value) // serialize unicode characters
|
|
158
158
|
}
|
|
159
159
|
return value
|
|
160
|
-
}).
|
|
160
|
+
}).replaceAll(String.raw`\\u`, String.raw`\u`) // remove double escaping
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
|
|
@@ -27,7 +27,7 @@ function setAgentStrategy (config, setWritersAgentlessValue) {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
const endpoints = agentInfo.endpoints
|
|
30
|
-
const hasEndpoint = Array.isArray(endpoints) && endpoints.
|
|
30
|
+
const hasEndpoint = Array.isArray(endpoints) && endpoints.includes(EVP_PROXY_AGENT_BASE_PATH)
|
|
31
31
|
setWritersAgentlessValue(!hasEndpoint)
|
|
32
32
|
})
|
|
33
33
|
}
|
|
@@ -7,6 +7,7 @@ const { traceChannel, debugChannel, infoChannel, warnChannel, errorChannel } = r
|
|
|
7
7
|
const logWriter = require('./writer')
|
|
8
8
|
const { Log } = require('./log')
|
|
9
9
|
const { memoize } = require('./utils')
|
|
10
|
+
const { getEnvironmentVariable } = require('../config-helper')
|
|
10
11
|
|
|
11
12
|
const config = {
|
|
12
13
|
enabled: false,
|
|
@@ -95,26 +96,26 @@ const log = {
|
|
|
95
96
|
return this._deprecate(code, message)
|
|
96
97
|
},
|
|
97
98
|
|
|
98
|
-
isEnabled (fleetStableConfigValue
|
|
99
|
+
isEnabled (fleetStableConfigValue, localStableConfigValue) {
|
|
99
100
|
return isTrue(coalesce(
|
|
100
101
|
fleetStableConfigValue,
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
getEnvironmentVariable('DD_TRACE_DEBUG'),
|
|
103
|
+
getEnvironmentVariable('OTEL_LOG_LEVEL') === 'debug' || undefined,
|
|
103
104
|
localStableConfigValue,
|
|
104
105
|
config.enabled
|
|
105
106
|
))
|
|
106
107
|
},
|
|
107
108
|
|
|
108
109
|
getLogLevel (
|
|
109
|
-
optionsValue
|
|
110
|
-
fleetStableConfigValue
|
|
111
|
-
localStableConfigValue
|
|
110
|
+
optionsValue,
|
|
111
|
+
fleetStableConfigValue,
|
|
112
|
+
localStableConfigValue
|
|
112
113
|
) {
|
|
113
114
|
return coalesce(
|
|
114
115
|
optionsValue,
|
|
115
116
|
fleetStableConfigValue,
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
getEnvironmentVariable('DD_TRACE_LOG_LEVEL'),
|
|
118
|
+
getEnvironmentVariable('OTEL_LOG_LEVEL'),
|
|
118
119
|
localStableConfigValue,
|
|
119
120
|
config.logLevel
|
|
120
121
|
)
|
|
@@ -23,7 +23,7 @@ class Log {
|
|
|
23
23
|
static parse (...args) {
|
|
24
24
|
let message, cause, delegate
|
|
25
25
|
|
|
26
|
-
const lastArg = args
|
|
26
|
+
const lastArg = args.at(-1)
|
|
27
27
|
if (lastArg && typeof lastArg === 'object' && lastArg.stack) { // lastArg instanceof Error?
|
|
28
28
|
cause = args.pop()
|
|
29
29
|
}
|
|
@@ -42,7 +42,7 @@ function toggle (enable, level) {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
function use (newLogger) {
|
|
45
|
-
if (
|
|
45
|
+
if (typeof newLogger?.debug === 'function' && typeof newLogger.error === 'function') {
|
|
46
46
|
logger = newLogger
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -54,12 +54,11 @@ function reset () {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
function getErrorLog (err) {
|
|
57
|
-
if (
|
|
57
|
+
if (typeof err?.delegate === 'function') {
|
|
58
58
|
const result = err.delegate()
|
|
59
59
|
return Array.isArray(result) ? Log.parse(...result) : Log.parse(result)
|
|
60
|
-
} else {
|
|
61
|
-
return err
|
|
62
60
|
}
|
|
61
|
+
return err
|
|
63
62
|
}
|
|
64
63
|
|
|
65
64
|
function setStackTraceLimitFunction (fn) {
|
|
@@ -21,10 +21,10 @@ class Chunk {
|
|
|
21
21
|
|
|
22
22
|
if (length < 0x20) { // fixstr
|
|
23
23
|
this.reserve(length + 1)
|
|
24
|
-
this.buffer[offset] = length |
|
|
25
|
-
} else if (length <
|
|
24
|
+
this.buffer[offset] = length | 0xA0
|
|
25
|
+
} else if (length < 0x1_00_00_00_00) { // str 32
|
|
26
26
|
this.reserve(length + 5)
|
|
27
|
-
this.buffer[offset] =
|
|
27
|
+
this.buffer[offset] = 0xDB
|
|
28
28
|
this.buffer[offset + 1] = length >> 24
|
|
29
29
|
this.buffer[offset + 2] = length >> 16
|
|
30
30
|
this.buffer[offset + 3] = length >> 8
|