Skip to content

Releases: oxc-project/oxc

oxc crates_v0.114.0

16 Feb 13:09
704c109

Choose a tag to compare

🚀 Features

  • 429d876 semantic: Assign ast node ids during semantic build (#19263) (Boshen)
  • ebb80b3 ast: Add node_id field 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

  • 569aa61 rust: Add missing rustdocs and remove missing_docs lint attrs (#19306) (Boshen)

oxlint v1.48.0 & oxfmt v0.33.0

16 Feb 13:33
761e54c

Choose a tag to compare

Table of Contents

Oxlint v1.48.0

💥 BREAKING CHANGES

  • 7711821 oxlint: [BREAKING] no-shadow-restricted-names report globalThis by default (#19407) (Sysix)

🚀 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-methods rule (#19359) (Mikhail Baev)
  • f0af965 linter: Move jsx-a11y/no-static-element-interactions rule 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-props rule. (#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-function rule, improve docs. (#19390) (connorshea)
  • 6bc8aec linter: Fix the behavior of import/extensions rule 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-await rule. (#19361) (connorshea)
  • b069269 linter/plugins: Add comment about deprecated ScopeManager methods (#19363) (overlookmotel)
  • 2d8aaf9 linter: Disable formatting for eslint/no-unsafe-negation examples. (#19347) (connorshea)
  • fb87806 linter: Ensure that we do not auto-format the docs for unicorn/number-literal-case rule. (#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 groups order (#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 } inside groups (#19358) (leaysgur)
  • d1c2fb6 formatter/sort_imports: Support customGroups attributes(selector and modifiers) (#19356) (leaysgur)

🐛 Bug Fixes

  • 47d6a3e formatter: Revert #19399 (#19433) (leaysgur)
  • f084ea6 oxfmt: Explicitly pass process.env for 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 PrivateFieldExpression as simple call argument (#19348) (Dunqing)
  • 80643d5 formatter: Match Prettier union indentation with leading comments (#19271) (Dunqing)

⚡ Performance

  • c169c77 syntax: Optimize is_identifier_name_patched (#19386) (sapphi-red)

oxlint v1.47.0 & oxfmt v0.32.0

12 Feb 15:05
65b94f9

Choose a tag to compare

Table of Contents

Oxlint v1.43.0

🚀 Features

  • ebb80b3 ast: Add node_id field 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 default when 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-default to 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

  • 5670291 linter/class-literal-property-style: Avoid unneeded string allocations (#19262) (camc314)

Oxfmt v0.32.0

🚀 Features

  • ebb80b3 ast: Add node_id field to all AST struct nodes (#18138) (Boshen)

🐛 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

10 Feb 11:41
b4f7e7f

Choose a tag to compare

💥 BREAKING CHANGES

  • 2bf7293 mangler: [BREAKING] Enable top_level by 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 Ones iterator to BitSet (#19027) (sapphi-red)
  • 742ad3f minifier: Default invalid_import_side_effects to false (#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.ts as 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 to NaN (#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 a in 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-names for @ 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

10 Feb 17:40
ffe9b2e

Choose a tag to compare

Table of Contents

Oxlint v1.46.0

🐛 Bug Fixes

  • 5a16f10 oxlint, oxfmt: Update bindings.js files (#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.js files (#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-style rule (#19186) (Mikhail Baev)
  • 80eba6f linter/max-params: Support countThis option (#19175) (camc314)
  • e19bc45 linter/no-new-func: Improve rule diagnostic with note and actionable help message (#19132) (Sean Gallen)
  • e3dc5f6 linter/plugins: RuleTester test suggestions (#19104) (overlookmotel)
  • 6054249 linter/plugins: Add recursive option to RuleTester (#19093) (overlookmotel)
  • 27c241b linter/plugins: RuleTester test fixes (#19091) (overlookmotel)
  • 7318275 linter/new-cap: Tighten diagnostic spans and add help text (#19131) (camchenry)
  • ac2b16b linter: Improve no-misleading-character-class diagnostic spans (#19109) (Sysix)
  • 7be8613 linter: Move no-misleading-chracter-class to correctness (#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 forEach case (#18992) (camc314)
  • e2d28fe linter/plugins: Implement suggestions (#18963) (overlookmotel)
  • a398152 linter: Promote the eslint/no-iterator rule 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/plugins NPM package (#18824) (overlookmotel)
  • 5ee7b2f linter/vitest: Implements prefer-expect-type-of rule (#17957) (Said Atrahouch)
  • a7b360a linter/unicorn: Implement unicorn/relative-url-style rule (#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.forEach calls (#19127) (camc314)
  • 825f148 linter/plugins: RuleTester consider 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 all CharacterSet (#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-names for @ 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 popover related 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 after hook 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_dir to 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 Vec when compiling PossibleFixes (#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 RuleTester config (#19156) (overlookmotel)
  • e7ec06a linter: Improve docs for import/max-dependencies rule. (#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-roles rule. (#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_formatter in 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...
Read more

oxc crates_v0.112.0

02 Feb 09:49
6114a13

Choose a tag to compare

💥 BREAKING CHANGES

  • 445cb1a oxc_allocator: [BREAKING] Remove dangerous Allocator methods (#18715) (overlookmotel)

🚀 Features

  • 8670b18 parser: Error on ambient class accessor implementations (#18592) (camc314)

🐛 Bug Fixes

  • 2e34461 minifier: Prevent expression inlining into block-scoped for-in declarations (#18651) (copilot-swe-agent)

📚 Documentation

  • 3d01fa1 transformer: Update links to use Oxc docs (#18722) (sapphi-red)

oxlint v1.43.0 & oxfmt v0.28.0

02 Feb 10:14
fa0eeb7

Choose a tag to compare

Table of Contents

Oxlint v1.43.0

💥 BREAKING CHANGES

  • b34a155 linter/plugins: [BREAKING] RuleTester set context.filename to 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 defineConfig helper (#18596) (camc314)
  • ea97231 linter: Implement oxlint.config.ts support (#17563) (camc314)
  • 17ca42d linter: Implement react/no-multi-comp rule. (#18794) (connorshea)
  • 88f30e0 linter/plugins: Move eslint compatible plugin conversion to eslintCompatPlugin function (#18791) (overlookmotel)
  • 2a72794 linter/plugins: RuleTester take cwd property (#18756) (overlookmotel)
  • 9f533db linter: Add find_prev_token_within method for token search (#18769) (camc314)
  • 772ea70 linter: Introduce load_js_configs napi callback (#18767) (camc314)
  • e9690c1 linter: Introduce DiscoveredConfig in 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-modules rule (#18006) (Mikhail Baev)
  • 04f400d linter/no-duplicates: Add support for considerQueryString option (#18657) (camc314)
  • 3b7f260 linter/consistent-generic-constructor: Implement fixer (#18616) (camc314)
  • 794f9e4 linter/prefer-exponentation-operator: Implement suggestion (#18602) (camc314)
  • 773d916 linter: eslint/sort_keys ignore leading and trailing spreads in auto-fix (#18485) (Lonami)
  • 20d4ede linter: Implement import/no-relative-parent-imports rule (#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-value rule. (#18811) (connorshea)
  • cce374e linter/prefer-const: Replace entire declaration over just the let kw (#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 fsPath for 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-on autofix 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=_blank correctly (#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: filename option takes precedence over parserOptions.lang in RuleTester (#18643) (overlookmotel)
  • 28df160 linter/plugins: Allow line number passed to report to be 0 (#18642) (overlookmotel)
  • 14fabec vscode: Use built-in getWorkspaceFolder for 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

  • ee30de9 oxfmt: Add config migration from biome (#18638) (Luca Fischer)

🐛 Bug Fixes

  • e754b18 oxfmt/migrate-prettier: Set experimentalSortPackagejson: false by 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_line IR 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

26 Jan 13:04
9951f16

Choose a tag to compare

💥 BREAKING CHANGES

  • 22dec6a semantic: [BREAKING] Remove Scoping::scope_build_child_ids and all related APIs (#18362) (Dunqing)
  • 30a4899 oxc: [BREAKING] Remove CompilerInterface::semantic_child_scope_ids (#18361) (Dunqing)
  • 777fc40 ast: [BREAKING] Add Ident type (#18354) (Boshen)
  • af0ca46 span: [BREAKING] Use ModuleKind::CommonJS for SourceType::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 default cases in switch stmt (#18526) (camc314)
  • c205b0d ast: Remove ThisExpression from TSModuleReference (#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 var and function with same name in static blocks (#18358) (Boshen)
  • 6037995 semantic: Allow new.target in 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 parseAsync vs parseSync (#18486) (Boshen)
  • 1b59f63 napi/parser: Correct typo in README (#18251) (overlookmotel)
  • 00ff75f mangler: Fix top_level option in example (#18233) (overlookmotel)
  • 2ddc073 semantic: Fix typo in comment (#18238) (overlookmotel)

oxlint v1.42.0 & oxfmt v0.27.0

26 Jan 15:14
2b9d115

Choose a tag to compare

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 indexOf cases and improve diagnostic messages (#18537) (camchenry)
  • bffd134 linter/text-encoding-identifier-case: Add withDash option (#18533) (camc314)
  • 993fd2b parser: Parse unambiguous await with better error messages (#18480) (Boshen)
  • b4b6247 linter/plugins: RuleTester support 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 ecmaFeatures to parserOptions (#18313) (overlookmotel)

🐛 Bug Fixes

  • b6a8c1c oxlint/lsp: Clear disable directive entries for file on error (#18501) (Sysix)
  • 2acf568 linter/plugins: Keep Infinity in rule default options (#18550) (overlookmotel)
  • 332d2ef linter/plugins: Add jsx property to parserOptions.ecmaFeatures (#18549) (overlookmotel)
  • 7d9bb1b linter: Update eslint/func-names to 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 ThisExpression from TSModuleReference (#18489) (Boshen)
  • c51339a oxlint/lsp: Respect code action source.fixAll as an alias for source.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-autofocus autofix to suggestion (#18155) (Ben Lowery)
  • 235c820 linter/unicorn: Fix prefer-array-some autofix for .filter().length pattern (#18153) (Ben Lowery)
  • a9925dc linter: Mark fixes in unicorn/no-null rule as dangerous. (#18436) (connorshea)
  • cee29b4 linter: Remove confusing scope from react/only-export-components rule 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-await skip looking into arrow functions (#18302) (Sysix)
  • a9bfbcf linter: Compatibility issue with DiagnosticData type in ESLint (#18396) (루밀LuMir)
  • 10ab424 linter: react/no_array_index_key continue search for other attributes (#18409) (Lonami)
  • 9d776d4 linter: Update import/no-cycle rule to error on invalid config options. (#18330) (connorshea)
  • c163231 linter: Update eslint/sort-imports to validate options. (#18378) (connorshea)
  • 79bbcff linter: Update eslint/func-style to 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-title rule to error on invalid config options. (#18332) (connorshea)
  • faca4b5 linter/plugins: Tokenize let, static and yield as Keywords (#18368) (overlookmotel)
  • a3914fd linter/plugins: Allow line number passed to report to be 1 over line count (#18341) (overlookmotel)
  • 88e0896 linter: Update typescript/no-restricted-types rule to error on invalid config options. (#18329) (connorshea)
  • 9eec600 linter: Update react/jsx-fragments rule to raise an error on invalid configuration options (#18111) (connorshea)
  • 0fa969d linter: Update react/no-will-update-set-state to error on invalid config options (#18112) (connorshea)
  • 70e7be4 linter: Update import/no-unassigned-import to raise an error when passed invalid config options. (#18108) (connorshea)
  • 496cac7 linter: Update unicorn/explicit-length-check to 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 writeable flag on variables where defined as globals (#18316) (overlookmotel)
  • a570693 linter/plugins: Fix CatchClause scopes (#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_ids for 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_ids by 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-node rule with a note that the method was removed in React 19. (#18556) (connorshea)
  • 5eff704 linter: Update no-inner-declarations to fix config option docs (#18511) (connorshea)
  • dd5d2f6 linter: Improve diagnostic message in valid_typeof rule. (#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-recursion rule. (#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-components rule 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 ThisExpression from TSModuleReference (#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 in expressions 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 AstNodes itself instead of &'a AstNodes as the parent field of AstNode (#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

  • 8ccd853 npm: Update package homepage URLs and add keywords (#18509) (Boshen)

oxc crates_v0.110.0

19 Jan 13:48
89de3a1

Choose a tag to compare

🐛 Bug Fixes

  • f1e2dc0 semantic: No error in check_function_redeclaration for CommonJS files (#18231) (overlookmotel)
  • 645c3f0 transformer: Use require not import in CommonJS files (#18226) (overlookmotel)
  • ee9f6a4 mangler: Use retain instead of truncate to remove empty frequency slots (#18225) (Dunqing)

⚡ Performance

  • 52073d9 semantic: Use cheaper test for source type (#18235) (overlookmotel)