@isentinel/eslint-config 6.0.0-beta.25 → 6.0.0-beta.26

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/dist/cli.mjs CHANGED
@@ -9,7 +9,7 @@ import path from "node:path";
9
9
  import { existsSync, readFileSync } from "fs";
10
10
  import { execSync } from "node:child_process";
11
11
  //#region package.json
12
- var version = "6.0.0-beta.25";
12
+ var version = "6.0.0-beta.26";
13
13
  var package_default = {
14
14
  name: "@isentinel/eslint-config",
15
15
  version,
package/dist/lint-cli.mjs CHANGED
@@ -36,7 +36,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
36
36
  }) : target, mod));
37
37
  //#endregion
38
38
  //#region package.json
39
- var version = "6.0.0-beta.25";
39
+ var version = "6.0.0-beta.26";
40
40
  //#endregion
41
41
  //#region src/lint-cli/lib/cli/types.ts
42
42
  /**
package/dist/oxlint.d.mts CHANGED
@@ -8,16 +8,6 @@ import { Options } from "prettier";
8
8
  import { FormatConfig, JsdocConfig } from "oxfmt";
9
9
  import "eslint-flat-config-utils";
10
10
  //#region src/rules/oxlint-mapping.d.ts
11
- /**
12
- * Per-rule mapping between the ESLint config and oxlint for hybrid mode.
13
- *
14
- * Every rule listed here is covered by oxlint: when the ESLint factory runs
15
- * with `oxlint: true` it drops these rules, and the oxlint factory enables
16
- * them (translated via {@link translateRuleToOxlint}).
17
- *
18
- * Rules NOT listed here stay in ESLint. Notable families that intentionally
19
- * stay are documented in {@link staysInEslint}.
20
- */
21
11
  /** Where a rule runs when linting with oxlint. */
22
12
  type OxlintTarget =
23
13
  /** Runs inside oxlint via a jsPlugin (the original ESLint plugin). */
package/dist/oxlint.mjs CHANGED
@@ -10,8 +10,863 @@ import { findUpSync } from "find-up-simple";
10
10
  import { minVersion } from "semver";
11
11
  import { pathToFileURL } from "node:url";
12
12
  import globals from "globals";
