@todesktop/dev-config 1.0.1 → 1.0.28

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.
@@ -0,0 +1,721 @@
1
+ // Mostly Airbnb base rules — ES6 correctness + basic style.
2
+ // Lenient defaults; stricter packages override individual rules or spread `strict` on top.
3
+ export default {
4
+ env: { builtin: true, es2026: true },
5
+ rules: {
6
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/arrow-body-style.html
7
+ 'arrow-body-style': 'off',
8
+
9
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/camelcase.html
10
+ 'camelcase': [
11
+ 'error',
12
+ {
13
+ ignoreDestructuring: false,
14
+ properties: 'never',
15
+ },
16
+ ],
17
+
18
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/constructor-super.html
19
+ 'constructor-super': 'error',
20
+
21
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/for-direction.html
22
+ 'for-direction': 'error',
23
+
24
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/func-names.html
25
+ 'func-names': 'warn',
26
+
27
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/getter-return.html
28
+ 'getter-return': [
29
+ 'error',
30
+ {
31
+ allowImplicit: true,
32
+ },
33
+ ],
34
+
35
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/new-cap.html
36
+ 'new-cap': [
37
+ 'error',
38
+ {
39
+ capIsNew: false,
40
+ capIsNewExceptions: [
41
+ 'Immutable.Map',
42
+ 'Immutable.Set',
43
+ 'Immutable.List',
44
+ ],
45
+ newIsCap: true,
46
+ newIsCapExceptions: [],
47
+ },
48
+ ],
49
+
50
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-array-constructor.html
51
+ 'no-array-constructor': 'error',
52
+
53
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-async-promise-executor.html
54
+ 'no-async-promise-executor': 'error',
55
+
56
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-await-in-loop.html
57
+ 'no-await-in-loop': 'warn',
58
+
59
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-bitwise.html
60
+ 'no-bitwise': 'error',
61
+
62
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-class-assign.html
63
+ 'no-class-assign': 'error',
64
+
65
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-compare-neg-zero.html
66
+ 'no-compare-neg-zero': 'error',
67
+
68
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-cond-assign.html
69
+ 'no-cond-assign': ['error', 'always'],
70
+
71
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-console.html
72
+ 'no-console': [
73
+ 'warn',
74
+ {
75
+ allow: [
76
+ 'assert',
77
+ 'context',
78
+ 'createTask',
79
+ 'debug',
80
+ 'dir',
81
+ 'dirxml',
82
+ 'error',
83
+ 'group',
84
+ 'groupCollapsed',
85
+ 'groupEnd',
86
+ 'info',
87
+ 'table',
88
+ 'warn',
89
+ ],
90
+ },
91
+ ],
92
+
93
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-const-assign.html
94
+ 'no-const-assign': 'error',
95
+
96
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-constant-condition.html
97
+ 'no-constant-condition': 'warn',
98
+
99
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-control-regex.html
100
+ 'no-control-regex': 'error',
101
+
102
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-debugger.html
103
+ 'no-debugger': 'error',
104
+
105
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-delete-var.html
106
+ 'no-delete-var': 'error',
107
+
108
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-dupe-args.html
109
+ 'no-dupe-args': 'error',
110
+
111
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-dupe-class-members.html
112
+ 'no-dupe-class-members': 'error',
113
+
114
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-dupe-else-if.html
115
+ 'no-dupe-else-if': 'error',
116
+
117
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-dupe-keys.html
118
+ 'no-dupe-keys': 'error',
119
+
120
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-duplicate-case.html
121
+ 'no-duplicate-case': 'error',
122
+
123
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-empty.html
124
+ 'no-empty': 'error',
125
+
126
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-empty.html-character-class
127
+ 'no-empty-character-class': 'error',
128
+
129
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-ex-assign.html
130
+ 'no-ex-assign': 'error',
131
+
132
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-extra-boolean-cast.html
133
+ 'no-extra-boolean-cast': 'error',
134
+
135
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-func-assign.html
136
+ 'no-func-assign': 'error',
137
+
138
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-import-assign.html
139
+ 'no-import-assign': 'error',
140
+
141
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-inner-declarations.html
142
+ 'no-inner-declarations': 'error',
143
+
144
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-invalid-regexp.html
145
+ 'no-invalid-regexp': 'error',
146
+
147
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-irregular-whitespace.html
148
+ 'no-irregular-whitespace': 'error',
149
+
150
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-label-var.html
151
+ 'no-label-var': 'error',
152
+
153
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-lonely-if.html
154
+ 'no-lonely-if': 'error',
155
+
156
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-loss-of-precision.html
157
+ 'no-loss-of-precision': 'error',
158
+
159
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-misleading-character-class.html
160
+ 'no-misleading-character-class': 'error',
161
+
162
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-multi-assign.html
163
+ 'no-multi-assign': 'error',
164
+
165
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-nested-ternary.html
166
+ 'no-nested-ternary': 'warn',
167
+
168
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-new-native-nonconstructor.html
169
+ 'no-new-native-nonconstructor': 'error',
170
+
171
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-obj-calls.html
172
+ 'no-obj-calls': 'error',
173
+
174
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-plusplus.html
175
+ 'no-plusplus': [
176
+ 'error',
177
+ {
178
+ allowForLoopAfterthoughts: true,
179
+ },
180
+ ],
181
+
182
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-prototype-builtins.html
183
+ 'no-prototype-builtins': 'error',
184
+
185
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-regex-spaces.html
186
+ 'no-regex-spaces': 'error',
187
+
188
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-restricted-exports.html
189
+ 'no-restricted-exports': [
190
+ 'error',
191
+ {
192
+ restrictedNamedExports: ['default', 'then'],
193
+ },
194
+ ],
195
+
196
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-restricted-globals.html
197
+ 'no-restricted-globals': [
198
+ 'error',
199
+ {
200
+ message:
201
+ 'Use Number.isFinite instead https://github.com/airbnb/javascript#standard-library--isfinite',
202
+ name: 'isFinite',
203
+ },
204
+ {
205
+ message:
206
+ 'Use Number.isNaN instead https://github.com/airbnb/javascript#standard-library--isnan',
207
+ name: 'isNaN',
208
+ },
209
+ {
210
+ message:
211
+ 'Use window.addEventListener instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
212
+ name: 'addEventListener',
213
+ },
214
+ {
215
+ message:
216
+ 'Use window.blur instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
217
+ name: 'blur',
218
+ },
219
+ {
220
+ message:
221
+ 'Use window.close instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
222
+ name: 'close',
223
+ },
224
+ {
225
+ message:
226
+ 'Use window.closed instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
227
+ name: 'closed',
228
+ },
229
+ {
230
+ message:
231
+ 'Use window.confirm instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
232
+ name: 'confirm',
233
+ },
234
+ {
235
+ message:
236
+ 'Use window.defaultStatus instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
237
+ name: 'defaultStatus',
238
+ },
239
+ {
240
+ message:
241
+ 'Use window.defaultstatus instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
242
+ name: 'defaultstatus',
243
+ },
244
+ {
245
+ message:
246
+ 'Use window.event instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
247
+ name: 'event',
248
+ },
249
+ {
250
+ message:
251
+ 'Use window.external instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
252
+ name: 'external',
253
+ },
254
+ {
255
+ message:
256
+ 'Use window.find instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
257
+ name: 'find',
258
+ },
259
+ {
260
+ message:
261
+ 'Use window.focus instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
262
+ name: 'focus',
263
+ },
264
+ {
265
+ message:
266
+ 'Use window.frameElement instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
267
+ name: 'frameElement',
268
+ },
269
+ {
270
+ message:
271
+ 'Use window.frames instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
272
+ name: 'frames',
273
+ },
274
+ {
275
+ message:
276
+ 'Use window.history instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
277
+ name: 'history',
278
+ },
279
+ {
280
+ message:
281
+ 'Use window.innerHeight instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
282
+ name: 'innerHeight',
283
+ },
284
+ {
285
+ message:
286
+ 'Use window.innerWidth instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
287
+ name: 'innerWidth',
288
+ },
289
+ {
290
+ message:
291
+ 'Use window.length instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
292
+ name: 'length',
293
+ },
294
+ {
295
+ message:
296
+ 'Use window.location instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
297
+ name: 'location',
298
+ },
299
+ {
300
+ message:
301
+ 'Use window.locationbar instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
302
+ name: 'locationbar',
303
+ },
304
+ {
305
+ message:
306
+ 'Use window.menubar instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
307
+ name: 'menubar',
308
+ },
309
+ {
310
+ message:
311
+ 'Use window.moveBy instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
312
+ name: 'moveBy',
313
+ },
314
+ {
315
+ message:
316
+ 'Use window.moveTo instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
317
+ name: 'moveTo',
318
+ },
319
+ {
320
+ message:
321
+ 'Use window.name instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
322
+ name: 'name',
323
+ },
324
+ {
325
+ message:
326
+ 'Use window.onblur instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
327
+ name: 'onblur',
328
+ },
329
+ {
330
+ message:
331
+ 'Use window.onerror instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
332
+ name: 'onerror',
333
+ },
334
+ {
335
+ message:
336
+ 'Use window.onfocus instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
337
+ name: 'onfocus',
338
+ },
339
+ {
340
+ message:
341
+ 'Use window.onload instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
342
+ name: 'onload',
343
+ },
344
+ {
345
+ message:
346
+ 'Use window.onresize instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
347
+ name: 'onresize',
348
+ },
349
+ {
350
+ message:
351
+ 'Use window.onunload instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
352
+ name: 'onunload',
353
+ },
354
+ {
355
+ message:
356
+ 'Use window.open instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
357
+ name: 'open',
358
+ },
359
+ {
360
+ message:
361
+ 'Use window.opener instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
362
+ name: 'opener',
363
+ },
364
+ {
365
+ message:
366
+ 'Use window.opera instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
367
+ name: 'opera',
368
+ },
369
+ {
370
+ message:
371
+ 'Use window.outerHeight instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
372
+ name: 'outerHeight',
373
+ },
374
+ {
375
+ message:
376
+ 'Use window.outerWidth instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
377
+ name: 'outerWidth',
378
+ },
379
+ {
380
+ message:
381
+ 'Use window.pageXOffset instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
382
+ name: 'pageXOffset',
383
+ },
384
+ {
385
+ message:
386
+ 'Use window.pageYOffset instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
387
+ name: 'pageYOffset',
388
+ },
389
+ {
390
+ message:
391
+ 'Use window.parent instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
392
+ name: 'parent',
393
+ },
394
+ {
395
+ message:
396
+ 'Use window.print instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
397
+ name: 'print',
398
+ },
399
+ {
400
+ message:
401
+ 'Use window.removeEventListener instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
402
+ name: 'removeEventListener',
403
+ },
404
+ {
405
+ message:
406
+ 'Use window.resizeBy instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
407
+ name: 'resizeBy',
408
+ },
409
+ {
410
+ message:
411
+ 'Use window.resizeTo instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
412
+ name: 'resizeTo',
413
+ },
414
+ {
415
+ message:
416
+ 'Use window.screen instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
417
+ name: 'screen',
418
+ },
419
+ {
420
+ message:
421
+ 'Use window.screenLeft instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
422
+ name: 'screenLeft',
423
+ },
424
+ {
425
+ message:
426
+ 'Use window.screenTop instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
427
+ name: 'screenTop',
428
+ },
429
+ {
430
+ message:
431
+ 'Use window.screenX instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
432
+ name: 'screenX',
433
+ },
434
+ {
435
+ message:
436
+ 'Use window.screenY instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
437
+ name: 'screenY',
438
+ },
439
+ {
440
+ message:
441
+ 'Use window.scroll instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
442
+ name: 'scroll',
443
+ },
444
+ {
445
+ message:
446
+ 'Use window.scrollbars instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
447
+ name: 'scrollbars',
448
+ },
449
+ {
450
+ message:
451
+ 'Use window.scrollBy instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
452
+ name: 'scrollBy',
453
+ },
454
+ {
455
+ message:
456
+ 'Use window.scrollTo instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
457
+ name: 'scrollTo',
458
+ },
459
+ {
460
+ message:
461
+ 'Use window.scrollX instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
462
+ name: 'scrollX',
463
+ },
464
+ {
465
+ message:
466
+ 'Use window.scrollY instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
467
+ name: 'scrollY',
468
+ },
469
+ {
470
+ message:
471
+ 'Use window.self instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
472
+ name: 'self',
473
+ },
474
+ {
475
+ message:
476
+ 'Use window.status instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
477
+ name: 'status',
478
+ },
479
+ {
480
+ message:
481
+ 'Use window.statusbar instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
482
+ name: 'statusbar',
483
+ },
484
+ {
485
+ message:
486
+ 'Use window.stop instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
487
+ name: 'stop',
488
+ },
489
+ {
490
+ message:
491
+ 'Use window.toolbar instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
492
+ name: 'toolbar',
493
+ },
494
+ {
495
+ message:
496
+ 'Use window.top instead. https://github.com/facebook/create-react-app/blob/HEAD/packages/confusing-browser-globals/README.md',
497
+ name: 'top',
498
+ },
499
+ ],
500
+
501
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-restricted-syntax.html
502
+ // Allow for..of; ban for..in, labels, with
503
+ 'no-restricted-syntax': [
504
+ 'error',
505
+ {
506
+ message:
507
+ '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.',
508
+ selector: 'ForInStatement',
509
+ },
510
+ {
511
+ message:
512
+ 'Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand.',
513
+ selector: 'LabeledStatement',
514
+ },
515
+ {
516
+ message:
517
+ '`with` is disallowed in strict mode because it makes code impossible to predict and optimize.',
518
+ selector: 'WithStatement',
519
+ },
520
+ ],
521
+
522
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-setter-return.html
523
+ 'no-setter-return': 'error',
524
+
525
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-shadow.html
526
+ 'no-shadow': 'warn',
527
+
528
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-shadow.html-restricted-names
529
+ 'no-shadow-restricted-names': 'error',
530
+
531
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-sparse-arrays.html
532
+ 'no-sparse-arrays': 'error',
533
+
534
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-template-curly-in-string.html
535
+ 'no-template-curly-in-string': 'error',
536
+
537
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-this-before-super.html
538
+ 'no-this-before-super': 'error',
539
+
540
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-undef.html
541
+ 'no-undef': 'error',
542
+
543
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-undef-init.html
544
+ 'no-undef-init': 'error',
545
+
546
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-underscore-dangle.html
547
+ 'no-underscore-dangle': [
548
+ 'error',
549
+ {
550
+ allow: ['__mock', '__root'],
551
+ allowAfterSuper: false,
552
+ allowAfterThis: false,
553
+ allowAfterThisConstructor: false,
554
+ allowFunctionParams: true,
555
+ allowInArrayDestructuring: true,
556
+ allowInObjectDestructuring: true,
557
+ enforceInClassFields: false,
558
+ enforceInMethodNames: true,
559
+ },
560
+ ],
561
+
562
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-unexpected-multiline.html
563
+ 'no-unexpected-multiline': 'error',
564
+
565
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-unreachable.html
566
+ 'no-unreachable': 'error',
567
+
568
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-unreachable-loop.html
569
+ 'no-unreachable-loop': [
570
+ 'error',
571
+ {
572
+ ignore: [],
573
+ },
574
+ ],
575
+
576
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-unneeded-ternary.html
577
+ 'no-unneeded-ternary': [
578
+ 'error',
579
+ {
580
+ defaultAssignment: false,
581
+ },
582
+ ],
583
+
584
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-unsafe-finally.html
585
+ 'no-unsafe-finally': 'error',
586
+
587
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-unsafe-negation.html
588
+ 'no-unsafe-negation': 'error',
589
+
590
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-unsafe-optional-chaining.html
591
+ 'no-unsafe-optional-chaining': [
592
+ 'error',
593
+ {
594
+ disallowArithmeticOperators: true,
595
+ },
596
+ ],
597
+
598
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-unused-expressions.html
599
+ 'no-unused-expressions': 'off',
600
+
601
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-unused-vars.html
602
+ 'no-unused-vars': [
603
+ 'warn',
604
+ {
605
+ args: 'after-used',
606
+ argsIgnorePattern: '^_',
607
+ ignoreRestSiblings: true,
608
+ vars: 'all',
609
+ },
610
+ ],
611
+
612
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-useless-backreference.html
613
+ 'no-useless-backreference': 'error',
614
+
615
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-useless-computed-key.html
616
+ 'no-useless-computed-key': 'error',
617
+
618
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-useless-constructor.html
619
+ 'no-useless-constructor': 'error',
620
+
621
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-useless-rename.html
622
+ 'no-useless-rename': [
623
+ 'error',
624
+ {
625
+ ignoreDestructuring: false,
626
+ ignoreExport: false,
627
+ ignoreImport: false,
628
+ },
629
+ ],
630
+
631
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/no-var.html
632
+ 'no-var': 'error',
633
+
634
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/object-shorthand.html
635
+ 'object-shorthand': [
636
+ 'error',
637
+ 'always',
638
+ {
639
+ avoidQuotes: true,
640
+ ignoreConstructors: false,
641
+ },
642
+ ],
643
+
644
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/one-var.html
645
+ 'one-var': ['error', 'never'],
646
+
647
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/operator-assignment.html
648
+ 'operator-assignment': ['error', 'always'],
649
+
650
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/prefer-arrow-callback.html
651
+ 'prefer-arrow-callback': [
652
+ 'error',
653
+ {
654
+ allowNamedFunctions: false,
655
+ allowUnboundThis: true,
656
+ },
657
+ ],
658
+
659
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/prefer-const.html
660
+ 'prefer-const': [
661
+ 'error',
662
+ {
663
+ destructuring: 'any',
664
+ ignoreReadBeforeAssign: true,
665
+ },
666
+ ],
667
+
668
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/prefer-destructuring.html
669
+ 'prefer-destructuring': [
670
+ 'error',
671
+ {
672
+ AssignmentExpression: {
673
+ array: true,
674
+ object: false,
675
+ },
676
+ VariableDeclarator: {
677
+ array: false,
678
+ object: true,
679
+ },
680
+ },
681
+ {
682
+ enforceForRenamedProperties: false,
683
+ },
684
+ ],
685
+
686
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/prefer-exponentiation-operator.html
687
+ 'prefer-exponentiation-operator': 'error',
688
+
689
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/prefer-numeric-literals.html
690
+ 'prefer-numeric-literals': 'error',
691
+
692
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/prefer-object-spread.html
693
+ 'prefer-object-spread': 'error',
694
+
695
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/prefer-rest-params.html
696
+ 'prefer-rest-params': 'error',
697
+
698
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/prefer-spread.html
699
+ 'prefer-spread': 'error',
700
+
701
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/require-yield.html
702
+ 'require-yield': 'error',
703
+
704
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/symbol-description.html
705
+ 'symbol-description': 'error',
706
+
707
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/unicode-bom.html
708
+ 'unicode-bom': ['error', 'never'],
709
+
710
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/use-isnan.html
711
+ 'use-isnan': 'error',
712
+
713
+ // https://oxc.rs/docs/guide/usage/linter/rules/eslint/valid-typeof.html
714
+ 'valid-typeof': [
715
+ 'error',
716
+ {
717
+ requireStringLiterals: true,
718
+ },
719
+ ],
720
+ },
721
+ };