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 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
 
@@ -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
- preferred = preferredSetting === null || preferredSetting === void 0 ? void 0 : preferredSetting.replacement;
201
- invalidTypes.push([typeNodeName, preferred, preferredSetting === null || preferredSetting === void 0 ? void 0 : preferredSetting.message]);
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 tagName = jsdocTag.tag;
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.33.4",
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.5.1"
120
+ "version": "39.6.1"
121
121
  }