Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(eslint-plugin): rework configs: recommended, strict, stylistic; -type-checked #5251

Merged
Merged
Show file tree
Hide file tree
Changes from 55 commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
c282891
feat\!: include lesser configs in recommended/strict
JoshuaKGoldberg Jun 25, 2022
9f697c5
Instead of nested includes, just go with flat
JoshuaKGoldberg Jun 26, 2022
272c8cf
Merge branch 'main' into config-inclusions
JoshuaKGoldberg Jun 26, 2022
b6f900f
Fix configs test too
JoshuaKGoldberg Jun 26, 2022
e108d5c
Merge branch 'main' into config-inclusions
JoshuaKGoldberg Jun 26, 2022
ac8c762
Merge branch 'main' into config-inclusions
JoshuaKGoldberg Jun 28, 2022
1f0c9af
Merge branch 'main'
JoshuaKGoldberg Oct 25, 2022
0414e4d
fix(utils): removed `TRuleListener` generic from the `createRule` (#5…
Andarist Oct 25, 2022
04488c2
feat: create TSTypeQuery node when TSImportType has isTypeOf (#3076)
armano2 Oct 26, 2022
ee2fbfa
Merge branch 'main' into v6
JoshuaKGoldberg Oct 26, 2022
c446386
feat(scope-manager): ignore ECMA version (#5889)
JoshuaKGoldberg Oct 26, 2022
cf2956f
feat: remove semantically invalid properties from TSEnumDeclaration, …
juank1809 Oct 26, 2022
b90e7c3
fix(eslint-plugin): remove valid-typeof disable in eslint-recommended…
JoshuaKGoldberg Oct 26, 2022
fff0e29
feat(utils): remove (ts-)eslint-scope types (#5256)
JoshuaKGoldberg Oct 26, 2022
3d85274
Merge branch 'main' into v6
JoshuaKGoldberg Oct 26, 2022
5b9c379
fix(eslint-plugin): [explicit-module-boundary-types] remove shouldTra…
JoshuaKGoldberg Oct 26, 2022
2a40b70
Merge branch 'v6' into config-inclusions
JoshuaKGoldberg Oct 26, 2022
d434265
Merge branch 'main'
JoshuaKGoldberg Nov 27, 2022
7e8ca66
Enabled base config
JoshuaKGoldberg Nov 27, 2022
984386a
The script runs now
JoshuaKGoldberg Nov 27, 2022
7ccab0e
Upgraded ts-node to avoid bug
JoshuaKGoldberg Nov 27, 2022
fe7b171
Updated configuration docs
JoshuaKGoldberg Nov 27, 2022
d021117
Updated configs exports
JoshuaKGoldberg Nov 27, 2022
c843741
Merge branch 'v6'
JoshuaKGoldberg Nov 27, 2022
2e92921
Updated generation script
JoshuaKGoldberg Nov 28, 2022
763a10b
Merge branch 'v6'
JoshuaKGoldberg Dec 8, 2022
d16370a
Revert CHANGELOG.md change
JoshuaKGoldberg Dec 8, 2022
4089c1d
Switch to ts-node/esm loader
JoshuaKGoldberg Dec 8, 2022
ed459fd
Merge branch 'v6'
JoshuaKGoldberg Dec 11, 2022
41cce4f
Merge branch 'v6' into config-inclusions
JoshuaKGoldberg Dec 16, 2022
81e9557
Fix post-merge type failure
JoshuaKGoldberg Dec 16, 2022
97965ee
pin ts-node to 10.9.0
JoshuaKGoldberg Dec 16, 2022
de26b3e
Merge branch 'v6'
JoshuaKGoldberg Dec 16, 2022
d294820
Switch to tsx for all but Docusaurus
JoshuaKGoldberg Dec 16, 2022
df4ffd6
Fix post-merge generate-breaking-changes issues
JoshuaKGoldberg Dec 16, 2022
6f8f3cc
Switched generation to explicitly include lesser rules
JoshuaKGoldberg Dec 16, 2022
1d05507
Include recommended in strict
JoshuaKGoldberg Dec 16, 2022
ded136e
More granular caching in prepare-install/action.yml
JoshuaKGoldberg Dec 17, 2022
4fc72ba
Fix type checking issues with generate-configs.mts
JoshuaKGoldberg Dec 17, 2022
0980718
Adjusted docs, tests, and RulesTable
JoshuaKGoldberg Dec 17, 2022
717eb93
Adjusted rule docs pages and more RulesTable fixes
JoshuaKGoldberg Dec 17, 2022
208a75b
Swap 💅 to 🎨
JoshuaKGoldberg Dec 17, 2022
83097ba
pin ts-node to 10.7.0
JoshuaKGoldberg Dec 18, 2022
d711d27
Fix docs post-merge artifact
JoshuaKGoldberg Dec 18, 2022
6f5a98e
Err, mostly or completely fix
JoshuaKGoldberg Dec 18, 2022
20a3c15
prefer-reduce-type-parameter back to strict; fix other complaints
JoshuaKGoldberg Dec 18, 2022
1a6281a
Put integration test back
JoshuaKGoldberg Dec 18, 2022
5c350c9
Start updating the snapshot
JoshuaKGoldberg Dec 18, 2022
26fff6f
More snapshot correction
JoshuaKGoldberg Dec 18, 2022
8f0b98e
Put no-unused-vars in recommended
JoshuaKGoldberg Dec 18, 2022
05cacb4
Fix root config to always error; remove unneeded no-unused-vars
JoshuaKGoldberg Dec 18, 2022
818a6de
Some more linting
JoshuaKGoldberg Dec 18, 2022
45f2d9c
Merge branch 'v6' into config-inclusions
JoshuaKGoldberg Jan 19, 2023
45d5ae5
Undo action.yml changes
JoshuaKGoldberg Jan 19, 2023
122e95b
Added todo
JoshuaKGoldberg Jan 19, 2023
e747315
Fix no-extra-semi.ts and configs.test.ts
JoshuaKGoldberg Feb 4, 2023
32811c6
Merge branch 'v6' into config-inclusions
JoshuaKGoldberg Feb 4, 2023
47bf5d3
Merge branch 'v6'
JoshuaKGoldberg Feb 4, 2023
f041254
Update packages/eslint-plugin/tools/generate-configs.mts
JoshuaKGoldberg Feb 4, 2023
2611c58
Last few review fixups
JoshuaKGoldberg Feb 4, 2023
7bacfdf
lil 'a' typo
JoshuaKGoldberg Feb 4, 2023
c94af6f
Merge branch 'v6'
JoshuaKGoldberg Feb 4, 2023
3260492
No more .mts needed
JoshuaKGoldberg Feb 4, 2023
0c5d1fe
Adjust eslint-plugin/tools/generate files to build
JoshuaKGoldberg Feb 4, 2023
ce77d04
Fix casing
JoshuaKGoldberg Feb 4, 2023
aa470c5
...and extensions
JoshuaKGoldberg Feb 4, 2023
a807b42
git mv for casing
JoshuaKGoldberg Feb 5, 2023
ee09857
Merge branch '6'
JoshuaKGoldberg Feb 6, 2023
06e6f09
Simplify old recommended-requiring-type-checking include; delete file
JoshuaKGoldberg Feb 14, 2023
48e2f11
Merge branch 'v6'
JoshuaKGoldberg Feb 14, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
18 changes: 9 additions & 9 deletions .eslintrc.js
Expand Up @@ -17,8 +17,8 @@ module.exports = {
extends: [
'eslint:recommended',
'plugin:eslint-plugin/recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'plugin:@typescript-eslint/recommended-type-checked',
// TODO: consider enabling strict-type-checked and/or stylistic-type-checked
],
parserOptions: {
sourceType: 'module',
Expand Down Expand Up @@ -89,7 +89,7 @@ module.exports = {
},
],
'@typescript-eslint/no-unused-vars': [
'warn',
'error',
{ varsIgnorePattern: '^_', argsIgnorePattern: '^_' },
],

Expand All @@ -110,7 +110,7 @@ module.exports = {
'no-console': 'error',
'no-process-exit': 'error',
'no-fallthrough': [
'warn',
'error',
{ commentPattern: '.*intentional fallthrough.*' },
],

Expand Down Expand Up @@ -209,7 +209,7 @@ module.exports = {
'@typescript-eslint/no-unsafe-member-access': 'off',
'@typescript-eslint/no-unsafe-return': 'off',
'eslint-plugin/consistent-output': 'off', // Might eventually be removed from `eslint-plugin/recommended`: https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/issues/284
'jest/no-disabled-tests': 'warn',
'jest/no-disabled-tests': 'error',
'jest/no-focused-tests': 'error',
'jest/no-alias-methods': 'error',
'jest/no-identical-title': 'error',
Expand All @@ -218,9 +218,9 @@ module.exports = {
'jest/no-test-prefixes': 'error',
'jest/no-done-callback': 'error',
'jest/no-test-return-statement': 'error',
'jest/prefer-to-be': 'warn',
'jest/prefer-to-contain': 'warn',
'jest/prefer-to-have-length': 'warn',
'jest/prefer-to-be': 'error',
'jest/prefer-to-contain': 'error',
'jest/prefer-to-have-length': 'error',
'jest/prefer-spy-on': 'error',
'jest/valid-expect': 'error',
'jest/no-deprecated-functions': 'error',
Expand Down Expand Up @@ -299,7 +299,7 @@ module.exports = {
},
// tools and tests
{
files: ['**/tools/**/*.ts', '**/tests/**/*.ts'],
files: ['**/tools/**/*.*t*', '**/tests/**/*.ts'],
rules: {
// allow console logs in tools and tests
'no-console': 'off',
Expand Down
2 changes: 0 additions & 2 deletions docs/Custom_Rules.md
Expand Up @@ -63,7 +63,6 @@ export const rule = createRule({
docs: {
description:
'Function declaration names should start with an upper-case letter.',
recommended: 'warn',
},
messages: {
uppercase: 'Start this name with an upper-case letter.',
Expand Down Expand Up @@ -254,7 +253,6 @@ export const rule = createRule({
meta: {
docs: {
description: 'Avoid looping over enums.',
recommended: 'error',
},
messages: {
loopOverEnum: 'Do not loop over enums.',
Expand Down
129 changes: 94 additions & 35 deletions docs/linting/CONFIGURATIONS.mdx
Expand Up @@ -3,23 +3,60 @@ id: configs
title: Configurations
---

[ESLint shareable configurations](https://eslint.org/docs/latest/developer-guide/shareable-configs) exist to provide a comprehensive base config for you.
[ESLint shareable configurations](https://eslint.org/docs/latest/developer-guide/shareable-configs) exist to provide a comprehensive list of rules settings that you can start with.
`@typescript-eslint/eslint-plugin` includes built-in configurations you can extend from to pull in the recommended starting rules.

> With the exception of `strict`, all configurations are considered "stable".
> With the exception of `all`, `strict`, and `strict-type-checked`, all configurations are considered "stable".
> Rule additions and removals are treated as breaking changes and will only be done in major version bumps.

## Getting Started

### Projects Without Type Checking

If your project does not enable [typed linting](./Typed_Linting.md), we suggest enabling the [`recommended`](#recommended) and [`stylistic`](#stylistic) configurations to start:

```json
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/stylistic"
]
}
```

> If a majority of developers working on your project are comfortable with TypeScript and typescript-eslint, consider replacing `recommended` with `strict`.

### Projects With Type Checking

If your project enables [typed linting](./Typed_Linting.md), we suggest:

```json
{
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended-type-checked",
"plugin:@typescript-eslint/stylistic-type-checked"
]
}
```

> If a majority of developers working on your project are comfortable with TypeScript and typescript-eslint, consider replacing `recommended-type-checked` with `strict-type-checked`.

## Recommended Configurations

Most projects should extend from at least one of:
We recommend that most projects should extend from one of:

- [`recommended`](#recommended): Recommended rules for code correctness that you can drop in without additional configuration.
- [`recommended-requiring-type-checking`](#recommended-requiring-type-checking): Additional recommended rules that require type information.
- [`recommended-type-checked`](#recommended-type-checked): Additional recommended rules that require type information.
- [`strict`](#strict): Additional strict rules that can also catch bugs but are more opinionated than recommended rules.
- [`strict-type-checked`](#strict-type-checked): Additional strict rules require type information.

:::tip
We recommend most projects use [`recommended-requiring-type-checking`](#recommended-requiring-type-checking) (which requires [typed linting](./Typed_Linting.md)).
:::
Additionally, we provide a [`stylistic`](#stylistic) config that enforces concise and consistent code.
We recommend that most projects should extend from either:

- [`stylistic`](#stylistic): Stylistic rules you can drop in without additional configuration.
- [`stylistic-type-checked`](#stylistic-type-checked): Additional stylistic rules that require type information.

:::note
These configurations are our recommended starting points, but **you don't need to use them as-is**.
Expand All @@ -31,7 +68,7 @@ See [ESLint's Configuring Rules docs](https://eslint.org/docs/user-guide/configu

Recommended rules for code correctness that you can drop in without additional configuration.
These rules are those whose reports are almost always for a bad practice and/or likely bug.
`recommended` also disables rules known to conflict with this repository, or cause issues in TypeScript codebases.
`recommended` also disables core ESLint rules known to conflict with typescript-eslint rules or cause issues in TypeScript codebases.

```json
{
Expand All @@ -41,50 +78,70 @@ These rules are those whose reports are almost always for a bad practice and/or

See [`configs/recommended.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/recommended.ts) for the exact contents of this config.

:::tip
We strongly recommend all TypeScript projects extend from `plugin:@typescript-eslint/recommended`.
:::

### `recommended-requiring-type-checking`
### `recommended-type-checked`

Additional recommended rules that require type information.
Rules in this configuration are similarly useful to those in `recommended`.
Contains all of `recommended` along with additional recommended rules that require type information.
Rules newly added in this configuration are similarly useful to those in `recommended`.

```json
{
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking"
]
"extends": ["plugin:@typescript-eslint/recommended-type-checked"]
}
```

See [`configs/recommended-requiring-type-checking.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/recommended-requiring-type-checking.ts) for the exact contents of this config.

:::tip
We recommend all TypeScript projects extend from `plugin:@typescript-eslint/recommended-requiring-type-checking`, with the caveat that rules using type information take longer to run.
See [Linting with Type Information](/linting/typed-linting) for more details.
:::
See [`configs/recommended-type-checked.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/recommended-type-checked.ts) for the exact contents of this config.

### `strict`

Additional strict rules that can also catch bugs but are more opinionated than recommended rules.
Contains all of `recommended`, as well as additional strict rules that can also catch bugs.
Rules added in `strict` are more opinionated than recommended rules and might not apply to all projects.

```json
{
"extends": [
"plugin:@typescript-eslint/recommended",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"plugin:@typescript-eslint/strict"
]
"extends": ["plugin:@typescript-eslint/strict"]
}
```

See [`configs/strict.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/strict.ts) for the exact contents of this config.

:::caution
We recommend a TypeScript project extend from `plugin:@typescript-eslint/strict` only if a nontrivial percentage of its developers are highly proficient in TypeScript.
:::
### `strict-type-checked`

Contains all of `recommended`, `recommended-type-checked`, and `strict`, along with additional strict rules that require type information.
Rules newly added in this configuration are similarly useful (and opinionated) to those in `strict`.

```json
{
"extends": ["plugin:@typescript-eslint/strict-type-checked"]
}
```

See [`configs/strict-type-checked.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/strict-type-checked.ts) for the exact contents of this config.

### `stylistic`

Rules considered to be best practice for modern TypeScript codebases, but that do not impact program logic.
These rules are generally opinionated about enforcing simpler code patterns.

```json
{
"extends": ["plugin:@typescript-eslint/stylistic"]
}
```

See [`configs/stylistic.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/stylistic.ts) for the exact contents of this config.

### `stylistic-type-checked`

Contains all of `stylistic`, along with additional stylistic rules that require type information.
Rules newly added in this configuration are similarly opinionated to those in `stylistic`.

```json
{
"extends": ["plugin:@typescript-eslint/stylistic-type-checked"]
}
```

See [`configs/stylistic-type-checked.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/strict-type-checked.ts) for the exact contents of this config.

## Other Configurations

Expand All @@ -111,6 +168,8 @@ A minimal ruleset that sets only the required parser and plugin options needed t

This config is automatically included if you use any of the recommended configurations.

See [`configs/base.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/base.ts) for the exact contents of this config.

### `eslint-recommended`

This ruleset is meant to be used after extending `eslint:recommended`.
Expand All @@ -128,7 +187,7 @@ Additionally, it enables rules that promote using the more modern constructs Typ

This config is automatically included if you use any of the recommended configurations.

See [`configs/eslint-recommended.ts``](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/eslint-recommended.ts) for the exact contents of this config.
See [`configs/eslint-recommended.ts`](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/src/configs/eslint-recommended.ts) for the exact contents of this config.

## Suggesting Configuration Changes

Expand Down
4 changes: 2 additions & 2 deletions docs/linting/Typed_Linting.md
Expand Up @@ -21,7 +21,7 @@ module.exports = {
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
// Add this line
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'plugin:@typescript-eslint/recommended-type-checked',
],
};
```
Expand All @@ -31,7 +31,7 @@ In more detail:
- `parserOptions.tsconfigRootDir` tells our parser the absolute path of your project's root directory.
- `parserOptions.project` tells our parser the relative path where your project's `tsconfig.json` is.
- If your project is a multi-package monorepo, see [our docs on configuring a monorepo](./typed-linting/Monorepos.md).
- `plugin:@typescript-eslint/recommended-requiring-type-checking` is another recommended configuration we provide. This one contains rules that specifically require type information.
- `plugin:@typescript-eslint/recommended-type-checked` is another recommended configuration we provide. This one contains rules that specifically require type information.

With that done, run the same lint command you ran before.
You may see new rules reporting errors based on type information!
Expand Down
4 changes: 2 additions & 2 deletions docs/linting/typed-linting/Monorepos.md
Expand Up @@ -47,7 +47,7 @@ module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'plugin:@typescript-eslint/recommended-type-checked',
],
parser: '@typescript-eslint/parser',
parserOptions: {
Expand All @@ -72,7 +72,7 @@ module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
'plugin:@typescript-eslint/recommended-requiring-type-checking',
'plugin:@typescript-eslint/recommended-type-checked',
],
parser: '@typescript-eslint/parser',
parserOptions: {
Expand Down
13 changes: 7 additions & 6 deletions package.json
Expand Up @@ -30,15 +30,15 @@
"check-spelling": "cspell --config=.cspell.json \"**/*.{md,mdx,ts,mts,cts,js,cjs,mjs,tsx,jsx}\"",
"clean": "lerna clean -y && nx run-many --target=clean",
"format": "prettier --write .",
"generate-contributors": "yarn ts-node --transpile-only ./tools/generate-contributors.ts",
"generate-sponsors": "yarn ts-node --transpile-only ./tools/generate-sponsors.ts",
"generate-website-dts": "yarn ts-node --transpile-only ./tools/generate-website-dts.ts",
"generate-contributors": "yarn tsx ./tools/generate-contributors.ts",
"generate-sponsors": "yarn tsx ./tools/generate-sponsors.ts",
"generate-website-dts": "yarn tsx ./tools/generate-website-dts.ts",
"generate-lib": "nx generate-lib @typescript-eslint/scope-manager",
"lint-fix": "eslint . --fix",
"lint-markdown-fix": "yarn lint-markdown --fix",
"lint-markdown": "markdownlint \"**/*.md\" --config=.markdownlint.json --ignore-path=.markdownlintignore",
"lint": "nx run-many --target=lint --all --parallel",
"postinstall": "yarn ts-node --transpile-only ./tools/postinstall.ts",
"postinstall": "yarn tsx ./tools/postinstall.ts",
"pre-commit": "yarn lint-staged",
"start": "nx run website:start",
"test": "nx run-many --target=test --all --parallel",
Expand All @@ -54,8 +54,8 @@
"@babel/eslint-parser": "^7.19.1",
"@babel/parser": "^7.20.3",
"@babel/types": "^7.20.2",
"@nrwl/nx-cloud": "15.0.2",
"@nrwl/jest": "15.3.2",
"@nrwl/nx-cloud": "15.0.2",
"@nrwl/workspace": "15.3.2",
"@swc/core": "^1.3.1",
"@swc/jest": "^0.2.21",
Expand Down Expand Up @@ -105,8 +105,9 @@
"pretty-format": "^29.0.3",
"rimraf": "^3.0.2",
"tmp": "^0.2.1",
"ts-node": "^10.7.0",
"ts-node": "10.7.0",
"tslint": "^6.1.3",
"tsx": "^3.12.1",
"typescript": ">=4.2.4 <5.0.0"
},
"resolutions": {
Expand Down
Expand Up @@ -36,7 +36,7 @@ export default createRule({
docs: {
description:
"Enforce that rules don't use TS API properties with known bad type definitions",
recommended: 'error',
recommended: 'recommended',
requiresTypeChecking: true,
},
fixable: 'code',
Expand Down
Expand Up @@ -21,7 +21,7 @@ export default createRule({
docs: {
description:
"Enforce that packages rules don't do `import ts from 'typescript';`",
recommended: 'error',
recommended: 'recommended',
},
fixable: 'code',
schema: [],
Expand Down
Expand Up @@ -16,7 +16,7 @@ export default createRule({
type: 'problem',
docs: {
description: `Enforce that eslint-plugin rules don't require anything from ${TSESTREE_NAME} or ${TYPES_NAME}`,
recommended: 'error',
recommended: 'recommended',
},
fixable: 'code',
schema: [],
Expand Down
Expand Up @@ -108,7 +108,7 @@ export default createRule<Options, MessageIds>({
type: 'problem',
docs: {
description: `Enforce that eslint-plugin test snippets are correctly formatted`,
recommended: 'error',
recommended: 'recommended',
requiresTypeChecking: true,
},
fixable: 'code',
Expand Down
Expand Up @@ -13,7 +13,7 @@ export default createRule({
meta: {
type: 'problem',
docs: {
recommended: 'error',
recommended: 'recommended',
description:
'Enforce consistent usage of `AST_NODE_TYPES`, `AST_TOKEN_TYPES` and `DefinitionType` enums',
},
Expand Down
1 change: 0 additions & 1 deletion packages/eslint-plugin-tslint/src/rules/config.ts
Expand Up @@ -65,7 +65,6 @@ export default createRule<Options, MessageIds>({
docs: {
description:
'Wraps a TSLint configuration and lints the whole source using TSLint', // eslint-disable-line eslint-plugin/require-meta-docs-description
recommended: false,
},
fixable: 'code',
type: 'problem',
Expand Down