eslint-plugin-crisp 1.4.13 → 1.4.16
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/index.js +2 -0
- package/package.json +1 -1
- package/recommended-ts.js +1 -0
- package/rules/jsdoc-description-multiline.js +45 -0
package/index.js
CHANGED
|
@@ -17,6 +17,7 @@ import ruleImportGroupOrder from "./rules/import-group-order.js";
|
|
|
17
17
|
import ruleJsdocAlignParams from "./rules/jsdoc-align-params.js";
|
|
18
18
|
import ruleJsdocCheckIndentation from "./rules/jsdoc-check-indentation.js";
|
|
19
19
|
import ruleJsdocCheckOptionalParams from "./rules/jsdoc-check-optional-params.js";
|
|
20
|
+
import ruleJsdocDescriptionMultiline from "./rules/jsdoc-description-multiline.js";
|
|
20
21
|
import ruleJsdocEnforceAccess from "./rules/jsdoc-enforce-access.js";
|
|
21
22
|
import ruleJsdocEnforceClassdesc from "./rules/jsdoc-enforce-classdesc.js";
|
|
22
23
|
import ruleJsdocNoParamReturn from "./rules/jsdoc-no-param-return.js";
|
|
@@ -83,6 +84,7 @@ const plugin = {
|
|
|
83
84
|
"jsdoc-align-params": ruleJsdocAlignParams,
|
|
84
85
|
"jsdoc-check-indentation": ruleJsdocCheckIndentation,
|
|
85
86
|
"jsdoc-check-optional-params": ruleJsdocCheckOptionalParams,
|
|
87
|
+
"jsdoc-description-multiline": ruleJsdocDescriptionMultiline,
|
|
86
88
|
"jsdoc-enforce-access": ruleJsdocEnforceAccess,
|
|
87
89
|
"jsdoc-enforce-classdesc": ruleJsdocEnforceClassdesc,
|
|
88
90
|
"jsdoc-no-param-return": ruleJsdocNoParamReturn,
|
package/package.json
CHANGED
package/recommended-ts.js
CHANGED
|
@@ -184,6 +184,7 @@ export default function configRecommendedTS(pluginCrisp) {
|
|
|
184
184
|
|
|
185
185
|
// Crisp JSDoc rules
|
|
186
186
|
"crisp/jsdoc-description-length": "error",
|
|
187
|
+
"crisp/jsdoc-description-multiline": "error",
|
|
187
188
|
"crisp/jsdoc-no-param-return": "error",
|
|
188
189
|
|
|
189
190
|
// General JSDoc rules
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import iterateJsdoc from "eslint-plugin-jsdoc/iterateJsdoc.js";
|
|
2
|
+
|
|
3
|
+
export default iterateJsdoc.default(({
|
|
4
|
+
context,
|
|
5
|
+
indent,
|
|
6
|
+
jsdocNode,
|
|
7
|
+
sourceCode
|
|
8
|
+
}) => {
|
|
9
|
+
if (jsdocNode.loc.start.line !== jsdocNode.loc.end.line) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const description = sourceCode
|
|
14
|
+
.getText(jsdocNode)
|
|
15
|
+
.slice(3, -2)
|
|
16
|
+
.trim();
|
|
17
|
+
|
|
18
|
+
// Keep empty and tag-only JSDoc comments unchanged.
|
|
19
|
+
if (!description || description.startsWith("@")) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
context.report({
|
|
24
|
+
node: jsdocNode,
|
|
25
|
+
messageId: "multiline",
|
|
26
|
+
fix(fixer) {
|
|
27
|
+
return fixer.replaceText(
|
|
28
|
+
jsdocNode,
|
|
29
|
+
`/**\n${indent} * ${description}\n${indent} */`
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}, {
|
|
34
|
+
meta: {
|
|
35
|
+
type: "layout",
|
|
36
|
+
docs: {
|
|
37
|
+
description: "Enforce multiline formatting for function JSDoc descriptions."
|
|
38
|
+
},
|
|
39
|
+
fixable: "whitespace",
|
|
40
|
+
schema: [],
|
|
41
|
+
messages: {
|
|
42
|
+
multiline: "Function JSDoc descriptions must use multiline formatting."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|