mirror of
https://github.com/oxc-project/oxc.git
synced 2026-09-14 19:36:11 +08:00
c42d6397ea
# Oxlint ### 💥 BREAKING CHANGES -a33788east: [**BREAKING**] Group class heritage into `ClassHeritage` (#25360) (camc314) -5c5cdcdast: [**BREAKING**] Narrow `TSInterfaceHeritage::expression` to TSTypeName (#24360) (camc314) -6be314fast: [**BREAKING**] Remove duplicated `VariableDeclarator::kind` (#25319) (camc314) -44fd320ast: [**BREAKING**] Split TS external modules & Namespace Declarations (#25284) (camc314) ### 🚀 Features -ccb8fe8linter/jsdoc: Implement `no-blank-blocks` rule (#25207) (Mikhail Baev) -d4a897clinter/eslint: Implement `one-var` rule (#24470) (Cole Ellison) -5ab9340linter/jsx-a11y/anchor-has-content: Add options to match eslint (#24571) (Cole Ellison) ### 🐛 Bug Fixes -b746e00linter/eslint/no-implicit-coercion: Preserve template coercion whitespace (#25470) (camc314) -a92c541linter: Preserve source text for JS plugin ignore fixes (#25280) (Norcleeh) -675c840linter/eslint/prefer-promise-reject-errors: Handle parenthesized calls (#25378) (camc314) -1703739linter/unicorn/new-for-builtins: Ignore optional chains (#25411) (tanakalucky) -95ece63linter/unicorn/prefer-code-point: Downgrade the auto-fix to dangerous (#25412) (leemr) -c451a0elinter/vitest: Validate `consistent-test-filename` regex patterns (#25408) (Mikhail Baev) -937825creact_compiler: Disable exhaustive memo validation by default (#25417) (Boshen) -f0f7daelinter/eslint/no-unused-vars: Report invalid regex options (#25380) (Cameron) -44e73fdlinter/unicorn/prefer-array-flat: Fix `concat.apply` suggestions (#25373) (Cameron) -6846a9alinter/react/rules-of-hooks: Detect constructor callbacks (#25377) (camc314) -b247a9dlinter/unicorn/new-for-builtins: Support `Float16Array` (#25382) (tanakalucky) -19109cdlinter/unicorn/error-message: Support `SuppressedError` messages (#25375) (camc314) -9c13f5elinter: Assert token lookup invariants (#25368) (camc314) -bc35f83linter/eslint/no-unused-vars: Bound catch parameter lookup (#25367) (camc314) -c159fb9linter/unicorn/switch-case-braces: Bound token lookup (#25363) (camc314) -03b2eb2linter/unicorn/no-static-only-class: Bound token lookup (#25361) (camc314) -0afc59elinter/unicorn/empty-brace-spaces: Bound token lookup (#25353) (camc314) -2963d98linter/eslint/no-unreachable-loop: Do not report loops whose body has a finally block (#25335) (Todor Andonov) -589e5fblinter/eslint/no-param-reassign: Validate `ignorePropertyModificationsForRegex` property (#25346) (Mikhail Baev) -aae5d8blinter/eslint/no-throw-literal: False positive on variable declared without initializer (#25275) (cjnoname) -6b1c479oxlint: Normalize customized rule names (#25316) (camc314) -d494eb5linter/unicorn/consistent-existence-index-check: Bound token lookup (#25325) (camc314) -4266037linter/typescript/prefer-namespace-keyword: Bound token lookup (#25322) (camc314) -4745b4elinter/typescript/no-namespace: Bound token lookup (#25321) (camc314) -648a481linter/eslint/one-var: Avoid joining exported declarations (#25314) (camc314) -9573937linter/typescript: Validate `ban-ts-comment` description_format (#25320) (Mikhail Baev) -ebf7d18linter/typescript/consistent-type-definitions: Bound token lookup (#25281) (camc314) -1501ccflinter/typescript/consistent-generic-constructors: Bound token lookup (#25258) (camc314) ### ⚡ Performance -8f784f3linter: Reduce rule config dispatch size (#25461) (Boshen) -2de4ec2linter: Reduce visitor code size (#25441) (Boshen) -6fb7f47linter/unicorn/prefer-export-from: Narrow `ExportFromDeclaration` lookup (#25381) (camc314) -e3f6263linter/unicorn/prefer-default-parameters: Avoid reference allocation (#25379) (camc314) -d863473linter/vue/max-props: Narrow AST dispatch (#25372) (camc314) -273d867linter: Avoid diagnostic sorting after applying fixes (#25079) (Sysix) -4ec9189oxlint/lsp: Avoid second lock for getting/removing unused directives (#25350) (Sysix) -6c0d01boxlint/lsp: Preallocate fix-content vec (#25351) (Sysix) -3a94055linter: Avoid per-call heap allocations in jest and unicorn helpers (#25210) (Connor Shea) -4abff11linter: Avoid redundant message work in the agent reporter (#25315) (Connor Shea) -6bb5421linter: Hoist `current_dir` out of the stylish reporter loop (#25313) (Connor Shea) -9a7c323linter: Compute diagnostic `Info` once per diagnostic in junit reporter (#25312) (Connor Shea) -1cf7ddeoxlint: Render JSON report into a single buffer (#25295) (connorshea) -8492cfdlinter/typescript/ban-ts-comment: Bail early with substring guard (#25301) (Jacob Asper) -7607f04linter/typescript/ban-tslint-comment: Replace regex with manual parser (#25299) (Jacob Asper) # Oxfmt ### 💥 BREAKING CHANGES -a33788east: [**BREAKING**] Group class heritage into `ClassHeritage` (#25360) (camc314) -5c5cdcdast: [**BREAKING**] Narrow `TSInterfaceHeritage::expression` to TSTypeName (#24360) (camc314) -6be314fast: [**BREAKING**] Remove duplicated `VariableDeclarator::kind` (#25319) (camc314) -44fd320ast: [**BREAKING**] Split TS external modules & Namespace Declarations (#25284) (camc314) ### 🚀 Features -fd02a89oxfmt: Dispatch yaml-in-css(frontmatter) to `oxc_formatter_yaml` (#25336) (leaysgur) -ab12665formatter_core: Add `hardlineWithoutBreakParent` equivalent IR (#25273) (leaysgur) ### 🐛 Bug Fixes -95dc917oxfmt: Drop IR Space at line start for js-in-xxx (#25460) (leaysgur) -b63ecccformatter: Keep comments after TS this_param (#25459) (leaysgur) -ab52a59formatter: Format xxx-in-js inside JSDoc js fence (#25414) (leaysgur) -1a2c64aformatter,oxfmt: Apply effective print width for JSDoc fence (#25413) (leaysgur) -2eaede9formatter_core: Unify leading-BOM handlings (#25340) (leaysgur) -ef1d04bformatter: Break mapped type brackets (#25297) (leaysgur) -4e6f3f1formatter: Break index signature brackets (#25296) (leaysgur) -e23dccfformatter_css: Bump oxc-css-parser to accept unknown at-rule with interpolated (#25277) (leaysgur) -c29b587formatter_core: Measure decided-flat fill separator as flat during group re-measure (#25276) (leaysgur) -f3c6953formatter_yaml: Don't rewrite overflowing key to implicit (#25274) (leaysgur) ### ⚡ Performance -c9d1a5boxfmt: Spawn tinypool lazily (#25298) (leaysgur) ### 📚 Documentation -6eae5c9formatter,oxfmt: Record embed-layer decisions in place (#25422) (leaysgur) -51224a7formatter_yaml: Pin EOF blank lines divergence (#25269) (leaysgur)
oxlint-plugin-eslint
ESLint's built-in rules as an Oxlint plugin.
This package exports all of ESLint's built-in rules as a JS plugin that Oxlint users can use.
Allows using ESLint rules that Oxlint doesn't implement natively yet.
More details in Oxlint docs.
Usage
Install the package:
npm install --save-dev oxlint-plugin-eslint
Add to your Oxlint config:
{
"jsPlugins": [{ "name": "eslint-js", "specifier": "oxlint-plugin-eslint" }],
"rules": {
"eslint-js/no-restricted-syntax": [
"error",
{
"selector": "ThrowStatement > CallExpression[callee.name=/Error$/]",
"message": "Use `new` keyword when throwing an `Error`."
}
]
}
}
All rules are prefixed with eslint-js/, to distinguish from Oxlint's Rust implementation of ESLint rules.