linter-bundle 4.0.2 → 5.0.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.
Files changed (39) hide show
  1. package/.linter-bundle.js +8 -8
  2. package/CHANGELOG.md +23 -1
  3. package/README.md +1 -1
  4. package/eslint/{index.js → index.cjs} +7 -7
  5. package/eslint/{overrides-javascript-lazy.js → overrides-javascript-lazy.cjs} +1 -1
  6. package/eslint/{overrides-javascript.js → overrides-javascript.cjs} +1 -0
  7. package/eslint/{overrides-react.js → overrides-react.cjs} +4 -4
  8. package/eslint/rules/no-unnecessary-typeof.js +12 -1
  9. package/eslint/rules/package.json +8 -0
  10. package/eslint/rules/restricted-filenames.js +4 -4
  11. package/eslint/rules/restricted-filenames.md +1 -1
  12. package/files/index.js +54 -24
  13. package/helper/{ensure-type.js → ensure-type.cjs} +2 -0
  14. package/helper/get-git-files.js +3 -7
  15. package/helper/get-outdated-dependencies.js +48 -0
  16. package/helper/{validate-package-overrides.js → get-outdated-overrides.js} +9 -10
  17. package/helper/get-stylelint-path.js +15 -12
  18. package/helper/is-npm-or-yarn.js +12 -12
  19. package/helper/linter-bundle-config.cjs +70 -0
  20. package/helper/linter-bundle-config.d.ts +46 -0
  21. package/helper/linter-bundle-config.js +36 -0
  22. package/helper/run-process.js +14 -10
  23. package/lint.js +33 -27
  24. package/package.json +8 -7
  25. package/stylelint/index.cjs +1007 -0
  26. package/stylelint/plugins/stylelint-high-performance-animation.js +4 -5
  27. package/stylelint/plugins/stylelint-selector-no-empty.js +2 -2
  28. package/stylelint/plugins/stylelint-selector-tag-no-without-class.js +6 -7
  29. package/stylelint/plugins/stylelint-stylistic.js +7 -6
  30. package/helper/config.js +0 -48
  31. package/helper/find-missing-overrides.js +0 -49
  32. package/stylelint/index.js +0 -1007
  33. package/types.d.ts +0 -43
  34. /package/eslint/{overrides-gatsby.js → overrides-gatsby.cjs} +0 -0
  35. /package/eslint/{overrides-jest.js → overrides-jest.cjs} +0 -0
  36. /package/eslint/{overrides-jsdoc.js → overrides-jsdoc.cjs} +0 -0
  37. /package/eslint/{overrides-storybook.js → overrides-storybook.cjs} +0 -0
  38. /package/eslint/{overrides-type-declarations.js → overrides-type-declarations.cjs} +0 -0
  39. /package/eslint/{overrides-worker.js → overrides-worker.cjs} +0 -0
