eslint-plugin-jsdoc 39.3.6 → 39.3.13
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 +281 -52
- package/dist/WarnSettings.js +0 -5
- package/dist/WarnSettings.js.map +1 -1
- package/dist/alignTransform.js +69 -61
- package/dist/alignTransform.js.map +1 -1
- package/dist/bin/generateRule.js +7 -26
- package/dist/bin/generateRule.js.map +1 -1
- package/dist/defaultTagOrder.js +30 -14
- package/dist/defaultTagOrder.js.map +1 -1
- package/dist/exportParser.js +34 -143
- package/dist/exportParser.js.map +1 -1
- package/dist/generateRule.js +7 -26
- package/dist/generateRule.js.map +1 -1
- package/dist/getDefaultTagStructureForMode.js +189 -93
- package/dist/getDefaultTagStructureForMode.js.map +1 -1
- package/dist/index.js +0 -51
- package/dist/index.js.map +1 -1
- package/dist/iterateJsdoc.js +43 -206
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/jsdocUtils.js +71 -220
- package/dist/jsdocUtils.js.map +1 -1
- package/dist/rules/checkAccess.js +0 -8
- package/dist/rules/checkAccess.js.map +1 -1
- package/dist/rules/checkAlignment.js +0 -8
- package/dist/rules/checkAlignment.js.map +1 -1
- package/dist/rules/checkExamples.js +25 -63
- package/dist/rules/checkExamples.js.map +1 -1
- package/dist/rules/checkIndentation.js +0 -7
- package/dist/rules/checkIndentation.js.map +1 -1
- package/dist/rules/checkLineAlignment.js +9 -30
- package/dist/rules/checkLineAlignment.js.map +1 -1
- package/dist/rules/checkParamNames.js +11 -47
- package/dist/rules/checkParamNames.js.map +1 -1
- package/dist/rules/checkPropertyNames.js +1 -18
- package/dist/rules/checkPropertyNames.js.map +1 -1
- package/dist/rules/checkSyntax.js +2 -5
- package/dist/rules/checkSyntax.js.map +1 -1
- package/dist/rules/checkTagNames.js +0 -18
- package/dist/rules/checkTagNames.js.map +1 -1
- package/dist/rules/checkTypes.js +17 -46
- package/dist/rules/checkTypes.js.map +1 -1
- package/dist/rules/checkValues.js +0 -18
- package/dist/rules/checkValues.js.map +1 -1
- package/dist/rules/emptyTags.js +6 -11
- package/dist/rules/emptyTags.js.map +1 -1
- package/dist/rules/implementsOnClasses.js +0 -6
- package/dist/rules/implementsOnClasses.js.map +1 -1
- package/dist/rules/matchDescription.js +0 -20
- package/dist/rules/matchDescription.js.map +1 -1
- package/dist/rules/matchName.js +2 -17
- package/dist/rules/matchName.js.map +1 -1
- package/dist/rules/multilineBlocks.js +10 -34
- package/dist/rules/multilineBlocks.js.map +1 -1
- package/dist/rules/newlineAfterDescription.js +0 -8
- package/dist/rules/newlineAfterDescription.js.map +1 -1
- package/dist/rules/noBadBlocks.js +2 -16
- package/dist/rules/noBadBlocks.js.map +1 -1
- package/dist/rules/noDefaults.js +0 -7
- package/dist/rules/noDefaults.js.map +1 -1
- package/dist/rules/noMissingSyntax.js +2 -16
- package/dist/rules/noMissingSyntax.js.map +1 -1
- package/dist/rules/noMultiAsterisks.js +2 -16
- package/dist/rules/noMultiAsterisks.js.map +1 -1
- package/dist/rules/noRestrictedSyntax.js +3 -9
- package/dist/rules/noRestrictedSyntax.js.map +1 -1
- package/dist/rules/noTypes.js +0 -7
- package/dist/rules/noTypes.js.map +1 -1
- package/dist/rules/noUndefinedTypes.js +13 -34
- package/dist/rules/noUndefinedTypes.js.map +1 -1
- package/dist/rules/requireAsteriskPrefix.js +2 -26
- package/dist/rules/requireAsteriskPrefix.js.map +1 -1
- package/dist/rules/requireDescription.js +0 -17
- package/dist/rules/requireDescription.js.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.js +13 -34
- package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
- package/dist/rules/requireExample.js +0 -9
- package/dist/rules/requireExample.js.map +1 -1
- package/dist/rules/requireFileOverview.js +0 -16
- package/dist/rules/requireFileOverview.js.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.js +2 -16
- package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
- package/dist/rules/requireJsdoc.js +13 -58
- package/dist/rules/requireJsdoc.js.map +1 -1
- package/dist/rules/requireParam.js +6 -53
- package/dist/rules/requireParam.js.map +1 -1
- package/dist/rules/requireParamDescription.js +0 -4
- package/dist/rules/requireParamDescription.js.map +1 -1
- package/dist/rules/requireParamName.js +0 -4
- package/dist/rules/requireParamName.js.map +1 -1
- package/dist/rules/requireParamType.js +0 -4
- package/dist/rules/requireParamType.js.map +1 -1
- package/dist/rules/requireProperty.js +0 -9
- package/dist/rules/requireProperty.js.map +1 -1
- package/dist/rules/requirePropertyDescription.js +0 -4
- package/dist/rules/requirePropertyDescription.js.map +1 -1
- package/dist/rules/requirePropertyName.js +0 -4
- package/dist/rules/requirePropertyName.js.map +1 -1
- package/dist/rules/requirePropertyType.js +0 -4
- package/dist/rules/requirePropertyType.js.map +1 -1
- package/dist/rules/requireReturns.js +13 -23
- package/dist/rules/requireReturns.js.map +1 -1
- package/dist/rules/requireReturnsCheck.js +12 -20
- package/dist/rules/requireReturnsCheck.js.map +1 -1
- package/dist/rules/requireReturnsDescription.js +0 -6
- package/dist/rules/requireReturnsDescription.js.map +1 -1
- package/dist/rules/requireReturnsType.js +0 -4
- package/dist/rules/requireReturnsType.js.map +1 -1
- package/dist/rules/requireThrows.js +6 -15
- package/dist/rules/requireThrows.js.map +1 -1
- package/dist/rules/requireYields.js +13 -29
- package/dist/rules/requireYields.js.map +1 -1
- package/dist/rules/requireYieldsCheck.js +8 -29
- package/dist/rules/requireYieldsCheck.js.map +1 -1
- package/dist/rules/sortTags.js +17 -30
- package/dist/rules/sortTags.js.map +1 -1
- package/dist/rules/tagLines.js +0 -26
- package/dist/rules/tagLines.js.map +1 -1
- package/dist/rules/validTypes.js +22 -53
- package/dist/rules/validTypes.js.map +1 -1
- package/dist/tagNames.js +7 -4
- package/dist/tagNames.js.map +1 -1
- package/dist/utils/hasReturnValue.js +22 -66
- package/dist/utils/hasReturnValue.js.map +1 -1
- package/package.json +16 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireFileOverview.js","names":["defaultTags","file","initialCommentsOnly","mustExist","preventDuplicates","setDefaults","state","globalTags","hasDuplicates","hasTag","hasNonCommentBeforeTag","iterateJsdoc","jsdocNode","utils","context","tags","options","tagName","Object","keys","targetTagName","getPreferredTagName","hasDuplicate","hasNonComment","range","exit","entries","obj","getPreferredTagNameObject","blocked","reportSettings","replacement","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","patternProperties","type","nonComment","node"],"sources":["../../src/rules/requireFileOverview.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst defaultTags = {\n file: {\n initialCommentsOnly: true,\n mustExist: true,\n preventDuplicates: true,\n },\n};\n\nconst setDefaults = (state) => {\n // First iteration\n if (!state.globalTags) {\n state.globalTags = {};\n state.hasDuplicates = {};\n state.hasTag = {};\n state.hasNonCommentBeforeTag = {};\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n state,\n utils,\n context,\n}) => {\n const {\n tags = defaultTags,\n } = context.options[0] || {};\n\n setDefaults(state);\n\n for (const tagName of Object.keys(tags)) {\n const targetTagName = utils.getPreferredTagName({\n tagName,\n });\n\n const hasTag = targetTagName && utils.hasTag(targetTagName);\n\n state.hasTag[tagName] = hasTag || state.hasTag[tagName];\n\n const hasDuplicate = state.hasDuplicates[tagName];\n\n if (hasDuplicate === false) {\n // Was marked before, so if a tag now, is a dupe\n state.hasDuplicates[tagName] = hasTag;\n } else if (!hasDuplicate && hasTag) {\n // No dupes set before, but has first tag, so change state\n // from `undefined` to `false` so can detect next time\n state.hasDuplicates[tagName] = false;\n state.hasNonCommentBeforeTag[tagName] = state.hasNonComment &&\n state.hasNonComment < jsdocNode.range[0];\n }\n }\n}, {\n exit ({\n context,\n state,\n utils,\n }) {\n setDefaults(state);\n const {\n tags = defaultTags,\n } = context.options[0] || {};\n\n for (const [\n tagName,\n {\n mustExist = false,\n preventDuplicates = false,\n initialCommentsOnly = false,\n },\n ] of Object.entries(tags)) {\n const obj = utils.getPreferredTagNameObject({\n tagName,\n });\n if (obj && obj.blocked) {\n utils.reportSettings(\n `\\`settings.jsdoc.tagNamePreference\\` cannot block @${obj.tagName} ` +\n 'for the `require-file-overview` rule',\n );\n } else {\n const targetTagName = obj && obj.replacement || obj;\n if (mustExist && !state.hasTag[tagName]) {\n utils.reportSettings(`Missing @${targetTagName}`);\n }\n\n if (preventDuplicates && state.hasDuplicates[tagName]) {\n utils.reportSettings(\n `Duplicate @${targetTagName}`,\n );\n }\n\n if (initialCommentsOnly &&\n state.hasNonCommentBeforeTag[tagName]\n ) {\n utils.reportSettings(\n `@${targetTagName} should be at the beginning of the file`,\n );\n }\n }\n }\n },\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that all files have one `@file`, `@fileoverview`, or `@overview` tag at the beginning of the file.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-file-overview',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n initialCommentsOnly: {\n type: 'boolean',\n },\n mustExist: {\n type: 'boolean',\n },\n preventDuplicates: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n nonComment ({\n state,\n node,\n }) {\n if (!state.hasNonComment) {\n state.hasNonComment = node.range[0];\n }\n },\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"requireFileOverview.js","names":["defaultTags","file","initialCommentsOnly","mustExist","preventDuplicates","setDefaults","state","globalTags","hasDuplicates","hasTag","hasNonCommentBeforeTag","iterateJsdoc","jsdocNode","utils","context","tags","options","tagName","Object","keys","targetTagName","getPreferredTagName","hasDuplicate","hasNonComment","range","exit","entries","obj","getPreferredTagNameObject","blocked","reportSettings","replacement","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","patternProperties","type","nonComment","node"],"sources":["../../src/rules/requireFileOverview.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst defaultTags = {\n file: {\n initialCommentsOnly: true,\n mustExist: true,\n preventDuplicates: true,\n },\n};\n\nconst setDefaults = (state) => {\n // First iteration\n if (!state.globalTags) {\n state.globalTags = {};\n state.hasDuplicates = {};\n state.hasTag = {};\n state.hasNonCommentBeforeTag = {};\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n state,\n utils,\n context,\n}) => {\n const {\n tags = defaultTags,\n } = context.options[0] || {};\n\n setDefaults(state);\n\n for (const tagName of Object.keys(tags)) {\n const targetTagName = utils.getPreferredTagName({\n tagName,\n });\n\n const hasTag = targetTagName && utils.hasTag(targetTagName);\n\n state.hasTag[tagName] = hasTag || state.hasTag[tagName];\n\n const hasDuplicate = state.hasDuplicates[tagName];\n\n if (hasDuplicate === false) {\n // Was marked before, so if a tag now, is a dupe\n state.hasDuplicates[tagName] = hasTag;\n } else if (!hasDuplicate && hasTag) {\n // No dupes set before, but has first tag, so change state\n // from `undefined` to `false` so can detect next time\n state.hasDuplicates[tagName] = false;\n state.hasNonCommentBeforeTag[tagName] = state.hasNonComment &&\n state.hasNonComment < jsdocNode.range[0];\n }\n }\n}, {\n exit ({\n context,\n state,\n utils,\n }) {\n setDefaults(state);\n const {\n tags = defaultTags,\n } = context.options[0] || {};\n\n for (const [\n tagName,\n {\n mustExist = false,\n preventDuplicates = false,\n initialCommentsOnly = false,\n },\n ] of Object.entries(tags)) {\n const obj = utils.getPreferredTagNameObject({\n tagName,\n });\n if (obj && obj.blocked) {\n utils.reportSettings(\n `\\`settings.jsdoc.tagNamePreference\\` cannot block @${obj.tagName} ` +\n 'for the `require-file-overview` rule',\n );\n } else {\n const targetTagName = obj && obj.replacement || obj;\n if (mustExist && !state.hasTag[tagName]) {\n utils.reportSettings(`Missing @${targetTagName}`);\n }\n\n if (preventDuplicates && state.hasDuplicates[tagName]) {\n utils.reportSettings(\n `Duplicate @${targetTagName}`,\n );\n }\n\n if (initialCommentsOnly &&\n state.hasNonCommentBeforeTag[tagName]\n ) {\n utils.reportSettings(\n `@${targetTagName} should be at the beginning of the file`,\n );\n }\n }\n }\n },\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that all files have one `@file`, `@fileoverview`, or `@overview` tag at the beginning of the file.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-file-overview',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n initialCommentsOnly: {\n type: 'boolean',\n },\n mustExist: {\n type: 'boolean',\n },\n preventDuplicates: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n nonComment ({\n state,\n node,\n }) {\n if (!state.hasNonComment) {\n state.hasNonComment = node.range[0];\n }\n },\n});\n"],"mappings":"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"}
|
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
var _default = (0, _iterateJsdoc.default)(({
|
|
13
10
|
sourceCode,
|
|
14
11
|
utils,
|
|
@@ -20,23 +17,20 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
20
17
|
const [mainCircumstance, {
|
|
21
18
|
tags
|
|
22
19
|
} = {}] = context.options;
|
|
23
|
-
|
|
24
20
|
const checkHyphens = (jsdocTag, targetTagName, circumstance = mainCircumstance) => {
|
|
25
21
|
const always = !circumstance || circumstance === 'always';
|
|
26
22
|
const desc = utils.getTagDescription(jsdocTag);
|
|
27
|
-
|
|
28
23
|
if (!desc.trim()) {
|
|
29
24
|
return;
|
|
30
25
|
}
|
|
31
|
-
|
|
32
26
|
const startsWithHyphen = /^\s*-/u.test(desc);
|
|
33
|
-
|
|
34
27
|
if (always) {
|
|
35
28
|
if (!startsWithHyphen) {
|
|
36
29
|
report(`There must be a hyphen before @${targetTagName} description.`, fixer => {
|
|
37
30
|
const lineIndex = jsdocTag.line;
|
|
38
|
-
const sourceLines = sourceCode.getText(jsdocNode).split('\n');
|
|
31
|
+
const sourceLines = sourceCode.getText(jsdocNode).split('\n');
|
|
39
32
|
|
|
33
|
+
// Get start index of description, accounting for multi-line descriptions
|
|
40
34
|
const description = desc.split('\n')[0];
|
|
41
35
|
const descriptionIndex = sourceLines[lineIndex].lastIndexOf(description);
|
|
42
36
|
const replacementLine = sourceLines[lineIndex].slice(0, descriptionIndex) + '- ' + description;
|
|
@@ -53,18 +47,14 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
53
47
|
}, jsdocTag);
|
|
54
48
|
}
|
|
55
49
|
};
|
|
56
|
-
|
|
57
50
|
utils.forEachPreferredTag('param', checkHyphens);
|
|
58
|
-
|
|
59
51
|
if (tags) {
|
|
60
52
|
const tagEntries = Object.entries(tags);
|
|
61
|
-
|
|
62
53
|
for (const [tagName, circumstance] of tagEntries) {
|
|
63
54
|
if (tagName === '*') {
|
|
64
55
|
const preferredParamTag = utils.getPreferredTagName({
|
|
65
56
|
tagName: 'param'
|
|
66
57
|
});
|
|
67
|
-
|
|
68
58
|
for (const {
|
|
69
59
|
tag
|
|
70
60
|
} of jsdoc.tags) {
|
|
@@ -73,15 +63,12 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
73
63
|
})) {
|
|
74
64
|
continue;
|
|
75
65
|
}
|
|
76
|
-
|
|
77
66
|
utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {
|
|
78
67
|
checkHyphens(jsdocTag, targetTagName, circumstance);
|
|
79
68
|
});
|
|
80
69
|
}
|
|
81
|
-
|
|
82
70
|
continue;
|
|
83
71
|
}
|
|
84
|
-
|
|
85
72
|
utils.forEachPreferredTag(tagName, (jsdocTag, targetTagName) => {
|
|
86
73
|
checkHyphens(jsdocTag, targetTagName, circumstance);
|
|
87
74
|
});
|
|
@@ -121,7 +108,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
121
108
|
type: 'layout'
|
|
122
109
|
}
|
|
123
110
|
});
|
|
124
|
-
|
|
125
111
|
exports.default = _default;
|
|
126
112
|
module.exports = exports.default;
|
|
127
113
|
//# sourceMappingURL=requireHyphenBeforeParamDescription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireHyphenBeforeParamDescription.js","names":["iterateJsdoc","sourceCode","utils","report","context","jsdoc","jsdocNode","mainCircumstance","tags","options","checkHyphens","jsdocTag","targetTagName","circumstance","always","desc","getTagDescription","trim","startsWithHyphen","test","fixer","lineIndex","line","sourceLines","getText","split","description","descriptionIndex","lastIndexOf","replacementLine","slice","splice","replacement","join","replaceText","unwantedPart","exec","replace","length","forEachPreferredTag","tagEntries","Object","entries","tagName","preferredParamTag","getPreferredTagName","tag","some","tagNme","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type","additionalProperties","properties","anyOf","patternProperties"],"sources":["../../src/rules/requireHyphenBeforeParamDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n sourceCode,\n utils,\n report,\n context,\n jsdoc,\n jsdocNode,\n}) => {\n const [\n mainCircumstance,\n {\n tags,\n } = {},\n ] = context.options;\n\n const checkHyphens = (jsdocTag, targetTagName, circumstance = mainCircumstance) => {\n const always = !circumstance || circumstance === 'always';\n const desc = utils.getTagDescription(jsdocTag);\n if (!desc.trim()) {\n return;\n }\n\n const startsWithHyphen = (/^\\s*-/u).test(desc);\n if (always) {\n if (!startsWithHyphen) {\n report(`There must be a hyphen before @${targetTagName} description.`, (fixer) => {\n const lineIndex = jsdocTag.line;\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n\n // Get start index of description, accounting for multi-line descriptions\n const description = desc.split('\\n')[0];\n const descriptionIndex = sourceLines[lineIndex].lastIndexOf(description);\n\n const replacementLine = sourceLines[lineIndex]\n .slice(0, descriptionIndex) + '- ' + description;\n sourceLines.splice(lineIndex, 1, replacementLine);\n const replacement = sourceLines.join('\\n');\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n } else if (startsWithHyphen) {\n report(`There must be no hyphen before @${targetTagName} description.`, (fixer) => {\n const [\n unwantedPart,\n ] = /^\\s*-\\s*/u.exec(desc);\n\n const replacement = sourceCode\n .getText(jsdocNode)\n .replace(desc, desc.slice(unwantedPart.length));\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n };\n\n utils.forEachPreferredTag('param', checkHyphens);\n if (tags) {\n const tagEntries = Object.entries(tags);\n for (const [\n tagName,\n circumstance,\n ] of tagEntries) {\n if (tagName === '*') {\n const preferredParamTag = utils.getPreferredTagName({\n tagName: 'param',\n });\n for (const {\n tag,\n } of jsdoc.tags) {\n if (tag === preferredParamTag || tagEntries.some(([\n tagNme,\n ]) => {\n return tagNme !== '*' && tagNme === tag;\n })) {\n continue;\n }\n\n utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n\n continue;\n }\n\n utils.forEachPreferredTag(tagName, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires a hyphen before the `@param` description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-hyphen-before-param-description',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n anyOf: [\n {\n patternProperties: {\n '.*': {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n },\n type: 'object',\n },\n {\n enum: [\n 'any',\n ],\n type: 'string',\n },\n ],\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"requireHyphenBeforeParamDescription.js","names":["iterateJsdoc","sourceCode","utils","report","context","jsdoc","jsdocNode","mainCircumstance","tags","options","checkHyphens","jsdocTag","targetTagName","circumstance","always","desc","getTagDescription","trim","startsWithHyphen","test","fixer","lineIndex","line","sourceLines","getText","split","description","descriptionIndex","lastIndexOf","replacementLine","slice","splice","replacement","join","replaceText","unwantedPart","exec","replace","length","forEachPreferredTag","tagEntries","Object","entries","tagName","preferredParamTag","getPreferredTagName","tag","some","tagNme","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","type","additionalProperties","properties","anyOf","patternProperties"],"sources":["../../src/rules/requireHyphenBeforeParamDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n sourceCode,\n utils,\n report,\n context,\n jsdoc,\n jsdocNode,\n}) => {\n const [\n mainCircumstance,\n {\n tags,\n } = {},\n ] = context.options;\n\n const checkHyphens = (jsdocTag, targetTagName, circumstance = mainCircumstance) => {\n const always = !circumstance || circumstance === 'always';\n const desc = utils.getTagDescription(jsdocTag);\n if (!desc.trim()) {\n return;\n }\n\n const startsWithHyphen = (/^\\s*-/u).test(desc);\n if (always) {\n if (!startsWithHyphen) {\n report(`There must be a hyphen before @${targetTagName} description.`, (fixer) => {\n const lineIndex = jsdocTag.line;\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n');\n\n // Get start index of description, accounting for multi-line descriptions\n const description = desc.split('\\n')[0];\n const descriptionIndex = sourceLines[lineIndex].lastIndexOf(description);\n\n const replacementLine = sourceLines[lineIndex]\n .slice(0, descriptionIndex) + '- ' + description;\n sourceLines.splice(lineIndex, 1, replacementLine);\n const replacement = sourceLines.join('\\n');\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n } else if (startsWithHyphen) {\n report(`There must be no hyphen before @${targetTagName} description.`, (fixer) => {\n const [\n unwantedPart,\n ] = /^\\s*-\\s*/u.exec(desc);\n\n const replacement = sourceCode\n .getText(jsdocNode)\n .replace(desc, desc.slice(unwantedPart.length));\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n };\n\n utils.forEachPreferredTag('param', checkHyphens);\n if (tags) {\n const tagEntries = Object.entries(tags);\n for (const [\n tagName,\n circumstance,\n ] of tagEntries) {\n if (tagName === '*') {\n const preferredParamTag = utils.getPreferredTagName({\n tagName: 'param',\n });\n for (const {\n tag,\n } of jsdoc.tags) {\n if (tag === preferredParamTag || tagEntries.some(([\n tagNme,\n ]) => {\n return tagNme !== '*' && tagNme === tag;\n })) {\n continue;\n }\n\n utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n\n continue;\n }\n\n utils.forEachPreferredTag(tagName, (jsdocTag, targetTagName) => {\n checkHyphens(jsdocTag, targetTagName, circumstance);\n });\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires a hyphen before the `@param` description.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-hyphen-before-param-description',\n },\n fixable: 'code',\n schema: [\n {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n tags: {\n anyOf: [\n {\n patternProperties: {\n '.*': {\n enum: [\n 'always', 'never',\n ],\n type: 'string',\n },\n },\n type: 'object',\n },\n {\n enum: [\n 'any',\n ],\n type: 'string',\n },\n ],\n },\n },\n type: 'object',\n },\n ],\n type: 'layout',\n },\n});\n"],"mappings":"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"}
|
|
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _jsdoccomment = require("@es-joy/jsdoccomment");
|
|
9
|
-
|
|
10
8
|
var _exportParser = _interopRequireDefault(require("../exportParser"));
|
|
11
|
-
|
|
12
9
|
var _iterateJsdoc = require("../iterateJsdoc");
|
|
13
|
-
|
|
14
10
|
var _jsdocUtils = _interopRequireDefault(require("../jsdocUtils"));
|
|
15
|
-
|
|
16
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
-
|
|
18
12
|
const OPTIONS_SCHEMA = {
|
|
19
13
|
additionalProperties: false,
|
|
20
14
|
properties: {
|
|
@@ -139,16 +133,14 @@ const OPTIONS_SCHEMA = {
|
|
|
139
133
|
},
|
|
140
134
|
type: 'object'
|
|
141
135
|
};
|
|
142
|
-
|
|
143
136
|
const getOption = (context, baseObject, option, key) => {
|
|
144
|
-
if (context.options[0] && option in context.options[0] && (
|
|
137
|
+
if (context.options[0] && option in context.options[0] && (
|
|
138
|
+
// Todo: boolean shouldn't be returning property, but tests currently require
|
|
145
139
|
typeof context.options[0][option] === 'boolean' || key in context.options[0][option])) {
|
|
146
140
|
return context.options[0][option][key];
|
|
147
141
|
}
|
|
148
|
-
|
|
149
142
|
return baseObject.properties[key].default;
|
|
150
143
|
};
|
|
151
|
-
|
|
152
144
|
const getOptions = context => {
|
|
153
145
|
const {
|
|
154
146
|
publicOnly,
|
|
@@ -170,38 +162,30 @@ const getOptions = context => {
|
|
|
170
162
|
if (!publicOnly) {
|
|
171
163
|
return false;
|
|
172
164
|
}
|
|
173
|
-
|
|
174
165
|
const properties = {};
|
|
175
|
-
|
|
176
166
|
for (const prop of Object.keys(baseObj.properties)) {
|
|
177
167
|
const opt = getOption(context, baseObj, 'publicOnly', prop);
|
|
178
168
|
properties[prop] = opt;
|
|
179
169
|
}
|
|
180
|
-
|
|
181
170
|
return properties;
|
|
182
171
|
})(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),
|
|
183
172
|
require: (baseObj => {
|
|
184
173
|
const properties = {};
|
|
185
|
-
|
|
186
174
|
for (const prop of Object.keys(baseObj.properties)) {
|
|
187
175
|
const opt = getOption(context, baseObj, 'require', prop);
|
|
188
176
|
properties[prop] = opt;
|
|
189
177
|
}
|
|
190
|
-
|
|
191
178
|
return properties;
|
|
192
179
|
})(OPTIONS_SCHEMA.properties.require)
|
|
193
180
|
};
|
|
194
181
|
};
|
|
195
|
-
|
|
196
182
|
var _default = {
|
|
197
183
|
create(context) {
|
|
198
184
|
const sourceCode = context.getSourceCode();
|
|
199
185
|
const settings = (0, _iterateJsdoc.getSettings)(context);
|
|
200
|
-
|
|
201
186
|
if (!settings) {
|
|
202
187
|
return {};
|
|
203
188
|
}
|
|
204
|
-
|
|
205
189
|
const {
|
|
206
190
|
require: requireOption,
|
|
207
191
|
contexts,
|
|
@@ -212,9 +196,9 @@ var _default = {
|
|
|
212
196
|
fixerMessage,
|
|
213
197
|
minLineCount
|
|
214
198
|
} = getOptions(context);
|
|
215
|
-
|
|
216
199
|
const checkJsDoc = (info, handler, node) => {
|
|
217
|
-
if (
|
|
200
|
+
if (
|
|
201
|
+
// Optimize
|
|
218
202
|
minLineCount !== undefined || contexts.some(({
|
|
219
203
|
minLineCount: count
|
|
220
204
|
}) => {
|
|
@@ -222,14 +206,11 @@ var _default = {
|
|
|
222
206
|
})) {
|
|
223
207
|
const underMinLine = count => {
|
|
224
208
|
var _sourceCode$getText$m;
|
|
225
|
-
|
|
226
209
|
return count !== undefined && count > (((_sourceCode$getText$m = sourceCode.getText(node).match(/\n/gu)) === null || _sourceCode$getText$m === void 0 ? void 0 : _sourceCode$getText$m.length) ?? 0) + 1;
|
|
227
210
|
};
|
|
228
|
-
|
|
229
211
|
if (underMinLine(minLineCount)) {
|
|
230
212
|
return;
|
|
231
213
|
}
|
|
232
|
-
|
|
233
214
|
const {
|
|
234
215
|
minLineCount: contextMinLineCount
|
|
235
216
|
} = contexts.find(({
|
|
@@ -237,52 +218,45 @@ var _default = {
|
|
|
237
218
|
}) => {
|
|
238
219
|
return ctxt === (info.selector || node.type);
|
|
239
220
|
}) || {};
|
|
240
|
-
|
|
241
221
|
if (underMinLine(contextMinLineCount)) {
|
|
242
222
|
return;
|
|
243
223
|
}
|
|
244
224
|
}
|
|
245
|
-
|
|
246
225
|
const jsDocNode = (0, _jsdoccomment.getJSDocComment)(sourceCode, node, settings);
|
|
247
|
-
|
|
248
226
|
if (jsDocNode) {
|
|
249
227
|
return;
|
|
250
|
-
}
|
|
251
|
-
// setters or getters) being reported
|
|
252
|
-
|
|
228
|
+
}
|
|
253
229
|
|
|
230
|
+
// For those who have options configured against ANY constructors (or
|
|
231
|
+
// setters or getters) being reported
|
|
254
232
|
if (_jsdocUtils.default.exemptSpeciaMethods({
|
|
255
233
|
tags: []
|
|
256
234
|
}, node, context, [OPTIONS_SCHEMA])) {
|
|
257
235
|
return;
|
|
258
236
|
}
|
|
259
|
-
|
|
260
|
-
|
|
237
|
+
if (
|
|
238
|
+
// Avoid reporting param-less, return-less functions (when
|
|
261
239
|
// `exemptEmptyFunctions` option is set)
|
|
262
|
-
exemptEmptyFunctions && info.isFunctionContext ||
|
|
240
|
+
exemptEmptyFunctions && info.isFunctionContext ||
|
|
241
|
+
// Avoid reporting param-less, return-less constructor methods (when
|
|
263
242
|
// `exemptEmptyConstructors` option is set)
|
|
264
243
|
exemptEmptyConstructors && _jsdocUtils.default.isConstructor(node)) {
|
|
265
244
|
const functionParameterNames = _jsdocUtils.default.getFunctionParameterNames(node);
|
|
266
|
-
|
|
267
245
|
if (!functionParameterNames.length && !_jsdocUtils.default.hasReturnValue(node)) {
|
|
268
246
|
return;
|
|
269
247
|
}
|
|
270
248
|
}
|
|
271
|
-
|
|
272
249
|
const fix = fixer => {
|
|
273
250
|
// Default to one line break if the `minLines`/`maxLines` settings allow
|
|
274
251
|
const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;
|
|
275
252
|
let baseNode = (0, _jsdoccomment.getReducedASTNode)(node, sourceCode);
|
|
276
253
|
const decorator = (0, _jsdoccomment.getDecorator)(baseNode);
|
|
277
|
-
|
|
278
254
|
if (decorator) {
|
|
279
255
|
baseNode = decorator;
|
|
280
256
|
}
|
|
281
|
-
|
|
282
257
|
const indent = _jsdocUtils.default.getIndent({
|
|
283
258
|
text: sourceCode.getText(baseNode, baseNode.loc.start.column)
|
|
284
259
|
});
|
|
285
|
-
|
|
286
260
|
const {
|
|
287
261
|
inlineCommentBlock
|
|
288
262
|
} = contexts.find(({
|
|
@@ -293,7 +267,6 @@ var _default = {
|
|
|
293
267
|
const insertion = (inlineCommentBlock ? `/** ${fixerMessage}` : `/**\n${indent}*${fixerMessage}\n${indent}`) + `*/${'\n'.repeat(lines)}${indent.slice(0, -1)}`;
|
|
294
268
|
return fixer.insertTextBefore(baseNode, insertion);
|
|
295
269
|
};
|
|
296
|
-
|
|
297
270
|
const report = () => {
|
|
298
271
|
const {
|
|
299
272
|
start
|
|
@@ -312,7 +285,6 @@ var _default = {
|
|
|
312
285
|
node
|
|
313
286
|
});
|
|
314
287
|
};
|
|
315
|
-
|
|
316
288
|
if (publicOnly) {
|
|
317
289
|
const opt = {
|
|
318
290
|
ancestorsOnly: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.ancestorsOnly) ?? false),
|
|
@@ -320,9 +292,7 @@ var _default = {
|
|
|
320
292
|
initModuleExports: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.cjs) ?? true),
|
|
321
293
|
initWindow: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.window) ?? false)
|
|
322
294
|
};
|
|
323
|
-
|
|
324
295
|
const exported = _exportParser.default.isUncommentedExport(node, sourceCode, opt, settings);
|
|
325
|
-
|
|
326
296
|
if (exported) {
|
|
327
297
|
report();
|
|
328
298
|
}
|
|
@@ -330,83 +300,68 @@ var _default = {
|
|
|
330
300
|
report();
|
|
331
301
|
}
|
|
332
302
|
};
|
|
333
|
-
|
|
334
303
|
const hasOption = prop => {
|
|
335
304
|
return requireOption[prop] || contexts.some(ctxt => {
|
|
336
305
|
return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;
|
|
337
306
|
});
|
|
338
307
|
};
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
308
|
+
return {
|
|
309
|
+
..._jsdocUtils.default.getContextObject(_jsdocUtils.default.enforcedContexts(context, []), checkJsDoc),
|
|
342
310
|
ArrowFunctionExpression(node) {
|
|
343
311
|
if (!hasOption('ArrowFunctionExpression')) {
|
|
344
312
|
return;
|
|
345
313
|
}
|
|
346
|
-
|
|
347
314
|
if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) || ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node === node.parent.value) {
|
|
348
315
|
checkJsDoc({
|
|
349
316
|
isFunctionContext: true
|
|
350
317
|
}, null, node);
|
|
351
318
|
}
|
|
352
319
|
},
|
|
353
|
-
|
|
354
320
|
ClassDeclaration(node) {
|
|
355
321
|
if (!hasOption('ClassDeclaration')) {
|
|
356
322
|
return;
|
|
357
323
|
}
|
|
358
|
-
|
|
359
324
|
checkJsDoc({
|
|
360
325
|
isFunctionContext: false
|
|
361
326
|
}, null, node);
|
|
362
327
|
},
|
|
363
|
-
|
|
364
328
|
ClassExpression(node) {
|
|
365
329
|
if (!hasOption('ClassExpression')) {
|
|
366
330
|
return;
|
|
367
331
|
}
|
|
368
|
-
|
|
369
332
|
checkJsDoc({
|
|
370
333
|
isFunctionContext: false
|
|
371
334
|
}, null, node);
|
|
372
335
|
},
|
|
373
|
-
|
|
374
336
|
FunctionDeclaration(node) {
|
|
375
337
|
if (!hasOption('FunctionDeclaration')) {
|
|
376
338
|
return;
|
|
377
339
|
}
|
|
378
|
-
|
|
379
340
|
checkJsDoc({
|
|
380
341
|
isFunctionContext: true
|
|
381
342
|
}, null, node);
|
|
382
343
|
},
|
|
383
|
-
|
|
384
344
|
FunctionExpression(node) {
|
|
385
345
|
if (!hasOption('FunctionExpression')) {
|
|
386
346
|
return;
|
|
387
347
|
}
|
|
388
|
-
|
|
389
348
|
if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) || ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node === node.parent.value) {
|
|
390
349
|
checkJsDoc({
|
|
391
350
|
isFunctionContext: true
|
|
392
351
|
}, null, node);
|
|
393
352
|
}
|
|
394
353
|
},
|
|
395
|
-
|
|
396
354
|
MethodDefinition(node) {
|
|
397
355
|
if (!hasOption('MethodDefinition')) {
|
|
398
356
|
return;
|
|
399
357
|
}
|
|
400
|
-
|
|
401
358
|
checkJsDoc({
|
|
402
359
|
isFunctionContext: true,
|
|
403
360
|
selector: 'MethodDefinition'
|
|
404
361
|
}, null, node.value);
|
|
405
362
|
}
|
|
406
|
-
|
|
407
363
|
};
|
|
408
364
|
},
|
|
409
|
-
|
|
410
365
|
meta: {
|
|
411
366
|
docs: {
|
|
412
367
|
category: 'Stylistic Issues',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireJsdoc.js","names":["OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","default","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","undefined","baseObj","prop","Object","keys","opt","create","sourceCode","getSourceCode","settings","getSettings","requireOption","checkJsDoc","info","handler","node","some","count","underMinLine","getText","match","length","contextMinLineCount","find","ctxt","selector","jsDocNode","getJSDocComment","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import {\n getJSDocComment,\n getReducedASTNode,\n getDecorator,\n} from '@es-joy/jsdoccomment';\nimport exportParser from '../exportParser';\nimport {\n getSettings,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n minLineCount: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n minLineCount: {\n type: 'integer',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return baseObject.properties[key].default;\n};\n\nconst getOptions = (context) => {\n const {\n publicOnly,\n contexts = [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n minLineCount = undefined,\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'require', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\nexport default {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const {\n require: requireOption,\n contexts,\n publicOnly,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n minLineCount,\n } = getOptions(context);\n\n const checkJsDoc = (info, handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some(({\n minLineCount: count,\n }) => {\n return count !== undefined;\n })\n ) {\n const underMinLine = (count) => {\n return count !== undefined && count >\n (sourceCode.getText(node).match(/\\n/gu)?.length ?? 0) + 1;\n };\n\n if (underMinLine(minLineCount)) {\n return;\n }\n\n const {\n minLineCount: contextMinLineCount,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === (info.selector || node.type);\n }) || {};\n if (underMinLine(contextMinLineCount)) {\n return;\n }\n }\n\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n tags: [],\n }, node, context, [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n baseNode,\n baseNode.loc.start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === node.type;\n }) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const {\n start,\n } = node.loc;\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start: node.loc.start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, []),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n MethodDefinition (node) {\n if (!hasOption('MethodDefinition')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n selector: 'MethodDefinition',\n }, null, node.value);\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requireJsdoc.js","names":["OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","default","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","undefined","baseObj","prop","Object","keys","opt","create","sourceCode","getSourceCode","settings","getSettings","requireOption","checkJsDoc","info","handler","node","some","count","underMinLine","getText","match","length","contextMinLineCount","find","ctxt","selector","jsDocNode","getJSDocComment","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import {\n getJSDocComment,\n getReducedASTNode,\n getDecorator,\n} from '@es-joy/jsdoccomment';\nimport exportParser from '../exportParser';\nimport {\n getSettings,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n minLineCount: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n minLineCount: {\n type: 'integer',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return baseObject.properties[key].default;\n};\n\nconst getOptions = (context) => {\n const {\n publicOnly,\n contexts = [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n minLineCount = undefined,\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'require', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\nexport default {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const {\n require: requireOption,\n contexts,\n publicOnly,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n minLineCount,\n } = getOptions(context);\n\n const checkJsDoc = (info, handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some(({\n minLineCount: count,\n }) => {\n return count !== undefined;\n })\n ) {\n const underMinLine = (count) => {\n return count !== undefined && count >\n (sourceCode.getText(node).match(/\\n/gu)?.length ?? 0) + 1;\n };\n\n if (underMinLine(minLineCount)) {\n return;\n }\n\n const {\n minLineCount: contextMinLineCount,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === (info.selector || node.type);\n }) || {};\n if (underMinLine(contextMinLineCount)) {\n return;\n }\n }\n\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n tags: [],\n }, node, context, [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n baseNode,\n baseNode.loc.start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === node.type;\n }) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const {\n start,\n } = node.loc;\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start: node.loc.start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, []),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n MethodDefinition (node) {\n if (!hasOption('MethodDefinition')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n selector: 'MethodDefinition',\n }, null, node.value);\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"mappings":"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"}
|