eslint-plugin-tsdoc-require-2
v1.2.7
Published
Require TSDoc comments for exported TypeScript declarations.
Maintainers
Readme
eslint-plugin-tsdoc-require-2
Require TSDoc and JSDoc-style comments and documentation tags on exported TypeScript declarations and default exports, with optional enforcement for non-exported top-level declarations.
Oxlint: Compatible with Oxlint 1.80.0 across all 58 rules and eight presets; the JavaScript plugin API remains alpha, so the release gate reruns ESLint/Oxlint conformance coverage.
Table of contents
- Installation
- Usage (Flat Config)
- Opt into non-exported declarations
- Presets
- Preset matrix
- Preset usage examples
- Rules
- Rule docs
- License
- Contributors ✨
Installation
npm i -D eslint-plugin-tsdoc-require-2Usage (Flat Config)
This plugin supports both TSDoc-first and JSDoc-style documentation workflows.
Use tsdocRequire.configs.tsdoc for stricter TSDoc conventions, or
tsdocRequire.configs.jsdoc for JSDoc-style function tag requirements such as
@param, @returns, and @throws.
All bundled presets are scoped to JavaScript and TypeScript source extensions
(.cjs, .cts, .js, .jsx, .mjs, .mts, .ts, and .tsx). This keeps
the presets compatible with non-JavaScript ESLint languages such as JSON when
they share the same Flat Config array.
import tsdocRequire from "eslint-plugin-tsdoc-require-2";
export default [
tsdocRequire.configs.recommended,
{
plugins: {
"tsdoc-require-2": tsdocRequire,
},
rules: {
"tsdoc-require-2/require": "error",
"tsdoc-require-2/require-remarks": "error",
},
},
];Opt into non-exported declarations
By default, rules in this plugin focus on exported declarations. To also enforce
top-level non-exported declarations, set includeNonExported: true on the rules
you want.
import tsdocRequire from "eslint-plugin-tsdoc-require-2";
export default [
{
plugins: {
"tsdoc-require-2": tsdocRequire,
},
rules: {
"tsdoc-require-2/require": [
"error",
{
includeNonExported: true,
},
],
"tsdoc-require-2/require-remarks": [
"error",
{
includeNonExported: true,
},
],
},
},
];Presets
The matrix below is generated by scripts/sync-presets-rules-matrix.mjs.
Preset matrix
Fixlegend:🔧= autofixable💡= suggestions available—= report only
Preset keylegend:- 🟢 —
tsdocRequire.configs.recommended— Minimal baseline TSDoc enforcement. - 🟡 —
tsdocRequire.configs.detailed— Require comments plus @remarks. - 🟠 —
tsdocRequire.configs.packages— Package docs baseline with @packageDocumentation. - 🔵 —
tsdocRequire.configs.typedoc— Conservative TypeDoc declaration-kind tags. - 🔴 —
tsdocRequire.configs["typedoc-strict"]— Strict TypeDoc with module/remarks and tag restrictions. - 🟣 —
tsdocRequire.configs.tsdoc— TSDoc-focused baseline with function/type tags plus tag restrictions. - 🟦 —
tsdocRequire.configs.jsdoc— JSDoc-style function-tag baseline. - ⚫ —
tsdocRequire.configs.all— All plugin rules. Use for audits and deliberate strictness.
- 🟢 —
| Rule | Fix | Preset key |
| --- | :---: | --- |
| tsdoc-require-2/require | — | 🟢 🟡 🟠 🔵 🔴 🟣 🟦 ⚫ |
| tsdoc-require-2/require-abstract | — | ⚫ |
| tsdoc-require-2/require-alpha | — | ⚫ |
| tsdoc-require-2/require-author | — | ⚫ |
| tsdoc-require-2/require-beta | — | ⚫ |
| tsdoc-require-2/require-category | — | ⚫ |
| tsdoc-require-2/require-class | — | 🔵 🔴 ⚫ |
| tsdoc-require-2/require-decorator | — | ⚫ |
| tsdoc-require-2/require-default-value | — | ⚫ |
| tsdoc-require-2/require-deprecated | — | ⚫ |
| tsdoc-require-2/require-document | — | ⚫ |
| tsdoc-require-2/require-enum | — | 🔵 🔴 ⚫ |
| tsdoc-require-2/require-event | — | ⚫ |
| tsdoc-require-2/require-event-property | — | ⚫ |
| tsdoc-require-2/require-example | — | ⚫ |
| tsdoc-require-2/require-expand | — | ⚫ |
| tsdoc-require-2/require-experimental | — | ⚫ |
| tsdoc-require-2/require-function | — | 🔵 🔴 ⚫ |
| tsdoc-require-2/require-group | — | ⚫ |
| tsdoc-require-2/require-hidden | — | ⚫ |
| tsdoc-require-2/require-hideconstructor | — | ⚫ |
| tsdoc-require-2/require-ignore | — | ⚫ |
| tsdoc-require-2/require-import | — | ⚫ |
| tsdoc-require-2/require-include | — | ⚫ |
| tsdoc-require-2/require-inherit-doc | — | ⚫ |
| tsdoc-require-2/require-inline | — | ⚫ |
| tsdoc-require-2/require-interface | — | 🔵 🔴 ⚫ |
| tsdoc-require-2/require-internal | — | ⚫ |
| tsdoc-require-2/require-label | — | ⚫ |
| tsdoc-require-2/require-license | — | ⚫ |
| tsdoc-require-2/require-link | — | ⚫ |
| tsdoc-require-2/require-merge-module-with | — | ⚫ |
| tsdoc-require-2/require-module | — | 🔴 ⚫ |
| tsdoc-require-2/require-namespace | — | ⚫ |
| tsdoc-require-2/require-overload | — | ⚫ |
| tsdoc-require-2/require-override | — | ⚫ |
| tsdoc-require-2/require-package-documentation | — | 🟠 ⚫ |
| tsdoc-require-2/require-param | — | 🟣 🟦 ⚫ |
| tsdoc-require-2/require-primary-export | — | ⚫ |
| tsdoc-require-2/require-private | — | ⚫ |
| tsdoc-require-2/require-private-remarks | — | ⚫ |
| tsdoc-require-2/require-property | — | ⚫ |
| tsdoc-require-2/require-protected | — | ⚫ |
| tsdoc-require-2/require-public | — | ⚫ |
| tsdoc-require-2/require-readonly | — | ⚫ |
| tsdoc-require-2/require-remarks | — | 🟡 🟠 🔴 🟣 ⚫ |
| tsdoc-require-2/require-returns | — | 🟣 🟦 ⚫ |
| tsdoc-require-2/require-sealed | — | ⚫ |
| tsdoc-require-2/require-see | — | ⚫ |
| tsdoc-require-2/require-since | — | ⚫ |
| tsdoc-require-2/require-sort-strategy | — | ⚫ |
| tsdoc-require-2/require-summary | — | ⚫ |
| tsdoc-require-2/require-template | — | ⚫ |
| tsdoc-require-2/require-throws | — | 🟣 🟦 ⚫ |
| tsdoc-require-2/require-type-param | — | 🟣 ⚫ |
| tsdoc-require-2/require-use-declared-type | — | ⚫ |
| tsdoc-require-2/require-virtual | — | ⚫ |
| tsdoc-require-2/restrict-tags | — | 🔴 🟣 ⚫ |
Preset usage examples
import tsdocRequire from "eslint-plugin-tsdoc-require-2";
export default [
tsdocRequire.configs.detailed,
// or:
// tsdocRequire.configs.packages,
// tsdocRequire.configs.tsdoc,
// tsdocRequire.configs.jsdoc,
// tsdocRequire.configs.typedoc,
// tsdocRequire.configs["typedoc-strict"],
// tsdocRequire.configs.all,
];configs.typedoc is intentionally conservative. It only enables TypeDoc-oriented
tag rules whose applicability can be inferred safely from declaration kind:
classes, enums, functions, and interfaces.
configs["typedoc-strict"] adds stricter constraints, including
tsdoc-require-2/restrict-tags to disallow TypeDoc compatibility-only block tags.
Rules
The table below is generated by scripts/sync-readme-rules-table.mjs.
- Rule coverage by preset is documented in the Preset matrix above.
- For full rule documentation links, see Rule docs.
Rule docs
- Core rule: docs/rules/require.md
- Required-tag index: docs/rules/required-tags.md
License
MIT © Nick2bad4u
Contributors ✨
Thanks goes to these wonderful people (emoji key):
