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
|
@@ -34,6 +34,12 @@ addHook({
|
|
|
34
34
|
delete this.options._ddEfdNumRetries
|
|
35
35
|
delete this.options._ddIsKnownTestsEnabled
|
|
36
36
|
}
|
|
37
|
+
if (this.options._ddIsImpactedTestsEnabled) {
|
|
38
|
+
config.isImpactedTestsEnabled = true
|
|
39
|
+
config.modifiedTests = this.options._ddModifiedTests
|
|
40
|
+
delete this.options._ddIsImpactedTestsEnabled
|
|
41
|
+
delete this.options._ddModifiedTests
|
|
42
|
+
}
|
|
37
43
|
if (this.options._ddIsTestManagementTestsEnabled) {
|
|
38
44
|
config.isTestManagementTestsEnabled = true
|
|
39
45
|
// TODO: attempt to fix does not work in parallel mode yet
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const {
|
|
4
|
-
channel,
|
|
5
|
-
addHook,
|
|
6
|
-
AsyncResource
|
|
7
|
-
} = require('./helpers/instrument')
|
|
3
|
+
const { channel, addHook, AsyncResource } = require('./helpers/instrument')
|
|
8
4
|
const shimmer = require('../../datadog-shimmer')
|
|
9
5
|
|
|
10
6
|
addHook({ name: 'mysql', file: 'lib/Connection.js', versions: ['>=2'] }, Connection => {
|
|
@@ -19,43 +15,38 @@ addHook({ name: 'mysql', file: 'lib/Connection.js', versions: ['>=2'] }, Connect
|
|
|
19
15
|
|
|
20
16
|
const sql = arguments[0].sql || arguments[0]
|
|
21
17
|
const conf = this.config
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
const callbackResource = new AsyncResource('bound-anonymous-fn')
|
|
25
|
-
const asyncResource = new AsyncResource('bound-anonymous-fn')
|
|
26
|
-
|
|
27
|
-
return asyncResource.runInAsyncScope(() => {
|
|
28
|
-
startCh.publish(payload)
|
|
18
|
+
const ctx = { sql, conf }
|
|
29
19
|
|
|
20
|
+
return startCh.runStores(ctx, () => {
|
|
30
21
|
if (arguments[0].sql) {
|
|
31
|
-
arguments[0].sql =
|
|
22
|
+
arguments[0].sql = ctx.sql
|
|
32
23
|
} else {
|
|
33
|
-
arguments[0] =
|
|
24
|
+
arguments[0] = ctx.sql
|
|
34
25
|
}
|
|
26
|
+
|
|
35
27
|
try {
|
|
36
28
|
const res = query.apply(this, arguments)
|
|
37
29
|
|
|
38
30
|
if (res._callback) {
|
|
39
|
-
const cb =
|
|
40
|
-
res._callback = shimmer.wrapFunction(cb, cb =>
|
|
31
|
+
const cb = res._callback
|
|
32
|
+
res._callback = shimmer.wrapFunction(cb, cb => function (error, result) {
|
|
41
33
|
if (error) {
|
|
42
|
-
|
|
34
|
+
ctx.error = error
|
|
35
|
+
errorCh.publish(ctx)
|
|
43
36
|
}
|
|
44
|
-
|
|
37
|
+
ctx.result = result
|
|
45
38
|
|
|
46
|
-
return
|
|
47
|
-
}))
|
|
48
|
-
} else {
|
|
49
|
-
const cb = asyncResource.bind(function () {
|
|
50
|
-
finishCh.publish(undefined)
|
|
39
|
+
return finishCh.runStores(ctx, cb, this, error, result)
|
|
51
40
|
})
|
|
52
|
-
|
|
41
|
+
} else {
|
|
42
|
+
res.on('end', () => finishCh.publish(ctx))
|
|
53
43
|
}
|
|
54
44
|
|
|
55
45
|
return res
|
|
56
46
|
} catch (err) {
|
|
57
47
|
err.stack // trigger getting the stack at the original throwing point
|
|
58
|
-
|
|
48
|
+
ctx.error = err
|
|
49
|
+
errorCh.publish(ctx)
|
|
59
50
|
|
|
60
51
|
throw err
|
|
61
52
|
}
|
|
@@ -79,22 +70,15 @@ addHook({ name: 'mysql', file: 'lib/Pool.js', versions: ['>=2'] }, Pool => {
|
|
|
79
70
|
return query.apply(this, arguments)
|
|
80
71
|
}
|
|
81
72
|
|
|
82
|
-
const asyncResource = new AsyncResource('bound-anonymous-fn')
|
|
83
|
-
|
|
84
73
|
const sql = arguments[0].sql || arguments[0]
|
|
74
|
+
const ctx = { sql }
|
|
75
|
+
const finish = () => finishPoolQueryCh.publish(ctx)
|
|
85
76
|
|
|
86
|
-
return
|
|
87
|
-
startPoolQueryCh.publish({ sql })
|
|
88
|
-
|
|
89
|
-
const finish = asyncResource.bind(function () {
|
|
90
|
-
finishPoolQueryCh.publish()
|
|
91
|
-
})
|
|
92
|
-
|
|
77
|
+
return startPoolQueryCh.runStores(ctx, () => {
|
|
93
78
|
const cb = arguments[arguments.length - 1]
|
|
94
79
|
if (typeof cb === 'function') {
|
|
95
80
|
arguments[arguments.length - 1] = shimmer.wrapFunction(cb, cb => function () {
|
|
96
|
-
|
|
97
|
-
return cb.apply(this, arguments)
|
|
81
|
+
return finishPoolQueryCh.runStores(ctx, cb, this, ...arguments)
|
|
98
82
|
})
|
|
99
83
|
}
|
|
100
84
|
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
AsyncResource
|
|
7
|
-
} = require('./helpers/instrument')
|
|
3
|
+
const { errorMonitor } = require('node:events')
|
|
4
|
+
|
|
5
|
+
const { channel, addHook } = require('./helpers/instrument')
|
|
8
6
|
const shimmer = require('../../datadog-shimmer')
|
|
9
7
|
const satisfies = require('semifies')
|
|
10
8
|
|
|
@@ -13,22 +11,25 @@ function wrapConnection (Connection, version) {
|
|
|
13
11
|
const finishCh = channel('apm:mysql2:query:finish')
|
|
14
12
|
const errorCh = channel('apm:mysql2:query:error')
|
|
15
13
|
const startOuterQueryCh = channel('datadog:mysql2:outerquery:start')
|
|
14
|
+
const commandAddCh = channel('apm:mysql2:command:add')
|
|
15
|
+
const commandStartCh = channel('apm:mysql2:command:start')
|
|
16
|
+
const commandFinishCh = channel('apm:mysql2:command:finish')
|
|
16
17
|
const shouldEmitEndAfterQueryAbort = satisfies(version, '>=1.3.3')
|
|
17
18
|
|
|
18
19
|
shimmer.wrap(Connection.prototype, 'addCommand', addCommand => function (cmd) {
|
|
19
20
|
if (!startCh.hasSubscribers) return addCommand.apply(this, arguments)
|
|
20
21
|
|
|
21
|
-
const asyncResource = new AsyncResource('bound-anonymous-fn')
|
|
22
22
|
const name = cmd && cmd.constructor && cmd.constructor.name
|
|
23
23
|
const isCommand = typeof cmd.execute === 'function'
|
|
24
24
|
const isQuery = isCommand && (name === 'Execute' || name === 'Query')
|
|
25
|
+
const ctx = {}
|
|
25
26
|
|
|
26
27
|
// TODO: consider supporting all commands and not just queries
|
|
27
28
|
cmd.execute = isQuery
|
|
28
|
-
? wrapExecute(cmd, cmd.execute,
|
|
29
|
-
: bindExecute(cmd
|
|
29
|
+
? wrapExecute(cmd, cmd.execute, ctx, this.config)
|
|
30
|
+
: bindExecute(cmd.execute, ctx)
|
|
30
31
|
|
|
31
|
-
return
|
|
32
|
+
return commandAddCh.runStores(ctx, addCommand, this, ...arguments)
|
|
32
33
|
})
|
|
33
34
|
|
|
34
35
|
shimmer.wrap(Connection.prototype, 'query', query => function (sql, values, cb) {
|
|
@@ -103,53 +104,60 @@ function wrapConnection (Connection, version) {
|
|
|
103
104
|
|
|
104
105
|
return Connection
|
|
105
106
|
|
|
106
|
-
function bindExecute (
|
|
107
|
-
return shimmer.wrapFunction(execute, execute =>
|
|
108
|
-
|
|
109
|
-
|
|
107
|
+
function bindExecute (execute, ctx) {
|
|
108
|
+
return shimmer.wrapFunction(execute, execute => function executeWithTrace (packet, connection) {
|
|
109
|
+
const onResult = this.onResult
|
|
110
|
+
|
|
111
|
+
if (onResult) {
|
|
112
|
+
this.onResult = function () {
|
|
113
|
+
return commandFinishCh.runStores(ctx, onResult, this, ...arguments)
|
|
114
|
+
}
|
|
110
115
|
}
|
|
111
116
|
|
|
112
|
-
return
|
|
113
|
-
}
|
|
117
|
+
return commandStartCh.runStores(ctx, execute, this, ...arguments)
|
|
118
|
+
})
|
|
114
119
|
}
|
|
115
120
|
|
|
116
|
-
function wrapExecute (cmd, execute,
|
|
117
|
-
|
|
121
|
+
function wrapExecute (cmd, execute, ctx, config) {
|
|
122
|
+
return shimmer.wrapFunction(execute, execute => function executeWithTrace (packet, connection) {
|
|
123
|
+
ctx.sql = cmd.statement ? cmd.statement.query : cmd.sql
|
|
124
|
+
ctx.conf = config
|
|
118
125
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
cmd.statement.query = payload.sql
|
|
126
|
-
} else {
|
|
127
|
-
cmd.sql = payload.sql
|
|
128
|
-
}
|
|
126
|
+
return startCh.runStores(ctx, () => {
|
|
127
|
+
if (cmd.statement) {
|
|
128
|
+
cmd.statement.query = ctx.sql
|
|
129
|
+
} else {
|
|
130
|
+
cmd.sql = ctx.sql
|
|
131
|
+
}
|
|
129
132
|
|
|
130
|
-
|
|
131
|
-
|
|
133
|
+
if (this.onResult) {
|
|
134
|
+
const onResult = this.onResult
|
|
132
135
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
136
|
+
this.onResult = shimmer.wrapFunction(onResult, onResult => function (error) {
|
|
137
|
+
if (error) {
|
|
138
|
+
ctx.error = error
|
|
139
|
+
errorCh.publish(ctx)
|
|
140
|
+
}
|
|
141
|
+
finishCh.runStores(ctx, onResult, this, ...arguments)
|
|
142
|
+
})
|
|
143
|
+
} else {
|
|
144
|
+
this.on(errorMonitor, error => {
|
|
145
|
+
ctx.error = error
|
|
146
|
+
errorCh.publish(ctx)
|
|
147
|
+
})
|
|
148
|
+
this.on('end', () => finishCh.publish(ctx))
|
|
149
|
+
}
|
|
144
150
|
|
|
145
|
-
|
|
151
|
+
this.execute = execute
|
|
146
152
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
+
try {
|
|
154
|
+
return execute.apply(this, arguments)
|
|
155
|
+
} catch (err) {
|
|
156
|
+
ctx.error = err
|
|
157
|
+
errorCh.publish(ctx)
|
|
158
|
+
}
|
|
159
|
+
})
|
|
160
|
+
}, cmd)
|
|
153
161
|
}
|
|
154
162
|
}
|
|
155
163
|
function wrapPool (Pool, version) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const { errorMonitor } = require('events')
|
|
4
|
+
|
|
3
5
|
const { channel, addHook } = require('./helpers/instrument')
|
|
4
6
|
const shimmer = require('../../datadog-shimmer')
|
|
5
7
|
|
|
@@ -85,7 +87,7 @@ function getOptions (args) {
|
|
|
85
87
|
if (Array.isArray(args[0])) return getOptions(args[0])
|
|
86
88
|
return args[0]
|
|
87
89
|
case 'string':
|
|
88
|
-
if (isNaN(parseFloat(args[0]))) {
|
|
90
|
+
if (Number.isNaN(Number.parseFloat(args[0]))) {
|
|
89
91
|
return {
|
|
90
92
|
path: args[0]
|
|
91
93
|
}
|
|
@@ -99,7 +101,7 @@ function getOptions (args) {
|
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
function setupListeners (socket, protocol, ctx, finishCh, errorCh) {
|
|
102
|
-
const events = ['connect',
|
|
104
|
+
const events = ['connect', errorMonitor, 'close', 'timeout']
|
|
103
105
|
|
|
104
106
|
const wrapListener = function (error) {
|
|
105
107
|
if (error) {
|
|
@@ -70,7 +70,7 @@ function wrapRenderToHTML (renderToHTML) {
|
|
|
70
70
|
|
|
71
71
|
function wrapRenderErrorToHTML (renderErrorToHTML) {
|
|
72
72
|
return function (err, req, res, pathname, query) {
|
|
73
|
-
return instrument(req, res,
|
|
73
|
+
return instrument(req, res, () => renderErrorToHTML.apply(this, arguments), err)
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
|
|
@@ -82,7 +82,7 @@ function wrapRenderToResponse (renderToResponse) {
|
|
|
82
82
|
|
|
83
83
|
function wrapRenderErrorToResponse (renderErrorToResponse) {
|
|
84
84
|
return function (ctx, err) {
|
|
85
|
-
return instrument(ctx.req, ctx.res,
|
|
85
|
+
return instrument(ctx.req, ctx.res, () => renderErrorToResponse.apply(this, arguments), err)
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
|
|
@@ -108,6 +108,7 @@ function getPagePath (maybePage) {
|
|
|
108
108
|
|
|
109
109
|
function getPageFromPath (page, dynamicRoutes = []) {
|
|
110
110
|
for (const dynamicRoute of dynamicRoutes) {
|
|
111
|
+
// eslint-disable-next-line unicorn/prefer-regexp-test
|
|
111
112
|
if (dynamicRoute.page.startsWith('/api') && dynamicRoute.match(page)) {
|
|
112
113
|
return getPagePath(dynamicRoute.page)
|
|
113
114
|
}
|
|
@@ -121,12 +122,7 @@ function getRequestMeta (req, key) {
|
|
|
121
122
|
return typeof key === 'string' ? meta[key] : meta
|
|
122
123
|
}
|
|
123
124
|
|
|
124
|
-
function instrument (req, res,
|
|
125
|
-
if (typeof error === 'function') {
|
|
126
|
-
handler = error
|
|
127
|
-
error = null
|
|
128
|
-
}
|
|
129
|
-
|
|
125
|
+
function instrument (req, res, handler, error) {
|
|
130
126
|
req = req.originalRequest || req
|
|
131
127
|
res = res.originalResponse || res
|
|
132
128
|
|
|
@@ -216,13 +212,13 @@ addHook({
|
|
|
216
212
|
name: 'next',
|
|
217
213
|
versions: ['>=11.1'],
|
|
218
214
|
file: 'dist/server/serve-static.js'
|
|
219
|
-
}, serveStatic => shimmer.wrap(serveStatic, 'serveStatic', wrapServeStatic))
|
|
215
|
+
}, serveStatic => shimmer.wrap(serveStatic, 'serveStatic', wrapServeStatic, { replaceGetter: true }))
|
|
220
216
|
|
|
221
217
|
addHook({
|
|
222
218
|
name: 'next',
|
|
223
219
|
versions: ['>=10.2 <11.1'],
|
|
224
220
|
file: 'dist/next-server/server/serve-static.js'
|
|
225
|
-
}, serveStatic => shimmer.wrap(serveStatic, 'serveStatic', wrapServeStatic))
|
|
221
|
+
}, serveStatic => shimmer.wrap(serveStatic, 'serveStatic', wrapServeStatic, { replaceGetter: true }))
|
|
226
222
|
|
|
227
223
|
addHook({ name: 'next', versions: ['>=11.1'], file: 'dist/server/next-server.js' }, nextServer => {
|
|
228
224
|
const Server = nextServer.default
|
|
@@ -282,8 +278,7 @@ addHook({
|
|
|
282
278
|
versions: ['>=13'],
|
|
283
279
|
file: 'dist/server/web/spec-extension/request.js'
|
|
284
280
|
}, request => {
|
|
285
|
-
|
|
286
|
-
shimmer.wrap(nextUrlDescriptor, 'get', function (originalGet) {
|
|
281
|
+
shimmer.wrap(request.NextRequest.prototype, 'nextUrl', function (originalGet) {
|
|
287
282
|
return function wrappedGet () {
|
|
288
283
|
const nextUrl = originalGet.apply(this, arguments)
|
|
289
284
|
if (queryParsedChannel.hasSubscribers) {
|
|
@@ -300,8 +295,6 @@ addHook({
|
|
|
300
295
|
}
|
|
301
296
|
})
|
|
302
297
|
|
|
303
|
-
Object.defineProperty(request.NextRequest.prototype, 'nextUrl', nextUrlDescriptor)
|
|
304
|
-
|
|
305
298
|
shimmer.massWrap(request.NextRequest.prototype, ['text', 'json'], function (originalMethod) {
|
|
306
299
|
return async function wrappedJson () {
|
|
307
300
|
const body = await originalMethod.apply(this, arguments)
|
|
@@ -137,10 +137,7 @@ function addStreamedChunk (content, chunk) {
|
|
|
137
137
|
for (const choice of chunk.choices) {
|
|
138
138
|
const choiceIdx = choice.index
|
|
139
139
|
const oldChoice = content.choices.find(choice => choice?.index === choiceIdx)
|
|
140
|
-
if (
|
|
141
|
-
// we don't know which choices arrive in which order
|
|
142
|
-
content.choices[choiceIdx] = choice
|
|
143
|
-
} else {
|
|
140
|
+
if (oldChoice) {
|
|
144
141
|
if (!oldChoice.finish_reason) {
|
|
145
142
|
oldChoice.finish_reason = choice.finish_reason
|
|
146
143
|
}
|
|
@@ -177,13 +174,15 @@ function addStreamedChunk (content, chunk) {
|
|
|
177
174
|
|
|
178
175
|
if (oldTool) {
|
|
179
176
|
oldTool.function.arguments += newTool.function.arguments
|
|
180
|
-
|
|
181
|
-
return newTool
|
|
177
|
+
return oldTool
|
|
182
178
|
}
|
|
183
179
|
|
|
184
|
-
return
|
|
180
|
+
return newTool
|
|
185
181
|
})
|
|
186
182
|
}
|
|
183
|
+
} else {
|
|
184
|
+
// we don't know which choices arrive in which order
|
|
185
|
+
content.choices[choiceIdx] = choice
|
|
187
186
|
}
|
|
188
187
|
}
|
|
189
188
|
}
|
|
@@ -193,8 +192,7 @@ function convertBufferstoObjects (chunks = []) {
|
|
|
193
192
|
.concat(chunks) // combine the buffers
|
|
194
193
|
.toString() // stringify
|
|
195
194
|
.split(/(?=data:)/) // split on "data:"
|
|
196
|
-
.map(chunk => chunk.
|
|
197
|
-
.map(chunk => chunk.substring(6)) // remove 'data: ' from the front
|
|
195
|
+
.map(chunk => chunk.replace(/\n/g, '').slice(6)) // remove newlines and 'data: ' from the front
|
|
198
196
|
.slice(0, -1) // remove the last [DONE] message
|
|
199
197
|
.map(JSON.parse) // parse all of the returned objects
|
|
200
198
|
}
|
|
@@ -217,6 +215,10 @@ function wrapStreamIterator (response, options, n, ctx) {
|
|
|
217
215
|
|
|
218
216
|
if (chunk) {
|
|
219
217
|
chunks.push(chunk)
|
|
218
|
+
// TODO(BridgeAR): It likely depends on the options being passed
|
|
219
|
+
// through if the stream returns buffers or not. By reading that,
|
|
220
|
+
// we don't have to do the instanceof check anymore, which is
|
|
221
|
+
// relatively expensive.
|
|
220
222
|
if (chunk instanceof Buffer) {
|
|
221
223
|
// this operation should be safe
|
|
222
224
|
// if one chunk is a buffer (versus a plain object), the rest should be as well
|
|
@@ -226,21 +228,17 @@ function wrapStreamIterator (response, options, n, ctx) {
|
|
|
226
228
|
|
|
227
229
|
if (done) {
|
|
228
230
|
let body = {}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (processChunksAsBuffers) {
|
|
233
|
-
chunks = convertBufferstoObjects(chunks)
|
|
234
|
-
}
|
|
231
|
+
if (processChunksAsBuffers) {
|
|
232
|
+
chunks = convertBufferstoObjects(chunks)
|
|
233
|
+
}
|
|
235
234
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
}
|
|
235
|
+
if (chunks.length) {
|
|
236
|
+
// Define the initial body having all the content outside of choices from the first chunk
|
|
237
|
+
// this will include import data like created, id, model, etc.
|
|
238
|
+
body = { ...chunks[0], choices: Array.from({ length: n }) }
|
|
239
|
+
// Start from the first chunk, and add its choices into the body
|
|
240
|
+
for (const chunk_ of chunks) {
|
|
241
|
+
addStreamedChunk(body, chunk_)
|
|
244
242
|
}
|
|
245
243
|
}
|
|
246
244
|
|
|
@@ -45,7 +45,7 @@ function wrapQuery (query) {
|
|
|
45
45
|
const textProp = Object.getOwnPropertyDescriptor(textPropObj, 'text')
|
|
46
46
|
const stream = typeof textPropObj.read === 'function'
|
|
47
47
|
|
|
48
|
-
// Only alter `text` property if safe to do so.
|
|
48
|
+
// Only alter `text` property if safe to do so. Initially, it's a property, not a getter.
|
|
49
49
|
if (!textProp || textProp.configurable) {
|
|
50
50
|
const originalText = textPropObj.text
|
|
51
51
|
|
|
@@ -77,7 +77,6 @@ function wrapQuery (query) {
|
|
|
77
77
|
if (abortController.signal.aborted) {
|
|
78
78
|
const error = abortController.signal.reason || new Error('Aborted')
|
|
79
79
|
|
|
80
|
-
// eslint-disable-next-line @stylistic/js/max-len
|
|
81
80
|
// Based on: https://github.com/brianc/node-postgres/blob/54eb0fa216aaccd727765641e7d1cf5da2bc483d/packages/pg/lib/client.js#L510
|
|
82
81
|
const reusingQuery = typeof pgQuery.submit === 'function'
|
|
83
82
|
const callback = arguments[arguments.length - 1]
|
|
@@ -115,7 +114,7 @@ function wrapQuery (query) {
|
|
|
115
114
|
const queryQueue = this.queryQueue || this._queryQueue
|
|
116
115
|
const activeQuery = this.activeQuery || this._activeQuery
|
|
117
116
|
|
|
118
|
-
const newQuery = queryQueue
|
|
117
|
+
const newQuery = queryQueue.at(-1) || activeQuery
|
|
119
118
|
|
|
120
119
|
if (!newQuery) {
|
|
121
120
|
return retval
|
|
@@ -129,21 +128,15 @@ function wrapQuery (query) {
|
|
|
129
128
|
}
|
|
130
129
|
} else if (newQuery.once) {
|
|
131
130
|
newQuery
|
|
132
|
-
.once(
|
|
131
|
+
.once(errorMonitor, finish)
|
|
133
132
|
.once('end', (res) => finish(null, res))
|
|
134
133
|
} else {
|
|
134
|
+
// TODO: This code is never reached in our tests.
|
|
135
|
+
// Internally, pg always uses callbacks or streams, even for promise based queries.
|
|
136
|
+
// Investigate if this code should just be removed.
|
|
135
137
|
newQuery.then((res) => finish(null, res), finish)
|
|
136
138
|
}
|
|
137
139
|
|
|
138
|
-
if (stream) {
|
|
139
|
-
newQuery.on('end', () => {
|
|
140
|
-
finish(null, [])
|
|
141
|
-
})
|
|
142
|
-
newQuery.on(errorMonitor, (err) => {
|
|
143
|
-
finish(err)
|
|
144
|
-
})
|
|
145
|
-
}
|
|
146
|
-
|
|
147
140
|
try {
|
|
148
141
|
return retval
|
|
149
142
|
} catch (err) {
|