@alexlit/lint-kit 109.0.0 → 110.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/lint-kit",
3
- "version": "109.0.0",
3
+ "version": "110.0.0",
4
4
  "private": false,
5
5
  "description": "Preset of configuration files and dependencies for linting web applications (designed for Vue.js with TypeScript)",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/config-commitlint",
3
- "version": "11.0.0",
3
+ "version": "11.1.0",
4
4
  "private": false,
5
5
  "description": "Commitlint config",
6
6
  "keywords": [
@@ -32,8 +32,8 @@
32
32
  "up": "../../scripts/up.sh"
33
33
  },
34
34
  "dependencies": {
35
- "@commitlint/cli": "^19.0.3",
36
- "@commitlint/config-conventional": "^19.0.3",
35
+ "@commitlint/cli": "^19.1.0",
36
+ "@commitlint/config-conventional": "^19.1.0",
37
37
  "conventional-changelog-cli": "^4.1.0"
38
38
  }
39
39
  }
@@ -23,11 +23,7 @@ const specialized = [
23
23
  module.exports = [
24
24
  ...programming,
25
25
  ...specialized,
26
- 'jsonc',
27
26
  'aave',
28
- 'changelogen',
29
- 'maxerr',
30
- 'tailwindcss',
31
27
  'airbnb',
32
28
  'aland',
33
29
  'alexey',
@@ -85,6 +81,7 @@ module.exports = [
85
81
  'centos',
86
82
  'chaina',
87
83
  'changelly',
84
+ 'changelogen',
88
85
  'chartjs',
89
86
  'checkboxes',
90
87
  'chokidar',
@@ -209,6 +206,7 @@ module.exports = [
209
206
  'jsdoc',
210
207
  'jsdoc',
211
208
  'jsnext',
209
+ 'jsonc',
212
210
  'junit',
213
211
  'kakao',
214
212
  'kanban',
@@ -242,6 +240,7 @@ module.exports = [
242
240
  'mastercard',
243
241
  'materialdesignicons',
244
242
  'mattermost',
243
+ 'maxerr',
245
244
  'mercurio',
246
245
  'mercuryo',
247
246
  'metafile',
@@ -294,6 +293,7 @@ module.exports = [
294
293
  'osascript',
295
294
  'outdent',
296
295
  'outdir',
296
+ 'packagejson',
297
297
  'parens',
298
298
  'pathname',
299
299
  'patreon',
@@ -378,6 +378,7 @@ module.exports = [
378
378
  'svgstore',
379
379
  'systemize',
380
380
  'tagless',
381
+ 'tailwindcss',
381
382
  'tanstack',
382
383
  'taobao',
383
384
  'taurus',
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/config-eslint",
3
- "version": "76.6.0",
3
+ "version": "76.7.0",
4
4
  "private": false,
5
5
  "description": "Eslint config",
6
6
  "keywords": [
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "dependencies": {
36
36
  "@intlify/eslint-plugin-vue-i18n": "^2.0.0",
37
- "@tanstack/eslint-plugin-query": "^5.20.1",
37
+ "@tanstack/eslint-plugin-query": "^5.27.3",
38
38
  "@typescript-eslint/eslint-plugin": "^6.21.0",
39
39
  "@typescript-eslint/parser": "^6.21.0",
40
40
  "eslint": "^8.57.0",
@@ -77,8 +77,8 @@
77
77
  "eslint-plugin-typescript-sort-keys": "^3.2.0",
78
78
  "eslint-plugin-unicorn": "^51.0.1",
79
79
  "eslint-plugin-unused-imports": "^3.1.0",
80
- "eslint-plugin-vitest": "^0.3.25",
81
- "eslint-plugin-vue": "^9.22.0",
80
+ "eslint-plugin-vitest": "^0.3.26",
81
+ "eslint-plugin-vue": "^9.23.0",
82
82
  "eslint-plugin-vuejs-accessibility": "^2.2.1",
83
83
  "eslint-plugin-wc": "^2.0.4",
84
84
  "eslint-plugin-write-good-comments": "^0.2.0",
@@ -8,14 +8,26 @@ npm i @alexlit/config-prettier -D
8
8
 
9
9
  ## Connection
10
10
 
11
- ```js
12
- // prettier.config.js
13
- import config from '@alexlit/config-prettier';
11
+ - Default
12
+ ([see plugins enabled by default](https://github.com/alex-lit/lint-kit/blob/master/packages/config-prettier/index.js#L5))
14
13
 
15
- export default {
16
- ...config,
14
+ ```js
15
+ // prettier.config.js
16
+ import { createConfig } from '@alexlit/config-prettier';
17
17
 
18
- // if additional plugins needed
19
- plugins: [...config.plugins, 'your-favorite-plugin'],
20
- };
21
- ```
18
+ export default createConfig();
19
+ ```
20
+
21
+ - Custom
22
+
23
+ ```js
24
+ // prettier.config.js
25
+ import { createConfig } from '@alexlit/config-prettier';
26
+
27
+ export default createConfig({
28
+ php: true,
29
+ ruby: true,
30
+ sql: false,
31
+ tailwindcss: false,
32
+ });
33
+ ```
@@ -1,38 +1,97 @@
1
- /* eslint-disable spellcheck/spell-checker, import/extensions */
2
- import jsdoc from './plugins/jsdoc.js';
3
- import pug from './plugins/pug.js';
4
- import sortJson from './plugins/sort-json.js';
5
- import xml from './plugins/xml.js';
6
-
7
- export default {
8
- endOfLine: 'lf',
9
-
10
- plugins: [
11
- '@prettier/plugin-php',
12
- '@prettier/plugin-pug',
13
- '@prettier/plugin-ruby',
14
- '@prettier/plugin-xml',
15
-
16
- 'prettier-plugin-jsdoc',
17
- 'prettier-plugin-packagejson',
18
- 'prettier-plugin-sh',
19
- 'prettier-plugin-solidity',
20
- 'prettier-plugin-sort-json',
21
- 'prettier-plugin-sql',
22
- // 'prettier-plugin-svelte',
23
- // 'prettier-plugin-tailwindcss',
24
- ],
25
-
26
- proseWrap: 'always',
27
- singleQuote: true,
28
- tabWidth: 2,
29
- trailingComma: 'all',
30
- vueIndentScriptAndStyle: true,
31
-
32
- ...jsdoc,
33
- ...pug,
34
- ...sortJson,
35
- // ...svelte,
36
- // ...tailwindcss,
37
- ...xml,
1
+ /* eslint-disable no-loops/no-loops, no-restricted-syntax, no-await-in-loop */
2
+
3
+ import { omit } from 'radash';
4
+
5
+ const PLUGINS = {
6
+ /** @see [prettier-plugin-jsdoc](https://github.com/hosseinmd/prettier-plugin-jsdoc) */
7
+ jsdoc: true,
8
+
9
+ /** @see [prettier-plugin-packagejson](https://github.com/matzkoh/prettier-plugin-packagejson) */
10
+ packagejson: true,
11
+
12
+ /** @see [plugin-php](https://github.com/prettier/plugin-php) */
13
+ php: false,
14
+
15
+ /** @see [plugin-pug](https://github.com/prettier/plugin-pug) */
16
+ pug: true,
17
+
18
+ /** @see [plugin-ruby](https://github.com/prettier/plugin-ruby) */
19
+ ruby: false,
20
+
21
+ /** @see [prettier-plugin-sh](https://github.com/astorije/prettier-plugin-sh) */
22
+ sh: true,
23
+
24
+ /** @see [prettier-plugin-solidity](https://github.com/prettier-solidity/prettier-plugin-solidity) */
25
+ solidity: true,
26
+
27
+ /** @see [prettier-plugin-sort-json](https://github.com/Gudahtt/prettier-plugin-sort-json) */
28
+ 'sort-json': true,
29
+
30
+ /** @see [prettier-plugin-sql](https://github.com/un-ts/prettier/tree/master/packages/sql) */
31
+ sql: false,
32
+
33
+ /** @see [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) */
34
+ svelte: false,
35
+
36
+ /** @see [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) */
37
+ tailwindcss: false,
38
+
39
+ /** @see [plugin-xml](https://github.com/prettier/plugin-xml) */
40
+ xml: true,
41
+ };
42
+
43
+ /**
44
+ * Create plugins config list
45
+ *
46
+ * @param {PLUGINS} plugins Enabled/disabled plugins list
47
+ *
48
+ * @returns {import('prettier').Config} Prettier configuration
49
+ */
50
+ const createPluginsConfig = async (plugins = {}) => {
51
+ let pluginsConfig = { plugins: [] };
52
+
53
+ const pluginEntries = Object.entries({ ...PLUGINS, ...plugins });
54
+
55
+ for (const [name, isActive] of pluginEntries) {
56
+ if (isActive) {
57
+ const { default: config } = await import(
58
+ `@alexlit/config-prettier/plugins/${name}.js`
59
+ );
60
+
61
+ if (config.plugins?.length > 0) {
62
+ pluginsConfig.plugins.push(...config.plugins);
63
+ }
64
+
65
+ pluginsConfig = { ...pluginsConfig, ...omit(config, ['plugins']) };
66
+ }
67
+ }
68
+
69
+ return pluginsConfig;
70
+ };
71
+
72
+ /**
73
+ * Create prettier config
74
+ *
75
+ * @param {PLUGINS} plugins
76
+ * @param {import('prettier').Config} options Prettier options
77
+ *
78
+ * @returns {import('prettier').Config} Prettier configuration
79
+ */
80
+ export const createConfig = async (plugins = {}, options = {}) => {
81
+ const pluginsConfig = await createPluginsConfig(plugins);
82
+
83
+ return {
84
+ endOfLine: 'lf',
85
+
86
+ plugins: [...pluginsConfig.plugins, ...(options.plugins ?? [])],
87
+
88
+ proseWrap: 'always',
89
+ singleQuote: true,
90
+ tabWidth: 2,
91
+ trailingComma: 'all',
92
+ vueIndentScriptAndStyle: true,
93
+
94
+ ...omit(pluginsConfig, ['plugins']),
95
+ ...omit(options, ['plugins']),
96
+ };
38
97
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/config-prettier",
3
- "version": "16.6.4",
3
+ "version": "17.0.0",
4
4
  "private": false,
5
5
  "description": "prettier config",
6
6
  "keywords": [
@@ -45,7 +45,8 @@
45
45
  "prettier-plugin-sort-json": "^3.1.0",
46
46
  "prettier-plugin-sql": "^0.18.0",
47
47
  "prettier-plugin-svelte": "^3.2.2",
48
- "prettier-plugin-tailwindcss": "^0.5.12"
48
+ "prettier-plugin-tailwindcss": "^0.5.12",
49
+ "radash": "^12.1.0"
49
50
  },
50
51
  "engines": {
51
52
  "node": ">=18.12.0"
@@ -1,6 +1,6 @@
1
- /** @see [prettier-plugin-jsdoc](https://github.com/hosseinmd/prettier-plugin-jsdoc) */
2
1
  export default {
3
2
  jsdocCommentLineStrategy: 'singleLine',
4
3
  jsdocSeparateReturnsFromParam: true,
5
4
  jsdocSeparateTagGroups: true,
5
+ plugins: ['prettier-plugin-jsdoc'],
6
6
  };
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['prettier-plugin-packagejson'],
3
+ };
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['@prettier/plugin-php'],
3
+ };
@@ -1,5 +1,6 @@
1
- /** @see [plugin-pug](https://github.com/prettier/plugin-pug) */
2
1
  export default {
2
+ plugins: ['@prettier/plugin-pug'],
3
+
3
4
  pugCommentPreserveSpaces: 'trim-all',
4
5
  pugSingleQuote: false,
5
6
  pugSortAttributes: 'asc',
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['@prettier/plugin-ruby'],
3
+ };
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['prettier-plugin-sh'],
3
+ };
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['prettier-plugin-solidity'],
3
+ };
@@ -1,4 +1,5 @@
1
- /** @see [prettier-plugin-sort-json]https://github.com/Gudahtt/prettier-plugin-sort-json) */
2
1
  export default {
3
2
  jsonRecursiveSort: true,
3
+
4
+ plugins: ['prettier-plugin-sort-json'],
4
5
  };
@@ -0,0 +1,3 @@
1
+ export default {
2
+ plugins: ['prettier-plugin-sql'],
3
+ };
@@ -1,5 +1,6 @@
1
- /** @see [prettier-plugin-svelte](https://github.com/sveltejs/prettier-plugin-svelte) */
2
1
  export default {
2
+ plugins: ['prettier-plugin-svelte'],
3
+
3
4
  svelteAllowShorthand: false,
4
5
  svelteIndentScriptAndStyle: true,
5
6
  svelteSortOrder: 'options-scripts-markup-styles',
@@ -1,4 +1,5 @@
1
- /** @see [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss) */
2
1
  export default {
2
+ plugins: ['prettier-plugin-tailwindcss'],
3
+
3
4
  tailwindFunctions: ['tw'],
4
5
  };
@@ -1,4 +1,5 @@
1
- /** @see [plugin-xml](https://github.com/prettier/plugin-xml) */
2
1
  export default {
2
+ plugins: ['@prettier/plugin-xml'],
3
+
3
4
  xmlWhitespaceSensitivity: 'ignore',
4
5
  };
@@ -1,6 +1,4 @@
1
- /* eslint-disable no-console, import/extensions */
2
-
3
- import { config } from './config.js';
1
+ /* eslint-disable no-console, import/extensions, sonarjs/no-duplicate-string, unicorn/no-null */
4
2
 
5
3
  const ADDITIONAL_PLUGINS = {
6
4
  /** @see [stylelint-a11y](https://github.com/double-great/stylelint-a11y) */
@@ -68,45 +66,165 @@ const PLUGINS = {
68
66
  /**
69
67
  * Create "extends" field
70
68
  *
71
- * @param {PLUGINS} incomingPlugins Plugins
69
+ * @param {PLUGINS} plugins Enabled/disabled plugins list
72
70
  */
73
- const connectPlugins = (incomingPlugins = {}) => {
74
- const extendsPlugins = [];
75
-
76
- Object.entries({ ...PLUGINS, ...incomingPlugins })?.forEach(
77
- ([name, isActive]) => {
78
- if (isActive) {
79
- extendsPlugins.push(`@alexlit/config-stylelint/plugins/${name}`);
80
- }
81
- },
82
- );
83
-
84
- return extendsPlugins;
71
+ const createPluginsList = (plugins = {}) => {
72
+ const pluginsList = [];
73
+
74
+ Object.entries({ ...PLUGINS, ...plugins })?.forEach(([name, isActive]) => {
75
+ if (isActive) {
76
+ pluginsList.push(`@alexlit/config-stylelint/plugins/${name}`);
77
+ }
78
+ });
79
+
80
+ return pluginsList;
85
81
  };
86
82
 
87
83
  /**
88
84
  * Create stylelint config
89
85
  *
90
- * @param {PLUGINS} incomingPlugins Plugins
91
- * @param {import('stylelint').Config} incomingConfig Stylelint config
86
+ * @param {PLUGINS} plugins Enabled/disabled plugins list
87
+ * @param {import('stylelint').Config} options Stylelint config
92
88
  */
93
- const createConfig = (incomingPlugins = {}, incomingConfig = {}) => ({
94
- ...incomingConfig,
89
+ const createConfig = (plugins = {}, options = {}) => ({
90
+ ...options,
95
91
 
96
92
  extends: [
97
93
  'stylelint-config-standard',
98
- ...connectPlugins(incomingPlugins),
99
- ...(incomingConfig.extends ?? []),
94
+
95
+ ...createPluginsList(plugins),
96
+
97
+ ...(options.extends ?? []),
100
98
  ],
101
99
 
102
100
  ignoreFiles: [
103
- ...(config.ignoreFiles ?? []),
104
- ...(incomingConfig.ignoreFiles ?? []),
101
+ '.*/**',
102
+ 'build/**',
103
+ 'dist/**',
104
+ 'docs/**',
105
+ 'node_modules/**',
106
+ 'storybook-*/**',
107
+
108
+ ...(options.ignoreFiles ?? []),
105
109
  ],
106
110
 
107
- plugins: [...(config.plugins ?? []), ...(incomingConfig.plugins ?? [])],
108
-
109
- rules: { ...config.rules, ...incomingConfig.rules },
111
+ plugins: options.plugins ?? [],
112
+
113
+ rules: {
114
+ 'alpha-value-notation': 'number',
115
+ 'annotation-no-unknown': [true, { ignoreAnnotations: ['default'] }],
116
+ 'at-rule-disallowed-list': ['debug'],
117
+
118
+ 'at-rule-empty-line-before': [
119
+ 'always',
120
+ {
121
+ except: ['blockless-after-same-name-blockless', 'first-nested'],
122
+ ignoreAtRules: ['else'],
123
+ },
124
+ ],
125
+
126
+ 'at-rule-no-unknown': null,
127
+ 'at-rule-no-vendor-prefix': true,
128
+ 'block-no-empty': null,
129
+ 'color-function-notation': 'modern',
130
+ 'color-hex-length': 'short',
131
+ 'color-no-hex': true,
132
+ 'color-no-invalid-hex': true,
133
+
134
+ 'custom-property-empty-line-before': [
135
+ 'always',
136
+ {
137
+ except: ['after-comment', 'after-custom-property', 'first-nested'],
138
+ },
139
+ ],
140
+
141
+ 'custom-property-pattern': '^_?[a-z]+([a-z0-9-]+[a-z0-9]+)?$',
142
+ 'declaration-block-no-redundant-longhand-properties': null,
143
+
144
+ 'declaration-property-value-no-unknown': [
145
+ true,
146
+ {
147
+ ignoreProperties: {
148
+ '/.+/': /^(v-(bind|deep|global|slotted)|theme|view)|\$/,
149
+ },
150
+ },
151
+ ],
152
+
153
+ 'font-family-name-quotes': 'always-unless-keyword',
154
+ 'function-no-unknown': null, // delegate to scss/function-no-unknown
155
+ 'function-url-quotes': 'always',
156
+ 'function-url-scheme-disallowed-list': ['/^data/', 'ftp', '/^http/'],
157
+ 'hue-degree-notation': 'angle',
158
+ 'keyframes-name-pattern': '^[a-z]+(-[a-z]+)*$',
159
+
160
+ 'max-nesting-depth': [
161
+ 6,
162
+ {
163
+ ignoreAtRules: ['each', 'media', 'supports', 'include'],
164
+ },
165
+ ],
166
+
167
+ 'media-feature-name-no-unknown': [
168
+ true,
169
+ { ignoreMediaFeatureNames: ['screen'] },
170
+ ],
171
+
172
+ 'media-feature-name-no-vendor-prefix': true,
173
+ 'no-descending-specificity': null,
174
+ 'no-empty-source': null,
175
+ 'no-unknown-animations': true,
176
+ 'number-max-precision': 3,
177
+
178
+ 'property-no-unknown': [
179
+ true,
180
+ { ignoreProperties: ['align-tracks', 'animation-timeline'] },
181
+ ],
182
+
183
+ 'property-no-vendor-prefix': true,
184
+
185
+ 'rule-empty-line-before': [
186
+ 'always',
187
+ {
188
+ except: ['first-nested'],
189
+ ignore: [],
190
+ },
191
+ ],
192
+
193
+ 'selector-class-pattern': [
194
+ '^[a-z]([a-z0-9-]+)?(__([a-z0-9]+-?)+)?(--([a-z0-9]+-?)+){0,2}$',
195
+ {
196
+ message:
197
+ 'Selector should be written as BEM "block__element--modifier--value" (selector-class-pattern)',
198
+ },
199
+ ],
200
+
201
+ 'selector-combinator-disallowed-list': ['>>>', '/deep/'],
202
+
203
+ 'selector-max-compound-selectors': 6,
204
+ 'selector-max-id': 0,
205
+ 'selector-no-qualifying-type': null,
206
+ 'selector-no-vendor-prefix': true,
207
+ 'selector-pseudo-element-disallowed-list': ['shadow'],
208
+
209
+ 'selector-pseudo-element-no-unknown': [
210
+ true,
211
+ { ignorePseudoElements: ['v-deep', 'file-selector-button'] },
212
+ ],
213
+
214
+ 'selector-type-no-unknown': [true, { ignoreTypes: ['ymaps'] }],
215
+ 'shorthand-property-no-redundant-values': true,
216
+ 'string-no-newline': null,
217
+ 'time-min-milliseconds': 16,
218
+
219
+ 'value-keyword-case': [
220
+ 'lower',
221
+ { camelCaseSvgKeywords: true, ignoreFunctions: ['v-bind'] },
222
+ ],
223
+
224
+ 'value-no-vendor-prefix': true,
225
+
226
+ ...options.rules,
227
+ },
110
228
  });
111
229
 
112
230
  export { createConfig };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexlit/config-stylelint",
3
- "version": "45.0.1",
3
+ "version": "45.0.2",
4
4
  "private": false,
5
5
  "description": "Stylelint config",
6
6
  "keywords": [
@@ -25,7 +25,6 @@
25
25
  "main": "index.js",
26
26
  "files": [
27
27
  "README.md",
28
- "config.js",
29
28
  "index.js",
30
29
  "plugins"
31
30
  ],
@@ -1,5 +1,8 @@
1
- import config from '@alexlit/config-prettier';
1
+ import { createConfig } from '@alexlit/config-prettier';
2
2
 
3
- export default {
4
- ...config,
5
- };
3
+ export default createConfig({
4
+ php: true,
5
+ ruby: true,
6
+ sql: false,
7
+ tailwindcss: false,
8
+ });
@@ -1,126 +0,0 @@
1
- /* eslint-disable sonarjs/no-duplicate-string, unicorn/no-null */
2
-
3
- export const config = {
4
- ignoreFiles: [
5
- '.*/**',
6
- 'build/**',
7
- 'dist/**',
8
- 'docs/**',
9
- 'node_modules/**',
10
- 'storybook-*/**',
11
- ],
12
-
13
- rules: {
14
- 'alpha-value-notation': 'number',
15
- 'annotation-no-unknown': [true, { ignoreAnnotations: ['default'] }],
16
- 'at-rule-disallowed-list': ['debug'],
17
-
18
- 'at-rule-empty-line-before': [
19
- 'always',
20
- {
21
- except: ['blockless-after-same-name-blockless', 'first-nested'],
22
- ignoreAtRules: ['else'],
23
- },
24
- ],
25
-
26
- 'at-rule-no-unknown': null,
27
- 'at-rule-no-vendor-prefix': true,
28
- 'block-no-empty': null,
29
- 'color-function-notation': 'modern',
30
- 'color-hex-length': 'short',
31
- 'color-no-hex': true,
32
- 'color-no-invalid-hex': true,
33
-
34
- 'custom-property-empty-line-before': [
35
- 'always',
36
- {
37
- except: ['after-comment', 'after-custom-property', 'first-nested'],
38
- },
39
- ],
40
-
41
- 'custom-property-pattern': '^_?[a-z]+([a-z0-9-]+[a-z0-9]+)?$',
42
- 'declaration-block-no-redundant-longhand-properties': null,
43
-
44
- 'declaration-property-value-no-unknown': [
45
- true,
46
- {
47
- ignoreProperties: {
48
- '/.+/': /^(v-(bind|deep|global|slotted)|theme|view)|\$/,
49
- },
50
- },
51
- ],
52
-
53
- 'font-family-name-quotes': 'always-unless-keyword',
54
- 'function-no-unknown': null, // delegate to scss/function-no-unknown
55
- 'function-url-quotes': 'always',
56
- 'function-url-scheme-disallowed-list': ['/^data/', 'ftp', '/^http/'],
57
- 'hue-degree-notation': 'angle',
58
- 'keyframes-name-pattern': '^[a-z]+(-[a-z]+)*$',
59
-
60
- 'max-nesting-depth': [
61
- 6,
62
- {
63
- ignoreAtRules: ['each', 'media', 'supports', 'include'],
64
- },
65
- ],
66
-
67
- 'media-feature-name-no-unknown': [
68
- true,
69
- { ignoreMediaFeatureNames: ['screen'] },
70
- ],
71
-
72
- 'media-feature-name-no-vendor-prefix': true,
73
- 'no-descending-specificity': null,
74
- 'no-empty-source': null,
75
- 'no-unknown-animations': true,
76
- 'number-max-precision': 3,
77
-
78
- 'property-no-unknown': [
79
- true,
80
- { ignoreProperties: ['align-tracks', 'animation-timeline'] },
81
- ],
82
-
83
- 'property-no-vendor-prefix': true,
84
-
85
- 'rule-empty-line-before': [
86
- 'always',
87
- {
88
- except: ['first-nested'],
89
- ignore: [],
90
- },
91
- ],
92
-
93
- 'selector-class-pattern': [
94
- '^[a-z]([a-z0-9-]+)?(__([a-z0-9]+-?)+)?(--([a-z0-9]+-?)+){0,2}$',
95
- {
96
- message:
97
- 'Selector should be written as BEM "block__element--modifier--value" (selector-class-pattern)',
98
- },
99
- ],
100
-
101
- 'selector-combinator-disallowed-list': ['>>>', '/deep/'],
102
-
103
- 'selector-max-compound-selectors': 6,
104
- 'selector-max-id': 0,
105
- 'selector-no-qualifying-type': null,
106
- 'selector-no-vendor-prefix': true,
107
- 'selector-pseudo-element-disallowed-list': ['shadow'],
108
-
109
- 'selector-pseudo-element-no-unknown': [
110
- true,
111
- { ignorePseudoElements: ['v-deep', 'file-selector-button'] },
112
- ],
113
-
114
- 'selector-type-no-unknown': [true, { ignoreTypes: ['ymaps'] }],
115
- 'shorthand-property-no-redundant-values': true,
116
- 'string-no-newline': null,
117
- 'time-min-milliseconds': 16,
118
-
119
- 'value-keyword-case': [
120
- 'lower',
121
- { camelCaseSvgKeywords: true, ignoreFunctions: ['v-bind'] },
122
- ],
123
-
124
- 'value-no-vendor-prefix': true,
125
- },
126
- };