@d3lm/lint-preset 1.4.6 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +166 -0
- package/dist/bin/comments.js +3215 -0
- package/dist/bin/comments.js.map +1 -0
- package/dist/{chunk-AWWQD6SG.cjs → chunk-M3BAUCCR.cjs} +19 -27
- package/dist/chunk-M3BAUCCR.cjs.map +1 -0
- package/dist/{chunk-HEPSJI2W.js → chunk-SMTCD6GW.js} +19 -27
- package/dist/chunk-SMTCD6GW.js.map +1 -0
- package/dist/comments.cjs +1462 -0
- package/dist/comments.cjs.map +1 -0
- package/dist/comments.d.cts +257 -0
- package/dist/comments.d.ts +257 -0
- package/dist/comments.js +1460 -0
- package/dist/comments.js.map +1 -0
- package/dist/eslint.cjs +9 -9
- package/dist/eslint.js +1 -1
- package/dist/oxlint.cjs +10 -12
- package/dist/oxlint.cjs.map +1 -1
- package/dist/oxlint.js +6 -8
- package/dist/oxlint.js.map +1 -1
- package/dist/rules.cjs +50 -11
- package/dist/rules.cjs.map +1 -1
- package/dist/rules.js +50 -11
- package/dist/rules.js.map +1 -1
- package/package.json +13 -1
- package/dist/chunk-AWWQD6SG.cjs.map +0 -1
- package/dist/chunk-HEPSJI2W.js.map +0 -1
|
@@ -136,14 +136,13 @@ var unicornRulesJsPlugin = {
|
|
|
136
136
|
"unicornx/prefer-switch": "error",
|
|
137
137
|
"unicornx/template-indent": "error",
|
|
138
138
|
/**
|
|
139
|
-
* Native port exists but only in oxlint's nursery category, which can't be
|
|
140
|
-
*
|
|
139
|
+
* Native port exists but only in oxlint's nursery category, which can't be enabled from config,
|
|
140
|
+
* so we run the JS original instead.
|
|
141
141
|
*/
|
|
142
142
|
"unicornx/no-useless-iterator-to-array": "error",
|
|
143
143
|
/**
|
|
144
|
-
* Oxlint's port hardcodes uppercase hexadecimal digits, which fights
|
|
145
|
-
*
|
|
146
|
-
* lowercase option instead.
|
|
144
|
+
* Oxlint's port hardcodes uppercase hexadecimal digits, which fights Prettier's lowercase
|
|
145
|
+
* formatting, so we run the JS original with the lowercase option instead.
|
|
147
146
|
*/
|
|
148
147
|
"unicornx/number-literal-case": ["error", { hexadecimalValue: "lowercase" }]
|
|
149
148
|
};
|
|
@@ -163,6 +162,8 @@ var ABBREVIATION_REPLACEMENTS = {
|
|
|
163
162
|
props: false,
|
|
164
163
|
util: false,
|
|
165
164
|
utils: false,
|
|
165
|
+
lib: false,
|
|
166
|
+
libs: false,
|
|
166
167
|
param: false,
|
|
167
168
|
params: false,
|
|
168
169
|
arg: false,
|
|
@@ -257,9 +258,9 @@ var paddingLineEntries = [
|
|
|
257
258
|
next: ["case", "default"]
|
|
258
259
|
},
|
|
259
260
|
{
|
|
260
|
-
blankLine: "
|
|
261
|
+
blankLine: "always",
|
|
261
262
|
prev: "*",
|
|
262
|
-
next: "break"
|
|
263
|
+
next: ["break", "continue"]
|
|
263
264
|
},
|
|
264
265
|
{
|
|
265
266
|
blankLine: "always",
|
|
@@ -281,9 +282,8 @@ var paddingLineEntries = [
|
|
|
281
282
|
}
|
|
282
283
|
},
|
|
283
284
|
/**
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
* wins over the surrounding `*` rules.
|
|
285
|
+
* The rule applies the last entry that matches a statement pair, so the import-to-import entry
|
|
286
|
+
* must come after the surrounding `*` entries.
|
|
287
287
|
*/
|
|
288
288
|
{
|
|
289
289
|
blankLine: "always",
|
|
@@ -301,9 +301,8 @@ var paddingLineEntries = [
|
|
|
301
301
|
next: "import"
|
|
302
302
|
},
|
|
303
303
|
/**
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
* wins over the surrounding `*` rules.
|
|
304
|
+
* The rule applies the last entry that matches a statement pair, so the export-to-export entry
|
|
305
|
+
* must come after the surrounding `*` entries.
|
|
307
306
|
*/
|
|
308
307
|
{
|
|
309
308
|
blankLine: "always",
|
|
@@ -321,7 +320,7 @@ var paddingLineEntries = [
|
|
|
321
320
|
next: "export"
|
|
322
321
|
}
|
|
323
322
|
];
|
|
324
|
-
var jsdocTagLineOptions = ["
|
|
323
|
+
var jsdocTagLineOptions = ["never", { startLines: 1, applyToEndTag: false }];
|
|
325
324
|
function jsRulesOxlint(options = {}) {
|
|
326
325
|
const { preventAbbreviations: preventAbbreviationsOptions } = options;
|
|
327
326
|
const {
|
|
@@ -350,9 +349,8 @@ function jsRulesOxlint(options = {}) {
|
|
|
350
349
|
"@stylistic/padding-line-between-statements": ["error", ...paddingLineEntries],
|
|
351
350
|
"@stylistic/no-trailing-spaces": "error",
|
|
352
351
|
/**
|
|
353
|
-
* Indentation is owned by Prettier. Oxlint's @stylistic/indent port
|
|
354
|
-
*
|
|
355
|
-
* args inside ternaries), so we leave the rule off.
|
|
352
|
+
* Indentation is owned by Prettier. Oxlint's @stylistic/indent port diverges from eslint-stylistic on edge cases
|
|
353
|
+
* (e.g., multiline object args inside ternaries), so we leave the rule off.
|
|
356
354
|
*/
|
|
357
355
|
"@stylistic/indent": "off",
|
|
358
356
|
"@stylistic/no-multiple-empty-lines": ["error", { max: 1 }],
|
|
@@ -385,13 +383,12 @@ function jsRulesOxlint(options = {}) {
|
|
|
385
383
|
allowTypeEnd: false
|
|
386
384
|
}
|
|
387
385
|
],
|
|
388
|
-
// unicorn recommended, split between native oxlint ports and JS originals
|
|
389
386
|
...unicornRulesOxlint,
|
|
390
387
|
...unicornRulesJsPlugin,
|
|
391
388
|
/**
|
|
392
|
-
* Oxlint's built-in `unicorn` / `jsdoc` plugins don't implement these,
|
|
393
|
-
*
|
|
394
|
-
*
|
|
389
|
+
* Oxlint's built-in `unicorn` / `jsdoc` plugins don't implement these, so we wire the original JS
|
|
390
|
+
* plugins under aliased names (see jsPlugins in `src/oxlint.ts`). Rule IDs use the alias instead
|
|
391
|
+
* of the canonical prefix.
|
|
395
392
|
*/
|
|
396
393
|
"unicornx/name-replacements": [
|
|
397
394
|
"error",
|
|
@@ -545,11 +542,6 @@ function tsRulesOxlint(options = {}) {
|
|
|
545
542
|
...jsRulesOxlint(options),
|
|
546
543
|
...tsTypeAwareRulesOxlint,
|
|
547
544
|
...tsSyntaxRulesOxlint,
|
|
548
|
-
/**
|
|
549
|
-
* Oxlint exposes typescript-eslint rules under its own `typescript/`
|
|
550
|
-
* namespace, so rule ids are prefixed `typescript/` rather than
|
|
551
|
-
* `@typescript-eslint/`.
|
|
552
|
-
*/
|
|
553
545
|
"typescript/no-unused-vars": [
|
|
554
546
|
"error",
|
|
555
547
|
{
|
|
@@ -685,4 +677,4 @@ function generateFilterRegex(defaults, extensions = []) {
|
|
|
685
677
|
|
|
686
678
|
|
|
687
679
|
exports.unicornRulesEslint = unicornRulesEslint; exports.jsFileExtensions = jsFileExtensions; exports.jsRulesOxlint = jsRulesOxlint; exports.jsRulesEslint = jsRulesEslint; exports.reactFileExtensions = reactFileExtensions; exports.resolveReactRuleOptions = resolveReactRuleOptions; exports.reactRulesOxlint = reactRulesOxlint; exports.tsFileExtensions = tsFileExtensions; exports.tsRulesOxlint = tsRulesOxlint; exports.tsRulesEslint = tsRulesEslint;
|
|
688
|
-
//# sourceMappingURL=chunk-
|
|
680
|
+
//# sourceMappingURL=chunk-M3BAUCCR.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/lint-preset/lint-preset/dist/chunk-M3BAUCCR.cjs","../src/configs/unicorn.ts","../src/configs/abbreviations.ts","../src/configs/javascript.ts","../src/configs/react.ts","../src/configs/typescript.ts"],"names":[],"mappings":"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","file":"/home/runner/work/lint-preset/lint-preset/dist/chunk-M3BAUCCR.cjs","sourcesContent":[null,"import type { Linter } from 'eslint';\n\n/**\n * Mirrors `eslint-plugin-unicorn`'s recommended config, split by runtime.\n *\n * Oxlint natively implements most unicorn rules, so we enable those under the canonical\n * `unicorn/` prefix (fast, Rust). Rules oxlint hasn't ported run through the original JS\n * plugin, aliased as `unicornx` in `jsPlugins` (see `src/oxlint.ts`), because oxlint's\n * built-in plugin owns the `unicorn/` namespace.\n *\n * `unicorn/name-replacements` is also not ported. It lives in `javascript.ts` because it\n * takes user-configurable options.\n */\n\n/**\n * Lists the Unicorn recommended rules natively implemented by Oxlint, grouped by the oxlint category\n * they belong to. Only the correctness group is enabled by oxlint's defaults (as `warn`). Everything is\n * set explicitly to `error` to match the recommended config.\n */\nexport const unicornRulesOxlint: Linter.RulesRecord = {\n // correctness\n 'unicorn/no-await-in-promise-methods': 'error',\n 'unicorn/no-empty-file': 'warn',\n 'unicorn/no-invalid-fetch-options': 'error',\n 'unicorn/no-invalid-remove-event-listener': 'error',\n 'unicorn/no-new-array': 'error',\n 'unicorn/no-single-promise-in-promise-methods': 'error',\n 'unicorn/no-thenable': 'error',\n 'unicorn/no-unnecessary-await': 'error',\n 'unicorn/no-useless-fallback-in-spread': 'error',\n 'unicorn/no-useless-length-check': 'error',\n 'unicorn/no-useless-spread': 'error',\n 'unicorn/prefer-set-size': 'error',\n 'unicorn/prefer-string-starts-ends-with': 'error',\n\n // perf\n 'unicorn/prefer-array-find': 'error',\n 'unicorn/prefer-array-flat-map': 'error',\n 'unicorn/prefer-set-has': 'error',\n\n // restriction\n 'unicorn/no-abusive-eslint-disable': 'error',\n 'unicorn/no-anonymous-default-export': 'error',\n 'unicorn/no-array-for-each': 'error',\n 'unicorn/no-array-reduce': 'error',\n 'unicorn/no-document-cookie': 'error',\n 'unicorn/no-magic-array-flat-depth': 'error',\n 'unicorn/no-process-exit': 'error',\n 'unicorn/no-useless-error-capture-stack-trace': 'error',\n 'unicorn/prefer-modern-math-apis': 'error',\n 'unicorn/prefer-module': 'error',\n 'unicorn/prefer-node-protocol': 'error',\n 'unicorn/prefer-number-properties': 'error',\n\n // suspicious\n 'unicorn/consistent-function-scoping': 'error',\n 'unicorn/no-accessor-recursion': 'error',\n 'unicorn/no-array-reverse': 'error',\n 'unicorn/no-array-sort': 'error',\n 'unicorn/no-instanceof-builtins': 'error',\n 'unicorn/prefer-add-event-listener': 'error',\n 'unicorn/require-module-specifiers': 'error',\n\n // pedantic\n 'unicorn/consistent-assert': 'error',\n 'unicorn/consistent-empty-array-spread': 'error',\n 'unicorn/escape-case': 'error',\n 'unicorn/explicit-length-check': 'error',\n 'unicorn/new-for-builtins': 'error',\n 'unicorn/no-array-callback-reference': 'error',\n 'unicorn/no-hex-escape': 'error',\n 'unicorn/no-immediate-mutation': 'error',\n 'unicorn/no-lonely-if': 'error',\n 'unicorn/no-negation-in-equality-check': 'error',\n 'unicorn/no-new-buffer': 'error',\n 'unicorn/no-object-as-default-parameter': 'error',\n 'unicorn/no-static-only-class': 'error',\n 'unicorn/no-this-assignment': 'error',\n 'unicorn/no-typeof-undefined': 'error',\n 'unicorn/no-unnecessary-array-flat-depth': 'error',\n 'unicorn/no-unnecessary-array-splice-count': 'error',\n 'unicorn/no-unnecessary-slice-end': 'error',\n 'unicorn/no-unreadable-iife': 'error',\n 'unicorn/no-useless-promise-resolve-reject': 'error',\n 'unicorn/no-useless-switch-case': 'error',\n 'unicorn/prefer-array-flat': 'error',\n 'unicorn/prefer-array-some': 'error',\n 'unicorn/prefer-at': 'error',\n 'unicorn/prefer-blob-reading-methods': 'error',\n 'unicorn/prefer-code-point': 'error',\n 'unicorn/prefer-date-now': 'error',\n 'unicorn/prefer-dom-node-append': 'error',\n 'unicorn/prefer-dom-node-dataset': 'error',\n 'unicorn/prefer-dom-node-remove': 'error',\n 'unicorn/prefer-event-target': 'error',\n 'unicorn/prefer-math-min-max': 'error',\n 'unicorn/prefer-math-trunc': 'error',\n 'unicorn/prefer-native-coercion-functions': 'error',\n 'unicorn/prefer-prototype-methods': 'error',\n 'unicorn/prefer-query-selector': 'error',\n 'unicorn/prefer-regexp-test': 'error',\n 'unicorn/prefer-string-replace-all': 'error',\n 'unicorn/prefer-string-slice': 'error',\n 'unicorn/prefer-top-level-await': 'error',\n 'unicorn/prefer-type-error': 'error',\n 'unicorn/require-number-to-fixed-digits-argument': 'error',\n\n // style\n 'unicorn/catch-error-name': ['error', { name: 'error' }],\n 'unicorn/consistent-date-clone': 'error',\n 'unicorn/consistent-existence-index-check': 'error',\n 'unicorn/consistent-template-literal-escape': 'error',\n 'unicorn/empty-brace-spaces': 'error',\n 'unicorn/error-message': 'error',\n 'unicorn/no-array-method-this-argument': 'error',\n 'unicorn/no-await-expression-member': 'error',\n 'unicorn/no-console-spaces': 'error',\n 'unicorn/no-unreadable-array-destructuring': 'error',\n 'unicorn/no-useless-collection-argument': 'error',\n 'unicorn/no-zero-fractions': 'error',\n 'unicorn/numeric-separators-style': 'error',\n 'unicorn/prefer-array-index-of': 'error',\n 'unicorn/prefer-bigint-literals': 'error',\n 'unicorn/prefer-class-fields': 'error',\n 'unicorn/prefer-classlist-toggle': 'error',\n 'unicorn/prefer-default-parameters': 'error',\n 'unicorn/prefer-dom-node-text-content': 'error',\n 'unicorn/prefer-global-this': 'error',\n 'unicorn/prefer-includes': 'error',\n 'unicorn/prefer-keyboard-event-key': 'error',\n 'unicorn/prefer-logical-operator-over-ternary': 'error',\n 'unicorn/prefer-modern-dom-apis': 'error',\n 'unicorn/prefer-negative-index': 'error',\n 'unicorn/prefer-object-from-entries': 'error',\n 'unicorn/prefer-optional-catch-binding': 'error',\n 'unicorn/prefer-reflect-apply': 'error',\n 'unicorn/prefer-response-static-json': 'error',\n 'unicorn/prefer-spread': 'error',\n 'unicorn/prefer-string-raw': 'error',\n 'unicorn/prefer-string-trim-start-end': 'error',\n 'unicorn/prefer-structured-clone': 'error',\n 'unicorn/relative-url-style': 'error',\n 'unicorn/require-array-join-separator': 'error',\n 'unicorn/require-module-attributes': 'error',\n 'unicorn/switch-case-braces': 'error',\n 'unicorn/switch-case-break-position': 'error',\n 'unicorn/text-encoding-identifier-case': 'error',\n 'unicorn/throw-new-error': 'error',\n};\n\n/**\n * Lists the Unicorn recommended rules that Oxlint hasn't ported. They run inside Oxlint through the\n * original JS plugin under the `unicornx` alias.\n */\nexport const unicornRulesJsPlugin: Linter.RulesRecord = {\n 'unicornx/isolated-functions': 'error',\n 'unicornx/no-for-loop': 'error',\n 'unicornx/no-named-default': 'error',\n 'unicornx/no-unnecessary-polyfills': 'error',\n 'unicornx/no-unreadable-for-of-expression': 'error',\n 'unicornx/prefer-export-from': 'error',\n 'unicornx/prefer-simple-condition-first': 'error',\n 'unicornx/prefer-single-call': 'error',\n 'unicornx/prefer-switch': 'error',\n 'unicornx/template-indent': 'error',\n\n /**\n * Native port exists but only in oxlint's nursery category, which can't be enabled from config,\n * so we run the JS original instead.\n */\n 'unicornx/no-useless-iterator-to-array': 'error',\n\n /**\n * Oxlint's port hardcodes uppercase hexadecimal digits, which fights Prettier's lowercase\n * formatting, so we run the JS original with the lowercase option instead.\n */\n 'unicornx/number-literal-case': ['error', { hexadecimalValue: 'lowercase' }],\n};\n\n/**\n * Lists the Unicorn recommended rules that can't run inside Oxlint's JS-plugin host yet because the\n * compat layer is missing ESLint APIs (e.g. `sourceCode.getDisableDirectives`). ESLint picks them up\n * after Oxlint runs.\n */\nexport const unicornRulesEslint: Linter.RulesRecord = {\n 'unicorn/expiring-todo-comments': 'error',\n};\n","export const DEFAULT_ABBREVIATION_ALLOW_LIST = ['fn', 'cb', 'err', 'prev', 'dev', 'i'];\n\nexport const ABBREVIATION_REPLACEMENTS: Record<string, Record<string, boolean> | false> = {\n ref: false,\n refs: false,\n dev: false,\n dir: false,\n env: false,\n prop: false,\n props: false,\n util: false,\n utils: false,\n lib: false,\n libs: false,\n param: false,\n params: false,\n arg: false,\n args: false,\n db: false,\n ev: { event: true },\n val: { value: true },\n msg: { message: true },\n el: { element: true },\n elem: { element: true },\n btn: { button: true },\n cb: { callback: true },\n fn: { function: true },\n err: { error: true },\n opts: { options: true },\n cfg: { config: true },\n obj: { object: true },\n arr: { array: true },\n str: { string: true },\n num: { number: true },\n curr: { current: true },\n len: { length: true },\n e: { event: true, error: true },\n};\n","import type { Linter } from 'eslint';\nimport { ABBREVIATION_REPLACEMENTS, DEFAULT_ABBREVIATION_ALLOW_LIST } from './abbreviations.js';\nimport { unicornRulesJsPlugin, unicornRulesOxlint } from './unicorn.js';\n\nexport const jsFileExtensions = ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.cjs'];\n\nexport const paddingLineEntries = [\n {\n blankLine: 'always',\n prev: '*',\n next: ['block', 'block-like', 'class', 'const', 'let'],\n },\n {\n blankLine: 'always',\n prev: 'block',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: ['const'],\n next: '*',\n },\n {\n blankLine: 'always',\n prev: ['let'],\n next: '*',\n },\n {\n blankLine: 'any',\n prev: ['const'],\n next: ['const'],\n },\n {\n blankLine: 'any',\n prev: ['let'],\n next: ['let'],\n },\n {\n blankLine: 'always',\n prev: ['let'],\n next: ['const'],\n },\n {\n blankLine: 'always',\n prev: ['const'],\n next: ['let'],\n },\n {\n blankLine: 'always',\n prev: ['singleline-const'],\n next: ['multiline-const'],\n },\n {\n blankLine: 'always',\n prev: ['multiline-const'],\n next: ['singleline-const'],\n },\n {\n blankLine: 'always',\n prev: ['singleline-let'],\n next: ['multiline-let'],\n },\n {\n blankLine: 'always',\n prev: ['multiline-let'],\n next: ['singleline-let'],\n },\n {\n blankLine: 'any',\n prev: ['case', 'block', 'block-like'],\n next: ['case', 'default'],\n },\n {\n blankLine: 'always',\n prev: '*',\n next: ['break', 'continue'],\n },\n {\n blankLine: 'always',\n prev: 'if',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: {\n selector:\n 'ExpressionStatement:matches([expression.type=\"CallExpression\"], [expression.type=\"AwaitExpression\"][expression.argument.type=\"CallExpression\"])',\n },\n next: { selector: 'ExpressionStatement[expression.type=\"AssignmentExpression\"]' },\n },\n {\n blankLine: 'always',\n prev: { selector: 'ExpressionStatement[expression.type=\"AssignmentExpression\"]' },\n next: {\n selector:\n 'ExpressionStatement:matches([expression.type=\"CallExpression\"], [expression.type=\"AwaitExpression\"][expression.argument.type=\"CallExpression\"])',\n },\n },\n /**\n * The rule applies the last entry that matches a statement pair, so the import-to-import entry\n * must come after the surrounding `*` entries.\n */\n {\n blankLine: 'always',\n prev: 'import',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: '*',\n next: 'import',\n },\n {\n blankLine: 'any',\n prev: 'import',\n next: 'import',\n },\n /**\n * The rule applies the last entry that matches a statement pair, so the export-to-export entry\n * must come after the surrounding `*` entries.\n */\n {\n blankLine: 'always',\n prev: 'export',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: '*',\n next: 'export',\n },\n {\n blankLine: 'any',\n prev: 'export',\n next: 'export',\n },\n];\n\nexport const jsdocTagLineOptions = ['never', { startLines: 1, applyToEndTag: false }];\n\nexport interface JavaScriptRuleOptions {\n preventAbbreviations?: {\n allowList?: string[];\n inheritAllowList?: boolean;\n replacements?: Record<string, Record<string, boolean> | false>;\n inheritReplacements?: boolean;\n };\n}\n\nexport function jsRulesOxlint(options: JavaScriptRuleOptions = {}): Linter.RulesRecord {\n const { preventAbbreviations: preventAbbreviationsOptions } = options;\n\n const {\n inheritAllowList = true,\n inheritReplacements = true,\n allowList = [],\n replacements = {},\n } = preventAbbreviationsOptions ?? {};\n\n const effectiveAllowList = inheritAllowList ? [...DEFAULT_ABBREVIATION_ALLOW_LIST, ...allowList] : allowList;\n\n return {\n 'consistent-return': 'error',\n curly: ['error', 'all'],\n 'arrow-body-style': 'off',\n 'dot-notation': 'error',\n 'no-debugger': 'warn',\n 'no-unused-vars': 'off',\n 'no-async-promise-executor': 'error',\n 'no-case-declarations': 'error',\n 'default-case-last': 'error',\n 'no-cond-assign': 'error',\n 'no-return-assign': ['error', 'always'],\n 'no-dynamic-delete': 'off',\n 'no-unneeded-ternary': 'error',\n 'object-shorthand': 'error',\n 'no-constant-condition': ['error', { checkLoops: false }],\n\n '@stylistic/padding-line-between-statements': ['error', ...paddingLineEntries],\n '@stylistic/no-trailing-spaces': 'error',\n\n /**\n * Indentation is owned by Prettier. Oxlint's @stylistic/indent port diverges from eslint-stylistic on edge cases\n * (e.g., multiline object args inside ternaries), so we leave the rule off.\n */\n '@stylistic/indent': 'off',\n '@stylistic/no-multiple-empty-lines': ['error', { max: 1 }],\n '@stylistic/multiline-comment-style': ['error', 'starred-block'],\n '@stylistic/spaced-comment': [\n 'error',\n 'always',\n {\n block: { balanced: true },\n },\n ],\n '@stylistic/brace-style': ['error', '1tbs'],\n '@stylistic/lines-around-comment': [\n 'error',\n {\n beforeBlockComment: true,\n beforeLineComment: true,\n allowBlockStart: true,\n allowBlockEnd: false,\n allowObjectStart: true,\n allowObjectEnd: false,\n allowArrayStart: true,\n allowArrayEnd: true,\n allowClassStart: true,\n allowInterfaceStart: true,\n allowInterfaceEnd: true,\n allowEnumStart: true,\n allowEnumEnd: true,\n allowTypeStart: true,\n allowTypeEnd: false,\n },\n ],\n\n ...unicornRulesOxlint,\n ...unicornRulesJsPlugin,\n\n /**\n * Oxlint's built-in `unicorn` / `jsdoc` plugins don't implement these, so we wire the original JS\n * plugins under aliased names (see jsPlugins in `src/oxlint.ts`). Rule IDs use the alias instead\n * of the canonical prefix.\n */\n 'unicornx/name-replacements': [\n 'error',\n {\n replacements: inheritReplacements ? { ...ABBREVIATION_REPLACEMENTS, ...replacements } : replacements,\n allowList: Object.fromEntries(effectiveAllowList.map((name) => [name, true])),\n },\n ],\n\n 'jsdocx/tag-lines': ['error', ...jsdocTagLineOptions],\n };\n}\n\n/**\n * These rules can't run under Oxlint. They are ESLint-core rules that Oxlint hasn't implemented\n * (`prefer-arrow-callback`) or only ships in its nursery category (`no-useless-assignment`), and no\n * plugin we can alias into oxlint's `jsPlugins` exposes them, because the `@eslint/js` package only\n * ships configs, not a raw `rules` object. ESLint picks them up after Oxlint runs.\n */\nexport function jsRulesEslint(_options: JavaScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n 'prefer-arrow-callback': 'error',\n 'no-useless-assignment': 'error',\n };\n}\n","import type { Linter } from 'eslint';\n\nexport interface ReactRuleOptions {\n fastRefresh?: boolean;\n performance?: boolean;\n}\n\nexport type ReactConfigOptions = boolean | ReactRuleOptions;\n\ninterface ResolvedReactRuleOptions {\n fastRefresh: boolean;\n performance: boolean;\n}\n\nexport const reactFileExtensions = ['**/*.jsx', '**/*.tsx'];\n\nexport function resolveReactRuleOptions(options: ReactConfigOptions = false): ResolvedReactRuleOptions {\n if (options === false) {\n return {\n fastRefresh: false,\n performance: false,\n };\n }\n\n if (options === true) {\n return {\n fastRefresh: true,\n performance: true,\n };\n }\n\n return {\n fastRefresh: options.fastRefresh ?? true,\n performance: options.performance ?? true,\n };\n}\n\nexport function reactRulesOxlint(options: ReactConfigOptions = false): Linter.RulesRecord {\n const resolvedOptions = resolveReactRuleOptions(options);\n\n return {\n 'react/jsx-key': 'error',\n 'react/jsx-no-duplicate-props': 'error',\n 'react/no-children-prop': 'error',\n 'react/no-danger-with-children': 'error',\n 'react/void-dom-elements-no-children': 'error',\n 'react/no-unknown-property': 'error',\n 'react/style-prop-object': 'error',\n 'react/button-has-type': 'error',\n 'react/checked-requires-onchange-or-readonly': 'error',\n 'react/forward-ref-uses-ref': 'error',\n 'react/jsx-props-no-spread-multi': 'error',\n 'react/jsx-no-script-url': 'error',\n 'react/jsx-no-target-blank': 'error',\n 'react/jsx-no-constructed-context-values': 'error',\n 'react/no-unstable-nested-components': 'error',\n 'react/no-array-index-key': 'warn',\n 'react/no-object-type-as-default-prop': 'warn',\n 'react/iframe-missing-sandbox': 'error',\n 'react/no-danger': 'warn',\n\n ...(resolvedOptions.fastRefresh && {\n 'react/only-export-components': ['warn', { allowConstantExport: true }],\n }),\n\n ...(resolvedOptions.performance && {\n 'react-perf/jsx-no-new-object-as-prop': 'warn',\n 'react-perf/jsx-no-new-array-as-prop': 'warn',\n 'react-perf/jsx-no-new-function-as-prop': 'warn',\n 'react-perf/jsx-no-jsx-as-prop': 'warn',\n }),\n };\n}\n","import type { Linter } from 'eslint';\nimport { jsRulesOxlint, type JavaScriptRuleOptions } from './javascript.js';\n\nexport const tsFileExtensions = ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'];\n\nconst tsIgnoreDescriptionFormat = String.raw`^: TS\\d+ because .+$`;\n\nexport interface TypeScriptRuleOptions extends JavaScriptRuleOptions {\n namingConvention?: {\n variable?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n parameter?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n typeLike?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n memberLike?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n function?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n };\n}\n\ninterface NamingConventionFormatOptions {\n inheritFormat?: boolean;\n format?: string[];\n}\n\n/**\n * Lists the type-aware typescript-eslint rules that Oxlint executes natively through tsgolint (`options.typeAware`).\n * They mirror what typescript-eslint's `strictTypeChecked` + `stylisticTypeChecked` presets enabled when these rules\n * still ran under ESLint (same severities, same options), so moving them here changed which engine serves them,\n * not the behavior.\n *\n * Type-aware rules in oxlint's `correctness` category (e.g. `await-thenable`,\n * `unbound-method`) are not listed. They already run via the default category,\n * as `warn`, matching the pre-migration state.\n *\n * `typescript/naming-convention` is one of the two typescript-eslint type-aware rules tsgolint\n * doesn't implement. It stays in ESLint (see {@link tsRulesEslint}).\n */\nexport const tsTypeAwareRulesOxlint: Linter.RulesRecord = {\n 'typescript/no-confusing-void-expression': 'error',\n 'typescript/no-deprecated': 'error',\n 'typescript/no-floating-promises': 'error',\n 'typescript/no-misused-promises': 'error',\n 'typescript/no-mixed-enums': 'error',\n 'typescript/no-unnecessary-boolean-literal-compare': 'error',\n 'typescript/no-unnecessary-condition': 'error',\n 'typescript/no-unnecessary-template-expression': 'error',\n 'typescript/no-unnecessary-type-arguments': 'error',\n 'typescript/no-unnecessary-type-assertion': 'error',\n 'typescript/no-unnecessary-type-conversion': 'error',\n 'typescript/no-unnecessary-type-parameters': 'error',\n 'typescript/no-unsafe-argument': 'error',\n 'typescript/no-unsafe-assignment': 'error',\n 'typescript/no-unsafe-call': 'error',\n 'typescript/no-unsafe-enum-comparison': 'error',\n 'typescript/no-unsafe-member-access': 'error',\n 'typescript/no-unsafe-return': 'error',\n 'typescript/non-nullable-type-assertion-style': 'error',\n 'typescript/only-throw-error': 'error',\n 'typescript/prefer-find': 'error',\n 'typescript/prefer-includes': 'error',\n 'typescript/prefer-nullish-coalescing': ['error', { ignorePrimitives: true }],\n 'typescript/prefer-optional-chain': 'error',\n 'typescript/prefer-promise-reject-errors': 'error',\n 'typescript/prefer-reduce-type-parameter': 'error',\n 'typescript/prefer-regexp-exec': 'error',\n 'typescript/prefer-return-this-type': 'error',\n 'typescript/prefer-string-starts-ends-with': 'error',\n 'typescript/related-getter-setter-pairs': 'error',\n 'typescript/restrict-plus-operands': [\n 'error',\n {\n allowAny: false,\n allowBoolean: false,\n allowNullish: false,\n allowNumberAndString: false,\n allowRegExp: false,\n },\n ],\n 'typescript/return-await': ['error', 'error-handling-correctness-only'],\n 'typescript/use-unknown-in-catch-callback-variable': 'error',\n};\n\n/**\n * Lists the syntax-only rules that Oxlint ports natively and that used to reach ESLint through\n * typescript-eslint's presets. They are the `strictTypeChecked` and `stylisticTypeChecked` rules that\n * don't need type information, plus the ESLint-core rules that typescript-eslint's `eslintRecommended`\n * config raises for TypeScript files (hence the `eslint/` prefix and the TS-files-only scope).\n */\nexport const tsSyntaxRulesOxlint: Linter.RulesRecord = {\n 'typescript/adjacent-overload-signatures': 'error',\n 'typescript/ban-tslint-comment': 'error',\n 'typescript/class-literal-property-style': 'error',\n 'typescript/consistent-generic-constructors': 'error',\n 'typescript/consistent-indexed-object-style': 'error',\n 'typescript/consistent-type-assertions': 'error',\n 'typescript/consistent-type-definitions': 'error',\n 'typescript/no-array-constructor': 'error',\n 'typescript/no-confusing-non-null-assertion': 'error',\n 'typescript/no-empty-object-type': 'error',\n 'typescript/no-extraneous-class': 'error',\n 'typescript/no-inferrable-types': 'error',\n 'typescript/no-invalid-void-type': 'error',\n 'typescript/no-namespace': 'error',\n 'typescript/no-non-null-asserted-nullish-coalescing': 'error',\n 'typescript/no-require-imports': 'error',\n 'typescript/no-unnecessary-type-constraint': 'error',\n 'typescript/no-unsafe-function-type': 'error',\n 'typescript/no-useless-constructor': 'error',\n 'typescript/prefer-for-of': 'error',\n 'typescript/prefer-function-type': 'error',\n 'typescript/prefer-literal-enum-member': 'error',\n 'typescript/unified-signatures': 'error',\n\n 'eslint/no-var': 'error',\n 'eslint/prefer-const': ['error', { destructuring: 'any', ignoreReadBeforeAssign: false }],\n 'eslint/prefer-rest-params': 'error',\n 'eslint/prefer-spread': 'error',\n};\n\nexport function tsRulesOxlint(options: TypeScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n ...jsRulesOxlint(options),\n\n ...tsTypeAwareRulesOxlint,\n ...tsSyntaxRulesOxlint,\n\n 'typescript/no-unused-vars': [\n 'error',\n {\n argsIgnorePattern: '^_',\n ignoreRestSiblings: true,\n },\n ],\n 'typescript/no-non-null-assertion': 'error',\n 'typescript/no-empty-function': 'off',\n 'typescript/no-explicit-any': 'off',\n 'typescript/no-base-to-string': 'off',\n 'typescript/no-dynamic-delete': 'off',\n 'typescript/no-extra-non-null-assertion': 'error',\n 'typescript/no-non-null-asserted-optional-chain': 'error',\n 'typescript/explicit-module-boundary-types': 'off',\n 'typescript/ban-ts-comment': [\n 'error',\n {\n 'ts-expect-error': { descriptionFormat: tsIgnoreDescriptionFormat },\n 'ts-ignore': { descriptionFormat: tsIgnoreDescriptionFormat },\n 'ts-nocheck': true,\n 'ts-check': false,\n },\n ],\n\n '@stylistic/type-annotation-spacing': 'error',\n\n // comment handling conflicts with the padding-line heuristics\n '@stylistic/lines-around-comment': 'off',\n };\n}\n\n/**\n * Only rules Oxlint can't run remain here. `naming-convention` is one of the two typescript-eslint\n * type-aware rules tsgolint doesn't implement, and `explicit-member-accessibility` has no Oxlint\n * port at all.\n */\nexport function tsRulesEslint(options: TypeScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n ...getESLintNamingConventionRule(options.namingConvention),\n '@typescript-eslint/explicit-member-accessibility': ['error', { accessibility: 'no-public' }],\n '@typescript-eslint/no-dynamic-delete': 'off',\n '@typescript-eslint/array-type': 'off',\n '@typescript-eslint/require-await': 'off',\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/no-unused-vars': [\n 'error',\n {\n argsIgnorePattern: '^_',\n varsIgnorePattern: '^_',\n caughtErrorsIgnorePattern: '^_',\n destructuredArrayIgnorePattern: '^_',\n ignoreRestSiblings: true,\n },\n ],\n };\n}\n\nexport function getESLintNamingConventionRule(\n extensions?: TypeScriptRuleOptions['namingConvention'],\n): Linter.RulesRecord {\n const oxlintRules = getNamingConventionRule(extensions);\n\n return {\n '@typescript-eslint/naming-convention': oxlintRules['typescript/naming-convention'],\n };\n}\n\nexport function getNamingConventionRule(extensions?: TypeScriptRuleOptions['namingConvention']): Linter.RulesRecord {\n return {\n 'typescript/naming-convention': [\n 'error',\n {\n selector: ['variable'],\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.variable),\n leadingUnderscore: 'allowSingleOrDouble',\n trailingUnderscore: 'forbid',\n filter: {\n regex: generateFilterRegex(['__dirname'], extensions?.variable?.exceptions),\n match: false,\n },\n },\n {\n selector: ['function'],\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.function),\n leadingUnderscore: 'allowSingleOrDouble',\n trailingUnderscore: 'forbid',\n filter: {\n regex: generateFilterRegex(['__dirname'], extensions?.function?.exceptions),\n match: false,\n },\n },\n {\n selector: 'parameter',\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.parameter),\n leadingUnderscore: 'allow',\n ...(extensions?.parameter?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.parameter.exceptions),\n match: false,\n },\n }),\n },\n {\n selector: 'typeLike',\n format: mergeFormat(['PascalCase'], extensions?.typeLike),\n ...(extensions?.typeLike?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.typeLike.exceptions),\n match: false,\n },\n }),\n },\n {\n selector: 'memberLike',\n modifiers: ['private'],\n format: mergeFormat(['camelCase', 'PascalCase'], extensions?.memberLike),\n leadingUnderscore: 'require',\n ...(extensions?.memberLike?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.memberLike.exceptions),\n match: false,\n },\n }),\n },\n ],\n };\n}\n\nfunction mergeFormat(defaults: string[], extensions?: NamingConventionFormatOptions) {\n return [...new Set([...((extensions?.inheritFormat ?? true) ? defaults : []), ...(extensions?.format ?? [])])];\n}\n\nfunction generateFilterRegex(defaults: string[], extensions: string[] = []) {\n return `^(${[...defaults, ...extensions].join('|')})$`;\n}\n"]}
|
|
@@ -136,14 +136,13 @@ var unicornRulesJsPlugin = {
|
|
|
136
136
|
"unicornx/prefer-switch": "error",
|
|
137
137
|
"unicornx/template-indent": "error",
|
|
138
138
|
/**
|
|
139
|
-
* Native port exists but only in oxlint's nursery category, which can't be
|
|
140
|
-
*
|
|
139
|
+
* Native port exists but only in oxlint's nursery category, which can't be enabled from config,
|
|
140
|
+
* so we run the JS original instead.
|
|
141
141
|
*/
|
|
142
142
|
"unicornx/no-useless-iterator-to-array": "error",
|
|
143
143
|
/**
|
|
144
|
-
* Oxlint's port hardcodes uppercase hexadecimal digits, which fights
|
|
145
|
-
*
|
|
146
|
-
* lowercase option instead.
|
|
144
|
+
* Oxlint's port hardcodes uppercase hexadecimal digits, which fights Prettier's lowercase
|
|
145
|
+
* formatting, so we run the JS original with the lowercase option instead.
|
|
147
146
|
*/
|
|
148
147
|
"unicornx/number-literal-case": ["error", { hexadecimalValue: "lowercase" }]
|
|
149
148
|
};
|
|
@@ -163,6 +162,8 @@ var ABBREVIATION_REPLACEMENTS = {
|
|
|
163
162
|
props: false,
|
|
164
163
|
util: false,
|
|
165
164
|
utils: false,
|
|
165
|
+
lib: false,
|
|
166
|
+
libs: false,
|
|
166
167
|
param: false,
|
|
167
168
|
params: false,
|
|
168
169
|
arg: false,
|
|
@@ -257,9 +258,9 @@ var paddingLineEntries = [
|
|
|
257
258
|
next: ["case", "default"]
|
|
258
259
|
},
|
|
259
260
|
{
|
|
260
|
-
blankLine: "
|
|
261
|
+
blankLine: "always",
|
|
261
262
|
prev: "*",
|
|
262
|
-
next: "break"
|
|
263
|
+
next: ["break", "continue"]
|
|
263
264
|
},
|
|
264
265
|
{
|
|
265
266
|
blankLine: "always",
|
|
@@ -281,9 +282,8 @@ var paddingLineEntries = [
|
|
|
281
282
|
}
|
|
282
283
|
},
|
|
283
284
|
/**
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
* wins over the surrounding `*` rules.
|
|
285
|
+
* The rule applies the last entry that matches a statement pair, so the import-to-import entry
|
|
286
|
+
* must come after the surrounding `*` entries.
|
|
287
287
|
*/
|
|
288
288
|
{
|
|
289
289
|
blankLine: "always",
|
|
@@ -301,9 +301,8 @@ var paddingLineEntries = [
|
|
|
301
301
|
next: "import"
|
|
302
302
|
},
|
|
303
303
|
/**
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
* wins over the surrounding `*` rules.
|
|
304
|
+
* The rule applies the last entry that matches a statement pair, so the export-to-export entry
|
|
305
|
+
* must come after the surrounding `*` entries.
|
|
307
306
|
*/
|
|
308
307
|
{
|
|
309
308
|
blankLine: "always",
|
|
@@ -321,7 +320,7 @@ var paddingLineEntries = [
|
|
|
321
320
|
next: "export"
|
|
322
321
|
}
|
|
323
322
|
];
|
|
324
|
-
var jsdocTagLineOptions = ["
|
|
323
|
+
var jsdocTagLineOptions = ["never", { startLines: 1, applyToEndTag: false }];
|
|
325
324
|
function jsRulesOxlint(options = {}) {
|
|
326
325
|
const { preventAbbreviations: preventAbbreviationsOptions } = options;
|
|
327
326
|
const {
|
|
@@ -350,9 +349,8 @@ function jsRulesOxlint(options = {}) {
|
|
|
350
349
|
"@stylistic/padding-line-between-statements": ["error", ...paddingLineEntries],
|
|
351
350
|
"@stylistic/no-trailing-spaces": "error",
|
|
352
351
|
/**
|
|
353
|
-
* Indentation is owned by Prettier. Oxlint's @stylistic/indent port
|
|
354
|
-
*
|
|
355
|
-
* args inside ternaries), so we leave the rule off.
|
|
352
|
+
* Indentation is owned by Prettier. Oxlint's @stylistic/indent port diverges from eslint-stylistic on edge cases
|
|
353
|
+
* (e.g., multiline object args inside ternaries), so we leave the rule off.
|
|
356
354
|
*/
|
|
357
355
|
"@stylistic/indent": "off",
|
|
358
356
|
"@stylistic/no-multiple-empty-lines": ["error", { max: 1 }],
|
|
@@ -385,13 +383,12 @@ function jsRulesOxlint(options = {}) {
|
|
|
385
383
|
allowTypeEnd: false
|
|
386
384
|
}
|
|
387
385
|
],
|
|
388
|
-
// unicorn recommended, split between native oxlint ports and JS originals
|
|
389
386
|
...unicornRulesOxlint,
|
|
390
387
|
...unicornRulesJsPlugin,
|
|
391
388
|
/**
|
|
392
|
-
* Oxlint's built-in `unicorn` / `jsdoc` plugins don't implement these,
|
|
393
|
-
*
|
|
394
|
-
*
|
|
389
|
+
* Oxlint's built-in `unicorn` / `jsdoc` plugins don't implement these, so we wire the original JS
|
|
390
|
+
* plugins under aliased names (see jsPlugins in `src/oxlint.ts`). Rule IDs use the alias instead
|
|
391
|
+
* of the canonical prefix.
|
|
395
392
|
*/
|
|
396
393
|
"unicornx/name-replacements": [
|
|
397
394
|
"error",
|
|
@@ -545,11 +542,6 @@ function tsRulesOxlint(options = {}) {
|
|
|
545
542
|
...jsRulesOxlint(options),
|
|
546
543
|
...tsTypeAwareRulesOxlint,
|
|
547
544
|
...tsSyntaxRulesOxlint,
|
|
548
|
-
/**
|
|
549
|
-
* Oxlint exposes typescript-eslint rules under its own `typescript/`
|
|
550
|
-
* namespace, so rule ids are prefixed `typescript/` rather than
|
|
551
|
-
* `@typescript-eslint/`.
|
|
552
|
-
*/
|
|
553
545
|
"typescript/no-unused-vars": [
|
|
554
546
|
"error",
|
|
555
547
|
{
|
|
@@ -685,4 +677,4 @@ export {
|
|
|
685
677
|
tsRulesOxlint,
|
|
686
678
|
tsRulesEslint
|
|
687
679
|
};
|
|
688
|
-
//# sourceMappingURL=chunk-
|
|
680
|
+
//# sourceMappingURL=chunk-SMTCD6GW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/configs/unicorn.ts","../src/configs/abbreviations.ts","../src/configs/javascript.ts","../src/configs/react.ts","../src/configs/typescript.ts"],"sourcesContent":["import type { Linter } from 'eslint';\n\n/**\n * Mirrors `eslint-plugin-unicorn`'s recommended config, split by runtime.\n *\n * Oxlint natively implements most unicorn rules, so we enable those under the canonical\n * `unicorn/` prefix (fast, Rust). Rules oxlint hasn't ported run through the original JS\n * plugin, aliased as `unicornx` in `jsPlugins` (see `src/oxlint.ts`), because oxlint's\n * built-in plugin owns the `unicorn/` namespace.\n *\n * `unicorn/name-replacements` is also not ported. It lives in `javascript.ts` because it\n * takes user-configurable options.\n */\n\n/**\n * Lists the Unicorn recommended rules natively implemented by Oxlint, grouped by the oxlint category\n * they belong to. Only the correctness group is enabled by oxlint's defaults (as `warn`). Everything is\n * set explicitly to `error` to match the recommended config.\n */\nexport const unicornRulesOxlint: Linter.RulesRecord = {\n // correctness\n 'unicorn/no-await-in-promise-methods': 'error',\n 'unicorn/no-empty-file': 'warn',\n 'unicorn/no-invalid-fetch-options': 'error',\n 'unicorn/no-invalid-remove-event-listener': 'error',\n 'unicorn/no-new-array': 'error',\n 'unicorn/no-single-promise-in-promise-methods': 'error',\n 'unicorn/no-thenable': 'error',\n 'unicorn/no-unnecessary-await': 'error',\n 'unicorn/no-useless-fallback-in-spread': 'error',\n 'unicorn/no-useless-length-check': 'error',\n 'unicorn/no-useless-spread': 'error',\n 'unicorn/prefer-set-size': 'error',\n 'unicorn/prefer-string-starts-ends-with': 'error',\n\n // perf\n 'unicorn/prefer-array-find': 'error',\n 'unicorn/prefer-array-flat-map': 'error',\n 'unicorn/prefer-set-has': 'error',\n\n // restriction\n 'unicorn/no-abusive-eslint-disable': 'error',\n 'unicorn/no-anonymous-default-export': 'error',\n 'unicorn/no-array-for-each': 'error',\n 'unicorn/no-array-reduce': 'error',\n 'unicorn/no-document-cookie': 'error',\n 'unicorn/no-magic-array-flat-depth': 'error',\n 'unicorn/no-process-exit': 'error',\n 'unicorn/no-useless-error-capture-stack-trace': 'error',\n 'unicorn/prefer-modern-math-apis': 'error',\n 'unicorn/prefer-module': 'error',\n 'unicorn/prefer-node-protocol': 'error',\n 'unicorn/prefer-number-properties': 'error',\n\n // suspicious\n 'unicorn/consistent-function-scoping': 'error',\n 'unicorn/no-accessor-recursion': 'error',\n 'unicorn/no-array-reverse': 'error',\n 'unicorn/no-array-sort': 'error',\n 'unicorn/no-instanceof-builtins': 'error',\n 'unicorn/prefer-add-event-listener': 'error',\n 'unicorn/require-module-specifiers': 'error',\n\n // pedantic\n 'unicorn/consistent-assert': 'error',\n 'unicorn/consistent-empty-array-spread': 'error',\n 'unicorn/escape-case': 'error',\n 'unicorn/explicit-length-check': 'error',\n 'unicorn/new-for-builtins': 'error',\n 'unicorn/no-array-callback-reference': 'error',\n 'unicorn/no-hex-escape': 'error',\n 'unicorn/no-immediate-mutation': 'error',\n 'unicorn/no-lonely-if': 'error',\n 'unicorn/no-negation-in-equality-check': 'error',\n 'unicorn/no-new-buffer': 'error',\n 'unicorn/no-object-as-default-parameter': 'error',\n 'unicorn/no-static-only-class': 'error',\n 'unicorn/no-this-assignment': 'error',\n 'unicorn/no-typeof-undefined': 'error',\n 'unicorn/no-unnecessary-array-flat-depth': 'error',\n 'unicorn/no-unnecessary-array-splice-count': 'error',\n 'unicorn/no-unnecessary-slice-end': 'error',\n 'unicorn/no-unreadable-iife': 'error',\n 'unicorn/no-useless-promise-resolve-reject': 'error',\n 'unicorn/no-useless-switch-case': 'error',\n 'unicorn/prefer-array-flat': 'error',\n 'unicorn/prefer-array-some': 'error',\n 'unicorn/prefer-at': 'error',\n 'unicorn/prefer-blob-reading-methods': 'error',\n 'unicorn/prefer-code-point': 'error',\n 'unicorn/prefer-date-now': 'error',\n 'unicorn/prefer-dom-node-append': 'error',\n 'unicorn/prefer-dom-node-dataset': 'error',\n 'unicorn/prefer-dom-node-remove': 'error',\n 'unicorn/prefer-event-target': 'error',\n 'unicorn/prefer-math-min-max': 'error',\n 'unicorn/prefer-math-trunc': 'error',\n 'unicorn/prefer-native-coercion-functions': 'error',\n 'unicorn/prefer-prototype-methods': 'error',\n 'unicorn/prefer-query-selector': 'error',\n 'unicorn/prefer-regexp-test': 'error',\n 'unicorn/prefer-string-replace-all': 'error',\n 'unicorn/prefer-string-slice': 'error',\n 'unicorn/prefer-top-level-await': 'error',\n 'unicorn/prefer-type-error': 'error',\n 'unicorn/require-number-to-fixed-digits-argument': 'error',\n\n // style\n 'unicorn/catch-error-name': ['error', { name: 'error' }],\n 'unicorn/consistent-date-clone': 'error',\n 'unicorn/consistent-existence-index-check': 'error',\n 'unicorn/consistent-template-literal-escape': 'error',\n 'unicorn/empty-brace-spaces': 'error',\n 'unicorn/error-message': 'error',\n 'unicorn/no-array-method-this-argument': 'error',\n 'unicorn/no-await-expression-member': 'error',\n 'unicorn/no-console-spaces': 'error',\n 'unicorn/no-unreadable-array-destructuring': 'error',\n 'unicorn/no-useless-collection-argument': 'error',\n 'unicorn/no-zero-fractions': 'error',\n 'unicorn/numeric-separators-style': 'error',\n 'unicorn/prefer-array-index-of': 'error',\n 'unicorn/prefer-bigint-literals': 'error',\n 'unicorn/prefer-class-fields': 'error',\n 'unicorn/prefer-classlist-toggle': 'error',\n 'unicorn/prefer-default-parameters': 'error',\n 'unicorn/prefer-dom-node-text-content': 'error',\n 'unicorn/prefer-global-this': 'error',\n 'unicorn/prefer-includes': 'error',\n 'unicorn/prefer-keyboard-event-key': 'error',\n 'unicorn/prefer-logical-operator-over-ternary': 'error',\n 'unicorn/prefer-modern-dom-apis': 'error',\n 'unicorn/prefer-negative-index': 'error',\n 'unicorn/prefer-object-from-entries': 'error',\n 'unicorn/prefer-optional-catch-binding': 'error',\n 'unicorn/prefer-reflect-apply': 'error',\n 'unicorn/prefer-response-static-json': 'error',\n 'unicorn/prefer-spread': 'error',\n 'unicorn/prefer-string-raw': 'error',\n 'unicorn/prefer-string-trim-start-end': 'error',\n 'unicorn/prefer-structured-clone': 'error',\n 'unicorn/relative-url-style': 'error',\n 'unicorn/require-array-join-separator': 'error',\n 'unicorn/require-module-attributes': 'error',\n 'unicorn/switch-case-braces': 'error',\n 'unicorn/switch-case-break-position': 'error',\n 'unicorn/text-encoding-identifier-case': 'error',\n 'unicorn/throw-new-error': 'error',\n};\n\n/**\n * Lists the Unicorn recommended rules that Oxlint hasn't ported. They run inside Oxlint through the\n * original JS plugin under the `unicornx` alias.\n */\nexport const unicornRulesJsPlugin: Linter.RulesRecord = {\n 'unicornx/isolated-functions': 'error',\n 'unicornx/no-for-loop': 'error',\n 'unicornx/no-named-default': 'error',\n 'unicornx/no-unnecessary-polyfills': 'error',\n 'unicornx/no-unreadable-for-of-expression': 'error',\n 'unicornx/prefer-export-from': 'error',\n 'unicornx/prefer-simple-condition-first': 'error',\n 'unicornx/prefer-single-call': 'error',\n 'unicornx/prefer-switch': 'error',\n 'unicornx/template-indent': 'error',\n\n /**\n * Native port exists but only in oxlint's nursery category, which can't be enabled from config,\n * so we run the JS original instead.\n */\n 'unicornx/no-useless-iterator-to-array': 'error',\n\n /**\n * Oxlint's port hardcodes uppercase hexadecimal digits, which fights Prettier's lowercase\n * formatting, so we run the JS original with the lowercase option instead.\n */\n 'unicornx/number-literal-case': ['error', { hexadecimalValue: 'lowercase' }],\n};\n\n/**\n * Lists the Unicorn recommended rules that can't run inside Oxlint's JS-plugin host yet because the\n * compat layer is missing ESLint APIs (e.g. `sourceCode.getDisableDirectives`). ESLint picks them up\n * after Oxlint runs.\n */\nexport const unicornRulesEslint: Linter.RulesRecord = {\n 'unicorn/expiring-todo-comments': 'error',\n};\n","export const DEFAULT_ABBREVIATION_ALLOW_LIST = ['fn', 'cb', 'err', 'prev', 'dev', 'i'];\n\nexport const ABBREVIATION_REPLACEMENTS: Record<string, Record<string, boolean> | false> = {\n ref: false,\n refs: false,\n dev: false,\n dir: false,\n env: false,\n prop: false,\n props: false,\n util: false,\n utils: false,\n lib: false,\n libs: false,\n param: false,\n params: false,\n arg: false,\n args: false,\n db: false,\n ev: { event: true },\n val: { value: true },\n msg: { message: true },\n el: { element: true },\n elem: { element: true },\n btn: { button: true },\n cb: { callback: true },\n fn: { function: true },\n err: { error: true },\n opts: { options: true },\n cfg: { config: true },\n obj: { object: true },\n arr: { array: true },\n str: { string: true },\n num: { number: true },\n curr: { current: true },\n len: { length: true },\n e: { event: true, error: true },\n};\n","import type { Linter } from 'eslint';\nimport { ABBREVIATION_REPLACEMENTS, DEFAULT_ABBREVIATION_ALLOW_LIST } from './abbreviations.js';\nimport { unicornRulesJsPlugin, unicornRulesOxlint } from './unicorn.js';\n\nexport const jsFileExtensions = ['**/*.js', '**/*.jsx', '**/*.mjs', '**/*.cjs'];\n\nexport const paddingLineEntries = [\n {\n blankLine: 'always',\n prev: '*',\n next: ['block', 'block-like', 'class', 'const', 'let'],\n },\n {\n blankLine: 'always',\n prev: 'block',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: ['const'],\n next: '*',\n },\n {\n blankLine: 'always',\n prev: ['let'],\n next: '*',\n },\n {\n blankLine: 'any',\n prev: ['const'],\n next: ['const'],\n },\n {\n blankLine: 'any',\n prev: ['let'],\n next: ['let'],\n },\n {\n blankLine: 'always',\n prev: ['let'],\n next: ['const'],\n },\n {\n blankLine: 'always',\n prev: ['const'],\n next: ['let'],\n },\n {\n blankLine: 'always',\n prev: ['singleline-const'],\n next: ['multiline-const'],\n },\n {\n blankLine: 'always',\n prev: ['multiline-const'],\n next: ['singleline-const'],\n },\n {\n blankLine: 'always',\n prev: ['singleline-let'],\n next: ['multiline-let'],\n },\n {\n blankLine: 'always',\n prev: ['multiline-let'],\n next: ['singleline-let'],\n },\n {\n blankLine: 'any',\n prev: ['case', 'block', 'block-like'],\n next: ['case', 'default'],\n },\n {\n blankLine: 'always',\n prev: '*',\n next: ['break', 'continue'],\n },\n {\n blankLine: 'always',\n prev: 'if',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: {\n selector:\n 'ExpressionStatement:matches([expression.type=\"CallExpression\"], [expression.type=\"AwaitExpression\"][expression.argument.type=\"CallExpression\"])',\n },\n next: { selector: 'ExpressionStatement[expression.type=\"AssignmentExpression\"]' },\n },\n {\n blankLine: 'always',\n prev: { selector: 'ExpressionStatement[expression.type=\"AssignmentExpression\"]' },\n next: {\n selector:\n 'ExpressionStatement:matches([expression.type=\"CallExpression\"], [expression.type=\"AwaitExpression\"][expression.argument.type=\"CallExpression\"])',\n },\n },\n /**\n * The rule applies the last entry that matches a statement pair, so the import-to-import entry\n * must come after the surrounding `*` entries.\n */\n {\n blankLine: 'always',\n prev: 'import',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: '*',\n next: 'import',\n },\n {\n blankLine: 'any',\n prev: 'import',\n next: 'import',\n },\n /**\n * The rule applies the last entry that matches a statement pair, so the export-to-export entry\n * must come after the surrounding `*` entries.\n */\n {\n blankLine: 'always',\n prev: 'export',\n next: '*',\n },\n {\n blankLine: 'always',\n prev: '*',\n next: 'export',\n },\n {\n blankLine: 'any',\n prev: 'export',\n next: 'export',\n },\n];\n\nexport const jsdocTagLineOptions = ['never', { startLines: 1, applyToEndTag: false }];\n\nexport interface JavaScriptRuleOptions {\n preventAbbreviations?: {\n allowList?: string[];\n inheritAllowList?: boolean;\n replacements?: Record<string, Record<string, boolean> | false>;\n inheritReplacements?: boolean;\n };\n}\n\nexport function jsRulesOxlint(options: JavaScriptRuleOptions = {}): Linter.RulesRecord {\n const { preventAbbreviations: preventAbbreviationsOptions } = options;\n\n const {\n inheritAllowList = true,\n inheritReplacements = true,\n allowList = [],\n replacements = {},\n } = preventAbbreviationsOptions ?? {};\n\n const effectiveAllowList = inheritAllowList ? [...DEFAULT_ABBREVIATION_ALLOW_LIST, ...allowList] : allowList;\n\n return {\n 'consistent-return': 'error',\n curly: ['error', 'all'],\n 'arrow-body-style': 'off',\n 'dot-notation': 'error',\n 'no-debugger': 'warn',\n 'no-unused-vars': 'off',\n 'no-async-promise-executor': 'error',\n 'no-case-declarations': 'error',\n 'default-case-last': 'error',\n 'no-cond-assign': 'error',\n 'no-return-assign': ['error', 'always'],\n 'no-dynamic-delete': 'off',\n 'no-unneeded-ternary': 'error',\n 'object-shorthand': 'error',\n 'no-constant-condition': ['error', { checkLoops: false }],\n\n '@stylistic/padding-line-between-statements': ['error', ...paddingLineEntries],\n '@stylistic/no-trailing-spaces': 'error',\n\n /**\n * Indentation is owned by Prettier. Oxlint's @stylistic/indent port diverges from eslint-stylistic on edge cases\n * (e.g., multiline object args inside ternaries), so we leave the rule off.\n */\n '@stylistic/indent': 'off',\n '@stylistic/no-multiple-empty-lines': ['error', { max: 1 }],\n '@stylistic/multiline-comment-style': ['error', 'starred-block'],\n '@stylistic/spaced-comment': [\n 'error',\n 'always',\n {\n block: { balanced: true },\n },\n ],\n '@stylistic/brace-style': ['error', '1tbs'],\n '@stylistic/lines-around-comment': [\n 'error',\n {\n beforeBlockComment: true,\n beforeLineComment: true,\n allowBlockStart: true,\n allowBlockEnd: false,\n allowObjectStart: true,\n allowObjectEnd: false,\n allowArrayStart: true,\n allowArrayEnd: true,\n allowClassStart: true,\n allowInterfaceStart: true,\n allowInterfaceEnd: true,\n allowEnumStart: true,\n allowEnumEnd: true,\n allowTypeStart: true,\n allowTypeEnd: false,\n },\n ],\n\n ...unicornRulesOxlint,\n ...unicornRulesJsPlugin,\n\n /**\n * Oxlint's built-in `unicorn` / `jsdoc` plugins don't implement these, so we wire the original JS\n * plugins under aliased names (see jsPlugins in `src/oxlint.ts`). Rule IDs use the alias instead\n * of the canonical prefix.\n */\n 'unicornx/name-replacements': [\n 'error',\n {\n replacements: inheritReplacements ? { ...ABBREVIATION_REPLACEMENTS, ...replacements } : replacements,\n allowList: Object.fromEntries(effectiveAllowList.map((name) => [name, true])),\n },\n ],\n\n 'jsdocx/tag-lines': ['error', ...jsdocTagLineOptions],\n };\n}\n\n/**\n * These rules can't run under Oxlint. They are ESLint-core rules that Oxlint hasn't implemented\n * (`prefer-arrow-callback`) or only ships in its nursery category (`no-useless-assignment`), and no\n * plugin we can alias into oxlint's `jsPlugins` exposes them, because the `@eslint/js` package only\n * ships configs, not a raw `rules` object. ESLint picks them up after Oxlint runs.\n */\nexport function jsRulesEslint(_options: JavaScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n 'prefer-arrow-callback': 'error',\n 'no-useless-assignment': 'error',\n };\n}\n","import type { Linter } from 'eslint';\n\nexport interface ReactRuleOptions {\n fastRefresh?: boolean;\n performance?: boolean;\n}\n\nexport type ReactConfigOptions = boolean | ReactRuleOptions;\n\ninterface ResolvedReactRuleOptions {\n fastRefresh: boolean;\n performance: boolean;\n}\n\nexport const reactFileExtensions = ['**/*.jsx', '**/*.tsx'];\n\nexport function resolveReactRuleOptions(options: ReactConfigOptions = false): ResolvedReactRuleOptions {\n if (options === false) {\n return {\n fastRefresh: false,\n performance: false,\n };\n }\n\n if (options === true) {\n return {\n fastRefresh: true,\n performance: true,\n };\n }\n\n return {\n fastRefresh: options.fastRefresh ?? true,\n performance: options.performance ?? true,\n };\n}\n\nexport function reactRulesOxlint(options: ReactConfigOptions = false): Linter.RulesRecord {\n const resolvedOptions = resolveReactRuleOptions(options);\n\n return {\n 'react/jsx-key': 'error',\n 'react/jsx-no-duplicate-props': 'error',\n 'react/no-children-prop': 'error',\n 'react/no-danger-with-children': 'error',\n 'react/void-dom-elements-no-children': 'error',\n 'react/no-unknown-property': 'error',\n 'react/style-prop-object': 'error',\n 'react/button-has-type': 'error',\n 'react/checked-requires-onchange-or-readonly': 'error',\n 'react/forward-ref-uses-ref': 'error',\n 'react/jsx-props-no-spread-multi': 'error',\n 'react/jsx-no-script-url': 'error',\n 'react/jsx-no-target-blank': 'error',\n 'react/jsx-no-constructed-context-values': 'error',\n 'react/no-unstable-nested-components': 'error',\n 'react/no-array-index-key': 'warn',\n 'react/no-object-type-as-default-prop': 'warn',\n 'react/iframe-missing-sandbox': 'error',\n 'react/no-danger': 'warn',\n\n ...(resolvedOptions.fastRefresh && {\n 'react/only-export-components': ['warn', { allowConstantExport: true }],\n }),\n\n ...(resolvedOptions.performance && {\n 'react-perf/jsx-no-new-object-as-prop': 'warn',\n 'react-perf/jsx-no-new-array-as-prop': 'warn',\n 'react-perf/jsx-no-new-function-as-prop': 'warn',\n 'react-perf/jsx-no-jsx-as-prop': 'warn',\n }),\n };\n}\n","import type { Linter } from 'eslint';\nimport { jsRulesOxlint, type JavaScriptRuleOptions } from './javascript.js';\n\nexport const tsFileExtensions = ['**/*.ts', '**/*.tsx', '**/*.mts', '**/*.cts'];\n\nconst tsIgnoreDescriptionFormat = String.raw`^: TS\\d+ because .+$`;\n\nexport interface TypeScriptRuleOptions extends JavaScriptRuleOptions {\n namingConvention?: {\n variable?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n parameter?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n typeLike?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n memberLike?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n function?: {\n inheritFormat?: boolean;\n format?: string[];\n exceptions?: string[];\n };\n };\n}\n\ninterface NamingConventionFormatOptions {\n inheritFormat?: boolean;\n format?: string[];\n}\n\n/**\n * Lists the type-aware typescript-eslint rules that Oxlint executes natively through tsgolint (`options.typeAware`).\n * They mirror what typescript-eslint's `strictTypeChecked` + `stylisticTypeChecked` presets enabled when these rules\n * still ran under ESLint (same severities, same options), so moving them here changed which engine serves them,\n * not the behavior.\n *\n * Type-aware rules in oxlint's `correctness` category (e.g. `await-thenable`,\n * `unbound-method`) are not listed. They already run via the default category,\n * as `warn`, matching the pre-migration state.\n *\n * `typescript/naming-convention` is one of the two typescript-eslint type-aware rules tsgolint\n * doesn't implement. It stays in ESLint (see {@link tsRulesEslint}).\n */\nexport const tsTypeAwareRulesOxlint: Linter.RulesRecord = {\n 'typescript/no-confusing-void-expression': 'error',\n 'typescript/no-deprecated': 'error',\n 'typescript/no-floating-promises': 'error',\n 'typescript/no-misused-promises': 'error',\n 'typescript/no-mixed-enums': 'error',\n 'typescript/no-unnecessary-boolean-literal-compare': 'error',\n 'typescript/no-unnecessary-condition': 'error',\n 'typescript/no-unnecessary-template-expression': 'error',\n 'typescript/no-unnecessary-type-arguments': 'error',\n 'typescript/no-unnecessary-type-assertion': 'error',\n 'typescript/no-unnecessary-type-conversion': 'error',\n 'typescript/no-unnecessary-type-parameters': 'error',\n 'typescript/no-unsafe-argument': 'error',\n 'typescript/no-unsafe-assignment': 'error',\n 'typescript/no-unsafe-call': 'error',\n 'typescript/no-unsafe-enum-comparison': 'error',\n 'typescript/no-unsafe-member-access': 'error',\n 'typescript/no-unsafe-return': 'error',\n 'typescript/non-nullable-type-assertion-style': 'error',\n 'typescript/only-throw-error': 'error',\n 'typescript/prefer-find': 'error',\n 'typescript/prefer-includes': 'error',\n 'typescript/prefer-nullish-coalescing': ['error', { ignorePrimitives: true }],\n 'typescript/prefer-optional-chain': 'error',\n 'typescript/prefer-promise-reject-errors': 'error',\n 'typescript/prefer-reduce-type-parameter': 'error',\n 'typescript/prefer-regexp-exec': 'error',\n 'typescript/prefer-return-this-type': 'error',\n 'typescript/prefer-string-starts-ends-with': 'error',\n 'typescript/related-getter-setter-pairs': 'error',\n 'typescript/restrict-plus-operands': [\n 'error',\n {\n allowAny: false,\n allowBoolean: false,\n allowNullish: false,\n allowNumberAndString: false,\n allowRegExp: false,\n },\n ],\n 'typescript/return-await': ['error', 'error-handling-correctness-only'],\n 'typescript/use-unknown-in-catch-callback-variable': 'error',\n};\n\n/**\n * Lists the syntax-only rules that Oxlint ports natively and that used to reach ESLint through\n * typescript-eslint's presets. They are the `strictTypeChecked` and `stylisticTypeChecked` rules that\n * don't need type information, plus the ESLint-core rules that typescript-eslint's `eslintRecommended`\n * config raises for TypeScript files (hence the `eslint/` prefix and the TS-files-only scope).\n */\nexport const tsSyntaxRulesOxlint: Linter.RulesRecord = {\n 'typescript/adjacent-overload-signatures': 'error',\n 'typescript/ban-tslint-comment': 'error',\n 'typescript/class-literal-property-style': 'error',\n 'typescript/consistent-generic-constructors': 'error',\n 'typescript/consistent-indexed-object-style': 'error',\n 'typescript/consistent-type-assertions': 'error',\n 'typescript/consistent-type-definitions': 'error',\n 'typescript/no-array-constructor': 'error',\n 'typescript/no-confusing-non-null-assertion': 'error',\n 'typescript/no-empty-object-type': 'error',\n 'typescript/no-extraneous-class': 'error',\n 'typescript/no-inferrable-types': 'error',\n 'typescript/no-invalid-void-type': 'error',\n 'typescript/no-namespace': 'error',\n 'typescript/no-non-null-asserted-nullish-coalescing': 'error',\n 'typescript/no-require-imports': 'error',\n 'typescript/no-unnecessary-type-constraint': 'error',\n 'typescript/no-unsafe-function-type': 'error',\n 'typescript/no-useless-constructor': 'error',\n 'typescript/prefer-for-of': 'error',\n 'typescript/prefer-function-type': 'error',\n 'typescript/prefer-literal-enum-member': 'error',\n 'typescript/unified-signatures': 'error',\n\n 'eslint/no-var': 'error',\n 'eslint/prefer-const': ['error', { destructuring: 'any', ignoreReadBeforeAssign: false }],\n 'eslint/prefer-rest-params': 'error',\n 'eslint/prefer-spread': 'error',\n};\n\nexport function tsRulesOxlint(options: TypeScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n ...jsRulesOxlint(options),\n\n ...tsTypeAwareRulesOxlint,\n ...tsSyntaxRulesOxlint,\n\n 'typescript/no-unused-vars': [\n 'error',\n {\n argsIgnorePattern: '^_',\n ignoreRestSiblings: true,\n },\n ],\n 'typescript/no-non-null-assertion': 'error',\n 'typescript/no-empty-function': 'off',\n 'typescript/no-explicit-any': 'off',\n 'typescript/no-base-to-string': 'off',\n 'typescript/no-dynamic-delete': 'off',\n 'typescript/no-extra-non-null-assertion': 'error',\n 'typescript/no-non-null-asserted-optional-chain': 'error',\n 'typescript/explicit-module-boundary-types': 'off',\n 'typescript/ban-ts-comment': [\n 'error',\n {\n 'ts-expect-error': { descriptionFormat: tsIgnoreDescriptionFormat },\n 'ts-ignore': { descriptionFormat: tsIgnoreDescriptionFormat },\n 'ts-nocheck': true,\n 'ts-check': false,\n },\n ],\n\n '@stylistic/type-annotation-spacing': 'error',\n\n // comment handling conflicts with the padding-line heuristics\n '@stylistic/lines-around-comment': 'off',\n };\n}\n\n/**\n * Only rules Oxlint can't run remain here. `naming-convention` is one of the two typescript-eslint\n * type-aware rules tsgolint doesn't implement, and `explicit-member-accessibility` has no Oxlint\n * port at all.\n */\nexport function tsRulesEslint(options: TypeScriptRuleOptions = {}): Linter.RulesRecord {\n return {\n ...getESLintNamingConventionRule(options.namingConvention),\n '@typescript-eslint/explicit-member-accessibility': ['error', { accessibility: 'no-public' }],\n '@typescript-eslint/no-dynamic-delete': 'off',\n '@typescript-eslint/array-type': 'off',\n '@typescript-eslint/require-await': 'off',\n '@typescript-eslint/no-explicit-any': 'off',\n '@typescript-eslint/no-empty-function': 'off',\n '@typescript-eslint/no-unused-vars': [\n 'error',\n {\n argsIgnorePattern: '^_',\n varsIgnorePattern: '^_',\n caughtErrorsIgnorePattern: '^_',\n destructuredArrayIgnorePattern: '^_',\n ignoreRestSiblings: true,\n },\n ],\n };\n}\n\nexport function getESLintNamingConventionRule(\n extensions?: TypeScriptRuleOptions['namingConvention'],\n): Linter.RulesRecord {\n const oxlintRules = getNamingConventionRule(extensions);\n\n return {\n '@typescript-eslint/naming-convention': oxlintRules['typescript/naming-convention'],\n };\n}\n\nexport function getNamingConventionRule(extensions?: TypeScriptRuleOptions['namingConvention']): Linter.RulesRecord {\n return {\n 'typescript/naming-convention': [\n 'error',\n {\n selector: ['variable'],\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.variable),\n leadingUnderscore: 'allowSingleOrDouble',\n trailingUnderscore: 'forbid',\n filter: {\n regex: generateFilterRegex(['__dirname'], extensions?.variable?.exceptions),\n match: false,\n },\n },\n {\n selector: ['function'],\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.function),\n leadingUnderscore: 'allowSingleOrDouble',\n trailingUnderscore: 'forbid',\n filter: {\n regex: generateFilterRegex(['__dirname'], extensions?.function?.exceptions),\n match: false,\n },\n },\n {\n selector: 'parameter',\n format: mergeFormat(['camelCase', 'UPPER_CASE', 'PascalCase'], extensions?.parameter),\n leadingUnderscore: 'allow',\n ...(extensions?.parameter?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.parameter.exceptions),\n match: false,\n },\n }),\n },\n {\n selector: 'typeLike',\n format: mergeFormat(['PascalCase'], extensions?.typeLike),\n ...(extensions?.typeLike?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.typeLike.exceptions),\n match: false,\n },\n }),\n },\n {\n selector: 'memberLike',\n modifiers: ['private'],\n format: mergeFormat(['camelCase', 'PascalCase'], extensions?.memberLike),\n leadingUnderscore: 'require',\n ...(extensions?.memberLike?.exceptions?.length && {\n filter: {\n regex: generateFilterRegex([], extensions.memberLike.exceptions),\n match: false,\n },\n }),\n },\n ],\n };\n}\n\nfunction mergeFormat(defaults: string[], extensions?: NamingConventionFormatOptions) {\n return [...new Set([...((extensions?.inheritFormat ?? true) ? defaults : []), ...(extensions?.format ?? [])])];\n}\n\nfunction generateFilterRegex(defaults: string[], extensions: string[] = []) {\n return `^(${[...defaults, ...extensions].join('|')})$`;\n}\n"],"mappings":"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","names":[]}
|