dd-trace 5.81.0 → 5.82.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.d.ts +7 -0
- package/loader-hook.mjs +7 -2
- package/package.json +13 -18
- package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
- package/packages/datadog-esbuild/index.js +8 -7
- package/packages/datadog-esbuild/src/utils.js +14 -2
- package/packages/datadog-instrumentations/src/aerospike.js +3 -2
- package/packages/datadog-instrumentations/src/ai.js +2 -2
- package/packages/datadog-instrumentations/src/amqp10.js +1 -1
- package/packages/datadog-instrumentations/src/amqplib.js +4 -4
- package/packages/datadog-instrumentations/src/anthropic.js +2 -2
- package/packages/datadog-instrumentations/src/apollo-server-core.js +2 -2
- package/packages/datadog-instrumentations/src/apollo-server.js +1 -1
- package/packages/datadog-instrumentations/src/apollo.js +3 -2
- package/packages/datadog-instrumentations/src/avsc.js +1 -1
- package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
- package/packages/datadog-instrumentations/src/azure-event-hubs.js +4 -3
- package/packages/datadog-instrumentations/src/azure-functions.js +2 -2
- package/packages/datadog-instrumentations/src/azure-service-bus.js +3 -4
- package/packages/datadog-instrumentations/src/bluebird.js +1 -1
- package/packages/datadog-instrumentations/src/bullmq.js +11 -0
- package/packages/datadog-instrumentations/src/bunyan.js +1 -1
- package/packages/datadog-instrumentations/src/cassandra-driver.js +1 -1
- package/packages/datadog-instrumentations/src/child_process.js +2 -2
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +3 -3
- package/packages/datadog-instrumentations/src/couchbase.js +1 -1
- package/packages/datadog-instrumentations/src/crypto.js +1 -1
- package/packages/datadog-instrumentations/src/cucumber.js +12 -13
- package/packages/datadog-instrumentations/src/cypress.js +1 -1
- package/packages/datadog-instrumentations/src/dns.js +1 -1
- package/packages/datadog-instrumentations/src/elasticsearch.js +1 -1
- package/packages/datadog-instrumentations/src/express-mongo-sanitize.js +1 -1
- package/packages/datadog-instrumentations/src/express.js +1 -1
- package/packages/datadog-instrumentations/src/fs.js +1 -1
- package/packages/datadog-instrumentations/src/generic-pool.js +1 -1
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +137 -15
- package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +2 -3
- package/packages/datadog-instrumentations/src/google-genai.js +3 -3
- package/packages/datadog-instrumentations/src/graphql.js +1 -1
- package/packages/datadog-instrumentations/src/grpc/client.js +1 -1
- package/packages/datadog-instrumentations/src/grpc/server.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/bundler-register.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/hook.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/hooks.js +4 -1
- package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/register.js +6 -4
- package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +2 -2
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/bullmq.json +106 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +2 -1
- package/packages/datadog-instrumentations/src/helpers/router-helper.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/shared-utils.js +9 -0
- package/packages/datadog-instrumentations/src/hono.js +55 -10
- package/packages/datadog-instrumentations/src/ioredis.js +1 -1
- package/packages/datadog-instrumentations/src/iovalkey.js +1 -1
- package/packages/datadog-instrumentations/src/jest.js +2 -2
- package/packages/datadog-instrumentations/src/kafkajs.js +3 -3
- package/packages/datadog-instrumentations/src/knex.js +1 -1
- package/packages/datadog-instrumentations/src/ldapjs.js +1 -1
- package/packages/datadog-instrumentations/src/light-my-request.js +93 -0
- package/packages/datadog-instrumentations/src/limitd-client.js +1 -1
- package/packages/datadog-instrumentations/src/lodash.js +1 -2
- package/packages/datadog-instrumentations/src/mariadb.js +1 -2
- package/packages/datadog-instrumentations/src/memcached.js +1 -1
- package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
- package/packages/datadog-instrumentations/src/mongodb.js +1 -1
- package/packages/datadog-instrumentations/src/mongoose.js +1 -1
- package/packages/datadog-instrumentations/src/mquery.js +1 -1
- package/packages/datadog-instrumentations/src/mysql.js +1 -1
- package/packages/datadog-instrumentations/src/mysql2.js +1 -1
- package/packages/datadog-instrumentations/src/net.js +1 -1
- package/packages/datadog-instrumentations/src/next.js +1 -1
- package/packages/datadog-instrumentations/src/nyc.js +1 -1
- package/packages/datadog-instrumentations/src/openai.js +2 -2
- package/packages/datadog-instrumentations/src/opensearch.js +1 -1
- package/packages/datadog-instrumentations/src/oracledb.js +1 -1
- package/packages/datadog-instrumentations/src/otel-sdk-trace.js +1 -1
- package/packages/datadog-instrumentations/src/pg.js +3 -3
- package/packages/datadog-instrumentations/src/pino.js +1 -1
- package/packages/datadog-instrumentations/src/playwright.js +1 -1
- package/packages/datadog-instrumentations/src/prisma.js +52 -37
- package/packages/datadog-instrumentations/src/process.js +1 -1
- package/packages/datadog-instrumentations/src/promise-js.js +1 -1
- package/packages/datadog-instrumentations/src/promise.js +1 -1
- package/packages/datadog-instrumentations/src/protobufjs.js +1 -1
- package/packages/datadog-instrumentations/src/q.js +1 -1
- package/packages/datadog-instrumentations/src/redis.js +1 -1
- package/packages/datadog-instrumentations/src/rhea.js +1 -1
- package/packages/datadog-instrumentations/src/selenium.js +1 -1
- package/packages/datadog-instrumentations/src/sequelize.js +1 -2
- package/packages/datadog-instrumentations/src/sharedb.js +1 -1
- package/packages/datadog-instrumentations/src/tedious.js +1 -1
- package/packages/datadog-instrumentations/src/undici.js +4 -4
- package/packages/datadog-instrumentations/src/url.js +1 -1
- package/packages/datadog-instrumentations/src/vitest.js +1 -1
- package/packages/datadog-instrumentations/src/vm.js +1 -1
- package/packages/datadog-instrumentations/src/when.js +1 -1
- package/packages/datadog-instrumentations/src/winston.js +1 -1
- package/packages/datadog-instrumentations/src/ws.js +3 -2
- package/packages/datadog-plugin-amqp10/src/index.js +1 -1
- package/packages/datadog-plugin-amqplib/src/index.js +1 -1
- package/packages/datadog-plugin-anthropic/src/index.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/index.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +4 -4
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/util.js +3 -3
- package/packages/datadog-plugin-azure-event-hubs/src/index.js +1 -1
- package/packages/datadog-plugin-azure-event-hubs/src/producer.js +19 -5
- package/packages/datadog-plugin-azure-service-bus/src/index.js +1 -1
- package/packages/datadog-plugin-azure-service-bus/src/producer.js +4 -0
- package/packages/datadog-plugin-bullmq/src/consumer.js +60 -0
- package/packages/datadog-plugin-bullmq/src/index.js +18 -0
- package/packages/datadog-plugin-bullmq/src/producer.js +178 -0
- package/packages/datadog-plugin-confluentinc-kafka-javascript/src/index.js +1 -1
- package/packages/datadog-plugin-cypress/src/plugin.js +1 -1
- package/packages/datadog-plugin-express/src/index.js +1 -1
- package/packages/datadog-plugin-fastify/src/index.js +1 -1
- package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +13 -3
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +171 -12
- package/packages/datadog-plugin-google-cloud-pubsub/src/index.js +1 -2
- package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +160 -13
- package/packages/datadog-plugin-google-cloud-pubsub/src/pubsub-push-subscription.js +217 -0
- package/packages/datadog-plugin-google-cloud-vertexai/src/index.js +1 -1
- package/packages/datadog-plugin-google-genai/src/index.js +1 -1
- package/packages/datadog-plugin-graphql/src/resolve.js +1 -1
- package/packages/datadog-plugin-grpc/src/index.js +1 -1
- package/packages/datadog-plugin-http/src/client.js +2 -1
- package/packages/datadog-plugin-http/src/index.js +25 -5
- package/packages/datadog-plugin-http2/src/client.js +2 -2
- package/packages/datadog-plugin-http2/src/index.js +1 -1
- package/packages/datadog-plugin-kafkajs/src/index.js +1 -1
- package/packages/datadog-plugin-langchain/src/index.js +1 -1
- package/packages/datadog-plugin-moleculer/src/index.js +1 -1
- package/packages/datadog-plugin-mongodb-core/src/index.js +6 -2
- package/packages/datadog-plugin-openai/src/index.js +1 -1
- package/packages/datadog-plugin-openai/src/stream-helpers.js +30 -10
- package/packages/datadog-plugin-openai/src/tracing.js +2 -2
- package/packages/datadog-plugin-rhea/src/index.js +1 -1
- package/packages/datadog-plugin-ws/src/close.js +56 -3
- package/packages/datadog-plugin-ws/src/index.js +4 -0
- package/packages/datadog-plugin-ws/src/producer.js +39 -4
- package/packages/datadog-plugin-ws/src/receiver.js +39 -3
- package/packages/datadog-plugin-ws/src/server.js +13 -1
- package/packages/datadog-plugin-ws/src/util.js +107 -0
- package/packages/datadog-shimmer/src/shimmer.js +2 -2
- package/packages/dd-trace/src/aiguard/sdk.js +3 -3
- package/packages/dd-trace/src/appsec/graphql.js +2 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/code-injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/command-injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/cookie-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-base-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/ldap-injection-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +3 -3
- package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/ssrf-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/untrusted-deserialization-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/unvalidated-redirect-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-cipher-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-hash-analyzer.js +3 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/weak-randomness-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
- package/packages/dd-trace/src/appsec/iast/index.js +5 -5
- package/packages/dd-trace/src/appsec/iast/security-controls/index.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/index.js +1 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +10 -14
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +1 -1
- package/packages/dd-trace/src/appsec/iast/telemetry/namespaces.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +3 -3
- package/packages/dd-trace/src/appsec/index.js +8 -8
- package/packages/dd-trace/src/appsec/rasp/command_injection.js +1 -1
- package/packages/dd-trace/src/appsec/rasp/index.js +1 -1
- package/packages/dd-trace/src/appsec/rasp/lfi.js +1 -1
- package/packages/dd-trace/src/appsec/rc-products.js +10 -0
- package/packages/dd-trace/src/appsec/recommended.json +230 -3
- package/packages/dd-trace/src/appsec/remote_config.js +177 -0
- package/packages/dd-trace/src/appsec/reporter.js +3 -3
- package/packages/dd-trace/src/appsec/rule_manager.js +37 -20
- package/packages/dd-trace/src/appsec/sdk/index.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/set_user.js +1 -1
- package/packages/dd-trace/src/appsec/sdk/track_event.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/user_blocking.js +2 -2
- package/packages/dd-trace/src/appsec/user_tracking.js +2 -2
- package/packages/dd-trace/src/appsec/waf/index.js +17 -3
- package/packages/dd-trace/src/appsec/waf/waf_manager.js +11 -0
- package/packages/dd-trace/src/azure_metadata.js +8 -2
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +6 -0
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/index.js +2 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +1 -1
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +1 -1
- package/packages/dd-trace/src/config/remote_config.js +34 -0
- package/packages/dd-trace/src/config.js +29 -28
- package/packages/dd-trace/src/config_defaults.js +2 -1
- package/packages/dd-trace/src/constants.js +5 -0
- package/packages/dd-trace/src/crashtracking/crashtracker.js +10 -1
- package/packages/dd-trace/src/datastreams/checkpointer.js +2 -2
- package/packages/dd-trace/src/datastreams/index.js +1 -1
- package/packages/dd-trace/src/datastreams/pathway.js +7 -7
- package/packages/dd-trace/src/datastreams/processor.js +2 -2
- package/packages/dd-trace/src/datastreams/writer.js +2 -2
- package/packages/dd-trace/src/debugger/config.js +1 -0
- package/packages/dd-trace/src/debugger/devtools_client/config.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/index.js +7 -2
- package/packages/dd-trace/src/debugger/devtools_client/send.js +3 -3
- package/packages/dd-trace/src/debugger/devtools_client/session.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +5 -5
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +2 -2
- package/packages/dd-trace/src/debugger/devtools_client/state.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/status.js +2 -2
- package/packages/dd-trace/src/debugger/index.js +1 -1
- package/packages/dd-trace/src/dogstatsd.js +3 -2
- package/packages/dd-trace/src/encode/0.4.js +1 -1
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +2 -2
- package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
- package/packages/dd-trace/src/encode/span-stats.js +6 -1
- package/packages/dd-trace/src/exporter.js +2 -2
- package/packages/dd-trace/src/exporters/agent/index.js +1 -1
- package/packages/dd-trace/src/exporters/common/agent-info-exporter.js +1 -1
- package/packages/dd-trace/src/exporters/common/request.js +2 -2
- package/packages/dd-trace/src/exporters/common/writer.js +1 -1
- package/packages/dd-trace/src/exporters/span-stats/index.js +1 -1
- package/packages/dd-trace/src/external-logger/src/index.js +1 -2
- package/packages/dd-trace/src/flare/index.js +1 -1
- package/packages/dd-trace/src/guardrails/index.js +6 -3
- package/packages/dd-trace/src/id.js +1 -1
- package/packages/dd-trace/src/index.js +1 -1
- package/packages/dd-trace/src/lambda/handler.js +4 -4
- package/packages/dd-trace/src/lambda/index.js +1 -1
- package/packages/dd-trace/src/lambda/runtime/patch.js +4 -4
- package/packages/dd-trace/src/lambda/runtime/ritm.js +1 -1
- package/packages/dd-trace/src/llmobs/constants/tags.js +7 -1
- package/packages/dd-trace/src/llmobs/index.js +8 -9
- package/packages/dd-trace/src/llmobs/plugins/ai/index.js +38 -7
- package/packages/dd-trace/src/llmobs/plugins/ai/util.js +30 -9
- package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +3 -3
- package/packages/dd-trace/src/llmobs/plugins/genai/util.js +2 -2
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/embedding.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/llm.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/vectorstore.js +1 -1
- package/packages/dd-trace/src/llmobs/plugins/openai/constants.js +16 -0
- package/packages/dd-trace/src/llmobs/plugins/openai/index.js +16 -1
- package/packages/dd-trace/src/llmobs/plugins/openai/utils.js +22 -10
- package/packages/dd-trace/src/llmobs/plugins/vertexai.js +1 -1
- package/packages/dd-trace/src/llmobs/sdk.js +15 -22
- package/packages/dd-trace/src/llmobs/span_processor.js +9 -13
- package/packages/dd-trace/src/llmobs/telemetry.js +3 -4
- package/packages/dd-trace/src/llmobs/writers/base.js +2 -2
- package/packages/dd-trace/src/llmobs/writers/spans.js +1 -2
- package/packages/dd-trace/src/log/index.js +1 -1
- package/packages/dd-trace/src/noop/proxy.js +2 -2
- package/packages/dd-trace/src/noop/span.js +1 -1
- package/packages/dd-trace/src/openfeature/index.js +2 -2
- package/packages/dd-trace/src/openfeature/noop.js +14 -14
- package/packages/dd-trace/src/openfeature/remote_config.js +31 -0
- package/packages/dd-trace/src/openfeature/writers/base.js +5 -5
- package/packages/dd-trace/src/openfeature/writers/exposures.js +9 -9
- package/packages/dd-trace/src/opentelemetry/context_manager.js +2 -2
- package/packages/dd-trace/src/opentelemetry/logs/logger.js +1 -1
- package/packages/dd-trace/src/opentelemetry/logs/logger_provider.js +4 -4
- package/packages/dd-trace/src/opentelemetry/logs/otlp_transformer.js +9 -8
- package/packages/dd-trace/src/opentelemetry/metrics/instruments.js +3 -3
- package/packages/dd-trace/src/opentelemetry/metrics/meter.js +2 -2
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_transformer.js +4 -4
- package/packages/dd-trace/src/opentelemetry/metrics/periodic_metric_reader.js +36 -11
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +11 -10
- package/packages/dd-trace/src/opentelemetry/otlp/protobuf_loader.js +1 -1
- package/packages/dd-trace/src/opentelemetry/span.js +2 -2
- package/packages/dd-trace/src/opentelemetry/tracer.js +3 -3
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +24 -8
- package/packages/dd-trace/src/opentracing/span.js +3 -3
- package/packages/dd-trace/src/opentracing/tracer.js +5 -5
- package/packages/dd-trace/src/payload-tagging/index.js +6 -2
- package/packages/dd-trace/src/plugin_manager.js +1 -1
- package/packages/dd-trace/src/plugins/apollo.js +1 -1
- package/packages/dd-trace/src/plugins/ci_plugin.js +27 -27
- package/packages/dd-trace/src/plugins/database.js +1 -1
- package/packages/dd-trace/src/plugins/index.js +5 -1
- package/packages/dd-trace/src/plugins/log_plugin.js +1 -1
- package/packages/dd-trace/src/plugins/outbound.js +1 -1
- package/packages/dd-trace/src/plugins/tracing.js +1 -1
- package/packages/dd-trace/src/plugins/util/ci.js +1 -1
- package/packages/dd-trace/src/plugins/util/git.js +8 -8
- package/packages/dd-trace/src/plugins/util/stacktrace.js +1 -1
- package/packages/dd-trace/src/plugins/util/test.js +24 -24
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +1 -1
- package/packages/dd-trace/src/plugins/util/web.js +8 -5
- package/packages/dd-trace/src/priority_sampler.js +15 -16
- package/packages/dd-trace/src/process-tags/index.js +31 -29
- package/packages/dd-trace/src/profiling/config.js +32 -21
- package/packages/dd-trace/src/profiling/exporter_cli.js +4 -4
- package/packages/dd-trace/src/profiling/exporters/agent.js +5 -5
- package/packages/dd-trace/src/profiling/index.js +1 -1
- package/packages/dd-trace/src/profiling/libuv-size.js +1 -1
- package/packages/dd-trace/src/profiling/profiler.js +4 -5
- package/packages/dd-trace/src/profiling/profilers/event_plugins/event.js +1 -1
- package/packages/dd-trace/src/profiling/profilers/events.js +2 -2
- package/packages/dd-trace/src/profiling/profilers/wall.js +4 -4
- package/packages/dd-trace/src/proxy.js +12 -18
- package/packages/dd-trace/src/remote_config/index.js +541 -137
- package/packages/dd-trace/src/require-package-json.js +1 -1
- package/packages/dd-trace/src/ritm.js +50 -27
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +1 -1
- package/packages/dd-trace/src/serverless.js +16 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/messaging.js +8 -0
- package/packages/dd-trace/src/service-naming/schemas/v1/messaging.js +8 -0
- package/packages/dd-trace/src/span_format.js +1 -1
- package/packages/dd-trace/src/span_processor.js +2 -2
- package/packages/dd-trace/src/span_stats.js +6 -4
- package/packages/dd-trace/src/standalone/index.js +1 -1
- package/packages/dd-trace/src/startup-log.js +3 -3
- package/packages/dd-trace/src/supported-configurations.json +3 -0
- package/packages/dd-trace/src/telemetry/dependencies.js +3 -3
- package/packages/dd-trace/src/telemetry/endpoints.js +8 -8
- package/packages/dd-trace/src/telemetry/logs/index.js +1 -1
- package/packages/dd-trace/src/telemetry/telemetry.js +11 -6
- package/packages/dd-trace/src/tracer.js +3 -3
- package/packages/dd-trace/src/tracer_metadata.js +19 -15
- package/packages/dd-trace/src/remote_config/manager.js +0 -368
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const { errorMonitor } = require('events')
|
|
4
|
-
const { channel, addHook } = require('./helpers/instrument')
|
|
5
4
|
const shimmer = require('../../datadog-shimmer')
|
|
5
|
+
const { channel, addHook } = require('./helpers/instrument')
|
|
6
6
|
|
|
7
7
|
const startChannel = channel('apm:fs:operation:start')
|
|
8
8
|
const finishChannel = channel('apm:fs:operation:finish')
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { addHook, AsyncResource } = require('./helpers/instrument')
|
|
4
3
|
const shimmer = require('../../datadog-shimmer')
|
|
4
|
+
const { addHook, AsyncResource } = require('./helpers/instrument')
|
|
5
5
|
|
|
6
6
|
function createWrapAcquire () {
|
|
7
7
|
return function wrapAcquire (acquire) {
|
|
@@ -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 requestStartCh = channel('apm:google-cloud-pubsub:request:start')
|
|
10
10
|
const requestFinishCh = channel('apm:google-cloud-pubsub:request:finish')
|
|
@@ -14,6 +14,21 @@ const receiveStartCh = channel('apm:google-cloud-pubsub:receive:start')
|
|
|
14
14
|
const receiveFinishCh = channel('apm:google-cloud-pubsub:receive:finish')
|
|
15
15
|
const receiveErrorCh = channel('apm:google-cloud-pubsub:receive:error')
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Message-level channels for trace context injection and async context propagation:
|
|
19
|
+
* - messagePublishCh: Inject trace context when Topic.publish() is called
|
|
20
|
+
* - messageAckStoreCh: Store async context when message.ack() is called (PULL)
|
|
21
|
+
* - messageAckRetrieveCh: Retrieve stored context when acknowledge() API is called (PULL)
|
|
22
|
+
* - messageStoreCh: Propagate context when Subscription emits 'message' event (PULL)
|
|
23
|
+
*/
|
|
24
|
+
const messagePublishCh = channel('apm:google-cloud-pubsub:message:publish')
|
|
25
|
+
const messageAckStoreCh = channel('apm:google-cloud-pubsub:message:ack-store')
|
|
26
|
+
const messageAckRetrieveCh = channel('apm:google-cloud-pubsub:message:ack-retrieve')
|
|
27
|
+
const messageStoreCh = channel('apm:google-cloud-pubsub:message:store')
|
|
28
|
+
|
|
29
|
+
// WeakMap for passing context between LeaseManager._dispense and LeaseManager.remove
|
|
30
|
+
const messageContexts = new WeakMap()
|
|
31
|
+
|
|
17
32
|
const publisherMethods = [
|
|
18
33
|
'createTopic',
|
|
19
34
|
'updateTopic',
|
|
@@ -65,6 +80,21 @@ function wrapMethod (method) {
|
|
|
65
80
|
if (!requestStartCh.hasSubscribers) return method.apply(this, arguments)
|
|
66
81
|
|
|
67
82
|
const ctx = { request, api, projectId: this.auth._cachedProjectId }
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* For acknowledge/modifyAckDeadline: retrieve stored context from consumer plugin.
|
|
86
|
+
* These APIs only have ackIds (no Message objects), so async context is lost.
|
|
87
|
+
* Plugin sets ctx.storedContext, which client.js uses to link the acknowledge span.
|
|
88
|
+
*/
|
|
89
|
+
const isAckOperation = api === 'acknowledge' || api === 'modifyAckDeadline'
|
|
90
|
+
if (isAckOperation && request?.ackIds?.length > 0) {
|
|
91
|
+
messageAckRetrieveCh.publish({
|
|
92
|
+
ackIds: request.ackIds,
|
|
93
|
+
api,
|
|
94
|
+
ctx
|
|
95
|
+
})
|
|
96
|
+
}
|
|
97
|
+
|
|
68
98
|
return requestStartCh.runStores(ctx, () => {
|
|
69
99
|
const cb = arguments[arguments.length - 1]
|
|
70
100
|
|
|
@@ -74,12 +104,11 @@ function wrapMethod (method) {
|
|
|
74
104
|
ctx.error = error
|
|
75
105
|
requestErrorCh.publish(ctx)
|
|
76
106
|
}
|
|
77
|
-
|
|
78
107
|
return requestFinishCh.runStores(ctx, cb, this, ...arguments)
|
|
79
108
|
})
|
|
80
|
-
|
|
81
109
|
return method.apply(this, arguments)
|
|
82
110
|
}
|
|
111
|
+
|
|
83
112
|
return method.apply(this, arguments)
|
|
84
113
|
.then(
|
|
85
114
|
response => {
|
|
@@ -108,12 +137,16 @@ function massWrap (obj, methods, wrapper) {
|
|
|
108
137
|
addHook({ name: '@google-cloud/pubsub', versions: ['>=1.2'] }, (obj) => {
|
|
109
138
|
const Subscription = obj.Subscription
|
|
110
139
|
|
|
140
|
+
/**
|
|
141
|
+
* PULL: Intercept 'message' events and propagate async context via runStores.
|
|
142
|
+
* This ensures the consumer plugin creates spans in the correct context.
|
|
143
|
+
*/
|
|
111
144
|
shimmer.wrap(Subscription.prototype, 'emit', emit => function (eventName, message) {
|
|
112
145
|
if (eventName !== 'message' || !message) return emit.apply(this, arguments)
|
|
113
146
|
|
|
114
|
-
const ctx = {}
|
|
147
|
+
const ctx = { message }
|
|
115
148
|
try {
|
|
116
|
-
return
|
|
149
|
+
return messageStoreCh.runStores(ctx, emit, this, ...arguments)
|
|
117
150
|
} catch (err) {
|
|
118
151
|
ctx.error = err
|
|
119
152
|
receiveErrorCh.publish(ctx)
|
|
@@ -124,26 +157,70 @@ addHook({ name: '@google-cloud/pubsub', versions: ['>=1.2'] }, (obj) => {
|
|
|
124
157
|
return obj
|
|
125
158
|
})
|
|
126
159
|
|
|
160
|
+
addHook({ name: '@google-cloud/pubsub', versions: ['>=1.2'], file: 'build/src/subscriber.js' }, (obj) => {
|
|
161
|
+
const Message = obj.Message
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* PULL: Capture async context when message.ack() is called.
|
|
165
|
+
* This is our last chance before context is lost. The acknowledge() API call happens
|
|
166
|
+
* later (often batched), and we'll retrieve this stored context to link spans.
|
|
167
|
+
* Flow: message.ack() -> store context -> acknowledge() API -> retrieve context
|
|
168
|
+
*/
|
|
169
|
+
if (Message?.prototype?.ack) {
|
|
170
|
+
shimmer.wrap(Message.prototype, 'ack', originalAck => function () {
|
|
171
|
+
if (this.ackId) {
|
|
172
|
+
const ctx = {
|
|
173
|
+
message: this,
|
|
174
|
+
ackId: this.ackId
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
return messageAckStoreCh.runStores(ctx, originalAck, this, ...arguments)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return originalAck.apply(this, arguments)
|
|
181
|
+
})
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return obj
|
|
185
|
+
})
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* PULL: Hook LeaseManager to track message lifecycle (dispense/remove/clear).
|
|
189
|
+
* _dispense: Message given to handler -> create span
|
|
190
|
+
* remove: Message removed from lease (ack/nack/timeout) -> finish span
|
|
191
|
+
* clear: Subscription closed -> finish all remaining spans
|
|
192
|
+
*/
|
|
127
193
|
addHook({ name: '@google-cloud/pubsub', versions: ['>=1.2'], file: 'build/src/lease-manager.js' }, (obj) => {
|
|
128
194
|
const LeaseManager = obj.LeaseManager
|
|
129
|
-
|
|
195
|
+
if (!LeaseManager) {
|
|
196
|
+
return obj
|
|
197
|
+
}
|
|
130
198
|
|
|
131
199
|
shimmer.wrap(LeaseManager.prototype, '_dispense', dispense => function (message) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
return dispense.apply(this, arguments)
|
|
200
|
+
const ctx = { message }
|
|
201
|
+
messageContexts.set(message, ctx)
|
|
202
|
+
|
|
203
|
+
return receiveStartCh.runStores(ctx, dispense, this, ...arguments)
|
|
137
204
|
})
|
|
138
205
|
|
|
139
206
|
shimmer.wrap(LeaseManager.prototype, 'remove', remove => function (message) {
|
|
140
|
-
|
|
207
|
+
const ctx = messageContexts.get(message)
|
|
208
|
+
if (ctx) {
|
|
209
|
+
messageContexts.delete(message)
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
return receiveFinishCh.runStores(ctx || { message }, remove, this, ...arguments)
|
|
141
213
|
})
|
|
142
214
|
|
|
143
215
|
shimmer.wrap(LeaseManager.prototype, 'clear', clear => function () {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
216
|
+
if (this._messages) {
|
|
217
|
+
for (const message of this._messages.values()) {
|
|
218
|
+
const ctx = messageContexts.get(message)
|
|
219
|
+
if (ctx) {
|
|
220
|
+
receiveFinishCh.publish(ctx)
|
|
221
|
+
messageContexts.delete(message)
|
|
222
|
+
}
|
|
223
|
+
}
|
|
147
224
|
}
|
|
148
225
|
return clear.apply(this, arguments)
|
|
149
226
|
})
|
|
@@ -151,6 +228,51 @@ addHook({ name: '@google-cloud/pubsub', versions: ['>=1.2'], file: 'build/src/le
|
|
|
151
228
|
return obj
|
|
152
229
|
})
|
|
153
230
|
|
|
231
|
+
/**
|
|
232
|
+
* Inject trace context into individual messages via Topic.publish()/publishMessage().
|
|
233
|
+
* Flow: User calls topic.publish() -> inject context (here) -> SDK batches messages ->
|
|
234
|
+
* publish() API called -> producer plugin creates batch span + metadata
|
|
235
|
+
*/
|
|
236
|
+
addHook({ name: '@google-cloud/pubsub', versions: ['>=1.2'] }, (obj) => {
|
|
237
|
+
if (!obj.Topic?.prototype) return obj
|
|
238
|
+
|
|
239
|
+
if (typeof obj.Topic.prototype.publishMessage === 'function') {
|
|
240
|
+
shimmer.wrap(obj.Topic.prototype, 'publishMessage', publishMessage => {
|
|
241
|
+
return function (data, attributesOrCallback, callback) {
|
|
242
|
+
if (data && typeof data === 'object') {
|
|
243
|
+
if (!data.attributes) data.attributes = {}
|
|
244
|
+
messagePublishCh.publish({
|
|
245
|
+
attributes: data.attributes,
|
|
246
|
+
pubsub: this.pubsub,
|
|
247
|
+
topicName: this.name
|
|
248
|
+
})
|
|
249
|
+
}
|
|
250
|
+
return publishMessage.apply(this, arguments)
|
|
251
|
+
}
|
|
252
|
+
})
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
if (typeof obj.Topic.prototype.publish === 'function') {
|
|
256
|
+
shimmer.wrap(obj.Topic.prototype, 'publish', publish => function (buffer, attributesOrCallback, callback) {
|
|
257
|
+
if (typeof attributesOrCallback === 'function' || !attributesOrCallback) {
|
|
258
|
+
arguments[1] = {}
|
|
259
|
+
arguments[2] = attributesOrCallback
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
messagePublishCh.publish({
|
|
263
|
+
attributes: arguments[1],
|
|
264
|
+
pubsub: this.pubsub,
|
|
265
|
+
topicName: this.name,
|
|
266
|
+
buffer
|
|
267
|
+
})
|
|
268
|
+
|
|
269
|
+
return publish.apply(this, arguments)
|
|
270
|
+
})
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
return obj
|
|
274
|
+
})
|
|
275
|
+
|
|
154
276
|
addHook({ name: '@google-cloud/pubsub', versions: ['>=1.2'] }, (obj) => {
|
|
155
277
|
const { PublisherClient, SchemaServiceClient, SubscriberClient } = obj.v1
|
|
156
278
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { addHook } = require('./helpers/instrument')
|
|
4
|
-
const shimmer = require('../../datadog-shimmer')
|
|
5
|
-
|
|
6
3
|
const vertexaiTracingChannel = require('dc-polyfill').tracingChannel('apm:vertexai:request')
|
|
4
|
+
const shimmer = require('../../datadog-shimmer')
|
|
5
|
+
const { addHook } = require('./helpers/instrument')
|
|
7
6
|
|
|
8
7
|
function wrapGenerate (generate) {
|
|
9
8
|
return function (request) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const {
|
|
3
|
+
const { channel, tracingChannel } = require('dc-polyfill')
|
|
4
|
+
|
|
4
5
|
const shimmer = require('../../datadog-shimmer')
|
|
5
|
-
const
|
|
6
|
-
const channel = require('dc-polyfill').channel
|
|
6
|
+
const { addHook } = require('./helpers/instrument')
|
|
7
7
|
|
|
8
8
|
const genaiTracingChannel = tracingChannel('apm:google:genai:request')
|
|
9
9
|
const onStreamedChunkCh = channel('apm:google:genai:request:chunk')
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const types = require('./types')
|
|
4
3
|
const { addHook, channel } = require('../helpers/instrument')
|
|
5
4
|
const shimmer = require('../../../datadog-shimmer')
|
|
5
|
+
const types = require('./types')
|
|
6
6
|
|
|
7
7
|
const patched = new WeakSet()
|
|
8
8
|
const instances = new WeakMap()
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const types = require('./types')
|
|
4
3
|
const { channel, addHook } = require('../helpers/instrument')
|
|
5
4
|
const shimmer = require('../../../datadog-shimmer')
|
|
5
|
+
const types = require('./types')
|
|
6
6
|
|
|
7
7
|
const startChannel = channel('apm:grpc:server:request:start')
|
|
8
8
|
const asyncStartChannel = channel('apm:grpc:server:request:asyncStart')
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const dc = require('dc-polyfill')
|
|
4
4
|
|
|
5
|
+
const log = require('../../../dd-trace/src/log')
|
|
5
6
|
const {
|
|
6
7
|
filename,
|
|
7
8
|
loadChannel,
|
|
@@ -9,7 +10,6 @@ const {
|
|
|
9
10
|
} = require('./register.js')
|
|
10
11
|
const hooks = require('./hooks')
|
|
11
12
|
const instrumentations = require('./instrumentations')
|
|
12
|
-
const log = require('../../../dd-trace/src/log')
|
|
13
13
|
|
|
14
14
|
const CHANNEL = 'dd-trace:bundler:load'
|
|
15
15
|
|
|
@@ -29,7 +29,8 @@ module.exports = {
|
|
|
29
29
|
'@node-redis/client': () => require('../redis'),
|
|
30
30
|
'@opensearch-project/opensearch': () => require('../opensearch'),
|
|
31
31
|
'@opentelemetry/sdk-trace-node': () => require('../otel-sdk-trace'),
|
|
32
|
-
'@prisma/client': () => require('../prisma'),
|
|
32
|
+
'@prisma/client': { esmFirst: true, fn: () => require('../prisma') },
|
|
33
|
+
'./runtime/library.js': () => require('../prisma'),
|
|
33
34
|
'@redis/client': () => require('../redis'),
|
|
34
35
|
'@smithy/smithy-client': () => require('../aws-sdk'),
|
|
35
36
|
'@vitest/runner': { esmFirst: true, fn: () => require('../vitest') },
|
|
@@ -41,6 +42,7 @@ module.exports = {
|
|
|
41
42
|
'aws-sdk': () => require('../aws-sdk'),
|
|
42
43
|
bluebird: () => require('../bluebird'),
|
|
43
44
|
'body-parser': () => require('../body-parser'),
|
|
45
|
+
bullmq: () => require('../bullmq'),
|
|
44
46
|
bunyan: () => require('../bunyan'),
|
|
45
47
|
'cassandra-driver': () => require('../cassandra-driver'),
|
|
46
48
|
child_process: () => require('../child_process'),
|
|
@@ -83,6 +85,7 @@ module.exports = {
|
|
|
83
85
|
kafkajs: () => require('../kafkajs'),
|
|
84
86
|
langchain: () => require('../langchain'),
|
|
85
87
|
ldapjs: () => require('../ldapjs'),
|
|
88
|
+
'light-my-request': () => require('../light-my-request'),
|
|
86
89
|
'limitd-client': () => require('../limitd-client'),
|
|
87
90
|
lodash: () => require('../lodash'),
|
|
88
91
|
mariadb: () => require('../mariadb'),
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const { AsyncResource } = require('async_hooks')
|
|
3
4
|
const dc = require('dc-polyfill')
|
|
4
5
|
const instrumentations = require('./instrumentations')
|
|
5
6
|
const rewriterInstrumentations = require('./rewriter/instrumentations')
|
|
6
|
-
const { AsyncResource } = require('async_hooks')
|
|
7
7
|
|
|
8
8
|
const channelMap = {}
|
|
9
9
|
exports.channel = function (name) {
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { channel } = require('dc-polyfill')
|
|
4
3
|
const path = require('path')
|
|
4
|
+
const { channel } = require('dc-polyfill')
|
|
5
5
|
const satisfies = require('../../../../vendor/dist/semifies')
|
|
6
|
-
const Hook = require('./hook')
|
|
7
6
|
const requirePackageJson = require('../../../dd-trace/src/require-package-json')
|
|
8
7
|
const log = require('../../../dd-trace/src/log')
|
|
9
|
-
const checkRequireCache = require('./check-require-cache')
|
|
10
8
|
const telemetry = require('../../../dd-trace/src/guardrails/telemetry')
|
|
11
9
|
const { isInServerlessEnvironment } = require('../../../dd-trace/src/serverless')
|
|
12
10
|
const { getEnvironmentVariables } = require('../../../dd-trace/src/config-helper')
|
|
11
|
+
const checkRequireCache = require('./check-require-cache')
|
|
12
|
+
const Hook = require('./hook')
|
|
13
|
+
const { isRelativeRequire } = require('./shared-utils')
|
|
13
14
|
const rewriter = require('./rewriter')
|
|
14
15
|
|
|
15
16
|
const envs = getEnvironmentVariables()
|
|
@@ -104,6 +105,8 @@ for (const packageName of names) {
|
|
|
104
105
|
hook[HOOK_SYMBOL] ??= new WeakSet()
|
|
105
106
|
let matchesFile = moduleName === fullFilename
|
|
106
107
|
|
|
108
|
+
if (!matchesFile && isRelativeRequire(name)) matchesFile = true
|
|
109
|
+
|
|
107
110
|
if (fullFilePattern) {
|
|
108
111
|
// Some libraries include a hash in their filenames when installed,
|
|
109
112
|
// so our instrumentation has to include a '.*' to match them for more than a single version.
|
|
@@ -219,7 +222,6 @@ function parseHookInstrumentationFileName (packageName) {
|
|
|
219
222
|
hook = hook.fn
|
|
220
223
|
}
|
|
221
224
|
const hookString = hook.toString()
|
|
222
|
-
|
|
223
225
|
const regex = /require\('([^']*)'\)/
|
|
224
226
|
const match = hookString.match(regex)
|
|
225
227
|
|
|
@@ -34,11 +34,11 @@ Orchestrion-JS that will need to be backported:
|
|
|
34
34
|
const { readFileSync } = require('fs')
|
|
35
35
|
const { join } = require('path')
|
|
36
36
|
const semifies = require('../../../../../vendor/dist/semifies')
|
|
37
|
+
const log = require('../../../../dd-trace/src/log')
|
|
38
|
+
const { getEnvironmentVariable } = require('../../../../dd-trace/src/config-helper')
|
|
37
39
|
const transforms = require('./transforms')
|
|
38
40
|
const { generate, parse, traverse } = require('./compiler')
|
|
39
|
-
const log = require('../../../../dd-trace/src/log')
|
|
40
41
|
const instrumentations = require('./instrumentations')
|
|
41
|
-
const { getEnvironmentVariable } = require('../../../../dd-trace/src/config-helper')
|
|
42
42
|
|
|
43
43
|
const NODE_OPTIONS = getEnvironmentVariable('NODE_OPTIONS')
|
|
44
44
|
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"module": {
|
|
4
|
+
"name": "bullmq",
|
|
5
|
+
"versionRange": ">=5.66.0",
|
|
6
|
+
"filePath": "dist/cjs/classes/queue.js"
|
|
7
|
+
},
|
|
8
|
+
"functionQuery": {
|
|
9
|
+
"methodName": "add",
|
|
10
|
+
"className": "Queue",
|
|
11
|
+
"kind": "Async"
|
|
12
|
+
},
|
|
13
|
+
"channelName": "Queue_add"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"module": {
|
|
17
|
+
"name": "bullmq",
|
|
18
|
+
"versionRange": ">=5.66.0",
|
|
19
|
+
"filePath": "dist/cjs/classes/queue.js"
|
|
20
|
+
},
|
|
21
|
+
"functionQuery": {
|
|
22
|
+
"methodName": "addBulk",
|
|
23
|
+
"className": "Queue",
|
|
24
|
+
"kind": "Async"
|
|
25
|
+
},
|
|
26
|
+
"channelName": "Queue_addBulk"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"module": {
|
|
30
|
+
"name": "bullmq",
|
|
31
|
+
"versionRange": ">=5.66.0",
|
|
32
|
+
"filePath": "dist/cjs/classes/worker.js"
|
|
33
|
+
},
|
|
34
|
+
"functionQuery": {
|
|
35
|
+
"methodName": "callProcessJob",
|
|
36
|
+
"className": "Worker",
|
|
37
|
+
"kind": "Async"
|
|
38
|
+
},
|
|
39
|
+
"channelName": "Worker_callProcessJob"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"module": {
|
|
43
|
+
"name": "bullmq",
|
|
44
|
+
"versionRange": ">=5.66.0",
|
|
45
|
+
"filePath": "dist/cjs/classes/flow-producer.js"
|
|
46
|
+
},
|
|
47
|
+
"functionQuery": {
|
|
48
|
+
"methodName": "add",
|
|
49
|
+
"className": "FlowProducer",
|
|
50
|
+
"kind": "Async"
|
|
51
|
+
},
|
|
52
|
+
"channelName": "FlowProducer_add"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"module": {
|
|
56
|
+
"name": "bullmq",
|
|
57
|
+
"versionRange": ">=5.66.0",
|
|
58
|
+
"filePath": "dist/esm/classes/queue.js"
|
|
59
|
+
},
|
|
60
|
+
"functionQuery": {
|
|
61
|
+
"methodName": "add",
|
|
62
|
+
"className": "Queue",
|
|
63
|
+
"kind": "Async"
|
|
64
|
+
},
|
|
65
|
+
"channelName": "Queue_add"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"module": {
|
|
69
|
+
"name": "bullmq",
|
|
70
|
+
"versionRange": ">=5.66.0",
|
|
71
|
+
"filePath": "dist/esm/classes/queue.js"
|
|
72
|
+
},
|
|
73
|
+
"functionQuery": {
|
|
74
|
+
"methodName": "addBulk",
|
|
75
|
+
"className": "Queue",
|
|
76
|
+
"kind": "Async"
|
|
77
|
+
},
|
|
78
|
+
"channelName": "Queue_addBulk"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"module": {
|
|
82
|
+
"name": "bullmq",
|
|
83
|
+
"versionRange": ">=5.66.0",
|
|
84
|
+
"filePath": "dist/esm/classes/worker.js"
|
|
85
|
+
},
|
|
86
|
+
"functionQuery": {
|
|
87
|
+
"methodName": "callProcessJob",
|
|
88
|
+
"className": "Worker",
|
|
89
|
+
"kind": "Async"
|
|
90
|
+
},
|
|
91
|
+
"channelName": "Worker_callProcessJob"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"module": {
|
|
95
|
+
"name": "bullmq",
|
|
96
|
+
"versionRange": ">=5.66.0",
|
|
97
|
+
"filePath": "dist/esm/classes/flow-producer.js"
|
|
98
|
+
},
|
|
99
|
+
"functionQuery": {
|
|
100
|
+
"methodName": "add",
|
|
101
|
+
"className": "FlowProducer",
|
|
102
|
+
"kind": "Async"
|
|
103
|
+
},
|
|
104
|
+
"channelName": "FlowProducer_add"
|
|
105
|
+
}
|
|
106
|
+
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const { channel } = require('./instrument')
|
|
4
3
|
const shimmer = require('../../../datadog-shimmer')
|
|
4
|
+
const { channel } = require('./instrument')
|
|
5
5
|
|
|
6
6
|
const routerMountPaths = new WeakMap() // to track mount paths for router instances
|
|
7
7
|
const layerMatchers = new WeakMap() // to store layer matchers
|
|
@@ -9,6 +9,10 @@ const {
|
|
|
9
9
|
const routeChannel = channel('apm:hono:request:route')
|
|
10
10
|
const handleChannel = channel('apm:hono:request:handle')
|
|
11
11
|
const errorChannel = channel('apm:hono:request:error')
|
|
12
|
+
const nextChannel = channel('apm:hono:middleware:next')
|
|
13
|
+
const enterChannel = channel('apm:hono:middleware:enter')
|
|
14
|
+
const exitChannel = channel('apm:hono:middleware:exit')
|
|
15
|
+
const finishChannel = channel('apm:hono:middleware:finish')
|
|
12
16
|
|
|
13
17
|
function wrapFetch (fetch) {
|
|
14
18
|
return function (request, env, executionCtx) {
|
|
@@ -34,21 +38,62 @@ function wrapCompose (compose) {
|
|
|
34
38
|
|
|
35
39
|
const instrumentedMiddlewares = middlewares.map(h => {
|
|
36
40
|
const [[fn, meta], params] = h
|
|
37
|
-
|
|
38
|
-
const instrumentedFn = (...args) => {
|
|
39
|
-
const context = args[0]
|
|
40
|
-
routeChannel.publish({
|
|
41
|
-
req: context.env.incoming,
|
|
42
|
-
route: meta?.path
|
|
43
|
-
})
|
|
44
|
-
return fn(...args)
|
|
45
|
-
}
|
|
46
|
-
return [[instrumentedFn, meta], params]
|
|
41
|
+
return [[wrapMiddleware(fn, meta?.path), meta], params]
|
|
47
42
|
})
|
|
48
43
|
return compose.call(this, instrumentedMiddlewares, instrumentedOnError, onNotFound)
|
|
49
44
|
}
|
|
50
45
|
}
|
|
51
46
|
|
|
47
|
+
function wrapNext (req, route, next) {
|
|
48
|
+
return shimmer.wrapFunction(
|
|
49
|
+
next,
|
|
50
|
+
(next) =>
|
|
51
|
+
function () {
|
|
52
|
+
nextChannel.publish({ req, route })
|
|
53
|
+
|
|
54
|
+
return next.apply(this, arguments)
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function wrapMiddleware (middleware, route) {
|
|
60
|
+
const name = middleware.name
|
|
61
|
+
return shimmer.wrapFunction(
|
|
62
|
+
middleware,
|
|
63
|
+
(middleware) =>
|
|
64
|
+
function (context, next) {
|
|
65
|
+
const req = context.env.incoming
|
|
66
|
+
routeChannel.publish({ req, route })
|
|
67
|
+
enterChannel.publish({ req, name, route })
|
|
68
|
+
if (typeof next === 'function') {
|
|
69
|
+
arguments[1] = wrapNext(req, route, next)
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const result = middleware.apply(this, arguments)
|
|
73
|
+
if (result && typeof result.then === 'function') {
|
|
74
|
+
return result.then(
|
|
75
|
+
(result) => {
|
|
76
|
+
finishChannel.publish({ req })
|
|
77
|
+
return result
|
|
78
|
+
},
|
|
79
|
+
(error) => {
|
|
80
|
+
errorChannel.publish({ req, error })
|
|
81
|
+
throw error
|
|
82
|
+
}
|
|
83
|
+
)
|
|
84
|
+
}
|
|
85
|
+
finishChannel.publish({ req })
|
|
86
|
+
return result
|
|
87
|
+
} catch (error) {
|
|
88
|
+
errorChannel.publish({ req, error })
|
|
89
|
+
throw error
|
|
90
|
+
} finally {
|
|
91
|
+
exitChannel.publish({ req, route })
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
)
|
|
95
|
+
}
|
|
96
|
+
|
|
52
97
|
addHook({
|
|
53
98
|
name: 'hono',
|
|
54
99
|
versions: ['>=4'],
|
|
@@ -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:ioredis:command:start')
|
|
10
10
|
const finishCh = channel('apm:ioredis: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 startCh = channel('apm:iovalkey:command:start')
|
|
10
10
|
const finishCh = channel('apm:iovalkey:command:finish')
|