eslint-plugin-jsdoc 57.2.0 → 57.2.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.
@@ -6,17 +6,15 @@ var _promises = require("node:fs/promises");
6
6
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
7
7
  let str = 'export interface Rules {\n';
8
8
  for (const [ruleName, rule] of Object.entries(_index.default.rules)) {
9
- if (rule.meta?.schema?.[0]) {
10
- str += ` /** ${rule.meta.docs.description} */\n`;
11
- str += ` "jsdoc/${ruleName}": `;
12
- const ts = await (0, _jsonSchemaToTypescript.compile)({
13
- items: rule.meta.schema,
14
- type: 'array'
15
- }, 'Test', {
16
- bannerComment: ''
17
- });
18
- str += ts.replace(/^export type Test = ?/v, '').replace(/^export interface Test /v, '').replaceAll('\n', '\n ').trimEnd().replace(/;$/v, '') + ';\n\n';
19
- }
9
+ str += ` /** ${rule.meta.docs.description} */\n`;
10
+ str += ` "jsdoc/${ruleName}": `;
11
+ const ts = await (0, _jsonSchemaToTypescript.compile)({
12
+ items: rule.meta.schema ?? [],
13
+ type: 'array'
14
+ }, 'Test', {
15
+ bannerComment: ''
16
+ });
17
+ str += ts.replace(/^export type Test = ?/v, '').replace(/^export interface Test /v, '').replaceAll('\n', '\n ').trimEnd().replace(/;$/v, '') + ';\n\n';
20
18
  }
21
19
  str = str.replace(/\n$/v, '') + '}\n';
22
20
  await (0, _promises.writeFile)(__dirname + '/../rules.d.ts', str);