@@ -1,1007 +0,0 @@
1
- /**
2
- * @file Global Stylelint settings
3
- */
4
-
5
- /* eslint-disable max-lines -- The rules can be easier managed if they are all in one file */
6
-
7
- const path = require('node:path');
8
-
9
- const config = require('../helper/config.js');
10
-
11
- module.exports = {
12
- reportNeedlessDisables: true,
13
- reportInvalidScopeDisables: true,
14
- reportDescriptionlessDisables: true,
15
- customSyntax: 'postcss-scss',
16
- plugins: [
17
- 'stylelint-declaration-block-no-ignored-properties',
18
- 'stylelint-order',
19
- 'stylelint-scss',
20
- 'stylelint-use-logical-spec',
21
- path.join(__dirname, '/plugins/stylelint-high-performance-animation.js'),
22
- path.join(__dirname, '/plugins/stylelint-selector-no-empty.js'),
23
- path.join(__dirname, '/plugins/stylelint-selector-tag-no-without-class.js'),
24
- path.join(__dirname, '/plugins/stylelint-stylistic.js')
25
- ],
26
- overrides: [
27
- {
28
- files: ['**/*.module.*'],
29
- rules: {
30
- /**
31
- * stylelint
32
- *
33
- * @see https://github.com/stylelint/stylelint/tree/master/lib/rules
34
- */
35
- 'selector-class-pattern': `^(?!(${[
36
- // Disallowed reserved JavaScript keywords
37
- 'abstract',
38
- 'arguments', 'await',
39
- 'boolean', 'break', 'byte',
40
- 'case', 'catch', 'char', 'class', 'const', 'continue',
41
- 'debugger', 'default', 'delete', 'do', 'double',
42
- 'else', 'enum', 'eval', 'export', 'extends',
43
- 'false', 'final', 'finally', 'float', 'for', 'function',
44
- 'goto',
45
- 'if', 'implements', 'import', 'in', 'Infinity', 'instanceof', 'int', 'interface',
46
- 'let', 'long',
47
- 'NaN', 'native', 'new', 'null',
48
- 'package', 'private', 'protected', 'public',
49
- 'return',
50
- 'short', 'static', 'super', 'switch', 'synchronized',
51
- 'this', 'throw', 'throws', 'transient', 'true', 'try', 'typeof',
52
- 'undefined',
53
- 'var', 'void', 'volatile',
54
- 'while', 'with',
55
- 'yield'
56
- ].join('|')})$).+`,
57
-
58
- /**
59
- * stylelint-selector-tag-no-without-class
60
- *
61
- * @see https://github.com/Moxio/stylelint-selector-tag-no-without-class
62
- */
63
- 'plugin/selector-tag-no-without-class': ['/./']
64
- }
65
- }
66
- ],
67
- rules: {
68
- /**
69
- * stylelint
70
- *
71
- * @see https://github.com/stylelint/stylelint/tree/master/lib/rules
72
- */
73
- 'alpha-value-notation': 'number', // @todo change that to 'percentage'?
74
- 'annotation-no-unknown': [true, { ignoreAnnotations: 'default' }],
75
- 'at-rule-allowed-list': null,
76
- 'at-rule-disallowed-list': null,
77
- 'at-rule-empty-line-before': [
78
- 'always',
79
- {
80
- except: [
81
- 'first-nested'
82
- ],
83
- ignore: [
84
- 'after-comment',
85
- 'blockless-after-same-name-blockless'
86
- ]
87
- }
88
- ],
89
- 'at-rule-no-unknown': null, // scss/at-rule-no-unknown
90
- 'at-rule-no-vendor-prefix': true,
91
- 'at-rule-property-required-list': [{
92
- 'font-face': ['font-family', 'font-style', 'font-weight', 'src']
93
- }],
94
- 'block-no-empty': true,
95
- 'color-function-notation': [
96
- 'modern', {
97
- ignore: ['with-var-inside']
98
- }
99
- ],
100
- 'color-hex-alpha': null, // @todo Not widely supported yet. Activate in 2024.
101
- 'color-hex-length': 'short',
102
- 'color-named': 'never',
103
- 'color-no-hex': true,
104
- 'color-no-invalid-hex': true,
105
- 'comment-empty-line-before': [
106
- 'always',
107
- {
108
- except: ['first-nested'],
109
- ignore: ['stylelint-commands']
110
- }
111
- ],
112
- 'comment-no-empty': true,
113
- 'comment-pattern': /^[^\s].+[^\s]$/u,
114
- 'comment-whitespace-inside': 'always',
115
- 'comment-word-disallowed-list': null,
116
- 'custom-media-pattern': (config.sass?.patternPrefix ? `${config.sass.patternPrefix}-[a-z][a-zA-Z]+(-[a-z][a-zA-Z]+\\d*)+` : null),
117
- 'custom-property-empty-line-before': null, // Empty lines between custom properties are optional
118
- 'custom-property-no-missing-var-function': true,
119
- 'custom-property-pattern': (config.sass?.patternPrefix ? `${config.sass.patternPrefix}-[a-z][a-zA-Z]+(-[a-z][a-zA-Z]+\\d*)*` : null),
120
- 'declaration-block-no-duplicate-custom-properties': true,
121
- 'declaration-block-no-duplicate-properties': [
122
- true,
123
- {
124
- ignore: ['consecutive-duplicates-with-different-values']
125
- }
126
- ],
127
- 'declaration-block-no-redundant-longhand-properties': [true, { ignoreShorthands: [/^grid-template/u] }],
128
- 'declaration-block-no-shorthand-property-overrides': true,
129
- 'declaration-block-single-line-max-declarations': 1,
130
- 'declaration-empty-line-before': [
131
- 'always',
132
- {
133
- except: [
134
- 'first-nested'
135
- ],
136
- ignore: [
137
- 'after-comment',
138
- 'after-declaration',
139
- 'inside-single-line-block'
140
- ]
141
- }
142
- ],
143
- 'declaration-property-max-values': null, // { '/.*/': 4 }, @todo disabled because of false-positive with `padding-inline-start: #{24px + $i * 16px};` and `transition: transform, background-color, color, border-color, box-shadow;`
144
- 'declaration-no-important': [true, {
145
- severity: 'warning'
146
- }],
147
- 'declaration-property-unit-allowed-list': [{
148
- 'font-size': ['px', 'em'],
149
- 'line-height': ['px', 'em'],
150
- 'transition': ['ms'],
151
- '/^animation/': ['ms']
152
- }],
153
- 'declaration-property-unit-disallowed-list': null,
154
- 'declaration-property-value-allowed-list': null,
155
- 'declaration-property-value-disallowed-list': null,
156
- 'declaration-property-value-no-unknown': [
157
- true,
158
- {
159
- ignoreProperties: {
160
- 'initial-value': /.+/u,
161
- 'grid-template-areas': /^\([^\u0000]+\)$/u, // Whole block wrapped in parentheses.
162
- '/.+/': /((^|\s)\$[a-z])|/ui // SCSS variables
163
- }
164
- }
165
- ],
166
- 'font-family-name-quotes': 'always-where-recommended',
167
- 'font-family-no-duplicate-names': true,
168
- 'font-family-no-missing-generic-family-keyword': true,
169
- 'font-weight-notation': 'numeric',
170
- 'function-allowed-list': null,
171
- 'function-calc-no-unspaced-operator': true,
172
- 'function-disallowed-list': null,
173
- 'function-linear-gradient-no-nonstandard-direction': true,
174
- 'function-name-case': 'lower',
175
- 'function-no-unknown': null, // Implemented by scss/function-no-unknown
176
- 'function-url-no-scheme-relative': true,
177
- 'function-url-quotes': 'always',
178
- 'function-url-scheme-disallowed-list': null,
179
- 'function-url-scheme-allowed-list': null,
180
- 'hue-degree-notation': 'number', // @todo change that to 'angle'?
181
- 'import-notation': null, // This rule, does not make sense. `node_modules` dependencies need to use `url("css_bundle")`, while project files are using only a string.
182
- 'keyframe-block-no-duplicate-selectors': true,
183
- 'keyframe-declaration-no-important': true,
184
- 'keyframe-selector-notation': 'percentage',
185
- 'keyframes-name-pattern': '^[a-z]+(-[a-z]+)*\\d*$',
186
- 'length-zero-no-unit': true,
187
- 'max-nesting-depth': 6,
188
- 'media-feature-name-allowed-list': null,
189
- 'media-feature-name-disallowed-list': null,
190
- 'media-feature-name-no-unknown': true,
191
- 'media-feature-name-no-vendor-prefix': null, // For Safari, we still need "-webkit-min-device-pixel-ratio": https://caniuse.com/css-media-resolution
192
- 'media-feature-name-unit-allowed-list': null,
193
- 'media-feature-name-value-allowed-list': null,
194
- 'media-feature-name-value-no-unknown': true,
195
- 'media-feature-range-notation': 'prefix',
196
- 'media-query-no-invalid': true,
197
- 'named-grid-areas-no-invalid': true,
198
- 'no-descending-specificity': null, // doesn't work in many cases (e.g. while using the SCSS :global()-pseudo-class)
199
- 'no-duplicate-at-import-rules': true,
200
- 'no-duplicate-selectors': true,
201
- 'no-empty-source': true,
202
- 'no-invalid-double-slash-comments': true,
203
- 'no-invalid-position-at-import-rule': true,
204
- 'no-irregular-whitespace': true,
205
- 'no-unknown-animations': true,
206
- 'no-unknown-custom-properties': null, // @todo Activate in 2025 as Firefox currently does not support "@property" and there is no way to specify which custom properties are available
207
- 'number-max-precision': 5,
208
- 'property-allowed-list': null,
209
- 'property-disallowed-list': [
210
- 'font', // Shorthand property is to complex
211
- 'grid-gap', // @deprecated Use gap.
212
- 'padding-inline', // That's not widely supported and there is no fallback. @see https://caniuse.com/mdn-css_properties_padding-inline
213
- 'margin-inline', // That's not widely supported and there is no fallback. @see https://caniuse.com/mdn-css_properties_margin-inline
214
- 'inset-inline', // That's not widely supported and there is no fallback. @see https://caniuse.com/mdn-css_properties_inset-inline
215
- 'inset-inline-start', // That's not widely supported and there is no fallback. @see https://caniuse.com/mdn-css_properties_inset-inline-start
216
- 'inset-inline-end' // That's not widely supported and there is no fallback. @see https://caniuse.com/mdn-css_properties_inset-inline-end
217
- ],
218
- 'property-no-unknown': true,
219
- 'property-no-vendor-prefix': true,
220
- 'rule-selector-property-disallowed-list': null,
221
- 'rule-empty-line-before': [
222
- 'always-multi-line',
223
- {
224
- except: ['first-nested'],
225
- ignore: ['after-comment']
226
- }
227
- ],
228
- 'selector-anb-no-unmatchable': true,
229
- 'selector-attribute-name-disallowed-list': null,
230
- 'selector-attribute-operator-allowed-list': null,
231
- 'selector-attribute-operator-disallowed-list': null,
232
- 'selector-attribute-quotes': 'always',
233
- 'selector-class-pattern': null,
234
- 'selector-combinator-allowed-list': null,
235
- 'selector-combinator-disallowed-list': null,
236
- 'selector-disallowed-list': null,
237
- 'selector-id-pattern': '^[a-z]+(-[a-z]+)*$',
238
- 'selector-max-attribute': 1,
239
- 'selector-max-class': 5,
240
- 'selector-max-combinators': 5,
241
- 'selector-max-compound-selectors': 5,
242
- 'selector-max-id': 1,
243
- 'selector-max-pseudo-class': 3,
244
- 'selector-max-specificity': [
245
- '1,4,2',
246
- {
247
- ignoreSelectors: [':global', '#root', '[dir="rtl"]', '[dir="ltr"]']
248
- }
249
- ],
250
- 'selector-max-type': 6,
251
- 'selector-max-universal': [1, { ignoreAfterCombinators: ['>', '+'] }],
252
- 'selector-nested-pattern': null,
253
- 'selector-no-qualifying-type': [true, { ignore: ['attribute', 'class'] }],
254
- 'selector-no-vendor-prefix': true,
255
- 'selector-not-notation': null, // 'complex', @todo Reactivate in 2024. Disabled for now, because it depends on the project if modern Selectors Level 4 CSS can be used.
256
- 'selector-pseudo-class-allowed-list': null,
257
- 'selector-pseudo-class-disallowed-list': null,
258
- 'selector-pseudo-class-no-unknown': [true, { ignorePseudoClasses: ['global'] }],
259
- 'selector-pseudo-element-allowed-list': null,
260
- 'selector-pseudo-element-disallowed-list': null,
261
- 'selector-pseudo-element-colon-notation': 'double',
262
- 'selector-pseudo-element-no-unknown': true,
263
- 'selector-type-case': 'lower',
264
- 'selector-type-no-unknown': true,
265
- 'shorthand-property-no-redundant-values': true,
266
- 'string-no-newline': true,
267
- 'time-min-milliseconds': 40, // @todo For the delay of transitions 40ms should be the minimum, for the duration 150ms should be the minimum (change it, as soon as https://github.com/stylelint/stylelint/issues/4552 got implemented)
268
- 'unit-allowed-list': null,
269
- 'unit-disallowed-list': null,
270
- 'unit-no-unknown': true,
271
- 'value-keyword-case': [
272
- 'lower',
273
- {
274
- camelCaseSvgKeywords: true
275
- }
276
- ],
277
- 'value-no-vendor-prefix': true,
278
-
279
- /**
280
- * stylelint-declaration-block-no-ignored-properties
281
- *
282
- * @see https://www.npmjs.com/package/stylelint-declaration-block-no-ignored-properties
283
- */
284
- 'plugin/declaration-block-no-ignored-properties': true,
285
-
286
- /**
287
- * stylelint-high-performance-animation
288
- *
289
- * @see https://github.com/kristerkari/stylelint-high-performance-animation
290
- */
291
- 'plugin/no-low-performance-animation-properties': [true, {
292
- ignore: 'paint-properties',
293
- severity: 'warning'
294
- }],
295
-
296
- /**
297
- * stylelint-stylistic rules
298
- */
299
- 'plugin/at-rule-name-case': 'lower',
300
- 'plugin/at-rule-name-space-after': 'always-single-line',
301
- 'plugin/at-rule-semicolon-newline-after': 'always',
302
- 'plugin/at-rule-semicolon-space-before': 'never',
303
- 'plugin/block-closing-brace-empty-line-before': 'never',
304
- 'plugin/block-closing-brace-newline-after': 'always',
305
- 'plugin/block-closing-brace-newline-before': 'always-multi-line',
306
- 'plugin/block-closing-brace-space-before': 'always-single-line',
307
- 'plugin/block-opening-brace-newline-after': 'always-multi-line',
308
- 'plugin/block-opening-brace-space-after': 'always-single-line',
309
- 'plugin/block-opening-brace-space-before': 'always',
310
- 'plugin/color-hex-case': 'lower',
311
- 'plugin/declaration-bang-space-after': 'never',
312
- 'plugin/declaration-bang-space-before': 'always',
313
- 'plugin/declaration-block-semicolon-newline-after': 'always-multi-line',
314
- 'plugin/declaration-block-semicolon-newline-before': 'never-multi-line',
315
- 'plugin/declaration-block-semicolon-space-after': 'always-single-line',
316
- 'plugin/declaration-block-semicolon-space-before': 'never',
317
- 'plugin/declaration-block-trailing-semicolon': 'always',
318
- 'plugin/declaration-colon-newline-after': 'always-multi-line',
319
- 'plugin/declaration-colon-space-after': 'always-single-line',
320
- 'plugin/declaration-colon-space-before': 'never',
321
- 'plugin/function-comma-newline-after': 'always-multi-line',
322
- 'plugin/function-comma-newline-before': 'never-multi-line',
323
- 'plugin/function-comma-space-after': 'always-single-line',
324
- 'plugin/function-comma-space-before': 'never',
325
- 'plugin/function-max-empty-lines': 0,
326
- 'plugin/function-parentheses-newline-inside': 'always-multi-line',
327
- 'plugin/function-parentheses-space-inside': 'never-single-line',
328
- 'plugin/function-whitespace-after': 'always',
329
- 'plugin/indentation': 'tab',
330
- 'plugin/linebreaks': 'unix',
331
- 'plugin/max-empty-lines': 1,
332
- 'plugin/max-line-length': 160,
333
- 'plugin/media-feature-colon-space-after': 'always',
334
- 'plugin/media-feature-colon-space-before': 'never',
335
- 'plugin/media-feature-name-case': 'lower',
336
- 'plugin/media-feature-parentheses-space-inside': 'never',
337
- 'plugin/media-feature-range-operator-space-after': 'always',
338
- 'plugin/media-feature-range-operator-space-before': 'always',
339
- 'plugin/media-query-list-comma-newline-after': 'always-multi-line',
340
- 'plugin/media-query-list-comma-newline-before': 'never-multi-line',
341
- 'plugin/media-query-list-comma-space-after': 'always-single-line',
342
- 'plugin/media-query-list-comma-space-before': 'never',
343
- 'plugin/no-empty-first-line': true,
344
- 'plugin/no-eol-whitespace': true,
345
- 'plugin/no-extra-semicolons': true,
346
- 'plugin/no-missing-end-of-source-newline': true,
347
- 'plugin/number-leading-zero': 'always',
348
- 'plugin/number-no-trailing-zeros': true,
349
- 'plugin/property-case': 'lower',
350
- 'plugin/selector-attribute-brackets-space-inside': 'never',
351
- 'plugin/selector-attribute-operator-space-after': 'never',
352
- 'plugin/selector-attribute-operator-space-before': 'never',
353
- 'plugin/selector-combinator-space-after': 'always',
354
- 'plugin/selector-combinator-space-before': 'always',
355
- 'plugin/selector-descendant-combinator-no-non-space': true,
356
- 'plugin/selector-list-comma-newline-after': 'always',
357
- 'plugin/selector-list-comma-newline-before': 'never-multi-line',
358
- 'plugin/selector-list-comma-space-after': 'always-single-line',
359
- 'plugin/selector-list-comma-space-before': 'never',
360
- 'plugin/selector-max-empty-lines': 0,
361
- 'plugin/selector-pseudo-class-case': 'lower',
362
- 'plugin/selector-pseudo-class-parentheses-space-inside': 'never',
363
- 'plugin/selector-pseudo-element-case': 'lower',
364
- 'plugin/string-quotes': 'double',
365
- 'plugin/unicode-bom': 'never',
366
- 'plugin/unit-case': 'lower',
367
- 'plugin/value-list-comma-newline-after': 'always-multi-line',
368
- 'plugin/value-list-comma-newline-before': 'never-multi-line',
369
- 'plugin/value-list-comma-space-after': 'always-single-line',
370
- 'plugin/value-list-comma-space-before': 'never',
371
- 'plugin/value-list-max-empty-lines': 0,
372
-
373
- /**
374
- * stylelint-order
375
- *
376
- * @see https://www.npmjs.com/package/stylelint-order
377
- */
378
- 'order/order': [
379
- 'dollar-variables',
380
- 'at-variables',
381
- {
382
- type: 'at-rule',
383
- name: 'extend'
384
- },
385
- {
386
- type: 'at-rule',
387
- name: 'include'
388
- },
389
- 'custom-properties',
390
- 'declarations',
391
- {
392
- type: 'at-rule',
393
- name: 'media'
394
- },
395
- 'rules',
396
- {
397
- type: 'at-rule',
398
- name: 'keyframes'
399
- }
400
- ],
401
- 'order/properties-alphabetical-order': null,
402
- 'order/properties-order': [
403
- [
404
- {
405
- groupName: 'Reset',
406
- emptyLineBefore: 'always',
407
- noEmptyLineBetween: true,
408
- properties: [
409
- 'all'
410
- ]
411
- },
412
-
413
- {
414
- groupName: 'Performance Optimizations',
415
- emptyLineBefore: 'always',
416
- noEmptyLineBetween: true,
417
- properties: [
418
- 'contain',
419
- 'content-visibility',
420
- 'contain-intrinsic-size',
421
- 'will-change'
422
- ]
423
- },
424
- {
425
- groupName: 'Heading',
426
- emptyLineBefore: 'always',
427
- noEmptyLineBetween: true,
428
- properties: [
429
- 'content',
430
- 'quotes'
431
- ]
432
- },
433
- {
434
- groupName: 'Box',
435
- emptyLineBefore: 'always',
436
- noEmptyLineBetween: true,
437
- properties: [
438
- 'display',
439
- 'visibility',
440
-
441
- 'appearance',
442
-
443
- 'position',
444
- 'z-index'
445
- ]
446
- },
447
- {
448
- groupName: 'Position',
449
- emptyLineBefore: 'always',
450
- noEmptyLineBetween: true,
451
- properties: [
452
- 'inset',
453
- 'top',
454
- 'right',
455
- 'bottom',
456
- 'left',
457
-
458
- 'box-sizing'
459
- ]
460
- },
461
- {
462
- groupName: 'Grid',
463
- emptyLineBefore: 'always',
464
- noEmptyLineBetween: true,
465
- properties: [
466
- 'grid',
467
- 'grid-after',
468
- 'grid-area',
469
- 'grid-auto-columns',
470
- 'grid-auto-flow',
471
- 'grid-auto-rows',
472
- 'grid-before',
473
- 'grid-column',
474
- 'grid-column-end',
475
- 'grid-column-gap',
476
- 'grid-column-start',
477
- 'grid-columns',
478
- 'grid-end',
479
- 'grid-row',
480
- 'grid-row-end',
481
- 'grid-row-gap',
482
- 'grid-row-start',
483
- 'grid-rows',
484
- 'grid-start',
485
- 'grid-template',
486
- 'grid-template-areas',
487
- 'grid-template-columns',
488
- 'grid-template-rows'
489
- ]
490
- },
491
- {
492
- groupName: 'Flex',
493
- emptyLineBefore: 'always',
494
- noEmptyLineBetween: true,
495
- properties: [
496
- 'flex',
497
- 'flex-basis',
498
- 'flex-direction',
499
- 'flex-flow',
500
- 'flex-grow',
501
- 'flex-shrink',
502
- 'flex-wrap',
503
- 'order'
504
- ]
505
- },
506
- {
507
- groupName: 'Gap',
508
- emptyLineBefore: 'always',
509
- noEmptyLineBetween: true,
510
- properties: [
511
- 'gap',
512
- 'row-gap',
513
- 'column-gap'
514
- ]
515
- },
516
- {
517
- groupName: 'Alignment',
518
- emptyLineBefore: 'always',
519
- noEmptyLineBetween: true,
520
- properties: [
521
- 'align-content',
522
- 'align-items',
523
- 'align-self',
524
- 'justify-content',
525
- 'justify-items',
526
- 'justify-self',
527
- 'place-content',
528
- 'place-items',
529
- 'place-self'
530
- ]
531
- },
532
- {
533
- groupName: 'Dimension',
534
- emptyLineBefore: 'always',
535
- noEmptyLineBetween: true,
536
- properties: [
537
- 'width',
538
- 'min-width',
539
- 'max-width',
540
- 'height',
541
- 'min-height',
542
- 'max-height'
543
- ]
544
- },
545
- {
546
- groupName: 'Margin',
547
- emptyLineBefore: 'always',
548
- noEmptyLineBetween: true,
549
- properties: [
550
- 'margin',
551
- 'margin-top',
552
- 'margin-right',
553
- 'margin-bottom',
554
- 'margin-left',
555
- 'margin-inline-start',
556
- 'margin-inline-end'
557
- ]
558
- },
559
- {
560
- groupName: 'Padding',
561
- emptyLineBefore: 'always',
562
- noEmptyLineBetween: true,
563
- properties: [
564
- 'padding',
565
- 'padding-top',
566
- 'padding-right',
567
- 'padding-bottom',
568
- 'padding-left',
569
- 'padding-inline-start',
570
- 'padding-inline-end'
571
- ]
572
- },
573
- {
574
- groupName: 'Float',
575
- emptyLineBefore: 'always',
576
- noEmptyLineBetween: true,
577
- properties: [
578
- 'float',
579
- 'clear'
580
- ]
581
- },
582
- {
583
- groupName: 'Overflow',
584
- emptyLineBefore: 'always',
585
- noEmptyLineBetween: true,
586
- properties: [
587
- 'overflow',
588
- 'overflow-x',
589
- 'overflow-y',
590
- 'overscroll-behavior'
591
- ]
592
- },
593
- {
594
- groupName: 'Clip / Zoom',
595
- emptyLineBefore: 'always',
596
- noEmptyLineBetween: true,
597
- properties: [
598
- 'clip',
599
- 'zoom'
600
- ]
601
- },
602
- {
603
- groupName: 'Columns',
604
- emptyLineBefore: 'always',
605
- noEmptyLineBetween: true,
606
- properties: [
607
- 'columns',
608
- 'column-fill',
609
- 'column-rule',
610
- 'column-span',
611
- 'column-count',
612
- 'column-width',
613
- 'widows',
614
- 'orphans'
615
- ]
616
- },
617
- {
618
- groupName: 'Table / List',
619
- emptyLineBefore: 'always',
620
- noEmptyLineBetween: true,
621
- properties: [
622
- 'table-layout',
623
- 'empty-cells',
624
- 'caption-side',
625
- 'border-spacing',
626
- 'border-collapse',
627
- 'list-style',
628
- 'list-style-position',
629
- 'list-style-type',
630
- 'list-style-image'
631
- ]
632
- },
633
- {
634
- groupName: 'Transform',
635
- emptyLineBefore: 'always',
636
- noEmptyLineBetween: true,
637
- properties: [
638
- 'transform',
639
- 'transform-origin',
640
- 'transform-style',
641
- 'backface-visibility',
642
- 'perspective',
643
- 'perspective-origin'
644
- ]
645
- },
646
- {
647
- groupName: 'Transition',
648
- emptyLineBefore: 'always',
649
- noEmptyLineBetween: true,
650
- properties: [
651
- 'transition',
652
- 'transition-property',
653
- 'transition-duration',
654
- 'transition-timing-function',
655
- 'transition-delay'
656
- ]
657
- },
658
- {
659
- groupName: 'Animation',
660
- emptyLineBefore: 'always',
661
- noEmptyLineBetween: true,
662
- properties: [
663
- 'animation',
664
- 'animation-name',
665
- 'animation-duration',
666
- 'animation-play-state',
667
- 'animation-timing-function',
668
- 'animation-delay',
669
- 'animation-iteration-count',
670
- 'animation-direction',
671
- 'animation-fill-mode'
672
- ]
673
- },
674
- {
675
- groupName: 'Border General',
676
- emptyLineBefore: 'always',
677
- noEmptyLineBetween: true,
678
- properties: [
679
- 'border',
680
- 'border-top',
681
- 'border-right',
682
- 'border-bottom',
683
- 'border-left',
684
- 'border-width',
685
- 'border-top-width',
686
- 'border-right-width',
687
- 'border-bottom-width',
688
- 'border-left-width',
689
- 'border-inline-start-width',
690
- 'border-inline-end-width',
691
-
692
- 'border-style',
693
- 'border-top-style',
694
- 'border-right-style',
695
- 'border-bottom-style',
696
- 'border-left-style',
697
- 'border-inline-start-style',
698
- 'border-inline-end-style',
699
-
700
- 'border-radius',
701
- 'border-top-left-radius',
702
- 'border-top-right-radius',
703
- 'border-bottom-left-radius',
704
- 'border-bottom-right-radius',
705
-
706
- 'border-color',
707
- 'border-top-color',
708
- 'border-right-color',
709
- 'border-bottom-color',
710
- 'border-left-color',
711
- 'border-inline-start-color',
712
- 'border-inline-end-color'
713
- ]
714
- },
715
- {
716
- groupName: 'Outline',
717
- emptyLineBefore: 'always',
718
- noEmptyLineBetween: true,
719
- properties: [
720
- 'outline',
721
- 'outline-color',
722
- 'outline-offset',
723
- 'outline-style',
724
- 'outline-width'
725
- ]
726
- },
727
- {
728
- groupName: 'Stroke',
729
- emptyLineBefore: 'always',
730
- noEmptyLineBetween: true,
731
- properties: [
732
- 'stroke-width',
733
- 'stroke-linecap',
734
- 'stroke-dasharray',
735
- 'stroke-dashoffset',
736
- 'stroke'
737
- ]
738
- },
739
- {
740
- groupName: 'Opacity',
741
- emptyLineBefore: 'always',
742
- noEmptyLineBetween: true,
743
- properties: [
744
- 'opacity'
745
- ]
746
- },
747
- {
748
- groupName: 'Background',
749
- emptyLineBefore: 'always',
750
- noEmptyLineBetween: true,
751
- properties: [
752
- 'background',
753
- 'background-color',
754
- 'background-image',
755
- 'background-repeat',
756
- 'background-position',
757
- 'background-size',
758
- 'box-shadow',
759
- 'fill'
760
- ]
761
- },
762
- {
763
- groupName: 'Text Color',
764
- emptyLineBefore: 'always',
765
- noEmptyLineBetween: true,
766
- properties: [
767
- 'color',
768
- 'caret-color'
769
- ]
770
- },
771
- {
772
- groupName: 'Font',
773
- emptyLineBefore: 'always',
774
- noEmptyLineBetween: true,
775
- properties: [
776
- 'font',
777
- 'font-family',
778
- 'font-size',
779
- 'font-size-adjust',
780
- 'font-stretch',
781
- 'font-effect',
782
- 'font-style',
783
- 'font-variant',
784
- 'font-weight',
785
- 'font-smoothing',
786
- 'font-display',
787
-
788
- 'font-emphasize',
789
- 'font-emphasize-position',
790
- 'font-emphasize-style'
791
- ]
792
- },
793
- {
794
- groupName: 'Text',
795
- emptyLineBefore: 'always',
796
- noEmptyLineBetween: true,
797
- properties: [
798
- 'letter-spacing',
799
- 'line-height',
800
- 'word-spacing',
801
-
802
- 'text-align',
803
- 'text-align-last',
804
- 'text-decoration',
805
- 'text-indent',
806
- 'text-justify',
807
- 'text-overflow',
808
- 'text-overflow-ellipsis',
809
- 'text-overflow-mode',
810
- 'text-rendering',
811
- 'text-outline',
812
- 'text-shadow',
813
- 'text-transform',
814
- 'text-wrap',
815
- 'word-wrap',
816
- 'overflow-wrap',
817
- 'word-break',
818
-
819
- 'text-emphasis',
820
- 'text-emphasis-color',
821
- 'text-emphasis-style',
822
- 'text-emphasis-position',
823
-
824
- 'vertical-align',
825
- 'white-space',
826
- 'word-spacing',
827
- 'hyphens',
828
- 'hyphenate-character',
829
-
830
- 'src'
831
- ]
832
- },
833
- {
834
- groupName: 'Other',
835
- emptyLineBefore: 'always',
836
- noEmptyLineBetween: true,
837
- properties: [
838
- 'tab-size',
839
- 'counter-reset',
840
- 'counter-increment',
841
- 'resize',
842
- 'cursor',
843
- 'pointer-events',
844
- 'speak',
845
- 'user-select',
846
- 'touch-callout',
847
- 'nav-index',
848
- 'nav-up',
849
- 'nav-right',
850
- 'nav-down',
851
- 'nav-left'
852
- ]
853
- }
854
- ],
855
- {
856
- unspecified: 'bottom',
857
- emptyLineBeforeUnspecified: 'always',
858
- emptyLineMinimumPropertyThreshold: 0
859
- }
860
- ],
861
-
862
- /**
863
- * stylelint-scss
864
- *
865
- * @see https://www.npmjs.com/package/stylelint-scss
866
- */
867
- 'scss/at-each-key-value-single-line': true,
868
- 'scss/at-else-closing-brace-newline-after': 'always-last-in-chain',
869
- 'scss/at-else-closing-brace-space-after': 'never-intermediate',
870
- 'scss/at-else-empty-line-before': 'never',
871
- 'scss/at-else-if-parentheses-space-before': 'always',
872
- 'scss/at-extend-no-missing-placeholder': true,
873
- 'scss/at-function-named-arguments': ['never', { ignoreFunctions: ['scale-color', 'color.scale'] }],
874
- 'scss/at-function-parentheses-space-before': 'always',
875
- 'scss/at-function-pattern': '^[a-z]+(-[a-z]+)*$',
876
- 'scss/at-if-closing-brace-newline-after': 'always-last-in-chain',
877
- 'scss/at-if-closing-brace-space-after': 'never-intermediate',
878
- 'scss/at-if-no-null': true,
879
- 'scss/at-import-no-partial-leading-underscore': null,
880
- 'scss/at-import-partial-extension-blacklist': null,
881
- 'scss/at-import-partial-extension-whitelist': null,
882
- 'scss/at-import-partial-extension': 'always',
883
- 'scss/at-mixin-argumentless-call-parentheses': 'never',
884
- 'scss/at-mixin-named-arguments': ['always', { ignore: ['single-argument'] }],
885
- 'scss/at-mixin-parentheses-space-before': 'always',
886
- 'scss/at-mixin-pattern': '^[a-z]+(-[a-z]+)*$',
887
- 'scss/at-rule-conditional-no-parentheses': true,
888
- 'scss/at-rule-no-unknown': true,
889
- 'scss/at-use-no-unnamespaced': true,
890
- 'scss/comment-no-empty': true,
891
- 'scss/comment-no-loud': true,
892
- 'scss/declaration-nested-properties-no-divided-groups': true,
893
- 'scss/declaration-nested-properties': 'never',
894
- 'scss/dimension-no-non-numeric-values': true,
895
- 'scss/dollar-variable-colon-newline-after': null,
896
- 'scss/dollar-variable-colon-space-after': 'always',
897
- 'scss/dollar-variable-colon-space-before': 'never',
898
- 'scss/dollar-variable-default': null,
899
- 'scss/dollar-variable-empty-line-before': [
900
- 'always',
901
- {
902
- except: ['first-nested', 'after-comment', 'after-dollar-variable']
903
- }
904
- ],
905
- 'scss/dollar-variable-empty-line-after': [
906
- 'always',
907
- {
908
- except: ['last-nested', 'before-dollar-variable'],
909
- ignore: ['before-comment', 'inside-single-line-block']
910
- }
911
- ],
912
- 'scss/dollar-variable-first-in-block': [true, { ignore: ['comments', 'imports'] }],
913
- 'scss/dollar-variable-no-missing-interpolation': true,
914
- 'scss/dollar-variable-no-namespaced-assignment': true,
915
- 'scss/dollar-variable-pattern': '^[a-z]+(-[a-z]+)*$',
916
- 'scss/double-slash-comment-empty-line-before': [
917
- 'always',
918
- {
919
- except: ['first-nested'],
920
- ignore: ['between-comments', 'stylelint-commands']
921
- }
922
- ],
923
- 'scss/double-slash-comment-inline': null,
924
- 'scss/double-slash-comment-whitespace-inside': 'always',
925
- 'scss/function-color-relative': true,
926
- 'scss/function-disallowed-list': null,
927
- 'scss/function-no-unknown': [true, { ignoreFunctions: [/^custom-/u] }],
928
- 'scss/function-quote-no-quoted-strings-inside': true,
929
- 'scss/function-unquote-no-unquoted-strings-inside': true,
930
- 'scss/map-keys-quotes': 'always',
931
- 'scss/media-feature-value-dollar-variable': 'never',
932
- 'scss/no-dollar-variables': null,
933
- 'scss/no-duplicate-dollar-variables': true,
934
- 'scss/no-duplicate-mixins': true,
935
- 'scss/no-global-function-names': true,
936
- 'scss/operator-no-newline-after': true,
937
- 'scss/operator-no-newline-before': true,
938
- 'scss/operator-no-unspaced': true,
939
- 'scss/partial-no-import': null,
940
- 'scss/percent-placeholder-pattern': '^[a-z]+(-[a-z]+)*$',
941
- 'scss/selector-nest-combinators': null, // Sometimes nesting does not make sense
942
- 'scss/selector-no-redundant-nesting-selector': true,
943
- 'scss/selector-no-union-class-name': true,
944
-
945
- /**
946
- * stylelint-selector-no-empty
947
- *
948
- * @see https://github.com/ssivanatarajan/stylelint-selector-no-empty
949
- */
950
- 'plugin/stylelint-selector-no-empty': true,
951
-
952
- /**
953
- * stylelint-selector-tag-no-without-class
954
- *
955
- * @see https://github.com/Moxio/stylelint-selector-tag-no-without-class
956
- */
957
- 'plugin/selector-tag-no-without-class': null,
958
-
959
- /**
960
- * stylelint-use-logical-spec
961
- *
962
- * @see https://github.com/Jordan-Hall/stylelint-use-logical-spec
963
- */
964
- 'liberty/use-logical-spec': ['always', { except: [
965
- 'float',
966
-
967
- 'inset',
968
- 'top',
969
- 'bottom',
970
-
971
- 'border-top', // "border-block-start" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-start
972
- 'border-top-color', // "border-block-start-color" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-start-color
973
- 'border-top-left-radius', // "border-start-start-radius" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-start-start-radius
974
- 'border-top-right-radius', // "border-start-end-radius" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-start-end-radius
975
- 'border-top-width', // "border-block-start-width" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-start-width
976
- 'border-bottom', // "border-block-end" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-end
977
- 'border-bottom-color', // "border-block-end-color" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-end-color
978
- 'border-bottom-left-radius', // "border-end-start-radius" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-bottom-left-radius
979
- 'border-bottom-right-radius', // "border-end-end-radius" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-end-end-radius
980
- 'border-bottom-width', // "border-block-end-width" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-block-end-width
981
- 'border-left', // "border-inline-start" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-inline-start
982
- 'border-left-color', // "border-inline-start-color" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-inline-start-color
983
- 'border-right', // "border-inline-end" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-inline-end
984
- 'border-right-color', // "border-inline-end-color" is new and should not be used before 2022. @see https://caniuse.com/mdn-css_properties_border-inline-end-color
985
-
986
- 'margin',
987
- 'margin-top',
988
- 'margin-bottom',
989
-
990
- 'padding',
991
- 'padding-top',
992
- 'padding-bottom',
993
-
994
- 'left', // "inset-inline" is not supported by any browser, expect Firefox. @see https://caniuse.com/mdn-css_properties_inset-inline
995
- 'right', // "inset-inline-end" is not supported by any browser, expect Firefox. @see https://caniuse.com/mdn-css_properties_inset-inline
996
-
997
- 'text-align', // @todo Should only be disabled for "right", since numbers should be always aligned right, for any direction.
998
-
999
- 'width', // "inline-size" is very rarely needed. I'm not aware of any use-case.
1000
- 'height', // "block-size" is very rarely needed. I'm not aware of any use-case.
1001
- 'min-width', // "min-inline-size" is very rarely needed. I'm not aware of any use-case.
1002
- 'min-height', // "min-block-size" is very rarely needed. I'm not aware of any use-case.
1003
- 'max-width', // "max-inline-size" is very rarely needed. I'm not aware of any use-case.
1004
- 'max-height' // "max-block-size" is very rarely needed. I'm not aware of any use-case.
1005
- ] }]
1006
- }
1007
- };