Last active
December 17, 2025 05:59
-
-
Save connorshea/6cd1d3ba9ed5e37dee6c122c60a78dab to your computer and use it in GitHub Desktop.
Script for oxlint to check for config option differences (to run, place in `tools/check_rule_config.mjs`)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env node | |
| import fs from 'fs'; | |
| import path from 'path'; | |
| import { createESLintLinter, loadTargetPluginRules, getTypeScriptDisabledRules } from '../tasks/lint_rules/src/eslint-rules.mjs'; | |
| function findFiles(dir, pattern = /.rs$/) { | |
| const out = []; | |
| for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { | |
| const full = path.join(dir, entry.name); | |
| if (entry.isDirectory()) out.push(...findFiles(full, pattern)); | |
| else if (pattern.test(entry.name)) out.push(full); | |
| } | |
| return out; | |
| } | |
| function extractDeclareMacro(content) { | |
| const start = content.indexOf('declare_oxc_lint!('); | |
| if (start === -1) return null; | |
| let i = start + 'declare_oxc_lint!('.length; | |
| let depth = 1; | |
| while (i < content.length && depth > 0) { | |
| const ch = content[i]; | |
| if (ch === '(') depth++; | |
| else if (ch === ')') depth--; | |
| i++; | |
| } | |
| if (depth !== 0) return null; | |
| const inner = content.slice(start + 'declare_oxc_lint!('.length, i - 1); | |
| // Remove lines starting with optional spaces and three slashes (doc comments) so they don't interfere | |
| // Also strip inline `//` comments so trailing TODOs don't merge with subsequent args | |
| let innerClean = inner.replace(/^\s*\/\/\/.*$/gm, ''); | |
| innerClean = innerClean.replace(/\/\/.*$/gm, ''); | |
| // Split by top-level commas only. | |
| const args = []; | |
| let cur = ''; | |
| let nested = 0; | |
| for (let j = 0; j < innerClean.length; j++) { | |
| const ch = innerClean[j]; | |
| if (ch === '(' || ch === '{' || ch === '[') { nested++; cur += ch; } | |
| else if (ch === ')' || ch === '}' || ch === ']') { nested--; cur += ch; } | |
| else if (ch === ',' && nested === 0) { args.push(cur.trim()); cur = ''; } | |
| else cur += ch; | |
| } | |
| if (cur.trim()) args.push(cur.trim()); | |
| const identifierLike = args.map(a => a.trim()).filter(a => /^[A-Za-z0-9_]+$/.test(a)); | |
| // Heuristics to find the plugin name: | |
| // Prefer locating the PascalCase struct name and taking the following | |
| // argument as the plugin (this avoids accidentally picking words from | |
| // the doc comment block). Fall back to the old identifier-based heuristic | |
| // if the PascalCase struct is not found. | |
| let plugin; | |
| // Prefer to find the struct name that is actually declared in the file | |
| // (look for `pub struct Name {`) and use the following argument as the plugin. | |
| const identifierCandidates = args.map(a => a.trim()).filter(a => /^[A-Z][A-Za-z0-9_]*$/.test(a.trim())); | |
| const structName = identifierCandidates.find(n => new RegExp(`(?:pub(?:\\([^)]*\\))?\\s+)?struct\\s+${n}\\s*\\{`).test(content)); | |
| if (structName) { | |
| const idx = args.findIndex(a => a.trim() === structName); | |
| if (idx !== -1 && args.length > idx + 1) plugin = args[idx + 1].trim(); | |
| } | |
| if (!plugin) { | |
| plugin = identifierLike.length >= 2 ? identifierLike[1] : undefined; | |
| } | |
| const configArg = args.find(a => a.trim().startsWith('config')); | |
| const configType = configArg ? (configArg.split('=')[1] || '').trim().replace(/,$/, '') : null; | |
| return { plugin, configType }; | |
| } | |
| function extractStructFields(content, structName) { | |
| const re = new RegExp(`(?:pub(?:\\([^)]*\\))?\\s+)?struct\\s+${structName}\\s*\\{`); | |
| const start = content.search(re); | |
| if (start === -1) return null; | |
| const braceIndex = content.indexOf('{', start); | |
| let i = braceIndex + 1; | |
| let depth = 1; | |
| while (i < content.length && depth > 0) { | |
| const ch = content[i]; | |
| if (ch === '{') depth++; | |
| else if (ch === '}') depth--; | |
| i++; | |
| } | |
| let body = content.slice(braceIndex + 1, i - 1); | |
| // Remove fenced code blocks ```...```, block comments /* ... */ and single-line comments | |
| body = body.replace(/```[\s\S]*?```/g, ""); | |
| body = body.replace(/\/\*[\s\S]*?\*\//g, ""); | |
| body = body.replace(/^\s*\/\/.*$/gm, ""); | |
| // Look for field declarations at the start of a line: optional `pub`, then identifier starting with letter or underscore | |
| const fields = []; | |
| const fieldRe = /^\s*(?:pub\s+)?([a-zA-Z_][a-zA-Z0-9_]*)\s*:/gm; | |
| let fm; | |
| while ((fm = fieldRe.exec(body)) !== null) { | |
| fields.push(fm[1]); | |
| } | |
| return fields; | |
| } | |
| function snakeToCamel(s) { | |
| return s.replace(/_([a-z])/g, (_, c) => c.toUpperCase()); | |
| } | |
| function extractSchemaPropKeys(schema) { | |
| if (!schema) return null; | |
| if (Array.isArray(schema)) { | |
| // If it's empty, that's fine. Return it. | |
| if (schema.length === 0) { return []; } | |
| const first = schema[0]; | |
| if (!first) return null; | |
| if (first.properties) return Object.keys(first.properties); | |
| if (first.items && first.items.properties) return Object.keys(first.items.properties); | |
| return null; | |
| } | |
| if (schema.properties) return Object.keys(schema.properties); | |
| return null; | |
| } | |
| async function main() { | |
| const linter = createESLintLinter(); | |
| // Request loading type-checked TypeScript rules so the checker evaluates them too | |
| loadTargetPluginRules(linter, { includeTypeChecked: true }); | |
| const typeCheckedDisabledRules = getTypeScriptDisabledRules(); | |
| const rulesDir = path.join(process.cwd(), 'crates', 'oxc_linter', 'src', 'rules'); | |
| const files = findFiles(rulesDir, /.rs$/); | |
| // Previously we only checked files that implemented `fn from_configuration`. | |
| // Include all rule files so we can verify rules that have no Rust config struct | |
| // (treat them as having an empty set of fields). | |
| const filesToCheck = files; | |
| let hasError = false; | |
| // Counters for summary | |
| let totalChecked = 0; | |
| let matchedCount = 0; | |
| let mismatchedCount = 0; | |
| for (const file of filesToCheck) { | |
| const content = fs.readFileSync(file, 'utf8'); | |
| const declare = extractDeclareMacro(content); | |
| if (!declare) continue; | |
| const pluginName = path.relative(rulesDir, file).split(path.sep)[0]; | |
| if (!pluginName || pluginName === 'oxc') continue; | |
| // If there's no `config` type declared, treat the rule as having no | |
| // Rust-side configuration and use an empty list of fields. | |
| const configType = declare.configType && declare.configType.replace(/,$/, '').trim(); | |
| let fields = []; | |
| if (configType) { | |
| fields = extractStructFields(content, configType) || []; | |
| } | |
| let fileName = path.basename(file, '.rs'); | |
| // Some rules are a module (`mod.rs`) or split across multiple files; prefer | |
| // the parent directory name (which is the rule folder) in those cases. | |
| if (fileName === 'mod' || fileName === 'lib') { | |
| fileName = path.basename(path.dirname(file)); | |
| } | |
| const ruleId = fileName.replace(/_/g, '-'); | |
| const linterKey = pluginName === 'eslint' ? ruleId : `${pluginName}/${ruleId}`; | |
| let ruleObj = linter.getRules().get(linterKey); | |
| // If the rule is missing and it's a TypeScript rule, check whether it's | |
| // intentionally skipped because it's type-checked. If so, silently skip. | |
| const altKey = `@typescript-eslint/${ruleId}`; | |
| if ((!ruleObj || !ruleObj.meta) && pluginName === 'typescript') { | |
| if (typeCheckedDisabledRules.has(altKey) || typeCheckedDisabledRules.has(ruleId)) { | |
| console.log(`Skipping ${pluginName}/${ruleId}: type-checked and excluded`); | |
| continue; | |
| } | |
| // Try fallback lookup under the npm-scoped plugin name | |
| const alt = linter.getRules().get(altKey); | |
| if (alt && alt.meta) { | |
| ruleObj = alt; | |
| } | |
| } | |
| // If metadata wasn't found for the expected key, attempt a broader | |
| // search across all loaded rules. Some ESLint rules are provided by | |
| // other plugins and may be registered under a different plugin name | |
| // (e.g. `regexp/no-misleading-character-class`). Attempt to find any | |
| // loaded rule that matches the `ruleId` and use its metadata. | |
| if (!ruleObj || !ruleObj.meta) { | |
| for (const [key, r] of linter.getRules()) { | |
| if (key === ruleId || key.endsWith('/' + ruleId)) { | |
| ruleObj = r; | |
| break; | |
| } | |
| } | |
| } | |
| if (!ruleObj || !ruleObj.meta) { | |
| console.warn(`No metadata found for ${linterKey}; skipping`); | |
| continue; | |
| } | |
| const propKeys = extractSchemaPropKeys(ruleObj.meta.schema); | |
| if (propKeys === null) { | |
| console.warn(`Could not derive option properties for ${linterKey}; meta.schema is not an object with named properties`); | |
| continue; | |
| } | |
| const rustCamel = fields.map(snakeToCamel); | |
| // Known per-rule aliases to reduce false-positives where ESLint uses a | |
| // different option name for the same configuration. | |
| const PER_RULE_ALIASES = { | |
| // Jest expect-expect: Rust exposes separate fields per test runner | |
| // while ESLint uses a single `assertFunctionNames` option. | |
| 'jest/expect-expect': { | |
| assertFunctionNamesJest: ['assertFunctionNames'], | |
| assertFunctionNamesVitest: ['assertFunctionNames'], | |
| }, | |
| }; | |
| const aliases = PER_RULE_ALIASES[linterKey] || {}; | |
| const augmentedRustCamel = [...rustCamel]; | |
| for (const [_orig, als] of Object.entries(aliases)) { | |
| for (const a of als) { | |
| if (!augmentedRustCamel.includes(a)) augmentedRustCamel.push(a); | |
| } | |
| } | |
| const normalize = (k) => String(k).replace(/[^a-zA-Z0-9]/g, '').toLowerCase(); | |
| const rustMap = new Map(augmentedRustCamel.map(k => [normalize(k), k])); | |
| const eslintMap = new Map(propKeys.map(k => [normalize(k), k])); | |
| const rustNormSet = new Set(rustMap.keys()); | |
| const eslintNormSet = new Set(eslintMap.keys()); | |
| const onlyInRustNorm = [...rustNormSet].filter(x => !eslintNormSet.has(x)); | |
| const onlyInEslintNorm = [...eslintNormSet].filter(x => !rustNormSet.has(x)); | |
| // Suppress false positives when a Rust key has known aliases in ESLint. | |
| const ruleAliases = PER_RULE_ALIASES[linterKey] || {}; | |
| const normalizedAliasMap = Object.fromEntries( | |
| Object.entries(ruleAliases).map(([k, arr]) => [normalize(k), arr.map(a => normalize(a))]), | |
| ); | |
| const filteredOnlyInRustNorm = onlyInRustNorm.filter((normKey) => { | |
| const aliasesForKey = normalizedAliasMap[normKey]; | |
| if (!aliasesForKey) return true; | |
| // If any alias is present in ESLint keys, treat the Rust key as matched. | |
| return !aliasesForKey.some((a) => eslintNormSet.has(a)); | |
| }); | |
| const onlyInRustNormFinal = filteredOnlyInRustNorm; | |
| const rustOnlyEntries = onlyInRustNormFinal; | |
| // This rule is being compared, update counters | |
| totalChecked++; | |
| if (rustOnlyEntries.length || onlyInEslintNorm.length) { | |
| hasError = true; | |
| mismatchedCount++; | |
| console.log(`Mismatch for ${linterKey}:`); | |
| if (rustOnlyEntries.length) console.log(` In Rust only: ${rustOnlyEntries.map(k => rustMap.get(k)).join(', ')}`); | |
| if (onlyInEslintNorm.length) console.log(` In ESLint only: ${onlyInEslintNorm.map(k => eslintMap.get(k)).join(', ')}`); | |
| // console.log(' debug:', { file, configType, rustCamel, propKeys }); | |
| } else { | |
| matchedCount++; | |
| console.log(`Config options match for ${linterKey}`); | |
| } | |
| } | |
| // Print summary of the checks | |
| console.log('\nSummary:'); | |
| console.log(` Total rules checked: ${totalChecked}`); | |
| console.log(` Matched: ${matchedCount}`); | |
| console.log(` Mismatched: ${mismatchedCount}`); | |
| if (hasError) process.exitCode = 2; | |
| } | |
| // Do not run main for --test mode | |
| if (process.argv[1] === new URL(import.meta.url).pathname && !process.argv.includes('--test')) { | |
| await main(); | |
| } | |
| // | |
| // TESTS BELOW | |
| // | |
| // Test: verify extractDeclareMacro handles doc comments and returns plugin/config | |
| function test_extractDeclareMacro() { | |
| const src = `declare_oxc_lint!( | |
| /// ### What it does | |
| /// Foobar | |
| NoMisleadingCharacterClass, | |
| eslint, | |
| nursery, // TODO: change category to \`correctness\`, after oxc-project/oxc#13660 and oxc-project/oxc#13436 | |
| config = NoMisleadingCharacterClass, | |
| );`; | |
| const res = extractDeclareMacro(src); | |
| console.log('TEST extractDeclareMacro result:', res); | |
| if (!res) { | |
| console.error('extractDeclareMacro returned null'); | |
| process.exitCode = 2; | |
| return; | |
| } | |
| const expectedPlugin = 'eslint'; | |
| const expectedConfig = 'NoMisleadingCharacterClass'; | |
| if (res.plugin !== expectedPlugin || res.configType !== expectedConfig) { | |
| console.error('extractDeclareMacro test failed: unexpected result', res); | |
| process.exitCode = 2; | |
| return; | |
| } | |
| console.log('extractDeclareMacro test passed'); | |
| } | |
| // Run tests if --test flag provided | |
| if (process.argv.includes('--test')) { | |
| test_extractDeclareMacro(); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // Add the code below to `tasks/lint_rules/src/eslint-rules.mjs` in oxc/oxc for the above script to work. | |
| /** | |
| * Return the set of rules listed in `disable-type-checked` config of the | |
| * `@typescript-eslint` plugin. These are rules that require type information | |
| * and are intentionally skipped by our loader. | |
| */ | |
| export const getTypeScriptDisabledRules = () => { | |
| const cfg = pluginTypeScriptConfigs && pluginTypeScriptConfigs['disable-type-checked']; | |
| if (!cfg || !cfg.rules) return new Set(); | |
| return new Set(Object.keys(cfg.rules)); | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Config options match for accessor-pairs | |
| Mismatch for array-callback-return: | |
| In ESLint only: allowVoid | |
| Could not derive option properties for arrow-body-style; meta.schema is not an object with named properties | |
| Config options match for block-scoped-var | |
| Could not derive option properties for capitalized-comments; meta.schema is not an object with named properties | |
| Config options match for class-methods-use-this | |
| Config options match for constructor-super | |
| Could not derive option properties for curly; meta.schema is not an object with named properties | |
| Config options match for default-case | |
| Config options match for default-case-last | |
| Config options match for default-param-last | |
| Could not derive option properties for eqeqeq; meta.schema is not an object with named properties | |
| Config options match for for-direction | |
| Could not derive option properties for func-names; meta.schema is not an object with named properties | |
| Could not derive option properties for func-style; meta.schema is not an object with named properties | |
| Config options match for getter-return | |
| Could not derive option properties for grouped-accessor-pairs; meta.schema is not an object with named properties | |
| Config options match for guard-for-in | |
| Config options match for id-length | |
| Could not derive option properties for init-declarations; meta.schema is not an object with named properties | |
| Could not derive option properties for max-classes-per-file; meta.schema is not an object with named properties | |
| Could not derive option properties for max-depth; meta.schema is not an object with named properties | |
| Could not derive option properties for max-lines; meta.schema is not an object with named properties | |
| Could not derive option properties for max-lines-per-function; meta.schema is not an object with named properties | |
| Could not derive option properties for max-nested-callbacks; meta.schema is not an object with named properties | |
| Could not derive option properties for max-params; meta.schema is not an object with named properties | |
| Config options match for new-cap | |
| Config options match for no-alert | |
| Config options match for no-array-constructor | |
| Config options match for no-async-promise-executor | |
| Config options match for no-await-in-loop | |
| Config options match for no-bitwise | |
| Config options match for no-caller | |
| Config options match for no-case-declarations | |
| Config options match for no-class-assign | |
| Config options match for no-compare-neg-zero | |
| Could not derive option properties for no-cond-assign; meta.schema is not an object with named properties | |
| Config options match for no-console | |
| Config options match for no-const-assign | |
| Config options match for no-constant-binary-expression | |
| Config options match for no-constant-condition | |
| Config options match for no-constructor-return | |
| Config options match for no-continue | |
| Config options match for no-control-regex | |
| Config options match for no-debugger | |
| Config options match for no-delete-var | |
| Config options match for no-div-regex | |
| Config options match for no-dupe-class-members | |
| Config options match for no-dupe-else-if | |
| Config options match for no-dupe-keys | |
| Config options match for no-duplicate-case | |
| Config options match for no-duplicate-imports | |
| Config options match for no-else-return | |
| Config options match for no-empty | |
| Config options match for no-empty-character-class | |
| Mismatch for no-empty-function: | |
| In ESLint only: allow | |
| Mismatch for no-empty-pattern: | |
| In ESLint only: allowObjectPatternsAsParameters | |
| Config options match for no-empty-static-block | |
| Config options match for no-eq-null | |
| Config options match for no-eval | |
| Config options match for no-ex-assign | |
| Config options match for no-extend-native | |
| Config options match for no-extra-bind | |
| Could not derive option properties for no-extra-boolean-cast; meta.schema is not an object with named properties | |
| Config options match for no-extra-label | |
| Config options match for no-fallthrough | |
| Config options match for no-func-assign | |
| Config options match for no-global-assign | |
| Config options match for no-implicit-coercion | |
| Config options match for no-import-assign | |
| Config options match for no-inline-comments | |
| Could not derive option properties for no-inner-declarations; meta.schema is not an object with named properties | |
| Config options match for no-invalid-regexp | |
| Mismatch for no-irregular-whitespace: | |
| In ESLint only: skipComments, skipStrings, skipTemplates, skipRegExps, skipJSXText | |
| Config options match for no-iterator | |
| Config options match for no-label-var | |
| Config options match for no-labels | |
| Config options match for no-lone-blocks | |
| Config options match for no-lonely-if | |
| Config options match for no-loop-func | |
| Config options match for no-loss-of-precision | |
| Config options match for no-magic-numbers | |
| Config options match for no-misleading-character-class | |
| Config options match for no-multi-assign | |
| Config options match for no-multi-str | |
| Config options match for no-negated-condition | |
| Config options match for no-nested-ternary | |
| Config options match for no-new | |
| Config options match for no-new-func | |
| Config options match for no-new-native-nonconstructor | |
| Config options match for no-new-wrappers | |
| Config options match for no-nonoctal-decimal-escape | |
| Config options match for no-obj-calls | |
| Config options match for no-object-constructor | |
| Could not derive option properties for no-param-reassign; meta.schema is not an object with named properties | |
| Config options match for no-plusplus | |
| Config options match for no-promise-executor-return | |
| Config options match for no-proto | |
| Config options match for no-prototype-builtins | |
| Config options match for no-redeclare | |
| Config options match for no-regex-spaces | |
| Could not derive option properties for no-restricted-globals; meta.schema is not an object with named properties | |
| Could not derive option properties for no-restricted-imports; meta.schema is not an object with named properties | |
| Could not derive option properties for no-return-assign; meta.schema is not an object with named properties | |
| Config options match for no-script-url | |
| Config options match for no-self-assign | |
| Config options match for no-self-compare | |
| Config options match for no-sequences | |
| Config options match for no-setter-return | |
| Config options match for no-shadow-restricted-names | |
| Config options match for no-sparse-arrays | |
| Config options match for no-template-curly-in-string | |
| Config options match for no-ternary | |
| Config options match for no-this-before-super | |
| Config options match for no-throw-literal | |
| Config options match for no-unassigned-vars | |
| Config options match for no-undef | |
| Config options match for no-undefined | |
| Config options match for no-unexpected-multiline | |
| Config options match for no-unneeded-ternary | |
| Config options match for no-unreachable | |
| Config options match for no-unsafe-finally | |
| Config options match for no-unsafe-negation | |
| Config options match for no-unsafe-optional-chaining | |
| Mismatch for no-unused-expressions: | |
| In ESLint only: ignoreDirectives | |
| Config options match for no-unused-labels | |
| Config options match for no-unused-private-class-members | |
| Could not derive option properties for no-unused-vars; meta.schema is not an object with named properties | |
| Config options match for no-useless-backreference | |
| Config options match for no-useless-call | |
| Config options match for no-useless-catch | |
| Config options match for no-useless-computed-key | |
| Config options match for no-useless-concat | |
| Config options match for no-useless-constructor | |
| Config options match for no-useless-escape | |
| Config options match for no-useless-rename | |
| Config options match for no-useless-return | |
| Config options match for no-var | |
| Config options match for no-void | |
| Mismatch for no-warning-comments: | |
| In ESLint only: terms, location, decoration | |
| Config options match for no-with | |
| Could not derive option properties for operator-assignment; meta.schema is not an object with named properties | |
| Could not derive option properties for prefer-destructuring; meta.schema is not an object with named properties | |
| Config options match for prefer-exponentiation-operator | |
| Config options match for prefer-numeric-literals | |
| Config options match for prefer-object-has-own | |
| Config options match for prefer-object-spread | |
| Config options match for prefer-promise-reject-errors | |
| Config options match for prefer-rest-params | |
| Config options match for prefer-spread | |
| Config options match for prefer-template | |
| Config options match for preserve-caught-error | |
| Could not derive option properties for radix; meta.schema is not an object with named properties | |
| Config options match for require-await | |
| Config options match for require-yield | |
| Config options match for sort-imports | |
| Could not derive option properties for sort-keys; meta.schema is not an object with named properties | |
| Config options match for sort-vars | |
| Config options match for symbol-description | |
| Could not derive option properties for unicode-bom; meta.schema is not an object with named properties | |
| Config options match for use-isnan | |
| Config options match for valid-typeof | |
| Config options match for vars-on-top | |
| Could not derive option properties for yoda; meta.schema is not an object with named properties | |
| Could not derive option properties for import/consistent-type-specifier-style; meta.schema is not an object with named properties | |
| Config options match for import/default | |
| Config options match for import/export | |
| Config options match for import/exports-last | |
| Could not derive option properties for import/extensions; meta.schema is not an object with named properties | |
| Could not derive option properties for import/first; meta.schema is not an object with named properties | |
| Could not derive option properties for import/group-exports; meta.schema is not an object with named properties | |
| Config options match for import/max-dependencies | |
| Mismatch for import/named: | |
| In ESLint only: commonjs | |
| Config options match for import/namespace | |
| Mismatch for import/no-absolute-path: | |
| In ESLint only: ignore | |
| Config options match for import/no-amd | |
| Config options match for import/no-anonymous-default-export | |
| Could not derive option properties for import/no-commonjs; meta.schema is not an object with named properties | |
| Mismatch for import/no-cycle: | |
| In Rust only: ignoreTypes | |
| In ESLint only: commonjs, amd, esmodule, ignore, disableScc | |
| Config options match for import/no-default-export | |
| Mismatch for import/no-duplicates: | |
| In ESLint only: considerQueryString | |
| Config options match for import/no-dynamic-require | |
| Config options match for import/no-empty-named-blocks | |
| Config options match for import/no-mutable-exports | |
| Config options match for import/no-named-as-default | |
| Config options match for import/no-named-as-default-member | |
| Config options match for import/no-named-default | |
| Config options match for import/no-named-export | |
| Config options match for import/no-namespace | |
| Config options match for import/no-self-import | |
| Mismatch for import/no-unassigned-import: | |
| In Rust only: globs | |
| In ESLint only: devDependencies, optionalDependencies, peerDependencies, allow | |
| Config options match for import/no-webpack-loader-syntax | |
| Config options match for import/prefer-default-export | |
| Config options match for import/unambiguous | |
| Mismatch for jest/consistent-test-it: | |
| In ESLint only: fn | |
| Config options match for jest/expect-expect | |
| Config options match for jest/max-expects | |
| Config options match for jest/max-nested-describe | |
| Config options match for jest/no-alias-methods | |
| Config options match for jest/no-commented-out-tests | |
| Config options match for jest/no-conditional-expect | |
| Config options match for jest/no-conditional-in-test | |
| Config options match for jest/no-confusing-set-timeout | |
| Mismatch for jest/no-deprecated-functions: | |
| In Rust only: jest | |
| Config options match for jest/no-disabled-tests | |
| Config options match for jest/no-done-callback | |
| Config options match for jest/no-duplicate-hooks | |
| Config options match for jest/no-export | |
| Config options match for jest/no-focused-tests | |
| Config options match for jest/no-hooks | |
| Config options match for jest/no-identical-title | |
| Config options match for jest/no-interpolation-in-snapshots | |
| Config options match for jest/no-jasmine-globals | |
| Config options match for jest/no-large-snapshots | |
| Config options match for jest/no-mocks-import | |
| Could not derive option properties for jest/no-restricted-jest-methods; meta.schema is not an object with named properties | |
| Could not derive option properties for jest/no-restricted-matchers; meta.schema is not an object with named properties | |
| Config options match for jest/no-standalone-expect | |
| Config options match for jest/no-test-prefixes | |
| Config options match for jest/no-test-return-statement | |
| Config options match for jest/no-untyped-mock-factory | |
| Config options match for jest/padding-around-test-blocks | |
| Config options match for jest/prefer-called-with | |
| Config options match for jest/prefer-comparison-matcher | |
| Config options match for jest/prefer-each | |
| Config options match for jest/prefer-equality-matcher | |
| Config options match for jest/prefer-expect-resolves | |
| Config options match for jest/prefer-hooks-in-order | |
| Config options match for jest/prefer-hooks-on-top | |
| Config options match for jest/prefer-jest-mocked | |
| Mismatch for jest/prefer-lowercase-title: | |
| In Rust only: lowercaseFirstCharacterOnly | |
| Config options match for jest/prefer-mock-promise-shorthand | |
| Config options match for jest/prefer-spy-on | |
| Config options match for jest/prefer-strict-equal | |
| Config options match for jest/prefer-to-be | |
| Config options match for jest/prefer-to-contain | |
| No metadata found for jest/prefer-to-have-been-called; skipping | |
| No metadata found for jest/prefer-to-have-been-called-times; skipping | |
| Config options match for jest/prefer-to-have-length | |
| Config options match for jest/prefer-todo | |
| Config options match for jest/require-hook | |
| Config options match for jest/require-to-throw-message | |
| Config options match for jest/require-top-level-describe | |
| Config options match for jest/valid-describe-callback | |
| Config options match for jest/valid-expect | |
| Mismatch for jest/valid-title: | |
| In ESLint only: ignoreSpaces, ignoreTypeOfDescribeName, ignoreTypeOfTestName, disallowedWords | |
| Could not derive option properties for jsdoc/check-access; meta.schema is not an object with named properties | |
| Mismatch for jsdoc/check-property-names: | |
| In ESLint only: enableFixer | |
| Mismatch for jsdoc/check-tag-names: | |
| In ESLint only: enableFixer, inlineTags | |
| Config options match for jsdoc/empty-tags | |
| Mismatch for jsdoc/implements-on-classes: | |
| In ESLint only: contexts | |
| Mismatch for jsdoc/no-defaults: | |
| In ESLint only: contexts | |
| Mismatch for jsdoc/require-param: | |
| In ESLint only: autoIncrementBase, contexts, enableFixer, enableRestElementFixer, enableRootFixer, ignoreWhenAllParamsMissing, interfaceExemptsParamsCheck, unnamedRootBase, useDefaultObjectProperties | |
| Mismatch for jsdoc/require-param-description: | |
| In ESLint only: contexts, defaultDestructuredRootDescription, setDefaultDestructuredRootDescription | |
| Mismatch for jsdoc/require-param-name: | |
| In ESLint only: contexts | |
| Mismatch for jsdoc/require-param-type: | |
| In ESLint only: contexts, defaultDestructuredRootType, setDefaultDestructuredRootType | |
| Could not derive option properties for jsdoc/require-property; meta.schema is not an object with named properties | |
| Could not derive option properties for jsdoc/require-property-description; meta.schema is not an object with named properties | |
| Could not derive option properties for jsdoc/require-property-name; meta.schema is not an object with named properties | |
| Could not derive option properties for jsdoc/require-property-type; meta.schema is not an object with named properties | |
| Mismatch for jsdoc/require-returns: | |
| In ESLint only: contexts, enableFixer, publicOnly | |
| Mismatch for jsdoc/require-returns-description: | |
| In ESLint only: contexts | |
| Mismatch for jsdoc/require-returns-type: | |
| In ESLint only: contexts | |
| Mismatch for jsdoc/require-yields: | |
| In ESLint only: contexts, forceRequireNext, next, nextWithGeneratorTag | |
| Mismatch for jsx_a11y/alt-text: | |
| In ESLint only: elements | |
| Config options match for jsx_a11y/anchor-ambiguous-text | |
| Mismatch for jsx_a11y/anchor-has-content: | |
| In ESLint only: components | |
| Mismatch for jsx_a11y/anchor-is-valid: | |
| In Rust only: validHrefs | |
| In ESLint only: components, specialLink, aspects | |
| Config options match for jsx_a11y/aria-activedescendant-has-tabindex | |
| Config options match for jsx_a11y/aria-props | |
| Config options match for jsx_a11y/aria-role | |
| Config options match for jsx_a11y/aria-unsupported-elements | |
| Config options match for jsx_a11y/autocomplete-valid | |
| Config options match for jsx_a11y/click-events-have-key-events | |
| Config options match for jsx_a11y/heading-has-content | |
| Config options match for jsx_a11y/html-has-lang | |
| Config options match for jsx_a11y/iframe-has-title | |
| Config options match for jsx_a11y/img-redundant-alt | |
| Config options match for jsx_a11y/label-has-associated-control | |
| Config options match for jsx_a11y/lang | |
| Config options match for jsx_a11y/media-has-caption | |
| Config options match for jsx_a11y/mouse-events-have-key-events | |
| Config options match for jsx_a11y/no-access-key | |
| Config options match for jsx_a11y/no-aria-hidden-on-focusable | |
| Config options match for jsx_a11y/no-autofocus | |
| Mismatch for jsx_a11y/no-distracting-elements: | |
| In ESLint only: elements | |
| Mismatch for jsx_a11y/no-noninteractive-tabindex: | |
| In Rust only: allowExpressionValues | |
| Could not derive option properties for jsx_a11y/no-redundant-roles; meta.schema is not an object with named properties | |
| Config options match for jsx_a11y/prefer-tag-over-role | |
| Config options match for jsx_a11y/role-has-required-aria-props | |
| Config options match for jsx_a11y/role-supports-aria-props | |
| Config options match for jsx_a11y/scope | |
| Config options match for jsx_a11y/tabindex-no-positive | |
| Config options match for nextjs/google-font-display | |
| Config options match for nextjs/google-font-preconnect | |
| Config options match for nextjs/inline-script-id | |
| Config options match for nextjs/next-script-for-ga | |
| Config options match for nextjs/no-assign-module-variable | |
| Config options match for nextjs/no-async-client-component | |
| Config options match for nextjs/no-before-interactive-script-outside-document | |
| Config options match for nextjs/no-css-tags | |
| Config options match for nextjs/no-document-import-in-page | |
| Config options match for nextjs/no-duplicate-head | |
| Config options match for nextjs/no-head-element | |
| Config options match for nextjs/no-head-import-in-document | |
| Could not derive option properties for nextjs/no-html-link-for-pages; meta.schema is not an object with named properties | |
| Config options match for nextjs/no-img-element | |
| Config options match for nextjs/no-page-custom-font | |
| Config options match for nextjs/no-script-component-in-head | |
| Config options match for nextjs/no-styled-jsx-in-document | |
| Config options match for nextjs/no-sync-scripts | |
| Config options match for nextjs/no-title-in-document-head | |
| Config options match for nextjs/no-typos | |
| Config options match for nextjs/no-unwanted-polyfillio | |
| Config options match for node/no-exports-assign | |
| Config options match for node/no-new-require | |
| Mismatch for node/no-process-env: | |
| In Rust only: allowedVariables | |
| Config options match for promise/always-return | |
| Config options match for promise/avoid-new | |
| Mismatch for promise/catch-or-return: | |
| In ESLint only: allowThenStrict | |
| Mismatch for promise/no-callback-in-promise: | |
| In Rust only: callbacks | |
| Config options match for promise/no-multiple-resolved | |
| Config options match for promise/no-nesting | |
| Config options match for promise/no-new-statics | |
| Config options match for promise/no-promise-in-callback | |
| Config options match for promise/no-return-in-finally | |
| Config options match for promise/no-return-wrap | |
| Config options match for promise/param-names | |
| Config options match for promise/prefer-await-to-callbacks | |
| Config options match for promise/prefer-await-to-then | |
| Config options match for promise/prefer-catch | |
| Config options match for promise/spec-only | |
| Mismatch for promise/valid-params: | |
| In ESLint only: exclude | |
| Config options match for react/button-has-type | |
| Config options match for react/checked-requires-onchange-or-readonly | |
| Mismatch for react/exhaustive-deps: | |
| In ESLint only: enableDangerousAutofixThisMayCauseInfiniteLoops, experimental_autoDependenciesHooks, requireExplicitEffectDeps | |
| Mismatch for react/forbid-dom-props: | |
| In ESLint only: forbid | |
| Mismatch for react/forbid-elements: | |
| In ESLint only: forbid | |
| Config options match for react/forward-ref-uses-ref | |
| Config options match for react/iframe-missing-sandbox | |
| Could not derive option properties for react/jsx-boolean-value; meta.schema is not an object with named properties | |
| Could not derive option properties for react/jsx-curly-brace-presence; meta.schema is not an object with named properties | |
| Config options match for react/jsx-filename-extension | |
| Could not derive option properties for react/jsx-fragments; meta.schema is not an object with named properties | |
| Could not derive option properties for react/jsx-handler-names; meta.schema is not an object with named properties | |
| Mismatch for react/jsx-key: | |
| In ESLint only: checkFragmentShorthand, checkKeyMustBeforeSpread, warnOnDuplicates | |
| Config options match for react/jsx-no-comment-textnodes | |
| Mismatch for react/jsx-no-duplicate-props: | |
| In ESLint only: ignoreCase | |
| Could not derive option properties for react/jsx-no-script-url; meta.schema is not an object with named properties | |
| Config options match for react/jsx-no-target-blank | |
| Mismatch for react/jsx-no-undef: | |
| In ESLint only: allowGlobals | |
| Config options match for react/jsx-no-useless-fragment | |
| Config options match for react/jsx-pascal-case | |
| Could not derive option properties for react/jsx-props-no-spread-multi; meta.schema is not an object with named properties | |
| Could not derive option properties for react/jsx-props-no-spreading; meta.schema is not an object with named properties | |
| Config options match for react/no-array-index-key | |
| Mismatch for react/no-children-prop: | |
| In ESLint only: allowFunctions | |
| Mismatch for react/no-danger: | |
| In ESLint only: customComponentNames | |
| Config options match for react/no-danger-with-children | |
| Could not derive option properties for react/no-direct-mutation-state; meta.schema is not an object with named properties | |
| Config options match for react/no-find-dom-node | |
| Config options match for react/no-is-mounted | |
| Config options match for react/no-namespace | |
| Config options match for react/no-redundant-should-component-update | |
| Config options match for react/no-render-return-value | |
| Config options match for react/no-set-state | |
| Config options match for react/no-string-refs | |
| Mismatch for react/no-unescaped-entities: | |
| In ESLint only: forbid | |
| Config options match for react/no-unknown-property | |
| No metadata found for react/only-export-components; skipping | |
| Could not derive option properties for react/prefer-es6-class; meta.schema is not an object with named properties | |
| Config options match for react/react-in-jsx-scope | |
| Config options match for react/require-render-return | |
| Mismatch for react/rules-of-hooks: | |
| In ESLint only: additionalHooks | |
| Config options match for react/self-closing-comp | |
| Could not derive option properties for react/state-in-constructor; meta.schema is not an object with named properties | |
| Config options match for react/style-prop-object | |
| Config options match for react/void-dom-elements-no-children | |
| Mismatch for react_perf/jsx-no-jsx-as-prop: | |
| In ESLint only: nativeAllowList | |
| Mismatch for react_perf/jsx-no-new-array-as-prop: | |
| In ESLint only: nativeAllowList | |
| Mismatch for react_perf/jsx-no-new-function-as-prop: | |
| In ESLint only: nativeAllowList | |
| Mismatch for react_perf/jsx-no-new-object-as-prop: | |
| In ESLint only: nativeAllowList | |
| Config options match for typescript/adjacent-overload-signatures | |
| Config options match for typescript/array-type | |
| Config options match for typescript/await-thenable | |
| Config options match for typescript/ban-ts-comment | |
| Config options match for typescript/ban-tslint-comment | |
| No metadata found for typescript/ban-types; skipping | |
| Could not derive option properties for typescript/consistent-generic-constructors; meta.schema is not an object with named properties | |
| Could not derive option properties for typescript/consistent-indexed-object-style; meta.schema is not an object with named properties | |
| Could not derive option properties for typescript/consistent-type-definitions; meta.schema is not an object with named properties | |
| Config options match for typescript/consistent-type-imports | |
| Config options match for typescript/explicit-function-return-type | |
| Config options match for typescript/explicit-module-boundary-types | |
| Config options match for typescript/no-array-delete | |
| Mismatch for typescript/no-base-to-string: | |
| In ESLint only: checkUnknown | |
| Config options match for typescript/no-confusing-non-null-assertion | |
| Config options match for typescript/no-confusing-void-expression | |
| Mismatch for typescript/no-deprecated: | |
| In ESLint only: allow | |
| Config options match for typescript/no-duplicate-enum-values | |
| Config options match for typescript/no-duplicate-type-constituents | |
| Config options match for typescript/no-dynamic-delete | |
| Config options match for typescript/no-empty-interface | |
| Config options match for typescript/no-empty-object-type | |
| Config options match for typescript/no-explicit-any | |
| Config options match for typescript/no-extra-non-null-assertion | |
| Config options match for typescript/no-extraneous-class | |
| Config options match for typescript/no-floating-promises | |
| Config options match for typescript/no-for-in-array | |
| Config options match for typescript/no-implied-eval | |
| Config options match for typescript/no-import-type-side-effects | |
| Config options match for typescript/no-inferrable-types | |
| Mismatch for typescript/no-meaningless-void-operator: | |
| In ESLint only: checkNever | |
| Config options match for typescript/no-misused-new | |
| Config options match for typescript/no-misused-promises | |
| Mismatch for typescript/no-misused-spread: | |
| In ESLint only: allow | |
| Config options match for typescript/no-mixed-enums | |
| Config options match for typescript/no-namespace | |
| Config options match for typescript/no-non-null-asserted-nullish-coalescing | |
| Config options match for typescript/no-non-null-asserted-optional-chain | |
| Config options match for typescript/no-non-null-assertion | |
| Config options match for typescript/no-redundant-type-constituents | |
| Config options match for typescript/no-require-imports | |
| Config options match for typescript/no-restricted-types | |
| Config options match for typescript/no-this-alias | |
| Config options match for typescript/no-unnecessary-boolean-literal-compare | |
| Config options match for typescript/no-unnecessary-parameter-property-assignment | |
| Config options match for typescript/no-unnecessary-template-expression | |
| Config options match for typescript/no-unnecessary-type-arguments | |
| Mismatch for typescript/no-unnecessary-type-assertion: | |
| In ESLint only: checkLiteralConstAssertions | |
| Config options match for typescript/no-unnecessary-type-constraint | |
| Config options match for typescript/no-unsafe-argument | |
| Config options match for typescript/no-unsafe-assignment | |
| Config options match for typescript/no-unsafe-call | |
| Config options match for typescript/no-unsafe-declaration-merging | |
| Config options match for typescript/no-unsafe-enum-comparison | |
| Config options match for typescript/no-unsafe-function-type | |
| Mismatch for typescript/no-unsafe-member-access: | |
| In ESLint only: allowOptionalChaining | |
| Config options match for typescript/no-unsafe-return | |
| Config options match for typescript/no-unsafe-type-assertion | |
| Config options match for typescript/no-unsafe-unary-minus | |
| Config options match for typescript/no-useless-empty-export | |
| Mismatch for typescript/no-var-requires: | |
| In ESLint only: allow | |
| Config options match for typescript/no-wrapper-object-types | |
| Config options match for typescript/non-nullable-type-assertion-style | |
| Mismatch for typescript/only-throw-error: | |
| In ESLint only: allowRethrowing | |
| Config options match for typescript/prefer-as-const | |
| Config options match for typescript/prefer-enum-initializers | |
| Config options match for typescript/prefer-for-of | |
| Config options match for typescript/prefer-function-type | |
| Config options match for typescript/prefer-includes | |
| Config options match for typescript/prefer-literal-enum-member | |
| Config options match for typescript/prefer-namespace-keyword | |
| Config options match for typescript/prefer-nullish-coalescing | |
| Config options match for typescript/prefer-promise-reject-errors | |
| Config options match for typescript/prefer-reduce-type-parameter | |
| Config options match for typescript/prefer-return-this-type | |
| Config options match for typescript/prefer-ts-expect-error | |
| Config options match for typescript/promise-function-async | |
| Config options match for typescript/related-getter-setter-pairs | |
| Mismatch for typescript/require-array-sort-compare: | |
| In ESLint only: ignoreStringArrays | |
| Config options match for typescript/require-await | |
| Config options match for typescript/restrict-plus-operands | |
| Config options match for typescript/restrict-template-expressions | |
| Could not derive option properties for typescript/return-await; meta.schema is not an object with named properties | |
| Config options match for typescript/strict-boolean-expressions | |
| Config options match for typescript/switch-exhaustiveness-check | |
| Config options match for typescript/triple-slash-reference | |
| Config options match for typescript/unbound-method | |
| Config options match for typescript/use-unknown-in-catch-callback-variable | |
| Config options match for unicorn/catch-error-name | |
| Config options match for unicorn/consistent-assert | |
| Config options match for unicorn/consistent-date-clone | |
| Config options match for unicorn/consistent-empty-array-spread | |
| Config options match for unicorn/consistent-existence-index-check | |
| Config options match for unicorn/consistent-function-scoping | |
| Config options match for unicorn/empty-brace-spaces | |
| Config options match for unicorn/error-message | |
| Could not derive option properties for unicorn/escape-case; meta.schema is not an object with named properties | |
| Config options match for unicorn/explicit-length-check | |
| Could not derive option properties for unicorn/filename-case; meta.schema is not an object with named properties | |
| Config options match for unicorn/new-for-builtins | |
| Config options match for unicorn/no-abusive-eslint-disable | |
| Config options match for unicorn/no-accessor-recursion | |
| Config options match for unicorn/no-anonymous-default-export | |
| Config options match for unicorn/no-array-callback-reference | |
| Config options match for unicorn/no-array-for-each | |
| Config options match for unicorn/no-array-method-this-argument | |
| Config options match for unicorn/no-array-reduce | |
| Config options match for unicorn/no-array-reverse | |
| Config options match for unicorn/no-array-sort | |
| Config options match for unicorn/no-await-expression-member | |
| Config options match for unicorn/no-await-in-promise-methods | |
| Config options match for unicorn/no-console-spaces | |
| Config options match for unicorn/no-document-cookie | |
| Config options match for unicorn/no-empty-file | |
| Config options match for unicorn/no-hex-escape | |
| Could not derive option properties for unicorn/no-instanceof-array; meta.schema is not an object with named properties | |
| Config options match for unicorn/no-instanceof-builtins | |
| Config options match for unicorn/no-invalid-fetch-options | |
| Config options match for unicorn/no-invalid-remove-event-listener | |
| Could not derive option properties for unicorn/no-length-as-slice-end; meta.schema is not an object with named properties | |
| Config options match for unicorn/no-lonely-if | |
| Config options match for unicorn/no-magic-array-flat-depth | |
| Config options match for unicorn/no-negation-in-equality-check | |
| Config options match for unicorn/no-nested-ternary | |
| Config options match for unicorn/no-new-array | |
| Config options match for unicorn/no-new-buffer | |
| Config options match for unicorn/no-null | |
| Config options match for unicorn/no-object-as-default-parameter | |
| Config options match for unicorn/no-process-exit | |
| Config options match for unicorn/no-single-promise-in-promise-methods | |
| Config options match for unicorn/no-static-only-class | |
| Config options match for unicorn/no-thenable | |
| Config options match for unicorn/no-this-assignment | |
| Config options match for unicorn/no-typeof-undefined | |
| Config options match for unicorn/no-unnecessary-array-flat-depth | |
| Config options match for unicorn/no-unnecessary-array-splice-count | |
| Config options match for unicorn/no-unnecessary-await | |
| Config options match for unicorn/no-unnecessary-slice-end | |
| Config options match for unicorn/no-unreadable-array-destructuring | |
| Config options match for unicorn/no-unreadable-iife | |
| No metadata found for unicorn/no-useless-collection-argument; skipping | |
| Config options match for unicorn/no-useless-error-capture-stack-trace | |
| Config options match for unicorn/no-useless-fallback-in-spread | |
| Config options match for unicorn/no-useless-length-check | |
| Mismatch for unicorn/no-useless-promise-resolve-reject: | |
| In Rust only: allowReject | |
| Config options match for unicorn/no-useless-spread | |
| Config options match for unicorn/no-useless-switch-case | |
| Config options match for unicorn/no-useless-undefined | |
| Config options match for unicorn/no-zero-fractions | |
| Mismatch for unicorn/number-literal-case: | |
| In ESLint only: hexadecimalValue | |
| Config options match for unicorn/numeric-separators-style | |
| Mismatch for unicorn/prefer-add-event-listener: | |
| In ESLint only: excludedPackages | |
| Mismatch for unicorn/prefer-array-find: | |
| In ESLint only: checkFromLast | |
| Mismatch for unicorn/prefer-array-flat: | |
| In ESLint only: functions | |
| Config options match for unicorn/prefer-array-flat-map | |
| Config options match for unicorn/prefer-array-index-of | |
| Config options match for unicorn/prefer-array-some | |
| Config options match for unicorn/prefer-at | |
| Config options match for unicorn/prefer-bigint-literals | |
| Config options match for unicorn/prefer-blob-reading-methods | |
| Config options match for unicorn/prefer-class-fields | |
| Config options match for unicorn/prefer-classlist-toggle | |
| Config options match for unicorn/prefer-code-point | |
| Config options match for unicorn/prefer-date-now | |
| Config options match for unicorn/prefer-default-parameters | |
| Config options match for unicorn/prefer-dom-node-append | |
| Config options match for unicorn/prefer-dom-node-dataset | |
| Config options match for unicorn/prefer-dom-node-remove | |
| Config options match for unicorn/prefer-dom-node-text-content | |
| Config options match for unicorn/prefer-event-target | |
| Config options match for unicorn/prefer-global-this | |
| Config options match for unicorn/prefer-includes | |
| Config options match for unicorn/prefer-keyboard-event-key | |
| Config options match for unicorn/prefer-logical-operator-over-ternary | |
| Config options match for unicorn/prefer-math-min-max | |
| Config options match for unicorn/prefer-math-trunc | |
| Config options match for unicorn/prefer-modern-dom-apis | |
| Config options match for unicorn/prefer-modern-math-apis | |
| Config options match for unicorn/prefer-native-coercion-functions | |
| Config options match for unicorn/prefer-negative-index | |
| Config options match for unicorn/prefer-node-protocol | |
| Config options match for unicorn/prefer-number-properties | |
| Config options match for unicorn/prefer-object-from-entries | |
| Config options match for unicorn/prefer-optional-catch-binding | |
| Config options match for unicorn/prefer-prototype-methods | |
| Config options match for unicorn/prefer-query-selector | |
| Config options match for unicorn/prefer-reflect-apply | |
| Config options match for unicorn/prefer-regexp-test | |
| No metadata found for unicorn/prefer-response-static-json; skipping | |
| Config options match for unicorn/prefer-set-has | |
| Config options match for unicorn/prefer-set-size | |
| Config options match for unicorn/prefer-spread | |
| Config options match for unicorn/prefer-string-raw | |
| Config options match for unicorn/prefer-string-replace-all | |
| Config options match for unicorn/prefer-string-slice | |
| Config options match for unicorn/prefer-string-starts-ends-with | |
| Config options match for unicorn/prefer-string-trim-start-end | |
| Config options match for unicorn/prefer-structured-clone | |
| Config options match for unicorn/prefer-top-level-await | |
| Config options match for unicorn/prefer-type-error | |
| Config options match for unicorn/require-array-join-separator | |
| Config options match for unicorn/require-module-specifiers | |
| Config options match for unicorn/require-number-to-fixed-digits-argument | |
| Config options match for unicorn/require-post-message-target-origin | |
| Could not derive option properties for unicorn/switch-case-braces; meta.schema is not an object with named properties | |
| Config options match for unicorn/text-encoding-identifier-case | |
| Config options match for unicorn/throw-new-error | |
| Config options match for vitest/no-conditional-tests | |
| Config options match for vitest/no-import-node-test | |
| Config options match for vitest/prefer-to-be-falsy | |
| Config options match for vitest/prefer-to-be-object | |
| Config options match for vitest/prefer-to-be-truthy | |
| Config options match for vitest/require-local-test-context-for-concurrent-snapshots | |
| Could not derive option properties for vue/define-emits-declaration; meta.schema is not an object with named properties | |
| Could not derive option properties for vue/define-props-declaration; meta.schema is not an object with named properties | |
| Config options match for vue/define-props-destructuring | |
| Config options match for vue/max-props | |
| Config options match for vue/no-export-in-script-setup | |
| Config options match for vue/no-import-compiler-macros | |
| Config options match for vue/no-multiple-slot-args | |
| Mismatch for vue/no-required-prop-with-default: | |
| In ESLint only: autofix | |
| Config options match for vue/prefer-import-from-vue | |
| Config options match for vue/require-default-export | |
| Config options match for vue/require-typed-ref | |
| Config options match for vue/valid-define-emits | |
| Config options match for vue/valid-define-props | |
| Summary: | |
| Total rules checked: 539 | |
| Matched: 474 | |
| Mismatched: 65 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment