Skip to content

Commit d23f06d

Browse files
committed
fix(eslint-plugin): add type-checked configs to legacy config
1 parent be23b4c commit d23f06d

10 files changed

Lines changed: 135 additions & 24 deletions

File tree

modules/eslint-plugin/scripts/generate-config.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { NgRxRule } from '../src/rule-creator';
1515
rule.meta.docs?.requiresTypeChecking === true;
1616

1717
writeConfig('all', (rule) => !isTypeChecked(rule));
18-
writeConfig('allTypeChecked', (_rule) => true);
18+
writeConfig('all-type-checked', (_rule) => true);
1919

2020
writeConfig(
2121
'store',
@@ -26,7 +26,7 @@ import { NgRxRule } from '../src/rule-creator';
2626
'effects',
2727
(rule) => isModule(rule, 'effects') && !isTypeChecked(rule)
2828
);
29-
writeConfig('effectsTypeChecked', (rule) => isModule(rule, 'effects'));
29+
writeConfig('effects-type-checked', (rule) => isModule(rule, 'effects'));
3030

3131
writeConfig(
3232
'component-store',
@@ -42,19 +42,19 @@ import { NgRxRule } from '../src/rule-creator';
4242
'signals',
4343
(rule) => isModule(rule, 'signals') && !isTypeChecked(rule)
4444
);
45-
writeConfig('signalsTypeChecked', (rule) => isModule(rule, 'signals'));
45+
writeConfig('signals-type-checked', (rule) => isModule(rule, 'signals'));
4646

