Releases: oxc-project/oxc
Releases · oxc-project/oxc
oxlint v1.71.0 & oxfmt v0.56.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.71.0
🚀 Features
- ff65285 linter:
no-restricted-globalsadd missing upstream options (#23663) (Sysix) - 7b8bd89 linter/typescript: Implement suggestion for
no-unnecessary-type-constraintrule (#23646) (Mikhail Baev) - 0dc2405 linter: Add schema for
eslint/no-restricted-properties(#23619) (Sysix) - b638d0e linter: Add schema for
node/callback-return(#23615) (Sysix) - eb8bedc linter: Add schema for
import/extensions(#23557) (WaterWhisperer) - 46f3625 linter: Implement node/no-sync rule (#23589) (fujitani sora)
- b01739a linter: Add schema for
unicorn/numeric-separators-style(#23554) (Mikhail Baev) - 68afd2a linter/node: Implement
no-mixed-requiresrule (#23539) (fujitani sora) - 59d8893 linter:
unicorn/numeric-separators-stylesupport missing options (#23524) (Sysix) - a421215 linter: Add schema for
eslint/prefer-destructuring(#23410) (WaterWhisperer) - 84438be linter/jsdoc: Added missing options to
require-param-description(#23416) (kapobajza) - c145b72 linter/jsdoc/require-param-type: Implement fixer (#23513) (camc314)
- 51910df linter/jsdoc: Add missing options to
require-param-typerule (#23418) (kapobajza) - e90925f linter/unicorn: Implement prefer-number-coercion rule (#23497) (Shekhu
☺️ ) - dd1c866 linter/vue: Implement no-async-in-computed-properties rule (#23493) (bab)
- b02444e linter: Add schema for
react/jsx-no-script-url(#23475) (WaterWhisperer) - 53509a8 minifier: Treeshake pure typed arrays and Set/Map array literals (#23469) (Dunqing)
- a8dce46 linter/unicorn: Implement
max-nested-callsrule (#23461) (arieleli01212)
🐛 Bug Fixes
- b1948a1 linter/radix: Avoid panic on
parseIntwith a spread radix argument (#23623) (Jerry Zhao) - f28ccfd linter/prefer-query-selector: Use a compound selector for multiple classes (#23628) (Jerry Zhao)
- 13f2970 linter/prefer-numeric-literals: Avoid panic on
parseIntwith a spread radix argument (#23624) (Jerry Zhao) - 57612b3 linter: Report invalid capitalized-comments ignore patterns (#23608) (camc314)
- 800ee2a linter/consistent-vitest-vi: Preserve import aliases when rewriting the import (#23568) (Yunfei He)
- f78b5e1 linter/consistent-indexed-object-style: Don't leak a stray comma into the value type (#23566) (Yunfei He)
- 6b104e8 linter/radix: Detect a trailing comma only after the argument (#23569) (Yunfei He)
- 2de20cb linter/unicorn/prefer-at: Correct two-argument
slice().pop()index (#23565) (Yunfei He) - de778ec linter:
unicorn/numeric-separators-stylepreserve dot for floats without decial part (#23553) (Sysix) - 651027c linter/curly: Remove only the block's own braces (#23580) (Yunfei He)
- 687e835 linter/array-type: Parenthesize a conditional-type element (#23579) (Yunfei He)
- 9c80dff linter/unicorn/no-unnecessary-await: Don't paste operators into invalid syntax (#23556) (Yunfei He)
- 46e1463 linter/no-compare-neg-zero: Delete the
-of a parenthesized-0(#23578) (Yunfei He) - d172a97 linter/unicorn/prefer-math-trunk: Skip fixer for LHS with side effects (#23548) (camc314)
- 1c3a9bd linter/unicorn/prefer-negative-index: Don't report
Array#with(#23518) (Yunfei He) - c17db5d linter/unicorn/prefer-spread: Don't report
.slice()on non-array receivers (#23520) (Yunfei He) - 9cd0c2f linter/unicorn/prefer-date-now: Keep
BigIntwrapper when fixingBigInt(new Date())(#23523) (Yunfei He) - 16bb890 linter/unicorn/prefer-array-flat: Skip non-array
flatMapreceivers (#23527) (Yunfei He) - 3e6f90f linter/unicorn/no-zero-fractions: Insert a space after any preceding keyword (#23529) (Yunfei He)
- 79a7d69 linter/eslint/no-useless-assignment: Handle exceptional control-flow paths (#23544) (camc314)
- e8e2741 linter/unicorn/prefer-math-min-max: Preserve operand source text in the fix (#23533) (Yunfei He)
- f592154 linter/react/display-name: Ignore lowercase jsx helpers (#23510) (camc314)
- df7612f linter/jsx-a11y/no-noninteractive-element-to-interactive-role: Allow custom roles config (#23507) (camc314)
- 924b931 linter/unicorn/prefer-at: Handle checking all indexes correctly (#23504) (camc314)
- ca9686b linter/unicorn/prefer-at: Report zero indexes (#23503) (camc314)
- e96a4e3 linter/unicorn/explicit-length-check: Ignore optional chains (#23487) (camc314)
- a303c23 linter/jsx-a11y: Align
anchor-is-validconfig with upstream (#23446) (camc314) - f27a6d1 linter: False positives with non
*.setTimeoutcall inno-confusing-set-timeout(#23444) (camc314)
⚡ Performance
- 8e0dd65 linter: Emit RuleEnum dispatch match once instead of per timing branch (#23499) (Boshen)
- d5c7d99 linter/expect-expect: Avoid recompiling matches on every traversal (#23593) (camc314)
- f191520 linter/no-useless-spread: Avoid collecting
Vecbefore iterating (#23546) (camc314) - 79340d1 linter: Stream React lifecycle ancestors (#23545) (camc314)
- 1923169 linter/eslint/max-classes: Gate rule by rule config threshold (#23509) (camc314)
- 3f60de3 linter: Use bucketed dispatch for all files (#23452) (camc314)
- 3699971 linter/typescript/no-unnecessary-parameter-property-assignment: Avoid temporary vec allocations (#23492) (camc314)
- 4ef0ceb linter/eslint/no-useless-switch-case: Avoid temporary vec allocations (#23489) (camc314)
- 2e09dd3 linter: Avoid JSX fragment child collections (#23486) (camc314)
- f30a64c linter/oxc/branches-sharing-code: Borrow shared branch suggestion text (#23484) (camc314)
- 097a317 linter/eslint/no-control-regex: Retain control regex candidates in place (#23482) (camc314)
- b3a093d linter: Reuse rule dispatch buckets (#23450) (camc314)
- 9f1a985 oxlint: Start Tokio only for LSP (#23447) (camc314)
📚 Documentation
- 9e219de linter/plugins: Update usage instruction (#23495) (Tony)
- b50bf4d linter: Remove manually written options doc for
eslint/arrow-body-style(#23490) (Mikhail Baev)
Oxfmt v0.56.0
🐛 Bug Fixes
- f21ed2c formatter_json: Normalize CRLF for suppressed text (#23702) (leaysgur)
- 7cd1737 formatter: Normalize CRLF for suppressed text (#23701) (leaysgur)
- a36e444 formatter: Member chain panic when tail is merged with comment in dev build (#23698) (leaysgur)
- 600d306 formatter: Preserve parens with default export and type cast (#23697) (leaysgur)
- 61290f2 formatter: Single-member intersection/union type with comment formatting (#21915) (Leonabcd123)
- 5a1b0b4 formatter: Parenthesize a type assertion used as the base of
**(#23633) (Jerry Zhao) - 91827e2 formatter: Use
Ordering::reverse()withorder: descfor idempotency (#23543) (leaysgur) - 8fa7394 formatter_json: Handle wrapped error span (#23472) (leaysgur)
- 37a34a1 oxfmt/lsp: Avoid newlines line ending changes (#23463) (Sysix)
⚡ Performance
oxc crates_v0.137.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- 7a76cd3 estree: [BREAKING] Make whether to include TS fields a runtime option (#23574) (overlookmotel)
- e7b6b68 estree: [BREAKING]
ESTreeconfig use methods not consts (#23573) (overlookmotel)
🚀 Features
- 556cc6d data_structures: Add
CodeBuffer::as_strmethod (#23571) (overlookmotel) - 38c4b06 parser: Add friendly error for adjacent JSX elements (#23378) (sapphi-red)
- 53509a8 minifier: Treeshake pure typed arrays and Set/Map array literals (#23469) (Dunqing)
- 09762d9 minifier: Inline const value for read-only vars (#22593) (Dunqing)
🐛 Bug Fixes
- 20375f9 react_compiler: Keep imports referenced only by a computed key (#23586) (Boshen)
- 31bfd9b minifier: Keep Object introspection calls on a possible Proxy (#23483) (Dunqing)
- 837a395 parser: Treat a line comment after ':' as leading, not trailing (#23515) (Dunqing)
- e409fe0 minifier: Keep
new Map/WeakSet/WeakMapwith a string argument (#23470) (Dunqing) - ae02b4e ci/parser: Use
minimalfor vitest reporter (#23457) (camc314)
⚡ Performance
- cf24329 mangler: Compile slot sort once instead of per CAPACITY (#23577) (Boshen)
- 4058a6a parser: Reduce code bloat from verify_modifiers monomorphization (#23576) (Boshen)
- 053b0c1 estree: Remove pointless
mem::take(#23572) (overlookmotel) - dfb52b6 transformer: Pre-size statement vecs in TS enum & namespace lowering (#23516) (Yunfei He)
- 970e09a minifier: Compute template-literal inline checks in a single pass (#23467) (Yunfei He)
- 3170c0e semantic,mangler,minifier: Fix
Semantic::statsnode count and reuse stats in mangler builds (#23352) (Boshen) - d1fa6e0 minifier: Evaluate ternary branches once in minimize_conditional_expression (#23479) (Yunfei He)
- 3fa8051 transformer: Pre-size JSX props vec to attribute count (#23466) (Yunfei He)
- 488b382 react_compiler: Borrow binding names in prefilter instead of allocating (#23471) (Yunfei He)
- bcb3894 minifier: Incremental scoping refresh, delete LiveUsageCollector (#23197) (Dunqing)
📚 Documentation
oxc crates_v0.136.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- 7a24911 codegen: [BREAKING] Borrow sourcemaps from codegen (#23422) (Boshen)
- bb0ed44 transformer: [BREAKING] Disable styled-components transpileTemplateLiterals by default (#23171) (Boshen)
🚀 Features
- 1490a0a linter/react: Implement react-compiler rule (#23202) (Boshen)
- 6c0bdf0 transformer/react-refresh: Support
module.property.useHook()(#23190) (Dunqing) - 47991bd semantic: Report TS1228 for invalid type predicates (#23174) (camc314)
- 1d3af58 parser: Add TS2398 parameter property diagnostic (#23216) (camc314)
- 44313da semantic: Add
scope_is_descendant_ofapi (#22313) (camc314) - e5050c0 parser: Improve diagnostic for rest initializer (#23205) (camc314)
- ec266bb transformer: Run React Compiler as a feature-gated transform pass (#23201) (Boshen)
- e7374fe parser: Report error for
constmodifier on interface type parameter (#23173) (camc314) - a7c1c9b parser: Report ambient definite variable assertions (#23165) (camc314)
- d169fcd parser: Report invalid class definite assertions (#23164) (camc314)
- 00244d8 parser: Report definite property initializer errors (#23160) (camc314)
🐛 Bug Fixes
- 52d0c31 transformer: Replace ambient dot defines (#23231) (camc314)
- 2c28748 transformer/class: Parent generated constructors to class scope (#23222) (camc314)
- 8edd234 parser: Report accessor definite assertion on token (#23203) (camc314)
- de38a3f react_compiler: Keep imports referenced only by a local re-export (#23176) (Boshen)
- f5721c2 codegen: Preserve parentheses around
intrinsictype reference (#23156) (Boshen) - e89f81d parser: Don't emit TS1477 for parenthesized instantiation expression (#23147) (Boshen)
- 8a04149 parser: Reject module-referencing imports/exports in a namespace body (#22829) (Boshen)
⚡ Performance
- 2783295 parser: Table-driven operator precedence lookup (#23346) (Boshen)
- 231d5de parser: Single-match member expression dispatch (#23347) (Boshen)
- e89729b codegen: Accept one-shot wrap closures (#23265) (camc314)
- a6c11fa parser: Force-inline read_non_decimal to fold per-digit number dispatch (#23157) (Boshen)
- d74964c parser: Store class definite assertion offset (#23170) (camc314)
- f0fda4d parser: Shrink-wrap cold diagnostic tails out of hot frames (#23159) (Boshen)
- a082180 parser: Store definite assertion offset (#23167) (camc314)
- 534f9c6 oxc: Conditionally rebuild semantic in compiler pipeline (#23153) (Boshen)
- b435c6a parser: Skip checkpoint for
infer T extends Uconstraint in disallow context (#23128) (Boshen) - 7464dce parser: Peek instead of checkpoint/rewind for
export defaultmodifier (#23124) (Boshen) - 80a9a32 parser: Fast-path single-keyword TS declarations (#23083) (Boshen)
- da1a6c6 diagnostics: Migrate to allocation-optimized oxc-miette (#23094) (Boshen)
- b7b08ce parser: Peek once for the static modifier disambiguation (#23079) (Boshen)
- e7e07a3 parser: Fold unary dispatch into a single match (#23076) (Boshen)
📚 Documentation
- d241add semantic: Add
AGENTS.mdtest guidance for agents (#23441) (camc314) - 026f1ae parser: Add
AGENTS.mdtest guidance for agents (#23440) (camc314) - 09755ac transformer: Add
AGENTS.mdtest guidance for agents (#23439) (camc314) - e6bdfd4 lexer: Correct reference link for
byte_handlers!(#23313) (Dunqing) - 65b6d7a allocator: Fix memory leaks in
Arenaexamples (#23257) (overlookmotel)
oxlint v1.70.0 & oxfmt v0.55.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.70.0
Highlights
🚀 Features
- 5e1627d linter/unicorn: Flag all Error() calls without new in
throw-new-error(#23363) (Cason Kervis) - 2e8bda4 linter/vue: Implement no-dupe-keys rule (#23350) (bab)
- dd560ae linter/unicorn: Implement
no-array-fill-with-reference-typerule (#23397) (Mikhail Baev) - af36c2f linter: Add schema for
react/jsx-curly-brace-presence(#23400) (WaterWhisperer) - 47d34a3 linter: Add schema for
react/jsx-handler-names(#23393) (WaterWhisperer) - f4250d0 linter: Add schema for
unicorn/import-style(#23386) (WaterWhisperer) - 30c74ce linter: Add schema for
jsx_a11y/no-noninteractive-element-to-interactive-role(#23384) (Sysix) - cfbe8dc linter: Add schema for
jsx_a11y/no-interactive-element-to-noninteractive-role(#23382) (WaterWhisperer) - d15b7ff linter: Add schema for
typescript/no-restricted-types(#23381) (WaterWhisperer) - 028a811 linter: Add schema for
jsx-a11y/media-has-caption(#23377) (Sysix) - b3b1038 linter: Add schema for
jsx-a11y/label-has-associated-control(#23376) (Sysix) - 7ada6b2 linter: Add schema for
jsx_a11y/no-distracting-elements(#23379) (WaterWhisperer) - ee3dd49 linter: Add schema for
jsx-a11y/img-redundant-alt(#23374) (Sysix) - df5f8dd linter: Add short descriptions to most lint rules. (#23365) (Connor Shea)
- e3fd735 linter: Add schema for
jsx_a11y/alt-text(#23369) (Sysix) - 0f2fff4 linter: Add schema for
react/exhaustive-deps(#23372) (Mikhail Baev) - e3e4e10 linter: Add schema for
react_perf/jsx-no-new-object-as-prop(#23368) (Mikhail Baev) - 9366d44 linter: Add schema for
unicorn/prefer-at(#23366) (WaterWhisperer) - f57b55d linter: Add schema for
typescript/array-type(#23355) (Sysix) - 0dcf912 linter: Add schema for
typescript/ban-ts-comment(#23354) (Sysix) - 51fa83e linter: Add schema for
react/no-did-update-set-state(#23357) (Mikhail Baev) - 59db0bd linter: Add schema for
consistent-generic-constructors(#23353) (Sysix) - c4775c0 linter: Add schema for
typescript/consistent-type-assertions(#23349) (Sysix) - 6e516f7 linter: Add schema for
typescript/consistent-type-imports(#23348) (Sysix) - 012134d linter: Add schema for
react/jsx-no-target-blank(#23345) (WaterWhisperer) - 0806aae linter: Add schema for
jsx_a11y/no-noninteractive-tabindex(#23337) (Mikhail Baev) - 0708b5a linter: Add schema for
react/jsx-filename-extension(#23315) (Mikhail Baev) - 150bce1 linter: Add schema for
typescript/no-empty-object-type(#23309) (Sysix) - f9e36f1 linter: Add schema for
typescript/no-duplicate-type-constituents(#23308) (Sysix) - 937accf linter: Add schema for
typescript/no-invalid-void-type(#23307) (Sysix) - 3e042b9 linter: Add schema for
typescript/no-misused-promises(#23306) (Sysix) - da212d1 linter: Add schema for
typescript/no-unnecessary-condition(#23305) (Sysix) - f8f0d38 linter: Add schema for
typescript/parameter-properties(#23304) (Sysix) - 2275fc7 linter: Add schema for
typescript/prefer-nullish-coalescing(#23302) (Sysix) - d353858 linter: Add schema for
typescript/prefer-string-starts-ends-with(#23301) (Sysix) - 03060f5 linter: Add schema for
typescript/triple-slash-reference(#23300) (Sysix) - 6619cee linter: Add schema for
promise/param-names(#23298) (Sysix) - 8bf108e linter: Add schema for
promise/catch-or-return(#23297) (Sysix) - 48158d0 linter: Add schema for
vitest/consistent-each-for(#23294) (Sysix) - 7e74c98 linter: Add schema for
vitest/consistent-test-filename(#23293) (Sysix) - ff94d4a linter: Add schema for
vitest/consistent-vitest-vi(#23292) (Sysix) - 2409a10 linter: Add schema for
vitest/prefer-import-in-mock(#23291) (Sysix) - 3d782b7 linter: Add schema for
react/no-unstable-nested-components(#23287) (Mikhail Baev) - 0a0bc2f linter/jsx-a11y: Add
allowedRedundantRolesoption tono-redundant-roles(#22820) (bab) - 80758a5 linter/vue: Implement no-side-effects-in-computed-properties rule (#23282) (bab)
- e3869ac linter: Add schema for
react/no-object-type-as-default-prop(#23279) (Mikhail Baev) - 4480609 linter: Add schema for
react/jsx-props-no-spreading(#23276) (Mikhail Baev) - 08d68a5 linter/react: Implement
jsx-no-literalsrule (#23145) (kapobajza) - 9a2788b linter/unicorn: Implement
prefer-export-fromrule (#22935) (AliceLanniste) - bdb723c linter/unicorn: Implement prefer-single-call rule (#23235) (Yuzhe Shi)
- 31543ed linter: Add schema for
vue/define-props-destructuring(#23252) (Sysix) - 21b6c3d linter: Add schema for
oxc/no-async-endpoint-handlers(#23251) (Sysix) - e77ff81 linter: Add schema for
unicorn/prefer-object-from-entries(#23249) (Mikhail Baev) - bcac2d6 linter: Add schema for
jest/vitest/no-restricted-matchers(#23247) (Sysix) - 539f036 linter: Add schema for
jest/vitest/no-restricted-*-methods(#23246) (Sysix) - dd1b927 linter/vue: Implement require-default-prop rule (#22951) (bab)
- 3f018e7 linter: Add schema for
unicorn/no-instanceof-builtins(#23225) (Mikhail Baev) - 5b9a793 linter/react-perf: Support
nativeAllowListconfig (#22996) (Cole Ellison) - b4e19d4 linter: Improve promise/catch-or-return termination diagnostics (#23218) (camc314)
- 9b72a41 linter/promise/catch-or-return: Add support for
allowThenStrictoption (#23206) (camc314) - e0d0f78 linter: Verify promise/no-callback-in-promise schema (#23141) (beanscg)
- 123d4f4 linter: Add schema for
jest/vitest/valid-expect(#23185) (Sysix) - 46c8a21 linter: Add schema for
jest/vitest/require-top-level-describe(#23184) (Sysix) - 41465cf linter: Add schema for
jest/vitest/prefer-snapshot-hint(#23183) (Sysix) - d068b9b linter: Add schema for
jest/vitest/prefer-expect-assertions(#23181) (Sysix) - 064a1ee linter: Add schema for
jest/prefer-ending-with-an-expect(#23180) (Sysix) - d046797 linter: Add schema for
jest/vitest/no-standalone-expect(#23179) (Sysix) - 137b9a6 linter: Add schema for
jest/vitest/no-large-snapshots(#23178) (Sysix) - 0f3e4a5 linter: Add schema for
jest/vitest/no-hooks(#23177) (Sysix) - 00244d8 parser: Report definite property initializer errors (#23160) (camc314)
- cd0b384 linter: Add schema for
unicorn/explicit-length-check(#23155) (Mikhail Baev) - 01b74c4 linter: Add schema for
jest/no-deprecated-functions(#23136) (Sysix) - 9d6a387 linter: Add schema for
unicorn/catch-error-name(#23137) (Mikhail Baev) - 0da8efa linter: Add schema for
jest/vitest/max-nested-describe(#23131) (Sysix) - d71c9fd linter: Add schema for
eslint/no-use-before-define(#23129) (Sysix)
🐛 Bug Fixes
- 5cb8d1b linter/jsx-a11y/control-has-associated-label: Reject excessive label depth (#23445) (camc314)
- 019be2e linter/unicorn: Align throw-new-error parity (#23437) (camc314)
- b9e5e51 linter/jest: Validate no-restricted-jest-methods config (#23436) (camc314)
- f302f41 linter: Normalize oxlint jsPlugin prefixes (#23335) (konh)
- 2bdf8ce linter/jest: Validate no-restricted-matchers config (#23434) (camc314)
- 5c2fb45 linter/eslint: Validate max-depth config (#23430) (camc314)
- eafc280 linter/eslint: Validate no-unused-vars config (#23433) (camc314)
- 25aebb0 linter/typescript: Validate no-empty-object-type config (#23432) (camc314)
- 7cafe3b linter/unicorn: Validate catch-error-name config (#23431) (camc314)
- af1b897 linter/unicorn: Validate prefer-object-from-entries config (#23429) (camc314)
- 68d48fe linter/eslint: Validate max-classes-per-file config (#23428) (camc314)
- 02932b6 linter/eslint: Validate
complexityconfig (#23427) (camc314) - 375e574 linter/eslint: Use shared id-length regex config (#23426) (camc314)
- ba3e2e0 linter/eslint: Preserve used imports in no-unused-vars fixer (#23425) (camc314)
- 26ddac6 linter: Avoid config schema generation for
jsx_a11y/no-noninteractive-element-interactions(#23385) (Sysix) - 40556ad linter: Parse
jsx-a11y/control-has-associated-labelconfig withDefaultRuleConfig(#23373) (Sysix) - dacbda8 linter/unicorn/prefer-string-starts-ends-with: Mark rule as deprecated (#23342) (camc314)
- 956309a lsp: Use protocol line breaks for positions (#23329) (konh)
- 71e9648 linter: Expose no-noninteractive-element-interactions schema (#23283) (camc314)
- 4c4c19c linter:
no-noninteractive-element-interactionsfix default values (#23288) (Sysix) - e63a139 linter/jsx-a11y: Restore control label defaults (#22737) (konh)
- 0e4e59f linter/jsx-a11y: No-redundant-roles attribute-aware implicit roles for
<input>, skip ancestor-conditional elements (#23015) (Gaurav Dubey) - 06e215e linter/vitest: Validate
consistent-each-forconfig (#23278) (camc314) - cd278e1 linter/promise: Validate param-names config (#23277) (camc314)
- 7f46013 linter/react/display-name: Handle default export function correctly (#23271) (camc314)
- 22ff6a6 linter/unicorn: Deserialize filename-case config with serde (#23266) (camc314)
- b644da0 linter/eslint: Add fixer for
sort_vars(#23262) (Cason Kervis) - 778af4d linter/unicorn: Support array of patterns for
unicorn/filename-caseignoreoption (#23260) (kapobajza) - 127fb2c linter: Deserialize rule config with serde for
unicorn/prefer-object-from-entries(#23253) (Sysix) - f89b909 linter/react/jsx-no-target-blank: Handle compound conditions (#23245) (camc314)
- c30419a linter/typescript: Deserialize rule config with serde for
consistent-generic-constructors(#23238) (camc314) - 7d17d37 linter/react: Report invalid exhaustive-deps config (#23239) (camc314)
- 1060186 linter/eslint: Add
deny_unknown_fieldstoprefer-destructuring(#23237) (camc314) - fd2e4eb linter/react: Add
deny_unknown_fieldstoexhaustive-deps(#23236) (camc314) - 6c3c904 linter/react/jsx-curly-brace-presence: Avoid false positive with comment within braces ...
oxc crates_v0.135.0
Immutable
release. Only release title and notes can be modified.
💥 BREAKING CHANGES
- ee4dc73 ast: [BREAKING] Add
#[non_exhaustive]to AST nodes (#23046) (overlookmotel) - 4c35362 ast: [BREAKING] Add
AstBuilder::template_element_escape_rawandtemplate_element_escape_raw_with_lone_surrogatesmethods (#23047) (overlookmotel)
🚀 Features
- b846ab2 react_compiler: Integrate the Rust port of the React Compiler (#22942) (Boshen)
- 5b8dd68 parser: Report TS1255 for invalid class definite assertions (#22917) (camc314)
- 85efabf semantic: Make building the class table optional, off by default (#22862) (Boshen)
🐛 Bug Fixes
- 556acdc codegen: Parenthesize TS-cast assignment targets (#23112) (Boshen)
- 37169ff codegen: Don't emit space between postfix
--and>when minifying (#23036) (Boshen) - a4b1bf7 codegen: Drop redundant whitespace in minified TypeScript output (#23038) (Boshen)
- cf53285 parser: Report reserved type-declaration names in the parser (#23035) (Boshen)
- 4e44969 ast: Fix UB in
escape_template_element_raw(#23052) (overlookmotel) - c543154 parser: Report comma operator in JSX expression in the parser (#23030) (Boshen)
- 325c94f codegen: Tighten conditional-type and constructor-type whitespace when minifying (#23033) (Boshen)
- 95dd3a2 parser: Report
import typealias to a non-external reference in the parser (#23032) (Boshen) - 90180b8 codegen: Drop space after
:in function return type when minifying (#23028) (Boshen) - 6da876e parser: Report
abstractprivate class field in the parser (#23029) (Boshen) - 28467ce codegen: Don't emit space before a postfix update operand when minifying (#23027) (Boshen)
- cb29926 codegen: Drop redundant space after
export defaultwhen minifying (#23024) (Boshen) - 62965ae codegen: Drop redundant space after
elsewhen minifying (#23025) (Boshen) - 989230a parser: Report compound assignment to non-simple target in the parser (#23022) (Boshen)
- 06f367c parser: Report
super.#fieldprivate access in the parser (#23014) (Boshen) - 184edef codegen: Print space before
const/declareenum modifier (#23013) (Boshen) - 4d722e0 parser: Report duplicate switch
defaultclause in the parser (#23012) (Boshen) - 597ed85 codegen: Parenthesize
let/asyncfor-of head target (#23008) (Boshen) - 8b631bf codegen: Remove stray space before mapped type value colon (#23010) (Boshen)
- c08407e codegen: Don't over-parenthesize
ininside an arrow in a for-init (#23009) (Boshen) - 600cd6f codegen: Parenthesize lower-precedence
TSInstantiationExpressionoperand (#23007) (Boshen) - 187e1a5 codegen: Don't leak space after comment-only JSX expression container (#23006) (Boshen)
- 294c473 codegen: Don't over-parenthesize
TSTypeAssertionoperand (#23004) (Boshen) - 786d96f codegen: Give
TSTypeAssertionunary precedence (#23002) (Boshen) - 1295882 parser: Report
new.targetandimport.metasyntax errors in the parser (#23003) (Boshen) - d727b6b codegen: Parenthesize
awaitexpression as base of**(#23001) (Boshen) - 67dfa08 codegen: Keep parentheses around
newcallees containing a call (#22997) (Boshen) - 17e7cf3 parser: Disallow unerasable
as/satisfiesassertions (#22986) (Boshen) - beb46d3 parser: Commit to module goal on decorated exports (#22941) (Boshen)
- 49e63f7 isolated-declarations: Require annotations for satisfies initializers (#22898) (camc314)
- 8c93601 isolated-declarations: Allow unknown enum initializer in non-const enum (#22900) (camc314)
⚡ Performance
- 7d89909 parser: Peek instead of lookahead for yield disambiguation (#23071) (Boshen)
- bf872f0 parser: Skip arrow lookahead for a parenthesized literal (#23070) (Boshen)
- d19fc54 parser: Guard type-argument speculation behind an angle-token check (#23069) (Boshen)
- 8eb5507 parser: Skip redundant member-rest re-scan on call entry (#23068) (Boshen)
- 883dfc1 parser: Skip parse_call_expression_rest when no call follows (#23063) (Boshen)
- b171153 parser: Peek before the await-using lookahead (#23059) (Boshen)
- 56f21bd parser: Use peek_token for the TS
assertstype predicate (#23058) (Boshen) - 68805ac parser: Use peek_token instead of checkpoint/rewind for single-token decisions (#23056) (Boshen)
- 1f9d8eb ast:
AstBuilder::template_element_escape_rawavoid allocation if no escape required (#23053) (overlookmotel) - 502b04d semantic: Move cold function redeclaration handling into
#[cold]function (#22973) (overlookmotel)
📚 Documentation
oxlint v1.69.0 & oxfmt v0.54.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.69.0
🚀 Features
- e805174 linter: Add schema for
jest/vitest/max-expects(#23105) (Sysix) - 7850577 linter: Add schema for
jest/vitest/expect-expect(#23104) (Sysix) - 75f641a linter: Add schema for
jest/vitest/consistent-test-it(#23103) (Sysix) - 5125f89 linter/unicorn: Support no-null
checkArgumentsoption (#23098) (camc314) - b8b9797 linter: Add schema for
import-max-dependencies(#23096) (Sysix) - 65cb47a linter/eslint: Support no-unused-expressions
ignoreDirectivesoption (#23097) (camc314) - f6c36d5 linter: Add schema for
import/prefer-default-export(#23091) (Sysix) - 0d4a5d1 linter: Add schema for
eslint/sort-vars(#23090) (Sysix) - fdb5bf5 linter: Add schema for
eslint/radix(#23082) (Sysix) - 05b4dcf linter: Add schema for
eslint/prefer-const(#23081) (Sysix) - 5a06c4d linter/vue: Implement next-tick-style rule (#23041) (Alex Peshkov)
- e38a36a linter: Add schema for
eslint/operator-assignment(#23080) (Sysix) - 907cee7 linter: Add schema for
eslint/no-warning-comments(#23075) (Sysix) - 9470bb2 linter: Add schema for
eslint/no-unused-vars(#23073) (Sysix) - 234b5cf linter: Add schema for
eslint/no-shadow(#23072) (Sysix) - de0dd8b linter: Add schema for
eslint/no-restricted-exports(#23020) (Sysix) - faa3e0d linter: Add schema for
eslint/no-param-reassign(#23018) (Sysix) - dbc9c27 linter: Add schema for
eslint/no-magic-numbers(#23017) (Sysix) - 38d3569 linter: Add schema for
eslint/no-inner-declarations(#23016) (Sysix) - 008fa41 linter: Add schema for
eslint/no-constant-condition(#22991) (Sysix) - ca44623 linter: Add schema for
eslint/no-empty-function(#22988) (Sysix) - 43eb04d linter: Add schema for
eslint/id-match(#22987) (Sysix) - a800f27 linter: Add schema for
eslint/capitalized-comments(#22984) (Sysix) - 96e2d32 linter: Add schema for
eslint/id-length(#22963) (Sysix) - 545493f linter: Add schema for
eslint/complexity(#22960) (Sysix) - 5f0b558 linter: Add schema for
eslint/class-methods-use-this(#22959) (Sysix) - 719b720 linter: Add schema for simple rule configurations (#22948) (Sysix)
- fd00966 linter: Add right schema for
eslint/max-*rules (#22923) (Sysix) - 1226d78 linter: Fill schema with rule configurations (#22907) (Sysix)
- 8f423c1 linter/vue: Implement
require-direct-exportrule (#17623) (yefan) - 78e915b linter/vue: Implement no-reserved-props rule (#22914) (bab)
- 0f200a9 linter/vue: Implement require-prop-types rule (#22083) (Alex Peshkov)
- 5da9da9 linter/vue: Implement no-reserved-keys rule (#21780) (bab)
- 75e14a8 linter/vue: Implement prop-name-casing rule (#22892) (bab)
- 85efabf semantic: Make building the class table optional, off by default (#22862) (Boshen)
🐛 Bug Fixes
- a49b0cf linter/no-map-spread: Remove ineffective autofix (#22956) (camc314)
- cf53285 parser: Report reserved type-declaration names in the parser (#23035) (Boshen)
- 0383e61 linter: Fix schema for rules without a config (#22946) (Sysix)
- 4d722e0 parser: Report duplicate switch
defaultclause in the parser (#23012) (Boshen) - 6cb34b8 linter/plugins: Make spreading
Tokeninstances keeplocproperty (#22947) (Nicolas Le Cam) - 27de044 linter/plugins: Make spreading
Commentinstances keeplocproperty (#22238) (Nicolas Le Cam) - 742fd0b linter/double-comparisons: Make fixer a suggestion (#22968) (camc314)
- 93f4494 linter: Respect default child config plugin when extending parent config (#22903) (Sysix)
- 594ed86 linter: Deny unknown options for some rules (#22924) (Sysix)
- 3253038 linter/expect-expect: Align default rule options (#22890) (camc314)
- bbe44ea linter: Respect default plugins from extended config (#22896) (Sysix)
⚡ Performance
- 0b7ce7e linter/plugins: Create global prop vars at top level of modules (#22928) (overlookmotel)
- 0f7c319 linter/plugins: Define class
#locsetter functions asconsts (#22919) (overlookmotel)
📚 Documentation
- 7b0380d linter: Remove preserve-caught-error note (#22994) (camc314)
- dadafe3 oxlint, oxfmt: Mention migrate skills in npm READMEs (#22965) (Boshen)
Oxfmt v0.54.0
🚀 Features
- 3da77e0 oxfmt: Format
parser:json5files byoxc_formatter_json(#22990) (leaysgur) - c786f0d oxfmt: Format
parser:jsoncfiles byoxc_formatter_json(#22913) (leaysgur) - 27a6db8 formatter_json: Implement jsonc variant (#22912) (leaysgur)
🐛 Bug Fixes
- 2aedd52 oxfmt: Avoid JS promise rejects for all TSFN call sites (#23107) (leaysgur)
- 01e0871 formatter,formatter_json: Handle PS/LS as line terminator (#22978) (leaysgur)
- 23902d9 formatter_json: Handle CR only line breaks (#22977) (leaysgur)
- 136b72b formatter_json: Use line_suffix for line comment outside array (#22931) (leaysgur)
- 44e40fa formatter_json: Expand line comment inside array (#22911) (leaysgur)
- 2c86896 formatter_json: Avoid example binary name collision (#22904) (camc314)
📚 Documentation
- cc69d8d formatter_json: Update AGENTS.md (#22981) (leaysgur)
- 0490721 formatter_json: Update AGENTS.md (#22976) (leaysgur)
- dadafe3 oxlint, oxfmt: Mention migrate skills in npm READMEs (#22965) (Boshen)
- f88961a oxfmt: Annotate each config option with supported languages (#22953) (leaysgur)
- 7e514bf formatter_json: Update AGENTS.md (#22930) (leaysgur)
oxc crates_v0.134.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- 81b86eb parser: Report TS1095 for setter with return type (#22889) (camc314)
- 0899485 parser: Report TS1051 for optional setter parameter (#22887) (camc314)
- 139b531 parser: Emit TS1094 for accessor type parameters (#22885) (camc314)
- 9c71f2e ast, codegen, formatter: Add
WithClauseKeyword::as_strhelper and use it (#22791) (camc314)
🐛 Bug Fixes
- 070eb9e isolated-declarations: Omit public accessor modifier (#22880) (camc314)
- a3ae099 isolated-declarations: Omit definite assertion from private declarations (#22878) (camc314)
- 7914807 codegen: Map call-chain punctuation for correct V8 stack columns (#22789) (Dunqing)
- cf5769c parser: Reject TypeScript declarations in single-statement context (#22827) (Boshen)
- c360fb6 parser: Reject generators in ambient contexts and overload signatures (TS1221/TS1222) (#22848) (Boshen)
- cc60d8d parser: Reject invalid index signature parameter types (TS1268/TS1337) (#22852) (Boshen)
- 3d13e29 parser: Reject
declarein an already-ambient context (TS1038) (#22850) (Boshen) - 5152854 parser: Reject statements in ambient contexts (TS1036) (#22849) (Boshen)
- 4f9afc5 parser: Reject
export as namespaceinside a namespace body (TS1316) (#22846) (Boshen) - 2eafea6 parser: Reject function implementations in ambient contexts (TS1183) (#22845) (Boshen)
- c645615 parser: Reject incompatible class member modifiers (#22843) (Boshen)
- 276b78b parser: Reject module-referencing imports/exports in a namespace body (#22836) (Boshen)
- 842ed1c parser: Parse
class implementswithimplementsas the class name (#22801) (Boshen)
⚡ Performance
oxlint v1.68.0 & oxfmt v0.53.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.68.0
🚀 Features
- 81b86eb parser: Report TS1095 for setter with return type (#22889) (camc314)
- 3f05c5e linter: Expose
override::exclude_filesoption (#22884) (camc314) - e4b1f46 linter/typescript: Implement
method-signature-stylerule (#22679) (Mikhail Baev) - bc462ca linter/vue: Implement no-reserved-component-names rule (#22741) (bab)
- ef9e751 linter/vue: Implement component-definition-name-casing rule (#22818) (bab)
- d67f51a linter/vue: Implement require-prop-type-constructor rule (#22708) (bab)
- 1444f82 linter/promise/spec-only: Add
Promise.trytoPromisestatic methods (#22812) (Ben Saufley) - 8422e8b linter/jsdoc: Implement
require-yields-descriptionrule (#22805) (Mikhail Baev) - fe93f97 linter/eslint: Implement
prefer-named-capture-grouprule (#22759) (Sebastian Poxhofer) - 1a7798b linter: Add suggestion for
unicorn/no-new-array(#22682) (Sysix)
🐛 Bug Fixes
- 4957c71 linter/arrow-body-style: False positive with non-zero directive count (#22888) (camc314)
- 760a9f9 linter: Report errors when writing to the filesystem (#22881) (camc314)
- e5a2748 linter: Avoid no-unreachable false positive after conditional loop (#22869) (camc314)
- 39d92d6 linter/arrow-body-style: Preserve comments within function (#22854) (Sysix)
- 3d13e29 parser: Reject
declarein an already-ambient context (TS1038) (#22850) (Boshen) - 5152854 parser: Reject statements in ambient contexts (TS1036) (#22849) (Boshen)
- 2eafea6 parser: Reject function implementations in ambient contexts (TS1183) (#22845) (Boshen)
- c645615 parser: Reject incompatible class member modifiers (#22843) (Boshen)
- 4a1ca4a linter/export: Detect duplicate explicit exports (#22798) (camc314)
- 0a9a735 linter/no-loop-func: Allow safe let closures (#22811) (camc314)
- 1599f11 linter: Align lsp extends default plugins (#22788) (camc314)
- db32ec9 linter/no-accumulating-spread: Use loop as primary span (#22800) (camc314)
- 33ec6b4 linter/consistent-test-it: Avoid adjacent describe leakage (#22796) (camc314)
- 2606069 linter/no-array-sort: Unwrap parenthesized sort args (#22794) (camc314)
- 9f2f709 linter/no-array-sort: Skip non compare fn sort arguments (#22752) (Gaurav Dubey)
- 27268a0 linter/no-else-return: Preserve statement boundary in fixer (#22687) (camc314)
- d9cb6d8 linter/no-empty-function: Allow functions callbacks with
allow: functions(#22764) (camc314) - a40a314 linter/no-shadow-restricted-names: Ignore enum members (#22762) (camc314)
- 82366d9 linter/no-cond-assign: Align ternary handling (#22761) (camc314)
📚 Documentation
Oxfmt v0.53.0
🚀 Features
- d75cbbf oxfmt: Format
parser:jsonfiles byoxc_formatter_json(#22709) (leaysgur) - 49db054 formatter_json: Implement
oxc_formatter_json(json variant only) (#22641) (leaysgur) - 9c71f2e ast, codegen, formatter: Add
WithClauseKeyword::as_strhelper and use it (#22791) (camc314)
🐛 Bug Fixes
- d3cdd62 oxfmt: Skip formatting for whitespace-only file (#22780) (leaysgur)
- 23f0cc8 formatter: Don't move comments inside variable declaration in for in loop (#22776) (leaysgur)
- f200c40 formatter: Don't move comments inside variable declaration in for of loop (#22773) (Leonabcd123)
📚 Documentation
oxc crates_v0.133.0
Immutable
release. Only release title and notes can be modified.
🚀 Features
- e857b0c napi/minify: Expose legalComments option and result (#20370) (Boshen)
- 661132d parser: More friendly error messages for rest assignment target and rest binding element (#22719) (sapphi-red)
- ee659b6 transformer/legacy-decorator: Add
strictNullChecksoption for nullable-union design:type (#22266) (Kyle Cannon)
🐛 Bug Fixes
- e1d064e transformer/class-properties: Reparent lifted private method helpers (#22716) (Cameron)
- 4ac0fca minifier: Preserve
0 && (module.exports = { ... })cjs-module-lexer hint (#22729) (Dunqing) - 40ff611 minifier: Mark peephole loop changed when dropping dead-after-throw statement (#22722) (Dunqing)
- 2f7b210 codegen: Emit pife-arrow/function leading comments inside the wrap (#22720) (Dunqing)
- e184f74 parser: Improve invalid
importproperty access diagnostic (#22693) (camc314) - 7baed9c transformer/private-method: Clear inherited strict flags (#22508) (camc314)
- a9ad27e parser: Keep annotation comments leading without preceding newline (#22711) (Dunqing)
- 9ea4d64 minifier: Re-evaluate pure/no-side-effects flags after peephole inlining (#22595) (Dunqing)
- 07afbb6 minifier: Drop empty-body IIFE wrapper when called with arguments (#22589) (Dunqing)
- fa7c463 semantic: Correct TS enum member symbol spans (#22689) (camc314)
- 26b9396 semantic: Resolve parameter decorators outside parameter scope (#22623) (camc314)
- b284045 parser: Switch to module goal eagerly on
export(#22684) (Boshen) - dfa931d semantic: Propagate unresolved auto-increment enum value instead of defaulting to 0 (#22646) (Dunqing)
- 69a6ba6 transformer/legacy-decorator: Emit Array for ReadonlyArray in decorator metadata (#22265) (Kyle Cannon)
- e421ef0 transformer/legacy-decorator: Return runtime binding for design:type (#22640) (Dunqing)
- d61e1d7 codegen: Preserve verbatim text of pure/no-side-effects comments (#22525) (Dunqing)
- 702b14e minifier: Preserve IIFE structure in DCE-only mode (#22547) (Dunqing)
- 917da24 parser: Apply PURE comment through member-access chains (#22566) (Dunqing)
- a069b1c codegen: Preserve quotes for cjs-module-lexer equality strings (#22551) (Dunqing)
⚡ Performance
- 2f623b0 semantic: Skip unresolved checks for re-exports (#22660) (camc314)
- 0d9553d semantic: Early-exit
check_object_expressionfor objects with <2 properties (#22668) (Dunqing) - d721ad9 semantic: Use direct grandparent lookup for TS type parameters (#22658) (camc314)
- 0aff288 semantic: Reorder numeric literal strict mode checks (#22657) (camc314)
- 4d5ddb1 semantic: Reorder binding identifier checks (#22656) (camc314)
- e32acd8 semantic: Reorder identifier ambient binding check (#22653) (camc314)
- 09fe178 semantic: Reorder ident reference strict mode check (#22652) (camc314)
- 4b6add2 semantic: Avoid duplicate ident clone for bindings (#22663) (camc314)
- 82f9662 parser: Check identifier kind before context flag (#22662) (camc314)
- d7cd951 parser: Fast path identifier parsing and inline operator helpers (#22650) (Boshen)
- 7b84314 semantic: Use direct byte access for numeric leading-zero check (#22642) (camc314)
- 0345a31 semantic: Pre-size class elements hash map (#22618) (camc314)
- 04d3065 minifier: Drop per-call buffers in try_fold_concat (#22596) (Dunqing)
- 4f289f1 semantic: Resolve_references_for_current_scope without a temp Vec (#22599) (Dunqing)
- e862c15 semantic: Avoid heap alloc for var hoist scope ids (#22603) (Dunqing)
- 8ff8674 semantic: Early return if
excessis0inStats::increase_by(#22616) (camc314) - 7a4120e semantic: Pre-reserve unresolved_references using Stats::references (#22580) (Dunqing)
oxlint v1.67.0 & oxfmt v0.52.0
Immutable
release. Only release title and notes can be modified.
Table of Contents
Oxlint v1.67.0
🚀 Features
- 10da26b linter:
no-misleading-character-classadd suggestions for regex literal (#22681) (Sysix) - b84941e linter/vue: Implement no-expose-after-await rule (#22675) (bab)
- 98b98c1 linter/vue: Implement no-computed-properties-in-data rule (#22674) (bab)
- 868e2e8 linter: Add suggestion for
no-misleading-character-class(#22631) (Sysix) - 2d4c919 oxlint: Support
vite-plus/resolveConfigfor vite.config.ts (#22456) (leaysgur) - 2a60012 linter/vue: Implement require-render-return rule (#22613) (bab)
- 9f227fd linter/vue: Implement no-deprecated-props-default-this rule (#21892) (bab)
- 9cd28b3 linter: Add debug option to print files to be linted (#22546) (camchenry)
- 87f065e linter/vue: Implement return-in-emits-validator rule (#21935) (bab)
- ea0380c linter/unicorn: Implement
import-stylerule (#22173) (Hao Chen) - dde40fe linter/vue: Implement no-watch-after-await rule (#22006) (bab)
- a735eb0 linter/vue: Implement valid-next-tick rule (#22531) (bab)
- 6dc615d linter/vue: Implement no-shared-component-data rule (#21842) (bab)
- a656418 linter/vue: Implement valid-define-options rule (#22107) (bab)
- bb6f1b2 linter/vue: Implement require-slots-as-functions rule (#22244) (bab)
- 5fa4774 linter/n: Implement
callback-returnrule (#22470) (Mikhail Baev)
🐛 Bug Fixes
- 52bd016 linter: Respect allow unused disable directives in LSP (#22715) (camc314)
- fa7c463 semantic: Correct TS enum member symbol spans (#22689) (camc314)
- ed445ba linter: Respect flags overrides for
RegExp(/regex/i, "u")(#22678) (Sysix) - 26b9396 semantic: Resolve parameter decorators outside parameter scope (#22623) (camc314)
- 203952d linter:
no-misleading-character-classfixis_unicode_code_point_escapecheck (#22655) (Sysix) - 2f64d3d linter:
no-misleading-character-classown diagnostic for surrogate pairs without u flag (#22654) (Sysix) - 0c6ebc2 linter/eslint/no-lone-blocks: Do not flag empty loops (#22649) (Mikhail Baev)
- 2a7562e linter/no-focused-tests: Mark fixer as a suggestion (#22645) (camc314)
- dbe644f linter: Respect args none for unused rest parameters (#22627) (camc314)
- d0211b0 linter: Allow undefined in DummyRuleMap index (#22626) (camc314)
- 36fc0ec oxlint/lsp: "ignore this" actions merge with existing directive (#22604) (Sysix)
- f7f370e linter/vitest/prefer-expect-type-of: Recommend
toBeTypeOfinstead ofexpectTypeOf(#22612) (Mikhail Baev) - 77063e5 linter/consistent-indexed-object-style: Preserve interface modifiers in fixes (#22579) (camc314)
- 4f33aa7 linter: Treat
TSGlobalDeclarationas ambient inhas_ambient_typescript_ancestor(#22577) (camc314)
⚡ Performance
- c22938d linter/no-async-endpoint-handlers: Populate node types (#22601) (camc314)
- 607486e linter/no-negated-condition: Populate node types (#22602) (camc314)
- 4dcaa59 linter/consistent-type-imports: Populate node types (#22600) (camc314)
- 5bd3b25 linter/no-unused-vars: Avoid cloned ancestor iterator (#22598) (camc314)
- 97fe9ba linter/no-extra-non-null-assertion: Reduce node matches (#22588) (camc314)
- ae98296 linter/consistent-indexed-object-style: Populate node types (#22578) (camc314)
Oxfmt v0.52.0
🚀 Features
🐛 Bug Fixes
⚡ Performance
- 78cf83f formatter: Pre-size output buffer using source text length (#22594) (Dunqing)