dd-trace 5.53.0 → 5.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE-3rdparty.csv +2 -1
- package/ci/cypress/plugin.js +8 -0
- package/ci/cypress/polyfills.js +23 -0
- package/ci/init.js +8 -7
- package/index.d.ts +33 -16
- package/initialize.mjs +5 -6
- package/package.json +40 -38
- package/packages/datadog-code-origin/index.js +22 -4
- package/packages/datadog-core/src/utils/src/get.js +1 -1
- package/packages/datadog-core/src/utils/src/has.js +1 -1
- package/packages/datadog-core/src/utils/src/kebabcase.js +4 -6
- package/packages/datadog-core/src/utils/src/parse-tags.js +1 -1
- package/packages/datadog-core/src/utils/src/pick.js +2 -2
- package/packages/datadog-core/src/utils/src/set.js +1 -1
- package/packages/datadog-core/src/utils/src/uniq.js +1 -1
- package/packages/datadog-instrumentations/src/amqp10.js +19 -17
- package/packages/datadog-instrumentations/src/amqplib.js +52 -35
- package/packages/datadog-instrumentations/src/apollo.js +2 -2
- package/packages/datadog-instrumentations/src/aws-sdk.js +1 -1
- package/packages/datadog-instrumentations/src/cassandra-driver.js +10 -10
- package/packages/datadog-instrumentations/src/child_process.js +1 -2
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +89 -75
- package/packages/datadog-instrumentations/src/cookie-parser.js +1 -1
- package/packages/datadog-instrumentations/src/couchbase.js +6 -9
- package/packages/datadog-instrumentations/src/cucumber.js +108 -68
- package/packages/datadog-instrumentations/src/cypress.js +2 -1
- package/packages/datadog-instrumentations/src/dns.js +5 -5
- package/packages/datadog-instrumentations/src/elasticsearch.js +9 -10
- package/packages/datadog-instrumentations/src/fastify.js +7 -9
- package/packages/datadog-instrumentations/src/fs.js +1 -1
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +35 -43
- package/packages/datadog-instrumentations/src/graphql.js +7 -10
- package/packages/datadog-instrumentations/src/grpc/client.js +11 -23
- package/packages/datadog-instrumentations/src/grpc/server.js +7 -20
- package/packages/datadog-instrumentations/src/hapi.js +10 -11
- package/packages/datadog-instrumentations/src/helpers/extract-package-and-module-path.js +16 -10
- package/packages/datadog-instrumentations/src/helpers/fetch.js +4 -5
- package/packages/datadog-instrumentations/src/helpers/hook.js +2 -3
- package/packages/datadog-instrumentations/src/helpers/hooks.js +0 -1
- package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -41
- package/packages/datadog-instrumentations/src/helpers/register.js +11 -12
- package/packages/datadog-instrumentations/src/http/client.js +14 -20
- package/packages/datadog-instrumentations/src/jest.js +201 -143
- package/packages/datadog-instrumentations/src/kafkajs.js +52 -44
- package/packages/datadog-instrumentations/src/knex.js +4 -4
- package/packages/datadog-instrumentations/src/koa.js +2 -3
- package/packages/datadog-instrumentations/src/ldapjs.js +3 -4
- package/packages/datadog-instrumentations/src/mariadb.js +49 -65
- package/packages/datadog-instrumentations/src/mocha/main.js +116 -73
- package/packages/datadog-instrumentations/src/mocha/utils.js +36 -12
- package/packages/datadog-instrumentations/src/mocha/worker.js +6 -0
- package/packages/datadog-instrumentations/src/mocha.js +3 -1
- package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
- package/packages/datadog-instrumentations/src/mysql.js +30 -37
- package/packages/datadog-instrumentations/src/mysql2.js +53 -47
- package/packages/datadog-instrumentations/src/net.js +1 -1
- package/packages/datadog-instrumentations/src/next.js +1 -0
- package/packages/datadog-instrumentations/src/nyc.js +3 -2
- package/packages/datadog-instrumentations/src/openai.js +22 -24
- package/packages/datadog-instrumentations/src/oracledb.js +1 -1
- package/packages/datadog-instrumentations/src/otel-sdk-trace.js +4 -3
- package/packages/datadog-instrumentations/src/pg.js +3 -5
- package/packages/datadog-instrumentations/src/playwright.js +123 -83
- package/packages/datadog-instrumentations/src/protobufjs.js +3 -4
- package/packages/datadog-instrumentations/src/redis.js +4 -4
- package/packages/datadog-instrumentations/src/restify.js +9 -13
- package/packages/datadog-instrumentations/src/rhea.js +42 -54
- package/packages/datadog-instrumentations/src/router.js +30 -32
- package/packages/datadog-instrumentations/src/tedious.js +2 -3
- package/packages/datadog-instrumentations/src/vitest.js +87 -52
- package/packages/datadog-plugin-amqp10/src/consumer.js +7 -3
- package/packages/datadog-plugin-amqp10/src/producer.js +7 -3
- package/packages/datadog-plugin-amqplib/src/client.js +6 -2
- package/packages/datadog-plugin-amqplib/src/consumer.js +7 -3
- package/packages/datadog-plugin-amqplib/src/producer.js +7 -3
- package/packages/datadog-plugin-amqplib/src/util.js +1 -1
- package/packages/datadog-plugin-apollo/src/gateway/request.js +5 -6
- package/packages/datadog-plugin-apollo/src/gateway/validate.js +2 -3
- package/packages/datadog-plugin-avsc/src/schema_iterator.js +12 -12
- package/packages/datadog-plugin-aws-sdk/src/base.js +15 -10
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/tracing.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +13 -13
- package/packages/datadog-plugin-aws-sdk/src/services/cloudwatchlogs.js +3 -5
- package/packages/datadog-plugin-aws-sdk/src/services/dynamodb.js +28 -43
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +10 -11
- package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +4 -6
- package/packages/datadog-plugin-aws-sdk/src/services/redshift.js +3 -5
- package/packages/datadog-plugin-aws-sdk/src/services/s3.js +3 -5
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +2 -3
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +11 -15
- package/packages/datadog-plugin-aws-sdk/src/services/stepfunctions.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/util.js +5 -6
- package/packages/datadog-plugin-cassandra-driver/src/index.js +1 -1
- package/packages/datadog-plugin-child_process/src/index.js +4 -4
- package/packages/datadog-plugin-child_process/src/scrub-cmd-params.js +23 -23
- package/packages/datadog-plugin-cucumber/src/index.js +60 -4
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +99 -28
- package/packages/datadog-plugin-cypress/src/plugin.js +11 -1
- package/packages/datadog-plugin-cypress/src/support.js +24 -5
- package/packages/datadog-plugin-dd-trace-api/src/index.js +2 -1
- package/packages/datadog-plugin-elasticsearch/src/index.js +1 -1
- package/packages/datadog-plugin-express/src/code_origin.js +30 -0
- package/packages/datadog-plugin-express/src/index.js +10 -12
- package/packages/datadog-plugin-express/src/tracing.js +19 -0
- package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +7 -3
- package/packages/datadog-plugin-google-cloud-pubsub/src/consumer.js +12 -7
- package/packages/datadog-plugin-google-cloud-pubsub/src/producer.js +6 -2
- package/packages/datadog-plugin-google-cloud-vertexai/src/tracing.js +27 -10
- package/packages/datadog-plugin-graphql/src/execute.js +2 -2
- package/packages/datadog-plugin-graphql/src/index.js +10 -8
- package/packages/datadog-plugin-graphql/src/resolve.js +19 -12
- package/packages/datadog-plugin-graphql/src/tools/index.js +1 -0
- package/packages/datadog-plugin-graphql/src/tools/signature.js +1 -0
- package/packages/datadog-plugin-graphql/src/tools/transforms.js +1 -0
- package/packages/datadog-plugin-grpc/src/client.js +2 -2
- package/packages/datadog-plugin-grpc/src/util.js +2 -2
- package/packages/datadog-plugin-http/src/client.js +23 -13
- package/packages/datadog-plugin-http2/src/client.js +24 -25
- package/packages/datadog-plugin-jest/src/index.js +26 -23
- package/packages/datadog-plugin-jest/src/util.js +8 -8
- package/packages/datadog-plugin-kafkajs/src/batch-consumer.js +3 -1
- package/packages/datadog-plugin-kafkajs/src/consumer.js +9 -5
- package/packages/datadog-plugin-kafkajs/src/producer.js +8 -3
- package/packages/datadog-plugin-kafkajs/src/utils.js +1 -1
- package/packages/datadog-plugin-langchain/src/handlers/chain.js +7 -7
- package/packages/datadog-plugin-langchain/src/handlers/embedding.js +2 -2
- package/packages/datadog-plugin-langchain/src/handlers/language_models/chat_model.js +6 -4
- package/packages/datadog-plugin-langchain/src/handlers/language_models/llm.js +5 -4
- package/packages/datadog-plugin-langchain/src/tracing.js +11 -10
- package/packages/datadog-plugin-mariadb/src/index.js +3 -9
- package/packages/datadog-plugin-mocha/src/index.js +39 -14
- package/packages/datadog-plugin-mongodb-core/src/index.js +3 -2
- package/packages/datadog-plugin-mysql/src/index.js +22 -9
- package/packages/datadog-plugin-mysql2/src/index.js +16 -0
- package/packages/datadog-plugin-net/src/tcp.js +1 -1
- package/packages/datadog-plugin-next/src/index.js +7 -6
- package/packages/datadog-plugin-openai/src/services.js +6 -10
- package/packages/datadog-plugin-openai/src/tracing.js +12 -18
- package/packages/datadog-plugin-oracledb/src/index.js +1 -1
- package/packages/datadog-plugin-playwright/src/index.js +25 -4
- package/packages/datadog-plugin-protobufjs/src/schema_iterator.js +8 -9
- package/packages/datadog-plugin-redis/src/index.js +2 -4
- package/packages/datadog-plugin-rhea/src/consumer.js +8 -6
- package/packages/datadog-plugin-rhea/src/producer.js +5 -2
- package/packages/datadog-plugin-router/src/index.js +1 -1
- package/packages/datadog-plugin-selenium/src/index.js +1 -6
- package/packages/datadog-plugin-vitest/src/index.js +52 -35
- package/packages/datadog-shimmer/src/shimmer.js +4 -8
- package/packages/dd-trace/src/appsec/api_security_sampler.js +2 -2
- package/packages/dd-trace/src/appsec/blocked_templates.js +1 -1
- package/packages/dd-trace/src/appsec/blocking.js +6 -20
- package/packages/dd-trace/src/appsec/iast/analyzers/analyzers.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +0 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hsts-header-missing-analyzer.js +7 -12
- package/packages/dd-trace/src/appsec/iast/analyzers/missing-header-analyzer.js +5 -8
- package/packages/dd-trace/src/appsec/iast/analyzers/nosql-injection-mongodb-analyzer.js +4 -0
- package/packages/dd-trace/src/appsec/iast/analyzers/path-traversal-analyzer.js +9 -12
- package/packages/dd-trace/src/appsec/iast/analyzers/vulnerability-analyzer.js +5 -4
- package/packages/dd-trace/src/appsec/iast/context/context-plugin.js +2 -3
- package/packages/dd-trace/src/appsec/iast/iast-plugin.js +3 -3
- package/packages/dd-trace/src/appsec/iast/index.js +1 -0
- package/packages/dd-trace/src/appsec/iast/overhead-controller.js +102 -7
- package/packages/dd-trace/src/appsec/iast/path-line.js +7 -8
- package/packages/dd-trace/src/appsec/iast/security-controls/index.js +16 -24
- package/packages/dd-trace/src/appsec/iast/security-controls/parser.js +6 -6
- package/packages/dd-trace/src/appsec/iast/taint-tracking/filter.js +2 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations-taint-object.js +3 -3
- package/packages/dd-trace/src/appsec/iast/taint-tracking/operations.js +4 -28
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +2 -8
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugins/kafka.js +3 -4
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter-esm.mjs +1 -1
- package/packages/dd-trace/src/appsec/iast/taint-tracking/rewriter.js +7 -8
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -2
- package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +7 -7
- package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +2 -3
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/range-utils.js +10 -11
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/command-sensitive-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/ldap-sensitive-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +7 -7
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-handler.js +23 -28
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-regex.js +3 -3
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/index.js +4 -4
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/utils.js +6 -11
- package/packages/dd-trace/src/appsec/iast/vulnerabilities.js +0 -1
- package/packages/dd-trace/src/appsec/iast/vulnerability-reporter.js +9 -11
- package/packages/dd-trace/src/appsec/index.js +5 -5
- package/packages/dd-trace/src/appsec/rasp/index.js +15 -15
- package/packages/dd-trace/src/appsec/rasp/lfi.js +2 -1
- package/packages/dd-trace/src/appsec/reporter.js +232 -41
- package/packages/dd-trace/src/appsec/rule_manager.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/set_user.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/track_event.js +3 -3
- package/packages/dd-trace/src/appsec/stack_trace.js +2 -4
- package/packages/dd-trace/src/appsec/telemetry/index.js +31 -1
- package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -5
- package/packages/dd-trace/src/appsec/telemetry/waf.js +3 -5
- package/packages/dd-trace/src/appsec/user_tracking.js +3 -5
- package/packages/dd-trace/src/appsec/waf/waf_context_wrapper.js +8 -4
- package/packages/dd-trace/src/azure_metadata.js +9 -9
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +9 -8
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/worker/index.js +2 -2
- package/packages/dd-trace/src/ci-visibility/early-flake-detection/get-known-tests.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +3 -3
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +3 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +6 -4
- package/packages/dd-trace/src/ci-visibility/exporters/git/git_metadata.js +6 -5
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/index.js +7 -6
- package/packages/dd-trace/src/ci-visibility/exporters/test-worker/writer.js +0 -2
- package/packages/dd-trace/src/ci-visibility/intelligent-test-runner/get-skippable-suites.js +3 -2
- package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +5 -4
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +12 -8
- package/packages/dd-trace/src/ci-visibility/telemetry.js +4 -0
- package/packages/dd-trace/src/ci-visibility/test-management/get-test-management-tests.js +3 -2
- package/packages/dd-trace/src/config-helper.js +89 -0
- package/packages/dd-trace/src/config.js +159 -129
- package/packages/dd-trace/src/config_stable.js +10 -7
- package/packages/dd-trace/src/datastreams/encoding.js +9 -9
- package/packages/dd-trace/src/datastreams/fnv.js +2 -2
- package/packages/dd-trace/src/datastreams/pathway.js +4 -4
- package/packages/dd-trace/src/datastreams/processor.js +5 -7
- package/packages/dd-trace/src/datastreams/schemas/schema_builder.js +7 -7
- package/packages/dd-trace/src/datastreams/schemas/schema_sampler.js +4 -6
- package/packages/dd-trace/src/datastreams/size.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +75 -69
- package/packages/dd-trace/src/debugger/devtools_client/condition.js +7 -10
- package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/index.js +9 -2
- package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +18 -38
- package/packages/dd-trace/src/debugger/devtools_client/send.js +3 -2
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/collector.js +1 -2
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +11 -14
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +4 -4
- package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +2 -10
- package/packages/dd-trace/src/debugger/devtools_client/state.js +10 -3
- package/packages/dd-trace/src/debugger/index.js +1 -0
- package/packages/dd-trace/src/dogstatsd.js +7 -6
- package/packages/dd-trace/src/encode/0.4.js +14 -11
- package/packages/dd-trace/src/encode/0.5.js +4 -6
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +8 -8
- package/packages/dd-trace/src/encode/coverage-ci-visibility.js +1 -1
- package/packages/dd-trace/src/encode/tags-processors.js +1 -1
- package/packages/dd-trace/src/exporter.js +7 -6
- package/packages/dd-trace/src/exporters/agent/writer.js +1 -5
- package/packages/dd-trace/src/exporters/common/docker.js +4 -3
- package/packages/dd-trace/src/exporters/common/form-data.js +6 -4
- package/packages/dd-trace/src/exporters/common/request.js +5 -2
- package/packages/dd-trace/src/exporters/common/util.js +4 -2
- package/packages/dd-trace/src/external-logger/src/index.js +5 -5
- package/packages/dd-trace/src/flare/file.js +1 -5
- package/packages/dd-trace/src/format.js +1 -1
- package/packages/dd-trace/src/git_properties.js +1 -1
- package/packages/dd-trace/src/id.js +15 -9
- package/packages/dd-trace/src/iitm.js +10 -22
- package/packages/dd-trace/src/index.js +4 -3
- package/packages/dd-trace/src/lambda/handler.js +7 -6
- package/packages/dd-trace/src/lambda/index.js +2 -1
- package/packages/dd-trace/src/lambda/runtime/patch.js +7 -6
- package/packages/dd-trace/src/lambda/runtime/ritm.js +4 -3
- package/packages/dd-trace/src/llmobs/constants/tags.js +1 -0
- package/packages/dd-trace/src/llmobs/index.js +21 -5
- package/packages/dd-trace/src/llmobs/noop.js +18 -20
- package/packages/dd-trace/src/llmobs/plugins/bedrockruntime.js +6 -6
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chain.js +2 -6
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/chat_model.js +3 -3
- package/packages/dd-trace/src/llmobs/plugins/langchain/handlers/index.js +11 -13
- package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +6 -6
- package/packages/dd-trace/src/llmobs/plugins/openai.js +2 -3
- package/packages/dd-trace/src/llmobs/sdk.js +4 -3
- package/packages/dd-trace/src/llmobs/span_processor.js +1 -1
- package/packages/dd-trace/src/llmobs/tagger.js +129 -102
- package/packages/dd-trace/src/llmobs/util.js +9 -9
- package/packages/dd-trace/src/llmobs/writers/base.js +1 -1
- package/packages/dd-trace/src/llmobs/writers/util.js +1 -1
- package/packages/dd-trace/src/log/index.js +9 -8
- package/packages/dd-trace/src/log/log.js +1 -1
- package/packages/dd-trace/src/log/writer.js +3 -4
- package/packages/dd-trace/src/msgpack/chunk.js +3 -3
- package/packages/dd-trace/src/msgpack/encoder.js +31 -31
- package/packages/dd-trace/src/noop/dogstatsd.js +6 -6
- package/packages/dd-trace/src/noop/span.js +4 -6
- package/packages/dd-trace/src/noop/tracer.js +1 -2
- package/packages/dd-trace/src/opentelemetry/span_processor.js +2 -2
- package/packages/dd-trace/src/opentelemetry/tracer.js +7 -6
- package/packages/dd-trace/src/opentracing/propagation/log.js +10 -13
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +40 -37
- package/packages/dd-trace/src/opentracing/propagation/tracestate.js +8 -4
- package/packages/dd-trace/src/opentracing/span.js +16 -20
- package/packages/dd-trace/src/opentracing/tracer.js +9 -6
- package/packages/dd-trace/src/payload-tagging/config/index.js +17 -21
- package/packages/dd-trace/src/payload-tagging/index.js +1 -1
- package/packages/dd-trace/src/payload-tagging/tagging.js +6 -6
- package/packages/dd-trace/src/pkg.js +1 -1
- package/packages/dd-trace/src/plugin_manager.js +4 -3
- package/packages/dd-trace/src/plugins/ci_plugin.js +87 -11
- package/packages/dd-trace/src/plugins/consumer.js +2 -2
- package/packages/dd-trace/src/plugins/inbound.js +5 -1
- package/packages/dd-trace/src/plugins/index.js +0 -1
- package/packages/dd-trace/src/plugins/outbound.js +4 -5
- package/packages/dd-trace/src/plugins/plugin.js +1 -1
- package/packages/dd-trace/src/plugins/producer.js +2 -2
- package/packages/dd-trace/src/plugins/storage.js +2 -2
- package/packages/dd-trace/src/plugins/util/ci.js +28 -20
- package/packages/dd-trace/src/plugins/util/git.js +166 -12
- package/packages/dd-trace/src/plugins/util/inferred_proxy.js +1 -1
- package/packages/dd-trace/src/plugins/util/ip_extractor.js +1 -1
- package/packages/dd-trace/src/plugins/util/llm.js +27 -10
- package/packages/dd-trace/src/plugins/util/stacktrace.js +9 -2
- package/packages/dd-trace/src/plugins/util/test.js +315 -51
- package/packages/dd-trace/src/plugins/util/url.js +1 -1
- package/packages/dd-trace/src/plugins/util/urlfilter.js +13 -17
- package/packages/dd-trace/src/plugins/util/user-provided-git.js +14 -4
- package/packages/dd-trace/src/plugins/util/web.js +8 -8
- package/packages/dd-trace/src/priority_sampler.js +64 -53
- package/packages/dd-trace/src/profiling/config.js +51 -35
- package/packages/dd-trace/src/profiling/exporter_cli.js +20 -20
- package/packages/dd-trace/src/profiling/exporters/agent.js +1 -1
- package/packages/dd-trace/src/profiling/exporters/event_serializer.js +7 -6
- package/packages/dd-trace/src/profiling/exporters/file.js +2 -1
- package/packages/dd-trace/src/profiling/index.js +2 -1
- package/packages/dd-trace/src/profiling/profiler.js +44 -6
- package/packages/dd-trace/src/profiling/profilers/events.js +14 -17
- package/packages/dd-trace/src/profiling/profilers/shared.js +6 -1
- package/packages/dd-trace/src/profiling/profilers/space.js +3 -3
- package/packages/dd-trace/src/profiling/profilers/wall.js +6 -7
- package/packages/dd-trace/src/profiling/ssi-heuristics.js +3 -5
- package/packages/dd-trace/src/profiling/ssi-telemetry-mock-profiler.js +3 -1
- package/packages/dd-trace/src/profiling/tagger.js +21 -13
- package/packages/dd-trace/src/profiling/webspan-utils.js +1 -1
- package/packages/dd-trace/src/proxy.js +9 -10
- package/packages/dd-trace/src/random_sampler.js +40 -0
- package/packages/dd-trace/src/rate_limiter.js +4 -4
- package/packages/dd-trace/src/remote_config/index.js +3 -7
- package/packages/dd-trace/src/remote_config/manager.js +25 -13
- package/packages/dd-trace/src/require-package-json.js +1 -1
- package/packages/dd-trace/src/ritm.js +8 -8
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +5 -4
- package/packages/dd-trace/src/sampler.js +41 -4
- package/packages/dd-trace/src/sampling_rule.js +12 -3
- package/packages/dd-trace/src/scope.js +1 -1
- package/packages/dd-trace/src/serverless.js +11 -4
- package/packages/dd-trace/src/service-naming/schemas/util.js +1 -1
- package/packages/dd-trace/src/service-naming/schemas/v0/web.js +2 -3
- package/packages/dd-trace/src/span_processor.js +5 -4
- package/packages/dd-trace/src/span_sampler.js +4 -1
- package/packages/dd-trace/src/standalone/tracesource.js +2 -3
- package/packages/dd-trace/src/standalone/tracesource_priority_sampler.js +1 -2
- package/packages/dd-trace/src/startup-log.js +6 -18
- package/packages/dd-trace/src/supported-configurations.json +439 -0
- package/packages/dd-trace/src/telemetry/dependencies.js +64 -59
- package/packages/dd-trace/src/telemetry/logs/log-collector.js +9 -10
- package/packages/dd-trace/src/telemetry/metrics.js +10 -5
- package/packages/dd-trace/src/telemetry/send-data.js +8 -7
- package/packages/dd-trace/src/telemetry/telemetry.js +31 -45
- package/packages/dd-trace/src/tracer.js +3 -7
- package/packages/dd-trace/src/util.js +1 -6
- package/version.js +1 -0
- package/packages/datadog-instrumentations/src/paperplane.js +0 -77
- package/packages/datadog-plugin-paperplane/src/index.js +0 -25
- package/packages/datadog-plugin-paperplane/src/logger.js +0 -11
- package/packages/datadog-plugin-paperplane/src/server.js +0 -24
- package/packages/dd-trace/src/appsec/iast/analyzers/header-injection-analyzer.js +0 -122
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/header-sensitive-analyzer.js +0 -20
|
@@ -44,27 +44,24 @@ class AbortError extends Error {
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
const types = new Set(['query', 'mutation', 'subscription'])
|
|
48
|
+
|
|
47
49
|
function getOperation (document, operationName) {
|
|
48
50
|
if (!document || !Array.isArray(document.definitions)) {
|
|
49
51
|
return
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return definitions
|
|
57
|
-
.filter(def => types.indexOf(def.operation) !== -1)
|
|
58
|
-
.find(def => operationName === (def.name && def.name.value))
|
|
59
|
-
} else {
|
|
60
|
-
return definitions.find(def => types.indexOf(def.operation) !== -1)
|
|
54
|
+
for (const definition of document.definitions) {
|
|
55
|
+
if (definition && types.has(definition.operation) && (!operationName || definition.name?.value === operationName)) {
|
|
56
|
+
return definition
|
|
57
|
+
}
|
|
61
58
|
}
|
|
62
59
|
}
|
|
63
60
|
|
|
64
61
|
function normalizeArgs (args, defaultFieldResolver) {
|
|
65
62
|
if (args.length !== 1) return normalizePositional(args, defaultFieldResolver)
|
|
66
63
|
|
|
67
|
-
args[0].contextValue
|
|
64
|
+
args[0].contextValue ||= {}
|
|
68
65
|
args[0].fieldResolver = wrapResolve(args[0].fieldResolver || defaultFieldResolver)
|
|
69
66
|
|
|
70
67
|
return args[0]
|
|
@@ -4,8 +4,6 @@ const types = require('./types')
|
|
|
4
4
|
const { addHook, channel } = require('../helpers/instrument')
|
|
5
5
|
const shimmer = require('../../../datadog-shimmer')
|
|
6
6
|
|
|
7
|
-
const nodeMajor = parseInt(process.versions.node.split('.')[0])
|
|
8
|
-
|
|
9
7
|
const patched = new WeakSet()
|
|
10
8
|
const instances = new WeakMap()
|
|
11
9
|
|
|
@@ -98,7 +96,7 @@ function wrapMethod (method, path, type, hasPeer) {
|
|
|
98
96
|
return wrapped
|
|
99
97
|
}
|
|
100
98
|
|
|
101
|
-
function wrapCallback (ctx, callback = () => {
|
|
99
|
+
function wrapCallback (ctx, callback = () => {}) {
|
|
102
100
|
return shimmer.wrapFunction(callback, callback => function (err) {
|
|
103
101
|
if (err) {
|
|
104
102
|
ctx.error = err
|
|
@@ -112,18 +110,18 @@ function wrapCallback (ctx, callback = () => { }) {
|
|
|
112
110
|
})
|
|
113
111
|
}
|
|
114
112
|
|
|
115
|
-
function
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
113
|
+
const onStatusWithPeer = function (ctx, arg1, thisArg) {
|
|
114
|
+
ctx.result = arg1
|
|
115
|
+
ctx.peer = thisArg.getPeer()
|
|
116
|
+
finishChannel.publish(ctx)
|
|
117
|
+
}
|
|
121
118
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
119
|
+
const onStatusWithoutPeer = function (ctx, arg1) {
|
|
120
|
+
ctx.result = arg1
|
|
121
|
+
finishChannel.publish(ctx)
|
|
122
|
+
}
|
|
126
123
|
|
|
124
|
+
function createWrapEmit (ctx, hasPeer = false) {
|
|
127
125
|
const onStatus = hasPeer ? onStatusWithPeer : onStatusWithoutPeer
|
|
128
126
|
|
|
129
127
|
return function wrapEmit (emit) {
|
|
@@ -245,16 +243,6 @@ function patch (hasPeer = false) {
|
|
|
245
243
|
}
|
|
246
244
|
}
|
|
247
245
|
|
|
248
|
-
if (nodeMajor <= 14) {
|
|
249
|
-
addHook({ name: 'grpc', versions: ['>=1.24.3'] }, patch(true))
|
|
250
|
-
|
|
251
|
-
addHook({ name: 'grpc', versions: ['>=1.24.3'], file: 'src/client.js' }, client => {
|
|
252
|
-
shimmer.wrap(client, 'makeClientConstructor', createWrapMakeClientConstructor(true))
|
|
253
|
-
|
|
254
|
-
return client
|
|
255
|
-
})
|
|
256
|
-
}
|
|
257
|
-
|
|
258
246
|
addHook({ name: '@grpc/grpc-js', versions: ['>=1.0.3 <1.1.4'] }, patch(false))
|
|
259
247
|
|
|
260
248
|
addHook({ name: '@grpc/grpc-js', versions: ['>=1.0.3 <1.1.4'], file: 'build/src/make-client.js' }, client => {
|
|
@@ -4,8 +4,6 @@ const types = require('./types')
|
|
|
4
4
|
const { channel, addHook } = require('../helpers/instrument')
|
|
5
5
|
const shimmer = require('../../../datadog-shimmer')
|
|
6
6
|
|
|
7
|
-
const nodeMajor = parseInt(process.versions.node.split('.')[0])
|
|
8
|
-
|
|
9
7
|
const startChannel = channel('apm:grpc:server:request:start')
|
|
10
8
|
const asyncStartChannel = channel('apm:grpc:server:request:asyncStart')
|
|
11
9
|
const errorChannel = channel('apm:grpc:server:request:error')
|
|
@@ -17,17 +15,14 @@ const emitChannel = channel('apm:grpc:server:request:emit')
|
|
|
17
15
|
const OK = 0
|
|
18
16
|
const CANCELLED = 1
|
|
19
17
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (server.type === 'unary' && typeof args[1] !== 'function') return false
|
|
27
|
-
|
|
28
|
-
return true
|
|
29
|
-
}
|
|
18
|
+
const isValid = (server, args) => {
|
|
19
|
+
return Boolean(startChannel.hasSubscribers &&
|
|
20
|
+
server?.type &&
|
|
21
|
+
args[0] &&
|
|
22
|
+
(server.type === 'unary' ? typeof args[1] === 'function' : isEmitter(args[0])))
|
|
23
|
+
}
|
|
30
24
|
|
|
25
|
+
function wrapHandler (func, name) {
|
|
31
26
|
return function (call, callback) {
|
|
32
27
|
if (!isValid(this, arguments)) return func.apply(this, arguments)
|
|
33
28
|
|
|
@@ -152,14 +147,6 @@ function isEmitter (obj) {
|
|
|
152
147
|
return typeof obj.emit === 'function' && typeof obj.once === 'function'
|
|
153
148
|
}
|
|
154
149
|
|
|
155
|
-
if (nodeMajor <= 14) {
|
|
156
|
-
addHook({ name: 'grpc', versions: ['>=1.24.3'], file: 'src/server.js' }, server => {
|
|
157
|
-
shimmer.wrap(server.Server.prototype, 'register', wrapRegister)
|
|
158
|
-
|
|
159
|
-
return server
|
|
160
|
-
})
|
|
161
|
-
}
|
|
162
|
-
|
|
163
150
|
addHook({ name: '@grpc/grpc-js', versions: ['>=1.0.3'], file: 'build/src/server.js' }, server => {
|
|
164
151
|
shimmer.wrap(server.Server.prototype, 'register', wrapRegister)
|
|
165
152
|
|
|
@@ -42,7 +42,10 @@ function wrapExt (ext) {
|
|
|
42
42
|
if (events !== null && typeof events === 'object') {
|
|
43
43
|
arguments[0] = wrapEvents(events)
|
|
44
44
|
} else {
|
|
45
|
-
|
|
45
|
+
// The method should never be an array. The check is done as a safe guard
|
|
46
|
+
// during a refactoring where it was unclear if this would be possible or
|
|
47
|
+
// not.
|
|
48
|
+
arguments[1] = Array.isArray(method) ? method.map(wrapHandler) : [wrapHandler(method)]
|
|
46
49
|
}
|
|
47
50
|
|
|
48
51
|
return ext.apply(this, arguments)
|
|
@@ -75,17 +78,13 @@ function wrapRebuild (rebuild) {
|
|
|
75
78
|
}
|
|
76
79
|
}
|
|
77
80
|
|
|
78
|
-
function
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
+
function wrapEvents (events, flat = false) {
|
|
82
|
+
const eventsArray = Array.isArray(events) ? events : [events]
|
|
81
83
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (!event || !event.method) return event
|
|
84
|
+
return eventsArray.map(event => {
|
|
85
|
+
if (!event?.method) return event
|
|
85
86
|
|
|
86
|
-
return
|
|
87
|
-
method: wrapExtension(event.method)
|
|
88
|
-
})
|
|
87
|
+
return { ...event, method: wrapHandler(event.method) }
|
|
89
88
|
})
|
|
90
89
|
}
|
|
91
90
|
|
|
@@ -93,7 +92,7 @@ function wrapHandler (handler) {
|
|
|
93
92
|
if (typeof handler !== 'function') return handler
|
|
94
93
|
|
|
95
94
|
return shimmer.wrapFunction(handler, handler => function (request, h) {
|
|
96
|
-
const req = request
|
|
95
|
+
const req = request?.raw?.req
|
|
97
96
|
|
|
98
97
|
if (!req) return handler.apply(this, arguments)
|
|
99
98
|
|
|
@@ -10,27 +10,33 @@ const NM = 'node_modules/'
|
|
|
10
10
|
*/
|
|
11
11
|
module.exports = function extractPackageAndModulePath (fullPath) {
|
|
12
12
|
const nm = fullPath.lastIndexOf(NM)
|
|
13
|
-
if (nm
|
|
13
|
+
if (nm === -1) {
|
|
14
14
|
return { pkg: null, path: null }
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
const subPath = fullPath.
|
|
17
|
+
const subPath = fullPath.slice(nm + NM.length)
|
|
18
18
|
const firstSlash = subPath.indexOf('/')
|
|
19
19
|
|
|
20
|
-
const firstPath = fullPath.
|
|
20
|
+
const firstPath = fullPath.slice(0, nm + NM.length)
|
|
21
|
+
|
|
22
|
+
const firstSlashSubPath = subPath.slice(Math.max(0, firstSlash + 1))
|
|
21
23
|
|
|
22
24
|
if (subPath[0] === '@') {
|
|
23
|
-
const secondSlash =
|
|
25
|
+
const secondSlash = firstSlashSubPath.indexOf('/')
|
|
26
|
+
const pkg = subPath.slice(0, Math.max(0, firstSlash + 1 + secondSlash))
|
|
27
|
+
|
|
24
28
|
return {
|
|
25
|
-
pkg
|
|
26
|
-
path: subPath.
|
|
27
|
-
pkgJson: firstPath +
|
|
29
|
+
pkg,
|
|
30
|
+
path: subPath.slice(Math.max(0, firstSlash + 1 + secondSlash + 1)),
|
|
31
|
+
pkgJson: firstPath + pkg + '/package.json'
|
|
28
32
|
}
|
|
29
33
|
}
|
|
30
34
|
|
|
35
|
+
const pkg = subPath.slice(0, Math.max(0, firstSlash))
|
|
36
|
+
|
|
31
37
|
return {
|
|
32
|
-
pkg
|
|
33
|
-
path:
|
|
34
|
-
pkgJson: firstPath +
|
|
38
|
+
pkg,
|
|
39
|
+
path: firstSlashSubPath,
|
|
40
|
+
pkgJson: firstPath + pkg + '/package.json'
|
|
35
41
|
}
|
|
36
42
|
}
|
|
@@ -16,12 +16,11 @@ exports.createWrapFetch = function createWrapFetch (Request, ch, onLoad) {
|
|
|
16
16
|
const ctx = { req: input }
|
|
17
17
|
|
|
18
18
|
return ch.tracePromise(() => fetch.call(this, input, init), ctx)
|
|
19
|
-
} else {
|
|
20
|
-
const req = new Request(input, init)
|
|
21
|
-
const ctx = { req }
|
|
22
|
-
|
|
23
|
-
return ch.tracePromise(() => fetch.call(this, req), ctx)
|
|
24
19
|
}
|
|
20
|
+
const req = new Request(input, init)
|
|
21
|
+
const ctx = { req }
|
|
22
|
+
|
|
23
|
+
return ch.tracePromise(() => fetch.call(this, req), ctx)
|
|
25
24
|
}
|
|
26
25
|
}
|
|
27
26
|
}
|
|
@@ -22,7 +22,7 @@ function Hook (modules, hookOptions, onrequire) {
|
|
|
22
22
|
this._patched = Object.create(null)
|
|
23
23
|
|
|
24
24
|
const safeHook = (moduleExports, moduleName, moduleBaseDir, moduleVersion) => {
|
|
25
|
-
const parts = [moduleBaseDir, moduleName].filter(
|
|
25
|
+
const parts = [moduleBaseDir, moduleName].filter(Boolean)
|
|
26
26
|
const filename = path.join(...parts)
|
|
27
27
|
|
|
28
28
|
if (this._patched[filename]) return moduleExports
|
|
@@ -41,9 +41,8 @@ function Hook (modules, hookOptions, onrequire) {
|
|
|
41
41
|
if (moduleExports && moduleExports.default) {
|
|
42
42
|
moduleExports.default = safeHook(moduleExports.default, moduleName, moduleBaseDir)
|
|
43
43
|
return moduleExports
|
|
44
|
-
} else {
|
|
45
|
-
return safeHook(moduleExports, moduleName, moduleBaseDir)
|
|
46
44
|
}
|
|
45
|
+
return safeHook(moduleExports, moduleName, moduleBaseDir)
|
|
47
46
|
})
|
|
48
47
|
}
|
|
49
48
|
|
|
@@ -105,7 +105,6 @@ module.exports = {
|
|
|
105
105
|
nyc: () => require('../nyc'),
|
|
106
106
|
oracledb: () => require('../oracledb'),
|
|
107
107
|
openai: { esmFirst: true, fn: () => require('../openai') },
|
|
108
|
-
paperplane: () => require('../paperplane'),
|
|
109
108
|
passport: () => require('../passport'),
|
|
110
109
|
'passport-http': () => require('../passport-http'),
|
|
111
110
|
'passport-local': () => require('../passport-local'),
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
3
|
const dc = require('dc-polyfill')
|
|
4
|
-
const satisfies = require('semifies')
|
|
5
4
|
const instrumentations = require('./instrumentations')
|
|
6
5
|
const { AsyncResource } = require('async_hooks')
|
|
7
6
|
|
|
@@ -34,43 +33,4 @@ exports.addHook = function addHook ({ name, versions, file, filePattern }, hook)
|
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
35
|
|
|
37
|
-
|
|
38
|
-
// https://nodejs.org/api/async_context.html#asyncresourcebindfn-thisarg
|
|
39
|
-
if (satisfies(process.versions.node, '>=17.8.0')) {
|
|
40
|
-
exports.AsyncResource = AsyncResource
|
|
41
|
-
} else {
|
|
42
|
-
exports.AsyncResource = class extends AsyncResource {
|
|
43
|
-
static bind (fn, type, thisArg) {
|
|
44
|
-
type = type || fn.name
|
|
45
|
-
return (new exports.AsyncResource(type || 'bound-anonymous-fn')).bind(fn, thisArg)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
bind (fn, thisArg) {
|
|
49
|
-
let bound
|
|
50
|
-
if (thisArg === undefined) {
|
|
51
|
-
const resource = this
|
|
52
|
-
bound = function (...args) {
|
|
53
|
-
args.unshift(fn, this)
|
|
54
|
-
return Reflect.apply(resource.runInAsyncScope, resource, args)
|
|
55
|
-
}
|
|
56
|
-
} else {
|
|
57
|
-
bound = this.runInAsyncScope.bind(this, fn, thisArg)
|
|
58
|
-
}
|
|
59
|
-
Object.defineProperties(bound, {
|
|
60
|
-
length: {
|
|
61
|
-
configurable: true,
|
|
62
|
-
enumerable: false,
|
|
63
|
-
value: fn.length,
|
|
64
|
-
writable: false
|
|
65
|
-
},
|
|
66
|
-
asyncResource: {
|
|
67
|
-
configurable: true,
|
|
68
|
-
enumerable: true,
|
|
69
|
-
value: this,
|
|
70
|
-
writable: true
|
|
71
|
-
}
|
|
72
|
-
})
|
|
73
|
-
return bound
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
36
|
+
exports.AsyncResource = AsyncResource
|
|
@@ -9,11 +9,14 @@ const log = require('../../../dd-trace/src/log')
|
|
|
9
9
|
const checkRequireCache = require('./check-require-cache')
|
|
10
10
|
const telemetry = require('../../../dd-trace/src/guardrails/telemetry')
|
|
11
11
|
const { isInServerlessEnvironment } = require('../../../dd-trace/src/serverless')
|
|
12
|
+
const { getEnvironmentVariables } = require('../../../dd-trace/src/config-helper')
|
|
13
|
+
|
|
14
|
+
const envs = getEnvironmentVariables()
|
|
12
15
|
|
|
13
16
|
const {
|
|
14
17
|
DD_TRACE_DISABLED_INSTRUMENTATIONS = '',
|
|
15
18
|
DD_TRACE_DEBUG = ''
|
|
16
|
-
} =
|
|
19
|
+
} = envs
|
|
17
20
|
|
|
18
21
|
const hooks = require('./hooks')
|
|
19
22
|
const instrumentations = require('./instrumentations')
|
|
@@ -24,9 +27,9 @@ const disabledInstrumentations = new Set(
|
|
|
24
27
|
)
|
|
25
28
|
|
|
26
29
|
// Check for DD_TRACE_<INTEGRATION>_ENABLED environment variables
|
|
27
|
-
for (const [key, value] of Object.entries(
|
|
30
|
+
for (const [key, value] of Object.entries(envs)) {
|
|
28
31
|
const match = key.match(/^DD_TRACE_(.+)_ENABLED$/)
|
|
29
|
-
if (match && (value
|
|
32
|
+
if (match && (value?.toLowerCase() === 'false' || value === '0')) {
|
|
30
33
|
const integration = match[1].toLowerCase()
|
|
31
34
|
disabledInstrumentations.add(integration)
|
|
32
35
|
}
|
|
@@ -96,9 +99,7 @@ for (const packageName of names) {
|
|
|
96
99
|
// That way it would also not be duplicated. The actual name being used has to be identified else wise.
|
|
97
100
|
// Maybe it is also not important to know what name was actually used?
|
|
98
101
|
hook[HOOK_SYMBOL] ??= new WeakSet()
|
|
99
|
-
let matchesFile =
|
|
100
|
-
|
|
101
|
-
matchesFile = moduleName === fullFilename
|
|
102
|
+
let matchesFile = moduleName === fullFilename
|
|
102
103
|
|
|
103
104
|
if (fullFilePattern) {
|
|
104
105
|
// Some libraries include a hash in their filenames when installed,
|
|
@@ -115,7 +116,7 @@ for (const packageName of names) {
|
|
|
115
116
|
log.error('Error getting version for "%s": %s', name, e.message, e)
|
|
116
117
|
continue
|
|
117
118
|
}
|
|
118
|
-
if (namesAndSuccesses[`${name}@${version}`] === undefined) {
|
|
119
|
+
if (namesAndSuccesses[`${name}@${version}`] === undefined && !file) {
|
|
119
120
|
// TODO If `file` is present, we might elsewhere instrument the result of the module
|
|
120
121
|
// for a version range that actually matches, so we can't assume that we're _not_
|
|
121
122
|
// going to instrument that. However, the way the data model around instrumentation
|
|
@@ -123,9 +124,7 @@ for (const packageName of names) {
|
|
|
123
124
|
// ignore this if there is a `file` in the hook. The thing to do here is rework
|
|
124
125
|
// everything so that we can be sure that there are _no_ instrumentations that it
|
|
125
126
|
// could match.
|
|
126
|
-
|
|
127
|
-
namesAndSuccesses[`${name}@${version}`] = false
|
|
128
|
-
}
|
|
127
|
+
namesAndSuccesses[`${name}@${version}`] = false
|
|
129
128
|
}
|
|
130
129
|
|
|
131
130
|
if (matchVersion(version, versions)) {
|
|
@@ -190,7 +189,7 @@ function getVersion (moduleBaseDir) {
|
|
|
190
189
|
}
|
|
191
190
|
|
|
192
191
|
function filename (name, file) {
|
|
193
|
-
return [name, file].filter(
|
|
192
|
+
return [name, file].filter(Boolean).join('/')
|
|
194
193
|
}
|
|
195
194
|
|
|
196
195
|
// This function captures the instrumentation file name for a given package by parsing the hook require
|
|
@@ -217,7 +216,7 @@ function parseHookInstrumentationFileName (packageName) {
|
|
|
217
216
|
let moduleName = match[1]
|
|
218
217
|
// Remove leading '../' if present
|
|
219
218
|
if (moduleName.startsWith('../')) {
|
|
220
|
-
moduleName = moduleName.
|
|
219
|
+
moduleName = moduleName.slice(3)
|
|
221
220
|
}
|
|
222
221
|
return moduleName
|
|
223
222
|
}
|
|
@@ -26,6 +26,19 @@ function hookFn (http) {
|
|
|
26
26
|
return http
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
+
function combineOptions (inputURL, inputOptions) {
|
|
30
|
+
return inputOptions !== null && typeof inputOptions === 'object'
|
|
31
|
+
? Object.assign(inputURL || {}, inputOptions)
|
|
32
|
+
: inputURL
|
|
33
|
+
}
|
|
34
|
+
function normalizeHeaders (options) {
|
|
35
|
+
options.headers ??= {}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function normalizeCallback (inputOptions, callback, inputURL) {
|
|
39
|
+
return typeof inputOptions === 'function' ? [inputOptions, inputURL || {}] : [callback, inputOptions]
|
|
40
|
+
}
|
|
41
|
+
|
|
29
42
|
function patch (http, methodName) {
|
|
30
43
|
shimmer.wrap(http, methodName, instrumentRequest)
|
|
31
44
|
|
|
@@ -143,30 +156,11 @@ function patch (http, methodName) {
|
|
|
143
156
|
return { uri, options, callback, originalUrl }
|
|
144
157
|
}
|
|
145
158
|
|
|
146
|
-
function combineOptions (inputURL, inputOptions) {
|
|
147
|
-
if (inputOptions !== null && typeof inputOptions === 'object') {
|
|
148
|
-
return Object.assign(inputURL || {}, inputOptions)
|
|
149
|
-
} else {
|
|
150
|
-
return inputURL
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
function normalizeHeaders (options) {
|
|
154
|
-
options.headers = options.headers || {}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
function normalizeCallback (inputOptions, callback, inputURL) {
|
|
158
|
-
if (typeof inputOptions === 'function') {
|
|
159
|
-
return [inputOptions, inputURL || {}]
|
|
160
|
-
} else {
|
|
161
|
-
return [callback, inputOptions]
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
159
|
function normalizeOptions (inputURL) {
|
|
166
160
|
if (typeof inputURL === 'string') {
|
|
167
161
|
try {
|
|
168
162
|
return urlToOptions(new url.URL(inputURL))
|
|
169
|
-
} catch
|
|
163
|
+
} catch {
|
|
170
164
|
// eslint-disable-next-line n/no-deprecated-api
|
|
171
165
|
return url.parse(inputURL)
|
|
172
166
|
}
|