Skip to content

Releases: oxc-project/oxc

oxc crates_v0.116.0

02 Mar 14:03
3a8c4a4

Choose a tag to compare

🚀 Features

  • 733d6dc parser: Report error on infer outside conditional type (#19879) (camc314)
  • c2a42f6 allocator: Add Vec::into_bump_slice_mut (#19895) (overlookmotel)
  • ee4982b parser: Add VARIANTS const to Kind via fieldless_enum! macro (#19877) (overlookmotel)
  • b3dceae data_structures: Add fieldless_enum! macro (#19876) (overlookmotel)
  • 12b841e parser: Make all Kind::is_* methods const (#19874) (overlookmotel)
  • 25c2e25 estree/tokens: Add function to update tokens in place (#19856) (overlookmotel)
  • f78e6df parser: Add mutate_tokens Cargo feature (#19853) (overlookmotel)
  • 5036bb6 parser: Report error on for await in static blocks (#19844) (camc314)
  • 42bd431 parser: Report error for missing initializer in using decl (#19824) (camc314)
  • a2f58e5 parser: Report error for implements clause in non-ts files (#19820) (Cameron)
  • b25228a estree: Add IS_COMPACT const to Formatter trait (#19787) (overlookmotel)
  • e2a1b79 estree: Expose buffer and formatter of serializers (#19773) (overlookmotel)
  • 4699498 data_structures: Add CodeBuffer::print_strs_array (#19760) (overlookmotel)
  • 233f947 estree: oxc_estree crate export config and formatter types (#19724) (overlookmotel)
  • 5937a32 semantic: Introduce symbol_declarations method (#19609) (camc314)
  • ea6b796 parser: Add LexerConfig::TOKENS_METHOD_IS_STATIC const (#19683) (overlookmotel)
  • 655c38f semantic: Add "did you mean?" suggestions to undefined name errors (#19102) (copilot-swe-agent)
  • 9e11dc6 parser,estree,coverage: Collect tokens in parser and convert to ESTree format (#19497) (camc314)
  • c4a3677 parser: Report error for initializer in ambient context (#19187) (camc314)

🐛 Bug Fixes

  • abc7e19 codegen: Improve parenthesised checks when printing types (#19880) (camc314)
  • 017de5d parser: Update error code for type annotation in for...in statement (#19882) (camc314)
  • 7682e5a linter/plugins: Decode escapes in identifier tokens (#19838) (overlookmotel)
  • 06767ed estree/tokens: Convert this tokens in TSTypeName (#19815) (overlookmotel)
  • ef798af parser: Use TS8037 for satisfies expression in JS files diagnostic (#19819) (camc314)
  • 98ea5c5 parser: Use TS8016 for type assertions in JS files diagnostic (#19818) (camc314)
  • 1710f56 codegen: Remove double indentation for enum inside namespace (#19775) (Dunqing)
  • 9e4995c codegen: Print type annotation on CatchParameter (#19790) (camc314)
  • 297b2bb codegen: Wrap TSConditionalType in parens when necessary (#19788) (camc314)
  • cec7878 codegen: Print definite property on AccessorProperty (#19786) (camc314)
  • 6f395cf codegen: Print definite property on PropertyDefinition (#19785) (camc314)
  • b749373 codegen: Correctly parenthesise TSArrayType (#19784) (camc314)
  • 876dc1b codegen: Print object property this param (#19783) (camc314)
  • 93bb861 formatter: Trim trailing whitespace before breaking line (#19740) (leaysgur)
  • ed17bbf codegen: Print override keyword for method and property definitions (#19753) (Dunqing)
  • 6a59a76 parser: Improve error recovery for private identifiers in property names (#19710) (Boshen)
  • 3b96f41 codegen: Print comments in JSX expression containers and spread attributes (#19701) (Boshen)
  • f5694ce estree/tokens: Reverse field order of regex object in tokens (#19679) (overlookmotel)
  • b2b7a55 estree/tokens: Generate tokens for files with BOM (#19535) (overlookmotel)
  • 50a7514 estree: Fix tokens for JSX (#19524) (overlookmotel)
  • a35063e minifier: Preserve side effects for meta property url reads (#19668) (Boshen)
  • 8ad3430 semantic/jsdoc: Handle even-numbered backtick sequences in JSDoc parsing (#19664) (Boshen)

⚡ Performance

  • 05ccf9f linter/plugins: Transfer tokens via raw transfer (#19893) (overlookmotel)
  • c1bfdcf estree/tokens: Preallocate sufficient space for tokens JSON (#19851) (overlookmotel)
  • 4b0611a estree/tokens: Introduce ESTreeTokenConfig trait (#19842) (overlookmotel)
  • 81bab90 estree/tokens: Do not JSON-encode keyword, punctuator, etc tokens (#19814) (overlookmotel)
  • 6260ddd estree/tokens: Do not JSON-encode this identifiers (#19813) (overlookmotel)
  • b378f4a estree/tokens: Do not JSON-encode JSX identifiers (#19812) (overlookmotel)
  • 5016d92 estree/tokens: Handle regex tokens separately (#19796) (overlookmotel)
  • 780a68e estree/tokens: Use strings from AST for identifier tokens (#19744) (overlookmotel)
  • dc9c2e3 estree: Use CodeBuffer::print_strs_array to reduce bounds checks (#19766) (overlookmotel)
  • 845da35 estree: Use CodeBuffer::print_indent (#19727) (overlookmotel)
  • ec88f6a estree/tokens: Serialize tokens while visiting AST (#19726) (overlookmotel)
  • bc6507f estree/tokens: Serialize with ESTree not serde (#19725) (overlookmotel)
  • ec24859 estree/tokens: Do not branch on presence of override twice (#19721) (overlookmotel)
  • dac14be estree/tokens: Replace hash map with Vec (#19718) (overlookmotel)
  • b9d2443 estree/tokens: Replace multiple hash sets into a single hash map (#19716) (overlookmotel)
  • 7233548 parser: Remove branches from finish_next_inner (#19695) (overlookmotel)
  • b5d9845 parser: Remove const generic param from finish_next_inner (#19684) (overlookmotel)
  • 8940f66 estree/tokens: Serialize tokens to compact JSON (#19572) (overlookmotel)
  • 136e39b parser/tokens: Pre-allocate capacity for tokens (#19543) (overlookmotel)
  • 6a6513c linter/plugins: Use Oxc tokens in plugins (#19498) (camc314)
  • b3b2d30 parser: Introduce ParserConfig (#19637) (overlookmotel)

📚 Documentation

  • b2b7a64 estree/tokens: Correct comment (#19873) (overlookmotel)
  • 0399311 estree/tokens: Improve comments (#19836) (overlookmotel)
  • 1b392de minifier: Add Function.prototype.toString assumption (#19758) (sapphi-red)
  • 75c9cd8 parser: Improve doc comments for ParserConfig and LexerConfig (#19682) (overlookmotel)
  • 2fa936f README.md: Map npm package links to npmx.dev (#19666) (Boshen)

oxlint v1.51.0 & oxfmt v0.36.0

02 Mar 11:52
3d7b2ec

Choose a tag to compare

Table of Contents

Oxlint v1.51.0

🚀 Features

  • 2e0e1d0 linter/no-unused-vars: Add experimental fix mode controls (off|suggestion|fix) (#19774) (camc314)
  • f34f6fa linter: Introduce typeCheck config option (#19764) (camc314)
  • 694be7d linter: Introduce typeAware as config options (#19614) (camc314)
  • 655c38f semantic: Add "did you mean?" suggestions to undefined name errors (#19102) (copilot-swe-agent)
  • e97a57e linter/id-length: Use serde to deserialize rule options (#19636) (camc314)
  • c4a3677 parser: Report error for initializer in ambient context (#19187) (camc314)
  • 346045a linter/id-length: Add checkGeneric option (#19634) (camc314)

🐛 Bug Fixes

  • 1b7a937 linter: Correct double-comparisons fix with swapped operands (#19846) (camc314)
  • c308857 linter/consistent_type_imports: Add missing help and notes to diagnostics (#19827) (Daniel Osmond)
  • 7682e5a linter/plugins: Decode escapes in identifier tokens (#19838) (overlookmotel)
  • f368fcd linter/consistent_type_assertions: Add missing with_help and with_note to diagnostics (#19826) (Daniel Osmond)
  • 04e6223 npm: Add preferUnplugged for Yarn PnP compatibility (#19829) (Boshen)
  • 86d5037 linter: Add help text to no-extend-native, no-useless-backreference (#19733) (Anthony Amaro)
  • 50e8eff linter: Add .with_help() to operator-assignment, no-nonoctal-decimal-escape (#19732) (Anthony Amaro)
  • 1417bdc linter/no-wrapper-object-types: Add help messages to missing diagnostics (#19771) (Daniel Osmond)
  • 0838477 linter/ban_ts_comment: Add help and notes to missing diagnostics (#19781) (Daniel Osmond)
  • e8c77cf linter/adjacent_overload_signatures: Add missing diagnostics (#19780) (Daniel Osmond)
  • 28834ac linter/ban_types: Add missing help and note to diagnostics (#19782) (Daniel Osmond)
  • fd938d3 linter/prefer-enum-initializers: Add help messages to missing diagnostics (#19772) (Daniel Osmond)
  • eb928ee linter/no-dynamic-delete: Add help messages to missing diagnostics (#19768) (Daniel Osmond)
  • a985666 linter/no-empty-interface: Add help messages to missing diagnostics (#19769) (Daniel Osmond)
  • 2dc0ceb linter/no-extra-non-null-assertion: Add help messages to missing diagnostics (#19770) (Daniel Osmond)
  • 95d5d66 linter/no-dupe-keys: Handle __proto__ proto setters in (#19762) (camc314)
  • 24ff0db linter/exhaustive-deps: False positive for member expressions in IIFEs (#19751) (Dennis Chen)
  • 7243a58 linter/no-use-before-define: Honor ignoreTypeReferences when value and type name collisions (#19747) (Dimava)
  • eefd818 linter/explicit-module-boundary-types: Add help messages to missing diagnostics (#19736) (Daniel Osmond)
  • 0440e9a linter: Add help text to no_control_regex, no_fallthrough, no_param_reassign (#19655) (Anthony Amaro)
  • e84cb2f react/display-name: Handle merged type+value context symbols (#19608) (camc314)
  • ce7e253 linter/prefer-object-from-entries: Require exact path match in unicorn helper (#19687) (camc314)
  • f5694ce estree/tokens: Reverse field order of regex object in tokens (#19679) (overlookmotel)
  • b2b7a55 estree/tokens: Generate tokens for files with BOM (#19535) (overlookmotel)
  • 0722721 linter/jsx-curly-brace-presence: False positive with prop & mixed quotes (#19674) (camc314)
  • 3496acd linter: Enhance diagnostic help messages for eslint rules (#19653) (Anthony Amaro)
  • e384e94 linter: Enhance help diagnostic messages for more eslint rules (#19658) (Anthony Amaro)
  • a4d5b34 linter: Avoid non-promise catch false positives (#19574) (camc314)
  • 5706f38 linter: unicorn/no-array-callback-reference skip Effect.* array-like methods name. (#19633) (Said Atrahouch)

⚡ Performance

  • 05ccf9f linter/plugins: Transfer tokens via raw transfer (#19893) (overlookmotel)
  • 4b0611a estree/tokens: Introduce ESTreeTokenConfig trait (#19842) (overlookmotel)
  • ec88f6a estree/tokens: Serialize tokens while visiting AST (#19726) (overlookmotel)
  • d4dcf26 linter/plugins: Remove typescript from bundle (#19531) (overlookmotel)
  • 6a6513c linter/plugins: Use Oxc tokens in plugins (#19498) (camc314)

📚 Documentation

  • d86f59e linter: Improve docs for no-useless-concat, mark as pending fixer. (#19859) (connorshea)
  • caa091d linter/plugins: Correct doc comments for initTokens (#19530) (overlookmotel)
  • 2fa936f README.md: Map npm package links to npmx.dev (#19666) (Boshen)
  • dc0ff73 linter/no-useless-constructor: Warn for parameter properties as well (#19638) (Ole Asteo)

Oxfmt v0.36.0

🚀 Features

  • 5141bc2 formatter: Support trailing ignore comments (#19304) (Andreas Lubbe)
  • 4888a99 oxfmt/lsp: Support other schemes beside file:// and untitled:// (#19872) (Sysix)
  • 14a0181 oxfmt: Support graphql() variant for gql-in-js (#19703) (leaysgur)
  • ca68ea6 oxfmt: Support gql-in-js substitution (#19670) (leaysgur)
  • 035933c formatter,oxfmt: Support js-in-vue (partially) (#19514) (leaysgur)
  • 9e11dc6 parser,estree,coverage: Collect tokens in parser and convert to ESTree format (#19497) (camc314)

🐛 Bug Fixes

  • 8e3842d oxfmt: Avoid embedded TSFN crash by returning errors as data (take2) (#19806) (Yuji Sugiura)
  • 04e6223 npm: Add preferUnplugged for Yarn PnP compatibility (#19829) (Boshen)
  • e540585 oxfmt: Support tailwind sort for CSS/LESS/SCSS (#19803) (leaysgur)
  • 93bb861 formatter: Trim trailing whitespace before breaking line (#19740) (leaysgur)
  • b85f97b formatter: Drop blank line between terminal call and first chain member (#19659) (Dunqing)

⚡ Performance

  • b3b2d30 parser: Introduce ParserConfig (#19637) (overlookmotel)

📚 Documentation

  • 2fa936f README.md: Map npm package links to npmx.dev (#19666) (Boshen)

oxc crates_v0.115.0

23 Feb 10:12
7675bc4

Choose a tag to compare

🚀 Features

  • e814049 oxc_data_structure/rope: Add get_offset_from_line_and_column (#18133) (Sysix)

🐛 Bug Fixes

  • 7958b56 linter: Fix syntax error reporting in some output formatters. (#19590) (connorshea)
  • e316694 codegen: Avoid sourcemap panic on U+2028/U+2029 (#19548) (camc314)
  • 933ff72 semantic: Emit correct error code for reserved type name (#19545) (camc314)

⚡ Performance

  • b5fa195 codegen: Remove bounds check from SourcemapBuilder (#19578) (overlookmotel)

oxlint v1.50.0 & oxfmt v0.35.0

23 Feb 10:36
a08c28d

Choose a tag to compare

Table of Contents

Oxlint v1.50.0

🚀 Features

  • 46177dd linter: Implement unicorn/prefer-module (#19603) (camc314)
  • 42f78bb linter: Implement unicorn/prefer-ternary (#19605) (camc314)

🐛 Bug Fixes

  • 43df857 react/exhaustive-deps: Normalize .current callback deps (#19610) (camc314)
  • 574f48f linter/no-throw-literal: Close warning block (#19612) (camc314)
  • 79fe3b4 linter/prefer-mock-return-shorthand: Avoid unsafe autofixes for call-like returns (#19581) (camc314)
  • 85045e8 linter: Check protected members in explicit-module-boundary-types (#19594) (camc314)
  • e38115e linter: Catch missing return type on exported arrow/function expressions (#19587) (Peter Wagenet)
  • 419d3fd linter: Fix false negatives in typescript/no-require-imports (#19589) (Peter Wagenet)
  • 7958b56 linter: Fix syntax error reporting in some output formatters. (#19590) (connorshea)
  • 024f51c linter: Add help text to more eslint diagnostics (#19591) (Anthony Amaro)
  • a8489a1 linter: Warning eslint/no-throw-literal rule to be deprecated, better use typescript/only-throw-error (#19593) (Said Atrahouch)
  • 50fc70d linter/type-aware: Use correct span for disable directives (#19576) (camc314)
  • 421a99c linter: Add help guidance to eslint diagnostic messages (#19562) (Anthony Amaro)
  • e81364a linter: Add help text to eslint rule diagnostics (#19560) (Anthony Amaro)
  • 89b58d0 linter: Add help text to more eslint rule diagnostics (#19561) (Anthony Amaro)
  • 74f7833 linter/jest/prefer-mock-return-shorthand: Preserve typed arrow returns (#19556) (camc314)
  • bdd6f34 linter: Restrict prefer-import-in-mock to mock calls (#19555) (camc314)

📚 Documentation

  • a331993 linter: Improve docs for eslint/radix rule. (#19611) (connorshea)

🛡️ Security

  • c67f9dc linter: Update ajv version. (#19613) (connorshea)

Oxfmt v0.35.0

🚀 Features

  • 984dc07 oxfmt: Strip "experimental"SortXxx prefix (#19567) (leaysgur)

🐛 Bug Fixes

  • d7b63a4 oxfmt: Update API types for sortPackageJsonOptions (#19569) (leaysgur)

oxlint v1.49.0 & oxfmt v0.34.0

19 Feb 20:17
3f0d1dd

Choose a tag to compare

Table of Contents

Oxlint v1.49.0

💥 BREAKING CHANGES

  • 4315594 oxlint: [BREAKING] Deprecate "always" and "as-needed" options of the radix rule (#19408) (Sysix)
  • d4c7af3 linter: [BREAKING] Remove allowRuleToRunWithoutStrictNullChecksIKnowWhatIAmDoing option (#19451) (camc314)

🚀 Features

  • 82ca5c3 linter: Add typescript/dot-notation rule (#19442) (camc314)
  • 6db0811 linter: Implement eslint-plugin-vitest/no-importing-vitest-globals (#18694) (Said Atrahouch)
  • c7fe8ae linter: Implement eslint-plugin-vitest/prefer-import-in-mock (#17966) (Said Atrahouch)
  • 0abb39a linter: Implement eslint-vitest-jest-plugin/prefer-mock-return-shorthand (#18002) (Said Atrahouch)
  • 2b95537 linter: Implement n/no-path-concat rule (#19502) (Mikhail Baev)
  • 735d0e4 linter: Implement typescript/no-useless-default-assignment (#19488) (camc314)
  • 31c3a93 linter: Add typescript/no-unnecessary-type-parameters rule (#19450) (camc314)
  • c948090 linter: Add typescript/consistent-return rule (#19449) (camc314)
  • 9f87df0 linter: Add typescript/prefer-string-starts-ends-with rule (#19448) (camc314)
  • 04536be linter: Add typescript/prefer-regexp-exec rule (#19447) (camc314)
  • 56a7feb linter: Add typescript/prefer-readonly rule (#19446) (camc314)
  • a1cea63 linter: Add typescript/no-unnecessary-qualifier rule (#19445) (camc314)
  • e3144d2 linter: Add typescript/prefer-find rule (#19444) (camc314)
  • 13c7408 linter: Add typescript/prefer-readonly-parameter-types rule (#19443) (camc314)
  • 9b17d44 linter: Add typescript/strict-void-return rule (#19441) (camc314)
  • ed821b4 linter: Add typescript/consistent-type-exports rule (#19440) (camc314)

🐛 Bug Fixes

  • daad7bc linter/array-callback-return: Check allowVoid option (#19506) (Said Atrahouch)
  • 638cf94 linter: Add help text to eslint rule diagnostics (#19508) (Kyle Tse)
  • 79fc6d7 linter: Move no-use-before-define to eslint plugin (#19438) (camc314)
  • c832a9f linter: Add onScrollEnd and onScrollEndCapture to react/no-unknown-property. (#19536) (connorshea)
  • 999a0db linter: Add help text to symbol-description diagnostics (#19538) (Anthony Amaro)
  • f064482 linter: Add help text to eslint rule diagnostics (#19539) (Anthony Amaro)
  • fd11073 linter/react/no-unknown-property: Add missing fetchPriority prop (#19525) (João Pedro Schmitz)
  • a9bb604 linter/no-shadow: Align initializer shadow handling with typescript-eslint (#19462) (camc314)
  • 32e6eb9 linter: Handle typed arrays/array buffers in prefer-spread rule. (#19478) (connorshea)
  • e309f84 linter: Handle additional cases in typescript/consistent-generic-constructors rule. (#19477) (connorshea)
  • 71db91a linter/array-callback-return: Check fromAsync, update test cases (#19483) (Said Atrahouch)
  • 2a12d74 linter: Handle optional chaining in no-array-method-this-argument rule. (#19476) (connorshea)
  • f65310b linter: Handle optional chaining in prefer-object-from-entries rule. (#19475) (connorshea)
  • 840acf4 linter: Handle optional chain in no-unnecessary-array-flat-depth rule. (#19471) (connorshea)
  • 85a19e9 linter: Skip string literal imports in consistent-assert rule. (#19474) (connorshea)

⚡ Performance

  • 6155ac4 linter/constructor-super: Use node_id over nodes loop (#19489) (camc314)
  • a02496d linter/consistent-index-object-style: Resolve circular type refs semantically (#19490) (camc314)

Oxfmt v0.34.0

🚀 Features

🐛 Bug Fixes

  • 6c61b70 oxfmt: Fix outdated sortImports.groups doc comments (#19513) (leaysgur)

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