eslint-plugin-jsdoc 39.5.1 → 39.6.1
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 +35 -0
- package/dist/rules/checkTypes.js +15 -7
- package/dist/rules/checkTypes.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -480,6 +480,8 @@ The format of the configuration is as follows:
|
|
|
480
480
|
- a string type to be preferred in its place (and which `fix` mode
|
|
481
481
|
can replace)
|
|
482
482
|
- `false` (for forbidding the type)
|
|
483
|
+
- an optional key `skipRootChecking` (for `check-types`) to allow for this
|
|
484
|
+
type in the context of a root (i.e., a parent object of some child type)
|
|
483
485
|
|
|
484
486
|
Note that the preferred types indicated as targets in
|
|
485
487
|
`settings.jsdoc.preferredTypes` map will be assumed to be defined by
|
|
@@ -5737,6 +5739,15 @@ function abc(param) {
|
|
|
5737
5739
|
return 'abc';
|
|
5738
5740
|
}
|
|
5739
5741
|
// Message: Invalid JSDoc @param "param" type "Object"; prefer: "object".
|
|
5742
|
+
|
|
5743
|
+
/**
|
|
5744
|
+
* @param {object} root
|
|
5745
|
+
* @param {number} root.a
|
|
5746
|
+
* @param {object} b
|
|
5747
|
+
*/
|
|
5748
|
+
function a () {}
|
|
5749
|
+
// Settings: {"jsdoc":{"preferredTypes":{"object":{"skipRootChecking":true}}}}
|
|
5750
|
+
// Message: Invalid JSDoc @param "b" type "object".
|
|
5740
5751
|
````
|
|
5741
5752
|
|
|
5742
5753
|
The following patterns are not considered problems:
|
|
@@ -6055,6 +6066,13 @@ function foo(spec) {
|
|
|
6055
6066
|
}
|
|
6056
6067
|
|
|
6057
6068
|
foo()
|
|
6069
|
+
|
|
6070
|
+
/**
|
|
6071
|
+
* @param {object} root
|
|
6072
|
+
* @param {number} root.a
|
|
6073
|
+
*/
|
|
6074
|
+
function a () {}
|
|
6075
|
+
// Settings: {"jsdoc":{"preferredTypes":{"object":{"message":"Won't see this message","skipRootChecking":true}}}}
|
|
6058
6076
|
````
|
|
6059
6077
|
|
|
6060
6078
|
|
|
@@ -9623,6 +9641,16 @@ const MyComponent = ({ children }) => {
|
|
|
9623
9641
|
}
|
|
9624
9642
|
// "jsdoc/no-restricted-syntax": ["error"|"warn", {"contexts":[{"comment":"JsdocBlock:has(JsdocTag[tag=\"type\"]:has([value=/FunctionComponent/]))","context":"any","message":"The `FunctionComponent` type is not allowed. Please use `FC` instead."}]}]
|
|
9625
9643
|
// Message: The `FunctionComponent` type is not allowed. Please use `FC` instead.
|
|
9644
|
+
|
|
9645
|
+
/** Some text and more */
|
|
9646
|
+
// "jsdoc/no-restricted-syntax": ["error"|"warn", {"contexts":[{"comment":"JsdocBlock[descriptionStartLine=0][descriptionEndLine=0]","context":"any","message":"Requiring descriptive text on 0th line only"}]}]
|
|
9647
|
+
// Message: Requiring descriptive text on 0th line only
|
|
9648
|
+
|
|
9649
|
+
/** Some text and
|
|
9650
|
+
* more
|
|
9651
|
+
*/
|
|
9652
|
+
// "jsdoc/no-restricted-syntax": ["error"|"warn", {"contexts":[{"comment":"JsdocBlock[descriptionStartLine=0][hasPreterminalDescription=0]","context":"any","message":"Requiring descriptive text on 0th line and no preterminal description"}]}]
|
|
9653
|
+
// Message: Requiring descriptive text on 0th line and no preterminal description
|
|
9626
9654
|
````
|
|
9627
9655
|
|
|
9628
9656
|
The following patterns are not considered problems:
|
|
@@ -9681,6 +9709,13 @@ const MY_ENUM = Object.freeze({
|
|
|
9681
9709
|
/** Does something very important. */
|
|
9682
9710
|
function foo(): string;
|
|
9683
9711
|
// "jsdoc/no-restricted-syntax": ["error"|"warn", {"contexts":[{"comment":"JsdocBlock[endLine=0][description!=/^\\S[\\s\\S]*\\S\\s$/]"}]}]
|
|
9712
|
+
|
|
9713
|
+
/** Some text and more */
|
|
9714
|
+
// "jsdoc/no-restricted-syntax": ["error"|"warn", {"contexts":[{"comment":"JsdocBlock[descriptionStartLine=0][descriptionEndLine=1]","context":"any","message":"Requiring descriptive text on 0th line and no final newline"}]}]
|
|
9715
|
+
|
|
9716
|
+
/** Some text and
|
|
9717
|
+
* more */
|
|
9718
|
+
// "jsdoc/no-restricted-syntax": ["error"|"warn", {"contexts":[{"comment":"JsdocBlock[descriptionStartLine=0][hasPreterminalDescription=0]","context":"any","message":"Requiring descriptive text on 0th line and no preterminal description"}]}]
|
|
9684
9719
|
````
|
|
9685
9720
|
|
|
9686
9721
|
|
package/dist/rules/checkTypes.js
CHANGED
|
@@ -177,13 +177,15 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
177
177
|
* @param {string} type
|
|
178
178
|
* @param {string} value
|
|
179
179
|
* @param {string} tagName
|
|
180
|
+
* @param {string} nameInTag
|
|
181
|
+
* @param {number} idx
|
|
180
182
|
* @param {string} property
|
|
181
183
|
* @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node
|
|
182
184
|
* @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode
|
|
183
185
|
* @param {string[]} invalidTypes
|
|
184
186
|
* @returns {void}
|
|
185
187
|
*/
|
|
186
|
-
const getInvalidTypes = (type, value, tagName, property, node, parentNode, invalidTypes) => {
|
|
188
|
+
const getInvalidTypes = (type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes) => {
|
|
187
189
|
let typeNodeName = type === 'JsdocTypeAny' ? '*' : value;
|
|
188
190
|
const [hasMatchingPreferredType, typeName, isGenericMatch] = getPreferredTypeInfo(type, typeNodeName, parentNode, property);
|
|
189
191
|
let preferred;
|
|
@@ -196,9 +198,12 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
196
198
|
} else if (typeof preferredSetting === 'string') {
|
|
197
199
|
preferred = preferredSetting;
|
|
198
200
|
invalidTypes.push([typeNodeName, preferred]);
|
|
199
|
-
} else if (typeof preferredSetting === 'object') {
|
|
200
|
-
|
|
201
|
-
|
|
201
|
+
} else if (preferredSetting && typeof preferredSetting === 'object') {
|
|
202
|
+
const nextItem = preferredSetting.skipRootChecking && jsdocTagsWithPossibleType[idx + 1];
|
|
203
|
+
if (!nextItem || !nextItem.name.startsWith(`${nameInTag}.`)) {
|
|
204
|
+
preferred = preferredSetting.replacement;
|
|
205
|
+
invalidTypes.push([typeNodeName, preferred, preferredSetting.message]);
|
|
206
|
+
}
|
|
202
207
|
} else {
|
|
203
208
|
utils.reportSettings('Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.');
|
|
204
209
|
return;
|
|
@@ -219,7 +224,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
219
224
|
adjustNames(type, preferred, isGenericMatch, typeNodeName, node, parentNode);
|
|
220
225
|
}
|
|
221
226
|
};
|
|
222
|
-
for (const jsdocTag of jsdocTagsWithPossibleType) {
|
|
227
|
+
for (const [idx, jsdocTag] of jsdocTagsWithPossibleType.entries()) {
|
|
223
228
|
const invalidTypes = [];
|
|
224
229
|
let typeAst;
|
|
225
230
|
try {
|
|
@@ -227,7 +232,10 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
227
232
|
} catch {
|
|
228
233
|
continue;
|
|
229
234
|
}
|
|
230
|
-
const
|
|
235
|
+
const {
|
|
236
|
+
tag: tagName,
|
|
237
|
+
name: nameInTag
|
|
238
|
+
} = jsdocTag;
|
|
231
239
|
(0, _jsdoccomment.traverse)(typeAst, (node, parentNode, property) => {
|
|
232
240
|
const {
|
|
233
241
|
type,
|
|
@@ -236,7 +244,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
236
244
|
if (!['JsdocTypeName', 'JsdocTypeAny'].includes(type)) {
|
|
237
245
|
return;
|
|
238
246
|
}
|
|
239
|
-
getInvalidTypes(type, value, tagName, property, node, parentNode, invalidTypes);
|
|
247
|
+
getInvalidTypes(type, value, tagName, nameInTag, idx, property, node, parentNode, invalidTypes);
|
|
240
248
|
});
|
|
241
249
|
if (invalidTypes.length) {
|
|
242
250
|
const fixedType = (0, _jsdoccomment.stringify)(typeAst);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkTypes.js","names":["strictNativeTypes","adjustNames","type","preferred","isGenericMatch","typeNodeName","node","parentNode","ret","meta","brackets","dot","dotBracketEnd","match","slice","length","bracketEnd","endsWith","value","replace","iterateJsdoc","jsdocNode","sourceCode","report","utils","settings","context","jsdocTagsWithPossibleType","filterTags","tag","tagMightHaveTypePosition","preferredTypes","preferredTypesOriginal","structuredTags","mode","injectObjectPreferredTypes","Object","noDefaults","unifyParentAndChildTypeChecks","exemptTagContexts","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","types","preferredSetting","replacement","message","reportSettings","entries","typs","Array","isArray","jsdocTag","typeAst","tryParse","parse","traverse","fixedType","stringify","fix","fixer","replaceText","getText","badType","preferredType","tagValue","name","JSON","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","items","oneOf"],"sources":["../../src/rules/checkTypes.js"],"sourcesContent":["import {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc from '../iterateJsdoc';\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 *\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/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n if (preferred === '[]') {\n parentNode.meta.brackets = 'square';\n parentNode.meta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/u);\n if (dotBracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentNode.meta.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n node.value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n node.value = typeNodeName;\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n sourceCode,\n report,\n utils,\n settings,\n context,\n}) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return utils.tagMightHaveTypePosition(tag.tag);\n });\n\n const {\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n mode,\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 const preferredTypes = {\n ...injectObjectPreferredTypes ? {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n } : {},\n ...preferredTypesOriginal,\n };\n\n const {\n noDefaults,\n unifyParentAndChildTypeChecks,\n exemptTagContexts = [],\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 *\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string} 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 = parentNode?.meta?.brackets;\n const dot = parentNode?.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 (!isGenericMatch && property) {\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 || 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 *\n * @param {string} typeNodeName\n * @param {string} preferred\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {string} 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 parentNode?.elements?.length && (\n parentNode?.left?.type === 'JsdocTypeName' &&\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 *\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} property\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {void}\n */\n const getInvalidTypes = (type, value, tagName, 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 (typeof preferredSetting === 'object') {\n preferred = preferredSetting?.replacement;\n invalidTypes.push([\n typeNodeName,\n preferred,\n preferredSetting?.message,\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 jsdocTag of jsdocTagsWithPossibleType) {\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 tagName = jsdocTag.tag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } = node;\n if (![\n 'JsdocTypeName', 'JsdocTypeAny',\n ].includes(type)) {\n return;\n }\n\n getInvalidTypes(type, value, tagName, property, node, parentNode, invalidTypes);\n });\n\n if (invalidTypes.length) {\n const fixedType = stringify(typeAst);\n\n /**\n * @param {any} fixer The ESLint fixer\n * @returns {string}\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 message,\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 message ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n message ? {\n tagName,\n tagValue,\n } : null,\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#eslint-plugin-jsdoc-rules-check-types',\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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"}
|
|
1
|
+
{"version":3,"file":"checkTypes.js","names":["strictNativeTypes","adjustNames","type","preferred","isGenericMatch","typeNodeName","node","parentNode","ret","meta","brackets","dot","dotBracketEnd","match","slice","length","bracketEnd","endsWith","value","replace","iterateJsdoc","jsdocNode","sourceCode","report","utils","settings","context","jsdocTagsWithPossibleType","filterTags","tag","tagMightHaveTypePosition","preferredTypes","preferredTypesOriginal","structuredTags","mode","injectObjectPreferredTypes","Object","noDefaults","unifyParentAndChildTypeChecks","exemptTagContexts","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","replacement","message","reportSettings","entries","typs","Array","isArray","jsdocTag","typeAst","tryParse","parse","traverse","fixedType","stringify","fix","fixer","replaceText","getText","badType","preferredType","tagValue","JSON","iterateAllJsdocs","docs","description","url","fixable","schema","additionalProperties","properties","items","oneOf"],"sources":["../../src/rules/checkTypes.js"],"sourcesContent":["import {\n parse,\n stringify,\n traverse,\n tryParse,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc from '../iterateJsdoc';\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 *\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/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @returns {void}\n */\nconst adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n if (preferred === '[]') {\n parentNode.meta.brackets = 'square';\n parentNode.meta.dot = false;\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/u);\n if (dotBracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = true;\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n ret = preferred.slice(0, -2);\n } else if (\n parentNode.meta.brackets === 'square' &&\n (typeNodeName === '[]' || typeNodeName === 'Array')\n ) {\n parentNode.meta.brackets = 'angle';\n parentNode.meta.dot = false;\n }\n }\n }\n } else if (type === 'JsdocTypeAny') {\n node.type = 'JsdocTypeName';\n }\n\n node.value = ret.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n node.value = typeNodeName;\n }\n};\n\nexport default iterateJsdoc(({\n jsdocNode,\n sourceCode,\n report,\n utils,\n settings,\n context,\n}) => {\n const jsdocTagsWithPossibleType = utils.filterTags((tag) => {\n return utils.tagMightHaveTypePosition(tag.tag);\n });\n\n const {\n preferredTypes: preferredTypesOriginal,\n structuredTags,\n mode,\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 const preferredTypes = {\n ...injectObjectPreferredTypes ? {\n Object: 'object',\n 'object.<>': 'Object<>',\n 'Object.<>': 'Object<>',\n 'object<>': 'Object<>',\n } : {},\n ...preferredTypesOriginal,\n };\n\n const {\n noDefaults,\n unifyParentAndChildTypeChecks,\n exemptTagContexts = [],\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 *\n * @param {string} _type Not currently in use\n * @param {string} typeNodeName\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string} 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 = parentNode?.meta?.brackets;\n const dot = parentNode?.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 (!isGenericMatch && property) {\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 || 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 *\n * @param {string} typeNodeName\n * @param {string} preferred\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} invalidTypes\n * @returns {string} 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 parentNode?.elements?.length && (\n parentNode?.left?.type === 'JsdocTypeName' &&\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 *\n * @param {string} type\n * @param {string} value\n * @param {string} tagName\n * @param {string} nameInTag\n * @param {number} idx\n * @param {string} property\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} node\n * @param {import('jsdoc-type-pratt-parser/dist/src/index.d.ts').NonTerminalResult} parentNode\n * @param {string[]} 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 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 tag: tagName,\n name: nameInTag,\n } = jsdocTag;\n\n traverse(typeAst, (node, parentNode, property) => {\n const {\n type,\n value,\n } = node;\n if (![\n 'JsdocTypeName', 'JsdocTypeAny',\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 * @param {any} fixer The ESLint fixer\n * @returns {string}\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 message,\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 message ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: ${JSON.stringify(preferredType)}.` : ''),\n preferredType ? fix : null,\n jsdocTag,\n message ? {\n tagName,\n tagValue,\n } : null,\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#eslint-plugin-jsdoc-rules-check-types',\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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"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"url": "http://gajus.com"
|
|
6
6
|
},
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@es-joy/jsdoccomment": "~0.
|
|
8
|
+
"@es-joy/jsdoccomment": "~0.35.0",
|
|
9
9
|
"comment-parser": "1.3.1",
|
|
10
10
|
"debug": "^4.3.4",
|
|
11
11
|
"escape-string-regexp": "^4.0.0",
|
|
@@ -117,5 +117,5 @@
|
|
|
117
117
|
"test-cov": "cross-env TIMING=1 nyc --reporter text npm run test-no-cov",
|
|
118
118
|
"test-index": "npm run test-no-cov -- test/rules/index.js"
|
|
119
119
|
},
|
|
120
|
-
"version": "39.
|
|
120
|
+
"version": "39.6.1"
|
|
121
121
|
}
|