Releases: oxc-project/oxc
Releases · oxc-project/oxc
oxc crates_v0.105.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- d99134d parser: Improve diagnostic message for phase imports (#17092) (camc314)
- 36e08ef data_structures: Implement conversion traits for stack types (#17141) (overlookmotel)
- 0e177f4 data_structures: Implement
SendandSyncfor stack types (#17135) (overlookmotel) - cdb6345 minifier: Remove unused import source/defer statements (#17085) (camc314)
- 3e2ae7b regular_expression: Improve error messages (#16953) (sapphi-red)
🐛 Bug Fixes
- ab43454 minifier: Preserve sideeffects of destructuring
argumentsin non-strict mode (#17249) (sapphi-red) - 5595642 minifier: Avoid
argumentscopy loop transformation in arrow functions (#17248) (sapphi-red) - f0ad6b7 minifier: Preserve sideeffectful destructing delcaration for array and object destruction (#17074) (Armano)
- e08fdf1 linter/plugins: Include hashbang in comments (#17231) (overlookmotel)
- 76b1dc7 minifier: Avoid incorrect logical assignment transformation when base object may be mutated (#16802) (camc314)
- adb41ba allocator:
AllocatorPooldo not consume all memory on Windows (#17094) (overlookmotel) - b87600a allocator: Fix potential deadlock in
FixedSizeAllocatorPool(#17112) (overlookmotel)
⚡ Performance
- 14e5016 transformer/enum: Avoid cloning HashMap in IdentifierReferenceRename (#17210) (camc314)
- 5aefb84 linter/plugins: Reduce size of walker code (#17176) (overlookmotel)
- cee4a6c allocator: Use
StackinAllocatorPools (#17136) (overlookmotel) - eeeb53a semantic: Remove
leave_kind(#17145) (camc314) - 009256e semantic: Inline
leave_kindforTSPropertySignature(#17144) (camc314) - 2943e4d semantic: Inline
leave_kindforTSTypeQuery(#17143) (camc314) - 2e65ac0 semantic: Inline
leave_kindforCatchParameter(#17142) (camc314)
oxlint v1.35.0 & oxfmt v0.20.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.35.0
🚀 Features
- d913f87 linter/plugins: Implement code path analysis (CFG) (#17229) (overlookmotel)
- 33b4e63 linter/plugins: Support more selector classes in visitor (#17219) (overlookmotel)
- 951a2a2 linter: Implement vue/no-deprecated-destroyed-lifecycle (#17119) (Tu Shaokun)
- 9348f10 linter: Implement eslint/max-statements (#15804) (Pascal Chorus)
- b2b87c6 linter/plugins: Add
getRangeandgetLocmethods toSourceCode(#17179) (overlookmotel) - 0f63e75 linter: Implement react/no-unsafe (#16532) (Kenzo Wada)
- 9e624c9 linter/react: Add
versiontoReactPluginSettings(#17169) (camc314) - 563b039 linter/plugins: Add
SourceCode#getLinesmethod (#17177) (overlookmotel) - ffc1674 linter: Add suggestion fix for unicorn/require-module-attributes (#17168) (camc314)
- 16d9dc2 linter: Implement vitest/prefer-called-times (#17051) (秦宇航)
- 30fb206 linter: Add
unicorn/require-module-attributesrule (#17166) (Mikhail Baev) - 5b5f2fd linter/no-base-to-string: Add checkUnknown option (#17139) (camc314)
- d03b855 linter/no-unsafe-member-access: Add allowOptionalChaining option (#17138) (camc314)
- b86a134 linter/no-unnecessary-type-assertion: Add checkLiteralConstAssertions option (#17137) (camc314)
- 09e8e31 linter: Implement
unicorn/no-immediate-mutationrule (#17118) (Tu Shaokun) - 3e2ae7b regular_expression: Improve error messages (#16953) (sapphi-red)
🐛 Bug Fixes
- e08fdf1 linter/plugins: Include hashbang in comments (#17231) (overlookmotel)
- a3d203b linter/plugins: Make node, token, and comment objects have
Object.prototypein prototype chain (#17220) (overlookmotel) - 6f753a8 linter/plugins: Fix
:functionselector class (#17218) (overlookmotel) - 4027039 linter/plugins: Reset
ancestorsif error during AST walk (#17207) (overlookmotel) - 376caf1 linter: Improve the error message for when the oxlint config file is invalid. (#17196) (connorshea)
- c95a0ec linter:
valid-title: fix diagnostic quoted in strings (#17180) (camchenry) - c08e6df linter/exhaustive-deps: Fix fixer incorrectly adding property chain from destructuring pattern (#17167) (camc314)
- 5a7fcd1 linter/no-unused-vars: Correctly detect unused symbols in TypeScript namespaces (#17129) (camc314)
- 2c45017 linter: Resolve import/extensions false positives and align with ESLint behavior (#14602) (Tyler Earls)
- fc6e715 vscode: Lsp server path in quotes (only windows) (#17126) (Sysix)
- aba2795 linter/no-single-promise-in-promise-methods: Preserve array structure in fixer for Promise.all (#17128) (camc314)
- bfd4a1e linter/no-unused-private-class-members: Handle sequence expression correctly (#17127) (camc314)
⚡ Performance
- b8e321c linter/curly: Remove iterating on all nodes (#17223) (camc314)
- c48c406 linter/curly: Avoid additional parent AST lookup (#17222) (camc314)
- 78df915 linter: Avoid multiple
to_string_lossycalls in loop (#17212) (overlookmotel) - 5aefb84 linter/plugins: Reduce size of walker code (#17176) (overlookmotel)
📚 Documentation
- c14afd3 editor: Improve description for 'no-unused-disable-directives' settings options (#17236) (connorshea)
- e14db66 linter: Ensure that the docs render default values for various rules that use enum config options (#17192) (connorshea)
- 9b10c80 linter: Fix/improve the configuration docs for no-unused-vars (#17188) (connorshea)
- e7d8c88 linter: Improve the
react/no-unsaferule's config docs. (#17194) (connorshea) - 1714719 linter/plugin: Correct doc comment on
getNodeLocfunction (#17178) (overlookmotel) - c7cbe69 linter: Improve the documentation for the import/extensions rule. (#17162) (connorshea)
Oxfmt v0.20.0
🚀 Features
- 97a02d1 oxfmt: Add
insertFinalNewlineoption (#17251) (leaysgur) - a3f3c58 oxfmt: Support TOML(v1.0 only) files (#17113) (leaysgur)
🐛 Bug Fixes
- c83f90c formatter: Should expand call arguments group when the argument will break (#17254) (Dunqing)
- def4ec1 formatter: Wrongly added an indentation for an union type when there is a leading line comment (#17252) (Dunqing)
- 15e2d37 formatter: Diff with Prettier on hook with spread arguments function (#17246) (Dunqing)
- 1921b85 formatter: Shorthand property broken with consistent quote props (#17245) (Dunqing)
- 6d03edd formatter: Method signature missed a semicolon when it is on the same line with a property (#17243) (Dunqing)
- 7b810f4 oxfmt: Use correct root dir with ignore and overrides for nested cwd (#17244) (leaysgur)
- cdb80d4 oxfmt: Resolve
.editorconfigroot dir fromcwd(#17093) (leaysgur)
oxc crates_v0.104.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- d209c21 allocator: Add cap to FixedSizeAllocatorPool and block when exhausted (#17023) (Cameron)
- fb2af91 allocator: Add bitset utils (#17042) (zhaoting zhou)
- c16082c tasks/compat_data: Integrate
node-compat-table(#16831) (Boshen) - 5586823 span: Extract TS declaration file check to its own function (#17037) (camchenry)
- 3d2b492 minifier: Fold iife arrow functions in call expressions (#16477) (Armano)
- 67e9f9e codegen: Keep comments on the export specifiers (#16943) (夕舞八弦)
- cb515fa parser: Improve error message for
yieldas identifier usage (#16950) (sapphi-red) - dcc856b parser: Add help for
new_dynamic_importerror (#16949) (sapphi-red) - c3c79f8 parser: Improve import attribute value error message (#16948) (sapphi-red)
- 291b57b ast_tools: Generate TS declaration files for deserializer and walk files (#16912) (camc314)
- 74eae13 minifier: Remove unused import specifiers (#16797) (camc314)
🐛 Bug Fixes
- fb9e193 linter: OOM problems with custom plugins (#17082) (overlookmotel)
- e59132b parser/napi: Fix lazy deser (#17069) (overlookmotel)
- a92faf0 ast_tools: Support
u128inassert_layoutsgenerator (#17050) (overlookmotel) - 47b4c2f minifier/docs: Correct hyperlink path in OPTIMIZATIONS.md (#16986) (GRK)
- 3002649 transformer/typescript: Remove unused import equals declaration (#16776) (Dunqing)
- 5a2af88 regular_expression: Correct named capture group reference error (#16952) (sapphi-red)
⚡ Performance
- 3c39d46 allocator: Hold
Mutexlock for shortest possible time inFixedSizeAllocatorPool(#17099) (overlookmotel) - b657bb6 allocator: Reduce time
Mutexlock is held inFixedSizeAllocatorPool::get(#17079) (overlookmotel) - 1f3b19b ast:
#[ast]macro use#[repr(transparent)]for single-field structs (#17052) (overlookmotel) - 225f229 parser: Use SmallVec for duplicate default export detection (#16801) (camc314)
📚 Documentation
oxlint v1.34.0 & oxfmt v0.19.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.34.0
🚀 Features
- 6cc3fdf linter/no-inferrable-types: Implement fixer (#17090) (camc314)
- 2067997 linter/no-negation-in-equality-check: Implement suggestion (#17084) (camc314)
- 552f9ef vscode: Auto-generate VSCode README configuration from package.json (#16970) (Copilot)
- 9190c4b linter/no-unnecessary-array-flat-depth: Implement fixer (#17057) (camc314)
- ed789de linter/misrefactored-assign-op: Implement fixer (#17056) (camc314)
- a0f74a0 linter/config: Allow aliasing plugin names to allow names the same as builtin plugins (#15569) (Cameron)
- a43d251 linter/plugins:
RuleTestersupportlanguageOptions.globals(#17009) (overlookmotel) - 35070d9 linter/bad-bitwise-operator: Implement fixer (#17006) (camc314)
- 322d995 linter/prefer-enum-initializers: Implement fixer (#17004) (camc314)
- ae1e5bc vscode: Add support for tsgolint binary configuration (#16921) (ColemanDunn)
- 3bfe31e linter/eslint-plugin-vitest: Add prefer-called-with as vitest compatible jest rule (#16993) (Said Atrahouch)
- 0cd075f linter/eslint-plugin-jest: Add fix capabilities to prefer-called-with rule (#16987) (Said Atrahouch)
- 357564b linter: Add options for
typescript/require-array-sort-comparerule. (#16980) (connorshea) - 2b0ffba linter: Add options for
typescript/no-meaningless-void-operatorrule. (#16981) (connorshea) - 8bc4287 linter/plugins: Validate options against schema (#16974) (overlookmotel)
- fdc7d08 linter: Implement eslint/capitalized-comments (#16896) (Tu Shaokun)
- f8b6561 linter: Add support for
test.forin vitest (#16925) (camchenry) - 7ee0379 linter/eslint-plugin-vitest: Implement prefer-spy-on (#16426) (Said Atrahouch)
- fc96ee0 linter: Implement jest/prefer-to-have-been-called-times (#16938) (秦宇航)
- 291b57b ast_tools: Generate TS declaration files for deserializer and walk files (#16912) (camc314)
- e31da2a linter: Implement jest/perfer-to-have-been-called (#16899) (秦宇航)
- 1a31306 linter/eslint-plugin-vitest: Add require-hook as vitest compatible jest rule (#16880) (Said Atrahouch)
- cd3db21 linter: Add ignoredTypeNames option to no-base-to-string rule (#16898) (camc314)
- 763b25a linter: Implement eslint/no-inline-comments (#16885) (Tu Shaokun)
🐛 Bug Fixes
- fb9e193 linter: OOM problems with custom plugins (#17082) (overlookmotel)
- 005ec25 linter: Permit
$schema.oxlintrc.jsonstruct (#17060) (Copilot) - fd03131 linter/plugins: Handle plugin names containing slashes (#17073) (overlookmotel)
- b2a4fac linter/plugins: Error if plugin name alias is not normalized (#17071) (overlookmotel)
- e046c4e linter/no-misused-spread: Add rule options support (#17054) (camc314)
- 5c1a9e0 linter/no-deprecated: Add rule options support (#17053) (camc314)
- 8c9cafe linter:
import/consistent-type-specifier-style: add support for declaration files (#16979) (camchenry) - dab4780 linter/no-empty-pattern: Misleading help message for arrays (#17039) (Copilot)
- 67f8c5d linter/plugins: Get correct plugin name in all cases (#17033) (overlookmotel)
- 674dab9 linter/plugins: Fix indentation in error message (#17018) (overlookmotel)
- 6524f72 linter/plugins: Add
@types/nodedev dependency tooxlintpackage (#17016) (overlookmotel) - 7a35513 linter/plugins: Better error for
nullinglobalsinRuleTester(#17011) (overlookmotel) - 42603ba linter/plugins: Always define
languageOptions.globals(#17008) (overlookmotel) - 4cdc2f8 linter: Fix VITEST override rule list and add test for alphabetizing the two lists (#16975) (Connor Shea)
- e466562 linter/consistent-type-definitions: Handle parenthesized types in rule (#16998) (camc314)
- fce267c linter: Correct vitest plugin source to be
@vitest/eslint-plugin(#16976) (connorshea) - 477bb57 linter: Fix
vitest/no-restricted-vi-methodsand add tests for it. (#16971) (connorshea) - 7d6974d linter: Ignore oxlint directive comments in capitalized-comments (#16989) (Tu Shaokun)
- 23ac6b1 linter/plugins: Apply defaults from
meta.schemato options (#16930) (overlookmotel) - 2f946cf linter/plugins: Error if
defaultOptionsis not JSON-serializable (#16959) (overlookmotel) - d8b8a57 linter/plugins: Freeze whole of merged options (#16958) (overlookmotel)
- d446c43 linter: Prevent extra fields from being present on oxlint config file (#16874) (connorshea)
- b845871 linter/plugins: Correctly handle object with
__proto__keys in options merging (#16928) (overlookmotel) - c897794 linter: Fix eslint/sort-imports allowSeparatedGroups not working with single empty line (#16012) (Duc Nghiem Xuan)
- 0c347a1 linter/array-type: Handle satisfies expression (#16903) (camc314)
⚡ Performance
- 70d853c linter: Avoid cloning source text when cloning AST into fixed-size allocator (#17088) (overlookmotel)
- 4d389f7 linter: Less bounds checks in
normalize_plugin_name(#17030) (overlookmotel) - fd8e9c6 linter/plugins: Speed up cloning JSON objects (#16997) (overlookmotel)
- d77e22d linter/plugins: Use
DEFAULT_OPTIONSfor rules with empty array as default options (#16913) (overlookmotel)
📚 Documentation
- 6d053b4 linter: Fix typo in doc comment (#17091) (overlookmotel)
- b5f3c91 linter: Document intentional exclusion of ignoreCase option in jsx-no-duplicate-props (#17046) (Copilot)
- a0bf5d8 linter: Fix the config option docs for no-inline-comments rule. (#16983) (connorshea)
- ca26a11 linter/plugins: Fix typo in doc comment (#16966) (overlookmotel)
- 3183bf8 linter/plugins: Fix typo in JSDoc comment (#16900) (overlookmotel)
Oxfmt v0.19.0
🚀 Features
- 15dfb55 oxfmt: Respect single nearest
.editorconfig(#17043) (leaysgur) - 8c33ff4 oxfmt: Expose Node.js API:
format(fileName, sourceText, options?)(#16939) (leaysgur)
🐛 Bug Fixes
oxc crates_v0.103.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- 320c09f ast, parser, linter, codegen, formatter: [BREAKING] Rename
CommentKind::BlocktoCommentKind::SinglelineBlock(#16501) (Dunqing)
🚀 Features
- aafcf3e minifier: Remove empty
[]and{}declaration (#16855) (Armano) - d221921 semantic: ScopeFlags::With (#16291) (Aapo Alasuutari)
- 083e081 semantic: Add TS2670 error for global scope augmentation without declare modifier (#16746) (camc314)
- 30a9076 ast, parser, codegen: Add
CommentKind::MultilineBlock(#16479) (Dunqing)
🐛 Bug Fixes
- d2f9461 minifier: Preserve classes with decorators (#16878) (Copilot)
- 99c022e transformer: Revert "fix(transformer): validate JSX pragma values and reject invalid identifiers" (#16793) (Copilot)
- cb88414 parser: Consume semicolon after
let.xandlet?.x(#16857) (Copilot) - d3208dc parser: Parse
let?.x(#16840) (Copilot) - 250feb3 transformer:
import.meta.foo.barmatches andreplaces import.meta.bar(#16636) (秦宇航) - 92788c7 semantic: Add TS error code 1235 to namespace declaration diagnostic (#16747) (camc314)
- 853c20d transformer: Validate JSX pragma values and reject invalid identifiers (#16675) (Copilot)
- 0be98b9 semantic: Add TS1016 error code to required parameter after optional diagnostic (#16685) (camc314)
- 75d489a semantic: Add TS error code to function implementation missing diagnostic (#16518) (camc314)
- e4fad5e semantic: Add TS error code to constructor implementation missing diagnostic (#16517) (camc314)
oxlint v1.33.0 & oxfmt v0.18.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.33.0
🚀 Features
- 5a95f62 linter: Implement
eslint/no-sequencesrule (#16872) (Tu Shaokun) - 99c0496 linter/approx-constant: Implement fixer (#16847) (camc314)
- f5e752c linter/eslint-plugin-vitest: Add no-large-snapshot as vitest compatible jest rule (#16846) (Said Atrahouch)
- 08bf389 linter/no-regex-spaces: Implement fixer (#16837) (camc314)
- 652a2bf linter/eslint-plugin-vitest: Add prefer-to-contain as vitest compatible jest rule (#16836) (Said Atrahouch)
- 55eb0dc linter: Implement
eslint/no-loop-funcrule (#16830) (Tu Shaokun) - 8bb67a6 eslint-plugin-jest: Add fix capabilities to prefer to contain rule (#16809) (Said Atrahouch)
- 1bdaab1 linter/prefer-nullish-coalescing: Add rule (#16778) (camc314)
- 057b75e linter: Implement eslint/accessor-pairs rule (#16820) (Tu Shaokun)
- 1f42ad3 linter: Auto-fixer for extra cases in unicorn/prefer-query-selector (#16787) (Hamir Mahal)
- 67bde85 linter: Implement
no-promise-executor-returnrule (#16779) (Tu Shaokun) - 3ffe342 linter: Implement eslint/no-implicit-coercion rule (#16735) (Tu Shaokun)
- 725a5c0 linter: Implement disallows using this in an exported function rule (#15745) (Rintaro Itokawa)
- fb4700a linter: Add react/jsx-props-no-spreading rule (#15769) (Mikhail Baev)
- a1d9bbd linter/eslint-plugin-vitest: Reuse no-mocks-import jest linter rule (#16540) (Said Atrahouch)
- e1b1bc3 linter: Add react/no-redundant-should-component-update rule (#16147) (Mikhail Baev)
- 200d17b linter: Add unicorn/prefer-keyboard-event-key rule (#16611) (Rintaro Itokawa)
- a082040 editor: Adjust oxlint oxfmt config file editor supporting (#16616) (Liang Mi)
- 2b73b14 linter/plugins: Support
parserOptions.ecmaFeatures.jsxoption inRuleTester(#16690) (overlookmotel) - 563eab7 linter/plugins: Add
parserOptions.langoption toRuleTester(#16688) (overlookmotel) - e39f487 linter/plugins: Add
ignoreNonFatalErrorsoption toRuleTester(#16672) (overlookmotel) - 4cf1353 linter/plugins:
RuleTestersupportlanguageOptions.sourceType(#16660) (overlookmotel) - 8550c0f linter: Add unicorn/prefer-default-parameters rule (#16620) (Rintaro Itokawa)
- 8c8b6d9 linter/plugins: Add
languageOptionstypes toRuleTesterconfig types (#16642) (overlookmotel) - 554250e linter/plugins:
RuleTesterparser support options (#16641) (overlookmotel) - 30a9076 ast, parser, codegen: Add
CommentKind::MultilineBlock(#16479) (Dunqing) - 767db50 linter: Promote constructor_super rule from nursery to correctness (#16605) (camc314)
- 7c7219e linter: Promote no_map_spread rule from nursery to perf (#16604) (camc314)
🐛 Bug Fixes
- bb86e0e linter: Fix empty-tags rule logic. (#16873) (connorshea)
- a998ceb linter/unicorn/prefer-dom-node-dataset: Ignore awaited getAttribute call (#16882) (Kei Sakamoto)
- eccffcf linter/plugins:
report()acceptlocwith noend(#16859) (overlookmotel) - d402242 linter: Fix the config option docs for
array-callback-returnrule. (#16854) (connorshea) - d3208dc parser: Parse
let?.x(#16840) (Copilot) - b16fe64 linter: Fix incorrect
allowNamesconfig option name intypescript/no-this-aliasrule. (#16852) (connorshea) - 3302fcb linter/plugins: Sort visitors in order of specificity (#16834) (overlookmotel)
- 50e0a23 linter: Rewrite constructor-super to use iterative dataflow analysis (#16706) (camc314)
- cb51c74 linter: Mark consistent-type-definitions fix as dangerous inside declare global blocks (#16745) (camc314)
- 36c9097 linter/plugins:
RuleTestersort diagnostics before comparing to errors (#16741) (overlookmotel) - 32e23f7 linter/plugins: Correct punctuation in error message (#16718) (overlookmotel)
- 6832464 linter/plugins: Do not escape tab or CR in test case names in
RuleTester(#16712) (overlookmotel) - 3895d66 linter/no-invalid-fetch-options: False positive with member expression as method (#16687) (Copilot)
- 0003958 linter: Jsx-a11y/iframe-has-title recognizes member expressions (#16669) (copilot-swe-agent)
- 6cddbe7 linter/prefer-at: Wrap expressions in parentheses when needed for member access (#16643) (camc314)
- 678e43b linter/unicorn: Fix ASI hazard in prefer-spread rule fixer (#16440) (camc314)
⚡ Performance
- 9c1be35 linter/approx-constant: Break after first match to avoid extra iterations (#16848) (camc314)
- 6b1a7b5 linter/plugins: Store specificity in a single integer (#16835) (overlookmotel)
- 3b7d345 linter/plugins: Use
startandendinstead ofrangein tokens methods (#16808) (overlookmotel) - 4f9d17f linter/plugins: Remove unnecessary check (#16750) (overlookmotel)
- a5dc4c6 oxlint: Run e2e tests concurrently (#16651) (camc314)
- 5eb8b14 lsp: Avoid one clone in code actions request (#16543) (Sysix)
- 0241b9a linter/plugins: Remove code for renaming global values (#16610) (overlookmotel)
📚 Documentation
- 4542e75 linter: Fix typo and add vitest compatibility note to prefer_to_contain rule documentation (#16838) (copilot-swe-agent)
- e8369ef linter: Improve docs for
react/jsx-no-script-urlrule. (#16817) (connorshea) - ba8fe68 linter: Update various rules to note that they can be disabled for TS code. (#16819) (connorshea)
- bbafba5 linter: Improve the diagnostics for jest/no-confusing-set-timeout rule. (#16815) (connorshea)
- 2195150 linter: Update docs for no-optional-chaining rule to clarify its safety today (#16727) (connorshea)
- a2c9d16 linter: Improve eslint/no-loss-of-precision docs. (#16730) (connorshea)
- 0740016 linter: Add docs for
RuleCommentRule(#15699) (camc314) - 271e1ff linter: Add docs for
DisabledRule(#15698) (camc314) - 32b641a linter/plugins: Fix typo in JSDoc comment (#16699) (overlookmotel)
- 397bcd5 linter: Added in the missing jest rules that are compatible with vitest. (#16679) (Said Atrahouch)
- dc793ad linter: Update no-unsafe-type-assertion to reflect correct rule behavior (#16646) (camc314)
Oxfmt v0.18.0
🚀 Features
- 5e3ceb8 oxfmt: Support
oxfmt --stdin-filepath(#16868) (leaysgur) - d4c0bb7 oxfmt: Support
oxfmt --migrate prettier(JS side) (#16773) (leaysgur) - 2b9c3fe oxfmt: Support
oxfmt --migrate [prettier](Rust side) (#16771) (leaysgur) - 47c8710 oxfmt: Arrange cli mode and update help (#16728) (leaysgur)
- afd6c44 oxfmt: Support
quoteProps: consistentinOxfmtrc(#16721) (leaysgur) - 559eff1 oxfmt: Support
oxfmt --init(#16720) (leaysgur) - 686f2b7 formatter: Support
consistentquote props (#16677) (Dunqing) - 28e0682 oxfmt: Enable experimental
package.jsonsorting by default (#16593) (leaysgur) - feffe48 oxfmt: Trace which files are being formatted via
OXC_LOG=debug(#16627) (Boshen) - 30a9076 ast, parser, codegen: Add
CommentKind::MultilineBlock(#16479) (Dunqing)
🐛 Bug Fixes
- a0efc41 formatter: Incorrect formatting for member chain call with an empty arguments call argument (#16875) (Dunqing)
- bc2e0f8 oxfmt: Report
exitCodecorrectly (#16770) (leaysgur) - d719988 oxfmt: Make Rust CLI as just formatting CLI (#16768) (leaysgur)
- 2577814 oxfmt: Remove
jsoncparser override for(j|t)sconfig(.*)?.json(#16762) (leaysgur) - e973965 formatter: Incorrect indentation of long assignment pattern in object (#16709) (Dunqing)
- 2a63d74 formatter: Should not insert a semicolon for non-property signatures when no semicolon is set (#16700) (Dunqing)
- 2495a39 formatter/sort-imports: Do not move leading comment if empty line found (#16676) (leaysgur)
- 02f59ba oxfmt: Always respect ignored files even specified (#16632) (leaysgur)
- 37c1a06 oxfmt: Exclude lock files to be formatted (#16629) (leaysgur)
- 0d5da26 formatter: Disable layout assertions on some 32-bit platforms (#16625) (Dunqing)
⚡ Performance
- c7db70b formatter: Optimize formatting of JSX element/fragment with a single child (#16631) (Dunqing)
- 4843475 formatter: Do not write elements to the flat buffer if the layout is multline (#16630) (Dunqing)
- 10b4f9f oxfmt: Make time measurement conditional (#16634) (Boshen)
- 6f3aaba oxfmt: Use
worker_threadsbytinypoolfor prettier formatting (#16618) (leaysgur)
📚 Documentation
oxc crates_v0.102.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- 083fea9 napi/parser: [BREAKING] Represent empty optional fields on JS side as
null(#16411) (overlookmotel)
🚀 Features
- 7a2afee parser: Add TS1174 error for classes extending multiple base classes (#15993) (sapphi-red)
- da87812 semantic: Add TS2309 error for export assignment with other exports (#15992) (sapphi-red)
- d6d2bcd minifier: Remove unused function calls that are marked by
manual_pure_functions(#16534) (sapphi-red) - c90f053 minifier: Support
.separated values forcompress.treeshake.manualPureFunctions(#16529) (sapphi-red) - a607cc4 codegen: Preserve comments between CatchClause's param and body (#16167) (copilot-swe-agent)
- 8c10694 semantic: Expose get_comment_at method (#16439) (camc314)
- 3981e7a ast: Add get_comment_at to lookup a comment by span (#16438) (camc314)
🐛 Bug Fixes
- 2c275bf transformer/styled-components: Named styled import doesn't work (#16573) (Dunqing)
- 699406a napi/parser: Move
ExportEntry::module_requestfield to first (#16412) (overlookmotel) - 12bd794 napi/parser: Move
ExportEntry::module_requestfield to last (#16403) (overlookmotel)
⚡ Performance
oxlint v1.32.0 & oxfmt v0.17.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.32.0
🚀 Features
- 5c62c16 linter/plugins: Allow JS plugins to access
globals(#16512) (Arsh) - ba7bd51 linter: Implement no-useless-return rule (#16388) (FMP1783)
- fa605df linter: Fix
arrow-body-styleautomatically (#16252) (Hamir Mahal) - 7584938 linter/plugins: Add ESLint compat mode to
RuleTester(#16538) (overlookmotel) - b38c2d0 linter/plugins: Add
SourceCode#lineStartIndicesgetter (#16510) (overlookmotel) - ba93ffc linter/plugins: Add
SourceCode#tokensAndCommentsgetter (#16503) (overlookmotel) - d2ca540 linter/plugins: Add
SourceCode#isESTreeproperty (#16499) (overlookmotel) - 9001234 linter: Add fix support for tsgolint diagnostics (#16344) (camc314)
- 2d6bb85 editors: Toggle client after vscode config changing (#16162) (Liang Mi)
- 0ec454c linter/plugins: Merge default options into options (#16358) (overlookmotel)
🐛 Bug Fixes
- a806d74 linter: Use import type for ESTree in visitor.d.ts (#16472) (camc314)
- 8933c84 linter: Fix jest/expect-expect rule docs. (#16550) (connorshea)
- 1c08879 linter: Fix false positive in no-invalid-fetch-options for conditional expressions (#16570) (camc314)
- 1a69b06 linter: Junit support for multiple files/errors/diagnostics (#16568) (Shrey Sudhir)
- a7d435b linter/sort-keys: Preserve multi-line formatting in autofix (#16563) (camc314)
- fd84dcc linter/plugins:
RuleTesterparser catch fatal errors (#16558) (overlookmotel) - ab4deb0 linter/plugins: Improve safety of options merging (#16549) (overlookmotel)
- a58c76a linter: Fix the
react/jsx-fragmentsrule config to take a string argument (#16175) (connorshea) - f7751cc linter/plugins: Fix TS types for
RuleTester(#16546) (overlookmotel) - 6d33320 linter/plugins: Prevent user modifying the default config (#16545) (overlookmotel)
- b4483c5 linter/plugins: Add config support skeleton to
RuleTester(#16537) (overlookmotel) - 3a49158 linter/plugins: Improve TS types for tokens (#16502) (overlookmotel)
- 0c14531 oxlint/lsp: Revalidate all known files after internal restart (#16407) (Sysix)
- 2d3217e linter/plugins: Remove panics from
lint_fileandsetup_configs(#16453) (overlookmotel) - 655341b linter/oxc: Not emit error when the threshold is zero and we haven't detected a barrel file (#16455) (Said Atrahouch)
- b9f359f linter/no-var: Expand fix span to prevent conflicts with other rules (#16445) (camc314)
- c6778f3 linter: Preserve original quote style in no-hex-escape fixer (#16410) (camc314)
- 3ad913b linter: Improve rule docs page autofix description (#16281) (Hamir Mahal)
- 0b7e00c linter: Handle keyword unary expressions in yoda rule fix (#16402) (camc314)
- 5fd3096 lsp: Skip (un)registering file watcher when not dynamic watchers are supported (#16406) (Sysix)
- 804144f lsp: Respect
nullas invalid settings forworkspace/didChangeConfiguration(#16361) (Sysix) - 723a7e5 linter: Prevent invalid BigInt literal fix for exponential notation (#16401) (camc314)
- 2589fb1 linter: Fix prefer_expect_resolves fixer for member expressions (#16393) (camc314)
- 428c7cd linter: Wrap logical expressions in parentheses when fixing no-extra-boolean-cast (#16363) (camc314)
- 3903567 linter: Skip prefer-string-raw in type annotations and .d.ts files (#16382) (camc314)
- d490daa linter/func-names: Use centralized reserved keyword check and fix ancestor traversal (#16362) (camc314)
- d846c53 tsgolint: Use
expectwhen sending diagnostics (#16341) (camc314) - 114665d lsp: Watch for files when workspace folder is added &
workspace/configurationis not supported (#16307) (Sysix) - f5d0ebb linter/func-names: Avoid suggesting reserved keywords as function names (#16352) (camc314)
- d268135 linter/no-console-spaces: Preserve escape sequences in fixer output (#16349) (camc314)
- b02c21a linter/valid-title: Preserve escape sequences in fixer output (#16348) (camc314)
- 2373b76 linter/no-untyped-mock-factory: Fix fixer producing invalid syntax when newline exists after opening paren (#16351) (camc314)
⚡ Performance
- 67cfa58 lsp: Avoid some clones (#16519) (Sysix)
- 2a09665 oxlint/lsp: Store only
LinterCodeActioninstead of the completeDiagnosticReport(#16516) (Sysix) - 0ca9754 lsp: Avoid
UritoStringand back toUriconversion (#16470) (Sysix) - 2736636 lsp: Avoid cloning when revalidating diagnostics (#16469) (Sysix)
- 793b989 linter/plugins: Move result-processing work off main JS thread (#16456) (overlookmotel)
- 44dff7b linter/plugins: Skip serialization overhead when no errors (#16443) (overlookmotel)
- 1aa2409 linter/plugins: Do not remove
messageIdfield fromDiagnosticReportbefore sending to Rust (#16442) (overlookmotel) - 5017db8 linter/plugins: Reduce calls to
Path::to_string_lossy(#16429) (overlookmotel) - 194e357 linter: Use
SmallVecfor rule options (#16400) (Copilot) - e31b2bd linter: Only clone config if required (#16350) (overlookmotel)
- 3026086 linter: Avoid cloning rule options (#16338) (overlookmotel)
📚 Documentation
- fef77af linter: Fix
jsx-a11y/img-redundant-altconfiguration option names. (#16552) (connorshea) - c0766df linter: Add config option docs for
unicorn/filename-caserule. (#16280) (connorshea) - e24aabd linter/plugins: Correct comment (#16559) (overlookmotel)
- 514c724 linter: Fix the name of the IIFEs config option in eslint/max-lines-per-function (#16554) (connorshea)
- 4d94438 linter/rules: Correct arrow body style options in documentation (#16509) (GRK)
- 6bac4ec linter: Pull configuration struct doc comment when rendering config docs (#16288) (connorshea)
- 8c85e08 linter/plugins: Add TODO comment (#16511) (overlookmotel)
- a9b9298 linter/plugins: Add JSDoc comments to
SourceCodeproperties (#16497) (overlookmotel) - 467cc1a linter/plugins: Improve comment on error branch (#16464) (overlookmotel)
- 041b119 linter: Add config option docs to
jest/consistent-test-itrule. (#16286) (connorshea)
🛡️ Security
Oxfmt v0.17.0
🚀 Features
- 3184f17 oxfmt: Pass filepath field to prettier formatting (#16591) (Yuji Sugiura)
- 7bb3304 oxfmt: Pass populated config to prettier formatting (#16584) (leaysgur)
- 69f84d2 oxfmt: Pass raw config to prettier formatting (#16582) (leaysgur)
- a83a2ec oxfmt: Expose
setupConfig(configJSON: string)napi callback (#16579) (leaysgur) - 930533f formatter: Convert single
\rto\nin string and add a debug assertion to ensure that there is no\rin the text (#16531) (Dunqing) - af76b0e oxfmt: Support formatting HTML, YAML, GraphQL, Handlebars, Markdown, CSS files (#16524) (leaysgur)
- 66b64ef oxfmt: Support formatting JSON files (#16523) (leaysgur)
- 4767926 oxfmt: Prepare non-js/ts file support with prettier (#16480) (leaysgur)
- 2b4ce5d oxfmt: Use dedicated
format_by_xxx_formattermethod bySourceType(#16417) (leaysgur) - 0867d2f oxfmt: Set up JS
formatFile()function for Rust via napi (#16415) (leaysgur) - b6feb66 oxfmt: Rename
embedded.tswith preparingformatFile()function (#16414) (leaysgur) - 80e6999 formatter: Add debug assertion to ensure that there is no empty content is passed in (#16475) (Dunqing)
- 7374856 formatter/sort-imports: Support
options.internalPattern(#16372) (leaysgur) - dd2cb62 oxfmt: Not error on explicit
--writeflag used (#16376) (leaysgur)
🐛 Bug Fixes
- 267fadc formatter: Should not remove quotes for property keys that contains KATAKANA MIDDLE DOT (#16594) (Dunqing)
- 06d6b43 formatter: Incorrectly treating a member chain with the test name as a test call expression (#16592) (Dunqing)
- 50f3959 formatter: Should not expand the object pattern if its parent is an
AssignmentPattern(#16590) (Dunqing) - 40b0134 formatter: Incorrect formatting of
useImperativeHandlehook (#16533) (Dunqing) - 75393e7 formatter: Incorrect handling of
CRLFfor multiline block comment (#16528) (Dunqing) - ee0756b formatter: JSX text wrapping incorrect 2 (#16320) (Dunqing)
- 36308b8 formatter: Fix indent for new expression with type cast (#16380) (leaysgur)
⚡ Performance
oxc crates_v0.101.0
Immutable
release. Only release title and notes can be modified.
oxc crates_v0.100.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- 74cf572 ast: [BREAKING] Make
sourcefield ofTSImportTypeaStringLiteral(#16114) (copilot-swe-agent) - 43156ae ast: [BREAKING] Rename
TSImportTypeargumentfield tosource(#16110) (overlookmotel) - 934d873 napi: [BREAKING] Drop
armv7-unknown-linux-musleabihfsupport (#16105) (Boshen)
🚀 Features
- 669afe0 ast: Add
Expression::is_jsxmethod (#16154) (Dunqing) - 17a8caa parser: Add diagnostic for JSX identifiers with hyphens (#16133) (camchenry)
- 0549ae5 parser: Add diagnostic for expected ident after optional chain (#16132) (camchenry)
- db839ae parser: Improve diagnostic for unexpected optional declarations (#16131) (camchenry)
- bab4bc8 napi/parser: Add type annotations to parse-raw-worker test (#15998) (camc314)
🐛 Bug Fixes
- f564687 isolated-declarations: Preserve variable declarations when type with same name is referenced in implements clause (#16328) (Copilot)
- 35ed36c traverse: Fix panic when truncating non-ASCII variable names (#16265) (peter)
- 9149a26 linter/plugins, napi/parser: Deep freeze visitor keys (#16293) (overlookmotel)
- 6b54dab minifier: Incorrect non-null object condition simplification with
&&and||(#16161) (sapphi-red) - 9cc20a1 minifier: Avoid merging side effectful expressions to next assignment statement if the side effect may change the left hand side reference (#16165) (sapphi-red)
- 91eb3f2 ast/estree: Convert
TSImportTypeargumentfield toLiteral(#16109) (overlookmotel) - 1199cee parser: Reject invalid modifiers on parameter properties with binding patterns (#16083) (camc314)
- f376325 traverse: Remove
console.logfrom build script (#16049) (overlookmotel)
⚡ Performance
- 82d784f lexer: Reduce bounds checks in
Lexer::get_string(#16317) (overlookmotel) - cc2f352 span: Add
#[inline]toAtommethods (#16311) (overlookmotel) - ffca070 span: Add
#[repr(transparent)]toAtom(#16310) (overlookmotel) - 02bdf90 linter/plugins, napi/parser: Reuse arrays in visitor keys (#16294) (overlookmotel)