@cabloy/lint 5.0.21 → 5.0.22

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/oxc/lint.js ADDED
@@ -0,0 +1,1476 @@
1
+ export const _configDefault = {
2
+ plugins: ['import', 'unicorn'],
3
+ jsPlugins: [
4
+ 'eslint-plugin-antfu',
5
+ 'eslint-plugin-unused-imports',
6
+ 'eslint-plugin-eslint-comments',
7
+ 'eslint-plugin-command',
8
+ 'eslint-plugin-perfectionist',
9
+ '@e18e/eslint-plugin',
10
+ '@stylistic/eslint-plugin',
11
+ 'eslint-plugin-regexp',
12
+ ],
13
+ categories: {
14
+ correctness: 'off',
15
+ },
16
+ env: {
17
+ builtin: true,
18
+ es2026: true,
19
+ browser: true,
20
+ node: true,
21
+ },
22
+ rules: {
23
+ 'accessor-pairs': [
24
+ 'error',
25
+ {
26
+ enforceForClassMembers: true,
27
+ setWithoutGet: true,
28
+ },
29
+ ],
30
+ 'antfu/no-top-level-await': 'error',
31
+ 'array-callback-return': 'error',
32
+ 'block-scoped-var': 'error',
33
+ 'constructor-super': 'error',
34
+ 'default-case-last': 'error',
35
+ 'eqeqeq': ['error', 'smart'],
36
+ 'new-cap': [
37
+ 'error',
38
+ {
39
+ capIsNew: false,
40
+ newIsCap: true,
41
+ properties: true,
42
+ },
43
+ ],
44
+ 'no-alert': 'error',
45
+ 'no-array-constructor': 'error',
46
+ 'no-async-promise-executor': 'error',
47
+ 'no-caller': 'error',
48
+ 'no-case-declarations': 'error',
49
+ 'no-class-assign': 'error',
50
+ 'no-compare-neg-zero': 'error',
51
+ 'no-cond-assign': ['error', 'always'],
52
+ 'no-console': [
53
+ 'error',
54
+ {
55
+ allow: ['warn', 'error'],
56
+ },
57
+ ],
58
+ 'no-const-assign': 'error',
59
+ 'no-control-regex': 'error',
60
+ 'no-debugger': 'error',
61
+ 'no-delete-var': 'error',
62
+ 'no-dupe-class-members': 'error',
63
+ 'no-dupe-keys': 'error',
64
+ 'no-duplicate-case': 'error',
65
+ 'no-empty': [
66
+ 'error',
67
+ {
68
+ allowEmptyCatch: true,
69
+ },
70
+ ],
71
+ 'no-empty-pattern': 'error',
72
+ 'no-eval': 'error',
73
+ 'no-ex-assign': 'error',
74
+ 'no-extend-native': 'error',
75
+ 'no-extra-bind': 'error',
76
+ 'no-extra-boolean-cast': 'error',
77
+ 'no-fallthrough': 'error',
78
+ 'no-func-assign': 'error',
79
+ 'no-global-assign': 'error',
80
+ 'no-import-assign': 'error',
81
+ 'no-irregular-whitespace': 'error',
82
+ 'no-iterator': 'error',
83
+ 'no-labels': [
84
+ 'error',
85
+ {
86
+ allowLoop: false,
87
+ allowSwitch: false,
88
+ },
89
+ ],
90
+ 'no-lone-blocks': 'error',
91
+ 'no-loss-of-precision': 'error',
92
+ 'no-misleading-character-class': 'error',
93
+ 'no-multi-str': 'error',
94
+ 'no-new': 'error',
95
+ 'no-new-func': 'error',
96
+ 'no-new-native-nonconstructor': 'error',
97
+ 'no-new-wrappers': 'error',
98
+ 'no-obj-calls': 'error',
99
+ 'no-proto': 'error',
100
+ 'no-prototype-builtins': 'error',
101
+ 'no-redeclare': [
102
+ 'error',
103
+ {
104
+ builtinGlobals: false,
105
+ },
106
+ ],
107
+ 'no-regex-spaces': 'error',
108
+ 'no-restricted-globals': [
109
+ 'error',
110
+ {
111
+ message: 'Use `globalThis` instead.',
112
+ name: 'global',
113
+ },
114
+ {
115
+ message: 'Use `globalThis` instead.',
116
+ name: 'self',
117
+ },
118
+ ],
119
+ 'no-self-assign': [
120
+ 'error',
121
+ {
122
+ props: true,
123
+ },
124
+ ],
125
+ 'no-self-compare': 'error',
126
+ 'no-sequences': 'error',
127
+ 'no-shadow-restricted-names': 'error',
128
+ 'no-sparse-arrays': 'error',
129
+ 'no-template-curly-in-string': 'error',
130
+ 'no-this-before-super': 'error',
131
+ 'no-throw-literal': 'error',
132
+ 'no-unexpected-multiline': 'error',
133
+ 'no-unmodified-loop-condition': 'error',
134
+ 'no-unneeded-ternary': [
135
+ 'error',
136
+ {
137
+ defaultAssignment: false,
138
+ },
139
+ ],
140
+ 'no-unsafe-finally': 'error',
141
+ 'no-unsafe-negation': 'error',
142
+ 'no-unused-expressions': [
143
+ 'error',
144
+ {
145
+ allowShortCircuit: true,
146
+ allowTaggedTemplates: true,
147
+ allowTernary: true,
148
+ },
149
+ ],
150
+ 'no-unused-vars': [
151
+ 'error',
152
+ {
153
+ args: 'none',
154
+ caughtErrors: 'none',
155
+ ignoreRestSiblings: true,
156
+ vars: 'all',
157
+ },
158
+ ],
159
+ 'no-use-before-define': [
160
+ 'error',
161
+ {
162
+ classes: false,
163
+ functions: false,
164
+ variables: true,
165
+ },
166
+ ],
167
+ 'no-useless-call': 'error',
168
+ 'no-useless-catch': 'error',
169
+ 'no-useless-computed-key': 'error',
170
+ 'no-useless-constructor': 'error',
171
+ 'no-useless-rename': 'error',
172
+ 'no-useless-return': 'error',
173
+ 'no-var': 'error',
174
+ 'no-with': 'error',
175
+ 'prefer-const': [
176
+ 'error',
177
+ {
178
+ destructuring: 'all',
179
+ ignoreReadBeforeAssign: true,
180
+ },
181
+ ],
182
+ 'prefer-exponentiation-operator': 'error',
183
+ 'prefer-promise-reject-errors': 'error',
184
+ 'prefer-rest-params': 'error',
185
+ 'prefer-spread': 'error',
186
+ 'prefer-template': 'error',
187
+ 'symbol-description': 'error',
188
+ 'unicode-bom': ['error', 'never'],
189
+ 'unused-imports/no-unused-imports': 'error',
190
+ 'unused-imports/no-unused-vars': [
191
+ 'error',
192
+ {
193
+ args: 'after-used',
194
+ argsIgnorePattern: '^_',
195
+ ignoreRestSiblings: true,
196
+ vars: 'all',
197
+ varsIgnorePattern: '^_',
198
+ },
199
+ ],
200
+ 'use-isnan': [
201
+ 'error',
202
+ {
203
+ enforceForIndexOf: true,
204
+ enforceForSwitchCase: true,
205
+ },
206
+ ],
207
+ 'valid-typeof': [
208
+ 'error',
209
+ {
210
+ requireStringLiterals: true,
211
+ },
212
+ ],
213
+ 'vars-on-top': 'error',
214
+ 'yoda': ['error', 'never'],
215
+ 'eslint-comments/no-aggregating-enable': 'error',
216
+ 'eslint-comments/no-duplicate-disable': 'error',
217
+ 'eslint-comments/no-unlimited-disable': 'error',
218
+ 'eslint-comments/no-unused-enable': 'error',
219
+ 'command/command': 'error',
220
+ 'perfectionist/sort-exports': [
221
+ 'error',
222
+ {
223
+ order: 'asc',
224
+ type: 'natural',
225
+ },
226
+ ],
227
+ 'perfectionist/sort-named-exports': [
228
+ 'error',
229
+ {
230
+ order: 'asc',
231
+ type: 'natural',
232
+ },
233
+ ],
234
+ 'perfectionist/sort-named-imports': [
235
+ 'error',
236
+ {
237
+ order: 'asc',
238
+ type: 'natural',
239
+ },
240
+ ],
241
+ 'antfu/import-dedupe': 'error',
242
+ 'antfu/no-import-dist': 'error',
243
+ 'antfu/no-import-node-modules-by-path': 'error',
244
+ 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
245
+ 'import/first': 'error',
246
+ 'import/no-duplicates': 'error',
247
+ 'import/no-mutable-exports': 'error',
248
+ 'import/no-named-default': 'error',
249
+ 'e18e/prefer-array-at': 'error',
250
+ 'e18e/prefer-array-fill': 'error',
251
+ 'e18e/prefer-includes': 'error',
252
+ 'e18e/prefer-array-to-reversed': 'error',
253
+ 'e18e/prefer-array-to-sorted': 'error',
254
+ 'e18e/prefer-array-to-spliced': 'error',
255
+ 'e18e/prefer-nullish-coalescing': 'error',
256
+ 'e18e/prefer-object-has-own': 'error',
257
+ 'e18e/prefer-spread-syntax': 'off',
258
+ 'e18e/prefer-url-canparse': 'error',
259
+ 'e18e/prefer-array-from-map': 'error',
260
+ 'e18e/prefer-timer-args': 'error',
261
+ 'e18e/prefer-date-now': 'error',
262
+ 'e18e/prefer-regex-test': 'error',
263
+ 'e18e/prefer-array-some': 'error',
264
+ 'e18e/prefer-static-regex': 'error',
265
+ 'unicorn/consistent-empty-array-spread': 'error',
266
+ 'unicorn/error-message': 'error',
267
+ 'unicorn/escape-case': 'error',
268
+ 'unicorn/new-for-builtins': 'error',
269
+ 'unicorn/no-instanceof-builtins': 'error',
270
+ 'unicorn/no-new-array': 'error',
271
+ 'unicorn/no-new-buffer': 'error',
272
+ 'unicorn/number-literal-case': 'error',
273
+ 'unicorn/prefer-dom-node-text-content': 'error',
274
+ 'unicorn/prefer-includes': 'error',
275
+ 'unicorn/prefer-node-protocol': 'error',
276
+ 'unicorn/prefer-number-properties': 'error',
277
+ 'unicorn/prefer-string-starts-ends-with': 'error',
278
+ 'unicorn/prefer-type-error': 'error',
279
+ 'unicorn/throw-new-error': 'error',
280
+ '@stylistic/array-bracket-spacing': ['error', 'never'],
281
+ '@stylistic/arrow-parens': ['error', 'as-needed'],
282
+ '@stylistic/arrow-spacing': [
283
+ 'error',
284
+ {
285
+ after: true,
286
+ before: true,
287
+ },
288
+ ],
289
+ '@stylistic/block-spacing': ['error', 'always'],
290
+ '@stylistic/brace-style': [
291
+ 'error',
292
+ '1tbs',
293
+ {
294
+ allowSingleLine: true,
295
+ },
296
+ ],
297
+ '@stylistic/comma-dangle': ['error', 'always-multiline'],
298
+ '@stylistic/comma-spacing': [
299
+ 'error',
300
+ {
301
+ after: true,
302
+ before: false,
303
+ },
304
+ ],
305
+ '@stylistic/comma-style': ['error', 'last'],
306
+ '@stylistic/computed-property-spacing': [
307
+ 'error',
308
+ 'never',
309
+ {
310
+ enforceForClassMembers: true,
311
+ },
312
+ ],
313
+ '@stylistic/dot-location': ['error', 'property'],
314
+ '@stylistic/eol-last': 'error',
315
+ '@stylistic/generator-star-spacing': [
316
+ 'error',
317
+ {
318
+ after: true,
319
+ before: false,
320
+ },
321
+ ],
322
+ '@stylistic/indent': [
323
+ 'error',
324
+ 2,
325
+ {
326
+ SwitchCase: 1,
327
+ VariableDeclarator: 'first',
328
+ outerIIFEBody: 1,
329
+ MemberExpression: 1,
330
+ FunctionDeclaration: {
331
+ body: 1,
332
+ parameters: 1,
333
+ },
334
+ FunctionExpression: {
335
+ body: 1,
336
+ parameters: 1,
337
+ },
338
+ StaticBlock: {
339
+ body: 1,
340
+ },
341
+ CallExpression: {
342
+ arguments: 1,
343
+ },
344
+ ArrayExpression: 1,
345
+ ObjectExpression: 1,
346
+ ImportDeclaration: 1,
347
+ flatTernaryExpressions: true,
348
+ offsetTernaryExpressions: true,
349
+ },
350
+ ],
351
+ '@stylistic/indent-binary-ops': 'off',
352
+ '@stylistic/key-spacing': [
353
+ 'error',
354
+ {
355
+ afterColon: true,
356
+ beforeColon: false,
357
+ },
358
+ ],
359
+ '@stylistic/keyword-spacing': [
360
+ 'error',
361
+ {
362
+ overrides: {
363
+ this: {
364
+ before: true,
365
+ },
366
+ },
367
+ },
368
+ ],
369
+ '@stylistic/lines-between-class-members': [
370
+ 'error',
371
+ 'always',
372
+ {
373
+ exceptAfterSingleLine: true,
374
+ },
375
+ ],
376
+ '@stylistic/max-statements-per-line': [
377
+ 'error',
378
+ {
379
+ max: 1,
380
+ },
381
+ ],
382
+ '@stylistic/member-delimiter-style': [
383
+ 'error',
384
+ {
385
+ multiline: {
386
+ delimiter: 'semi',
387
+ requireLast: true,
388
+ },
389
+ multilineDetection: 'brackets',
390
+ overrides: {
391
+ interface: {
392
+ multiline: {
393
+ delimiter: 'semi',
394
+ requireLast: true,
395
+ },
396
+ },
397
+ },
398
+ singleline: {
399
+ delimiter: 'semi',
400
+ },
401
+ },
402
+ ],
403
+ '@stylistic/multiline-ternary': ['error', 'always-multiline'],
404
+ '@stylistic/new-parens': 'error',
405
+ '@stylistic/no-extra-parens': ['error', 'functions'],
406
+ '@stylistic/no-floating-decimal': 'error',
407
+ '@stylistic/no-mixed-operators': [
408
+ 'error',
409
+ {
410
+ allowSamePrecedence: true,
411
+ groups: [
412
+ ['==', '!=', '===', '!==', '>', '>=', '<', '<='],
413
+ ['&&', '||'],
414
+ ['in', 'instanceof'],
415
+ ],
416
+ },
417
+ ],
418
+ '@stylistic/no-mixed-spaces-and-tabs': 'error',
419
+ '@stylistic/no-multi-spaces': 'error',
420
+ '@stylistic/no-multiple-empty-lines': [
421
+ 'error',
422
+ {
423
+ max: 1,
424
+ maxBOF: 0,
425
+ maxEOF: 0,
426
+ },
427
+ ],
428
+ '@stylistic/no-tabs': 'error',
429
+ '@stylistic/no-trailing-spaces': 'error',
430
+ '@stylistic/no-whitespace-before-property': 'error',
431
+ '@stylistic/object-curly-spacing': ['error', 'always'],
432
+ '@stylistic/operator-linebreak': [
433
+ 'error',
434
+ 'after',
435
+ {
436
+ overrides: {
437
+ '?': 'before',
438
+ ':': 'before',
439
+ '|': 'before',
440
+ },
441
+ },
442
+ ],
443
+ '@stylistic/padded-blocks': [
444
+ 'error',
445
+ {
446
+ blocks: 'never',
447
+ classes: 'never',
448
+ switches: 'never',
449
+ },
450
+ ],
451
+ '@stylistic/quote-props': ['error', 'consistent-as-needed'],
452
+ '@stylistic/quotes': [
453
+ 'error',
454
+ 'single',
455
+ {
456
+ avoidEscape: true,
457
+ },
458
+ ],
459
+ '@stylistic/rest-spread-spacing': ['error', 'never'],
460
+ '@stylistic/semi': ['error', 'always'],
461
+ '@stylistic/semi-spacing': [
462
+ 'error',
463
+ {
464
+ after: true,
465
+ before: false,
466
+ },
467
+ ],
468
+ '@stylistic/space-before-blocks': ['error', 'always'],
469
+ '@stylistic/space-before-function-paren': [
470
+ 'error',
471
+ {
472
+ anonymous: 'always',
473
+ asyncArrow: 'always',
474
+ named: 'never',
475
+ },
476
+ ],
477
+ '@stylistic/space-in-parens': ['error', 'never'],
478
+ '@stylistic/space-infix-ops': 'error',
479
+ '@stylistic/space-unary-ops': [
480
+ 'error',
481
+ {
482
+ nonwords: false,
483
+ words: true,
484
+ },
485
+ ],
486
+ '@stylistic/spaced-comment': [
487
+ 'error',
488
+ 'always',
489
+ {
490
+ block: {
491
+ balanced: true,
492
+ exceptions: ['*'],
493
+ markers: ['!'],
494
+ },
495
+ line: {
496
+ exceptions: ['/', '#'],
497
+ markers: ['/'],
498
+ },
499
+ },
500
+ ],
501
+ '@stylistic/template-curly-spacing': 'error',
502
+ '@stylistic/template-tag-spacing': ['error', 'never'],
503
+ '@stylistic/type-annotation-spacing': ['error', {}],
504
+ '@stylistic/type-generic-spacing': 'error',
505
+ '@stylistic/type-named-tuple-spacing': 'error',
506
+ '@stylistic/wrap-iife': [
507
+ 'error',
508
+ 'any',
509
+ {
510
+ functionPrototypeMethods: true,
511
+ },
512
+ ],
513
+ '@stylistic/yield-star-spacing': [
514
+ 'error',
515
+ {
516
+ after: true,
517
+ before: false,
518
+ },
519
+ ],
520
+ '@stylistic/jsx-closing-bracket-location': 'error',
521
+ '@stylistic/jsx-closing-tag-location': 'off',
522
+ '@stylistic/jsx-curly-brace-presence': [
523
+ 'error',
524
+ {
525
+ propElementValues: 'always',
526
+ },
527
+ ],
528
+ '@stylistic/jsx-curly-newline': 'error',
529
+ '@stylistic/jsx-curly-spacing': ['error', 'never'],
530
+ '@stylistic/jsx-equals-spacing': 'error',
531
+ '@stylistic/jsx-first-prop-new-line': 'error',
532
+ '@stylistic/jsx-function-call-newline': ['error', 'multiline'],
533
+ '@stylistic/jsx-indent-props': ['error', 2],
534
+ '@stylistic/jsx-max-props-per-line': [
535
+ 'error',
536
+ {
537
+ maximum: 1,
538
+ when: 'multiline',
539
+ },
540
+ ],
541
+ '@stylistic/jsx-one-expression-per-line': [
542
+ 'error',
543
+ {
544
+ allow: 'single-child',
545
+ },
546
+ ],
547
+ '@stylistic/jsx-quotes': 'error',
548
+ '@stylistic/jsx-tag-spacing': [
549
+ 'error',
550
+ {
551
+ afterOpening: 'never',
552
+ beforeClosing: 'never',
553
+ beforeSelfClosing: 'always',
554
+ closingSlash: 'never',
555
+ },
556
+ ],
557
+ '@stylistic/jsx-wrap-multilines': [
558
+ 'error',
559
+ {
560
+ arrow: 'parens-new-line',
561
+ assignment: 'parens-new-line',
562
+ condition: 'parens-new-line',
563
+ declaration: 'parens-new-line',
564
+ logical: 'parens-new-line',
565
+ prop: 'ignore',
566
+ propertyValue: 'parens-new-line',
567
+ return: 'parens-new-line',
568
+ },
569
+ ],
570
+ 'antfu/consistent-list-newline': 'error',
571
+ 'antfu/consistent-chaining': 'error',
572
+ 'antfu/curly': 'error',
573
+ 'antfu/if-newline': 'error',
574
+ 'antfu/top-level-function': 'error',
575
+ 'regexp/confusing-quantifier': 'warn',
576
+ 'regexp/control-character-escape': 'error',
577
+ 'regexp/match-any': 'error',
578
+ 'regexp/negation': 'error',
579
+ 'regexp/no-contradiction-with-assertion': 'error',
580
+ 'regexp/no-dupe-characters-character-class': 'error',
581
+ 'regexp/no-dupe-disjunctions': 'error',
582
+ 'regexp/no-empty-alternative': 'warn',
583
+ 'regexp/no-empty-capturing-group': 'error',
584
+ 'regexp/no-empty-character-class': 'error',
585
+ 'regexp/no-empty-group': 'error',
586
+ 'regexp/no-empty-lookarounds-assertion': 'error',
587
+ 'regexp/no-empty-string-literal': 'error',
588
+ 'regexp/no-escape-backspace': 'error',
589
+ 'regexp/no-extra-lookaround-assertions': 'error',
590
+ 'regexp/no-invalid-regexp': 'error',
591
+ 'regexp/no-invisible-character': 'error',
592
+ 'regexp/no-lazy-ends': 'warn',
593
+ 'regexp/no-legacy-features': 'error',
594
+ 'regexp/no-misleading-capturing-group': 'error',
595
+ 'regexp/no-misleading-unicode-character': 'error',
596
+ 'regexp/no-missing-g-flag': 'error',
597
+ 'regexp/no-non-standard-flag': 'error',
598
+ 'regexp/no-obscure-range': 'error',
599
+ 'regexp/no-optional-assertion': 'error',
600
+ 'regexp/no-potentially-useless-backreference': 'warn',
601
+ 'regexp/no-super-linear-backtracking': 'error',
602
+ 'regexp/no-trivially-nested-assertion': 'error',
603
+ 'regexp/no-trivially-nested-quantifier': 'error',
604
+ 'regexp/no-unused-capturing-group': 'error',
605
+ 'regexp/no-useless-assertions': 'error',
606
+ 'regexp/no-useless-backreference': 'error',
607
+ 'regexp/no-useless-character-class': 'error',
608
+ 'regexp/no-useless-dollar-replacements': 'error',
609
+ 'regexp/no-useless-escape': 'error',
610
+ 'regexp/no-useless-flag': 'warn',
611
+ 'regexp/no-useless-lazy': 'error',
612
+ 'regexp/no-useless-non-capturing-group': 'error',
613
+ 'regexp/no-useless-quantifier': 'error',
614
+ 'regexp/no-useless-range': 'error',
615
+ 'regexp/no-useless-set-operand': 'error',
616
+ 'regexp/no-useless-string-literal': 'error',
617
+ 'regexp/no-useless-two-nums-quantifier': 'error',
618
+ 'regexp/no-zero-quantifier': 'error',
619
+ 'regexp/optimal-lookaround-quantifier': 'warn',
620
+ 'regexp/optimal-quantifier-concatenation': 'error',
621
+ 'regexp/prefer-character-class': 'error',
622
+ 'regexp/prefer-d': 'error',
623
+ 'regexp/prefer-plus-quantifier': 'error',
624
+ 'regexp/prefer-predefined-assertion': 'error',
625
+ 'regexp/prefer-question-quantifier': 'error',
626
+ 'regexp/prefer-range': 'error',
627
+ 'regexp/prefer-set-operation': 'error',
628
+ 'regexp/prefer-star-quantifier': 'error',
629
+ 'regexp/prefer-unicode-codepoint-escapes': 'error',
630
+ 'regexp/prefer-w': 'error',
631
+ 'regexp/simplify-set-operations': 'error',
632
+ 'regexp/sort-flags': 'error',
633
+ 'regexp/strict': 'error',
634
+ 'regexp/use-ignore-case': 'error',
635
+ },
636
+ overrides: [
637
+ {
638
+ files: ['**/*.?([cm])[jt]s?(x)'],
639
+ rules: {
640
+ 'node/handle-callback-err': ['error', '^(err|error)$'],
641
+ 'node/no-exports-assign': 'error',
642
+ 'node/no-new-require': 'error',
643
+ 'node/no-path-concat': 'error',
644
+ 'jsdoc/check-access': 'warn',
645
+ 'jsdoc/check-property-names': 'warn',
646
+ 'jsdoc/empty-tags': 'warn',
647
+ 'jsdoc/implements-on-classes': 'warn',
648
+ 'jsdoc/no-defaults': 'warn',
649
+ 'jsdoc/require-param-name': 'warn',
650
+ 'jsdoc/require-property': 'warn',
651
+ 'jsdoc/require-property-description': 'warn',
652
+ 'jsdoc/require-property-name': 'warn',
653
+ 'jsdoc/require-returns-description': 'warn',
654
+ },
655
+ plugins: ['node', 'jsdoc'],
656
+ },
657
+ {
658
+ files: ['**/*.?([cm])ts', '**/*.?([cm])tsx'],
659
+ rules: {
660
+ 'constructor-super': 'off',
661
+ 'no-class-assign': 'off',
662
+ 'no-const-assign': 'off',
663
+ 'no-dupe-keys': 'off',
664
+ 'no-func-assign': 'off',
665
+ 'no-import-assign': 'off',
666
+ 'no-new-native-nonconstructor': 'off',
667
+ 'no-obj-calls': 'off',
668
+ 'no-redeclare': [
669
+ 'error',
670
+ {
671
+ builtinGlobals: false,
672
+ },
673
+ ],
674
+ 'no-setter-return': 'off',
675
+ 'no-this-before-super': 'off',
676
+ 'no-unsafe-negation': 'off',
677
+ 'no-with': 'off',
678
+ 'prefer-const': [
679
+ 'error',
680
+ {
681
+ destructuring: 'all',
682
+ ignoreReadBeforeAssign: true,
683
+ },
684
+ ],
685
+ '@typescript-eslint/ban-ts-comment': [
686
+ 'error',
687
+ {
688
+ 'ts-expect-error': 'allow-with-description',
689
+ },
690
+ ],
691
+ '@typescript-eslint/no-duplicate-enum-values': 'error',
692
+ '@typescript-eslint/no-dynamic-delete': 'off',
693
+ '@typescript-eslint/no-empty-object-type': [
694
+ 'error',
695
+ {
696
+ allowInterfaces: 'always',
697
+ },
698
+ ],
699
+ '@typescript-eslint/no-explicit-any': 'off',
700
+ '@typescript-eslint/no-extra-non-null-assertion': 'error',
701
+ '@typescript-eslint/no-extraneous-class': 'off',
702
+ '@typescript-eslint/no-invalid-void-type': 'off',
703
+ '@typescript-eslint/no-misused-new': 'error',
704
+ '@typescript-eslint/no-namespace': 'error',
705
+ '@typescript-eslint/no-non-null-asserted-nullish-coalescing': 'error',
706
+ '@typescript-eslint/no-non-null-asserted-optional-chain': 'error',
707
+ '@typescript-eslint/no-non-null-assertion': 'off',
708
+ '@typescript-eslint/no-require-imports': 'error',
709
+ '@typescript-eslint/no-this-alias': 'error',
710
+ '@typescript-eslint/no-unnecessary-type-constraint': 'error',
711
+ '@typescript-eslint/no-unsafe-declaration-merging': 'error',
712
+ '@typescript-eslint/no-unsafe-function-type': 'error',
713
+ 'no-unused-expressions': [
714
+ 'error',
715
+ {
716
+ allowShortCircuit: true,
717
+ allowTaggedTemplates: true,
718
+ allowTernary: true,
719
+ },
720
+ ],
721
+ 'no-unused-vars': 'off',
722
+ 'no-useless-constructor': 'off',
723
+ '@typescript-eslint/no-wrapper-object-types': 'error',
724
+ '@typescript-eslint/prefer-as-const': 'error',
725
+ '@typescript-eslint/prefer-literal-enum-member': 'error',
726
+ '@typescript-eslint/prefer-namespace-keyword': 'error',
727
+ '@typescript-eslint/triple-slash-reference': 'off',
728
+ '@typescript-eslint/unified-signatures': 'off',
729
+ 'no-use-before-define': [
730
+ 'error',
731
+ {
732
+ classes: false,
733
+ functions: false,
734
+ variables: true,
735
+ },
736
+ ],
737
+ '@typescript-eslint/consistent-type-definitions': [
738
+ 'error',
739
+ 'interface',
740
+ ],
741
+ '@typescript-eslint/consistent-type-imports': [
742
+ 'error',
743
+ {
744
+ disallowTypeAnnotations: false,
745
+ fixStyle: 'separate-type-imports',
746
+ prefer: 'type-imports',
747
+ },
748
+ ],
749
+ '@typescript-eslint/no-import-type-side-effects': 'error',
750
+ },
751
+ plugins: ['typescript'],
752
+ },
753
+ {
754
+ files: [
755
+ '**/__tests__/**/*.?([cm])[jt]s?(x)',
756
+ '**/*.spec.?([cm])[jt]s?(x)',
757
+ '**/*.test.?([cm])[jt]s?(x)',
758
+ '**/*.bench.?([cm])[jt]s?(x)',
759
+ '**/*.benchmark.?([cm])[jt]s?(x)',
760
+ ],
761
+ rules: {
762
+ 'vitest/consistent-test-it': [
763
+ 'error',
764
+ {
765
+ fn: 'it',
766
+ withinDescribe: 'it',
767
+ },
768
+ ],
769
+ 'vitest/no-identical-title': 'error',
770
+ 'vitest/no-import-node-test': 'error',
771
+ 'vitest/prefer-hooks-in-order': 'error',
772
+ 'vitest/prefer-lowercase-title': 'error',
773
+ 'antfu/no-top-level-await': 'off',
774
+ 'e18e/prefer-static-regex': 'off',
775
+ 'no-unused-expressions': 'off',
776
+ '@typescript-eslint/explicit-function-return-type': 'off',
777
+ },
778
+ jsPlugins: ['eslint-plugin-antfu', '@e18e/eslint-plugin'],
779
+ plugins: ['vitest', 'typescript'],
780
+ },
781
+ {
782
+ files: ['**/*.json', '**/*.json5', '**/*.jsonc'],
783
+ rules: {
784
+ 'jsonc/no-bigint-literals': 'error',
785
+ 'jsonc/no-binary-expression': 'error',
786
+ 'jsonc/no-binary-numeric-literals': 'error',
787
+ 'jsonc/no-dupe-keys': 'error',
788
+ 'jsonc/no-escape-sequence-in-identifier': 'error',
789
+ 'jsonc/no-floating-decimal': 'error',
790
+ 'jsonc/no-hexadecimal-numeric-literals': 'error',
791
+ 'jsonc/no-infinity': 'error',
792
+ 'jsonc/no-multi-str': 'error',
793
+ 'jsonc/no-nan': 'error',
794
+ 'jsonc/no-number-props': 'error',
795
+ 'jsonc/no-numeric-separators': 'error',
796
+ 'jsonc/no-octal': 'error',
797
+ 'jsonc/no-octal-escape': 'error',
798
+ 'jsonc/no-octal-numeric-literals': 'error',
799
+ 'jsonc/no-parenthesized': 'error',
800
+ 'jsonc/no-plus-sign': 'error',
801
+ 'jsonc/no-regexp-literals': 'error',
802
+ 'jsonc/no-sparse-arrays': 'error',
803
+ 'jsonc/no-template-literals': 'error',
804
+ 'jsonc/no-undefined-value': 'error',
805
+ 'jsonc/no-unicode-codepoint-escapes': 'error',
806
+ 'jsonc/no-useless-escape': 'error',
807
+ 'jsonc/space-unary-ops': 'error',
808
+ 'jsonc/valid-json-number': 'error',
809
+ 'jsonc/vue-custom-block/no-parsing-error': 'error',
810
+ 'jsonc/array-bracket-spacing': ['error', 'never'],
811
+ 'jsonc/comma-dangle': ['error', 'never'],
812
+ 'jsonc/comma-style': ['error', 'last'],
813
+ 'jsonc/indent': ['error', 2],
814
+ 'jsonc/key-spacing': [
815
+ 'error',
816
+ {
817
+ afterColon: true,
818
+ beforeColon: false,
819
+ },
820
+ ],
821
+ 'jsonc/object-curly-newline': [
822
+ 'error',
823
+ {
824
+ consistent: true,
825
+ multiline: true,
826
+ },
827
+ ],
828
+ 'jsonc/object-curly-spacing': ['error', 'always'],
829
+ 'jsonc/object-property-newline': [
830
+ 'error',
831
+ {
832
+ allowAllPropertiesOnSameLine: true,
833
+ },
834
+ ],
835
+ 'jsonc/quote-props': 'error',
836
+ 'jsonc/quotes': 'error',
837
+ },
838
+ jsPlugins: ['eslint-plugin-jsonc'],
839
+ },
840
+ {
841
+ files: ['**/package.json'],
842
+ rules: {
843
+ 'jsonc/sort-array-values': [
844
+ 'error',
845
+ {
846
+ order: {
847
+ type: 'asc',
848
+ },
849
+ pathPattern: '^files$',
850
+ },
851
+ ],
852
+ 'jsonc/sort-keys': [
853
+ 'error',
854
+ {
855
+ order: [
856
+ 'publisher',
857
+ 'name',
858
+ 'displayName',
859
+ 'type',
860
+ 'version',
861
+ 'private',
862
+ 'packageManager',
863
+ 'description',
864
+ 'author',
865
+ 'contributors',
866
+ 'license',
867
+ 'funding',
868
+ 'homepage',
869
+ 'repository',
870
+ 'bugs',
871
+ 'keywords',
872
+ 'categories',
873
+ 'sideEffects',
874
+ 'imports',
875
+ 'exports',
876
+ 'main',
877
+ 'module',
878
+ 'unpkg',
879
+ 'jsdelivr',
880
+ 'types',
881
+ 'typesVersions',
882
+ 'bin',
883
+ 'icon',
884
+ 'files',
885
+ 'engines',
886
+ 'activationEvents',
887
+ 'contributes',
888
+ 'scripts',
889
+ 'peerDependencies',
890
+ 'peerDependenciesMeta',
891
+ 'dependencies',
892
+ 'optionalDependencies',
893
+ 'devDependencies',
894
+ 'pnpm',
895
+ 'overrides',
896
+ 'resolutions',
897
+ 'husky',
898
+ 'simple-git-hooks',
899
+ 'lint-staged',
900
+ 'eslintConfig',
901
+ ],
902
+ pathPattern: '^$',
903
+ },
904
+ {
905
+ order: {
906
+ type: 'asc',
907
+ },
908
+ pathPattern: '^(?:dev|peer|optional|bundled)?[Dd]ependencies(Meta)?$',
909
+ },
910
+ {
911
+ order: {
912
+ type: 'asc',
913
+ },
914
+ pathPattern: '^(?:resolutions|overrides|pnpm.overrides)$',
915
+ },
916
+ {
917
+ order: {
918
+ type: 'asc',
919
+ },
920
+ pathPattern: '^workspaces\\.catalog$',
921
+ },
922
+ {
923
+ order: {
924
+ type: 'asc',
925
+ },
926
+ pathPattern: '^workspaces\\.catalogs\\.[^.]+$',
927
+ },
928
+ {
929
+ order: ['types', 'import', 'require', 'default'],
930
+ pathPattern: '^exports.*$',
931
+ },
932
+ {
933
+ order: [
934
+ 'pre-commit',
935
+ 'prepare-commit-msg',
936
+ 'commit-msg',
937
+ 'post-commit',
938
+ 'pre-rebase',
939
+ 'post-rewrite',
940
+ 'post-checkout',
941
+ 'post-merge',
942
+ 'pre-push',
943
+ 'pre-auto-gc',
944
+ ],
945
+ pathPattern: '^(?:gitHooks|husky|simple-git-hooks)$',
946
+ },
947
+ ],
948
+ },
949
+ jsPlugins: ['eslint-plugin-jsonc'],
950
+ },
951
+ {
952
+ files: ['**/[jt]sconfig.json', '**/[jt]sconfig.*.json'],
953
+ rules: {
954
+ 'jsonc/sort-keys': [
955
+ 'error',
956
+ {
957
+ order: [
958
+ 'extends',
959
+ 'compilerOptions',
960
+ 'references',
961
+ 'files',
962
+ 'include',
963
+ 'exclude',
964
+ ],
965
+ pathPattern: '^$',
966
+ },
967
+ {
968
+ order: [
969
+ 'incremental',
970
+ 'composite',
971
+ 'tsBuildInfoFile',
972
+ 'disableSourceOfProjectReferenceRedirect',
973
+ 'disableSolutionSearching',
974
+ 'disableReferencedProjectLoad',
975
+ 'target',
976
+ 'jsx',
977
+ 'jsxFactory',
978
+ 'jsxFragmentFactory',
979
+ 'jsxImportSource',
980
+ 'lib',
981
+ 'moduleDetection',
982
+ 'noLib',
983
+ 'reactNamespace',
984
+ 'useDefineForClassFields',
985
+ 'emitDecoratorMetadata',
986
+ 'experimentalDecorators',
987
+ 'libReplacement',
988
+ 'baseUrl',
989
+ 'rootDir',
990
+ 'rootDirs',
991
+ 'customConditions',
992
+ 'module',
993
+ 'moduleResolution',
994
+ 'moduleSuffixes',
995
+ 'noResolve',
996
+ 'paths',
997
+ 'resolveJsonModule',
998
+ 'resolvePackageJsonExports',
999
+ 'resolvePackageJsonImports',
1000
+ 'typeRoots',
1001
+ 'types',
1002
+ 'allowArbitraryExtensions',
1003
+ 'allowImportingTsExtensions',
1004
+ 'allowUmdGlobalAccess',
1005
+ 'allowJs',
1006
+ 'checkJs',
1007
+ 'maxNodeModuleJsDepth',
1008
+ 'strict',
1009
+ 'strictBindCallApply',
1010
+ 'strictFunctionTypes',
1011
+ 'strictNullChecks',
1012
+ 'strictPropertyInitialization',
1013
+ 'allowUnreachableCode',
1014
+ 'allowUnusedLabels',
1015
+ 'alwaysStrict',
1016
+ 'exactOptionalPropertyTypes',
1017
+ 'noFallthroughCasesInSwitch',
1018
+ 'noImplicitAny',
1019
+ 'noImplicitOverride',
1020
+ 'noImplicitReturns',
1021
+ 'noImplicitThis',
1022
+ 'noPropertyAccessFromIndexSignature',
1023
+ 'noUncheckedIndexedAccess',
1024
+ 'noUnusedLocals',
1025
+ 'noUnusedParameters',
1026
+ 'useUnknownInCatchVariables',
1027
+ 'declaration',
1028
+ 'declarationDir',
1029
+ 'declarationMap',
1030
+ 'downlevelIteration',
1031
+ 'emitBOM',
1032
+ 'emitDeclarationOnly',
1033
+ 'importHelpers',
1034
+ 'importsNotUsedAsValues',
1035
+ 'inlineSourceMap',
1036
+ 'inlineSources',
1037
+ 'mapRoot',
1038
+ 'newLine',
1039
+ 'noEmit',
1040
+ 'noEmitHelpers',
1041
+ 'noEmitOnError',
1042
+ 'outDir',
1043
+ 'outFile',
1044
+ 'preserveConstEnums',
1045
+ 'preserveValueImports',
1046
+ 'removeComments',
1047
+ 'sourceMap',
1048
+ 'sourceRoot',
1049
+ 'stripInternal',
1050
+ 'allowSyntheticDefaultImports',
1051
+ 'esModuleInterop',
1052
+ 'forceConsistentCasingInFileNames',
1053
+ 'isolatedDeclarations',
1054
+ 'isolatedModules',
1055
+ 'preserveSymlinks',
1056
+ 'verbatimModuleSyntax',
1057
+ 'erasableSyntaxOnly',
1058
+ 'skipDefaultLibCheck',
1059
+ 'skipLibCheck',
1060
+ ],
1061
+ pathPattern: '^compilerOptions$',
1062
+ },
1063
+ ],
1064
+ },
1065
+ jsPlugins: ['eslint-plugin-jsonc'],
1066
+ },
1067
+ {
1068
+ files: ['package.json', '**/package.json'],
1069
+ rules: {
1070
+ 'pnpm/json-prefer-workspace-settings': [
1071
+ 'error',
1072
+ {
1073
+ autofix: true,
1074
+ },
1075
+ ],
1076
+ 'pnpm/json-valid-catalog': [
1077
+ 'error',
1078
+ {
1079
+ autofix: true,
1080
+ },
1081
+ ],
1082
+ },
1083
+ jsPlugins: ['eslint-plugin-pnpm'],
1084
+ },
1085
+ {
1086
+ files: ['pnpm-workspace.yaml'],
1087
+ rules: {
1088
+ 'pnpm/yaml-enforce-settings': [
1089
+ 'error',
1090
+ {
1091
+ settings: {
1092
+ shellEmulator: true,
1093
+ trustPolicy: 'no-downgrade',
1094
+ },
1095
+ },
1096
+ ],
1097
+ 'pnpm/yaml-no-duplicate-catalog-item': 'error',
1098
+ 'pnpm/yaml-no-unused-catalog-item': 'error',
1099
+ 'yml/sort-keys': [
1100
+ 'error',
1101
+ {
1102
+ order: [
1103
+ 'cacheDir',
1104
+ 'catalogMode',
1105
+ 'cleanupUnusedCatalogs',
1106
+ 'dedupeDirectDeps',
1107
+ 'deployAllFiles',
1108
+ 'enablePrePostScripts',
1109
+ 'engineStrict',
1110
+ 'extendNodePath',
1111
+ 'hoist',
1112
+ 'hoistPattern',
1113
+ 'hoistWorkspacePackages',
1114
+ 'ignoreCompatibilityDb',
1115
+ 'ignoreDepScripts',
1116
+ 'ignoreScripts',
1117
+ 'ignoreWorkspaceRootCheck',
1118
+ 'managePackageManagerVersions',
1119
+ 'minimumReleaseAge',
1120
+ 'minimumReleaseAgeExclude',
1121
+ 'modulesDir',
1122
+ 'nodeLinker',
1123
+ 'nodeVersion',
1124
+ 'optimisticRepeatInstall',
1125
+ 'packageManagerStrict',
1126
+ 'packageManagerStrictVersion',
1127
+ 'preferSymlinkedExecutables',
1128
+ 'preferWorkspacePackages',
1129
+ 'publicHoistPattern',
1130
+ 'registrySupportsTimeField',
1131
+ 'requiredScripts',
1132
+ 'resolutionMode',
1133
+ 'savePrefix',
1134
+ 'scriptShell',
1135
+ 'shamefullyHoist',
1136
+ 'shellEmulator',
1137
+ 'stateDir',
1138
+ 'supportedArchitectures',
1139
+ 'symlink',
1140
+ 'tag',
1141
+ 'trustPolicy',
1142
+ 'trustPolicyExclude',
1143
+ 'updateNotifier',
1144
+ 'packages',
1145
+ 'overrides',
1146
+ 'patchedDependencies',
1147
+ 'catalog',
1148
+ 'catalogs',
1149
+ 'allowedDeprecatedVersions',
1150
+ 'allowNonAppliedPatches',
1151
+ 'configDependencies',
1152
+ 'ignoredBuiltDependencies',
1153
+ 'ignoredOptionalDependencies',
1154
+ 'neverBuiltDependencies',
1155
+ 'onlyBuiltDependencies',
1156
+ 'onlyBuiltDependenciesFile',
1157
+ 'packageExtensions',
1158
+ 'peerDependencyRules',
1159
+ ],
1160
+ pathPattern: '^$',
1161
+ },
1162
+ {
1163
+ order: {
1164
+ type: 'asc',
1165
+ },
1166
+ pathPattern: '.*',
1167
+ },
1168
+ ],
1169
+ },
1170
+ jsPlugins: ['eslint-plugin-pnpm', 'eslint-plugin-yml'],
1171
+ },
1172
+ {
1173
+ files: ['**/*.y?(a)ml'],
1174
+ rules: {
1175
+ '@stylistic/spaced-comment': 'off',
1176
+ 'yml/block-mapping': 'error',
1177
+ 'yml/block-sequence': 'error',
1178
+ 'yml/no-empty-key': 'error',
1179
+ 'yml/no-empty-sequence-entry': 'error',
1180
+ 'yml/no-irregular-whitespace': 'error',
1181
+ 'yml/plain-scalar': 'error',
1182
+ 'yml/vue-custom-block/no-parsing-error': 'error',
1183
+ 'yml/block-mapping-question-indicator-newline': 'error',
1184
+ 'yml/block-sequence-hyphen-indicator-newline': 'error',
1185
+ 'yml/flow-mapping-curly-newline': 'error',
1186
+ 'yml/flow-mapping-curly-spacing': 'error',
1187
+ 'yml/flow-sequence-bracket-newline': 'error',
1188
+ 'yml/flow-sequence-bracket-spacing': 'error',
1189
+ 'yml/indent': ['error', 2],
1190
+ 'yml/key-spacing': 'error',
1191
+ 'yml/no-tab-indent': 'error',
1192
+ 'yml/quotes': [
1193
+ 'error',
1194
+ {
1195
+ avoidEscape: true,
1196
+ prefer: 'single',
1197
+ },
1198
+ ],
1199
+ 'yml/spaced-comment': 'error',
1200
+ },
1201
+ jsPlugins: ['@stylistic/eslint-plugin', 'eslint-plugin-yml'],
1202
+ },
1203
+ {
1204
+ files: ['**/*.toml'],
1205
+ rules: {
1206
+ '@stylistic/spaced-comment': 'off',
1207
+ 'toml/comma-style': 'error',
1208
+ 'toml/keys-order': 'error',
1209
+ 'toml/no-space-dots': 'error',
1210
+ 'toml/no-unreadable-number-separator': 'error',
1211
+ 'toml/precision-of-fractional-seconds': 'error',
1212
+ 'toml/precision-of-integer': 'error',
1213
+ 'toml/tables-order': 'error',
1214
+ 'toml/vue-custom-block/no-parsing-error': 'error',
1215
+ 'toml/array-bracket-newline': 'error',
1216
+ 'toml/array-bracket-spacing': 'error',
1217
+ 'toml/array-element-newline': 'error',
1218
+ 'toml/indent': ['error', 2],
1219
+ 'toml/inline-table-curly-spacing': 'error',
1220
+ 'toml/key-spacing': 'error',
1221
+ 'toml/padding-line-between-pairs': 'error',
1222
+ 'toml/padding-line-between-tables': 'error',
1223
+ 'toml/quoted-keys': 'error',
1224
+ 'toml/spaced-comment': 'error',
1225
+ 'toml/table-bracket-spacing': 'error',
1226
+ },
1227
+ jsPlugins: ['@stylistic/eslint-plugin', 'eslint-plugin-toml'],
1228
+ },
1229
+ {
1230
+ files: ['**/*.md/**/*.?([cm])[jt]s?(x)'],
1231
+ rules: {
1232
+ 'antfu/no-top-level-await': 'off',
1233
+ 'e18e/prefer-static-regex': 'off',
1234
+ 'no-alert': 'off',
1235
+ 'no-console': 'off',
1236
+ 'no-labels': 'off',
1237
+ 'no-lone-blocks': 'off',
1238
+ 'no-unused-expressions': 'off',
1239
+ 'no-unused-labels': 'off',
1240
+ 'no-unused-vars': 'off',
1241
+ '@stylistic/comma-dangle': 'off',
1242
+ '@stylistic/eol-last': 'off',
1243
+ '@stylistic/padding-line-between-statements': 'off',
1244
+ '@typescript-eslint/consistent-type-imports': 'off',
1245
+ '@typescript-eslint/explicit-function-return-type': 'off',
1246
+ '@typescript-eslint/no-namespace': 'off',
1247
+ '@typescript-eslint/no-require-imports': 'off',
1248
+ 'unicode-bom': 'off',
1249
+ 'unused-imports/no-unused-imports': 'off',
1250
+ 'unused-imports/no-unused-vars': 'off',
1251
+ 'no-redeclare': 'off',
1252
+ 'no-use-before-define': 'off',
1253
+ },
1254
+ jsPlugins: [
1255
+ 'eslint-plugin-antfu',
1256
+ '@e18e/eslint-plugin',
1257
+ '@stylistic/eslint-plugin',
1258
+ 'eslint-plugin-unused-imports',
1259
+ ],
1260
+ plugins: ['typescript'],
1261
+ },
1262
+ {
1263
+ files: ['**/scripts/**/*.?([cm])[jt]s?(x)'],
1264
+ rules: {
1265
+ 'antfu/no-top-level-await': 'off',
1266
+ 'no-console': 'off',
1267
+ '@typescript-eslint/explicit-function-return-type': 'off',
1268
+ },
1269
+ jsPlugins: ['eslint-plugin-antfu'],
1270
+ plugins: ['typescript'],
1271
+ },
1272
+ {
1273
+ files: ['**/cli/**/*.?([cm])[jt]s?(x)', '**/cli.?([cm])[jt]s?(x)'],
1274
+ rules: {
1275
+ 'antfu/no-top-level-await': 'off',
1276
+ 'no-console': 'off',
1277
+ },
1278
+ jsPlugins: ['eslint-plugin-antfu'],
1279
+ },
1280
+ {
1281
+ files: ['**/bin/**/*', '**/bin.?([cm])[jt]s?(x)'],
1282
+ rules: {
1283
+ 'antfu/no-import-dist': 'off',
1284
+ 'antfu/no-import-node-modules-by-path': 'off',
1285
+ },
1286
+ jsPlugins: ['eslint-plugin-antfu'],
1287
+ },
1288
+ {
1289
+ files: ['**/*.d.?([cm])ts'],
1290
+ rules: {
1291
+ 'eslint-comments/no-unlimited-disable': 'off',
1292
+ 'unused-imports/no-unused-vars': 'off',
1293
+ },
1294
+ jsPlugins: [
1295
+ 'eslint-plugin-eslint-comments',
1296
+ 'eslint-plugin-unused-imports',
1297
+ ],
1298
+ },
1299
+ {
1300
+ files: ['**/*.js', '**/*.cjs'],
1301
+ rules: {
1302
+ '@typescript-eslint/no-require-imports': 'off',
1303
+ },
1304
+ plugins: ['typescript'],
1305
+ },
1306
+ {
1307
+ files: [
1308
+ '**/*.config.?([cm])[jt]s?(x)',
1309
+ '**/*.config.*.?([cm])[jt]s?(x)',
1310
+ ],
1311
+ rules: {
1312
+ 'antfu/no-top-level-await': 'off',
1313
+ 'no-console': 'off',
1314
+ '@typescript-eslint/explicit-function-return-type': 'off',
1315
+ },
1316
+ jsPlugins: ['eslint-plugin-antfu'],
1317
+ plugins: ['typescript'],
1318
+ },
1319
+ {
1320
+ files: ['**/*.ts', '**/*.tsx'],
1321
+ rules: {
1322
+ 'e18e/prefer-object-has-own': 'off',
1323
+ 'e18e/prefer-static-regex': 'off',
1324
+ 'e18e/prefer-array-at': 'off',
1325
+ 'e18e/prefer-regex-test': 'off',
1326
+ 'regexp/no-unused-capturing-group': 'off',
1327
+ 'vitest/no-import-node-test': 'off',
1328
+ 'no-extend-native': [
1329
+ 'error',
1330
+ {
1331
+ exceptions: ['Set'],
1332
+ },
1333
+ ],
1334
+ 'no-new-func': 'off',
1335
+ 'regexp/no-super-linear-backtracking': 'off',
1336
+ 'no-template-curly-in-string': 'off',
1337
+ 'unicorn/error-message': 'off',
1338
+ 'antfu/if-newline': 'off',
1339
+ 'antfu/no-top-level-await': 'off',
1340
+ 'antfu/top-level-function': 'off',
1341
+ 'import/no-duplicates': 'off',
1342
+ 'eslint-comments/no-unlimited-disable': 'off',
1343
+ 'prefer-promise-reject-errors': 'off',
1344
+ 'no-console': [
1345
+ 'warn',
1346
+ {
1347
+ allow: ['warn', 'error'],
1348
+ },
1349
+ ],
1350
+ 'no-debugger': 'warn',
1351
+ 'prefer-const': [
1352
+ 'error',
1353
+ {
1354
+ destructuring: 'all',
1355
+ ignoreReadBeforeAssign: true,
1356
+ },
1357
+ ],
1358
+ 'no-empty': [
1359
+ 'error',
1360
+ {
1361
+ allowEmptyCatch: true,
1362
+ },
1363
+ ],
1364
+ 'no-empty-function': [
1365
+ 'error',
1366
+ {
1367
+ allow: [
1368
+ 'functions',
1369
+ 'arrowFunctions',
1370
+ 'generatorFunctions',
1371
+ 'methods',
1372
+ 'generatorMethods',
1373
+ 'getters',
1374
+ 'setters',
1375
+ 'constructors',
1376
+ 'asyncFunctions',
1377
+ 'asyncMethods',
1378
+ ],
1379
+ },
1380
+ ],
1381
+ 'no-constant-condition': [
1382
+ 'error',
1383
+ {
1384
+ checkLoops: false,
1385
+ },
1386
+ ],
1387
+ 'prefer-rest-params': 'off',
1388
+ 'method-signature-style': 'off',
1389
+ 'no-redeclare': 'off',
1390
+ 'consistent-type-imports': [
1391
+ 'error',
1392
+ {
1393
+ fixStyle: 'separate-type-imports',
1394
+ prefer: 'type-imports',
1395
+ },
1396
+ ],
1397
+ 'explicit-function-return-type': 'off',
1398
+ 'no-namespace': 'off',
1399
+ 'no-explicit-any': 'off',
1400
+ 'no-var-requires': 'off',
1401
+ 'unused-imports/no-unused-vars': [
1402
+ 'error',
1403
+ {
1404
+ args: 'all',
1405
+ argsIgnorePattern: '^_',
1406
+ caughtErrors: 'all',
1407
+ caughtErrorsIgnorePattern: '^_',
1408
+ destructuredArrayIgnorePattern: '^_',
1409
+ varsIgnorePattern: '^_',
1410
+ ignoreRestSiblings: true,
1411
+ },
1412
+ ],
1413
+ 'no-unused-vars': [
1414
+ 'error',
1415
+ {
1416
+ args: 'all',
1417
+ argsIgnorePattern: '^_',
1418
+ caughtErrors: 'all',
1419
+ caughtErrorsIgnorePattern: '^_',
1420
+ destructuredArrayIgnorePattern: '^_',
1421
+ varsIgnorePattern: '^_',
1422
+ ignoreRestSiblings: true,
1423
+ },
1424
+ ],
1425
+ 'no-this-alias': 'off',
1426
+ 'no-unsafe-declaration-merging': 'off',
1427
+ 'ban-ts-comment': [
1428
+ 'error',
1429
+ {
1430
+ 'ts-expect-error': 'allow-with-description',
1431
+ 'ts-ignore': 'allow-with-description',
1432
+ },
1433
+ ],
1434
+ 'no-empty-object-type': 'off',
1435
+ 'no-unsafe-function-type': 'off',
1436
+ 'no-use-before-define': [
1437
+ 'error',
1438
+ {
1439
+ functions: false,
1440
+ },
1441
+ ],
1442
+ 'max-len': [
1443
+ 'error',
1444
+ {
1445
+ code: 150,
1446
+ tabWidth: 2,
1447
+ ignoreComments: true,
1448
+ ignoreTrailingComments: true,
1449
+ ignoreUrls: true,
1450
+ ignoreStrings: true,
1451
+ ignoreTemplateLiterals: true,
1452
+ ignoreRegExpLiterals: true,
1453
+ },
1454
+ ],
1455
+ },
1456
+ jsPlugins: [
1457
+ '@e18e/eslint-plugin',
1458
+ 'eslint-plugin-regexp',
1459
+ 'eslint-plugin-antfu',
1460
+ 'eslint-plugin-eslint-comments',
1461
+ 'eslint-plugin-unused-imports',
1462
+ ],
1463
+ globals: {
1464
+ NodeJS: 'writable',
1465
+ },
1466
+ plugins: ['vitest'],
1467
+ env: {
1468
+ jest: true,
1469
+ },
1470
+ },
1471
+ ],
1472
+ };
1473
+
1474
+ export function oxcLintConfig(configCustom) {
1475
+ return Object.assign({}, _configDefault, configCustom);
1476
+ }