dd-trace 5.124.0 → 5.126.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 +3 -1
- package/ci/init.js +8 -3
- package/ci/test-optimization-validation/ci-package-scripts.js +2 -2
- package/ci/test-optimization-validation/ci-remediation.js +6 -6
- package/ci/test-optimization-validation/command-blocker.js +7 -5
- package/ci/test-optimization-validation/framework-adapters/cucumber.js +1 -1
- package/ci/test-optimization-validation/framework-adapters/vitest.js +3 -3
- package/ci/test-optimization-validation/package-check.js +1 -1
- package/ci/test-optimization-validation/report-writer.js +7 -5
- package/ci/vitest-no-worker-init-runner-setup.mjs +8 -0
- package/ci/vitest-no-worker-init-setup.mjs +13 -13
- package/ci/vitest-no-worker-init-v5-setup.mjs +4 -0
- package/index.d.ts +8 -0
- package/package.json +13 -10
- package/packages/datadog-esbuild/index.js +3 -1
- package/packages/datadog-instrumentations/src/cypress-config.js +19 -17
- package/packages/datadog-instrumentations/src/fs.js +24 -20
- package/packages/datadog-instrumentations/src/google-cloud-vertexai.js +2 -2
- package/packages/datadog-instrumentations/src/graphql.js +16 -16
- package/packages/datadog-instrumentations/src/helpers/graphql-jit-runtime.js +504 -0
- package/packages/datadog-instrumentations/src/helpers/hooks.js +2 -0
- package/packages/datadog-instrumentations/src/helpers/pool-acquire.js +265 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/compiler.js +1 -2
- package/packages/datadog-instrumentations/src/helpers/rewriter/index.js +95 -30
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/ai.js +0 -25
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/graphql-jit.js +83 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/graphql.js +85 -1
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/index.js +1 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/mercurius.js +30 -12
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/playwright.js +14 -5
- package/packages/datadog-instrumentations/src/helpers/rewriter/instrumentations/webdriverio.js +251 -0
- package/packages/datadog-instrumentations/src/helpers/rewriter/targets.json +11 -1
- package/packages/datadog-instrumentations/src/helpers/rewriter/transforms.js +562 -27
- package/packages/datadog-instrumentations/src/jest.js +166 -45
- package/packages/datadog-instrumentations/src/knex.js +76 -0
- package/packages/datadog-instrumentations/src/mariadb.js +6 -0
- package/packages/datadog-instrumentations/src/mocha/common.js +59 -2
- package/packages/datadog-instrumentations/src/mocha/main.js +66 -20
- package/packages/datadog-instrumentations/src/mocha/utils.js +2 -1
- package/packages/datadog-instrumentations/src/mocha/webdriverio-protocol.js +98 -0
- package/packages/datadog-instrumentations/src/mocha/worker.js +12 -8
- package/packages/datadog-instrumentations/src/net.js +14 -17
- package/packages/datadog-instrumentations/src/next.js +212 -62
- package/packages/datadog-instrumentations/src/openai.js +42 -40
- package/packages/datadog-instrumentations/src/pg.js +15 -0
- package/packages/datadog-instrumentations/src/playwright.js +113 -13
- package/packages/datadog-instrumentations/src/rum-browser-scripts.js +40 -0
- package/packages/datadog-instrumentations/src/sequelize.js +94 -2
- package/packages/datadog-instrumentations/src/undici.js +53 -4
- package/packages/datadog-instrumentations/src/vitest-main-no-worker-init.js +37 -3
- package/packages/datadog-instrumentations/src/vitest-main.js +92 -9
- package/packages/datadog-instrumentations/src/vitest-worker.js +71 -14
- package/packages/datadog-instrumentations/src/webdriverio.js +965 -6
- package/packages/datadog-plugin-amqp10/src/consumer.js +3 -1
- package/packages/datadog-plugin-amqp10/src/producer.js +3 -1
- package/packages/datadog-plugin-amqp10/src/util.js +2 -1
- package/packages/datadog-plugin-avsc/src/schema_iterator.js +6 -1
- package/packages/datadog-plugin-aws-sdk/src/services/bedrockruntime/utils.js +16 -5
- package/packages/datadog-plugin-cassandra-driver/src/index.js +8 -3
- package/packages/datadog-plugin-cucumber/src/index.js +0 -2
- package/packages/datadog-plugin-cypress/src/cypress-plugin.js +262 -48
- package/packages/datadog-plugin-google-cloud-pubsub/src/client.js +4 -1
- package/packages/datadog-plugin-graphql/src/execute.js +998 -196
- package/packages/datadog-plugin-graphql/src/index.js +27 -7
- package/packages/datadog-plugin-graphql/src/jit.js +136 -0
- package/packages/datadog-plugin-graphql/src/request.js +18 -27
- package/packages/datadog-plugin-graphql/src/resolve-error.js +108 -0
- package/packages/datadog-plugin-graphql/src/tools/signature.js +1 -2
- package/packages/datadog-plugin-graphql/src/tools/transforms.js +45 -3
- package/packages/datadog-plugin-graphql/src/utils.js +208 -120
- package/packages/datadog-plugin-graphql/src/validate.js +10 -23
- package/packages/datadog-plugin-jest/src/index.js +0 -6
- package/packages/datadog-plugin-langchain/src/tracing.js +7 -0
- package/packages/datadog-plugin-mocha/src/index.js +403 -75
- package/packages/datadog-plugin-mongodb-core/src/query.js +6 -0
- package/packages/datadog-plugin-mysql/src/index.js +41 -15
- package/packages/datadog-plugin-net/src/tcp.js +3 -1
- package/packages/datadog-plugin-next/src/index.js +63 -29
- package/packages/datadog-plugin-playwright/src/index.js +167 -27
- package/packages/datadog-plugin-undici/src/index.js +27 -41
- package/packages/datadog-plugin-vitest/src/index.js +6 -12
- package/packages/dd-trace/src/aiguard/evaluation.js +2 -1
- package/packages/dd-trace/src/aiguard/messages/anthropic.js +8 -1
- package/packages/dd-trace/src/aiguard/messages/openai.js +8 -1
- package/packages/dd-trace/src/aiguard/messages/vercel-ai.js +20 -6
- package/packages/dd-trace/src/appsec/api_security/index.js +23 -6
- package/packages/dd-trace/src/appsec/api_security/sampler.js +99 -40
- package/packages/dd-trace/src/appsec/graphql.js +6 -2
- package/packages/dd-trace/src/appsec/iast/taint-tracking/plugin.js +3 -3
- package/packages/dd-trace/src/appsec/iast/taint-tracking/taint-tracking-impl.js +2 -1
- package/packages/dd-trace/src/appsec/iast/telemetry/span-tags.js +8 -2
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/command-sensitive-analyzer.js +3 -1
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/sql-sensitive-analyzer.js +531 -95
- package/packages/dd-trace/src/appsec/iast/vulnerabilities-formatter/evidence-redaction/sensitive-analyzers/url-sensitive-analyzer.js +1 -1
- package/packages/dd-trace/src/appsec/lambda.js +44 -26
- package/packages/dd-trace/src/ci-visibility/encode/json-encoder.js +32 -2
- package/packages/dd-trace/src/ci-visibility/exporters/agent-proxy/index.js +8 -8
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/coverage-writer.js +6 -4
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/di-logs-writer.js +20 -4
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/request-tracker.js +5 -173
- package/packages/dd-trace/src/ci-visibility/exporters/agentless/writer.js +7 -6
- package/packages/dd-trace/src/ci-visibility/exporters/agents.js +54 -0
- package/packages/dd-trace/src/ci-visibility/exporters/ci-validation/writer.js +1 -2
- package/packages/dd-trace/src/ci-visibility/exporters/ci-visibility-exporter.js +394 -225
- package/packages/dd-trace/src/ci-visibility/exporters/limits.js +9 -0
- package/packages/dd-trace/src/ci-visibility/exporters/request.js +323 -31
- package/packages/dd-trace/src/ci-visibility/exporters/settings-cache-key.js +42 -0
- package/packages/dd-trace/src/ci-visibility/final-flush.js +2 -1
- package/packages/dd-trace/src/ci-visibility/requests/fs-cache.js +57 -18
- package/packages/dd-trace/src/ci-visibility/requests/get-library-configuration.js +0 -3
- package/packages/dd-trace/src/ci-visibility/requests/request.js +11 -0
- package/packages/dd-trace/src/ci-visibility/requests/upload-test-screenshot.js +164 -71
- package/packages/dd-trace/src/ci-visibility/requests/video-request.js +180 -0
- package/packages/dd-trace/src/ci-visibility/telemetry.js +10 -7
- package/packages/dd-trace/src/ci-visibility/test-video.js +61 -0
- package/packages/dd-trace/src/config/generated-config-types.d.ts +4 -0
- package/packages/dd-trace/src/config/index.js +73 -13
- package/packages/dd-trace/src/config/parsers.js +11 -1
- package/packages/dd-trace/src/config/stable.js +3 -3
- package/packages/dd-trace/src/config/supported-configurations.json +22 -2
- package/packages/dd-trace/src/crashtracking/crashtracker.js +82 -18
- package/packages/dd-trace/src/debugger/config.js +12 -1
- package/packages/dd-trace/src/debugger/constants.js +1 -0
- package/packages/dd-trace/src/debugger/devtools_client/breakpoints.js +2 -1
- package/packages/dd-trace/src/debugger/devtools_client/request-options.js +28 -0
- package/packages/dd-trace/src/debugger/devtools_client/send.js +7 -40
- package/packages/dd-trace/src/debugger/devtools_client/status.js +11 -6
- package/packages/dd-trace/src/debugger/devtools_client/tags.js +41 -0
- package/packages/dd-trace/src/debugger/index.js +23 -3
- package/packages/dd-trace/src/dogstatsd.js +510 -76
- package/packages/dd-trace/src/encode/0.4-cross-payload.js +170 -0
- package/packages/dd-trace/src/encode/0.4.js +5 -5
- package/packages/dd-trace/src/encode/agentless-ci-visibility.js +9 -8
- package/packages/dd-trace/src/evp_proxy/direct.js +3 -25
- package/packages/dd-trace/src/exporters/agent/index.js +2 -1
- package/packages/dd-trace/src/exporters/agent/writer.js +24 -7
- package/packages/dd-trace/src/exporters/agentless/index.js +7 -9
- package/packages/dd-trace/src/exporters/agentless/writer.js +103 -119
- package/packages/dd-trace/src/exporters/common/agents.js +28 -6
- package/packages/dd-trace/src/exporters/common/buffering-exporter.js +2 -2
- package/packages/dd-trace/src/exporters/common/final-flush-request-tracker.js +191 -0
- package/packages/dd-trace/src/exporters/common/proxy.js +52 -0
- package/packages/dd-trace/src/exporters/common/request.js +42 -14
- package/packages/dd-trace/src/exporters/common/url.js +40 -1
- package/packages/dd-trace/src/exporters/common/writer.js +9 -7
- package/packages/dd-trace/src/flush.js +6 -3
- package/packages/dd-trace/src/id.js +14 -0
- package/packages/dd-trace/src/index.js +5 -2
- package/packages/dd-trace/src/llmobs/experiments/dataset.js +2 -1
- package/packages/dd-trace/src/llmobs/index.js +32 -32
- package/packages/dd-trace/src/llmobs/plugins/ai/ddTelemetry.js +22 -71
- package/packages/dd-trace/src/llmobs/plugins/ai/vercelTelemetry.js +23 -13
- package/packages/dd-trace/src/llmobs/plugins/langchain/index.js +7 -0
- package/packages/dd-trace/src/llmobs/util.js +0 -33
- package/packages/dd-trace/src/llmobs/writers/base.js +49 -32
- package/packages/dd-trace/src/log/index.js +7 -1
- package/packages/dd-trace/src/{ci-visibility/log-submission → log-submission}/log-submission-plugin.js +48 -19
- package/packages/dd-trace/src/openfeature/writers/base.js +14 -12
- package/packages/dd-trace/src/openfeature/writers/util.js +1 -1
- package/packages/dd-trace/src/opentelemetry/logs/index.js +5 -24
- package/packages/dd-trace/src/opentelemetry/logs/otlp_http_log_exporter.js +14 -4
- package/packages/dd-trace/src/opentelemetry/metrics/index.js +15 -22
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_http_metric_exporter.js +14 -4
- package/packages/dd-trace/src/opentelemetry/metrics/otlp_span_stats_exporter.js +10 -0
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_http_exporter_base.js +5 -0
- package/packages/dd-trace/src/opentelemetry/otlp/otlp_transformer_base.js +19 -4
- package/packages/dd-trace/src/opentelemetry/resource-attributes.js +55 -0
- package/packages/dd-trace/src/opentelemetry/trace/index.js +6 -1
- package/packages/dd-trace/src/opentelemetry/trace/otlp_http_trace_exporter.js +10 -0
- package/packages/dd-trace/src/opentracing/propagation/text_map.js +101 -20
- package/packages/dd-trace/src/payload-tagging/index.js +2 -1
- package/packages/dd-trace/src/plugins/ci_plugin.js +1 -6
- package/packages/dd-trace/src/plugins/tracing.js +12 -10
- package/packages/dd-trace/src/plugins/util/ci.js +3 -1
- package/packages/dd-trace/src/plugins/util/inferred_proxy.js +16 -15
- package/packages/dd-trace/src/plugins/util/test.js +83 -20
- package/packages/dd-trace/src/plugins/util/url.js +2 -2
- package/packages/dd-trace/src/plugins/util/web.js +4 -9
- package/packages/dd-trace/src/priority_sampler.js +4 -0
- package/packages/dd-trace/src/profiling/config.js +1 -0
- package/packages/dd-trace/src/profiling/oom.js +7 -2
- package/packages/dd-trace/src/profiling/profiler.js +23 -13
- package/packages/dd-trace/src/profiling/profilers/space.js +38 -11
- package/packages/dd-trace/src/profiling/webspan-utils.js +7 -4
- package/packages/dd-trace/src/proxy.js +75 -5
- package/packages/dd-trace/src/remote_config/index.js +319 -101
- package/packages/dd-trace/src/remote_config/scheduler.js +37 -12
- package/packages/dd-trace/src/runtime_metrics/client.js +37 -8
- package/packages/dd-trace/src/runtime_metrics/otlp_runtime_metrics.js +5 -1
- package/packages/dd-trace/src/runtime_metrics/runtime_metrics.js +5 -1
- package/packages/dd-trace/src/sampling_rule.js +39 -10
- package/packages/dd-trace/src/serverless/telemetry-delivery-tracker.js +4 -8
- package/packages/dd-trace/src/serverless/vercel.js +53 -20
- package/packages/dd-trace/src/serverless.js +10 -3
- package/packages/dd-trace/src/service-naming/schemas/util.js +1 -1
- package/packages/dd-trace/src/span_processor.js +18 -3
- package/packages/dd-trace/src/span_stats.js +24 -28
- package/packages/dd-trace/src/startup-log.js +3 -2
- package/packages/dd-trace/src/telemetry/agentless-url.js +28 -0
- package/packages/dd-trace/src/telemetry/send-data.js +23 -20
- package/packages/dd-trace/src/telemetry/session-propagation.js +3 -2
- package/packages/dd-trace/src/tracer.js +4 -5
- package/packages/dd-trace/src/tracer_metadata.js +11 -3
- package/vendor/dist/@datadog/sketches-js/index.js +1 -1
- package/vendor/dist/protobufjs/index.js +1 -1
- package/vendor/dist/protobufjs/minimal/index.js +1 -1
- package/packages/datadog-instrumentations/src/playwright-browser-scripts.js +0 -27
- package/packages/dd-trace/src/encode/agentless-json.js +0 -210
|
@@ -68,6 +68,7 @@ const finishWrappedContexts = new WeakSet()
|
|
|
68
68
|
const runFilesWrappedPrototypes = new WeakSet()
|
|
69
69
|
const activeRunFilesContexts = new WeakSet()
|
|
70
70
|
const runErrorsByContext = new WeakMap()
|
|
71
|
+
const typecheckPoolWorkerRequests = new WeakMap()
|
|
71
72
|
let isFlakyTestRetriesEnabled = false
|
|
72
73
|
let flakyTestRetriesCount = 0
|
|
73
74
|
let isEarlyFlakeDetectionEnabled = false
|
|
@@ -148,6 +149,10 @@ function getTypecheckerExport (vitestPackage) {
|
|
|
148
149
|
return findExportByName(vitestPackage, 'Typechecker')
|
|
149
150
|
}
|
|
150
151
|
|
|
152
|
+
function getTypecheckPoolWorkerExport (vitestPackage) {
|
|
153
|
+
return findExportByName(vitestPackage, 'TypecheckPoolWorker')
|
|
154
|
+
}
|
|
155
|
+
|
|
151
156
|
function getForksPoolWorkerExport (vitestPackage) {
|
|
152
157
|
return findExportByName(vitestPackage, 'ForksPoolWorker')
|
|
153
158
|
}
|
|
@@ -1207,7 +1212,6 @@ function getFinishWrapper (exitOrClose) {
|
|
|
1207
1212
|
status: runError ? 'fail' : (areAllSuitesSkipped ? 'skip' : getSessionStatus(this.state)),
|
|
1208
1213
|
testCodeCoverageLinesTotal,
|
|
1209
1214
|
error,
|
|
1210
|
-
isTestSessionFinalizationError: Boolean(runError),
|
|
1211
1215
|
isEarlyFlakeDetectionEnabled,
|
|
1212
1216
|
isEarlyFlakeDetectionFaulty,
|
|
1213
1217
|
isTestManagementTestsEnabled,
|
|
@@ -1691,9 +1695,9 @@ async function reportTypecheckFile (file, sessionConfiguration, frameworkVersion
|
|
|
1691
1695
|
})
|
|
1692
1696
|
}
|
|
1693
1697
|
|
|
1694
|
-
async function reportTypecheckResults (result, frameworkVersion, ctx, typechecker) {
|
|
1698
|
+
async function reportTypecheckResults (result, frameworkVersion, ctx, typechecker, files = result?.files) {
|
|
1695
1699
|
if (!testSuiteFinishCh.hasSubscribers) return
|
|
1696
|
-
if (!Array.isArray(result?.files)) return
|
|
1700
|
+
if (!Array.isArray(result?.files) || !Array.isArray(files)) return
|
|
1697
1701
|
|
|
1698
1702
|
const setupState = ctx && mainProcessSetupStates.get(ctx)
|
|
1699
1703
|
if (
|
|
@@ -1703,7 +1707,7 @@ async function reportTypecheckResults (result, frameworkVersion, ctx, typechecke
|
|
|
1703
1707
|
await ensureMainProcessSetup(
|
|
1704
1708
|
ctx,
|
|
1705
1709
|
frameworkVersion,
|
|
1706
|
-
|
|
1710
|
+
files,
|
|
1707
1711
|
false,
|
|
1708
1712
|
!setupState || setupState.disableTestImpactAnalysis
|
|
1709
1713
|
)
|
|
@@ -1713,7 +1717,7 @@ async function reportTypecheckResults (result, frameworkVersion, ctx, typechecke
|
|
|
1713
1717
|
? await getChannelPromise(testSessionConfigurationCh, { frameworkVersion }) || {}
|
|
1714
1718
|
: {}
|
|
1715
1719
|
|
|
1716
|
-
await Promise.all(
|
|
1720
|
+
await Promise.all(files.map(file => reportTypecheckFile(
|
|
1717
1721
|
file,
|
|
1718
1722
|
sessionConfiguration,
|
|
1719
1723
|
frameworkVersion,
|
|
@@ -1742,6 +1746,51 @@ function getTypecheckerWrapper (vitestPackage, frameworkVersion) {
|
|
|
1742
1746
|
return vitestPackage
|
|
1743
1747
|
}
|
|
1744
1748
|
|
|
1749
|
+
function wrapTypecheckPoolWorker (TypecheckPoolWorker, frameworkVersion) {
|
|
1750
|
+
if (!TypecheckPoolWorker?.prototype?.send || !TypecheckPoolWorker.prototype.on) return
|
|
1751
|
+
|
|
1752
|
+
shimmer.wrap(TypecheckPoolWorker.prototype, 'send', send => function (message) {
|
|
1753
|
+
typecheckPoolWorkerRequests.set(this, {
|
|
1754
|
+
type: message?.type,
|
|
1755
|
+
filepaths: new Set(message?.context?.files?.map(file => file.filepath)),
|
|
1756
|
+
})
|
|
1757
|
+
return send.apply(this, arguments)
|
|
1758
|
+
})
|
|
1759
|
+
shimmer.wrap(TypecheckPoolWorker.prototype, 'on', on => function (event, callback) {
|
|
1760
|
+
if (event !== 'message') return on.apply(this, arguments)
|
|
1761
|
+
|
|
1762
|
+
const worker = this
|
|
1763
|
+
arguments[1] = shimmer.wrapFunction(callback, callback => function (message) {
|
|
1764
|
+
const typechecker = worker.project?.typechecker
|
|
1765
|
+
const request = typecheckPoolWorkerRequests.get(worker)
|
|
1766
|
+
if (
|
|
1767
|
+
message?.type !== 'testfileFinished' ||
|
|
1768
|
+
request?.type !== 'run' ||
|
|
1769
|
+
!typechecker
|
|
1770
|
+
) {
|
|
1771
|
+
return callback.apply(this, arguments)
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1774
|
+
const result = typechecker.getResult?.()
|
|
1775
|
+
const files = result?.files?.filter(file => request.filepaths.has(file.filepath))
|
|
1776
|
+
return reportTypecheckResults(
|
|
1777
|
+
result,
|
|
1778
|
+
frameworkVersion,
|
|
1779
|
+
worker.project?.vitest,
|
|
1780
|
+
typechecker,
|
|
1781
|
+
files
|
|
1782
|
+
).then(
|
|
1783
|
+
() => callback.apply(this, arguments),
|
|
1784
|
+
(error) => {
|
|
1785
|
+
log.error('Could not report Vitest typecheck results: %s', error?.message)
|
|
1786
|
+
return callback.apply(this, arguments)
|
|
1787
|
+
}
|
|
1788
|
+
)
|
|
1789
|
+
})
|
|
1790
|
+
return on.apply(this, arguments)
|
|
1791
|
+
})
|
|
1792
|
+
}
|
|
1793
|
+
|
|
1745
1794
|
function getCreateCliWrapper (vitestPackage, frameworkVersion) {
|
|
1746
1795
|
const createCliExport = findExportByName(vitestPackage, 'createCLI')
|
|
1747
1796
|
if (!createCliExport) {
|
|
@@ -1963,14 +2012,23 @@ function getStartVitestWrapper (cliApiPackage, frameworkVersion) {
|
|
|
1963
2012
|
}
|
|
1964
2013
|
const startVitestExport = findExportByName(cliApiPackage, 'startVitest')
|
|
1965
2014
|
shimmer.wrap(cliApiPackage, startVitestExport.key, getCliOrStartVitestWrapper(frameworkVersion))
|
|
2015
|
+
const createVitestExport = findExportByName(cliApiPackage, 'createVitest')
|
|
2016
|
+
if (createVitestExport) {
|
|
2017
|
+
shimmer.wrap(cliApiPackage, createVitestExport.key, getCliOrStartVitestWrapper(frameworkVersion))
|
|
2018
|
+
}
|
|
1966
2019
|
wrapMessagePortOn()
|
|
1967
2020
|
|
|
1968
|
-
|
|
2021
|
+
wrapVitestInternals(cliApiPackage, frameworkVersion)
|
|
2022
|
+
return cliApiPackage
|
|
2023
|
+
}
|
|
2024
|
+
|
|
2025
|
+
function wrapVitestInternals (vitestPackage, frameworkVersion) {
|
|
2026
|
+
const vitest = getVitestExport(vitestPackage)
|
|
1969
2027
|
if (vitest) {
|
|
1970
2028
|
wrapVitestRunFiles(vitest.value, frameworkVersion)
|
|
1971
2029
|
}
|
|
1972
2030
|
|
|
1973
|
-
const forksPoolWorker = getForksPoolWorkerExport(
|
|
2031
|
+
const forksPoolWorker = getForksPoolWorkerExport(vitestPackage)
|
|
1974
2032
|
if (forksPoolWorker) {
|
|
1975
2033
|
// function is async
|
|
1976
2034
|
shimmer.wrap(forksPoolWorker.value.prototype, 'start', start => function (...args) {
|
|
@@ -1982,7 +2040,7 @@ function getStartVitestWrapper (cliApiPackage, frameworkVersion) {
|
|
|
1982
2040
|
shimmer.wrap(forksPoolWorker.value.prototype, 'on', getWrappedOn)
|
|
1983
2041
|
}
|
|
1984
2042
|
|
|
1985
|
-
const threadsPoolWorker = getThreadsPoolWorkerExport(
|
|
2043
|
+
const threadsPoolWorker = getThreadsPoolWorkerExport(vitestPackage)
|
|
1986
2044
|
if (threadsPoolWorker) {
|
|
1987
2045
|
// function is async
|
|
1988
2046
|
shimmer.wrap(threadsPoolWorker.value.prototype, 'start', start => function (...args) {
|
|
@@ -1992,7 +2050,6 @@ function getStartVitestWrapper (cliApiPackage, frameworkVersion) {
|
|
|
1992
2050
|
})
|
|
1993
2051
|
shimmer.wrap(threadsPoolWorker.value.prototype, 'on', getWrappedOn)
|
|
1994
2052
|
}
|
|
1995
|
-
return cliApiPackage
|
|
1996
2053
|
}
|
|
1997
2054
|
|
|
1998
2055
|
addHook({
|
|
@@ -2082,6 +2139,32 @@ addHook({
|
|
|
2082
2139
|
return coveragePackage
|
|
2083
2140
|
})
|
|
2084
2141
|
|
|
2142
|
+
// Vitest 5 moved the core and pool worker exports out of cli-api into an index chunk.
|
|
2143
|
+
addHook({
|
|
2144
|
+
name: 'vitest',
|
|
2145
|
+
versions: ['>=5.0.0'],
|
|
2146
|
+
filePattern: 'dist/chunks/index.*',
|
|
2147
|
+
}, (vitestPackage, frameworkVersion) => {
|
|
2148
|
+
if (!getVitestExport(vitestPackage)) return vitestPackage
|
|
2149
|
+
|
|
2150
|
+
wrapVitestInternals(vitestPackage, frameworkVersion)
|
|
2151
|
+
|
|
2152
|
+
const typecheckPoolWorker = getTypecheckPoolWorkerExport(vitestPackage)
|
|
2153
|
+
if (typecheckPoolWorker) {
|
|
2154
|
+
wrapTypecheckPoolWorker(typecheckPoolWorker.value, frameworkVersion)
|
|
2155
|
+
}
|
|
2156
|
+
|
|
2157
|
+
const baseSequencer = getBaseSequencerExport(vitestPackage)
|
|
2158
|
+
if (baseSequencer) {
|
|
2159
|
+
shimmer.wrap(
|
|
2160
|
+
baseSequencer.value.prototype,
|
|
2161
|
+
'sort',
|
|
2162
|
+
sort => getSortWrapper(sort, frameworkVersion)
|
|
2163
|
+
)
|
|
2164
|
+
}
|
|
2165
|
+
return vitestPackage
|
|
2166
|
+
})
|
|
2167
|
+
|
|
2085
2168
|
addHook({
|
|
2086
2169
|
name: 'vitest',
|
|
2087
2170
|
versions: ['>=3.0.0 <3.0.9'],
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const fs = require('node:fs')
|
|
3
4
|
const path = require('node:path')
|
|
4
5
|
const { performance } = require('node:perf_hooks')
|
|
5
6
|
const { fileURLToPath } = require('node:url')
|
|
@@ -244,7 +245,17 @@ function wrapVitestCoverageRpc () {
|
|
|
244
245
|
if (property !== 'onAfterSuiteRun' || typeof value !== 'function') return value
|
|
245
246
|
|
|
246
247
|
return function (metadata) {
|
|
247
|
-
|
|
248
|
+
const coverage = metadata?.coverage
|
|
249
|
+
if (typeof coverage === 'string') {
|
|
250
|
+
try {
|
|
251
|
+
vitestCoverageSnapshot = JSON.parse(fs.readFileSync(coverage, 'utf8'))
|
|
252
|
+
} catch (error) {
|
|
253
|
+
log.warn('Could not read Vitest V8 coverage: %s', error?.message)
|
|
254
|
+
vitestCoverageSnapshot = undefined
|
|
255
|
+
}
|
|
256
|
+
} else {
|
|
257
|
+
vitestCoverageSnapshot = coverage
|
|
258
|
+
}
|
|
248
259
|
return value.apply(this, arguments)
|
|
249
260
|
}
|
|
250
261
|
},
|
|
@@ -891,22 +902,36 @@ function wrapVitestTestRunner (VitestTestRunner) {
|
|
|
891
902
|
}
|
|
892
903
|
|
|
893
904
|
function captureRunnerFunctions (pkg) {
|
|
894
|
-
if (vitestGetFn) return
|
|
895
905
|
const getFnExport = findExportByName(pkg, 'getFn')
|
|
896
906
|
const setFnExport = findExportByName(pkg, 'setFn')
|
|
897
|
-
if (
|
|
907
|
+
if (!vitestGetFn && getFnExport) {
|
|
898
908
|
vitestGetFn = getFnExport.value
|
|
909
|
+
}
|
|
910
|
+
if (!vitestSetFn && setFnExport) {
|
|
899
911
|
vitestSetFn = setFnExport.value
|
|
900
912
|
}
|
|
901
913
|
const getHooksExport = findExportByName(pkg, 'getHooks')
|
|
902
|
-
if (getHooksExport) {
|
|
914
|
+
if (!vitestGetHooks && getHooksExport) {
|
|
903
915
|
vitestGetHooks = getHooksExport.value
|
|
904
916
|
}
|
|
905
917
|
}
|
|
906
918
|
|
|
919
|
+
function installTestScopedRunTask (VitestTestRunner) {
|
|
920
|
+
if (VitestTestRunner.prototype.runTask) return
|
|
921
|
+
|
|
922
|
+
VitestTestRunner.prototype.runTask = function (task) {
|
|
923
|
+
const fn = vitestGetFn?.(task)
|
|
924
|
+
if (!fn) {
|
|
925
|
+
throw new Error('Test function is not found. Did you add it using setFn?')
|
|
926
|
+
}
|
|
927
|
+
const testFn = wrapTestScopedFn(task, fn)
|
|
928
|
+
return testFn()
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
|
|
907
932
|
addHook({
|
|
908
933
|
name: 'vitest',
|
|
909
|
-
versions: ['>=4.0.0'],
|
|
934
|
+
versions: ['>=4.0.0 <5.0.0'],
|
|
910
935
|
filePattern: 'dist/chunks/test.*',
|
|
911
936
|
}, (testPackage) => {
|
|
912
937
|
const testRunner = getTestRunnerExport(testPackage)
|
|
@@ -920,6 +945,30 @@ addHook({
|
|
|
920
945
|
return testPackage
|
|
921
946
|
})
|
|
922
947
|
|
|
948
|
+
// Vitest 5 bundled the former @vitest/runner implementation into separate index and run chunks.
|
|
949
|
+
addHook({
|
|
950
|
+
name: 'vitest',
|
|
951
|
+
versions: ['>=5.0.0'],
|
|
952
|
+
filePattern: 'dist/chunks/index.*',
|
|
953
|
+
}, (testPackage) => {
|
|
954
|
+
const testRunner = getTestRunnerExport(testPackage)
|
|
955
|
+
if (testRunner) {
|
|
956
|
+
wrapVitestTestRunner(testRunner.value)
|
|
957
|
+
installTestScopedRunTask(testRunner.value)
|
|
958
|
+
}
|
|
959
|
+
return testPackage
|
|
960
|
+
})
|
|
961
|
+
|
|
962
|
+
addHook({
|
|
963
|
+
name: 'vitest',
|
|
964
|
+
versions: ['>=5.0.0'],
|
|
965
|
+
filePattern: 'dist/chunks/run.*',
|
|
966
|
+
}, (runnerPackage, frameworkVersion) => {
|
|
967
|
+
captureRunnerFunctions(runnerPackage)
|
|
968
|
+
wrapStartTests(runnerPackage, frameworkVersion)
|
|
969
|
+
return runnerPackage
|
|
970
|
+
})
|
|
971
|
+
|
|
923
972
|
addHook({
|
|
924
973
|
name: '@vitest/runner',
|
|
925
974
|
versions: ['>=1.6.0'],
|
|
@@ -946,13 +995,8 @@ addHook({
|
|
|
946
995
|
return vitestPackage
|
|
947
996
|
})
|
|
948
997
|
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
addHook({
|
|
952
|
-
name: '@vitest/runner',
|
|
953
|
-
versions: ['>=1.6.0'],
|
|
954
|
-
}, (vitestPackage, frameworkVersion) => {
|
|
955
|
-
shimmer.wrap(vitestPackage, 'startTests', startTests => async function (testPaths) {
|
|
998
|
+
function getStartTestsWrapper (frameworkVersion) {
|
|
999
|
+
return startTests => async function (testPaths) {
|
|
956
1000
|
let testSuiteError = null
|
|
957
1001
|
if (!testSuiteFinishCh.hasSubscribers) {
|
|
958
1002
|
return startTests.apply(this, arguments)
|
|
@@ -1166,7 +1210,20 @@ addHook({
|
|
|
1166
1210
|
})
|
|
1167
1211
|
|
|
1168
1212
|
return startTestsResponse
|
|
1169
|
-
}
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1170
1215
|
|
|
1216
|
+
function wrapStartTests (vitestPackage, frameworkVersion) {
|
|
1217
|
+
const startTests = findExportByName(vitestPackage, 'startTests')
|
|
1218
|
+
if (startTests) {
|
|
1219
|
+
shimmer.wrap(vitestPackage, startTests.key, getStartTestsWrapper(frameworkVersion))
|
|
1220
|
+
}
|
|
1171
1221
|
return vitestPackage
|
|
1172
|
-
}
|
|
1222
|
+
}
|
|
1223
|
+
|
|
1224
|
+
// test suite start and finish
|
|
1225
|
+
// only relevant for workers
|
|
1226
|
+
addHook({
|
|
1227
|
+
name: '@vitest/runner',
|
|
1228
|
+
versions: ['>=1.6.0'],
|
|
1229
|
+
}, wrapStartTests)
|