dd-trace 5.80.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/LICENSE-3rdparty.csv +79 -88
- package/ext/tags.d.ts +1 -0
- package/ext/tags.js +1 -0
- package/index.d.ts +42 -35
- package/loader-hook.mjs +16 -4
- package/package.json +33 -56
- package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
- package/packages/datadog-esbuild/index.js +44 -26
- package/packages/datadog-esbuild/src/utils.js +14 -2
- package/packages/datadog-instrumentations/index.js +1 -0
- 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 +14 -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 +6 -2
- 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/find-my-way.js +6 -5
- 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 +120 -0
- package/packages/datadog-instrumentations/src/graphql.js +21 -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 +5 -1
- package/packages/datadog-instrumentations/src/helpers/instrument.js +11 -1
- package/packages/datadog-instrumentations/src/helpers/register.js +12 -5
- package/packages/datadog-instrumentations/src/helpers/rewriter/compiler.js +27 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +152 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/bullmq.json +106 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +6 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/langchain.js +237 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/loader.js +9 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/loader.mjs +11 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +139 -0
- 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/langchain.js +3 -109
- 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 +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 +2 -2
- 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 +46 -17
- 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/router.js +1 -1
- package/packages/datadog-instrumentations/src/selenium.js +4 -2
- 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 +38 -19
- 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-child_process/src/scrub-cmd-params.js +1 -1
- package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +23 -2
- package/packages/datadog-plugin-cypress/src/plugin.js +2 -2
- package/packages/datadog-plugin-cypress/src/support.js +73 -31
- 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 +17 -0
- package/packages/datadog-plugin-google-genai/src/tracing.js +41 -0
- package/packages/datadog-plugin-graphql/src/resolve.js +1 -1
- package/packages/datadog-plugin-graphql/src/tools/transforms.js +5 -4
- 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/util.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-langchain/src/tracing.js +7 -3
- 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-next/src/index.js +11 -3
- 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 +21 -13
- package/packages/dd-trace/src/appsec/api_security_sampler.js +1 -1
- 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/overhead-controller.js +1 -1
- 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-esm.mjs +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +11 -16
- 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 +4 -4
- 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 -7
- 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 +8 -6
- 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/ci-visibility/test-management/get-test-management-tests.js +4 -2
- package/packages/dd-trace/src/config/remote_config.js +34 -0
- package/packages/dd-trace/src/config.js +109 -34
- package/packages/dd-trace/src/config_defaults.js +16 -3
- 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/encoding.js +23 -6
- package/packages/dd-trace/src/datastreams/index.js +1 -1
- package/packages/dd-trace/src/datastreams/pathway.js +41 -2
- package/packages/dd-trace/src/datastreams/processor.js +3 -3
- package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +1 -1
- 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/breakpoints.js +15 -5
- package/packages/dd-trace/src/debugger/devtools_client/condition.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/config.js +3 -1
- package/packages/dd-trace/src/debugger/devtools_client/index.js +37 -17
- package/packages/dd-trace/src/debugger/devtools_client/inspector_promises_polyfill.js +2 -0
- package/packages/dd-trace/src/debugger/devtools_client/json-buffer.js +24 -18
- package/packages/dd-trace/src/debugger/devtools_client/send.js +21 -11
- package/packages/dd-trace/src/debugger/devtools_client/session.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +103 -15
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/constants.js +25 -0
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +56 -25
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +64 -23
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/symbols.js +3 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot-pruner.js +404 -0
- package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/state.js +8 -3
- package/packages/dd-trace/src/debugger/devtools_client/status.js +3 -3
- package/packages/dd-trace/src/debugger/index.js +2 -2
- 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 +13 -2
- 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/histogram.js +1 -1
- package/packages/dd-trace/src/id.js +60 -0
- 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 +2 -2
- package/packages/dd-trace/src/llmobs/constants/tags.js +8 -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/index.js +104 -0
- package/packages/dd-trace/src/llmobs/plugins/genai/util.js +486 -0
- 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/langchain/index.js +2 -2
- package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +16 -0
- package/packages/dd-trace/src/llmobs/plugins/{openai.js → openai/index.js} +63 -6
- package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +126 -0
- package/packages/dd-trace/src/llmobs/plugins/vertexai.js +1 -1
- package/packages/dd-trace/src/llmobs/sdk.js +20 -22
- package/packages/dd-trace/src/llmobs/span_processor.js +15 -14
- package/packages/dd-trace/src/llmobs/tagger.js +4 -0
- 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/index.js +2 -2
- package/packages/dd-trace/src/opentelemetry/logs/logger.js +3 -2
- package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +4 -4
- package/packages/dd-trace/src/opentelemetry/logs/otlp_http_log_exporter.js +5 -3
- package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +17 -16
- package/packages/dd-trace/src/opentelemetry/metrics/constants.js +34 -0
- package/packages/dd-trace/src/opentelemetry/metrics/index.js +81 -0
- package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +225 -0
- package/packages/dd-trace/src/opentelemetry/metrics/meter.js +171 -0
- package/packages/dd-trace/src/opentelemetry/metrics/meter_provider.js +54 -0
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_http_metric_exporter.js +62 -0
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +251 -0
- package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +557 -0
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +10 -18
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +47 -32
- package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +1 -1
- package/packages/dd-trace/src/opentelemetry/span.js +3 -3
- package/packages/dd-trace/src/opentelemetry/tracer.js +4 -4
- package/packages/dd-trace/src/opentelemetry/tracer_provider.js +1 -1
- 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 +8 -4
- package/packages/dd-trace/src/plugin_manager.js +5 -3
- 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 +6 -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 +27 -27
- package/packages/dd-trace/src/plugins/util/url.js +119 -1
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +1 -1
- package/packages/dd-trace/src/plugins/util/web.js +18 -46
- package/packages/dd-trace/src/priority_sampler.js +15 -16
- package/packages/dd-trace/src/process-tags/index.js +83 -0
- package/packages/dd-trace/src/profiling/config.js +33 -22
- 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 +11 -2
- package/packages/dd-trace/src/profiling/profilers/wall.js +4 -4
- package/packages/dd-trace/src/proxy.js +17 -18
- package/packages/dd-trace/src/rate_limiter.js +1 -1
- 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/v0/web.js +4 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +8 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/web.js +4 -0
- package/packages/dd-trace/src/span_format.js +10 -5
- package/packages/dd-trace/src/span_processor.js +8 -3
- package/packages/dd-trace/src/span_stats.js +21 -8
- package/packages/dd-trace/src/spanleak.js +1 -1
- 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 +16 -0
- package/packages/dd-trace/src/telemetry/dependencies.js +4 -4
- 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 +22 -8
- package/packages/dd-trace/src/tracer.js +3 -3
- package/packages/dd-trace/src/tracer_metadata.js +19 -15
- package/vendor/dist/@datadog/sketches-js/LICENSE +39 -0
- package/vendor/dist/@datadog/sketches-js/index.js +1 -0
- package/vendor/dist/@datadog/source-map/LICENSE +28 -0
- package/vendor/dist/@datadog/source-map/index.js +1 -0
- package/vendor/dist/@isaacs/ttlcache/LICENSE +55 -0
- package/vendor/dist/@isaacs/ttlcache/index.js +1 -0
- package/vendor/dist/@opentelemetry/core/LICENSE +201 -0
- package/vendor/dist/@opentelemetry/core/index.js +1 -0
- package/vendor/dist/@opentelemetry/resources/LICENSE +201 -0
- package/vendor/dist/@opentelemetry/resources/index.js +1 -0
- package/vendor/dist/astring/LICENSE +19 -0
- package/vendor/dist/astring/index.js +1 -0
- package/vendor/dist/crypto-randomuuid/index.js +1 -0
- package/vendor/dist/escape-string-regexp/LICENSE +9 -0
- package/vendor/dist/escape-string-regexp/index.js +1 -0
- package/vendor/dist/esquery/LICENSE +24 -0
- package/vendor/dist/esquery/index.js +1 -0
- package/vendor/dist/ignore/LICENSE +21 -0
- package/vendor/dist/ignore/index.js +1 -0
- package/vendor/dist/istanbul-lib-coverage/LICENSE +24 -0
- package/vendor/dist/istanbul-lib-coverage/index.js +1 -0
- package/vendor/dist/jest-docblock/LICENSE +21 -0
- package/vendor/dist/jest-docblock/index.js +1 -0
- package/vendor/dist/jsonpath-plus/LICENSE +22 -0
- package/vendor/dist/jsonpath-plus/index.js +1 -0
- package/vendor/dist/limiter/LICENSE +19 -0
- package/vendor/dist/limiter/index.js +1 -0
- package/vendor/dist/lodash.sortby/LICENSE +47 -0
- package/vendor/dist/lodash.sortby/index.js +1 -0
- package/vendor/dist/lru-cache/LICENSE +15 -0
- package/vendor/dist/lru-cache/index.js +1 -0
- package/vendor/dist/meriyah/LICENSE +7 -0
- package/vendor/dist/meriyah/index.js +1 -0
- package/vendor/dist/module-details-from-path/LICENSE +21 -0
- package/vendor/dist/module-details-from-path/index.js +1 -0
- package/vendor/dist/mutexify/promise/LICENSE +21 -0
- package/vendor/dist/mutexify/promise/index.js +1 -0
- package/vendor/dist/opentracing/LICENSE +201 -0
- package/vendor/dist/opentracing/binary_carrier.d.ts +11 -0
- package/vendor/dist/opentracing/constants.d.ts +61 -0
- package/vendor/dist/opentracing/examples/demo/demo.d.ts +2 -0
- package/vendor/dist/opentracing/ext/tags.d.ts +90 -0
- package/vendor/dist/opentracing/functions.d.ts +20 -0
- package/vendor/dist/opentracing/global_tracer.d.ts +14 -0
- package/vendor/dist/opentracing/index.d.ts +12 -0
- package/vendor/dist/opentracing/index.js +1 -0
- package/vendor/dist/opentracing/mock_tracer/index.d.ts +5 -0
- package/vendor/dist/opentracing/mock_tracer/mock_context.d.ts +13 -0
- package/vendor/dist/opentracing/mock_tracer/mock_report.d.ts +16 -0
- package/vendor/dist/opentracing/mock_tracer/mock_span.d.ts +50 -0
- package/vendor/dist/opentracing/mock_tracer/mock_tracer.d.ts +26 -0
- package/vendor/dist/opentracing/noop.d.ts +8 -0
- package/vendor/dist/opentracing/reference.d.ts +33 -0
- package/vendor/dist/opentracing/span.d.ts +147 -0
- package/vendor/dist/opentracing/span_context.d.ts +26 -0
- package/vendor/dist/opentracing/test/api_compatibility.d.ts +16 -0
- package/vendor/dist/opentracing/test/mocktracer_implemenation.d.ts +3 -0
- package/vendor/dist/opentracing/test/noop_implementation.d.ts +4 -0
- package/vendor/dist/opentracing/test/opentracing_api.d.ts +3 -0
- package/vendor/dist/opentracing/test/unittest.d.ts +2 -0
- package/vendor/dist/opentracing/tracer.d.ts +127 -0
- package/vendor/dist/path-to-regexp/LICENSE +21 -0
- package/vendor/dist/path-to-regexp/index.js +1 -0
- package/vendor/dist/pprof-format/LICENSE +8 -0
- package/vendor/dist/pprof-format/index.js +1 -0
- package/vendor/dist/protobufjs/LICENSE +39 -0
- package/vendor/dist/protobufjs/index.js +1 -0
- package/vendor/dist/protobufjs/minimal/LICENSE +39 -0
- package/vendor/dist/protobufjs/minimal/index.js +1 -0
- package/vendor/dist/retry/LICENSE +21 -0
- package/vendor/dist/retry/index.js +1 -0
- package/vendor/dist/rfdc/LICENSE +15 -0
- package/vendor/dist/rfdc/index.js +1 -0
- package/vendor/dist/semifies/LICENSE +201 -0
- package/vendor/dist/semifies/index.js +1 -0
- package/vendor/dist/shell-quote/LICENSE +24 -0
- package/vendor/dist/shell-quote/index.js +1 -0
- package/vendor/dist/source-map/LICENSE +28 -0
- package/vendor/dist/source-map/index.js +1 -0
- package/vendor/dist/source-map/lib/util/LICENSE +28 -0
- package/vendor/dist/source-map/lib/util/index.js +1 -0
- package/vendor/dist/source-map/mappings.wasm +0 -0
- package/vendor/dist/tlhunter-sorted-set/LICENSE +21 -0
- package/vendor/dist/tlhunter-sorted-set/index.js +1 -0
- package/vendor/dist/ttl-set/LICENSE +21 -0
- package/vendor/dist/ttl-set/index.js +1 -0
- package/packages/dd-trace/src/remote_config/manager.js +0 -368
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const satisfies = require('semifies')
|
|
3
|
+
const satisfies = require('../../../vendor/dist/semifies')
|
|
4
4
|
|
|
5
|
-
const { addHook, channel } = require('./helpers/instrument')
|
|
6
5
|
const shimmer = require('../../datadog-shimmer')
|
|
7
6
|
const {
|
|
8
7
|
parseAnnotations,
|
|
@@ -11,7 +10,11 @@ const {
|
|
|
11
10
|
getIsFaultyEarlyFlakeDetection
|
|
12
11
|
} = require('../../dd-trace/src/plugins/util/test')
|
|
13
12
|
const log = require('../../dd-trace/src/log')
|
|
13
|
+
const {
|
|
14
|
+
getEnvironmentVariable
|
|
15
|
+
} = require('../../dd-trace/src/config-helper')
|
|
14
16
|
const { DD_MAJOR } = require('../../../version')
|
|
17
|
+
const { addHook, channel } = require('./helpers/instrument')
|
|
15
18
|
|
|
16
19
|
const testStartCh = channel('ci:playwright:test:start')
|
|
17
20
|
const testFinishCh = channel('ci:playwright:test:finish')
|
|
@@ -38,7 +41,7 @@ const testSuiteToTestStatuses = new Map()
|
|
|
38
41
|
const testSuiteToErrors = new Map()
|
|
39
42
|
const testsToTestStatuses = new Map()
|
|
40
43
|
|
|
41
|
-
const RUM_FLUSH_WAIT_TIME = 1000
|
|
44
|
+
const RUM_FLUSH_WAIT_TIME = Number(getEnvironmentVariable('DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS')) || 1000
|
|
42
45
|
|
|
43
46
|
let applyRepeatEachIndex = null
|
|
44
47
|
|
|
@@ -687,10 +690,11 @@ function runAllTestsWrapper (runAllTests, playwrightVersion) {
|
|
|
687
690
|
|
|
688
691
|
const projects = getProjectsFromRunner(this, config)
|
|
689
692
|
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
693
|
+
// ATR and `--retries` are now compatible with Test Management.
|
|
694
|
+
// Test Management tests have their retries set to 0 at the test level,
|
|
695
|
+
// preventing them from being retried by ATR or `--retries`.
|
|
696
|
+
const shouldSetATRRetries = isFlakyTestRetriesEnabled && flakyTestRetriesCount > 0
|
|
697
|
+
if (shouldSetATRRetries) {
|
|
694
698
|
projects.forEach(project => {
|
|
695
699
|
if (project.retries === 0) { // Only if it hasn't been set by the user
|
|
696
700
|
project.retries = flakyTestRetriesCount
|
|
@@ -722,6 +726,8 @@ function runAllTestsWrapper (runAllTests, playwrightVersion) {
|
|
|
722
726
|
})
|
|
723
727
|
})
|
|
724
728
|
|
|
729
|
+
let preventedToFail = false
|
|
730
|
+
|
|
725
731
|
const sessionStatus = runAllTestsReturn.status || runAllTestsReturn
|
|
726
732
|
|
|
727
733
|
if (isTestManagementTestsEnabled && sessionStatus === 'failed') {
|
|
@@ -730,23 +736,30 @@ function runAllTestsWrapper (runAllTests, playwrightVersion) {
|
|
|
730
736
|
let totalPureQuarantinedFailedTestCount = 0
|
|
731
737
|
|
|
732
738
|
for (const [fqn, testStatuses] of testsToTestStatuses.entries()) {
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
if (
|
|
736
|
-
|
|
739
|
+
// Only count as failed if the final status (after retries) is 'fail'
|
|
740
|
+
const lastStatus = testStatuses[testStatuses.length - 1]
|
|
741
|
+
if (lastStatus === 'fail') {
|
|
742
|
+
totalFailedTestCount += 1
|
|
743
|
+
if (quarantinedButNotAttemptToFixFqns.has(fqn)) {
|
|
744
|
+
totalPureQuarantinedFailedTestCount += 1
|
|
745
|
+
}
|
|
737
746
|
}
|
|
738
747
|
}
|
|
739
748
|
|
|
740
749
|
for (const test of quarantinedOrDisabledTestsAttemptToFix) {
|
|
741
750
|
const testFqn = getTestFullyQualifiedName(test)
|
|
742
751
|
const testStatuses = testsToTestStatuses.get(testFqn)
|
|
743
|
-
|
|
752
|
+
// Only count as failed if the final status (after retries) is 'fail'
|
|
753
|
+
if (testStatuses && testStatuses[testStatuses.length - 1] === 'fail') {
|
|
754
|
+
totalAttemptToFixFailedTestCount += 1
|
|
755
|
+
}
|
|
744
756
|
}
|
|
745
757
|
|
|
746
758
|
const totalIgnorableFailures = totalAttemptToFixFailedTestCount + totalPureQuarantinedFailedTestCount
|
|
747
759
|
|
|
748
760
|
if (totalFailedTestCount > 0 && totalFailedTestCount === totalIgnorableFailures) {
|
|
749
761
|
runAllTestsReturn = 'passed'
|
|
762
|
+
preventedToFail = true
|
|
750
763
|
}
|
|
751
764
|
}
|
|
752
765
|
|
|
@@ -754,7 +767,7 @@ function runAllTestsWrapper (runAllTests, playwrightVersion) {
|
|
|
754
767
|
onDone = resolve
|
|
755
768
|
})
|
|
756
769
|
testSessionFinishCh.publish({
|
|
757
|
-
status: STATUS_TO_TEST_STATUS[sessionStatus],
|
|
770
|
+
status: preventedToFail ? 'pass' : STATUS_TO_TEST_STATUS[sessionStatus],
|
|
758
771
|
isEarlyFlakeDetectionEnabled,
|
|
759
772
|
isEarlyFlakeDetectionFaulty,
|
|
760
773
|
isTestManagementTestsEnabled,
|
|
@@ -917,6 +930,8 @@ addHook({
|
|
|
917
930
|
}
|
|
918
931
|
if (testProperties.attemptToFix) {
|
|
919
932
|
test._ddIsAttemptToFix = true
|
|
933
|
+
// Prevent ATR or `--retries` from retrying attemptToFix tests
|
|
934
|
+
test.retries = 0
|
|
920
935
|
const fileSuite = getSuiteType(test, 'file')
|
|
921
936
|
|
|
922
937
|
if (!fileSuitesWithManagedTestsToProjects.has(fileSuite)) {
|
|
@@ -991,6 +1006,8 @@ addHook({
|
|
|
991
1006
|
newTests.forEach(newTest => {
|
|
992
1007
|
newTest._ddIsNew = true
|
|
993
1008
|
if (isEarlyFlakeDetectionEnabled && newTest.expectedStatus !== 'skipped' && !newTest._ddIsModified) {
|
|
1009
|
+
// Prevent ATR or `--retries` from retrying new tests if EFD is enabled
|
|
1010
|
+
newTest.retries = 0
|
|
994
1011
|
const fileSuite = getSuiteType(newTest, 'file')
|
|
995
1012
|
if (!fileSuitesWithNewTestsToProjects.has(fileSuite)) {
|
|
996
1013
|
fileSuitesWithNewTestsToProjects.set(fileSuite, getSuiteType(newTest, 'project'))
|
|
@@ -1064,9 +1081,19 @@ addHook({
|
|
|
1064
1081
|
|
|
1065
1082
|
try {
|
|
1066
1083
|
if (page) {
|
|
1067
|
-
const isRumActive = await page.evaluate(() => {
|
|
1068
|
-
|
|
1084
|
+
const { isRumInstrumented, isRumActive, rumSamplingRate } = await page.evaluate(() => {
|
|
1085
|
+
const isRumInstrumented = !!window.DD_RUM
|
|
1086
|
+
const isRumActive = window.DD_RUM && window.DD_RUM.getInternalContext
|
|
1087
|
+
? !!window.DD_RUM.getInternalContext()
|
|
1088
|
+
: false
|
|
1089
|
+
const rumSamplingRate = window.DD_RUM && window.DD_RUM.getInitConfiguration
|
|
1090
|
+
? window.DD_RUM.getInitConfiguration().sessionSampleRate
|
|
1091
|
+
: null
|
|
1092
|
+
return { isRumInstrumented, isRumActive, rumSamplingRate }
|
|
1069
1093
|
})
|
|
1094
|
+
if (isRumInstrumented && rumSamplingRate < 100 && !isRumActive) {
|
|
1095
|
+
log.debug("RUM was detected on the page, but it isn't active because the sampling rate is below 100%")
|
|
1096
|
+
}
|
|
1070
1097
|
|
|
1071
1098
|
if (isRumActive) {
|
|
1072
1099
|
testPageGotoCh.publish({
|
|
@@ -1075,8 +1102,9 @@ addHook({
|
|
|
1075
1102
|
})
|
|
1076
1103
|
}
|
|
1077
1104
|
}
|
|
1078
|
-
} catch {
|
|
1105
|
+
} catch (e) {
|
|
1079
1106
|
// ignore errors such as redirects, context destroyed, etc
|
|
1107
|
+
log.error('goto hook error', e)
|
|
1080
1108
|
}
|
|
1081
1109
|
|
|
1082
1110
|
return response
|
|
@@ -1168,8 +1196,9 @@ addHook({
|
|
|
1168
1196
|
}
|
|
1169
1197
|
}
|
|
1170
1198
|
}
|
|
1171
|
-
} catch {
|
|
1199
|
+
} catch (e) {
|
|
1172
1200
|
// ignore errors
|
|
1201
|
+
log.error('afterEach hook error', e)
|
|
1173
1202
|
}
|
|
1174
1203
|
},
|
|
1175
1204
|
title: 'afterEach hook',
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const
|
|
4
|
-
channel,
|
|
5
|
-
addHook
|
|
6
|
-
} = require('./helpers/instrument')
|
|
3
|
+
const tracingChannel = require('dc-polyfill').tracingChannel
|
|
7
4
|
|
|
5
|
+
const { channel, addHook } = require('./helpers/instrument')
|
|
8
6
|
const prismaEngineStart = channel('apm:prisma:engine:start')
|
|
9
|
-
const tracingChannel = require('dc-polyfill').tracingChannel
|
|
10
7
|
const clientCH = tracingChannel('apm:prisma:client')
|
|
11
8
|
|
|
12
9
|
const allowedClientSpanOperations = new Set([
|
|
@@ -15,14 +12,20 @@ const allowedClientSpanOperations = new Set([
|
|
|
15
12
|
'transaction'
|
|
16
13
|
])
|
|
17
14
|
|
|
18
|
-
class
|
|
15
|
+
class DatadogTracingHelper {
|
|
19
16
|
dbConfig = null
|
|
17
|
+
|
|
18
|
+
constructor (dbConfig = null) {
|
|
19
|
+
this.dbConfig = dbConfig
|
|
20
|
+
}
|
|
21
|
+
|
|
20
22
|
isEnabled () {
|
|
21
23
|
return true
|
|
22
24
|
}
|
|
23
25
|
|
|
24
26
|
// needs a sampled tracecontext to generate engine spans
|
|
25
27
|
getTraceParent (context) {
|
|
28
|
+
// TODO: Fix the id
|
|
26
29
|
return '00-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bbbbbbbbbbbbbbbb-01' // valid sampled traceparent
|
|
27
30
|
}
|
|
28
31
|
|
|
@@ -34,7 +37,9 @@ class TracingHelper {
|
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
|
|
37
|
-
getActiveContext () {
|
|
40
|
+
getActiveContext () {
|
|
41
|
+
// TODO: Fix context
|
|
42
|
+
}
|
|
38
43
|
|
|
39
44
|
runInChildSpan (options, callback) {
|
|
40
45
|
if (typeof options === 'string') {
|
|
@@ -63,42 +68,52 @@ class TracingHelper {
|
|
|
63
68
|
}
|
|
64
69
|
}
|
|
65
70
|
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
const prismaHook = (runtime, versions, name, isIitm) => {
|
|
72
|
+
const originalGetPrismaClient = runtime.getPrismaClient
|
|
73
|
+
|
|
74
|
+
if (!originalGetPrismaClient) return runtime
|
|
75
|
+
const datadogTracingHelper = new DatadogTracingHelper()
|
|
76
|
+
|
|
77
|
+
const wrappedGetPrismaClient = function (config) {
|
|
78
|
+
const datasources = config.inlineDatasources?.db.url?.value
|
|
79
|
+
if (datasources) {
|
|
80
|
+
const dbConfig = parseDBString(datasources)
|
|
81
|
+
datadogTracingHelper.setDbString(dbConfig)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const PrismaClient = originalGetPrismaClient.call(this, config)
|
|
85
|
+
return class WrappedPrismaClientClass extends PrismaClient {
|
|
86
|
+
constructor (clientConfig) {
|
|
87
|
+
super(clientConfig)
|
|
88
|
+
this._tracingHelper = datadogTracingHelper
|
|
89
|
+
this._engine.tracingHelper = datadogTracingHelper
|
|
79
90
|
}
|
|
80
91
|
}
|
|
81
|
-
return originalRequest.apply(this, arguments)
|
|
82
92
|
}
|
|
83
93
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
* to enable OpenTelemetry.
|
|
88
|
-
*/
|
|
89
|
-
// https://github.com/prisma/prisma/blob/478293bbfce91e41ceff02f2a0b03bb8acbca03e/packages/instrumentation/src/PrismaInstrumentation.ts#L42
|
|
90
|
-
const versions = version.split('.')
|
|
91
|
-
if (versions[0] === '6' && versions[1] < 4) {
|
|
92
|
-
global.PRISMA_INSTRUMENTATION = {
|
|
93
|
-
helper: tracingHelper
|
|
94
|
-
}
|
|
95
|
-
} else {
|
|
96
|
-
global[`V${versions[0]}_PRISMA_INSTRUMENTATION`] = {
|
|
97
|
-
helper: tracingHelper
|
|
98
|
-
}
|
|
94
|
+
if (isIitm) {
|
|
95
|
+
runtime.getPrismaClient = wrappedGetPrismaClient
|
|
96
|
+
return runtime
|
|
99
97
|
}
|
|
100
98
|
|
|
101
|
-
return
|
|
99
|
+
return new Proxy(runtime, {
|
|
100
|
+
get (target, prop) {
|
|
101
|
+
if (prop === 'getPrismaClient') {
|
|
102
|
+
return wrappedGetPrismaClient
|
|
103
|
+
}
|
|
104
|
+
return target[prop]
|
|
105
|
+
}
|
|
106
|
+
})
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const prismaConfigs = [
|
|
110
|
+
{ name: '@prisma/client', versions: ['>=6.1.0 <7.0.0'], filePattern: 'runtime/library.*' },
|
|
111
|
+
{ name: './runtime/library.js', versions: ['>=6.1.0 <7.0.0'], file: 'runtime/library.js' },
|
|
112
|
+
{ name: '@prisma/client', versions: ['>=7.0.0'], filePattern: 'runtime/client.*' }
|
|
113
|
+
]
|
|
114
|
+
|
|
115
|
+
prismaConfigs.forEach(config => {
|
|
116
|
+
addHook(config, prismaHook)
|
|
102
117
|
})
|
|
103
118
|
|
|
104
119
|
function parseDBString (dbString) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const shimmer = require('../../datadog-shimmer')
|
|
4
3
|
const { channel } = require('dc-polyfill')
|
|
4
|
+
const shimmer = require('../../datadog-shimmer')
|
|
5
5
|
|
|
6
6
|
const startSetUncaughtExceptionCaptureCallback = channel('datadog:process:setUncaughtExceptionCaptureCallback:start')
|
|
7
7
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const dc = require('dc-polyfill')
|
|
3
4
|
const shimmer = require('../../datadog-shimmer')
|
|
4
5
|
const { addHook } = require('./helpers/instrument')
|
|
5
6
|
|
|
6
|
-
const dc = require('dc-polyfill')
|
|
7
7
|
const serializeChannel = dc.channel('apm:protobufjs:serialize-start')
|
|
8
8
|
const deserializeChannel = dc.channel('apm:protobufjs:deserialize-end')
|
|
9
9
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const shimmer = require('../../datadog-shimmer')
|
|
3
4
|
const {
|
|
4
5
|
channel,
|
|
5
6
|
addHook
|
|
6
7
|
} = require('./helpers/instrument')
|
|
7
|
-
const shimmer = require('../../datadog-shimmer')
|
|
8
8
|
|
|
9
9
|
const startCh = channel('apm:redis:command:start')
|
|
10
10
|
const finishCh = channel('apm:redis:command:finish')
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const shimmer = require('../../datadog-shimmer')
|
|
3
4
|
const {
|
|
4
5
|
channel,
|
|
5
6
|
addHook
|
|
6
7
|
} = require('./helpers/instrument')
|
|
7
|
-
const shimmer = require('../../datadog-shimmer')
|
|
8
8
|
|
|
9
9
|
const circularBufferConstructor = Symbol('circularBufferConstructor')
|
|
10
10
|
const inFlightDeliveries = Symbol('inFlightDeliveries')
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const METHODS = [...require('http').METHODS.map(v => v.toLowerCase()), 'all']
|
|
4
|
-
const pathToRegExp = require('path-to-regexp')
|
|
4
|
+
const pathToRegExp = require('../../../vendor/dist/path-to-regexp')
|
|
5
5
|
const shimmer = require('../../datadog-shimmer')
|
|
6
6
|
const { addHook, channel } = require('./helpers/instrument')
|
|
7
7
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { addHook, channel } = require('./helpers/instrument')
|
|
4
3
|
const shimmer = require('../../datadog-shimmer')
|
|
4
|
+
const { getEnvironmentVariable } = require('../../dd-trace/src/config-helper')
|
|
5
|
+
const { addHook, channel } = require('./helpers/instrument')
|
|
5
6
|
|
|
6
7
|
const ciSeleniumDriverGetStartCh = channel('ci:selenium:driver:get')
|
|
7
8
|
|
|
@@ -15,7 +16,8 @@ if (window.DD_RUM && window.DD_RUM.stopSession) {
|
|
|
15
16
|
`
|
|
16
17
|
const IS_RUM_ACTIVE_SCRIPT = 'return !!window.DD_RUM'
|
|
17
18
|
|
|
18
|
-
const DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS =
|
|
19
|
+
const DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS =
|
|
20
|
+
Number(getEnvironmentVariable('DD_CIVISIBILITY_RUM_FLUSH_WAIT_MILLIS')) || 500
|
|
19
21
|
const DD_CIVISIBILITY_TEST_EXECUTION_ID_COOKIE_NAME = 'datadog-ci-visibility-test-execution-id'
|
|
20
22
|
|
|
21
23
|
// TODO: can we increase the supported version range?
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const shimmer = require('../../datadog-shimmer')
|
|
3
4
|
const {
|
|
4
5
|
channel,
|
|
5
6
|
addHook
|
|
6
7
|
} = require('./helpers/instrument')
|
|
7
8
|
|
|
8
|
-
const shimmer = require('../../datadog-shimmer')
|
|
9
|
-
|
|
10
9
|
addHook({ name: 'sequelize', versions: ['>=4'], file: ['lib/sequelize.js'] }, Sequelize => {
|
|
11
10
|
const startCh = channel('datadog:sequelize:query:start')
|
|
12
11
|
const finishCh = channel('datadog:sequelize:query:finish')
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const shimmer = require('../../datadog-shimmer')
|
|
3
4
|
const {
|
|
4
5
|
channel,
|
|
5
6
|
addHook
|
|
6
7
|
} = require('./helpers/instrument')
|
|
7
|
-
const shimmer = require('../../datadog-shimmer')
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* @description The enum values in this map are not exposed from ShareDB, so the keys are hard-coded here.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const shimmer = require('../../datadog-shimmer')
|
|
3
4
|
const {
|
|
4
5
|
channel,
|
|
5
6
|
addHook
|
|
6
7
|
} = require('./helpers/instrument')
|
|
7
|
-
const shimmer = require('../../datadog-shimmer')
|
|
8
8
|
|
|
9
9
|
addHook({ name: 'tedious', versions: ['>=1.0.0'] }, tedious => {
|
|
10
10
|
const startCh = channel('apm:tedious:request:start')
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const tracingChannel = require('dc-polyfill').tracingChannel
|
|
4
|
+
|
|
5
|
+
const shimmer = require('../../datadog-shimmer')
|
|
3
6
|
const {
|
|
4
7
|
addHook
|
|
5
8
|
} = require('./helpers/instrument')
|
|
6
|
-
const
|
|
9
|
+
const { createWrapFetch } = require('./helpers/fetch')
|
|
7
10
|
|
|
8
|
-
const tracingChannel = require('dc-polyfill').tracingChannel
|
|
9
11
|
const ch = tracingChannel('apm:undici:fetch')
|
|
10
12
|
|
|
11
|
-
const { createWrapFetch } = require('./helpers/fetch')
|
|
12
|
-
|
|
13
13
|
addHook({
|
|
14
14
|
name: 'undici',
|
|
15
15
|
versions: ['^4.4.1', '5', '>=6.0.0']
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { addHook, channel } = require('./helpers/instrument')
|
|
4
3
|
const shimmer = require('../../datadog-shimmer')
|
|
4
|
+
const { addHook, channel } = require('./helpers/instrument')
|
|
5
5
|
const names = ['url', 'node:url']
|
|
6
6
|
|
|
7
7
|
const parseFinishedChannel = channel('datadog:url:parse:finish')
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { addHook, channel } = require('./helpers/instrument')
|
|
4
3
|
const shimmer = require('../../datadog-shimmer')
|
|
5
4
|
const log = require('../../dd-trace/src/log')
|
|
6
5
|
const {
|
|
7
6
|
VITEST_WORKER_TRACE_PAYLOAD_CODE,
|
|
8
7
|
VITEST_WORKER_LOGS_PAYLOAD_CODE
|
|
9
8
|
} = require('../../dd-trace/src/plugins/util/test')
|
|
9
|
+
const { addHook, channel } = require('./helpers/instrument')
|
|
10
10
|
|
|
11
11
|
// test hooks
|
|
12
12
|
const testStartCh = channel('ci:vitest:test:start')
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { channel, addHook } = require('./helpers/instrument')
|
|
4
3
|
const shimmer = require('../../datadog-shimmer')
|
|
4
|
+
const { channel, addHook } = require('./helpers/instrument')
|
|
5
5
|
const names = ['vm', 'node:vm']
|
|
6
6
|
|
|
7
7
|
const runScriptStartChannel = channel('datadog:vm:run-script:start')
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const tracingChannel = require('dc-polyfill').tracingChannel
|
|
4
|
+
|
|
5
|
+
const shimmer = require('../../datadog-shimmer')
|
|
3
6
|
const {
|
|
4
7
|
addHook,
|
|
5
8
|
channel
|
|
6
9
|
} = require('./helpers/instrument')
|
|
7
|
-
const shimmer = require('../../datadog-shimmer')
|
|
8
10
|
|
|
9
|
-
const tracingChannel = require('dc-polyfill').tracingChannel
|
|
10
11
|
const serverCh = tracingChannel('ws:server:connect')
|
|
11
12
|
const producerCh = tracingChannel('ws:send')
|
|
12
13
|
const receiverCh = tracingChannel('ws:receive')
|
|
13
14
|
const closeCh = tracingChannel('ws:close')
|
|
14
15
|
const emitCh = channel('tracing:ws:server:connect:emit')
|
|
16
|
+
// TODO: Add a error channel / handle error events properly.
|
|
17
|
+
|
|
18
|
+
const eventHandlerMap = new WeakMap()
|
|
15
19
|
|
|
16
20
|
function wrapHandleUpgrade (handleUpgrade) {
|
|
17
21
|
return function () {
|
|
@@ -67,24 +71,37 @@ function createWrapEmit (emit) {
|
|
|
67
71
|
}
|
|
68
72
|
|
|
69
73
|
function createWrappedHandler (handler) {
|
|
70
|
-
return function
|
|
74
|
+
return shimmer.wrapFunction(handler, originalHandler => function (data, binary) {
|
|
71
75
|
const byteLength = dataLength(data)
|
|
72
76
|
|
|
73
77
|
const ctx = { data, binary, socket: this._sender?._socket, byteLength }
|
|
74
78
|
|
|
75
|
-
return receiverCh.traceSync(
|
|
76
|
-
}
|
|
79
|
+
return receiverCh.traceSync(originalHandler, ctx, this, data, binary)
|
|
80
|
+
})
|
|
77
81
|
}
|
|
78
82
|
|
|
79
83
|
function wrapListener (originalOn) {
|
|
80
84
|
return function (eventName, handler) {
|
|
81
85
|
if (eventName === 'message') {
|
|
82
|
-
|
|
86
|
+
// Prevent multiple wrapping of the same handler in case the user adds the listener multiple times
|
|
87
|
+
const wrappedHandler = eventHandlerMap.get(handler) ?? createWrappedHandler(handler)
|
|
88
|
+
eventHandlerMap.set(handler, wrappedHandler)
|
|
89
|
+
return originalOn.call(this, eventName, wrappedHandler)
|
|
83
90
|
}
|
|
84
91
|
return originalOn.apply(this, arguments)
|
|
85
92
|
}
|
|
86
93
|
}
|
|
87
94
|
|
|
95
|
+
function removeListener (originalOff) {
|
|
96
|
+
return function (eventName, handler) {
|
|
97
|
+
if (eventName === 'message') {
|
|
98
|
+
const wrappedHandler = eventHandlerMap.get(handler)
|
|
99
|
+
return originalOff.call(this, eventName, wrappedHandler)
|
|
100
|
+
}
|
|
101
|
+
return originalOff.apply(this, arguments)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
88
105
|
function wrapClose (close) {
|
|
89
106
|
return function (code, data) {
|
|
90
107
|
// _closeFrameReceived is set to true when receiver receives a close frame from a peer
|
|
@@ -115,22 +132,24 @@ addHook({
|
|
|
115
132
|
versions: ['>=8.0.0']
|
|
116
133
|
}, ws => {
|
|
117
134
|
shimmer.wrap(ws.prototype, 'send', wrapSend)
|
|
118
|
-
shimmer.wrap(ws.prototype, 'on', wrapListener)
|
|
119
135
|
shimmer.wrap(ws.prototype, 'close', wrapClose)
|
|
136
|
+
|
|
137
|
+
// TODO: Do not wrap these methods. Instead, add a listener to the websocket instance when one is created.
|
|
138
|
+
// That way it avoids producing too many spans for the same websocket instance and less user code is impacted.
|
|
139
|
+
shimmer.wrap(ws.prototype, 'on', wrapListener)
|
|
140
|
+
shimmer.wrap(ws.prototype, 'addListener', wrapListener)
|
|
141
|
+
shimmer.wrap(ws.prototype, 'off', removeListener)
|
|
142
|
+
shimmer.wrap(ws.prototype, 'removeListener', removeListener)
|
|
143
|
+
|
|
120
144
|
return ws
|
|
121
145
|
})
|
|
122
146
|
|
|
123
|
-
function detectType (data) {
|
|
124
|
-
if (typeof Blob !== 'undefined' && data instanceof Blob) return 'Blob'
|
|
125
|
-
if (typeof Buffer !== 'undefined' && Buffer.isBuffer(data)) return 'Buffer'
|
|
126
|
-
if (typeof data === 'string') return 'string'
|
|
127
|
-
return 'Unknown'
|
|
128
|
-
}
|
|
129
|
-
|
|
130
147
|
function dataLength (data) {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if (
|
|
135
|
-
|
|
148
|
+
if (typeof data === 'string') {
|
|
149
|
+
return Buffer.byteLength(data)
|
|
150
|
+
}
|
|
151
|
+
if (data instanceof Blob) {
|
|
152
|
+
return data.size
|
|
153
|
+
}
|
|
154
|
+
return data?.length ?? 0
|
|
136
155
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const CompositePlugin = require('../../dd-trace/src/plugins/composite')
|
|
3
4
|
const ProducerPlugin = require('./producer')
|
|
4
5
|
const ConsumerPlugin = require('./consumer')
|
|
5
|
-
const CompositePlugin = require('../../dd-trace/src/plugins/composite')
|
|
6
6
|
|
|
7
7
|
class Amqp10Plugin extends CompositePlugin {
|
|
8
8
|
static id = 'amqp10'
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const CompositePlugin = require('../../dd-trace/src/plugins/composite')
|
|
3
4
|
const ProducerPlugin = require('./producer')
|
|
4
5
|
const ConsumerPlugin = require('./consumer')
|
|
5
6
|
const ClientPlugin = require('./client')
|
|
6
|
-
const CompositePlugin = require('../../dd-trace/src/plugins/composite')
|
|
7
7
|
|
|
8
8
|
// TODO: Consider splitting channels for publish/receive in the instrumentation.
|
|
9
9
|
class AmqplibPlugin extends CompositePlugin {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const CompositePlugin = require('../../dd-trace/src/plugins/composite')
|
|
4
|
-
const AnthropicTracingPlugin = require('./tracing')
|
|
5
4
|
const AnthropicLLMObsPlugin = require('../../dd-trace/src/llmobs/plugins/anthropic')
|
|
5
|
+
const AnthropicTracingPlugin = require('./tracing')
|
|
6
6
|
|
|
7
7
|
class AnthropicPlugin extends CompositePlugin {
|
|
8
8
|
static id = 'anthropic'
|