diff --git a/types/eslint/eslint-tests.ts b/types/eslint/eslint-tests.ts index 6d175716b3..26959d5c5e 100644 --- a/types/eslint/eslint-tests.ts +++ b/types/eslint/eslint-tests.ts @@ -370,6 +370,11 @@ linter.verify(SOURCE, { env: { node: true } }, 'test.js'); linter.verify(SOURCE, { globals: { foo: true } }, 'test.js'); linter.verify(SOURCE, { parser: 'custom-parser' }, 'test.js'); linter.verify(SOURCE, { settings: { info: 'foo' } }, 'test.js'); +linter.verify(SOURCE, { processor: 'a-plugin/a-processor' }, 'test.js'); +linter.verify(SOURCE, { plugins: ['a-plugin'] }, 'test.js'); +linter.verify(SOURCE, { root: true }, 'test.js'); +linter.verify(SOURCE, { extends: 'eslint-config-bad-guy' }, 'test.js'); +linter.verify(SOURCE, { extends: ['eslint-config-bad-guy', 'eslint-config-roblox'] }, 'test.js'); linter.verify(SOURCE, { rules: {} }, 'test.js'); linter.verify(SOURCE, { rules: { quotes: 2 } }, 'test.js'); @@ -378,6 +383,18 @@ linter.verify(SOURCE, { rules: { 'no-unused-vars': [2, { vars: 'all' }] } }, 'te linter.verify(SOURCE, { rules: { 'no-console': 1 } }, 'test.js'); linter.verify(SOURCE, { rules: { 'no-console': 0 } }, 'test.js'); linter.verify(SOURCE, { rules: { 'no-console': 'error' } }, 'test.js'); +linter.verify(SOURCE, { + rules: { 'no-console': 'error' }, + overrides: [ + { + excludedFiles: ['*-test.js', '*.spec.js'], + files: ['*-test.js', '*.spec.js'], + rules: { + 'no-unused-expressions': 'off' + } + } + ] +}, 'test.js'); linter.verify(SOURCE, { rules: { 'no-console': 'warn' } }, 'test.js'); linter.verify(SOURCE, { rules: { 'no-console': 'off' } }, 'test.js'); diff --git a/types/eslint/index.d.ts b/types/eslint/index.d.ts index f1a585046c..04367936e6 100644 --- a/types/eslint/index.d.ts +++ b/types/eslint/index.d.ts @@ -379,16 +379,28 @@ export namespace Linter { interface RuleLevelAndOptions extends Array { 0: RuleLevel; } - - interface Config { + interface HasRules { rules?: { [name: string]: RuleLevel | RuleLevelAndOptions }; + } + + interface RuleOverride extends HasRules { + excludedFiles?: string[]; + files?: string[]; + } + + interface Config extends HasRules { parser?: string; parserOptions?: ParserOptions; settings?: { [name: string]: any }; env?: { [name: string]: boolean }; globals?: { [name: string]: boolean }; + extends?: string | string[]; + overrides?: RuleOverride[]; + processor?: string; + plugins?: string[]; + root?: boolean; } interface ParserOptions {