eslint-plugin-tsdoc-require-2 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +115 -73
- package/dist/internal/require-tag-factory.cjs +309 -0
- package/dist/internal/require-tag-factory.d.ts +26 -0
- package/dist/internal/require-tag-factory.d.ts.map +1 -0
- package/dist/internal/require-tag-factory.js +302 -0
- package/dist/internal/require-tag-factory.js.map +1 -0
- package/dist/plugin.cjs +33 -11
- package/dist/plugin.d.ts +2 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +33 -11
- package/dist/plugin.js.map +1 -1
- package/dist/rules/require-tag-rules.cjs +88 -0
- package/dist/rules/require-tag-rules.d.ts +35 -0
- package/dist/rules/require-tag-rules.d.ts.map +1 -0
- package/dist/rules/require-tag-rules.js +85 -0
- package/dist/rules/require-tag-rules.js.map +1 -0
- package/dist/rules/require.cjs +16 -3
- package/dist/rules/require.d.ts +1 -0
- package/dist/rules/require.d.ts.map +1 -1
- package/dist/rules/require.js +16 -3
- package/dist/rules/require.js.map +1 -1
- package/dist/rules/required-tags/require-alpha.cjs +32 -0
- package/dist/rules/required-tags/require-alpha.d.ts +4 -0
- package/dist/rules/required-tags/require-alpha.d.ts.map +1 -0
- package/dist/rules/required-tags/require-alpha.js +30 -0
- package/dist/rules/required-tags/require-alpha.js.map +1 -0
- package/dist/rules/required-tags/require-beta.cjs +32 -0
- package/dist/rules/required-tags/require-beta.d.ts +4 -0
- package/dist/rules/required-tags/require-beta.d.ts.map +1 -0
- package/dist/rules/required-tags/require-beta.js +30 -0
- package/dist/rules/required-tags/require-beta.js.map +1 -0
- package/dist/rules/required-tags/require-decorator.cjs +32 -0
- package/dist/rules/required-tags/require-decorator.d.ts +4 -0
- package/dist/rules/required-tags/require-decorator.d.ts.map +1 -0
- package/dist/rules/required-tags/require-decorator.js +30 -0
- package/dist/rules/required-tags/require-decorator.js.map +1 -0
- package/dist/rules/required-tags/require-default-value.cjs +32 -0
- package/dist/rules/required-tags/require-default-value.d.ts +4 -0
- package/dist/rules/required-tags/require-default-value.d.ts.map +1 -0
- package/dist/rules/required-tags/require-default-value.js +30 -0
- package/dist/rules/required-tags/require-default-value.js.map +1 -0
- package/dist/rules/required-tags/require-deprecated.cjs +32 -0
- package/dist/rules/required-tags/require-deprecated.d.ts +4 -0
- package/dist/rules/required-tags/require-deprecated.d.ts.map +1 -0
- package/dist/rules/required-tags/require-deprecated.js +30 -0
- package/dist/rules/required-tags/require-deprecated.js.map +1 -0
- package/dist/rules/required-tags/require-event-property.cjs +32 -0
- package/dist/rules/required-tags/require-event-property.d.ts +4 -0
- package/dist/rules/required-tags/require-event-property.d.ts.map +1 -0
- package/dist/rules/required-tags/require-event-property.js +30 -0
- package/dist/rules/required-tags/require-event-property.js.map +1 -0
- package/dist/rules/required-tags/require-example.cjs +32 -0
- package/dist/rules/required-tags/require-example.d.ts +4 -0
- package/dist/rules/required-tags/require-example.d.ts.map +1 -0
- package/dist/rules/required-tags/require-example.js +30 -0
- package/dist/rules/required-tags/require-example.js.map +1 -0
- package/dist/rules/required-tags/require-experimental.cjs +32 -0
- package/dist/rules/required-tags/require-experimental.d.ts +4 -0
- package/dist/rules/required-tags/require-experimental.d.ts.map +1 -0
- package/dist/rules/required-tags/require-experimental.js +30 -0
- package/dist/rules/required-tags/require-experimental.js.map +1 -0
- package/dist/rules/required-tags/require-inherit-doc.cjs +32 -0
- package/dist/rules/required-tags/require-inherit-doc.d.ts +4 -0
- package/dist/rules/required-tags/require-inherit-doc.d.ts.map +1 -0
- package/dist/rules/required-tags/require-inherit-doc.js +30 -0
- package/dist/rules/required-tags/require-inherit-doc.js.map +1 -0
- package/dist/rules/required-tags/require-internal.cjs +32 -0
- package/dist/rules/required-tags/require-internal.d.ts +4 -0
- package/dist/rules/required-tags/require-internal.d.ts.map +1 -0
- package/dist/rules/required-tags/require-internal.js +30 -0
- package/dist/rules/required-tags/require-internal.js.map +1 -0
- package/dist/rules/required-tags/require-label.cjs +32 -0
- package/dist/rules/required-tags/require-label.d.ts +4 -0
- package/dist/rules/required-tags/require-label.d.ts.map +1 -0
- package/dist/rules/required-tags/require-label.js +30 -0
- package/dist/rules/required-tags/require-label.js.map +1 -0
- package/dist/rules/required-tags/require-link.cjs +32 -0
- package/dist/rules/required-tags/require-link.d.ts +4 -0
- package/dist/rules/required-tags/require-link.d.ts.map +1 -0
- package/dist/rules/required-tags/require-link.js +30 -0
- package/dist/rules/required-tags/require-link.js.map +1 -0
- package/dist/rules/required-tags/require-override.cjs +32 -0
- package/dist/rules/required-tags/require-override.d.ts +4 -0
- package/dist/rules/required-tags/require-override.d.ts.map +1 -0
- package/dist/rules/required-tags/require-override.js +30 -0
- package/dist/rules/required-tags/require-override.js.map +1 -0
- package/dist/rules/required-tags/require-package-documentation.cjs +32 -0
- package/dist/rules/required-tags/require-package-documentation.d.ts +4 -0
- package/dist/rules/required-tags/require-package-documentation.d.ts.map +1 -0
- package/dist/rules/required-tags/require-package-documentation.js +30 -0
- package/dist/rules/required-tags/require-package-documentation.js.map +1 -0
- package/dist/rules/required-tags/require-param.cjs +32 -0
- package/dist/rules/required-tags/require-param.d.ts +4 -0
- package/dist/rules/required-tags/require-param.d.ts.map +1 -0
- package/dist/rules/required-tags/require-param.js +30 -0
- package/dist/rules/required-tags/require-param.js.map +1 -0
- package/dist/rules/required-tags/require-private-remarks.cjs +32 -0
- package/dist/rules/required-tags/require-private-remarks.d.ts +4 -0
- package/dist/rules/required-tags/require-private-remarks.d.ts.map +1 -0
- package/dist/rules/required-tags/require-private-remarks.js +30 -0
- package/dist/rules/required-tags/require-private-remarks.js.map +1 -0
- package/dist/rules/required-tags/require-public.cjs +32 -0
- package/dist/rules/required-tags/require-public.d.ts +4 -0
- package/dist/rules/required-tags/require-public.d.ts.map +1 -0
- package/dist/rules/required-tags/require-public.js +30 -0
- package/dist/rules/required-tags/require-public.js.map +1 -0
- package/dist/rules/required-tags/require-readonly.cjs +32 -0
- package/dist/rules/required-tags/require-readonly.d.ts +4 -0
- package/dist/rules/required-tags/require-readonly.d.ts.map +1 -0
- package/dist/rules/required-tags/require-readonly.js +30 -0
- package/dist/rules/required-tags/require-readonly.js.map +1 -0
- package/dist/rules/required-tags/require-remarks.cjs +32 -0
- package/dist/rules/required-tags/require-remarks.d.ts +4 -0
- package/dist/rules/required-tags/require-remarks.d.ts.map +1 -0
- package/dist/rules/required-tags/require-remarks.js +30 -0
- package/dist/rules/required-tags/require-remarks.js.map +1 -0
- package/dist/rules/required-tags/require-returns.cjs +32 -0
- package/dist/rules/required-tags/require-returns.d.ts +4 -0
- package/dist/rules/required-tags/require-returns.d.ts.map +1 -0
- package/dist/rules/required-tags/require-returns.js +30 -0
- package/dist/rules/required-tags/require-returns.js.map +1 -0
- package/dist/rules/required-tags/require-sealed.cjs +32 -0
- package/dist/rules/required-tags/require-sealed.d.ts +4 -0
- package/dist/rules/required-tags/require-sealed.d.ts.map +1 -0
- package/dist/rules/required-tags/require-sealed.js +30 -0
- package/dist/rules/required-tags/require-sealed.js.map +1 -0
- package/dist/rules/required-tags/require-see.cjs +32 -0
- package/dist/rules/required-tags/require-see.d.ts +4 -0
- package/dist/rules/required-tags/require-see.d.ts.map +1 -0
- package/dist/rules/required-tags/require-see.js +30 -0
- package/dist/rules/required-tags/require-see.js.map +1 -0
- package/dist/rules/required-tags/require-throws.cjs +32 -0
- package/dist/rules/required-tags/require-throws.d.ts +4 -0
- package/dist/rules/required-tags/require-throws.d.ts.map +1 -0
- package/dist/rules/required-tags/require-throws.js +30 -0
- package/dist/rules/required-tags/require-throws.js.map +1 -0
- package/dist/rules/required-tags/require-type-param.cjs +32 -0
- package/dist/rules/required-tags/require-type-param.d.ts +4 -0
- package/dist/rules/required-tags/require-type-param.d.ts.map +1 -0
- package/dist/rules/required-tags/require-type-param.js +30 -0
- package/dist/rules/required-tags/require-type-param.js.map +1 -0
- package/dist/rules/required-tags/require-virtual.cjs +32 -0
- package/dist/rules/required-tags/require-virtual.d.ts +4 -0
- package/dist/rules/required-tags/require-virtual.d.ts.map +1 -0
- package/dist/rules/required-tags/require-virtual.js +30 -0
- package/dist/rules/required-tags/require-virtual.js.map +1 -0
- package/docs/rules/require.md +39 -5
- package/docs/rules/required-tags/require-alpha.md +57 -0
- package/docs/rules/required-tags/require-beta.md +57 -0
- package/docs/rules/required-tags/require-decorator.md +57 -0
- package/docs/rules/required-tags/require-default-value.md +57 -0
- package/docs/rules/required-tags/require-deprecated.md +57 -0
- package/docs/rules/required-tags/require-event-property.md +57 -0
- package/docs/rules/required-tags/require-example.md +57 -0
- package/docs/rules/required-tags/require-experimental.md +57 -0
- package/docs/rules/required-tags/require-inherit-doc.md +57 -0
- package/docs/rules/required-tags/require-internal.md +57 -0
- package/docs/rules/required-tags/require-label.md +57 -0
- package/docs/rules/required-tags/require-link.md +57 -0
- package/docs/rules/required-tags/require-override.md +57 -0
- package/docs/rules/required-tags/require-package-documentation.md +57 -0
- package/docs/rules/required-tags/require-param.md +57 -0
- package/docs/rules/required-tags/require-private-remarks.md +57 -0
- package/docs/rules/required-tags/require-public.md +57 -0
- package/docs/rules/required-tags/require-readonly.md +57 -0
- package/docs/rules/required-tags/require-remarks.md +57 -0
- package/docs/rules/required-tags/require-returns.md +57 -0
- package/docs/rules/required-tags/require-sealed.md +57 -0
- package/docs/rules/required-tags/require-see.md +57 -0
- package/docs/rules/required-tags/require-throws.md +57 -0
- package/docs/rules/required-tags/require-type-param.md +57 -0
- package/docs/rules/required-tags/require-virtual.md +57 -0
- package/docs/rules/required-tags.md +76 -0
- package/package.json +27 -13
package/README.md
CHANGED
|
@@ -1,106 +1,148 @@
|
|
|
1
1
|
# eslint-plugin-tsdoc-require-2
|
|
2
2
|
|
|
3
|
-
[](https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/actions/workflows/ci.yml)
|
|
4
|
-
[](https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/actions/workflows/release.yml)
|
|
5
|
-
[](https://codecov.io/gh/Nick2bad4u/eslint-plugin-tsdoc-require-2)
|
|
6
|
-
[](https://www.npmjs.com/package/eslint-plugin-tsdoc-require-2)
|
|
7
|
-
[](https://www.npmjs.com/package/eslint-plugin-tsdoc-require-2)
|
|
8
|
-
[](https://nodejs.org/)
|
|
3
|
+
[](https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/actions/workflows/ci.yml)[](https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/actions/workflows/release.yml)[](https://codecov.io/gh/Nick2bad4u/eslint-plugin-tsdoc-require-2)[](https://www.npmjs.com/package/eslint-plugin-tsdoc-require-2)[](https://www.npmjs.com/package/eslint-plugin-tsdoc-require-2)[](https://nodejs.org/)
|
|
9
4
|
|
|
10
|
-
Require TSDoc comments
|
|
5
|
+
Require TSDoc comments and specific TSDoc tags on exported TypeScript declarations.
|
|
11
6
|
|
|
12
7
|
## Installation
|
|
13
8
|
|
|
14
|
-
```
|
|
15
|
-
npm
|
|
9
|
+
```bash
|
|
10
|
+
npm i -D eslint-plugin-tsdoc-require-2
|
|
16
11
|
```
|
|
17
12
|
|
|
18
13
|
## Usage (Flat Config)
|
|
19
14
|
|
|
20
15
|
```js
|
|
21
|
-
// eslint.config.mjs
|
|
22
|
-
import tsParser from "@typescript-eslint/parser";
|
|
23
16
|
import tsdocRequire from "eslint-plugin-tsdoc-require-2";
|
|
24
17
|
|
|
25
18
|
export default [
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
},
|
|
31
|
-
plugins: {
|
|
32
|
-
"tsdoc-require-2": tsdocRequire,
|
|
33
|
-
},
|
|
34
|
-
rules: {
|
|
35
|
-
"tsdoc-require-2/require": "error",
|
|
36
|
-
},
|
|
19
|
+
tsdocRequire.configs.recommended,
|
|
20
|
+
{
|
|
21
|
+
plugins: {
|
|
22
|
+
"tsdoc-require-2": tsdocRequire,
|
|
37
23
|
},
|
|
24
|
+
rules: {
|
|
25
|
+
"tsdoc-require-2/require": "error",
|
|
26
|
+
"tsdoc-require-2/require-remarks": "error",
|
|
27
|
+
},
|
|
28
|
+
},
|
|
38
29
|
];
|
|
39
30
|
```
|
|
40
31
|
|
|
41
|
-
|
|
32
|
+
## Presets
|
|
33
|
+
|
|
34
|
+
The matrix below is generated by `scripts/sync-presets-rules-matrix.mjs`.
|
|
35
|
+
|
|
36
|
+
<!-- BEGIN_PRESETS_MATRIX -->
|
|
37
|
+
|
|
38
|
+
| Preset | Rule count | Included rules | Typical use case |
|
|
39
|
+
| --- | ---: | --- | --- |
|
|
40
|
+
| `recommended` | 1 | `tsdoc-require-2/require` | Minimal baseline TSDoc enforcement. |
|
|
41
|
+
| `detailed` | 2 | `tsdoc-require-2/require`, `tsdoc-require-2/require-remarks` | General code docs baseline with remarks included. |
|
|
42
|
+
| `packages` | 3 | `tsdoc-require-2/require`, `tsdoc-require-2/require-remarks`, `tsdoc-require-2/require-package-documentation` | Library/package-focused baseline for package entry docs. |
|
|
43
|
+
| `all` | 26 | `tsdoc-require-2/require`, `tsdoc-require-2/require-alpha`, `tsdoc-require-2/require-beta`, `tsdoc-require-2/require-decorator`, `tsdoc-require-2/require-default-value`, `tsdoc-require-2/require-deprecated`, `tsdoc-require-2/require-event-property`, `tsdoc-require-2/require-example`, `tsdoc-require-2/require-experimental`, `tsdoc-require-2/require-inherit-doc`, `tsdoc-require-2/require-internal`, `tsdoc-require-2/require-label`, `tsdoc-require-2/require-link`, `tsdoc-require-2/require-override`, `tsdoc-require-2/require-package-documentation`, `tsdoc-require-2/require-param`, `tsdoc-require-2/require-private-remarks`, `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-throws`, `tsdoc-require-2/require-type-param`, `tsdoc-require-2/require-virtual` | Enable every rule shipped by this plugin. (NOT RECOMMENDED) |
|
|
44
|
+
|
|
45
|
+
<!-- END_PRESETS_MATRIX -->
|
|
46
|
+
|
|
47
|
+
### Preset usage examples
|
|
42
48
|
|
|
43
49
|
```js
|
|
44
|
-
// eslint.config.mjs
|
|
45
50
|
import tsdocRequire from "eslint-plugin-tsdoc-require-2";
|
|
46
51
|
|
|
47
|
-
export default [
|
|
52
|
+
export default [
|
|
53
|
+
tsdocRequire.configs.detailed,
|
|
54
|
+
// or:
|
|
55
|
+
// tsdocRequire.configs.packages,
|
|
56
|
+
// tsdocRequire.configs.all,
|
|
57
|
+
];
|
|
48
58
|
```
|
|
49
59
|
|
|
50
|
-
##
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
]
|
|
60
|
+
## Rules
|
|
61
|
+
|
|
62
|
+
The table below is generated by `scripts/sync-readme-rules-table.mjs`.
|
|
63
|
+
|
|
64
|
+
<!-- BEGIN_RULES_TABLE -->
|
|
65
|
+
|
|
66
|
+
| Rule | Description | Recommended | Detailed | Packages | All |
|
|
67
|
+
| --- | --- | :---: | :---: | :---: | :---: |
|
|
68
|
+
| [`tsdoc-require-2/require`](./docs/rules/require.md) | require TSDoc comments for exported TypeScript declarations and default exports. | ✅ | ✅ | ✅ | ✅ |
|
|
69
|
+
| [`tsdoc-require-2/require-alpha`](./docs/rules/required-tags/require-alpha.md) | require @alpha tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
70
|
+
| [`tsdoc-require-2/require-beta`](./docs/rules/required-tags/require-beta.md) | require @beta tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
71
|
+
| [`tsdoc-require-2/require-decorator`](./docs/rules/required-tags/require-decorator.md) | require @decorator tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
72
|
+
| [`tsdoc-require-2/require-default-value`](./docs/rules/required-tags/require-default-value.md) | require @defaultValue tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
73
|
+
| [`tsdoc-require-2/require-deprecated`](./docs/rules/required-tags/require-deprecated.md) | require @deprecated tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
74
|
+
| [`tsdoc-require-2/require-event-property`](./docs/rules/required-tags/require-event-property.md) | require @eventProperty tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
75
|
+
| [`tsdoc-require-2/require-example`](./docs/rules/required-tags/require-example.md) | require @example tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
76
|
+
| [`tsdoc-require-2/require-experimental`](./docs/rules/required-tags/require-experimental.md) | require @experimental tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
77
|
+
| [`tsdoc-require-2/require-inherit-doc`](./docs/rules/required-tags/require-inherit-doc.md) | require @inheritDoc tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
78
|
+
| [`tsdoc-require-2/require-internal`](./docs/rules/required-tags/require-internal.md) | require @internal tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
79
|
+
| [`tsdoc-require-2/require-label`](./docs/rules/required-tags/require-label.md) | require @label tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
80
|
+
| [`tsdoc-require-2/require-link`](./docs/rules/required-tags/require-link.md) | require @link tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
81
|
+
| [`tsdoc-require-2/require-override`](./docs/rules/required-tags/require-override.md) | require @override tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
82
|
+
| [`tsdoc-require-2/require-package-documentation`](./docs/rules/required-tags/require-package-documentation.md) | require @packageDocumentation tag in TSDoc blocks for exported declarations. | — | — | ✅ | ✅ |
|
|
83
|
+
| [`tsdoc-require-2/require-param`](./docs/rules/required-tags/require-param.md) | require @param tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
84
|
+
| [`tsdoc-require-2/require-private-remarks`](./docs/rules/required-tags/require-private-remarks.md) | require @privateRemarks tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
85
|
+
| [`tsdoc-require-2/require-public`](./docs/rules/required-tags/require-public.md) | require @public tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
86
|
+
| [`tsdoc-require-2/require-readonly`](./docs/rules/required-tags/require-readonly.md) | require @readonly tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
87
|
+
| [`tsdoc-require-2/require-remarks`](./docs/rules/required-tags/require-remarks.md) | require @remarks tag in TSDoc blocks for exported declarations. | — | ✅ | ✅ | ✅ |
|
|
88
|
+
| [`tsdoc-require-2/require-returns`](./docs/rules/required-tags/require-returns.md) | require @returns tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
89
|
+
| [`tsdoc-require-2/require-sealed`](./docs/rules/required-tags/require-sealed.md) | require @sealed tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
90
|
+
| [`tsdoc-require-2/require-see`](./docs/rules/required-tags/require-see.md) | require @see tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
91
|
+
| [`tsdoc-require-2/require-throws`](./docs/rules/required-tags/require-throws.md) | require @throws tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
92
|
+
| [`tsdoc-require-2/require-type-param`](./docs/rules/required-tags/require-type-param.md) | require @typeParam tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
93
|
+
| [`tsdoc-require-2/require-virtual`](./docs/rules/required-tags/require-virtual.md) | require @virtual tag in TSDoc blocks for exported declarations. | — | — | — | ✅ |
|
|
94
|
+
|
|
95
|
+
<!-- END_RULES_TABLE -->
|
|
96
|
+
|
|
97
|
+
## Rule docs
|
|
98
|
+
|
|
99
|
+
- Core rule: [docs/rules/require.md](./docs/rules/require.md)
|
|
100
|
+
- Required-tag index: [docs/rules/required-tags.md](./docs/rules/required-tags.md)
|
|
101
|
+
|
|
102
|
+
## Development helpers
|
|
103
|
+
|
|
104
|
+
- Regenerate README sections:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npm run sync:readme
|
|
68
108
|
```
|
|
69
109
|
|
|
70
|
-
|
|
110
|
+
- Check README generated sections in CI:
|
|
71
111
|
|
|
72
|
-
```
|
|
73
|
-
|
|
112
|
+
```bash
|
|
113
|
+
npm run sync:readme:check
|
|
74
114
|
```
|
|
75
115
|
|
|
76
|
-
|
|
116
|
+
## License
|
|
77
117
|
|
|
78
|
-
|
|
79
|
-
// eslint.config.mjs
|
|
80
|
-
import tsParser from "@typescript-eslint/parser";
|
|
81
|
-
import tsdocRequire from "eslint-plugin-tsdoc-require-2";
|
|
118
|
+
MIT © Nick2bad4u
|
|
82
119
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
120
|
+
## Contributors ✨
|
|
121
|
+
|
|
122
|
+
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
|
123
|
+
[](#contributors-)
|
|
124
|
+
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
|
125
|
+
|
|
126
|
+
Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):
|
|
127
|
+
|
|
128
|
+
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
|
129
|
+
<!-- prettier-ignore-start -->
|
|
130
|
+
<!-- markdownlint-disable -->
|
|
131
|
+
<table>
|
|
132
|
+
<tbody>
|
|
133
|
+
<tr>
|
|
134
|
+
<td align="center" valign="top" width="25%"><a href="https://github.com/Nick2bad4u"><img src="https://avatars.githubusercontent.com/u/20943337?v=4?s=80" width="80px;" alt="Nick2bad4u"/><br /><sub><b>Nick2bad4u</b></sub></a><br /><a href="https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/issues?q=author%3ANick2bad4u" title="Bug reports">🐛</a> <a href="https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/commits?author=Nick2bad4u" title="Code">💻</a> <a href="https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/commits?author=Nick2bad4u" title="Documentation">📖</a> <a href="#ideas-Nick2bad4u" title="Ideas, Planning, & Feedback">🤔</a> <a href="#infra-Nick2bad4u" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-Nick2bad4u" title="Maintenance">🚧</a> <a href="https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/pulls?q=is%3Apr+reviewed-by%3ANick2bad4u" title="Reviewed Pull Requests">👀</a> <a href="https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/commits?author=Nick2bad4u" title="Tests">⚠️</a> <a href="#tool-Nick2bad4u" title="Tools">🔧</a></td>
|
|
135
|
+
<td align="center" valign="top" width="25%"><a href="https://snyk.io/"><img src="https://avatars.githubusercontent.com/u/19733683?v=4?s=80" width="80px;" alt="Snyk bot"/><br /><sub><b>Snyk bot</b></sub></a><br /><a href="#security-snyk-bot" title="Security">🛡️</a> <a href="#infra-snyk-bot" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-snyk-bot" title="Maintenance">🚧</a> <a href="https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/pulls?q=is%3Apr+reviewed-by%3Asnyk-bot" title="Reviewed Pull Requests">👀</a></td>
|
|
136
|
+
<td align="center" valign="top" width="25%"><a href="https://www.stepsecurity.io/"><img src="https://avatars.githubusercontent.com/u/89328645?v=4?s=80" width="80px;" alt="StepSecurity Bot"/><br /><sub><b>StepSecurity Bot</b></sub></a><br /><a href="#security-step-security-bot" title="Security">🛡️</a> <a href="#infra-step-security-bot" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-step-security-bot" title="Maintenance">🚧</a></td>
|
|
137
|
+
<td align="center" valign="top" width="25%"><a href="https://github.com/apps/dependabot"><img src="https://avatars.githubusercontent.com/in/29110?v=4?s=80" width="80px;" alt="dependabot[bot]"/><br /><sub><b>dependabot[bot]</b></sub></a><br /><a href="#infra-dependabot[bot]" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#security-dependabot[bot]" title="Security">🛡️</a></td>
|
|
138
|
+
</tr>
|
|
139
|
+
<tr>
|
|
140
|
+
<td align="center" valign="top" width="25%"><a href="https://github.com/apps/github-actions"><img src="https://avatars.githubusercontent.com/in/15368?v=4?s=80" width="80px;" alt="github-actions[bot]"/><br /><sub><b>github-actions[bot]</b></sub></a><br /><a href="https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/commits?author=github-actions[bot]" title="Code">💻</a> <a href="#infra-github-actions[bot]" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#platform-github-actions[bot]" title="Packaging/porting to new platform">📦</a></td>
|
|
141
|
+
</tr>
|
|
142
|
+
</tbody>
|
|
143
|
+
</table>
|
|
103
144
|
|
|
104
|
-
|
|
145
|
+
<!-- markdownlint-restore -->
|
|
146
|
+
<!-- prettier-ignore-end -->
|
|
105
147
|
|
|
106
|
-
|
|
148
|
+
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.optionSchema = exports.enforceableEntityKinds = exports.defaultRuleOptions = exports.createTagRule = exports.createRequireTagRuleListener = void 0;
|
|
4
|
+
const utils_1 = require("@typescript-eslint/utils");
|
|
5
|
+
const createTagRule =
|
|
6
|
+
// eslint-disable-next-line total-functions/no-hidden-type-assertions -- RuleCreator generic is required to support plugin-specific docs.recommended metadata field.
|
|
7
|
+
utils_1.ESLintUtils.RuleCreator((ruleName) => `https://github.com/Nick2bad4u/eslint-plugin-tsdoc-require-2/blob/main/docs/rules/required-tags.md#${ruleName}`);
|
|
8
|
+
exports.createTagRule = createTagRule;
|
|
9
|
+
const enforceableEntityKinds = [
|
|
10
|
+
"class",
|
|
11
|
+
"enum",
|
|
12
|
+
"function",
|
|
13
|
+
"interface",
|
|
14
|
+
"object",
|
|
15
|
+
"type",
|
|
16
|
+
"variable",
|
|
17
|
+
];
|
|
18
|
+
exports.enforceableEntityKinds = enforceableEntityKinds;
|
|
19
|
+
const defaultEnforceFor = [...enforceableEntityKinds];
|
|
20
|
+
const defaultRuleOptions = [
|
|
21
|
+
{
|
|
22
|
+
enforceFor: defaultEnforceFor,
|
|
23
|
+
includeNonExported: false,
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
exports.defaultRuleOptions = defaultRuleOptions;
|
|
27
|
+
const optionSchema = {
|
|
28
|
+
additionalProperties: false,
|
|
29
|
+
properties: {
|
|
30
|
+
enforceFor: {
|
|
31
|
+
items: {
|
|
32
|
+
enum: [...enforceableEntityKinds],
|
|
33
|
+
type: "string",
|
|
34
|
+
},
|
|
35
|
+
type: "array",
|
|
36
|
+
uniqueItems: true,
|
|
37
|
+
},
|
|
38
|
+
includeNonExported: {
|
|
39
|
+
default: false,
|
|
40
|
+
description: "Also enforce on non-exported declarations (opt-in).",
|
|
41
|
+
type: "boolean",
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
type: "object",
|
|
45
|
+
};
|
|
46
|
+
exports.optionSchema = optionSchema;
|
|
47
|
+
const assertUnreachable = (value) => {
|
|
48
|
+
throw new Error(`Unexpected node type: ${String(value)}`);
|
|
49
|
+
};
|
|
50
|
+
const isWordCharacter = (character) => {
|
|
51
|
+
if (character === undefined) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return /\w/u.test(character);
|
|
55
|
+
};
|
|
56
|
+
const hasRequiredTag = (commentText, tagName) => {
|
|
57
|
+
let searchStartIndex = 0;
|
|
58
|
+
while (searchStartIndex < commentText.length) {
|
|
59
|
+
const tagIndex = commentText.indexOf(tagName, searchStartIndex);
|
|
60
|
+
if (tagIndex === -1) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
const beforeCharacter = tagIndex > 0 ? commentText[tagIndex - 1] : undefined;
|
|
64
|
+
const afterCharacter = commentText[tagIndex + tagName.length];
|
|
65
|
+
const hasBoundaryBefore = !isWordCharacter(beforeCharacter);
|
|
66
|
+
const hasBoundaryAfter = !isWordCharacter(afterCharacter);
|
|
67
|
+
if (hasBoundaryBefore && hasBoundaryAfter) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
searchStartIndex = tagIndex + tagName.length;
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
};
|
|
74
|
+
const getEntityDisplayName = (name) => name ?? "<default export>";
|
|
75
|
+
const isSupportedDeclaration = (node) => node.type === utils_1.AST_NODE_TYPES.ClassDeclaration ||
|
|
76
|
+
node.type === utils_1.AST_NODE_TYPES.FunctionDeclaration ||
|
|
77
|
+
node.type === utils_1.AST_NODE_TYPES.TSDeclareFunction ||
|
|
78
|
+
node.type === utils_1.AST_NODE_TYPES.TSEnumDeclaration ||
|
|
79
|
+
node.type === utils_1.AST_NODE_TYPES.TSInterfaceDeclaration ||
|
|
80
|
+
node.type === utils_1.AST_NODE_TYPES.TSTypeAliasDeclaration ||
|
|
81
|
+
node.type === utils_1.AST_NODE_TYPES.VariableDeclaration;
|
|
82
|
+
const isSupportedDefaultExportExpression = (node) => node.type === utils_1.AST_NODE_TYPES.ArrowFunctionExpression ||
|
|
83
|
+
node.type === utils_1.AST_NODE_TYPES.ClassExpression ||
|
|
84
|
+
node.type === utils_1.AST_NODE_TYPES.FunctionExpression ||
|
|
85
|
+
node.type === utils_1.AST_NODE_TYPES.ObjectExpression;
|
|
86
|
+
const getExpressionKind = (node) => {
|
|
87
|
+
if (node.type === utils_1.AST_NODE_TYPES.ArrowFunctionExpression ||
|
|
88
|
+
node.type === utils_1.AST_NODE_TYPES.FunctionExpression) {
|
|
89
|
+
return "function";
|
|
90
|
+
}
|
|
91
|
+
if (node.type === utils_1.AST_NODE_TYPES.ClassExpression) {
|
|
92
|
+
return "class";
|
|
93
|
+
}
|
|
94
|
+
if (node.type === utils_1.AST_NODE_TYPES.ObjectExpression) {
|
|
95
|
+
return "object";
|
|
96
|
+
}
|
|
97
|
+
return assertUnreachable(node);
|
|
98
|
+
};
|
|
99
|
+
const getTSDocCommentNode = (sourceCode, node) => {
|
|
100
|
+
const comments = sourceCode.getCommentsBefore(node);
|
|
101
|
+
const nearestComment = comments.at(-1);
|
|
102
|
+
if (nearestComment === undefined) {
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
if (nearestComment.type !== utils_1.AST_TOKEN_TYPES.Block) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
if (!nearestComment.value.startsWith("*")) {
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const nearestCommentLoc = nearestComment.loc;
|
|
112
|
+
const nodeLoc = node.loc;
|
|
113
|
+
if (nearestCommentLoc === null || nodeLoc === null) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
const lineGap = nodeLoc.start.line - nearestCommentLoc.end.line;
|
|
117
|
+
if (lineGap < 0 || lineGap > 1) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
return nearestComment;
|
|
121
|
+
};
|
|
122
|
+
const createTargetKey = (target) => {
|
|
123
|
+
const [start, end] = target.reportNode.range;
|
|
124
|
+
return `${start}:${end}:${target.kind}:${target.name ?? ""}`;
|
|
125
|
+
};
|
|
126
|
+
const declarationTargets = (declaration) => {
|
|
127
|
+
if (declaration.type === utils_1.AST_NODE_TYPES.ClassDeclaration) {
|
|
128
|
+
return [
|
|
129
|
+
{
|
|
130
|
+
commentNode: declaration,
|
|
131
|
+
kind: "class",
|
|
132
|
+
name: declaration.id?.name,
|
|
133
|
+
reportNode: declaration,
|
|
134
|
+
},
|
|
135
|
+
];
|
|
136
|
+
}
|
|
137
|
+
if (declaration.type === utils_1.AST_NODE_TYPES.FunctionDeclaration ||
|
|
138
|
+
declaration.type === utils_1.AST_NODE_TYPES.TSDeclareFunction) {
|
|
139
|
+
return [
|
|
140
|
+
{
|
|
141
|
+
commentNode: declaration,
|
|
142
|
+
kind: "function",
|
|
143
|
+
name: declaration.id?.name,
|
|
144
|
+
reportNode: declaration,
|
|
145
|
+
},
|
|
146
|
+
];
|
|
147
|
+
}
|
|
148
|
+
if (declaration.type === utils_1.AST_NODE_TYPES.TSEnumDeclaration) {
|
|
149
|
+
return [
|
|
150
|
+
{
|
|
151
|
+
commentNode: declaration,
|
|
152
|
+
kind: "enum",
|
|
153
|
+
name: declaration.id.name,
|
|
154
|
+
reportNode: declaration,
|
|
155
|
+
},
|
|
156
|
+
];
|
|
157
|
+
}
|
|
158
|
+
if (declaration.type === utils_1.AST_NODE_TYPES.TSInterfaceDeclaration) {
|
|
159
|
+
return [
|
|
160
|
+
{
|
|
161
|
+
commentNode: declaration,
|
|
162
|
+
kind: "interface",
|
|
163
|
+
name: declaration.id.name,
|
|
164
|
+
reportNode: declaration,
|
|
165
|
+
},
|
|
166
|
+
];
|
|
167
|
+
}
|
|
168
|
+
if (declaration.type === utils_1.AST_NODE_TYPES.TSTypeAliasDeclaration) {
|
|
169
|
+
return [
|
|
170
|
+
{
|
|
171
|
+
commentNode: declaration,
|
|
172
|
+
kind: "type",
|
|
173
|
+
name: declaration.id.name,
|
|
174
|
+
reportNode: declaration,
|
|
175
|
+
},
|
|
176
|
+
];
|
|
177
|
+
}
|
|
178
|
+
if (declaration.type === utils_1.AST_NODE_TYPES.VariableDeclaration) {
|
|
179
|
+
return declaration.declarations.flatMap((declarator) => {
|
|
180
|
+
if (declarator.id.type !== utils_1.AST_NODE_TYPES.Identifier) {
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
return [
|
|
184
|
+
{
|
|
185
|
+
commentNode: declaration,
|
|
186
|
+
kind: "variable",
|
|
187
|
+
name: declarator.id.name,
|
|
188
|
+
reportNode: declarator,
|
|
189
|
+
},
|
|
190
|
+
];
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
return assertUnreachable(declaration);
|
|
194
|
+
};
|
|
195
|
+
const declarationTargetsWithCommentNode = (declaration, commentNode) => declarationTargets(declaration).map((target) => ({
|
|
196
|
+
...target,
|
|
197
|
+
commentNode,
|
|
198
|
+
}));
|
|
199
|
+
const createRequireTagRuleListener = (context, requiredTag) => {
|
|
200
|
+
const declarationsByName = new Map();
|
|
201
|
+
const checkedTargets = new Set();
|
|
202
|
+
const sourceCode = context.sourceCode;
|
|
203
|
+
const ruleOption = context.options.at(0);
|
|
204
|
+
const enabledKinds = new Set(ruleOption?.enforceFor ?? defaultEnforceFor);
|
|
205
|
+
const includeNonExported = ruleOption?.includeNonExported ?? false;
|
|
206
|
+
const checkTarget = (target) => {
|
|
207
|
+
if (!enabledKinds.has(target.kind)) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const targetKey = createTargetKey(target);
|
|
211
|
+
if (checkedTargets.has(targetKey)) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
checkedTargets.add(targetKey);
|
|
215
|
+
const commentNode = getTSDocCommentNode(sourceCode, target.commentNode);
|
|
216
|
+
if (commentNode === null) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
if (hasRequiredTag(commentNode.value, requiredTag)) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
context.report({
|
|
223
|
+
data: {
|
|
224
|
+
entityKind: target.kind,
|
|
225
|
+
entityName: getEntityDisplayName(target.name),
|
|
226
|
+
tagName: requiredTag,
|
|
227
|
+
},
|
|
228
|
+
messageId: "missingTag",
|
|
229
|
+
node: target.reportNode,
|
|
230
|
+
});
|
|
231
|
+
};
|
|
232
|
+
const checkDeclarationWithExportComment = (declaration, exportNode) => {
|
|
233
|
+
for (const target of declarationTargetsWithCommentNode(declaration, exportNode)) {
|
|
234
|
+
checkTarget(target);
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const trackDeclarationTargets = (declaration) => {
|
|
238
|
+
for (const target of declarationTargets(declaration)) {
|
|
239
|
+
if (target.name === undefined) {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
declarationsByName.set(target.name, target);
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
const checkIdentifierExport = (identifier) => {
|
|
246
|
+
const target = declarationsByName.get(identifier.name);
|
|
247
|
+
if (target !== undefined) {
|
|
248
|
+
checkTarget(target);
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
return {
|
|
252
|
+
ExportDefaultDeclaration(exportNode) {
|
|
253
|
+
const { declaration } = exportNode;
|
|
254
|
+
if (declaration.type === utils_1.AST_NODE_TYPES.Identifier) {
|
|
255
|
+
checkIdentifierExport(declaration);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
if (isSupportedDeclaration(declaration)) {
|
|
259
|
+
checkDeclarationWithExportComment(declaration, exportNode);
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
if (isSupportedDefaultExportExpression(declaration)) {
|
|
263
|
+
checkTarget({
|
|
264
|
+
commentNode: exportNode,
|
|
265
|
+
kind: getExpressionKind(declaration),
|
|
266
|
+
name: undefined,
|
|
267
|
+
reportNode: declaration,
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
ExportNamedDeclaration(exportNode) {
|
|
272
|
+
if (exportNode.declaration !== null &&
|
|
273
|
+
isSupportedDeclaration(exportNode.declaration)) {
|
|
274
|
+
checkDeclarationWithExportComment(exportNode.declaration, exportNode);
|
|
275
|
+
}
|
|
276
|
+
if (exportNode.source !== null) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
for (const specifier of exportNode.specifiers) {
|
|
280
|
+
if (specifier.type !== utils_1.AST_NODE_TYPES.ExportSpecifier) {
|
|
281
|
+
continue;
|
|
282
|
+
}
|
|
283
|
+
checkIdentifierExport(specifier.local);
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
Program(programNode) {
|
|
287
|
+
declarationsByName.clear();
|
|
288
|
+
checkedTargets.clear();
|
|
289
|
+
for (const statement of programNode.body) {
|
|
290
|
+
if (includeNonExported && isSupportedDeclaration(statement)) {
|
|
291
|
+
for (const target of declarationTargetsWithCommentNode(statement, statement)) {
|
|
292
|
+
checkTarget(target);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
if (isSupportedDeclaration(statement)) {
|
|
296
|
+
trackDeclarationTargets(statement);
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
if (statement.type === utils_1.AST_NODE_TYPES.ExportNamedDeclaration &&
|
|
300
|
+
statement.declaration !== null &&
|
|
301
|
+
isSupportedDeclaration(statement.declaration)) {
|
|
302
|
+
trackDeclarationTargets(statement.declaration);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
},
|
|
306
|
+
};
|
|
307
|
+
};
|
|
308
|
+
exports.createRequireTagRuleListener = createRequireTagRuleListener;
|
|
309
|
+
//# sourceMappingURL=require-tag-factory.js.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { JSONSchema, TSESLint } from "@typescript-eslint/utils";
|
|
2
|
+
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
3
|
+
type EntityKind = "class" | "enum" | "function" | "interface" | "object" | "type" | "variable";
|
|
4
|
+
type RuleDocs = {
|
|
5
|
+
recommended: boolean;
|
|
6
|
+
};
|
|
7
|
+
type TagRuleContext = Readonly<TSESLint.RuleContext<TagRuleMessageIds, TagRuleOptions>>;
|
|
8
|
+
type TagRuleModule = ESLintUtils.RuleModule<TagRuleMessageIds, TagRuleOptions, RuleDocs>;
|
|
9
|
+
declare const createTagRule: ReturnType<typeof ESLintUtils.RuleCreator<RuleDocs>>;
|
|
10
|
+
type RuleOption = {
|
|
11
|
+
enforceFor?: readonly EntityKind[];
|
|
12
|
+
includeNonExported?: boolean;
|
|
13
|
+
};
|
|
14
|
+
type TagRuleDefinition = {
|
|
15
|
+
readonly ruleName: string;
|
|
16
|
+
readonly tagName: `@${string}`;
|
|
17
|
+
};
|
|
18
|
+
type TagRuleMessageIds = "missingTag";
|
|
19
|
+
type TagRuleOptions = [RuleOption];
|
|
20
|
+
declare const enforceableEntityKinds: readonly EntityKind[];
|
|
21
|
+
declare const defaultRuleOptions: TagRuleOptions;
|
|
22
|
+
declare const optionSchema: JSONSchema.JSONSchema4;
|
|
23
|
+
declare const createRequireTagRuleListener: (context: Readonly<TSESLint.RuleContext<TagRuleMessageIds, TagRuleOptions>>, requiredTag: `@${string}`) => TSESLint.RuleListener;
|
|
24
|
+
export type { EntityKind, RuleDocs, RuleOption, TagRuleContext, TagRuleDefinition, TagRuleMessageIds, TagRuleModule, TagRuleOptions, };
|
|
25
|
+
export { createRequireTagRuleListener, createTagRule, defaultRuleOptions, enforceableEntityKinds, optionSchema, };
|
|
26
|
+
//# sourceMappingURL=require-tag-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"require-tag-factory.d.ts","sourceRoot":"","sources":["../../src/internal/require-tag-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAY,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EAGH,WAAW,EACd,MAAM,0BAA0B,CAAC;AAElC,KAAK,UAAU,GACT,OAAO,GACP,MAAM,GACN,UAAU,GACV,WAAW,GACX,QAAQ,GACR,MAAM,GACN,UAAU,CAAC;AAEjB,KAAK,QAAQ,GAAG;IACZ,WAAW,EAAE,OAAO,CAAC;CACxB,CAAC;AACF,KAAK,cAAc,GAAG,QAAQ,CAC1B,QAAQ,CAAC,WAAW,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAC1D,CAAC;AACF,KAAK,aAAa,GAAG,WAAW,CAAC,UAAU,CACvC,iBAAiB,EACjB,cAAc,EACd,QAAQ,CACX,CAAC;AAEF,QAAA,MAAM,aAAa,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,CAKnE,CAAC;AAEN,KAAK,UAAU,GAAG;IACd,UAAU,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAiBF,KAAK,iBAAiB,GAAG;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,IAAI,MAAM,EAAE,CAAC;CAClC,CAAC;AAEF,KAAK,iBAAiB,GAAG,YAAY,CAAC;AAEtC,KAAK,cAAc,GAAG,CAAC,UAAU,CAAC,CAAC;AASnC,QAAA,MAAM,sBAAsB,EAAE,SAAS,UAAU,EAQhD,CAAC;AAIF,QAAA,MAAM,kBAAkB,EAAE,cAKzB,CAAC;AAEF,QAAA,MAAM,YAAY,EAAE,UAAU,CAAC,WAkB9B,CAAC;AAoNF,QAAA,MAAM,4BAA4B,GAC9B,SAAS,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,EAC1E,aAAa,IAAI,MAAM,EAAE,KAC1B,QAAQ,CAAC,YA2JX,CAAC;AAEF,YAAY,EACR,UAAU,EACV,QAAQ,EACR,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,GACjB,CAAC;AACF,OAAO,EACH,4BAA4B,EAC5B,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,GACf,CAAC"}
|