From 29bd26c37d6ec7b29a54257047bd4e62718da41f Mon Sep 17 00:00:00 2001 From: "Shahar \"Dawn\" Or" Date: Mon, 27 May 2024 13:31:44 +0700 Subject: [PATCH] feat(rules)!: no use of deprecated rules BREAKING CHANGE: No use of deprecated rules. Most notably, all formatting rules are removed. Please use a formatter, such as dprint, tsfmt and prettier. --- src/index.ts | 112 +--------------------------------- src/test/_util.ts | 109 +-------------------------------- src/test/rules-to-consider.ts | 18 +++++- 3 files changed, 20 insertions(+), 219 deletions(-) diff --git a/src/index.ts b/src/index.ts index a2bad82ec..613972237 100644 --- a/src/index.ts +++ b/src/index.ts @@ -64,20 +64,7 @@ const rules = { } } }], - '@typescript-eslint/block-spacing': ['error', 'always'], - '@typescript-eslint/brace-style': ['error', '1tbs', { allowSingleLine: true }], '@typescript-eslint/class-literal-property-style': ['error', 'fields'], - '@typescript-eslint/comma-dangle': ['error', { - arrays: 'never', - objects: 'never', - imports: 'never', - exports: 'never', - functions: 'never', - enums: 'ignore', - generics: 'ignore', - tuples: 'ignore' - }], - '@typescript-eslint/comma-spacing': ['error', { before: false, after: true }], '@typescript-eslint/consistent-generic-constructors': ['error', 'constructor'], '@typescript-eslint/consistent-indexed-object-style': ['error', 'record'], '@typescript-eslint/consistent-type-assertions': [ @@ -111,51 +98,6 @@ const rules = { allowTypedFunctionExpressions: true, allowDirectConstAssertionInArrowFunctions: true }], - '@typescript-eslint/func-call-spacing': ['error', 'never'], - '@typescript-eslint/indent': ['error', 2, { - SwitchCase: 1, - VariableDeclarator: 1, - outerIIFEBody: 1, - MemberExpression: 1, - FunctionDeclaration: { parameters: 1, body: 1 }, - FunctionExpression: { parameters: 1, body: 1 }, - CallExpression: { arguments: 1 }, - ArrayExpression: 1, - ObjectExpression: 1, - ImportDeclaration: 1, - flatTernaryExpressions: false, - ignoreComments: false, - ignoredNodes: [ - 'TemplateLiteral *', - 'JSXElement', - 'JSXElement > *', - 'JSXAttribute', - 'JSXIdentifier', - 'JSXNamespacedName', - 'JSXMemberExpression', - 'JSXSpreadAttribute', - 'JSXExpressionContainer', - 'JSXOpeningElement', - 'JSXClosingElement', - 'JSXFragment', - 'JSXOpeningFragment', - 'JSXClosingFragment', - 'JSXText', - 'JSXEmptyExpression', - 'JSXSpreadChild' - ], - offsetTernaryExpressions: true - }], - '@typescript-eslint/key-spacing': ['error', { beforeColon: false, afterColon: true }], - '@typescript-eslint/keyword-spacing': ['error', { before: true, after: true }], - '@typescript-eslint/lines-between-class-members': ['error', 'always', { exceptAfterOverload: true, exceptAfterSingleLine: true }], - '@typescript-eslint/member-delimiter-style': [ - 'error', - { - multiline: { delimiter: 'none' }, - singleline: { delimiter: 'comma', requireLast: false } - } - ], '@typescript-eslint/method-signature-style': ['error'], '@typescript-eslint/naming-convention': ['error', { selector: 'variableLike', @@ -170,7 +112,6 @@ const rules = { '@typescript-eslint/no-dynamic-delete': ['error'], '@typescript-eslint/no-empty-interface': ['error', { allowSingleExtends: true }], '@typescript-eslint/no-extra-non-null-assertion': ['error'], - '@typescript-eslint/no-extra-parens': ['error', 'functions'], '@typescript-eslint/no-extraneous-class': ['error', { allowWithDecorator: true }], '@typescript-eslint/no-floating-promises': ['error'], '@typescript-eslint/no-for-in-array': ['error'], @@ -184,7 +125,6 @@ const rules = { '@typescript-eslint/no-non-null-assertion': ['error'], '@typescript-eslint/no-redeclare': ['error', { builtinGlobals: false }], '@typescript-eslint/no-this-alias': ['error', { allowDestructuring: true }], - '@typescript-eslint/no-throw-literal': ['error'], '@typescript-eslint/no-unnecessary-boolean-literal-compare': ['error'], '@typescript-eslint/no-unnecessary-type-assertion': ['error'], '@typescript-eslint/no-unnecessary-type-constraint': ['error'], @@ -211,7 +151,7 @@ const rules = { '@typescript-eslint/no-useless-constructor': ['error'], '@typescript-eslint/no-var-requires': ['error'], '@typescript-eslint/non-nullable-type-assertion-style': ['error'], - '@typescript-eslint/object-curly-spacing': ['error', 'always'], + '@typescript-eslint/only-throw-error': ['error', { allowThrowingAny: false, allowThrowingUnknown: false }], '@typescript-eslint/prefer-function-type': ['error'], '@typescript-eslint/prefer-includes': ['error'], '@typescript-eslint/prefer-nullish-coalescing': ['error', { ignoreConditionalTests: false, ignoreMixedLogicalExpressions: false }], @@ -222,15 +162,10 @@ const rules = { '@typescript-eslint/prefer-return-this-type': ['error'], '@typescript-eslint/prefer-ts-expect-error': ['error'], '@typescript-eslint/promise-function-async': ['error'], - '@typescript-eslint/quotes': ['error', 'single', { avoidEscape: true, allowTemplateLiterals: false }], '@typescript-eslint/require-array-sort-compare': ['error', { ignoreStringArrays: true }], '@typescript-eslint/restrict-plus-operands': ['error', { skipCompoundAssignments: false }], '@typescript-eslint/restrict-template-expressions': ['error', { allowNumber: true }], '@typescript-eslint/return-await': ['error', 'always'], - '@typescript-eslint/semi': ['error', 'never'], - '@typescript-eslint/space-before-blocks': ['error', 'always'], - '@typescript-eslint/space-before-function-paren': ['error', 'always'], - '@typescript-eslint/space-infix-ops': ['error'], '@typescript-eslint/strict-boolean-expressions': ['error', { allowString: false, allowNumber: false, @@ -241,29 +176,19 @@ const rules = { allowAny: false }], '@typescript-eslint/triple-slash-reference': ['error', { lib: 'never', path: 'never', types: 'never' }], - '@typescript-eslint/type-annotation-spacing': ['error'], '@typescript-eslint/unbound-method': ['error', { ignoreStatic: false }], 'accessor-pairs': ['error', { setWithoutGet: true, getWithoutSet: false, enforceForClassMembers: true }], - 'array-bracket-spacing': ['error', 'never'], 'array-callback-return': ['error', { allowImplicit: false, allowVoid: false, checkForEach: false }], - 'arrow-spacing': ['error', { before: true, after: true }], - 'comma-style': ['error', 'last'], - 'computed-property-spacing': ['error', 'never', { enforceForClassMembers: true }], 'constructor-super': ['error'], curly: ['error', 'multi-line'], 'default-case-last': ['error'], - 'dot-location': ['error', 'property'], - 'eol-last': ['error'], eqeqeq: ['error', 'always', { null: 'ignore' }], - 'generator-star-spacing': ['error', { before: true, after: true }], - 'multiline-ternary': ['error', 'always-multiline'], 'new-cap': ['error', { newIsCap: true, capIsNew: false, properties: true }], - 'new-parens': ['error'], 'no-async-promise-executor': ['error'], 'no-caller': ['error'], 'no-case-declarations': ['error'], @@ -288,7 +213,6 @@ const rules = { 'no-extra-bind': ['error'], 'no-extra-boolean-cast': ['error'], 'no-fallthrough': ['error'], - 'no-floating-decimal': ['error'], 'no-func-assign': ['error'], 'no-global-assign': ['error'], 'no-import-assign': ['error'], @@ -300,24 +224,13 @@ const rules = { 'no-misleading-character-class': ['error'], 'no-prototype-builtins': ['error'], 'no-useless-catch': ['error'], - 'no-mixed-operators': ['error', { - groups: [ - ['==', '!=', '===', '!==', '>', '>=', '<', '<='], - ['&&', '||'], - ['in', 'instanceof'] - ], - allowSamePrecedence: true - }], - 'no-mixed-spaces-and-tabs': ['error'], - 'no-multi-spaces': ['error'], 'no-multi-str': ['error'], - 'no-multiple-empty-lines': ['error', { max: 1, maxBOF: 0, maxEOF: 0 }], 'no-new': ['error'], 'no-new-func': ['error'], - 'no-new-object': ['error'], 'no-new-symbol': ['error'], 'no-new-wrappers': ['error'], 'no-obj-calls': ['error'], + 'no-object-constructor': ['error'], 'no-octal': ['error'], 'no-octal-escape': ['error'], 'no-proto': ['error'], @@ -328,10 +241,9 @@ const rules = { 'no-sequences': ['error'], 'no-shadow-restricted-names': ['error'], 'no-sparse-arrays': ['error'], - 'no-tabs': ['error'], 'no-template-curly-in-string': ['error'], 'no-this-before-super': ['error'], - 'no-trailing-spaces': ['error'], + 'no-throw-literal': ['off'], 'no-undef-init': ['error'], 'no-unexpected-multiline': ['error'], 'no-unmodified-loop-condition': ['error'], @@ -347,36 +259,18 @@ const rules = { 'no-useless-return': ['error'], 'no-var': ['warn'], 'no-void': ['error', { allowAsStatement: true }], - 'no-whitespace-before-property': ['error'], 'no-with': ['error'], - 'object-curly-newline': ['error', { multiline: true, consistent: true }], - 'object-property-newline': ['error', { allowMultiplePropertiesPerLine: true, allowAllPropertiesOnSameLine: false }], 'object-shorthand': ['warn', 'properties'], 'one-var': ['error', { initialized: 'never' }], - 'operator-linebreak': ['error', 'after', { overrides: { '?': 'before', ':': 'before', '|>': 'before' } }], - 'padded-blocks': ['error', { blocks: 'never', switches: 'never', classes: 'never' }], 'prefer-const': ['error', { destructuring: 'all', ignoreReadBeforeAssign: false }], 'prefer-regex-literals': ['error', { disallowRedundantWrapping: true }], - 'quote-props': ['error', 'as-needed'], - 'rest-spread-spacing': ['error', 'never'], - 'semi-spacing': ['error', { before: false, after: true }], - 'space-in-parens': ['error', 'never'], - 'space-unary-ops': ['error', { words: true, nonwords: false }], - 'spaced-comment': ['error', 'always', { - line: { markers: ['*package', '!', '/', ',', '='] }, - block: { balanced: true, markers: ['*package', '!', ',', ':', '::', 'flow-include'], exceptions: ['*'] } - }], 'symbol-description': ['error'], - 'template-curly-spacing': ['error', 'never'], - 'template-tag-spacing': ['error', 'never'], 'unicode-bom': ['error', 'never'], 'use-isnan': ['error', { enforceForSwitchCase: true, enforceForIndexOf: true }], 'valid-typeof': ['error', { requireStringLiterals: true }], - 'wrap-iife': ['error', 'any', { functionPrototypeMethods: true }], - 'yield-star-spacing': ['error', 'both'], yoda: ['error', 'never'], 'import/export': ['error'], diff --git a/src/test/_util.ts b/src/test/_util.ts index 331f50ce3..3b431291a 100644 --- a/src/test/_util.ts +++ b/src/test/_util.ts @@ -71,35 +71,17 @@ export const expectedExportedValue = { 'object-shorthand': ['warn', 'properties'], 'accessor-pairs': ['error', { setWithoutGet: true, getWithoutSet: false, enforceForClassMembers: true }], - 'array-bracket-spacing': ['error', 'never'], 'array-callback-return': ['error', { allowImplicit: false, allowVoid: false, checkForEach: false }], - 'arrow-spacing': ['error', { before: true, after: true }], - 'block-spacing': ['off'], - 'brace-style': ['off'], - 'comma-dangle': ['off'], - 'comma-spacing': ['off'], - 'comma-style': ['error', 'last'], - 'computed-property-spacing': ['error', 'never', { enforceForClassMembers: true }], 'constructor-super': ['error'], curly: ['error', 'multi-line'], 'default-case-last': ['error'], - 'dot-location': ['error', 'property'], 'dot-notation': ['off'], - 'eol-last': ['error'], eqeqeq: ['error', 'always', { null: 'ignore' }], - 'func-call-spacing': ['off'], - 'generator-star-spacing': ['error', { before: true, after: true }], - indent: ['off'], - 'key-spacing': ['off'], - 'keyword-spacing': ['off'], - 'lines-between-class-members': ['off'], - 'multiline-ternary': ['error', 'always-multiline'], 'new-cap': ['error', { newIsCap: true, capIsNew: false, properties: true }], - 'new-parens': ['error'], 'no-array-constructor': ['off'], 'no-async-promise-executor': ['error'], 'no-caller': ['error'], @@ -125,9 +107,7 @@ export const expectedExportedValue = { 'no-extend-native': ['error'], 'no-extra-bind': ['error'], 'no-extra-boolean-cast': ['error'], - 'no-extra-parens': ['off'], 'no-fallthrough': ['error'], - 'no-floating-decimal': ['error'], 'no-func-assign': ['error'], 'no-global-assign': ['error'], 'no-implied-eval': ['off'], @@ -141,24 +121,13 @@ export const expectedExportedValue = { 'no-misleading-character-class': ['error'], 'no-prototype-builtins': ['error'], 'no-useless-catch': ['error'], - 'no-mixed-operators': ['error', { - groups: [ - ['==', '!=', '===', '!==', '>', '>=', '<', '<='], - ['&&', '||'], - ['in', 'instanceof'] - ], - allowSamePrecedence: true - }], - 'no-mixed-spaces-and-tabs': ['error'], - 'no-multi-spaces': ['error'], 'no-multi-str': ['error'], - 'no-multiple-empty-lines': ['error', { max: 1, maxBOF: 0, maxEOF: 0 }], 'no-new': ['error'], 'no-new-func': ['error'], - 'no-new-object': ['error'], 'no-new-symbol': ['error'], 'no-new-wrappers': ['error'], 'no-obj-calls': ['error'], + 'no-object-constructor': ['error'], 'no-octal': ['error'], 'no-octal-escape': ['error'], 'no-proto': ['error'], @@ -170,11 +139,9 @@ export const expectedExportedValue = { 'no-sequences': ['error'], 'no-shadow-restricted-names': ['error'], 'no-sparse-arrays': ['error'], - 'no-tabs': ['error'], 'no-template-curly-in-string': ['error'], 'no-this-before-super': ['error'], 'no-throw-literal': ['off'], - 'no-trailing-spaces': ['error'], 'no-undef-init': ['error'], 'no-unexpected-multiline': ['error'], 'no-unmodified-loop-condition': ['error'], @@ -193,42 +160,18 @@ export const expectedExportedValue = { 'no-useless-rename': ['error'], 'no-useless-return': ['error'], 'no-void': ['error', { allowAsStatement: true }], - 'no-whitespace-before-property': ['error'], 'no-with': ['error'], - 'object-curly-newline': ['error', { multiline: true, consistent: true }], - 'object-curly-spacing': ['off'], - 'object-property-newline': ['error', { allowAllPropertiesOnSameLine: false, allowMultiplePropertiesPerLine: true }], 'one-var': ['error', { initialized: 'never' }], - 'operator-linebreak': ['error', 'after', { overrides: { '?': 'before', ':': 'before', '|>': 'before' } }], - 'padded-blocks': ['error', { blocks: 'never', switches: 'never', classes: 'never' }], 'prefer-const': ['error', { destructuring: 'all', ignoreReadBeforeAssign: false }], 'prefer-promise-reject-errors': ['off'], 'prefer-regex-literals': ['error', { disallowRedundantWrapping: true }], - 'quote-props': ['error', 'as-needed'], - quotes: ['off'], - 'rest-spread-spacing': ['error', 'never'], - semi: ['off'], - 'semi-spacing': ['error', { before: false, after: true }], - 'space-before-blocks': ['off'], - 'space-before-function-paren': ['off'], - 'space-in-parens': ['error', 'never'], - 'space-infix-ops': ['off'], - 'space-unary-ops': ['error', { words: true, nonwords: false }], - 'spaced-comment': ['error', 'always', { - line: { markers: ['*package', '!', '/', ',', '='] }, - block: { balanced: true, markers: ['*package', '!', ',', ':', '::', 'flow-include'], exceptions: ['*'] } - }], 'symbol-description': ['error'], - 'template-curly-spacing': ['error', 'never'], - 'template-tag-spacing': ['error', 'never'], 'unicode-bom': ['error', 'never'], 'use-isnan': ['error', { enforceForSwitchCase: true, enforceForIndexOf: true }], 'valid-typeof': ['error', { requireStringLiterals: true }], - 'wrap-iife': ['error', 'any', { functionPrototypeMethods: true }], - 'yield-star-spacing': ['error', 'both'], yoda: ['error', 'never'], 'import/export': ['error'], @@ -306,20 +249,7 @@ export const expectedExportedValue = { } } }], - '@typescript-eslint/block-spacing': ['error', 'always'], - '@typescript-eslint/brace-style': ['error', '1tbs', { allowSingleLine: true }], '@typescript-eslint/class-literal-property-style': ['error', 'fields'], - '@typescript-eslint/comma-dangle': ['error', { - arrays: 'never', - objects: 'never', - imports: 'never', - exports: 'never', - functions: 'never', - enums: 'ignore', - generics: 'ignore', - tuples: 'ignore' - }], - '@typescript-eslint/comma-spacing': ['error', { before: false, after: true }], '@typescript-eslint/consistent-generic-constructors': ['error', 'constructor'], '@typescript-eslint/consistent-indexed-object-style': ['error', 'record'], '@typescript-eslint/consistent-type-assertions': [ @@ -353,33 +283,6 @@ export const expectedExportedValue = { allowTypedFunctionExpressions: true, allowDirectConstAssertionInArrowFunctions: true }], - '@typescript-eslint/func-call-spacing': ['error', 'never'], - '@typescript-eslint/indent': ['error', 2, { - SwitchCase: 1, - VariableDeclarator: 1, - outerIIFEBody: 1, - MemberExpression: 1, - FunctionDeclaration: { parameters: 1, body: 1 }, - FunctionExpression: { parameters: 1, body: 1 }, - CallExpression: { arguments: 1 }, - ArrayExpression: 1, - ObjectExpression: 1, - ImportDeclaration: 1, - flatTernaryExpressions: false, - ignoreComments: false, - ignoredNodes: ['TemplateLiteral *', 'JSXElement', 'JSXElement > *', 'JSXAttribute', 'JSXIdentifier', 'JSXNamespacedName', 'JSXMemberExpression', 'JSXSpreadAttribute', 'JSXExpressionContainer', 'JSXOpeningElement', 'JSXClosingElement', 'JSXFragment', 'JSXOpeningFragment', 'JSXClosingFragment', 'JSXText', 'JSXEmptyExpression', 'JSXSpreadChild'], - offsetTernaryExpressions: true - }], - '@typescript-eslint/key-spacing': ['error', { beforeColon: false, afterColon: true }], - '@typescript-eslint/keyword-spacing': ['error', { before: true, after: true }], - '@typescript-eslint/lines-between-class-members': ['error', 'always', { exceptAfterOverload: true, exceptAfterSingleLine: true }], - '@typescript-eslint/member-delimiter-style': [ - 'error', - { - multiline: { delimiter: 'none' }, - singleline: { delimiter: 'comma', requireLast: false } - } - ], '@typescript-eslint/method-signature-style': ['error'], '@typescript-eslint/naming-convention': ['error', { selector: 'variableLike', @@ -407,9 +310,7 @@ export const expectedExportedValue = { '@typescript-eslint/no-non-null-assertion': ['error'], '@typescript-eslint/non-nullable-type-assertion-style': ['error'], '@typescript-eslint/no-this-alias': ['error', { allowDestructuring: true }], - '@typescript-eslint/no-extra-parens': ['error', 'functions'], '@typescript-eslint/no-redeclare': ['error', { builtinGlobals: false }], - '@typescript-eslint/no-throw-literal': ['error'], '@typescript-eslint/no-unnecessary-type-assertion': ['error'], '@typescript-eslint/no-unnecessary-type-constraint': ['error'], '@typescript-eslint/no-unnecessary-boolean-literal-compare': ['error'], @@ -419,7 +320,7 @@ export const expectedExportedValue = { '@typescript-eslint/no-unused-expressions': ['error', { allowShortCircuit: true, allowTaggedTemplates: true, allowTernary: true, enforceForJSX: false }], '@typescript-eslint/no-useless-constructor': ['error'], '@typescript-eslint/no-var-requires': ['error'], - '@typescript-eslint/object-curly-spacing': ['error', 'always'], + '@typescript-eslint/only-throw-error': ['error', { allowThrowingAny: false, allowThrowingUnknown: false }], '@typescript-eslint/prefer-function-type': ['error'], '@typescript-eslint/prefer-includes': ['error'], '@typescript-eslint/prefer-nullish-coalescing': ['error', { ignoreConditionalTests: false, ignoreMixedLogicalExpressions: false }], @@ -429,16 +330,11 @@ export const expectedExportedValue = { '@typescript-eslint/prefer-return-this-type': ['error'], '@typescript-eslint/prefer-ts-expect-error': ['error'], '@typescript-eslint/promise-function-async': ['error'], - '@typescript-eslint/quotes': ['error', 'single', { avoidEscape: true, allowTemplateLiterals: false }], '@typescript-eslint/prefer-promise-reject-errors': ['error'], '@typescript-eslint/restrict-plus-operands': ['error', { skipCompoundAssignments: false }], '@typescript-eslint/require-array-sort-compare': ['error', { ignoreStringArrays: true }], '@typescript-eslint/restrict-template-expressions': ['error', { allowNumber: true }], '@typescript-eslint/return-await': ['error', 'always'], - '@typescript-eslint/semi': ['error', 'never'], - '@typescript-eslint/space-before-blocks': ['error', 'always'], - '@typescript-eslint/space-before-function-paren': ['error', 'always'], - '@typescript-eslint/space-infix-ops': ['error'], '@typescript-eslint/strict-boolean-expressions': ['error', { allowString: false, allowNumber: false, @@ -449,7 +345,6 @@ export const expectedExportedValue = { allowAny: false }], '@typescript-eslint/triple-slash-reference': ['error', { lib: 'never', path: 'never', types: 'never' }], - '@typescript-eslint/type-annotation-spacing': ['error'], '@typescript-eslint/unbound-method': ['error', { ignoreStatic: false }] } } satisfies TSESLint.FlatConfig.Config diff --git a/src/test/rules-to-consider.ts b/src/test/rules-to-consider.ts index 43c25c614..5ed830ba5 100644 --- a/src/test/rules-to-consider.ts +++ b/src/test/rules-to-consider.ts @@ -29,6 +29,15 @@ const knownRules = new Map([ ...rulesets.flatMap(([rules, pkgName]) => Object.entries(rules).map(([name, rule]) => [`${pkgName}/${name}`, rule as unknown] as const)) ]) +const deprecatedKnownRules = [...knownRules.entries()] + .filter(([_name, rule_]) => { + const rule = rule_ as ({ meta?: { deprecated?: boolean } }) + const meta = rule.meta + if (meta === undefined) return false + return meta.deprecated === true + }) + .map(([name, _rule]) => name) + const notYetConsideredRules = [ '@typescript-eslint/class-methods-use-this', '@typescript-eslint/consistent-return', @@ -71,7 +80,6 @@ const notYetConsideredRules = [ '@typescript-eslint/no-unsafe-unary-minus', '@typescript-eslint/no-useless-empty-export', '@typescript-eslint/no-useless-template-literals', - '@typescript-eslint/only-throw-error', '@typescript-eslint/padding-line-between-statements', '@typescript-eslint/parameter-properties', '@typescript-eslint/prefer-as-const', @@ -250,7 +258,6 @@ const notYetConsideredRules = [ 'no-new-native-nonconstructor', 'no-new-require', 'no-nonoctal-decimal-escape', - 'no-object-constructor', 'no-param-reassign', 'no-path-concat', 'no-plusplus', @@ -329,7 +336,7 @@ const intentionallyExcludedRules: string[] = [ const usedRules = Object.keys(ourRules) -const acknowledgedRules = [...notYetConsideredRules, ...intentionallyExcludedRules, ...usedRules] +const acknowledgedRules = [...deprecatedKnownRules, ...notYetConsideredRules, ...intentionallyExcludedRules, ...usedRules] test('rule names valid', (t) => { const nonExistentRules = _.difference(acknowledgedRules, [...knownRules.keys()]) @@ -361,3 +368,8 @@ test('known rules are considered', (t) => { t.deepEqual(inexplicablyExcludedRules, []) }) + +test('no deprecated rules', (t) => { + const usedDeprecatedRules = Object.keys(ourRules).filter((name) => deprecatedKnownRules.includes(name)) + t.deepEqual(usedDeprecatedRules, []) +})