eslint-plugin-jsdoc 37.0.1 → 37.2.0
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 +26 -0
- package/dist/alignTransform.js +3 -1
- package/dist/alignTransform.js.map +1 -1
- package/dist/bin/generateRule.js +2 -4
- package/dist/bin/generateRule.js.map +1 -1
- package/dist/exportParser.js +32 -18
- package/dist/exportParser.js.map +1 -1
- package/dist/generateRule.js +2 -4
- package/dist/generateRule.js.map +1 -1
- package/dist/iterateJsdoc.js +47 -37
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/jsdocUtils.js +37 -26
- package/dist/jsdocUtils.js.map +1 -1
- package/dist/rules/checkAccess.js.map +1 -1
- package/dist/rules/checkExamples.js +8 -5
- package/dist/rules/checkExamples.js.map +1 -1
- package/dist/rules/checkIndentation.js +3 -3
- package/dist/rules/checkIndentation.js.map +1 -1
- package/dist/rules/checkLineAlignment.js +6 -4
- package/dist/rules/checkLineAlignment.js.map +1 -1
- package/dist/rules/checkParamNames.js +17 -12
- package/dist/rules/checkParamNames.js.map +1 -1
- package/dist/rules/checkPropertyNames.js.map +1 -1
- package/dist/rules/checkTagNames.js +6 -6
- package/dist/rules/checkTagNames.js.map +1 -1
- package/dist/rules/checkTypes.js +10 -9
- package/dist/rules/checkTypes.js.map +1 -1
- package/dist/rules/checkValues.js.map +1 -1
- package/dist/rules/emptyTags.js +3 -2
- package/dist/rules/emptyTags.js.map +1 -1
- package/dist/rules/matchDescription.js.map +1 -1
- package/dist/rules/matchName.js +6 -4
- package/dist/rules/matchName.js.map +1 -1
- package/dist/rules/multilineBlocks.js +4 -2
- package/dist/rules/multilineBlocks.js.map +1 -1
- package/dist/rules/newlineAfterDescription.js +1 -3
- package/dist/rules/newlineAfterDescription.js.map +1 -1
- package/dist/rules/noBadBlocks.js +3 -3
- package/dist/rules/noBadBlocks.js.map +1 -1
- package/dist/rules/noDefaults.js +7 -4
- package/dist/rules/noDefaults.js.map +1 -1
- package/dist/rules/noMissingSyntax.js.map +1 -1
- package/dist/rules/noMultiAsterisks.js +1 -1
- package/dist/rules/noMultiAsterisks.js.map +1 -1
- package/dist/rules/noRestrictedSyntax.js.map +1 -1
- package/dist/rules/noTypes.js +6 -3
- package/dist/rules/noTypes.js.map +1 -1
- package/dist/rules/noUndefinedTypes.js +14 -16
- package/dist/rules/noUndefinedTypes.js.map +1 -1
- package/dist/rules/requireAsteriskPrefix.js.map +1 -1
- package/dist/rules/requireDescription.js +10 -12
- package/dist/rules/requireDescription.js.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.js +6 -7
- package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
- package/dist/rules/requireExample.js +7 -8
- package/dist/rules/requireExample.js.map +1 -1
- package/dist/rules/requireFileOverview.js.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.js +10 -7
- package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
- package/dist/rules/requireJsdoc.js +12 -9
- package/dist/rules/requireJsdoc.js.map +1 -1
- package/dist/rules/requireParam.js +35 -31
- package/dist/rules/requireParam.js.map +1 -1
- package/dist/rules/requireProperty.js +3 -3
- package/dist/rules/requireProperty.js.map +1 -1
- package/dist/rules/requireReturns.js +1 -1
- package/dist/rules/requireReturns.js.map +1 -1
- package/dist/rules/requireReturnsCheck.js.map +1 -1
- package/dist/rules/requireThrows.js +4 -5
- package/dist/rules/requireThrows.js.map +1 -1
- package/dist/rules/requireYields.js +2 -4
- package/dist/rules/requireYields.js.map +1 -1
- package/dist/rules/tagLines.js +11 -8
- package/dist/rules/tagLines.js.map +1 -1
- package/dist/rules/validTypes.js +15 -13
- package/dist/rules/validTypes.js.map +1 -1
- package/package.json +52 -49
|
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
-
|
|
10
8
|
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
|
|
11
9
|
|
|
12
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -27,7 +25,8 @@ const rootNamer = (desiredRoots, currentIndex) => {
|
|
|
27
25
|
return [name, incremented, () => {
|
|
28
26
|
return rootNamer(desiredRoots, idx);
|
|
29
27
|
}];
|
|
30
|
-
};
|
|
28
|
+
}; // eslint-disable-next-line complexity
|
|
29
|
+
|
|
31
30
|
|
|
32
31
|
var _default = (0, _iterateJsdoc.default)(({
|
|
33
32
|
jsdoc,
|
|
@@ -79,7 +78,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
79
78
|
const paramIndex = {};
|
|
80
79
|
|
|
81
80
|
const hasParamIndex = cur => {
|
|
82
|
-
return
|
|
81
|
+
return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;
|
|
83
82
|
};
|
|
84
83
|
|
|
85
84
|
const getParamIndex = cur => {
|
|
@@ -90,9 +89,9 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
90
89
|
paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;
|
|
91
90
|
};
|
|
92
91
|
|
|
93
|
-
flattenedRoots.
|
|
92
|
+
for (const [idx, cur] of flattenedRoots.entries()) {
|
|
94
93
|
setParamIndex(cur, idx);
|
|
95
|
-
}
|
|
94
|
+
}
|
|
96
95
|
|
|
97
96
|
const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {
|
|
98
97
|
const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);
|
|
@@ -118,24 +117,27 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
118
117
|
return tag === preferredTagName;
|
|
119
118
|
});
|
|
120
119
|
let tagLineCount = 0;
|
|
121
|
-
|
|
120
|
+
|
|
121
|
+
for (const {
|
|
122
122
|
source
|
|
123
|
-
})
|
|
124
|
-
|
|
123
|
+
} of tags) {
|
|
124
|
+
for (const {
|
|
125
125
|
tokens: {
|
|
126
126
|
end
|
|
127
127
|
}
|
|
128
|
-
})
|
|
128
|
+
} of source) {
|
|
129
129
|
if (!end) {
|
|
130
130
|
tagLineCount++;
|
|
131
131
|
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
134
135
|
return tagLineCount;
|
|
135
136
|
};
|
|
136
137
|
|
|
137
138
|
let [nextRootName, incremented, namer] = rootNamer([...unnamedRootBase], autoIncrementBase);
|
|
138
|
-
|
|
139
|
+
|
|
140
|
+
for (const [functionParameterIdx, functionParameterName] of functionParameterNames.entries()) {
|
|
139
141
|
let inc;
|
|
140
142
|
|
|
141
143
|
if (Array.isArray(functionParameterName)) {
|
|
@@ -148,7 +150,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
148
150
|
rootName = matchedJsdoc.name;
|
|
149
151
|
|
|
150
152
|
if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {
|
|
151
|
-
|
|
153
|
+
continue;
|
|
152
154
|
}
|
|
153
155
|
} else {
|
|
154
156
|
rootName = nextRootName;
|
|
@@ -165,14 +167,14 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
165
167
|
const notCheckingNames = [];
|
|
166
168
|
|
|
167
169
|
if (!enableRestElementFixer && hasRestElement) {
|
|
168
|
-
|
|
170
|
+
continue;
|
|
169
171
|
}
|
|
170
172
|
|
|
171
173
|
if (!checkDestructuredRoots) {
|
|
172
|
-
|
|
174
|
+
continue;
|
|
173
175
|
}
|
|
174
176
|
|
|
175
|
-
names.
|
|
177
|
+
for (const [idx, paramName] of names.entries()) {
|
|
176
178
|
// Add root if the root name is not in the docs (and is not already
|
|
177
179
|
// in the tags to be fixed)
|
|
178
180
|
if (!jsdocParameterNames.find(({
|
|
@@ -207,11 +209,11 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
207
209
|
}
|
|
208
210
|
|
|
209
211
|
if (!checkDestructured) {
|
|
210
|
-
|
|
212
|
+
continue;
|
|
211
213
|
}
|
|
212
214
|
|
|
213
215
|
if (!checkRestProperty && rests[idx]) {
|
|
214
|
-
|
|
216
|
+
continue;
|
|
215
217
|
}
|
|
216
218
|
|
|
217
219
|
const fullParamName = `${rootName}.${paramName}`;
|
|
@@ -229,7 +231,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
229
231
|
if (notCheckingNames.find(name => {
|
|
230
232
|
return fullParamName.startsWith(name);
|
|
231
233
|
})) {
|
|
232
|
-
|
|
234
|
+
continue;
|
|
233
235
|
}
|
|
234
236
|
|
|
235
237
|
if (jsdocParameterNames && !jsdocParameterNames.find(({
|
|
@@ -244,8 +246,9 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
244
246
|
type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined
|
|
245
247
|
});
|
|
246
248
|
}
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
continue;
|
|
249
252
|
}
|
|
250
253
|
|
|
251
254
|
let funcParamName;
|
|
@@ -253,7 +256,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
253
256
|
|
|
254
257
|
if (typeof functionParameterName === 'object') {
|
|
255
258
|
if (!enableRestElementFixer && functionParameterName.restElement) {
|
|
256
|
-
|
|
259
|
+
continue;
|
|
257
260
|
}
|
|
258
261
|
|
|
259
262
|
funcParamName = functionParameterName.name;
|
|
@@ -274,7 +277,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
274
277
|
type
|
|
275
278
|
});
|
|
276
279
|
}
|
|
277
|
-
}
|
|
280
|
+
}
|
|
278
281
|
|
|
279
282
|
const fix = ({
|
|
280
283
|
functionParameterIdx,
|
|
@@ -316,9 +319,10 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
316
319
|
});
|
|
317
320
|
const firstNumber = jsdoc.source[0].number;
|
|
318
321
|
jsdoc.source.splice(sourceIndex, spliceCount, tokens);
|
|
319
|
-
|
|
322
|
+
|
|
323
|
+
for (const [idx, src] of jsdoc.source.slice(sourceIndex).entries()) {
|
|
320
324
|
src.number = firstNumber + sourceIndex + idx;
|
|
321
|
-
}
|
|
325
|
+
}
|
|
322
326
|
};
|
|
323
327
|
|
|
324
328
|
const offset = jsdoc.source.findIndex(({
|
|
@@ -339,20 +343,20 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
339
343
|
};
|
|
340
344
|
|
|
341
345
|
const fixer = () => {
|
|
342
|
-
|
|
346
|
+
for (const missingTag of missingTags) {
|
|
343
347
|
fix(missingTag);
|
|
344
|
-
}
|
|
348
|
+
}
|
|
345
349
|
};
|
|
346
350
|
|
|
347
351
|
if (missingTags.length && jsdoc.source.length === 1) {
|
|
348
352
|
utils.makeMultiline();
|
|
349
353
|
}
|
|
350
354
|
|
|
351
|
-
|
|
355
|
+
for (const {
|
|
352
356
|
functionParameterName
|
|
353
|
-
})
|
|
357
|
+
} of missingTags) {
|
|
354
358
|
utils.reportJSDoc(`Missing JSDoc @${preferredTagName} "${functionParameterName}" declaration.`, null, enableFixer ? fixer : null);
|
|
355
|
-
}
|
|
359
|
+
}
|
|
356
360
|
}, {
|
|
357
361
|
contextDefaults: true,
|
|
358
362
|
meta: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireParam.js"],"names":["rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","jsdoc","utils","context","preferredTagName","getPreferredTagName","tagName","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","checkTypesRegex","getRegexFromString","missingTags","functionParameterNames","getFunctionParameterNames","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","_","has","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","forEach","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterName","functionParameterIdx","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","default","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\ntype T = [string, () => T];\nconst rootNamer = (desiredRoots: string[], currentIndex: number): T => {\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = desiredRoots.shift();\n }\n\n return [name, incremented, () => {\n return rootNamer(desiredRoots, idx);\n }];\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n const preferredTagName = utils.getPreferredTagName({tagName: 'param'});\n if (!preferredTagName) {\n return;\n }\n const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {...tag,\n idx};\n });\n\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = ['root'],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const missingTags = [];\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n const paramIndex = {};\n const hasParamIndex = (cur) => {\n return _.has(paramIndex, utils.dropPathSegmentQuotes(String(cur)));\n };\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n flattenedRoots.forEach((cur, idx) => {\n setParamIndex(cur, idx);\n });\n\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({name, newAdd}) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return remainingRoot[1].names.includes(name);\n }\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({tag}) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n tags.forEach(({source}) => {\n source.forEach(({tokens: {end}}) => {\n if (!end) {\n tagLineCount++;\n }\n });\n });\n\n return tagLineCount;\n };\n\n let [nextRootName, incremented, namer] = rootNamer([...unnamedRootBase], autoIncrementBase);\n\n functionParameterNames.forEach((functionParameterName, functionParameterIdx) => {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n return;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [nextRootName, incremented, namer] = namer();\n }\n\n const {hasRestElement, hasPropertyRest, rests, names} = functionParameterName[1];\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n return;\n }\n\n if (!checkDestructuredRoots) {\n return;\n }\n\n names.forEach((paramName, idx) => {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({name}) => {\n return name === rootName;\n }) && !missingTags.find(({functionParameterName: fpn}) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({name}) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n return;\n }\n\n if (!checkRestProperty && rests[idx]) {\n return;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({name, type: paramType}) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n return;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({name}) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n });\n\n return;\n }\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n return;\n }\n funcParamName = functionParameterName.name;\n type = '{...any}';\n } else {\n funcParamName = functionParameterName;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({name}) => {\n return name === funcParamName;\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n });\n\n const fix = ({\n functionParameterIdx, functionParameterName, remove, inc, type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n jsdoc.tags.splice(tagIndex, spliceCount, {\n name: functionParameterName,\n newAdd: true,\n source: [tokens],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n jsdoc.source.slice(sourceIndex).forEach((src, idx) => {\n src.number = firstNumber + sourceIndex + idx;\n });\n };\n const offset = jsdoc.source.findIndex(({tokens: {tag, end}}) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n const fixer = () => {\n missingTags.forEach((missingTag) => {\n fix(missingTag);\n });\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n missingTags.forEach(({functionParameterName}) => {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireParam.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireParam.js"],"names":["rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","jsdoc","utils","context","preferredTagName","getPreferredTagName","tagName","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","checkTypesRegex","getRegexFromString","missingTags","functionParameterNames","getFunctionParameterNames","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","default","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\ntype T = [string, () => T];\nconst rootNamer = (desiredRoots: string[], currentIndex: number): T => {\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = desiredRoots.shift();\n }\n\n return [name, incremented, () => {\n return rootNamer(desiredRoots, idx);\n }];\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n const preferredTagName = utils.getPreferredTagName({tagName: 'param'});\n if (!preferredTagName) {\n return;\n }\n\n const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {...tag,\n idx};\n });\n\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = ['root'],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const missingTags = [];\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n const paramIndex = {};\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [idx, cur] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({name, newAdd}) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return remainingRoot[1].names.includes(name);\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({tag}) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {source} of tags) {\n for (const {tokens: {end}} of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [nextRootName, incremented, namer] = rootNamer([...unnamedRootBase], autoIncrementBase);\n\n for (const [functionParameterIdx, functionParameterName] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [nextRootName, incremented, namer] = namer();\n }\n\n const {hasRestElement, hasPropertyRest, rests, names} = functionParameterName[1];\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [idx, paramName] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({name}) => {\n return name === rootName;\n }) && !missingTags.find(({functionParameterName: fpn}) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({name}) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({name, type: paramType}) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({name}) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = functionParameterName.name;\n type = '{...any}';\n } else {\n funcParamName = functionParameterName;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({name}) => {\n return name === funcParamName;\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n const fix = ({\n functionParameterIdx, functionParameterName, remove, inc, type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n jsdoc.tags.splice(tagIndex, spliceCount, {\n name: functionParameterName,\n newAdd: true,\n source: [tokens],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [idx, src] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({tokens: {tag, end}}) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {functionParameterName} of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireParam.js"}
|
|
@@ -30,15 +30,15 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
for (const propertyAssociatedTag of propertyAssociatedTags) {
|
|
34
34
|
if (!['object', 'Object', 'PlainObject'].includes(propertyAssociatedTag.type)) {
|
|
35
|
-
|
|
35
|
+
continue;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
utils.reportJSDoc(`Missing JSDoc @${targetTagName}.`, null, () => {
|
|
39
39
|
utils.addTag(targetTagName);
|
|
40
40
|
});
|
|
41
|
-
}
|
|
41
|
+
}
|
|
42
42
|
}, {
|
|
43
43
|
iterateAllJsdocs: true,
|
|
44
44
|
meta: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireProperty.js"],"names":["utils","propertyAssociatedTags","filterTags","tag","includes","length","targetTagName","getPreferredTagName","tagName","hasATag","
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireProperty.js"],"names":["utils","propertyAssociatedTags","filterTags","tag","includes","length","targetTagName","getPreferredTagName","tagName","hasATag","propertyAssociatedTag","type","reportJSDoc","addTag","iterateAllJsdocs","meta","docs","description","url","fixable"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA;AAD2B,CAAD,KAEtB;AACJ,QAAMC,sBAAsB,GAAGD,KAAK,CAACE,UAAN,CAAiB,CAAC;AAACC,IAAAA;AAAD,GAAD,KAAW;AACzD,WAAO,CAAC,SAAD,EAAY,WAAZ,EAAyBC,QAAzB,CAAkCD,GAAlC,CAAP;AACD,GAF8B,CAA/B;;AAGA,MAAI,CAACF,sBAAsB,CAACI,MAA5B,EAAoC;AAClC;AACD;;AAED,QAAMC,aAAa,GAAGN,KAAK,CAACO,mBAAN,CAA0B;AAACC,IAAAA,OAAO,EAAE;AAAV,GAA1B,CAAtB;;AAEA,MAAIR,KAAK,CAACS,OAAN,CAAc,CAACH,aAAD,CAAd,CAAJ,EAAoC;AAClC;AACD;;AAED,OAAK,MAAMI,qBAAX,IAAoCT,sBAApC,EAA4D;AAC1D,QAAI,CAAC,CAAC,QAAD,EAAW,QAAX,EAAqB,aAArB,EAAoCG,QAApC,CAA6CM,qBAAqB,CAACC,IAAnE,CAAL,EAA+E;AAC7E;AACD;;AAEDX,IAAAA,KAAK,CAACY,WAAN,CAAmB,kBAAiBN,aAAc,GAAlD,EAAsD,IAAtD,EAA4D,MAAM;AAChEN,MAAAA,KAAK,CAACa,MAAN,CAAaP,aAAb;AACD,KAFD;AAGD;AACF,CAzBc,EAyBZ;AACDQ,EAAAA,gBAAgB,EAAE,IADjB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,sIADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,OAAO,EAAE,MALL;AAMJR,IAAAA,IAAI,EAAE;AANF;AAFL,CAzBY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n const propertyAssociatedTags = utils.filterTags(({tag}) => {\n return ['typedef', 'namespace'].includes(tag);\n });\n if (!propertyAssociatedTags.length) {\n return;\n }\n\n const targetTagName = utils.getPreferredTagName({tagName: 'property'});\n\n if (utils.hasATag([targetTagName])) {\n return;\n }\n\n for (const propertyAssociatedTag of propertyAssociatedTags) {\n if (!['object', 'Object', 'PlainObject'].includes(propertyAssociatedTag.type)) {\n continue;\n }\n\n utils.reportJSDoc(`Missing JSDoc @${targetTagName}.`, null, () => {\n utils.addTag(targetTagName);\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-property',\n },\n fixable: 'code',\n type: 'suggestion',\n },\n});\n"],"file":"requireProperty.js"}
|
|
@@ -92,7 +92,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
92
92
|
contextDefaults: true,
|
|
93
93
|
meta: {
|
|
94
94
|
docs: {
|
|
95
|
-
description: 'Requires returns are documented.',
|
|
95
|
+
description: 'Requires that returns are documented.',
|
|
96
96
|
url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-returns'
|
|
97
97
|
},
|
|
98
98
|
schema: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireReturns.js"],"names":["canSkip","utils","hasATag","avoidDocs","report","context","forceRequireReturn","forceReturnsWithAsync","options","tagName","getPreferredTagName","tags","getTags","length","iteratingFunction","isIteratingFunction","tag","missingReturnTag","shouldReport","isVirtualFunction","isAsync","hasTag","hasValueOrExecutorHasNonEmptyResolveValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","contexts","items","anyOf","comment","exemptedBy"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,OAAO,GAAIC,KAAD,IAAW;AACzB,SAAOA,KAAK,CAACC,OAAN,CAAc,CACnB;AACA;AACA;AACA;AACA;AACA,YANmB,EAOnB,SAPmB,EASnB;AACA;AACA,SAXmB,EAYnB,aAZmB,EAcnB;AACA,QAfmB,EAiBnB;AACA,aAlBmB,CAAd,KAoBLD,KAAK,CAACE,SAAN,EApBF;AAqBD,CAtBD;;eAwBe,2BAAa,CAAC;AAC3BC,EAAAA,MAD2B;AAE3BH,EAAAA,KAF2B;AAG3BI,EAAAA;AAH2B,CAAD,KAItB;AACJ,QAAM;AACJC,IAAAA,kBAAkB,GAAG,KADjB;AAEJC,IAAAA,qBAAqB,GAAG;AAFpB,MAGFF,OAAO,CAACG,OAAR,CAAgB,CAAhB,KAAsB,EAH1B,CADI,CAMJ;AACA;;AACA,MAAIR,OAAO,CAACC,KAAD,CAAX,EAAoB;AAClB;AACD;;AAED,QAAMQ,OAAO,GAAGR,KAAK,CAACS,mBAAN,CAA0B;AAACD,IAAAA,OAAO,EAAE;AAAV,GAA1B,CAAhB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireReturns.js"],"names":["canSkip","utils","hasATag","avoidDocs","report","context","forceRequireReturn","forceReturnsWithAsync","options","tagName","getPreferredTagName","tags","getTags","length","iteratingFunction","isIteratingFunction","tag","missingReturnTag","shouldReport","isVirtualFunction","isAsync","hasTag","hasValueOrExecutorHasNonEmptyResolveValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","checkConstructors","default","type","checkGetters","contexts","items","anyOf","comment","exemptedBy"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,OAAO,GAAIC,KAAD,IAAW;AACzB,SAAOA,KAAK,CAACC,OAAN,CAAc,CACnB;AACA;AACA;AACA;AACA;AACA,YANmB,EAOnB,SAPmB,EASnB;AACA;AACA,SAXmB,EAYnB,aAZmB,EAcnB;AACA,QAfmB,EAiBnB;AACA,aAlBmB,CAAd,KAoBLD,KAAK,CAACE,SAAN,EApBF;AAqBD,CAtBD;;eAwBe,2BAAa,CAAC;AAC3BC,EAAAA,MAD2B;AAE3BH,EAAAA,KAF2B;AAG3BI,EAAAA;AAH2B,CAAD,KAItB;AACJ,QAAM;AACJC,IAAAA,kBAAkB,GAAG,KADjB;AAEJC,IAAAA,qBAAqB,GAAG;AAFpB,MAGFF,OAAO,CAACG,OAAR,CAAgB,CAAhB,KAAsB,EAH1B,CADI,CAMJ;AACA;;AACA,MAAIR,OAAO,CAACC,KAAD,CAAX,EAAoB;AAClB;AACD;;AAED,QAAMQ,OAAO,GAAGR,KAAK,CAACS,mBAAN,CAA0B;AAACD,IAAAA,OAAO,EAAE;AAAV,GAA1B,CAAhB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,QAAME,IAAI,GAAGV,KAAK,CAACW,OAAN,CAAcH,OAAd,CAAb;;AAEA,MAAIE,IAAI,CAACE,MAAL,GAAc,CAAlB,EAAqB;AACnBT,IAAAA,MAAM,CAAE,wBAAuBK,OAAQ,eAAjC,CAAN;AACD;;AAED,QAAMK,iBAAiB,GAAGb,KAAK,CAACc,mBAAN,EAA1B,CAvBI,CAyBJ;;AACA,QAAM,CAACC,GAAD,IAAQL,IAAd;AACA,QAAMM,gBAAgB,GAAG,OAAOD,GAAP,KAAe,WAAf,IAA8BA,GAAG,KAAK,IAA/D;;AAEA,QAAME,YAAY,GAAG,MAAM;AACzB,QAAI,CAACD,gBAAL,EAAuB;AACrB,aAAO,KAAP;AACD;;AAED,QAAIX,kBAAkB,KACpBQ,iBAAiB,IAAIb,KAAK,CAACkB,iBAAN,EADD,CAAtB,EAEG;AACD,aAAO,IAAP;AACD;;AAED,UAAMC,OAAO,GAAG,CAACN,iBAAD,IAAsBb,KAAK,CAACoB,MAAN,CAAa,OAAb,CAAtB,IACdP,iBAAiB,IAAIb,KAAK,CAACmB,OAAN,EADvB;;AAGA,QAAIb,qBAAqB,IAAIa,OAA7B,EAAsC;AACpC,aAAO,IAAP;AACD;;AAED,WAAON,iBAAiB,IAAIb,KAAK,CAACqB,yCAAN,CAC1Bf,qBAD0B,CAA5B;AAGD,GArBD;;AAuBA,MAAIW,YAAY,EAAhB,EAAoB;AAClBd,IAAAA,MAAM,CAAE,kBAAiBK,OAAQ,eAA3B,CAAN;AACD;AACF,CA3Dc,EA2DZ;AACDc,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,uCADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVC,QAAAA,iBAAiB,EAAE;AACjBC,UAAAA,OAAO,EAAE,KADQ;AAEjBC,UAAAA,IAAI,EAAE;AAFW,SADT;AAKVC,QAAAA,YAAY,EAAE;AACZF,UAAAA,OAAO,EAAE,IADG;AAEZC,UAAAA,IAAI,EAAE;AAFM,SALJ;AASVE,QAAAA,QAAQ,EAAE;AACRC,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEJ,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEJ,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVQ,gBAAAA,OAAO,EAAE;AACPL,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIV5B,gBAAAA,OAAO,EAAE;AACP4B,kBAAAA,IAAI,EAAE;AADC;AAJC,eAFd;AAUEA,cAAAA,IAAI,EAAE;AAVR,aAJK;AADF,WADC;AAoBRA,UAAAA,IAAI,EAAE;AApBE,SATA;AA+BVM,QAAAA,UAAU,EAAE;AACVH,UAAAA,KAAK,EAAE;AACLH,YAAAA,IAAI,EAAE;AADD,WADG;AAIVA,UAAAA,IAAI,EAAE;AAJI,SA/BF;AAqCV3B,QAAAA,kBAAkB,EAAE;AAClB0B,UAAAA,OAAO,EAAE,KADS;AAElBC,UAAAA,IAAI,EAAE;AAFY,SArCV;AAyCV1B,QAAAA,qBAAqB,EAAE;AACrByB,UAAAA,OAAO,EAAE,KADY;AAErBC,UAAAA,IAAI,EAAE;AAFe;AAzCb,OAFd;AAgDEA,MAAAA,IAAI,EAAE;AAhDR,KADM,CALJ;AAyDJA,IAAAA,IAAI,EAAE;AAzDF;AAFL,CA3DY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * We can skip checking for a return value, in case the documentation is inherited\n * or the method is either a constructor or an abstract method.\n *\n * In either of these cases the return value is optional or not defined.\n *\n * @param {*} utils\n * a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean}\n * true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not an error if it declares a return value but does not implement it.\n 'abstract',\n 'virtual',\n\n // Constructors do not have a return value by definition (https://jsdoc.app/tags-class.html)\n // So we can bail out here, too.\n 'class',\n 'constructor',\n\n // Return type is specified by type in @type\n 'type',\n\n // This seems to imply a class as well\n 'interface',\n ]) ||\n utils.avoidDocs();\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n}) => {\n const {\n forceRequireReturn = false,\n forceReturnsWithAsync = false,\n } = context.options[0] || {};\n\n // A preflight check. We do not need to run a deep check\n // in case the @returns comment is optional or undefined.\n if (canSkip(utils)) {\n return;\n }\n\n const tagName = utils.getPreferredTagName({tagName: 'returns'});\n if (!tagName) {\n return;\n }\n\n const tags = utils.getTags(tagName);\n\n if (tags.length > 1) {\n report(`Found more than one @${tagName} declaration.`);\n }\n\n const iteratingFunction = utils.isIteratingFunction();\n\n // In case the code returns something, we expect a return value in JSDoc.\n const [tag] = tags;\n const missingReturnTag = typeof tag === 'undefined' || tag === null;\n\n const shouldReport = () => {\n if (!missingReturnTag) {\n return false;\n }\n\n if (forceRequireReturn && (\n iteratingFunction || utils.isVirtualFunction()\n )) {\n return true;\n }\n\n const isAsync = !iteratingFunction && utils.hasTag('async') ||\n iteratingFunction && utils.isAsync();\n\n if (forceReturnsWithAsync && isAsync) {\n return true;\n }\n\n return iteratingFunction && utils.hasValueOrExecutorHasNonEmptyResolveValue(\n forceReturnsWithAsync,\n );\n };\n\n if (shouldReport()) {\n report(`Missing JSDoc @${tagName} declaration.`);\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that returns are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-returns',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: false,\n type: 'boolean',\n },\n checkGetters: {\n default: true,\n type: 'boolean',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n forceRequireReturn: {\n default: false,\n type: 'boolean',\n },\n forceReturnsWithAsync: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireReturns.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireReturnsCheck.js"],"names":["canSkip","utils","settings","voidingTags","mode","push","hasATag","isConstructor","classHasTag","context","node","report","exemptAsync","exemptGenerators","reportMissingReturnForUndefinedTypes","options","isAsync","tagName","getPreferredTagName","tags","getTags","length","hasDefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","generator","meta","docs","description","url","schema","additionalProperties","properties","default","type"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,OAAO,GAAG,CAACC,KAAD,EAAQC,QAAR,KAAqB;AACnC,QAAMC,WAAW,GAAG,CAClB;AACA;AACA;AACA;AACA;AACA,YANkB,EAOlB,SAPkB,EASlB;AACA;AACA,SAXkB,EAYlB,aAZkB,EAalB,WAbkB,CAApB;;AAgBA,MAAID,QAAQ,CAACE,IAAT,KAAkB,SAAtB,EAAiC;AAC/B;AACAD,IAAAA,WAAW,CAACE,IAAZ,CAAiB,QAAjB;AACD;;AAED,SAAOJ,KAAK,CAACK,OAAN,CAAcH,WAAd,KACLF,KAAK,CAACM,aAAN,EADK,IAELN,KAAK,CAACO,WAAN,CAAkB,WAAlB,CAFK,IAGLN,QAAQ,CAACE,IAAT,KAAkB,SAAlB,IAA+BH,KAAK,CAACO,WAAN,CAAkB,QAAlB,CAHjC;AAID,CA1BD;;eA4Be,2BAAa,CAAC;AAC3BC,EAAAA,OAD2B;AAE3BC,EAAAA,IAF2B;AAG3BC,EAAAA,MAH2B;AAI3BT,EAAAA,QAJ2B;AAK3BD,EAAAA;AAL2B,CAAD,KAMtB;AACJ,QAAM;AACJW,IAAAA,WAAW,GAAG,IADV;AAEJC,IAAAA,gBAAgB,GAAGX,QAAQ,CAACE,IAAT,KAAkB,YAFjC;AAGJU,IAAAA,oCAAoC,GAAG;AAHnC,MAIFL,OAAO,CAACM,OAAR,CAAgB,CAAhB,KAAsB,EAJ1B;;AAMA,MAAIf,OAAO,CAACC,KAAD,EAAQC,QAAR,CAAX,EAA8B;AAC5B;AACD;;AAED,MAAIU,WAAW,IAAIX,KAAK,CAACe,OAAN,EAAnB,EAAoC;AAClC;AACD;;AAED,QAAMC,OAAO,GAAGhB,KAAK,CAACiB,mBAAN,CAA0B;AAACD,IAAAA,OAAO,EAAE;AAAV,GAA1B,CAAhB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireReturnsCheck.js"],"names":["canSkip","utils","settings","voidingTags","mode","push","hasATag","isConstructor","classHasTag","context","node","report","exemptAsync","exemptGenerators","reportMissingReturnForUndefinedTypes","options","isAsync","tagName","getPreferredTagName","tags","getTags","length","hasDefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","generator","meta","docs","description","url","schema","additionalProperties","properties","default","type"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,OAAO,GAAG,CAACC,KAAD,EAAQC,QAAR,KAAqB;AACnC,QAAMC,WAAW,GAAG,CAClB;AACA;AACA;AACA;AACA;AACA,YANkB,EAOlB,SAPkB,EASlB;AACA;AACA,SAXkB,EAYlB,aAZkB,EAalB,WAbkB,CAApB;;AAgBA,MAAID,QAAQ,CAACE,IAAT,KAAkB,SAAtB,EAAiC;AAC/B;AACAD,IAAAA,WAAW,CAACE,IAAZ,CAAiB,QAAjB;AACD;;AAED,SAAOJ,KAAK,CAACK,OAAN,CAAcH,WAAd,KACLF,KAAK,CAACM,aAAN,EADK,IAELN,KAAK,CAACO,WAAN,CAAkB,WAAlB,CAFK,IAGLN,QAAQ,CAACE,IAAT,KAAkB,SAAlB,IAA+BH,KAAK,CAACO,WAAN,CAAkB,QAAlB,CAHjC;AAID,CA1BD;;eA4Be,2BAAa,CAAC;AAC3BC,EAAAA,OAD2B;AAE3BC,EAAAA,IAF2B;AAG3BC,EAAAA,MAH2B;AAI3BT,EAAAA,QAJ2B;AAK3BD,EAAAA;AAL2B,CAAD,KAMtB;AACJ,QAAM;AACJW,IAAAA,WAAW,GAAG,IADV;AAEJC,IAAAA,gBAAgB,GAAGX,QAAQ,CAACE,IAAT,KAAkB,YAFjC;AAGJU,IAAAA,oCAAoC,GAAG;AAHnC,MAIFL,OAAO,CAACM,OAAR,CAAgB,CAAhB,KAAsB,EAJ1B;;AAMA,MAAIf,OAAO,CAACC,KAAD,EAAQC,QAAR,CAAX,EAA8B;AAC5B;AACD;;AAED,MAAIU,WAAW,IAAIX,KAAK,CAACe,OAAN,EAAnB,EAAoC;AAClC;AACD;;AAED,QAAMC,OAAO,GAAGhB,KAAK,CAACiB,mBAAN,CAA0B;AAACD,IAAAA,OAAO,EAAE;AAAV,GAA1B,CAAhB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,QAAME,IAAI,GAAGlB,KAAK,CAACmB,OAAN,CAAcH,OAAd,CAAb;;AAEA,MAAIE,IAAI,CAACE,MAAL,KAAgB,CAApB,EAAuB;AACrB;AACD;;AAED,MAAIF,IAAI,CAACE,MAAL,GAAc,CAAlB,EAAqB;AACnBV,IAAAA,MAAM,CAAE,wBAAuBM,OAAQ,eAAjC,CAAN;AAEA;AACD,GA9BG,CAgCJ;;;AACA,MAAI,CAACH,oCAAoC,IAAIb,KAAK,CAACqB,iBAAN,CAAwBH,IAAI,CAAC,CAAD,CAA5B,CAAzC,KAA8E,CAAClB,KAAK,CAACsB,yCAAN,CACjFX,WADiF,CAA/E,KAEE,CAACC,gBAAD,IAAqB,CAACH,IAAI,CAACc,SAF7B,CAAJ,EAE6C;AAC3Cb,IAAAA,MAAM,CAAE,UAASM,OAAQ,uEAAnB,CAAN;AACD;AACF,CA5Cc,EA4CZ;AACDQ,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,iGADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVnB,QAAAA,WAAW,EAAE;AACXoB,UAAAA,OAAO,EAAE,IADE;AAEXC,UAAAA,IAAI,EAAE;AAFK,SADH;AAKVpB,QAAAA,gBAAgB,EAAE;AAChBoB,UAAAA,IAAI,EAAE;AADU,SALR;AAQVnB,QAAAA,oCAAoC,EAAE;AACpCkB,UAAAA,OAAO,EAAE,KAD2B;AAEpCC,UAAAA,IAAI,EAAE;AAF8B;AAR5B,OAFd;AAeEA,MAAAA,IAAI,EAAE;AAfR,KADM,CALJ;AAwBJA,IAAAA,IAAI,EAAE;AAxBF;AADL,CA5CY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst canSkip = (utils, settings) => {\n const voidingTags = [\n // An abstract function is by definition incomplete\n // so it is perfectly fine if a return is documented but\n // not present within the function.\n // A subclass may inherit the doc and implement the\n // missing return.\n 'abstract',\n 'virtual',\n\n // A constructor function returns `this` by default, so may be `@returns`\n // tag indicating this but no explicit return\n 'class',\n 'constructor',\n 'interface',\n ];\n\n if (settings.mode === 'closure') {\n // Structural Interface in GCC terms, equivalent to @interface tag as far as this rule is concerned\n voidingTags.push('record');\n }\n\n return utils.hasATag(voidingTags) ||\n utils.isConstructor() ||\n utils.classHasTag('interface') ||\n settings.mode === 'closure' && utils.classHasTag('record');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n utils,\n}) => {\n const {\n exemptAsync = true,\n exemptGenerators = settings.mode === 'typescript',\n reportMissingReturnForUndefinedTypes = false,\n } = context.options[0] || {};\n\n if (canSkip(utils, settings)) {\n return;\n }\n\n if (exemptAsync && utils.isAsync()) {\n return;\n }\n\n const tagName = utils.getPreferredTagName({tagName: 'returns'});\n if (!tagName) {\n return;\n }\n\n const tags = utils.getTags(tagName);\n\n if (tags.length === 0) {\n return;\n }\n\n if (tags.length > 1) {\n report(`Found more than one @${tagName} declaration.`);\n\n return;\n }\n\n // In case a return value is declared in JSDoc, we also expect one in the code.\n if ((reportMissingReturnForUndefinedTypes || utils.hasDefinedTypeTag(tags[0])) && !utils.hasValueOrExecutorHasNonEmptyResolveValue(\n exemptAsync,\n ) && (!exemptGenerators || !node.generator)) {\n report(`JSDoc @${tagName} declaration present but return expression not available in function.`);\n }\n}, {\n meta: {\n docs: {\n description: 'Requires a return statement in function body if a `@returns` tag is specified in jsdoc comment.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-returns-check',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptAsync: {\n default: true,\n type: 'boolean',\n },\n exemptGenerators: {\n type: 'boolean',\n },\n reportMissingReturnForUndefinedTypes: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireReturnsCheck.js"}
|
|
@@ -13,10 +13,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
13
13
|
* We can skip checking for a throws value, in case the documentation is inherited
|
|
14
14
|
* or the method is either a constructor or an abstract method.
|
|
15
15
|
*
|
|
16
|
-
* @param {*} utils
|
|
17
|
-
*
|
|
18
|
-
* @returns {boolean}
|
|
19
|
-
* true in case deep checking can be skipped; otherwise false.
|
|
16
|
+
* @param {*} utils a reference to the utils which are used to probe if a tag is present or not.
|
|
17
|
+
* @returns {boolean} true in case deep checking can be skipped; otherwise false.
|
|
20
18
|
*/
|
|
21
19
|
const canSkip = utils => {
|
|
22
20
|
return utils.hasATag([// inheritdoc implies that all documentation is inherited
|
|
@@ -67,7 +65,8 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
67
65
|
contextDefaults: true,
|
|
68
66
|
meta: {
|
|
69
67
|
docs: {
|
|
70
|
-
|
|
68
|
+
description: 'Requires that throw statements are documented.',
|
|
69
|
+
url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-throws'
|
|
71
70
|
},
|
|
72
71
|
schema: [{
|
|
73
72
|
additionalProperties: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireThrows.js"],"names":["canSkip","utils","hasATag","avoidDocs","report","tagName","getPreferredTagName","tags","getTags","iteratingFunction","isIteratingFunction","tag","missingThrowsTag","shouldReport","hasThrowValue","contextDefaults","meta","docs","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","context","exemptedBy"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireThrows.js"],"names":["canSkip","utils","hasATag","avoidDocs","report","tagName","getPreferredTagName","tags","getTags","iteratingFunction","isIteratingFunction","tag","missingThrowsTag","shouldReport","hasThrowValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","context","exemptedBy"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,OAAO,GAAIC,KAAD,IAAW;AACzB,SAAOA,KAAK,CAACC,OAAN,CAAc,CACnB;AACA;AACA;AACA;AACA;AACA,YANmB,EAOnB,SAPmB,EASnB;AACA,QAVmB,CAAd,KAYLD,KAAK,CAACE,SAAN,EAZF;AAaD,CAdD;;eAgBe,2BAAa,CAAC;AAC3BC,EAAAA,MAD2B;AAE3BH,EAAAA;AAF2B,CAAD,KAGtB;AACJ;AACA;AACA,MAAID,OAAO,CAACC,KAAD,CAAX,EAAoB;AAClB;AACD;;AAED,QAAMI,OAAO,GAAGJ,KAAK,CAACK,mBAAN,CAA0B;AAACD,IAAAA,OAAO,EAAE;AAAV,GAA1B,CAAhB;;AACA,MAAI,CAACA,OAAL,EAAc;AACZ;AACD;;AAED,QAAME,IAAI,GAAGN,KAAK,CAACO,OAAN,CAAcH,OAAd,CAAb;AACA,QAAMI,iBAAiB,GAAGR,KAAK,CAACS,mBAAN,EAA1B,CAbI,CAeJ;;AACA,QAAM,CAACC,GAAD,IAAQJ,IAAd;AACA,QAAMK,gBAAgB,GAAG,OAAOD,GAAP,KAAe,WAAf,IAA8BA,GAAG,KAAK,IAA/D;;AAEA,QAAME,YAAY,GAAG,MAAM;AACzB,QAAI,CAACD,gBAAL,EAAuB;AACrB,aAAO,KAAP;AACD;;AAED,WAAOH,iBAAiB,IAAIR,KAAK,CAACa,aAAN,EAA5B;AACD,GAND;;AAQA,MAAID,YAAY,EAAhB,EAAoB;AAClBT,IAAAA,MAAM,CAAE,kBAAiBC,OAAQ,eAA3B,CAAN;AACD;AACF,CAjCc,EAiCZ;AACDU,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,gDADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVC,QAAAA,QAAQ,EAAE;AACRC,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEC,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEL,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVK,gBAAAA,OAAO,EAAE;AACPD,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIVE,gBAAAA,OAAO,EAAE;AACPF,kBAAAA,IAAI,EAAE;AADC;AAJC,eAFd;AAUEA,cAAAA,IAAI,EAAE;AAVR,aAJK;AADF,WADC;AAoBRA,UAAAA,IAAI,EAAE;AApBE,SADA;AAuBVG,QAAAA,UAAU,EAAE;AACVL,UAAAA,KAAK,EAAE;AACLE,YAAAA,IAAI,EAAE;AADD,WADG;AAIVA,UAAAA,IAAI,EAAE;AAJI;AAvBF,OAFd;AAgCEA,MAAAA,IAAI,EAAE;AAhCR,KADM,CALJ;AAyCJA,IAAAA,IAAI,EAAE;AAzCF;AAFL,CAjCY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * We can skip checking for a throws value, in case the documentation is inherited\n * or the method is either a constructor or an abstract method.\n *\n * @param {*} utils a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean} true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not necessary to document that they throw an error.\n 'abstract',\n 'virtual',\n\n // The designated type can itself document `@throws`\n 'type',\n ]) ||\n utils.avoidDocs();\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n // A preflight check. We do not need to run a deep check for abstract\n // functions.\n if (canSkip(utils)) {\n return;\n }\n\n const tagName = utils.getPreferredTagName({tagName: 'throws'});\n if (!tagName) {\n return;\n }\n\n const tags = utils.getTags(tagName);\n const iteratingFunction = utils.isIteratingFunction();\n\n // In case the code returns something, we expect a return value in JSDoc.\n const [tag] = tags;\n const missingThrowsTag = typeof tag === 'undefined' || tag === null;\n\n const shouldReport = () => {\n if (!missingThrowsTag) {\n return false;\n }\n\n return iteratingFunction && utils.hasThrowValue();\n };\n\n if (shouldReport()) {\n report(`Missing JSDoc @${tagName} declaration.`);\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that throw statements are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-throws',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireThrows.js"}
|
|
@@ -15,10 +15,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
15
15
|
*
|
|
16
16
|
* In either of these cases the yield value is optional or not defined.
|
|
17
17
|
*
|
|
18
|
-
* @param {*} utils
|
|
19
|
-
*
|
|
20
|
-
* @returns {boolean}
|
|
21
|
-
* true in case deep checking can be skipped; otherwise false.
|
|
18
|
+
* @param {*} utils a reference to the utils which are used to probe if a tag is present or not.
|
|
19
|
+
* @returns {boolean} true in case deep checking can be skipped; otherwise false.
|
|
22
20
|
*/
|
|
23
21
|
const canSkip = utils => {
|
|
24
22
|
return utils.hasATag([// inheritdoc implies that all documentation is inherited
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireYields.js"],"names":["canSkip","utils","hasATag","avoidDocs","checkTagName","report","tagName","preferredTagName","getPreferredTagName","tags","getTags","length","tag","missingTag","context","next","nextWithGeneratorTag","forceRequireNext","forceRequireYields","withGeneratorTag","options","iteratingFunction","isIteratingFunction","preferredYieldTagName","missingYieldTag","shouldReportYields","hasTag","isGenerator","hasYieldValue","preferredNextTagName","missingNextTag","shouldReportNext","hasYieldReturnValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","exemptedBy","default"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireYields.js"],"names":["canSkip","utils","hasATag","avoidDocs","checkTagName","report","tagName","preferredTagName","getPreferredTagName","tags","getTags","length","tag","missingTag","context","next","nextWithGeneratorTag","forceRequireNext","forceRequireYields","withGeneratorTag","options","iteratingFunction","isIteratingFunction","preferredYieldTagName","missingYieldTag","shouldReportYields","hasTag","isGenerator","hasYieldValue","preferredNextTagName","missingNextTag","shouldReportNext","hasYieldReturnValue","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","exemptedBy","default"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,OAAO,GAAIC,KAAD,IAAW;AACzB,SAAOA,KAAK,CAACC,OAAN,CAAc,CACnB;AACA;AACA;AACA;AACA;AACA,YANmB,EAOnB,SAPmB,EASnB;AACA;AACA,SAXmB,EAYnB,aAZmB,EAcnB;AACA;AACA,QAhBmB,EAkBnB;AACA,aAnBmB,CAAd,KAqBLD,KAAK,CAACE,SAAN,EArBF;AAsBD,CAvBD;;AAyBA,MAAMC,YAAY,GAAG,CAACH,KAAD,EAAQI,MAAR,EAAgBC,OAAhB,KAA4B;AAC/C,QAAMC,gBAAgB,GAAGN,KAAK,CAACO,mBAAN,CAA0B;AAACF,IAAAA;AAAD,GAA1B,CAAzB;;AACA,MAAI,CAACC,gBAAL,EAAuB;AACrB,WAAO,EAAP;AACD;;AAED,QAAME,IAAI,GAAGR,KAAK,CAACS,OAAN,CAAcH,gBAAd,CAAb;;AAEA,MAAIE,IAAI,CAACE,MAAL,GAAc,CAAlB,EAAqB;AACnBN,IAAAA,MAAM,CAAE,wBAAuBE,gBAAiB,eAA1C,CAAN;AACD,GAV8C,CAY/C;;;AACA,QAAM,CAACK,GAAD,IAAQH,IAAd;AACA,QAAMI,UAAU,GAAG,OAAOD,GAAP,KAAe,WAAf,IAA8BA,GAAG,KAAK,IAAzD;AAEA,SAAO,CAACL,gBAAD,EAAmBM,UAAnB,CAAP;AACD,CAjBD;;eAmBe,2BAAa,CAAC;AAC3BR,EAAAA,MAD2B;AAE3BJ,EAAAA,KAF2B;AAG3Ba,EAAAA;AAH2B,CAAD,KAItB;AACJ,QAAM;AACJC,IAAAA,IAAI,GAAG,KADH;AAEJC,IAAAA,oBAAoB,GAAG,KAFnB;AAGJC,IAAAA,gBAAgB,GAAG,KAHf;AAIJC,IAAAA,kBAAkB,GAAG,KAJjB;AAKJC,IAAAA,gBAAgB,GAAG;AALf,MAMFL,OAAO,CAACM,OAAR,CAAgB,CAAhB,KAAsB,EAN1B,CADI,CASJ;AACA;;AACA,MAAIpB,OAAO,CAACC,KAAD,CAAX,EAAoB;AAClB;AACD;;AAED,QAAMoB,iBAAiB,GAAGpB,KAAK,CAACqB,mBAAN,EAA1B;AAEA,QAAM,CAACC,qBAAD,EAAwBC,eAAxB,IAA2CpB,YAAY,CAC3DH,KAD2D,EACpDI,MADoD,EAC5C,QAD4C,CAA7D;;AAGA,MAAIkB,qBAAJ,EAA2B;AACzB,UAAME,kBAAkB,GAAG,MAAM;AAC/B,UAAI,CAACD,eAAL,EAAsB;AACpB,eAAO,KAAP;AACD;;AAED,UACEL,gBAAgB,IAAIlB,KAAK,CAACyB,MAAN,CAAa,WAAb,CAApB,IACAR,kBAAkB,IAAIG,iBAAtB,IAA2CpB,KAAK,CAAC0B,WAAN,EAF7C,EAGE;AACA,eAAO,IAAP;AACD;;AAED,aAAON,iBAAiB,IAAIpB,KAAK,CAAC0B,WAAN,EAArB,IAA4C1B,KAAK,CAAC2B,aAAN,EAAnD;AACD,KAbD;;AAeA,QAAIH,kBAAkB,EAAtB,EAA0B;AACxBpB,MAAAA,MAAM,CAAE,kBAAiBkB,qBAAsB,eAAzC,CAAN;AACD;AACF;;AAED,MAAIR,IAAI,IAAIC,oBAAR,IAAgCC,gBAApC,EAAsD;AACpD,UAAM,CAACY,oBAAD,EAAuBC,cAAvB,IAAyC1B,YAAY,CACzDH,KADyD,EAClDI,MADkD,EAC1C,MAD0C,CAA3D;;AAGA,QAAI,CAACwB,oBAAL,EAA2B;AACzB;AACD;;AAED,UAAME,gBAAgB,GAAG,MAAM;AAC7B,UAAI,CAACD,cAAL,EAAqB;AACnB,eAAO,KAAP;AACD;;AAED,UACEd,oBAAoB,IAAIf,KAAK,CAACyB,MAAN,CAAa,WAAb,CAD1B,EACqD;AACnD,eAAO,IAAP;AACD;;AAED,UACE,CAACX,IAAD,IAAS,CAACE,gBAAV,IACA,CAACI,iBADD,IAEA,CAACpB,KAAK,CAAC0B,WAAN,EAHH,EAIE;AACA,eAAO,KAAP;AACD;;AAED,aAAOV,gBAAgB,IAAIhB,KAAK,CAAC+B,mBAAN,EAA3B;AACD,KAnBD;;AAqBA,QAAID,gBAAgB,EAApB,EAAwB;AACtB1B,MAAAA,MAAM,CAAE,kBAAiBwB,oBAAqB,eAAxC,CAAN;AACD;AACF;AACF,CA9Ec,EA8EZ;AACDI,EAAAA,eAAe,EAAE,IADhB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,WAAW,EAAE,iCADT;AAEJC,MAAAA,GAAG,EAAE;AAFD,KADF;AAKJC,IAAAA,MAAM,EAAE,CACN;AACEC,MAAAA,oBAAoB,EAAE,KADxB;AAEEC,MAAAA,UAAU,EAAE;AACVC,QAAAA,QAAQ,EAAE;AACRC,UAAAA,KAAK,EAAE;AACLC,YAAAA,KAAK,EAAE,CACL;AACEC,cAAAA,IAAI,EAAE;AADR,aADK,EAIL;AACEL,cAAAA,oBAAoB,EAAE,KADxB;AAEEC,cAAAA,UAAU,EAAE;AACVK,gBAAAA,OAAO,EAAE;AACPD,kBAAAA,IAAI,EAAE;AADC,iBADC;AAIV9B,gBAAAA,OAAO,EAAE;AACP8B,kBAAAA,IAAI,EAAE;AADC;AAJC,eAFd;AAUEA,cAAAA,IAAI,EAAE;AAVR,aAJK;AADF,WADC;AAoBRA,UAAAA,IAAI,EAAE;AApBE,SADA;AAuBVE,QAAAA,UAAU,EAAE;AACVJ,UAAAA,KAAK,EAAE;AACLE,YAAAA,IAAI,EAAE;AADD,WADG;AAIVA,UAAAA,IAAI,EAAE;AAJI,SAvBF;AA6BV3B,QAAAA,gBAAgB,EAAE;AAChB8B,UAAAA,OAAO,EAAE,KADO;AAEhBH,UAAAA,IAAI,EAAE;AAFU,SA7BR;AAiCV1B,QAAAA,kBAAkB,EAAE;AAClB6B,UAAAA,OAAO,EAAE,KADS;AAElBH,UAAAA,IAAI,EAAE;AAFY,SAjCV;AAqCV7B,QAAAA,IAAI,EAAE;AACJgC,UAAAA,OAAO,EAAE,KADL;AAEJH,UAAAA,IAAI,EAAE;AAFF,SArCI;AAyCV5B,QAAAA,oBAAoB,EAAE;AACpB+B,UAAAA,OAAO,EAAE,KADW;AAEpBH,UAAAA,IAAI,EAAE;AAFc,SAzCZ;AA6CVzB,QAAAA,gBAAgB,EAAE;AAChB4B,UAAAA,OAAO,EAAE,IADO;AAEhBH,UAAAA,IAAI,EAAE;AAFU;AA7CR,OAFd;AAoDEA,MAAAA,IAAI,EAAE;AApDR,KADM,CALJ;AA6DJA,IAAAA,IAAI,EAAE;AA7DF;AAFL,CA9EY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * We can skip checking for a yield value, in case the documentation is inherited\n * or the method has a constructor or abstract tag.\n *\n * In either of these cases the yield value is optional or not defined.\n *\n * @param {*} utils a reference to the utils which are used to probe if a tag is present or not.\n * @returns {boolean} true in case deep checking can be skipped; otherwise false.\n */\nconst canSkip = (utils) => {\n return utils.hasATag([\n // inheritdoc implies that all documentation is inherited\n // see https://jsdoc.app/tags-inheritdoc.html\n //\n // Abstract methods are by definition incomplete,\n // so it is not an error if it declares a yield value but does not implement it.\n 'abstract',\n 'virtual',\n\n // Constructors do not have a yield value\n // so we can bail out here, too.\n 'class',\n 'constructor',\n\n // Yield (and any `next`) type is specified accompanying the targeted\n // @type\n 'type',\n\n // This seems to imply a class as well\n 'interface',\n ]) ||\n utils.avoidDocs();\n};\n\nconst checkTagName = (utils, report, tagName) => {\n const preferredTagName = utils.getPreferredTagName({tagName});\n if (!preferredTagName) {\n return [];\n }\n\n const tags = utils.getTags(preferredTagName);\n\n if (tags.length > 1) {\n report(`Found more than one @${preferredTagName} declaration.`);\n }\n\n // In case the code yields something, we expect a yields value in JSDoc.\n const [tag] = tags;\n const missingTag = typeof tag === 'undefined' || tag === null;\n\n return [preferredTagName, missingTag];\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n}) => {\n const {\n next = false,\n nextWithGeneratorTag = false,\n forceRequireNext = false,\n forceRequireYields = false,\n withGeneratorTag = true,\n } = context.options[0] || {};\n\n // A preflight check. We do not need to run a deep check\n // in case the @yield comment is optional or undefined.\n if (canSkip(utils)) {\n return;\n }\n\n const iteratingFunction = utils.isIteratingFunction();\n\n const [preferredYieldTagName, missingYieldTag] = checkTagName(\n utils, report, 'yields',\n );\n if (preferredYieldTagName) {\n const shouldReportYields = () => {\n if (!missingYieldTag) {\n return false;\n }\n\n if (\n withGeneratorTag && utils.hasTag('generator') ||\n forceRequireYields && iteratingFunction && utils.isGenerator()\n ) {\n return true;\n }\n\n return iteratingFunction && utils.isGenerator() && utils.hasYieldValue();\n };\n\n if (shouldReportYields()) {\n report(`Missing JSDoc @${preferredYieldTagName} declaration.`);\n }\n }\n\n if (next || nextWithGeneratorTag || forceRequireNext) {\n const [preferredNextTagName, missingNextTag] = checkTagName(\n utils, report, 'next',\n );\n if (!preferredNextTagName) {\n return;\n }\n\n const shouldReportNext = () => {\n if (!missingNextTag) {\n return false;\n }\n\n if (\n nextWithGeneratorTag && utils.hasTag('generator')) {\n return true;\n }\n\n if (\n !next && !forceRequireNext ||\n !iteratingFunction ||\n !utils.isGenerator()\n ) {\n return false;\n }\n\n return forceRequireNext || utils.hasYieldReturnValue();\n };\n\n if (shouldReportNext()) {\n report(`Missing JSDoc @${preferredNextTagName} declaration.`);\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires yields are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-yields',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n forceRequireNext: {\n default: false,\n type: 'boolean',\n },\n forceRequireYields: {\n default: false,\n type: 'boolean',\n },\n next: {\n default: false,\n type: 'boolean',\n },\n nextWithGeneratorTag: {\n default: false,\n type: 'boolean',\n },\n withGeneratorTag: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireYields.js"}
|
package/dist/rules/tagLines.js
CHANGED
|
@@ -22,7 +22,8 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
22
22
|
jsdoc.tags.some((tg, tagIdx) => {
|
|
23
23
|
let lastTag;
|
|
24
24
|
let reportIndex = null;
|
|
25
|
-
|
|
25
|
+
|
|
26
|
+
for (const [idx, {
|
|
26
27
|
tokens: {
|
|
27
28
|
tag,
|
|
28
29
|
name,
|
|
@@ -30,7 +31,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
30
31
|
description,
|
|
31
32
|
end
|
|
32
33
|
}
|
|
33
|
-
}
|
|
34
|
+
}] of tg.source.entries()) {
|
|
34
35
|
var _tags$lastTag$slice, _tags$lastTag$slice2;
|
|
35
36
|
|
|
36
37
|
// May be text after a line break within a tag description
|
|
@@ -39,16 +40,16 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
if (lastTag && ['any', 'always'].includes((_tags$lastTag$slice = tags[lastTag.slice(1)]) === null || _tags$lastTag$slice === void 0 ? void 0 : _tags$lastTag$slice.lines)) {
|
|
42
|
-
|
|
43
|
+
continue;
|
|
43
44
|
}
|
|
44
45
|
|
|
45
46
|
if (!tag && !name && !type && !description && !end && (alwaysNever === 'never' || lastTag && ((_tags$lastTag$slice2 = tags[lastTag.slice(1)]) === null || _tags$lastTag$slice2 === void 0 ? void 0 : _tags$lastTag$slice2.lines) === 'never')) {
|
|
46
47
|
reportIndex = idx;
|
|
47
|
-
|
|
48
|
+
continue;
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
lastTag = tag;
|
|
51
|
-
}
|
|
52
|
+
}
|
|
52
53
|
|
|
53
54
|
if (reportIndex !== null) {
|
|
54
55
|
const fixer = () => {
|
|
@@ -67,7 +68,8 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
67
68
|
const lines = [];
|
|
68
69
|
let currentTag;
|
|
69
70
|
let tagSourceIdx = 0;
|
|
70
|
-
|
|
71
|
+
|
|
72
|
+
for (const [idx, {
|
|
71
73
|
number,
|
|
72
74
|
tokens: {
|
|
73
75
|
tag,
|
|
@@ -76,7 +78,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
76
78
|
description,
|
|
77
79
|
end
|
|
78
80
|
}
|
|
79
|
-
}
|
|
81
|
+
}] of tg.source.entries()) {
|
|
80
82
|
if (description) {
|
|
81
83
|
lines.splice(0, lines.length);
|
|
82
84
|
tagSourceIdx = idx;
|
|
@@ -92,7 +94,8 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
92
94
|
number
|
|
93
95
|
});
|
|
94
96
|
}
|
|
95
|
-
}
|
|
97
|
+
}
|
|
98
|
+
|
|
96
99
|
const currentTg = currentTag && tags[currentTag.slice(1)];
|
|
97
100
|
const tagCount = currentTg === null || currentTg === void 0 ? void 0 : currentTg.count;
|
|
98
101
|
const defaultAlways = alwaysNever === 'always' && (currentTg === null || currentTg === void 0 ? void 0 : currentTg.lines) !== 'never' && (currentTg === null || currentTg === void 0 ? void 0 : currentTg.lines) !== 'any' && lines.length < count;
|