diff --git a/packages/eslint-plugin-tslint/src/rules/config.ts b/packages/eslint-plugin-tslint/src/rules/config.ts index 41326a8959c..6491d220603 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 5706006852b..66d51bbbfe9 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 fc89f43c15c..bd553386567 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-duplicate-imports.ts b/packages/eslint-plugin/src/rules/no-duplicate-imports.ts index f58ef76e5fc..170584bcb94 100644 --- a/packages/eslint-plugin/src/rules/no-duplicate-imports.ts +++ b/packages/eslint-plugin/src/rules/no-duplicate-imports.ts @@ -32,9 +32,8 @@ export default util.createRule({ includeExports: false, }, ], - create(context, [option]) { + create(context, [{ includeExports }]) { const rules = baseRule.create(context); - const includeExports = option.includeExports; const typeMemberImports = new Set(); const typeDefaultImports = new Set(); const typeExports = new Set(); diff --git a/packages/eslint-plugin/src/rules/no-unused-expressions.ts b/packages/eslint-plugin/src/rules/no-unused-expressions.ts index 8116cbf704e..c12c11aa4d5 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 2e6633afc57..67d1fb16a79 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 00c73820fd7..2ef6fb1c023 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 fdf48395eae..5ef4f242159 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 e2ccfa5182d..14d5a413087 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.