dd-trace 5.52.0 → 5.54.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/README.md +5 -0
- package/index.d.ts +87 -22
- package/initialize.mjs +3 -4
- package/package.json +36 -34
- 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 +57 -37
- 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 +5 -4
- package/packages/datadog-instrumentations/src/child_process.js +3 -3
- package/packages/datadog-instrumentations/src/confluentinc-kafka-javascript.js +92 -62
- package/packages/datadog-instrumentations/src/couchbase.js +5 -4
- package/packages/datadog-instrumentations/src/cucumber.js +126 -84
- package/packages/datadog-instrumentations/src/cypress.js +2 -1
- package/packages/datadog-instrumentations/src/dns.js +1 -1
- package/packages/datadog-instrumentations/src/express.js +2 -6
- package/packages/datadog-instrumentations/src/fs.js +7 -6
- package/packages/datadog-instrumentations/src/google-cloud-pubsub.js +28 -34
- 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/helpers/extract-package-and-module-path.js +16 -10
- package/packages/datadog-instrumentations/src/helpers/hook.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/hooks.js +1 -1
- package/packages/datadog-instrumentations/src/helpers/instrument.js +1 -41
- package/packages/datadog-instrumentations/src/helpers/register.js +21 -18
- package/packages/datadog-instrumentations/src/http/client.js +16 -21
- package/packages/datadog-instrumentations/src/iovalkey.js +51 -0
- package/packages/datadog-instrumentations/src/jest.js +184 -87
- package/packages/datadog-instrumentations/src/kafkajs.js +65 -44
- package/packages/datadog-instrumentations/src/knex.js +4 -4
- package/packages/datadog-instrumentations/src/ldapjs.js +3 -4
- package/packages/datadog-instrumentations/src/mariadb.js +38 -61
- package/packages/datadog-instrumentations/src/mocha/main.js +85 -59
- package/packages/datadog-instrumentations/src/mocha/utils.js +103 -82
- package/packages/datadog-instrumentations/src/mocha/worker.js +6 -0
- package/packages/datadog-instrumentations/src/mongodb-core.js +1 -1
- package/packages/datadog-instrumentations/src/mysql.js +20 -36
- package/packages/datadog-instrumentations/src/mysql2.js +55 -47
- package/packages/datadog-instrumentations/src/net.js +4 -2
- package/packages/datadog-instrumentations/src/next.js +7 -14
- package/packages/datadog-instrumentations/src/nyc.js +1 -1
- package/packages/datadog-instrumentations/src/openai.js +21 -23
- package/packages/datadog-instrumentations/src/oracledb.js +1 -1
- package/packages/datadog-instrumentations/src/pg.js +6 -13
- package/packages/datadog-instrumentations/src/playwright.js +170 -136
- package/packages/datadog-instrumentations/src/redis.js +3 -3
- package/packages/datadog-instrumentations/src/restify.js +2 -2
- package/packages/datadog-instrumentations/src/rhea.js +42 -54
- package/packages/datadog-instrumentations/src/router.js +22 -25
- package/packages/datadog-instrumentations/src/tedious.js +1 -1
- package/packages/datadog-instrumentations/src/url.js +9 -17
- package/packages/datadog-instrumentations/src/vitest.js +126 -97
- 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-aws-sdk/src/base.js +3 -2
- 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/dynamodb.js +24 -31
- package/packages/datadog-plugin-aws-sdk/src/services/eventbridge.js +2 -2
- package/packages/datadog-plugin-aws-sdk/src/services/kinesis.js +6 -6
- package/packages/datadog-plugin-aws-sdk/src/services/lambda.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/sns.js +1 -1
- package/packages/datadog-plugin-aws-sdk/src/services/sqs.js +4 -5
- 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 +86 -20
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +97 -27
- package/packages/datadog-plugin-cypress/src/plugin.js +11 -1
- package/packages/datadog-plugin-cypress/src/support.js +24 -5
- 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 +26 -9
- package/packages/datadog-plugin-graphql/src/execute.js +2 -2
- package/packages/datadog-plugin-graphql/src/index.js +7 -6
- package/packages/datadog-plugin-graphql/src/resolve.js +2 -2
- 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 +18 -7
- package/packages/datadog-plugin-http2/src/client.js +20 -20
- package/packages/datadog-plugin-iovalkey/src/index.js +18 -0
- package/packages/datadog-plugin-jest/src/index.js +36 -28
- 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 +15 -7
- 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 +88 -48
- package/packages/datadog-plugin-mongodb-core/src/index.js +1 -1
- package/packages/datadog-plugin-mysql/src/index.js +11 -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 +6 -5
- package/packages/datadog-plugin-openai/src/services.js +6 -10
- package/packages/datadog-plugin-openai/src/tracing.js +10 -14
- package/packages/datadog-plugin-oracledb/src/index.js +1 -1
- package/packages/datadog-plugin-playwright/src/index.js +48 -22
- package/packages/datadog-plugin-redis/src/index.js +9 -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 +99 -72
- package/packages/datadog-shimmer/src/shimmer.js +163 -36
- 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/graphql.js +2 -2
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-password-rules.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secret-rules.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/hardcoded-secrets-rules.js +1 -1
- package/packages/dd-trace/src/appsec/iast/analyzers/header-injection-analyzer.js +4 -6
- 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 +4 -6
- 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 +6 -13
- 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 +1 -7
- 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 +5 -7
- 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 +6 -6
- package/packages/dd-trace/src/appsec/iast/telemetry/verbosity.js +1 -1
- 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 -24
- 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/vulnerability-reporter.js +9 -11
- package/packages/dd-trace/src/appsec/index.js +15 -12
- package/packages/dd-trace/src/appsec/rasp/index.js +19 -17
- package/packages/dd-trace/src/appsec/rasp/lfi.js +2 -1
- package/packages/dd-trace/src/appsec/rasp/utils.js +11 -6
- package/packages/dd-trace/src/appsec/reporter.js +233 -40
- package/packages/dd-trace/src/appsec/rule_manager.js +2 -2
- package/packages/dd-trace/src/appsec/sdk/user_blocking.js +2 -2
- package/packages/dd-trace/src/appsec/stack_trace.js +2 -4
- package/packages/dd-trace/src/appsec/telemetry/index.js +1 -2
- package/packages/dd-trace/src/appsec/telemetry/rasp.js +3 -14
- 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 -8
- package/packages/dd-trace/src/azure_metadata.js +2 -7
- package/packages/dd-trace/src/ci-visibility/dynamic-instrumentation/index.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +1 -1
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +1 -1
- 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 +2 -2
- 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 +1 -1
- package/packages/dd-trace/src/ci-visibility/log-submission/log-submission-plugin.js +1 -1
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +8 -5
- 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 +1 -1
- package/packages/dd-trace/src/config.js +82 -51
- package/packages/dd-trace/src/config_stable.js +3 -3
- package/packages/dd-trace/src/datastreams/encoding.js +9 -9
- package/packages/dd-trace/src/datastreams/fnv.js +1 -1
- 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 +1 -1
- 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 +131 -72
- package/packages/dd-trace/src/debugger/devtools_client/condition.js +6 -8
- package/packages/dd-trace/src/debugger/devtools_client/defaults.js +1 -1
- package/packages/dd-trace/src/debugger/devtools_client/index.js +17 -27
- package/packages/dd-trace/src/debugger/devtools_client/remote_config.js +18 -38
- package/packages/dd-trace/src/debugger/devtools_client/send.js +8 -7
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/index.js +16 -8
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js +8 -10
- package/packages/dd-trace/src/debugger/devtools_client/snapshot/redaction.js +3 -3
- package/packages/dd-trace/src/debugger/devtools_client/source-maps.js +2 -10
- package/packages/dd-trace/src/debugger/devtools_client/state.js +31 -4
- package/packages/dd-trace/src/dogstatsd.js +7 -4
- package/packages/dd-trace/src/encode/0.4.js +9 -9
- package/packages/dd-trace/src/encode/0.5.js +1 -1
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +3 -3
- 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 +6 -6
- package/packages/dd-trace/src/exporters/agent/writer.js +1 -5
- package/packages/dd-trace/src/exporters/common/docker.js +1 -1
- package/packages/dd-trace/src/exporters/common/form-data.js +6 -4
- package/packages/dd-trace/src/exporters/common/request.js +1 -1
- package/packages/dd-trace/src/exporters/common/util.js +1 -1
- 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 +12 -6
- package/packages/dd-trace/src/iitm.js +10 -22
- package/packages/dd-trace/src/lambda/handler.js +6 -6
- 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/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/index.js +6 -6
- package/packages/dd-trace/src/llmobs/plugins/openai.js +1 -1
- package/packages/dd-trace/src/llmobs/sdk.js +2 -2
- package/packages/dd-trace/src/llmobs/tagger.js +113 -99
- 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 +4 -4
- package/packages/dd-trace/src/log/log.js +1 -1
- package/packages/dd-trace/src/log/writer.js +2 -2
- package/packages/dd-trace/src/msgpack/chunk.js +3 -3
- package/packages/dd-trace/src/msgpack/encoder.js +28 -28
- package/packages/dd-trace/src/noop/dogstatsd.js +6 -6
- package/packages/dd-trace/src/noop/span.js +3 -5
- 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 +6 -5
- package/packages/dd-trace/src/opentracing/propagation/log.js +6 -8
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +27 -23
- package/packages/dd-trace/src/opentracing/propagation/tracestate.js +8 -4
- package/packages/dd-trace/src/opentracing/span.js +9 -14
- package/packages/dd-trace/src/opentracing/tracer.js +9 -6
- 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/plugins/ci_plugin.js +62 -10
- 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 +1 -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 +23 -15
- package/packages/dd-trace/src/plugins/util/git.js +165 -11
- 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 +1 -1
- package/packages/dd-trace/src/plugins/util/test.js +311 -48
- 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 +12 -3
- package/packages/dd-trace/src/plugins/util/web.js +5 -4
- package/packages/dd-trace/src/priority_sampler.js +22 -22
- package/packages/dd-trace/src/profiling/config.js +44 -8
- package/packages/dd-trace/src/profiling/exporters/event_serializer.js +5 -5
- package/packages/dd-trace/src/profiling/exporters/file.js +2 -1
- package/packages/dd-trace/src/profiling/profiler.js +37 -2
- 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/tagger.js +3 -5
- package/packages/dd-trace/src/profiling/webspan-utils.js +1 -1
- package/packages/dd-trace/src/proxy.js +7 -13
- 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 +4 -4
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +2 -2
- package/packages/dd-trace/src/sampler.js +33 -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 +0 -48
- package/packages/dd-trace/src/service-naming/schemas/util.js +1 -1
- package/packages/dd-trace/src/service-naming/schemas/v0/storage.js +8 -0
- package/packages/dd-trace/src/service-naming/schemas/v0/web.js +2 -3
- package/packages/dd-trace/src/service-naming/schemas/v1/storage.js +4 -0
- package/packages/dd-trace/src/span_processor.js +3 -3
- package/packages/dd-trace/src/span_sampler.js +4 -1
- package/packages/dd-trace/src/standalone/tracesource.js +1 -1
- package/packages/dd-trace/src/startup-log.js +2 -2
- package/packages/dd-trace/src/telemetry/dependencies.js +4 -4
- 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 +1 -1
- package/packages/dd-trace/src/telemetry/telemetry.js +23 -24
- package/packages/dd-trace/src/util.js +1 -1
- 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
|
@@ -14,9 +14,8 @@ class ApolloGatewayValidatePlugin extends ApolloBasePlugin {
|
|
|
14
14
|
|
|
15
15
|
if (!span) return
|
|
16
16
|
|
|
17
|
-
if (result
|
|
18
|
-
|
|
19
|
-
span.setTag('error', result[result.length - 1])
|
|
17
|
+
if (Array.isArray(result) && result.at(-1)?.stack && result.at(-1).message) {
|
|
18
|
+
span.setTag('error', result.at(-1))
|
|
20
19
|
}
|
|
21
20
|
span.finish()
|
|
22
21
|
}
|
|
@@ -226,9 +226,10 @@ function normalizeConfig (config, serviceIdentifier) {
|
|
|
226
226
|
})
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
+
const noop = () => {}
|
|
230
|
+
|
|
229
231
|
function getHooks (config) {
|
|
230
|
-
const
|
|
231
|
-
const request = (config.hooks && config.hooks.request) || noop
|
|
232
|
+
const request = config.hooks?.request || noop
|
|
232
233
|
|
|
233
234
|
return { request }
|
|
234
235
|
}
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
const BaseAwsSdkPlugin = require('../../base')
|
|
4
4
|
const { parseModelId, extractRequestParams, extractTextAndResponseReason } = require('./utils')
|
|
5
5
|
|
|
6
|
-
const enabledOperations = ['invokeModel']
|
|
6
|
+
const enabledOperations = new Set(['invokeModel'])
|
|
7
7
|
|
|
8
8
|
class BedrockRuntime extends BaseAwsSdkPlugin {
|
|
9
9
|
static get id () { return 'bedrockruntime' }
|
|
10
10
|
|
|
11
11
|
isEnabled (request) {
|
|
12
12
|
const operation = request.operation
|
|
13
|
-
if (!enabledOperations.
|
|
13
|
+
if (!enabledOperations.has(operation)) {
|
|
14
14
|
return false
|
|
15
15
|
}
|
|
16
16
|
|
|
@@ -47,27 +47,27 @@ class Generation {
|
|
|
47
47
|
class RequestParams {
|
|
48
48
|
constructor ({
|
|
49
49
|
prompt = '',
|
|
50
|
-
temperature
|
|
51
|
-
topP
|
|
52
|
-
topK
|
|
53
|
-
maxTokens
|
|
50
|
+
temperature,
|
|
51
|
+
topP,
|
|
52
|
+
topK,
|
|
53
|
+
maxTokens,
|
|
54
54
|
stopSequences = [],
|
|
55
55
|
inputType = '',
|
|
56
56
|
truncate = '',
|
|
57
57
|
stream = '',
|
|
58
|
-
n
|
|
58
|
+
n
|
|
59
59
|
} = {}) {
|
|
60
60
|
// stringify prompt as it could be a single prompt as well as a list of message objects
|
|
61
61
|
this.prompt = typeof prompt === 'string' ? prompt : JSON.stringify(prompt) || ''
|
|
62
|
-
this.temperature = temperature
|
|
63
|
-
this.topP = topP
|
|
64
|
-
this.topK = topK
|
|
65
|
-
this.maxTokens = maxTokens
|
|
62
|
+
this.temperature = temperature === undefined ? undefined : temperature
|
|
63
|
+
this.topP = topP === undefined ? undefined : topP
|
|
64
|
+
this.topK = topK === undefined ? undefined : topK
|
|
65
|
+
this.maxTokens = maxTokens === undefined ? undefined : maxTokens
|
|
66
66
|
this.stopSequences = stopSequences || []
|
|
67
67
|
this.inputType = inputType || ''
|
|
68
68
|
this.truncate = truncate || ''
|
|
69
69
|
this.stream = stream || ''
|
|
70
|
-
this.n = n
|
|
70
|
+
this.n = n === undefined ? undefined : n
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -92,7 +92,7 @@ function parseModelId (modelId) {
|
|
|
92
92
|
if (modelMeta.length < 2) {
|
|
93
93
|
return { modelProvider: 'custom', modelName: modelMeta[0] }
|
|
94
94
|
}
|
|
95
|
-
return { modelProvider: modelMeta
|
|
95
|
+
return { modelProvider: modelMeta.at(-2), modelName: modelMeta.at(-1) }
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
for (const identifier of MODEL_TYPE_IDENTIFIERS) {
|
|
@@ -105,7 +105,7 @@ function parseModelId (modelId) {
|
|
|
105
105
|
if (modelMeta.length < 2) {
|
|
106
106
|
return { modelProvider: 'custom', modelName: modelId }
|
|
107
107
|
}
|
|
108
|
-
return { modelProvider: modelMeta
|
|
108
|
+
return { modelProvider: modelMeta.at(-2), modelName: modelMeta.at(-1) }
|
|
109
109
|
}
|
|
110
110
|
return { modelProvider: 'custom', modelName: modelId }
|
|
111
111
|
}
|
|
@@ -296,7 +296,7 @@ function extractTextAndResponseReason (response, provider, modelName) {
|
|
|
296
296
|
return new Generation()
|
|
297
297
|
}
|
|
298
298
|
}
|
|
299
|
-
} catch
|
|
299
|
+
} catch {
|
|
300
300
|
log.warn('Unable to extract text/finishReason from response body. Defaulting to empty text/finishReason.')
|
|
301
301
|
return new Generation()
|
|
302
302
|
}
|
|
@@ -25,18 +25,17 @@ class DynamoDb extends BaseAwsSdkPlugin {
|
|
|
25
25
|
// batch operations have different format, collect table name for batch
|
|
26
26
|
// https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB.html#batchGetItem-property`
|
|
27
27
|
// dynamoDB batch TableName
|
|
28
|
-
if (params.RequestItems !== null) {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
28
|
+
if (params.RequestItems !== null && typeof params.RequestItems === 'object') {
|
|
29
|
+
const requestItemsKeys = Object.keys(params.RequestItems)
|
|
30
|
+
if (requestItemsKeys.length === 1) {
|
|
31
|
+
const tableName = requestItemsKeys[0]
|
|
32
|
+
|
|
33
|
+
// also add span type to match serverless convention
|
|
34
|
+
Object.assign(tags, {
|
|
35
|
+
'resource.name': `${operation} ${tableName}`,
|
|
36
|
+
'aws.dynamodb.table_name': tableName,
|
|
37
|
+
tablename: tableName
|
|
38
|
+
})
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
|
|
@@ -81,10 +80,12 @@ class DynamoDb extends BaseAwsSdkPlugin {
|
|
|
81
80
|
const hash =
|
|
82
81
|
DynamoDb.calculatePutItemHash(item.Put.TableName, item.Put.Item, this.getPrimaryKeyConfig())
|
|
83
82
|
if (hash) hashes.push(hash)
|
|
84
|
-
} else
|
|
85
|
-
const operation = item.Update
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
} else {
|
|
84
|
+
const operation = item.Update || item.Delete
|
|
85
|
+
if (operation) {
|
|
86
|
+
const hash = DynamoDb.calculateHashWithKnownKeys(operation.TableName, operation.Key)
|
|
87
|
+
if (hash) hashes.push(hash)
|
|
88
|
+
}
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
break
|
|
@@ -136,7 +137,7 @@ class DynamoDb extends BaseAwsSdkPlugin {
|
|
|
136
137
|
const config = {}
|
|
137
138
|
for (const [tableName, primaryKeys] of Object.entries(parsedConfig)) {
|
|
138
139
|
if (Array.isArray(primaryKeys) && primaryKeys.length > 0 && primaryKeys.length <= 2) {
|
|
139
|
-
config[tableName] =
|
|
140
|
+
config[tableName] = primaryKeys
|
|
140
141
|
} else {
|
|
141
142
|
log.warn(`Invalid primary key configuration for table: ${tableName}.` +
|
|
142
143
|
'Please fix the DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS env var.')
|
|
@@ -154,7 +155,7 @@ class DynamoDb extends BaseAwsSdkPlugin {
|
|
|
154
155
|
* Calculates a hash for DynamoDB PutItem operations using table's configured primary keys.
|
|
155
156
|
* @param {string} tableName - Name of the DynamoDB table.
|
|
156
157
|
* @param {Object} item - Complete PutItem item parameter to be put.
|
|
157
|
-
* @param {Object.<string,
|
|
158
|
+
* @param {Object.<string, Array<string>>} primaryKeyConfig - Mapping of table names to an Array of primary key names
|
|
158
159
|
* loaded from DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS.
|
|
159
160
|
* @returns {string|undefined} Hash combining table name and primary key/value pairs, or undefined if unable.
|
|
160
161
|
*/
|
|
@@ -163,19 +164,11 @@ class DynamoDb extends BaseAwsSdkPlugin {
|
|
|
163
164
|
log.debug('Unable to calculate hash because missing required parameters')
|
|
164
165
|
return
|
|
165
166
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
169
|
-
const primaryKeySet = primaryKeyConfig[tableName]
|
|
170
|
-
if (!primaryKeySet || !(primaryKeySet instanceof Set) || primaryKeySet.size === 0 || primaryKeySet.size > 2) {
|
|
171
|
-
log.warn(
|
|
172
|
-
`span pointers: failed to extract PutItem span pointer: table ${tableName} ` +
|
|
173
|
-
'not found in primary key names or the DD_TRACE_DYNAMODB_TABLE_PRIMARY_KEYS env var was invalid.' +
|
|
174
|
-
'Please update the env var.'
|
|
175
|
-
)
|
|
167
|
+
const keyNames = primaryKeyConfig?.[tableName]
|
|
168
|
+
if (!keyNames) {
|
|
176
169
|
return
|
|
177
170
|
}
|
|
178
|
-
const keyValues = extractPrimaryKeys(
|
|
171
|
+
const keyValues = extractPrimaryKeys(keyNames, item)
|
|
179
172
|
if (keyValues) {
|
|
180
173
|
return generatePointerHash([tableName, ...keyValues])
|
|
181
174
|
}
|
|
@@ -196,8 +189,8 @@ class DynamoDb extends BaseAwsSdkPlugin {
|
|
|
196
189
|
log.debug('Unable to calculate hash because missing parameters')
|
|
197
190
|
return
|
|
198
191
|
}
|
|
199
|
-
const
|
|
200
|
-
const keyValues = extractPrimaryKeys(
|
|
192
|
+
const keyNames = Object.keys(keysObject)
|
|
193
|
+
const keyValues = extractPrimaryKeys(keyNames, keysObject)
|
|
201
194
|
if (keyValues) {
|
|
202
195
|
return generatePointerHash([tableName, ...keyValues])
|
|
203
196
|
}
|
|
@@ -7,8 +7,8 @@ class EventBridge extends BaseAwsSdkPlugin {
|
|
|
7
7
|
static get isPayloadReporter () { return true }
|
|
8
8
|
|
|
9
9
|
generateTags (params, operation, response) {
|
|
10
|
-
if (!params
|
|
11
|
-
const rulename = params.Name
|
|
10
|
+
if (!params?.source) return {}
|
|
11
|
+
const rulename = params.Name ?? ''
|
|
12
12
|
return {
|
|
13
13
|
'resource.name': operation ? `${operation} ${params.source}` : params.source,
|
|
14
14
|
'aws.eventbridge.source': `${params.source}`,
|
|
@@ -128,12 +128,12 @@ class Kinesis extends BaseAwsSdkPlugin {
|
|
|
128
128
|
_tryParse (body) {
|
|
129
129
|
try {
|
|
130
130
|
return JSON.parse(body)
|
|
131
|
-
} catch
|
|
131
|
+
} catch {
|
|
132
132
|
log.info('Not JSON string. Trying Base64 encoded JSON string')
|
|
133
133
|
}
|
|
134
134
|
try {
|
|
135
135
|
return JSON.parse(Buffer.from(body, 'base64').toString('ascii'), true)
|
|
136
|
-
} catch
|
|
136
|
+
} catch {
|
|
137
137
|
return null
|
|
138
138
|
}
|
|
139
139
|
}
|
|
@@ -145,17 +145,17 @@ class Kinesis extends BaseAwsSdkPlugin {
|
|
|
145
145
|
let stream
|
|
146
146
|
switch (operation) {
|
|
147
147
|
case 'putRecord':
|
|
148
|
-
stream = params.StreamArn
|
|
148
|
+
stream = params.StreamArn ?? params.StreamName ?? ''
|
|
149
149
|
this.injectToMessage(span, params, stream, true)
|
|
150
150
|
break
|
|
151
151
|
case 'putRecords':
|
|
152
|
-
stream = params.StreamArn
|
|
152
|
+
stream = params.StreamArn ?? params.StreamName ?? ''
|
|
153
153
|
for (let i = 0; i < params.Records.length; i++) {
|
|
154
154
|
this.injectToMessage(
|
|
155
155
|
span,
|
|
156
156
|
params.Records[i],
|
|
157
157
|
stream,
|
|
158
|
-
i === 0 ||
|
|
158
|
+
i === 0 || this.config.batchPropagationEnabled
|
|
159
159
|
)
|
|
160
160
|
}
|
|
161
161
|
}
|
|
@@ -192,7 +192,7 @@ class Kinesis extends BaseAwsSdkPlugin {
|
|
|
192
192
|
const byteSize = finalData.length
|
|
193
193
|
// Kinesis max payload size is 1MB
|
|
194
194
|
// So we must ensure adding DD context won't go over that (512b is an estimate)
|
|
195
|
-
if (byteSize >=
|
|
195
|
+
if (byteSize >= 1_048_576) {
|
|
196
196
|
log.info('Payload size too large to pass context')
|
|
197
197
|
return
|
|
198
198
|
}
|
|
@@ -33,7 +33,7 @@ class Lambda extends BaseAwsSdkPlugin {
|
|
|
33
33
|
// Check to see if there's already a config on the request
|
|
34
34
|
let clientContext = {}
|
|
35
35
|
if (request.params.ClientContext) {
|
|
36
|
-
const clientContextJson = Buffer.from(request.params.ClientContext, 'base64').toString('
|
|
36
|
+
const clientContextJson = Buffer.from(request.params.ClientContext, 'base64').toString('utf8')
|
|
37
37
|
clientContext = JSON.parse(clientContextJson)
|
|
38
38
|
}
|
|
39
39
|
if (!clientContext.custom) {
|
|
@@ -19,7 +19,7 @@ class Sns extends BaseAwsSdkPlugin {
|
|
|
19
19
|
const arnParts = TopicArn.split(':')
|
|
20
20
|
|
|
21
21
|
// Get the topic name from the last part of the ARN
|
|
22
|
-
const topicName = arnParts
|
|
22
|
+
const topicName = arnParts.at(-1)
|
|
23
23
|
|
|
24
24
|
return {
|
|
25
25
|
'resource.name': `${operation} ${params.TopicArn || response.data.TopicArn}`,
|
|
@@ -20,7 +20,6 @@ class Sqs extends BaseAwsSdkPlugin {
|
|
|
20
20
|
this.addSub('apm:aws:response:start:sqs', obj => {
|
|
21
21
|
const { request, response } = obj
|
|
22
22
|
const store = storage('legacy').getStore()
|
|
23
|
-
const plugin = this
|
|
24
23
|
const contextExtraction = this.responseExtract(request.params, request.operation, response)
|
|
25
24
|
let span
|
|
26
25
|
let parsedMessageAttributes = null
|
|
@@ -35,7 +34,7 @@ class Sqs extends BaseAwsSdkPlugin {
|
|
|
35
34
|
)
|
|
36
35
|
}
|
|
37
36
|
parsedMessageAttributes = contextExtraction.parsedAttributes
|
|
38
|
-
span =
|
|
37
|
+
span = this.tracer.startSpan('aws.response', options)
|
|
39
38
|
this.enter(span, store)
|
|
40
39
|
}
|
|
41
40
|
// extract DSM context after as we might not have a parent-child but may have a DSM context
|
|
@@ -96,7 +95,7 @@ class Sqs extends BaseAwsSdkPlugin {
|
|
|
96
95
|
// 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue';
|
|
97
96
|
let queueName = params.QueueName
|
|
98
97
|
if (params.QueueUrl) {
|
|
99
|
-
queueName = params.QueueUrl.split('/')
|
|
98
|
+
queueName = params.QueueUrl.split('/').at(-1)
|
|
100
99
|
}
|
|
101
100
|
|
|
102
101
|
Object.assign(tags, {
|
|
@@ -134,7 +133,7 @@ class Sqs extends BaseAwsSdkPlugin {
|
|
|
134
133
|
if (body.Type === 'Notification') {
|
|
135
134
|
message = body
|
|
136
135
|
}
|
|
137
|
-
} catch
|
|
136
|
+
} catch {
|
|
138
137
|
// SQS to SQS
|
|
139
138
|
}
|
|
140
139
|
}
|
|
@@ -186,7 +185,7 @@ class Sqs extends BaseAwsSdkPlugin {
|
|
|
186
185
|
if (body.Type === 'Notification') {
|
|
187
186
|
message = body
|
|
188
187
|
}
|
|
189
|
-
} catch
|
|
188
|
+
} catch {
|
|
190
189
|
// SQS to SQS
|
|
191
190
|
}
|
|
192
191
|
}
|
|
@@ -13,7 +13,7 @@ function generatePointerHash (components) {
|
|
|
13
13
|
// If passing S3's ETag as a component, make sure any quotes have already been removed!
|
|
14
14
|
const dataToHash = components.join('|')
|
|
15
15
|
const hash = crypto.createHash('sha256').update(dataToHash).digest('hex')
|
|
16
|
-
return hash.
|
|
16
|
+
return hash.slice(0, 32)
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
/**
|
|
@@ -54,18 +54,17 @@ function encodeValue (valueObject) {
|
|
|
54
54
|
* Extracts and encodes primary key values from a DynamoDB item.
|
|
55
55
|
* Handles tables with single-key and two-key scenarios.
|
|
56
56
|
*
|
|
57
|
-
* @param {
|
|
57
|
+
* @param {Array<string>} keyNames - Set of primary key names.
|
|
58
58
|
* @param {Object} keyValuePairs - Object containing key/value pairs.
|
|
59
59
|
* @returns {Array|undefined} [key1Name, key1Value, key2Name, key2Value], or undefined if invalid input.
|
|
60
60
|
* key2 entries are empty strings in the single-key case.
|
|
61
61
|
* @example
|
|
62
|
-
* extractPrimaryKeys(
|
|
62
|
+
* extractPrimaryKeys(['userId'], {userId: {S: "user123"}})
|
|
63
63
|
* // Returns ["userId", Buffer("user123"), "", ""]
|
|
64
|
-
* extractPrimaryKeys(
|
|
64
|
+
* extractPrimaryKeys(['userId', 'timestamp'], {userId: {S: "user123"}, timestamp: {N: "1234}})
|
|
65
65
|
* // Returns ["timestamp", Buffer.from("1234"), "userId", Buffer.from("user123")]
|
|
66
66
|
*/
|
|
67
|
-
const extractPrimaryKeys = (
|
|
68
|
-
const keyNames = Array.from(keySet)
|
|
67
|
+
const extractPrimaryKeys = (keyNames, keyValuePairs) => {
|
|
69
68
|
if (keyNames.length === 0) {
|
|
70
69
|
return
|
|
71
70
|
}
|
|
@@ -17,7 +17,7 @@ function truncateCommand (cmdFields) {
|
|
|
17
17
|
|
|
18
18
|
const argLen = cmdFields[i].length
|
|
19
19
|
if (size < MAX_ARG_SIZE && size + argLen > MAX_ARG_SIZE) {
|
|
20
|
-
cmdFields[i] = cmdFields[i].
|
|
20
|
+
cmdFields[i] = cmdFields[i].slice(0, 2)
|
|
21
21
|
truncated = true
|
|
22
22
|
}
|
|
23
23
|
|
|
@@ -66,12 +66,12 @@ class ChildProcessPlugin extends TracingPlugin {
|
|
|
66
66
|
|
|
67
67
|
if (result !== undefined) {
|
|
68
68
|
exitCode = result?.status || 0
|
|
69
|
-
} else if (error
|
|
70
|
-
exitCode = error?.status || error?.code || 0
|
|
71
|
-
} else {
|
|
69
|
+
} else if (error === undefined) {
|
|
72
70
|
// TracingChannels call start, end synchronously. Later when the promise is resolved then asyncStart asyncEnd.
|
|
73
71
|
// Therefore in the case of calling end with neither result nor error means that they will come in the asyncEnd.
|
|
74
72
|
return
|
|
73
|
+
} else {
|
|
74
|
+
exitCode = error?.status || error?.code || 0
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
this.activeSpan?.setTag('cmd.exit_code', `${exitCode}`)
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
const shellParser = require('shell-quote/parse')
|
|
4
4
|
|
|
5
|
-
const ALLOWED_ENV_VARIABLES = ['LD_PRELOAD', 'LD_LIBRARY_PATH', 'PATH']
|
|
6
|
-
const PROCESS_DENYLIST = ['md5']
|
|
5
|
+
const ALLOWED_ENV_VARIABLES = new Set(['LD_PRELOAD', 'LD_LIBRARY_PATH', 'PATH'])
|
|
6
|
+
const PROCESS_DENYLIST = new Set(['md5'])
|
|
7
7
|
|
|
8
8
|
const VARNAMES_REGEX = /\$([\w\d_]*)(?:[^\w\d_]|$)/gmi
|
|
9
|
-
// eslint-disable-next-line @stylistic/
|
|
9
|
+
// eslint-disable-next-line @stylistic/max-len
|
|
10
10
|
const PARAM_PATTERN = '^-{0,2}(?:p(?:ass(?:w(?:or)?d)?)?|address|api[-_]?key|e?mail|secret(?:[-_]?key)?|a(?:ccess|uth)[-_]?token|mysql_pwd|credentials|(?:stripe)?token)$'
|
|
11
11
|
const regexParam = new RegExp(PARAM_PATTERN, 'i')
|
|
12
|
-
const ENV_PATTERN =
|
|
12
|
+
const ENV_PATTERN = String.raw`^(\w+=\w+;)*\w+=\w+;?$`
|
|
13
13
|
const envVarRegex = new RegExp(ENV_PATTERN)
|
|
14
14
|
const REDACTED = '?'
|
|
15
15
|
|
|
@@ -71,25 +71,39 @@ function scrubChildProcessCmd (expression) {
|
|
|
71
71
|
} else if (token.comment) {
|
|
72
72
|
result.push(`#${token.comment}`)
|
|
73
73
|
}
|
|
74
|
-
} else if (
|
|
74
|
+
} else if (foundBinary) {
|
|
75
|
+
const paramKeyValue = token.split('=')
|
|
76
|
+
const paramKey = paramKeyValue[0]
|
|
77
|
+
|
|
78
|
+
if (regexParam.test(paramKey)) {
|
|
79
|
+
if (paramKeyValue.length === 1) {
|
|
80
|
+
expressionTokens[index + 1] = REDACTED
|
|
81
|
+
result.push(token)
|
|
82
|
+
} else {
|
|
83
|
+
result.push(`${paramKey}=${REDACTED}`)
|
|
84
|
+
}
|
|
85
|
+
} else {
|
|
86
|
+
result.push(token)
|
|
87
|
+
}
|
|
88
|
+
} else {
|
|
75
89
|
if (envVarRegex.test(token)) {
|
|
76
90
|
const envSplit = token.split('=')
|
|
77
91
|
|
|
78
|
-
if (
|
|
92
|
+
if (ALLOWED_ENV_VARIABLES.has(envSplit[0])) {
|
|
93
|
+
result.push(token)
|
|
94
|
+
} else {
|
|
79
95
|
envSplit[1] = REDACTED
|
|
80
96
|
|
|
81
97
|
const newToken = envSplit.join('=')
|
|
82
98
|
expressionTokens[index] = newToken
|
|
83
99
|
|
|
84
100
|
result.push(newToken)
|
|
85
|
-
} else {
|
|
86
|
-
result.push(token)
|
|
87
101
|
}
|
|
88
102
|
} else {
|
|
89
103
|
foundBinary = true
|
|
90
104
|
result.push(token)
|
|
91
105
|
|
|
92
|
-
if (PROCESS_DENYLIST.
|
|
106
|
+
if (PROCESS_DENYLIST.has(token)) {
|
|
93
107
|
for (index++; index < expressionTokens.length; index++) {
|
|
94
108
|
const token = expressionTokens[index]
|
|
95
109
|
|
|
@@ -103,20 +117,6 @@ function scrubChildProcessCmd (expression) {
|
|
|
103
117
|
break
|
|
104
118
|
}
|
|
105
119
|
}
|
|
106
|
-
} else {
|
|
107
|
-
const paramKeyValue = token.split('=')
|
|
108
|
-
const paramKey = paramKeyValue[0]
|
|
109
|
-
|
|
110
|
-
if (regexParam.test(paramKey)) {
|
|
111
|
-
if (paramKeyValue.length === 1) {
|
|
112
|
-
expressionTokens[index + 1] = REDACTED
|
|
113
|
-
result.push(token)
|
|
114
|
-
} else {
|
|
115
|
-
result.push(`${paramKey}=${REDACTED}`)
|
|
116
|
-
}
|
|
117
|
-
} else {
|
|
118
|
-
result.push(token)
|
|
119
|
-
}
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
})
|