13
+ //#region src/rules/oxlint-native-generated.ts
14
+ const oxlintNativeRuleNames = /* @__PURE__ */ new Set([
15
+ "accessor-pairs",
16
+ "array-callback-return",
17
+ "arrow-body-style",
18
+ "block-scoped-var",
19
+ "capitalized-comments",
20
+ "class-methods-use-this",
21
+ "complexity",
22
+ "constructor-super",
23
+ "curly",
24
+ "default-case",
25
+ "default-case-last",
26
+ "default-param-last",
27
+ "eqeqeq",
28
+ "for-direction",
29
+ "func-name-matching",
30
+ "func-names",
31
+ "func-style",
32
+ "getter-return",
33
+ "grouped-accessor-pairs",
34
+ "guard-for-in",
35
+ "id-length",
36
+ "id-match",
37
+ "import/consistent-type-specifier-style",
38
+ "import/default",
39
+ "import/export",
40
+ "import/exports-last",
41
+ "import/extensions",
42
+ "import/first",
43
+ "import/group-exports",
44
+ "import/max-dependencies",
45
+ "import/named",
46
+ "import/namespace",
47
+ "import/newline-after-import",
48
+ "import/no-absolute-path",
49
+ "import/no-amd",
50
+ "import/no-anonymous-default-export",
51
+ "import/no-commonjs",
52
+ "import/no-cycle",
53
+ "import/no-default-export",
54
+ "import/no-duplicates",
55
+ "import/no-dynamic-require",
56
+ "import/no-empty-named-blocks",
57
+ "import/no-mutable-exports",
58
+ "import/no-named-as-default",
59
+ "import/no-named-as-default-member",
60
+ "import/no-named-default",
61
+ "import/no-named-export",
62
+ "import/no-namespace",
63
+ "import/no-nodejs-modules",
64
+ "import/no-relative-parent-imports",
65
+ "import/no-self-import",
66
+ "import/no-unassigned-import",
67
+ "import/no-webpack-loader-syntax",
68
+ "import/prefer-default-export",
69
+ "import/unambiguous",
70
+ "init-declarations",
71
+ "jest/consistent-test-it",
72
+ "jest/expect-expect",
73
+ "jest/max-expects",
74
+ "jest/max-nested-describe",
75
+ "jest/no-alias-methods",
76
+ "jest/no-commented-out-tests",
77
+ "jest/no-conditional-expect",
78
+ "jest/no-conditional-in-test",
79
+ "jest/no-confusing-set-timeout",
80
+ "jest/no-deprecated-functions",
81
+ "jest/no-disabled-tests",
82
+ "jest/no-done-callback",
83
+ "jest/no-duplicate-hooks",
84
+ "jest/no-export",
85
+ "jest/no-focused-tests",
86
+ "jest/no-hooks",
87
+ "jest/no-identical-title",
88
+ "jest/no-interpolation-in-snapshots",
89
+ "jest/no-jasmine-globals",
90
+ "jest/no-large-snapshots",
91
+ "jest/no-mocks-import",
92
+ "jest/no-restricted-jest-methods",
93
+ "jest/no-restricted-matchers",
94
+ "jest/no-standalone-expect",
95
+ "jest/no-test-prefixes",
96
+ "jest/no-test-return-statement",
97
+ "jest/no-unneeded-async-expect-function",
98
+ "jest/no-untyped-mock-factory",
99
+ "jest/padding-around-after-all-blocks",
100
+ "jest/padding-around-test-blocks",
101
+ "jest/prefer-called-with",
102
+ "jest/prefer-comparison-matcher",
103
+ "jest/prefer-each",
104
+ "jest/prefer-ending-with-an-expect",
105
+ "jest/prefer-equality-matcher",
106
+ "jest/prefer-expect-assertions",
107
+ "jest/prefer-expect-resolves",
108
+ "jest/prefer-hooks-in-order",
109
+ "jest/prefer-hooks-on-top",
110
+ "jest/prefer-importing-jest-globals",
111
+ "jest/prefer-jest-mocked",
112
+ "jest/prefer-lowercase-title",
113
+ "jest/prefer-mock-promise-shorthand",
114
+ "jest/prefer-mock-return-shorthand",
115
+ "jest/prefer-snapshot-hint",
116
+ "jest/prefer-spy-on",
117
+ "jest/prefer-strict-equal",
118
+ "jest/prefer-to-be",
119
+ "jest/prefer-to-contain",
120
+ "jest/prefer-to-have-been-called",
121
+ "jest/prefer-to-have-been-called-times",
122
+ "jest/prefer-to-have-length",
123
+ "jest/prefer-todo",
124
+ "jest/require-hook",
125
+ "jest/require-to-throw-message",
126
+ "jest/require-top-level-describe",
127
+ "jest/valid-describe-callback",
128
+ "jest/valid-expect",
129
+ "jest/valid-expect-in-promise",
130
+ "jest/valid-title",
131
+ "jsdoc/check-access",
132
+ "jsdoc/check-property-names",
133
+ "jsdoc/check-tag-names",
134
+ "jsdoc/empty-tags",
135
+ "jsdoc/implements-on-classes",
136
+ "jsdoc/no-defaults",
137
+ "jsdoc/require-param",
138
+ "jsdoc/require-param-description",
139
+ "jsdoc/require-param-name",
140
+ "jsdoc/require-param-type",
141
+ "jsdoc/require-property",
142
+ "jsdoc/require-property-description",
143
+ "jsdoc/require-property-name",
144
+ "jsdoc/require-property-type",
145
+ "jsdoc/require-returns",
146
+ "jsdoc/require-returns-description",
147
+ "jsdoc/require-returns-type",
148
+ "jsdoc/require-throws-description",
149
+ "jsdoc/require-throws-type",
150
+ "jsdoc/require-yields",
151
+ "jsdoc/require-yields-description",
152
+ "jsdoc/require-yields-type",
153
+ "jsx-a11y/alt-text",
154
+ "jsx-a11y/anchor-ambiguous-text",
155
+ "jsx-a11y/anchor-has-content",
156
+ "jsx-a11y/anchor-is-valid",
157
+ "jsx-a11y/aria-activedescendant-has-tabindex",
158
+ "jsx-a11y/aria-props",
159
+ "jsx-a11y/aria-proptypes",
160
+ "jsx-a11y/aria-role",
161
+ "jsx-a11y/aria-unsupported-elements",
162
+ "jsx-a11y/autocomplete-valid",
163
+ "jsx-a11y/click-events-have-key-events",
164
+ "jsx-a11y/control-has-associated-label",
165
+ "jsx-a11y/heading-has-content",
166
+ "jsx-a11y/html-has-lang",
167
+ "jsx-a11y/iframe-has-title",
168
+ "jsx-a11y/img-redundant-alt",
169
+ "jsx-a11y/interactive-supports-focus",
170
+ "jsx-a11y/label-has-associated-control",
171
+ "jsx-a11y/lang",
172
+ "jsx-a11y/media-has-caption",
173
+ "jsx-a11y/mouse-events-have-key-events",
174
+ "jsx-a11y/no-access-key",
175
+ "jsx-a11y/no-aria-hidden-on-focusable",
176
+ "jsx-a11y/no-autofocus",
177
+ "jsx-a11y/no-distracting-elements",
178
+ "jsx-a11y/no-interactive-element-to-noninteractive-role",
179
+ "jsx-a11y/no-noninteractive-element-interactions",
180
+ "jsx-a11y/no-noninteractive-element-to-interactive-role",
181
+ "jsx-a11y/no-noninteractive-tabindex",
182
+ "jsx-a11y/no-redundant-roles",
183
+ "jsx-a11y/no-static-element-interactions",
184
+ "jsx-a11y/prefer-tag-over-role",
185
+ "jsx-a11y/role-has-required-aria-props",
186
+ "jsx-a11y/role-supports-aria-props",
187
+ "jsx-a11y/scope",
188
+ "jsx-a11y/tabindex-no-positive",
189
+ "logical-assignment-operators",
190
+ "max-classes-per-file",
191
+ "max-depth",
192
+ "max-lines",
193
+ "max-lines-per-function",
194
+ "max-nested-callbacks",
195
+ "max-params",
196
+ "max-statements",
197
+ "new-cap",
198
+ "nextjs/google-font-display",
199
+ "nextjs/google-font-preconnect",
200
+ "nextjs/inline-script-id",
201
+ "nextjs/next-script-for-ga",
202
+ "nextjs/no-assign-module-variable",
203
+ "nextjs/no-async-client-component",
204
+ "nextjs/no-before-interactive-script-outside-document",
205
+ "nextjs/no-css-tags",
206
+ "nextjs/no-document-import-in-page",
207
+ "nextjs/no-duplicate-head",
208
+ "nextjs/no-head-element",
209
+ "nextjs/no-head-import-in-document",
210
+ "nextjs/no-html-link-for-pages",
211
+ "nextjs/no-img-element",
212
+ "nextjs/no-page-custom-font",
213
+ "nextjs/no-script-component-in-head",
214
+ "nextjs/no-styled-jsx-in-document",
215
+ "nextjs/no-sync-scripts",
216
+ "nextjs/no-title-in-document-head",
217
+ "nextjs/no-typos",
218
+ "nextjs/no-unwanted-polyfillio",
219
+ "no-alert",
220
+ "no-array-constructor",
221
+ "no-async-promise-executor",
222
+ "no-await-in-loop",
223
+ "no-bitwise",
224
+ "no-caller",
225
+ "no-case-declarations",
226
+ "no-class-assign",
227
+ "no-compare-neg-zero",
228
+ "no-cond-assign",
229
+ "no-console",
230
+ "no-const-assign",
231
+ "no-constant-binary-expression",
232
+ "no-constant-condition",
233
+ "no-constructor-return",
234
+ "no-continue",
235
+ "no-control-regex",
236
+ "no-debugger",
237
+ "no-delete-var",
238
+ "no-div-regex",
239
+ "no-dupe-class-members",
240
+ "no-dupe-else-if",
241
+ "no-dupe-keys",
242
+ "no-duplicate-case",
243
+ "no-duplicate-imports",
244
+ "no-else-return",
245
+ "no-empty",
246
+ "no-empty-character-class",
247
+ "no-empty-function",
248
+ "no-empty-pattern",
249
+ "no-empty-static-block",
250
+ "no-eq-null",
251
+ "no-eval",
252
+ "no-ex-assign",
253
+ "no-extend-native",
254
+ "no-extra-bind",
255
+ "no-extra-boolean-cast",
256
+ "no-extra-label",
257
+ "no-fallthrough",
258
+ "no-func-assign",
259
+ "no-global-assign",
260
+ "no-implicit-coercion",
261
+ "no-implicit-globals",
262
+ "no-implied-eval",
263
+ "no-import-assign",
264
+ "no-inline-comments",
265
+ "no-inner-declarations",
266
+ "no-invalid-regexp",
267
+ "no-irregular-whitespace",
268
+ "no-iterator",
269
+ "no-label-var",
270
+ "no-labels",
271
+ "no-lone-blocks",
272
+ "no-lonely-if",
273
+ "no-loop-func",
274
+ "no-loss-of-precision",
275
+ "no-magic-numbers",
276
+ "no-misleading-character-class",
277
+ "no-multi-assign",
278
+ "no-multi-str",
279
+ "no-negated-condition",
280
+ "no-nested-ternary",
281
+ "no-new",
282
+ "no-new-func",
283
+ "no-new-native-nonconstructor",
284
+ "no-new-wrappers",
285
+ "no-nonoctal-decimal-escape",
286
+ "no-obj-calls",
287
+ "no-object-constructor",
288
+ "no-param-reassign",
289
+ "no-plusplus",
290
+ "no-promise-executor-return",
291
+ "no-proto",
292
+ "no-prototype-builtins",
293
+ "no-redeclare",
294
+ "no-regex-spaces",
295
+ "no-restricted-exports",
296
+ "no-restricted-globals",
297
+ "no-restricted-imports",
298
+ "no-restricted-properties",
299
+ "no-return-assign",
300
+ "no-script-url",
301
+ "no-self-assign",
302
+ "no-self-compare",
303
+ "no-sequences",
304
+ "no-setter-return",
305
+ "no-shadow",
306
+ "no-shadow-restricted-names",
307
+ "no-sparse-arrays",
308
+ "no-template-curly-in-string",
309
+ "no-ternary",
310
+ "no-this-before-super",
311
+ "no-throw-literal",
312
+ "no-unassigned-vars",
313
+ "no-undef",
314
+ "no-undefined",
315
+ "no-underscore-dangle",
316
+ "no-unexpected-multiline",
317
+ "no-unmodified-loop-condition",
318
+ "no-unneeded-ternary",
319
+ "no-unreachable",
320
+ "no-unreachable-loop",
321
+ "no-unsafe-finally",
322
+ "no-unsafe-negation",
323
+ "no-unsafe-optional-chaining",
324
+ "no-unused-expressions",
325
+ "no-unused-labels",
326
+ "no-unused-private-class-members",
327
+ "no-unused-vars",
328
+ "no-use-before-define",
329
+ "no-useless-assignment",
330
+ "no-useless-backreference",
331
+ "no-useless-call",
332
+ "no-useless-catch",
333
+ "no-useless-computed-key",
334
+ "no-useless-concat",
335
+ "no-useless-constructor",
336
+ "no-useless-escape",
337
+ "no-useless-rename",
338
+ "no-useless-return",
339
+ "no-var",
340
+ "no-void",
341
+ "no-warning-comments",
342
+ "no-with",
343
+ "node/callback-return",
344
+ "node/global-require",
345
+ "node/handle-callback-err",
346
+ "node/no-exports-assign",
347
+ "node/no-mixed-requires",
348
+ "node/no-new-require",
349
+ "node/no-path-concat",
350
+ "node/no-process-env",
351
+ "node/no-sync",
352
+ "object-shorthand",
353
+ "operator-assignment",
354
+ "oxc/approx-constant",
355
+ "oxc/bad-array-method-on-arguments",
356
+ "oxc/bad-bitwise-operator",
357
+ "oxc/bad-char-at-comparison",
358
+ "oxc/bad-comparison-sequence",
359
+ "oxc/bad-min-max-func",
360
+ "oxc/bad-object-literal-comparison",
361
+ "oxc/bad-replace-all-arg",
362
+ "oxc/branches-sharing-code",
363
+ "oxc/const-comparisons",
364
+ "oxc/double-comparisons",
365
+ "oxc/erasing-op",
366
+ "oxc/misrefactored-assign-op",
367
+ "oxc/missing-throw",
368
+ "oxc/no-accumulating-spread",
369
+ "oxc/no-async-await",
370
+ "oxc/no-async-endpoint-handlers",
371
+ "oxc/no-barrel-file",
372
+ "oxc/no-const-enum",
373
+ "oxc/no-map-spread",
374
+ "oxc/no-optional-chaining",
375
+ "oxc/no-rest-spread-properties",
376
+ "oxc/no-this-in-exported-function",
377
+ "oxc/number-arg-out-of-range",
378
+ "oxc/only-used-in-recursion",
379
+ "oxc/uninvoked-array-callback",
380
+ "prefer-arrow-callback",
381
+ "prefer-const",
382
+ "prefer-destructuring",
383
+ "prefer-exponentiation-operator",
384
+ "prefer-named-capture-group",
385
+ "prefer-numeric-literals",
386
+ "prefer-object-has-own",
387
+ "prefer-object-spread",
388
+ "prefer-promise-reject-errors",
389
+ "prefer-regex-literals",
390
+ "prefer-rest-params",
391
+ "prefer-spread",
392
+ "prefer-template",
393
+ "preserve-caught-error",
394
+ "promise/always-return",
395
+ "promise/avoid-new",
396
+ "promise/catch-or-return",
397
+ "promise/no-callback-in-promise",
398
+ "promise/no-multiple-resolved",
399
+ "promise/no-nesting",
400
+ "promise/no-new-statics",
401
+ "promise/no-promise-in-callback",
402
+ "promise/no-return-in-finally",
403
+ "promise/no-return-wrap",
404
+ "promise/param-names",
405
+ "promise/prefer-await-to-callbacks",
406
+ "promise/prefer-await-to-then",
407
+ "promise/prefer-catch",
408
+ "promise/spec-only",
409
+ "promise/valid-params",
410
+ "radix",
411
+ "react-perf/jsx-no-jsx-as-prop",
412
+ "react-perf/jsx-no-new-array-as-prop",
413
+ "react-perf/jsx-no-new-function-as-prop",
414
+ "react-perf/jsx-no-new-object-as-prop",
415
+ "react/button-has-type",
416
+ "react/checked-requires-onchange-or-readonly",
417
+ "react/display-name",
418
+ "react/exhaustive-deps",
419
+ "react/forbid-component-props",
420
+ "react/forbid-dom-props",
421
+ "react/forbid-elements",
422
+ "react/forward-ref-uses-ref",
423
+ "react/hook-use-state",
424
+ "react/iframe-missing-sandbox",
425
+ "react/jsx-boolean-value",
426
+ "react/jsx-curly-brace-presence",
427
+ "react/jsx-filename-extension",
428
+ "react/jsx-fragments",
429
+ "react/jsx-handler-names",
430
+ "react/jsx-key",
431
+ "react/jsx-max-depth",
432
+ "react/jsx-no-comment-textnodes",
433
+ "react/jsx-no-constructed-context-values",
434
+ "react/jsx-no-duplicate-props",
435
+ "react/jsx-no-literals",
436
+ "react/jsx-no-script-url",
437
+ "react/jsx-no-target-blank",
438
+ "react/jsx-no-undef",
439
+ "react/jsx-no-useless-fragment",
440
+ "react/jsx-pascal-case",
441
+ "react/jsx-props-no-spread-multi",
442
+ "react/jsx-props-no-spreading",
443
+ "react/no-array-index-key",
444
+ "react/no-children-prop",
445
+ "react/no-clone-element",
446
+ "react/no-danger",
447
+ "react/no-danger-with-children",
448
+ "react/no-did-mount-set-state",
449
+ "react/no-did-update-set-state",
450
+ "react/no-direct-mutation-state",
451
+ "react/no-find-dom-node",
452
+ "react/no-is-mounted",
453
+ "react/no-multi-comp",
454
+ "react/no-namespace",
455
+ "react/no-object-type-as-default-prop",
456
+ "react/no-react-children",
457
+ "react/no-redundant-should-component-update",
458
+ "react/no-render-return-value",
459
+ "react/no-set-state",
460
+ "react/no-string-refs",
461
+ "react/no-this-in-sfc",
462
+ "react/no-unescaped-entities",
463
+ "react/no-unknown-property",
464
+ "react/no-unsafe",
465
+ "react/no-unstable-nested-components",
466
+ "react/no-will-update-set-state",
467
+ "react/only-export-components",
468
+ "react/prefer-es6-class",
469
+ "react/prefer-function-component",
470
+ "react/react-compiler",
471
+ "react/react-in-jsx-scope",
472
+ "react/require-render-return",
473
+ "react/rules-of-hooks",
474
+ "react/self-closing-comp",
475
+ "react/state-in-constructor",
476
+ "react/style-prop-object",
477
+ "react/void-dom-elements-no-children",
478
+ "require-await",
479
+ "require-unicode-regexp",
480
+ "require-yield",
481
+ "sort-imports",
482
+ "sort-keys",
483
+ "sort-vars",
484
+ "symbol-description",
485
+ "typescript/adjacent-overload-signatures",
486
+ "typescript/array-type",
487
+ "typescript/await-thenable",
488
+ "typescript/ban-ts-comment",
489
+ "typescript/ban-tslint-comment",
490
+ "typescript/ban-types",
491
+ "typescript/class-literal-property-style",
492
+ "typescript/consistent-generic-constructors",
493
+ "typescript/consistent-indexed-object-style",
494
+ "typescript/consistent-return",
495
+ "typescript/consistent-type-assertions",
496
+ "typescript/consistent-type-definitions",
497
+ "typescript/consistent-type-exports",
498
+ "typescript/consistent-type-imports",
499
+ "typescript/dot-notation",
500
+ "typescript/explicit-function-return-type",
501
+ "typescript/explicit-member-accessibility",
502
+ "typescript/explicit-module-boundary-types",
503
+ "typescript/method-signature-style",
504
+ "typescript/no-array-delete",
505
+ "typescript/no-base-to-string",
506
+ "typescript/no-confusing-non-null-assertion",
507
+ "typescript/no-confusing-void-expression",
508
+ "typescript/no-deprecated",
509
+ "typescript/no-duplicate-enum-values",
510
+ "typescript/no-duplicate-type-constituents",
511
+ "typescript/no-dynamic-delete",
512
+ "typescript/no-empty-interface",
513
+ "typescript/no-empty-object-type",
514
+ "typescript/no-explicit-any",
515
+ "typescript/no-extra-non-null-assertion",
516
+ "typescript/no-extraneous-class",
517
+ "typescript/no-floating-promises",
518
+ "typescript/no-for-in-array",
519
+ "typescript/no-implied-eval",
520
+ "typescript/no-import-type-side-effects",
521
+ "typescript/no-inferrable-types",
522
+ "typescript/no-invalid-void-type",
523
+ "typescript/no-meaningless-void-operator",
524
+ "typescript/no-misused-new",
525
+ "typescript/no-misused-promises",
526
+ "typescript/no-misused-spread",
527
+ "typescript/no-mixed-enums",
528
+ "typescript/no-namespace",
529
+ "typescript/no-non-null-asserted-nullish-coalescing",
530
+ "typescript/no-non-null-asserted-optional-chain",
531
+ "typescript/no-non-null-assertion",
532
+ "typescript/no-redundant-type-constituents",
533
+ "typescript/no-require-imports",
534
+ "typescript/no-restricted-types",
535
+ "typescript/no-this-alias",
536
+ "typescript/no-unnecessary-boolean-literal-compare",
537
+ "typescript/no-unnecessary-condition",
538
+ "typescript/no-unnecessary-parameter-property-assignment",
539
+ "typescript/no-unnecessary-qualifier",
540
+ "typescript/no-unnecessary-template-expression",
541
+ "typescript/no-unnecessary-type-arguments",
542
+ "typescript/no-unnecessary-type-assertion",
543
+ "typescript/no-unnecessary-type-constraint",
544
+ "typescript/no-unnecessary-type-conversion",
545
+ "typescript/no-unnecessary-type-parameters",
546
+ "typescript/no-unsafe-argument",
547
+ "typescript/no-unsafe-assignment",
548
+ "typescript/no-unsafe-call",
549
+ "typescript/no-unsafe-declaration-merging",
550
+ "typescript/no-unsafe-enum-comparison",
551
+ "typescript/no-unsafe-function-type",
552
+ "typescript/no-unsafe-member-access",
553
+ "typescript/no-unsafe-return",
554
+ "typescript/no-unsafe-type-assertion",
555
+ "typescript/no-unsafe-unary-minus",
556
+ "typescript/no-useless-default-assignment",
557
+ "typescript/no-useless-empty-export",
558
+ "typescript/no-var-requires",
559
+ "typescript/no-wrapper-object-types",
560
+ "typescript/non-nullable-type-assertion-style",
561
+ "typescript/only-throw-error",
562
+ "typescript/parameter-properties",
563
+ "typescript/prefer-as-const",
564
+ "typescript/prefer-enum-initializers",
565
+ "typescript/prefer-find",
566
+ "typescript/prefer-for-of",
567
+ "typescript/prefer-function-type",
568
+ "typescript/prefer-includes",
569
+ "typescript/prefer-literal-enum-member",
570
+ "typescript/prefer-namespace-keyword",
571
+ "typescript/prefer-nullish-coalescing",
572
+ "typescript/prefer-optional-chain",
573
+ "typescript/prefer-promise-reject-errors",
574
+ "typescript/prefer-readonly",
575
+ "typescript/prefer-readonly-parameter-types",
576
+ "typescript/prefer-reduce-type-parameter",
577
+ "typescript/prefer-regexp-exec",
578
+ "typescript/prefer-return-this-type",
579
+ "typescript/prefer-string-starts-ends-with",
580
+ "typescript/prefer-ts-expect-error",
581
+ "typescript/promise-function-async",
582
+ "typescript/related-getter-setter-pairs",
583
+ "typescript/require-array-sort-compare",
584
+ "typescript/require-await",
585
+ "typescript/restrict-plus-operands",
586
+ "typescript/restrict-template-expressions",
587
+ "typescript/return-await",
588
+ "typescript/strict-boolean-expressions",
589
+ "typescript/strict-void-return",
590
+ "typescript/switch-exhaustiveness-check",
591
+ "typescript/triple-slash-reference",
592
+ "typescript/unbound-method",
593
+ "typescript/unified-signatures",
594
+ "typescript/use-unknown-in-catch-callback-variable",
595
+ "unicode-bom",
596
+ "unicorn/catch-error-name",
597
+ "unicorn/consistent-assert",
598
+ "unicorn/consistent-date-clone",
599
+ "unicorn/consistent-empty-array-spread",
600
+ "unicorn/consistent-existence-index-check",
601
+ "unicorn/consistent-function-scoping",
602
+ "unicorn/consistent-template-literal-escape",
603
+ "unicorn/custom-error-definition",
604
+ "unicorn/empty-brace-spaces",
605
+ "unicorn/error-message",
606
+ "unicorn/escape-case",
607
+ "unicorn/explicit-length-check",
608
+ "unicorn/explicit-timer-delay",
609
+ "unicorn/filename-case",
610
+ "unicorn/import-style",
611
+ "unicorn/max-nested-calls",
612
+ "unicorn/new-for-builtins",
613
+ "unicorn/no-abusive-eslint-disable",
614
+ "unicorn/no-accessor-recursion",
615
+ "unicorn/no-anonymous-default-export",
616
+ "unicorn/no-array-callback-reference",
617
+ "unicorn/no-array-fill-with-reference-type",
618
+ "unicorn/no-array-for-each",
619
+ "unicorn/no-array-method-this-argument",
620
+ "unicorn/no-array-reduce",
621
+ "unicorn/no-array-reverse",
622
+ "unicorn/no-array-sort",
623
+ "unicorn/no-await-expression-member",
624
+ "unicorn/no-await-in-promise-methods",
625
+ "unicorn/no-confusing-array-with",
626
+ "unicorn/no-console-spaces",
627
+ "unicorn/no-document-cookie",
628
+ "unicorn/no-empty-file",
629
+ "unicorn/no-hex-escape",
630
+ "unicorn/no-immediate-mutation",
631
+ "unicorn/no-instanceof-array",
632
+ "unicorn/no-instanceof-builtins",
633
+ "unicorn/no-invalid-fetch-options",
634
+ "unicorn/no-invalid-remove-event-listener",
635
+ "unicorn/no-length-as-slice-end",
636
+ "unicorn/no-lonely-if",
637
+ "unicorn/no-magic-array-flat-depth",
638
+ "unicorn/no-negated-condition",
639
+ "unicorn/no-negation-in-equality-check",
640
+ "unicorn/no-nested-ternary",
641
+ "unicorn/no-new-array",
642
+ "unicorn/no-new-buffer",
643
+ "unicorn/no-null",
644
+ "unicorn/no-object-as-default-parameter",
645
+ "unicorn/no-process-exit",
646
+ "unicorn/no-single-promise-in-promise-methods",
647
+ "unicorn/no-static-only-class",
648
+ "unicorn/no-thenable",
649
+ "unicorn/no-this-assignment",
650
+ "unicorn/no-typeof-undefined",
651
+ "unicorn/no-unnecessary-array-flat-depth",
652
+ "unicorn/no-unnecessary-array-splice-count",
653
+ "unicorn/no-unnecessary-await",
654
+ "unicorn/no-unnecessary-slice-end",
655
+ "unicorn/no-unreadable-array-destructuring",
656
+ "unicorn/no-unreadable-iife",
657
+ "unicorn/no-useless-collection-argument",
658
+ "unicorn/no-useless-error-capture-stack-trace",
659
+ "unicorn/no-useless-fallback-in-spread",
660
+ "unicorn/no-useless-iterator-to-array",
661
+ "unicorn/no-useless-length-check",
662
+ "unicorn/no-useless-promise-resolve-reject",
663
+ "unicorn/no-useless-spread",
664
+ "unicorn/no-useless-switch-case",
665
+ "unicorn/no-useless-undefined",
666
+ "unicorn/no-zero-fractions",
667
+ "unicorn/number-literal-case",
668
+ "unicorn/numeric-separators-style",
669
+ "unicorn/prefer-add-event-listener",
670
+ "unicorn/prefer-array-find",
671
+ "unicorn/prefer-array-flat",
672
+ "unicorn/prefer-array-flat-map",
673
+ "unicorn/prefer-array-index-of",
674
+ "unicorn/prefer-array-some",
675
+ "unicorn/prefer-at",
676
+ "unicorn/prefer-bigint-literals",
677
+ "unicorn/prefer-blob-reading-methods",
678
+ "unicorn/prefer-class-fields",
679
+ "unicorn/prefer-classlist-toggle",
680
+ "unicorn/prefer-code-point",
681
+ "unicorn/prefer-date-now",
682
+ "unicorn/prefer-default-parameters",
683
+ "unicorn/prefer-dom-node-append",
684
+ "unicorn/prefer-dom-node-dataset",
685
+ "unicorn/prefer-dom-node-remove",
686
+ "unicorn/prefer-dom-node-text-content",
687
+ "unicorn/prefer-event-target",
688
+ "unicorn/prefer-export-from",
689
+ "unicorn/prefer-global-this",
690
+ "unicorn/prefer-import-meta-properties",
691
+ "unicorn/prefer-includes",
692
+ "unicorn/prefer-keyboard-event-key",
693
+ "unicorn/prefer-logical-operator-over-ternary",
694
+ "unicorn/prefer-math-min-max",
695
+ "unicorn/prefer-math-trunc",
696
+ "unicorn/prefer-modern-dom-apis",
697
+ "unicorn/prefer-modern-math-apis",
698
+ "unicorn/prefer-module",
699
+ "unicorn/prefer-native-coercion-functions",
700
+ "unicorn/prefer-negative-index",
701
+ "unicorn/prefer-node-protocol",
702
+ "unicorn/prefer-number-coercion",
703
+ "unicorn/prefer-number-properties",
704
+ "unicorn/prefer-object-from-entries",
705
+ "unicorn/prefer-optional-catch-binding",
706
+ "unicorn/prefer-prototype-methods",
707
+ "unicorn/prefer-query-selector",
708
+ "unicorn/prefer-reflect-apply",
709
+ "unicorn/prefer-regexp-test",
710
+ "unicorn/prefer-response-static-json",
711
+ "unicorn/prefer-set-has",
712
+ "unicorn/prefer-set-size",
713
+ "unicorn/prefer-single-call",
714
+ "unicorn/prefer-spread",
715
+ "unicorn/prefer-string-raw",
716
+ "unicorn/prefer-string-replace-all",
717
+ "unicorn/prefer-string-slice",
718
+ "unicorn/prefer-string-starts-ends-with",
719
+ "unicorn/prefer-string-trim-start-end",
720
+ "unicorn/prefer-structured-clone",
721
+ "unicorn/prefer-ternary",
722
+ "unicorn/prefer-top-level-await",
723
+ "unicorn/prefer-type-error",
724
+ "unicorn/relative-url-style",
725
+ "unicorn/require-array-join-separator",
726
+ "unicorn/require-module-attributes",
727
+ "unicorn/require-module-specifiers",
728
+ "unicorn/require-number-to-fixed-digits-argument",
729
+ "unicorn/require-post-message-target-origin",
730
+ "unicorn/switch-case-braces",
731
+ "unicorn/switch-case-break-position",
732
+ "unicorn/text-encoding-identifier-case",
733
+ "unicorn/throw-new-error",
734
+ "use-isnan",
735
+ "valid-typeof",
736
+ "vars-on-top",
737
+ "vitest/consistent-each-for",
738
+ "vitest/consistent-test-filename",
739
+ "vitest/consistent-test-it",
740
+ "vitest/consistent-vitest-vi",
741
+ "vitest/expect-expect",
742
+ "vitest/hoisted-apis-on-top",
743
+ "vitest/max-expects",
744
+ "vitest/max-nested-describe",
745
+ "vitest/no-alias-methods",
746
+ "vitest/no-commented-out-tests",
747
+ "vitest/no-conditional-expect",
748
+ "vitest/no-conditional-in-test",
749
+ "vitest/no-conditional-tests",
750
+ "vitest/no-disabled-tests",
751
+ "vitest/no-duplicate-hooks",
752
+ "vitest/no-focused-tests",
753
+ "vitest/no-hooks",
754
+ "vitest/no-identical-title",
755
+ "vitest/no-import-node-test",
756
+ "vitest/no-importing-vitest-globals",
757
+ "vitest/no-interpolation-in-snapshots",
758
+ "vitest/no-large-snapshots",
759
+ "vitest/no-mocks-import",
760
+ "vitest/no-restricted-matchers",
761
+ "vitest/no-restricted-vi-methods",
762
+ "vitest/no-standalone-expect",
763
+ "vitest/no-test-prefixes",
764
+ "vitest/no-test-return-statement",
765
+ "vitest/no-unneeded-async-expect-function",
766
+ "vitest/padding-around-after-all-blocks",
767
+ "vitest/prefer-called-exactly-once-with",
768
+ "vitest/prefer-called-once",
769
+ "vitest/prefer-called-times",
770
+ "vitest/prefer-called-with",
771
+ "vitest/prefer-comparison-matcher",
772
+ "vitest/prefer-describe-function-title",
773
+ "vitest/prefer-each",
774
+ "vitest/prefer-equality-matcher",
775
+ "vitest/prefer-expect-assertions",
776
+ "vitest/prefer-expect-resolves",
777
+ "vitest/prefer-expect-type-of",
778
+ "vitest/prefer-hooks-in-order",
779
+ "vitest/prefer-hooks-on-top",
780
+ "vitest/prefer-import-in-mock",
781
+ "vitest/prefer-importing-vitest-globals",
782
+ "vitest/prefer-lowercase-title",
783
+ "vitest/prefer-mock-promise-shorthand",
784
+ "vitest/prefer-mock-return-shorthand",
785
+ "vitest/prefer-snapshot-hint",
786
+ "vitest/prefer-spy-on",
787
+ "vitest/prefer-strict-boolean-matchers",
788
+ "vitest/prefer-strict-equal",
789
+ "vitest/prefer-to-be",
790
+ "vitest/prefer-to-be-falsy",
791
+ "vitest/prefer-to-be-object",
792
+ "vitest/prefer-to-be-truthy",
793
+ "vitest/prefer-to-contain",
794
+ "vitest/prefer-to-have-been-called-times",
795
+ "vitest/prefer-to-have-length",
796
+ "vitest/prefer-todo",
797
+ "vitest/require-awaited-expect-poll",
798
+ "vitest/require-hook",
799
+ "vitest/require-local-test-context-for-concurrent-snapshots",
800
+ "vitest/require-mock-type-parameters",
801
+ "vitest/require-test-timeout",
802
+ "vitest/require-to-throw-message",
803
+ "vitest/require-top-level-describe",
804
+ "vitest/valid-describe-callback",
805
+ "vitest/valid-expect",
806
+ "vitest/valid-expect-in-promise",
807
+ "vitest/valid-title",
808
+ "vitest/warn-todo",
809
+ "vue/component-definition-name-casing",
810
+ "vue/define-emits-declaration",
811
+ "vue/define-props-declaration",
812
+ "vue/define-props-destructuring",
813
+ "vue/max-props",
814
+ "vue/next-tick-style",
815
+ "vue/no-arrow-functions-in-watch",
816
+ "vue/no-async-in-computed-properties",
817
+ "vue/no-computed-properties-in-data",
818
+ "vue/no-deprecated-data-object-declaration",
819
+ "vue/no-deprecated-delete-set",
820
+ "vue/no-deprecated-destroyed-lifecycle",
821
+ "vue/no-deprecated-events-api",
822
+ "vue/no-deprecated-model-definition",
823
+ "vue/no-deprecated-props-default-this",
824
+ "vue/no-deprecated-vue-config-keycodes",
825
+ "vue/no-dupe-keys",
826
+ "vue/no-export-in-script-setup",
827
+ "vue/no-expose-after-await",
828
+ "vue/no-import-compiler-macros",
829
+ "vue/no-lifecycle-after-await",
830
+ "vue/no-multiple-slot-args",
831
+ "vue/no-required-prop-with-default",
832
+ "vue/no-reserved-component-names",
833
+ "vue/no-reserved-keys",
834
+ "vue/no-reserved-props",
835
+ "vue/no-shared-component-data",
836
+ "vue/no-side-effects-in-computed-properties",
837
+ "vue/no-this-in-before-route-enter",
838
+ "vue/no-watch-after-await",
839
+ "vue/prefer-import-from-vue",
840
+ "vue/prop-name-casing",
841
+ "vue/require-default-export",
842
+ "vue/require-default-prop",
843
+ "vue/require-direct-export",
844
+ "vue/require-prop-type-constructor",
845
+ "vue/require-prop-types",
846
+ "vue/require-render-return",
847
+ "vue/require-slots-as-functions",
848
+ "vue/require-typed-ref",
849
+ "vue/return-in-computed-property",
850
+ "vue/return-in-emits-validator",
851
+ "vue/valid-define-emits",
852
+ "vue/valid-define-options",
853
+ "vue/valid-define-props",
854
+ "vue/valid-next-tick",
855
+ "yoda"
856
+ ]);
857
+ //#endregion
13
858
  //#region src/rules/oxlint-mapping.ts
