eslint-plugin-jsdoc 57.1.0 → 57.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/dist/cjs/iterateJsdoc.d.ts +2 -0
- package/dist/generateRuleTypes.cjs +1 -0
- package/dist/generateRuleTypes.cjs.map +1 -1
- package/dist/iterateJsdoc.cjs +1 -0
- package/dist/iterateJsdoc.cjs.map +1 -1
- package/dist/iterateJsdoc.d.ts +2 -0
- package/dist/rules/checkTypes.cjs +34 -25
- package/dist/rules/checkTypes.cjs.map +1 -1
- package/dist/rules.d.ts +52 -0
- package/package.json +1 -1
- package/src/iterateJsdoc.js +1 -0
- package/src/rules/checkTypes.js +66 -45
- package/src/rules.d.ts +52 -0
package/dist/iterateJsdoc.d.ts
CHANGED
|
@@ -249,6 +249,7 @@ export type PreferredTypes = {
|
|
|
249
249
|
message: string;
|
|
250
250
|
replacement?: false | string;
|
|
251
251
|
skipRootChecking?: boolean;
|
|
252
|
+
unifyParentAndChildTypeChecks?: boolean;
|
|
252
253
|
};
|
|
253
254
|
};
|
|
254
255
|
export type StructuredTags = {
|
|
@@ -417,6 +418,7 @@ export type RuleConfig = {
|
|
|
417
418
|
* message: string,
|
|
418
419
|
* replacement?: false|string
|
|
419
420
|
* skipRootChecking?: boolean
|
|
421
|
+
* unifyParentAndChildTypeChecks?: boolean
|
|
420
422
|
* }
|
|
421
423
|
* }} PreferredTypes
|
|
422
424
|
*/
|
|
@@ -164,32 +164,40 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
164
164
|
let isGenericMatch = false;
|
|
165
165
|
let typeName = typeNodeName;
|
|
166
166
|
const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
167
|
+
const brackets = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */parentNode?.meta?.brackets;
|
|
168
|
+
const dot = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */parentNode?.meta?.dot;
|
|
169
|
+
if (brackets === 'angle') {
|
|
170
|
+
const checkPostFixes = dot ? ['.', '.<>'] : ['<>'];
|
|
171
|
+
isGenericMatch = checkPostFixes.some(checkPostFix => {
|
|
172
|
+
const preferredType = preferredTypes?.[typeNodeName + checkPostFix];
|
|
173
|
+
|
|
174
|
+
// Does `unifyParentAndChildTypeChecks` need to be checked here?
|
|
175
|
+
if ((unifyParentAndChildTypeChecks || isNameOfGeneric || (/* c8 ignore next 2 -- If checking `unifyParentAndChildTypeChecks` */
|
|
176
|
+
typeof preferredType === 'object' && preferredType?.unifyParentAndChildTypeChecks)) && preferredType !== undefined) {
|
|
177
|
+
typeName += checkPostFix;
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
if (!isGenericMatch && property && /** @type {import('jsdoc-type-pratt-parser').NonRootResult} */parentNode.type === 'JsdocTypeGeneric') {
|
|
184
|
+
const checkPostFixes = dot ? ['.', '.<>'] : [brackets === 'angle' ? '<>' : '[]'];
|
|
185
|
+
isGenericMatch = checkPostFixes.some(checkPostFix => {
|
|
186
|
+
const preferredType = preferredTypes?.[checkPostFix];
|
|
187
|
+
if (
|
|
188
|
+
// Does `unifyParentAndChildTypeChecks` need to be checked here?
|
|
189
|
+
(unifyParentAndChildTypeChecks || isNameOfGeneric || (/* c8 ignore next 2 -- If checking `unifyParentAndChildTypeChecks` */
|
|
190
|
+
typeof preferredType === 'object' && preferredType?.unifyParentAndChildTypeChecks)) && preferredType !== undefined) {
|
|
191
|
+
typeName = checkPostFix;
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
return false;
|
|
195
|
+
});
|
|
190
196
|
}
|
|
191
|
-
const
|
|
192
|
-
const
|
|
197
|
+
const prefType = preferredTypes?.[typeNodeName];
|
|
198
|
+
const directNameMatch = prefType !== undefined && !Object.values(preferredTypes).includes(typeNodeName);
|
|
199
|
+
const specificUnify = typeof prefType === 'object' && prefType?.unifyParentAndChildTypeChecks;
|
|
200
|
+
const unifiedSyntaxParentMatch = property && directNameMatch && (unifyParentAndChildTypeChecks || specificUnify);
|
|
193
201
|
isGenericMatch = isGenericMatch || Boolean(unifiedSyntaxParentMatch);
|
|
194
202
|
hasMatchingPreferredType = isGenericMatch || directNameMatch && !property;
|
|
195
203
|
return [hasMatchingPreferredType, typeName, isGenericMatch];
|
|
@@ -382,6 +390,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
382
390
|
type: 'boolean'
|
|
383
391
|
},
|
|
384
392
|
unifyParentAndChildTypeChecks: {
|
|
393
|
+
description: '@deprecated Use the `preferredTypes[preferredType]` setting of the same name instead',
|
|
385
394
|
type: 'boolean'
|
|
386
395
|
}
|
|
387
396
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","e","__esModule","default","strictNativeTypes","adjustNames","type","preferred","isGenericMatch","typeNodeName","node","parentNode","ret","parentMeta","meta","brackets","dot","dotBracketEnd","match","slice","length","bracketEnd","endsWith","value","replace","getMessage","upperCase","_default","exports","iterateJsdoc","context","jsdocNode","report","settings","sourceCode","utils","jsdocTagsWithPossibleType","filterTags","tag","Boolean","tagMightHaveTypePosition","mode","preferredTypes","preferredTypesOriginal","structuredTags","injectObjectPreferredTypes","info","message","replacement","infoUC","typeToInject","Object","exemptTagContexts","noDefaults","unifyParentAndChildTypeChecks","options","getPreferredTypeInfo","_type","property","hasMatchingPreferredType","typeName","isNameOfGeneric","undefined","checkPostFixes","some","checkPostFix","directNameMatch","values","includes","unifiedSyntaxParentMatch","checkNativeTypes","invalidTypes","changedPreferred","strictNativeType","elements","left","toLowerCase","push","getInvalidTypes","tagName","nameInTag","idx","types","preferredSetting","nextItem","skipRootChecking","name","startsWith","reportSettings","entries","typs","Array","isArray","jsdocTag","typeAst","tryParse","parse","traverse","fixedType","stringify","fix","fixer","replaceText","getText","badType","preferredType","msg","tagValue","JSON","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","items","oneOf","module"],"sources":["../../src/rules/checkTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\n/**\n * Adjusts the parent type node `meta` for generic matches (or type node\n * `type` for `JsdocTypeAny`) and sets the type node `value`.\n * @param {string} type The actual type\n * @param {string} preferred The preferred type\n * @param {boolean} isGenericMatch\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser').NonRootResult} node\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n const parentMeta = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n ).meta;\n if (preferred === '[]') {\n parentMeta.brackets = 'square';\n parentMeta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/v);\n if (dotBracketEnd) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentMeta?.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (\n node\n ).value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/v, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (\n node\n ).value = typeNodeName;\n }\n};\n\n/**\n * @param {boolean} [upperCase]\n * @returns {string}\n */\nconst getMessage = (upperCase) => {\n return 'Use object shorthand or index signatures instead of ' +\n '`' + (upperCase ? 'O' : 'o') + 'bject`, e.g., `{[key: string]: string}`';\n};\n\nexport default iterateJsdoc(({\n context,\n jsdocNode,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return Boolean(utils.tagMightHaveTypePosition(tag.tag));\n });\n\n const\n /**\n * @type {{\n * preferredTypes: import('../iterateJsdoc.js').PreferredTypes,\n * structuredTags: import('../iterateJsdoc.js').StructuredTags,\n * mode: import('../jsdocUtils.js').ParserMode\n * }}\n */\n {\n mode,\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n } = settings;\n\n const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal ||\n 'object' in preferredTypesOriginal ||\n 'object.<>' in preferredTypesOriginal ||\n 'Object.<>' in preferredTypesOriginal ||\n 'object<>' in preferredTypesOriginal);\n\n /**\n * @type {{\n * message: string,\n * replacement: false\n * }}\n */\n const info = {\n message: getMessage(),\n replacement: false,\n };\n\n /**\n * @type {{\n * message: string,\n * replacement: false\n * }}\n */\n const infoUC = {\n message: getMessage(true),\n replacement: false,\n };\n\n /** @type {import('../iterateJsdoc.js').PreferredTypes} */\n const typeToInject = mode === 'typescript' ?\n {\n Object: 'object',\n 'object.<>': info,\n 'Object.<>': infoUC,\n 'object<>': info,\n 'Object<>': infoUC,\n } :\n {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n };\n\n /** @type {import('../iterateJsdoc.js').PreferredTypes} */\n const preferredTypes = {\n ...injectObjectPreferredTypes ?\n typeToInject :\n {},\n ...preferredTypesOriginal,\n };\n\n const\n /**\n * @type {{\n * noDefaults: boolean,\n * unifyParentAndChildTypeChecks: boolean,\n * exemptTagContexts: ({\n * tag: string,\n * types: true|string[]\n * })[]\n * }}\n */ {\n exemptTagContexts = [],\n noDefaults,\n unifyParentAndChildTypeChecks,\n } = context.options[0] || {};\n\n /**\n * Gets information about the preferred type: whether there is a matching\n * preferred type, what the type is, and whether it is a match to a generic.\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @param {string|undefined} property\n * @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]}\n */\n const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => {\n let hasMatchingPreferredType = false;\n let isGenericMatch = false;\n let typeName = typeNodeName;\n\n const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';\n if (unifyParentAndChildTypeChecks || isNameOfGeneric) {\n const brackets = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n )?.meta?.brackets;\n const dot = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n )?.meta?.dot;\n\n if (brackets === 'angle') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n '<>',\n ];\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[typeNodeName + checkPostFix] !== undefined) {\n typeName += checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n if (\n !isGenericMatch && property &&\n /** @type {import('jsdoc-type-pratt-parser').NonRootResult} */ (\n parentNode\n ).type === 'JsdocTypeGeneric'\n ) {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n brackets === 'angle' ? '<>' : '[]',\n ];\n\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n if (preferredTypes?.[checkPostFix] !== undefined) {\n typeName = checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n }\n\n const directNameMatch = preferredTypes?.[typeNodeName] !== undefined &&\n !Object.values(preferredTypes).includes(typeNodeName);\n const unifiedSyntaxParentMatch = property && directNameMatch && unifyParentAndChildTypeChecks;\n isGenericMatch = isGenericMatch || Boolean(unifiedSyntaxParentMatch);\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !property;\n\n return [\n hasMatchingPreferredType, typeName, isGenericMatch,\n ];\n };\n\n /**\n * Iterates strict types to see if any should be added to `invalidTypes` (and\n * the the relevant strict type returned as the new preferred type).\n * @param {string} typeNodeName\n * @param {string|undefined} preferred\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @param {(string|false|undefined)[][]} invalidTypes\n * @returns {string|undefined} The `preferred` type string, optionally changed\n */\n const checkNativeTypes = (typeNodeName, preferred, parentNode, invalidTypes) => {\n let changedPreferred = preferred;\n for (const strictNativeType of strictNativeTypes) {\n if (\n strictNativeType === 'object' &&\n (\n // This is not set to remap with exact type match (e.g.,\n // `object: 'Object'`), so can ignore (including if circular)\n !preferredTypes?.[typeNodeName] ||\n // Although present on `preferredTypes` for remapping, this is a\n // parent object without a parent match (and not\n // `unifyParentAndChildTypeChecks`) and we don't want\n // `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555\n /**\n * @type {import('jsdoc-type-pratt-parser').GenericResult}\n */\n (\n parentNode\n )?.elements?.length && (\n /**\n * @type {import('jsdoc-type-pratt-parser').GenericResult}\n */\n (\n parentNode\n )?.left?.type === 'JsdocTypeName' &&\n /**\n * @type {import('jsdoc-type-pratt-parser').GenericResult}\n */\n (parentNode)?.left?.value === 'Object'\n )\n )\n ) {\n continue;\n }\n\n if (strictNativeType !== typeNodeName &&\n strictNativeType.toLowerCase() === typeNodeName.toLowerCase() &&\n\n // Don't report if user has own map for a strict native type\n (!preferredTypes || preferredTypes?.[strictNativeType] === undefined)\n ) {\n changedPreferred = strictNativeType;\n invalidTypes.push([\n typeNodeName, changedPreferred,\n ]);\n break;\n }\n }\n\n return changedPreferred;\n };\n\n /**\n * Collect invalid type info.\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} nameInTag\n * @param {number} idx\n * @param {string|undefined} property\n * @param {import('jsdoc-type-pratt-parser').NonRootResult} node\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @param {(string|false|undefined)[][]} invalidTypes\n * @returns {void}\n */\n const getInvalidTypes = (type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes) => {\n let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;\n\n const [\n hasMatchingPreferredType,\n typeName,\n isGenericMatch,\n ] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);\n\n let preferred;\n let types;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typeName];\n typeNodeName = typeName === '[]' ? typeName : typeNodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([\n typeNodeName,\n ]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([\n typeNodeName, preferred,\n ]);\n } else if (preferredSetting && typeof preferredSetting === 'object') {\n const nextItem = preferredSetting.skipRootChecking && jsdocTagsWithPossibleType[idx + 1];\n\n if (!nextItem || !nextItem.name.startsWith(`${nameInTag}.`)) {\n preferred = preferredSetting.replacement;\n invalidTypes.push([\n typeNodeName,\n preferred,\n preferredSetting.message,\n ]);\n }\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (Object.entries(structuredTags).some(([\n tag,\n {\n type: typs,\n },\n ]) => {\n types = typs;\n\n return tag === tagName &&\n Array.isArray(types) &&\n !types.includes(typeNodeName);\n })) {\n invalidTypes.push([\n typeNodeName, types,\n ]);\n } else if (!noDefaults && type === 'JsdocTypeName') {\n preferred = checkNativeTypes(typeNodeName, preferred, parentNode, invalidTypes);\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);\n }\n };\n\n for (const [\n idx,\n jsdocTag,\n ] of jsdocTagsWithPossibleType.entries()) {\n /** @type {(string|false|undefined)[][]} */\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);\n } catch {\n continue;\n }\n\n const {\n name: nameInTag,\n tag: tagName,\n } = jsdocTag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } =\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult}\n */ (node);\n if (![\n 'JsdocTypeAny', 'JsdocTypeName',\n ].includes(type)) {\n return;\n }\n\n getInvalidTypes(type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes);\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n /**\n * @type {import('eslint').Rule.ReportFixer}\n */\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n for (const [\n badType,\n preferredType = '',\n msg,\n ] of invalidTypes) {\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n if (exemptTagContexts.some(({\n tag,\n types,\n }) => {\n return tag === tagName &&\n (types === true || types.includes(jsdocTag.type));\n })) {\n continue;\n }\n\n report(\n msg ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n msg ? {\n tagName,\n tagValue,\n } : undefined,\n );\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid types.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-types.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptTagContexts: {\n items: {\n additionalProperties: false,\n properties: {\n tag: {\n type: 'string',\n },\n types: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n noDefaults: {\n type: 'boolean',\n },\n unifyParentAndChildTypeChecks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"checkTypes.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","e","__esModule","default","strictNativeTypes","adjustNames","type","preferred","isGenericMatch","typeNodeName","node","parentNode","ret","parentMeta","meta","brackets","dot","dotBracketEnd","match","slice","length","bracketEnd","endsWith","value","replace","getMessage","upperCase","_default","exports","iterateJsdoc","context","jsdocNode","report","settings","sourceCode","utils","jsdocTagsWithPossibleType","filterTags","tag","Boolean","tagMightHaveTypePosition","mode","preferredTypes","preferredTypesOriginal","structuredTags","injectObjectPreferredTypes","info","message","replacement","infoUC","typeToInject","Object","exemptTagContexts","noDefaults","unifyParentAndChildTypeChecks","options","getPreferredTypeInfo","_type","property","hasMatchingPreferredType","typeName","isNameOfGeneric","undefined","checkPostFixes","some","checkPostFix","preferredType","prefType","directNameMatch","values","includes","specificUnify","unifiedSyntaxParentMatch","checkNativeTypes","invalidTypes","changedPreferred","strictNativeType","elements","left","toLowerCase","push","getInvalidTypes","tagName","nameInTag","idx","types","preferredSetting","nextItem","skipRootChecking","name","startsWith","reportSettings","entries","typs","Array","isArray","jsdocTag","typeAst","tryParse","parse","traverse","fixedType","stringify","fix","fixer","replaceText","getText","badType","msg","tagValue","JSON","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","items","oneOf","module"],"sources":["../../src/rules/checkTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\n/**\n * Adjusts the parent type node `meta` for generic matches (or type node\n * `type` for `JsdocTypeAny`) and sets the type node `value`.\n * @param {string} type The actual type\n * @param {string} preferred The preferred type\n * @param {boolean} isGenericMatch\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser').NonRootResult} node\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n const parentMeta = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n ).meta;\n if (preferred === '[]') {\n parentMeta.brackets = 'square';\n parentMeta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/v);\n if (dotBracketEnd) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentMeta?.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentMeta.brackets = 'angle';\n parentMeta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (\n node\n ).value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/v, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (\n node\n ).value = typeNodeName;\n }\n};\n\n/**\n * @param {boolean} [upperCase]\n * @returns {string}\n */\nconst getMessage = (upperCase) => {\n return 'Use object shorthand or index signatures instead of ' +\n '`' + (upperCase ? 'O' : 'o') + 'bject`, e.g., `{[key: string]: string}`';\n};\n\nexport default iterateJsdoc(({\n context,\n jsdocNode,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return Boolean(utils.tagMightHaveTypePosition(tag.tag));\n });\n\n const\n /**\n * @type {{\n * preferredTypes: import('../iterateJsdoc.js').PreferredTypes,\n * structuredTags: import('../iterateJsdoc.js').StructuredTags,\n * mode: import('../jsdocUtils.js').ParserMode\n * }}\n */\n {\n mode,\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n } = settings;\n\n const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal ||\n 'object' in preferredTypesOriginal ||\n 'object.<>' in preferredTypesOriginal ||\n 'Object.<>' in preferredTypesOriginal ||\n 'object<>' in preferredTypesOriginal);\n\n /**\n * @type {{\n * message: string,\n * replacement: false\n * }}\n */\n const info = {\n message: getMessage(),\n replacement: false,\n };\n\n /**\n * @type {{\n * message: string,\n * replacement: false\n * }}\n */\n const infoUC = {\n message: getMessage(true),\n replacement: false,\n };\n\n /** @type {import('../iterateJsdoc.js').PreferredTypes} */\n const typeToInject = mode === 'typescript' ?\n {\n Object: 'object',\n 'object.<>': info,\n 'Object.<>': infoUC,\n 'object<>': info,\n 'Object<>': infoUC,\n } :\n {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n };\n\n /** @type {import('../iterateJsdoc.js').PreferredTypes} */\n const preferredTypes = {\n ...injectObjectPreferredTypes ?\n typeToInject :\n {},\n ...preferredTypesOriginal,\n };\n\n const\n /**\n * @type {{\n * noDefaults: boolean,\n * unifyParentAndChildTypeChecks: boolean,\n * exemptTagContexts: ({\n * tag: string,\n * types: true|string[]\n * })[]\n * }}\n */ {\n exemptTagContexts = [],\n noDefaults,\n unifyParentAndChildTypeChecks,\n } = context.options[0] || {};\n\n /**\n * Gets information about the preferred type: whether there is a matching\n * preferred type, what the type is, and whether it is a match to a generic.\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @param {string|undefined} property\n * @returns {[hasMatchingPreferredType: boolean, typeName: string, isGenericMatch: boolean]}\n */\n const getPreferredTypeInfo = (_type, typeNodeName, parentNode, property) => {\n let hasMatchingPreferredType = false;\n let isGenericMatch = false;\n let typeName = typeNodeName;\n\n const isNameOfGeneric = parentNode !== undefined && parentNode.type === 'JsdocTypeGeneric' && property === 'left';\n\n const brackets = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n )?.meta?.brackets;\n const dot = /** @type {import('jsdoc-type-pratt-parser').GenericResult} */ (\n parentNode\n )?.meta?.dot;\n\n if (brackets === 'angle') {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n '<>',\n ];\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n const preferredType = preferredTypes?.[typeNodeName + checkPostFix];\n\n // Does `unifyParentAndChildTypeChecks` need to be checked here?\n if (\n (unifyParentAndChildTypeChecks || isNameOfGeneric ||\n /* c8 ignore next 2 -- If checking `unifyParentAndChildTypeChecks` */\n (typeof preferredType === 'object' &&\n preferredType?.unifyParentAndChildTypeChecks)\n ) &&\n preferredType !== undefined\n ) {\n typeName += checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n if (\n !isGenericMatch && property &&\n /** @type {import('jsdoc-type-pratt-parser').NonRootResult} */ (\n parentNode\n ).type === 'JsdocTypeGeneric'\n ) {\n const checkPostFixes = dot ? [\n '.', '.<>',\n ] : [\n brackets === 'angle' ? '<>' : '[]',\n ];\n\n isGenericMatch = checkPostFixes.some((checkPostFix) => {\n const preferredType = preferredTypes?.[checkPostFix];\n if (\n // Does `unifyParentAndChildTypeChecks` need to be checked here?\n (unifyParentAndChildTypeChecks || isNameOfGeneric ||\n /* c8 ignore next 2 -- If checking `unifyParentAndChildTypeChecks` */\n (typeof preferredType === 'object' &&\n preferredType?.unifyParentAndChildTypeChecks)) &&\n preferredType !== undefined\n ) {\n typeName = checkPostFix;\n\n return true;\n }\n\n return false;\n });\n }\n\n const prefType = preferredTypes?.[typeNodeName];\n const directNameMatch = prefType !== undefined &&\n !Object.values(preferredTypes).includes(typeNodeName);\n const specificUnify = typeof prefType === 'object' &&\n prefType?.unifyParentAndChildTypeChecks;\n const unifiedSyntaxParentMatch = property && directNameMatch && (unifyParentAndChildTypeChecks || specificUnify);\n isGenericMatch = isGenericMatch || Boolean(unifiedSyntaxParentMatch);\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !property;\n\n return [\n hasMatchingPreferredType, typeName, isGenericMatch,\n ];\n };\n\n /**\n * Iterates strict types to see if any should be added to `invalidTypes` (and\n * the the relevant strict type returned as the new preferred type).\n * @param {string} typeNodeName\n * @param {string|undefined} preferred\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @param {(string|false|undefined)[][]} invalidTypes\n * @returns {string|undefined} The `preferred` type string, optionally changed\n */\n const checkNativeTypes = (typeNodeName, preferred, parentNode, invalidTypes) => {\n let changedPreferred = preferred;\n for (const strictNativeType of strictNativeTypes) {\n if (\n strictNativeType === 'object' &&\n (\n // This is not set to remap with exact type match (e.g.,\n // `object: 'Object'`), so can ignore (including if circular)\n !preferredTypes?.[typeNodeName] ||\n // Although present on `preferredTypes` for remapping, this is a\n // parent object without a parent match (and not\n // `unifyParentAndChildTypeChecks`) and we don't want\n // `object<>` given TypeScript issue https://github.com/microsoft/TypeScript/issues/20555\n /**\n * @type {import('jsdoc-type-pratt-parser').GenericResult}\n */\n (\n parentNode\n )?.elements?.length && (\n /**\n * @type {import('jsdoc-type-pratt-parser').GenericResult}\n */\n (\n parentNode\n )?.left?.type === 'JsdocTypeName' &&\n /**\n * @type {import('jsdoc-type-pratt-parser').GenericResult}\n */\n (parentNode)?.left?.value === 'Object'\n )\n )\n ) {\n continue;\n }\n\n if (strictNativeType !== typeNodeName &&\n strictNativeType.toLowerCase() === typeNodeName.toLowerCase() &&\n\n // Don't report if user has own map for a strict native type\n (!preferredTypes || preferredTypes?.[strictNativeType] === undefined)\n ) {\n changedPreferred = strictNativeType;\n invalidTypes.push([\n typeNodeName, changedPreferred,\n ]);\n break;\n }\n }\n\n return changedPreferred;\n };\n\n /**\n * Collect invalid type info.\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} nameInTag\n * @param {number} idx\n * @param {string|undefined} property\n * @param {import('jsdoc-type-pratt-parser').NonRootResult} node\n * @param {import('jsdoc-type-pratt-parser').NonRootResult|undefined} parentNode\n * @param {(string|false|undefined)[][]} invalidTypes\n * @returns {void}\n */\n const getInvalidTypes = (type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes) => {\n let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;\n\n const [\n hasMatchingPreferredType,\n typeName,\n isGenericMatch,\n ] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);\n\n let preferred;\n let types;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typeName];\n typeNodeName = typeName === '[]' ? typeName : typeNodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([\n typeNodeName,\n ]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([\n typeNodeName, preferred,\n ]);\n } else if (preferredSetting && typeof preferredSetting === 'object') {\n const nextItem = preferredSetting.skipRootChecking && jsdocTagsWithPossibleType[idx + 1];\n\n if (!nextItem || !nextItem.name.startsWith(`${nameInTag}.`)) {\n preferred = preferredSetting.replacement;\n invalidTypes.push([\n typeNodeName,\n preferred,\n preferredSetting.message,\n ]);\n }\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (Object.entries(structuredTags).some(([\n tag,\n {\n type: typs,\n },\n ]) => {\n types = typs;\n\n return tag === tagName &&\n Array.isArray(types) &&\n !types.includes(typeNodeName);\n })) {\n invalidTypes.push([\n typeNodeName, types,\n ]);\n } else if (!noDefaults && type === 'JsdocTypeName') {\n preferred = checkNativeTypes(typeNodeName, preferred, parentNode, invalidTypes);\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);\n }\n };\n\n for (const [\n idx,\n jsdocTag,\n ] of jsdocTagsWithPossibleType.entries()) {\n /** @type {(string|false|undefined)[][]} */\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = mode === 'permissive' ? tryParse(jsdocTag.type) : parse(jsdocTag.type, mode);\n } catch {\n continue;\n }\n\n const {\n name: nameInTag,\n tag: tagName,\n } = jsdocTag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } =\n /**\n * @type {import('jsdoc-type-pratt-parser').NameResult}\n */ (node);\n if (![\n 'JsdocTypeAny', 'JsdocTypeName',\n ].includes(type)) {\n return;\n }\n\n getInvalidTypes(type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes);\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n /**\n * @type {import('eslint').Rule.ReportFixer}\n */\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n for (const [\n badType,\n preferredType = '',\n msg,\n ] of invalidTypes) {\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n if (exemptTagContexts.some(({\n tag,\n types,\n }) => {\n return tag === tagName &&\n (types === true || types.includes(jsdocTag.type));\n })) {\n continue;\n }\n\n report(\n msg ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n msg ? {\n tagName,\n tagValue,\n } : undefined,\n );\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Reports invalid types.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-types.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n exemptTagContexts: {\n items: {\n additionalProperties: false,\n properties: {\n tag: {\n type: 'string',\n },\n types: {\n oneOf: [\n {\n type: 'boolean',\n },\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n ],\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n noDefaults: {\n type: 'boolean',\n },\n unifyParentAndChildTypeChecks: {\n description: '@deprecated Use the `preferredTypes[preferredType]` setting of the same name instead',\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAK8B,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE9B,MAAMG,iBAAiB,GAAG,CACxB,WAAW,EACX,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,UAAU,EACV,MAAM,EACN,QAAQ,CACT;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,WAAW,GAAGA,CAACC,IAAI,EAAEC,SAAS,EAAEC,cAAc,EAAEC,YAAY,EAAEC,IAAI,EAAEC,UAAU,KAAK;EACvF,IAAIC,GAAG,GAAGL,SAAS;EACnB,IAAIC,cAAc,EAAE;IAClB,MAAMK,UAAU,GAAG,8DACjBF,UAAU,CACVG,IAAI;IACN,IAAIP,SAAS,KAAK,IAAI,EAAE;MACtBM,UAAU,CAACE,QAAQ,GAAG,QAAQ;MAC9BF,UAAU,CAACG,GAAG,GAAG,KAAK;MACtBJ,GAAG,GAAG,OAAO;IACf,CAAC,MAAM;MACL,MAAMK,aAAa,GAAGV,SAAS,CAACW,KAAK,CAAC,aAAa,CAAC;MACpD,IAAID,aAAa,EAAE;QACjBJ,UAAU,CAACE,QAAQ,GAAG,OAAO;QAC7BF,UAAU,CAACG,GAAG,GAAG,IAAI;QACrBJ,GAAG,GAAGL,SAAS,CAACY,KAAK,CAAC,CAAC,EAAE,CAACF,aAAa,CAAC,CAAC,CAAC,CAACG,MAAM,CAAC;MACpD,CAAC,MAAM;QACL,MAAMC,UAAU,GAAGd,SAAS,CAACe,QAAQ,CAAC,IAAI,CAAC;QAC3C,IAAID,UAAU,EAAE;UACdR,UAAU,CAACE,QAAQ,GAAG,OAAO;UAC7BF,UAAU,CAACG,GAAG,GAAG,KAAK;UACtBJ,GAAG,GAAGL,SAAS,CAACY,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC,MAAM,IACLN,UAAU,EAAEE,QAAQ,KAAK,QAAQ,KAChCN,YAAY,KAAK,IAAI,IAAIA,YAAY,KAAK,OAAO,CAAC,EACnD;UACAI,UAAU,CAACE,QAAQ,GAAG,OAAO;UAC7BF,UAAU,CAACG,GAAG,GAAG,KAAK;QACxB;MACF;IACF;EACF,CAAC,MAAM,IAAIV,IAAI,KAAK,cAAc,EAAE;IAClCI,IAAI,CAACJ,IAAI,GAAG,eAAe;EAC7B;;EAEA;EACEI,IAAI,CACJa,KAAK,GAAGX,GAAG,CAACY,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;;EAElD;EACA,IAAI,CAACZ,GAAG,EAAE;IACR,2DACEF,IAAI,CACJa,KAAK,GAAGd,YAAY;EACxB;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA,MAAMgB,UAAU,GAAIC,SAAS,IAAK;EAChC,OAAO,sDAAsD,GAC7D,GAAG,IAAIA,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,yCAAyC;AAC3E,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAzB,OAAA,GAEa,IAAA0B,qBAAY,EAAC,CAAC;EAC3BC,OAAO;EACPC,SAAS;EACTC,MAAM;EACNC,QAAQ;EACRC,UAAU;EACVC;AACF,CAAC,KAAK;EACJ,MAAMC,yBAAyB,GAAGD,KAAK,CAACE,UAAU,CAAEC,GAAG,IAAK;IAC1D,OAAOC,OAAO,CAACJ,KAAK,CAACK,wBAAwB,CAACF,GAAG,CAACA,GAAG,CAAC,CAAC;EACzD,CAAC,CAAC;EAEF;EACE;AACJ;AACA;AACA;AACA;AACA;AACA;EACI;IACEG,IAAI;IACJC,cAAc,EAAEC,sBAAsB;IACtCC;EACF,CAAC,GAAGX,QAAQ;EAEd,MAAMY,0BAA0B,GAAG,EAAE,QAAQ,IAAIF,sBAAsB,IACrE,QAAQ,IAAIA,sBAAsB,IAClC,WAAW,IAAIA,sBAAsB,IACrC,WAAW,IAAIA,sBAAsB,IACrC,UAAU,IAAIA,sBAAsB,CAAC;;EAEvC;AACF;AACA;AACA;AACA;AACA;EACE,MAAMG,IAAI,GAAG;IACXC,OAAO,EAAEtB,UAAU,CAAC,CAAC;IACrBuB,WAAW,EAAE;EACf,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE,MAAMC,MAAM,GAAG;IACbF,OAAO,EAAEtB,UAAU,CAAC,IAAI,CAAC;IACzBuB,WAAW,EAAE;EACf,CAAC;;EAED;EACA,MAAME,YAAY,GAAGT,IAAI,KAAK,YAAY,GACxC;IACEU,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAEL,IAAI;IACjB,WAAW,EAAEG,MAAM;IACnB,UAAU,EAAEH,IAAI;IAChB,UAAU,EAAEG;EACd,CAAC,GACD;IACEE,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,UAAU;IACvB,WAAW,EAAE,UAAU;IACvB,UAAU,EAAE;EACd,CAAC;;EAEH;EACA,MAAMT,cAAc,GAAG;IACrB,IAAGG,0BAA0B,GAC3BK,YAAY,GACZ,CAAC,CAAC;IACJ,GAAGP;EACL,CAAC;EAED;EACE;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAAQ;IACFS,iBAAiB,GAAG,EAAE;IACtBC,UAAU;IACVC;EACF,CAAC,GAAGxB,OAAO,CAACyB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;EAE9B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMC,oBAAoB,GAAGA,CAACC,KAAK,EAAEhD,YAAY,EAAEE,UAAU,EAAE+C,QAAQ,KAAK;IAC1E,IAAIC,wBAAwB,GAAG,KAAK;IACpC,IAAInD,cAAc,GAAG,KAAK;IAC1B,IAAIoD,QAAQ,GAAGnD,YAAY;IAE3B,MAAMoD,eAAe,GAAGlD,UAAU,KAAKmD,SAAS,IAAInD,UAAU,CAACL,IAAI,KAAK,kBAAkB,IAAIoD,QAAQ,KAAK,MAAM;IAEjH,MAAM3C,QAAQ,GAAG,8DACfJ,UAAU,EACTG,IAAI,EAAEC,QAAQ;IACjB,MAAMC,GAAG,GAAG,8DACVL,UAAU,EACTG,IAAI,EAAEE,GAAG;IAEZ,IAAID,QAAQ,KAAK,OAAO,EAAE;MACxB,MAAMgD,cAAc,GAAG/C,GAAG,GAAG,CAC3B,GAAG,EAAE,KAAK,CACX,GAAG,CACF,IAAI,CACL;MACDR,cAAc,GAAGuD,cAAc,CAACC,IAAI,CAAEC,YAAY,IAAK;QACrD,MAAMC,aAAa,GAAGxB,cAAc,GAAGjC,YAAY,GAAGwD,YAAY,CAAC;;QAEnE;QACA,IACE,CAACX,6BAA6B,IAAIO,eAAe,KAC/C;QACC,OAAOK,aAAa,KAAK,QAAQ,IAChCA,aAAa,EAAEZ,6BAA6B,CAAC,KAEjDY,aAAa,KAAKJ,SAAS,EAC3B;UACAF,QAAQ,IAAIK,YAAY;UAExB,OAAO,IAAI;QACb;QAEA,OAAO,KAAK;MACd,CAAC,CAAC;IACJ;IAEA,IACE,CAACzD,cAAc,IAAIkD,QAAQ,IAC3B,8DACE/C,UAAU,CACVL,IAAI,KAAK,kBAAkB,EAC7B;MACA,MAAMyD,cAAc,GAAG/C,GAAG,GAAG,CAC3B,GAAG,EAAE,KAAK,CACX,GAAG,CACFD,QAAQ,KAAK,OAAO,GAAG,IAAI,GAAG,IAAI,CACnC;MAEDP,cAAc,GAAGuD,cAAc,CAACC,IAAI,CAAEC,YAAY,IAAK;QACrD,MAAMC,aAAa,GAAGxB,cAAc,GAAGuB,YAAY,CAAC;QACpD;QACE;QACA,CAACX,6BAA6B,IAAIO,eAAe,KAC/C;QACC,OAAOK,aAAa,KAAK,QAAQ,IAClCA,aAAa,EAAEZ,6BAA6B,CAAC,KAC7CY,aAAa,KAAKJ,SAAS,EAC7B;UACAF,QAAQ,GAAGK,YAAY;UAEvB,OAAO,IAAI;QACb;QAEA,OAAO,KAAK;MACd,CAAC,CAAC;IACJ;IAEA,MAAME,QAAQ,GAAGzB,cAAc,GAAGjC,YAAY,CAAC;IAC/C,MAAM2D,eAAe,GAAGD,QAAQ,KAAKL,SAAS,IAC5C,CAACX,MAAM,CAACkB,MAAM,CAAC3B,cAAc,CAAC,CAAC4B,QAAQ,CAAC7D,YAAY,CAAC;IACvD,MAAM8D,aAAa,GAAG,OAAOJ,QAAQ,KAAK,QAAQ,IAChDA,QAAQ,EAAEb,6BAA6B;IACzC,MAAMkB,wBAAwB,GAAGd,QAAQ,IAAIU,eAAe,KAAKd,6BAA6B,IAAIiB,aAAa,CAAC;IAChH/D,cAAc,GAAGA,cAAc,IAAI+B,OAAO,CAACiC,wBAAwB,CAAC;IAEpEb,wBAAwB,GAAGnD,cAAc,IACvC4D,eAAe,IAAI,CAACV,QAAQ;IAE9B,OAAO,CACLC,wBAAwB,EAAEC,QAAQ,EAAEpD,cAAc,CACnD;EACH,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMiE,gBAAgB,GAAGA,CAAChE,YAAY,EAAEF,SAAS,EAAEI,UAAU,EAAE+D,YAAY,KAAK;IAC9E,IAAIC,gBAAgB,GAAGpE,SAAS;IAChC,KAAK,MAAMqE,gBAAgB,IAAIxE,iBAAiB,EAAE;MAChD,IACEwE,gBAAgB,KAAK,QAAQ;MAE3B;MACA;MACA,CAAClC,cAAc,GAAGjC,YAAY,CAAC;MAC/B;MACA;MACA;MACA;MACA;AACV;AACA;MAEYE,UAAU,EACTkE,QAAQ,EAAEzD,MAAM;MACnB;AACV;AACA;MAEcT,UAAU,EACTmE,IAAI,EAAExE,IAAI,KAAK,eAAe;MACjC;AACZ;AACA;MACaK,UAAU,EAAGmE,IAAI,EAAEvD,KAAK,KAAK,QAAQ,CACvC,CACF,EACD;QACA;MACF;MAEA,IAAIqD,gBAAgB,KAAKnE,YAAY,IACnCmE,gBAAgB,CAACG,WAAW,CAAC,CAAC,KAAKtE,YAAY,CAACsE,WAAW,CAAC,CAAC;MAE7D;MACC,CAACrC,cAAc,IAAIA,cAAc,GAAGkC,gBAAgB,CAAC,KAAKd,SAAS,CAAC,EACrE;QACAa,gBAAgB,GAAGC,gBAAgB;QACnCF,YAAY,CAACM,IAAI,CAAC,CAChBvE,YAAY,EAAEkE,gBAAgB,CAC/B,CAAC;QACF;MACF;IACF;IAEA,OAAOA,gBAAgB;EACzB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMM,eAAe,GAAGA,CAAC3E,IAAI,EAAEiB,KAAK,EAAE2D,OAAO,EAAEC,SAAS,EAAEC,GAAG,EAAE1B,QAAQ,EAAEhD,IAAI,EAAEC,UAAU,EAAE+D,YAAY,KAAK;IAC1G,IAAIjE,YAAY,GAAGH,IAAI,KAAK,cAAc,GAAG,GAAG,GAAGiB,KAAK;IAExD,MAAM,CACJoC,wBAAwB,EACxBC,QAAQ,EACRpD,cAAc,CACf,GAAGgD,oBAAoB,CAAClD,IAAI,EAAEG,YAAY,EAAEE,UAAU,EAAE+C,QAAQ,CAAC;IAElE,IAAInD,SAAS;IACb,IAAI8E,KAAK;IACT,IAAI1B,wBAAwB,EAAE;MAC5B,MAAM2B,gBAAgB,GAAG5C,cAAc,CAACkB,QAAQ,CAAC;MACjDnD,YAAY,GAAGmD,QAAQ,KAAK,IAAI,GAAGA,QAAQ,GAAGnD,YAAY;MAE1D,IAAI,CAAC6E,gBAAgB,EAAE;QACrBZ,YAAY,CAACM,IAAI,CAAC,CAChBvE,YAAY,CACb,CAAC;MACJ,CAAC,MAAM,IAAI,OAAO6E,gBAAgB,KAAK,QAAQ,EAAE;QAC/C/E,SAAS,GAAG+E,gBAAgB;QAC5BZ,YAAY,CAACM,IAAI,CAAC,CAChBvE,YAAY,EAAEF,SAAS,CACxB,CAAC;MACJ,CAAC,MAAM,IAAI+E,gBAAgB,IAAI,OAAOA,gBAAgB,KAAK,QAAQ,EAAE;QACnE,MAAMC,QAAQ,GAAGD,gBAAgB,CAACE,gBAAgB,IAAIpD,yBAAyB,CAACgD,GAAG,GAAG,CAAC,CAAC;QAExF,IAAI,CAACG,QAAQ,IAAI,CAACA,QAAQ,CAACE,IAAI,CAACC,UAAU,CAAC,GAAGP,SAAS,GAAG,CAAC,EAAE;UAC3D5E,SAAS,GAAG+E,gBAAgB,CAACtC,WAAW;UACxC0B,YAAY,CAACM,IAAI,CAAC,CAChBvE,YAAY,EACZF,SAAS,EACT+E,gBAAgB,CAACvC,OAAO,CACzB,CAAC;QACJ;MACF,CAAC,MAAM;QACLZ,KAAK,CAACwD,cAAc,CAClB,wFACF,CAAC;QAED;MACF;IACF,CAAC,MAAM,IAAIxC,MAAM,CAACyC,OAAO,CAAChD,cAAc,CAAC,CAACoB,IAAI,CAAC,CAAC,CAC9C1B,GAAG,EACH;MACEhC,IAAI,EAAEuF;IACR,CAAC,CACF,KAAK;MACJR,KAAK,GAAGQ,IAAI;MAEZ,OAAOvD,GAAG,KAAK4C,OAAO,IACpBY,KAAK,CAACC,OAAO,CAACV,KAAK,CAAC,IACpB,CAACA,KAAK,CAACf,QAAQ,CAAC7D,YAAY,CAAC;IACjC,CAAC,CAAC,EAAE;MACFiE,YAAY,CAACM,IAAI,CAAC,CAChBvE,YAAY,EAAE4E,KAAK,CACpB,CAAC;IACJ,CAAC,MAAM,IAAI,CAAChC,UAAU,IAAI/C,IAAI,KAAK,eAAe,EAAE;MAClDC,SAAS,GAAGkE,gBAAgB,CAAChE,YAAY,EAAEF,SAAS,EAAEI,UAAU,EAAE+D,YAAY,CAAC;IACjF;;IAEA;IACA,IAAInE,SAAS,EAAE;MACbF,WAAW,CAACC,IAAI,EAAEC,SAAS,EAAEC,cAAc,EAAEC,YAAY,EAAEC,IAAI,EAAEC,UAAU,CAAC;IAC9E;EACF,CAAC;EAED,KAAK,MAAM,CACTyE,GAAG,EACHY,QAAQ,CACT,IAAI5D,yBAAyB,CAACwD,OAAO,CAAC,CAAC,EAAE;IACxC;IACA,MAAMlB,YAAY,GAAG,EAAE;IACvB,IAAIuB,OAAO;IAEX,IAAI;MACFA,OAAO,GAAGxD,IAAI,KAAK,YAAY,GAAG,IAAAyD,sBAAQ,EAACF,QAAQ,CAAC1F,IAAI,CAAC,GAAG,IAAA6F,mBAAK,EAACH,QAAQ,CAAC1F,IAAI,EAAEmC,IAAI,CAAC;IACxF,CAAC,CAAC,MAAM;MACN;IACF;IAEA,MAAM;MACJgD,IAAI,EAAEN,SAAS;MACf7C,GAAG,EAAE4C;IACP,CAAC,GAAGc,QAAQ;IAEZ,IAAAI,sBAAQ,EAACH,OAAO,EAAE,CAACvF,IAAI,EAAEC,UAAU,EAAE+C,QAAQ,KAAK;MAChD,MAAM;QACJpD,IAAI;QACJiB;MACF,CAAC;MACC;AACR;AACA;MAAab,IAAK;MACZ,IAAI,CAAC,CACH,cAAc,EAAE,eAAe,CAChC,CAAC4D,QAAQ,CAAChE,IAAI,CAAC,EAAE;QAChB;MACF;MAEA2E,eAAe,CAAC3E,IAAI,EAAEiB,KAAK,EAAE2D,OAAO,EAAEC,SAAS,EAAEC,GAAG,EAAE1B,QAAQ,EAAEhD,IAAI,EAAEC,UAAU,EAAE+D,YAAY,CAAC;IACjG,CAAC,CAAC;IAEF,IAAIA,YAAY,CAACtD,MAAM,EAAE;MACvB,MAAMiF,SAAS,GAAG,IAAAC,uBAAS,EAACL,OAAO,CAAC;;MAEpC;AACN;AACA;MACM,MAAMM,GAAG,GAAIC,KAAK,IAAK;QACrB,OAAOA,KAAK,CAACC,WAAW,CACtB1E,SAAS,EACTG,UAAU,CAACwE,OAAO,CAAC3E,SAAS,CAAC,CAACP,OAAO,CACnC,IAAIwE,QAAQ,CAAC1F,IAAI,GAAG,EACpB,IAAI+F,SAAS,GACf,CACF,CAAC;MACH,CAAC;MAED,KAAK,MAAM,CACTM,OAAO,EACPzC,aAAa,GAAG,EAAE,EAClB0C,GAAG,CACJ,IAAIlC,YAAY,EAAE;QACjB,MAAMmC,QAAQ,GAAGb,QAAQ,CAACP,IAAI,GAAG,KAAKO,QAAQ,CAACP,IAAI,GAAG,GAAG,EAAE;QAC3D,IAAIrC,iBAAiB,CAACY,IAAI,CAAC,CAAC;UAC1B1B,GAAG;UACH+C;QACF,CAAC,KAAK;UACJ,OAAO/C,GAAG,KAAK4C,OAAO,KACnBG,KAAK,KAAK,IAAI,IAAIA,KAAK,CAACf,QAAQ,CAAC0B,QAAQ,CAAC1F,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,EAAE;UACF;QACF;QAEA0B,MAAM,CACJ4E,GAAG,IACD,kBAAkB1B,OAAO,GAAG2B,QAAQ,UAAUF,OAAO,GAAG,IACvDzC,aAAa,GAAG,IAAI,GAAG,GAAG,CAAC,IAC3BA,aAAa,GAAG,WAAW4C,IAAI,CAACR,SAAS,CAACpC,aAAa,CAAC,GAAG,GAAG,EAAE,CAAC,EACpEA,aAAa,GAAGqC,GAAG,GAAG,IAAI,EAC1BP,QAAQ,EACRY,GAAG,GAAG;UACJ1B,OAAO;UACP2B;QACF,CAAC,GAAG/C,SACN,CAAC;MACH;IACF;EACF;AACF,CAAC,EAAE;EACDiD,gBAAgB,EAAE,IAAI;EACtBjG,IAAI,EAAE;IACJkG,IAAI,EAAE;MACJC,WAAW,EAAE,wBAAwB;MACrCC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVlE,iBAAiB,EAAE;UACjBmE,KAAK,EAAE;YACLF,oBAAoB,EAAE,KAAK;YAC3BC,UAAU,EAAE;cACVhF,GAAG,EAAE;gBACHhC,IAAI,EAAE;cACR,CAAC;cACD+E,KAAK,EAAE;gBACLmC,KAAK,EAAE,CACL;kBACElH,IAAI,EAAE;gBACR,CAAC,EACD;kBACEiH,KAAK,EAAE;oBACLjH,IAAI,EAAE;kBACR,CAAC;kBACDA,IAAI,EAAE;gBACR,CAAC;cAEL;YACF,CAAC;YACDA,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACD+C,UAAU,EAAE;UACV/C,IAAI,EAAE;QACR,CAAC;QACDgD,6BAA6B,EAAE;UAC7B2D,WAAW,EAAE,sFAAsF;UACnG3G,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAmH,MAAA,CAAA7F,OAAA,GAAAA,OAAA,CAAAzB,OAAA","ignoreList":[]}
|
package/dist/rules.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export interface Rules {
|
|
2
|
+
/** Reports invalid alignment of JSDoc block asterisks. */
|
|
2
3
|
"jsdoc/check-alignment":
|
|
3
4
|
| []
|
|
4
5
|
| [
|
|
@@ -7,6 +8,7 @@ export interface Rules {
|
|
|
7
8
|
}
|
|
8
9
|
];
|
|
9
10
|
|
|
11
|
+
/** Ensures that (JavaScript) examples within JSDoc adhere to ESLint rules. */
|
|
10
12
|
"jsdoc/check-examples":
|
|
11
13
|
| []
|
|
12
14
|
| [
|
|
@@ -33,6 +35,7 @@ export interface Rules {
|
|
|
33
35
|
}
|
|
34
36
|
];
|
|
35
37
|
|
|
38
|
+
/** Reports invalid padding inside JSDoc blocks. */
|
|
36
39
|
"jsdoc/check-indentation":
|
|
37
40
|
| []
|
|
38
41
|
| [
|
|
@@ -41,6 +44,7 @@ export interface Rules {
|
|
|
41
44
|
}
|
|
42
45
|
];
|
|
43
46
|
|
|
47
|
+
/** Reports invalid alignment of JSDoc block lines. */
|
|
44
48
|
"jsdoc/check-line-alignment":
|
|
45
49
|
| []
|
|
46
50
|
| ["always" | "never" | "any"]
|
|
@@ -61,6 +65,7 @@ export interface Rules {
|
|
|
61
65
|
}
|
|
62
66
|
];
|
|
63
67
|
|
|
68
|
+
/** Ensures that parameter names in JSDoc match those in the function declaration. */
|
|
64
69
|
"jsdoc/check-param-names":
|
|
65
70
|
| []
|
|
66
71
|
| [
|
|
@@ -76,6 +81,7 @@ export interface Rules {
|
|
|
76
81
|
}
|
|
77
82
|
];
|
|
78
83
|
|
|
84
|
+
/** Ensures that property names in JSDoc are not duplicated on the same block and that nested properties have defined roots. */
|
|
79
85
|
"jsdoc/check-property-names":
|
|
80
86
|
| []
|
|
81
87
|
| [
|
|
@@ -84,6 +90,7 @@ export interface Rules {
|
|
|
84
90
|
}
|
|
85
91
|
];
|
|
86
92
|
|
|
93
|
+
/** Reports invalid block tag names. */
|
|
87
94
|
"jsdoc/check-tag-names":
|
|
88
95
|
| []
|
|
89
96
|
| [
|
|
@@ -95,6 +102,7 @@ export interface Rules {
|
|
|
95
102
|
}
|
|
96
103
|
];
|
|
97
104
|
|
|
105
|
+
/** Reports invalid types. */
|
|
98
106
|
"jsdoc/check-types":
|
|
99
107
|
| []
|
|
100
108
|
| [
|
|
@@ -104,10 +112,14 @@ export interface Rules {
|
|
|
104
112
|
types?: boolean | string[];
|
|
105
113
|
}[];
|
|
106
114
|
noDefaults?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* @deprecated Use the `preferredTypes[preferredType]` setting of the same name instead
|
|
117
|
+
*/
|
|
107
118
|
unifyParentAndChildTypeChecks?: boolean;
|
|
108
119
|
}
|
|
109
120
|
];
|
|
110
121
|
|
|
122
|
+
/** This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`. */
|
|
111
123
|
"jsdoc/check-values":
|
|
112
124
|
| []
|
|
113
125
|
| [
|
|
@@ -119,6 +131,7 @@ export interface Rules {
|
|
|
119
131
|
}
|
|
120
132
|
];
|
|
121
133
|
|
|
134
|
+
/** Converts non-JSDoc comments preceding or following nodes into JSDoc ones */
|
|
122
135
|
"jsdoc/convert-to-jsdoc-comments":
|
|
123
136
|
| []
|
|
124
137
|
| [
|
|
@@ -151,6 +164,7 @@ export interface Rules {
|
|
|
151
164
|
}
|
|
152
165
|
];
|
|
153
166
|
|
|
167
|
+
/** Expects specific tags to be empty of any content. */
|
|
154
168
|
"jsdoc/empty-tags":
|
|
155
169
|
| []
|
|
156
170
|
| [
|
|
@@ -159,6 +173,7 @@ export interface Rules {
|
|
|
159
173
|
}
|
|
160
174
|
];
|
|
161
175
|
|
|
176
|
+
/** Reports an issue with any non-constructor function using `@implements`. */
|
|
162
177
|
"jsdoc/implements-on-classes":
|
|
163
178
|
| []
|
|
164
179
|
| [
|
|
@@ -173,6 +188,7 @@ export interface Rules {
|
|
|
173
188
|
}
|
|
174
189
|
];
|
|
175
190
|
|
|
191
|
+
/** This rule reports doc comments that only restate their attached name. */
|
|
176
192
|
"jsdoc/informative-docs":
|
|
177
193
|
| []
|
|
178
194
|
| [
|
|
@@ -189,6 +205,7 @@ export interface Rules {
|
|
|
189
205
|
}
|
|
190
206
|
];
|
|
191
207
|
|
|
208
|
+
/** Enforces minimum number of newlines before JSDoc comment blocks */
|
|
192
209
|
"jsdoc/lines-before-block":
|
|
193
210
|
| []
|
|
194
211
|
| [
|
|
@@ -201,6 +218,7 @@ export interface Rules {
|
|
|
201
218
|
}
|
|
202
219
|
];
|
|
203
220
|
|
|
221
|
+
/** Enforces a regular expression pattern on descriptions. */
|
|
204
222
|
"jsdoc/match-description":
|
|
205
223
|
| []
|
|
206
224
|
| [
|
|
@@ -238,6 +256,7 @@ export interface Rules {
|
|
|
238
256
|
}
|
|
239
257
|
];
|
|
240
258
|
|
|
259
|
+
/** Reports the name portion of a JSDoc tag if matching or not matching a given regular expression. */
|
|
241
260
|
"jsdoc/match-name":
|
|
242
261
|
| []
|
|
243
262
|
| [
|
|
@@ -254,6 +273,7 @@ export interface Rules {
|
|
|
254
273
|
}
|
|
255
274
|
];
|
|
256
275
|
|
|
276
|
+
/** Controls how and whether jsdoc blocks can be expressed as single or multiple line blocks. */
|
|
257
277
|
"jsdoc/multiline-blocks":
|
|
258
278
|
| []
|
|
259
279
|
| [
|
|
@@ -270,6 +290,7 @@ export interface Rules {
|
|
|
270
290
|
}
|
|
271
291
|
];
|
|
272
292
|
|
|
293
|
+
/** This rule checks for multi-line-style comments which fail to meet the criteria of a jsdoc block. */
|
|
273
294
|
"jsdoc/no-bad-blocks":
|
|
274
295
|
| []
|
|
275
296
|
| [
|
|
@@ -279,6 +300,7 @@ export interface Rules {
|
|
|
279
300
|
}
|
|
280
301
|
];
|
|
281
302
|
|
|
303
|
+
/** Removes empty blocks with nothing but possibly line breaks */
|
|
282
304
|
"jsdoc/no-blank-blocks":
|
|
283
305
|
| []
|
|
284
306
|
| [
|
|
@@ -287,6 +309,7 @@ export interface Rules {
|
|
|
287
309
|
}
|
|
288
310
|
];
|
|
289
311
|
|
|
312
|
+
/** This rule reports defaults being used on the relevant portion of `@param` or `@default`. */
|
|
290
313
|
"jsdoc/no-defaults":
|
|
291
314
|
| []
|
|
292
315
|
| [
|
|
@@ -302,6 +325,7 @@ export interface Rules {
|
|
|
302
325
|
}
|
|
303
326
|
];
|
|
304
327
|
|
|
328
|
+
/** Reports when certain comment structures are always expected. */
|
|
305
329
|
"jsdoc/no-missing-syntax":
|
|
306
330
|
| []
|
|
307
331
|
| [
|
|
@@ -318,6 +342,7 @@ export interface Rules {
|
|
|
318
342
|
}
|
|
319
343
|
];
|
|
320
344
|
|
|
345
|
+
/** Prevents use of multiple asterisks at the beginning of lines. */
|
|
321
346
|
"jsdoc/no-multi-asterisks":
|
|
322
347
|
| []
|
|
323
348
|
| [
|
|
@@ -328,6 +353,7 @@ export interface Rules {
|
|
|
328
353
|
}
|
|
329
354
|
];
|
|
330
355
|
|
|
356
|
+
/** Reports when certain comment structures are present. */
|
|
331
357
|
"jsdoc/no-restricted-syntax":
|
|
332
358
|
| []
|
|
333
359
|
| [
|
|
@@ -343,6 +369,7 @@ export interface Rules {
|
|
|
343
369
|
}
|
|
344
370
|
];
|
|
345
371
|
|
|
372
|
+
/** This rule reports types being used on `@param` or `@returns`. */
|
|
346
373
|
"jsdoc/no-types":
|
|
347
374
|
| []
|
|
348
375
|
| [
|
|
@@ -357,6 +384,7 @@ export interface Rules {
|
|
|
357
384
|
}
|
|
358
385
|
];
|
|
359
386
|
|
|
387
|
+
/** Checks that types in jsdoc comments are defined. */
|
|
360
388
|
"jsdoc/no-undefined-types":
|
|
361
389
|
| []
|
|
362
390
|
| [
|
|
@@ -367,6 +395,7 @@ export interface Rules {
|
|
|
367
395
|
}
|
|
368
396
|
];
|
|
369
397
|
|
|
398
|
+
/** Requires that each JSDoc line starts with an `*`. */
|
|
370
399
|
"jsdoc/require-asterisk-prefix":
|
|
371
400
|
| []
|
|
372
401
|
| ["always" | "never" | "any"]
|
|
@@ -381,6 +410,7 @@ export interface Rules {
|
|
|
381
410
|
}
|
|
382
411
|
];
|
|
383
412
|
|
|
413
|
+
/** Requires that all functions have a description. */
|
|
384
414
|
"jsdoc/require-description":
|
|
385
415
|
| []
|
|
386
416
|
| [
|
|
@@ -400,6 +430,7 @@ export interface Rules {
|
|
|
400
430
|
}
|
|
401
431
|
];
|
|
402
432
|
|
|
433
|
+
/** Requires that block description, explicit `@description`, and `@param`/`@returns` tag descriptions are written in complete sentences. */
|
|
403
434
|
"jsdoc/require-description-complete-sentence":
|
|
404
435
|
| []
|
|
405
436
|
| [
|
|
@@ -410,6 +441,7 @@ export interface Rules {
|
|
|
410
441
|
}
|
|
411
442
|
];
|
|
412
443
|
|
|
444
|
+
/** Requires that all functions have examples. */
|
|
413
445
|
"jsdoc/require-example":
|
|
414
446
|
| []
|
|
415
447
|
| [
|
|
@@ -430,6 +462,7 @@ export interface Rules {
|
|
|
430
462
|
}
|
|
431
463
|
];
|
|
432
464
|
|
|
465
|
+
/** Checks that all files have one `@file`, `@fileoverview`, or `@overview` tag at the beginning of the file. */
|
|
433
466
|
"jsdoc/require-file-overview":
|
|
434
467
|
| []
|
|
435
468
|
| [
|
|
@@ -448,6 +481,7 @@ export interface Rules {
|
|
|
448
481
|
}
|
|
449
482
|
];
|
|
450
483
|
|
|
484
|
+
/** Requires a hyphen before the `@param` description. */
|
|
451
485
|
"jsdoc/require-hyphen-before-param-description":
|
|
452
486
|
| []
|
|
453
487
|
| ["always" | "never"]
|
|
@@ -466,6 +500,7 @@ export interface Rules {
|
|
|
466
500
|
}
|
|
467
501
|
];
|
|
468
502
|
|
|
503
|
+
/** Require JSDoc comments */
|
|
469
504
|
"jsdoc/require-jsdoc":
|
|
470
505
|
| []
|
|
471
506
|
| [
|
|
@@ -507,6 +542,7 @@ export interface Rules {
|
|
|
507
542
|
}
|
|
508
543
|
];
|
|
509
544
|
|
|
545
|
+
/** Requires that all function parameters are documented. */
|
|
510
546
|
"jsdoc/require-param":
|
|
511
547
|
| []
|
|
512
548
|
| [
|
|
@@ -536,6 +572,7 @@ export interface Rules {
|
|
|
536
572
|
}
|
|
537
573
|
];
|
|
538
574
|
|
|
575
|
+
/** Requires that each `@param` tag has a `description` value. */
|
|
539
576
|
"jsdoc/require-param-description":
|
|
540
577
|
| []
|
|
541
578
|
| [
|
|
@@ -552,6 +589,7 @@ export interface Rules {
|
|
|
552
589
|
}
|
|
553
590
|
];
|
|
554
591
|
|
|
592
|
+
/** Requires that all function parameters have names. */
|
|
555
593
|
"jsdoc/require-param-name":
|
|
556
594
|
| []
|
|
557
595
|
| [
|
|
@@ -566,6 +604,7 @@ export interface Rules {
|
|
|
566
604
|
}
|
|
567
605
|
];
|
|
568
606
|
|
|
607
|
+
/** Requires that each `@param` tag has a `type` value. */
|
|
569
608
|
"jsdoc/require-param-type":
|
|
570
609
|
| []
|
|
571
610
|
| [
|
|
@@ -582,6 +621,7 @@ export interface Rules {
|
|
|
582
621
|
}
|
|
583
622
|
];
|
|
584
623
|
|
|
624
|
+
/** Requires that returns are documented. */
|
|
585
625
|
"jsdoc/require-returns":
|
|
586
626
|
| []
|
|
587
627
|
| [
|
|
@@ -611,6 +651,7 @@ export interface Rules {
|
|
|
611
651
|
}
|
|
612
652
|
];
|
|
613
653
|
|
|
654
|
+
/** Requires a return statement in function body if a `@returns` tag is specified in jsdoc comment. */
|
|
614
655
|
"jsdoc/require-returns-check":
|
|
615
656
|
| []
|
|
616
657
|
| [
|
|
@@ -621,6 +662,7 @@ export interface Rules {
|
|
|
621
662
|
}
|
|
622
663
|
];
|
|
623
664
|
|
|
665
|
+
/** Requires that the `@returns` tag has a `description` value. */
|
|
624
666
|
"jsdoc/require-returns-description":
|
|
625
667
|
| []
|
|
626
668
|
| [
|
|
@@ -635,6 +677,7 @@ export interface Rules {
|
|
|
635
677
|
}
|
|
636
678
|
];
|
|
637
679
|
|
|
680
|
+
/** Requires that `@returns` tag has `type` value. */
|
|
638
681
|
"jsdoc/require-returns-type":
|
|
639
682
|
| []
|
|
640
683
|
| [
|
|
@@ -649,6 +692,7 @@ export interface Rules {
|
|
|
649
692
|
}
|
|
650
693
|
];
|
|
651
694
|
|
|
695
|
+
/** Requires template tags for each generic type parameter */
|
|
652
696
|
"jsdoc/require-template":
|
|
653
697
|
| []
|
|
654
698
|
| [
|
|
@@ -658,6 +702,7 @@ export interface Rules {
|
|
|
658
702
|
}
|
|
659
703
|
];
|
|
660
704
|
|
|
705
|
+
/** Requires that throw statements are documented. */
|
|
661
706
|
"jsdoc/require-throws":
|
|
662
707
|
| []
|
|
663
708
|
| [
|
|
@@ -673,6 +718,7 @@ export interface Rules {
|
|
|
673
718
|
}
|
|
674
719
|
];
|
|
675
720
|
|
|
721
|
+
/** Requires yields are documented. */
|
|
676
722
|
"jsdoc/require-yields":
|
|
677
723
|
| []
|
|
678
724
|
| [
|
|
@@ -693,6 +739,7 @@ export interface Rules {
|
|
|
693
739
|
}
|
|
694
740
|
];
|
|
695
741
|
|
|
742
|
+
/** Requires a yield statement in function body if a `@yields` tag is specified in jsdoc comment. */
|
|
696
743
|
"jsdoc/require-yields-check":
|
|
697
744
|
| []
|
|
698
745
|
| [
|
|
@@ -710,6 +757,7 @@ export interface Rules {
|
|
|
710
757
|
}
|
|
711
758
|
];
|
|
712
759
|
|
|
760
|
+
/** Sorts tags by a specified sequence according to tag name. */
|
|
713
761
|
"jsdoc/sort-tags":
|
|
714
762
|
| []
|
|
715
763
|
| [
|
|
@@ -724,6 +772,7 @@ export interface Rules {
|
|
|
724
772
|
}
|
|
725
773
|
];
|
|
726
774
|
|
|
775
|
+
/** Enforces lines (or no lines) between tags. */
|
|
727
776
|
"jsdoc/tag-lines":
|
|
728
777
|
| []
|
|
729
778
|
| ["always" | "any" | "never"]
|
|
@@ -747,6 +796,7 @@ export interface Rules {
|
|
|
747
796
|
}
|
|
748
797
|
];
|
|
749
798
|
|
|
799
|
+
/** Auto-escape certain characters that are input within block and tag descriptions. */
|
|
750
800
|
"jsdoc/text-escaping":
|
|
751
801
|
| []
|
|
752
802
|
| [
|
|
@@ -756,6 +806,7 @@ export interface Rules {
|
|
|
756
806
|
}
|
|
757
807
|
];
|
|
758
808
|
|
|
809
|
+
/** Formats JSDoc type values. */
|
|
759
810
|
"jsdoc/type-formatting":
|
|
760
811
|
| []
|
|
761
812
|
| [
|
|
@@ -776,6 +827,7 @@ export interface Rules {
|
|
|
776
827
|
}
|
|
777
828
|
];
|
|
778
829
|
|
|
830
|
+
/** Requires all types to be valid JSDoc or Closure compiler types without syntax errors. */
|
|
779
831
|
"jsdoc/valid-types":
|
|
780
832
|
| []
|
|
781
833
|
| [
|
package/package.json
CHANGED