Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Nov 29, 2025

  • Update from_configuration method in no_duplicates.rs to support both prefer-inline (kebab-case) and preferInline (camelCase) option names

  • Keep camelCase as the primary serde rename, add kebab-case as an alias

  • Use DefaultRuleConfig pattern for cleaner deserialization (matching switch_exhaustiveness_check)

  • Add Deserialize import instead of using fully qualified path

  • Add tests for both prefer-inline and preferInline casing

  • Run existing tests to ensure backward compatibility

  • Run linter and formatter to ensure code quality

  • Fixes linter: "preferInline" option is incorrectly-cased for import/no-duplicates #16266

Original prompt

This section details on the original issue you should resolve

<issue_title>linter: "preferInline" option is incorrectly-cased for import/no-duplicates</issue_title>
<issue_description>### What version of Oxlint are you using?

1.30.0

What command did you run?

No response

What does your .oxlintrc.json config file look like?

// your config here

What happened?

See here for the original rule's config option: https://github.com/import-js/eslint-plugin-import/blob/01c9eb04331d2efa8d63f2d7f4bfec3bc44c94f3/docs/rules/no-duplicates.md#inline-type-imports

The rule's config option should be prefer-inline, but it is cased as preferInline in the docs and the code.

As a result, we probably need to update this rule to support both preferInline and prefer-inline simultaneously, to match the behavior of the original rule for users migrating over from ESLint, and also to maintain compatibility for users who set up the rule with the preferInline casing. I think the one shown in the docs should use prefer-inline, probably.

See the oxlint implementation here, which uses preferInline as the casing:

</issue_description>

Comments on the Issue (you are @copilot in this section)


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

@graphite-app
Copy link
Contributor

graphite-app bot commented Nov 29, 2025

How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • 0-merge - adds this PR to the back of the merge queue
  • hotfix - for urgent hot fixes, skip the queue and merge this PR next

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

Copilot AI changed the title [WIP] Fix incorrect casing for preferInline option fix(linter): support both prefer-inline and preferInline for import/no-duplicates Nov 29, 2025
Copilot AI requested a review from camc314 November 29, 2025 14:59
@connorshea
Copy link
Contributor

@copilot resolve the feedback

@camc314
Copy link
Contributor

camc314 commented Nov 29, 2025

@copilot resolve the feedback

ha thanks, i forgot to tag copilot

@connorshea
Copy link
Contributor

ha thanks, i forgot to tag copilot

lol apparently doing it in a blockquote works too

@camc314
Copy link
Contributor

camc314 commented Nov 29, 2025

@copilot run cargo fmt, this should fix the failing CI

@camc314 camc314 marked this pull request as ready for review November 29, 2025 16:29
Copilot AI review requested due to automatic review settings November 29, 2025 16:29
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a compatibility issue with the import/no-duplicates linter rule by adding support for the correct ESLint option name prefer-inline (kebab-case) while maintaining backward compatibility with the incorrectly-cased preferInline (camelCase) that was previously used. The implementation follows the established DefaultRuleConfig deserialization pattern used throughout the codebase and uses serde's alias attribute to accept both naming conventions.

Key Changes:

  • Added support for both prefer-inline (kebab-case, matching ESLint) and preferInline (camelCase, legacy) option names for the import/no-duplicates rule
  • Refactored configuration deserialization to use the DefaultRuleConfig pattern for cleaner and more consistent code
  • Added comprehensive tests for both naming conventions to ensure backward compatibility

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
crates/oxc_linter/src/rules/import/no_duplicates.rs Added Deserialize derive, used DefaultRuleConfig pattern in from_configuration, added #[serde(alias = "prefer-inline")] for dual naming support, updated documentation comment to use correct kebab-case, and added tests for both camelCase and kebab-case options
crates/oxc_linter/src/snapshots/import_no_duplicates.snap Added snapshot output for the new test case verifying kebab-case option works correctly

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.

Copy link
Contributor Author

Copilot AI commented Nov 29, 2025

@copilot run cargo fmt, this should fix the failing CI

Done in cf12426.

Copilot AI requested a review from camc314 November 29, 2025 16:33
Copy link
Contributor

@connorshea connorshea left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Today I learned about serde alias, nice

