Add properties to Linter.Config type (#37341)

Makes it so that any valid eslint config can be assignable to type
Linter.Config.
This commit is contained in:
fifn2
2019-08-08 15:44:13 -07:00
committed by Nathan Shively-Sanders
parent 0b99c741a0
commit 7d72acde1d
2 changed files with 31 additions and 2 deletions

View File

@@ -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');

View File

@@ -379,16 +379,28 @@ export namespace Linter {
interface RuleLevelAndOptions extends Array<any> {
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 {