Releases: oxc-project/oxc
Releases · oxc-project/oxc
oxc crates_v0.114.0
🚀 Features
- 429d876 semantic: Assign ast node ids during semantic build (#19263) (Boshen)
- ebb80b3 ast: Add
node_idfield to all AST struct nodes (#18138) (Boshen)
🐛 Bug Fixes
- bfb15a3 semantic: Make multi_index_vec clone panic-safe (#19299) (Boshen)
- 41c50a5 transformer: Ignore invalid JSX pragma identifiers (#19296) (Boshen)
- deed3d8 transformer: Remove unnecessary trailing expression in object rest spread assignment (#19259) (Boshen)
- 5bdaacc transformer: Propagate source spans for sourcemap correctness (#19258) (Boshen)
- 3e0e5ba isolated-declarations: Align readonly class array initializer diagnostics with tsc (#19218) (camc314)
⚡ Performance
- c169c77 syntax: Optimize
is_identifier_name_patched(#19386) (sapphi-red) - aa1e1a8 allocator: Inline BitSet accessors (#19331) (Boshen)
- 5b90d46 semantic: Improve SoA with multi index vec (#19138) (Boshen)
- 99ce2a6 isolated_declarations: Mark all diagnostic functions as
#[cold](#19279) (camc314) - dd0220f transformer: Remove TS-only nodes earlier in
enter_statements(#19166) (Dunqing) - e5baf60 isolated-declarations: Replace hash collections with index-based Vec (#19221) (Dunqing)
📚 Documentation
oxlint v1.48.0 & oxfmt v0.33.0
Table of Contents
Oxlint v1.48.0
💥 BREAKING CHANGES
🚀 Features
- ce1baa0 linter: Implement eslint/no-shadow (#18979) (Víctor Fernández)
- 7a333c1 linter: Support dynamic configs via CLI arguments (#19384) (camc314)
- 1bf569b linter: Implement typescript/unified-signatures (#19375) (camc314)
- 6562a9b linter: Implement typescript/parameter-properties (#19374) (camc314)
- 94d8d74 linter: Implement typescript/no-use-before-define (#19373) (camc314)
- 80b002a linter: Implement fixer for unicorn/no-instanceof-builtins (#19371) (camc314)
- 5c3784b linter: Implement eslint/no-unmodified-loop-condition (#19341) (Vincent R)
- cc00a59 linter/const-comparisons: Improve diagnostics when mixing logical/comparison operators (#19370) (camc314)
- ea2c401 linter: Add support for no constructed context values (#18067) (Jovi De Croock)
- f2440eb linter: Mark eslint/no-return-assign as having no fixer (#19327) (camc314)
- 8588670 linter/unicorn: Implement suggestion for
unicorn/no-await-in-promise-methodsrule (#19359) (Mikhail Baev) - f0af965 linter: Move
jsx-a11y/no-static-element-interactionsrule out of the nursery. (#19355) (connorshea) - be0ce50 linter/tsgolint: Add support for labeled ranges in tsgolint diagnostics (#19201) (camchenry)
- b5bc900 linter: Implement fixer for unicorn/no-new-buffer (#19326) (camc314)
- 1612932 linter: Add typescript/no-unnecessary-condition (#19130) (camc314)
- 37dc6c5 linter: Implement fixer for unicorn/prefer-includes (#19323) (camc314)
🐛 Bug Fixes
- db7da3b linter: Add a few new DOM props for
react/no-unknown-property. (#19414) (connorshea) - c2b1870 linter: Enforce config options for
react/forbid-dom-propsrule. (#19387) (connorshea) - 3d24e44 linter: Honor no-empty-function allow getters/setters for object literals (#19393) (camc314)
- bbced8d linter: Enforce config options for
eslint/no-empty-functionrule, improve docs. (#19390) (connorshea) - 6bc8aec linter: Fix the behavior of
import/extensionsrule for a file that has multiple extensions. (#18919) (connorshea) - c62a295 linter/img-redundant-alt: Enforce whole-word matching for redundant alt text (#19367) (camc314)
- 98956fe linter/describe-function-title: Skip autofix for type-only imports (#19329) (camc314)
- d96d26d linter/plugins: Provide
parser.version(#19364) (overlookmotel) - 81f0039 linter_codegen: Compute rule IDs relative to previous rule (#19350) (camchenry)
- b7ef0a8 linter/consistent-indexed-object-style: Avoid unsafe Record conversions for mapped types (#19320) (camc314)
📚 Documentation
- 3a6059f linter: Improve docs for
eslint/require-awaitrule. (#19361) (connorshea) - b069269 linter/plugins: Add comment about deprecated
ScopeManagermethods (#19363) (overlookmotel) - 2d8aaf9 linter: Disable formatting for
eslint/no-unsafe-negationexamples. (#19347) (connorshea) - fb87806 linter: Ensure that we do not auto-format the docs for
unicorn/number-literal-caserule. (#19346) (connorshea) - 8d3ae27 linter/typescript: Skip docs for deprecated type aware rule options (#19324) (camc314)
Oxfmt v0.33.0
💥 BREAKING CHANGES
- 00135b5 formatter/sort_imports: [BREAKING] Change default
groupsorder (#19427) (leaysgur) - 9c34f72 formatter/sort_imports: [BREAKING] Report invalid group name with renaming
side-effect>side_effect(#19416) (leaysgur)
🚀 Features
- 4baebef formatter/sort_imports: Support
{ newlinesBetween: bool }insidegroups(#19358) (leaysgur) - d1c2fb6 formatter/sort_imports: Support
customGroupsattributes(selectorandmodifiers) (#19356) (leaysgur)
🐛 Bug Fixes
- 47d6a3e formatter: Revert #19399 (#19433) (leaysgur)
- f084ea6 oxfmt: Explicitly pass
process.envfor the forked process (#19380) (Long Ho) - 2bc7a14 formatter: Arrow function body incorrectly broken when return type has comment (#19368) (Dunqing)
- 90ec3d2 oxfmt: Update tailwind plugin which fixes crash on non-js file (#19353) (leaysgur)
- e9c5b1e formatter: Treat
PrivateFieldExpressionas simple call argument (#19348) (Dunqing) - 80643d5 formatter: Match Prettier union indentation with leading comments (#19271) (Dunqing)
⚡ Performance
oxlint v1.47.0 & oxfmt v0.32.0
Table of Contents
Oxlint v1.43.0
🚀 Features
- ebb80b3 ast: Add
node_idfield to all AST struct nodes (#18138) (Boshen) - 2879fc5 linter: Implement fixer for unicorn/prefer-math-trunc (#19275) (camc314)
- a204eda linter: Implement fixer for unicorn/no-typeof-undefined (#19274) (camc314)
- ab46d9c linter: Implement typescript/class-literal-property-style (#19252) (Vincent R)
- 1a61f58 linter: Implement typescript/no-invalid-void-type (#19242) (Vincent R)
🐛 Bug Fixes
- 45adda2 oxlint/lsp: Use blocking stdio in Oxlint (#19292) (overlookmotel)
- 05bc855 linter/import: Count unique module sources in max-dependencies (#19270) (camc314)
- 8566b44 linter: Check for preceeding token in math trunc fixer (#19277) (camc314)
- f16f2b6 linter/import-no-cycle: Avoid traversal-order false negatives with type-only edges (#19267) (camc314)
- d4937e7 linter: Recognize module-scoped callback refs as stable in exhaustive-deps (#19220) (Sreetam Das)
- 140c9bd linter: Detect fallthrough from
defaultwhen it is not the last case (#19261) (Boshen) - 740a009 linter: Accept digits after 'use' in hook names (#19254) (Sreetam Das)
- 31b562f linter: Update
import/no-named-as-defaultto allow named import if equivalent to the default import (#19100) (connorshea) - 79c82cc linter: Avoid applying object-level docs to nested object methods in require-param (#19231) (camc314)
⚡ Performance
Oxfmt v0.32.0
🚀 Features
🐛 Bug Fixes
- 1957908 formatter: Avoid unnecessary parentheses for string literal in labeled statement (#19272) (Dunqing)
Notes
This was an urgent release for a critical fix to language server:
No binaries are included in this release due to problems with the release workflow, but the above bugfix only affected Oxlint users who use packages from NPM.
Binaries will be included in next scheduled release on Monday 16th Feb.
oxc crates_v0.113.0
💥 BREAKING CHANGES
- 2bf7293 mangler: [BREAKING] Enable
top_levelby default for modules and commonjs (#18278) (sapphi-red) - 48b0542 span: [BREAKING] SourceType::ts should set module to unambigious (#18873) (Boshen)
🚀 Features
- 500d071 minifier: Local traverse ctx and generated minifier traverse (#19106) (Boshen)
- 142a1be parser: Detect binary files with TS1490 error (#19047) (Boshen)
- e316857 allocator/bitset: Add
Onesiterator toBitSet(#19027) (sapphi-red) - 742ad3f minifier: Default
invalid_import_side_effectstofalse(#18916) (sapphi-red) - 0eff6be parser: Error JSX-like type assertions and generics in
.mts/.cts(#18910) (Boshen) - 18320c6 span: Store file extension in
SourceType(#18893) (Boshen)
🐛 Bug Fixes
- bcd0f64 napi: Disable mimalloc global allocator on android targets (#19214) (Cameron)
- 0441237 source-type: Don't treat
d.tsas a declaration file (#19185) (Cameron) - a7514e4 isolated-declarations: Preserve const context in literal type inference (#19178) (camc314)
- 312e756 isolated-declarations: Preserve readonly literal initializers (#19177) (camc314)
- d0ca8d0 isolated-declarations: Skip parenthesis when inferring type (#19176) (camc314)
- 110c300 oxc_ecmascript:
+[false]and+[true]should evaluate toNaN(#19174) (copilot-swe-agent) - f32ea19 semantic: Report redeclaration error for import bindings conflicting with value declarations (#19068) (Boshen)
- 3aeba7a semantic: Report redeclaration error for
function a() {} var ain module mode (#19041) (Boshen) - 35e32c6 coverage: Match Babel's options.json inheritance for test fixtures (#19002) (Boshen)
- 463d60d semantic: Skip TS2391 for standalone computed-name class methods (#19025) (Boshen)
- 56c086b parser: Add modifier ordering validation (TS1029) (#19024) (Boshen)
- 6067a49 linter/jsdoc: False positive in
check-tag-namesfor@in email addresses and npm scopes (#19021) (Boshen) - b13bb70 semantic/jsdoc: Inline tags like
{@link}break jsdoc parsing (#19019) (Boshen) - e3609e3 regular_expression: Preserve UnicodeEscape CharacterKind in string literals (#18998) (Boshen)
- 57917ee parser: Parse decorators on rest parameters (#18938) (Boshen)
- 487601b napi: Disable mimalloc on Windows to fix worker_threads crash (#18923) (Boshen)
- 1f6b193 parser: Validate TypeScript import type options (#18889) (Boshen)
- 1663184 parser: Allow conditional types in function type parameters (#18886) (Boshen)
- 5758046 parser: Error on property access after instantiation expression (#18887) (Boshen)
- 5eb4a94 parser: Handle
<<as two<tokens in type argument contexts (#18885) (Boshen)
⚡ Performance
- ed8c054 oxc_str: Add precomputed hash to Ident for fast HashMap lookups (#19143) (Boshen)
- d4a0867 transformer_plugins: Switch ReplaceGlobalDefines from Traverse to VisitMut (#19146) (Boshen)
- 9eb16b3 syntax: Pack ASCII identifier tables into single bitflag table (#19088) (Boshen)
- e7595d1 mangler: Use BitSet for exported symbols set (#19023) (sapphi-red)
- 2537924 semantic: Optimize scope resolution with fast paths and inlining (#19029) (Boshen)
- 69a8d85 mangler: Use BitSet for keep_names symbols set (#19028) (sapphi-red)
- f78c525 parser: Try hybrid parsing for jsx children and closing element/fragments (#18789) (camchenry)
oxlint v1.46.0 & oxfmt v0.31.0
Table of Contents
Oxlint v1.46.0
🐛 Bug Fixes
- 5a16f10 oxlint, oxfmt: Update
bindings.jsfiles (#19229) (overlookmotel) - 3ea8f08 jsdoc: Prevent outer JSDoc from applying to nested functions (#19219) (camc314)
- 1b2f354 ci: Add missing riscv64/s390x napi targets for oxfmt and oxlint (#19217) (Cameron)
Oxfmt v0.31.0
🐛 Bug Fixes
- 5a16f10 oxlint, oxfmt: Update
bindings.jsfiles (#19229) (overlookmotel) - 1b2f354 ci: Add missing riscv64/s390x napi targets for oxfmt and oxlint (#19217) (Cameron)
Oxlint v1.44.0
🚀 Features
- aef2af5 linter/unicorn: Add fixer for
unicorn/relative-url-stylerule (#19186) (Mikhail Baev) - 80eba6f linter/max-params: Support
countThisoption (#19175) (camc314) - e19bc45 linter/no-new-func: Improve rule diagnostic with note and actionable help message (#19132) (Sean Gallen)
- e3dc5f6 linter/plugins:
RuleTestertest suggestions (#19104) (overlookmotel) - 6054249 linter/plugins: Add
recursiveoption toRuleTester(#19093) (overlookmotel) - 27c241b linter/plugins:
RuleTestertest fixes (#19091) (overlookmotel) - 7318275 linter/new-cap: Tighten diagnostic spans and add help text (#19131) (camchenry)
- ac2b16b linter: Improve
no-misleading-character-classdiagnostic spans (#19109) (Sysix) - 7be8613 linter: Move
no-misleading-chracter-classtocorrectness(#19006) (Sysix) - 87a920d ci: Add riscv64 and s390x napi targets for oxlint and oxfmt (#19039) (Boshen)
- ee2925b oxlint/lsp: Enable JS plugins (#18834) (overlookmotel)
- 533013d linter/unicorn: Implement suggestion for
unicorn/prefer-dom-node-dataset(#19051) (Mikhail Baev) - 384abae linter/oxc/no-async-endpoint-handlers: Improve diagnostic message (#19001) (camc314)
- d35ece3 linter/array-callback-return: Improve diagnostic hints for some cases (#18993) (camc314)
- dd0f754 linter/array-callback-return: Improve diagnostic message for
forEachcase (#18992) (camc314) - e2d28fe linter/plugins: Implement suggestions (#18963) (overlookmotel)
- a398152 linter: Promote the
eslint/no-iteratorrule to correctness, which makes it a default rule (#18915) (connorshea) - bb1eb97 linter: Improve diagnostic message for circular configs (#18947) (camc314)
- 3184f36 linter: Ban relative js plugin specifiers in js extends config (#18944) (camc314)
- 749972f linter: Validate dynamic config extends shape (#18943) (camc314)
- b270739 linter: Support extends in oxlint.config.ts (#18942) (camc314)
- 6024ddf linter: Implement suggestion for
unicorn/prefer-reflect-apply(#18932) (Mikhail Baev) - b06b3a9 linter: Implement
typescript/consistent-type-assertions(#18869) (Bazyli Brzóska) - 9fd3bd6 linter/plugins: Add
@oxlint/pluginsNPM package (#18824) (overlookmotel) - 5ee7b2f linter/vitest: Implements
prefer-expect-type-ofrule (#17957) (Said Atrahouch) - a7b360a linter/unicorn: Implement
unicorn/relative-url-stylerule (#18857) (Mikhail Baev) - 9788a96 oxlint,oxfmt: Add more native builds (#18853) (Boshen)
- b23395a linter: Enforce exporting an object with
defineConfig(#18858) (camc314)
🐛 Bug Fixes
- 3ea8f08 jsdoc: Prevent outer JSDoc from applying to nested functions (#19219) (camc314)
- 1b2f354 ci: Add missing riscv64/s390x napi targets for oxfmt and oxlint (#19217) (Cameron)
- d07059c linter/plugins: Support legacy
context.report(node, ...)calls (#19193) (camc314) - 7800fc5 linter/prefer-event-target: Ignore EventEmitter imported from packages (#19188) (camc314)
- 03b2955 linter/typescript/ban-types: Mark rule as deprecated (#19179) (camc314)
- a5b8766 oxlint/lsp: Disable rule for this line should not be preferred (#19083) (Sysix)
- e08157e linter/jsx-filename-extension: Include filename in as-needed diagnostic (#19172) (camc314)
- 1773acb oxlint: Re-generate envs (#19169) (camc314)
- 51c3fc8 linter/no-array-for-each: Skip
Effect.forEachcalls (#19127) (camc314) - 825f148 linter/plugins:
RuleTesterconsider adjacent fixes as overlapping in ESLint compat mode (#19094) (overlookmotel) - ecd2456 linter/plugins: Handle fix with -1 offsets in file with BOM (#19092) (overlookmotel)
- 5969d26 linter/no-array-sort: Avoid false positives for effect Chunk.sort (#19125) (camc314)
- de10f04 linter:
no-misleading-character-class: do not skip reporting on first invalid sequence of the checking group (#19111) (Sysix) - 8c0ce78 linter: Scope no-misleading-character-class sequences to single character class (#19108) (copilot-swe-agent)
- 879e3a0 linter:
no-misleading-character-class: split sequences on allCharacterSet(#19107) (Sysix) - 2ad33cc oxlint/lsp: Search parent directories for root oxlint config (#19062) (copilot-swe-agent)
- f969d5e linter/prefer-dom-node-dataset: Address some edge cases in the fixer (#19065) (camc314)
- ed759d1 linter/plugins: Fix error messages for invalid suggestions (#19059) (overlookmotel)
- 34851a7 linter/plugins: Error not panic if invalid fix range (#19058) (overlookmotel)
- 4823b58 linter/plugins: Fix fixes in files with BOM (#19056) (overlookmotel)
- 2ef405e linter/no-map-spread: Improve actionability of error message (#19007) (Artyom Alekseevich)
- 56c086b parser: Add modifier ordering validation (TS1029) (#19024) (Boshen)
- 6067a49 linter/jsdoc: False positive in
check-tag-namesfor@in email addresses and npm scopes (#19021) (Boshen) - 6d46ed9 linter/capitalized-comments: Ignore prettier and oxfmt directives (#19008) (Artyom Alekseevich)
- a46c878 linter/react/no-array-index-key: Look for keys in expressions (#18997) (camc314)
- 7d61704 linter/prefer-at: Skip autofix for
arguments(#18991) (camc314) - 3ebae53 linter/preserve-caught-error: Skip traversing into nested try/catch stmts (#18990) (camc314)
- e94d37e linter/react/no-unknown-property: Add missing
popoverrelated props (#18953) (Christoph Nakazawa) - 04b0d99 linter: Normalize relative paths with
./prefix in overrides. (#18954) (connorshea) - 57917ee parser: Parse decorators on rest parameters (#18938) (Boshen)
- 07742ea linter/prefer-as-const: Implement fixer for type annotation (#18899) (camc314)
- d64bfdd linter/plugins: Ensure
afterhook always runs last in rule converted for ESLint (#18904) (overlookmotel) - ec39944 linter/jsx-a11y/no-distracting-elements: Support elements option (#18892) (camc314)
- f609cb6 linter/prefer-expect-type-of: Handle computed elements in fixer correctly (#18890) (camc314)
- ecf11e5 linter/dynamic-config: Set
ExternalPlugin.config_dirto fix js plugins loading (#18854) (camc314) - 01b7838 linter/plugins: Do not destroy workspaces (#18833) (overlookmotel)
- dc51d6b linter: Normalize paths slashes for snapshots on windows (#18825) (camc314)
- dbfdc40 linter/bad-replace-all-args: Skip extracting flags from conditional expressions (#18844) (camc314)
⚡ Performance
- ed8c054 oxc_str: Add precomputed hash to Ident for fast HashMap lookups (#19143) (Boshen)
- 18f58bd oxlint/lsp: Transform unused disable directive directly to DiagnosticReport (#19112) (Sysix)
- 4ce3772 linter: Remove pointless string cloning when combining suggestions (#19075) (overlookmotel)
- c417bf5 linter: Avoid allocating
Vecwhen compilingPossibleFixes(#19074) (overlookmotel) - adb2baa linter/plugins: Avoid allocation when rule provides single suggestion (#19071) (overlookmotel)
- 2537924 semantic: Optimize scope resolution with fast paths and inlining (#19029) (Boshen)
📚 Documentation
- fe4357a linter: Fix typo in oxc/erasing-op (#19205) (drylint)
- 6e8ef38 linter/plugins: Correct and expand JSDoc comment for
RuleTesterconfig (#19156) (overlookmotel) - e7ec06a linter: Improve docs for
import/max-dependenciesrule. (#19119) (connorshea) - 367f730 linter/consistent-test-filename: Escape file names fixes #19114 (#19123) (camc314)
- 8753a54 linter: Rewrite the docs for the
jsx-a11y/no-redundant-rolesrule. (#19117) (connorshea) - dd44b1a linter: Fix invalid directive in example code for
import/no-nodejs-modules. (#19115) (connorshea) - 726e273 linter/plugins: Improve JSDoc comment for
DiagnosticReport(#19103) (overlookmotel) - 9561e7f linter/plugins: Alter JS plugins example (#18900) (overlookmotel)
- 501e3b6 linter: Regenerate
config.generated.ts(#18897) (overlookmotel) - b425a0c linter: Document jsPlugins examples (#18671) (Cameron)
- df2b7fa linter: Expand settings example with reference to custom plugins (#18670) (camc314)
Oxfmt v0.29.0
💥 BREAKING CHANGES
- 856a01f formatter/sort_imports: [BREAKING] Replace prefix match with glob pattern in
customGroups.elementNamePattern(#19066) (leaysgur)
🚀 Features
- 91e67f3 oxfmt/lsp: Do not refer
.gitignore(#19206) (leaysgur) - 23c0753 oxfmt: Better Tailwind CSS intergration (#19000) (Dunqing)
- 87a920d ci: Add riscv64 and s390x napi targets for oxlint and oxfmt (#19039) (Boshen)
- 8536dce oxfmt: Support glob for CLI paths (#18976) (leaysgur)
- 6ee2d59 oxfmt: Use
oxc_formatterin js-in-xxx part (#18373) (leaysgur) - 9788a96 oxlint,oxfmt: Add more native builds (#18853) (Boshen)
🐛 Bug Fixes
- 1b2f354 ci: Add missing riscv64/s390x napi targets for oxfmt and oxlint (#19217) (Cameron)
- 119348b oxfmt: Resolve relative -> absolute path for other usages (#19207) (leaysgur)
- 5f4cf30 oxfmt: Fix relative -> absolute path resolution with refactoring (#19202) (leaysgur)
- dc335d1 oxfmt: Temporarily disable the override for js-in-xxx (not ready yet) (#19043) (leaysgur)
- 5ea5bda oxfmt: Handle
isSingleJsxExpressionStatementInMarkdown()check for js-in-md (#19042) (leaysgur) - 5243307 formatter: Preserve numeric separators in number literals (#19015) (Dunqing)
- 9b205b3 formatter: Fallback to formatting when package.json sorting fails (#19097) (Boshen)
- b79c065 formatter: Preserve comment between callee and o...
oxc crates_v0.112.0
oxlint v1.43.0 & oxfmt v0.28.0
Table of Contents
Oxlint v1.43.0
💥 BREAKING CHANGES
- b34a155 linter/plugins: [BREAKING]
RuleTestersetcontext.filenameto absolute path (#18702) (overlookmotel)
🚀 Features
- 1753209 linter/vscode: Run extension when JS configs are detected (#18832) (camc314)
- c962dd2 linter/lsp: Implement support for oxlint.config.ts (#18826) (camc314)
- da32203 linter: Auto generate oxlint.config.ts types (#18597) (camc314)
- 19b4df7 oxlint: Introduce
defineConfighelper (#18596) (camc314) - ea97231 linter: Implement
oxlint.config.tssupport (#17563) (camc314) - 17ca42d linter: Implement
react/no-multi-comprule. (#18794) (connorshea) - 88f30e0 linter/plugins: Move eslint compatible plugin conversion to
eslintCompatPluginfunction (#18791) (overlookmotel) - 2a72794 linter/plugins:
RuleTestertakecwdproperty (#18756) (overlookmotel) - 9f533db linter: Add
find_prev_token_withinmethod for token search (#18769) (camc314) - 772ea70 linter: Introduce
load_js_configsnapi callback (#18767) (camc314) - e9690c1 linter: Introduce
DiscoveredConfigin preparation for JS configs (#18674) (camc314) - 558b588 linter/prefer-namespace-keyword: Move to correctness (#18733) (camc314)
- c07497c linter/prefer-modern-dom-apis: Implement suggestion (#17965) (Mikhail Baev)
- 8531bc9 linter: Implement
prefer-const(#18687) (camchenry) - 8670b18 parser: Error on ambient class accessor implementations (#18592) (camc314)
- 6b8a5ae linter: Add
eslint-plugin-import/no-nodejs-modulesrule (#18006) (Mikhail Baev) - 04f400d linter/no-duplicates: Add support for
considerQueryStringoption (#18657) (camc314) - 3b7f260 linter/consistent-generic-constructor: Implement fixer (#18616) (camc314)
- 794f9e4 linter/prefer-exponentation-operator: Implement suggestion (#18602) (camc314)
- 773d916 linter:
eslint/sort_keysignore leading and trailing spreads in auto-fix (#18485) (Lonami) - 20d4ede linter: Implement
import/no-relative-parent-importsrule (#18513) (Valentin Maerten) - 0da45ef vscode: Fallback to globally installed oxlint/oxfmt packages (#18007) (Sysix)
🐛 Bug Fixes
- a3417b1 linter/plugins: Clear state when reloading workspace (#18837) (overlookmotel)
- c879992 linter: Error on arrays passed in as config (#18822) (camc314)
- 5c80422 linter/tsdown: Ensure relative path for globals import starts with
./(#18820) (camc314) - 7419dfb linter: Remove invalid debug assersion, add test (#18819) (camc314)
- 0ca6269 ci: Fix the repo path normalization logic for tests on Windows. (#18815) (connorshea)
- c7b0a65 linter: Fix config option docs for
react/jsx-boolean-valuerule. (#18811) (connorshea) - cce374e linter/prefer-const: Replace entire declaration over just the
letkw (#18814) (camc314) - 41f92d1 linter: Error when given config options for a lint rule that has no config options defined. (#18809) (connorshea)
- 0867a36 linter/consistent-index-object-style: False positive with mapped + generic types (#18801) (camc314)
- 1d34b42 linter: Fix 32 bit build (#18783) (camc314)
- 95df577 linter/plugins: Handle error from
destroyWorkspace(#18763) (overlookmotel) - b3261dc linter: Fix the curly rule config to enforce the shape of the config and emit correct docs (#18743) (connorshea)
- d981978 linter/plugins: Use non-blocking mode when calling
destroyWorkspace(#18762) (overlookmotel) - 3f43d4c linter: Accept bools as valid values for
fixable(#18772) (camc314) - 005910a linter/plugins: Support plugins outside of workspace (#18755) (overlookmotel)
- fd92711 vscode: Use
fsPathfor workspace mapping (#18728) (Sysix) - 358b2c1 linter/consistent-generic-constructors: Check bounds when searching for
:token (#18745) (connorshea) - abd0c28 linter/capitalized-comments: Fix generated rule option docs (#18748) (connorshea)
- d90a9f6 linter: Add more tests for
prefer-const's fixer and fix its invalid behavior. (#18747) (connorshea) - f82011b oxlint/lsp: Disable JS plugins support in LSP except in tests (#18727) (overlookmotel)
- 94505c8 linter/jest: Change
prefer-spy-onautofix to suggestion (#18152) (Ben Lowery) - 6ec1112 linter: Mark unused disable directive fix as suggestion (#18703) (ddmoney420)
- 49609ec linter/no-useless-constructor: Consider argument transformation as used (#18706) (ddmoney420)
- 40218de linter: Fix behavior of jsx-a11y/no-static-element-interactions rule. (#17817) (connorshea)
- db9751d linter/no-html-link-for-pages: Handle
target=_blankcorrectly (#18693) (camc314) - e440b78 linter/plugins: Pass all args to CFG event handlers when 2 rules use same handler (#18683) (overlookmotel)
- b393430 linter/curly: Fix multi-or-nest and consistent conflict (#18660) (camc314)
- 2e1fbc2 linter/plugins: Implement
context.parserPath(#18644) (overlookmotel) - 34951ed linter/plugins:
filenameoption takes precedence overparserOptions.langinRuleTester(#18643) (overlookmotel) - 28df160 linter/plugins: Allow line number passed to
reportto be 0 (#18642) (overlookmotel) - 14fabec vscode: Use built-in
getWorkspaceFolderfor detecting the right workspace of a given uri (#18583) (Sysix) - 0ff4cea oxlint/cli: Report error when nested config could not be parsed (#18504) (Sysix)
⚡ Performance
- 9862224 linter/plugins: Reduce cost of workspaces (#18758) (overlookmotel)
- 6bc0bde linter: Remove string allocation (#18725) (overlookmotel)
- 3a6b41e linter/plugins: Replace ESLint Traverser with lightweight traverseNode (#18529) (Rintaro Itokawa)
📚 Documentation
- dd1a653 linter: Fix doc comment for ignoreStateless config option. (#18808) (connorshea)
- 5909085 linter/plugins: Add doc comments (#18753) (overlookmotel)
- ffe53a3 linter: Update lint function docs (#18766) (camc314)
- b82faec linter: Glob for any css module for no-unassigned-import (#18713) (Ben Stickley)
- cd86347 linter: Mark some react rules as unsupported, misc docs improvements (#18617) (connorshea)
- 23401d8 linter: Update fixes and suggestions status for tsgolint rules (#18619) (camchenry)
Oxfmt v0.28.0
🚀 Features
🐛 Bug Fixes
- e754b18 oxfmt/migrate-prettier: Set
experimentalSortPackagejson: falseby default (#18831) (leaysgur) - a83c266 formatter: Keep decorated function pattern hugged when params break (#18830) (Dunqing)
- 0c8efe1 formatter: Quote numeric property keys with
quoteProps: consistent(#18803) (Dunqing) - 9c14c3e formatter: Ignore comment does not work for sequence expressions in arrow function body (#18799) (Dunqing)
- 54984ae formatter: Handle leading comments in arrow function sequence expressions (#18798) (Dunqing)
- 61bb2b5 formatter: Correctly expand JSX returned from arrow callbacks in JSX expression containers (#18797) (Dunqing)
- 34ee194 formatter: Tailwindcss sorting doesn't work for object property keys (#18773) (Dunqing)
- 48f1e35 oxfmt: Prevent ThreadsafeFunction crash on Node.js exit (#18723) (Boshen)
- e96adca formatter: Follow Prettier's approach for for-in initializer parentheses (#18695) (Dunqing)
- 1215a6f formatter: Preserve quote for class property key in TypeScript (#18692) (Dunqing)
- 059acae formatter: Incorrect comments placement for union type in
TSTypeIntersection(#18690) (Dunqing) - c3d05c1 formatter,oxfmt: Handle CRLF with embedded formatting (#18686) (leaysgur)
- 7cb3085 formatter: Preserve comments on rest elements (#18649) (Dunqing)
- 21984dd formatter: Preserve type cast comments on rest parameters (#18648) (Dunqing)
- 2f70254 formatter: Don't add extra semicolon on suppressed class properties (#18631) (Dunqing)
- ac1ff4e oxfmt: Use
empty_lineIR for empty xxx-in-js line (#18623) (leaysgur) - 8f76900 oxfmt: Dedent xxx-in-js templates before calling prettier (#18622) (leaysgur)
- 6b726ef oxfmt: Trim whitespace only xxx-in-js templates (#18621) (leaysgur)
oxc crates_v0.111.0
💥 BREAKING CHANGES
- 22dec6a semantic: [BREAKING] Remove
Scoping::scope_build_child_idsand all related APIs (#18362) (Dunqing) - 30a4899 oxc: [BREAKING] Remove
CompilerInterface::semantic_child_scope_ids(#18361) (Dunqing) - 777fc40 ast: [BREAKING] Add
Identtype (#18354) (Boshen) - af0ca46 span: [BREAKING] Use
ModuleKind::CommonJSforSourceType::cjs()(#18276) (sapphi-red)
🚀 Features
- 0a02026 semantic: Add TS1499 code to diagnostic (#18557) (camc314)
- 8b4618f parser: Add TS1500 code to diagnostic (#18547) (camc314)
- 866b6b3 parser: Add TS1048 code to diagnostic (#18546) (camc314)
- 1117c44 parser: Add TS1054 code to diagnostic (#18541) (camc314)
- e4fcdde semantic: Add TS1053 code to diagnostic (#18539) (camc314)
- bcbf396 semantic: Add TS1052 code to diagnostic (#18538) (camc314)
- 8155edf semantic: Add TS1049 code to diagnostic (#18535) (camc314)
- 51d3b3f parser: Add TS1502 code to diagnostic (#18534) (camc314)
- 00854e8 semantic: Add TS2337 error code to super call diagnostic (#18531) (camc314)
- 993fd2b parser: Parse unambiguous await with better error messages (#18480) (Boshen)
- 8db0e78 linter/plugins: Handle BOMs (#18376) (overlookmotel)
- 6ac09e2 linter/plugins: Support source text not being at start of buffer (#18375) (overlookmotel)
- 2ef5647 ast: Add escape_raw parameter to template_element builders (#18121) (Boshen)
🐛 Bug Fixes
- 8d68e9a parser,semantic: Revert adding ts error codes to diagnostics (#18571) (camc314)
- 74d0998 semantic: Update error msg for multiple
defaultcases in switch stmt (#18526) (camc314) - c205b0d ast: Remove
ThisExpressionfromTSModuleReference(#18489) (Boshen) - aed3669 parser: Parse HTML-like comments in unambiguous mode (#18442) (Boshen)
- c4132fb parser: Validate accessor parameters in interface method signatures (#18391) (Boshen)
- b0cd74d semantic: Allow
varandfunctionwith same name in static blocks (#18358) (Boshen) - 6037995 semantic: Allow
new.targetin class field initializers (#18349) (Boshen) - 9a15c6a semantic: Do not rely on spans for node comparison in
Function::bind(#18296) (overlookmotel)
⚡ Performance
- 6b600c4 semantic: Skip parent lookup for function declarations in
Function::bind(#18293) (overlookmotel) - c27ad2d semantic: Move check for function declaration out of
is_function_part_of_if_statement(#18292) (overlookmotel) - 63eb89e semantic: Skip checking redeclarations for function expressions (#18291) (overlookmotel)
- 7c12743 semantic: Skip checking unresolved exports in CommonJS files (#18250) (overlookmotel)
- 2349031 allocator: Increase initial chunk size from 512B to 16KB (#18234) (Boshen)
📚 Documentation
- 8ccd853 npm: Update package homepage URLs and add keywords (#18509) (Boshen)
- 9b3165f napi/parser: Clarify when to use
parseAsyncvsparseSync(#18486) (Boshen) - 1b59f63 napi/parser: Correct typo in README (#18251) (overlookmotel)
- 00ff75f mangler: Fix
top_leveloption in example (#18233) (overlookmotel) - 2ddc073 semantic: Fix typo in comment (#18238) (overlookmotel)
oxlint v1.42.0 & oxfmt v0.27.0
Table of Contents
Oxlint v1.42.0
🚀 Features
- 34c3ec3 linter/prefer-logical-operator-over-ternary: Implement fixer (#18545) (camc314)
- 019e0aa linter/valid-typeof: Add suggestions if type is misspelled (#18543) (camchenry)
- 704c8eb linter/use-isnan: Add more specific error message for equality/inequality (#18542) (camchenry)
- 1e99ace linter/use-isnan: Support more
indexOfcases and improve diagnostic messages (#18537) (camchenry) - bffd134 linter/text-encoding-identifier-case: Add
withDashoption (#18533) (camc314) - 993fd2b parser: Parse unambiguous await with better error messages (#18480) (Boshen)
- b4b6247 linter/plugins:
RuleTestersupport settings (#18445) (overlookmotel) - 15d69dc linter: Implement react/display-name rule (#18426) (camchenry)
- 2fbceae linter: Implement rule docs and config support for rules with tuple config options. (#18372) (connorshea)
- 8db0e78 linter/plugins: Handle BOMs (#18376) (overlookmotel)
- 6ac09e2 linter/plugins: Support source text not being at start of buffer (#18375) (overlookmotel)
- fc3c86b linter: Update 125 rules to raise errors when provided with invalid config options. (#18104) (connorshea)
- 2cc6ad2 linter/plugins: Add
ecmaFeaturestoparserOptions(#18313) (overlookmotel)
🐛 Bug Fixes
- b6a8c1c oxlint/lsp: Clear disable directive entries for file on error (#18501) (Sysix)
- 2acf568 linter/plugins: Keep
Infinityin rule default options (#18550) (overlookmotel) - 332d2ef linter/plugins: Add
jsxproperty toparserOptions.ecmaFeatures(#18549) (overlookmotel) - 7d9bb1b linter: Update
eslint/func-namesto error on invalid rule config options, improve docs. (#18510) (connorshea) - 9c67974 linter: Improve the jsx-a11y/no-noninteractive-tabindex rule to match original rule logic better (#17848) (connorshea)
- 75e7163 vscode: Support json5 for oxfmt (#18502) (Sysix)
- c205b0d ast: Remove
ThisExpressionfromTSModuleReference(#18489) (Boshen) - c51339a oxlint/lsp: Respect code action
source.fixAllas an alias forsource.fixAll.oxc(#18366) (Sysix) - 3c0e9b9 oxlint/lsp: Skip dangerous fixes/suggestions for "fix all" code action and command (#18364) (Sysix)
- c44c093 linter: Fix behavior of unicorn/catch-error-name to match original rule (#18209) (connorshea)
- 9c65aff linter/jsx-a11y: Change
no-autofocusautofix to suggestion (#18155) (Ben Lowery) - 235c820 linter/unicorn: Fix
prefer-array-someautofix for.filter().lengthpattern (#18153) (Ben Lowery) - a9925dc linter: Mark fixes in
unicorn/no-nullrule as dangerous. (#18436) (connorshea) - cee29b4 linter: Remove confusing scope from
react/only-export-componentsrule diagnostics. (#18434) (connorshea) - aed3669 parser: Parse HTML-like comments in unambiguous mode (#18442) (Boshen)
- b8a371d linter: Fix the path used in the gitlab format output (#18165) (connorshea)
- e046ea6 linter:
vue/no-lifecycle-after-awaitskip looking into arrow functions (#18302) (Sysix) - a9bfbcf linter: Compatibility issue with
DiagnosticDatatype in ESLint (#18396) (루밀LuMir) - 10ab424 linter:
react/no_array_index_keycontinue search for other attributes (#18409) (Lonami) - 9d776d4 linter: Update
import/no-cyclerule to error on invalid config options. (#18330) (connorshea) - c163231 linter: Update eslint/sort-imports to validate options. (#18378) (connorshea)
- 79bbcff linter: Update
eslint/func-styleto error on invalid configuration options. (#18390) (connorshea) - b871235 linter/plugins: Fix identifying "use strict" directives in scope analysis (#18402) (overlookmotel)
- 5985141 linter: Update
jest/prefer-lowercase-titlerule to error on invalid config options. (#18332) (connorshea) - faca4b5 linter/plugins: Tokenize
let,staticandyieldasKeywords (#18368) (overlookmotel) - a3914fd linter/plugins: Allow line number passed to
reportto be 1 over line count (#18341) (overlookmotel) - 88e0896 linter: Update
typescript/no-restricted-typesrule to error on invalid config options. (#18329) (connorshea) - 9eec600 linter: Update
react/jsx-fragmentsrule to raise an error on invalid configuration options (#18111) (connorshea) - 0fa969d linter: Update
react/no-will-update-set-stateto error on invalid config options (#18112) (connorshea) - 70e7be4 linter: Update
import/no-unassigned-importto raise an error when passed invalid config options. (#18108) (connorshea) - 496cac7 linter: Update
unicorn/explicit-length-checkto raise an error when passed invalid config options. (#18107) (connorshea) - 080b1ec linter: Update 5 more rules to error on invalid config options. (#18113) (connorshea)
- c5d05dd linter: Update 11 rules to raise an error on invalid config options. (#18109) (connorshea)
- 9e359d4 linter/plugins: Set all properties on global vars objects (#18317) (overlookmotel)
- 39c7f32 linter/plugins: Set
writeableflag on variables where defined as globals (#18316) (overlookmotel) - a570693 linter/plugins: Fix
CatchClausescopes (#18312) (overlookmotel) - 8c98e69 linter:
vitest/prefer-describe-function-title: Check earlier to avoid false positive (#18177) (Jovi De Croock) - 44be0eb linter/plugins: Set scope analyse settings based on source type (#18306) (overlookmotel)
- b9a14fd vscode: Update package.json to restrict a few more config options. (#18270) (Connor Shea)
- c1260cb vscode: Update version info formatting. (#18274) (connorshea)
- 2f68dc6 vscode: Update notification for client restart to specify tool. (#18273) (connorshea)
⚡ Performance
- 2b9d115 linter/plugins: Use SoA pattern with 2 arrays for CFG steps (#18528) (Rintaro Itokawa)
- 2ac7c96 linter/plugins: Replace ESLint step classes with plain objects (#18527) (Rintaro Itokawa)
- dc931ba linter/no-inner-declarations: Skip scope flags lookup in modules (#18249) (overlookmotel)
- 07618a7 linter: Turn off
scope_build_child_idsfor SemanticBuilder (#18360) (Dunqing) - 1aac079 linter/exhaustive-deps: Simplify the logic of checking if the identifier it is a dependency of hook (#18350) (Dunqing)
- 591d522 linter/block-scoped-var: Avoid
iter_all_scope_child_idsby walking references/redeclarations scope ancestors (#18335) (Dunqing) - 2eefd6d linter/plugins: Remove branch from token parsing (#18369) (overlookmotel)
📚 Documentation
- 698c21d linter: Modernize docs for various React rules (#18559) (connorshea)
- 314a47c linter: Clarify the
no-find-dom-noderule with a note that the method was removed in React 19. (#18556) (connorshea) - 5eff704 linter: Update
no-inner-declarationsto fix config option docs (#18511) (connorshea) - dd5d2f6 linter: Improve diagnostic message in
valid_typeofrule. (#18507) (connorshea) - 8ccd853 npm: Update package homepage URLs and add keywords (#18509) (Boshen)
- 4958233 linter: Add missing "What it does" section in prefer-reflect-apply rule. (#18475) (connorshea)
- 2fa83a4 linter: Improve the docs for import/unambiguous. (#18474) (connorshea)
- 7b1505c linter: Improve docs for
oxc/only-used-in-recursionrule. (#18473) (connorshea) - ab506d6 linter/plugins: Correct comment (#18456) (overlookmotel)
- 4565c73 linter:
react/display-name: add docs for config options (#18430) (camchenry) - b95a89f linter: Fix docs for the curly rule. (#18374) (connorshea)
- f675eb4 linter: Fix the
react/only-export-componentsrule docs. (#18319) (connorshea) - 704db95 linter: "no-unused-vars" extend ignored files section for svelte and astro files (#18304) (Sysix)
- 3af4a88 linter: Add "Examples" headers to rules missing them (#18266) (connorshea)
Oxfmt v0.27.0
🚀 Features
- d71c15d oxfmt: Enable tailwind sort inside xxx-in-js (#18417) (leaysgur)
- 52b5003 formatter,oxfmt: Support Angular
@Component({ template, styles })(#18324) (leaysgur)
🐛 Bug Fixes
- 736b706 oxfmt: Canonicalize fixes for Windows (#18575) (leaysgur)
- 224140c oxfmt: Canonicalize
..component in config path (#18570) (leaysgur) - 30b467e formatter: Preserve trailing comments before the semicolon in class methods without a body (#18446) (Dunqing)
- c205b0d ast: Remove
ThisExpressionfromTSModuleReference(#18489) (Boshen) - 164bbd7 formatter: Preserve trailing comments inside ternary alternate branch (#18433) (Dunqing)
- 1c50800 formatter: Use HTML entity escaping for JSX attribute strings (#18385) (Boshen)
- 4e156d2 formatter: Preserve parentheses for
inexpressions in arrow function block bodies (#18352) (Boshen) - 7e6c15b oxfmt: Increase Tailwind CSS test timeout for Windows CI (#18339) (Boshen)
- 29966eb formatter/dead-code-removal: Handle tailwind sorting (#18321) (leaysgur)
- 29f41be formatter: Only expand mapped types when newline immediately follows opening brace (#18087) (Boshen)
- 2194552 formatter: Relocate leading comments for single-element union/intersection types (#18083) (Boshen)
⚡ Performance
- 85ab400 formatter: Store
AstNodesitself instead of&'a AstNodesas theparentfield ofAstNode(#18428) (Dunqing) - 194d384 formatter: Reduce AstNode size by 8 bytes using following_span_start (#18347) (Dunqing)
- b2df8fb oxfmt: Enable tailwind plugin only for relevant parser (#18418) (leaysgur)
📚 Documentation
oxc crates_v0.110.0
🐛 Bug Fixes
- f1e2dc0 semantic: No error in
check_function_redeclarationfor CommonJS files (#18231) (overlookmotel) - 645c3f0 transformer: Use
requirenotimportin CommonJS files (#18226) (overlookmotel) - ee9f6a4 mangler: Use
retaininstead oftruncateto remove empty frequency slots (#18225) (Dunqing)