eslint-plugin-jsdoc 51.0.5 → 51.0.7
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.
|
@@ -4,13 +4,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _iterateJsdoc =
|
|
7
|
+
var _iterateJsdoc = _interopRequireWildcard(require("../iterateJsdoc.cjs"));
|
|
8
|
+
var _jsdocUtils = require("../jsdocUtils.cjs");
|
|
8
9
|
var _jsdoccomment = require("@es-joy/jsdoccomment");
|
|
9
|
-
function
|
|
10
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
11
|
var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
12
|
+
jsdoc,
|
|
11
13
|
node,
|
|
12
14
|
report,
|
|
13
15
|
settings,
|
|
16
|
+
sourceCode,
|
|
14
17
|
utils
|
|
15
18
|
}) => {
|
|
16
19
|
const {
|
|
@@ -38,18 +41,18 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
38
41
|
}
|
|
39
42
|
});
|
|
40
43
|
};
|
|
41
|
-
const checkParamsAndReturnsTags = () => {
|
|
44
|
+
const checkParamsAndReturnsTags = (jsdc = jsdoc) => {
|
|
42
45
|
const paramName = /** @type {string} */utils.getPreferredTagName({
|
|
43
46
|
tagName: 'param'
|
|
44
47
|
});
|
|
45
|
-
const paramTags =
|
|
48
|
+
const paramTags = (0, _jsdocUtils.getTags)(jsdc, paramName);
|
|
46
49
|
for (const paramTag of paramTags) {
|
|
47
50
|
checkForUsedTypes(paramTag.type);
|
|
48
51
|
}
|
|
49
52
|
const returnsName = /** @type {string} */utils.getPreferredTagName({
|
|
50
53
|
tagName: 'returns'
|
|
51
54
|
});
|
|
52
|
-
const returnsTags =
|
|
55
|
+
const returnsTags = (0, _jsdocUtils.getTags)(jsdc, returnsName);
|
|
53
56
|
for (const returnsTag of returnsTags) {
|
|
54
57
|
checkForUsedTypes(returnsTag.type);
|
|
55
58
|
}
|
|
@@ -91,6 +94,24 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
91
94
|
}
|
|
92
95
|
if (checkParamsAndReturns) {
|
|
93
96
|
checkParamsAndReturnsTags();
|
|
97
|
+
} else if (aliasDeclaration.type === 'ClassDeclaration') {
|
|
98
|
+
/* c8 ignore next -- TS */
|
|
99
|
+
for (const nde of aliasDeclaration?.body?.body ?? []) {
|
|
100
|
+
// @ts-expect-error Should be ok
|
|
101
|
+
const commentNode = (0, _jsdoccomment.getJSDocComment)(sourceCode, nde, settings);
|
|
102
|
+
if (!commentNode) {
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const innerJsdoc = (0, _iterateJsdoc.parseComment)(commentNode, '');
|
|
106
|
+
checkParamsAndReturnsTags(innerJsdoc);
|
|
107
|
+
const typeName = /** @type {string} */utils.getPreferredTagName({
|
|
108
|
+
tagName: 'type'
|
|
109
|
+
});
|
|
110
|
+
const typeTags = (0, _jsdocUtils.getTags)(innerJsdoc, typeName);
|
|
111
|
+
for (const typeTag of typeTags) {
|
|
112
|
+
checkForUsedTypes(typeTag.type);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
94
115
|
}
|
|
95
116
|
checkTemplateTags();
|
|
96
117
|
};
|
|
@@ -145,17 +166,7 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
145
166
|
for (const propertyTag of propertyTags) {
|
|
146
167
|
checkForUsedTypes(propertyTag.type);
|
|
147
168
|
}
|
|
148
|
-
|
|
149
|
-
const {
|
|
150
|
-
name
|
|
151
|
-
} = tag;
|
|
152
|
-
const names = name.split(/,\s*/u);
|
|
153
|
-
for (const nme of names) {
|
|
154
|
-
if (!usedNames.has(nme)) {
|
|
155
|
-
report(`@template ${nme} not in use`, null, tag);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
169
|
+
checkTemplateTags();
|
|
159
170
|
}, {
|
|
160
171
|
iterateAllJsdocs: true,
|
|
161
172
|
meta: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkTemplateNames.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","_jsdoccomment","e","__esModule","default","_default","exports","iterateJsdoc","node","report","settings","utils","mode","templateTags","getTags","usedNames","Set","checkForUsedTypes","potentialType","parsedType","tryParseType","parseType","traverse","nde","type","value","add","checkParamsAndReturnsTags","paramName","getPreferredTagName","tagName","paramTags","paramTag","returnsName","returnsTags","returnsTag","checkTemplateTags","tag","name","names","split","nme","has","checkParameters","aliasDeclaration","checkParamsAndReturns","params","typeParameters","handleTypeAliases","declaration","callbackTags","functionTags","length","typedefTags","potentialTypedefType","propertyName","propertyTags","propertyTag","iterateAllJsdocs","meta","docs","description","url","schema","module"],"sources":["../../src/rules/checkTemplateNames.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\nimport {\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\n\nexport default iterateJsdoc(({\n node,\n report,\n settings,\n utils,\n}) => {\n const {\n mode,\n } = settings;\n\n const templateTags = utils.getTags('template');\n\n const usedNames = new Set();\n /**\n * @param {string} potentialType\n */\n const checkForUsedTypes = (potentialType) => {\n let parsedType;\n try {\n parsedType = mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode);\n } catch {\n return;\n }\n\n traverse(parsedType, (nde) => {\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n if (type === 'JsdocTypeName') {\n usedNames.add(value);\n }\n });\n };\n\n const checkParamsAndReturnsTags = () => {\n const paramName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'param',\n }));\n const paramTags = utils.getTags(paramName);\n for (const paramTag of paramTags) {\n checkForUsedTypes(paramTag.type);\n }\n\n const returnsName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'returns',\n }));\n const returnsTags = utils.getTags(returnsName);\n for (const returnsTag of returnsTags) {\n checkForUsedTypes(returnsTag.type);\n }\n };\n\n const checkTemplateTags = () => {\n for (const tag of templateTags) {\n const {\n name,\n } = tag;\n const names = name.split(/,\\s*/u);\n for (const nme of names) {\n if (!usedNames.has(nme)) {\n report(`@template ${nme} not in use`, null, tag);\n }\n }\n }\n };\n\n /**\n * @param {import('@typescript-eslint/types').TSESTree.FunctionDeclaration|\n * import('@typescript-eslint/types').TSESTree.ClassDeclaration|\n * import('@typescript-eslint/types').TSESTree.TSInterfaceDeclaration|\n * import('@typescript-eslint/types').TSESTree.TSTypeAliasDeclaration} aliasDeclaration\n * @param {boolean} [checkParamsAndReturns]\n */\n const checkParameters = (aliasDeclaration, checkParamsAndReturns) => {\n /* c8 ignore next -- Guard */\n const {\n params,\n } = aliasDeclaration.typeParameters ?? {\n params: [],\n };\n for (const {\n name: {\n name,\n },\n } of params) {\n usedNames.add(name);\n }\n\n if (checkParamsAndReturns) {\n checkParamsAndReturnsTags();\n }\n\n checkTemplateTags();\n };\n\n const handleTypeAliases = () => {\n const nde = /** @type {import('@typescript-eslint/types').TSESTree.Node} */ (\n node\n );\n if (!nde) {\n return;\n }\n\n switch (nde.type) {\n case 'ClassDeclaration':\n case 'TSInterfaceDeclaration':\n case 'TSTypeAliasDeclaration':\n checkParameters(nde);\n break;\n case 'ExportDefaultDeclaration':\n case 'ExportNamedDeclaration':\n switch (nde.declaration?.type) {\n case 'ClassDeclaration':\n case 'TSInterfaceDeclaration':\n case 'TSTypeAliasDeclaration':\n checkParameters(nde.declaration);\n break;\n case 'FunctionDeclaration':\n checkParameters(nde.declaration, true);\n break;\n }\n\n break;\n case 'FunctionDeclaration':\n checkParameters(nde, true);\n break;\n }\n };\n\n const callbackTags = utils.getTags('callback');\n const functionTags = utils.getTags('function');\n if (callbackTags.length || functionTags.length) {\n checkParamsAndReturnsTags();\n checkTemplateTags();\n return;\n }\n\n const typedefTags = utils.getTags('typedef');\n if (!typedefTags.length || typedefTags.length >= 2) {\n handleTypeAliases();\n return;\n }\n\n const potentialTypedefType = typedefTags[0].type;\n checkForUsedTypes(potentialTypedefType);\n\n const propertyName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'property',\n }));\n const propertyTags = utils.getTags(propertyName);\n for (const propertyTag of propertyTags) {\n checkForUsedTypes(propertyTag.type);\n }\n\n for (const tag of templateTags) {\n const {\n name,\n } = tag;\n const names = name.split(/,\\s*/u);\n for (const nme of names) {\n if (!usedNames.has(nme)) {\n report(`@template ${nme} not in use`, null, tag);\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that any `@template` names are actually used in the connected `@typedef` or type alias.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-template-names.md#repos-sticky-header',\n },\n schema: [],\n type: 'suggestion',\n },\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"checkTemplateNames.cjs","names":["_iterateJsdoc","_interopRequireWildcard","require","_jsdocUtils","_jsdoccomment","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_default","exports","iterateJsdoc","jsdoc","node","report","settings","sourceCode","utils","mode","templateTags","getTags","usedNames","Set","checkForUsedTypes","potentialType","parsedType","tryParseType","parseType","traverse","nde","type","value","add","checkParamsAndReturnsTags","jsdc","paramName","getPreferredTagName","tagName","paramTags","paramTag","returnsName","returnsTags","returnsTag","checkTemplateTags","tag","name","names","split","nme","checkParameters","aliasDeclaration","checkParamsAndReturns","params","typeParameters","body","commentNode","getJSDocComment","innerJsdoc","parseComment","typeName","typeTags","typeTag","handleTypeAliases","declaration","callbackTags","functionTags","length","typedefTags","potentialTypedefType","propertyName","propertyTags","propertyTag","iterateAllJsdocs","meta","docs","description","url","schema","module"],"sources":["../../src/rules/checkTemplateNames.js"],"sourcesContent":["import iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc.js';\nimport {\n getTags,\n} from '../jsdocUtils.js';\nimport {\n getJSDocComment,\n parse as parseType,\n traverse,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\n\nexport default iterateJsdoc(({\n jsdoc,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n mode,\n } = settings;\n\n const templateTags = utils.getTags('template');\n\n const usedNames = new Set();\n /**\n * @param {string} potentialType\n */\n const checkForUsedTypes = (potentialType) => {\n let parsedType;\n try {\n parsedType = mode === 'permissive' ?\n tryParseType(/** @type {string} */ (potentialType)) :\n parseType(/** @type {string} */ (potentialType), mode);\n } catch {\n return;\n }\n\n traverse(parsedType, (nde) => {\n const {\n type,\n value,\n } = /** @type {import('jsdoc-type-pratt-parser').NameResult} */ (nde);\n if (type === 'JsdocTypeName') {\n usedNames.add(value);\n }\n });\n };\n\n const checkParamsAndReturnsTags = (jsdc = jsdoc) => {\n const paramName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'param',\n }));\n const paramTags = getTags(jsdc, paramName);\n for (const paramTag of paramTags) {\n checkForUsedTypes(paramTag.type);\n }\n\n const returnsName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'returns',\n }));\n const returnsTags = getTags(jsdc, returnsName);\n for (const returnsTag of returnsTags) {\n checkForUsedTypes(returnsTag.type);\n }\n };\n\n const checkTemplateTags = () => {\n for (const tag of templateTags) {\n const {\n name,\n } = tag;\n const names = name.split(/,\\s*/u);\n for (const nme of names) {\n if (!usedNames.has(nme)) {\n report(`@template ${nme} not in use`, null, tag);\n }\n }\n }\n };\n\n /**\n * @param {import('@typescript-eslint/types').TSESTree.FunctionDeclaration|\n * import('@typescript-eslint/types').TSESTree.ClassDeclaration|\n * import('@typescript-eslint/types').TSESTree.TSInterfaceDeclaration|\n * import('@typescript-eslint/types').TSESTree.TSTypeAliasDeclaration} aliasDeclaration\n * @param {boolean} [checkParamsAndReturns]\n */\n const checkParameters = (aliasDeclaration, checkParamsAndReturns) => {\n /* c8 ignore next -- Guard */\n const {\n params,\n } = aliasDeclaration.typeParameters ?? {\n params: [],\n };\n for (const {\n name: {\n name,\n },\n } of params) {\n usedNames.add(name);\n }\n\n if (checkParamsAndReturns) {\n checkParamsAndReturnsTags();\n } else if (aliasDeclaration.type === 'ClassDeclaration') {\n /* c8 ignore next -- TS */\n for (const nde of aliasDeclaration?.body?.body ?? []) {\n // @ts-expect-error Should be ok\n const commentNode = getJSDocComment(sourceCode, nde, settings);\n if (!commentNode) {\n continue;\n }\n\n const innerJsdoc = parseComment(commentNode, '');\n checkParamsAndReturnsTags(innerJsdoc);\n\n const typeName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'type',\n }));\n const typeTags = getTags(innerJsdoc, typeName);\n for (const typeTag of typeTags) {\n checkForUsedTypes(typeTag.type);\n }\n }\n }\n\n checkTemplateTags();\n };\n\n const handleTypeAliases = () => {\n const nde = /** @type {import('@typescript-eslint/types').TSESTree.Node} */ (\n node\n );\n if (!nde) {\n return;\n }\n\n switch (nde.type) {\n case 'ClassDeclaration':\n case 'TSInterfaceDeclaration':\n case 'TSTypeAliasDeclaration':\n checkParameters(nde);\n break;\n case 'ExportDefaultDeclaration':\n case 'ExportNamedDeclaration':\n switch (nde.declaration?.type) {\n case 'ClassDeclaration':\n case 'TSInterfaceDeclaration':\n case 'TSTypeAliasDeclaration':\n checkParameters(nde.declaration);\n break;\n case 'FunctionDeclaration':\n checkParameters(nde.declaration, true);\n break;\n }\n\n break;\n case 'FunctionDeclaration':\n checkParameters(nde, true);\n break;\n }\n };\n\n const callbackTags = utils.getTags('callback');\n const functionTags = utils.getTags('function');\n if (callbackTags.length || functionTags.length) {\n checkParamsAndReturnsTags();\n checkTemplateTags();\n return;\n }\n\n const typedefTags = utils.getTags('typedef');\n if (!typedefTags.length || typedefTags.length >= 2) {\n handleTypeAliases();\n return;\n }\n\n const potentialTypedefType = typedefTags[0].type;\n checkForUsedTypes(potentialTypedefType);\n\n const propertyName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'property',\n }));\n const propertyTags = utils.getTags(propertyName);\n for (const propertyTag of propertyTags) {\n checkForUsedTypes(propertyTag.type);\n }\n\n checkTemplateTags();\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that any `@template` names are actually used in the connected `@typedef` or type alias.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/check-template-names.md#repos-sticky-header',\n },\n schema: [],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,uBAAA,CAAAC,OAAA;AAGA,IAAAC,WAAA,GAAAD,OAAA;AAGA,IAAAE,aAAA,GAAAF,OAAA;AAK8B,SAAAD,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,IAAAkB,QAAA,GAAAC,OAAA,CAAAV,OAAA,GAEf,IAAAW,qBAAY,EAAC,CAAC;EAC3BC,KAAK;EACLC,IAAI;EACJC,MAAM;EACNC,QAAQ;EACRC,UAAU;EACVC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC;EACF,CAAC,GAAGH,QAAQ;EAEZ,MAAMI,YAAY,GAAGF,KAAK,CAACG,OAAO,CAAC,UAAU,CAAC;EAE9C,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAC,CAAC;EAC3B;AACF;AACA;EACE,MAAMC,iBAAiB,GAAIC,aAAa,IAAK;IAC3C,IAAIC,UAAU;IACd,IAAI;MACFA,UAAU,GAAGP,IAAI,KAAK,YAAY,GAChC,IAAAQ,sBAAY,EAAC,qBAAuBF,aAAc,CAAC,GACnD,IAAAG,mBAAS,EAAC,qBAAuBH,aAAa,EAAGN,IAAI,CAAC;IAC1D,CAAC,CAAC,MAAM;MACN;IACF;IAEA,IAAAU,sBAAQ,EAACH,UAAU,EAAGI,GAAG,IAAK;MAC5B,MAAM;QACJC,IAAI;QACJC;MACF,CAAC,GAAG,2DAA6DF,GAAI;MACrE,IAAIC,IAAI,KAAK,eAAe,EAAE;QAC5BT,SAAS,CAACW,GAAG,CAACD,KAAK,CAAC;MACtB;IACF,CAAC,CAAC;EACJ,CAAC;EAED,MAAME,yBAAyB,GAAGA,CAACC,IAAI,GAAGtB,KAAK,KAAK;IAClD,MAAMuB,SAAS,GAAG,qBAAuBlB,KAAK,CAACmB,mBAAmB,CAAC;MACjEC,OAAO,EAAE;IACX,CAAC,CAAE;IACH,MAAMC,SAAS,GAAG,IAAAlB,mBAAO,EAACc,IAAI,EAAEC,SAAS,CAAC;IAC1C,KAAK,MAAMI,QAAQ,IAAID,SAAS,EAAE;MAChCf,iBAAiB,CAACgB,QAAQ,CAACT,IAAI,CAAC;IAClC;IAEA,MAAMU,WAAW,GAAG,qBAAuBvB,KAAK,CAACmB,mBAAmB,CAAC;MACnEC,OAAO,EAAE;IACX,CAAC,CAAE;IACH,MAAMI,WAAW,GAAG,IAAArB,mBAAO,EAACc,IAAI,EAAEM,WAAW,CAAC;IAC9C,KAAK,MAAME,UAAU,IAAID,WAAW,EAAE;MACpClB,iBAAiB,CAACmB,UAAU,CAACZ,IAAI,CAAC;IACpC;EACF,CAAC;EAED,MAAMa,iBAAiB,GAAGA,CAAA,KAAM;IAC9B,KAAK,MAAMC,GAAG,IAAIzB,YAAY,EAAE;MAC9B,MAAM;QACJ0B;MACF,CAAC,GAAGD,GAAG;MACP,MAAME,KAAK,GAAGD,IAAI,CAACE,KAAK,CAAC,OAAO,CAAC;MACjC,KAAK,MAAMC,GAAG,IAAIF,KAAK,EAAE;QACvB,IAAI,CAACzB,SAAS,CAACpB,GAAG,CAAC+C,GAAG,CAAC,EAAE;UACvBlC,MAAM,CAAC,aAAakC,GAAG,aAAa,EAAE,IAAI,EAAEJ,GAAG,CAAC;QAClD;MACF;IACF;EACF,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAMK,eAAe,GAAGA,CAACC,gBAAgB,EAAEC,qBAAqB,KAAK;IACnE;IACA,MAAM;MACJC;IACF,CAAC,GAAGF,gBAAgB,CAACG,cAAc,IAAI;MACrCD,MAAM,EAAE;IACV,CAAC;IACD,KAAK,MAAM;MACTP,IAAI,EAAE;QACJA;MACF;IACF,CAAC,IAAIO,MAAM,EAAE;MACX/B,SAAS,CAACW,GAAG,CAACa,IAAI,CAAC;IACrB;IAEA,IAAIM,qBAAqB,EAAE;MACzBlB,yBAAyB,CAAC,CAAC;IAC7B,CAAC,MAAM,IAAIiB,gBAAgB,CAACpB,IAAI,KAAK,kBAAkB,EAAE;MACvD;MACA,KAAK,MAAMD,GAAG,IAAIqB,gBAAgB,EAAEI,IAAI,EAAEA,IAAI,IAAI,EAAE,EAAE;QACpD;QACA,MAAMC,WAAW,GAAG,IAAAC,6BAAe,EAACxC,UAAU,EAAEa,GAAG,EAAEd,QAAQ,CAAC;QAC9D,IAAI,CAACwC,WAAW,EAAE;UAChB;QACF;QAEA,MAAME,UAAU,GAAG,IAAAC,0BAAY,EAACH,WAAW,EAAE,EAAE,CAAC;QAChDtB,yBAAyB,CAACwB,UAAU,CAAC;QAErC,MAAME,QAAQ,GAAG,qBAAuB1C,KAAK,CAACmB,mBAAmB,CAAC;UAChEC,OAAO,EAAE;QACX,CAAC,CAAE;QACH,MAAMuB,QAAQ,GAAG,IAAAxC,mBAAO,EAACqC,UAAU,EAAEE,QAAQ,CAAC;QAC9C,KAAK,MAAME,OAAO,IAAID,QAAQ,EAAE;UAC9BrC,iBAAiB,CAACsC,OAAO,CAAC/B,IAAI,CAAC;QACjC;MACF;IACF;IAEAa,iBAAiB,CAAC,CAAC;EACrB,CAAC;EAED,MAAMmB,iBAAiB,GAAGA,CAAA,KAAM;IAC9B,MAAMjC,GAAG,GAAG;IACVhB,IACD;IACD,IAAI,CAACgB,GAAG,EAAE;MACR;IACF;IAEA,QAAQA,GAAG,CAACC,IAAI;MACd,KAAK,kBAAkB;MACvB,KAAK,wBAAwB;MAC7B,KAAK,wBAAwB;QAC3BmB,eAAe,CAACpB,GAAG,CAAC;QACpB;MACF,KAAK,0BAA0B;MAC/B,KAAK,wBAAwB;QAC3B,QAAQA,GAAG,CAACkC,WAAW,EAAEjC,IAAI;UAC3B,KAAK,kBAAkB;UACvB,KAAK,wBAAwB;UAC7B,KAAK,wBAAwB;YAC3BmB,eAAe,CAACpB,GAAG,CAACkC,WAAW,CAAC;YAChC;UACF,KAAK,qBAAqB;YACxBd,eAAe,CAACpB,GAAG,CAACkC,WAAW,EAAE,IAAI,CAAC;YACtC;QACJ;QAEA;MACF,KAAK,qBAAqB;QACxBd,eAAe,CAACpB,GAAG,EAAE,IAAI,CAAC;QAC1B;IACJ;EACF,CAAC;EAED,MAAMmC,YAAY,GAAG/C,KAAK,CAACG,OAAO,CAAC,UAAU,CAAC;EAC9C,MAAM6C,YAAY,GAAGhD,KAAK,CAACG,OAAO,CAAC,UAAU,CAAC;EAC9C,IAAI4C,YAAY,CAACE,MAAM,IAAID,YAAY,CAACC,MAAM,EAAE;IAC9CjC,yBAAyB,CAAC,CAAC;IAC3BU,iBAAiB,CAAC,CAAC;IACnB;EACF;EAEA,MAAMwB,WAAW,GAAGlD,KAAK,CAACG,OAAO,CAAC,SAAS,CAAC;EAC5C,IAAI,CAAC+C,WAAW,CAACD,MAAM,IAAIC,WAAW,CAACD,MAAM,IAAI,CAAC,EAAE;IAClDJ,iBAAiB,CAAC,CAAC;IACnB;EACF;EAEA,MAAMM,oBAAoB,GAAGD,WAAW,CAAC,CAAC,CAAC,CAACrC,IAAI;EAChDP,iBAAiB,CAAC6C,oBAAoB,CAAC;EAEvC,MAAMC,YAAY,GAAG,qBAAuBpD,KAAK,CAACmB,mBAAmB,CAAC;IACpEC,OAAO,EAAE;EACX,CAAC,CAAE;EACH,MAAMiC,YAAY,GAAGrD,KAAK,CAACG,OAAO,CAACiD,YAAY,CAAC;EAChD,KAAK,MAAME,WAAW,IAAID,YAAY,EAAE;IACtC/C,iBAAiB,CAACgD,WAAW,CAACzC,IAAI,CAAC;EACrC;EAEAa,iBAAiB,CAAC,CAAC;AACrB,CAAC,EAAE;EACD6B,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,gGAAgG;MAC7GC,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,EAAE;IACV/C,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAAgD,MAAA,CAAApE,OAAA,GAAAA,OAAA,CAAAV,OAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
"url": "http://gajus.com"
|
|
6
6
|
},
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@es-joy/jsdoccomment": "~0.
|
|
8
|
+
"@es-joy/jsdoccomment": "~0.51.1",
|
|
9
9
|
"are-docs-informative": "^0.0.2",
|
|
10
10
|
"comment-parser": "1.4.1",
|
|
11
11
|
"debug": "^4.4.1",
|
|
12
12
|
"escape-string-regexp": "^4.0.0",
|
|
13
|
-
"espree": "^10.
|
|
13
|
+
"espree": "^10.4.0",
|
|
14
14
|
"esquery": "^1.6.0",
|
|
15
15
|
"parse-imports-exports": "^0.2.4",
|
|
16
16
|
"semver": "^7.7.2",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@babel/cli": "^7.27.2",
|
|
22
22
|
"@babel/core": "^7.27.4",
|
|
23
|
-
"@babel/eslint-parser": "^7.27.
|
|
23
|
+
"@babel/eslint-parser": "^7.27.5",
|
|
24
24
|
"@babel/node": "^7.27.1",
|
|
25
25
|
"@babel/plugin-syntax-class-properties": "^7.12.13",
|
|
26
26
|
"@babel/plugin-transform-flow-strip-types": "^7.27.1",
|
|
@@ -36,39 +36,39 @@
|
|
|
36
36
|
"@types/eslint": "^9.6.1",
|
|
37
37
|
"@types/espree": "^10.1.0",
|
|
38
38
|
"@types/esquery": "^1.5.4",
|
|
39
|
-
"@types/estree": "^1.0.
|
|
39
|
+
"@types/estree": "^1.0.8",
|
|
40
40
|
"@types/json-schema": "^7.0.15",
|
|
41
41
|
"@types/lodash.defaultsdeep": "^4.6.9",
|
|
42
42
|
"@types/mocha": "^10.0.10",
|
|
43
|
-
"@types/node": "^
|
|
43
|
+
"@types/node": "^24.0.3",
|
|
44
44
|
"@types/semver": "^7.7.0",
|
|
45
45
|
"@types/spdx-expression-parse": "^3.0.5",
|
|
46
|
-
"@typescript-eslint/types": "^8.
|
|
46
|
+
"@typescript-eslint/types": "^8.34.1",
|
|
47
47
|
"babel-plugin-add-module-exports": "^1.0.4",
|
|
48
48
|
"babel-plugin-istanbul": "^7.0.0",
|
|
49
|
-
"babel-plugin-transform-import-meta": "^2.3.
|
|
49
|
+
"babel-plugin-transform-import-meta": "^2.3.3",
|
|
50
50
|
"c8": "^10.1.3",
|
|
51
51
|
"camelcase": "^8.0.0",
|
|
52
52
|
"chai": "^5.2.0",
|
|
53
53
|
"cross-env": "^7.0.3",
|
|
54
54
|
"decamelize": "^6.0.0",
|
|
55
|
-
"eslint": "9.
|
|
55
|
+
"eslint": "9.29.0",
|
|
56
56
|
"eslint-config-canonical": "~44.9.5",
|
|
57
57
|
"gitdown": "^4.1.1",
|
|
58
|
-
"glob": "^11.0.
|
|
58
|
+
"glob": "^11.0.3",
|
|
59
59
|
"globals": "^16.2.0",
|
|
60
60
|
"husky": "^9.1.7",
|
|
61
61
|
"jsdoc-type-pratt-parser": "^4.1.0",
|
|
62
62
|
"json-schema": "^0.4.0",
|
|
63
|
-
"lint-staged": "^16.1.
|
|
63
|
+
"lint-staged": "^16.1.2",
|
|
64
64
|
"lodash.defaultsdeep": "^4.6.1",
|
|
65
|
-
"mocha": "^11.
|
|
65
|
+
"mocha": "^11.7.0",
|
|
66
66
|
"open-editor": "^5.1.0",
|
|
67
67
|
"replace": "^1.2.2",
|
|
68
68
|
"rimraf": "^6.0.1",
|
|
69
69
|
"semantic-release": "^24.2.5",
|
|
70
70
|
"typescript": "5.8.3",
|
|
71
|
-
"typescript-eslint": "^8.
|
|
71
|
+
"typescript-eslint": "^8.34.1"
|
|
72
72
|
},
|
|
73
73
|
"engines": {
|
|
74
74
|
"node": ">=20.11.0"
|
|
@@ -160,5 +160,5 @@
|
|
|
160
160
|
"test-cov": "cross-env TIMING=1 c8 --reporter text npm run test-no-cov",
|
|
161
161
|
"test-index": "npm run test-no-cov -- test/rules/index.js"
|
|
162
162
|
},
|
|
163
|
-
"version": "51.0.
|
|
163
|
+
"version": "51.0.7"
|
|
164
164
|
}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import iterateJsdoc
|
|
1
|
+
import iterateJsdoc, {
|
|
2
|
+
parseComment,
|
|
3
|
+
} from '../iterateJsdoc.js';
|
|
2
4
|
import {
|
|
5
|
+
getTags,
|
|
6
|
+
} from '../jsdocUtils.js';
|
|
7
|
+
import {
|
|
8
|
+
getJSDocComment,
|
|
3
9
|
parse as parseType,
|
|
4
10
|
traverse,
|
|
5
11
|
tryParse as tryParseType,
|
|
6
12
|
} from '@es-joy/jsdoccomment';
|
|
7
13
|
|
|
8
14
|
export default iterateJsdoc(({
|
|
15
|
+
jsdoc,
|
|
9
16
|
node,
|
|
10
17
|
report,
|
|
11
18
|
settings,
|
|
19
|
+
sourceCode,
|
|
12
20
|
utils,
|
|
13
21
|
}) => {
|
|
14
22
|
const {
|
|
@@ -42,11 +50,11 @@ export default iterateJsdoc(({
|
|
|
42
50
|
});
|
|
43
51
|
};
|
|
44
52
|
|
|
45
|
-
const checkParamsAndReturnsTags = () => {
|
|
53
|
+
const checkParamsAndReturnsTags = (jsdc = jsdoc) => {
|
|
46
54
|
const paramName = /** @type {string} */ (utils.getPreferredTagName({
|
|
47
55
|
tagName: 'param',
|
|
48
56
|
}));
|
|
49
|
-
const paramTags =
|
|
57
|
+
const paramTags = getTags(jsdc, paramName);
|
|
50
58
|
for (const paramTag of paramTags) {
|
|
51
59
|
checkForUsedTypes(paramTag.type);
|
|
52
60
|
}
|
|
@@ -54,7 +62,7 @@ export default iterateJsdoc(({
|
|
|
54
62
|
const returnsName = /** @type {string} */ (utils.getPreferredTagName({
|
|
55
63
|
tagName: 'returns',
|
|
56
64
|
}));
|
|
57
|
-
const returnsTags =
|
|
65
|
+
const returnsTags = getTags(jsdc, returnsName);
|
|
58
66
|
for (const returnsTag of returnsTags) {
|
|
59
67
|
checkForUsedTypes(returnsTag.type);
|
|
60
68
|
}
|
|
@@ -98,6 +106,26 @@ export default iterateJsdoc(({
|
|
|
98
106
|
|
|
99
107
|
if (checkParamsAndReturns) {
|
|
100
108
|
checkParamsAndReturnsTags();
|
|
109
|
+
} else if (aliasDeclaration.type === 'ClassDeclaration') {
|
|
110
|
+
/* c8 ignore next -- TS */
|
|
111
|
+
for (const nde of aliasDeclaration?.body?.body ?? []) {
|
|
112
|
+
// @ts-expect-error Should be ok
|
|
113
|
+
const commentNode = getJSDocComment(sourceCode, nde, settings);
|
|
114
|
+
if (!commentNode) {
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const innerJsdoc = parseComment(commentNode, '');
|
|
119
|
+
checkParamsAndReturnsTags(innerJsdoc);
|
|
120
|
+
|
|
121
|
+
const typeName = /** @type {string} */ (utils.getPreferredTagName({
|
|
122
|
+
tagName: 'type',
|
|
123
|
+
}));
|
|
124
|
+
const typeTags = getTags(innerJsdoc, typeName);
|
|
125
|
+
for (const typeTag of typeTags) {
|
|
126
|
+
checkForUsedTypes(typeTag.type);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
101
129
|
}
|
|
102
130
|
|
|
103
131
|
checkTemplateTags();
|
|
@@ -162,17 +190,7 @@ export default iterateJsdoc(({
|
|
|
162
190
|
checkForUsedTypes(propertyTag.type);
|
|
163
191
|
}
|
|
164
192
|
|
|
165
|
-
|
|
166
|
-
const {
|
|
167
|
-
name,
|
|
168
|
-
} = tag;
|
|
169
|
-
const names = name.split(/,\s*/u);
|
|
170
|
-
for (const nme of names) {
|
|
171
|
-
if (!usedNames.has(nme)) {
|
|
172
|
-
report(`@template ${nme} not in use`, null, tag);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
}
|
|
193
|
+
checkTemplateTags();
|
|
176
194
|
}, {
|
|
177
195
|
iterateAllJsdocs: true,
|
|
178
196
|
meta: {
|