From 7a97360d0955bf7ea3948baa107249e39a98a5fe Mon Sep 17 00:00:00 2001
From: Boshen <1430279+Boshen@users.noreply.github.com>
Date: Mon, 24 Nov 2025 10:53:29 +0000
Subject: [PATCH] Release 1.30.0
---
src/docs/guide/usage/linter/generated-cli.md | 2 +
.../guide/usage/linter/generated-rules.md | 10 +-
.../guide/usage/linter/rules/eslint/curly.md | 8 +-
.../usage/linter/rules/eslint/default-case.md | 26 +++--
.../usage/linter/rules/eslint/new-cap.md | 62 ++++++++++
.../linter/rules/eslint/no-cond-assign.md | 13 +++
.../linter/rules/eslint/no-const-assign.md | 7 +-
.../linter/rules/eslint/no-else-return.md | 22 ++--
.../linter/rules/eslint/no-fallthrough.md | 29 +++++
.../rules/eslint/no-inner-declarations.md | 20 ++++
.../linter/rules/eslint/no-unsafe-finally.md | 2 +-
.../linter/rules/eslint/no-unused-vars.md | 27 +++++
.../rules/eslint/operator-assignment.md | 20 +---
.../usage/linter/rules/eslint/sort-keys.md | 26 ++---
.../usage/linter/rules/jsdoc/require-param.md | 74 +++++++++++-
.../linter/rules/jsdoc/require-returns.md | 44 +++++++
.../usage/linter/rules/oxc/approx-constant.md | 6 +
.../oxc/bad-array-method-on-arguments.md | 10 +-
.../usage/linter/rules/promise/param-names.md | 24 ++++
.../linter/rules/promise/valid-params.md | 2 +
.../linter/rules/react/jsx-handler-names.md | 81 +++++++++----
.../linter/rules/react/prefer-es6-class.md | 12 ++
.../rules/react/state-in-constructor.md | 12 ++
.../consistent-generic-constructors.md | 10 ++
.../consistent-indexed-object-style.md | 9 +-
.../typescript/consistent-type-definitions.md | 6 +-
.../typescript/consistent-type-imports.md | 67 ++++++-----
.../rules/typescript/prefer-includes.md | 109 ++++++++++++++++++
.../linter/rules/typescript/return-await.md | 24 ++++
.../linter/rules/unicorn/catch-error-name.md | 40 ++-----
.../rules/unicorn/prefer-bigint-literals.md | 74 ++++++++++++
.../rules/unicorn/switch-case-braces.md | 22 ++--
.../guide/usage/linter/rules/version.data.js | 2 +-
.../rules/vue/define-emits-declaration.md | 23 ++--
.../rules/vue/define-props-declaration.md | 15 ++-
35 files changed, 771 insertions(+), 169 deletions(-)
create mode 100644 src/docs/guide/usage/linter/rules/typescript/prefer-includes.md
create mode 100644 src/docs/guide/usage/linter/rules/unicorn/prefer-bigint-literals.md
diff --git a/src/docs/guide/usage/linter/generated-cli.md b/src/docs/guide/usage/linter/generated-cli.md
index a6c4422deba..3226b80fc23 100644
--- a/src/docs/guide/usage/linter/generated-cli.md
+++ b/src/docs/guide/usage/linter/generated-cli.md
@@ -148,6 +148,8 @@ Arguments:
Disable the automatic loading of nested configuration files
- **`--type-aware`** —
Enable rules that require type information
+- **`--type-check`** —
+ Enable experimental type checking (includes TypeScript compiler diagnostics)
- **`-h`**, **`--help`** —
Prints help information
- **`-V`**, **`--version`** —
diff --git a/src/docs/guide/usage/linter/generated-rules.md b/src/docs/guide/usage/linter/generated-rules.md
index 3a3ffce1879..28b5661d453 100644
--- a/src/docs/guide/usage/linter/generated-rules.md
+++ b/src/docs/guide/usage/linter/generated-rules.md
@@ -6,7 +6,7 @@ search: false
The progress of all rule implementations is tracked [here](https://github.com/oxc-project/oxc/issues/481).
-- Total number of rules: 615
+- Total number of rules: 617
- Rules turned on by default: 103
**Legend for 'Fixable?' column:**
@@ -345,7 +345,7 @@ code that is most likely wrong or useless.
| [no-self-import](/docs/guide/usage/linter/rules/import/no-self-import.html) | import | | |
| [no-unassigned-import](/docs/guide/usage/linter/rules/import/no-unassigned-import.html) | import | | |
| [no-commented-out-tests](/docs/guide/usage/linter/rules/jest/no-commented-out-tests.html) | jest | | |
-| [approx-constant](/docs/guide/usage/linter/rules/oxc/approx-constant.html) | oxc | | |
+| [approx-constant](/docs/guide/usage/linter/rules/oxc/approx-constant.html) | oxc | | 🚧 |
| [misrefactored-assign-op](/docs/guide/usage/linter/rules/oxc/misrefactored-assign-op.html) | oxc | | 🚧 |
| [no-async-endpoint-handlers](/docs/guide/usage/linter/rules/oxc/no-async-endpoint-handlers.html) | oxc | | |
| [always-return](/docs/guide/usage/linter/rules/promise/always-return.html) | promise | | |
@@ -377,7 +377,7 @@ code that is most likely wrong or useless.
| [no-required-prop-with-default](/docs/guide/usage/linter/rules/vue/no-required-prop-with-default.html) | vue | | 🚧 |
| [require-default-export](/docs/guide/usage/linter/rules/vue/require-default-export.html) | vue | | |
-## Pedantic (105):
+## Pedantic (106):
Lints which are rather strict or have occasional false positives.
@@ -437,6 +437,7 @@ Lints which are rather strict or have occasional false positives.
| [no-unsafe-return](/docs/guide/usage/linter/rules/typescript/no-unsafe-return.html) | typescript | | 🚧 |
| [only-throw-error](/docs/guide/usage/linter/rules/typescript/only-throw-error.html) | typescript | | 🚧 |
| [prefer-enum-initializers](/docs/guide/usage/linter/rules/typescript/prefer-enum-initializers.html) | typescript | | 🚧 |
+| [prefer-includes](/docs/guide/usage/linter/rules/typescript/prefer-includes.html) | typescript | | 🚧 |
| [prefer-promise-reject-errors](/docs/guide/usage/linter/rules/typescript/prefer-promise-reject-errors.html) | typescript | | 🚧 |
| [prefer-ts-expect-error](/docs/guide/usage/linter/rules/typescript/prefer-ts-expect-error.html) | typescript | | 🛠️ |
| [related-getter-setter-pairs](/docs/guide/usage/linter/rules/typescript/related-getter-setter-pairs.html) | typescript | | 🚧 |
@@ -489,7 +490,7 @@ Lints which are rather strict or have occasional false positives.
| [prefer-type-error](/docs/guide/usage/linter/rules/unicorn/prefer-type-error.html) | unicorn | | 🛠️ |
| [require-number-to-fixed-digits-argument](/docs/guide/usage/linter/rules/unicorn/require-number-to-fixed-digits-argument.html) | unicorn | | 🛠️ |
-## Style (167):
+## Style (168):
Code that should be written in a more idiomatic way.
@@ -634,6 +635,7 @@ Code that should be written in a more idiomatic way.
| [number-literal-case](/docs/guide/usage/linter/rules/unicorn/number-literal-case.html) | unicorn | | 🛠️ |
| [numeric-separators-style](/docs/guide/usage/linter/rules/unicorn/numeric-separators-style.html) | unicorn | | 🛠️ |
| [prefer-array-index-of](/docs/guide/usage/linter/rules/unicorn/prefer-array-index-of.html) | unicorn | | 🚧 |
+| [prefer-bigint-literals](/docs/guide/usage/linter/rules/unicorn/prefer-bigint-literals.html) | unicorn | | 🛠️ |
| [prefer-class-fields](/docs/guide/usage/linter/rules/unicorn/prefer-class-fields.html) | unicorn | | 🛠️💡 |
| [prefer-classlist-toggle](/docs/guide/usage/linter/rules/unicorn/prefer-classlist-toggle.html) | unicorn | | 🛠️ |
| [prefer-dom-node-text-content](/docs/guide/usage/linter/rules/unicorn/prefer-dom-node-text-content.html) | unicorn | | 🛠️ |
diff --git a/src/docs/guide/usage/linter/rules/eslint/curly.md b/src/docs/guide/usage/linter/rules/eslint/curly.md
index b593275ea17..57ddce0b5d2 100644
--- a/src/docs/guide/usage/linter/rules/eslint/curly.md
+++ b/src/docs/guide/usage/linter/rules/eslint/curly.md
@@ -44,8 +44,12 @@ Examples of **correct** code for this rule:
```js
/* curly: ["error", "all"] */
-if (foo) foo++;
-while (bar) bar--;
+if (foo) {
+ foo++;
+}
+while (bar) {
+ bar--;
+}
do {
foo();
} while (bar);
diff --git a/src/docs/guide/usage/linter/rules/eslint/default-case.md b/src/docs/guide/usage/linter/rules/eslint/default-case.md
index dc848ad44c0..caea5404131 100644
--- a/src/docs/guide/usage/linter/rules/eslint/default-case.md
+++ b/src/docs/guide/usage/linter/rules/eslint/default-case.md
@@ -24,14 +24,6 @@ makes the code more explicit and reduces mistakes.
You may optionally include a `// no default` after the last case if there is
no default case. The comment may be in any desired case, such as `// No Default`.
-### Options
-
-First option:
-
-- Type: `object`
-- Properties:
- - `commentPattern`: `string` (default: `/^no default$/i`) - A regex pattern used to detect comments that mark the absence of a `default` case as intentional.
-
Example configuration:
```json
@@ -70,12 +62,26 @@ switch (a) {
}
```
-#### `commentPattern`
+## Configuration
+
+This rule accepts a configuration object with the following properties:
+
+### commentPattern
+
+type: `[
+ string,
+ null
+]`
+
+A regex pattern used to detect comments that mark the absence
+of a `default` case as intentional.
+
+Default value: `no default`.
Examples of **incorrect** code for this rule with the `{ "commentPattern": "^skip\\sdefault" }` option:
```js
-/* default-case: ["error", { "commentPattern": "^skip\\sdefault" }] */
+/* default-case: ["error", { "commentPattern": "^skip\sdefault" }] */
switch (a) {
case 1:
diff --git a/src/docs/guide/usage/linter/rules/eslint/new-cap.md b/src/docs/guide/usage/linter/rules/eslint/new-cap.md
index abb5f4b2034..90df8ac85b5 100644
--- a/src/docs/guide/usage/linter/rules/eslint/new-cap.md
+++ b/src/docs/guide/usage/linter/rules/eslint/new-cap.md
@@ -325,6 +325,68 @@ Examples of **correct** code for this rule with the `{ "properties": false }` op
var friend = new person.acquaintance();
```
+## Configuration
+
+This rule accepts a configuration object with the following properties:
+
+### capIsNew
+
+type: `boolean`
+
+default: `true`
+
+`true` to require that all functions with names starting with an uppercase letter to be called with `new`.
+
+### capIsNewExceptionPattern
+
+type: `[
+ string,
+ null
+]`
+
+A regex pattern to match exceptions for functions with names starting with an uppercase letter.
+
+### capIsNewExceptions
+
+type: `string[]`
+
+default: `[]`
+
+Exceptions to ignore for functions with names starting with an uppercase letter.
+
+### newIsCap
+
+type: `boolean`
+
+default: `true`
+
+`true` to require that all constructor names start with an uppercase letter, e.g. `new Person()`.
+
+### newIsCapExceptionPattern
+
+type: `[
+ string,
+ null
+]`
+
+A regex pattern to match exceptions for constructor names starting with an uppercase letter.
+
+### newIsCapExceptions
+
+type: `string[]`
+
+default: `["Array", "Boolean", "Date", "Error", "Function", "Number", "Object", "RegExp", "String", "Symbol", "BigInt"]`
+
+Exceptions to ignore for constructor names starting with an uppercase letter.
+
+### properties
+
+type: `boolean`
+
+default: `true`
+
+`true` to require capitalization for object properties (e.g., `new obj.Method()`).
+
## How to use
To **enable** this rule in the CLI or using the config file, you can use:
diff --git a/src/docs/guide/usage/linter/rules/eslint/no-cond-assign.md b/src/docs/guide/usage/linter/rules/eslint/no-cond-assign.md
index 276eacac4e3..d2e4f5d8f96 100644
--- a/src/docs/guide/usage/linter/rules/eslint/no-cond-assign.md
+++ b/src/docs/guide/usage/linter/rules/eslint/no-cond-assign.md
@@ -46,6 +46,19 @@ if (user.jobTitle === "manager") {
}
```
+## Configuration
+
+This rule accepts one of the following string values:
+
+### `"except-parens"`
+
+Allow assignments in conditional expressions only if they are
+enclosed in parentheses.
+
+### `"always"`
+
+Disallow all assignments in conditional expressions.
+
## How to use
To **enable** this rule in the CLI or using the config file, you can use:
diff --git a/src/docs/guide/usage/linter/rules/eslint/no-const-assign.md b/src/docs/guide/usage/linter/rules/eslint/no-const-assign.md
index 2af295137ef..b5155df3236 100644
--- a/src/docs/guide/usage/linter/rules/eslint/no-const-assign.md
+++ b/src/docs/guide/usage/linter/rules/eslint/no-const-assign.md
@@ -19,8 +19,11 @@ Disallow reassigning `const` variables.
### Why is this bad?
-We cannot modify variables that are declared using const keyword.
-It will raise a runtime error.
+We cannot modify variables that are declared using the `const` keyword,
+as it will raise a runtime error.
+
+Note that this rule is not necessary for TypeScript
+code, as TypeScript will already catch this as an error.
### Examples
diff --git a/src/docs/guide/usage/linter/rules/eslint/no-else-return.md b/src/docs/guide/usage/linter/rules/eslint/no-else-return.md
index 812301668b2..b389c6882c8 100644
--- a/src/docs/guide/usage/linter/rules/eslint/no-else-return.md
+++ b/src/docs/guide/usage/linter/rules/eslint/no-else-return.md
@@ -37,12 +37,6 @@ following an `if` containing a return statement. As such, it will warn
when it encounters an `else` following a chain of `if`s, all of them
containing a `return` statement.
-Options
-This rule has an object option:
-
-- `allowElseIf`: `true` _(default)_ allows `else if` blocks after a return
-- `allowElseIf`: `false` disallows `else if` blocks after a return
-
### Examples
#### `allowElseIf: true`
@@ -142,9 +136,19 @@ function foo4() {
}
```
-#### `allowElseIf: false`
+## Configuration
-Examples of **incorrect** code for this rule:
+This rule accepts a configuration object with the following properties:
+
+### allowElseIf
+
+type: `boolean`
+
+default: `true`
+
+Whether to allow `else if` blocks after a return statement.
+
+Examples of **incorrect** code for this rule with `allowElseIf: false`:
```javascript
function foo() {
@@ -156,7 +160,7 @@ function foo() {
}
```
-Examples of **correct** code for this rule:
+Examples of **correct** code for this rule with `allowElseIf: false`:
```javascript
function foo() {
diff --git a/src/docs/guide/usage/linter/rules/eslint/no-fallthrough.md b/src/docs/guide/usage/linter/rules/eslint/no-fallthrough.md
index 8df623b5009..74a38a21dc1 100644
--- a/src/docs/guide/usage/linter/rules/eslint/no-fallthrough.md
+++ b/src/docs/guide/usage/linter/rules/eslint/no-fallthrough.md
@@ -184,6 +184,35 @@ switch (foo) {
Note that the last case statement in these examples does not cause a
warning because there is nothing to fall through into.
+## Configuration
+
+This rule accepts a configuration object with the following properties:
+
+### allowEmptyCase
+
+type: `boolean`
+
+default: `false`
+
+Whether to allow empty case clauses to fall through.
+
+### commentPattern
+
+type: `[
+ string,
+ null
+]`
+
+Custom regex pattern to match fallthrough comments.
+
+### reportUnusedFallthroughComment
+
+type: `boolean`
+
+default: `false`
+
+Whether to report unused fallthrough comments.
+
## How to use
To **enable** this rule in the CLI or using the config file, you can use:
diff --git a/src/docs/guide/usage/linter/rules/eslint/no-inner-declarations.md b/src/docs/guide/usage/linter/rules/eslint/no-inner-declarations.md
index bb814c254b3..eb6b4ba77f5 100644
--- a/src/docs/guide/usage/linter/rules/eslint/no-inner-declarations.md
+++ b/src/docs/guide/usage/linter/rules/eslint/no-inner-declarations.md
@@ -45,16 +45,36 @@ This rule accepts a configuration object with the following properties:
### blockScopedFunctions
+type: `"allow" | "disallow"`
+
default: `null`
Controls whether function declarations in nested blocks are allowed in strict mode (ES6+ behavior).
+#### `"allow"`
+
+Allow function declarations in nested blocks in strict mode (ES6+ behavior).
+
+#### `"disallow"`
+
+Disallow function declarations in nested blocks regardless of strict mode.
+
### config
+type: `"functions" | "both"`
+
default: `"functions"`
Determines what type of declarations to check.
+#### `"functions"`
+
+Disallows function declarations in nested blocks.
+
+#### `"both"`
+
+Disallows function and var declarations in nested blocks.
+
## How to use
To **enable** this rule in the CLI or using the config file, you can use:
diff --git a/src/docs/guide/usage/linter/rules/eslint/no-unsafe-finally.md b/src/docs/guide/usage/linter/rules/eslint/no-unsafe-finally.md
index f253c28bfed..5b9165c8bf5 100644
--- a/src/docs/guide/usage/linter/rules/eslint/no-unsafe-finally.md
+++ b/src/docs/guide/usage/linter/rules/eslint/no-unsafe-finally.md
@@ -15,7 +15,7 @@ const source = `https://github.com/oxc-project/oxc/blob/${ data }/crates/oxc_lin
### What it does
-Disallow control flow statements in finally blocks
+Disallow control flow statements in `finally` blocks.
### Why is this bad?
diff --git a/src/docs/guide/usage/linter/rules/eslint/no-unused-vars.md b/src/docs/guide/usage/linter/rules/eslint/no-unused-vars.md
index 1769dcfb009..f0969482b05 100644
--- a/src/docs/guide/usage/linter/rules/eslint/no-unused-vars.md
+++ b/src/docs/guide/usage/linter/rules/eslint/no-unused-vars.md
@@ -187,6 +187,8 @@ This rule accepts a configuration object with the following properties:
### args
+type: `"afterUsed" | "all" | "none"`
+
Controls how unused arguments are checked.
This option has three settings:
@@ -198,6 +200,20 @@ This option has three settings:
2. `all` - All named arguments must be used.
3. `none` - Do not check arguments.
+#### `"afterUsed"`
+
+Unused positional arguments that occur before the last used argument
+will not be checked, but all named arguments and all positional
+arguments after the last used argument will be checked.
+
+#### `"all"`
+
+All named arguments must be used
+
+#### `"none"`
+
+Do not check arguments
+
### caughtErrors
type: `boolean`
@@ -366,6 +382,8 @@ function foo(): typeof foo {}
### vars
+type: `"all" | "local"`
+
Controls how usage of a variable in the global scope is checked.
This option has two settings:
@@ -375,6 +393,15 @@ This option has two settings:
2. `local` checks only that locally-declared variables are used but will
allow global variables to be unused.
+#### `"all"`
+
+All variables are checked for usage, including those in the global scope.
+
+#### `"local"`
+
+Checks only that locally-declared variables are used but will allow
+global variables to be unused.
+
## How to use
To **enable** this rule in the CLI or using the config file, you can use:
diff --git a/src/docs/guide/usage/linter/rules/eslint/operator-assignment.md b/src/docs/guide/usage/linter/rules/eslint/operator-assignment.md
index e8c6c7b48aa..544965c746d 100644
--- a/src/docs/guide/usage/linter/rules/eslint/operator-assignment.md
+++ b/src/docs/guide/usage/linter/rules/eslint/operator-assignment.md
@@ -64,25 +64,15 @@ x.y = x.y / a.b;
## Configuration
-This rule accepts a configuration object with the following properties:
+This rule accepts one of the following string values:
-### mode
+### `"always"`
-type: `"always" | "never"`
+Requires assignment operator shorthand where possible.
-default: `"always"`
+### `"never"`
-This rule has a single string option:
-
-- `always` requires assignment operator shorthand where possible
-- `never` disallows assignment operator shorthand
-
-Example:
-
-```json
-"eslint/operator-assignment": ["error", "always"]
-"eslint/operator-assignment": ["error", "never"]
-```
+Disallows assignment operator shorthand.
## How to use
diff --git a/src/docs/guide/usage/linter/rules/eslint/sort-keys.md b/src/docs/guide/usage/linter/rules/eslint/sort-keys.md
index d7db6ec6096..cb7762755c2 100644
--- a/src/docs/guide/usage/linter/rules/eslint/sort-keys.md
+++ b/src/docs/guide/usage/linter/rules/eslint/sort-keys.md
@@ -44,9 +44,17 @@ let myObj = {
## Configuration
-This rule accepts a configuration object with the following properties:
+### The 1st option
-### allowLineSeparatedGroups
+type: `"desc" | "asc"`
+
+Sorting order for keys. Accepts "asc" for ascending or "desc" for descending.
+
+### The 2nd option
+
+This option is an object with the following properties:
+
+#### allowLineSeparatedGroups
type: `boolean`
@@ -54,7 +62,7 @@ default: `false`
When true, groups of properties separated by a blank line are sorted independently.
-### caseSensitive
+#### caseSensitive
type: `boolean`
@@ -62,7 +70,7 @@ default: `true`
Whether the sort comparison is case-sensitive (A < a when true).
-### minKeys
+#### minKeys
type: `integer`
@@ -70,7 +78,7 @@ default: `2`
Minimum number of properties required in an object before sorting is enforced.
-### natural
+#### natural
type: `boolean`
@@ -78,14 +86,6 @@ default: `false`
Use natural sort order so that, for example, "a2" comes before "a10".
-### sortOrder
-
-type: `"desc" | "asc"`
-
-default: `"asc"`
-
-Sorting order for keys. Accepts "asc" for ascending or "desc" for descending.
-
## How to use
To **enable** this rule in the CLI or using the config file, you can use:
diff --git a/src/docs/guide/usage/linter/rules/jsdoc/require-param.md b/src/docs/guide/usage/linter/rules/jsdoc/require-param.md
index 083887e2278..bd2a16644e9 100644
--- a/src/docs/guide/usage/linter/rules/jsdoc/require-param.md
+++ b/src/docs/guide/usage/linter/rules/jsdoc/require-param.md
@@ -16,7 +16,8 @@ Requires that all function parameters are documented with JSDoc `@param` tags.
### Why is this bad?
-The rule is aimed at enforcing code quality and maintainability by requiring that all function parameters are documented.
+The rule is aimed at enforcing code quality and maintainability by requiring
+that all function parameters are documented.
### Examples
@@ -34,6 +35,77 @@ Examples of **correct** code for this rule:
function quux(foo) {}
```
+## Configuration
+
+This rule accepts a configuration object with the following properties:
+
+### checkConstructors
+
+type: `boolean`
+
+default: `false`
+
+Whether to check constructor methods.
+
+### checkDestructured
+
+type: `boolean`
+
+default: `true`
+
+Whether to check destructured parameters.
+
+### checkDestructuredRoots
+
+type: `boolean`
+
+default: `true`
+
+Whether to check destructured parameters when you have code like
+`function doSomething({ a, b }) { ... }`. Because there is no named
+parameter in this example, when this option is `true` you must
+have a `@param` tag that corresponds to `{a, b}`.
+
+### checkGetters
+
+type: `boolean`
+
+default: `true`
+
+Whether to check getter methods.
+
+### checkRestProperty
+
+type: `boolean`
+
+default: `false`
+
+Whether to check rest properties.
+
+### checkSetters
+
+type: `boolean`
+
+default: `true`
+
+Whether to check setter methods.
+
+### checkTypesPattern
+
+type: `string`
+
+default: `"^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$"`
+
+Regex pattern to match types that exempt parameters from checking.
+
+### exemptedBy
+
+type: `string[]`
+
+default: `["inheritdoc"]`
+
+List of JSDoc tags that exempt functions from `@param` checking.
+
## How to use
To **enable** this rule in the CLI or using the config file, you can use:
diff --git a/src/docs/guide/usage/linter/rules/jsdoc/require-returns.md b/src/docs/guide/usage/linter/rules/jsdoc/require-returns.md
index e45f299e689..24185e64511 100644
--- a/src/docs/guide/usage/linter/rules/jsdoc/require-returns.md
+++ b/src/docs/guide/usage/linter/rules/jsdoc/require-returns.md
@@ -47,6 +47,50 @@ function quux() {
}
```
+## Configuration
+
+This rule accepts a configuration object with the following properties:
+
+### checkConstructors
+
+type: `boolean`
+
+default: `false`
+
+Whether to check constructor methods.
+
+### checkGetters
+
+type: `boolean`
+
+default: `true`
+
+Whether to check getter methods.
+
+### exemptedBy
+
+type: `string[]`
+
+default: `["inheritdoc"]`
+
+Tags that exempt functions from requiring `@returns`.
+
+### forceRequireReturn
+
+type: `boolean`
+
+default: `false`
+
+Whether to require a `@returns` tag even if the function doesn't return a value.
+
+### forceReturnsWithAsync
+
+type: `boolean`
+
+default: `false`
+
+Whether to require a `@returns` tag for async functions.
+
## How to use
To **enable** this rule in the CLI or using the config file, you can use:
diff --git a/src/docs/guide/usage/linter/rules/oxc/approx-constant.md b/src/docs/guide/usage/linter/rules/oxc/approx-constant.md
index b0b069a012a..21ff5bfb4ba 100644
--- a/src/docs/guide/usage/linter/rules/oxc/approx-constant.md
+++ b/src/docs/guide/usage/linter/rules/oxc/approx-constant.md
@@ -8,6 +8,9 @@ const source = `https://github.com/oxc-project/oxc/blob/${ data }/crates/oxc_lin
# oxc/approx-constant