@@ -1 +1 @@
1
- {"version":3,"file":"generateRuleTypes.cjs","names":["_index","_interopRequireDefault","require","_jsonSchemaToTypescript","_promises","e","__esModule","default","str","ruleName","rule","Object","entries","index","rules","meta","schema","docs","description","ts","compile","items","type","bannerComment","replace","replaceAll","trimEnd","writeFile","__dirname","console","log"],"sources":["../src/bin/generateRuleTypes.js"],"sourcesContent":["import index from '../index.js';\nimport {\n compile,\n} from 'json-schema-to-typescript';\nimport {\n writeFile,\n} from 'node:fs/promises';\n\nlet str = 'export interface Rules {\\n';\n\nfor (const [\n ruleName,\n rule,\n] of Object.entries(index.rules)) {\n if (rule.meta?.schema?.[0]) {\n str += ` /** ${rule.meta.docs.description} */\\n`;\n str += ` \"jsdoc/${ruleName}\": `;\n const ts = await compile({\n items: rule.meta.schema,\n type: 'array',\n }, 'Test', {\n bannerComment: '',\n });\n\n str += ts\n .replace(/^export type Test = ?/v, '')\n .replace(/^export interface Test /v, '')\n .replaceAll('\\n', '\\n ').trimEnd().replace(/;$/v, '') +\n ';\\n\\n';\n }\n}\n\nstr = str.replace(/\\n$/v, '') + '}\\n';\n\nawait writeFile(import.meta.dirname + '/../rules.d.ts', str);\n\n// eslint-disable-next-line no-console -- Todo\nconsole.log('str', str);\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AAGA,IAAAE,SAAA,GAAAF,OAAA;AAE0B,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1B,IAAIG,GAAG,GAAG,4BAA4B;AAEtC,KAAK,MAAM,CACTC,QAAQ,EACRC,IAAI,CACL,IAAIC,MAAM,CAACC,OAAO,CAACC,cAAK,CAACC,KAAK,CAAC,EAAE;EAChC,IAAIJ,IAAI,CAACK,IAAI,EAAEC,MAAM,GAAG,CAAC,CAAC,EAAE;IAC1BR,GAAG,IAAI,SAASE,IAAI,CAACK,IAAI,CAACE,IAAI,CAACC,WAAW,OAAO;IACjDV,GAAG,IAAI,YAAYC,QAAQ,KAAK;IAChC,MAAMU,EAAE,GAAG,MAAM,IAAAC,+BAAO,EAAC;MACvBC,KAAK,EAAEX,IAAI,CAACK,IAAI,CAACC,MAAM;MACvBM,IAAI,EAAE;IACR,CAAC,EAAE,MAAM,EAAE;MACTC,aAAa,EAAE;IACjB,CAAC,CAAC;IAEFf,GAAG,IAAIW,EAAE,CACNK,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CACrCA,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CACvCC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAACC,OAAO,CAAC,CAAC,CAACF,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GACpD,OAAO;EACb;AACF;AAEAhB,GAAG,GAAGA,GAAG,CAACgB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,KAAK;AAErC,MAAM,IAAAG,mBAAS,EAACC,SAAA,GAAsB,gBAAgB,EAAEpB,GAAG,CAAC;;AAE5D;AACAqB,OAAO,CAACC,GAAG,CAAC,KAAK,EAAEtB,GAAG,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"generateRuleTypes.cjs","names":["_index","_interopRequireDefault","require","_jsonSchemaToTypescript","_promises","e","__esModule","default","str","ruleName","rule","Object","entries","index","rules","meta","docs","description","ts","compile","items","schema","type","bannerComment","replace","replaceAll","trimEnd","writeFile","__dirname","console","log"],"sources":["../src/bin/generateRuleTypes.js"],"sourcesContent":["import index from '../index.js';\nimport {\n compile,\n} from 'json-schema-to-typescript';\nimport {\n writeFile,\n} from 'node:fs/promises';\n\nlet str = 'export interface Rules {\\n';\n\nfor (const [\n ruleName,\n rule,\n] of Object.entries(index.rules)) {\n str += ` /** ${rule.meta.docs.description} */\\n`;\n str += ` \"jsdoc/${ruleName}\": `;\n const ts = await compile({\n items: rule.meta.schema ?? [],\n type: 'array',\n }, 'Test', {\n bannerComment: '',\n });\n\n str += ts\n .replace(/^export type Test = ?/v, '')\n .replace(/^export interface Test /v, '')\n .replaceAll('\\n', '\\n ').trimEnd().replace(/;$/v, '') +\n ';\\n\\n';\n}\n\nstr = str.replace(/\\n$/v, '') + '}\\n';\n\nawait writeFile(import.meta.dirname + '/../rules.d.ts', str);\n\n// eslint-disable-next-line no-console -- Todo\nconsole.log('str', str);\n"],"mappings":";;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AAGA,IAAAE,SAAA,GAAAF,OAAA;AAE0B,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAE1B,IAAIG,GAAG,GAAG,4BAA4B;AAEtC,KAAK,MAAM,CACTC,QAAQ,EACRC,IAAI,CACL,IAAIC,MAAM,CAACC,OAAO,CAACC,cAAK,CAACC,KAAK,CAAC,EAAE;EAChCN,GAAG,IAAI,SAASE,IAAI,CAACK,IAAI,CAACC,IAAI,CAACC,WAAW,OAAO;EACjDT,GAAG,IAAI,YAAYC,QAAQ,KAAK;EAChC,MAAMS,EAAE,GAAG,MAAM,IAAAC,+BAAO,EAAC;IACvBC,KAAK,EAAEV,IAAI,CAACK,IAAI,CAACM,MAAM,IAAI,EAAE;IAC7BC,IAAI,EAAE;EACR,CAAC,EAAE,MAAM,EAAE;IACTC,aAAa,EAAE;EACjB,CAAC,CAAC;EAEFf,GAAG,IAAIU,EAAE,CACNM,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CACrCA,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CACvCC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAACC,OAAO,CAAC,CAAC,CAACF,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GACpD,OAAO;AACb;AAEAhB,GAAG,GAAGA,GAAG,CAACgB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,KAAK;AAErC,MAAM,IAAAG,mBAAS,EAACC,SAAA,GAAsB,gBAAgB,EAAEpB,GAAG,CAAC;;AAE5D;AACAqB,OAAO,CAACC,GAAG,CAAC,KAAK,EAAEtB,GAAG,CAAC","ignoreList":[]}
@@ -66,6 +66,28 @@ const adjustNames = (type, preferred, isGenericMatch, typeNodeName, node, parent
66
66
  const getMessage = upperCase => {
67
67
  return 'Use object shorthand or index signatures instead of ' + '`' + (upperCase ? 'O' : 'o') + 'bject`, e.g., `{[key: string]: string}`';
68
68
  };
69
+
70
+ /**
71
+ * @type {{
72
+ * message: string,
73
+ * replacement: false
74
+ * }}
75
+ */
76
+ const info = {
77
+ message: getMessage(),
78
+ replacement: false
79
+ };
80
+
81
+ /**
82
+ * @type {{
83
+ * message: string,
84
+ * replacement: false
85
+ * }}
86
+ */
87
+ const infoUC = {
88
+ message: getMessage(true),
89
+ replacement: false
90
+ };
69
91
  var _default = exports.default = (0, _iterateJsdoc.default)(({
70
92
  context,
71
93
  jsdocNode,
@@ -92,28 +114,6 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
92
114
  } = settings;
93
115
  const injectObjectPreferredTypes = !('Object' in preferredTypesOriginal || 'object' in preferredTypesOriginal || 'object.<>' in preferredTypesOriginal || 'Object.<>' in preferredTypesOriginal || 'object<>' in preferredTypesOriginal);
94
116
 
95
- /**
96
- * @type {{
97
- * message: string,
98
- * replacement: false
99
- * }}
100
- */
101
- const info = {
102
- message: getMessage(),
103
- replacement: false
104
- };
105
-
106
- /**
107
- * @type {{
108
- * message: string,
109
- * replacement: false
110
- * }}
111
- */
112
- const infoUC = {
113
- message: getMessage(true),
114
- replacement: false
115
- };
116
-
117
117
  /** @type {import('../iterateJsdoc.js').PreferredTypes} */
118
118
  const typeToInject = mode === 'typescript' ? {
119
119
  Object: 'object',
@@ -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","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":"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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","info","message","replacement","infoUC","_default","exports","iterateJsdoc","context","jsdocNode","report","settings","sourceCode","utils","jsdocTagsWithPossibleType","filterTags","tag","Boolean","tagMightHaveTypePosition","mode","preferredTypes","preferredTypesOriginal","structuredTags","injectObjectPreferredTypes","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\n/**\n * @type {{\n * message: string,\n * replacement: false\n * }}\n */\nconst info = {\n message: getMessage(),\n replacement: false,\n};\n\n/**\n * @type {{\n * message: string,\n * replacement: false\n * }}\n */\nconst infoUC = {\n message: getMessage(true),\n replacement: false,\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 /** @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":"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","ignoreList":[]}
package/dist/rules.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  export interface Rules {
2
+ /** Checks that `@access` tags have a valid value. */
3
+ "jsdoc/check-access": [];
4
+
2
5
  /** Reports invalid alignment of JSDoc block asterisks. */
3
6
  "jsdoc/check-alignment":
4
7
  | []
@@ -90,6 +93,9 @@ export interface Rules {
90
93
  }
91
94
  ];
92
95
 
96
+ /** Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode). */
97
+ "jsdoc/check-syntax": [];
98
+
93
99
  /** Reports invalid block tag names. */
94
100
  "jsdoc/check-tag-names":
95
101
  | []
@@ -102,6 +108,9 @@ export interface Rules {
102
108
  }
103
109
  ];
104
110
 
111
+ /** Checks that any `@template` names are actually used in the connected `@typedef` or type alias. */
112
+ "jsdoc/check-template-names": [];
113
+
105
114
  /** Reports invalid types. */
106
115
  "jsdoc/check-types":
107
116
  | []
@@ -188,6 +197,9 @@ export interface Rules {
188
197
  }
189
198
  ];
190
199
 
200
+ /** Reports if JSDoc `import()` statements point to a package which is not listed in `dependencies` or `devDependencies` */
201
+ "jsdoc/imports-as-dependencies": [];
202
+
191
203
  /** This rule reports doc comments that only restate their attached name. */
192
204
  "jsdoc/informative-docs":
193
205
  | []
@@ -300,6 +312,9 @@ export interface Rules {
300
312
  }
301
313
  ];
302
314
 
315
+ /** Detects and removes extra lines of a blank block description */
316
+ "jsdoc/no-blank-block-descriptions": [];
317
+
303
318
  /** Removes empty blocks with nothing but possibly line breaks */
304
319
  "jsdoc/no-blank-blocks":
305
320
  | []
@@ -542,6 +557,9 @@ export interface Rules {
542
557
  }
543
558
  ];
544
559
 
560
+ /** Requires a type for @next tags */
561
+ "jsdoc/require-next-type": [];
562
+
545
563
  /** Requires that all function parameters are documented. */
546
564
  "jsdoc/require-param":
547
565
  | []
@@ -621,6 +639,18 @@ export interface Rules {
621
639
  }
622
640
  ];
623
641
 
642
+ /** Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`. */
643
+ "jsdoc/require-property": [];
644
+
645
+ /** Requires that each `@property` tag has a `description` value. */
646
+ "jsdoc/require-property-description": [];
647
+
648
+ /** Requires that all function `@property` tags have names. */
649
+ "jsdoc/require-property-name": [];
650
+
651
+ /** Requires that each `@property` tag has a `type` value. */
652
+ "jsdoc/require-property-type": [];
653
+
624
654
  /** Requires that returns are documented. */
625
655
  "jsdoc/require-returns":
626
656
  | []
@@ -718,6 +748,9 @@ export interface Rules {
718
748
  }
719
749
  ];