14
859
  /**
860
+ * Per-rule mapping between the ESLint config and oxlint for hybrid mode.
861
+ *
862
+ * Every rule listed here is covered by oxlint: when the ESLint factory runs
863
+ * with `oxlint: true` it drops these rules, and the oxlint factory enables
864
+ * them (translated via {@link translateRuleToOxlint}).
865
+ *
866
+ * Rules NOT listed here stay in ESLint. Notable families that intentionally
867
+ * stay are documented in {@link staysInEslint}.
868
+ */
869
+ /**
15
870
  * Notable rule families that intentionally stay in ESLint in hybrid mode,
16
871
  * with the reason why.
17
872
  */
@@ -927,6 +1782,16 @@ function isTsgolintRule(rule) {
927
1782
  return oxlintRuleMapping[rule] === "tsgolint";
928
1783
  }
929
1784
  /**
1785
+ * Whether oxlint implements the rule natively (in Rust) under the name
1786
+ * {@link nativeOxlintName} gives it.
1787
+ *
1788
+ * @param rule - The canonical ESLint rule name.
1789
+ * @returns Whether a native oxlint rule of that name exists.
1790
+ */
1791
+ function hasNativeOxlintRule(rule) {
1792
+ return oxlintNativeRuleNames.has(nativeOxlintName(rule));
1793
+ }
1794
+ /**
930
1795
  * Translate a canonical ESLint rule name into its oxlint configuration name.
931
1796
  *
932
1797
  * @param rule - The canonical ESLint rule name.
@@ -937,13 +1802,9 @@ function translateRuleToOxlint(rule) {
937
1802
  if (oxcCovered !== void 0) return oxcCovered;
938
1803
  const target = oxlintRuleMapping[rule];
939
1804
  const { name, prefix } = splitRuleName(rule);
940
- if (target === "native") {
941
- if (prefix === "") return name;
942
- if (prefix === "ts") return TS_EXTENSION_TO_CORE.has(name) ? name : `typescript/${name}`;
943
- if (prefix === "unicorn") return `unicorn/${UNICORN_NATIVE_RENAMES[name] ?? name}`;
944
- return rule;
945
- }
1805
+ if (target === "native") return nativeOxlintName(rule);
946
1806
  if (target === "tsgolint") return `typescript/${name}`;
1807
+ if (target === void 0 && hasNativeOxlintRule(rule)) return nativeOxlintName(rule);
947
1808
  const renamed = oxlintJsPluginPrefixRenames[prefix];
948
1809
  return renamed === void 0 ? rule : `${renamed}/${name}`;
949
1810
  }
@@ -981,6 +1842,20 @@ function splitRuleName(rule) {
981
1842
  prefix: rule.slice(0, slashIndex)
982
1843
  };
983
1844
  }
1845
+ /**
1846
+ * The name a rule takes in an oxlint config when it runs natively, whether or
1847
+ * not such a rule exists.
1848
+ *
1849
+ * @param rule - The canonical ESLint rule name.
1850
+ * @returns The native oxlint rule name.
1851
+ */
1852
+ function nativeOxlintName(rule) {
1853
+ const { name, prefix } = splitRuleName(rule);
1854
+ if (prefix === "") return name;
1855
+ if (prefix === "ts") return TS_EXTENSION_TO_CORE.has(name) ? name : `typescript/${name}`;
1856
+ if (prefix === "unicorn") return `unicorn/${UNICORN_NATIVE_RENAMES[name] ?? name}`;
1857
+ return rule;
1858
+ }
984
1859
  //#endregion
