eslint-plugin-jsdoc
Advanced tools
Comparing version 48.10.2 to 48.11.0
@@ -155,3 +155,3 @@ { | ||
}, | ||
"version": "48.10.2" | ||
"version": "48.11.0" | ||
} |
@@ -46,2 +46,32 @@ import { | ||
const checkParamsAndReturnsTags = () => { | ||
const paramName = /** @type {string} */ (utils.getPreferredTagName({ | ||
tagName: 'param', | ||
})); | ||
const paramTags = utils.getTags(paramName); | ||
for (const paramTag of paramTags) { | ||
checkForUsedTypes(paramTag.type); | ||
} | ||
const returnsName = /** @type {string} */ (utils.getPreferredTagName({ | ||
tagName: 'returns', | ||
})); | ||
const returnsTags = utils.getTags(returnsName); | ||
for (const returnsTag of returnsTags) { | ||
checkForUsedTypes(returnsTag.type); | ||
} | ||
}; | ||
const checkTemplateTags = () => { | ||
for (const tag of templateTags) { | ||
const {name} = tag; | ||
const names = name.split(/,\s*/); | ||
for (const name of names) { | ||
if (!usedNames.has(name)) { | ||
report(`@template ${name} not in use`, null, tag); | ||
} | ||
} | ||
} | ||
}; | ||
/** | ||
@@ -61,27 +91,6 @@ * @param {import('@typescript-eslint/types').TSESTree.FunctionDeclaration| | ||
if (checkParamsAndReturns) { | ||
const paramName = /** @type {string} */ (utils.getPreferredTagName({ | ||
tagName: 'param', | ||
})); | ||
const paramTags = utils.getTags(paramName); | ||
for (const paramTag of paramTags) { | ||
checkForUsedTypes(paramTag.type); | ||
} | ||
checkParamsAndReturnsTags(); | ||
} | ||
const returnsName = /** @type {string} */ (utils.getPreferredTagName({ | ||
tagName: 'returns', | ||
})); | ||
const returnsTags = utils.getTags(returnsName); | ||
for (const returnsTag of returnsTags) { | ||
checkForUsedTypes(returnsTag.type); | ||
} | ||
} | ||
for (const tag of templateTags) { | ||
const {name} = tag; | ||
const names = name.split(/,\s*/); | ||
for (const name of names) { | ||
if (!usedNames.has(name)) { | ||
report(`@template ${name} not in use`, null, tag); | ||
} | ||
} | ||
} | ||
checkTemplateTags(); | ||
}; | ||
@@ -121,2 +130,10 @@ | ||
const callbackTags = utils.getTags('callback'); | ||
const functionTags = utils.getTags('function'); | ||
if (callbackTags.length || functionTags.length) { | ||
checkParamsAndReturnsTags(); | ||
checkTemplateTags(); | ||
return; | ||
} | ||
const typedefTags = utils.getTags('typedef'); | ||
@@ -123,0 +140,0 @@ if (!typedefTags.length || typedefTags.length >= 2) { |
@@ -92,8 +92,2 @@ import { | ||
const typedefTags = utils.getTags('typedef'); | ||
if (!typedefTags.length || typedefTags.length >= 2) { | ||
handleTypes(); | ||
return; | ||
} | ||
const usedNameToTag = new Map(); | ||
@@ -128,19 +122,41 @@ | ||
const potentialTypedef = typedefTags[0]; | ||
checkForUsedTypes(potentialTypedef); | ||
/** | ||
* @param {string[]} tagNames | ||
*/ | ||
const checkTagsAndTemplates = (tagNames) => { | ||
for (const tagName of tagNames) { | ||
const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({ | ||
tagName, | ||
})); | ||
const matchingTags = utils.getTags(preferredTagName); | ||
for (const matchingTag of matchingTags) { | ||
checkForUsedTypes(matchingTag); | ||
} | ||
} | ||
const tagName = /** @type {string} */ (utils.getPreferredTagName({ | ||
tagName: 'property', | ||
})); | ||
const propertyTags = utils.getTags(tagName); | ||
for (const propertyTag of propertyTags) { | ||
checkForUsedTypes(propertyTag); | ||
// Could check against whitelist/blacklist | ||
for (const usedName of usedNames) { | ||
if (!templateNames.includes(usedName)) { | ||
report(`Missing @template ${usedName}`, null, usedNameToTag.get(usedName)); | ||
} | ||
} | ||
}; | ||
const callbackTags = utils.getTags('callback'); | ||
const functionTags = utils.getTags('function'); | ||
if (callbackTags.length || functionTags.length) { | ||
checkTagsAndTemplates(['param', 'returns']); | ||
return; | ||
} | ||
// Could check against whitelist/blacklist | ||
for (const usedName of usedNames) { | ||
if (!templateNames.includes(usedName)) { | ||
report(`Missing @template ${usedName}`, null, usedNameToTag.get(usedName)); | ||
} | ||
const typedefTags = utils.getTags('typedef'); | ||
if (!typedefTags.length || typedefTags.length >= 2) { | ||
handleTypes(); | ||
return; | ||
} | ||
const potentialTypedef = typedefTags[0]; | ||
checkForUsedTypes(potentialTypedef); | ||
checkTagsAndTemplates(['property']); | ||
}, { | ||
@@ -147,0 +163,0 @@ iterateAllJsdocs: true, |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2041695
33459