From 72ad35bd2c69c720df08bf5669fe334a3ecf791f Mon Sep 17 00:00:00 2001 From: Rafael Santana Date: Thu, 23 Sep 2021 22:35:43 -0300 Subject: [PATCH] refactor: normalize options indexes access --- packages/eslint-plugin-tslint/src/rules/config.ts | 8 +++----- packages/eslint-plugin/src/rules/init-declarations.ts | 9 ++++----- .../src/rules/lines-between-class-members.ts | 4 ++-- .../eslint-plugin/src/rules/no-unused-expressions.ts | 3 +-- packages/eslint-plugin/src/rules/no-unused-vars.ts | 2 +- .../eslint-plugin/src/rules/object-curly-spacing.ts | 7 +++---- .../src/rules/prefer-readonly-parameter-types.ts | 10 +++++----- .../src/rules/space-before-function-paren.ts | 8 +++----- 8 files changed, 22 insertions(+), 29 deletions(-) diff --git a/packages/eslint-plugin-tslint/src/rules/config.ts b/packages/eslint-plugin-tslint/src/rules/config.ts index 41326a8959c1..6491d2206032 100644 --- a/packages/eslint-plugin-tslint/src/rules/config.ts +++ b/packages/eslint-plugin-tslint/src/rules/config.ts @@ -106,11 +106,9 @@ export default createRule({ /** * The TSLint rules configuration passed in by the user */ - const { - rules: tslintRules, - rulesDirectory: tslintRulesDirectory, - lintFile, - } = context.options[0]; + const [ + { rules: tslintRules, rulesDirectory: tslintRulesDirectory, lintFile }, + ] = context.options; const program = parserServices.program; diff --git a/packages/eslint-plugin/src/rules/init-declarations.ts b/packages/eslint-plugin/src/rules/init-declarations.ts index 5706006852b2..66d51bbbfe9f 100644 --- a/packages/eslint-plugin/src/rules/init-declarations.ts +++ b/packages/eslint-plugin/src/rules/init-declarations.ts @@ -1,12 +1,12 @@ import { - TSESTree, AST_NODE_TYPES, + TSESTree, } from '@typescript-eslint/experimental-utils'; import baseRule from 'eslint/lib/rules/init-declarations'; import { - InferOptionsTypeFromRule, - InferMessageIdsTypeFromRule, createRule, + InferMessageIdsTypeFromRule, + InferOptionsTypeFromRule, } from '../util'; export type Options = InferOptionsTypeFromRule; @@ -32,9 +32,8 @@ export default createRule({ }, }, defaultOptions: ['always'], - create(context) { + create(context, [mode]) { const rules = baseRule.create(context); - const mode = context.options[0] || 'always'; return { 'VariableDeclaration:exit'(node: TSESTree.VariableDeclaration): void { 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 fc89f43c15c8..bd5533865670 100644 --- a/packages/eslint-plugin/src/rules/lines-between-class-members.ts +++ b/packages/eslint-plugin/src/rules/lines-between-class-members.ts @@ -44,10 +44,10 @@ export default util.createRule({ exceptAfterSingleLine: false, }, ], - create(context, options) { + create(context, [firstOption, secondOption]) { const rules = baseRule.create(context); const exceptAfterOverload = - options[1]?.exceptAfterOverload && options[0] === 'always'; + secondOption?.exceptAfterOverload && firstOption === 'always'; function isOverload(node: TSESTree.Node): boolean { return ( diff --git a/packages/eslint-plugin/src/rules/no-unused-expressions.ts b/packages/eslint-plugin/src/rules/no-unused-expressions.ts index 8116cbf704e3..c12c11aa4d5f 100644 --- a/packages/eslint-plugin/src/rules/no-unused-expressions.ts +++ b/packages/eslint-plugin/src/rules/no-unused-expressions.ts @@ -31,9 +31,8 @@ export default util.createRule({ allowTaggedTemplates: false, }, ], - create(context, options) { + create(context, [{ allowShortCircuit = false, allowTernary = false }]) { const rules = baseRule.create(context); - const { allowShortCircuit = false, allowTernary = false } = options[0]; function isValidExpression(node: TSESTree.Node): boolean { if (allowShortCircuit && node.type === AST_NODE_TYPES.LogicalExpression) { diff --git a/packages/eslint-plugin/src/rules/no-unused-vars.ts b/packages/eslint-plugin/src/rules/no-unused-vars.ts index 2e6633afc57f..67d1fb16a79e 100644 --- a/packages/eslint-plugin/src/rules/no-unused-vars.ts +++ b/packages/eslint-plugin/src/rules/no-unused-vars.ts @@ -95,7 +95,7 @@ export default util.createRule({ caughtErrors: 'none', }; - const firstOption = context.options[0]; + const [firstOption] = context.options; if (firstOption) { if (typeof firstOption === 'string') { diff --git a/packages/eslint-plugin/src/rules/object-curly-spacing.ts b/packages/eslint-plugin/src/rules/object-curly-spacing.ts index 00c73820fd7c..2ef6fb1c0238 100644 --- a/packages/eslint-plugin/src/rules/object-curly-spacing.ts +++ b/packages/eslint-plugin/src/rules/object-curly-spacing.ts @@ -29,7 +29,8 @@ export default createRule({ }, defaultOptions: ['never'], create(context) { - const spaced = context.options[0] === 'always'; + const [firstOption, secondOption] = context.options; + const spaced = firstOption === 'always'; const sourceCode = context.getSourceCode(); /** @@ -42,9 +43,7 @@ export default createRule({ function isOptionSet( option: 'arraysInObjects' | 'objectsInObjects', ): boolean { - return context.options[1] - ? context.options[1][option] === !spaced - : false; + return secondOption ? secondOption[option] === !spaced : false; } const options = { diff --git a/packages/eslint-plugin/src/rules/prefer-readonly-parameter-types.ts b/packages/eslint-plugin/src/rules/prefer-readonly-parameter-types.ts index fdf48395eae5..5ef4f2421594 100644 --- a/packages/eslint-plugin/src/rules/prefer-readonly-parameter-types.ts +++ b/packages/eslint-plugin/src/rules/prefer-readonly-parameter-types.ts @@ -1,6 +1,6 @@ import { - TSESTree, AST_NODE_TYPES, + TSESTree, } from '@typescript-eslint/experimental-utils'; import * as util from '../util'; @@ -49,10 +49,10 @@ export default util.createRule({ ...util.readonlynessOptionsDefaults, }, ], - create(context, options) { - const [ - { checkParameterProperties, ignoreInferredTypes, treatMethodsAsReadonly }, - ] = options; + create( + context, + [{ checkParameterProperties, ignoreInferredTypes, treatMethodsAsReadonly }], + ) { const { esTreeNodeToTSNodeMap, program } = util.getParserServices(context); const checker = program.getTypeChecker(); 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 e2ccfa5182db..14d5a413087c 100644 --- a/packages/eslint-plugin/src/rules/space-before-function-paren.ts +++ b/packages/eslint-plugin/src/rules/space-before-function-paren.ts @@ -59,12 +59,10 @@ export default util.createRule({ }, defaultOptions: ['always'], - create(context) { + create(context, [firstOption]) { const sourceCode = context.getSourceCode(); - const baseConfig = - typeof context.options[0] === 'string' ? context.options[0] : 'always'; - const overrideConfig = - typeof context.options[0] === 'object' ? context.options[0] : {}; + const baseConfig = typeof firstOption === 'string' ? firstOption : 'always'; + const overrideConfig = typeof firstOption === 'object' ? firstOption : {}; /** * Determines whether a function has a name.