From 226ddf4fa006b58038f832ca30c0c80738e78bc1 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Fri, 15 Dec 2023 09:57:22 -0500 Subject: [PATCH 1/7] feat(eslint-plugin): deprecate formatting (meta.type: layout) rules --- packages/eslint-plugin/src/rules/block-spacing.ts | 1 + packages/eslint-plugin/src/rules/brace-style.ts | 1 + packages/eslint-plugin/src/rules/comma-dangle.ts | 1 + packages/eslint-plugin/src/rules/comma-spacing.ts | 1 + packages/eslint-plugin/src/rules/func-call-spacing.ts | 1 + packages/eslint-plugin/src/rules/indent.ts | 1 + packages/eslint-plugin/src/rules/key-spacing.ts | 1 + packages/eslint-plugin/src/rules/keyword-spacing.ts | 1 + packages/eslint-plugin/src/rules/lines-around-comment.ts | 1 + packages/eslint-plugin/src/rules/lines-between-class-members.ts | 1 + packages/eslint-plugin/src/rules/member-delimiter-style.ts | 1 + packages/eslint-plugin/src/rules/no-extra-parens.ts | 1 + .../eslint-plugin/src/rules/padding-line-between-statements.ts | 1 + packages/eslint-plugin/src/rules/quotes.ts | 1 + packages/eslint-plugin/src/rules/semi.ts | 1 + packages/eslint-plugin/src/rules/space-before-blocks.ts | 1 + packages/eslint-plugin/src/rules/space-before-function-paren.ts | 1 + packages/eslint-plugin/src/rules/space-infix-ops.ts | 1 + packages/eslint-plugin/src/rules/type-annotation-spacing.ts | 1 + packages/eslint-plugin/tests/areOptionsValid.test.ts | 1 + 20 files changed, 20 insertions(+) diff --git a/packages/eslint-plugin/src/rules/block-spacing.ts b/packages/eslint-plugin/src/rules/block-spacing.ts index 8a4ed0a00da5..fc5e99279ef3 100644 --- a/packages/eslint-plugin/src/rules/block-spacing.ts +++ b/packages/eslint-plugin/src/rules/block-spacing.ts @@ -17,6 +17,7 @@ export type MessageIds = InferMessageIdsTypeFromRule; export default createRule({ name: 'block-spacing', meta: { + deprecated: true, type: 'layout', docs: { description: diff --git a/packages/eslint-plugin/src/rules/brace-style.ts b/packages/eslint-plugin/src/rules/brace-style.ts index 412065b91ff5..ebef2f1a8f2a 100644 --- a/packages/eslint-plugin/src/rules/brace-style.ts +++ b/packages/eslint-plugin/src/rules/brace-style.ts @@ -16,6 +16,7 @@ export type MessageIds = InferMessageIdsTypeFromRule; export default createRule({ name: 'brace-style', meta: { + deprecated: true, type: 'layout', docs: { description: 'Enforce consistent brace style for blocks', diff --git a/packages/eslint-plugin/src/rules/comma-dangle.ts b/packages/eslint-plugin/src/rules/comma-dangle.ts index 8ceb2a8c0efa..6451fba8f381 100644 --- a/packages/eslint-plugin/src/rules/comma-dangle.ts +++ b/packages/eslint-plugin/src/rules/comma-dangle.ts @@ -46,6 +46,7 @@ function normalizeOptions(options: Option): NormalizedOptions { export default createRule({ name: 'comma-dangle', meta: { + deprecated: true, type: 'layout', docs: { description: 'Require or disallow trailing commas', diff --git a/packages/eslint-plugin/src/rules/comma-spacing.ts b/packages/eslint-plugin/src/rules/comma-spacing.ts index 851d6fcc19b0..cd89755460f6 100644 --- a/packages/eslint-plugin/src/rules/comma-spacing.ts +++ b/packages/eslint-plugin/src/rules/comma-spacing.ts @@ -22,6 +22,7 @@ type MessageIds = 'missing' | 'unexpected'; export default createRule({ name: 'comma-spacing', meta: { + deprecated: true, type: 'layout', docs: { description: 'Enforce consistent spacing before and after commas', diff --git a/packages/eslint-plugin/src/rules/func-call-spacing.ts b/packages/eslint-plugin/src/rules/func-call-spacing.ts index a0645e640409..5d792eb73700 100644 --- a/packages/eslint-plugin/src/rules/func-call-spacing.ts +++ b/packages/eslint-plugin/src/rules/func-call-spacing.ts @@ -23,6 +23,7 @@ export type MessageIds = export default createRule({ name: 'func-call-spacing', meta: { + deprecated: true, type: 'layout', docs: { description: diff --git a/packages/eslint-plugin/src/rules/indent.ts b/packages/eslint-plugin/src/rules/indent.ts index b50d6b71814a..8eac7e955fed 100644 --- a/packages/eslint-plugin/src/rules/indent.ts +++ b/packages/eslint-plugin/src/rules/indent.ts @@ -92,6 +92,7 @@ const KNOWN_NODES = new Set([ export default createRule({ name: 'indent', meta: { + deprecated: true, type: 'layout', docs: { description: 'Enforce consistent indentation', diff --git a/packages/eslint-plugin/src/rules/key-spacing.ts b/packages/eslint-plugin/src/rules/key-spacing.ts index cfec69fdcbb5..5a097245b745 100644 --- a/packages/eslint-plugin/src/rules/key-spacing.ts +++ b/packages/eslint-plugin/src/rules/key-spacing.ts @@ -27,6 +27,7 @@ const baseSchema = Array.isArray(baseRule.meta.schema) export default createRule({ name: 'key-spacing', meta: { + deprecated: true, type: 'layout', docs: { description: diff --git a/packages/eslint-plugin/src/rules/keyword-spacing.ts b/packages/eslint-plugin/src/rules/keyword-spacing.ts index 0e4e26b4fa49..08e4a5a81897 100644 --- a/packages/eslint-plugin/src/rules/keyword-spacing.ts +++ b/packages/eslint-plugin/src/rules/keyword-spacing.ts @@ -37,6 +37,7 @@ const schema = deepMerge( export default createRule({ name: 'keyword-spacing', meta: { + deprecated: true, type: 'layout', docs: { description: 'Enforce consistent spacing before and after keywords', diff --git a/packages/eslint-plugin/src/rules/lines-around-comment.ts b/packages/eslint-plugin/src/rules/lines-around-comment.ts index 548c39768b3c..13a5ae451109 100644 --- a/packages/eslint-plugin/src/rules/lines-around-comment.ts +++ b/packages/eslint-plugin/src/rules/lines-around-comment.ts @@ -50,6 +50,7 @@ function getCommentLineNums(comments: TSESTree.Comment[]): number[] { export default createRule({ name: 'lines-around-comment', meta: { + deprecated: true, type: 'layout', docs: { description: 'Require empty lines around comments', diff --git a/packages/eslint-plugin/src/rules/lines-between-class-members.ts b/packages/eslint-plugin/src/rules/lines-between-class-members.ts index 2383142387a7..16584a6586bc 100644 --- a/packages/eslint-plugin/src/rules/lines-between-class-members.ts +++ b/packages/eslint-plugin/src/rules/lines-between-class-members.ts @@ -33,6 +33,7 @@ const schema = Object.values( export default createRule({ name: 'lines-between-class-members', meta: { + deprecated: true, type: 'layout', docs: { description: 'Require or disallow an empty line between class members', diff --git a/packages/eslint-plugin/src/rules/member-delimiter-style.ts b/packages/eslint-plugin/src/rules/member-delimiter-style.ts index 02ee716a1b2b..6b03812486f2 100644 --- a/packages/eslint-plugin/src/rules/member-delimiter-style.ts +++ b/packages/eslint-plugin/src/rules/member-delimiter-style.ts @@ -136,6 +136,7 @@ const BASE_SCHEMA: JSONSchema4 = { export default createRule({ name: 'member-delimiter-style', meta: { + deprecated: true, type: 'layout', docs: { description: diff --git a/packages/eslint-plugin/src/rules/no-extra-parens.ts b/packages/eslint-plugin/src/rules/no-extra-parens.ts index 279ea3840473..2cf48a04ba18 100644 --- a/packages/eslint-plugin/src/rules/no-extra-parens.ts +++ b/packages/eslint-plugin/src/rules/no-extra-parens.ts @@ -20,6 +20,7 @@ type MessageIds = InferMessageIdsTypeFromRule; export default createRule({ name: 'no-extra-parens', meta: { + deprecated: true, type: 'layout', docs: { description: 'Disallow unnecessary parentheses', diff --git a/packages/eslint-plugin/src/rules/padding-line-between-statements.ts b/packages/eslint-plugin/src/rules/padding-line-between-statements.ts index 442c8135e072..7c803eb04f67 100644 --- a/packages/eslint-plugin/src/rules/padding-line-between-statements.ts +++ b/packages/eslint-plugin/src/rules/padding-line-between-statements.ts @@ -590,6 +590,7 @@ const StatementTypes: Record = { export default createRule({ name: 'padding-line-between-statements', meta: { + deprecated: true, type: 'layout', docs: { description: 'Require or disallow padding lines between statements', diff --git a/packages/eslint-plugin/src/rules/quotes.ts b/packages/eslint-plugin/src/rules/quotes.ts index 89100ef01ac7..3f808f01bffa 100644 --- a/packages/eslint-plugin/src/rules/quotes.ts +++ b/packages/eslint-plugin/src/rules/quotes.ts @@ -16,6 +16,7 @@ export type MessageIds = InferMessageIdsTypeFromRule; export default createRule({ name: 'quotes', meta: { + deprecated: true, type: 'layout', docs: { description: diff --git a/packages/eslint-plugin/src/rules/semi.ts b/packages/eslint-plugin/src/rules/semi.ts index 2129c27f9fb7..6ac51766275d 100644 --- a/packages/eslint-plugin/src/rules/semi.ts +++ b/packages/eslint-plugin/src/rules/semi.ts @@ -16,6 +16,7 @@ export type MessageIds = InferMessageIdsTypeFromRule; export default createRule({ name: 'semi', meta: { + deprecated: true, type: 'layout', docs: { description: 'Require or disallow semicolons instead of ASI', diff --git a/packages/eslint-plugin/src/rules/space-before-blocks.ts b/packages/eslint-plugin/src/rules/space-before-blocks.ts index f0e45ae7e329..0f03df886df0 100644 --- a/packages/eslint-plugin/src/rules/space-before-blocks.ts +++ b/packages/eslint-plugin/src/rules/space-before-blocks.ts @@ -16,6 +16,7 @@ export type MessageIds = InferMessageIdsTypeFromRule; export default createRule({ name: 'space-before-blocks', meta: { + deprecated: true, type: 'layout', docs: { description: 'Enforce consistent spacing before blocks', diff --git a/packages/eslint-plugin/src/rules/space-before-function-paren.ts b/packages/eslint-plugin/src/rules/space-before-function-paren.ts index 19836a9081f4..a52e48d2e247 100644 --- a/packages/eslint-plugin/src/rules/space-before-function-paren.ts +++ b/packages/eslint-plugin/src/rules/space-before-function-paren.ts @@ -20,6 +20,7 @@ export type MessageIds = 'missing' | 'unexpected'; export default createRule({ name: 'space-before-function-paren', meta: { + deprecated: true, type: 'layout', docs: { description: 'Enforce consistent spacing before function parenthesis', diff --git a/packages/eslint-plugin/src/rules/space-infix-ops.ts b/packages/eslint-plugin/src/rules/space-infix-ops.ts index 2bf643b08736..1b990cb87878 100644 --- a/packages/eslint-plugin/src/rules/space-infix-ops.ts +++ b/packages/eslint-plugin/src/rules/space-infix-ops.ts @@ -18,6 +18,7 @@ const UNIONS = ['|', '&']; export default createRule({ name: 'space-infix-ops', meta: { + deprecated: true, type: 'layout', docs: { description: 'Require spacing around infix operators', diff --git a/packages/eslint-plugin/src/rules/type-annotation-spacing.ts b/packages/eslint-plugin/src/rules/type-annotation-spacing.ts index 442dd71162a2..7bd0485e9582 100644 --- a/packages/eslint-plugin/src/rules/type-annotation-spacing.ts +++ b/packages/eslint-plugin/src/rules/type-annotation-spacing.ts @@ -102,6 +102,7 @@ function getRules( export default createRule({ name: 'type-annotation-spacing', meta: { + deprecated: true, type: 'layout', docs: { description: 'Require consistent spacing around type annotations', diff --git a/packages/eslint-plugin/tests/areOptionsValid.test.ts b/packages/eslint-plugin/tests/areOptionsValid.test.ts index ab234f2fe3a8..88abde4f2cf2 100644 --- a/packages/eslint-plugin/tests/areOptionsValid.test.ts +++ b/packages/eslint-plugin/tests/areOptionsValid.test.ts @@ -4,6 +4,7 @@ import { areOptionsValid } from './areOptionsValid'; const exampleRule = createRule<['value-a' | 'value-b'], never>({ name: 'my-example-rule', meta: { + deprecated: true, type: 'layout', docs: { description: 'Detects something or other', From 8d1737feba7e3df88b67846970f656b7c0e19342 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Fri, 15 Dec 2023 12:25:21 -0500 Subject: [PATCH 2/7] fix: whoops, forgot to commit all.ts changes --- packages/eslint-plugin/src/configs/all.ts | 36 ----------------------- 1 file changed, 36 deletions(-) diff --git a/packages/eslint-plugin/src/configs/all.ts b/packages/eslint-plugin/src/configs/all.ts index f6e14dfe12a5..d7519c984e8d 100644 --- a/packages/eslint-plugin/src/configs/all.ts +++ b/packages/eslint-plugin/src/configs/all.ts @@ -14,17 +14,9 @@ export = { '@typescript-eslint/ban-ts-comment': 'error', '@typescript-eslint/ban-tslint-comment': 'error', '@typescript-eslint/ban-types': 'error', - 'block-spacing': 'off', - '@typescript-eslint/block-spacing': 'error', - 'brace-style': 'off', - '@typescript-eslint/brace-style': 'error', '@typescript-eslint/class-literal-property-style': 'error', 'class-methods-use-this': 'off', '@typescript-eslint/class-methods-use-this': 'error', - 'comma-dangle': 'off', - '@typescript-eslint/comma-dangle': 'error', - 'comma-spacing': 'off', - '@typescript-eslint/comma-spacing': 'error', '@typescript-eslint/consistent-generic-constructors': 'error', '@typescript-eslint/consistent-indexed-object-style': 'error', '@typescript-eslint/consistent-type-assertions': 'error', @@ -38,23 +30,10 @@ export = { '@typescript-eslint/explicit-function-return-type': 'error', '@typescript-eslint/explicit-member-accessibility': 'error', '@typescript-eslint/explicit-module-boundary-types': 'error', - 'func-call-spacing': 'off', - '@typescript-eslint/func-call-spacing': 'error', - indent: 'off', - '@typescript-eslint/indent': 'error', 'init-declarations': 'off', '@typescript-eslint/init-declarations': 'error', - 'key-spacing': 'off', - '@typescript-eslint/key-spacing': 'error', - 'keyword-spacing': 'off', - '@typescript-eslint/keyword-spacing': 'error', - 'lines-around-comment': 'off', - '@typescript-eslint/lines-around-comment': 'error', - 'lines-between-class-members': 'off', - '@typescript-eslint/lines-between-class-members': 'error', 'max-params': 'off', '@typescript-eslint/max-params': 'error', - '@typescript-eslint/member-delimiter-style': 'error', '@typescript-eslint/member-ordering': 'error', '@typescript-eslint/method-signature-style': 'error', '@typescript-eslint/naming-convention': 'error', @@ -73,8 +52,6 @@ export = { '@typescript-eslint/no-empty-interface': 'error', '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/no-extra-non-null-assertion': 'error', - 'no-extra-parens': 'off', - '@typescript-eslint/no-extra-parens': 'error', 'no-extra-semi': 'off', '@typescript-eslint/no-extra-semi': 'error', '@typescript-eslint/no-extraneous-class': 'error', @@ -140,8 +117,6 @@ export = { '@typescript-eslint/non-nullable-type-assertion-style': 'error', 'object-curly-spacing': 'off', '@typescript-eslint/object-curly-spacing': 'error', - 'padding-line-between-statements': 'off', - '@typescript-eslint/padding-line-between-statements': 'error', '@typescript-eslint/parameter-properties': 'error', '@typescript-eslint/prefer-as-const': 'error', 'prefer-destructuring': 'off', @@ -162,8 +137,6 @@ export = { '@typescript-eslint/prefer-string-starts-ends-with': 'error', '@typescript-eslint/prefer-ts-expect-error': 'error', '@typescript-eslint/promise-function-async': 'error', - quotes: 'off', - '@typescript-eslint/quotes': 'error', '@typescript-eslint/require-array-sort-compare': 'error', 'require-await': 'off', '@typescript-eslint/require-await': 'error', @@ -171,19 +144,10 @@ export = { '@typescript-eslint/restrict-template-expressions': 'error', 'no-return-await': 'off', '@typescript-eslint/return-await': 'error', - semi: 'off', - '@typescript-eslint/semi': 'error', '@typescript-eslint/sort-type-constituents': 'error', - 'space-before-blocks': 'off', - '@typescript-eslint/space-before-blocks': 'error', - 'space-before-function-paren': 'off', - '@typescript-eslint/space-before-function-paren': 'error', - 'space-infix-ops': 'off', - '@typescript-eslint/space-infix-ops': 'error', '@typescript-eslint/strict-boolean-expressions': 'error', '@typescript-eslint/switch-exhaustiveness-check': 'error', '@typescript-eslint/triple-slash-reference': 'error', - '@typescript-eslint/type-annotation-spacing': 'error', '@typescript-eslint/typedef': 'error', '@typescript-eslint/unbound-method': 'error', '@typescript-eslint/unified-signatures': 'error', From 73694c02a5fb8f38c53305b7623d168c133db9c6 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 23 Dec 2023 20:43:44 -0500 Subject: [PATCH 3/7] Add replacedBy --- packages/eslint-plugin/src/rules/block-spacing.ts | 1 + packages/eslint-plugin/src/rules/brace-style.ts | 1 + packages/eslint-plugin/src/rules/comma-dangle.ts | 1 + packages/eslint-plugin/src/rules/comma-spacing.ts | 1 + packages/eslint-plugin/src/rules/func-call-spacing.ts | 1 + packages/eslint-plugin/src/rules/indent.ts | 1 + packages/eslint-plugin/src/rules/key-spacing.ts | 1 + packages/eslint-plugin/src/rules/keyword-spacing.ts | 1 + packages/eslint-plugin/src/rules/lines-around-comment.ts | 1 + packages/eslint-plugin/src/rules/lines-between-class-members.ts | 1 + packages/eslint-plugin/src/rules/member-delimiter-style.ts | 1 + packages/eslint-plugin/src/rules/no-extra-parens.ts | 1 + .../eslint-plugin/src/rules/padding-line-between-statements.ts | 1 + packages/eslint-plugin/src/rules/quotes.ts | 1 + packages/eslint-plugin/src/rules/semi.ts | 1 + packages/eslint-plugin/src/rules/space-before-blocks.ts | 1 + packages/eslint-plugin/src/rules/space-before-function-paren.ts | 1 + packages/eslint-plugin/src/rules/space-infix-ops.ts | 1 + packages/eslint-plugin/src/rules/type-annotation-spacing.ts | 1 + 19 files changed, 19 insertions(+) diff --git a/packages/eslint-plugin/src/rules/block-spacing.ts b/packages/eslint-plugin/src/rules/block-spacing.ts index fc5e99279ef3..67557c744ac6 100644 --- a/packages/eslint-plugin/src/rules/block-spacing.ts +++ b/packages/eslint-plugin/src/rules/block-spacing.ts @@ -18,6 +18,7 @@ export default createRule({ name: 'block-spacing', meta: { deprecated: true, + replacedBy: ['@stylistic/block-spacing'], type: 'layout', docs: { description: diff --git a/packages/eslint-plugin/src/rules/brace-style.ts b/packages/eslint-plugin/src/rules/brace-style.ts index ebef2f1a8f2a..a07d1903f518 100644 --- a/packages/eslint-plugin/src/rules/brace-style.ts +++ b/packages/eslint-plugin/src/rules/brace-style.ts @@ -17,6 +17,7 @@ export default createRule({ name: 'brace-style', meta: { deprecated: true, + replacedBy: ['@stylistic/brace-style'], type: 'layout', docs: { description: 'Enforce consistent brace style for blocks', diff --git a/packages/eslint-plugin/src/rules/comma-dangle.ts b/packages/eslint-plugin/src/rules/comma-dangle.ts index 6451fba8f381..1e7c6e278d4e 100644 --- a/packages/eslint-plugin/src/rules/comma-dangle.ts +++ b/packages/eslint-plugin/src/rules/comma-dangle.ts @@ -47,6 +47,7 @@ export default createRule({ name: 'comma-dangle', meta: { deprecated: true, + replacedBy: ['@stylistic/comma-dangle'], type: 'layout', docs: { description: 'Require or disallow trailing commas', diff --git a/packages/eslint-plugin/src/rules/comma-spacing.ts b/packages/eslint-plugin/src/rules/comma-spacing.ts index cd89755460f6..2c565e602d66 100644 --- a/packages/eslint-plugin/src/rules/comma-spacing.ts +++ b/packages/eslint-plugin/src/rules/comma-spacing.ts @@ -23,6 +23,7 @@ export default createRule({ name: 'comma-spacing', meta: { deprecated: true, + replacedBy: ['@stylistic/comma-spacing'], type: 'layout', docs: { description: 'Enforce consistent spacing before and after commas', diff --git a/packages/eslint-plugin/src/rules/func-call-spacing.ts b/packages/eslint-plugin/src/rules/func-call-spacing.ts index 5d792eb73700..8bc0de12fc86 100644 --- a/packages/eslint-plugin/src/rules/func-call-spacing.ts +++ b/packages/eslint-plugin/src/rules/func-call-spacing.ts @@ -24,6 +24,7 @@ export default createRule({ name: 'func-call-spacing', meta: { deprecated: true, + replacedBy: ['@stylistic/func-call-spacing'], type: 'layout', docs: { description: diff --git a/packages/eslint-plugin/src/rules/indent.ts b/packages/eslint-plugin/src/rules/indent.ts index 8eac7e955fed..95682192c1ca 100644 --- a/packages/eslint-plugin/src/rules/indent.ts +++ b/packages/eslint-plugin/src/rules/indent.ts @@ -93,6 +93,7 @@ export default createRule({ name: 'indent', meta: { deprecated: true, + replacedBy: ['@stylistic/indent'], type: 'layout', docs: { description: 'Enforce consistent indentation', diff --git a/packages/eslint-plugin/src/rules/key-spacing.ts b/packages/eslint-plugin/src/rules/key-spacing.ts index 5a097245b745..220b62a1c743 100644 --- a/packages/eslint-plugin/src/rules/key-spacing.ts +++ b/packages/eslint-plugin/src/rules/key-spacing.ts @@ -28,6 +28,7 @@ export default createRule({ name: 'key-spacing', meta: { deprecated: true, + replacedBy: ['@stylistic/key-spacing'], type: 'layout', docs: { description: diff --git a/packages/eslint-plugin/src/rules/keyword-spacing.ts b/packages/eslint-plugin/src/rules/keyword-spacing.ts index 08e4a5a81897..e80a0e76401d 100644 --- a/packages/eslint-plugin/src/rules/keyword-spacing.ts +++ b/packages/eslint-plugin/src/rules/keyword-spacing.ts @@ -38,6 +38,7 @@ export default createRule({ name: 'keyword-spacing', meta: { deprecated: true, + replacedBy: ['@stylistic/keyword-spacing'], type: 'layout', docs: { description: 'Enforce consistent spacing before and after keywords', diff --git a/packages/eslint-plugin/src/rules/lines-around-comment.ts b/packages/eslint-plugin/src/rules/lines-around-comment.ts index 13a5ae451109..c987b1c19eb2 100644 --- a/packages/eslint-plugin/src/rules/lines-around-comment.ts +++ b/packages/eslint-plugin/src/rules/lines-around-comment.ts @@ -51,6 +51,7 @@ export default createRule({ name: 'lines-around-comment', meta: { deprecated: true, + replacedBy: ['@stylistic/lines-around-comment'], type: 'layout', docs: { description: 'Require empty lines around comments', diff --git a/packages/eslint-plugin/src/rules/lines-between-class-members.ts b/packages/eslint-plugin/src/rules/lines-between-class-members.ts index 16584a6586bc..f78e70f84a0d 100644 --- a/packages/eslint-plugin/src/rules/lines-between-class-members.ts +++ b/packages/eslint-plugin/src/rules/lines-between-class-members.ts @@ -34,6 +34,7 @@ export default createRule({ name: 'lines-between-class-members', meta: { deprecated: true, + replacedBy: ['@stylistic/line-between-class-members'], type: 'layout', docs: { description: 'Require or disallow an empty line between class members', diff --git a/packages/eslint-plugin/src/rules/member-delimiter-style.ts b/packages/eslint-plugin/src/rules/member-delimiter-style.ts index 6b03812486f2..6420e969e4f6 100644 --- a/packages/eslint-plugin/src/rules/member-delimiter-style.ts +++ b/packages/eslint-plugin/src/rules/member-delimiter-style.ts @@ -137,6 +137,7 @@ export default createRule({ name: 'member-delimiter-style', meta: { deprecated: true, + replacedBy: ['@stylistic/member-delimiter-style'], type: 'layout', docs: { description: diff --git a/packages/eslint-plugin/src/rules/no-extra-parens.ts b/packages/eslint-plugin/src/rules/no-extra-parens.ts index 2cf48a04ba18..375a5191c1f7 100644 --- a/packages/eslint-plugin/src/rules/no-extra-parens.ts +++ b/packages/eslint-plugin/src/rules/no-extra-parens.ts @@ -21,6 +21,7 @@ export default createRule({ name: 'no-extra-parens', meta: { deprecated: true, + replacedBy: ['@stylistic/no-extra-parens'], type: 'layout', docs: { description: 'Disallow unnecessary parentheses', diff --git a/packages/eslint-plugin/src/rules/padding-line-between-statements.ts b/packages/eslint-plugin/src/rules/padding-line-between-statements.ts index 7c803eb04f67..43c4ce0bb29d 100644 --- a/packages/eslint-plugin/src/rules/padding-line-between-statements.ts +++ b/packages/eslint-plugin/src/rules/padding-line-between-statements.ts @@ -591,6 +591,7 @@ export default createRule({ name: 'padding-line-between-statements', meta: { deprecated: true, + replacedBy: ['@stylistic/padding-line-between-statements'], type: 'layout', docs: { description: 'Require or disallow padding lines between statements', diff --git a/packages/eslint-plugin/src/rules/quotes.ts b/packages/eslint-plugin/src/rules/quotes.ts index 3f808f01bffa..ec1bf5f811e6 100644 --- a/packages/eslint-plugin/src/rules/quotes.ts +++ b/packages/eslint-plugin/src/rules/quotes.ts @@ -17,6 +17,7 @@ export default createRule({ name: 'quotes', meta: { deprecated: true, + replacedBy: ['@stylistic/quotes'], type: 'layout', docs: { description: diff --git a/packages/eslint-plugin/src/rules/semi.ts b/packages/eslint-plugin/src/rules/semi.ts index 6ac51766275d..70ad3626ab08 100644 --- a/packages/eslint-plugin/src/rules/semi.ts +++ b/packages/eslint-plugin/src/rules/semi.ts @@ -17,6 +17,7 @@ export default createRule({ name: 'semi', meta: { deprecated: true, + replacedBy: ['@stylistic/semi'], type: 'layout', docs: { description: 'Require or disallow semicolons instead of ASI', diff --git a/packages/eslint-plugin/src/rules/space-before-blocks.ts b/packages/eslint-plugin/src/rules/space-before-blocks.ts index 0f03df886df0..ec6d509e55e6 100644 --- a/packages/eslint-plugin/src/rules/space-before-blocks.ts +++ b/packages/eslint-plugin/src/rules/space-before-blocks.ts @@ -17,6 +17,7 @@ export default createRule({ name: 'space-before-blocks', meta: { deprecated: true, + replacedBy: ['@stylistic/space-before-blocks'], type: 'layout', docs: { description: 'Enforce consistent spacing before blocks', diff --git a/packages/eslint-plugin/src/rules/space-before-function-paren.ts b/packages/eslint-plugin/src/rules/space-before-function-paren.ts index a52e48d2e247..96e963e99acb 100644 --- a/packages/eslint-plugin/src/rules/space-before-function-paren.ts +++ b/packages/eslint-plugin/src/rules/space-before-function-paren.ts @@ -21,6 +21,7 @@ export default createRule({ name: 'space-before-function-paren', meta: { deprecated: true, + replacedBy: ['@stylistic/space-before-function-paren'], type: 'layout', docs: { description: 'Enforce consistent spacing before function parenthesis', diff --git a/packages/eslint-plugin/src/rules/space-infix-ops.ts b/packages/eslint-plugin/src/rules/space-infix-ops.ts index 1b990cb87878..f8caca1ef15d 100644 --- a/packages/eslint-plugin/src/rules/space-infix-ops.ts +++ b/packages/eslint-plugin/src/rules/space-infix-ops.ts @@ -19,6 +19,7 @@ export default createRule({ name: 'space-infix-ops', meta: { deprecated: true, + replacedBy: ['@stylistic/space-infix-ops'], type: 'layout', docs: { description: 'Require spacing around infix operators', diff --git a/packages/eslint-plugin/src/rules/type-annotation-spacing.ts b/packages/eslint-plugin/src/rules/type-annotation-spacing.ts index 7bd0485e9582..633cefb79ae6 100644 --- a/packages/eslint-plugin/src/rules/type-annotation-spacing.ts +++ b/packages/eslint-plugin/src/rules/type-annotation-spacing.ts @@ -103,6 +103,7 @@ export default createRule({ name: 'type-annotation-spacing', meta: { deprecated: true, + replacedBy: ['@stylistic/type-annotation-spacing'], type: 'layout', docs: { description: 'Require consistent spacing around type annotations', From 67bbb5d27db09e420e5626303f220df9f94a3ccd Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 23 Dec 2023 20:53:21 -0500 Subject: [PATCH 4/7] Update formatting admonition --- .../generated-rule-docs/insertions/insertFormattingNotice.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/website/plugins/generated-rule-docs/insertions/insertFormattingNotice.ts b/packages/website/plugins/generated-rule-docs/insertions/insertFormattingNotice.ts index 384d3246d372..46df55a8f523 100644 --- a/packages/website/plugins/generated-rule-docs/insertions/insertFormattingNotice.ts +++ b/packages/website/plugins/generated-rule-docs/insertions/insertFormattingNotice.ts @@ -6,8 +6,8 @@ export function insertFormattingNotice(page: RuleDocsPage): void { if (page.rule.meta.type === 'layout') { page.spliceChildren(0, 0, { value: ` - -This rule will soon be moved to eslint-stylistic. + +This rule is deprecated. Formatting rules now live in eslint-stylistic. See What About Formatting? for more information. `, From 4563deed507daa3c90c4c233811d46632bb10146 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 23 Dec 2023 20:53:32 -0500 Subject: [PATCH 5/7] Missed object-curly-spacing --- packages/eslint-plugin/src/rules/object-curly-spacing.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/eslint-plugin/src/rules/object-curly-spacing.ts b/packages/eslint-plugin/src/rules/object-curly-spacing.ts index 66792ba75018..d1249a1c1984 100644 --- a/packages/eslint-plugin/src/rules/object-curly-spacing.ts +++ b/packages/eslint-plugin/src/rules/object-curly-spacing.ts @@ -24,10 +24,12 @@ export default createRule({ // eslint-disable-next-line eslint-plugin/prefer-message-ids,eslint-plugin/require-meta-type,eslint-plugin/require-meta-schema,eslint-plugin/require-meta-fixable -- all in base rule - https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/issues/274 meta: { ...baseRule.meta, + deprecated: true, docs: { description: 'Enforce consistent spacing inside braces', extendsBaseRule: true, }, + replacedBy: ['@stylistic/object-curly-spacing'], }, defaultOptions: ['never'], create(context) { From 55b9753499e05c7fd1964e67730ea8caf9791ffc Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 23 Dec 2023 21:59:47 -0500 Subject: [PATCH 6/7] areOptionsValid undo --- packages/eslint-plugin/tests/areOptionsValid.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/eslint-plugin/tests/areOptionsValid.test.ts b/packages/eslint-plugin/tests/areOptionsValid.test.ts index 88abde4f2cf2..1908acf1460f 100644 --- a/packages/eslint-plugin/tests/areOptionsValid.test.ts +++ b/packages/eslint-plugin/tests/areOptionsValid.test.ts @@ -4,8 +4,7 @@ import { areOptionsValid } from './areOptionsValid'; const exampleRule = createRule<['value-a' | 'value-b'], never>({ name: 'my-example-rule', meta: { - deprecated: true, - type: 'layout', + type: 'suggestion', docs: { description: 'Detects something or other', }, From 0273e898752e1b41132646c206fa83b8bcbf75a0 Mon Sep 17 00:00:00 2001 From: Josh Goldberg Date: Sat, 23 Dec 2023 22:10:56 -0500 Subject: [PATCH 7/7] Correct configs and tweak deprecation notice --- packages/eslint-plugin/src/configs/all.ts | 2 -- .../insertions/insertFormattingNotice.ts | 31 ++++++++++++++----- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/packages/eslint-plugin/src/configs/all.ts b/packages/eslint-plugin/src/configs/all.ts index d7519c984e8d..792873e15246 100644 --- a/packages/eslint-plugin/src/configs/all.ts +++ b/packages/eslint-plugin/src/configs/all.ts @@ -115,8 +115,6 @@ export = { '@typescript-eslint/no-useless-template-literals': 'error', '@typescript-eslint/no-var-requires': 'error', '@typescript-eslint/non-nullable-type-assertion-style': 'error', - 'object-curly-spacing': 'off', - '@typescript-eslint/object-curly-spacing': 'error', '@typescript-eslint/parameter-properties': 'error', '@typescript-eslint/prefer-as-const': 'error', 'prefer-destructuring': 'off', diff --git a/packages/website/plugins/generated-rule-docs/insertions/insertFormattingNotice.ts b/packages/website/plugins/generated-rule-docs/insertions/insertFormattingNotice.ts index 46df55a8f523..92b038b74974 100644 --- a/packages/website/plugins/generated-rule-docs/insertions/insertFormattingNotice.ts +++ b/packages/website/plugins/generated-rule-docs/insertions/insertFormattingNotice.ts @@ -3,15 +3,32 @@ import type * as unist from 'unist'; import type { RuleDocsPage } from '../RuleDocsPage'; export function insertFormattingNotice(page: RuleDocsPage): void { - if (page.rule.meta.type === 'layout') { - page.spliceChildren(0, 0, { - value: ` + if (page.rule.meta.type !== 'layout') { + return; + } + + const replacement = page.rule.meta.replacedBy!.find(e => + e.startsWith('@stylistic/'), + ); + const url = + replacement && + `https://eslint.style/rules/default/${replacement.replace( + '@stylistic/', + '', + )}`; + + page.spliceChildren(0, 0, { + value: ` -This rule is deprecated. Formatting rules now live in eslint-stylistic. +Formatting rules now live in eslint-stylistic. ${ + url + ? ` ${replacement} is the replacement for this rule. ` + : '' + } +
See What About Formatting? for more information.
`, - type: 'jsx', - } as unist.Node); - } + type: 'jsx', + } as unist.Node); }