720
750
 
751
+ /** Requires a type for @throws tags */
752
+ "jsdoc/require-throws-type": [];
753
+
721
754
  /** Requires yields are documented. */
722
755
  "jsdoc/require-yields":
723
756
  | []
@@ -757,6 +790,9 @@ export interface Rules {
757
790
  }
758
791
  ];
759
792
 
793
+ /** Requires a type for @yields tags */
794
+ "jsdoc/require-yields-type": [];
795
+
760
796
  /** Sorts tags by a specified sequence according to tag name. */
761
797
  "jsdoc/sort-tags":
762
798
  | []
package/package.json CHANGED
@@ -172,5 +172,5 @@
172
172
  "test-cov": "TIMING=1 c8 --reporter text pnpm run test-no-cov",
173
173
  "test-index": "pnpm run test-no-cov test/rules/index.js"
174
174
  },
175
- "version": "57.2.0"
175
+ "version": "57.2.1"
176
176
  }
@@ -88,6 +88,28 @@ const getMessage = (upperCase) => {
88
88
  '`' + (upperCase ? 'O' : 'o') + 'bject`, e.g., `{[key: string]: string}`';
89
89
  };
90
90
 
91
+ /**
92
+ * @type {{
93
+ * message: string,
94
+ * replacement: false
95
+ * }}
96
+ */
97
+ const info = {
98
+ message: getMessage(),
99
+ replacement: false,
100
+ };
101
+
102
+ /**
103
+ * @type {{
104
+ * message: string,
105
+ * replacement: false
106
+ * }}
107
+ */
108
+ const infoUC = {
109
+ message: getMessage(true),
110
+ replacement: false,
111
+ };
112
+
91
113
  export default iterateJsdoc(({
92
114
  context,
93
115
  jsdocNode,
@@ -120,28 +142,6 @@ export default iterateJsdoc(({
120
142
  'Object.<>' in preferredTypesOriginal ||
121
143
  'object<>' in preferredTypesOriginal);
122
144
 
123
- /**
124
- * @type {{
125
- * message: string,
126
- * replacement: false
127
- * }}
128
- */
129
- const info = {
130
- message: getMessage(),
131
- replacement: false,
132
- };
133
-
134
- /**
135
- * @type {{
136
- * message: string,
137
- * replacement: false
138
- * }}
139
- */
140
- const infoUC = {
141
- message: getMessage(true),
142
- replacement: false,
143
- };
144
-
145
145
  /** @type {import('../iterateJsdoc.js').PreferredTypes} */
146
146
  const typeToInject = mode === 'typescript' ?
147
147
  {
package/src/rules.d.ts CHANGED
@@ -1,4 +1,7 @@
1
1
  export interface Rules {
2
+ /** Checks that `@access` tags have a valid value. */
3
+ "jsdoc/check-access": [];
4
+
2
5
  /** Reports invalid alignment of JSDoc block asterisks. */
3
6
  "jsdoc/check-alignment":
4
7
  | []
@@ -90,6 +93,9 @@ export interface Rules {
90
93
  }
91
94
  ];
92
95
 
96
+ /** Reports against syntax not valid for the mode (e.g., Google Closure Compiler in non-Closure mode). */
97
+ "jsdoc/check-syntax": [];
98
+
93
99
  /** Reports invalid block tag names. */
94
100
  "jsdoc/check-tag-names":
95
101
  | []
@@ -102,6 +108,9 @@ export interface Rules {
102
108
  }
103
109
  ];
104
110
 
111
+ /** Checks that any `@template` names are actually used in the connected `@typedef` or type alias. */
112
+ "jsdoc/check-template-names": [];
113
+
105
114
  /** Reports invalid types. */
106
115
  "jsdoc/check-types":
107
116
  | []
@@ -188,6 +197,9 @@ export interface Rules {
188
197
  }
189
198
  ];
190
199
 
200
+ /** Reports if JSDoc `import()` statements point to a package which is not listed in `dependencies` or `devDependencies` */
201
+ "jsdoc/imports-as-dependencies": [];
202
+
191
203
  /** This rule reports doc comments that only restate their attached name. */
192
204
  "jsdoc/informative-docs":
193
205
  | []
@@ -300,6 +312,9 @@ export interface Rules {
300
312
  }
301
313
  ];
302
314
 
315
+ /** Detects and removes extra lines of a blank block description */
316
+ "jsdoc/no-blank-block-descriptions": [];
317
+
303
318
  /** Removes empty blocks with nothing but possibly line breaks */
304
319
  "jsdoc/no-blank-blocks":
305
320
  | []
@@ -542,6 +557,9 @@ export interface Rules {
542
557
  }
543
558
  ];
544
559
 
560
+ /** Requires a type for @next tags */
561
+ "jsdoc/require-next-type": [];
562
+
545
563
  /** Requires that all function parameters are documented. */
546
564
  "jsdoc/require-param":
547
565
  | []
@@ -621,6 +639,18 @@ export interface Rules {
621
639
  }
622
640
  ];
623
641
 
642
+ /** Requires that all `@typedef` and `@namespace` tags have `@property` when their type is a plain `object`, `Object`, or `PlainObject`. */
643
+ "jsdoc/require-property": [];
644
+
645
+ /** Requires that each `@property` tag has a `description` value. */
646
+ "jsdoc/require-property-description": [];
647
+
648
+ /** Requires that all function `@property` tags have names. */
649
+ "jsdoc/require-property-name": [];
650
+
651
+ /** Requires that each `@property` tag has a `type` value. */
652
+ "jsdoc/require-property-type": [];
653
+
624
654
  /** Requires that returns are documented. */
625
655
  "jsdoc/require-returns":
626
656
  | []
@@ -718,6 +748,9 @@ export interface Rules {
718
748
  }
719
749
  ];
720
750
 
751
+ /** Requires a type for @throws tags */
752
+ "jsdoc/require-throws-type": [];
753
+
721
754
  /** Requires yields are documented. */
722
755
  "jsdoc/require-yields":
723
756
  | []
@@ -757,6 +790,9 @@ export interface Rules {
757
790
  }
758
791
  ];
759
792
 
793
+ /** Requires a type for @yields tags */
794
+ "jsdoc/require-yields-type": [];
795
+
760
796
  /** Sorts tags by a specified sequence according to tag name. */
761
797
  "jsdoc/sort-tags":
762
798
  | []