@codspeed-hq
Copy link

codspeed-hq bot commented Nov 29, 2025

CodSpeed Performance Report

Merging #16275 will not alter performance

Comparing copilot/fix-prefer-inline-casing (a191fb0) with main (d6b961a)

Summary

✅ 4 untouched
⏩ 41 skipped1

Footnotes

  1. 41 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@connorshea
Copy link
Contributor

LGTM

@camc314 camc314 added the 0-merge Merge with Graphite Merge Queue label Nov 29, 2025
Copy link
Contributor

camc314 commented Nov 29, 2025

Merge activity

…o-duplicates (#16275)

- [x] Update `from_configuration` method in `no_duplicates.rs` to support both `prefer-inline` (kebab-case) and `preferInline` (camelCase) option names
- [x] Keep camelCase as the primary serde rename, add kebab-case as an alias
- [x] Use `DefaultRuleConfig` pattern for cleaner deserialization (matching `switch_exhaustiveness_check`)
- [x] Add `Deserialize` import instead of using fully qualified path
- [x] Add tests for both `prefer-inline` and `preferInline` casing
- [x] Run existing tests to ensure backward compatibility
- [x] Run linter and formatter to ensure code quality

- Fixes #16266

<!-- START COPILOT CODING AGENT SUFFIX -->

<details>

<summary>Original prompt</summary>

>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>linter: "preferInline" option is incorrectly-cased for import/no-duplicates</issue_title>
> <issue_description>### What version of Oxlint are you using?
>
> 1.30.0
>
> ### What command did you run?
>
> _No response_
>
> ### What does your `.oxlintrc.json` config file look like?
>
> ```jsonc
> // your config here
> ```
>
>
> ### What happened?
>
> See here for the original rule's config option: https://github.com/import-js/eslint-plugin-import/blob/01c9eb04331d2efa8d63f2d7f4bfec3bc44c94f3/docs/rules/no-duplicates.md#inline-type-imports
>
> The rule's config option _should_ be `prefer-inline`, but it is cased as `preferInline` in the docs _and_ the code.
>
> As a result, we probably need to update this rule to support both `preferInline` and `prefer-inline` simultaneously, to match the behavior of the original rule for users migrating over from ESLint, and also to maintain compatibility for users who set up the rule with the `preferInline` casing. I think the one shown in the docs should use `prefer-inline`, probably.
>
> See the oxlint implementation here, which uses `preferInline` as the casing: https://github.com/oxc-project/oxc/blob/18274aaff0c9168faaff61c36ca927a2612f7b79/crates/oxc_linter/src/rules/import/no_duplicates.rs#L96</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>

</details>

- Fixes #16266

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs.
@graphite-app graphite-app bot force-pushed the copilot/fix-prefer-inline-casing branch from a191fb0 to 385e13e Compare November 29, 2025 16:54
@graphite-app graphite-app bot merged commit 385e13e into main Nov 29, 2025
20 checks passed
@graphite-app graphite-app bot deleted the copilot/fix-prefer-inline-casing branch November 29, 2025 16:58
@graphite-app graphite-app bot removed the 0-merge Merge with Graphite Merge Queue label Nov 29, 2025
overlookmotel pushed a commit that referenced this pull request Dec 1, 2025
# Oxlint

### 🚀 Features

- 5da1a63 linter/plugins: Introduce `RuleTester` (#16206)
(overlookmotel)
- 41129ab linter/plugins: Implement `languageOptions.parser` (#16292)
(overlookmotel)
- 4b24825 linter: Implement no-restricted-types rule (#16276) (camc314)
- 7150209 linter/plugins: Implement `SourceCode#getNodeByRangeIndex`
(#16256) (overlookmotel)
- 3226864 linter/plugins: Implement options merging (#16217)
(overlookmotel)
- cbb108a linter/plugins: Support default options (#16170)
(overlookmotel)
- 04a3a66 linter/plugins: Implement
`SourceCode#getTokenOrCommentAfter()` (#16045) (Arsh)
- 68b63d9 linter/plugins: Implement
`SourceCode#getTokenOrCommentBefore()` (#16044) (Arsh)
- 04d9454 linter/plugins: Implement `SourceCode#getTokenByRangeStart()`
(#16043) (Arsh)
- 7b8d578 linter/plugins: Implement `SourceCode#getTokensBetween()`
(#16034) (Arsh)
- 79c242f linter/plugins: Implement `SourceCode#getLastTokensBetween()`
(#16033) (Arsh)
- 1772078 linter/plugins: Implement `SourceCode#getFirstTokenBetween()`
(#16032) (Arsh)
- 21bb86d linter/plugins: Implement `SourceCode#getFirstTokensBetween()`
(#16019) (Arsh)
- 78f74b1 linter/plugins: Implement `SourceCode#getLastTokenBetween()`
(#16008) (Arsh)
- df0b948 linter/plugins: Implement `SourceCode#getLastToken()` (#16003)
(Arsh)

### 🐛 Bug Fixes

- cf249f5 linter/plugins: Fix message interpolation (#16300)
(overlookmotel)
- 9149a26 linter/plugins, napi/parser: Deep freeze visitor keys (#16293)
(overlookmotel)
- 71271ee linter: Fix `typescript/no-empty-interface` config option
casing. (#16282) (connorshea)
- 653fa6c oxlint/oxfmt/lsp: Tell client the real tool name & version
(#16212) (Sysix)
- 385e13e linter: Support both prefer-inline and preferInline for
import/no-duplicates (#16275) (copilot-swe-agent)
- efc08d3 linter: Fix config docs for no-return-assign and unicode-bom
rules. (#16260) (connorshea)
- dc96d3f linter: Correct docs to use string option for import/first
rule. (#16264) (connorshea)
- 15ce491 linter: Correct the default config options for the
switch-exhaustiveness-check rule. (#16268) (connorshea)
- 13f985c linter: Fix casing for unicorn/explicit-length-check config
option. (#16269) (connorshea)
- 0df1901 linter/plugins: Reset state after error during AST visitation
(#16246) (overlookmotel)
- 42e9dcc linter: Fix docs for `consistent-type-specifier-style` and
`consistent-type-definitions` rules. (#16253) (connorshea)
- 505ceb1 linter: Fix the radix rule docs to correctly render as a
string-only config option (#16248) (connorshea)
- 135cee6 oxlint/lsp: Run diagnostics after delayed worker
initialization (#16244) (Sysix)
- 78aa294 linter/plugins: Deep freeze options (#16218) (overlookmotel)
- 123bffe linter/plugins: Handle zero-token files in
`SourceCode#getLastToken()` (#16184) (Arsh)
- 55fcfba linter: Add considerDefaultExhaustiveForUnions option to
switch-exhaustiveness-check (#16204) (camc314)
- 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)
- 75249e0 linter/plugins: Handle non-UTF8 file paths (#16157)
(overlookmotel)
- 86fa667 linter/plugins: Improve type def for `RuleMeta`
`defaultOptions` property (#16159) (overlookmotel)
- d2b7dcb tsgolint: Improve lsp diagnostic when linting fails (#16115)
(camc314)
- 8810bd5 linter: Prevent conflicting fixes between
prefer_number_properties and prefer_numeric_literals (#16113) (camc314)
- 91eb3f2 ast/estree: Convert `TSImportType` `argument` field to
`Literal` (#16109) (overlookmotel)
- 2da2fc1 linter: Fix prefer-string-raw fixer producing invalid JS for
non-ASCII strings (#16102) (camc314)
- f5cb601 linter/plugins: Perform length checks before continuing loops
(#16025) (Arsh)
- e1c21ca linter/jsx-key: Implement missing options (#15731) (camc314)

### ⚡ Performance

- 02bdf90 linter/plugins, napi/parser: Reuse arrays in visitor keys
(#16294) (overlookmotel)
- 714a91a linter/no-restricted-types: Skip running if config is empty
(#16278) (camc314)
- d3a34f8 linter/plugins: Optimize `getTokens()` and other methods
(#16188) (Arsh)
- c05db06 linter/plugins: Speed up `initTokensWithComments` (#16117)
(overlookmotel)
- 4846886 linter/plugins: Optimize merging of `tokens` and `comments`
(#16071) (Arsh)
- e232d35 linter/plugins: Recycle objects in token methods (#16068)
(overlookmotel)

### 📚 Documentation

- e928732 linter/plugins: Fix JSDoc comment (#16295) (overlookmotel)
- d4a1581 linter: Add a link to MDN for the no-proto rule. (#16213)
(connorshea)
- be36e36 linter/plugins: Fix JSDoc comment for `loadPluginImpl`
(#16211) (overlookmotel)
- 6d6e9c9 linter: Improve the docs for oxc/no-async-await rule. (#16181)
(connorshea)
- 0e1d38a linter/plugins: Clarify JSDoc comment for `getTokensBetween`
(#16070) (overlookmotel)
- 3ee22b2 linter/plugins: Fix JSDoc comments for tokens methods (#16063)
(overlookmotel)
- f257b5c linter/plugins: Clarify JSDoc comments for tokens methods
(#16062) (overlookmotel)

# Oxfmt

### 🚀 Features

- 116e0d1 website: Auto generate oxfmt docs (#15985) (Boshen)
- 862bdf7 oxfmt: Detect unsupported experimental options (take2)
(#16088) (leaysgur)

### 🐛 Bug Fixes

- 75ac90c formatter: Comments in call arguments should be printed as-is
(#16327) (Dunqing)
- fd77568 formatter: Don't wrap parenthesis for yield expression if
there is no leading comment (#16326) (Dunqing)
- 8ccfb06 formatter: Should indent class extends and interface heritage
when it is a member expression without type arguments (#16323) (Dunqing)
- 0faa978 oxfmt: JsFormatEmbeddedCb types (#16324) (Brooooooklyn)
- 2b8f982 formatter: JSX text wrapping incorrect (#16318) (Dunqing)
- f3ffebe formatter: Should indent variable declarator if there is a
trailing comment (#16243) (Dunqing)
- 31d3186 formatter: Incorrect handling of directives with comments
(#16235) (Dunqing)
- ac8fcaf formatter: Add parens for new: private field expr (#16312)
(leaysgur)
- 653fa6c oxlint/oxfmt/lsp: Tell client the real tool name & version
(#16212) (Sysix)
- 380a0af formatter: Incorrect printing of class binding trailing
comments (#16234) (Dunqing)
- 0ca8154 formatter: Incorrect printing of trailing comments of callee
when the call arguments are empty (#16232) (Dunqing)
- ac3a92e formatter: Print comment in ternary jsx (#16224) (leaysgur)
- e3a7388 formatter: Fix parens for static member chain (#16229)
(leaysgur)
- 55334c3 formatter: Incorrect printing of dangling comments in the if
statement (#16228) (Dunqing)
- 9096a63 formatter: Correct printing of trailing comments after the
semicolon for class properties (#16225) (Dunqing)
- 75fd568 formatter: Inconsistent union type output between two runs
(#16222) (Dunqing)
- cd70484 formatter: Should not add a hard space before function body
(#16221) (Dunqing)
- 9097167 formatter: Incorrect printing of union types with comments
(#16205) (Dunqing)
- 79b78b3 formatter: Template literal element should not be indented
(#16189) (Dunqing)
- 48d6ed2 formatter: Nested assignment pattern should not expand outer
object pattern (#16160) (Dunqing)
- 8f4137d formatter: Output is incorrect when using comments inside JSX
which is the right hand-side of `LogicalExpression` (#16156) (Dunqing)
- 85c3a10 formatter/sort_imports: Handle internal prefixes correctly
(#16128) (leaysgur)
- 38b7bc4 oxfmt: Make no-napi build work (#16134) (leaysgur)
- 889d2e7 formatter: Handle poor layout for grouped call arguments
(#16093) (Dunqing)
- 14b0a6a oxfmt: Fix JS-ish file detection (#16092) (leaysgur)
- 9706a1a oxfmt: Ignore unsupported options (#16085) (leaysgur)
taearls pushed a commit to taearls/oxc that referenced this pull request Dec 11, 2025
…o-duplicates (oxc-project#16275)

- [x] Update `from_configuration` method in `no_duplicates.rs` to support both `prefer-inline` (kebab-case) and `preferInline` (camelCase) option names
- [x] Keep camelCase as the primary serde rename, add kebab-case as an alias
- [x] Use `DefaultRuleConfig` pattern for cleaner deserialization (matching `switch_exhaustiveness_check`)
- [x] Add `Deserialize` import instead of using fully qualified path
- [x] Add tests for both `prefer-inline` and `preferInline` casing
- [x] Run existing tests to ensure backward compatibility
- [x] Run linter and formatter to ensure code quality

- Fixes oxc-project#16266

<!-- START COPILOT CODING AGENT SUFFIX -->

<details>

<summary>Original prompt</summary>

>
> ----
>
> *This section details on the original issue you should resolve*
>
> <issue_title>linter: "preferInline" option is incorrectly-cased for import/no-duplicates</issue_title>
> <issue_description>### What version of Oxlint are you using?
>
> 1.30.0
>
> ### What command did you run?
>
> _No response_
>
> ### What does your `.oxlintrc.json` config file look like?
>
> ```jsonc
> // your config here
> ```
>
>
> ### What happened?
>
> See here for the original rule's config option: https://github.com/import-js/eslint-plugin-import/blob/01c9eb04331d2efa8d63f2d7f4bfec3bc44c94f3/docs/rules/no-duplicates.md#inline-type-imports
>
> The rule's config option _should_ be `prefer-inline`, but it is cased as `preferInline` in the docs _and_ the code.
>
> As a result, we probably need to update this rule to support both `preferInline` and `prefer-inline` simultaneously, to match the behavior of the original rule for users migrating over from ESLint, and also to maintain compatibility for users who set up the rule with the `preferInline` casing. I think the one shown in the docs should use `prefer-inline`, probably.
>
> See the oxlint implementation here, which uses `preferInline` as the casing: https://github.com/oxc-project/oxc/blob/18274aaff0c9168faaff61c36ca927a2612f7b79/crates/oxc_linter/src/rules/import/no_duplicates.rs#L96</issue_description>
>
> ## Comments on the Issue (you are @copilot in this section)
>
> <comments>
> </comments>
>

</details>

- Fixes oxc-project#16266

<!-- START COPILOT CODING AGENT TIPS -->
---

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more [Copilot coding agent tips](https://gh.io/copilot-coding-agent-tips) in the docs.
taearls pushed a commit to taearls/oxc that referenced this pull request Dec 11, 2025
# Oxlint

### 🚀 Features

- 5da1a63 linter/plugins: Introduce `RuleTester` (oxc-project#16206)
(overlookmotel)
- 41129ab linter/plugins: Implement `languageOptions.parser` (oxc-project#16292)
(overlookmotel)
- 4b24825 linter: Implement no-restricted-types rule (oxc-project#16276) (camc314)
- 7150209 linter/plugins: Implement `SourceCode#getNodeByRangeIndex`
(oxc-project#16256) (overlookmotel)
- 3226864 linter/plugins: Implement options merging (oxc-project#16217)
(overlookmotel)
- cbb108a linter/plugins: Support default options (oxc-project#16170)
(overlookmotel)
- 04a3a66 linter/plugins: Implement
`SourceCode#getTokenOrCommentAfter()` (oxc-project#16045) (Arsh)
- 68b63d9 linter/plugins: Implement
`SourceCode#getTokenOrCommentBefore()` (oxc-project#16044) (Arsh)
- 04d9454 linter/plugins: Implement `SourceCode#getTokenByRangeStart()`
(oxc-project#16043) (Arsh)
- 7b8d578 linter/plugins: Implement `SourceCode#getTokensBetween()`
(oxc-project#16034) (Arsh)
- 79c242f linter/plugins: Implement `SourceCode#getLastTokensBetween()`
(oxc-project#16033) (Arsh)
- 1772078 linter/plugins: Implement `SourceCode#getFirstTokenBetween()`
(oxc-project#16032) (Arsh)
- 21bb86d linter/plugins: Implement `SourceCode#getFirstTokensBetween()`
(oxc-project#16019) (Arsh)
- 78f74b1 linter/plugins: Implement `SourceCode#getLastTokenBetween()`
(oxc-project#16008) (Arsh)
- df0b948 linter/plugins: Implement `SourceCode#getLastToken()` (oxc-project#16003)
(Arsh)

### 🐛 Bug Fixes

- cf249f5 linter/plugins: Fix message interpolation (oxc-project#16300)
(overlookmotel)
- 9149a26 linter/plugins, napi/parser: Deep freeze visitor keys (oxc-project#16293)
(overlookmotel)
- 71271ee linter: Fix `typescript/no-empty-interface` config option
casing. (oxc-project#16282) (connorshea)
- 653fa6c oxlint/oxfmt/lsp: Tell client the real tool name & version
(oxc-project#16212) (Sysix)
- 385e13e linter: Support both prefer-inline and preferInline for
import/no-duplicates (oxc-project#16275) (copilot-swe-agent)
- efc08d3 linter: Fix config docs for no-return-assign and unicode-bom
rules. (oxc-project#16260) (connorshea)
- dc96d3f linter: Correct docs to use string option for import/first
rule. (oxc-project#16264) (connorshea)
- 15ce491 linter: Correct the default config options for the
switch-exhaustiveness-check rule. (oxc-project#16268) (connorshea)
- 13f985c linter: Fix casing for unicorn/explicit-length-check config
option. (oxc-project#16269) (connorshea)
- 0df1901 linter/plugins: Reset state after error during AST visitation
(oxc-project#16246) (overlookmotel)
- 42e9dcc linter: Fix docs for `consistent-type-specifier-style` and
`consistent-type-definitions` rules. (oxc-project#16253) (connorshea)
- 505ceb1 linter: Fix the radix rule docs to correctly render as a
string-only config option (oxc-project#16248) (connorshea)
- 135cee6 oxlint/lsp: Run diagnostics after delayed worker
initialization (oxc-project#16244) (Sysix)
- 78aa294 linter/plugins: Deep freeze options (oxc-project#16218) (overlookmotel)
- 123bffe linter/plugins: Handle zero-token files in
`SourceCode#getLastToken()` (oxc-project#16184) (Arsh)
- 55fcfba linter: Add considerDefaultExhaustiveForUnions option to
switch-exhaustiveness-check (oxc-project#16204) (camc314)
- 9cc20a1 minifier: Avoid merging side effectful expressions to next
assignment statement if the side effect may change the left hand side
reference (oxc-project#16165) (sapphi-red)
- 75249e0 linter/plugins: Handle non-UTF8 file paths (oxc-project#16157)
(overlookmotel)
- 86fa667 linter/plugins: Improve type def for `RuleMeta`
`defaultOptions` property (oxc-project#16159) (overlookmotel)
- d2b7dcb tsgolint: Improve lsp diagnostic when linting fails (oxc-project#16115)
(camc314)
- 8810bd5 linter: Prevent conflicting fixes between
prefer_number_properties and prefer_numeric_literals (oxc-project#16113) (camc314)
- 91eb3f2 ast/estree: Convert `TSImportType` `argument` field to
`Literal` (oxc-project#16109) (overlookmotel)
- 2da2fc1 linter: Fix prefer-string-raw fixer producing invalid JS for
non-ASCII strings (oxc-project#16102) (camc314)
- f5cb601 linter/plugins: Perform length checks before continuing loops
(oxc-project#16025) (Arsh)
- e1c21ca linter/jsx-key: Implement missing options (oxc-project#15731) (camc314)

### ⚡ Performance

- 02bdf90 linter/plugins, napi/parser: Reuse arrays in visitor keys
(oxc-project#16294) (overlookmotel)
- 714a91a linter/no-restricted-types: Skip running if config is empty
(oxc-project#16278) (camc314)
- d3a34f8 linter/plugins: Optimize `getTokens()` and other methods
(oxc-project#16188) (Arsh)
- c05db06 linter/plugins: Speed up `initTokensWithComments` (oxc-project#16117)
(overlookmotel)
- 4846886 linter/plugins: Optimize merging of `tokens` and `comments`
(oxc-project#16071) (Arsh)
- e232d35 linter/plugins: Recycle objects in token methods (oxc-project#16068)
(overlookmotel)

### 📚 Documentation

- e928732 linter/plugins: Fix JSDoc comment (oxc-project#16295) (overlookmotel)
- d4a1581 linter: Add a link to MDN for the no-proto rule. (oxc-project#16213)
(connorshea)
- be36e36 linter/plugins: Fix JSDoc comment for `loadPluginImpl`
(oxc-project#16211) (overlookmotel)
- 6d6e9c9 linter: Improve the docs for oxc/no-async-await rule. (oxc-project#16181)
(connorshea)
- 0e1d38a linter/plugins: Clarify JSDoc comment for `getTokensBetween`
(oxc-project#16070) (overlookmotel)
- 3ee22b2 linter/plugins: Fix JSDoc comments for tokens methods (oxc-project#16063)
(overlookmotel)
- f257b5c linter/plugins: Clarify JSDoc comments for tokens methods
(oxc-project#16062) (overlookmotel)

# Oxfmt

### 🚀 Features

- 116e0d1 website: Auto generate oxfmt docs (oxc-project#15985) (Boshen)
- 862bdf7 oxfmt: Detect unsupported experimental options (take2)
(oxc-project#16088) (leaysgur)

### 🐛 Bug Fixes

- 75ac90c formatter: Comments in call arguments should be printed as-is
(oxc-project#16327) (Dunqing)
- fd77568 formatter: Don't wrap parenthesis for yield expression if
there is no leading comment (oxc-project#16326) (Dunqing)
- 8ccfb06 formatter: Should indent class extends and interface heritage
when it is a member expression without type arguments (oxc-project#16323) (Dunqing)
- 0faa978 oxfmt: JsFormatEmbeddedCb types (oxc-project#16324) (Brooooooklyn)
- 2b8f982 formatter: JSX text wrapping incorrect (oxc-project#16318) (Dunqing)
- f3ffebe formatter: Should indent variable declarator if there is a
trailing comment (oxc-project#16243) (Dunqing)
- 31d3186 formatter: Incorrect handling of directives with comments
(oxc-project#16235) (Dunqing)
- ac8fcaf formatter: Add parens for new: private field expr (oxc-project#16312)
(leaysgur)
- 653fa6c oxlint/oxfmt/lsp: Tell client the real tool name & version
(oxc-project#16212) (Sysix)
- 380a0af formatter: Incorrect printing of class binding trailing
comments (oxc-project#16234) (Dunqing)
- 0ca8154 formatter: Incorrect printing of trailing comments of callee
when the call arguments are empty (oxc-project#16232) (Dunqing)
- ac3a92e formatter: Print comment in ternary jsx (oxc-project#16224) (leaysgur)
- e3a7388 formatter: Fix parens for static member chain (oxc-project#16229)
(leaysgur)
- 55334c3 formatter: Incorrect printing of dangling comments in the if
statement (oxc-project#16228) (Dunqing)
- 9096a63 formatter: Correct printing of trailing comments after the
semicolon for class properties (oxc-project#16225) (Dunqing)
- 75fd568 formatter: Inconsistent union type output between two runs
(oxc-project#16222) (Dunqing)
- cd70484 formatter: Should not add a hard space before function body
(oxc-project#16221) (Dunqing)
- 9097167 formatter: Incorrect printing of union types with comments
(oxc-project#16205) (Dunqing)
- 79b78b3 formatter: Template literal element should not be indented
(oxc-project#16189) (Dunqing)
- 48d6ed2 formatter: Nested assignment pattern should not expand outer
object pattern (oxc-project#16160) (Dunqing)
- 8f4137d formatter: Output is incorrect when using comments inside JSX
which is the right hand-side of `LogicalExpression` (oxc-project#16156) (Dunqing)
- 85c3a10 formatter/sort_imports: Handle internal prefixes correctly
(oxc-project#16128) (leaysgur)
- 38b7bc4 oxfmt: Make no-napi build work (oxc-project#16134) (leaysgur)
- 889d2e7 formatter: Handle poor layout for grouped call arguments
(oxc-project#16093) (Dunqing)
- 14b0a6a oxfmt: Fix JS-ish file detection (oxc-project#16092) (leaysgur)
- 9706a1a oxfmt: Ignore unsupported options (oxc-project#16085) (leaysgur)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-linter Area - Linter C-bug Category - Bug

Projects

None yet

Development

Successfully merging this pull request may close these issues.

linter: "preferInline" option is incorrectly-cased for import/no-duplicates

3 participants