docs(linter): Add config option docs for unicorn/filename-case rule.#16280
docs(linter): Add config option docs for unicorn/filename-case rule.#16280graphite-app[bot] merged 1 commit intomainfrom
unicorn/filename-case rule.#16280Conversation
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
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. |
There was a problem hiding this comment.
Pull request overview
This pull request adds configuration documentation for the unicorn/filename-case linter rule by introducing schema-specific structs that match the end-user configuration format. The PR refactors the rule implementation to separate the internal configuration structure from the documentation schema, adds additional test cases including automatic exemption of index.* files, and improves error messages to use standardized case naming (e.g., "kebab-case" instead of "kebab case").
Key changes:
- Adds
FilenameCaseConfigJson,FilenameCaseConfigJsonCases, andFilenameCaseJsonOptionsstructs for schema documentation - Updates error messages to use standardized case names (kebab-case, camelCase, snake_case, PascalCase)
- Automatically ignores
index.*files to prevent framework-specific filename issues - Removes the rule from the configuration documentation exceptions list
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
crates/oxc_linter/src/rules/unicorn/filename_case.rs |
Adds schema documentation structs, refactors configuration handling, updates error messages to use standardized case names, and adds automatic index.* file exemption |
crates/oxc_linter/src/snapshots/unicorn_filename_case.snap |
Updates test snapshots to reflect new standardized case name format in error messages |
crates/oxc_linter/tests/rule_configuration_documentation_test.rs |
Removes unicorn/filename-case from the exceptions list as it now has proper schema documentation |
Comments suppressed due to low confidence (1)
crates/oxc_linter/src/rules/unicorn/filename_case.rs:163
- [nitpick] The documentation header uses
kebabCasebut the actual case style name should bekebab-case(with a hyphen) to match the standardized naming used in error messages (lines 265, 267) and be consistent with how the case is commonly written. This affects lines 163, 169, 175, and 181.
/// #### `kebabCase`
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
CodSpeed Performance ReportMerging #16280 will not alter performanceComparing Summary
Footnotes
|
2c66b80 to
76a5dc8
Compare
Merge activity
|
#16280) Part of #14743. - Refactors the FilenameCase rule code - Adds some additional tests for the rule. - Matches the original rule by ignoring `index.js`, `index.ts`, etc automatically, to avoid problems with the rule causing invalid filenames in various frameworks. - Adds schema-specific structs to match the actual config object an end-user will set up. I didn't want to refactor the entire rule to match the end-user config object for now, as that seemed like it'd be really difficult to get working. To review the changeset it'd be best to go through it commit-by-commit. Generated docs: ```md ## Configuration This rule accepts a configuration object with the following properties: ### case type: `"kebabCase" | "camelCase" | "snakeCase" | "pascalCase"` default: `"kebabCase"` The case style to enforce for filenames. You can set the `case` option like this: \```json "unicorn/filename-case": [ "error", { "case": "kebabCase" } ] \``` ### cases type: `object` default: `{"kebabCase":true, "camelCase":false, "snakeCase":false, "pascalCase":false}` The case style(s) to allow/enforce for filenames. `true` means the case style is allowed, `false` means it is banned. You can set the `cases` option like this: \```json "unicorn/filename-case": [ "error", { "cases": { "camelCase": true, "pascalCase": true } } ] \``` #### cases.camelCase type: `boolean` default: `false` Whether camel case is allowed, e.g. `someFileName.js`. #### cases.kebabCase type: `boolean` default: `true` Whether kebab case is allowed, e.g. `some-file-name.js`. #### cases.pascalCase type: `boolean` default: `false` Whether pascal case is allowed, e.g. `SomeFileName.js`. #### cases.snakeCase type: `boolean` default: `false` Whether snake case is allowed, e.g. `some_file_name.js`. ### ignore type: `[ string, null ]` A regular expression pattern for filenames to ignore. You can set the `ignore` option like this: \```json "unicorn/filename-case": [ "error", { "ignore": "^foo.*$" } ] \``` ### multipleFileExtensions type: `boolean` default: `true` Whether to treat additional, `.`-separated parts of a filename as parts of the extension rather than parts of the filename. ```
76a5dc8 to
c0766df
Compare
# Oxlint ### 🚀 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-style` automatically (#16252) (Hamir Mahal) - 7584938 linter/plugins: Add ESLint compat mode to `RuleTester` (#16538) (overlookmotel) - b38c2d0 linter/plugins: Add `SourceCode#lineStartIndices` getter (#16510) (overlookmotel) - ba93ffc linter/plugins: Add `SourceCode#tokensAndComments` getter (#16503) (overlookmotel) - d2ca540 linter/plugins: Add `SourceCode#isESTree` property (#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: `RuleTester` parser catch fatal errors (#16558) (overlookmotel) - ab4deb0 linter/plugins: Improve safety of options merging (#16549) (overlookmotel) - a58c76a linter: Fix the `react/jsx-fragments` rule 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_file` and `setup_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 `null` as invalid settings for `workspace/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 `expect` when sending diagnostics (#16341) (camc314) - 114665d lsp: Watch for files when workspace folder is added & `workspace/configuration` is 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 `LinterCodeAction` instead of the complete `DiagnosticReport` (#16516) (Sysix) - 0ca9754 lsp: Avoid `Uri` to `String` and back to `Uri` conversion (#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 `messageId` field from `DiagnosticReport` before sending to Rust (#16442) (overlookmotel) - 5017db8 linter/plugins: Reduce calls to `Path::to_string_lossy` (#16429) (overlookmotel) - 194e357 linter: Use `SmallVec` for 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-alt` configuration option names. (#16552) (connorshea) - c0766df linter: Add config option docs for `unicorn/filename-case` rule. (#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 `SourceCode` properties (#16497) (overlookmotel) - 467cc1a linter/plugins: Improve comment on error branch (#16464) (overlookmotel) - 041b119 linter: Add config option docs to `jest/consistent-test-it` rule. (#16286) (connorshea) ### 🛡️ Security - d90ef9f deps: Update dependency rolldown to v1.0.0-beta.53 (#16428) (renovate[bot]) # Oxfmt ### 🚀 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 `\r` to `\n` in string and add a debug assertion to ensure that there is no `\r` in the text (#16531) (Dunqing) - af76b0e oxfmt: Support formatting HTML, YAML, GraphQL, Handlerbars, 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_formatter` method by `SourceType` (#16417) (leaysgur) - 0867d2f oxfmt: Set up JS `formatFile()` function for Rust via napi (#16415) (leaysgur) - b6feb66 oxfmt: Rename `embedded.ts` with preparing `formatFile()` 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 `--write` flag used (#16376) (leaysgur) ### 🐛 Bug Fixes - 40b0134 formatter: Incorrect formatting of `useImperativeHandle` hook (#16533) (Dunqing) - 75393e7 formatter: Incorrect handling of `CRLF` for 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 - 6f16a8f formatter: Avoid using an indent with a empty content (#16474) (Dunqing) - 201c98f formatter: Early return when no comments need to be printed (#16432) (Dunqing) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
# Oxlint ### 🚀 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-style` automatically (#16252) (Hamir Mahal) - 7584938 linter/plugins: Add ESLint compat mode to `RuleTester` (#16538) (overlookmotel) - b38c2d0 linter/plugins: Add `SourceCode#lineStartIndices` getter (#16510) (overlookmotel) - ba93ffc linter/plugins: Add `SourceCode#tokensAndComments` getter (#16503) (overlookmotel) - d2ca540 linter/plugins: Add `SourceCode#isESTree` property (#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: `RuleTester` parser catch fatal errors (#16558) (overlookmotel) - ab4deb0 linter/plugins: Improve safety of options merging (#16549) (overlookmotel) - a58c76a linter: Fix the `react/jsx-fragments` rule 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_file` and `setup_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 `null` as invalid settings for `workspace/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 `expect` when sending diagnostics (#16341) (camc314) - 114665d lsp: Watch for files when workspace folder is added & `workspace/configuration` is 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 `LinterCodeAction` instead of the complete `DiagnosticReport` (#16516) (Sysix) - 0ca9754 lsp: Avoid `Uri` to `String` and back to `Uri` conversion (#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 `messageId` field from `DiagnosticReport` before sending to Rust (#16442) (overlookmotel) - 5017db8 linter/plugins: Reduce calls to `Path::to_string_lossy` (#16429) (overlookmotel) - 194e357 linter: Use `SmallVec` for 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-alt` configuration option names. (#16552) (connorshea) - c0766df linter: Add config option docs for `unicorn/filename-case` rule. (#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 `SourceCode` properties (#16497) (overlookmotel) - 467cc1a linter/plugins: Improve comment on error branch (#16464) (overlookmotel) - 041b119 linter: Add config option docs to `jest/consistent-test-it` rule. (#16286) (connorshea) ### 🛡️ Security - d90ef9f deps: Update dependency rolldown to v1.0.0-beta.53 (#16428) (renovate[bot]) # Oxfmt ### 🚀 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 `\r` to `\n` in string and add a debug assertion to ensure that there is no `\r` in the text (#16531) (Dunqing) - af76b0e oxfmt: Support formatting HTML, YAML, GraphQL, Handlerbars, 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_formatter` method by `SourceType` (#16417) (leaysgur) - 0867d2f oxfmt: Set up JS `formatFile()` function for Rust via napi (#16415) (leaysgur) - b6feb66 oxfmt: Rename `embedded.ts` with preparing `formatFile()` 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 `--write` flag used (#16376) (leaysgur) ### 🐛 Bug Fixes - 40b0134 formatter: Incorrect formatting of `useImperativeHandle` hook (#16533) (Dunqing) - 75393e7 formatter: Incorrect handling of `CRLF` for 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 - 6f16a8f formatter: Avoid using an indent with a empty content (#16474) (Dunqing) - 201c98f formatter: Early return when no comments need to be printed (#16432) (Dunqing) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
oxc-project#16280) Part of oxc-project#14743. - Refactors the FilenameCase rule code - Adds some additional tests for the rule. - Matches the original rule by ignoring `index.js`, `index.ts`, etc automatically, to avoid problems with the rule causing invalid filenames in various frameworks. - Adds schema-specific structs to match the actual config object an end-user will set up. I didn't want to refactor the entire rule to match the end-user config object for now, as that seemed like it'd be really difficult to get working. To review the changeset it'd be best to go through it commit-by-commit. Generated docs: ```md ## Configuration This rule accepts a configuration object with the following properties: ### case type: `"kebabCase" | "camelCase" | "snakeCase" | "pascalCase"` default: `"kebabCase"` The case style to enforce for filenames. You can set the `case` option like this: \```json "unicorn/filename-case": [ "error", { "case": "kebabCase" } ] \``` ### cases type: `object` default: `{"kebabCase":true, "camelCase":false, "snakeCase":false, "pascalCase":false}` The case style(s) to allow/enforce for filenames. `true` means the case style is allowed, `false` means it is banned. You can set the `cases` option like this: \```json "unicorn/filename-case": [ "error", { "cases": { "camelCase": true, "pascalCase": true } } ] \``` #### cases.camelCase type: `boolean` default: `false` Whether camel case is allowed, e.g. `someFileName.js`. #### cases.kebabCase type: `boolean` default: `true` Whether kebab case is allowed, e.g. `some-file-name.js`. #### cases.pascalCase type: `boolean` default: `false` Whether pascal case is allowed, e.g. `SomeFileName.js`. #### cases.snakeCase type: `boolean` default: `false` Whether snake case is allowed, e.g. `some_file_name.js`. ### ignore type: `[ string, null ]` A regular expression pattern for filenames to ignore. You can set the `ignore` option like this: \```json "unicorn/filename-case": [ "error", { "ignore": "^foo.*$" } ] \``` ### multipleFileExtensions type: `boolean` default: `true` Whether to treat additional, `.`-separated parts of a filename as parts of the extension rather than parts of the filename. ```
# Oxlint ### 🚀 Features - 5c62c16 linter/plugins: Allow JS plugins to access `globals` (oxc-project#16512) (Arsh) - ba7bd51 linter: Implement no-useless-return rule (oxc-project#16388) (FMP1783) - fa605df linter: Fix `arrow-body-style` automatically (oxc-project#16252) (Hamir Mahal) - 7584938 linter/plugins: Add ESLint compat mode to `RuleTester` (oxc-project#16538) (overlookmotel) - b38c2d0 linter/plugins: Add `SourceCode#lineStartIndices` getter (oxc-project#16510) (overlookmotel) - ba93ffc linter/plugins: Add `SourceCode#tokensAndComments` getter (oxc-project#16503) (overlookmotel) - d2ca540 linter/plugins: Add `SourceCode#isESTree` property (oxc-project#16499) (overlookmotel) - 9001234 linter: Add fix support for tsgolint diagnostics (oxc-project#16344) (camc314) - 2d6bb85 editors: Toggle client after vscode config changing (oxc-project#16162) (Liang Mi) - 0ec454c linter/plugins: Merge default options into options (oxc-project#16358) (overlookmotel) ### 🐛 Bug Fixes - a806d74 linter: Use import type for ESTree in visitor.d.ts (oxc-project#16472) (camc314) - 8933c84 linter: Fix jest/expect-expect rule docs. (oxc-project#16550) (connorshea) - 1c08879 linter: Fix false positive in no-invalid-fetch-options for conditional expressions (oxc-project#16570) (camc314) - 1a69b06 linter: Junit support for multiple files/errors/diagnostics (oxc-project#16568) (Shrey Sudhir) - a7d435b linter/sort-keys: Preserve multi-line formatting in autofix (oxc-project#16563) (camc314) - fd84dcc linter/plugins: `RuleTester` parser catch fatal errors (oxc-project#16558) (overlookmotel) - ab4deb0 linter/plugins: Improve safety of options merging (oxc-project#16549) (overlookmotel) - a58c76a linter: Fix the `react/jsx-fragments` rule config to take a string argument (oxc-project#16175) (connorshea) - f7751cc linter/plugins: Fix TS types for `RuleTester` (oxc-project#16546) (overlookmotel) - 6d33320 linter/plugins: Prevent user modifying the default config (oxc-project#16545) (overlookmotel) - b4483c5 linter/plugins: Add config support skeleton to `RuleTester` (oxc-project#16537) (overlookmotel) - 3a49158 linter/plugins: Improve TS types for tokens (oxc-project#16502) (overlookmotel) - 0c14531 oxlint/lsp: Revalidate all known files after internal restart (oxc-project#16407) (Sysix) - 2d3217e linter/plugins: Remove panics from `lint_file` and `setup_configs` (oxc-project#16453) (overlookmotel) - 655341b linter/oxc: Not emit error when the threshold is zero and we haven't detected a barrel file (oxc-project#16455) (Said Atrahouch) - b9f359f linter/no-var: Expand fix span to prevent conflicts with other rules (oxc-project#16445) (camc314) - c6778f3 linter: Preserve original quote style in no-hex-escape fixer (oxc-project#16410) (camc314) - 3ad913b linter: Improve rule docs page autofix description (oxc-project#16281) (Hamir Mahal) - 0b7e00c linter: Handle keyword unary expressions in yoda rule fix (oxc-project#16402) (camc314) - 5fd3096 lsp: Skip (un)registering file watcher when not dynamic watchers are supported (oxc-project#16406) (Sysix) - 804144f lsp: Respect `null` as invalid settings for `workspace/didChangeConfiguration` (oxc-project#16361) (Sysix) - 723a7e5 linter: Prevent invalid BigInt literal fix for exponential notation (oxc-project#16401) (camc314) - 2589fb1 linter: Fix prefer_expect_resolves fixer for member expressions (oxc-project#16393) (camc314) - 428c7cd linter: Wrap logical expressions in parentheses when fixing no-extra-boolean-cast (oxc-project#16363) (camc314) - 3903567 linter: Skip prefer-string-raw in type annotations and .d.ts files (oxc-project#16382) (camc314) - d490daa linter/func-names: Use centralized reserved keyword check and fix ancestor traversal (oxc-project#16362) (camc314) - d846c53 tsgolint: Use `expect` when sending diagnostics (oxc-project#16341) (camc314) - 114665d lsp: Watch for files when workspace folder is added & `workspace/configuration` is not supported (oxc-project#16307) (Sysix) - f5d0ebb linter/func-names: Avoid suggesting reserved keywords as function names (oxc-project#16352) (camc314) - d268135 linter/no-console-spaces: Preserve escape sequences in fixer output (oxc-project#16349) (camc314) - b02c21a linter/valid-title: Preserve escape sequences in fixer output (oxc-project#16348) (camc314) - 2373b76 linter/no-untyped-mock-factory: Fix fixer producing invalid syntax when newline exists after opening paren (oxc-project#16351) (camc314) ### ⚡ Performance - 67cfa58 lsp: Avoid some clones (oxc-project#16519) (Sysix) - 2a09665 oxlint/lsp: Store only `LinterCodeAction` instead of the complete `DiagnosticReport` (oxc-project#16516) (Sysix) - 0ca9754 lsp: Avoid `Uri` to `String` and back to `Uri` conversion (oxc-project#16470) (Sysix) - 2736636 lsp: Avoid cloning when revalidating diagnostics (oxc-project#16469) (Sysix) - 793b989 linter/plugins: Move result-processing work off main JS thread (oxc-project#16456) (overlookmotel) - 44dff7b linter/plugins: Skip serialization overhead when no errors (oxc-project#16443) (overlookmotel) - 1aa2409 linter/plugins: Do not remove `messageId` field from `DiagnosticReport` before sending to Rust (oxc-project#16442) (overlookmotel) - 5017db8 linter/plugins: Reduce calls to `Path::to_string_lossy` (oxc-project#16429) (overlookmotel) - 194e357 linter: Use `SmallVec` for rule options (oxc-project#16400) (Copilot) - e31b2bd linter: Only clone config if required (oxc-project#16350) (overlookmotel) - 3026086 linter: Avoid cloning rule options (oxc-project#16338) (overlookmotel) ### 📚 Documentation - fef77af linter: Fix `jsx-a11y/img-redundant-alt` configuration option names. (oxc-project#16552) (connorshea) - c0766df linter: Add config option docs for `unicorn/filename-case` rule. (oxc-project#16280) (connorshea) - e24aabd linter/plugins: Correct comment (oxc-project#16559) (overlookmotel) - 514c724 linter: Fix the name of the IIFEs config option in eslint/max-lines-per-function (oxc-project#16554) (connorshea) - 4d94438 linter/rules: Correct arrow body style options in documentation (oxc-project#16509) (GRK) - 6bac4ec linter: Pull configuration struct doc comment when rendering config docs (oxc-project#16288) (connorshea) - 8c85e08 linter/plugins: Add TODO comment (oxc-project#16511) (overlookmotel) - a9b9298 linter/plugins: Add JSDoc comments to `SourceCode` properties (oxc-project#16497) (overlookmotel) - 467cc1a linter/plugins: Improve comment on error branch (oxc-project#16464) (overlookmotel) - 041b119 linter: Add config option docs to `jest/consistent-test-it` rule. (oxc-project#16286) (connorshea) ### 🛡️ Security - d90ef9f deps: Update dependency rolldown to v1.0.0-beta.53 (oxc-project#16428) (renovate[bot]) # Oxfmt ### 🚀 Features - 3184f17 oxfmt: Pass filepath field to prettier formatting (oxc-project#16591) (Yuji Sugiura) - 7bb3304 oxfmt: Pass populated config to prettier formatting (oxc-project#16584) (leaysgur) - 69f84d2 oxfmt: Pass raw config to prettier formatting (oxc-project#16582) (leaysgur) - a83a2ec oxfmt: Expose `setupConfig(configJSON: string)` napi callback (oxc-project#16579) (leaysgur) - 930533f formatter: Convert single `\r` to `\n` in string and add a debug assertion to ensure that there is no `\r` in the text (oxc-project#16531) (Dunqing) - af76b0e oxfmt: Support formatting HTML, YAML, GraphQL, Handlerbars, Markdown, CSS files (oxc-project#16524) (leaysgur) - 66b64ef oxfmt: Support formatting JSON files (oxc-project#16523) (leaysgur) - 4767926 oxfmt: Prepare non-js/ts file support with prettier (oxc-project#16480) (leaysgur) - 2b4ce5d oxfmt: Use dedicated `format_by_xxx_formatter` method by `SourceType` (oxc-project#16417) (leaysgur) - 0867d2f oxfmt: Set up JS `formatFile()` function for Rust via napi (oxc-project#16415) (leaysgur) - b6feb66 oxfmt: Rename `embedded.ts` with preparing `formatFile()` function (oxc-project#16414) (leaysgur) - 80e6999 formatter: Add debug assertion to ensure that there is no empty content is passed in (oxc-project#16475) (Dunqing) - 7374856 formatter/sort-imports: Support `options.internalPattern` (oxc-project#16372) (leaysgur) - dd2cb62 oxfmt: Not error on explicit `--write` flag used (oxc-project#16376) (leaysgur) ### 🐛 Bug Fixes - 40b0134 formatter: Incorrect formatting of `useImperativeHandle` hook (oxc-project#16533) (Dunqing) - 75393e7 formatter: Incorrect handling of `CRLF` for multiline block comment (oxc-project#16528) (Dunqing) - ee0756b formatter: JSX text wrapping incorrect 2 (oxc-project#16320) (Dunqing) - 36308b8 formatter: Fix indent for new expression with type cast (oxc-project#16380) (leaysgur) ### ⚡ Performance - 6f16a8f formatter: Avoid using an indent with a empty content (oxc-project#16474) (Dunqing) - 201c98f formatter: Early return when no comments need to be printed (oxc-project#16432) (Dunqing) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Part of #14743.
index.js,index.ts, etc automatically, to avoid problems with the rule causing invalid filenames in various frameworks.To review the changeset it'd be best to go through it commit-by-commit.
Generated docs: