@mikey-pro/eslint-config 9.0.8 → 10.0.1

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/rules.js DELETED
@@ -1,622 +0,0 @@
1
- // Modern ESLint rules for Mikey Pro
2
- // Ultimate coding style guide for excellence
3
-
4
- export const baseRules = {
5
- // === CORE ESLINT RULES ===
6
-
7
- // Best Practices
8
- 'accessor-pairs': 'error',
9
- 'array-callback-return': 'error',
10
- 'block-scoped-var': 'error',
11
- // === BOUNDARIES RULES ===
12
- 'boundaries/element-types': [
13
- 'warn',
14
- {
15
- default: 'disallow',
16
- rules: [
17
- { allow: ['utils'], from: 'utils' },
18
- { allow: ['features', 'shared', 'utils'], from: 'features' },
19
- { allow: ['shared', 'utils'], from: 'shared' },
20
- ],
21
- },
22
- ],
23
- 'class-methods-use-this': 'off', // Handled by TypeScript rules
24
- // === COMPAT RULES ===
25
- 'compat/compat': 'warn',
26
- complexity: ['error', { max: 15 }],
27
- 'consistent-return': 'error',
28
- 'css-modules/no-undef-class': 'warn',
29
- // === CSS MODULES RULES ===
30
- 'css-modules/no-unused-class': 'warn',
31
- curly: ['error', 'all'],
32
- 'default-case': 'error',
33
- 'default-case-last': 'error',
34
- 'default-param-last': 'error',
35
- 'dot-notation': 'warn',
36
- eqeqeq: ['error', 'always', { null: 'ignore' }],
37
- 'filenames/match-exported': 'off',
38
- // === FILENAMES RULES ===
39
- 'filenames/match-regex': 'off',
40
- 'filenames/no-index': 'off',
41
- 'grouped-accessor-pairs': 'error',
42
- 'guard-for-in': 'error',
43
- // === IMPORT/EXPORT RULES ===
44
- 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
45
- 'import/default': 'off',
46
- 'import/export': 'error',
47
- 'import/extensions': [
48
- 'error',
49
- 'ignorePackages',
50
- { ts: 'never', tsx: 'never' },
51
- ],
52
- 'import/first': 'error',
53
- 'import/named': 'off',
54
- 'import/namespace': 'off',
55
- 'import/newline-after-import': 'error',
56
- 'import/no-absolute-path': 'error',
57
- 'import/no-cycle': ['error', { ignoreExternal: true, maxDepth: 1 }],
58
- 'import/no-default-export': 'off',
59
- 'import/no-deprecated': 'warn',
60
- 'import/no-duplicates': ['error', { 'prefer-inline': true }],
61
- 'import/no-dynamic-require': 'error',
62
- 'import/no-empty-named-blocks': 'error',
63
- 'import/no-extraneous-dependencies': [
64
- 'error',
65
- {
66
- devDependencies: ['**/*.test.{js,ts}', '**/*.spec.{js,ts}', '**/test/**'],
67
- },
68
- ],
69
- 'import/no-import-module-exports': 'error',
70
- 'import/no-internal-modules': 'off',
71
- 'import/no-mutable-exports': 'error',
72
- 'import/no-named-as-default': 'off',
73
- 'import/no-named-as-default-member': 'off',
74
- 'import/no-named-default': 'error',
75
- 'import/no-namespace': 'error',
76
- 'import/no-nodejs-modules': 'off',
77
- 'import/no-relative-packages': 'error',
78
- 'import/no-relative-parent-imports': [
79
- 'error',
80
- { ignore: ['@/components', '@/utils', '@/types'] },
81
- ],
82
- 'import/no-restricted-paths': 'off',
83
- 'import/no-self-import': 'error',
84
- 'import/no-unassigned-import': 'off',
85
- 'import/no-unresolved': [
86
- 'error',
87
- { amd: true, commonjs: true, ignore: ['^node:'] },
88
- ],
89
- 'import/no-unused-modules': 'off',
90
- 'import/no-useless-path-segments': 'error',
91
- 'import/no-webpack-loader-syntax': 'error',
92
- 'import/order': [
93
- 'error',
94
- {
95
- alphabetize: { order: 'asc' },
96
- 'newlines-between': 'always',
97
- pathGroups: [
98
- {
99
- group: 'builtin',
100
- pattern: 'node:*',
101
- position: 'before',
102
- },
103
- {
104
- group: 'external',
105
- pattern: '@*',
106
- position: 'after',
107
- },
108
- {
109
- group: 'internal',
110
- pattern: '@/**',
111
- position: 'after',
112
- },
113
- ],
114
- pathGroupsExcludedImportTypes: ['builtin'],
115
- },
116
- ],
117
- 'import/prefer-default-export': 'off',
118
- 'import/unambiguous': 'off',
119
- // === VARIABLES ===
120
- 'init-declarations': 'off', // Handled by TypeScript rules
121
- // === JEST-DOM RULES ===
122
- 'jest-dom/prefer-checked': 'error',
123
- 'jest-dom/prefer-enabled-disabled': 'error',
124
- 'jest-dom/prefer-focus': 'error',
125
- 'jest-dom/prefer-required': 'error',
126
- 'jest-dom/prefer-to-have-attribute': 'error',
127
- // === JEST RULES ===
128
- 'jest/expect-expect': 'warn',
129
- 'jest/no-disabled-tests': 'warn',
130
- 'jest/no-focused-tests': 'error',
131
- 'jest/no-identical-title': 'error',
132
- 'jest/prefer-to-have-length': 'warn',
133
- 'jest/valid-expect': 'error',
134
- 'max-classes-per-file': ['error', 1],
135
- 'max-depth': ['error', 4],
136
- 'max-lines': [
137
- 'error',
138
- { max: 500, skipBlankLines: true, skipComments: true },
139
- ],
140
- 'max-lines-per-function': [
141
- 'error',
142
- { max: 50, skipBlankLines: true, skipComments: true },
143
- ],
144
- 'max-params': ['error', 4],
145
- 'max-statements': ['error', 30],
146
- 'max-statements-per-line': ['error', { max: 1 }],
147
- // === N RULES ===
148
- 'n/no-unsupported-features/es-syntax': [
149
- 'error',
150
- {
151
- ignores: ['modules', 'dynamicImport'],
152
- version: '>=18.0.0',
153
- },
154
- ],
155
- 'new-cap': 'off', // Handled by @stylistic
156
- 'no-alert': 'warn',
157
- 'no-array-constructor': 'error',
158
- // === POSSIBLE ERRORS ===
159
- 'no-async-promise-executor': 'error',
160
- 'no-await-in-loop': 'warn',
161
- 'no-bitwise': 'error',
162
- 'no-caller': 'warn',
163
- 'no-case-declarations': 'error',
164
- 'no-compare-neg-zero': 'error',
165
- 'no-cond-assign': 'error',
166
- 'no-console': 'off',
167
- 'no-constant-condition': 'error',
168
- 'no-constructor-return': 'error',
169
- 'no-continue': 'error',
170
- 'no-control-regex': 'error',
171
- 'no-debugger': 'warn',
172
- 'no-delete-var': 'warn',
173
- 'no-div-regex': 'error',
174
- 'no-dupe-args': 'error',
175
- 'no-dupe-keys': 'error',
176
- 'no-duplicate-case': 'error',
177
- 'no-duplicate-imports': 'error',
178
- 'no-else-return': 'warn',
179
- 'no-empty': 'off',
180
- 'no-empty-character-class': 'error',
181
- 'no-empty-function': 'off', // Handled by TypeScript rules
182
- 'no-empty-pattern': 'off',
183
- 'no-eq-null': 'error',
184
- 'no-eval': 'error',
185
- 'no-ex-assign': 'error',
186
- 'no-extend-native': 'error',
187
- 'no-extra-bind': 'warn',
188
- 'no-extra-boolean-cast': 'error',
189
- 'no-extra-label': 'error',
190
- 'no-extra-parens': 'off', // Handled by @stylistic
191
- 'no-extra-semi': 'error',
192
- 'no-fallthrough': 'error',
193
- 'no-floating-decimal': 'warn',
194
- 'no-func-assign': 'error',
195
- 'no-global-assign': 'error',
196
- 'no-implicit-coercion': [
197
- 'error',
198
- { boolean: false, number: true, string: true },
199
- ],
200
- 'no-implicit-globals': 'error',
201
- 'no-implied-eval': 'error',
202
- 'no-import-assign': 'error',
203
- 'no-inner-declarations': 'error',
204
- 'no-invalid-regexp': 'error',
205
- 'no-invalid-this': 'off', // Handled by TypeScript rules
206
- 'no-irregular-whitespace': 'error',
207
- 'no-iterator': 'warn',
208
- 'no-label-var': 'error',
209
- 'no-label-var': 'error',
210
- 'no-labels': 'error',
211
- 'no-lone-blocks': 'error',
212
- 'no-lonely-if': 'warn',
213
- 'no-loop-func': 'error',
214
- 'no-loss-of-precision': 'error',
215
-
216
- 'no-magic-numbers': 'off', // Handled by TypeScript rules
217
- 'no-misleading-character-class': 'error',
218
- 'no-mixed-operators': 'error',
219
- 'no-multi-assign': 'error',
220
- 'no-multi-str': 'warn',
221
- 'no-new': 'error',
222
- 'no-new-func': 'error',
223
- 'no-new-object': 'error',
224
- 'no-new-wrappers': 'warn',
225
-
226
- 'no-nonoctal-decimal-escape': 'error',
227
- 'no-obj-calls': 'error',
228
- 'no-octal': 'error',
229
- 'no-octal-escape': 'error',
230
- // === NO-ONLY-TESTS RULES ===
231
- 'no-only-tests/no-only-tests': 'warn',
232
- 'no-param-reassign': 'warn',
233
- 'no-plusplus': 'off',
234
- 'no-proto': 'warn',
235
- 'no-prototype-builtins': 'error',
236
- 'no-redeclare': 'warn',
237
- 'no-regex-spaces': 'error',
238
- 'no-restricted-exports': 'off',
239
- 'no-restricted-globals': 'error',
240
- 'no-restricted-globals': 'error',
241
- 'no-restricted-imports': 'off',
242
- 'no-restricted-properties': 'off',
243
- 'no-restricted-syntax': [
244
- 'warn',
245
- {
246
- message:
247
- 'for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array.',
248
- selector: 'ForInStatement',
249
- },
250
- {
251
- message:
252
- 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.',
253
- selector: 'LabeledStatement',
254
- },
255
- {
256
- message:
257
- '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.',
258
- selector: 'WithStatement',
259
- },
260
- {
261
- message: 'Provide initialValue to reduce',
262
- selector:
263
- "CallExpression[callee.property.name='reduce'][arguments.length<2]",
264
- },
265
- {
266
- message: 'Use for...of instead',
267
- selector: "CallExpression[callee.property.name='forEach']",
268
- },
269
- ],
270
- 'no-return-assign': 'error',
271
- 'no-return-await': 'error',
272
- 'no-script-url': 'error',
273
- // === NO-SECRETS RULES ===
274
- 'no-secrets/no-secrets': ['warn', { tolerance: 4.5 }],
275
- 'no-self-assign': 'error',
276
- 'no-self-compare': 'error',
277
- 'no-sequences': 'error',
278
- 'no-setter-return': 'error',
279
- 'no-shadow': 'off', // Handled by TypeScript rules
280
- 'no-shadow-restricted-names': 'warn',
281
- 'no-sparse-arrays': 'error',
282
- 'no-template-curly-in-string': 'error',
283
- 'no-this-before-super': 'warn',
284
- 'no-throw-literal': 'error',
285
- 'no-undef': 'error',
286
- 'no-undef-init': 'warn',
287
- 'no-undefined': 'off',
288
- 'no-underscore-dangle': 'off',
289
-
290
- 'no-unexpected-multiline': 'error',
291
- 'no-unmodified-loop-condition': 'error',
292
- 'no-unreachable': 'error',
293
- 'no-unreachable-loop': 'error',
294
- 'no-unsafe-finally': 'error',
295
- 'no-unsafe-negation': 'error',
296
- 'no-unsafe-optional-chaining': 'error',
297
- 'no-unused-expressions': 'error',
298
- 'no-unused-labels': 'error',
299
- 'no-unused-private-class-members': 'warn',
300
- 'no-unused-vars': [
301
- 'warn',
302
- {
303
- args: 'after-used',
304
- argsIgnorePattern: '^_',
305
- caughtErrors: 'all',
306
- caughtErrorsIgnorePattern: '^_',
307
- ignoreRestSiblings: true,
308
- vars: 'all',
309
- varsIgnorePattern: '^_',
310
- },
311
- ],
312
- 'no-use-before-define': 'off', // Handled by TypeScript rules
313
- 'no-use-before-define': 'off', // Handled by TypeScript rules
314
- 'no-useless-backreference': 'error',
315
- 'no-useless-call': 'warn',
316
- 'no-useless-catch': 'error',
317
- 'no-useless-computed-key': 'warn',
318
- 'no-useless-concat': 'warn',
319
- 'no-useless-constructor': 'warn',
320
- 'no-useless-escape': 'warn',
321
- 'no-useless-rename': 'warn',
322
- 'no-useless-return': 'warn',
323
- 'no-var': 'error',
324
- 'no-void': 'error',
325
- 'no-warning-comments': 'warn',
326
- 'no-with': 'warn',
327
- 'object-shorthand': 'warn',
328
- 'one-var': ['error', 'never'],
329
- 'one-var-declaration-per-line': ['error', 'always'],
330
- 'operator-assignment': ['error', 'always'],
331
- // === OPTIMIZE-REGEX RULES ===
332
- 'optimize-regex/optimize-regex': 'warn',
333
- // === PERFECTIONIST RULES ===
334
- 'perfectionist/sort-named-imports': [
335
- 'error',
336
- {
337
- ignoreCase: true,
338
- order: 'asc',
339
- type: 'natural',
340
- },
341
- ],
342
- 'perfectionist/sort-objects': [
343
- 'error',
344
- {
345
- order: 'asc',
346
- type: 'natural',
347
- },
348
- ],
349
- 'prefer-arrow-callback': 'warn',
350
- 'prefer-const': 'warn',
351
- 'prefer-destructuring': ['warn', { array: false, object: true }],
352
-
353
- 'prefer-exponentiation-operator': 'error',
354
-
355
- 'prefer-named-capture-group': 'warn',
356
-
357
- 'prefer-numeric-literals': 'error',
358
- 'prefer-object-has-own': 'error',
359
-
360
- 'prefer-promise-reject-errors': 'error',
361
- 'prefer-regex-literals': 'error',
362
- 'prefer-rest-params': 'warn',
363
-
364
- 'prefer-spread': 'warn',
365
- 'prefer-template': 'warn',
366
- // === PROMISE RULES ===
367
- 'promise/always-return': 'warn',
368
- 'promise/avoid-new': 'off',
369
- 'promise/catch-or-return': 'warn',
370
- 'promise/no-callback-in-promise': 'warn',
371
-
372
- 'promise/no-multiple-resolved': 'error',
373
- 'promise/no-nesting': 'warn',
374
- 'promise/no-new-statics': 'error',
375
- 'promise/no-promise-in-callback': 'warn',
376
- 'promise/no-return-in-finally': 'warn',
377
-
378
- 'promise/no-return-wrap': 'warn',
379
-
380
- 'promise/param-names': 'warn',
381
-
382
- 'promise/prefer-await-to-callbacks': 'warn',
383
-
384
- 'promise/prefer-await-to-then': 'warn',
385
-
386
- 'promise/valid-params': 'warn',
387
- radix: 'warn',
388
-
389
- // === REGEXP RULES ===
390
- 'regexp/no-missing-g-flag': 'error',
391
- 'regexp/no-useless-flag': 'error',
392
- 'regexp/prefer-d': 'error',
393
- 'regexp/prefer-plus-quantifier': 'error',
394
- 'regexp/prefer-question-quantifier': 'error',
395
- 'regexp/prefer-star-quantifier': 'error',
396
- 'require-atomic-updates': ['error', { allowProperties: false }],
397
- 'require-await': 'off', // Handled by TypeScript rules
398
- 'require-unicode-regexp': 'error',
399
- 'require-yield': 'error',
400
- // === SECURITY RULES ===
401
- 'security/detect-buffer-noassert': 'error',
402
- 'security/detect-child-process': 'warn',
403
- 'security/detect-disable-mustache-escape': 'error',
404
- 'security/detect-eval-with-expression': 'error',
405
-
406
- 'security/detect-new-buffer': 'error',
407
- 'security/detect-no-csrf-before-method-override': 'error',
408
- 'security/detect-non-literal-fs-filename': 'error',
409
- 'security/detect-non-literal-regexp': 'error',
410
- 'security/detect-non-literal-require': 'error',
411
- 'security/detect-object-injection': 'warn',
412
-
413
- 'security/detect-possible-timing-attacks': 'error',
414
- 'security/detect-pseudoRandomBytes': 'error',
415
- 'security/detect-unsafe-regex': 'error',
416
- // === SIMPLE-IMPORT-SORT RULES ===
417
- 'simple-import-sort/exports': 'error',
418
- 'simple-import-sort/imports': 'error',
419
- // === SONARJS RULES ===
420
- 'sonarjs/cognitive-complexity': ['warn', 15],
421
- 'sonarjs/max-switch-cases': ['warn', 10],
422
- 'sonarjs/no-all-duplicated-branches': 'warn',
423
- 'sonarjs/no-collapsible-if': 'warn',
424
- 'sonarjs/no-collection-size-mischeck': 'warn',
425
- 'sonarjs/no-duplicate-string': ['warn', { threshold: 5 }],
426
- 'sonarjs/no-duplicated-branches': 'warn',
427
- 'sonarjs/no-duplicated-keys': 'warn',
428
-
429
- 'sonarjs/no-element-overwrite': 'warn',
430
- 'sonarjs/no-extra-arguments': 'warn',
431
-
432
- 'sonarjs/no-greedy-assertion': 'warn',
433
- 'sonarjs/no-identical-conditions': 'warn',
434
- 'sonarjs/no-identical-expressions': 'warn',
435
- 'sonarjs/no-ignored-return': 'warn',
436
- 'sonarjs/no-inverted-boolean-check': 'warn',
437
- 'sonarjs/no-nested-switch': 'warn',
438
- 'sonarjs/no-nested-template-literals': 'warn',
439
- 'sonarjs/no-one-iteration-loop': 'warn',
440
- 'sonarjs/no-redundant-boolean': 'warn',
441
- 'sonarjs/no-redundant-jump': 'warn',
442
- 'sonarjs/no-same-line-conditional': 'warn',
443
- 'sonarjs/no-small-switch': 'warn',
444
- 'sonarjs/no-unused-collection': 'warn',
445
- 'sonarjs/no-use-of-empty-return-value': 'warn',
446
- 'sonarjs/no-useless-catch': 'warn',
447
- 'sonarjs/prefer-immediate-return': 'warn',
448
- 'sonarjs/prefer-object-literal': 'warn',
449
- 'sonarjs/prefer-single-boolean-return': 'warn',
450
- 'sonarjs/prefer-while': 'warn',
451
- // === SORT-DESTRUCTURE-KEYS RULES ===
452
- 'sort-destructure-keys/sort-destructure-keys': 'warn',
453
- 'sort-imports': 'off', // Handled by simple-import-sort
454
- 'sort-keys': 'off', // Handled by perfectionist
455
- 'sort-vars': 'warn',
456
- 'spaced-comment': ['warn', 'always'],
457
- strict: ['error', 'never'],
458
- 'symbol-description': 'error',
459
- // === TESTING-LIBRARY RULES ===
460
- 'testing-library/await-async-query': 'error',
461
- 'testing-library/no-await-sync-query': 'error',
462
- 'testing-library/no-debugging-utils': 'warn',
463
-
464
- 'testing-library/no-dom-import': 'error',
465
-
466
- 'testing-library/no-manual-cleanup': 'error',
467
- 'testing-library/no-render-in-setup': 'error',
468
- 'testing-library/no-unnecessary-act': 'error',
469
- 'testing-library/prefer-explicit-assert': 'warn',
470
- 'testing-library/prefer-find-by': 'error',
471
- 'testing-library/prefer-presence-queries': 'error',
472
- 'testing-library/prefer-query-by-disappearance': 'error',
473
- 'testing-library/prefer-screen-queries': 'error',
474
- 'testing-library/render-result-naming-convention': 'error',
475
- // === UNICORN RULES ===
476
- 'unicorn/better-regex': 'error',
477
- 'unicorn/catch-error-name': ['error', { name: 'error' }],
478
- 'unicorn/consistent-destructuring': 'error',
479
- 'unicorn/consistent-function-scoping': 'error',
480
-
481
- 'unicorn/custom-error-definition': 'error',
482
- 'unicorn/empty-brace-spaces': 'error',
483
- 'unicorn/error-message': 'error',
484
- 'unicorn/escape-case': 'error',
485
- 'unicorn/expiring-todo-comments': 'off',
486
- 'unicorn/explicit-length-check': 'error',
487
- 'unicorn/filename-case': [
488
- 'error',
489
- {
490
- cases: { camelCase: true, pascalCase: true },
491
- ignore: ['.*.md'],
492
- },
493
- ],
494
- 'unicorn/import-style': 'error',
495
- 'unicorn/new-for-builtins': 'error',
496
- 'unicorn/no-abusive-eslint-disable': 'error',
497
- 'unicorn/no-array-callback-reference': 'off',
498
- 'unicorn/no-array-for-each': 'error',
499
- 'unicorn/no-array-method-this-argument': 'error',
500
- 'unicorn/no-array-push-push': 'error',
501
- 'unicorn/no-array-reduce': 'error',
502
- 'unicorn/no-await-expression-member': 'error',
503
- 'unicorn/no-console-spaces': 'error',
504
- 'unicorn/no-document-cookie': 'error',
505
- 'unicorn/no-empty-file': 'error',
506
- 'unicorn/no-for-loop': 'error',
507
- 'unicorn/no-hex-escape': 'error',
508
- 'unicorn/no-instanceof-array': 'error',
509
- 'unicorn/no-invalid-remove-event-listener': 'error',
510
- 'unicorn/no-keyword-prefix': 'off',
511
- 'unicorn/no-lonely-if': 'error',
512
- 'unicorn/no-nested-ternary': 'error',
513
- 'unicorn/no-new-array': 'error',
514
- 'unicorn/no-new-buffer': 'error',
515
- 'unicorn/no-null': 'off',
516
- 'unicorn/no-object-as-default-parameter': 'error',
517
- 'unicorn/no-process-exit': 'error',
518
- 'unicorn/no-static-only-class': 'error',
519
- 'unicorn/no-thenable': 'error',
520
- 'unicorn/no-typeof-undefined': 'error',
521
- 'unicorn/no-unnecessary-await': 'error',
522
- 'unicorn/no-unreadable-array-destructuring': 'error',
523
- 'unicorn/no-unreadable-iife': 'error',
524
- 'unicorn/no-unused-properties': 'error',
525
- 'unicorn/no-useless-fallback-in-spread': 'error',
526
- 'unicorn/no-useless-length-check': 'error',
527
- 'unicorn/no-useless-promise-resolve-reject': 'error',
528
- 'unicorn/no-useless-spread': 'error',
529
- 'unicorn/no-useless-undefined': ['error', { checkArguments: true }],
530
- 'unicorn/no-zero-fractions': 'error',
531
- 'unicorn/number-literal-case': 'error',
532
- 'unicorn/numeric-separators-style': 'error',
533
- 'unicorn/prefer-add-event-listener': 'error',
534
- 'unicorn/prefer-array-find': 'error',
535
- 'unicorn/prefer-array-flat': ['error', { functions: ['flatten'] }],
536
- 'unicorn/prefer-array-flat-map': 'error',
537
- 'unicorn/prefer-array-index-of': 'error',
538
- 'unicorn/prefer-array-some': 'error',
539
- 'unicorn/prefer-at': 'error',
540
- 'unicorn/prefer-blob-reading-methods': 'error',
541
- 'unicorn/prefer-code-point': 'error',
542
- 'unicorn/prefer-date-now': 'error',
543
- 'unicorn/prefer-default-parameters': 'error',
544
- 'unicorn/prefer-dom-node-append': 'error',
545
- 'unicorn/prefer-dom-node-dataset': 'error',
546
- 'unicorn/prefer-dom-node-remove': 'error',
547
- 'unicorn/prefer-dom-node-text-content': 'error',
548
- 'unicorn/prefer-export-from': 'error',
549
- 'unicorn/prefer-includes': 'error',
550
- 'unicorn/prefer-json-parse-buffer': 'error',
551
- 'unicorn/prefer-keyboard-event-key': 'error',
552
- 'unicorn/prefer-logical-operator-over-ternary': 'error',
553
- 'unicorn/prefer-math-trunc': 'error',
554
- 'unicorn/prefer-modern-dom-apis': 'error',
555
- 'unicorn/prefer-modern-math-apis': 'error',
556
- 'unicorn/prefer-module': 'error',
557
- 'unicorn/prefer-native-coercion-functions': 'error',
558
- 'unicorn/prefer-negative-index': 'error',
559
- 'unicorn/prefer-node-protocol': 'error',
560
- 'unicorn/prefer-number-properties': 'error',
561
- 'unicorn/prefer-object-from-entries': 'error',
562
- 'unicorn/prefer-optional-catch-binding': 'error',
563
- 'unicorn/prefer-prototype-methods': 'error',
564
- 'unicorn/prefer-query-selector': 'error',
565
- 'unicorn/prefer-reflect-apply': 'error',
566
- 'unicorn/prefer-regexp-test': 'error',
567
- 'unicorn/prefer-set-has': 'error',
568
- 'unicorn/prefer-set-size': 'error',
569
- 'unicorn/prefer-spread': 'error',
570
- 'unicorn/prefer-string-replace-all': 'error',
571
- 'unicorn/prefer-string-slice': 'error',
572
- 'unicorn/prefer-string-starts-ends-with': 'error',
573
- 'unicorn/prefer-string-trim-start-end': 'error',
574
- 'unicorn/prefer-switch': 'error',
575
- 'unicorn/prefer-ternary': 'error',
576
- 'unicorn/prefer-top-level-await': 'error',
577
- 'unicorn/prefer-type-error': 'error',
578
- 'unicorn/prevent-abbreviations': [
579
- 'warn',
580
- {
581
- allowList: { e2e: true, params: true, props: true, ref: true },
582
- ignore: [/e2e/],
583
- },
584
- ],
585
- 'unicorn/relative-url-style': 'error',
586
- 'unicorn/require-array-join-separator': 'error',
587
- 'unicorn/require-number-to-fixed-digits-argument': 'error',
588
- 'unicorn/require-post-message-target-origin': 'error',
589
- 'unicorn/string-content': 'off',
590
- 'unicorn/switch-case-braces': 'error',
591
- 'unicorn/text-encoding-identifier-case': 'error',
592
- 'unicorn/throw-new-error': 'error',
593
- 'use-isnan': 'error',
594
- 'valid-typeof': 'error',
595
- 'vars-on-top': 'error',
596
- // === WRITE-GOOD-COMMENTS RULES ===
597
- 'write-good-comments/write-good-comments': 'warn',
598
-
599
- 'yml/block-mapping': 'error',
600
-
601
- // === YML RULES ===
602
- 'yml/block-mapping-question-indicator-newline': 'error',
603
- 'yml/block-sequence': 'error',
604
- 'yml/block-sequence-hyphen-indicator-newline': 'error',
605
- 'yml/flow-mapping-curly-newline': 'error',
606
- 'yml/flow-mapping-curly-spacing': 'error',
607
- 'yml/flow-sequence-bracket-newline': 'error',
608
- 'yml/flow-sequence-bracket-spacing': 'error',
609
- 'yml/indent': ['error', 2],
610
- 'yml/key-spacing': 'error',
611
- 'yml/no-empty-document': 'error',
612
- 'yml/no-empty-key': 'error',
613
- 'yml/no-empty-mapping-value': 'error',
614
- 'yml/no-empty-sequence-entry': 'error',
615
- 'yml/no-irregular-whitespace': 'error',
616
- 'yml/no-tab-indent': 'error',
617
- 'yml/quotes': ['warn', { avoidEscape: true, prefer: 'double' }],
618
- 'yml/require-string-key': 'error',
619
- 'yml/sort-keys': 'off',
620
- 'yml/vue-custom-block/no-parsing-error': 'error',
621
- yoda: 'error',
622
- };