@ver0/oxlint-config 1.0.0 → 2.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.
@@ -1,494 +1,187 @@
1
- import {GLOBS} from '../utils/globs.js';
2
-
3
1
  /** @type {import('oxlint').OxlintConfig} */
4
2
  const typescript = {
5
- plugins: [],
3
+ plugins: ['typescript'],
6
4
  categories: {
7
- correctness: 'off',
5
+ correctness: 'error',
6
+ suspicious: 'error',
7
+ pedantic: 'error',
8
+ perf: 'error',
8
9
  },
9
10
  options: {
10
11
  typeAware: true,
11
12
  },
12
- env: {
13
- builtin: true,
14
- },
15
- overrides: [
16
- {
17
- files: [GLOBS.TS],
18
- rules: {
19
- 'constructor-super': 'error',
20
- 'for-direction': 'error',
21
- 'getter-return': 'error',
22
- 'no-async-promise-executor': 'error',
23
- 'no-case-declarations': 'error',
24
- 'no-class-assign': 'error',
25
- 'no-compare-neg-zero': 'error',
26
- 'no-cond-assign': 'error',
27
- 'no-const-assign': 'error',
28
- 'no-constant-binary-expression': 'error',
29
- 'no-constant-condition': 'error',
30
- 'no-control-regex': 'error',
31
- 'no-debugger': 'error',
32
- 'no-delete-var': 'error',
33
- 'no-dupe-class-members': 'error',
34
- 'no-dupe-else-if': 'error',
35
- 'no-dupe-keys': 'error',
36
- 'no-duplicate-case': 'error',
37
- 'no-empty': 'error',
38
- 'no-empty-character-class': 'error',
39
- 'no-empty-pattern': 'error',
40
- 'no-empty-static-block': 'error',
41
- 'no-ex-assign': 'error',
42
- 'no-extra-boolean-cast': 'error',
43
- 'no-fallthrough': 'error',
44
- 'no-func-assign': 'error',
45
- 'no-global-assign': 'error',
46
- 'no-import-assign': 'error',
47
- 'no-invalid-regexp': 'error',
48
- 'no-irregular-whitespace': 'error',
49
- 'no-loss-of-precision': 'error',
50
- 'no-misleading-character-class': 'error',
51
- 'no-new-native-nonconstructor': 'error',
52
- 'no-nonoctal-decimal-escape': 'error',
53
- 'no-obj-calls': 'error',
54
- 'no-prototype-builtins': 'error',
55
- 'no-redeclare': 'error',
56
- 'no-regex-spaces': 'error',
57
- 'no-self-assign': 'error',
58
- 'no-setter-return': 'error',
59
- 'no-shadow-restricted-names': 'error',
60
- 'no-sparse-arrays': 'error',
61
- 'no-this-before-super': 'error',
62
- 'no-unassigned-vars': 'error',
63
- 'no-unexpected-multiline': 'error',
64
- 'no-unreachable': 'error',
65
- 'no-unsafe-finally': 'error',
66
- 'no-unsafe-negation': 'error',
67
- 'no-unsafe-optional-chaining': 'error',
68
- 'no-unused-labels': 'error',
69
- 'no-unused-private-class-members': 'off',
70
- 'no-unused-vars': 'off',
71
- 'no-useless-backreference': 'error',
72
- 'no-useless-catch': 'error',
73
- 'no-useless-escape': 'error',
74
- 'no-with': 'error',
75
- 'preserve-caught-error': 'error',
76
- 'require-yield': 'error',
77
- 'use-isnan': 'error',
78
- 'valid-typeof': 'error',
79
- 'import/namespace': 'off',
80
- 'import/default': 'error',
81
- 'import/no-named-as-default': 'error',
82
- 'import/no-named-as-default-member': 'error',
83
- 'import/no-duplicates': [
84
- 'error',
85
- {
86
- 'prefer-inline': false,
87
- },
88
- ],
89
- 'promise/always-return': 'error',
90
- 'promise/no-return-wrap': [
91
- 'error',
92
- {
93
- allowReject: true,
94
- },
95
- ],
96
- 'promise/param-names': 'error',
97
- 'promise/catch-or-return': 'error',
98
- 'promise/no-nesting': 'warn',
99
- 'promise/no-promise-in-callback': 'warn',
100
- 'promise/no-callback-in-promise': 'warn',
101
- 'promise/avoid-new': 'off',
102
- 'promise/no-new-statics': 'error',
103
- 'promise/valid-params': 'error',
104
- 'no-negated-condition': 'off',
105
- 'no-nested-ternary': 'off',
106
- 'unicorn/catch-error-name': 'error',
107
- 'unicorn/consistent-assert': 'error',
108
- 'unicorn/consistent-date-clone': 'error',
109
- 'unicorn/consistent-empty-array-spread': 'error',
110
- 'unicorn/consistent-existence-index-check': 'error',
111
- 'unicorn/consistent-function-scoping': 'off',
112
- 'unicorn/consistent-template-literal-escape': 'error',
113
- 'unicorn/custom-error-definition': 'off',
114
- 'unicorn/empty-brace-spaces': 'error',
115
- 'unicorn/error-message': 'error',
116
- 'unicorn/escape-case': 'error',
117
- 'unicorn/explicit-length-check': 'error',
118
- 'unicorn/filename-case': 'error',
119
- 'unicorn/import-style': 'error',
120
- 'unicorn/new-for-builtins': 'error',
121
- 'unicorn/no-abusive-eslint-disable': 'error',
122
- 'unicorn/no-accessor-recursion': 'error',
123
- 'unicorn/no-anonymous-default-export': 'error',
124
- 'unicorn/no-array-callback-reference': 'error',
125
- 'unicorn/no-array-fill-with-reference-type': 'error',
126
- 'unicorn/no-array-for-each': 'error',
127
- 'unicorn/no-array-method-this-argument': 'error',
128
- 'unicorn/no-array-reduce': 'error',
129
- 'unicorn/no-array-reverse': 'error',
130
- 'unicorn/no-array-sort': 'error',
131
- 'unicorn/no-await-expression-member': 'error',
132
- 'unicorn/no-await-in-promise-methods': 'error',
133
- 'unicorn/no-console-spaces': 'error',
134
- 'unicorn/no-document-cookie': 'error',
135
- 'unicorn/no-empty-file': 'error',
136
- 'unicorn/no-hex-escape': 'error',
137
- 'unicorn/no-immediate-mutation': 'error',
138
- 'unicorn/no-instanceof-builtins': 'error',
139
- 'unicorn/no-invalid-fetch-options': 'error',
140
- 'unicorn/no-invalid-remove-event-listener': 'error',
141
- 'unicorn/no-lonely-if': 'error',
142
- 'unicorn/no-magic-array-flat-depth': 'error',
143
- 'unicorn/no-negated-condition': 'error',
144
- 'unicorn/no-negation-in-equality-check': 'error',
145
- 'unicorn/no-nested-ternary': 'error',
146
- 'unicorn/no-new-array': 'error',
147
- 'unicorn/no-new-buffer': 'error',
148
- 'unicorn/no-null': 'off',
149
- 'unicorn/no-object-as-default-parameter': 'error',
150
- 'unicorn/no-process-exit': 'error',
151
- 'unicorn/no-single-promise-in-promise-methods': 'error',
152
- 'unicorn/no-static-only-class': 'error',
153
- 'unicorn/no-thenable': 'error',
154
- 'unicorn/no-this-assignment': 'error',
155
- 'unicorn/no-typeof-undefined': 'error',
156
- 'unicorn/no-unnecessary-array-flat-depth': 'error',
157
- 'unicorn/no-unnecessary-array-splice-count': 'error',
158
- 'unicorn/no-unnecessary-await': 'error',
159
- 'unicorn/no-unnecessary-slice-end': 'error',
160
- 'unicorn/no-unreadable-array-destructuring': 'error',
161
- 'unicorn/no-unreadable-iife': 'error',
162
- 'unicorn/no-useless-collection-argument': 'error',
163
- 'unicorn/no-useless-error-capture-stack-trace': 'error',
164
- 'unicorn/no-useless-fallback-in-spread': 'error',
165
- 'unicorn/no-useless-length-check': 'error',
166
- 'unicorn/no-useless-promise-resolve-reject': 'error',
167
- 'unicorn/no-useless-spread': 'error',
168
- 'unicorn/no-useless-switch-case': 'error',
169
- 'unicorn/no-useless-undefined': 'off',
170
- 'unicorn/no-zero-fractions': 'error',
171
- 'unicorn/number-literal-case': 'error',
172
- 'unicorn/numeric-separators-style': 'error',
173
- 'unicorn/prefer-add-event-listener': 'error',
174
- 'unicorn/prefer-array-find': 'error',
175
- 'unicorn/prefer-array-flat': 'error',
176
- 'unicorn/prefer-array-flat-map': 'error',
177
- 'unicorn/prefer-array-index-of': 'error',
178
- 'unicorn/prefer-array-some': 'error',
179
- 'unicorn/prefer-at': 'error',
180
- 'unicorn/prefer-bigint-literals': 'error',
181
- 'unicorn/prefer-blob-reading-methods': 'error',
182
- 'unicorn/prefer-class-fields': 'error',
183
- 'unicorn/prefer-classlist-toggle': 'error',
184
- 'unicorn/prefer-code-point': 'error',
185
- 'unicorn/prefer-date-now': 'error',
186
- 'unicorn/prefer-default-parameters': 'error',
187
- 'unicorn/prefer-dom-node-append': 'error',
188
- 'unicorn/prefer-dom-node-remove': 'error',
189
- 'unicorn/prefer-dom-node-text-content': 'error',
190
- 'unicorn/prefer-event-target': 'error',
191
- 'unicorn/prefer-export-from': 'error',
192
- 'unicorn/prefer-global-this': 'error',
193
- 'unicorn/prefer-import-meta-properties': 'off',
194
- 'unicorn/prefer-includes': 'error',
195
- 'unicorn/prefer-keyboard-event-key': 'error',
196
- 'unicorn/prefer-logical-operator-over-ternary': 'error',
197
- 'unicorn/prefer-math-min-max': 'error',
198
- 'unicorn/prefer-math-trunc': 'error',
199
- 'unicorn/prefer-modern-dom-apis': 'error',
200
- 'unicorn/prefer-modern-math-apis': 'error',
201
- 'unicorn/prefer-module': 'error',
202
- 'unicorn/prefer-native-coercion-functions': 'error',
203
- 'unicorn/prefer-negative-index': 'error',
204
- 'unicorn/prefer-node-protocol': 'error',
205
- 'unicorn/prefer-number-properties': 'error',
206
- 'unicorn/prefer-object-from-entries': 'error',
207
- 'unicorn/prefer-optional-catch-binding': 'error',
208
- 'unicorn/prefer-prototype-methods': 'error',
209
- 'unicorn/prefer-query-selector': 'error',
210
- 'unicorn/prefer-reflect-apply': 'error',
211
- 'unicorn/prefer-regexp-test': 'error',
212
- 'unicorn/prefer-response-static-json': 'error',
213
- 'unicorn/prefer-set-has': 'error',
214
- 'unicorn/prefer-set-size': 'error',
215
- 'unicorn/prefer-single-call': 'error',
216
- 'unicorn/prefer-spread': 'error',
217
- 'unicorn/prefer-string-raw': 'off',
218
- 'unicorn/prefer-string-replace-all': 'error',
219
- 'unicorn/prefer-string-slice': 'error',
220
- 'unicorn/prefer-string-starts-ends-with': 'error',
221
- 'unicorn/prefer-string-trim-start-end': 'error',
222
- 'unicorn/prefer-structured-clone': 'error',
223
- 'unicorn/prefer-ternary': 'off',
224
- 'unicorn/prefer-top-level-await': 'error',
225
- 'unicorn/prefer-type-error': 'error',
226
- 'unicorn/relative-url-style': 'error',
227
- 'unicorn/require-array-join-separator': 'error',
228
- 'unicorn/require-module-attributes': 'error',
229
- 'unicorn/require-module-specifiers': 'error',
230
- 'unicorn/require-number-to-fixed-digits-argument': 'error',
231
- 'unicorn/require-post-message-target-origin': 'off',
232
- 'unicorn/switch-case-braces': 'error',
233
- 'unicorn/switch-case-break-position': 'error',
234
- 'unicorn/text-encoding-identifier-case': 'error',
235
- 'unicorn/throw-new-error': 'error',
236
- 'default-param-last': 'error',
237
- 'no-array-constructor': 'error',
238
- 'no-empty-function': 'error',
239
- 'no-loop-func': 'error',
240
- 'no-void': [
241
- 'error',
242
- {
243
- allowAsStatement: true,
244
- },
245
- ],
246
- 'no-restricted-imports': [
247
- 'error',
248
- {
249
- paths: ['error', 'domain', 'freelist', 'smalloc', 'punycode', 'sys', 'querystring', 'colors'],
250
- },
251
- ],
252
- 'no-throw-literal': 'off',
253
- 'no-unused-expressions': 'error',
254
- 'no-useless-constructor': 'error',
255
- 'prefer-promise-reject-errors': 'off',
256
- 'default-case': 'off',
257
- 'no-duplicate-imports': 'off',
258
- 'typescript/adjacent-overload-signatures': 'error',
259
- 'typescript/array-type': [
260
- 'error',
261
- {
262
- default: 'array-simple',
263
- },
264
- ],
265
- 'typescript/await-thenable': 'error',
266
- 'typescript/ban-ts-comment': [
267
- 'error',
268
- {
269
- 'ts-expect-error': 'allow-with-description',
270
- minimumDescriptionLength: 4,
271
- },
272
- ],
273
- 'typescript/ban-tslint-comment': 'error',
274
- 'typescript/no-restricted-types': [
275
- 'error',
276
- {
277
- types: {
278
- object: {
279
- message:
280
- 'The `object` type is hard to use. Use `Record<string, unknown>` instead. See: https://github.com/typescript-eslint/typescript-eslint/pull/848',
281
- fixWith: 'Record<string, unknown>',
282
- },
283
- Buffer: {
284
- message: 'Use Uint8Array instead. See: https://sindresorhus.com/blog/goodbye-nodejs-buffer',
285
- suggest: ['Uint8Array'],
286
- },
287
- '[]': "Don't use the empty array type `[]`. It only allows empty arrays. Use `SomeType[]` instead.",
288
- '[[]]':
289
- "Don't use `[[]]`. It only allows an array with a single element which is an empty array. Use `SomeType[][]` instead.",
290
- '[[[]]]': "Don't use `[[[]]]`. Use `SomeType[][][]` instead.",
291
- '[[[[]]]]': 'ur drunk 🤡',
292
- '[[[[[]]]]]': '🦄💥',
293
- },
294
- },
295
- ],
296
- 'typescript/class-literal-property-style': ['error', 'getters'],
297
- 'typescript/consistent-generic-constructors': ['error', 'constructor'],
298
- 'typescript/consistent-indexed-object-style': 'error',
299
- 'typescript/dot-notation': 'error',
300
- 'typescript/consistent-type-assertions': [
301
- 'error',
302
- {
303
- assertionStyle: 'as',
304
- objectLiteralTypeAssertions: 'allow-as-parameter',
305
- },
306
- ],
307
- 'typescript/consistent-type-definitions': ['error', 'type'],
308
- 'typescript/consistent-type-exports': [
309
- 'error',
310
- {
311
- fixMixedExportsWithInlineTypeSpecifier: true,
312
- },
313
- ],
314
- 'typescript/consistent-type-imports': [
315
- 'error',
316
- {
317
- fixStyle: 'inline-type-imports',
318
- },
319
- ],
320
- 'typescript/no-base-to-string': 'error',
321
- 'typescript/no-array-delete': 'error',
322
- 'typescript/no-confusing-void-expression': 'error',
323
- 'typescript/no-deprecated': 'error',
324
- 'typescript/no-duplicate-enum-values': 'error',
325
- 'typescript/no-duplicate-type-constituents': 'error',
326
- 'typescript/no-dynamic-delete': 'error',
327
- 'typescript/no-empty-interface': [
328
- 'error',
329
- {
330
- allowSingleExtends: true,
331
- },
332
- ],
333
- 'typescript/no-empty-object-type': 'error',
334
- 'typescript/no-extra-non-null-assertion': 'error',
335
- 'typescript/no-extraneous-class': [
336
- 'error',
337
- {
338
- allowConstructorOnly: false,
339
- allowEmpty: false,
340
- allowStaticOnly: false,
341
- allowWithDecorator: true,
342
- },
343
- ],
344
- 'typescript/no-floating-promises': [
345
- 'error',
346
- {
347
- checkThenables: true,
348
- ignoreVoid: true,
349
- ignoreIIFE: true,
350
- },
351
- ],
352
- 'typescript/no-for-in-array': 'error',
353
- 'typescript/no-inferrable-types': 'error',
354
- 'typescript/no-meaningless-void-operator': 'error',
355
- 'typescript/no-misused-new': 'error',
356
- 'typescript/no-misused-promises': [
357
- 'error',
358
- {
359
- checksConditionals: true,
360
- checksVoidReturn: false,
361
- },
362
- ],
363
- 'typescript/no-namespace': 'error',
364
- 'typescript/no-non-null-asserted-nullish-coalescing': 'error',
365
- 'typescript/no-non-null-asserted-optional-chain': 'error',
366
- 'typescript/no-require-imports': 'error',
367
- 'typescript/no-this-alias': [
368
- 'error',
369
- {
370
- allowDestructuring: true,
371
- },
372
- ],
373
- 'typescript/only-throw-error': [
374
- 'error',
375
- {
376
- allowThrowingUnknown: true,
377
- allowThrowingAny: false,
378
- },
379
- ],
380
- 'typescript/no-unnecessary-boolean-literal-compare': 'error',
381
- 'typescript/no-unnecessary-qualifier': 'error',
382
- 'typescript/no-unnecessary-type-arguments': 'error',
383
- 'typescript/no-unnecessary-type-assertion': 'error',
384
- 'typescript/no-unnecessary-type-constraint': 'error',
385
- 'typescript/no-unsafe-argument': 'error',
386
- 'typescript/no-unsafe-assignment': 'error',
387
- 'typescript/no-unsafe-call': 'error',
388
- 'typescript/no-unsafe-declaration-merging': 'error',
389
- 'typescript/no-unsafe-enum-comparison': 'error',
390
- 'typescript/no-unsafe-function-type': 'error',
391
- 'typescript/no-unsafe-member-access': 'error',
392
- 'typescript/no-unsafe-return': 'error',
393
- 'typescript/no-unsafe-type-assertion': 'error',
394
- 'typescript/no-useless-empty-export': 'error',
395
- 'typescript/no-useless-default-assignment': 'error',
396
- 'typescript/no-wrapper-object-types': 'error',
397
- 'typescript/non-nullable-type-assertion-style': 'error',
398
- 'typescript/prefer-as-const': 'error',
399
- 'typescript/prefer-find': 'error',
400
- 'typescript/prefer-for-of': 'error',
401
- 'typescript/prefer-function-type': 'error',
402
- 'typescript/prefer-includes': 'error',
403
- 'typescript/prefer-literal-enum-member': 'error',
404
- 'typescript/prefer-namespace-keyword': 'error',
405
- 'typescript/prefer-nullish-coalescing': [
406
- 'error',
407
- {
408
- ignoreTernaryTests: false,
409
- ignoreConditionalTests: false,
410
- ignoreMixedLogicalExpressions: false,
411
- },
412
- ],
413
- 'typescript/prefer-promise-reject-errors': 'error',
414
- 'typescript/prefer-readonly': 'error',
415
- 'typescript/prefer-reduce-type-parameter': 'error',
416
- 'typescript/prefer-string-starts-ends-with': 'error',
417
- 'typescript/promise-function-async': 'error',
418
- 'typescript/related-getter-setter-pairs': 'error',
419
- 'typescript/restrict-plus-operands': [
420
- 'error',
421
- {
422
- allowAny: false,
423
- },
424
- ],
425
- 'typescript/restrict-template-expressions': [
426
- 'error',
427
- {
428
- allowNumber: true,
429
- },
430
- ],
431
- 'typescript/return-await': 'error',
432
- 'typescript/require-array-sort-compare': [
433
- 'error',
434
- {
435
- ignoreStringArrays: true,
436
- },
437
- ],
438
- 'typescript/strict-void-return': 'error',
439
- 'typescript/switch-exhaustiveness-check': [
440
- 'error',
441
- {
442
- allowDefaultCaseForExhaustiveSwitch: false,
443
- requireDefaultForNonUnion: true,
444
- },
445
- ],
446
- 'typescript/triple-slash-reference': [
447
- 'error',
448
- {
449
- path: 'never',
450
- types: 'never',
451
- lib: 'never',
452
- },
453
- ],
454
- 'typescript/prefer-regexp-exec': 'error',
455
- 'typescript/prefer-return-this-type': 'error',
456
- 'typescript/unified-signatures': [
457
- 'error',
458
- {
459
- ignoreDifferentlyNamedParameters: true,
460
- },
461
- ],
462
- 'typescript/use-unknown-in-catch-callback-variable': 'error',
463
- 'capitalized-comments': 'off',
464
- 'import/first': 'error',
465
- 'import/no-unassigned-import': 'off',
466
- 'import/extensions': [
467
- 'error',
468
- 'always',
469
- {
470
- ignorePackages: true,
471
- },
472
- ],
473
- 'import/no-absolute-path': 'error',
474
- 'import/no-anonymous-default-export': 'off',
475
- 'import/no-named-default': 'error',
476
- 'import/no-webpack-loader-syntax': 'error',
477
- 'import/no-self-import': 'error',
478
- 'import/no-cycle': 'off',
479
- 'import/newline-after-import': 'error',
480
- 'import/no-amd': 'error',
481
- 'import/no-empty-named-blocks': 'error',
482
- 'import/no-mutable-exports': 'error',
483
- 'promise/prefer-await-to-then': 'error',
484
- 'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
13
+ rules: {
14
+ 'typescript/adjacent-overload-signatures': 'error',
15
+ 'typescript/array-type': [
16
+ 'error',
17
+ {
18
+ default: 'array-simple',
19
+ },
20
+ ],
21
+ 'typescript/ban-ts-comment': [
22
+ 'error',
23
+ {
24
+ 'ts-expect-error': 'allow-with-description',
25
+ minimumDescriptionLength: 4,
26
+ },
27
+ ],
28
+ 'typescript/ban-tslint-comment': 'error',
29
+ 'typescript/class-literal-property-style': ['error', 'getters'],
30
+ 'typescript/consistent-generic-constructors': ['error', 'constructor'],
31
+ 'typescript/consistent-indexed-object-style': 'error',
32
+ 'typescript/consistent-type-assertions': [
33
+ 'error',
34
+ {
35
+ assertionStyle: 'as',
36
+ objectLiteralTypeAssertions: 'allow-as-parameter',
37
+ },
38
+ ],
39
+ 'typescript/consistent-type-definitions': ['error', 'type'],
40
+ 'typescript/consistent-type-exports': [
41
+ 'error',
42
+ {
43
+ fixMixedExportsWithInlineTypeSpecifier: true,
44
+ },
45
+ ],
46
+ 'typescript/consistent-type-imports': [
47
+ 'error',
48
+ {
49
+ fixStyle: 'inline-type-imports',
50
+ },
51
+ ],
52
+ 'typescript/dot-notation': 'error',
53
+ 'typescript/no-dynamic-delete': 'error',
54
+ 'typescript/no-empty-interface': [
55
+ 'error',
56
+ {
57
+ allowSingleExtends: true,
58
+ },
59
+ ],
60
+ 'typescript/no-empty-object-type': 'error',
61
+ 'typescript/no-extraneous-class': [
62
+ 'error',
63
+ {
64
+ allowConstructorOnly: false,
65
+ allowEmpty: false,
66
+ allowStaticOnly: false,
67
+ allowWithDecorator: true,
68
+ },
69
+ ],
70
+ 'typescript/no-floating-promises': [
71
+ 'error',
72
+ {
73
+ checkThenables: true,
74
+ ignoreVoid: true,
75
+ ignoreIIFE: true,
76
+ },
77
+ ],
78
+ 'typescript/no-inferrable-types': 'error',
79
+ 'typescript/no-misused-promises': [
80
+ 'error',
81
+ {
82
+ checksConditionals: true,
83
+ checksVoidReturn: false,
84
+ },
85
+ ],
86
+ 'typescript/no-namespace': 'error',
87
+ 'typescript/no-non-null-asserted-nullish-coalescing': 'error',
88
+ 'typescript/no-require-imports': 'error',
89
+ 'typescript/no-restricted-types': [
90
+ 'error',
91
+ {
92
+ types: {
93
+ object: {
94
+ message:
95
+ 'The `object` type is hard to use. Use `Record<string, unknown>` instead. See: https://github.com/typescript-eslint/typescript-eslint/pull/848',
96
+ fixWith: 'Record<string, unknown>',
97
+ },
98
+ Buffer: {
99
+ message: 'Use Uint8Array instead. See: https://sindresorhus.com/blog/goodbye-nodejs-buffer',
100
+ suggest: ['Uint8Array'],
101
+ },
102
+ '[]': "Don't use the empty array type `[]`. It only allows empty arrays. Use `SomeType[]` instead.",
103
+ '[[]]':
104
+ "Don't use `[[]]`. It only allows an array with a single element which is an empty array. Use `SomeType[][]` instead.",
105
+ '[[[]]]': "Don't use `[[[]]]`. Use `SomeType[][][]` instead.",
106
+ '[[[[]]]]': 'ur drunk 🤡',
107
+ '[[[[[]]]]]': '🦄💥',
108
+ },
485
109
  },
486
- plugins: ['import', 'promise', 'unicorn', 'typescript'],
487
- env: {
488
- es2026: true,
110
+ ],
111
+ 'typescript/no-this-alias': [
112
+ 'error',
113
+ {
114
+ allowDestructuring: true,
489
115
  },
490
- },
491
- ],
116
+ ],
117
+ 'typescript/no-unnecessary-qualifier': 'error',
118
+ 'typescript/non-nullable-type-assertion-style': 'error',
119
+ 'typescript/only-throw-error': [
120
+ 'error',
121
+ {
122
+ allowThrowingUnknown: true,
123
+ allowThrowingAny: false,
124
+ },
125
+ ],
126
+ 'typescript/prefer-find': 'error',
127
+ 'typescript/prefer-for-of': 'error',
128
+ 'typescript/prefer-function-type': 'error',
129
+ 'typescript/prefer-literal-enum-member': 'error',
130
+ 'typescript/prefer-nullish-coalescing': [
131
+ 'error',
132
+ {
133
+ ignoreTernaryTests: false,
134
+ ignoreConditionalTests: false,
135
+ ignoreMixedLogicalExpressions: false,
136
+ },
137
+ ],
138
+ 'typescript/prefer-readonly': 'error',
139
+ 'typescript/prefer-reduce-type-parameter': 'error',
140
+ 'typescript/prefer-regexp-exec': 'error',
141
+ 'typescript/prefer-return-this-type': 'error',
142
+ 'typescript/prefer-string-starts-ends-with': 'error',
143
+ 'typescript/promise-function-async': 'error',
144
+ 'typescript/require-array-sort-compare': [
145
+ 'error',
146
+ {
147
+ ignoreStringArrays: true,
148
+ },
149
+ ],
150
+ 'typescript/restrict-plus-operands': [
151
+ 'error',
152
+ {
153
+ allowAny: false,
154
+ },
155
+ ],
156
+ 'typescript/restrict-template-expressions': [
157
+ 'error',
158
+ {
159
+ allowNumber: true,
160
+ },
161
+ ],
162
+ 'typescript/switch-exhaustiveness-check': [
163
+ 'error',
164
+ {
165
+ allowDefaultCaseForExhaustiveSwitch: false,
166
+ requireDefaultForNonUnion: true,
167
+ },
168
+ ],
169
+ 'typescript/triple-slash-reference': [
170
+ 'error',
171
+ {
172
+ path: 'never',
173
+ types: 'never',
174
+ lib: 'never',
175
+ },
176
+ ],
177
+ 'typescript/unified-signatures': [
178
+ 'error',
179
+ {
180
+ ignoreDifferentlyNamedParameters: true,
181
+ },
182
+ ],
183
+ 'typescript/use-unknown-in-catch-callback-variable': 'error',
184
+ },
492
185
  };
493
186
 
494
187
  /**
@@ -497,21 +190,16 @@ const typescript = {
497
190
  * @type {import('oxlint').OxlintConfig}
498
191
  */
499
192
  export const typescriptUnsafe = {
500
- overrides: [
501
- {
502
- files: [GLOBS.TS],
503
- rules: {
504
- 'typescript/no-unsafe-argument': 'off',
505
- 'typescript/no-unsafe-assignment': 'off',
506
- 'typescript/no-unsafe-call': 'off',
507
- 'typescript/no-unsafe-declaration-merging': 'off',
508
- 'typescript/no-unsafe-enum-comparison': 'off',
509
- 'typescript/no-unsafe-member-access': 'off',
510
- 'typescript/no-unsafe-return': 'off',
511
- 'typescript/no-unsafe-type-assertion': 'off',
512
- },
513
- },
514
- ],
193
+ rules: {
194
+ 'typescript/no-unsafe-argument': 'off',
195
+ 'typescript/no-unsafe-assignment': 'off',
196
+ 'typescript/no-unsafe-call': 'off',
197
+ 'typescript/no-unsafe-declaration-merging': 'off',
198
+ 'typescript/no-unsafe-enum-comparison': 'off',
199
+ 'typescript/no-unsafe-member-access': 'off',
200
+ 'typescript/no-unsafe-return': 'off',
201
+ 'typescript/no-unsafe-type-assertion': 'off',
202
+ },
515
203
  };
516
204
 
517
205
  export default typescript;