linter-bundle 2.23.0 → 2.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +40 -5
- package/README.md +1 -1
- package/eslint/index.js +185 -230
- package/eslint/overrides-gatsby.js +3 -3
- package/eslint/overrides-javascript.js +41 -47
- package/eslint/overrides-jest.js +2 -1
- package/eslint/overrides-react.js +89 -53
- package/package.json +17 -17
- package/stylelint/index.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,7 +6,42 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
-
[Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v2.
|
|
9
|
+
[Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v2.25.0...HEAD)
|
|
10
|
+
|
|
11
|
+
## [2.25.0] - 2022-10-20
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- [eslint] Updated `@typescript-eslint` from `5.38.0` to `5.40.1`
|
|
16
|
+
- [eslint] Updated `eslint` from `8.23.1` to `8.25.0`
|
|
17
|
+
- [eslint] Updated `eslint-import-resolver-typescript` from `3.5.1` to `3.5.2`
|
|
18
|
+
- [eslint] Updated `eslint-plugin-functional` from `4.4.0` to `4.4.1`
|
|
19
|
+
- [eslint] Updated `eslint-plugin-jest` from `27.0.4` to `27.1.3`
|
|
20
|
+
- [eslint] Updated `eslint-plugin-jsdoc` from `39.3.6` to `39.3.14`
|
|
21
|
+
- [eslint] Updated `eslint-plugin-promise` from `6.0.1` to `6.1.1`
|
|
22
|
+
- [eslint] Updated `eslint-plugin-react` from `7.31.8` to `7.31.10`
|
|
23
|
+
- [eslint] Updated `eslint-plugin-unicorn` from `43.0.2` to `44.0.2`
|
|
24
|
+
- [eslint] Moved `eslint-plugin-jsx-a11y` configuration to `eslint/overrides-react`
|
|
25
|
+
- [eslint] Added new [`logical-assignment-operators`](https://eslint.org/docs/latest/rules/logical-assignment-operators) rule with option `"always"`
|
|
26
|
+
- [eslint] Added new [`promise/no-multiple-resolved`](https://github.com/eslint-community/eslint-plugin-promise/blob/main/docs/rules/no-multiple-resolved.md) rule
|
|
27
|
+
- [eslint] Make use of new [`unicorn/no-unnecessary-await`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-unnecessary-await.md) rule
|
|
28
|
+
- [eslint] Make use of new [`unicorn/switch-case-braces`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/switch-case-braces.md) rule with option `"avoid"`
|
|
29
|
+
- [eslint/overrides-jest] Added but disable new [`jest/no-restricted-jest-methods`](https://github.com/jest-community/eslint-plugin-jest/blob/main/docs/rules/no-restricted-jest-methods.md) rule
|
|
30
|
+
- [eslint/overrides-react] Replaced deprecated `react/jsx-sort-default-props` rule by new [`react/sort-default-props`](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/sort-default-props.md) rule
|
|
31
|
+
- [eslint/overrides-react] Activate `allowDestructuredState` option of [`react/hook-use-state`](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/hook-use-state.md) rule
|
|
32
|
+
- [eslint/overrides-react] Added new [`react/no-object-type-as-default-prop`](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-object-type-as-default-prop.md) rule
|
|
33
|
+
- [stylelint] Updated `stylelint` from `14.12.1` to `14.14.0`
|
|
34
|
+
- [stylelint] Ignore `!default` annotation in [`annotation-no-unknown`](https://stylelint.io/user-guide/rules/annotation-no-unknown/) rule
|
|
35
|
+
|
|
36
|
+
[Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v2.24.0...v2.25.0)
|
|
37
|
+
|
|
38
|
+
## [2.24.0] - 2022-09-23
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- [eslint/overrides-javascript] Replace [eslint-plugin-node](https://www.npmjs.com/package/eslint-plugin-node) by the fork [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n)
|
|
43
|
+
|
|
44
|
+
[Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v2.23.0...v2.24.0)
|
|
10
45
|
|
|
11
46
|
## [2.23.0] - 2022-09-21
|
|
12
47
|
|
|
@@ -722,9 +757,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
722
757
|
- [eslint] Make use of new [`unicorn/prefer-object-has-own`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/prefer-object-has-own.md) rule
|
|
723
758
|
- [eslint] Activated [`import/no-import-module-exports`](https://github.com/import-js/eslint-plugin-import/blob/master/docs/rules/no-import-module-exports.md) rule
|
|
724
759
|
- [eslint] Change `@typescript-eslint/method-signature-style` to `property`
|
|
725
|
-
- [eslint/overrides-react] Activate options `forbidDefaultForRequired` and `ignoreFunctionalComponents` of `react/require-default-props` rule
|
|
726
760
|
- [eslint] Make use of [`eslint-import-resolver-typescript`](https://www.npmjs.com/package/eslint-import-resolver-typescript) package
|
|
727
761
|
- [eslint] Activated [`import/no-unresolved`](https://github.com/import-js/eslint-plugin-import/blob/master/docs/rules/no-unresolved.md) rule
|
|
762
|
+
- [eslint/overrides-react] Activate options `forbidDefaultForRequired` and `ignoreFunctionalComponents` of `react/require-default-props` rule
|
|
728
763
|
|
|
729
764
|
[Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v1.21.0...v1.22.0)
|
|
730
765
|
|
|
@@ -734,7 +769,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
734
769
|
|
|
735
770
|
- [eslint] Updated `@typescript-eslint` from v4.24.0 to v4.25.0
|
|
736
771
|
- [eslint] Updated `eslint-plugin-jsdoc` from v34.8.2 to v35.0.0
|
|
737
|
-
- [eslint]
|
|
772
|
+
- [eslint] Activated `ignoreNonDOM` option for `jsx-a11y/no-autofocus` rule
|
|
738
773
|
|
|
739
774
|
[Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v1.20.0...v1.21.0)
|
|
740
775
|
|
|
@@ -754,7 +789,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
754
789
|
|
|
755
790
|
### Changed
|
|
756
791
|
|
|
757
|
-
- [
|
|
792
|
+
- [stylelint] Enforce the `all` property to be the first property in `import/order`.
|
|
758
793
|
|
|
759
794
|
[Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v1.18.0...v1.19.0)
|
|
760
795
|
|
|
@@ -1070,7 +1105,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
|
1070
1105
|
|
|
1071
1106
|
### Fixed
|
|
1072
1107
|
|
|
1073
|
-
- [tsc] Changed the way how TypeScript is resolved to prevent
|
|
1108
|
+
- [tsc] Changed the way how TypeScript is resolved to prevent compatibility issues if multiple TypeScript versions are installed
|
|
1074
1109
|
|
|
1075
1110
|
[Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v0.16.3...v0.16.4)
|
|
1076
1111
|
|
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ This setup is using the following additional plugins:
|
|
|
29
29
|
- [eslint-plugin-jest](https://www.npmjs.com/package/eslint-plugin-jest)
|
|
30
30
|
- [eslint-plugin-jsdoc](https://www.npmjs.com/package/eslint-plugin-jsdoc)
|
|
31
31
|
- [eslint-plugin-jsx-a11y](https://www.npmjs.com/package/eslint-plugin-jsx-a11y)
|
|
32
|
-
- [eslint-plugin-node](https://www.npmjs.com/package/eslint-plugin-node)
|
|
32
|
+
- [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) (fork of [eslint-plugin-node](https://www.npmjs.com/package/eslint-plugin-node))
|
|
33
33
|
- [eslint-plugin-promise](https://www.npmjs.com/package/eslint-plugin-promise)
|
|
34
34
|
- [eslint-plugin-react-hooks](https://www.npmjs.com/package/eslint-plugin-react-hooks)
|
|
35
35
|
- [eslint-plugin-react](https://www.npmjs.com/package/eslint-plugin-react)
|
package/eslint/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
/* eslint-disable max-lines -- The rules can be easier managed if they are all in one file */
|
|
6
|
-
/* eslint-disable
|
|
6
|
+
/* eslint-disable n/no-process-env -- `process.env` is required to inject configuration adjustments */
|
|
7
7
|
|
|
8
8
|
const fs = require('fs');
|
|
9
9
|
const path = require('path');
|
|
@@ -101,142 +101,167 @@ module.exports = {
|
|
|
101
101
|
*
|
|
102
102
|
* @see https://eslint.org/docs/rules/
|
|
103
103
|
*/
|
|
104
|
-
|
|
105
|
-
// Possible Errors
|
|
106
|
-
'for-direction': 'error',
|
|
107
|
-
'getter-return': 'error',
|
|
108
|
-
'no-async-promise-executor': 'error',
|
|
109
|
-
'no-await-in-loop': 'error',
|
|
110
|
-
'no-compare-neg-zero': 'error',
|
|
111
|
-
'no-cond-assign': 'error',
|
|
112
|
-
'no-console': 'error',
|
|
113
|
-
'no-constant-condition': 'error',
|
|
114
|
-
'no-control-regex': 'off', // This rule does not make sense to me
|
|
115
|
-
'no-debugger': 'error',
|
|
116
|
-
'no-dupe-args': 'error',
|
|
117
|
-
'no-dupe-else-if': 'error',
|
|
118
|
-
'no-dupe-keys': 'error',
|
|
119
|
-
'no-duplicate-case': 'error',
|
|
120
|
-
'no-empty': 'error',
|
|
121
|
-
'no-empty-character-class': 'error',
|
|
122
|
-
'no-ex-assign': 'error',
|
|
123
|
-
'no-extra-boolean-cast': 'error',
|
|
124
|
-
'no-extra-parens': 'off', // Covered by @typescript-eslint/no-extra-parens
|
|
125
|
-
'no-extra-semi': 'off', // Covered by @typescript-eslint/no-extra-semi
|
|
126
|
-
'no-func-assign': 'error',
|
|
127
|
-
'no-import-assign': 'error',
|
|
128
|
-
'no-inner-declarations': ['error', 'both'],
|
|
129
|
-
'no-invalid-regexp': 'error',
|
|
130
|
-
'no-irregular-whitespace': 'error',
|
|
131
|
-
'no-misleading-character-class': 'error',
|
|
132
|
-
'no-obj-calls': 'error',
|
|
133
|
-
'no-promise-executor-return': 'error',
|
|
134
|
-
'no-prototype-builtins': 'error',
|
|
135
|
-
'no-regex-spaces': 'error',
|
|
136
|
-
'no-setter-return': 'error',
|
|
137
|
-
'no-sparse-arrays': 'error',
|
|
138
|
-
'no-template-curly-in-string': 'error',
|
|
139
|
-
'no-unexpected-multiline': 'error',
|
|
140
|
-
'no-unreachable': 'error',
|
|
141
|
-
'no-unreachable-loop': 'error',
|
|
142
|
-
'no-unsafe-finally': 'error',
|
|
143
|
-
'no-unsafe-negation': 'error',
|
|
144
|
-
'no-unsafe-optional-chaining': 'error',
|
|
145
|
-
'no-unused-private-class-members': 'error',
|
|
146
|
-
'no-useless-backreference': 'error',
|
|
147
|
-
'require-atomic-updates': 'error',
|
|
148
|
-
'use-isnan': 'error',
|
|
149
|
-
'valid-typeof': ['error', { requireStringLiterals: true }],
|
|
150
|
-
|
|
151
|
-
// Best Practices
|
|
152
104
|
'accessor-pairs': 'error',
|
|
105
|
+
'array-bracket-newline': ['error', 'consistent'],
|
|
106
|
+
'array-bracket-spacing': 'error',
|
|
153
107
|
'array-callback-return': 'error',
|
|
108
|
+
'array-element-newline': 'off', // Line breaks should be used in such a way that maximum readability is achieved. This cannot be represented by a fixed rule.
|
|
109
|
+
'arrow-body-style': 'error',
|
|
110
|
+
'arrow-parens': 'error',
|
|
111
|
+
'arrow-spacing': 'error',
|
|
154
112
|
'block-scoped-var': 'error',
|
|
113
|
+
'block-spacing': 'error',
|
|
114
|
+
'brace-style': 'off', // Covered by @typescript-eslint/brace-style
|
|
115
|
+
'camelcase': 'off', // Covered by @typescript-eslint/naming-convention
|
|
116
|
+
'capitalized-comments': 'off',
|
|
155
117
|
'class-methods-use-this': ['error', { exceptMethods: ['componentDidMount', 'componentDidUpdate', 'componentWillUnmount', 'shouldComponentUpdate'] }],
|
|
118
|
+
'comma-dangle': 'off', // Covered by @typescript-eslint/comma-dangle
|
|
119
|
+
'comma-spacing': 'off', // Covered by @typescript-eslint/comma-spacing
|
|
120
|
+
'comma-style': 'error',
|
|
156
121
|
'complexity': ['error', { max: 20 }],
|
|
122
|
+
'computed-property-spacing': 'error',
|
|
157
123
|
'consistent-return': 'off', // Handled by TypeScript type annotations
|
|
124
|
+
'consistent-this': 'error',
|
|
125
|
+
'constructor-super': 'error',
|
|
158
126
|
'curly': 'error',
|
|
159
|
-
'default-case': 'error',
|
|
160
127
|
'default-case-last': 'error',
|
|
128
|
+
'default-case': 'error',
|
|
161
129
|
'default-param-last': 'off', // @todo It should be valid to have optional parameters after default parameters
|
|
162
130
|
'dot-location': ['error', 'property'],
|
|
163
131
|
'dot-notation': 'off', // Covered by @typescript-eslint/dot-notation
|
|
132
|
+
'eol-last': 'error',
|
|
164
133
|
'eqeqeq': 'error',
|
|
134
|
+
'for-direction': 'error',
|
|
135
|
+
'func-call-spacing': 'off', // Covered by @typescript-eslint/func-call-spacing
|
|
136
|
+
'func-name-matching': 'error',
|
|
137
|
+
'func-names': 'error',
|
|
138
|
+
'func-style': ['error', 'declaration', { allowArrowFunctions: true }],
|
|
139
|
+
'function-call-argument-newline': 'off', // @todo Multiple multi-line object arguments are not allowed, so this option is not usable right now
|
|
140
|
+
'function-paren-newline': ['error', 'multiline-arguments'],
|
|
141
|
+
'generator-star-spacing': 'error',
|
|
142
|
+
'getter-return': 'error',
|
|
165
143
|
'grouped-accessor-pairs': 'error',
|
|
166
144
|
'guard-for-in': 'error',
|
|
145
|
+
'id-denylist': 'error',
|
|
146
|
+
'id-length': ['error', { exceptions: ['a', 'b', 'i', 'j', 'n', 'x', 'y', 'z'] }],
|
|
147
|
+
'id-match': 'error',
|
|
148
|
+
'implicit-arrow-linebreak': 'error',
|
|
149
|
+
'indent': 'off', // Covered by @typescript-eslint/indent
|
|
150
|
+
'init-declarations': 'off', // @todo It should be possible to ignore predefined consts like MAX_RADIX
|
|
151
|
+
'jsx-quotes': 'error',
|
|
152
|
+
'key-spacing': 'error',
|
|
153
|
+
'keyword-spacing': 'error',
|
|
154
|
+
'line-comment-position': 'off',
|
|
155
|
+
'linebreak-style': 'error',
|
|
156
|
+
'lines-around-comment': 'off', // Doesn't work with interfaces; sometimes doesn't make sense if the comment is related to the code above it
|
|
157
|
+
'lines-between-class-members': 'off', // @todo Deactivated till we have a JSDoc description for all class members
|
|
158
|
+
'logical-assignment-operators': ['error', 'always'],
|
|
167
159
|
'max-classes-per-file': 'error',
|
|
160
|
+
'max-depth': ['error', { max: 5 }],
|
|
161
|
+
'max-len': ['error', {
|
|
162
|
+
code: 300,
|
|
163
|
+
tabWidth: 4,
|
|
164
|
+
comments: 300,
|
|
165
|
+
ignoreUrls: true
|
|
166
|
+
}],
|
|
167
|
+
'max-lines-per-function': ['error', { max: 200, skipBlankLines: true, skipComments: true }],
|
|
168
|
+
'max-lines': ['error', { max: 500, skipBlankLines: true, skipComments: true }],
|
|
169
|
+
'max-nested-callbacks': 'error',
|
|
170
|
+
'max-params': ['error', { max: 5 }],
|
|
171
|
+
'max-statements-per-line': ['error', { max: 3 }],
|
|
172
|
+
'max-statements': ['error', 50, { ignoreTopLevelFunctions: true }],
|
|
173
|
+
'multiline-comment-style': 'off', // Comment style must be decided from case to case
|
|
174
|
+
'multiline-ternary': 'off', // I would prefer this style: `(a === b ? (\ntrue\n) : {\notherwise: false\n})`, which means line-breaks should be only allowed, if the operand is wrapped into `(`, `{` or `[`.
|
|
175
|
+
'new-cap': ['error', { properties: false }],
|
|
176
|
+
'new-parens': 'error',
|
|
177
|
+
'newline-per-chained-call': ['error', { ignoreChainWithDepth: 4 }],
|
|
168
178
|
'no-alert': 'error',
|
|
179
|
+
'no-array-constructor': 'off', // Covered by @typescript-eslint/no-array-constructor
|
|
180
|
+
'no-async-promise-executor': 'error',
|
|
181
|
+
'no-await-in-loop': 'error',
|
|
182
|
+
'no-bitwise': ['error', { allow: ['^', '~', '<<', '>>', '>>>', '|=', '&=', '^=', '<<=', '>>=', '>>>='] }], // Disallow "&" and "|".
|
|
169
183
|
'no-caller': 'error',
|
|
170
184
|
'no-case-declarations': 'error',
|
|
185
|
+
'no-class-assign': 'error',
|
|
186
|
+
'no-compare-neg-zero': 'error',
|
|
187
|
+
'no-cond-assign': 'error',
|
|
188
|
+
'no-confusing-arrow': ['error', { allowParens: true }],
|
|
189
|
+
'no-console': 'error',
|
|
190
|
+
'no-const-assign': 'error',
|
|
191
|
+
'no-constant-condition': 'error',
|
|
171
192
|
'no-constructor-return': 'error',
|
|
193
|
+
'no-continue': 'off', // If it makes the code more readable, wer are using `continue`
|
|
194
|
+
'no-control-regex': 'off', // This rule does not make sense to me
|
|
195
|
+
'no-debugger': 'error',
|
|
196
|
+
'no-delete-var': 'error',
|
|
172
197
|
'no-div-regex': 'error',
|
|
198
|
+
'no-dupe-args': 'error',
|
|
199
|
+
'no-dupe-class-members': 'off', // Covered by @typescript-eslint/no-dupe-class-members
|
|
200
|
+
'no-dupe-else-if': 'error',
|
|
201
|
+
'no-dupe-keys': 'error',
|
|
202
|
+
'no-duplicate-case': 'error',
|
|
203
|
+
'no-duplicate-imports': 'off', // Covered by import/no-duplicates (see https://github.com/typescript-eslint/typescript-eslint/issues/2315)
|
|
173
204
|
'no-else-return': 'error',
|
|
205
|
+
'no-empty-character-class': 'error',
|
|
174
206
|
'no-empty-function': 'off', // Covered by @typescript-eslint/no-empty-function
|
|
175
207
|
'no-empty-pattern': 'error',
|
|
208
|
+
'no-empty': 'error',
|
|
176
209
|
'no-eq-null': 'error',
|
|
177
210
|
'no-eval': 'error',
|
|
211
|
+
'no-ex-assign': 'error',
|
|
178
212
|
'no-extend-native': 'error',
|
|
179
213
|
'no-extra-bind': 'error',
|
|
214
|
+
'no-extra-boolean-cast': 'error',
|
|
180
215
|
'no-extra-label': 'error',
|
|
216
|
+
'no-extra-parens': 'off', // Covered by @typescript-eslint/no-extra-parens
|
|
217
|
+
'no-extra-semi': 'off', // Covered by @typescript-eslint/no-extra-semi
|
|
181
218
|
'no-fallthrough': ['error', { allowEmptyCase: true }],
|
|
182
219
|
'no-floating-decimal': 'error',
|
|
220
|
+
'no-func-assign': 'error',
|
|
183
221
|
'no-global-assign': 'error',
|
|
184
222
|
'no-implicit-coercion': ['error', { disallowTemplateShorthand: true }],
|
|
185
223
|
'no-implicit-globals': 'error',
|
|
186
224
|
'no-implied-eval': 'error',
|
|
225
|
+
'no-import-assign': 'error',
|
|
226
|
+
'no-inline-comments': 'off',
|
|
227
|
+
'no-inner-declarations': ['error', 'both'],
|
|
228
|
+
'no-invalid-regexp': 'error',
|
|
187
229
|
'no-invalid-this': 'off', // Covered by @typescript-eslint/no-invalid-this
|
|
230
|
+
'no-irregular-whitespace': 'error',
|
|
188
231
|
'no-iterator': 'error',
|
|
232
|
+
'no-label-var': 'error',
|
|
189
233
|
'no-labels': ['error', { allowLoop: true }],
|
|
190
234
|
'no-lone-blocks': 'error',
|
|
235
|
+
'no-lonely-if': 'off', // Covered by unicorn/no-lonely-if
|
|
191
236
|
'no-loop-func': 'off', // Covered by @typescript-eslint/no-loop-func
|
|
192
237
|
'no-loss-of-precision': 'off', // Covered by @typescript-eslint/no-loss-of-precision
|
|
193
238
|
'no-magic-numbers': 'off', // Covered by @typescript-eslint/no-magic-numbers
|
|
239
|
+
'no-misleading-character-class': 'error',
|
|
240
|
+
'no-mixed-operators': 'error',
|
|
241
|
+
'no-mixed-spaces-and-tabs': 'error',
|
|
242
|
+
'no-multi-assign': 'error',
|
|
194
243
|
'no-multi-spaces': 'error',
|
|
195
244
|
'no-multi-str': 'error',
|
|
196
|
-
'no-
|
|
245
|
+
'no-multiple-empty-lines': ['error', { max: 1 }],
|
|
246
|
+
'no-negated-condition': 'off',
|
|
247
|
+
'no-nested-ternary': 'error',
|
|
197
248
|
'no-new-func': 'error',
|
|
249
|
+
'no-new-object': 'error',
|
|
250
|
+
'no-new-symbol': 'error',
|
|
198
251
|
'no-new-wrappers': 'error',
|
|
252
|
+
'no-new': 'error',
|
|
199
253
|
'no-nonoctal-decimal-escape': 'error',
|
|
200
|
-
'no-
|
|
254
|
+
'no-obj-calls': 'error',
|
|
201
255
|
'no-octal-escape': 'error',
|
|
256
|
+
'no-octal': 'error',
|
|
202
257
|
'no-param-reassign': 'off', // Parameter reassignment used wisely makes the code more readable
|
|
258
|
+
'no-plusplus': 'off',
|
|
259
|
+
'no-promise-executor-return': 'error',
|
|
203
260
|
'no-proto': 'error',
|
|
261
|
+
'no-prototype-builtins': 'error',
|
|
204
262
|
'no-redeclare': 'off', // Covered by @typescript-eslint/no-redeclare
|
|
205
|
-
'no-
|
|
206
|
-
'no-
|
|
207
|
-
'no-script-url': 'error',
|
|
208
|
-
'no-self-assign': 'error',
|
|
209
|
-
'no-self-compare': 'error',
|
|
210
|
-
'no-sequences': 'error',
|
|
211
|
-
'no-throw-literal': 'off', // Covered by @typescript-eslint/no-throw-literal
|
|
212
|
-
'no-unmodified-loop-condition': 'error',
|
|
213
|
-
'no-unused-expressions': 'off', // Covered by @typescript-eslint/no-unused-expressions
|
|
214
|
-
'no-unused-labels': 'error',
|
|
215
|
-
'no-useless-call': 'off', // @todo Produces into false-positives for CharsetConverter → `internalMap.encoder.call(encoding, str.toLowerCase())`
|
|
216
|
-
'no-useless-catch': 'error',
|
|
217
|
-
'no-useless-concat': 'error',
|
|
218
|
-
'no-useless-escape': 'error',
|
|
219
|
-
'no-useless-return': 'off', // @todo Option to ignore switch-case blocks: In switch-case blocks it makes sense to keep all cases equal, instead of removing the 'return' from the last case, because this could produce bugs in later adjustments.
|
|
220
|
-
'no-void': 'off', // This is in conflict with @typescript-eslint/no-floating-promises which expects either `await` or `void`
|
|
221
|
-
'no-warning-comments': 'error',
|
|
222
|
-
'no-with': 'error',
|
|
223
|
-
'prefer-named-capture-group': 'off', // ES2018+, not supported in most browsers yet
|
|
224
|
-
'prefer-promise-reject-errors': 'error',
|
|
225
|
-
'prefer-regex-literals': 'error',
|
|
226
|
-
'radix': 'error',
|
|
227
|
-
'require-await': 'off', // Covered by @typescript-eslint/require-await
|
|
228
|
-
'require-unicode-regexp': 'error',
|
|
229
|
-
'vars-on-top': 'error',
|
|
230
|
-
'wrap-iife': 'error',
|
|
231
|
-
'yoda': 'error',
|
|
232
|
-
|
|
233
|
-
// Strict Mode
|
|
234
|
-
'strict': 'error',
|
|
235
|
-
|
|
236
|
-
// Variables
|
|
237
|
-
'init-declarations': 'off', // @todo It should be possible to ignore predefined consts like MAX_RADIX
|
|
238
|
-
'no-delete-var': 'error',
|
|
239
|
-
'no-label-var': 'error',
|
|
263
|
+
'no-regex-spaces': 'error',
|
|
264
|
+
'no-restricted-exports': 'error',
|
|
240
265
|
'no-restricted-globals': [
|
|
241
266
|
'error',
|
|
242
267
|
{
|
|
@@ -245,6 +270,7 @@ module.exports = {
|
|
|
245
270
|
},
|
|
246
271
|
...ensureType.array(global.linterBundleSettings?.overrides?.general?.['no-restricted-globals']?.additionalRestictions)
|
|
247
272
|
],
|
|
273
|
+
'no-restricted-imports': 'off', // Covered by @typescript-eslint/no-restricted-imports
|
|
248
274
|
'no-restricted-properties': [
|
|
249
275
|
'error',
|
|
250
276
|
...ensureType.array(global.linterBundleSettings?.overrides?.general?.['no-restricted-properties']?.additionalRestictions)
|
|
@@ -253,146 +279,109 @@ module.exports = {
|
|
|
253
279
|
'error',
|
|
254
280
|
...ensureType.array(global.linterBundleSettings?.overrides?.general?.['no-restricted-syntax']?.additionalRestictions)
|
|
255
281
|
],
|
|
256
|
-
'no-
|
|
282
|
+
'no-return-assign': 'error',
|
|
283
|
+
'no-return-await': 'off', // Covered by @typescript-eslint/return-await
|
|
284
|
+
'no-script-url': 'error',
|
|
285
|
+
'no-self-assign': 'error',
|
|
286
|
+
'no-self-compare': 'error',
|
|
287
|
+
'no-sequences': 'error',
|
|
288
|
+
'no-setter-return': 'error',
|
|
257
289
|
'no-shadow-restricted-names': 'error',
|
|
258
|
-
'no-
|
|
259
|
-
'no-
|
|
260
|
-
'no-undefined': 'off', // @todo "Using the void operator to generate the value of undefined if necessary." should be disableable
|
|
261
|
-
'no-unused-vars': 'off', // Covered by @typescript-eslint/no-unused-vars
|
|
262
|
-
'no-use-before-define': 'off', // Covered by @typescript-eslint/no-use-before-define
|
|
263
|
-
|
|
264
|
-
// Stylistic Issues
|
|
265
|
-
'array-bracket-newline': ['error', 'consistent'],
|
|
266
|
-
'array-bracket-spacing': 'error',
|
|
267
|
-
'array-element-newline': 'off', // Line breaks should be used in such a way that maximum readability is achieved. This cannot be represented by a fixed rule.
|
|
268
|
-
'block-spacing': 'error',
|
|
269
|
-
'brace-style': 'off', // Covered by @typescript-eslint/brace-style
|
|
270
|
-
'camelcase': 'off', // Covered by @typescript-eslint/naming-convention
|
|
271
|
-
'capitalized-comments': 'off',
|
|
272
|
-
'comma-dangle': 'off', // Covered by @typescript-eslint/comma-dangle
|
|
273
|
-
'comma-spacing': 'off', // Covered by @typescript-eslint/comma-spacing
|
|
274
|
-
'comma-style': 'error',
|
|
275
|
-
'computed-property-spacing': 'error',
|
|
276
|
-
'consistent-this': 'error',
|
|
277
|
-
'eol-last': 'error',
|
|
278
|
-
'func-call-spacing': 'off', // Covered by @typescript-eslint/func-call-spacing
|
|
279
|
-
'func-name-matching': 'error',
|
|
280
|
-
'func-names': 'error',
|
|
281
|
-
'func-style': ['error', 'declaration', { allowArrowFunctions: true }],
|
|
282
|
-
'function-call-argument-newline': 'off', // @todo Multiple multi-line object arguments are not allowed, so this option is not usable right now
|
|
283
|
-
'function-paren-newline': ['error', 'multiline-arguments'],
|
|
284
|
-
'id-denylist': 'error',
|
|
285
|
-
'id-length': ['error', { exceptions: ['a', 'b', 'i', 'j', 'n', 'x', 'y', 'z'] }],
|
|
286
|
-
'id-match': 'error',
|
|
287
|
-
'implicit-arrow-linebreak': 'error',
|
|
288
|
-
'indent': 'off', // Covered by @typescript-eslint/indent
|
|
289
|
-
'jsx-quotes': 'error',
|
|
290
|
-
'key-spacing': 'error',
|
|
291
|
-
'keyword-spacing': 'error',
|
|
292
|
-
'line-comment-position': 'off',
|
|
293
|
-
'linebreak-style': 'error',
|
|
294
|
-
'lines-around-comment': 'off', // Doesn't work with interfaces; sometimes doesn't make sense if the comment is related to the code above it
|
|
295
|
-
'lines-between-class-members': 'off', // @todo Deactivated till we have a JSDoc description for all class members
|
|
296
|
-
'max-depth': ['error', { max: 5 }],
|
|
297
|
-
'max-len': ['error', {
|
|
298
|
-
code: 300,
|
|
299
|
-
tabWidth: 4,
|
|
300
|
-
comments: 300,
|
|
301
|
-
ignoreUrls: true
|
|
302
|
-
}],
|
|
303
|
-
'max-lines': ['error', { max: 500, skipBlankLines: true, skipComments: true }],
|
|
304
|
-
'max-lines-per-function': ['error', { max: 200, skipBlankLines: true, skipComments: true }],
|
|
305
|
-
'max-nested-callbacks': 'error',
|
|
306
|
-
'max-params': ['error', { max: 5 }],
|
|
307
|
-
'max-statements': ['error', 50, { ignoreTopLevelFunctions: true }],
|
|
308
|
-
'max-statements-per-line': ['error', { max: 3 }],
|
|
309
|
-
'multiline-comment-style': 'off', // Comment style must be decided from case to case
|
|
310
|
-
'multiline-ternary': 'off', // I would prefer this style: `(a === b ? (\ntrue\n) : {\notherwise: false\n})`, which means line-breaks should be only allowed, if the operand is wrapped into `(`, `{` or `[`.
|
|
311
|
-
'new-cap': ['error', { properties: false }],
|
|
312
|
-
'new-parens': 'error',
|
|
313
|
-
'newline-per-chained-call': ['error', { ignoreChainWithDepth: 4 }],
|
|
314
|
-
'no-array-constructor': 'off', // Covered by @typescript-eslint/no-array-constructor
|
|
315
|
-
'no-bitwise': ['error', { allow: ['^', '~', '<<', '>>', '>>>', '|=', '&=', '^=', '<<=', '>>=', '>>>='] }], // Disallow "&" and "|".
|
|
316
|
-
'no-continue': 'off', // If it makes the code more readable, wer are using `continue`
|
|
317
|
-
'no-inline-comments': 'off',
|
|
318
|
-
'no-lonely-if': 'off', // Covered by unicorn/no-lonely-if
|
|
319
|
-
'no-mixed-operators': 'error',
|
|
320
|
-
'no-mixed-spaces-and-tabs': 'error',
|
|
321
|
-
'no-multi-assign': 'error',
|
|
322
|
-
'no-multiple-empty-lines': ['error', { max: 1 }],
|
|
323
|
-
'no-negated-condition': 'off',
|
|
324
|
-
'no-nested-ternary': 'error',
|
|
325
|
-
'no-new-object': 'error',
|
|
326
|
-
'no-plusplus': 'off',
|
|
290
|
+
'no-shadow': 'off', // Covered by @typescript-eslint/no-shadow
|
|
291
|
+
'no-sparse-arrays': 'error',
|
|
327
292
|
'no-tabs': ['error', { allowIndentationTabs: true }],
|
|
293
|
+
'no-template-curly-in-string': 'error',
|
|
328
294
|
'no-ternary': 'off',
|
|
295
|
+
'no-this-before-super': 'error',
|
|
296
|
+
'no-throw-literal': 'off', // Covered by @typescript-eslint/no-throw-literal
|
|
329
297
|
'no-trailing-spaces': 'error',
|
|
298
|
+
'no-undef-init': 'error',
|
|
299
|
+
'no-undef': 'off', // Covered by TypeScript
|
|
300
|
+
'no-undefined': 'off', // @todo "Using the void operator to generate the value of undefined if necessary." should be disableable
|
|
330
301
|
'no-underscore-dangle': ['error', { allow: ['__DEV__'], allowAfterThis: true }],
|
|
302
|
+
'no-unexpected-multiline': 'error',
|
|
303
|
+
'no-unmodified-loop-condition': 'error',
|
|
331
304
|
'no-unneeded-ternary': 'error',
|
|
305
|
+
'no-unreachable-loop': 'error',
|
|
306
|
+
'no-unreachable': 'error',
|
|
307
|
+
'no-unsafe-finally': 'error',
|
|
308
|
+
'no-unsafe-negation': 'error',
|
|
309
|
+
'no-unsafe-optional-chaining': 'error',
|
|
310
|
+
'no-unused-expressions': 'off', // Covered by @typescript-eslint/no-unused-expressions
|
|
311
|
+
'no-unused-labels': 'error',
|
|
312
|
+
'no-unused-private-class-members': 'error',
|
|
313
|
+
'no-unused-vars': 'off', // Covered by @typescript-eslint/no-unused-vars
|
|
314
|
+
'no-use-before-define': 'off', // Covered by @typescript-eslint/no-use-before-define
|
|
315
|
+
'no-useless-backreference': 'error',
|
|
316
|
+
'no-useless-call': 'off', // @todo Produces into false-positives for CharsetConverter → `internalMap.encoder.call(encoding, str.toLowerCase())`
|
|
317
|
+
'no-useless-catch': 'error',
|
|
318
|
+
'no-useless-computed-key': 'error',
|
|
319
|
+
'no-useless-concat': 'error',
|
|
320
|
+
'no-useless-constructor': 'off', // Covered by @typescript-eslint/no-useless-constructor
|
|
321
|
+
'no-useless-escape': 'error',
|
|
322
|
+
'no-useless-rename': 'error',
|
|
323
|
+
'no-useless-return': 'off', // @todo Option to ignore switch-case blocks: In switch-case blocks it makes sense to keep all cases equal, instead of removing the 'return' from the last case, because this could produce bugs in later adjustments.
|
|
324
|
+
'no-var': 'error',
|
|
325
|
+
'no-void': 'off', // This is in conflict with @typescript-eslint/no-floating-promises which expects either `await` or `void`
|
|
326
|
+
'no-warning-comments': 'error',
|
|
332
327
|
'no-whitespace-before-property': 'error',
|
|
328
|
+
'no-with': 'error',
|
|
333
329
|
'nonblock-statement-body-position': 'error',
|
|
334
330
|
'object-curly-newline': 'error',
|
|
335
331
|
'object-curly-spacing': 'off', // Covered by @typescript-eslint/object-curly-spacing
|
|
336
332
|
'object-property-newline': ['error', { allowAllPropertiesOnSameLine: true }],
|
|
337
|
-
'
|
|
333
|
+
'object-shorthand': 'error',
|
|
338
334
|
'one-var-declaration-per-line': 'error',
|
|
335
|
+
'one-var': ['error', { initialized: 'never', uninitialized: 'never' }],
|
|
339
336
|
'operator-assignment': 'error',
|
|
340
337
|
'operator-linebreak': ['error', 'after', { overrides: { ':': 'ignore' } }],
|
|
341
338
|
'padded-blocks': ['error', 'never'],
|
|
342
339
|
'padding-line-between-statements': 'error',
|
|
340
|
+
'prefer-arrow-callback': ['error', { allowNamedFunctions: true }],
|
|
341
|
+
'prefer-const': 'error',
|
|
342
|
+
'prefer-destructuring': 'off', // We don't prefer destructuring if a type is specified ['error', { VariableDeclarator: { array: true, object: true }, AssignmentExpression: { array: false, object: false } }],
|
|
343
343
|
'prefer-exponentiation-operator': 'error',
|
|
344
|
+
'prefer-named-capture-group': 'off', // ES2018+, not supported in most browsers yet
|
|
345
|
+
'prefer-numeric-literals': 'error',
|
|
344
346
|
'prefer-object-spread': 'error',
|
|
347
|
+
'prefer-promise-reject-errors': 'error',
|
|
348
|
+
'prefer-regex-literals': 'error',
|
|
349
|
+
'prefer-rest-params': 'error',
|
|
350
|
+
'prefer-spread': 'error',
|
|
351
|
+
'prefer-template': 'error',
|
|
345
352
|
'quote-props': ['error', 'consistent-as-needed'],
|
|
346
353
|
'quotes': 'off', // Covered by @typescript-eslint/quotes
|
|
347
|
-
'
|
|
354
|
+
'radix': 'error',
|
|
355
|
+
'require-atomic-updates': 'error',
|
|
356
|
+
'require-await': 'off', // Covered by @typescript-eslint/require-await
|
|
357
|
+
'require-unicode-regexp': 'error',
|
|
358
|
+
'require-yield': 'error',
|
|
359
|
+
'rest-spread-spacing': 'error',
|
|
348
360
|
'semi-spacing': 'error',
|
|
349
361
|
'semi-style': 'error',
|
|
362
|
+
'semi': 'off', // Covered by @typescript-eslint/semi
|
|
363
|
+
'sort-imports': 'off', // import/order
|
|
350
364
|
'sort-keys': 'off', // Keys should be grouped by their scope/category, not by their name
|
|
351
|
-
'sort-vars': 'off', // Something like `for (let pos = 4 + addressLength, dataPos = 0; pos < length - 2; pos += 2, dataPos++) {` should be sorted by
|
|
365
|
+
'sort-vars': 'off', // Something like `for (let pos = 4 + addressLength, dataPos = 0; pos < length - 2; pos += 2, dataPos++) {` should be sorted by importance
|
|
352
366
|
'space-before-blocks': 'error',
|
|
353
367
|
'space-before-function-paren': 'off', // Covered by @typescript-eslint/space-before-function-paren
|
|
354
368
|
'space-in-parens': 'error',
|
|
355
369
|
'space-infix-ops': 'off', // Covered by @typescript-eslint/space-infix-ops
|
|
356
370
|
'space-unary-ops': 'error',
|
|
357
371
|
'spaced-comment': ['error', 'always', { markers: ['/'], block: { markers: ['!'], balanced: true } }],
|
|
372
|
+
'strict': 'error',
|
|
358
373
|
'switch-colon-spacing': 'error',
|
|
374
|
+
'symbol-description': 'error',
|
|
375
|
+
'template-curly-spacing': 'error',
|
|
359
376
|
'template-tag-spacing': 'error',
|
|
360
377
|
'unicode-bom': 'error',
|
|
378
|
+
'use-isnan': 'error',
|
|
379
|
+
'valid-typeof': ['error', { requireStringLiterals: true }],
|
|
380
|
+
'vars-on-top': 'error',
|
|
381
|
+
'wrap-iife': 'error',
|
|
361
382
|
'wrap-regex': 'error',
|
|
362
|
-
|
|
363
|
-
// ECMAScript 6
|
|
364
|
-
'arrow-body-style': 'error',
|
|
365
|
-
'arrow-parens': 'error',
|
|
366
|
-
'arrow-spacing': 'error',
|
|
367
|
-
'constructor-super': 'error',
|
|
368
|
-
'generator-star-spacing': 'error',
|
|
369
|
-
'no-class-assign': 'error',
|
|
370
|
-
'no-confusing-arrow': ['error', { allowParens: true }],
|
|
371
|
-
'no-const-assign': 'error',
|
|
372
|
-
'no-dupe-class-members': 'off', // Covered by @typescript-eslint/no-dupe-class-members
|
|
373
|
-
'no-duplicate-imports': 'off', // Covered by import/no-duplicates (see https://github.com/typescript-eslint/typescript-eslint/issues/2315)
|
|
374
|
-
'no-new-symbol': 'error',
|
|
375
|
-
'no-restricted-exports': 'error',
|
|
376
|
-
'no-restricted-imports': 'off', // Covered by @typescript-eslint/no-restricted-imports
|
|
377
|
-
'no-this-before-super': 'error',
|
|
378
|
-
'no-useless-computed-key': 'error',
|
|
379
|
-
'no-useless-constructor': 'off', // Covered by @typescript-eslint/no-useless-constructor
|
|
380
|
-
'no-useless-rename': 'error',
|
|
381
|
-
'no-var': 'error',
|
|
382
|
-
'object-shorthand': 'error',
|
|
383
|
-
'prefer-arrow-callback': ['error', { allowNamedFunctions: true }],
|
|
384
|
-
'prefer-const': 'error',
|
|
385
|
-
'prefer-destructuring': 'off', // We don't prefer destructuring if a type is specified ['error', { VariableDeclarator: { array: true, object: true }, AssignmentExpression: { array: false, object: false } }],
|
|
386
|
-
'prefer-numeric-literals': 'error',
|
|
387
|
-
'prefer-rest-params': 'error',
|
|
388
|
-
'prefer-spread': 'error',
|
|
389
|
-
'prefer-template': 'error',
|
|
390
|
-
'require-yield': 'error',
|
|
391
|
-
'rest-spread-spacing': 'error',
|
|
392
|
-
'sort-imports': 'off', // import/order
|
|
393
|
-
'symbol-description': 'error',
|
|
394
|
-
'template-curly-spacing': 'error',
|
|
395
383
|
'yield-star-spacing': ['error', { before: true, after: false }],
|
|
384
|
+
'yoda': 'error',
|
|
396
385
|
|
|
397
386
|
/**
|
|
398
387
|
* typescript-eslint
|
|
@@ -845,43 +834,6 @@ module.exports = {
|
|
|
845
834
|
'import/prefer-default-export': 'off',
|
|
846
835
|
'import/unambiguous': 'off',
|
|
847
836
|
|
|
848
|
-
/**
|
|
849
|
-
* eslint-plugin-jsx-a11y
|
|
850
|
-
*
|
|
851
|
-
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y
|
|
852
|
-
*/
|
|
853
|
-
'jsx-a11y/alt-text': 'error',
|
|
854
|
-
'jsx-a11y/anchor-has-content': 'error',
|
|
855
|
-
'jsx-a11y/anchor-is-valid': 'error',
|
|
856
|
-
'jsx-a11y/aria-activedescendant-has-tabindex': 'error',
|
|
857
|
-
'jsx-a11y/aria-props': 'error',
|
|
858
|
-
'jsx-a11y/aria-proptypes': 'error',
|
|
859
|
-
'jsx-a11y/aria-role': 'error',
|
|
860
|
-
'jsx-a11y/aria-unsupported-elements': 'error',
|
|
861
|
-
'jsx-a11y/autocomplete-valid': 'error',
|
|
862
|
-
'jsx-a11y/click-events-have-key-events': 'error',
|
|
863
|
-
'jsx-a11y/heading-has-content': 'error',
|
|
864
|
-
'jsx-a11y/html-has-lang': 'off', // <html> elements set by react-helmet automatically have a lang attribute set
|
|
865
|
-
'jsx-a11y/iframe-has-title': 'error',
|
|
866
|
-
'jsx-a11y/img-redundant-alt': 'error',
|
|
867
|
-
'jsx-a11y/interactive-supports-focus': 'error',
|
|
868
|
-
'jsx-a11y/label-has-associated-control': 'error',
|
|
869
|
-
'jsx-a11y/media-has-caption': 'error',
|
|
870
|
-
'jsx-a11y/mouse-events-have-key-events': 'error',
|
|
871
|
-
'jsx-a11y/no-access-key': 'off', // If you explicitly specify an access key, you usually have a reason for this, so it should not be prevented by a rule
|
|
872
|
-
'jsx-a11y/no-autofocus': ['error', { ignoreNonDOM: true }],
|
|
873
|
-
'jsx-a11y/no-distracting-elements': 'error',
|
|
874
|
-
'jsx-a11y/no-interactive-element-to-noninteractive-role': 'error',
|
|
875
|
-
'jsx-a11y/no-noninteractive-element-interactions': 'error',
|
|
876
|
-
'jsx-a11y/no-noninteractive-element-to-interactive-role': 'error',
|
|
877
|
-
'jsx-a11y/no-noninteractive-tabindex': 'error',
|
|
878
|
-
'jsx-a11y/no-redundant-roles': 'error',
|
|
879
|
-
'jsx-a11y/no-static-element-interactions': 'error',
|
|
880
|
-
'jsx-a11y/role-has-required-aria-props': 'error',
|
|
881
|
-
'jsx-a11y/role-supports-aria-props': 'error',
|
|
882
|
-
'jsx-a11y/scope': 'error',
|
|
883
|
-
'jsx-a11y/tabindex-no-positive': 'error',
|
|
884
|
-
|
|
885
837
|
/**
|
|
886
838
|
* eslint-plugin-eslint-comments
|
|
887
839
|
*
|
|
@@ -906,6 +858,7 @@ module.exports = {
|
|
|
906
858
|
'promise/avoid-new': 'off',
|
|
907
859
|
'promise/catch-or-return': 'error',
|
|
908
860
|
'promise/no-callback-in-promise': 'off',
|
|
861
|
+
'promise/no-multiple-resolved': 'error',
|
|
909
862
|
'promise/no-native': 'off',
|
|
910
863
|
'promise/no-nesting': 'off',
|
|
911
864
|
'promise/no-new-statics': 'error',
|
|
@@ -967,6 +920,7 @@ module.exports = {
|
|
|
967
920
|
'unicorn/no-static-only-class': 'error',
|
|
968
921
|
'unicorn/no-thenable': 'error',
|
|
969
922
|
'unicorn/no-this-assignment': 'error',
|
|
923
|
+
'unicorn/no-unnecessary-await': 'error',
|
|
970
924
|
'unicorn/no-unreadable-array-destructuring': 'error',
|
|
971
925
|
'unicorn/no-unreadable-iife': 'error',
|
|
972
926
|
'unicorn/no-unsafe-regex': 'off',
|
|
@@ -1037,6 +991,7 @@ module.exports = {
|
|
|
1037
991
|
'->': '→'
|
|
1038
992
|
}
|
|
1039
993
|
}],
|
|
994
|
+
'unicorn/switch-case-braces': ['error', 'avoid'],
|
|
1040
995
|
'unicorn/template-indent': 'error',
|
|
1041
996
|
'unicorn/text-encoding-identifier-case': 'off',
|
|
1042
997
|
'unicorn/throw-new-error': 'error'
|
|
@@ -105,11 +105,11 @@ module.exports = {
|
|
|
105
105
|
files: ['gatsby-browser.js'],
|
|
106
106
|
rules: {
|
|
107
107
|
/**
|
|
108
|
-
* eslint-plugin-
|
|
108
|
+
* eslint-plugin-n
|
|
109
109
|
*
|
|
110
|
-
* @see https://github.com/
|
|
110
|
+
* @see https://github.com/eslint-community/eslint-plugin-n
|
|
111
111
|
*/
|
|
112
|
-
'
|
|
112
|
+
'n/no-unsupported-features/es-syntax': 'off'
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
]
|
|
@@ -10,7 +10,7 @@ module.exports = {
|
|
|
10
10
|
node: true,
|
|
11
11
|
es6: true
|
|
12
12
|
},
|
|
13
|
-
plugins: ['
|
|
13
|
+
plugins: ['n'],
|
|
14
14
|
rules: {
|
|
15
15
|
/**
|
|
16
16
|
* eslint
|
|
@@ -47,53 +47,47 @@ module.exports = {
|
|
|
47
47
|
'import/no-nodejs-modules': 'off',
|
|
48
48
|
|
|
49
49
|
/**
|
|
50
|
-
* eslint-plugin-
|
|
50
|
+
* eslint-plugin-n
|
|
51
51
|
*
|
|
52
|
-
* @see https://github.com/
|
|
52
|
+
* @see https://github.com/eslint-community/eslint-plugin-n
|
|
53
53
|
*/
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
'
|
|
61
|
-
'
|
|
62
|
-
'
|
|
63
|
-
'
|
|
64
|
-
'
|
|
65
|
-
'
|
|
66
|
-
'
|
|
67
|
-
'
|
|
68
|
-
'
|
|
69
|
-
'
|
|
70
|
-
'
|
|
71
|
-
'
|
|
72
|
-
'
|
|
73
|
-
'
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
'
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
'
|
|
80
|
-
'
|
|
81
|
-
'
|
|
82
|
-
'
|
|
83
|
-
'
|
|
84
|
-
'
|
|
85
|
-
'
|
|
86
|
-
'
|
|
87
|
-
'
|
|
88
|
-
'
|
|
89
|
-
'
|
|
90
|
-
'
|
|
91
|
-
'node/prefer-global/text-decoder': 'error',
|
|
92
|
-
'node/prefer-global/text-encoder': 'error',
|
|
93
|
-
'node/prefer-global/url-search-params': 'error',
|
|
94
|
-
'node/prefer-global/url': 'error',
|
|
95
|
-
'node/prefer-promises/dns': 'error',
|
|
96
|
-
'node/prefer-promises/fs': 'error',
|
|
54
|
+
'n/callback-return': 'error',
|
|
55
|
+
'n/exports-style': 'error',
|
|
56
|
+
'n/file-extension-in-import': 'error',
|
|
57
|
+
'n/global-require': 'off',
|
|
58
|
+
'n/handle-callback-err': 'error',
|
|
59
|
+
'n/no-callback-literal': 'error',
|
|
60
|
+
'n/no-deprecated-api': 'error',
|
|
61
|
+
'n/no-exports-assign': 'error',
|
|
62
|
+
'n/no-extraneous-import': 'error',
|
|
63
|
+
'n/no-extraneous-require': 'error',
|
|
64
|
+
'n/no-missing-import': 'error',
|
|
65
|
+
'n/no-missing-require': 'error',
|
|
66
|
+
'n/no-mixed-requires': 'error',
|
|
67
|
+
'n/no-new-require': 'error',
|
|
68
|
+
'n/no-path-concat': 'error',
|
|
69
|
+
'n/no-process-env': 'error',
|
|
70
|
+
'n/no-process-exit': 'error',
|
|
71
|
+
'n/no-restricted-import': 'error',
|
|
72
|
+
'n/no-restricted-require': 'error',
|
|
73
|
+
'n/no-sync': 'off', // Since the .js files are used in the CLI, preventing the use of sync functions is not required
|
|
74
|
+
'n/no-unpublished-bin': 'error',
|
|
75
|
+
'n/no-unpublished-import': 'error',
|
|
76
|
+
'n/no-unpublished-require': 'off', // Since we use .js files only for the dev-environment, we don't need this rule
|
|
77
|
+
'n/no-unsupported-features/es-builtins': 'error',
|
|
78
|
+
'n/no-unsupported-features/es-syntax': 'error',
|
|
79
|
+
'n/no-unsupported-features/node-builtins': 'error',
|
|
80
|
+
'n/prefer-global/buffer': 'error',
|
|
81
|
+
'n/prefer-global/console': 'error',
|
|
82
|
+
'n/prefer-global/process': 'error',
|
|
83
|
+
'n/prefer-global/text-decoder': 'error',
|
|
84
|
+
'n/prefer-global/text-encoder': 'error',
|
|
85
|
+
'n/prefer-global/url-search-params': 'error',
|
|
86
|
+
'n/prefer-global/url': 'error',
|
|
87
|
+
'n/prefer-promises/dns': 'error',
|
|
88
|
+
'n/prefer-promises/fs': 'error',
|
|
89
|
+
'n/process-exit-as-throw': 'error',
|
|
90
|
+
'n/shebang': 'error',
|
|
97
91
|
|
|
98
92
|
/**
|
|
99
93
|
* eslint-plugin-unicorn
|
|
@@ -105,7 +99,7 @@ module.exports = {
|
|
|
105
99
|
kebabCase: true
|
|
106
100
|
}
|
|
107
101
|
}],
|
|
108
|
-
'unicorn/no-process-exit': 'off', //
|
|
102
|
+
'unicorn/no-process-exit': 'off', // n/no-process-exit
|
|
109
103
|
'unicorn/prefer-module': 'off', // @todo Requires Node.js v13.2. Activate in 2023
|
|
110
104
|
'unicorn/prefer-node-protocol': 'off', // @todo Requires Node.js v16. Activate in 2025
|
|
111
105
|
'unicorn/prevent-abbreviations': ['error', { ignore: ['args', 'dev', 'env', 'i', 'j', 'i18n', 'pkg', 'ref', 'Ref', 'req', 'res', 'setupDevServerMiddleware'] }],
|
package/eslint/overrides-jest.js
CHANGED
|
@@ -13,7 +13,7 @@ module.exports = {
|
|
|
13
13
|
jest: {
|
|
14
14
|
version: (() => {
|
|
15
15
|
try {
|
|
16
|
-
// eslint-disable-next-line
|
|
16
|
+
// eslint-disable-next-line n/no-missing-require, import/no-dynamic-require -- If "overrides-jest" is used, "jest" should be installed, and it should be searched in the working directory of the process.
|
|
17
17
|
const jestVersion = require(require.resolve('jest', { paths: [process.cwd()] })).getVersion().split('.')[0];
|
|
18
18
|
|
|
19
19
|
process.stdout.write(`Detected Jest version: ${jestVersion}\n\n`);
|
|
@@ -80,6 +80,7 @@ module.exports = {
|
|
|
80
80
|
'jest/no-jasmine-globals': 'error',
|
|
81
81
|
'jest/no-large-snapshots': 'error',
|
|
82
82
|
'jest/no-mocks-import': 'error',
|
|
83
|
+
'jest/no-restricted-jest-methods': 'off', // Right now, there are no specific restrictions
|
|
83
84
|
'jest/no-restricted-matchers': ['error', {
|
|
84
85
|
resolves: 'Use `expect(await promise)` instead.',
|
|
85
86
|
toBeFalsy: 'Avoid `toBeFalsy`',
|
|
@@ -29,6 +29,43 @@ module.exports = {
|
|
|
29
29
|
]
|
|
30
30
|
}],
|
|
31
31
|
|
|
32
|
+
/**
|
|
33
|
+
* eslint-plugin-jsx-a11y
|
|
34
|
+
*
|
|
35
|
+
* @see https://github.com/jsx-eslint/eslint-plugin-jsx-a11y
|
|
36
|
+
*/
|
|
37
|
+
'jsx-a11y/alt-text': 'error',
|
|
38
|
+
'jsx-a11y/anchor-has-content': 'error',
|
|
39
|
+
'jsx-a11y/anchor-is-valid': 'error',
|
|
40
|
+
'jsx-a11y/aria-activedescendant-has-tabindex': 'error',
|
|
41
|
+
'jsx-a11y/aria-props': 'error',
|
|
42
|
+
'jsx-a11y/aria-proptypes': 'error',
|
|
43
|
+
'jsx-a11y/aria-role': 'error',
|
|
44
|
+
'jsx-a11y/aria-unsupported-elements': 'error',
|
|
45
|
+
'jsx-a11y/autocomplete-valid': 'error',
|
|
46
|
+
'jsx-a11y/click-events-have-key-events': 'error',
|
|
47
|
+
'jsx-a11y/heading-has-content': 'error',
|
|
48
|
+
'jsx-a11y/html-has-lang': 'off', // <html> elements set by react-helmet automatically have a lang attribute set
|
|
49
|
+
'jsx-a11y/iframe-has-title': 'error',
|
|
50
|
+
'jsx-a11y/img-redundant-alt': 'error',
|
|
51
|
+
'jsx-a11y/interactive-supports-focus': 'error',
|
|
52
|
+
'jsx-a11y/label-has-associated-control': 'error',
|
|
53
|
+
'jsx-a11y/media-has-caption': 'error',
|
|
54
|
+
'jsx-a11y/mouse-events-have-key-events': 'error',
|
|
55
|
+
'jsx-a11y/no-access-key': 'off', // If you explicitly specify an access key, you usually have a reason for this, so it should not be prevented by a rule
|
|
56
|
+
'jsx-a11y/no-autofocus': ['error', { ignoreNonDOM: true }],
|
|
57
|
+
'jsx-a11y/no-distracting-elements': 'error',
|
|
58
|
+
'jsx-a11y/no-interactive-element-to-noninteractive-role': 'error',
|
|
59
|
+
'jsx-a11y/no-noninteractive-element-interactions': 'error',
|
|
60
|
+
'jsx-a11y/no-noninteractive-element-to-interactive-role': 'error',
|
|
61
|
+
'jsx-a11y/no-noninteractive-tabindex': 'error',
|
|
62
|
+
'jsx-a11y/no-redundant-roles': 'error',
|
|
63
|
+
'jsx-a11y/no-static-element-interactions': 'error',
|
|
64
|
+
'jsx-a11y/role-has-required-aria-props': 'error',
|
|
65
|
+
'jsx-a11y/role-supports-aria-props': 'error',
|
|
66
|
+
'jsx-a11y/scope': 'error',
|
|
67
|
+
'jsx-a11y/tabindex-no-positive': 'error',
|
|
68
|
+
|
|
32
69
|
/**
|
|
33
70
|
* eslint-plugin-react-hooks
|
|
34
71
|
*
|
|
@@ -60,19 +97,64 @@ module.exports = {
|
|
|
60
97
|
] }],
|
|
61
98
|
'react/forbid-dom-props': 'error',
|
|
62
99
|
'react/forbid-elements': 'error',
|
|
63
|
-
'react/forbid-prop-types': 'error',
|
|
64
100
|
'react/forbid-foreign-prop-types': 'error',
|
|
101
|
+
'react/forbid-prop-types': 'error',
|
|
65
102
|
'react/function-component-definition': ['off', { // @todo Doesn't work with Component-Factories, which shall return named components `return function MyComponent () {}`, while in modules, `const MyComponent = () => {}` shall be used
|
|
66
103
|
namedComponents: 'arrow-function',
|
|
67
104
|
unnamedComponents: 'arrow-function'
|
|
68
105
|
}],
|
|
69
|
-
'react/hook-use-state': 'error',
|
|
106
|
+
'react/hook-use-state': ['error', { allowDestructuredState: true }],
|
|
107
|
+
'react/jsx-boolean-value': ['error', 'always'],
|
|
108
|
+
'react/jsx-child-element-spacing': 'off', // @todo Why is this disabled? Could it be, that the faulty behaviour is fixed in the meantime?
|
|
109
|
+
'react/jsx-closing-bracket-location': 'error',
|
|
110
|
+
'react/jsx-closing-tag-location': 'error',
|
|
111
|
+
'react/jsx-curly-brace-presence': ['error', { propElementValues: 'always' }],
|
|
112
|
+
'react/jsx-curly-newline': 'off',
|
|
113
|
+
'react/jsx-curly-spacing': 'error',
|
|
114
|
+
'react/jsx-equals-spacing': 'error',
|
|
115
|
+
'react/jsx-filename-extension': ['error', { extensions: ['.tsx'] }],
|
|
116
|
+
'react/jsx-first-prop-new-line': 'error',
|
|
117
|
+
'react/jsx-fragments': ['error', 'element'],
|
|
118
|
+
'react/jsx-handler-names': 'off', // @todo There should be an option which checks if the function is used multiple times in a class (like this.closeTooltip()) - in that case, the 'handle' prefix should not be mandatory
|
|
119
|
+
'react/jsx-indent-props': ['error', 'tab'],
|
|
120
|
+
'react/jsx-indent': ['error', 'tab', { checkAttributes: true, indentLogicalExpressions: true }],
|
|
121
|
+
'react/jsx-key': ['error', { checkKeyMustBeforeSpread: true, warnOnDuplicates: true }],
|
|
122
|
+
'react/jsx-max-depth': ['error', { max: 8 }],
|
|
123
|
+
'react/jsx-max-props-per-line': ['error', { maximum: { single: 5, multi: 1 } }],
|
|
124
|
+
'react/jsx-newline': 'off', // @todo Why is this rule deactivated?
|
|
125
|
+
'react/jsx-no-bind': ['error', { ignoreDOMComponents: true }],
|
|
126
|
+
'react/jsx-no-comment-textnodes': 'error',
|
|
127
|
+
'react/jsx-no-constructed-context-values': 'error',
|
|
128
|
+
'react/jsx-no-duplicate-props': 'error',
|
|
129
|
+
'react/jsx-no-leaked-render': 'off', // Should be covered by boolean-types in TypeScript, otherwise unnecessary type-castings from boolean to boolean would be required
|
|
130
|
+
'react/jsx-no-literals': 'off',
|
|
131
|
+
'react/jsx-no-script-url': 'error',
|
|
132
|
+
'react/jsx-no-target-blank': ['error', { allowReferrer: true, forms: true }],
|
|
133
|
+
'react/jsx-no-undef': 'error',
|
|
134
|
+
'react/jsx-no-useless-fragment': ['error', { allowExpressions: true }],
|
|
135
|
+
'react/jsx-one-expression-per-line': ['off', { allow: 'single-child' }], // @todo Doesn't work with something like "Text <a href="...">Link</a> More Text", which should be valid
|
|
136
|
+
'react/jsx-pascal-case': ['error', { allowAllCaps: true }],
|
|
137
|
+
'react/jsx-props-no-multi-spaces': 'error',
|
|
138
|
+
'react/jsx-props-no-spreading': 'off',
|
|
139
|
+
'react/jsx-sort-props': ['error', {
|
|
140
|
+
ignoreCase: true,
|
|
141
|
+
callbacksLast: true,
|
|
142
|
+
shorthandFirst: true,
|
|
143
|
+
shorthandLast: false,
|
|
144
|
+
noSortAlphabetically: true,
|
|
145
|
+
reservedFirst: true
|
|
146
|
+
}],
|
|
147
|
+
'react/jsx-tag-spacing': 'error',
|
|
148
|
+
'react/jsx-uses-react': 'error',
|
|
149
|
+
'react/jsx-uses-vars': 'error',
|
|
150
|
+
'react/jsx-wrap-multilines': 'error',
|
|
70
151
|
'react/no-access-state-in-setstate': 'error',
|
|
152
|
+
'react/no-adjacent-inline-elements': 'off', // @todo There is an issue if inline and block elements are mixed. Simple example: `<span>Text</span><br />` here, the space between the SPAN and BR should not be forced, because a space at the end of a line does not make sense.
|
|
71
153
|
'react/no-array-index-key': 'error',
|
|
72
154
|
'react/no-arrow-function-lifecycle': 'error',
|
|
73
155
|
'react/no-children-prop': 'error',
|
|
74
|
-
'react/no-danger': 'off',
|
|
75
156
|
'react/no-danger-with-children': 'error',
|
|
157
|
+
'react/no-danger': 'off',
|
|
76
158
|
'react/no-deprecated': 'error',
|
|
77
159
|
'react/no-did-mount-set-state': 'error',
|
|
78
160
|
'react/no-did-update-set-state': 'error',
|
|
@@ -82,12 +164,13 @@ module.exports = {
|
|
|
82
164
|
'react/no-is-mounted': 'error',
|
|
83
165
|
'react/no-multi-comp': 'error',
|
|
84
166
|
'react/no-namespace': 'error',
|
|
167
|
+
'react/no-object-type-as-default-prop': 'error',
|
|
85
168
|
'react/no-redundant-should-component-update': 'error',
|
|
86
169
|
'react/no-render-return-value': 'error',
|
|
87
170
|
'react/no-set-state': 'off',
|
|
88
|
-
'react/no-typos': 'error',
|
|
89
171
|
'react/no-string-refs': 'error',
|
|
90
172
|
'react/no-this-in-sfc': 'error',
|
|
173
|
+
'react/no-typos': 'error',
|
|
91
174
|
'react/no-unescaped-entities': 'error',
|
|
92
175
|
'react/no-unknown-property': 'error',
|
|
93
176
|
'react/no-unsafe': 'error',
|
|
@@ -122,59 +205,12 @@ module.exports = {
|
|
|
122
205
|
'static-methods'
|
|
123
206
|
]
|
|
124
207
|
}],
|
|
208
|
+
'react/sort-default-props': 'error',
|
|
125
209
|
'react/sort-prop-types': 'error',
|
|
126
210
|
'react/state-in-constructor': 'error',
|
|
127
211
|
'react/static-property-placement': 'error',
|
|
128
212
|
'react/style-prop-object': 'error',
|
|
129
|
-
'react/void-dom-elements-no-children': 'error'
|
|
130
|
-
|
|
131
|
-
// JSX-specific rules
|
|
132
|
-
'react/jsx-boolean-value': ['error', 'always'],
|
|
133
|
-
'react/jsx-child-element-spacing': 'off', // @todo Why is this disabled? Could it be, that the faulty behaviour is fixed in the meantime?
|
|
134
|
-
'react/jsx-closing-bracket-location': 'error',
|
|
135
|
-
'react/jsx-closing-tag-location': 'error',
|
|
136
|
-
'react/jsx-curly-newline': 'off',
|
|
137
|
-
'react/jsx-curly-spacing': 'error',
|
|
138
|
-
'react/jsx-equals-spacing': 'error',
|
|
139
|
-
'react/jsx-filename-extension': ['error', { extensions: ['.tsx'] }],
|
|
140
|
-
'react/jsx-first-prop-new-line': 'error',
|
|
141
|
-
'react/jsx-handler-names': 'off', // @todo There should be an option which checks if the function is used multiple times in a class (like this.closeTooltip()) - in that case, the 'handle' prefix should not be mandatory
|
|
142
|
-
'react/jsx-indent': ['error', 'tab', { checkAttributes: true, indentLogicalExpressions: true }],
|
|
143
|
-
'react/jsx-indent-props': ['error', 'tab'],
|
|
144
|
-
'react/jsx-key': ['error', { checkKeyMustBeforeSpread: true, warnOnDuplicates: true }],
|
|
145
|
-
'react/jsx-max-depth': ['error', { max: 8 }],
|
|
146
|
-
'react/jsx-max-props-per-line': ['error', { maximum: { single: 5, multi: 1 } }],
|
|
147
|
-
'react/no-adjacent-inline-elements': 'off', // @todo There is an issue if inline and block elements are mixed. Simple example: `<span>Text</span><br />` here, the space between the SPAN and BR should not be forced, because a space at the end of a line does not make sense.
|
|
148
|
-
'react/jsx-newline': 'off', // @todo Why is this rule deactivated?
|
|
149
|
-
'react/jsx-no-bind': ['error', { ignoreDOMComponents: true }],
|
|
150
|
-
'react/jsx-no-comment-textnodes': 'error',
|
|
151
|
-
'react/jsx-no-constructed-context-values': 'error',
|
|
152
|
-
'react/jsx-no-duplicate-props': 'error',
|
|
153
|
-
'react/jsx-no-leaked-render': 'off', // Should be covered by boolean-types in TypeScript, otherwise unnecessary type-castings from boolean to boolean would be required
|
|
154
|
-
'react/jsx-no-literals': 'off',
|
|
155
|
-
'react/jsx-no-script-url': 'error',
|
|
156
|
-
'react/jsx-no-target-blank': ['error', { allowReferrer: true, forms: true }],
|
|
157
|
-
'react/jsx-no-undef': 'error',
|
|
158
|
-
'react/jsx-no-useless-fragment': ['error', { allowExpressions: true }],
|
|
159
|
-
'react/jsx-one-expression-per-line': ['off', { allow: 'single-child' }], // @todo Doesn't work with something like "Text <a href="...">Link</a> More Text", which should be valid
|
|
160
|
-
'react/jsx-curly-brace-presence': ['error', { propElementValues: 'always' }],
|
|
161
|
-
'react/jsx-fragments': ['error', 'element'],
|
|
162
|
-
'react/jsx-pascal-case': ['error', { allowAllCaps: true }],
|
|
163
|
-
'react/jsx-props-no-multi-spaces': 'error',
|
|
164
|
-
'react/jsx-props-no-spreading': 'off',
|
|
165
|
-
'react/jsx-sort-default-props': 'error',
|
|
166
|
-
'react/jsx-sort-props': ['error', {
|
|
167
|
-
ignoreCase: true,
|
|
168
|
-
callbacksLast: true,
|
|
169
|
-
shorthandFirst: true,
|
|
170
|
-
shorthandLast: false,
|
|
171
|
-
noSortAlphabetically: true,
|
|
172
|
-
reservedFirst: true
|
|
173
|
-
}],
|
|
174
|
-
'react/jsx-tag-spacing': 'error',
|
|
175
|
-
'react/jsx-uses-react': 'error',
|
|
176
|
-
'react/jsx-uses-vars': 'error',
|
|
177
|
-
'react/jsx-wrap-multilines': 'error'
|
|
213
|
+
'react/void-dom-elements-no-children': 'error'
|
|
178
214
|
}
|
|
179
215
|
}
|
|
180
216
|
]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "linter-bundle",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.25.0",
|
|
4
4
|
"description": "Ready-to use bundle of linting tools, containing configurations for ESLint, stylelint and markdownlint.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"eslint",
|
|
@@ -40,27 +40,27 @@
|
|
|
40
40
|
"check-outdated": "npx --yes -- check-outdated --ignore-pre-releases"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@typescript-eslint/eslint-plugin": "5.
|
|
44
|
-
"@typescript-eslint/parser": "5.
|
|
45
|
-
"@typescript-eslint/utils": "5.
|
|
46
|
-
"eslint": "8.
|
|
47
|
-
"eslint-import-resolver-typescript": "3.5.
|
|
43
|
+
"@typescript-eslint/eslint-plugin": "5.40.1",
|
|
44
|
+
"@typescript-eslint/parser": "5.40.1",
|
|
45
|
+
"@typescript-eslint/utils": "5.40.1",
|
|
46
|
+
"eslint": "8.25.0",
|
|
47
|
+
"eslint-import-resolver-typescript": "3.5.2",
|
|
48
48
|
"eslint-import-resolver-webpack": "0.13.2",
|
|
49
49
|
"eslint-plugin-eslint-comments": "3.2.0",
|
|
50
|
-
"eslint-plugin-functional": "4.4.
|
|
50
|
+
"eslint-plugin-functional": "4.4.1",
|
|
51
51
|
"eslint-plugin-import": "2.26.0",
|
|
52
|
-
"eslint-plugin-jest": "27.
|
|
53
|
-
"eslint-plugin-jsdoc": "39.3.
|
|
52
|
+
"eslint-plugin-jest": "27.1.3",
|
|
53
|
+
"eslint-plugin-jsdoc": "39.3.14",
|
|
54
54
|
"eslint-plugin-jsx-a11y": "6.6.1",
|
|
55
|
-
"eslint-plugin-
|
|
56
|
-
"eslint-plugin-promise": "6.
|
|
57
|
-
"eslint-plugin-react": "7.31.
|
|
55
|
+
"eslint-plugin-n": "15.3.0",
|
|
56
|
+
"eslint-plugin-promise": "6.1.1",
|
|
57
|
+
"eslint-plugin-react": "7.31.10",
|
|
58
58
|
"eslint-plugin-react-hooks": "4.6.0",
|
|
59
|
-
"eslint-plugin-unicorn": "
|
|
59
|
+
"eslint-plugin-unicorn": "44.0.2",
|
|
60
60
|
"markdownlint-cli": "0.32.2",
|
|
61
61
|
"micromatch": "4.0.5",
|
|
62
62
|
"postcss-scss": "4.0.5",
|
|
63
|
-
"stylelint": "14.
|
|
63
|
+
"stylelint": "14.14.0",
|
|
64
64
|
"stylelint-declaration-block-no-ignored-properties": "2.5.0",
|
|
65
65
|
"stylelint-order": "5.0.0",
|
|
66
66
|
"stylelint-scss": "4.3.0",
|
|
@@ -72,10 +72,10 @@
|
|
|
72
72
|
"typescript": "^4.0.0"
|
|
73
73
|
},
|
|
74
74
|
"devDependencies": {
|
|
75
|
-
"@types/eslint": "8.4.
|
|
75
|
+
"@types/eslint": "8.4.7",
|
|
76
76
|
"@types/micromatch": "4.0.2",
|
|
77
|
-
"@types/node": "18.
|
|
77
|
+
"@types/node": "18.11.3",
|
|
78
78
|
"stylelint-find-new-rules": "4.0.0",
|
|
79
|
-
"typescript": "4.8.
|
|
79
|
+
"typescript": "4.8.4"
|
|
80
80
|
}
|
|
81
81
|
}
|
package/stylelint/index.js
CHANGED
|
@@ -68,7 +68,7 @@ module.exports = {
|
|
|
68
68
|
* @see https://github.com/stylelint/stylelint/tree/master/lib/rules
|
|
69
69
|
*/
|
|
70
70
|
'alpha-value-notation': 'number', // @todo change that to 'percentage'?
|
|
71
|
-
'annotation-no-unknown': true,
|
|
71
|
+
'annotation-no-unknown': [true, { ignoreAnnotations: 'default' }],
|
|
72
72
|
'at-rule-allowed-list': null,
|
|
73
73
|
'at-rule-disallowed-list': null,
|
|
74
74
|
'at-rule-empty-line-before': [
|