4747
async function writeConfig(
4848
configName:
4949
| 'all'
50-
| 'allTypeChecked'
50+
| 'all-type-checked'
5151
| 'store'
5252
| 'effects'
53-
| 'effectsTypeChecked'
53+
| 'effects-type-checked'
5454
| 'component-store'
5555
| 'operators'
5656
| 'signals'
57-
| 'signalsTypeChecked',
57+
| 'signals-type-checked',
5858
predicate: (rule: NgRxRule) => boolean
5959
) {
6060
const rulesForConfig = Object.entries(rulesForGenerate).filter(
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"parser": "@typescript-eslint/parser",
3+
"plugins": ["@ngrx"],
4+
"rules": {
5+
"@ngrx/avoid-combining-component-store-selectors": "error",
6+
"@ngrx/avoid-mapping-component-store-selectors": "error",
7+
"@ngrx/require-super-ondestroy": "error",
8+
"@ngrx/updater-explicit-return-type": "error",
9+
"@ngrx/avoid-cyclic-effects": "error",
10+
"@ngrx/no-dispatch-in-effects": "error",
11+
"@ngrx/no-effects-in-providers": "error",
12+
"@ngrx/no-multiple-actions-in-effects": "error",
13+
"@ngrx/prefer-action-creator-in-of-type": "error",
14+
"@ngrx/prefer-effect-callback-in-block-statement": "error",
15+
"@ngrx/use-effects-lifecycle-interface": "error",
16+
"@ngrx/prefer-concat-latest-from": "error",
17+
"@ngrx/enforce-type-call": "error",
18+
"@ngrx/prefer-protected-state": "error",
19+
"@ngrx/signal-state-no-arrays-at-root-level": "error",
20+
"@ngrx/signal-store-feature-should-use-generic-type": "error",
21+
"@ngrx/with-state-no-arrays-at-root-level": "error",
22+
"@ngrx/avoid-combining-selectors": "error",
23+
"@ngrx/avoid-dispatching-multiple-actions-sequentially": "error",
24+
"@ngrx/avoid-duplicate-actions-in-reducer": "error",
25+
"@ngrx/avoid-mapping-selectors": "error",
26+
"@ngrx/good-action-hygiene": "error",
27+
"@ngrx/no-multiple-global-stores": "error",
28+
"@ngrx/no-reducer-in-key-names": "error",
29+
"@ngrx/no-store-subscription": "error",
30+
"@ngrx/no-typed-global-store": "error",
31+
"@ngrx/on-function-explicit-return-type": "error",
32+
"@ngrx/prefer-action-creator-in-dispatch": "error",
33+
"@ngrx/prefer-action-creator": "error",
34+
"@ngrx/prefer-inline-action-props": "error",
35+
"@ngrx/prefer-one-generic-in-create-for-feature-selector": "error",
36+
"@ngrx/prefer-selector-in-select": "error",
37+
"@ngrx/prefix-selectors-with-select": "error",
38+
"@ngrx/select-style": "error",
39+
"@ngrx/use-consistent-global-store-name": "error"
40+
}
41+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
/**
2+
* DO NOT EDIT
3+
* This file is generated
4+
*/
5+
6+
import type { TSESLint } from '@typescript-eslint/utils';
7+
8+
export default (
9+
plugin: TSESLint.FlatConfig.Plugin,
10+
parser: TSESLint.FlatConfig.Parser
11+
): TSESLint.FlatConfig.ConfigArray => [
12+
{
13+
name: 'ngrx/base',
14+
languageOptions: {
15+
parser,
16+
},
17+
plugins: {
18+
'@ngrx': plugin,
19+
},
20+
},
21+
{
22+
name: 'ngrx/all-type-checked',
23+
languageOptions: {
24+
parser,
25+
},
26+
rules: {
27+
'@ngrx/avoid-combining-component-store-selectors': 'error',
28+
'@ngrx/avoid-mapping-component-store-selectors': 'error',
29+
'@ngrx/require-super-ondestroy': 'error',
30+
'@ngrx/updater-explicit-return-type': 'error',
31+
'@ngrx/avoid-cyclic-effects': 'error',
32+
'@ngrx/no-dispatch-in-effects': 'error',
33+
'@ngrx/no-effects-in-providers': 'error',
34+
'@ngrx/no-multiple-actions-in-effects': 'error',
35+
'@ngrx/prefer-action-creator-in-of-type': 'error',
36+
'@ngrx/prefer-effect-callback-in-block-statement': 'error',
37+
'@ngrx/use-effects-lifecycle-interface': 'error',
38+
'@ngrx/prefer-concat-latest-from': 'error',
39+
'@ngrx/enforce-type-call': 'error',
40+
'@ngrx/prefer-protected-state': 'error',
41+
'@ngrx/signal-state-no-arrays-at-root-level': 'error',
42+
'@ngrx/signal-store-feature-should-use-generic-type': 'error',
43+
'@ngrx/with-state-no-arrays-at-root-level': 'error',
44+
'@ngrx/avoid-combining-selectors': 'error',
45+
'@ngrx/avoid-dispatching-multiple-actions-sequentially': 'error',
46+
'@ngrx/avoid-duplicate-actions-in-reducer': 'error',
47+
'@ngrx/avoid-mapping-selectors': 'error',
48+
'@ngrx/good-action-hygiene': 'error',
49+
'@ngrx/no-multiple-global-stores': 'error',
50+
'@ngrx/no-reducer-in-key-names': 'error',
51+
'@ngrx/no-store-subscription': 'error',
52+
'@ngrx/no-typed-global-store': 'error',
53+
'@ngrx/on-function-explicit-return-type': 'error',
54+
'@ngrx/prefer-action-creator-in-dispatch': 'error',
55+
'@ngrx/prefer-action-creator': 'error',
56+
'@ngrx/prefer-inline-action-props': 'error',
57+
'@ngrx/prefer-one-generic-in-create-for-feature-selector': 'error',
58+
'@ngrx/prefer-selector-in-select': 'error',
59+
'@ngrx/prefix-selectors-with-select': 'error',
60+
'@ngrx/select-style': 'error',
61+
'@ngrx/use-consistent-global-store-name': 'error',
62+
},
63+
},
64+
];

modules/eslint-plugin/src/configs/effectsTypeChecked.json renamed to modules/eslint-plugin/src/configs/effects-type-checked.json

File renamed without changes.

modules/eslint-plugin/src/configs/effectsTypeChecked.ts renamed to modules/eslint-plugin/src/configs/effects-type-checked.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default (
1919
},
2020
},
2121
{
22-
name: 'ngrx/effectsTypeChecked',
22+
name: 'ngrx/effects-type-checked',
2323
languageOptions: {
2424
parser,
2525
},

modules/eslint-plugin/src/configs/signalsTypeChecked.json renamed to modules/eslint-plugin/src/configs/signals-type-checked.json

File renamed without changes.

modules/eslint-plugin/src/configs/signalsTypeChecked.ts renamed to modules/eslint-plugin/src/configs/signals-type-checked.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ export default (
1919
},
2020
},
2121
{
22-
name: 'ngrx/signalsTypeChecked',
22+
name: 'ngrx/signals-type-checked',
2323
languageOptions: {
2424
parser,
2525
},

modules/eslint-plugin/src/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
import { rules } from './rules';
22
import all from './configs/all.json';
3+
import allTypeChecked from './configs/all-type-checked';
34
import componentStore from './configs/component-store.json';
45
import effects from './configs/effects.json';
6+
import effectsTypeChecked from './configs/effects-type-checked';
57
import store from './configs/store.json';
68
import operators from './configs/operators.json';
79
import signals from './configs/signals.json';
10+
import signalsTypeChecked from './configs/signals-type-checked';
811

912
export = {
1013
configs: {
1114
all,
15+
'all-type-checked': allTypeChecked,
1216
'component-store': componentStore,
1317
effects: effects,
18+
'effects-type-checked': effectsTypeChecked,
1419
store: store,
1520
operators: operators,
1621
signals: signals,
22+
'signals-type-checked': signalsTypeChecked,
1723
},
1824
rules,
1925
};

modules/eslint-plugin/v9/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ import {
66
version as packageVersion,
77
} from '../package.json';
88
import all from '../src/configs/all';
9+
import allTypeChecked from '../src/configs/all-type-checked';
910
import store from '../src/configs/store';
1011
import effects from '../src/configs/effects';
12+
import effectsTypeChecked from '../src/configs/effects-type-checked';
1113
import componentStore from '../src/configs/component-store';
1214
import operators from '../src/configs/operators';
1315
import signals from '../src/configs/signals';
14-
import allTypeChecked from '../src/configs/allTypeChecked';
15-
import effectsTypeChecked from '../src/configs/effectsTypeChecked';
16-
import signalsTypeChecked from '../src/configs/signalsTypeChecked';
16+
import signalsTypeChecked from '../src/configs/signals-type-checked';
1717

1818
const meta = { name: packageName, version: packageVersion };
1919

projects/www/src/app/pages/guide/eslint-plugin/index.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Some rules also include a recommendation or an automatic fix using `ng lint --fi
1010

1111
## Configuration and Usage
1212

13-
### ESLint v9
13+
### ESLint v9 (Flat Config)
1414

1515
To use the NgRx ESLint Plugin with ESLint v9, include the desired configurations within your ESLint configuration file (e.g. `eslint.config.js`).
1616
Optionally override some rules via the `rules` property.
@@ -72,7 +72,7 @@ module.exports = tseslint.config({
7272
});
7373
```
7474

75-
### ESLint v8
75+
### ESLint v8 (Legacy Config)
7676

7777
To use the NgRx ESLint Plugin with ESLint v8, add it to your ESLint file (e.g. `.eslintrc.json`).
7878
Add the `@ngrx` plugin to the `plugins` section and add the rules you want to use within your project to the `rules` section.
@@ -194,16 +194,16 @@ This is useful if you only use a specific package, as it only includes the rules
194194
<!-- DO NOT EDIT, this table is automatically generated-->
195195
<!-- CONFIGURATIONS-CONFIG:START -->
196196

197-
| Name |
198-
| -------------------------------------------------------------------------------------------------------------------------- |
199-
| [all](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/all.json) |
200-
| [allTypeChecked](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/allTypeChecked.json) |
201-
| [component-store](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/component-store.json) |
202-
| [effects](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/effects.json) |
203-
| [effectsTypeChecked](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/effectsTypeChecked.json) |
204-
| [operators](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/operators.json) |
205-
| [signals](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/signals.json) |
206-
| [signalsTypeChecked](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/signalsTypeChecked.json) |
207-
| [store](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/store.json) |
197+
| Name |
198+
| ------------------------------------------------------------------------------------------------------------------------------ |
199+
| [all](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/all.json) |
200+
| [allTypeChecked](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/allTypeChecked.json) |
201+
| [component-store](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/component-store.json) |
202+
| [effects-type-checked](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/effects-type-checked.json) |
203+
| [effects](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/effects.json) |
204+
| [operators](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/operators.json) |
205+
| [signals-type-checked](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/signals-type-checked.json) |
206+
| [signals](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/signals.json) |
207+
| [store](https://github.com/ngrx/platform/blob/main/modules/eslint-plugin/src/configs/store.json) |
208208

209209
<!-- CONFIGURATIONS-CONFIG:END -->

0 commit comments

Comments
 (0)