From 5108f41ac12a26ab5bd8b293cf7382509aa106e0 Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger Date: Wed, 30 Oct 2024 14:31:56 -0600 Subject: [PATCH 1/7] update eslint version internally to latest --- .github/renovate.json5 | 2 - package.json | 3 +- packages/eslint-plugin/package.json | 2 +- packages/website-eslint/package.json | 2 +- packages/website/package.json | 2 +- yarn.lock | 169 +++++++++++++++++++-------- 6 files changed, 125 insertions(+), 55 deletions(-) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index b1a585e0cbe6..35ff3088230d 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -11,8 +11,6 @@ 'ajv', // ESM only so we can't go higher until we natively run ESM internally. 'globby', - // Blocked until we enable ESLint v9 locally in our own PR (#9119). - 'eslint', // ESM only so we can't go higher until we natively run ESM internally. 'execa', ], diff --git a/package.json b/package.json index 48548cd247b9..cf83f8e5d07f 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "cross-fetch": "^4.0.0", "cspell": "^8.15.2", "downlevel-dts": ">=0.11.0", - "eslint": "^9.3.0", + "eslint": "^9.13.0", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-eslint-plugin": "^6.2.0", "eslint-plugin-import": "^2.29.1", @@ -137,7 +137,6 @@ "@types/estree": "link:./tools/dummypkg", "@types/node": "^20.0.0", "@types/react": "^18.2.14", - "eslint": "^9", "eslint-plugin-eslint-plugin@^5.5.0": "patch:eslint-plugin-eslint-plugin@npm%3A5.5.1#./.yarn/patches/eslint-plugin-eslint-plugin-npm-5.5.1-4206c2506d.patch", "eslint-visitor-keys": "^3.4.1", "jest-config": "^29", diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index 3ec48b893710..3d01ba6a77ea 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -80,7 +80,7 @@ "ajv": "^6.12.6", "cross-env": "^7.0.3", "cross-fetch": "*", - "eslint": "*", + "eslint": "^9.13.0", "jest": "29.7.0", "jest-specific-snapshot": "^8.0.0", "json-schema": "*", diff --git a/packages/website-eslint/package.json b/packages/website-eslint/package.json index 29dbea9a6d6c..b8387308bf40 100644 --- a/packages/website-eslint/package.json +++ b/packages/website-eslint/package.json @@ -29,7 +29,7 @@ "@typescript-eslint/typescript-estree": "workspace:*", "@typescript-eslint/visitor-keys": "workspace:*", "esbuild": "~0.24.0", - "eslint": "*", + "eslint": "^9.13.0", "esquery": "*", "prettier": "^3.2.5", "tsx": "*" diff --git a/packages/website/package.json b/packages/website/package.json index 55d3897cfbff..1fba9cef079b 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -27,7 +27,7 @@ "@uiw/react-shields": "2.0.1", "clsx": "^2.1.0", "docusaurus-plugin-typedoc": "^1.0.1", - "eslint": "*", + "eslint": "^9.13.0", "json5": "^2.2.3", "konamimojisplosion": "^0.5.2", "lz-string": "^1.5.0", diff --git a/yarn.lock b/yarn.lock index 942816da076c..cb1dc9513fbd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3383,13 +3383,20 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1, @eslint-community/regexpp@npm:^4.8.0, @eslint-community/regexpp@npm:^4.9.1": +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.8.0, @eslint-community/regexpp@npm:^4.9.1": version: 4.11.0 resolution: "@eslint-community/regexpp@npm:4.11.0" checksum: 97d2fe46690b69417a551bd19a3dc53b6d9590d2295c43cc4c4e44e64131af541e2f4a44d5c12e87de990403654d3dae9d33600081f3a2f0386b368abc9111ec languageName: node linkType: hard +"@eslint-community/regexpp@npm:^4.11.0": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 + languageName: node + linkType: hard + "@eslint/compat@npm:^1.0.1": version: 1.2.0 resolution: "@eslint/compat@npm:1.2.0" @@ -3402,6 +3409,24 @@ __metadata: languageName: node linkType: hard +"@eslint/config-array@npm:^0.18.0": + version: 0.18.0 + resolution: "@eslint/config-array@npm:0.18.0" + dependencies: + "@eslint/object-schema": ^2.1.4 + debug: ^4.3.1 + minimatch: ^3.1.2 + checksum: 5ff748e1788745bfb3160c3b3151d62a7c054e336e9fe8069e86cfa6106f3abbd59b24f1253122268295f98c66803e9a7b23d7f947a8c00f62d2060cc44bc7fc + languageName: node + linkType: hard + +"@eslint/core@npm:^0.7.0": + version: 0.7.0 + resolution: "@eslint/core@npm:0.7.0" + checksum: 91d4aa2805f356fb0bba693411deab91590472666e22c9c03304ba03b288b74403a5e120db16d0926ea94281e15563a8d4d519cd1e565d514e2d5015a84b8575 + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^2.1.4": version: 2.1.4 resolution: "@eslint/eslintrc@npm:2.1.4" @@ -3443,10 +3468,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.3.0": - version: 9.3.0 - resolution: "@eslint/js@npm:9.3.0" - checksum: 5af317c8bcfef660efc17624b825c71bac16770f8866bfdc2922e1fcc2010af96e4f896e91724b81550e5dba6db6983c221b5be9a1294c9e727dee9ada15c9f8 +"@eslint/js@npm:9.13.0": + version: 9.13.0 + resolution: "@eslint/js@npm:9.13.0" + checksum: ad5dd72aa75bd8d5bd3c1ffe68cf748aed7edef5fcf97193eb52af35dbb89a1999f526a0e2c169ef5572afbbbbb5f37d6fd0af2991d9ccdc29f753da5cc0f532 languageName: node linkType: hard @@ -3457,6 +3482,22 @@ __metadata: languageName: node linkType: hard +"@eslint/object-schema@npm:^2.1.4": + version: 2.1.4 + resolution: "@eslint/object-schema@npm:2.1.4" + checksum: 5a03094115bcdab7991dbbc5d17a9713f394cebb4b44d3eaf990d7487b9b8e1877b817997334ab40be52e299a0384595c6f6ba91b389901e5e1d21efda779271 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.2.0": + version: 0.2.2 + resolution: "@eslint/plugin-kit@npm:0.2.2" + dependencies: + levn: ^0.4.1 + checksum: 08935d81f59f8b2ccc6df1e2517684d6cb9911390e210dacd861be60a000224b0b2f5aa9364ff78e4b14152d1d777aa621f587479aae07d0670b2e14a5a18ef6 + languageName: node + linkType: hard + "@fastify/busboy@npm:^2.0.0": version: 2.0.0 resolution: "@fastify/busboy@npm:2.0.0" @@ -3480,14 +3521,20 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.13.0": - version: 0.13.0 - resolution: "@humanwhocodes/config-array@npm:0.13.0" +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 611e0545146f55ddfdd5c20239cfb7911f9d0e28258787c4fc1a1f6214250830c9367aaaeace0096ed90b6739bee1e9c52ad5ba8adaf74ab8b449119303babfe + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.5": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" dependencies: - "@humanwhocodes/object-schema": ^2.0.3 - debug: ^4.3.1 - minimatch: ^3.0.5 - checksum: eae69ff9134025dd2924f0b430eb324981494be26f0fddd267a33c28711c4db643242cf9fddf7dadb9d16c96b54b2d2c073e60a56477df86e0173149313bd5d6 + "@humanfs/core": ^0.19.1 + "@humanwhocodes/retry": ^0.3.0 + checksum: f9cb52bb235f8b9c6fcff43a7e500669a38f8d6ce26593404a9b56365a1644e0ed60c720dc65ff6a696b1f85f3563ab055bb554ec8674f2559085ba840e47710 languageName: node linkType: hard @@ -3498,13 +3545,6 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: d3b78f6c5831888c6ecc899df0d03bcc25d46f3ad26a11d7ea52944dc36a35ef543fad965322174238d677a43d5c694434f6607532cff7077062513ad7022631 - languageName: node - linkType: hard - "@humanwhocodes/retry@npm:^0.3.0": version: 0.3.0 resolution: "@humanwhocodes/retry@npm:0.3.0" @@ -3512,6 +3552,13 @@ __metadata: languageName: node linkType: hard +"@humanwhocodes/retry@npm:^0.3.1": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 7e5517bb51dbea3e02ab6cacef59a8f4b0ca023fc4b0b8cbc40de0ad29f46edd50b897c6e7fba79366a0217e3f48e2da8975056f6c35cfe19d9cc48f1d03c1dd + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -3987,7 +4034,7 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:1.2.8, @nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:1.2.8, @nodelib/fs.walk@npm:^1.2.3": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -5252,7 +5299,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 @@ -5626,7 +5673,7 @@ __metadata: ajv: ^6.12.6 cross-env: ^7.0.3 cross-fetch: "*" - eslint: "*" + eslint: ^9.13.0 graphemer: ^1.4.0 ignore: ^5.3.1 jest: 29.7.0 @@ -5843,7 +5890,7 @@ __metadata: cross-fetch: ^4.0.0 cspell: ^8.15.2 downlevel-dts: ">=0.11.0" - eslint: ^9.3.0 + eslint: ^9.13.0 eslint-plugin-eslint-comments: ^3.2.0 eslint-plugin-eslint-plugin: ^6.2.0 eslint-plugin-import: ^2.29.1 @@ -5997,7 +6044,7 @@ __metadata: "@typescript-eslint/typescript-estree": "workspace:*" "@typescript-eslint/visitor-keys": "workspace:*" esbuild: ~0.24.0 - eslint: "*" + eslint: ^9.13.0 esquery: "*" prettier: ^3.2.5 tsx: "*" @@ -6268,6 +6315,15 @@ __metadata: languageName: node linkType: hard +"acorn@npm:^8.14.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" + bin: + acorn: bin/acorn + checksum: 8755074ba55fff94e84e81c72f1013c2d9c78e973c31231c8ae505a5f966859baf654bddd75046bffd73ce816b149298977fff5077a3033dedba0ae2aad152d4 + languageName: node + linkType: hard + "address@npm:^1.0.1, address@npm:^1.1.2": version: 1.1.2 resolution: "address@npm:1.1.2" @@ -9977,13 +10033,13 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^8.0.1": - version: 8.0.1 - resolution: "eslint-scope@npm:8.0.1" +"eslint-scope@npm:^8.1.0": + version: 8.2.0 + resolution: "eslint-scope@npm:8.2.0" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: 67a5a39312dadb8c9a677df0f2e8add8daf15280b08bfe07f898d5347ee2d7cd2a1f5c2760f34e46e8f5f13f7192f47c2c10abe676bfa4173ae5539365551940 + checksum: 750eff4672ca2bf274ec0d1bbeae08aadd53c1907d5c6aff5564d8e047a5f49afa8ae6eee333cab637fd3ebcab2141659d8f2f040f6fdc982b0f61f8bf03136f languageName: node linkType: hard @@ -9994,27 +10050,31 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^9": - version: 9.3.0 - resolution: "eslint@npm:9.3.0" +"eslint@npm:^9.13.0": + version: 9.13.0 + resolution: "eslint@npm:9.13.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 - "@eslint-community/regexpp": ^4.6.1 + "@eslint-community/regexpp": ^4.11.0 + "@eslint/config-array": ^0.18.0 + "@eslint/core": ^0.7.0 "@eslint/eslintrc": ^3.1.0 - "@eslint/js": 9.3.0 - "@humanwhocodes/config-array": ^0.13.0 + "@eslint/js": 9.13.0 + "@eslint/plugin-kit": ^0.2.0 + "@humanfs/node": ^0.16.5 "@humanwhocodes/module-importer": ^1.0.1 - "@humanwhocodes/retry": ^0.3.0 - "@nodelib/fs.walk": ^1.2.8 + "@humanwhocodes/retry": ^0.3.1 + "@types/estree": ^1.0.6 + "@types/json-schema": ^7.0.15 ajv: ^6.12.4 chalk: ^4.0.0 cross-spawn: ^7.0.2 debug: ^4.3.2 escape-string-regexp: ^4.0.0 - eslint-scope: ^8.0.1 - eslint-visitor-keys: ^4.0.0 - espree: ^10.0.1 - esquery: ^1.4.2 + eslint-scope: ^8.1.0 + eslint-visitor-keys: ^4.1.0 + espree: ^10.2.0 + esquery: ^1.5.0 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 file-entry-cache: ^8.0.0 @@ -10023,18 +10083,20 @@ __metadata: ignore: ^5.2.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 - is-path-inside: ^3.0.3 json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 lodash.merge: ^4.6.2 minimatch: ^3.1.2 natural-compare: ^1.4.0 optionator: ^0.9.3 - strip-ansi: ^6.0.1 text-table: ^0.2.0 + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true bin: eslint: bin/eslint.js - checksum: c6d1eb8b4b064470a99f0d927b0d2b88f1947d7e871761b43b84e6c9b6464db4f6ebbb868f7196a45d2589978b09919a8807d200e3b1640d0a9cd245c9504707 + checksum: 99e878d6883864b8361bfaf2a2304f1e133347ac19976c79e1430623cd311cb38253bbd122100788082eded947693cce5c7e67dfd2b5173e6f05edb92dcb2206 languageName: node linkType: hard @@ -10049,6 +10111,17 @@ __metadata: languageName: node linkType: hard +"espree@npm:^10.2.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" + dependencies: + acorn: ^8.14.0 + acorn-jsx: ^5.3.2 + eslint-visitor-keys: ^4.2.0 + checksum: 63e8030ff5a98cea7f8b3e3a1487c998665e28d674af08b9b3100ed991670eb3cbb0e308c4548c79e03762753838fbe530c783f17309450d6b47a889fee72bef + languageName: node + linkType: hard + "espree@npm:^9.6.0": version: 9.6.1 resolution: "espree@npm:9.6.1" @@ -10070,7 +10143,7 @@ __metadata: languageName: node linkType: hard -"esquery@npm:*, esquery@npm:^1.4.0, esquery@npm:^1.4.2, esquery@npm:^1.5.0": +"esquery@npm:*, esquery@npm:^1.4.0, esquery@npm:^1.5.0": version: 1.6.0 resolution: "esquery@npm:1.6.0" dependencies: @@ -12420,7 +12493,7 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": +"is-path-inside@npm:^3.0.2": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 @@ -15000,7 +15073,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": +"minimatch@npm:3.1.2, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -20295,7 +20368,7 @@ __metadata: copy-webpack-plugin: ^12.0.0 cross-fetch: "*" docusaurus-plugin-typedoc: ^1.0.1 - eslint: "*" + eslint: ^9.13.0 history: ^4.9.0 json5: ^2.2.3 konamimojisplosion: ^0.5.2 From 283694e21184e483b44d9266fa77eac361b3f243 Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger Date: Wed, 30 Oct 2024 17:48:17 -0600 Subject: [PATCH 2/7] prettier huh --- .../rules/no-useless-constructor.test.ts | 80 +++++++++++++++---- .../eslint-plugin/typings/eslint-rules.d.ts | 2 +- 2 files changed, 67 insertions(+), 15 deletions(-) diff --git a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts index a49055b6c0d9..5695127b404b 100644 --- a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts +++ b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts @@ -5,11 +5,6 @@ import rule from '../../src/rules/no-useless-constructor'; const ruleTester = new RuleTester(); -const error = { - messageId: 'noUselessConstructor' as const, - type: AST_NODE_TYPES.MethodDefinition, -}; - ruleTester.run('no-useless-constructor', rule, { valid: [ 'class A {}', @@ -220,7 +215,24 @@ class A { constructor() {} } `, - errors: [error], + errors: [ + { + line: 3, + messageId: 'noUselessConstructor', + suggestions: [ + { + messageId: 'removeConstructor', + output: ` +class A { + +} + `, + }, + ], + type: AST_NODE_TYPES.MethodDefinition, + }, + ], + only: true, }, { code: ` @@ -230,7 +242,12 @@ class A extends B { } } `, - errors: [error], + errors: [ + { + messageId: 'noUselessConstructor', + type: AST_NODE_TYPES.MethodDefinition, + }, + ], }, { code: ` @@ -240,7 +257,12 @@ class A extends B { } } `, - errors: [error], + errors: [ + { + messageId: 'noUselessConstructor', + type: AST_NODE_TYPES.MethodDefinition, + }, + ], }, { code: ` @@ -250,7 +272,12 @@ class A extends B { } } `, - errors: [error], + errors: [ + { + messageId: 'noUselessConstructor', + type: AST_NODE_TYPES.MethodDefinition, + }, + ], }, { code: ` @@ -260,7 +287,12 @@ class A extends B { } } `, - errors: [error], + errors: [ + { + messageId: 'noUselessConstructor', + type: AST_NODE_TYPES.MethodDefinition, + }, + ], }, { code: ` @@ -270,7 +302,12 @@ class A extends B.C { } } `, - errors: [error], + errors: [ + { + messageId: 'noUselessConstructor', + type: AST_NODE_TYPES.MethodDefinition, + }, + ], }, { code: ` @@ -280,7 +317,12 @@ class A extends B { } } `, - errors: [error], + errors: [ + { + messageId: 'noUselessConstructor', + type: AST_NODE_TYPES.MethodDefinition, + }, + ], }, { code: ` @@ -290,7 +332,12 @@ class A extends B { } } `, - errors: [error], + errors: [ + { + messageId: 'noUselessConstructor', + type: AST_NODE_TYPES.MethodDefinition, + }, + ], }, { code: ` @@ -298,7 +345,12 @@ class A { public constructor() {} } `, - errors: [error], + errors: [ + { + messageId: 'noUselessConstructor', + type: AST_NODE_TYPES.MethodDefinition, + }, + ], }, ], }); diff --git a/packages/eslint-plugin/typings/eslint-rules.d.ts b/packages/eslint-plugin/typings/eslint-rules.d.ts index 557a6eece2f4..a946d3365a55 100644 --- a/packages/eslint-plugin/typings/eslint-rules.d.ts +++ b/packages/eslint-plugin/typings/eslint-rules.d.ts @@ -404,7 +404,7 @@ declare module 'eslint/lib/rules/no-useless-constructor' { import type { TSESLint, TSESTree } from '@typescript-eslint/utils'; const rule: TSESLint.RuleModule< - 'noUselessConstructor', + 'noUselessConstructor' | 'removeConstructor', [], unknown, { From 8711df00b6dccc066f53324bf06cd53d9a9302c9 Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger Date: Wed, 30 Oct 2024 18:02:23 -0600 Subject: [PATCH 3/7] stop trimming whitespace --- .editorconfig | 3 ++- .vscode/settings.json | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.editorconfig b/.editorconfig index ed19d9c00fd4..41be71070f86 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,5 +6,6 @@ indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true -trim_trailing_whitespace = true +# this breaks test cases, see https://github.com/editorconfig/editorconfig-vscode/issues/359 +trim_trailing_whitespace = false quote_type = single diff --git a/.vscode/settings.json b/.vscode/settings.json index ac5f882cbc0e..9c41fd0f39da 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,8 +12,8 @@ // required to make the extension pickup the flat config "eslint.experimental.useFlatConfig": true, - // When enabled, will trim trailing whitespace when saving a file. - "files.trimTrailingWhitespace": true, + // This breaks test cases, see https://github.com/Microsoft/vscode/issues/52711 + "files.trimTrailingWhitespace": false, // typescript auto-format settings "typescript.tsdk": "node_modules/typescript/lib", From 28ff85b78ac7285ea242c57f15dfe7c096293a2a Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger Date: Wed, 30 Oct 2024 18:08:08 -0600 Subject: [PATCH 4/7] fix no-useless-constructor tests --- .../rules/no-useless-constructor.test.ts | 82 ++++++++++++++++++- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts index 5695127b404b..1a2e50a06594 100644 --- a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts +++ b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts @@ -217,7 +217,6 @@ class A { `, errors: [ { - line: 3, messageId: 'noUselessConstructor', suggestions: [ { @@ -232,7 +231,6 @@ class A { type: AST_NODE_TYPES.MethodDefinition, }, ], - only: true, }, { code: ` @@ -245,6 +243,16 @@ class A extends B { errors: [ { messageId: 'noUselessConstructor', + suggestions: [ + { + messageId: 'removeConstructor', + output: ` +class A extends B { + +} + `, + }, + ], type: AST_NODE_TYPES.MethodDefinition, }, ], @@ -260,6 +268,16 @@ class A extends B { errors: [ { messageId: 'noUselessConstructor', + suggestions: [ + { + messageId: 'removeConstructor', + output: ` +class A extends B { + +} + `, + }, + ], type: AST_NODE_TYPES.MethodDefinition, }, ], @@ -275,6 +293,16 @@ class A extends B { errors: [ { messageId: 'noUselessConstructor', + suggestions: [ + { + messageId: 'removeConstructor', + output: ` +class A extends B { + +} + `, + }, + ], type: AST_NODE_TYPES.MethodDefinition, }, ], @@ -290,6 +318,16 @@ class A extends B { errors: [ { messageId: 'noUselessConstructor', + suggestions: [ + { + messageId: 'removeConstructor', + output: ` +class A extends B { + +} + `, + }, + ], type: AST_NODE_TYPES.MethodDefinition, }, ], @@ -305,6 +343,16 @@ class A extends B.C { errors: [ { messageId: 'noUselessConstructor', + suggestions: [ + { + messageId: 'removeConstructor', + output: ` +class A extends B.C { + +} + `, + }, + ], type: AST_NODE_TYPES.MethodDefinition, }, ], @@ -320,6 +368,16 @@ class A extends B { errors: [ { messageId: 'noUselessConstructor', + suggestions: [ + { + messageId: 'removeConstructor', + output: ` +class A extends B { + +} + `, + }, + ], type: AST_NODE_TYPES.MethodDefinition, }, ], @@ -335,6 +393,16 @@ class A extends B { errors: [ { messageId: 'noUselessConstructor', + suggestions: [ + { + messageId: 'removeConstructor', + output: ` +class A extends B { + +} + `, + }, + ], type: AST_NODE_TYPES.MethodDefinition, }, ], @@ -348,6 +416,16 @@ class A { errors: [ { messageId: 'noUselessConstructor', + suggestions: [ + { + messageId: 'removeConstructor', + output: ` +class A { + +} + `, + }, + ], type: AST_NODE_TYPES.MethodDefinition, }, ], From 2d13f239161e384d0aef2a083485efdd6f40ba15 Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger Date: Fri, 1 Nov 2024 12:30:12 -0600 Subject: [PATCH 5/7] snapshots --- .../tests/schema-snapshots/no-restricted-imports.shot | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin/tests/schema-snapshots/no-restricted-imports.shot b/packages/eslint-plugin/tests/schema-snapshots/no-restricted-imports.shot index 7c4fb5932293..c7b4409d0bf0 100644 --- a/packages/eslint-plugin/tests/schema-snapshots/no-restricted-imports.shot +++ b/packages/eslint-plugin/tests/schema-snapshots/no-restricted-imports.shot @@ -147,9 +147,11 @@ exports[`Rule schemas should be convertible to TS types for documentation purpos "message": { "minLength": 1, "type": "string" + }, + "regex": { + "type": "string" } }, - "required": ["group"], "type": "object" }, "type": "array", @@ -202,10 +204,11 @@ type Options = /** Whether to allow type-only imports for a path. */ allowTypeImports?: boolean; caseSensitive?: boolean; - group: [string, ...string[]]; + group?: [string, ...string[]]; importNamePattern?: string; importNames?: [string, ...string[]]; message?: string; + regex?: string; }[] | string[]; }, From d40e887d9fdae06289b815a51a51824cda0ef207 Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger Date: Sun, 3 Nov 2024 10:33:03 -0700 Subject: [PATCH 6/7] make trailing whitespace explicit Co-authored-by: Brad Zacher --- .editorconfig | 3 +-- .vscode/settings.json | 4 ++-- .../tests/rules/no-useless-constructor.test.ts | 18 +++++++++--------- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/.editorconfig b/.editorconfig index 41be71070f86..ed19d9c00fd4 100644 --- a/.editorconfig +++ b/.editorconfig @@ -6,6 +6,5 @@ indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true -# this breaks test cases, see https://github.com/editorconfig/editorconfig-vscode/issues/359 -trim_trailing_whitespace = false +trim_trailing_whitespace = true quote_type = single diff --git a/.vscode/settings.json b/.vscode/settings.json index 9c41fd0f39da..ac5f882cbc0e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,8 +12,8 @@ // required to make the extension pickup the flat config "eslint.experimental.useFlatConfig": true, - // This breaks test cases, see https://github.com/Microsoft/vscode/issues/52711 - "files.trimTrailingWhitespace": false, + // When enabled, will trim trailing whitespace when saving a file. + "files.trimTrailingWhitespace": true, // typescript auto-format settings "typescript.tsdk": "node_modules/typescript/lib", diff --git a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts index 1a2e50a06594..3d792dca4c7e 100644 --- a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts +++ b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts @@ -223,7 +223,7 @@ class A { messageId: 'removeConstructor', output: ` class A { - +${' '} } `, }, @@ -248,7 +248,7 @@ class A extends B { messageId: 'removeConstructor', output: ` class A extends B { - +${' '} } `, }, @@ -273,7 +273,7 @@ class A extends B { messageId: 'removeConstructor', output: ` class A extends B { - +${' '} } `, }, @@ -298,7 +298,7 @@ class A extends B { messageId: 'removeConstructor', output: ` class A extends B { - +${' '} } `, }, @@ -323,7 +323,7 @@ class A extends B { messageId: 'removeConstructor', output: ` class A extends B { - +${' '} } `, }, @@ -348,7 +348,7 @@ class A extends B.C { messageId: 'removeConstructor', output: ` class A extends B.C { - +${' '} } `, }, @@ -373,7 +373,7 @@ class A extends B { messageId: 'removeConstructor', output: ` class A extends B { - +${' '} } `, }, @@ -398,7 +398,7 @@ class A extends B { messageId: 'removeConstructor', output: ` class A extends B { - +${' '} } `, }, @@ -421,7 +421,7 @@ class A { messageId: 'removeConstructor', output: ` class A { - +${' '} } `, }, From 436ff1da5657141b617e1d46851f8173e50d90ea Mon Sep 17 00:00:00 2001 From: Kirk Waiblinger Date: Sun, 3 Nov 2024 10:44:25 -0700 Subject: [PATCH 7/7] make linter happy --- .../eslint-plugin/tests/rules/no-useless-constructor.test.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts index 3d792dca4c7e..ce221c1dc57a 100644 --- a/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts +++ b/packages/eslint-plugin/tests/rules/no-useless-constructor.test.ts @@ -209,6 +209,8 @@ class A extends Object { `, ], invalid: [ + /* eslint-disable @typescript-eslint/no-unnecessary-template-expression -- trailing whitespace */ + { code: ` class A { @@ -430,5 +432,6 @@ ${' '} }, ], }, + /* eslint-enable @typescript-eslint/no-unnecessary-template-expression */ ], });