linter-bundle 3.4.0 → 3.6.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 CHANGED
@@ -6,7 +6,44 @@ 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/v3.4.0...HEAD)
9
+ [Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v3.6.0...HEAD)
10
+
11
+ ## [3.6.0] - 2023-08-11
12
+
13
+ - [general] Change peer-dependency of `typescript` from `^4.0.0` to `>=4.0.0`
14
+ - [eslint] Updated `@typescript-eslint` from `6.2.0` to `6.3.0`
15
+ - [eslint] Updated `eslint` from `8.45.0` to `8.47.0`
16
+ - [eslint] Updated `eslint-import-resolver-typescript` from `3.5.5` to `3.6.0`
17
+ - [eslint] Updated `eslint-import-resolver-webpack` from `0.13.2` to `0.13.4`
18
+ - [eslint] Updated `eslint-plugin-functional` from `5.0.8` to `6.0.0`
19
+ - [eslint] Updated `eslint-plugin-jsdoc` from `46.4.5` to `46.4.6`
20
+ - [eslint] Updated `eslint-plugin-react` from `7.33.0` to `7.33.1`
21
+ - [stylelint] Updated `stylelint-scss` from `5.0.1` to `5.1.0`
22
+ - [eslint] Removed deprecated (and currently disabled) `no-return-await` rule
23
+ - [styleint] Added but disabled [`scss/function-disallowed-list`](https://github.com/stylelint-scss/stylelint-scss/blob/master/src/rules/function-disallowed-list) rule
24
+
25
+ [Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v3.5.0...v3.6.0)
26
+
27
+ ## [3.5.0] - 2023-07-28
28
+
29
+ ### Changed
30
+
31
+ - [eslint] Updated `@typescript-eslint/eslint-plugin` from `6.1.0` to `6.2.0`
32
+ - [eslint] Updated `eslint-plugin-import` from `2.27.5` to `2.28.0`
33
+ - [eslint] Updated `eslint-plugin-jsdoc` from `46.4.4` to `46.4.5`
34
+ - [eslint] Updated `eslint-plugin-react` from `7.32.2` to `7.33.0`
35
+ - [eslint] Updated `eslint-plugin-unicorn` from `48.0.0` to `48.0.1`
36
+ - [eslint] Reactivated `unicorn/no-empty-file`
37
+ - [eslint] Activated `ignoreConditionalTests` and `ignoreMixedLogicalExpressions` options of [@typescript-eslint/prefer-nullish-coalescing](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/docs/rules/prefer-nullish-coalescing.md) rule
38
+ - [styleint] Set `ignoreFunctions` option to `/^custom-/u` of [`scss/function-no-unknown`](https://github.com/stylelint-scss/stylelint-scss/blob/master/src/rules/function-no-unknown/README.md) rule
39
+ - [stylelint] Ignore SCSS variables in [`declaration-property-value-no-unknown`](https://stylelint.io/user-guide/rules/declaration-property-value-no-unknown/) rule
40
+ - [stylelint] Ignore wrapping parentheses for `grid-template-areas` values in [`declaration-property-value-no-unknown`](https://stylelint.io/user-guide/rules/declaration-property-value-no-unknown/) rule
41
+
42
+ ### Added
43
+
44
+ - Replace the ESLint rule `class-methods-use-this` by the new [`@typescript-eslint/class-methods-use-this`](https://typescript-eslint.io/rules/class-methods-use-this/) rule
45
+
46
+ [Show all code changes](https://github.com/jens-duttke/linter-bundle/compare/v3.4.0...v3.5.0)
10
47
 
11
48
  ## [3.4.0] - 2023-07-20
12
49
 
package/eslint/index.js CHANGED
@@ -125,7 +125,7 @@ module.exports = {
125
125
  'brace-style': 'off', // Covered by @typescript-eslint/brace-style
126
126
  'camelcase': 'off', // Covered by @typescript-eslint/naming-convention
127
127
  'capitalized-comments': 'off',
128
- 'class-methods-use-this': ['error', { exceptMethods: ['componentDidMount', 'componentDidUpdate', 'componentWillUnmount', 'shouldComponentUpdate'] }],
128
+ 'class-methods-use-this': 'off', // Covered by @typescript-eslint/class-methods-use-this
129
129
  'comma-dangle': 'off', // Covered by @typescript-eslint/comma-dangle
130
130
  'comma-spacing': 'off', // Covered by @typescript-eslint/comma-spacing
131
131
  'comma-style': 'error',
@@ -294,7 +294,6 @@ module.exports = {
294
294
  ...ensureType.array(global.linterBundleSettings?.overrides?.general?.['no-restricted-syntax']?.additionalRestrictions)
295
295
  ],
296
296
  'no-return-assign': 'error',
297
- 'no-return-await': 'off', // Covered by @typescript-eslint/return-await
298
297
  'no-script-url': 'error',
299
298
  'no-self-assign': 'error',
300
299
  'no-self-compare': 'error',
@@ -423,9 +422,8 @@ module.exports = {
423
422
  }],
424
423
  '@typescript-eslint/brace-style': ['error', 'stroustrup', { allowSingleLine: true }],
425
424
  '@typescript-eslint/class-literal-property-style': 'error',
426
- '@typescript-eslint/comma-dangle': ['error', {
427
- generics: 'ignore'
428
- }],
425
+ '@typescript-eslint/class-methods-use-this': ['error', { exceptMethods: ['componentDidMount', 'componentDidUpdate', 'componentWillUnmount', 'shouldComponentUpdate'] }],
426
+ '@typescript-eslint/comma-dangle': ['error', { generics: 'ignore' }],
429
427
  '@typescript-eslint/comma-spacing': 'error',
430
428
  '@typescript-eslint/consistent-generic-constructors': 'error',
431
429
  '@typescript-eslint/consistent-indexed-object-style': 'error',
@@ -745,7 +743,7 @@ module.exports = {
745
743
  '@typescript-eslint/prefer-includes': 'error',
746
744
  '@typescript-eslint/prefer-literal-enum-member': 'error',
747
745
  '@typescript-eslint/prefer-namespace-keyword': 'error',
748
- '@typescript-eslint/prefer-nullish-coalescing': 'error',
746
+ '@typescript-eslint/prefer-nullish-coalescing': ['error', { ignoreConditionalTests: true, ignoreMixedLogicalExpressions: true }],
749
747
  '@typescript-eslint/prefer-optional-chain': 'error',
750
748
  '@typescript-eslint/prefer-readonly': 'error',
751
749
  '@typescript-eslint/prefer-readonly-parameter-types': ['off', { ignoreInferredTypes: true }], // @todo An interface should ensure that it's properties are readonly, not every usage of it
@@ -784,10 +782,10 @@ module.exports = {
784
782
  * @see https://github.com/jonaskello/eslint-plugin-functional#supported-rules
785
783
  */
786
784
  'functional/functional-parameters': 'off',
787
- 'functional/immutable-data': 'off', // This rule would require a lot of additional code and workarounds, which would make the result much more illegible.
785
+ 'functional/immutable-data': 'off', // This rule would require a lot of additional code and workarounds, which would make the result much more illegible // @todo is that resolved in v6.0.0?
788
786
  'functional/no-classes': 'off',
789
787
  'functional/no-conditional-statements': 'off',
790
- 'functional/no-expression-statements': ['off', { ignoreVoid: true }], // Creates too much false-positives
788
+ 'functional/no-expression-statements': ['off', { ignoreVoid: true }], // Creates too much false-positives // @todo is that resolved in v6.0.0?
791
789
  'functional/no-let': 'off', // This is better covered by the `prefer-const` rule
792
790
  'functional/no-loop-statements': 'off',
793
791
  'functional/no-mixed-types': ['error', {
@@ -961,7 +959,7 @@ module.exports = {
961
959
  'unicorn/no-await-expression-member': 'error',
962
960
  'unicorn/no-console-spaces': 'error',
963
961
  'unicorn/no-document-cookie': 'error',
964
- 'unicorn/no-empty-file': 'off', // @todo False-positives since @typescript-eslint v6.0.0. @see https://github.com/sindresorhus/eslint-plugin-unicorn/issues/2175
962
+ 'unicorn/no-empty-file': 'error',
965
963
  'unicorn/no-for-loop': 'off', // @typescript-eslint/prefer-for-of
966
964
  'unicorn/no-hex-escape': 'error',
967
965
  'unicorn/no-instanceof-array': 'error',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "linter-bundle",
3
- "version": "3.4.0",
3
+ "version": "3.6.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,40 +40,40 @@
40
40
  "check-outdated": "npx --yes -- check-outdated --ignore-pre-releases"
41
41
  },
42
42
  "dependencies": {
43
- "@typescript-eslint/eslint-plugin": "6.1.0",
44
- "@typescript-eslint/parser": "6.1.0",
45
- "@typescript-eslint/utils": "6.1.0",
46
- "eslint": "8.45.0",
47
- "eslint-import-resolver-typescript": "3.5.5",
48
- "eslint-import-resolver-webpack": "0.13.2",
43
+ "@typescript-eslint/eslint-plugin": "6.3.0",
44
+ "@typescript-eslint/parser": "6.3.0",
45
+ "@typescript-eslint/utils": "6.3.0",
46
+ "eslint": "8.47.0",
47
+ "eslint-import-resolver-typescript": "3.6.0",
48
+ "eslint-import-resolver-webpack": "0.13.4",
49
49
  "eslint-plugin-eslint-comments": "3.2.0",
50
- "eslint-plugin-functional": "5.0.8",
51
- "eslint-plugin-import": "2.27.5",
50
+ "eslint-plugin-functional": "6.0.0",
51
+ "eslint-plugin-import": "2.28.0",
52
52
  "eslint-plugin-jest": "27.2.3",
53
- "eslint-plugin-jsdoc": "46.4.4",
53
+ "eslint-plugin-jsdoc": "46.4.6",
54
54
  "eslint-plugin-jsx-a11y": "6.7.1",
55
55
  "eslint-plugin-n": "16.0.1",
56
56
  "eslint-plugin-promise": "6.1.1",
57
- "eslint-plugin-react": "7.32.2",
57
+ "eslint-plugin-react": "7.33.1",
58
58
  "eslint-plugin-react-hooks": "4.6.0",
59
- "eslint-plugin-unicorn": "48.0.0",
59
+ "eslint-plugin-unicorn": "48.0.1",
60
60
  "markdownlint-cli": "0.35.0",
61
61
  "micromatch": "4.0.5",
62
62
  "postcss-scss": "4.0.6",
63
63
  "stylelint": "15.10.2",
64
64
  "stylelint-declaration-block-no-ignored-properties": "2.7.0",
65
65
  "stylelint-order": "6.0.3",
66
- "stylelint-scss": "5.0.1",
66
+ "stylelint-scss": "5.1.0",
67
67
  "stylelint-use-logical-spec": "5.0.0"
68
68
  },
69
69
  "peerDependencies": {
70
70
  "postcss-value-parser": "*",
71
- "typescript": "^4.0.0"
71
+ "typescript": ">=4.0.0"
72
72
  },
73
73
  "devDependencies": {
74
- "@types/eslint": "8.44.0",
74
+ "@types/eslint": "8.44.2",
75
75
  "@types/micromatch": "4.0.2",
76
- "@types/node": "20.4.2",
76
+ "@types/node": "20.4.9",
77
77
  "stylelint-find-new-rules": "4.1.0",
78
78
  "typescript": "5.1.6"
79
79
  }
@@ -155,7 +155,9 @@ module.exports = {
155
155
  true,
156
156
  {
157
157
  ignoreProperties: {
158
- 'initial-value': '/.+/'
158
+ 'initial-value': /.+/u,
159
+ 'grid-template-areas': /^\([^\u0000]+\)$/u, // Whole block wrapped in parentheses.
160
+ '/.+/': /((^|\s)\$[a-z])|/ui // SCSS variables
159
161
  }
160
162
  }
161
163
  ],
@@ -901,7 +903,8 @@ module.exports = {
901
903
  'scss/dollar-variable-empty-line-after': [
902
904
  'always',
903
905
  {
904
- except: ['last-nested', 'before-dollar-variable']
906
+ except: ['last-nested', 'before-dollar-variable'],
907
+ ignore: ['before-comment', 'inside-single-line-block']
905
908
  }
906
909
  ],
907
910
  'scss/dollar-variable-first-in-block': [true, { ignore: ['comments', 'imports'] }],
@@ -918,7 +921,8 @@ module.exports = {
918
921
  'scss/double-slash-comment-inline': null,
919
922
  'scss/double-slash-comment-whitespace-inside': 'always',
920
923
  'scss/function-color-relative': true,
921
- 'scss/function-no-unknown': true,
924
+ 'scss/function-disallowed-list': null,
925
+ 'scss/function-no-unknown': [true, { ignoreFunctions: [/^custom-/u] }],
922
926
  'scss/function-quote-no-quoted-strings-inside': true,
923
927
  'scss/function-unquote-no-unquoted-strings-inside': true,
924
928
  'scss/map-keys-quotes': 'always',