From 9e8537a0d011e13d7a010ba8cc77797a0e375bb8 Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Sun, 27 Apr 2025 13:06:28 -0500 Subject: [PATCH 1/8] update `vitest` to version 3.1.2 --- package.json | 8 +- packages/ast-spec/package.json | 4 +- packages/eslint-plugin-internal/package.json | 4 +- packages/eslint-plugin/package.json | 4 +- packages/integration-tests/package.json | 4 +- packages/parser/package.json | 4 +- .../package.json | 4 +- packages/rule-tester/package.json | 4 +- packages/scope-manager/package.json | 4 +- packages/type-utils/package.json | 4 +- packages/types/package.json | 4 +- packages/typescript-eslint/package.json | 4 +- packages/typescript-estree/package.json | 4 +- packages/utils/package.json | 4 +- packages/visitor-keys/package.json | 4 +- yarn.lock | 509 +++++++++--------- 16 files changed, 290 insertions(+), 283 deletions(-) diff --git a/package.json b/package.json index 624fa884fb48..0e9a710ff72c 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,8 @@ "@typescript-eslint/types": "workspace:^", "@typescript-eslint/typescript-estree": "workspace:^", "@typescript-eslint/utils": "workspace:^", - "@vitest/coverage-v8": "^3.1.1", - "@vitest/eslint-plugin": "^1.1.43", + "@vitest/coverage-v8": "^3.1.2", + "@vitest/eslint-plugin": "^1.1.44", "console-fail-test": "^0.5.0", "cross-fetch": "^4.0.0", "cspell": "^8.15.2", @@ -114,8 +114,8 @@ "tsx": "*", "typescript": ">=4.8.4 <5.9.0", "typescript-eslint": "workspace:^", - "vite": "^6.3.3", - "vitest": "^3.1.1", + "vite": "^6.3.4", + "vitest": "^3.1.2", "yargs": "17.7.2" }, "resolutions": { diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 0e79574cb489..25022d597fc5 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -50,13 +50,13 @@ "@babel/eslint-parser": "*", "@microsoft/api-extractor": "^7.47.11", "@typescript-eslint/typescript-estree": "workspace:*", - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "glob": "*", "jest-diff": "^29.7.0", "prettier": "^3.2.5", "pretty-format": "*", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" } } diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json index 2446f9acb6a3..7df8ec9e5418 100644 --- a/packages/eslint-plugin-internal/package.json +++ b/packages/eslint-plugin-internal/package.json @@ -31,8 +31,8 @@ "prettier": "^3.2.5" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "rimraf": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" } } diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 79aa9f997102..ce594cb746d9 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -77,7 +77,7 @@ "@types/natural-compare": "*", "@typescript-eslint/rule-schema-to-typescript-types": "8.31.1", "@typescript-eslint/rule-tester": "8.31.1", - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "ajv": "^6.12.6", "cross-fetch": "*", "eslint": "*", @@ -93,7 +93,7 @@ "tsx": "*", "typescript": "*", "unist-util-visit": "^5.0.0", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index c1298201a5a8..0e9edffb45b4 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -18,7 +18,7 @@ "check-types": "npx nx typecheck" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.1", - "vitest": "^3.1.1" + "@vitest/coverage-v8": "^3.1.2", + "vitest": "^3.1.2" } } diff --git a/packages/parser/package.json b/packages/parser/package.json index 3d1c4cfbca4a..f537dc12f16f 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -59,12 +59,12 @@ "debug": "^4.3.4" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "glob": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "funding": { "type": "opencollective", diff --git a/packages/rule-schema-to-typescript-types/package.json b/packages/rule-schema-to-typescript-types/package.json index 17e809154e59..8a19a7231e6a 100644 --- a/packages/rule-schema-to-typescript-types/package.json +++ b/packages/rule-schema-to-typescript-types/package.json @@ -37,9 +37,9 @@ "prettier": "^3.2.5" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "funding": { "type": "opencollective", diff --git a/packages/rule-tester/package.json b/packages/rule-tester/package.json index dbffde6687a2..1b7f845fdbb4 100644 --- a/packages/rule-tester/package.json +++ b/packages/rule-tester/package.json @@ -61,7 +61,7 @@ "devDependencies": { "@types/json-stable-stringify-without-jsonify": "^1.0.2", "@types/lodash.merge": "4.6.9", - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "chai": "^4.4.1", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", @@ -70,7 +70,7 @@ "sinon": "^16.1.3", "source-map-support": "^0.5.21", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "funding": { "type": "opencollective", diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index 0756ca897e67..0563db56f86f 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -52,12 +52,12 @@ }, "devDependencies": { "@typescript-eslint/typescript-estree": "8.31.1", - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "glob": "*", "prettier": "^3.2.5", "pretty-format": "*", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "funding": { "type": "opencollective", diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index 33dc30ee634f..77e89daa0be9 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -56,12 +56,12 @@ }, "devDependencies": { "@typescript-eslint/parser": "8.31.1", - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "ajv": "^6.12.6", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "funding": { "type": "opencollective", diff --git a/packages/types/package.json b/packages/types/package.json index 168528f73cde..a6fc67b817e9 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -67,12 +67,12 @@ } }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "prettier": "^3.2.5", "rimraf": "*", "tsx": "*", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "funding": { "type": "opencollective", diff --git a/packages/typescript-eslint/package.json b/packages/typescript-eslint/package.json index 5a5a7769ff9d..b33a91517df3 100644 --- a/packages/typescript-eslint/package.json +++ b/packages/typescript-eslint/package.json @@ -60,11 +60,11 @@ "typescript": ">=4.8.4 <5.9.0" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "funding": { "type": "opencollective", diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index 14864784bb3c..4cd2a80cec81 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -63,12 +63,12 @@ "ts-api-utils": "^2.0.1" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "glob": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" diff --git a/packages/utils/package.json b/packages/utils/package.json index f83e1f61c29d..ae2f028b911f 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -72,11 +72,11 @@ "typescript": ">=4.8.4 <5.9.0" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "funding": { "type": "opencollective", diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json index 92d512cc0d61..57a07ca21216 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -50,11 +50,11 @@ "eslint-visitor-keys": "^4.2.0" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.1", + "@vitest/coverage-v8": "^3.1.2", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.1" + "vitest": "^3.1.2" }, "funding": { "type": "opencollective", diff --git a/yarn.lock b/yarn.lock index e44db1de218c..a7c32cc1683a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -522,6 +522,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 0a8464adc4b39b138aedcb443b09f4005d86207d7126e5e079177e05c3116107d856ec08282b365e9a79a9872f40f4092a6127f8d74c8a01c1ef789dacfc25d6 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.24.7, @babel/helper-validator-identifier@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-validator-identifier@npm:7.25.9" @@ -529,6 +536,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: 3c7e8391e59d6c85baeefe9afb86432f2ab821c6232b00ea9082a51d3e7e95a2f3fb083d74dc1f49ac82cf238e1d2295dafcb001f7b0fab479f3f56af5eaaa47 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.25.9": version: 7.25.9 resolution: "@babel/helper-validator-option@npm:7.25.9" @@ -569,13 +583,13 @@ __metadata: linkType: hard "@babel/parser@npm:^7.25.4": - version: 7.27.0 - resolution: "@babel/parser@npm:7.27.0" + version: 7.27.1 + resolution: "@babel/parser@npm:7.27.1" dependencies: - "@babel/types": ^7.27.0 + "@babel/types": ^7.27.1 bin: parser: ./bin/babel-parser.js - checksum: 062a4e6d51553603253990c84e051ed48671a55b9d4e9caf2eff9dc888465070a0cfd288a467dbf0d99507781ea4a835b5606e32ddc0319f1b9273f913676829 + checksum: 36042c744c4648a8cebf5579a0f8dc6c056648a5b017c1f1c896ce99468764dad91dfc3dd215684e0e4e648a28b62cdd2e6537b34f4a83dda01cb97a846166b0 languageName: node linkType: hard @@ -1596,13 +1610,13 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.25.4, @babel/types@npm:^7.27.0": - version: 7.27.0 - resolution: "@babel/types@npm:7.27.0" +"@babel/types@npm:^7.25.4, @babel/types@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/types@npm:7.27.1" dependencies: - "@babel/helper-string-parser": ^7.25.9 - "@babel/helper-validator-identifier": ^7.25.9 - checksum: 59582019eb8a693d4277015d4dec0233874d884b9019dcd09550332db7f0f2ac9e30eca685bb0ada4bab5a4dc8bbc2a6bcaadb151c69b7e6aa94b5eaf8fc8c51 + "@babel/helper-string-parser": ^7.27.1 + "@babel/helper-validator-identifier": ^7.27.1 + checksum: 357c13f37aaa2f2e2cfcdb63f986d5f7abc9f38df20182b620ace34387d2460620415770fe5856eb54d70c9f0ba2f71230d29465e789188635a948476b830ae4 languageName: node linkType: hard @@ -2900,9 +2914,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/aix-ppc64@npm:0.25.2" +"@esbuild/aix-ppc64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/aix-ppc64@npm:0.25.3" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard @@ -2921,9 +2935,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/android-arm64@npm:0.25.2" +"@esbuild/android-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/android-arm64@npm:0.25.3" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -2942,9 +2956,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/android-arm@npm:0.25.2" +"@esbuild/android-arm@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/android-arm@npm:0.25.3" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -2963,9 +2977,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/android-x64@npm:0.25.2" +"@esbuild/android-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/android-x64@npm:0.25.3" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -2984,9 +2998,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/darwin-arm64@npm:0.25.2" +"@esbuild/darwin-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/darwin-arm64@npm:0.25.3" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -3005,9 +3019,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/darwin-x64@npm:0.25.2" +"@esbuild/darwin-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/darwin-x64@npm:0.25.3" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -3026,9 +3040,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/freebsd-arm64@npm:0.25.2" +"@esbuild/freebsd-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/freebsd-arm64@npm:0.25.3" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -3047,9 +3061,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/freebsd-x64@npm:0.25.2" +"@esbuild/freebsd-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/freebsd-x64@npm:0.25.3" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -3068,9 +3082,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/linux-arm64@npm:0.25.2" +"@esbuild/linux-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-arm64@npm:0.25.3" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -3089,9 +3103,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/linux-arm@npm:0.25.2" +"@esbuild/linux-arm@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-arm@npm:0.25.3" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -3110,9 +3124,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/linux-ia32@npm:0.25.2" +"@esbuild/linux-ia32@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-ia32@npm:0.25.3" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -3131,9 +3145,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/linux-loong64@npm:0.25.2" +"@esbuild/linux-loong64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-loong64@npm:0.25.3" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -3152,9 +3166,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/linux-mips64el@npm:0.25.2" +"@esbuild/linux-mips64el@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-mips64el@npm:0.25.3" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -3173,9 +3187,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/linux-ppc64@npm:0.25.2" +"@esbuild/linux-ppc64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-ppc64@npm:0.25.3" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -3194,9 +3208,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/linux-riscv64@npm:0.25.2" +"@esbuild/linux-riscv64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-riscv64@npm:0.25.3" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -3215,9 +3229,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/linux-s390x@npm:0.25.2" +"@esbuild/linux-s390x@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-s390x@npm:0.25.3" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -3236,9 +3250,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/linux-x64@npm:0.25.2" +"@esbuild/linux-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/linux-x64@npm:0.25.3" conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -3250,9 +3264,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/netbsd-arm64@npm:0.25.2" +"@esbuild/netbsd-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/netbsd-arm64@npm:0.25.3" conditions: os=netbsd & cpu=arm64 languageName: node linkType: hard @@ -3271,9 +3285,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/netbsd-x64@npm:0.25.2" +"@esbuild/netbsd-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/netbsd-x64@npm:0.25.3" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard @@ -3285,9 +3299,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/openbsd-arm64@npm:0.25.2" +"@esbuild/openbsd-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/openbsd-arm64@npm:0.25.3" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard @@ -3306,9 +3320,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/openbsd-x64@npm:0.25.2" +"@esbuild/openbsd-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/openbsd-x64@npm:0.25.3" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard @@ -3327,9 +3341,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/sunos-x64@npm:0.25.2" +"@esbuild/sunos-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/sunos-x64@npm:0.25.3" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -3348,9 +3362,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/win32-arm64@npm:0.25.2" +"@esbuild/win32-arm64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/win32-arm64@npm:0.25.3" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -3369,9 +3383,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/win32-ia32@npm:0.25.2" +"@esbuild/win32-ia32@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/win32-ia32@npm:0.25.3" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -3390,9 +3404,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.25.2": - version: 0.25.2 - resolution: "@esbuild/win32-x64@npm:0.25.2" +"@esbuild/win32-x64@npm:0.25.3": + version: 0.25.3 + resolution: "@esbuild/win32-x64@npm:0.25.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -4295,142 +4309,142 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.0" +"@rollup/rollup-android-arm-eabi@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-android-arm64@npm:4.40.0" +"@rollup/rollup-android-arm64@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-android-arm64@npm:4.40.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.40.0" +"@rollup/rollup-darwin-arm64@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.40.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.40.0" +"@rollup/rollup-darwin-x64@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.40.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.0" +"@rollup/rollup-freebsd-arm64@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.1" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-freebsd-x64@npm:4.40.0" +"@rollup/rollup-freebsd-x64@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.40.1" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.0" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.1" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.0" +"@rollup/rollup-linux-arm-musleabihf@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.1" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.0" +"@rollup/rollup-linux-arm64-gnu@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.0" +"@rollup/rollup-linux-arm64-musl@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.0" +"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.1" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.0" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.1" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.0" +"@rollup/rollup-linux-riscv64-gnu@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.1" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-musl@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.0" +"@rollup/rollup-linux-riscv64-musl@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.1" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.0" +"@rollup/rollup-linux-s390x-gnu@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.1" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.0" +"@rollup/rollup-linux-x64-gnu@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.0" +"@rollup/rollup-linux-x64-musl@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.0" +"@rollup/rollup-win32-arm64-msvc@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.0" +"@rollup/rollup-win32-ia32-msvc@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.40.0": - version: 4.40.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.0" +"@rollup/rollup-win32-x64-msvc@npm:4.40.1": + version: 4.40.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -4939,11 +4953,11 @@ __metadata: linkType: hard "@swc/helpers@npm:~0.5.0": - version: 0.5.15 - resolution: "@swc/helpers@npm:0.5.15" + version: 0.5.17 + resolution: "@swc/helpers@npm:0.5.17" dependencies: tslib: ^2.8.0 - checksum: 1a9e0dbb792b2d1e0c914d69c201dbc96af3a0e6e6e8cf5a7f7d6a5d7b0e8b762915cd4447acb6b040e2ecc1ed49822875a7239f99a2d63c96c3c3407fb6fccf + checksum: 085e13b536323945dfc3a270debf270bda6dfc80a1c68fd2ed08f7cbdfcbdaeead402650b5b10722e54e4a24193afc8a3c6f63d3d6d719974e7470557fb415bd languageName: node linkType: hard @@ -5541,14 +5555,14 @@ __metadata: "@babel/eslint-parser": "*" "@microsoft/api-extractor": ^7.47.11 "@typescript-eslint/typescript-estree": "workspace:*" - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 glob: "*" jest-diff: ^29.7.0 prettier: ^3.2.5 pretty-format: "*" rimraf: "*" typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 languageName: unknown linkType: soft @@ -5561,10 +5575,10 @@ __metadata: "@typescript-eslint/scope-manager": "workspace:*" "@typescript-eslint/type-utils": "workspace:*" "@typescript-eslint/utils": "workspace:*" - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 prettier: ^3.2.5 rimraf: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 languageName: unknown linkType: soft @@ -5582,7 +5596,7 @@ __metadata: "@typescript-eslint/type-utils": 8.31.1 "@typescript-eslint/utils": 8.31.1 "@typescript-eslint/visitor-keys": 8.31.1 - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 ajv: ^6.12.6 cross-fetch: "*" eslint: "*" @@ -5602,7 +5616,7 @@ __metadata: tsx: "*" typescript: "*" unist-util-visit: ^5.0.0 - vitest: ^3.1.1 + vitest: ^3.1.2 peerDependencies: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 @@ -5614,8 +5628,8 @@ __metadata: version: 0.0.0-use.local resolution: "@typescript-eslint/integration-tests@workspace:packages/integration-tests" dependencies: - "@vitest/coverage-v8": ^3.1.1 - vitest: ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 + vitest: ^3.1.2 languageName: unknown linkType: soft @@ -5627,13 +5641,13 @@ __metadata: "@typescript-eslint/types": 8.31.1 "@typescript-eslint/typescript-estree": 8.31.1 "@typescript-eslint/visitor-keys": 8.31.1 - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 debug: ^4.3.4 glob: "*" prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -5646,11 +5660,11 @@ __metadata: dependencies: "@typescript-eslint/type-utils": 8.31.1 "@typescript-eslint/utils": 8.31.1 - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 natural-compare: ^1.4.0 prettier: ^3.2.5 typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 languageName: unknown linkType: soft @@ -5663,7 +5677,7 @@ __metadata: "@typescript-eslint/parser": 8.31.1 "@typescript-eslint/typescript-estree": 8.31.1 "@typescript-eslint/utils": 8.31.1 - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 ajv: ^6.12.6 chai: ^4.4.1 eslint-visitor-keys: ^4.2.0 @@ -5676,7 +5690,7 @@ __metadata: sinon: ^16.1.3 source-map-support: ^0.5.21 typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 peerDependencies: eslint: ^8.57.0 || ^9.0.0 languageName: unknown @@ -5689,12 +5703,12 @@ __metadata: "@typescript-eslint/types": 8.31.1 "@typescript-eslint/typescript-estree": 8.31.1 "@typescript-eslint/visitor-keys": 8.31.1 - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 glob: "*" prettier: ^3.2.5 pretty-format: "*" typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 languageName: unknown linkType: soft @@ -5705,14 +5719,14 @@ __metadata: "@typescript-eslint/parser": 8.31.1 "@typescript-eslint/typescript-estree": 8.31.1 "@typescript-eslint/utils": 8.31.1 - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 ajv: ^6.12.6 debug: ^4.3.4 prettier: ^3.2.5 rimraf: "*" ts-api-utils: ^2.0.1 typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -5723,12 +5737,12 @@ __metadata: version: 0.0.0-use.local resolution: "@typescript-eslint/types@workspace:packages/types" dependencies: - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 prettier: ^3.2.5 rimraf: "*" tsx: "*" typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 languageName: unknown linkType: soft @@ -5767,8 +5781,8 @@ __metadata: "@typescript-eslint/types": "workspace:^" "@typescript-eslint/typescript-estree": "workspace:^" "@typescript-eslint/utils": "workspace:^" - "@vitest/coverage-v8": ^3.1.1 - "@vitest/eslint-plugin": ^1.1.43 + "@vitest/coverage-v8": ^3.1.2 + "@vitest/eslint-plugin": ^1.1.44 console-fail-test: ^0.5.0 cross-fetch: ^4.0.0 cspell: ^8.15.2 @@ -5799,8 +5813,8 @@ __metadata: tsx: "*" typescript: ">=4.8.4 <5.9.0" typescript-eslint: "workspace:^" - vite: ^6.3.3 - vitest: ^3.1.1 + vite: ^6.3.4 + vitest: ^3.1.2 yargs: 17.7.2 languageName: unknown linkType: soft @@ -5811,7 +5825,7 @@ __metadata: dependencies: "@typescript-eslint/types": 8.31.1 "@typescript-eslint/visitor-keys": 8.31.1 - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 debug: ^4.3.4 fast-glob: ^3.3.2 glob: "*" @@ -5822,7 +5836,7 @@ __metadata: semver: ^7.6.0 ts-api-utils: ^2.0.1 typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 peerDependencies: typescript: ">=4.8.4 <5.9.0" languageName: unknown @@ -5836,11 +5850,11 @@ __metadata: "@typescript-eslint/scope-manager": 8.31.1 "@typescript-eslint/types": 8.31.1 "@typescript-eslint/typescript-estree": 8.31.1 - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -5852,12 +5866,12 @@ __metadata: resolution: "@typescript-eslint/visitor-keys@workspace:packages/visitor-keys" dependencies: "@typescript-eslint/types": 8.31.1 - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 eslint-visitor-keys: ^4.2.0 prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 languageName: unknown linkType: soft @@ -5899,7 +5913,7 @@ __metadata: languageName: node linkType: hard -"@vitest/coverage-v8@npm:^3.1.1": +"@vitest/coverage-v8@npm:^3.1.2": version: 3.1.2 resolution: "@vitest/coverage-v8@npm:3.1.2" dependencies: @@ -5925,9 +5939,9 @@ __metadata: languageName: node linkType: hard -"@vitest/eslint-plugin@npm:^1.1.43": - version: 1.1.43 - resolution: "@vitest/eslint-plugin@npm:1.1.43" +"@vitest/eslint-plugin@npm:^1.1.44": + version: 1.1.44 + resolution: "@vitest/eslint-plugin@npm:1.1.44" peerDependencies: "@typescript-eslint/utils": ">= 8.24.0" eslint: ">= 8.57.0" @@ -5938,7 +5952,7 @@ __metadata: optional: true vitest: optional: true - checksum: dd036629703c53f5608afe503069f82719bf79c83ad067275e746d40e3c8e65735ed2a6a7d8692d3656cf530caa247b6447f9b2a0fae559e22af2a4ce43b32ec + checksum: bd78c75c01cb964888b0fb8c468469bbef3a4dcc25ed9618b82fd6b83c236ac54fad9dd9aa67d3da892796d4c982b9bcee37fa16a412744f50fc9a27ece3bb1f languageName: node linkType: hard @@ -9289,34 +9303,34 @@ __metadata: linkType: hard "esbuild@npm:^0.25.0": - version: 0.25.2 - resolution: "esbuild@npm:0.25.2" - dependencies: - "@esbuild/aix-ppc64": 0.25.2 - "@esbuild/android-arm": 0.25.2 - "@esbuild/android-arm64": 0.25.2 - "@esbuild/android-x64": 0.25.2 - "@esbuild/darwin-arm64": 0.25.2 - "@esbuild/darwin-x64": 0.25.2 - "@esbuild/freebsd-arm64": 0.25.2 - "@esbuild/freebsd-x64": 0.25.2 - "@esbuild/linux-arm": 0.25.2 - "@esbuild/linux-arm64": 0.25.2 - "@esbuild/linux-ia32": 0.25.2 - "@esbuild/linux-loong64": 0.25.2 - "@esbuild/linux-mips64el": 0.25.2 - "@esbuild/linux-ppc64": 0.25.2 - "@esbuild/linux-riscv64": 0.25.2 - "@esbuild/linux-s390x": 0.25.2 - "@esbuild/linux-x64": 0.25.2 - "@esbuild/netbsd-arm64": 0.25.2 - "@esbuild/netbsd-x64": 0.25.2 - "@esbuild/openbsd-arm64": 0.25.2 - "@esbuild/openbsd-x64": 0.25.2 - "@esbuild/sunos-x64": 0.25.2 - "@esbuild/win32-arm64": 0.25.2 - "@esbuild/win32-ia32": 0.25.2 - "@esbuild/win32-x64": 0.25.2 + version: 0.25.3 + resolution: "esbuild@npm:0.25.3" + dependencies: + "@esbuild/aix-ppc64": 0.25.3 + "@esbuild/android-arm": 0.25.3 + "@esbuild/android-arm64": 0.25.3 + "@esbuild/android-x64": 0.25.3 + "@esbuild/darwin-arm64": 0.25.3 + "@esbuild/darwin-x64": 0.25.3 + "@esbuild/freebsd-arm64": 0.25.3 + "@esbuild/freebsd-x64": 0.25.3 + "@esbuild/linux-arm": 0.25.3 + "@esbuild/linux-arm64": 0.25.3 + "@esbuild/linux-ia32": 0.25.3 + "@esbuild/linux-loong64": 0.25.3 + "@esbuild/linux-mips64el": 0.25.3 + "@esbuild/linux-ppc64": 0.25.3 + "@esbuild/linux-riscv64": 0.25.3 + "@esbuild/linux-s390x": 0.25.3 + "@esbuild/linux-x64": 0.25.3 + "@esbuild/netbsd-arm64": 0.25.3 + "@esbuild/netbsd-x64": 0.25.3 + "@esbuild/openbsd-arm64": 0.25.3 + "@esbuild/openbsd-x64": 0.25.3 + "@esbuild/sunos-x64": 0.25.3 + "@esbuild/win32-arm64": 0.25.3 + "@esbuild/win32-ia32": 0.25.3 + "@esbuild/win32-x64": 0.25.3 dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -9370,7 +9384,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 2c4e91948b939e711e9342e692fc3c8b0a95acbc1fc9c7628db6092c4aef7c32aa643b2782111625871756084536cebc4831b3f1d5c3b6bd4e4774e21bc4bbea + checksum: 1f9af51aa1d7d1f57e7294823d19ed69b0f6da413b7b0e8123abcebd1bb4011ef19961e2e6679c07301fcd00a85c4d102160fc40a91c25ceeaf594932509d84d languageName: node linkType: hard @@ -12425,14 +12439,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 - languageName: node - linkType: hard - -"istanbul-lib-coverage@npm:^3.2.2": +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.2": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 @@ -17164,29 +17171,29 @@ __metadata: linkType: hard "rollup@npm:^4.34.9": - version: 4.40.0 - resolution: "rollup@npm:4.40.0" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.40.0 - "@rollup/rollup-android-arm64": 4.40.0 - "@rollup/rollup-darwin-arm64": 4.40.0 - "@rollup/rollup-darwin-x64": 4.40.0 - "@rollup/rollup-freebsd-arm64": 4.40.0 - "@rollup/rollup-freebsd-x64": 4.40.0 - "@rollup/rollup-linux-arm-gnueabihf": 4.40.0 - "@rollup/rollup-linux-arm-musleabihf": 4.40.0 - "@rollup/rollup-linux-arm64-gnu": 4.40.0 - "@rollup/rollup-linux-arm64-musl": 4.40.0 - "@rollup/rollup-linux-loongarch64-gnu": 4.40.0 - "@rollup/rollup-linux-powerpc64le-gnu": 4.40.0 - "@rollup/rollup-linux-riscv64-gnu": 4.40.0 - "@rollup/rollup-linux-riscv64-musl": 4.40.0 - "@rollup/rollup-linux-s390x-gnu": 4.40.0 - "@rollup/rollup-linux-x64-gnu": 4.40.0 - "@rollup/rollup-linux-x64-musl": 4.40.0 - "@rollup/rollup-win32-arm64-msvc": 4.40.0 - "@rollup/rollup-win32-ia32-msvc": 4.40.0 - "@rollup/rollup-win32-x64-msvc": 4.40.0 + version: 4.40.1 + resolution: "rollup@npm:4.40.1" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.40.1 + "@rollup/rollup-android-arm64": 4.40.1 + "@rollup/rollup-darwin-arm64": 4.40.1 + "@rollup/rollup-darwin-x64": 4.40.1 + "@rollup/rollup-freebsd-arm64": 4.40.1 + "@rollup/rollup-freebsd-x64": 4.40.1 + "@rollup/rollup-linux-arm-gnueabihf": 4.40.1 + "@rollup/rollup-linux-arm-musleabihf": 4.40.1 + "@rollup/rollup-linux-arm64-gnu": 4.40.1 + "@rollup/rollup-linux-arm64-musl": 4.40.1 + "@rollup/rollup-linux-loongarch64-gnu": 4.40.1 + "@rollup/rollup-linux-powerpc64le-gnu": 4.40.1 + "@rollup/rollup-linux-riscv64-gnu": 4.40.1 + "@rollup/rollup-linux-riscv64-musl": 4.40.1 + "@rollup/rollup-linux-s390x-gnu": 4.40.1 + "@rollup/rollup-linux-x64-gnu": 4.40.1 + "@rollup/rollup-linux-x64-musl": 4.40.1 + "@rollup/rollup-win32-arm64-msvc": 4.40.1 + "@rollup/rollup-win32-ia32-msvc": 4.40.1 + "@rollup/rollup-win32-x64-msvc": 4.40.1 "@types/estree": 1.0.7 fsevents: ~2.3.2 dependenciesMeta: @@ -17234,7 +17241,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 4826d7bbb48147403023133b6d8a67f792efe3463def637713bed392b5d7fc9903b4b86de44c58420304beca9e8d108268036e9081fff675af6c01822ef6b2b9 + checksum: b25c1a20192bc7d6a483c6dc61f93899fed8d6fbdf42a92f843ed3ab0f729485325e5d2e86b7039a0bd1f4c0eb786f5d8f6054b99e7e1f72dfa2206a528f2b4e languageName: node linkType: hard @@ -19051,11 +19058,11 @@ __metadata: "@typescript-eslint/eslint-plugin": 8.31.1 "@typescript-eslint/parser": 8.31.1 "@typescript-eslint/utils": 8.31.1 - "@vitest/coverage-v8": ^3.1.1 + "@vitest/coverage-v8": ^3.1.2 prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.1 + vitest: ^3.1.2 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -19486,9 +19493,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.0 || ^6.0.0, vite@npm:^6.3.3": - version: 6.3.3 - resolution: "vite@npm:6.3.3" +"vite@npm:^5.0.0 || ^6.0.0, vite@npm:^6.3.4": + version: 6.3.4 + resolution: "vite@npm:6.3.4" dependencies: esbuild: ^0.25.0 fdir: ^6.4.4 @@ -19537,11 +19544,11 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: b12dcd715324d5033226005b514f281541578d619675724c6ba0f684efe875d145ae53404fc7dc604332f2b52b5bd197ed6b6edea219abd604336052f3f3c79e + checksum: 6b86f267319342393d2aeea3436d64716dd6d769acd96b13f9be416f751f4f3380119594baebb2ead71f738c6bd20956017320fad4cd79ba00168f4b9a747393 languageName: node linkType: hard -"vitest@npm:^3.1.1": +"vitest@npm:^3.1.2": version: 3.1.2 resolution: "vitest@npm:3.1.2" dependencies: From 6c88ed77ed66d3fe4a225a2f82b00168de42c58c Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Wed, 30 Apr 2025 16:46:31 -0500 Subject: [PATCH 2/8] update `chai` to version 5.2.0 --- packages/rule-tester/package.json | 2 +- yarn.lock | 67 +------------------------------ 2 files changed, 3 insertions(+), 66 deletions(-) diff --git a/packages/rule-tester/package.json b/packages/rule-tester/package.json index 1b7f845fdbb4..e7c7fd936f01 100644 --- a/packages/rule-tester/package.json +++ b/packages/rule-tester/package.json @@ -62,7 +62,7 @@ "@types/json-stable-stringify-without-jsonify": "^1.0.2", "@types/lodash.merge": "4.6.9", "@vitest/coverage-v8": "^3.1.2", - "chai": "^4.4.1", + "chai": "^5.2.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esprima": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index a7c32cc1683a..42f02f8c17b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5679,7 +5679,7 @@ __metadata: "@typescript-eslint/utils": 8.31.1 "@vitest/coverage-v8": ^3.1.2 ajv: ^6.12.6 - chai: ^4.4.1 + chai: ^5.2.0 eslint-visitor-keys: ^4.2.0 espree: ^10.3.0 esprima: ^4.0.1 @@ -6714,13 +6714,6 @@ __metadata: languageName: node linkType: hard -"assertion-error@npm:^1.1.0": - version: 1.1.0 - resolution: "assertion-error@npm:1.1.0" - checksum: fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf - languageName: node - linkType: hard - "assertion-error@npm:^2.0.1": version: 2.0.1 resolution: "assertion-error@npm:2.0.1" @@ -7308,21 +7301,6 @@ __metadata: languageName: node linkType: hard -"chai@npm:^4.4.1": - version: 4.5.0 - resolution: "chai@npm:4.5.0" - dependencies: - assertion-error: ^1.1.0 - check-error: ^1.0.3 - deep-eql: ^4.1.3 - get-func-name: ^2.0.2 - loupe: ^2.3.6 - pathval: ^1.1.1 - type-detect: ^4.1.0 - checksum: 70e5a8418a39e577e66a441cc0ce4f71fd551a650a71de30dd4e3e31e75ed1f5aa7119cf4baf4a2cb5e85c0c6befdb4d8a05811fad8738c1a6f3aa6a23803821 - languageName: node - linkType: hard - "chai@npm:^5.2.0": version: 5.2.0 resolution: "chai@npm:5.2.0" @@ -7397,15 +7375,6 @@ __metadata: languageName: node linkType: hard -"check-error@npm:^1.0.3": - version: 1.0.3 - resolution: "check-error@npm:1.0.3" - dependencies: - get-func-name: ^2.0.2 - checksum: e2131025cf059b21080f4813e55b3c480419256914601750b0fee3bd9b2b8315b531e551ef12560419b8b6d92a3636511322752b1ce905703239e7cc451b6399 - languageName: node - linkType: hard - "check-error@npm:^2.1.1": version: 2.1.1 resolution: "check-error@npm:2.1.1" @@ -8578,15 +8547,6 @@ __metadata: languageName: node linkType: hard -"deep-eql@npm:^4.1.3": - version: 4.1.3 - resolution: "deep-eql@npm:4.1.3" - dependencies: - type-detect: ^4.0.0 - checksum: 7f6d30cb41c713973dc07eaadded848b2ab0b835e518a88b91bea72f34e08c4c71d167a722a6f302d3a6108f05afd8e6d7650689a84d5d29ec7fe6220420397f - languageName: node - linkType: hard - "deep-eql@npm:^5.0.1": version: 5.0.2 resolution: "deep-eql@npm:5.0.2" @@ -10783,13 +10743,6 @@ __metadata: languageName: node linkType: hard -"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": - version: 2.0.2 - resolution: "get-func-name@npm:2.0.2" - checksum: 3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b - languageName: node - linkType: hard - "get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6": version: 1.2.6 resolution: "get-intrinsic@npm:1.2.6" @@ -13175,15 +13128,6 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^2.3.6": - version: 2.3.7 - resolution: "loupe@npm:2.3.7" - dependencies: - get-func-name: ^2.0.1 - checksum: 96c058ec7167598e238bb7fb9def2f9339215e97d6685d9c1e3e4bdb33d14600e11fe7a812cf0c003dfb73ca2df374f146280b2287cae9e8d989e9d7a69a203b - languageName: node - linkType: hard - "loupe@npm:^3.1.0, loupe@npm:^3.1.3": version: 3.1.3 resolution: "loupe@npm:3.1.3" @@ -15521,13 +15465,6 @@ __metadata: languageName: node linkType: hard -"pathval@npm:^1.1.1": - version: 1.1.1 - resolution: "pathval@npm:1.1.1" - checksum: 090e3147716647fb7fb5b4b8c8e5b55e5d0a6086d085b6cd23f3d3c01fcf0ff56fd3cc22f2f4a033bd2e46ed55d61ed8379e123b42afe7d531a2a5fc8bb556d6 - languageName: node - linkType: hard - "pathval@npm:^2.0.0": version: 2.0.0 resolution: "pathval@npm:2.0.0" @@ -18904,7 +18841,7 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:^4.0.0, type-detect@npm:^4.0.8, type-detect@npm:^4.1.0": +"type-detect@npm:^4.0.8": version: 4.1.0 resolution: "type-detect@npm:4.1.0" checksum: 3b32f873cd02bc7001b00a61502b7ddc4b49278aabe68d652f732e1b5d768c072de0bc734b427abf59d0520a5f19a2e07309ab921ef02018fa1cb4af155cdb37 From b084cd53cdc20cd660e784f8d87e7163d1eefb71 Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Sun, 27 Apr 2025 13:18:46 -0500 Subject: [PATCH 3/8] chore(ast-spec): finish migrating to `vitest` --- eslint.config.mjs | 12 +++ knip.ts | 8 +- package.json | 7 -- packages/ast-spec/package.json | 18 ++-- packages/ast-spec/tests/fixtures.test.ts | 47 ++++------ .../util/custom-matchers/custom-matchers.ts | 91 +++++++++++++++++++ .../vitest-custom-matchers.d.ts | 49 ++++++++++ .../tests/util/parsers/parser-types.ts | 21 +++++ .../ast-spec/tests/util/serializers/Node.ts | 2 +- .../ast-spec/tests/util/serializers/string.ts | 2 +- packages/ast-spec/tests/util/snapshot-diff.ts | 22 +++-- packages/ast-spec/typings/global.d.ts | 20 ---- packages/ast-spec/vitest.config.mts | 6 +- yarn.lock | 34 +++---- 14 files changed, 237 insertions(+), 102 deletions(-) create mode 100644 packages/ast-spec/tests/util/custom-matchers/custom-matchers.ts create mode 100644 packages/ast-spec/tests/util/custom-matchers/vitest-custom-matchers.d.ts delete mode 100644 packages/ast-spec/typings/global.d.ts diff --git a/eslint.config.mjs b/eslint.config.mjs index a5abacc22809..198d22ef5f33 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -390,6 +390,18 @@ export default tseslint.config( }, settings: { vitest: { typecheck: true } }, }, + { + files: ['packages/*/tests/**/vitest-custom-matchers.d.ts'], + name: 'vitest-custom-matchers-declaration-files', + rules: { + '@typescript-eslint/no-empty-object-type': [ + 'error', + { allowInterfaces: 'with-single-extends' }, + ], + + '@typescript-eslint/no-explicit-any': 'off', + }, + }, // plugin rule tests { files: [ diff --git a/knip.ts b/knip.ts index 1056f78dc743..2750f8dd0c5e 100644 --- a/knip.ts +++ b/knip.ts @@ -24,11 +24,6 @@ export default { entry: ['tools/release/changelog-renderer.js', 'tools/scripts/**/*.mts'], ignore: ['tools/scripts/typings/typescript.d.ts', 'typings/*.d.ts'], ignoreDependencies: [ - '@babel/code-frame', - '@babel/core', - '@babel/eslint-parser', - '@babel/parser', - '@babel/types', '@nx/js', '@nx/workspace', 'glob', @@ -42,7 +37,6 @@ export default { // @typescript-eslint/typescript-estree is not listed in dependencies to avoid circular dependency errors // You can check a more detailed explanation in this file 'tests/util/parsers/typescript-estree-import.ts', - 'typings/global.d.ts', ], project: ['src/**/*.ts', 'tests/util/**/*.ts', '!src/**/fixtures/**'], @@ -52,6 +46,8 @@ export default { entry: [ 'tests/**/*.{bench,test,test-d}.?(c|m)ts?(x)', 'tests/util/setupVitest.mts', + 'tests/util/custom-matchers/custom-matchers.ts', + 'tests/util/custom-matchers/vitest-custom-matchers.d.ts', ], }, }, diff --git a/package.json b/package.json index 0e9a710ff72c..17fb3e76a65e 100644 --- a/package.json +++ b/package.json @@ -53,11 +53,6 @@ "devDependencies": { "@actions/core": "^1.10.1", "@actions/github": "^6.0.0", - "@babel/code-frame": "^7.24.2", - "@babel/core": "^7.24.4", - "@babel/eslint-parser": "^7.24.1", - "@babel/parser": "^7.24.4", - "@babel/types": "^7.24.0", "@eslint-community/eslint-plugin-eslint-comments": "^4.4.1", "@eslint/compat": "^1.2.4", "@eslint/eslintrc": "^3.2.0", @@ -67,8 +62,6 @@ "@nx/vite": "20.7.2", "@nx/workspace": "20.7.2", "@swc/core": "^1.4.12", - "@types/babel__code-frame": "^7.0.6", - "@types/babel__core": "^7.20.5", "@types/debug": "^4.1.12", "@types/eslint-plugin-jsx-a11y": "^6.10.0", "@types/is-glob": "^4.0.4", diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 25022d597fc5..295a0756b038 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -31,9 +31,8 @@ "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "build": "tsc -b tsconfig.build.json && api-extractor run --local", - "clean": "tsc -b tsconfig.build.json --clean", - "postclean": "rimraf dist/ coverage/", + "build": "tsc -b tsconfig.build.json && api-extractor run --local --config=$INIT_CWD/api-extractor.json", + "clean": "rimraf dist/ coverage/", "clean-fixtures": "rimraf -g \"./src/**/fixtures/**/snapshots\"", "format": "prettier --write \"./**/*.{ts,mts,cts,tsx,js,mjs,cjs,jsx,json,md,css}\" --ignore-path ../../.prettierignore", "lint": "npx nx lint", @@ -45,16 +44,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "devDependencies": { - "@babel/code-frame": "*", - "@babel/core": "*", - "@babel/eslint-parser": "*", + "@babel/code-frame": "^7.24.2", + "@babel/core": "^7.24.4", + "@babel/eslint-parser": "^7.24.1", "@microsoft/api-extractor": "^7.47.11", + "@types/babel__code-frame": "^7.0.6", + "@types/babel__core": "^7.20.5", "@typescript-eslint/typescript-estree": "workspace:*", "@vitest/coverage-v8": "^3.1.2", + "@vitest/pretty-format": "^3.1.2", + "@vitest/utils": "^3.1.2", + "eslint": "*", "glob": "*", - "jest-diff": "^29.7.0", "prettier": "^3.2.5", - "pretty-format": "*", "rimraf": "*", "typescript": "*", "vitest": "^3.1.2" diff --git a/packages/ast-spec/tests/fixtures.test.ts b/packages/ast-spec/tests/fixtures.test.ts index 72471315196e..19cf69c7af5e 100644 --- a/packages/ast-spec/tests/fixtures.test.ts +++ b/packages/ast-spec/tests/fixtures.test.ts @@ -3,12 +3,7 @@ import * as fs from 'node:fs/promises'; import path from 'node:path'; import { VitestSnapshotEnvironment } from 'vitest/snapshot'; -import type { - Fixture, - ParserResponse, - ParserResponseError, - ParserResponseSuccess, -} from './util/parsers/parser-types'; +import type { ASTFixtureConfig, Fixture } from './util/parsers/parser-types'; import { parseBabel } from './util/parsers/babel'; import { ParserResponseType } from './util/parsers/parser-types'; @@ -59,7 +54,10 @@ const FIXTURES: readonly Fixture[] = [...VALID_FIXTURES, ...ERROR_FIXTURES].map( const relativeToSrc = path.relative(SRC_DIR, absolute); const { dir, ext } = path.parse(relativeToSrc); const segments = dir.split(path.sep).filter(s => s !== 'fixtures'); - const name = segments.pop()!; + const name = segments.pop(); + + assert.isDefined(name); + const fixtureDir = path.join(SRC_DIR, dir); const configPath = path.join(fixtureDir, 'config' /* .ts */); const snapshotPath = path.join(fixtureDir, 'snapshots'); @@ -113,17 +111,6 @@ const FIXTURES: readonly Fixture[] = [...VALID_FIXTURES, ...ERROR_FIXTURES].map( }, ); -function expectSuccessResponse( - thing: ParserResponse, -): asserts thing is ParserResponseSuccess { - expect(thing.type).toEqual(ParserResponseType.NoError); -} -function expectErrorResponse( - thing: ParserResponse, -): asserts thing is ParserResponseError { - expect(thing.type).toEqual(ParserResponseType.Error); -} - function nestDescribe(fixture: Fixture, segments = fixture.segments): void { if (segments.length > 0) { describe(segments[0], () => { @@ -205,13 +192,13 @@ function nestDescribe(fixture: Fixture, segments = fixture.segments): void { }); } else { it('TSESTree - AST', async () => { - expectSuccessResponse(tsestreeParsed); + assert.isSuccessResponse(tsestreeParsed); await expect(tsestreeParsed.ast).toMatchFileSnapshot( fixture.snapshotFiles.success.tsestree.ast(segments.length + 1), ); }); it('TSESTree - Tokens', async () => { - expectSuccessResponse(tsestreeParsed); + assert.isSuccessResponse(tsestreeParsed); await expect(tsestreeParsed.tokens).toMatchFileSnapshot( fixture.snapshotFiles.success.tsestree.tokens(segments.length + 2), ); @@ -241,20 +228,20 @@ function nestDescribe(fixture: Fixture, segments = fixture.segments): void { it.skip('AST Alignment - Skipped as this fixture is configured to expect babel to error', () => {}); } else { it('Babel - AST', async () => { - expectSuccessResponse(babelParsed); + assert.isSuccessResponse(babelParsed); await expect(babelParsed.ast).toMatchFileSnapshot( fixture.snapshotFiles.success.babel.ast(segments.length + 3), ); }); it('Babel - Tokens', async () => { - expectSuccessResponse(babelParsed); + assert.isSuccessResponse(babelParsed); await expect(babelParsed.tokens).toMatchFileSnapshot( fixture.snapshotFiles.success.babel.tokens(segments.length + 4), ); }); it('AST Alignment - AST', async () => { - expectSuccessResponse(tsestreeParsed); - expectSuccessResponse(babelParsed); + assert.isSuccessResponse(tsestreeParsed); + assert.isSuccessResponse(babelParsed); const diffResult = snapshotDiff( 'TSESTree', tsestreeParsed.ast, @@ -276,8 +263,8 @@ function nestDescribe(fixture: Fixture, segments = fixture.segments): void { } }); it('AST Alignment - Token', async () => { - expectSuccessResponse(tsestreeParsed); - expectSuccessResponse(babelParsed); + assert.isSuccessResponse(tsestreeParsed); + assert.isSuccessResponse(babelParsed); const diffResult = snapshotDiff( 'TSESTree', tsestreeParsed.tokens, @@ -306,15 +293,15 @@ function nestDescribe(fixture: Fixture, segments = fixture.segments): void { // log the error for debug purposes in case there wasn't supposed to be an error switch (errorLabel) { case ErrorLabel.Babel: - expectErrorResponse(babelParsed); + assert.isErrorResponse(babelParsed); if (fixture.config.expectBabelToNotSupport == null) { console.error('Babel:\n', babelParsed.error); } break; case ErrorLabel.Both: - expectErrorResponse(babelParsed); - expectErrorResponse(tsestreeParsed); + assert.isErrorResponse(babelParsed); + assert.isErrorResponse(tsestreeParsed); console.error('Babel:\n', babelParsed.error); console.error('TSESTree:\n', tsestreeParsed.error); break; @@ -323,7 +310,7 @@ function nestDescribe(fixture: Fixture, segments = fixture.segments): void { return; case ErrorLabel.TSESTree: - expectErrorResponse(tsestreeParsed); + assert.isErrorResponse(tsestreeParsed); console.error('TSESTree:\n', tsestreeParsed.error); break; } diff --git a/packages/ast-spec/tests/util/custom-matchers/custom-matchers.ts b/packages/ast-spec/tests/util/custom-matchers/custom-matchers.ts new file mode 100644 index 000000000000..32d3dd33da9e --- /dev/null +++ b/packages/ast-spec/tests/util/custom-matchers/custom-matchers.ts @@ -0,0 +1,91 @@ +import type { ParserResponse } from '../parsers/parser-types.js'; + +import { ParserResponseType } from '../parsers/parser-types.js'; + +chai.use((chai, utils) => { + function successResponse(this: Chai.AssertionStatic, errorMessage?: string) { + if (errorMessage) { + utils.flag(this, 'message', errorMessage); + } + + const thing: ParserResponse = utils.flag(this, 'object'); + + const negate: boolean = utils.flag(this, 'negate') ?? false; + + const ssfi: (...args: unknown[]) => unknown = utils.flag(this, 'ssfi'); + + const assertion = new chai.Assertion(thing, errorMessage, ssfi, true); + + if (negate) { + (utils.hasProperty(thing, 'type') ? assertion : assertion.not).to.have + .property('type') + .that.does.not.equals(ParserResponseType.NoError); + } else { + assertion.to.have + .property('type') + .that.equals(ParserResponseType.NoError); + } + } + + chai.Assertion.addMethod(successResponse.name, successResponse); + + chai.assert.isSuccessResponse = (thing, errorMessage) => { + new chai.Assertion( + thing, + errorMessage, + chai.assert.isSuccessResponse, + true, + ).to.be.successResponse(); + }; + + chai.assert.isNotSuccessResponse = (thing, errorMessage) => { + new chai.Assertion( + thing, + errorMessage, + chai.assert.isNotSuccessResponse, + true, + ).not.to.be.successResponse(); + }; + + function errorResponse(this: Chai.AssertionStatic, errorMessage?: string) { + if (errorMessage) { + utils.flag(this, 'message', errorMessage); + } + + const thing: ParserResponse = utils.flag(this, 'object'); + + const negate: boolean = utils.flag(this, 'negate') ?? false; + + const ssfi: (...args: unknown[]) => unknown = utils.flag(this, 'ssfi'); + + const assertion = new chai.Assertion(thing, errorMessage, ssfi, true); + + if (negate) { + (utils.hasProperty(thing, 'type') ? assertion : assertion.not).to.have + .property('type') + .that.does.not.equals(ParserResponseType.Error); + } else { + assertion.to.have.property('type').that.equals(ParserResponseType.Error); + } + } + + chai.Assertion.addMethod(errorResponse.name, errorResponse); + + chai.assert.isErrorResponse = (thing, errorMessage) => { + new chai.Assertion( + thing, + errorMessage, + chai.assert.isErrorResponse, + true, + ).to.be.errorResponse(); + }; + + chai.assert.isNotErrorResponse = (thing, errorMessage) => { + new chai.Assertion( + thing, + errorMessage, + chai.assert.isErrorResponse, + true, + ).not.to.be.errorResponse(); + }; +}); diff --git a/packages/ast-spec/tests/util/custom-matchers/vitest-custom-matchers.d.ts b/packages/ast-spec/tests/util/custom-matchers/vitest-custom-matchers.d.ts new file mode 100644 index 000000000000..07d2f6c950d4 --- /dev/null +++ b/packages/ast-spec/tests/util/custom-matchers/vitest-custom-matchers.d.ts @@ -0,0 +1,49 @@ +import 'vitest'; + +import type { + ParserResponse, + ParserResponseType, +} from '../parsers/parser-types.js'; + +declare global { + namespace Chai { + interface Assertion { + successResponse(errorMessage?: string): void; + errorResponse(errorMessage?: string): void; + } + + interface Assert { + isSuccessResponse( + thing: ActualType, + errorMessage?: string, + ): asserts thing is Extract< + ActualType, + { type: ParserResponseType.NoError } + >; + + isNotSuccessResponse( + thing: ActualType, + errorMessage?: string, + ): asserts thing is Exclude< + ActualType, + { type: ParserResponseType.NoError } + >; + + isErrorResponse( + thing: ActualType, + errorMessage?: string, + ): asserts thing is Extract< + ActualType, + { type: ParserResponseType.Error } + >; + + isNotErrorResponse( + thing: ActualType, + errorMessage?: string, + ): asserts thing is Exclude< + ActualType, + { type: ParserResponseType.Error } + >; + } + } +} diff --git a/packages/ast-spec/tests/util/parsers/parser-types.ts b/packages/ast-spec/tests/util/parsers/parser-types.ts index 6c96e3d893f6..abf156a95ba3 100644 --- a/packages/ast-spec/tests/util/parsers/parser-types.ts +++ b/packages/ast-spec/tests/util/parsers/parser-types.ts @@ -5,6 +5,27 @@ interface SuccessSnapshotPaths { readonly tokens: SnapshotPathFn; } +/** + * We define this as a global type to make it easier to consume from fixtures. + * It saves us having to import the type into `src` files from a test utils folder. + * This is a convenient property because it saves us from a lot of `../`! + */ +export interface ASTFixtureConfig { + /** + * Prevents the parser from throwing an error if it receives an invalid AST from TypeScript. + * This case only usually occurs when attempting to lint invalid code. + */ + readonly allowInvalidAST?: boolean; + + /** + * Specifies that we expect that babel doesn't yet support the code in this fixture, so we expect that it will error. + * This should not be used if we expect babel to throw for this feature due to a valid parser error! + * + * The value should be a description of why there isn't support - for example a github issue URL. + */ + readonly expectBabelToNotSupport?: string; +} + export interface Fixture { readonly absolute: string; readonly config: ASTFixtureConfig; diff --git a/packages/ast-spec/tests/util/serializers/Node.ts b/packages/ast-spec/tests/util/serializers/Node.ts index 1c23572dcd5b..56714855b510 100644 --- a/packages/ast-spec/tests/util/serializers/Node.ts +++ b/packages/ast-spec/tests/util/serializers/Node.ts @@ -1,4 +1,4 @@ -import type { NewPlugin } from 'pretty-format'; +import type { NewPlugin } from '@vitest/pretty-format'; import type * as TSESTree from '../../../src'; diff --git a/packages/ast-spec/tests/util/serializers/string.ts b/packages/ast-spec/tests/util/serializers/string.ts index 8588371c2d24..dd1933e99a5e 100644 --- a/packages/ast-spec/tests/util/serializers/string.ts +++ b/packages/ast-spec/tests/util/serializers/string.ts @@ -1,4 +1,4 @@ -import type { NewPlugin } from 'pretty-format'; +import type { NewPlugin } from '@vitest/pretty-format'; // custom string serializer so that we can use single-quoted strings instead of double quoted strings // this plays nicer with the way that the snapshot diff result, which is a pure string diff --git a/packages/ast-spec/tests/util/snapshot-diff.ts b/packages/ast-spec/tests/util/snapshot-diff.ts index 4587f4ad1134..dd3a0fa22788 100644 --- a/packages/ast-spec/tests/util/snapshot-diff.ts +++ b/packages/ast-spec/tests/util/snapshot-diff.ts @@ -1,5 +1,5 @@ -import { diff } from 'jest-diff'; -import defaultPrinter from 'pretty-format'; +import { format } from '@vitest/pretty-format'; +import { diff } from '@vitest/utils/diff'; import * as NodeSerializer from './serializers/Node'; import * as StringSerializer from './serializers/string'; @@ -8,12 +8,19 @@ function identity(value: T): T { return value; } +// https://github.com/facebook/jest/blob/a293b75310cfc209713df1d34d243eb258995316/packages/jest-diff/src/constants.ts#L8 +const NO_DIFF_MESSAGE = 'Compared values have no visual difference.'; + function diffStrings( valueA: unknown, valueB: unknown, valueAName: string, valueBName: string, -): string | null { +): string | undefined { + if (Object.is(valueA, valueB)) { + return NO_DIFF_MESSAGE; + } + return diff(valueA, valueB, { expand: false, // we want to show the entire file in the diff @@ -38,7 +45,7 @@ export function snapshotDiff( const OPTIONS = { plugins: [ NodeSerializer.serializer, - // by default jest will quote the string with double quotes + // by default vitest will quote the string with double quotes // this means the diff string will have double quotes escaped and look ugly // this is a single-quote string serializer which won't clash with the outer double quotes // so we get a nicer looking diff because of it! @@ -47,8 +54,8 @@ export function snapshotDiff( }; const difference = diffStrings( - defaultPrinter(valueA, OPTIONS), - defaultPrinter(valueB, OPTIONS), + format(valueA, OPTIONS), + format(valueB, OPTIONS), valueAName, valueBName, ); @@ -60,9 +67,6 @@ export function snapshotDiff( return `Snapshot Diff:\n${difference}`; } -// https://github.com/facebook/jest/blob/a293b75310cfc209713df1d34d243eb258995316/packages/jest-diff/src/constants.ts#L8 -const NO_DIFF_MESSAGE = 'Compared values have no visual difference.'; - export function diffHasChanges(diff: string): boolean { return !diff.includes(NO_DIFF_MESSAGE); } diff --git a/packages/ast-spec/typings/global.d.ts b/packages/ast-spec/typings/global.d.ts deleted file mode 100644 index 7dd0713ea5d4..000000000000 --- a/packages/ast-spec/typings/global.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/** - * We define this as a global type to make it easier to consume from fixtures. - * It saves us having to import the type into `src` files from a test utils folder. - * This is a convenient property because it saves us from a lot of `../`! - */ -interface ASTFixtureConfig { - /** - * Prevents the parser from throwing an error if it receives an invalid AST from TypeScript. - * This case only usually occurs when attempting to lint invalid code. - */ - readonly allowInvalidAST?: boolean; - - /** - * Specifies that we expect that babel doesn't yet support the code in this fixture, so we expect that it will error. - * This should not be used if we expect babel to throw for this feature due to a valid parser error! - * - * The value should be a description of why there isn't support - for example a github issue URL. - */ - readonly expectBabelToNotSupport?: string; -} diff --git a/packages/ast-spec/vitest.config.mts b/packages/ast-spec/vitest.config.mts index 5eaedbdc2779..090170ba88af 100644 --- a/packages/ast-spec/vitest.config.mts +++ b/packages/ast-spec/vitest.config.mts @@ -14,7 +14,11 @@ const vitestConfig = mergeConfig( dir: path.join(import.meta.dirname, 'tests'), name: packageJson.name.replace('@typescript-eslint/', ''), root: import.meta.dirname, - setupFiles: ['./tests/util/setupVitest.mts'], + + setupFiles: [ + './tests/util/setupVitest.mts', + './tests/util/custom-matchers/custom-matchers.ts', + ], typecheck: { enabled: true, diff --git a/yarn.lock b/yarn.lock index 42f02f8c17b5..e835da733797 100644 --- a/yarn.lock +++ b/yarn.lock @@ -275,7 +275,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:*, @babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.24.2, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.8.3": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.24.2, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.8.3": version: 7.26.2 resolution: "@babel/code-frame@npm:7.26.2" dependencies: @@ -293,7 +293,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:*, @babel/core@npm:^7.11.1, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.2, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.9": +"@babel/core@npm:^7.11.1, @babel/core@npm:^7.21.3, @babel/core@npm:^7.23.2, @babel/core@npm:^7.24.4, @babel/core@npm:^7.25.9": version: 7.26.0 resolution: "@babel/core@npm:7.26.0" dependencies: @@ -316,7 +316,7 @@ __metadata: languageName: node linkType: hard -"@babel/eslint-parser@npm:*, @babel/eslint-parser@npm:^7.24.1": +"@babel/eslint-parser@npm:^7.24.1": version: 7.26.8 resolution: "@babel/eslint-parser@npm:7.26.8" dependencies: @@ -571,7 +571,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.24.4, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": version: 7.26.2 resolution: "@babel/parser@npm:7.26.2" dependencies: @@ -1600,7 +1600,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.24.0, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.4.4": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.4.4": version: 7.26.0 resolution: "@babel/types@npm:7.26.0" dependencies: @@ -5550,16 +5550,19 @@ __metadata: version: 0.0.0-use.local resolution: "@typescript-eslint/ast-spec@workspace:packages/ast-spec" dependencies: - "@babel/code-frame": "*" - "@babel/core": "*" - "@babel/eslint-parser": "*" + "@babel/code-frame": ^7.24.2 + "@babel/core": ^7.24.4 + "@babel/eslint-parser": ^7.24.1 "@microsoft/api-extractor": ^7.47.11 + "@types/babel__code-frame": ^7.0.6 + "@types/babel__core": ^7.20.5 "@typescript-eslint/typescript-estree": "workspace:*" "@vitest/coverage-v8": ^3.1.2 + "@vitest/pretty-format": ^3.1.2 + "@vitest/utils": ^3.1.2 + eslint: "*" glob: "*" - jest-diff: ^29.7.0 prettier: ^3.2.5 - pretty-format: "*" rimraf: "*" typescript: "*" vitest: ^3.1.2 @@ -5752,11 +5755,6 @@ __metadata: dependencies: "@actions/core": ^1.10.1 "@actions/github": ^6.0.0 - "@babel/code-frame": ^7.24.2 - "@babel/core": ^7.24.4 - "@babel/eslint-parser": ^7.24.1 - "@babel/parser": ^7.24.4 - "@babel/types": ^7.24.0 "@eslint-community/eslint-plugin-eslint-comments": ^4.4.1 "@eslint/compat": ^1.2.4 "@eslint/eslintrc": ^3.2.0 @@ -5766,8 +5764,6 @@ __metadata: "@nx/vite": 20.7.2 "@nx/workspace": 20.7.2 "@swc/core": ^1.4.12 - "@types/babel__code-frame": ^7.0.6 - "@types/babel__core": ^7.20.5 "@types/debug": ^4.1.12 "@types/eslint-plugin-jsx-a11y": ^6.10.0 "@types/is-glob": ^4.0.4 @@ -6026,7 +6022,7 @@ __metadata: languageName: node linkType: hard -"@vitest/utils@npm:3.1.2": +"@vitest/utils@npm:3.1.2, @vitest/utils@npm:^3.1.2": version: 3.1.2 resolution: "@vitest/utils@npm:3.1.2" dependencies: @@ -12481,7 +12477,7 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.4.1, jest-diff@npm:^29.7.0": +"jest-diff@npm:^29.4.1": version: 29.7.0 resolution: "jest-diff@npm:29.7.0" dependencies: From 94a5c9af5ab5c5c648bb1810f4d580e722ba34ec Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Mon, 5 May 2025 06:36:41 -0500 Subject: [PATCH 4/8] update `vite` to version 6.3.5 --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 17fb3e76a65e..659d042108e9 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "tsx": "*", "typescript": ">=4.8.4 <5.9.0", "typescript-eslint": "workspace:^", - "vite": "^6.3.4", + "vite": "^6.3.5", "vitest": "^3.1.2", "yargs": "17.7.2" }, diff --git a/yarn.lock b/yarn.lock index e835da733797..488f7c04377b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5809,7 +5809,7 @@ __metadata: tsx: "*" typescript: ">=4.8.4 <5.9.0" typescript-eslint: "workspace:^" - vite: ^6.3.4 + vite: ^6.3.5 vitest: ^3.1.2 yargs: 17.7.2 languageName: unknown @@ -19426,9 +19426,9 @@ __metadata: languageName: node linkType: hard -"vite@npm:^5.0.0 || ^6.0.0, vite@npm:^6.3.4": - version: 6.3.4 - resolution: "vite@npm:6.3.4" +"vite@npm:^5.0.0 || ^6.0.0, vite@npm:^6.3.5": + version: 6.3.5 + resolution: "vite@npm:6.3.5" dependencies: esbuild: ^0.25.0 fdir: ^6.4.4 @@ -19477,7 +19477,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 6b86f267319342393d2aeea3436d64716dd6d769acd96b13f9be416f751f4f3380119594baebb2ead71f738c6bd20956017320fad4cd79ba00168f4b9a747393 + checksum: b7f1ebaae483090441f17ca09ea2c9b803688d2a2ed9860fbd8b72271918776ea3ceca643e807a5ee00628d65b79656d32529a4b8dd388aa33e41bc3f38732d0 languageName: node linkType: hard From 92b4cceb66383491f51240eaf991fcaa72b450c0 Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Wed, 7 May 2025 09:24:26 -0500 Subject: [PATCH 5/8] update `vitest` to version 3.1.3 --- package.json | 4 +- packages/ast-spec/package.json | 8 +- packages/eslint-plugin-internal/package.json | 4 +- packages/eslint-plugin/package.json | 4 +- packages/integration-tests/package.json | 4 +- packages/parser/package.json | 4 +- .../package.json | 4 +- packages/rule-tester/package.json | 4 +- packages/scope-manager/package.json | 6 +- packages/type-utils/package.json | 4 +- packages/types/package.json | 4 +- packages/typescript-eslint/package.json | 4 +- packages/typescript-estree/package.json | 4 +- packages/utils/package.json | 4 +- packages/visitor-keys/package.json | 4 +- yarn.lock | 696 ++++++++++++------ 16 files changed, 506 insertions(+), 256 deletions(-) diff --git a/package.json b/package.json index 0e626b93592b..2bbb81ccdede 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "@typescript-eslint/types": "workspace:^", "@typescript-eslint/typescript-estree": "workspace:^", "@typescript-eslint/utils": "workspace:^", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "@vitest/eslint-plugin": "^1.1.44", "console-fail-test": "^0.5.0", "cross-fetch": "^4.0.0", @@ -106,7 +106,7 @@ "typescript": ">=4.8.4 <5.9.0", "typescript-eslint": "workspace:^", "vite": "^6.3.5", - "vitest": "^3.1.2", + "vitest": "^3.1.3", "yargs": "17.7.2" }, "resolutions": { diff --git a/packages/ast-spec/package.json b/packages/ast-spec/package.json index 3542e8436e5a..d064d198793b 100644 --- a/packages/ast-spec/package.json +++ b/packages/ast-spec/package.json @@ -51,14 +51,14 @@ "@types/babel__code-frame": "^7.0.6", "@types/babel__core": "^7.20.5", "@typescript-eslint/typescript-estree": "workspace:*", - "@vitest/coverage-v8": "^3.1.2", - "@vitest/pretty-format": "^3.1.2", - "@vitest/utils": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", + "@vitest/pretty-format": "^3.1.3", + "@vitest/utils": "^3.1.3", "eslint": "*", "glob": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" } } diff --git a/packages/eslint-plugin-internal/package.json b/packages/eslint-plugin-internal/package.json index 7df8ec9e5418..458bee57df6a 100644 --- a/packages/eslint-plugin-internal/package.json +++ b/packages/eslint-plugin-internal/package.json @@ -31,8 +31,8 @@ "prettier": "^3.2.5" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "rimraf": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" } } diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index ef2c5e11ed51..f336fba2b209 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -75,7 +75,7 @@ "@types/natural-compare": "*", "@typescript-eslint/rule-schema-to-typescript-types": "8.32.0", "@typescript-eslint/rule-tester": "8.32.0", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "ajv": "^6.12.6", "cross-fetch": "*", "eslint": "*", @@ -91,7 +91,7 @@ "tsx": "*", "typescript": "*", "unist-util-visit": "^5.0.0", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", diff --git a/packages/integration-tests/package.json b/packages/integration-tests/package.json index 0e9edffb45b4..602d44d36f8f 100644 --- a/packages/integration-tests/package.json +++ b/packages/integration-tests/package.json @@ -18,7 +18,7 @@ "check-types": "npx nx typecheck" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", - "vitest": "^3.1.2" + "@vitest/coverage-v8": "^3.1.3", + "vitest": "^3.1.3" } } diff --git a/packages/parser/package.json b/packages/parser/package.json index 68c85d67b118..659172ce81e9 100644 --- a/packages/parser/package.json +++ b/packages/parser/package.json @@ -59,12 +59,12 @@ "debug": "^4.3.4" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "glob": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/rule-schema-to-typescript-types/package.json b/packages/rule-schema-to-typescript-types/package.json index 46be0cef5480..d4affad6f8a4 100644 --- a/packages/rule-schema-to-typescript-types/package.json +++ b/packages/rule-schema-to-typescript-types/package.json @@ -37,9 +37,9 @@ "prettier": "^3.2.5" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/rule-tester/package.json b/packages/rule-tester/package.json index 3aaf698c9caa..b841c3e54452 100644 --- a/packages/rule-tester/package.json +++ b/packages/rule-tester/package.json @@ -61,7 +61,7 @@ "devDependencies": { "@types/json-stable-stringify-without-jsonify": "^1.0.2", "@types/lodash.merge": "4.6.9", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "chai": "^5.2.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", @@ -70,7 +70,7 @@ "sinon": "^20.0.0", "source-map-support": "^0.5.21", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/scope-manager/package.json b/packages/scope-manager/package.json index 5a7b1e6a2b6d..3190386eb065 100644 --- a/packages/scope-manager/package.json +++ b/packages/scope-manager/package.json @@ -52,13 +52,13 @@ }, "devDependencies": { "@typescript-eslint/typescript-estree": "8.32.0", - "@vitest/coverage-v8": "^3.1.2", - "@vitest/pretty-format": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", + "@vitest/pretty-format": "^3.1.3", "glob": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/type-utils/package.json b/packages/type-utils/package.json index d7e1da1cea7d..729c3e5d6d18 100644 --- a/packages/type-utils/package.json +++ b/packages/type-utils/package.json @@ -55,13 +55,13 @@ }, "devDependencies": { "@typescript-eslint/parser": "8.32.0", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "ajv": "^6.12.6", "eslint": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/types/package.json b/packages/types/package.json index 522396805673..61027a6c5422 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -67,12 +67,12 @@ } }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "prettier": "^3.2.5", "rimraf": "*", "tsx": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/typescript-eslint/package.json b/packages/typescript-eslint/package.json index e9cd6e862734..824b178810ca 100644 --- a/packages/typescript-eslint/package.json +++ b/packages/typescript-eslint/package.json @@ -60,11 +60,11 @@ "typescript": ">=4.8.4 <5.9.0" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/typescript-estree/package.json b/packages/typescript-estree/package.json index b992b01f0d7e..56f0f128a669 100644 --- a/packages/typescript-estree/package.json +++ b/packages/typescript-estree/package.json @@ -63,12 +63,12 @@ }, "devDependencies": { "@types/is-glob": "^4.0.4", - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "glob": "*", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" diff --git a/packages/utils/package.json b/packages/utils/package.json index 1cc1eb6398be..9c0a1e6ec872 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -72,11 +72,11 @@ "typescript": ">=4.8.4 <5.9.0" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/packages/visitor-keys/package.json b/packages/visitor-keys/package.json index 34ec3ee84e50..0129afc8f7cd 100644 --- a/packages/visitor-keys/package.json +++ b/packages/visitor-keys/package.json @@ -50,11 +50,11 @@ "eslint-visitor-keys": "^4.2.0" }, "devDependencies": { - "@vitest/coverage-v8": "^3.1.2", + "@vitest/coverage-v8": "^3.1.3", "prettier": "^3.2.5", "rimraf": "*", "typescript": "*", - "vitest": "^3.1.2" + "vitest": "^3.1.3" }, "funding": { "type": "opencollective", diff --git a/yarn.lock b/yarn.lock index cf8ff78ac4b8..0b52f47c9fe5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -547,25 +547,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": - version: 7.26.2 - resolution: "@babel/parser@npm:7.26.2" - dependencies: - "@babel/types": ^7.27.1 - bin: - parser: ./bin/babel-parser.js - checksum: c88b5ea0adf357ef909cdc2c31e284a154943edc59f63f6e8a4c20bf773a1b2f3d8c2205e59c09ca7cdad91e7466300114548876529277a80651b6436a48d5d9 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.25.4": - version: 7.27.1 - resolution: "@babel/parser@npm:7.27.1" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.25.4, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": + version: 7.27.2 + resolution: "@babel/parser@npm:7.27.2" dependencies: "@babel/types": ^7.27.1 bin: parser: ./bin/babel-parser.js - checksum: 36042c744c4648a8cebf5579a0f8dc6c056648a5b017c1f1c896ce99468764dad91dfc3dd215684e0e4e648a28b62cdd2e6537b34f4a83dda01cb97a846166b0 + checksum: 1ac70a75028f1cc10eefb10ed2d83cf700ca3e1ddb4cf556a003fc5c4ca53ae83350bbb8065020fcc70d476fcf7bf1c17191b72384f719614ae18397142289cf languageName: node linkType: hard @@ -2909,6 +2898,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/aix-ppc64@npm:0.25.4" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/android-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/android-arm64@npm:0.20.2" @@ -2923,6 +2919,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/android-arm64@npm:0.25.4" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/android-arm@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/android-arm@npm:0.20.2" @@ -2937,6 +2940,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-arm@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/android-arm@npm:0.25.4" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + "@esbuild/android-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/android-x64@npm:0.20.2" @@ -2951,6 +2961,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/android-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/android-x64@npm:0.25.4" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + "@esbuild/darwin-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/darwin-arm64@npm:0.20.2" @@ -2965,6 +2982,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/darwin-arm64@npm:0.25.4" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/darwin-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/darwin-x64@npm:0.20.2" @@ -2979,6 +3003,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/darwin-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/darwin-x64@npm:0.25.4" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + "@esbuild/freebsd-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/freebsd-arm64@npm:0.20.2" @@ -2993,6 +3024,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/freebsd-arm64@npm:0.25.4" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/freebsd-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/freebsd-x64@npm:0.20.2" @@ -3007,6 +3045,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/freebsd-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/freebsd-x64@npm:0.25.4" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/linux-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-arm64@npm:0.20.2" @@ -3021,6 +3066,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-arm64@npm:0.25.4" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/linux-arm@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-arm@npm:0.20.2" @@ -3035,6 +3087,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-arm@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-arm@npm:0.25.4" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + "@esbuild/linux-ia32@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-ia32@npm:0.20.2" @@ -3049,6 +3108,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ia32@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-ia32@npm:0.25.4" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/linux-loong64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-loong64@npm:0.20.2" @@ -3063,6 +3129,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-loong64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-loong64@npm:0.25.4" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + "@esbuild/linux-mips64el@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-mips64el@npm:0.20.2" @@ -3077,6 +3150,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-mips64el@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-mips64el@npm:0.25.4" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + "@esbuild/linux-ppc64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-ppc64@npm:0.20.2" @@ -3091,6 +3171,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-ppc64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-ppc64@npm:0.25.4" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + "@esbuild/linux-riscv64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-riscv64@npm:0.20.2" @@ -3105,6 +3192,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-riscv64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-riscv64@npm:0.25.4" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + "@esbuild/linux-s390x@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-s390x@npm:0.20.2" @@ -3119,6 +3213,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-s390x@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-s390x@npm:0.25.4" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + "@esbuild/linux-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/linux-x64@npm:0.20.2" @@ -3133,6 +3234,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/linux-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/linux-x64@npm:0.25.4" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + "@esbuild/netbsd-arm64@npm:0.25.3": version: 0.25.3 resolution: "@esbuild/netbsd-arm64@npm:0.25.3" @@ -3140,6 +3248,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/netbsd-arm64@npm:0.25.4" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/netbsd-x64@npm:0.20.2" @@ -3154,6 +3269,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/netbsd-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/netbsd-x64@npm:0.25.4" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/openbsd-arm64@npm:0.25.3": version: 0.25.3 resolution: "@esbuild/openbsd-arm64@npm:0.25.3" @@ -3161,6 +3283,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/openbsd-arm64@npm:0.25.4" + conditions: os=openbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/openbsd-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/openbsd-x64@npm:0.20.2" @@ -3175,6 +3304,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/openbsd-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/openbsd-x64@npm:0.25.4" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + "@esbuild/sunos-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/sunos-x64@npm:0.20.2" @@ -3189,6 +3325,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/sunos-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/sunos-x64@npm:0.25.4" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + "@esbuild/win32-arm64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/win32-arm64@npm:0.20.2" @@ -3203,6 +3346,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-arm64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/win32-arm64@npm:0.25.4" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/win32-ia32@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/win32-ia32@npm:0.20.2" @@ -3217,6 +3367,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-ia32@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/win32-ia32@npm:0.25.4" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + "@esbuild/win32-x64@npm:0.20.2": version: 0.20.2 resolution: "@esbuild/win32-x64@npm:0.20.2" @@ -3231,6 +3388,13 @@ __metadata: languageName: node linkType: hard +"@esbuild/win32-x64@npm:0.25.4": + version: 0.25.4 + resolution: "@esbuild/win32-x64@npm:0.25.4" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@eslint-community/eslint-plugin-eslint-comments@npm:^4.4.1": version: 4.5.0 resolution: "@eslint-community/eslint-plugin-eslint-comments@npm:4.5.0" @@ -4115,142 +4279,142 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.1" +"@rollup/rollup-android-arm-eabi@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.2" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-android-arm64@npm:4.40.1" +"@rollup/rollup-android-arm64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-android-arm64@npm:4.40.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-darwin-arm64@npm:4.40.1" +"@rollup/rollup-darwin-arm64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-darwin-arm64@npm:4.40.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-darwin-x64@npm:4.40.1" +"@rollup/rollup-darwin-x64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-darwin-x64@npm:4.40.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-freebsd-arm64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.1" +"@rollup/rollup-freebsd-arm64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.2" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-freebsd-x64@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-freebsd-x64@npm:4.40.1" +"@rollup/rollup-freebsd-x64@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-freebsd-x64@npm:4.40.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.1" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.2" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.1" +"@rollup/rollup-linux-arm-musleabihf@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.2" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.1" +"@rollup/rollup-linux-arm64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.1" +"@rollup/rollup-linux-arm64-musl@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.1" +"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.2" conditions: os=linux & cpu=loong64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.1" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.2" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.1" +"@rollup/rollup-linux-riscv64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.2" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-musl@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.1" +"@rollup/rollup-linux-riscv64-musl@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.2" conditions: os=linux & cpu=riscv64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.1" +"@rollup/rollup-linux-s390x-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.2" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.1" +"@rollup/rollup-linux-x64-gnu@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.1" +"@rollup/rollup-linux-x64-musl@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.1" +"@rollup/rollup-win32-arm64-msvc@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.1" +"@rollup/rollup-win32-ia32-msvc@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.40.1": - version: 4.40.1 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.1" +"@rollup/rollup-win32-x64-msvc@npm:4.40.2": + version: 4.40.2 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -5331,15 +5495,15 @@ __metadata: "@types/babel__code-frame": ^7.0.6 "@types/babel__core": ^7.20.5 "@typescript-eslint/typescript-estree": "workspace:*" - "@vitest/coverage-v8": ^3.1.2 - "@vitest/pretty-format": ^3.1.2 - "@vitest/utils": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 + "@vitest/pretty-format": ^3.1.3 + "@vitest/utils": ^3.1.3 eslint: "*" glob: "*" prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5352,10 +5516,10 @@ __metadata: "@typescript-eslint/scope-manager": "workspace:*" "@typescript-eslint/type-utils": "workspace:*" "@typescript-eslint/utils": "workspace:*" - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 prettier: ^3.2.5 rimraf: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5372,7 +5536,7 @@ __metadata: "@typescript-eslint/type-utils": 8.32.0 "@typescript-eslint/utils": 8.32.0 "@typescript-eslint/visitor-keys": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 ajv: ^6.12.6 cross-fetch: "*" eslint: "*" @@ -5392,7 +5556,7 @@ __metadata: tsx: "*" typescript: "*" unist-util-visit: ^5.0.0 - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 @@ -5404,8 +5568,8 @@ __metadata: version: 0.0.0-use.local resolution: "@typescript-eslint/integration-tests@workspace:packages/integration-tests" dependencies: - "@vitest/coverage-v8": ^3.1.2 - vitest: ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5417,13 +5581,13 @@ __metadata: "@typescript-eslint/types": 8.32.0 "@typescript-eslint/typescript-estree": 8.32.0 "@typescript-eslint/visitor-keys": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 debug: ^4.3.4 glob: "*" prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -5436,11 +5600,11 @@ __metadata: dependencies: "@typescript-eslint/type-utils": 8.32.0 "@typescript-eslint/utils": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 natural-compare: ^1.4.0 prettier: ^3.2.5 typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5453,7 +5617,7 @@ __metadata: "@typescript-eslint/parser": 8.32.0 "@typescript-eslint/typescript-estree": 8.32.0 "@typescript-eslint/utils": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 ajv: ^6.12.6 chai: ^5.2.0 eslint-visitor-keys: ^4.2.0 @@ -5466,7 +5630,7 @@ __metadata: sinon: ^20.0.0 source-map-support: ^0.5.21 typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: eslint: ^8.57.0 || ^9.0.0 languageName: unknown @@ -5479,13 +5643,13 @@ __metadata: "@typescript-eslint/types": 8.32.0 "@typescript-eslint/typescript-estree": 8.32.0 "@typescript-eslint/visitor-keys": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 - "@vitest/pretty-format": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 + "@vitest/pretty-format": ^3.1.3 glob: "*" prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5496,7 +5660,7 @@ __metadata: "@typescript-eslint/parser": 8.32.0 "@typescript-eslint/typescript-estree": 8.32.0 "@typescript-eslint/utils": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 ajv: ^6.12.6 debug: ^4.3.4 eslint: "*" @@ -5504,7 +5668,7 @@ __metadata: rimraf: "*" ts-api-utils: ^2.1.0 typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -5515,12 +5679,12 @@ __metadata: version: 0.0.0-use.local resolution: "@typescript-eslint/types@workspace:packages/types" dependencies: - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 prettier: ^3.2.5 rimraf: "*" tsx: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5551,7 +5715,7 @@ __metadata: "@typescript-eslint/types": "workspace:^" "@typescript-eslint/typescript-estree": "workspace:^" "@typescript-eslint/utils": "workspace:^" - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 "@vitest/eslint-plugin": ^1.1.44 console-fail-test: ^0.5.0 cross-fetch: ^4.0.0 @@ -5583,7 +5747,7 @@ __metadata: typescript: ">=4.8.4 <5.9.0" typescript-eslint: "workspace:^" vite: ^6.3.5 - vitest: ^3.1.2 + vitest: ^3.1.3 yargs: 17.7.2 languageName: unknown linkType: soft @@ -5595,7 +5759,7 @@ __metadata: "@types/is-glob": ^4.0.4 "@typescript-eslint/types": 8.32.0 "@typescript-eslint/visitor-keys": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 debug: ^4.3.4 fast-glob: ^3.3.2 glob: "*" @@ -5606,7 +5770,7 @@ __metadata: semver: ^7.6.0 ts-api-utils: ^2.1.0 typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: typescript: ">=4.8.4 <5.9.0" languageName: unknown @@ -5620,11 +5784,11 @@ __metadata: "@typescript-eslint/scope-manager": 8.32.0 "@typescript-eslint/types": 8.32.0 "@typescript-eslint/typescript-estree": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -5636,12 +5800,12 @@ __metadata: resolution: "@typescript-eslint/visitor-keys@workspace:packages/visitor-keys" dependencies: "@typescript-eslint/types": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 eslint-visitor-keys: ^4.2.0 prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 languageName: unknown linkType: soft @@ -5683,9 +5847,9 @@ __metadata: languageName: node linkType: hard -"@vitest/coverage-v8@npm:^3.1.2": - version: 3.1.2 - resolution: "@vitest/coverage-v8@npm:3.1.2" +"@vitest/coverage-v8@npm:^3.1.3": + version: 3.1.3 + resolution: "@vitest/coverage-v8@npm:3.1.3" dependencies: "@ampproject/remapping": ^2.3.0 "@bcoe/v8-coverage": ^1.0.2 @@ -5700,12 +5864,12 @@ __metadata: test-exclude: ^7.0.1 tinyrainbow: ^2.0.0 peerDependencies: - "@vitest/browser": 3.1.2 - vitest: 3.1.2 + "@vitest/browser": 3.1.3 + vitest: 3.1.3 peerDependenciesMeta: "@vitest/browser": optional: true - checksum: f0ffe4b64ef6eed5d9af8756ccc6ff662ecc9af152b42018494c53f7ad35a25f596ad7651a1731b1bbb9952e220c79f6a9aa3d96dd340e2869f24b2dee2d449c + checksum: 647d9d43335349db076b507eb374a364e96e4367f00ed610afff357b6d00d49ea22d30a00f046f088392c68bb3968a5f780ce8ee9a39f14e968b35fcc7fc7e69 languageName: node linkType: hard @@ -5726,23 +5890,23 @@ __metadata: languageName: node linkType: hard -"@vitest/expect@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/expect@npm:3.1.2" +"@vitest/expect@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/expect@npm:3.1.3" dependencies: - "@vitest/spy": 3.1.2 - "@vitest/utils": 3.1.2 + "@vitest/spy": 3.1.3 + "@vitest/utils": 3.1.3 chai: ^5.2.0 tinyrainbow: ^2.0.0 - checksum: 132d65f4495afc4a6e714328f2a3375e72a737444967039c50a569626aaef730af920145e10a4b188699a051ba76dcdf404ddbea12cded3e3206d7e516d6ddb9 + checksum: 5c83ed7c7b429217363be15e361fe5128684aed422f3424b9a994f5a1116b06293d4c4bf117a9670c311e73e8a9d55b99adafdf63dfce88e15417814087d1eec languageName: node linkType: hard -"@vitest/mocker@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/mocker@npm:3.1.2" +"@vitest/mocker@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/mocker@npm:3.1.3" dependencies: - "@vitest/spy": 3.1.2 + "@vitest/spy": 3.1.3 estree-walker: ^3.0.3 magic-string: ^0.30.17 peerDependencies: @@ -5753,57 +5917,57 @@ __metadata: optional: true vite: optional: true - checksum: 5d852acdaccc832759ce88801736f938a37eb9cb84c703b96563c45f41372a0120a0fb069dd63390fa779aeca46eb0f16a4786c3c41741603e3af49b738b3194 + checksum: f4550db48d9e3f009db56af4c8bb3d15de5eb26bdcfa1a19b703deb284f3a4c04b89c4ac0d6ad139cc70a3d893260852742b1ad1eb8af0e7f11711bed4427ee4 languageName: node linkType: hard -"@vitest/pretty-format@npm:3.1.2, @vitest/pretty-format@npm:^3.1.2": - version: 3.1.2 - resolution: "@vitest/pretty-format@npm:3.1.2" +"@vitest/pretty-format@npm:3.1.3, @vitest/pretty-format@npm:^3.1.3": + version: 3.1.3 + resolution: "@vitest/pretty-format@npm:3.1.3" dependencies: tinyrainbow: ^2.0.0 - checksum: b218576f9226ec9b99720579e1b8fa5838bec47d84cfb76ccb8bedf42f8820ea3657934b2cfeb5ab41dcc89b0991d9b608318033a4f6ed511a38901a1132a26c + checksum: c27594a4c33e27d4c16ed73940d9c2399a71dfbcd3e70d459152853c051097d72414af1449226250b5be039d859565b278584d42a4ac088c9e4b5e7a929e86fc languageName: node linkType: hard -"@vitest/runner@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/runner@npm:3.1.2" +"@vitest/runner@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/runner@npm:3.1.3" dependencies: - "@vitest/utils": 3.1.2 + "@vitest/utils": 3.1.3 pathe: ^2.0.3 - checksum: 219e1bc2ae7f38be0661b6520c24655a5739f4a6d3f88c992593f5a9419da184d5663af4907fcfa122a9c5e86bad58b5cb63f6857bb62af7655169fa90a4006b + checksum: 263363ffaa4102361ac94c1c0cec88e63511ecab3b995f1bdbe307493d4b991c41528afaea0a4dbbd8d880fb35deb30c0b9bf2178deacda15c7ea15ad28a284d languageName: node linkType: hard -"@vitest/snapshot@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/snapshot@npm:3.1.2" +"@vitest/snapshot@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/snapshot@npm:3.1.3" dependencies: - "@vitest/pretty-format": 3.1.2 + "@vitest/pretty-format": 3.1.3 magic-string: ^0.30.17 pathe: ^2.0.3 - checksum: 014d3beb5603531801e8a2768f755b9358d403291bdff573dffa6999b93455232a9fdd7d311875eff5eb2e8fb9fbcd4d7fe470aa10ebd1c161db66b1369bbe9a + checksum: d128f8fba53e8703f4453e461bb53ca5e3f2deb48c43a37e9489f85bbef693e0daafec44611c1449ed0d2eb370a8fd0dabf16538c74325e760bda4c01e8443b9 languageName: node linkType: hard -"@vitest/spy@npm:3.1.2": - version: 3.1.2 - resolution: "@vitest/spy@npm:3.1.2" +"@vitest/spy@npm:3.1.3": + version: 3.1.3 + resolution: "@vitest/spy@npm:3.1.3" dependencies: tinyspy: ^3.0.2 - checksum: afffa703173224aae1d0382b4ec6e6861882a8d8836d39761f19eeb7645a84a0ebdf31afaed3cf409b4c505803398b7bea84b536b20d27cd20592563c437c8db + checksum: 89093542e1677c37c4ef8f86fb30abafd61d98e1fa908fb403acd7dfaf03e3ab67a84ef3b4b8f75685ba68aa2c8b6eb7b1274938822c7c19c3250cdadfb45457 languageName: node linkType: hard -"@vitest/utils@npm:3.1.2, @vitest/utils@npm:^3.1.2": - version: 3.1.2 - resolution: "@vitest/utils@npm:3.1.2" +"@vitest/utils@npm:3.1.3, @vitest/utils@npm:^3.1.3": + version: 3.1.3 + resolution: "@vitest/utils@npm:3.1.3" dependencies: - "@vitest/pretty-format": 3.1.2 + "@vitest/pretty-format": 3.1.3 loupe: ^3.1.3 tinyrainbow: ^2.0.0 - checksum: 045660ca4642c57bcfbd0de28225f768b14ad288a75823165657b50283f9a858fdba06ca9789c116d44860ea6119ae8a3bb19a0b2343337f4a246bf6f0c7de01 + checksum: ba6bfa548e96c1f3493e47c027c03d1e800127446a7c60663817c67bb97f54d83ac9f4133b2c4334bce32925765d2db89f4d6c8b58b4d355d4107100b59e6603 languageName: node linkType: hard @@ -9029,7 +9193,7 @@ __metadata: languageName: node linkType: hard -"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.3, es-module-lexer@npm:^1.6.0": +"es-module-lexer@npm:^1.2.1, es-module-lexer@npm:^1.5.3, es-module-lexer@npm:^1.7.0": version: 1.7.0 resolution: "es-module-lexer@npm:1.7.0" checksum: 7858bb76ae387fdbf8a6fccc951bf18919768309850587553eca34698b9193fbc65fab03d3d9f69163d860321fbf66adf89d5821e7f4148c7cb7d7b997259211 @@ -9076,35 +9240,35 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.25.0, esbuild@npm:~0.25.0": - version: 0.25.3 - resolution: "esbuild@npm:0.25.3" - dependencies: - "@esbuild/aix-ppc64": 0.25.3 - "@esbuild/android-arm": 0.25.3 - "@esbuild/android-arm64": 0.25.3 - "@esbuild/android-x64": 0.25.3 - "@esbuild/darwin-arm64": 0.25.3 - "@esbuild/darwin-x64": 0.25.3 - "@esbuild/freebsd-arm64": 0.25.3 - "@esbuild/freebsd-x64": 0.25.3 - "@esbuild/linux-arm": 0.25.3 - "@esbuild/linux-arm64": 0.25.3 - "@esbuild/linux-ia32": 0.25.3 - "@esbuild/linux-loong64": 0.25.3 - "@esbuild/linux-mips64el": 0.25.3 - "@esbuild/linux-ppc64": 0.25.3 - "@esbuild/linux-riscv64": 0.25.3 - "@esbuild/linux-s390x": 0.25.3 - "@esbuild/linux-x64": 0.25.3 - "@esbuild/netbsd-arm64": 0.25.3 - "@esbuild/netbsd-x64": 0.25.3 - "@esbuild/openbsd-arm64": 0.25.3 - "@esbuild/openbsd-x64": 0.25.3 - "@esbuild/sunos-x64": 0.25.3 - "@esbuild/win32-arm64": 0.25.3 - "@esbuild/win32-ia32": 0.25.3 - "@esbuild/win32-x64": 0.25.3 +"esbuild@npm:^0.25.0": + version: 0.25.4 + resolution: "esbuild@npm:0.25.4" + dependencies: + "@esbuild/aix-ppc64": 0.25.4 + "@esbuild/android-arm": 0.25.4 + "@esbuild/android-arm64": 0.25.4 + "@esbuild/android-x64": 0.25.4 + "@esbuild/darwin-arm64": 0.25.4 + "@esbuild/darwin-x64": 0.25.4 + "@esbuild/freebsd-arm64": 0.25.4 + "@esbuild/freebsd-x64": 0.25.4 + "@esbuild/linux-arm": 0.25.4 + "@esbuild/linux-arm64": 0.25.4 + "@esbuild/linux-ia32": 0.25.4 + "@esbuild/linux-loong64": 0.25.4 + "@esbuild/linux-mips64el": 0.25.4 + "@esbuild/linux-ppc64": 0.25.4 + "@esbuild/linux-riscv64": 0.25.4 + "@esbuild/linux-s390x": 0.25.4 + "@esbuild/linux-x64": 0.25.4 + "@esbuild/netbsd-arm64": 0.25.4 + "@esbuild/netbsd-x64": 0.25.4 + "@esbuild/openbsd-arm64": 0.25.4 + "@esbuild/openbsd-x64": 0.25.4 + "@esbuild/sunos-x64": 0.25.4 + "@esbuild/win32-arm64": 0.25.4 + "@esbuild/win32-ia32": 0.25.4 + "@esbuild/win32-x64": 0.25.4 dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -9158,7 +9322,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: 1f9af51aa1d7d1f57e7294823d19ed69b0f6da413b7b0e8123abcebd1bb4011ef19961e2e6679c07301fcd00a85c4d102160fc40a91c25ceeaf594932509d84d + checksum: cd39e0236ba9ab39d28e5ba0aab9b63b3f7f3fdcd449422bfcaff087aedcf4fa0e754cb89fba37d96c67874e995e3c02634ef392f09928cdf4a5daf4dddd0171 languageName: node linkType: hard @@ -9242,6 +9406,92 @@ __metadata: languageName: node linkType: hard +"esbuild@npm:~0.25.0": + version: 0.25.3 + resolution: "esbuild@npm:0.25.3" + dependencies: + "@esbuild/aix-ppc64": 0.25.3 + "@esbuild/android-arm": 0.25.3 + "@esbuild/android-arm64": 0.25.3 + "@esbuild/android-x64": 0.25.3 + "@esbuild/darwin-arm64": 0.25.3 + "@esbuild/darwin-x64": 0.25.3 + "@esbuild/freebsd-arm64": 0.25.3 + "@esbuild/freebsd-x64": 0.25.3 + "@esbuild/linux-arm": 0.25.3 + "@esbuild/linux-arm64": 0.25.3 + "@esbuild/linux-ia32": 0.25.3 + "@esbuild/linux-loong64": 0.25.3 + "@esbuild/linux-mips64el": 0.25.3 + "@esbuild/linux-ppc64": 0.25.3 + "@esbuild/linux-riscv64": 0.25.3 + "@esbuild/linux-s390x": 0.25.3 + "@esbuild/linux-x64": 0.25.3 + "@esbuild/netbsd-arm64": 0.25.3 + "@esbuild/netbsd-x64": 0.25.3 + "@esbuild/openbsd-arm64": 0.25.3 + "@esbuild/openbsd-x64": 0.25.3 + "@esbuild/sunos-x64": 0.25.3 + "@esbuild/win32-arm64": 0.25.3 + "@esbuild/win32-ia32": 0.25.3 + "@esbuild/win32-x64": 0.25.3 + dependenciesMeta: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": + optional: true + "@esbuild/android-x64": + optional: true + "@esbuild/darwin-arm64": + optional: true + "@esbuild/darwin-x64": + optional: true + "@esbuild/freebsd-arm64": + optional: true + "@esbuild/freebsd-x64": + optional: true + "@esbuild/linux-arm": + optional: true + "@esbuild/linux-arm64": + optional: true + "@esbuild/linux-ia32": + optional: true + "@esbuild/linux-loong64": + optional: true + "@esbuild/linux-mips64el": + optional: true + "@esbuild/linux-ppc64": + optional: true + "@esbuild/linux-riscv64": + optional: true + "@esbuild/linux-s390x": + optional: true + "@esbuild/linux-x64": + optional: true + "@esbuild/netbsd-arm64": + optional: true + "@esbuild/netbsd-x64": + optional: true + "@esbuild/openbsd-arm64": + optional: true + "@esbuild/openbsd-x64": + optional: true + "@esbuild/sunos-x64": + optional: true + "@esbuild/win32-arm64": + optional: true + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": + optional: true + bin: + esbuild: bin/esbuild + checksum: 1f9af51aa1d7d1f57e7294823d19ed69b0f6da413b7b0e8123abcebd1bb4011ef19961e2e6679c07301fcd00a85c4d102160fc40a91c25ceeaf594932509d84d + languageName: node + linkType: hard + "escalade@npm:^3.1.1, escalade@npm:^3.2.0": version: 3.2.0 resolution: "escalade@npm:3.2.0" @@ -16857,29 +17107,29 @@ __metadata: linkType: hard "rollup@npm:^4.34.9": - version: 4.40.1 - resolution: "rollup@npm:4.40.1" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.40.1 - "@rollup/rollup-android-arm64": 4.40.1 - "@rollup/rollup-darwin-arm64": 4.40.1 - "@rollup/rollup-darwin-x64": 4.40.1 - "@rollup/rollup-freebsd-arm64": 4.40.1 - "@rollup/rollup-freebsd-x64": 4.40.1 - "@rollup/rollup-linux-arm-gnueabihf": 4.40.1 - "@rollup/rollup-linux-arm-musleabihf": 4.40.1 - "@rollup/rollup-linux-arm64-gnu": 4.40.1 - "@rollup/rollup-linux-arm64-musl": 4.40.1 - "@rollup/rollup-linux-loongarch64-gnu": 4.40.1 - "@rollup/rollup-linux-powerpc64le-gnu": 4.40.1 - "@rollup/rollup-linux-riscv64-gnu": 4.40.1 - "@rollup/rollup-linux-riscv64-musl": 4.40.1 - "@rollup/rollup-linux-s390x-gnu": 4.40.1 - "@rollup/rollup-linux-x64-gnu": 4.40.1 - "@rollup/rollup-linux-x64-musl": 4.40.1 - "@rollup/rollup-win32-arm64-msvc": 4.40.1 - "@rollup/rollup-win32-ia32-msvc": 4.40.1 - "@rollup/rollup-win32-x64-msvc": 4.40.1 + version: 4.40.2 + resolution: "rollup@npm:4.40.2" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.40.2 + "@rollup/rollup-android-arm64": 4.40.2 + "@rollup/rollup-darwin-arm64": 4.40.2 + "@rollup/rollup-darwin-x64": 4.40.2 + "@rollup/rollup-freebsd-arm64": 4.40.2 + "@rollup/rollup-freebsd-x64": 4.40.2 + "@rollup/rollup-linux-arm-gnueabihf": 4.40.2 + "@rollup/rollup-linux-arm-musleabihf": 4.40.2 + "@rollup/rollup-linux-arm64-gnu": 4.40.2 + "@rollup/rollup-linux-arm64-musl": 4.40.2 + "@rollup/rollup-linux-loongarch64-gnu": 4.40.2 + "@rollup/rollup-linux-powerpc64le-gnu": 4.40.2 + "@rollup/rollup-linux-riscv64-gnu": 4.40.2 + "@rollup/rollup-linux-riscv64-musl": 4.40.2 + "@rollup/rollup-linux-s390x-gnu": 4.40.2 + "@rollup/rollup-linux-x64-gnu": 4.40.2 + "@rollup/rollup-linux-x64-musl": 4.40.2 + "@rollup/rollup-win32-arm64-msvc": 4.40.2 + "@rollup/rollup-win32-ia32-msvc": 4.40.2 + "@rollup/rollup-win32-x64-msvc": 4.40.2 "@types/estree": 1.0.7 fsevents: ~2.3.2 dependenciesMeta: @@ -16927,7 +17177,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: b25c1a20192bc7d6a483c6dc61f93899fed8d6fbdf42a92f843ed3ab0f729485325e5d2e86b7039a0bd1f4c0eb786f5d8f6054b99e7e1f72dfa2206a528f2b4e + checksum: d2bb0428df6d88892348c9c0405df6b38fcb4841b196711cc986ac177d62c8bf983a8f3a61b834a47b016c41152ae7a75239705a929b40cabba0e33fbb09ff03 languageName: node linkType: hard @@ -18721,11 +18971,11 @@ __metadata: "@typescript-eslint/eslint-plugin": 8.32.0 "@typescript-eslint/parser": 8.32.0 "@typescript-eslint/utils": 8.32.0 - "@vitest/coverage-v8": ^3.1.2 + "@vitest/coverage-v8": ^3.1.3 prettier: ^3.2.5 rimraf: "*" typescript: "*" - vitest: ^3.1.2 + vitest: ^3.1.3 peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: ">=4.8.4 <5.9.0" @@ -19124,18 +19374,18 @@ __metadata: languageName: node linkType: hard -"vite-node@npm:3.1.2": - version: 3.1.2 - resolution: "vite-node@npm:3.1.2" +"vite-node@npm:3.1.3": + version: 3.1.3 + resolution: "vite-node@npm:3.1.3" dependencies: cac: ^6.7.14 debug: ^4.4.0 - es-module-lexer: ^1.6.0 + es-module-lexer: ^1.7.0 pathe: ^2.0.3 vite: ^5.0.0 || ^6.0.0 bin: vite-node: vite-node.mjs - checksum: eab025ba912af2805730cad3a89dc6801d3b0192ceecfb06cdb5e37dffd851263db9743c6e4192d69a75df0b7c19fb03b95272b18cac1f19201e06c09e6e8a1d + checksum: 69975ebd3acce54b0c708818f2a11cb5c4375888d4aab834253c89d0a19438528ccc8abe983ee73af19a69bf8d4a64ed475dca9cec717319c03191ac139c4bca languageName: node linkType: hard @@ -19194,17 +19444,17 @@ __metadata: languageName: node linkType: hard -"vitest@npm:^3.1.2": - version: 3.1.2 - resolution: "vitest@npm:3.1.2" - dependencies: - "@vitest/expect": 3.1.2 - "@vitest/mocker": 3.1.2 - "@vitest/pretty-format": ^3.1.2 - "@vitest/runner": 3.1.2 - "@vitest/snapshot": 3.1.2 - "@vitest/spy": 3.1.2 - "@vitest/utils": 3.1.2 +"vitest@npm:^3.1.3": + version: 3.1.3 + resolution: "vitest@npm:3.1.3" + dependencies: + "@vitest/expect": 3.1.3 + "@vitest/mocker": 3.1.3 + "@vitest/pretty-format": ^3.1.3 + "@vitest/runner": 3.1.3 + "@vitest/snapshot": 3.1.3 + "@vitest/spy": 3.1.3 + "@vitest/utils": 3.1.3 chai: ^5.2.0 debug: ^4.4.0 expect-type: ^1.2.1 @@ -19217,14 +19467,14 @@ __metadata: tinypool: ^1.0.2 tinyrainbow: ^2.0.0 vite: ^5.0.0 || ^6.0.0 - vite-node: 3.1.2 + vite-node: 3.1.3 why-is-node-running: ^2.3.0 peerDependencies: "@edge-runtime/vm": "*" "@types/debug": ^4.1.12 "@types/node": ^18.0.0 || ^20.0.0 || >=22.0.0 - "@vitest/browser": 3.1.2 - "@vitest/ui": 3.1.2 + "@vitest/browser": 3.1.3 + "@vitest/ui": 3.1.3 happy-dom: "*" jsdom: "*" peerDependenciesMeta: @@ -19244,7 +19494,7 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 67bef7675aa0c9e1554e497a60e016fa36a74ce758da126991974cc23c892266090d8a55cb89d92a065818d646218826e2f394ebd0361361fa574b6998fda6d6 + checksum: 4ebcc8bc3c8e23a894632a70851aa3e21646bce8aca4b406d3a5e0fb2aef84fb42c85eea951f9c1bf8b1415e1b3131c4d96ab26d4c1b5df64df9055024c1344d languageName: node linkType: hard From d7964acedf8ce3c2936cf8a7c0508b0f28893226 Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Wed, 7 May 2025 17:44:09 -0500 Subject: [PATCH 6/8] flatten the unit-tests further --- packages/ast-spec/tests/fixtures.test.ts | 458 ++++++++++-------- packages/ast-spec/tests/util/parsers/babel.ts | 16 +- .../tests/util/parsers/parser-types.ts | 14 + .../tests/util/parsers/typescript-estree.ts | 19 +- .../ast-spec/tests/util/serializers/Node.ts | 8 +- packages/ast-spec/tests/util/snapshot-diff.ts | 4 +- 6 files changed, 290 insertions(+), 229 deletions(-) diff --git a/packages/ast-spec/tests/fixtures.test.ts b/packages/ast-spec/tests/fixtures.test.ts index 19cf69c7af5e..f5ab1d3844e0 100644 --- a/packages/ast-spec/tests/fixtures.test.ts +++ b/packages/ast-spec/tests/fixtures.test.ts @@ -1,18 +1,19 @@ import * as glob from 'glob'; import * as fs from 'node:fs/promises'; -import path from 'node:path'; +import * as path from 'node:path'; +import { pathToFileURL } from 'node:url'; import { VitestSnapshotEnvironment } from 'vitest/snapshot'; -import type { ASTFixtureConfig, Fixture } from './util/parsers/parser-types'; +import type { ASTFixtureConfig, Fixture } from './util/parsers/parser-types.js'; -import { parseBabel } from './util/parsers/babel'; -import { ParserResponseType } from './util/parsers/parser-types'; -import { parseTSESTree } from './util/parsers/typescript-estree'; -import { serializeError } from './util/serialize-error'; -import { diffHasChanges, snapshotDiff } from './util/snapshot-diff'; +import { parseBabel } from './util/parsers/babel.js'; +import { ErrorLabel, ParserResponseType } from './util/parsers/parser-types.js'; +import { parseTSESTree } from './util/parsers/typescript-estree.js'; +import { serializeError } from './util/serialize-error.js'; +import { diffHasChanges, snapshotDiff } from './util/snapshot-diff.js'; -const PACKAGE_ROOT = path.resolve(__dirname, '..'); -const SRC_DIR = path.resolve(PACKAGE_ROOT, 'src'); +const PACKAGE_ROOT = path.join(__dirname, '..'); +const SRC_DIR = path.join(PACKAGE_ROOT, 'src'); // Assign a segment set to this variable to limit the test to only this segment // This is super helpful if you need to debug why a specific fixture isn't producing the correct output @@ -23,12 +24,7 @@ const ONLY = [].join(path.sep); const fixturesWithASTDifferences = new Set(); const fixturesWithTokenDifferences = new Set(); const fixturesConfiguredToExpectBabelToNotSupport = new Map(); -enum ErrorLabel { - Babel = "Babel errored but TSESTree didn't", - Both = 'Both errored', - None = 'No errors', - TSESTree = "TSESTree errored but Babel didn't", -} + const fixturesWithErrorDifferences = { [ErrorLabel.Babel]: new Set(), [ErrorLabel.TSESTree]: new Set(), @@ -49,202 +45,277 @@ const ERROR_FIXTURES: readonly string[] = glob.sync( }, ); -const FIXTURES: readonly Fixture[] = [...VALID_FIXTURES, ...ERROR_FIXTURES].map( - absolute => { - const relativeToSrc = path.relative(SRC_DIR, absolute); - const { dir, ext } = path.parse(relativeToSrc); - const segments = dir.split(path.sep).filter(s => s !== 'fixtures'); - const name = segments.pop(); - - assert.isDefined(name); - - const fixtureDir = path.join(SRC_DIR, dir); - const configPath = path.join(fixtureDir, 'config' /* .ts */); - const snapshotPath = path.join(fixtureDir, 'snapshots'); - return { - absolute, - config: ((): ASTFixtureConfig => { +describe('AST Fixtures', async () => { + const FIXTURES: readonly Fixture[] = await Promise.all( + [...VALID_FIXTURES, ...ERROR_FIXTURES].map(async absolute => { + const relativeToSrc = path.relative(SRC_DIR, absolute); + const { base, dir, ext } = path.parse(relativeToSrc); + const directorySegments = dir.split(path.sep); + const segments = directorySegments.filter(s => s !== 'fixtures'); + const name = segments.pop(); + + assert.isDefined(name); + + const fixtureDir = path.join(SRC_DIR, dir); + const configPath = path.join(fixtureDir, 'config.js'); + const snapshotPath = path.join(fixtureDir, 'snapshots'); + + const config = await (async (): Promise => { try { - // eslint-disable-next-line @typescript-eslint/no-require-imports - return require(configPath).default; + const configModule = await import(pathToFileURL(configPath).href); + return configModule.default; } catch { return {}; } - })(), - ext, - isError: /[\\/]_error_[\\/]/.test(absolute), - isJSX: ext.endsWith('x'), - name, - relative: path.relative(SRC_DIR, absolute).replaceAll('\\', '/'), - segments, - snapshotFiles: { - error: { - alignment: (i: number) => - path.join(snapshotPath, `${i}-Alignment-Error.shot`), - babel: (i: number) => - path.join(snapshotPath, `${i}-Babel-Error.shot`), - tsestree: (i: number) => - path.join(snapshotPath, `${i}-TSESTree-Error.shot`), - }, - success: { - alignment: { - ast: (i: number) => - path.join(snapshotPath, `${i}-AST-Alignment-AST.shot`), - tokens: (i: number) => - path.join(snapshotPath, `${i}-AST-Alignment-Tokens.shot`), - }, - babel: { - ast: (i: number) => path.join(snapshotPath, `${i}-Babel-AST.shot`), - tokens: (i: number) => - path.join(snapshotPath, `${i}-Babel-Tokens.shot`), - }, - tsestree: { - ast: (i: number) => - path.join(snapshotPath, `${i}-TSESTree-AST.shot`), - tokens: (i: number) => - path.join(snapshotPath, `${i}-TSESTree-Tokens.shot`), - }, - }, - }, - snapshotPath, - }; - }, -); + })(); + + const isJSX = ext.endsWith('x'); + const isError = directorySegments.includes('_error_'); + const relative = path.posix.join(...directorySegments, base); -function nestDescribe(fixture: Fixture, segments = fixture.segments): void { - if (segments.length > 0) { - describe(segments[0], () => { - nestDescribe(fixture, segments.slice(1)); - }); - } else { - const test = async (): Promise => { - const vitestSnapshotHeader = new VitestSnapshotEnvironment({ - snapshotsDirName: fixture.snapshotPath, - }).getHeader(); - - const contents = await fs.readFile(fixture.absolute, { + const vitestSnapshotEnvironment = new VitestSnapshotEnvironment({ + snapshotsDirName: snapshotPath, + }); + + const vitestSnapshotHeader = vitestSnapshotEnvironment.getHeader(); + + const contents = await fs.readFile(absolute, { encoding: 'utf-8', }); - await fs.mkdir(fixture.snapshotPath, { recursive: true }); - - const tsestreeParsed = parseTSESTree(fixture, contents); - const babelParsed = parseBabel(fixture, contents); - const babelError = babelParsed.type === ParserResponseType.Error; - const tsestreeError = tsestreeParsed.type === ParserResponseType.Error; - - let errorLabel: ErrorLabel; - if (!babelError && tsestreeError) { - errorLabel = ErrorLabel.TSESTree; - } else if (babelError && !tsestreeError) { - errorLabel = ErrorLabel.Babel; - } else if (babelError && tsestreeError) { - errorLabel = ErrorLabel.Both; - } else { - errorLabel = ErrorLabel.None; + await fs.mkdir(snapshotPath, { recursive: true }); + + const TSESTreeParsed = parseTSESTree({ config, contents, isJSX }); + const babelParsed = parseBabel({ contents, isJSX }); + const isBabelError = babelParsed.type === ParserResponseType.Error; + const isTSESTreeError = TSESTreeParsed.type === ParserResponseType.Error; + + const getErrorLabel = (): ErrorLabel => { + if (!isBabelError && isTSESTreeError) { + return ErrorLabel.TSESTree; + } + if (isBabelError && !isTSESTreeError) { + return ErrorLabel.Babel; + } + if (isBabelError && isTSESTreeError) { + return ErrorLabel.Both; + } + return ErrorLabel.None; + }; + + const errorLabel = getErrorLabel(); + + if ( + errorLabel === ErrorLabel.TSESTree || + errorLabel === ErrorLabel.Babel + ) { + fixturesWithErrorDifferences[errorLabel].add(relative); + } + + if (config.expectBabelToNotSupport != null) { + fixturesConfiguredToExpectBabelToNotSupport.set( + relative, + config.expectBabelToNotSupport, + ); } - if (fixture.isError) { - if ( - errorLabel === ErrorLabel.TSESTree || - errorLabel === ErrorLabel.Babel - ) { - fixturesWithErrorDifferences[errorLabel].add(fixture.relative); + if ( + TSESTreeParsed.type === ParserResponseType.NoError && + babelParsed.type === ParserResponseType.NoError + ) { + const diffAstResult = snapshotDiff( + 'TSESTree', + TSESTreeParsed.ast, + 'Babel', + babelParsed.ast, + ); + + const diffTokensResult = snapshotDiff( + 'TSESTree', + TSESTreeParsed.tokens, + 'Babel', + babelParsed.tokens, + ); + + if (diffHasChanges(diffAstResult)) { + fixturesWithASTDifferences.add(relative); } - it('TSESTree - Error', async () => { + if (diffHasChanges(diffTokensResult)) { + fixturesWithTokenDifferences.add(relative); + } + } + + return { + absolute, + babelParsed, + config, + contents, + errorLabel, + ext, + isBabelError, + isError, + isJSX, + isTSESTreeError, + name, + relative, + segments, + snapshotFiles: { + error: { + alignment: (i: number) => + path.join(snapshotPath, `${i}-Alignment-Error.shot`), + babel: (i: number) => + path.join(snapshotPath, `${i}-Babel-Error.shot`), + tsestree: (i: number) => + path.join(snapshotPath, `${i}-TSESTree-Error.shot`), + }, + success: { + alignment: { + ast: (i: number) => + path.join(snapshotPath, `${i}-AST-Alignment-AST.shot`), + tokens: (i: number) => + path.join(snapshotPath, `${i}-AST-Alignment-Tokens.shot`), + }, + babel: { + ast: (i: number) => + path.join(snapshotPath, `${i}-Babel-AST.shot`), + tokens: (i: number) => + path.join(snapshotPath, `${i}-Babel-Tokens.shot`), + }, + tsestree: { + ast: (i: number) => + path.join(snapshotPath, `${i}-TSESTree-AST.shot`), + tokens: (i: number) => + path.join(snapshotPath, `${i}-TSESTree-Tokens.shot`), + }, + }, + }, + snapshotPath, + TSESTreeParsed, + vitestSnapshotHeader, + } satisfies Fixture; + }), + ); + + const FIXTURES_WITH_TEST_TITLES = FIXTURES.map( + fixture => [fixture.segments.join(' > '), fixture] as const, + ); + + describe.for(FIXTURES_WITH_TEST_TITLES)('%s', ([, fixture]) => { + describe( + fixture.name, + { only: [...fixture.segments, fixture.name].join(path.sep) === ONLY }, + () => { + const { + babelParsed, + config, + contents, + errorLabel, + isError, + snapshotFiles, + TSESTreeParsed, + vitestSnapshotHeader, + } = fixture; + + it.runIf(isError)('TSESTree - Error', async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, - serializeError(tsestreeParsed.error, contents), + serializeError(TSESTreeParsed.error, contents), '', ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.error.tsestree(segments.length + 1), - ); + ).toMatchFileSnapshot(snapshotFiles.error.tsestree(1)); }); - it('Babel - Error', async () => { + + it.runIf(isError)('Babel - Error', async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, babelParsed.error, '', ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.error.babel(segments.length + 2), - ); + ).toMatchFileSnapshot(snapshotFiles.error.babel(2)); }); - it('Error Alignment', async () => { + + it.runIf(isError)('Error Alignment', async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, errorLabel, '', ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.error.alignment(segments.length + 3), - ); + ).toMatchFileSnapshot(snapshotFiles.error.alignment(3)); }); - it('Should parse with errors', () => { + + it.runIf(isError)('Should parse with errors', () => { // if this fails and you WEREN'T expecting a parser error, then your fixture should not be in the `_error_` subfolder // if this fails and you WERE expecting a parser error - then something is broken. expect(errorLabel).not.toBe(ErrorLabel.None); }); - } else { - it('TSESTree - AST', async () => { - assert.isSuccessResponse(tsestreeParsed); - await expect(tsestreeParsed.ast).toMatchFileSnapshot( - fixture.snapshotFiles.success.tsestree.ast(segments.length + 1), + + it.skipIf(isError)('TSESTree - AST', async () => { + assert.isSuccessResponse(TSESTreeParsed); + await expect(TSESTreeParsed.ast).toMatchFileSnapshot( + snapshotFiles.success.tsestree.ast(1), ); }); - it('TSESTree - Tokens', async () => { - assert.isSuccessResponse(tsestreeParsed); - await expect(tsestreeParsed.tokens).toMatchFileSnapshot( - fixture.snapshotFiles.success.tsestree.tokens(segments.length + 2), + + it.skipIf(isError)('TSESTree - Tokens', async () => { + assert.isSuccessResponse(TSESTreeParsed); + await expect(TSESTreeParsed.tokens).toMatchFileSnapshot( + snapshotFiles.success.tsestree.tokens(2), ); }); - if (fixture.config.expectBabelToNotSupport != null) { - fixturesConfiguredToExpectBabelToNotSupport.set( - fixture.relative, - fixture.config.expectBabelToNotSupport, - ); + const hasExpectBabelToNotSupport = + config.expectBabelToNotSupport != null; - // eslint-disable-next-line vitest/no-identical-title -- intentional duplication that won't ever happen due to exclusionary conditions - it('Babel - Error', async () => { + // eslint-disable-next-line vitest/no-identical-title -- intentional duplication that won't ever happen due to exclusionary conditions + it.skipIf(isError || !hasExpectBabelToNotSupport)( + 'Babel - Error', + async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, babelParsed.error, '', ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.error.babel(segments.length + 3), - ); - }); - // eslint-disable-next-line vitest/no-disabled-tests -- intentional skip for CLI documentation purposes - it.skip('Babel - Skipped as this fixture is configured to expect babel to error', () => {}); - // eslint-disable-next-line vitest/no-disabled-tests -- intentional skip for CLI documentation purposes - it.skip('AST Alignment - Skipped as this fixture is configured to expect babel to error', () => {}); - } else { - it('Babel - AST', async () => { + ).toMatchFileSnapshot(snapshotFiles.error.babel(3)); + }, + ); + + // eslint-disable-next-line vitest/no-disabled-tests -- intentional skip for CLI documentation purposes + it.skip('Babel - Skipped as this fixture is configured to expect babel to error', () => {}); + // eslint-disable-next-line vitest/no-disabled-tests -- intentional skip for CLI documentation purposes + it.skip('AST Alignment - Skipped as this fixture is configured to expect babel to error', () => {}); + it.skipIf(isError || hasExpectBabelToNotSupport)( + 'Babel - AST', + async () => { assert.isSuccessResponse(babelParsed); await expect(babelParsed.ast).toMatchFileSnapshot( - fixture.snapshotFiles.success.babel.ast(segments.length + 3), + snapshotFiles.success.babel.ast(3), ); - }); - it('Babel - Tokens', async () => { + }, + ); + + it.skipIf(isError || hasExpectBabelToNotSupport)( + 'Babel - Tokens', + async () => { assert.isSuccessResponse(babelParsed); await expect(babelParsed.tokens).toMatchFileSnapshot( - fixture.snapshotFiles.success.babel.tokens(segments.length + 4), + snapshotFiles.success.babel.tokens(4), ); - }); - it('AST Alignment - AST', async () => { - assert.isSuccessResponse(tsestreeParsed); + }, + ); + + it.skipIf(isError || hasExpectBabelToNotSupport)( + 'AST Alignment - AST', + async () => { + assert.isSuccessResponse(TSESTreeParsed); assert.isSuccessResponse(babelParsed); const diffResult = snapshotDiff( 'TSESTree', - tsestreeParsed.ast, + TSESTreeParsed.ast, 'Babel', babelParsed.ast, ); @@ -254,20 +325,18 @@ function nestDescribe(fixture: Fixture, segments = fixture.segments): void { diffResult, '', ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.success.alignment.ast(segments.length + 5), - ); + ).toMatchFileSnapshot(snapshotFiles.success.alignment.ast(5)); + }, + ); - if (diffHasChanges(diffResult)) { - fixturesWithASTDifferences.add(fixture.relative); - } - }); - it('AST Alignment - Token', async () => { - assert.isSuccessResponse(tsestreeParsed); + it.skipIf(isError || hasExpectBabelToNotSupport)( + 'AST Alignment - Token', + async () => { + assert.isSuccessResponse(TSESTreeParsed); assert.isSuccessResponse(babelParsed); const diffResult = snapshotDiff( 'TSESTree', - tsestreeParsed.tokens, + TSESTreeParsed.tokens, 'Babel', babelParsed.tokens, ); @@ -277,41 +346,33 @@ function nestDescribe(fixture: Fixture, segments = fixture.segments): void { diffResult, '', ].join('\n'), - ).toMatchFileSnapshot( - fixture.snapshotFiles.success.alignment.tokens( - segments.length + 6, - ), - ); - - if (diffHasChanges(diffResult)) { - fixturesWithTokenDifferences.add(fixture.relative); - } - }); - } + ).toMatchFileSnapshot(snapshotFiles.success.alignment.tokens(6)); + }, + ); - it('Should parse with no errors', () => { + it.skipIf(isError)('Should parse with no errors', () => { // log the error for debug purposes in case there wasn't supposed to be an error switch (errorLabel) { case ErrorLabel.Babel: assert.isErrorResponse(babelParsed); - if (fixture.config.expectBabelToNotSupport == null) { + if (config.expectBabelToNotSupport == null) { console.error('Babel:\n', babelParsed.error); } break; case ErrorLabel.Both: assert.isErrorResponse(babelParsed); - assert.isErrorResponse(tsestreeParsed); + assert.isErrorResponse(TSESTreeParsed); console.error('Babel:\n', babelParsed.error); - console.error('TSESTree:\n', tsestreeParsed.error); + console.error('TSESTree:\n', TSESTreeParsed.error); break; case ErrorLabel.None: return; case ErrorLabel.TSESTree: - assert.isErrorResponse(tsestreeParsed); - console.error('TSESTree:\n', tsestreeParsed.error); + assert.isErrorResponse(TSESTreeParsed); + console.error('TSESTree:\n', TSESTreeParsed.error); break; } @@ -328,28 +389,12 @@ function nestDescribe(fixture: Fixture, segments = fixture.segments): void { // if this fails and you WEREN'T expecting a parser error - then something is broken. expect(errorLabel).not.toBe(ErrorLabel.Both); - if (fixture.config.expectBabelToNotSupport != null) { - // if this fails and you WERE expecting a parser error, then Babel parsed without error and you should remove the `expectBabelToNotSupport` config. - expect(errorLabel).toBe(ErrorLabel.Babel); - } else { - // if this fails and you WERE expecting a parser error, then your fixture should be in the `_error_` subfolder - // if this fails and you WEREN'T expecting a parser error - then something is broken. - expect(errorLabel).not.toBe(ErrorLabel.Babel); - } + // if this fails and you WERE expecting a parser error, then Babel parsed without error and you should remove the `expectBabelToNotSupport` config. + expect(errorLabel).toBe(ErrorLabel.Babel); }); - } - }; - - describe( - fixture.name, - { only: [...fixture.segments, fixture.name].join(path.sep) === ONLY }, - test, + }, ); - } -} - -describe('AST Fixtures', async () => { - await Promise.all(FIXTURES.map(f => nestDescribe(f))); + }); const vitestSnapshotHeader = new VitestSnapshotEnvironment({ snapshotsDirName: __dirname, @@ -364,9 +409,10 @@ describe('AST Fixtures', async () => { '', ].join('\n'), ).toMatchFileSnapshot( - path.resolve(__dirname, 'fixtures-with-differences-ast.shot'), + path.join(__dirname, 'fixtures-with-differences-ast.shot'), ); }); + it('List fixtures with Token differences', async () => { await expect( [ @@ -375,9 +421,10 @@ describe('AST Fixtures', async () => { '', ].join('\n'), ).toMatchFileSnapshot( - path.resolve(__dirname, 'fixtures-with-differences-tokens.shot'), + path.join(__dirname, 'fixtures-with-differences-tokens.shot'), ); }); + it('List fixtures with Error differences', async () => { await expect( [ @@ -395,9 +442,10 @@ describe('AST Fixtures', async () => { '', ].join('\n'), ).toMatchFileSnapshot( - path.resolve(__dirname, 'fixtures-with-differences-errors.shot'), + path.join(__dirname, 'fixtures-with-differences-errors.shot'), ); }); + it('List fixtures we expect babel to not support', async () => { await expect( [ @@ -410,7 +458,7 @@ describe('AST Fixtures', async () => { '', ].join('\n'), ).toMatchFileSnapshot( - path.resolve(__dirname, 'fixtures-without-babel-support.shot'), + path.join(__dirname, 'fixtures-without-babel-support.shot'), ); }); }); diff --git a/packages/ast-spec/tests/util/parsers/babel.ts b/packages/ast-spec/tests/util/parsers/babel.ts index 26a62a576c1d..0722755180ac 100644 --- a/packages/ast-spec/tests/util/parsers/babel.ts +++ b/packages/ast-spec/tests/util/parsers/babel.ts @@ -2,9 +2,9 @@ import type { ParserOptions } from '@babel/core'; import { parse } from '@babel/eslint-parser'; -import type { Fixture, ParserResponse } from './parser-types'; +import type { Fixture, ParserResponse } from './parser-types.js'; -import { ParserResponseType } from './parser-types'; +import { ParserResponseType } from './parser-types.js'; const PLUGINS: NonNullable = [ 'decoratorAutoAccessors', @@ -17,14 +17,16 @@ const PLUGINS: NonNullable = [ 'typescript', ]; -export function parseBabel(fixture: Fixture, contents: string): ParserResponse { +export function parseBabel( + fixture: Pick, +): ParserResponse { const plugins = [...PLUGINS]; if (fixture.isJSX) { plugins.push('jsx'); } try { - const result = parse(contents, { + const result = parse(fixture.contents, { allowImportExportEverywhere: true, babelOptions: { parserOpts: { @@ -37,12 +39,12 @@ export function parseBabel(fixture: Fixture, contents: string): ParserResponse { requireConfigFile: false, sourceType: 'unambiguous', }); - const { comments: __, tokens: _, ...program } = result; + const { comments: __, tokens, ...ast } = result; return { - ast: program, + ast, error: 'NO ERROR', - tokens: result.tokens, + tokens, type: ParserResponseType.NoError, }; } catch (error: unknown) { diff --git a/packages/ast-spec/tests/util/parsers/parser-types.ts b/packages/ast-spec/tests/util/parsers/parser-types.ts index abf156a95ba3..e1d382876654 100644 --- a/packages/ast-spec/tests/util/parsers/parser-types.ts +++ b/packages/ast-spec/tests/util/parsers/parser-types.ts @@ -28,13 +28,19 @@ export interface ASTFixtureConfig { export interface Fixture { readonly absolute: string; + readonly babelParsed: ParserResponse; readonly config: ASTFixtureConfig; + readonly contents: string; + readonly errorLabel: ErrorLabel; readonly ext: string; + readonly isBabelError: boolean; readonly isError: boolean; readonly isJSX: boolean; + readonly isTSESTreeError: boolean; readonly name: string; readonly relative: string; readonly segments: string[]; + readonly TSESTreeParsed: ParserResponse; readonly snapshotFiles: { readonly error: { readonly alignment: SnapshotPathFn; @@ -48,6 +54,14 @@ export interface Fixture { }; }; readonly snapshotPath: string; + readonly vitestSnapshotHeader: string; +} + +export enum ErrorLabel { + Babel = "Babel errored but TSESTree didn't", + Both = 'Both errored', + None = 'No errors', + TSESTree = "TSESTree errored but Babel didn't", } export enum ParserResponseType { diff --git a/packages/ast-spec/tests/util/parsers/typescript-estree.ts b/packages/ast-spec/tests/util/parsers/typescript-estree.ts index c3cdb6e14193..c2071f67babc 100644 --- a/packages/ast-spec/tests/util/parsers/typescript-estree.ts +++ b/packages/ast-spec/tests/util/parsers/typescript-estree.ts @@ -1,28 +1,27 @@ -import type { Fixture, ParserResponse } from './parser-types'; +import type { Fixture, ParserResponse } from './parser-types.js'; -import { ParserResponseType } from './parser-types'; -import { parse } from './typescript-estree-import'; +import { ParserResponseType } from './parser-types.js'; +import { parse } from './typescript-estree-import.js'; export function parseTSESTree( - fixture: Fixture, - contents: string, + fixture: Pick, ): ParserResponse { try { - const result = parse(contents, { + const result = parse(fixture.contents, { allowInvalidAST: fixture.config.allowInvalidAST, comment: false, - jsx: fixture.ext.endsWith('x'), + jsx: fixture.isJSX, loc: true, range: true, suppressDeprecatedPropertyWarnings: true, tokens: true, }); - const { comments: __, tokens: _, ...program } = result; + const { comments: __, tokens, ...ast } = result; return { - ast: program, + ast, error: 'NO ERROR', - tokens: result.tokens, + tokens, type: ParserResponseType.NoError, }; } catch (error: unknown) { diff --git a/packages/ast-spec/tests/util/serializers/Node.ts b/packages/ast-spec/tests/util/serializers/Node.ts index 56714855b510..9e4d8c3c77cb 100644 --- a/packages/ast-spec/tests/util/serializers/Node.ts +++ b/packages/ast-spec/tests/util/serializers/Node.ts @@ -1,8 +1,8 @@ import type { NewPlugin } from '@vitest/pretty-format'; -import type * as TSESTree from '../../../src'; +import type * as TSESTree from '../../../src/index.js'; -import { AST_NODE_TYPES } from '../../../src'; +import { AST_NODE_TYPES } from '../../../src/index.js'; function sortKeys( node: Node, @@ -48,9 +48,7 @@ export const serializer: NewPlugin = { printer, ) { const keys = sortKeys(node); - const type = node.type; - const loc = node.loc; - const range = node.range; + const { loc, range, type } = node; const outputLines = []; const childIndentation = indentation + config.indent; diff --git a/packages/ast-spec/tests/util/snapshot-diff.ts b/packages/ast-spec/tests/util/snapshot-diff.ts index dd3a0fa22788..28a9c1e7736f 100644 --- a/packages/ast-spec/tests/util/snapshot-diff.ts +++ b/packages/ast-spec/tests/util/snapshot-diff.ts @@ -1,8 +1,8 @@ import { format } from '@vitest/pretty-format'; import { diff } from '@vitest/utils/diff'; -import * as NodeSerializer from './serializers/Node'; -import * as StringSerializer from './serializers/string'; +import * as NodeSerializer from './serializers/Node.js'; +import * as StringSerializer from './serializers/string.js'; function identity(value: T): T { return value; From 872a9f681fc4d1c78330cfff32dc373f00157ea8 Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Thu, 8 May 2025 14:53:37 -0500 Subject: [PATCH 7/8] use the `async` version of `glob` --- packages/ast-spec/tests/fixtures.test.ts | 129 +++++++++++------------ 1 file changed, 64 insertions(+), 65 deletions(-) diff --git a/packages/ast-spec/tests/fixtures.test.ts b/packages/ast-spec/tests/fixtures.test.ts index f5ab1d3844e0..4884cd9448ed 100644 --- a/packages/ast-spec/tests/fixtures.test.ts +++ b/packages/ast-spec/tests/fixtures.test.ts @@ -1,4 +1,4 @@ -import * as glob from 'glob'; +import { glob } from 'glob'; import * as fs from 'node:fs/promises'; import * as path from 'node:path'; import { pathToFileURL } from 'node:url'; @@ -21,8 +21,8 @@ const SRC_DIR = path.join(PACKAGE_ROOT, 'src'); // prettier-ignore const ONLY = [].join(path.sep); -const fixturesWithASTDifferences = new Set(); -const fixturesWithTokenDifferences = new Set(); +const fixturesWithASTDifferences = new Map(); +const fixturesWithTokenDifferences = new Map(); const fixturesConfiguredToExpectBabelToNotSupport = new Map(); const fixturesWithErrorDifferences = { @@ -30,28 +30,24 @@ const fixturesWithErrorDifferences = { [ErrorLabel.TSESTree]: new Set(), } as const; -const VALID_FIXTURES: readonly string[] = glob.sync( - `**/fixtures/*/fixture.{ts,tsx}`, - { - absolute: true, - cwd: SRC_DIR, - }, -); -const ERROR_FIXTURES: readonly string[] = glob.sync( - `**/fixtures/_error_/*/fixture.{ts,tsx}`, - { - absolute: true, - cwd: SRC_DIR, - }, -); - describe('AST Fixtures', async () => { + const VALID_FIXTURES = await glob( + ['**/fixtures/*/fixture.ts?(x)', '**/fixtures/_error_/*/fixture.ts?(x)'], + { + absolute: true, + cwd: SRC_DIR, + }, + ); + const FIXTURES: readonly Fixture[] = await Promise.all( - [...VALID_FIXTURES, ...ERROR_FIXTURES].map(async absolute => { + VALID_FIXTURES.map(async absolute => { const relativeToSrc = path.relative(SRC_DIR, absolute); const { base, dir, ext } = path.parse(relativeToSrc); const directorySegments = dir.split(path.sep); - const segments = directorySegments.filter(s => s !== 'fixtures'); + const segments = directorySegments.filter( + segment => segment !== 'fixtures', + ); + const name = segments.pop(); assert.isDefined(name); @@ -138,11 +134,11 @@ describe('AST Fixtures', async () => { ); if (diffHasChanges(diffAstResult)) { - fixturesWithASTDifferences.add(relative); + fixturesWithASTDifferences.set(relative, diffAstResult); } if (diffHasChanges(diffTokensResult)) { - fixturesWithTokenDifferences.add(relative); + fixturesWithTokenDifferences.set(relative, diffTokensResult); } } @@ -212,6 +208,7 @@ describe('AST Fixtures', async () => { contents, errorLabel, isError, + relative, snapshotFiles, TSESTreeParsed, vitestSnapshotHeader, @@ -255,6 +252,7 @@ describe('AST Fixtures', async () => { it.skipIf(isError)('TSESTree - AST', async () => { assert.isSuccessResponse(TSESTreeParsed); + await expect(TSESTreeParsed.ast).toMatchFileSnapshot( snapshotFiles.success.tsestree.ast(1), ); @@ -262,6 +260,7 @@ describe('AST Fixtures', async () => { it.skipIf(isError)('TSESTree - Tokens', async () => { assert.isSuccessResponse(TSESTreeParsed); + await expect(TSESTreeParsed.tokens).toMatchFileSnapshot( snapshotFiles.success.tsestree.tokens(2), ); @@ -292,6 +291,7 @@ describe('AST Fixtures', async () => { 'Babel - AST', async () => { assert.isSuccessResponse(babelParsed); + await expect(babelParsed.ast).toMatchFileSnapshot( snapshotFiles.success.babel.ast(3), ); @@ -302,53 +302,48 @@ describe('AST Fixtures', async () => { 'Babel - Tokens', async () => { assert.isSuccessResponse(babelParsed); + await expect(babelParsed.tokens).toMatchFileSnapshot( snapshotFiles.success.babel.tokens(4), ); }, ); - it.skipIf(isError || hasExpectBabelToNotSupport)( - 'AST Alignment - AST', - async () => { - assert.isSuccessResponse(TSESTreeParsed); - assert.isSuccessResponse(babelParsed); - const diffResult = snapshotDiff( - 'TSESTree', - TSESTreeParsed.ast, - 'Babel', - babelParsed.ast, - ); - await expect( - [ - `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, - diffResult, - '', - ].join('\n'), - ).toMatchFileSnapshot(snapshotFiles.success.alignment.ast(5)); - }, - ); + it.skipIf( + isError || + hasExpectBabelToNotSupport || + !fixturesWithASTDifferences.has(relative), + )('AST Alignment - AST', async () => { + const diffResult = fixturesWithASTDifferences.get(relative); - it.skipIf(isError || hasExpectBabelToNotSupport)( - 'AST Alignment - Token', - async () => { - assert.isSuccessResponse(TSESTreeParsed); - assert.isSuccessResponse(babelParsed); - const diffResult = snapshotDiff( - 'TSESTree', - TSESTreeParsed.tokens, - 'Babel', - babelParsed.tokens, - ); - await expect( - [ - `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, - diffResult, - '', - ].join('\n'), - ).toMatchFileSnapshot(snapshotFiles.success.alignment.tokens(6)); - }, - ); + assert.isDefined(diffResult); + + await expect( + [ + `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, + diffResult, + '', + ].join('\n'), + ).toMatchFileSnapshot(snapshotFiles.success.alignment.ast(5)); + }); + + it.skipIf( + isError || + hasExpectBabelToNotSupport || + !fixturesWithTokenDifferences.has(relative), + )('AST Alignment - Token', async () => { + const diffResult = fixturesWithTokenDifferences.get(relative); + + assert.isDefined(diffResult); + + await expect( + [ + `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, + diffResult, + '', + ].join('\n'), + ).toMatchFileSnapshot(snapshotFiles.success.alignment.tokens(6)); + }); it.skipIf(isError)('Should parse with no errors', () => { // log the error for debug purposes in case there wasn't supposed to be an error @@ -376,7 +371,7 @@ describe('AST Fixtures', async () => { break; } - // NOTE - the comments below exist so that they show up in the stack trace jest shows + // NOTE - the comments below exist so that they show up in the stack trace vitest shows // when the test fails. Yes, sadly, they're duplicated, but it's necessary to // provide the best and most understandable DevX that we can here. // Vitest will print a code frame with the fail line as well as 2 lines before and after @@ -405,7 +400,7 @@ describe('AST Fixtures', async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, - JSON.stringify([...fixturesWithASTDifferences].sort(), null, 2), + JSON.stringify([...fixturesWithASTDifferences.keys()].sort(), null, 2), '', ].join('\n'), ).toMatchFileSnapshot( @@ -417,7 +412,11 @@ describe('AST Fixtures', async () => { await expect( [ `${vitestSnapshotHeader}\n\nexports[\`${expect.getState().currentTestName}\`]`, - JSON.stringify([...fixturesWithTokenDifferences].sort(), null, 2), + JSON.stringify( + [...fixturesWithTokenDifferences.keys()].sort(), + null, + 2, + ), '', ].join('\n'), ).toMatchFileSnapshot( From 4f930d1c388e904fd73b68023d6e1fac189018ea Mon Sep 17 00:00:00 2001 From: Arya Emami Date: Thu, 8 May 2025 23:01:49 -0500 Subject: [PATCH 8/8] add `getErrorLabel` --- packages/ast-spec/tests/fixtures.test.ts | 60 +++++++++---------- packages/ast-spec/tests/util/getErrorLabel.ts | 30 ++++++++++ .../ast-spec/tests/util/serializers/Node.ts | 2 +- 3 files changed, 61 insertions(+), 31 deletions(-) create mode 100644 packages/ast-spec/tests/util/getErrorLabel.ts diff --git a/packages/ast-spec/tests/fixtures.test.ts b/packages/ast-spec/tests/fixtures.test.ts index 4884cd9448ed..0660b3df3a7c 100644 --- a/packages/ast-spec/tests/fixtures.test.ts +++ b/packages/ast-spec/tests/fixtures.test.ts @@ -6,6 +6,7 @@ import { VitestSnapshotEnvironment } from 'vitest/snapshot'; import type { ASTFixtureConfig, Fixture } from './util/parsers/parser-types.js'; +import { getErrorLabel } from './util/getErrorLabel.js'; import { parseBabel } from './util/parsers/babel.js'; import { ErrorLabel, ParserResponseType } from './util/parsers/parser-types.js'; import { parseTSESTree } from './util/parsers/typescript-estree.js'; @@ -86,20 +87,7 @@ describe('AST Fixtures', async () => { const isBabelError = babelParsed.type === ParserResponseType.Error; const isTSESTreeError = TSESTreeParsed.type === ParserResponseType.Error; - const getErrorLabel = (): ErrorLabel => { - if (!isBabelError && isTSESTreeError) { - return ErrorLabel.TSESTree; - } - if (isBabelError && !isTSESTreeError) { - return ErrorLabel.Babel; - } - if (isBabelError && isTSESTreeError) { - return ErrorLabel.Both; - } - return ErrorLabel.None; - }; - - const errorLabel = getErrorLabel(); + const errorLabel = getErrorLabel(isBabelError, isTSESTreeError); if ( errorLabel === ErrorLabel.TSESTree || @@ -159,33 +147,48 @@ describe('AST Fixtures', async () => { snapshotFiles: { error: { alignment: (i: number) => - path.join(snapshotPath, `${i}-Alignment-Error.shot`), + path.join(snapshotPath, `${i.toString()}-Alignment-Error.shot`), + babel: (i: number) => - path.join(snapshotPath, `${i}-Babel-Error.shot`), + path.join(snapshotPath, `${i.toString()}-Babel-Error.shot`), + tsestree: (i: number) => - path.join(snapshotPath, `${i}-TSESTree-Error.shot`), + path.join(snapshotPath, `${i.toString()}-TSESTree-Error.shot`), }, + success: { alignment: { ast: (i: number) => - path.join(snapshotPath, `${i}-AST-Alignment-AST.shot`), + path.join( + snapshotPath, + `${i.toString()}-AST-Alignment-AST.shot`, + ), + tokens: (i: number) => - path.join(snapshotPath, `${i}-AST-Alignment-Tokens.shot`), + path.join( + snapshotPath, + `${i.toString()}-AST-Alignment-Tokens.shot`, + ), }, + babel: { ast: (i: number) => - path.join(snapshotPath, `${i}-Babel-AST.shot`), + path.join(snapshotPath, `${i.toString()}-Babel-AST.shot`), + tokens: (i: number) => - path.join(snapshotPath, `${i}-Babel-Tokens.shot`), + path.join(snapshotPath, `${i.toString()}-Babel-Tokens.shot`), }, + tsestree: { ast: (i: number) => - path.join(snapshotPath, `${i}-TSESTree-AST.shot`), + path.join(snapshotPath, `${i.toString()}-TSESTree-AST.shot`), + tokens: (i: number) => - path.join(snapshotPath, `${i}-TSESTree-Tokens.shot`), + path.join(snapshotPath, `${i.toString()}-TSESTree-Tokens.shot`), }, }, }, + snapshotPath, TSESTreeParsed, vitestSnapshotHeader, @@ -346,20 +349,17 @@ describe('AST Fixtures', async () => { }); it.skipIf(isError)('Should parse with no errors', () => { - // log the error for debug purposes in case there wasn't supposed to be an error switch (errorLabel) { case ErrorLabel.Babel: assert.isErrorResponse(babelParsed); - if (config.expectBabelToNotSupport == null) { - console.error('Babel:\n', babelParsed.error); - } + break; case ErrorLabel.Both: assert.isErrorResponse(babelParsed); + assert.isErrorResponse(TSESTreeParsed); - console.error('Babel:\n', babelParsed.error); - console.error('TSESTree:\n', TSESTreeParsed.error); + break; case ErrorLabel.None: @@ -367,7 +367,7 @@ describe('AST Fixtures', async () => { case ErrorLabel.TSESTree: assert.isErrorResponse(TSESTreeParsed); - console.error('TSESTree:\n', TSESTreeParsed.error); + break; } diff --git a/packages/ast-spec/tests/util/getErrorLabel.ts b/packages/ast-spec/tests/util/getErrorLabel.ts new file mode 100644 index 000000000000..8f42700d1e69 --- /dev/null +++ b/packages/ast-spec/tests/util/getErrorLabel.ts @@ -0,0 +1,30 @@ +import { ErrorLabel } from './parsers/parser-types.js'; + +/** + * Get the {@linkcode ErrorLabel | error label} based on the error types. + * + * @param isBabelError - Indicates if the error is from **Babel**. + * @param isTSESTreeError - Indicates if the error is from **TSESTree**. + * @returns The corresponding {@linkcode ErrorLabel | error label}. + * + * @internal + * @since 8.32.0 + */ +export const getErrorLabel = ( + isBabelError: boolean, + isTSESTreeError: boolean, +): ErrorLabel => { + if (!isBabelError && isTSESTreeError) { + return ErrorLabel.TSESTree; + } + + if (isBabelError && !isTSESTreeError) { + return ErrorLabel.Babel; + } + + if (isBabelError && isTSESTreeError) { + return ErrorLabel.Both; + } + + return ErrorLabel.None; +}; diff --git a/packages/ast-spec/tests/util/serializers/Node.ts b/packages/ast-spec/tests/util/serializers/Node.ts index 9e4d8c3c77cb..cd3aa210a00a 100644 --- a/packages/ast-spec/tests/util/serializers/Node.ts +++ b/packages/ast-spec/tests/util/serializers/Node.ts @@ -28,7 +28,7 @@ function sortKeys( } function stringifyLineAndColumn(loc: TSESTree.Position): string { - return `{ column: ${loc.column}, line: ${loc.line} }`; + return `{ column: ${loc.column.toString()}, line: ${loc.line.toString()} }`; } function isObject(val: unknown): val is Record {