985
1860
  //#region src/globs.ts
986
1861
  const GLOB_ROOT = [
@@ -1786,23 +2661,11 @@ function commentLengthRules({ maxLength, multiLineMaxLength, semanticComments, t
1786
2661
  }
1787
2662
  //#endregion
1788
2663
  //#region src/oxlint/utils.ts
1789
- const NATIVE_PLUGINS = /* @__PURE__ */ new Set([
1790
- "eslint",
1791
- "import",
1792
- "jest",
1793
- "jsdoc",
1794
- "jsx-a11y",
1795
- "nextjs",
1796
- "node",
1797
- "oxc",
1798
- "promise",
1799
- "react",
1800
- "react-perf",
1801
- "typescript",
1802
- "unicorn",
1803
- "vitest",
1804
- "vue"
1805
- ]);
2664
+ /**
2665
+ * Every plugin oxlint implements natively, derived from the generated rule
2666
+ * names so a new oxlint scope needs no edit here.
2667
+ */
2668
+ const NATIVE_PLUGINS = new Set(Array.from(oxlintNativeRuleNames, (rule) => rulePluginPrefix(rule)));
1806
2669
  /**
1807
2670
  * Whether a rule's plugin prefix names a plugin oxlint implements natively.
1808
2671
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isentinel/eslint-config",
3
- "version": "6.0.0-beta.25",
3
+ "version": "6.0.0-beta.26",
4
4
  "description": "iSentinel's ESLint config",
5
5
  "keywords": [
6
6
  "eslint-config",
@@ -142,7 +142,7 @@
142
142
  "typescript": "6.0.3",
143
143
  "unplugin-unused": "0.5.7",
144
144
  "vitest": "4.1.10",
145
- "@isentinel/eslint-config": "6.0.0-beta.25"
145
+ "@isentinel/eslint-config": "6.0.0-beta.26"
146
146
  },
147
147
  "peerDependencies": {
148
148
  "@vitest/eslint-plugin": "^1.6.4",