eslint-plugin-jsdoc 37.0.1 → 37.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/dist/alignTransform.js +3 -1
- package/dist/alignTransform.js.map +1 -1
- package/dist/bin/generateRule.js +2 -4
- package/dist/bin/generateRule.js.map +1 -1
- package/dist/exportParser.js +32 -18
- package/dist/exportParser.js.map +1 -1
- package/dist/generateRule.js +2 -4
- package/dist/generateRule.js.map +1 -1
- package/dist/iterateJsdoc.js +47 -37
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/jsdocUtils.js +37 -26
- package/dist/jsdocUtils.js.map +1 -1
- package/dist/rules/checkAccess.js.map +1 -1
- package/dist/rules/checkExamples.js +8 -5
- package/dist/rules/checkExamples.js.map +1 -1
- package/dist/rules/checkIndentation.js +3 -3
- package/dist/rules/checkIndentation.js.map +1 -1
- package/dist/rules/checkLineAlignment.js +6 -4
- package/dist/rules/checkLineAlignment.js.map +1 -1
- package/dist/rules/checkParamNames.js +17 -12
- package/dist/rules/checkParamNames.js.map +1 -1
- package/dist/rules/checkPropertyNames.js.map +1 -1
- package/dist/rules/checkTagNames.js +6 -6
- package/dist/rules/checkTagNames.js.map +1 -1
- package/dist/rules/checkTypes.js +10 -9
- package/dist/rules/checkTypes.js.map +1 -1
- package/dist/rules/checkValues.js.map +1 -1
- package/dist/rules/emptyTags.js +3 -2
- package/dist/rules/emptyTags.js.map +1 -1
- package/dist/rules/matchDescription.js.map +1 -1
- package/dist/rules/matchName.js +6 -4
- package/dist/rules/matchName.js.map +1 -1
- package/dist/rules/multilineBlocks.js +4 -2
- package/dist/rules/multilineBlocks.js.map +1 -1
- package/dist/rules/newlineAfterDescription.js +1 -3
- package/dist/rules/newlineAfterDescription.js.map +1 -1
- package/dist/rules/noBadBlocks.js +3 -3
- package/dist/rules/noBadBlocks.js.map +1 -1
- package/dist/rules/noDefaults.js +7 -4
- package/dist/rules/noDefaults.js.map +1 -1
- package/dist/rules/noMissingSyntax.js.map +1 -1
- package/dist/rules/noMultiAsterisks.js +1 -1
- package/dist/rules/noMultiAsterisks.js.map +1 -1
- package/dist/rules/noRestrictedSyntax.js.map +1 -1
- package/dist/rules/noTypes.js +6 -3
- package/dist/rules/noTypes.js.map +1 -1
- package/dist/rules/noUndefinedTypes.js +14 -16
- package/dist/rules/noUndefinedTypes.js.map +1 -1
- package/dist/rules/requireAsteriskPrefix.js.map +1 -1
- package/dist/rules/requireDescription.js +10 -12
- package/dist/rules/requireDescription.js.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.js +6 -7
- package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
- package/dist/rules/requireExample.js +7 -8
- package/dist/rules/requireExample.js.map +1 -1
- package/dist/rules/requireFileOverview.js.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.js +10 -7
- package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
- package/dist/rules/requireJsdoc.js +12 -9
- package/dist/rules/requireJsdoc.js.map +1 -1
- package/dist/rules/requireParam.js +35 -31
- package/dist/rules/requireParam.js.map +1 -1
- package/dist/rules/requireProperty.js +3 -3
- package/dist/rules/requireProperty.js.map +1 -1
- package/dist/rules/requireReturns.js +1 -1
- package/dist/rules/requireReturns.js.map +1 -1
- package/dist/rules/requireReturnsCheck.js.map +1 -1
- package/dist/rules/requireThrows.js +4 -5
- package/dist/rules/requireThrows.js.map +1 -1
- package/dist/rules/requireYields.js +2 -4
- package/dist/rules/requireYields.js.map +1 -1
- package/dist/rules/tagLines.js +11 -8
- package/dist/rules/tagLines.js.map +1 -1
- package/dist/rules/validTypes.js +15 -13
- package/dist/rules/validTypes.js.map +1 -1
- package/package.json +52 -49
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/tagLines.js"],"names":["context","jsdoc","utils","alwaysNever","count","noEndLines","tags","options","some","tg","tagIdx","lastTag","reportIndex","
|
|
1
|
+
{"version":3,"sources":["../../src/rules/tagLines.js"],"names":["context","jsdoc","utils","alwaysNever","count","noEndLines","tags","options","some","tg","tagIdx","lastTag","reportIndex","idx","tokens","tag","name","type","description","end","source","entries","includes","slice","lines","fixer","removeTagItem","reportJSDoc","line","number","currentTag","tagSourceIdx","splice","length","push","currentTg","tagCount","defaultAlways","overrideAlways","fixCount","addLines","iterateAllJsdocs","meta","docs","url","fixable","schema","enum","additionalProperies","properties","patternProperties","additionalProperties"],"mappings":"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","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const [\n alwaysNever = 'never',\n {\n count = 1,\n noEndLines = false,\n tags = {},\n } = {},\n ] = context.options;\n\n jsdoc.tags.some((tg, tagIdx) => {\n let lastTag;\n\n let reportIndex = null;\n for (const [idx, {tokens: {tag, name, type, description, end}}] of tg.source.entries()) {\n // May be text after a line break within a tag description\n if (description) {\n reportIndex = null;\n }\n\n if (lastTag && ['any', 'always'].includes(tags[lastTag.slice(1)]?.lines)) {\n continue;\n }\n\n if (\n !tag && !name && !type && !description && !end &&\n (alwaysNever === 'never' ||\n lastTag && tags[lastTag.slice(1)]?.lines === 'never'\n )\n ) {\n reportIndex = idx;\n\n continue;\n }\n\n lastTag = tag;\n }\n\n if (reportIndex !== null) {\n const fixer = () => {\n utils.removeTagItem(tagIdx, reportIndex);\n };\n\n utils.reportJSDoc(\n 'Expected no lines between tags',\n {line: tg.source[0].number + 1},\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n\n (noEndLines ? jsdoc.tags.slice(0, -1) : jsdoc.tags).some((tg, tagIdx) => {\n const lines = [];\n\n let currentTag;\n let tagSourceIdx = 0;\n for (const [idx, {number, tokens: {tag, name, type, description, end}}] of tg.source.entries()) {\n if (description) {\n lines.splice(0, lines.length);\n tagSourceIdx = idx;\n }\n\n if (tag) {\n currentTag = tag;\n }\n\n if (!tag && !name && !type && !description && !end) {\n lines.push({idx, number});\n }\n }\n\n const currentTg = currentTag && tags[currentTag.slice(1)];\n const tagCount = currentTg?.count;\n\n const defaultAlways = alwaysNever === 'always' && currentTg?.lines !== 'never' &&\n currentTg?.lines !== 'any' && lines.length < count;\n\n let overrideAlways;\n let fixCount = count;\n if (!defaultAlways) {\n fixCount = typeof tagCount === 'number' ? tagCount : count;\n overrideAlways = currentTg?.lines === 'always' &&\n lines.length < fixCount;\n }\n\n if (defaultAlways || overrideAlways) {\n const fixer = () => {\n utils.addLines(tagIdx, lines[lines.length - 1]?.idx || tagSourceIdx + 1, fixCount - lines.length);\n };\n\n const line = lines[lines.length - 1]?.number || tg.source[tagSourceIdx].number;\n utils.reportJSDoc(\n `Expected ${fixCount} line${fixCount === 1 ? '' : 's'} between tags but found ${lines.length}`,\n {\n line,\n },\n fixer,\n );\n\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Enforces lines (or no lines) between tags.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-tag-lines',\n },\n fixable: 'code',\n schema: [\n {\n enum: ['always', 'any', 'never'],\n type: 'string',\n },\n {\n additionalProperies: false,\n properties: {\n count: {\n type: 'integer',\n },\n noEndLines: {\n type: 'boolean',\n },\n tags: {\n patternProperties: {\n '.*': {\n additionalProperties: false,\n properties: {\n count: {\n type: 'integer',\n },\n lines: {\n enum: ['always', 'never', 'any'],\n type: 'string',\n },\n },\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"tagLines.js"}
|
package/dist/rules/validTypes.js
CHANGED
|
@@ -21,7 +21,8 @@ const tryParsePathIgnoreError = path => {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
return false;
|
|
24
|
-
};
|
|
24
|
+
}; // eslint-disable-next-line complexity
|
|
25
|
+
|
|
25
26
|
|
|
26
27
|
var _default = (0, _iterateJsdoc.default)(({
|
|
27
28
|
jsdoc,
|
|
@@ -35,9 +36,9 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
35
36
|
} = context.options[0] || {};
|
|
36
37
|
const {
|
|
37
38
|
mode
|
|
38
|
-
} = settings;
|
|
39
|
+
} = settings;
|
|
39
40
|
|
|
40
|
-
jsdoc.tags
|
|
41
|
+
for (const tag of jsdoc.tags) {
|
|
41
42
|
const validNamepathParsing = function (namepath, tagName) {
|
|
42
43
|
if (tryParsePathIgnoreError(namepath)) {
|
|
43
44
|
return true;
|
|
@@ -46,6 +47,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
46
47
|
let handled = false;
|
|
47
48
|
|
|
48
49
|
if (tagName) {
|
|
50
|
+
// eslint-disable-next-line default-case
|
|
49
51
|
switch (tagName) {
|
|
50
52
|
case 'module':
|
|
51
53
|
{
|
|
@@ -107,7 +109,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
107
109
|
|
|
108
110
|
if (!asExpression.test(utils.getTagDescription(tag)) || !thisNamepath) {
|
|
109
111
|
report(`@borrows must have an "as" expression. Found "${utils.getTagDescription(tag)}"`, null, tag);
|
|
110
|
-
|
|
112
|
+
continue;
|
|
111
113
|
}
|
|
112
114
|
|
|
113
115
|
if (validNamepathParsing(thisNamepath, 'borrows')) {
|
|
@@ -115,7 +117,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
115
117
|
validNamepathParsing(thatNamepath);
|
|
116
118
|
}
|
|
117
119
|
|
|
118
|
-
|
|
120
|
+
continue;
|
|
119
121
|
}
|
|
120
122
|
|
|
121
123
|
const otherModeMaps = ['jsdoc', 'typescript', 'closure', 'permissive'].filter(mde => {
|
|
@@ -128,7 +130,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
128
130
|
if (tagMightHaveNamePosition !== true && tag.name) {
|
|
129
131
|
const modeInfo = tagMightHaveNamePosition === false ? '' : ` in "${mode}" mode`;
|
|
130
132
|
report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);
|
|
131
|
-
|
|
133
|
+
continue;
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);
|
|
@@ -136,7 +138,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
136
138
|
if (mightHaveTypePosition !== true && tag.type) {
|
|
137
139
|
const modeInfo = mightHaveTypePosition === false ? '' : ` in "${mode}" mode`;
|
|
138
140
|
report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);
|
|
139
|
-
|
|
141
|
+
continue;
|
|
140
142
|
} // REQUIRED NAME
|
|
141
143
|
|
|
142
144
|
|
|
@@ -147,7 +149,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
147
149
|
if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && !['param', 'arg', 'argument', 'property', 'prop'].includes(tag.tag) && (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))) {
|
|
148
150
|
const modeInfo = tagMustHaveNamePosition === true ? '' : ` in "${mode}" mode`;
|
|
149
151
|
report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);
|
|
150
|
-
|
|
152
|
+
continue;
|
|
151
153
|
} // REQUIRED TYPE
|
|
152
154
|
|
|
153
155
|
|
|
@@ -156,7 +158,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
156
158
|
if (mustHaveTypePosition !== false && !tag.type) {
|
|
157
159
|
const modeInfo = mustHaveTypePosition === true ? '' : ` in "${mode}" mode`;
|
|
158
160
|
report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);
|
|
159
|
-
|
|
161
|
+
continue;
|
|
160
162
|
} // REQUIRED TYPE OR NAME/NAMEPATH
|
|
161
163
|
|
|
162
164
|
|
|
@@ -165,7 +167,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
165
167
|
if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {
|
|
166
168
|
const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in "${mode}" mode`;
|
|
167
169
|
report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);
|
|
168
|
-
|
|
170
|
+
continue;
|
|
169
171
|
} // VALID TYPE
|
|
170
172
|
|
|
171
173
|
|
|
@@ -180,14 +182,14 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
180
182
|
|
|
181
183
|
if (hasNameOrNamepathPosition) {
|
|
182
184
|
if (mode !== 'jsdoc' && tag.tag === 'template') {
|
|
183
|
-
utils.parseClosureTemplateTag(tag)
|
|
185
|
+
for (const namepath of utils.parseClosureTemplateTag(tag)) {
|
|
184
186
|
validNamepathParsing(namepath);
|
|
185
|
-
}
|
|
187
|
+
}
|
|
186
188
|
} else {
|
|
187
189
|
validNamepathParsing(tag.name, tag.tag);
|
|
188
190
|
}
|
|
189
191
|
}
|
|
190
|
-
}
|
|
192
|
+
}
|
|
191
193
|
}, {
|
|
192
194
|
iterateAllJsdocs: true,
|
|
193
195
|
meta: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/validTypes.js"],"names":["asExpression","tryParsePathIgnoreError","path","jsdoc","report","utils","context","settings","allowEmptyNamepaths","options","mode","tags","forEach","tag","validNamepathParsing","namepath","tagName","handled","startsWith","endChar","slice","includes","startChar","charAt","validTypeParsing","type","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperies","properties","default"],"mappings":"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","sourcesContent":["import {\n tryParse, parse,\n} from 'jsdoc-type-pratt-parser';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst asExpression = /as\\s+/u;\n\nconst tryParsePathIgnoreError = (path) => {\n try {\n tryParse(path);\n\n return true;\n } catch {\n // Keep the original error for including the whole type\n }\n\n return false;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n settings,\n}) => {\n const {\n allowEmptyNamepaths = false,\n } = context.options[0] || {};\n const {mode} = settings;\n\n // eslint-disable-next-line complexity\n jsdoc.tags.forEach((tag) => {\n const validNamepathParsing = function (namepath, tagName) {\n if (tryParsePathIgnoreError(namepath)) {\n return true;\n }\n let handled = false;\n\n if (tagName) {\n switch (tagName) {\n case 'module': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\n }\n break;\n }\n case 'memberof': case 'memberof!': {\n const endChar = namepath.slice(-1);\n if (['#', '.', '~'].includes(endChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(0, -1));\n }\n break;\n }\n case 'borrows': {\n const startChar = namepath.charAt();\n if (['#', '.', '~'].includes(startChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(1));\n }\n }\n }\n }\n\n if (!handled) {\n report(`Syntax error in namepath: ${namepath}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n const validTypeParsing = function (type) {\n try {\n if (mode === 'permissive') {\n tryParse(type);\n } else {\n parse(type, mode);\n }\n } catch {\n report(`Syntax error in type: ${type}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n if (tag.tag === 'borrows') {\n const thisNamepath = utils.getTagDescription(tag).replace(asExpression, '').trim();\n\n if (!asExpression.test(utils.getTagDescription(tag)) || !thisNamepath) {\n report(`@borrows must have an \"as\" expression. Found \"${utils.getTagDescription(tag)}\"`, null, tag);\n\n return;\n }\n\n if (validNamepathParsing(thisNamepath, 'borrows')) {\n const thatNamepath = tag.name;\n\n validNamepathParsing(thatNamepath);\n }\n\n return;\n }\n\n const otherModeMaps = ['jsdoc', 'typescript', 'closure', 'permissive'].filter(\n (mde) => {\n return mde !== mode;\n },\n ).map((mde) => {\n return utils.getTagStructureForMode(mde);\n });\n\n const tagMightHaveNamePosition = utils.tagMightHaveNamePosition(tag.tag, otherModeMaps);\n if (tagMightHaveNamePosition !== true && tag.name) {\n const modeInfo = tagMightHaveNamePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);\n\n return;\n }\n\n const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);\n if (mightHaveTypePosition !== true && tag.type) {\n const modeInfo = mightHaveTypePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);\n\n return;\n }\n\n // REQUIRED NAME\n const tagMustHaveNamePosition = utils.tagMustHaveNamePosition(tag.tag, otherModeMaps);\n\n // Don't handle `@param` here though it does require name as handled by\n // `require-param-name` (`@property` would similarly seem to require one,\n // but is handled by `require-property-name`)\n if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![\n 'param', 'arg', 'argument',\n 'property', 'prop',\n ].includes(tag.tag) &&\n (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))\n ) {\n const modeInfo = tagMustHaveNamePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);\n\n return;\n }\n\n // REQUIRED TYPE\n const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);\n if (mustHaveTypePosition !== false && !tag.type) {\n const modeInfo = mustHaveTypePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);\n\n return;\n }\n\n // REQUIRED TYPE OR NAME/NAMEPATH\n const tagMissingRequiredTypeOrNamepath = utils.tagMissingRequiredTypeOrNamepath(tag, otherModeMaps);\n if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {\n const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);\n\n return;\n }\n\n // VALID TYPE\n const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type);\n if (hasTypePosition) {\n validTypeParsing(tag.type);\n }\n\n // VALID NAME/NAMEPATH\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition !== false ||\n utils.tagMightHaveNamepath(tag.tag)\n ) && Boolean(tag.name);\n\n if (hasNameOrNamepathPosition) {\n if (mode !== 'jsdoc' && tag.tag === 'template') {\n utils.parseClosureTemplateTag(tag).forEach((namepath) => {\n validNamepathParsing(namepath);\n });\n } else {\n validNamepathParsing(tag.name, tag.tag);\n }\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-valid-types',\n },\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowEmptyNamepaths: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"validTypes.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/validTypes.js"],"names":["asExpression","tryParsePathIgnoreError","path","jsdoc","report","utils","context","settings","allowEmptyNamepaths","options","mode","tag","tags","validNamepathParsing","namepath","tagName","handled","startsWith","endChar","slice","includes","startChar","charAt","validTypeParsing","type","thisNamepath","getTagDescription","replace","trim","test","thatNamepath","name","otherModeMaps","filter","mde","map","getTagStructureForMode","tagMightHaveNamePosition","modeInfo","mightHaveTypePosition","tagMightHaveTypePosition","tagMustHaveNamePosition","mustHaveTypePosition","tagMustHaveTypePosition","tagMissingRequiredTypeOrNamepath","hasTypePosition","Boolean","hasNameOrNamepathPosition","tagMightHaveNamepath","parseClosureTemplateTag","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperies","properties","default"],"mappings":"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","sourcesContent":["import {\n tryParse, parse,\n} from 'jsdoc-type-pratt-parser';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst asExpression = /as\\s+/u;\n\nconst tryParsePathIgnoreError = (path) => {\n try {\n tryParse(path);\n\n return true;\n } catch {\n // Keep the original error for including the whole type\n }\n\n return false;\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n settings,\n}) => {\n const {\n allowEmptyNamepaths = false,\n } = context.options[0] || {};\n const {mode} = settings;\n\n for (const tag of jsdoc.tags) {\n const validNamepathParsing = function (namepath, tagName) {\n if (tryParsePathIgnoreError(namepath)) {\n return true;\n }\n\n let handled = false;\n\n if (tagName) {\n // eslint-disable-next-line default-case\n switch (tagName) {\n case 'module': {\n if (!namepath.startsWith('module:')) {\n handled = tryParsePathIgnoreError(`module:${namepath}`);\n }\n\n break;\n }\n\n case 'memberof': case 'memberof!': {\n const endChar = namepath.slice(-1);\n if (['#', '.', '~'].includes(endChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(0, -1));\n }\n\n break;\n }\n\n case 'borrows': {\n const startChar = namepath.charAt();\n if (['#', '.', '~'].includes(startChar)) {\n handled = tryParsePathIgnoreError(namepath.slice(1));\n }\n }\n }\n }\n\n if (!handled) {\n report(`Syntax error in namepath: ${namepath}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n const validTypeParsing = function (type) {\n try {\n if (mode === 'permissive') {\n tryParse(type);\n } else {\n parse(type, mode);\n }\n } catch {\n report(`Syntax error in type: ${type}`, null, tag);\n\n return false;\n }\n\n return true;\n };\n\n if (tag.tag === 'borrows') {\n const thisNamepath = utils.getTagDescription(tag).replace(asExpression, '')\n .trim();\n\n if (!asExpression.test(utils.getTagDescription(tag)) || !thisNamepath) {\n report(`@borrows must have an \"as\" expression. Found \"${utils.getTagDescription(tag)}\"`, null, tag);\n\n continue;\n }\n\n if (validNamepathParsing(thisNamepath, 'borrows')) {\n const thatNamepath = tag.name;\n\n validNamepathParsing(thatNamepath);\n }\n\n continue;\n }\n\n const otherModeMaps = ['jsdoc', 'typescript', 'closure', 'permissive'].filter(\n (mde) => {\n return mde !== mode;\n },\n ).map((mde) => {\n return utils.getTagStructureForMode(mde);\n });\n\n const tagMightHaveNamePosition = utils.tagMightHaveNamePosition(tag.tag, otherModeMaps);\n if (tagMightHaveNamePosition !== true && tag.name) {\n const modeInfo = tagMightHaveNamePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a name${modeInfo}.`, null, tag);\n\n continue;\n }\n\n const mightHaveTypePosition = utils.tagMightHaveTypePosition(tag.tag, otherModeMaps);\n if (mightHaveTypePosition !== true && tag.type) {\n const modeInfo = mightHaveTypePosition === false ? '' : ` in \"${mode}\" mode`;\n report(`@${tag.tag} should not have a bracketed type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED NAME\n const tagMustHaveNamePosition = utils.tagMustHaveNamePosition(tag.tag, otherModeMaps);\n\n // Don't handle `@param` here though it does require name as handled by\n // `require-param-name` (`@property` would similarly seem to require one,\n // but is handled by `require-property-name`)\n if (tagMustHaveNamePosition !== false && !tag.name && !allowEmptyNamepaths && ![\n 'param', 'arg', 'argument',\n 'property', 'prop',\n ].includes(tag.tag) &&\n (tag.tag !== 'see' || !utils.getTagDescription(tag).includes('{@link'))\n ) {\n const modeInfo = tagMustHaveNamePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a name/namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE\n const mustHaveTypePosition = utils.tagMustHaveTypePosition(tag.tag, otherModeMaps);\n if (mustHaveTypePosition !== false && !tag.type) {\n const modeInfo = mustHaveTypePosition === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have a type${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // REQUIRED TYPE OR NAME/NAMEPATH\n const tagMissingRequiredTypeOrNamepath = utils.tagMissingRequiredTypeOrNamepath(tag, otherModeMaps);\n if (tagMissingRequiredTypeOrNamepath !== false && !allowEmptyNamepaths) {\n const modeInfo = tagMissingRequiredTypeOrNamepath === true ? '' : ` in \"${mode}\" mode`;\n report(`Tag @${tag.tag} must have either a type or namepath${modeInfo}.`, null, tag);\n\n continue;\n }\n\n // VALID TYPE\n const hasTypePosition = mightHaveTypePosition === true && Boolean(tag.type);\n if (hasTypePosition) {\n validTypeParsing(tag.type);\n }\n\n // VALID NAME/NAMEPATH\n const hasNameOrNamepathPosition = (\n tagMustHaveNamePosition !== false ||\n utils.tagMightHaveNamepath(tag.tag)\n ) && Boolean(tag.name);\n\n if (hasNameOrNamepathPosition) {\n if (mode !== 'jsdoc' && tag.tag === 'template') {\n for (const namepath of utils.parseClosureTemplateTag(tag)) {\n validNamepathParsing(namepath);\n }\n } else {\n validNamepathParsing(tag.name, tag.tag);\n }\n }\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Requires all types to be valid JSDoc or Closure compiler types without syntax errors.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-valid-types',\n },\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowEmptyNamepaths: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"validTypes.js"}
|
package/package.json
CHANGED
|
@@ -5,65 +5,83 @@
|
|
|
5
5
|
"url": "http://gajus.com"
|
|
6
6
|
},
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@es-joy/jsdoccomment": "0.
|
|
9
|
-
"comment-parser": "1.
|
|
10
|
-
"debug": "^4.3.
|
|
8
|
+
"@es-joy/jsdoccomment": "0.13.0",
|
|
9
|
+
"comment-parser": "1.3.0",
|
|
10
|
+
"debug": "^4.3.3",
|
|
11
|
+
"escape-string-regexp": "^4.0.0",
|
|
11
12
|
"esquery": "^1.4.0",
|
|
12
13
|
"jsdoc-type-pratt-parser": "^2.0.0",
|
|
13
|
-
"lodash": "^4.17.21",
|
|
14
14
|
"regextras": "^0.8.0",
|
|
15
15
|
"semver": "^7.3.5",
|
|
16
16
|
"spdx-expression-parse": "^3.0.1"
|
|
17
17
|
},
|
|
18
18
|
"description": "JSDoc linting rules for ESLint.",
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@babel/cli": "^7.
|
|
21
|
-
"@babel/core": "^7.
|
|
22
|
-
"@babel/eslint-parser": "^7.
|
|
23
|
-
"@babel/node": "^7.
|
|
20
|
+
"@babel/cli": "^7.16.0",
|
|
21
|
+
"@babel/core": "^7.16.0",
|
|
22
|
+
"@babel/eslint-parser": "^7.16.3",
|
|
23
|
+
"@babel/node": "^7.16.0",
|
|
24
24
|
"@babel/plugin-syntax-class-properties": "^7.12.13",
|
|
25
|
-
"@babel/plugin-transform-flow-strip-types": "^7.
|
|
26
|
-
"@babel/preset-env": "^7.
|
|
27
|
-
"@babel/register": "^7.
|
|
25
|
+
"@babel/plugin-transform-flow-strip-types": "^7.16.0",
|
|
26
|
+
"@babel/preset-env": "^7.16.4",
|
|
27
|
+
"@babel/register": "^7.16.0",
|
|
28
28
|
"@hkdobrev/run-if-changed": "^0.3.1",
|
|
29
|
-
"@typescript-eslint/parser": "^5.
|
|
29
|
+
"@typescript-eslint/parser": "^5.6.0",
|
|
30
30
|
"babel-plugin-add-module-exports": "^1.0.4",
|
|
31
31
|
"babel-plugin-istanbul": "^6.1.1",
|
|
32
|
+
"camelcase": "^6.2.1",
|
|
32
33
|
"chai": "^4.3.4",
|
|
33
34
|
"cross-env": "^7.0.3",
|
|
34
|
-
"
|
|
35
|
-
"eslint
|
|
35
|
+
"decamelize": "^5.0.1",
|
|
36
|
+
"eslint": "^8.4.1",
|
|
37
|
+
"eslint-config-canonical": "^32.46.0",
|
|
36
38
|
"gitdown": "^3.1.4",
|
|
37
39
|
"glob": "^7.2.0",
|
|
38
40
|
"husky": "^7.0.4",
|
|
39
|
-
"lint-staged": "^
|
|
41
|
+
"lint-staged": "^12.1.2",
|
|
42
|
+
"lodash.defaultsdeep": "^4.6.1",
|
|
40
43
|
"mocha": "^9.1.3",
|
|
41
44
|
"nyc": "^15.1.0",
|
|
42
45
|
"open-editor": "^3.0.0",
|
|
43
46
|
"rimraf": "^3.0.2",
|
|
44
|
-
"semantic-release": "^18.0.
|
|
45
|
-
"typescript": "^4.
|
|
47
|
+
"semantic-release": "^18.0.1",
|
|
48
|
+
"typescript": "^4.5.2"
|
|
46
49
|
},
|
|
47
50
|
"engines": {
|
|
48
51
|
"node": "^12 || ^14 || ^16 || ^17"
|
|
49
52
|
},
|
|
50
|
-
"lint-staged": {
|
|
51
|
-
".eslintignore": "npm run lint",
|
|
52
|
-
"./*.js": "npm run lint-arg --",
|
|
53
|
-
"src/**/*.js": "npm run lint-arg --",
|
|
54
|
-
"test/**/*.js": "npm run lint-arg --"
|
|
55
|
-
},
|
|
56
|
-
"run-if-changed": {
|
|
57
|
-
"package-lock.json": "npm run install-offline"
|
|
58
|
-
},
|
|
59
53
|
"keywords": [
|
|
60
54
|
"eslint",
|
|
61
55
|
"plugin",
|
|
62
56
|
"jsdoc"
|
|
63
57
|
],
|
|
64
58
|
"license": "BSD-3-Clause",
|
|
59
|
+
"lint-staged": {
|
|
60
|
+
"./*.js": "npm run lint-arg --",
|
|
61
|
+
".eslintignore": "npm run lint",
|
|
62
|
+
"src/**/*.js": "npm run lint-arg --",
|
|
63
|
+
"test/**/*.js": "npm run lint-arg --"
|
|
64
|
+
},
|
|
65
65
|
"main": "./dist/index.js",
|
|
66
66
|
"name": "eslint-plugin-jsdoc",
|
|
67
|
+
"nyc": {
|
|
68
|
+
"branches": 100,
|
|
69
|
+
"check-coverage": false,
|
|
70
|
+
"exclude": [
|
|
71
|
+
"src/rules/checkExamples.js"
|
|
72
|
+
],
|
|
73
|
+
"functions": 100,
|
|
74
|
+
"include": [
|
|
75
|
+
"src/"
|
|
76
|
+
],
|
|
77
|
+
"instrument": false,
|
|
78
|
+
"lines": 100,
|
|
79
|
+
"require": [
|
|
80
|
+
"@babel/register"
|
|
81
|
+
],
|
|
82
|
+
"sourceMap": false,
|
|
83
|
+
"statements": 100
|
|
84
|
+
},
|
|
67
85
|
"peerDependencies": {
|
|
68
86
|
"eslint": "^7.0.0 || ^8.0.0"
|
|
69
87
|
},
|
|
@@ -71,38 +89,23 @@
|
|
|
71
89
|
"type": "git",
|
|
72
90
|
"url": "https://github.com/gajus/eslint-plugin-jsdoc"
|
|
73
91
|
},
|
|
92
|
+
"run-if-changed": {
|
|
93
|
+
"package-lock.json": "npm run install-offline"
|
|
94
|
+
},
|
|
74
95
|
"scripts": {
|
|
75
96
|
"build": "rimraf ./dist && cross-env NODE_ENV=production babel ./src --out-dir ./dist --copy-files --source-maps --ignore ./src/bin/*.js --no-copy-ignored",
|
|
76
97
|
"check-readme": "babel-node ./src/bin/generateReadme.js --check",
|
|
77
98
|
"create-readme": "babel-node ./src/bin/generateReadme.js",
|
|
78
99
|
"create-rule": "babel-node ./src/bin/generateRule.js",
|
|
79
100
|
"install-offline": "npm install --prefer-offline --no-audit",
|
|
80
|
-
"lint-fix": "eslint --report-unused-disable-directives --fix ./src ./test",
|
|
81
101
|
"lint": "eslint --report-unused-disable-directives --ignore-pattern '!.ncurc.js' ./src ./test .ncurc.js",
|
|
82
102
|
"lint-arg": "eslint --report-unused-disable-directives",
|
|
103
|
+
"lint-fix": "eslint --report-unused-disable-directives --fix ./src ./test",
|
|
104
|
+
"prepare": "husky install",
|
|
105
|
+
"test": "cross-env BABEL_ENV=test nyc --reporter text-summary mocha --reporter dot --recursive --require @babel/register --timeout 12000",
|
|
83
106
|
"test-cov": "cross-env BABEL_ENV=test nyc mocha --reporter dot --recursive --require @babel/register --timeout 12000",
|
|
84
|
-
"test-no-cov": "cross-env BABEL_ENV=test mocha --reporter dot --recursive --require @babel/register --timeout 12000",
|
|
85
107
|
"test-index": "cross-env BABEL_ENV=test mocha --recursive --require @babel/register --reporter progress --timeout 12000 test/rules/index.js",
|
|
86
|
-
"test": "cross-env BABEL_ENV=test
|
|
87
|
-
"prepare": "husky install"
|
|
88
|
-
},
|
|
89
|
-
"nyc": {
|
|
90
|
-
"require": [
|
|
91
|
-
"@babel/register"
|
|
92
|
-
],
|
|
93
|
-
"sourceMap": false,
|
|
94
|
-
"instrument": false,
|
|
95
|
-
"include": [
|
|
96
|
-
"src/"
|
|
97
|
-
],
|
|
98
|
-
"exclude": [
|
|
99
|
-
"src/rules/checkExamples.js"
|
|
100
|
-
],
|
|
101
|
-
"check-coverage": true,
|
|
102
|
-
"branches": 100,
|
|
103
|
-
"lines": 100,
|
|
104
|
-
"functions": 100,
|
|
105
|
-
"statements": 100
|
|
108
|
+
"test-no-cov": "cross-env BABEL_ENV=test mocha --reporter dot --recursive --require @babel/register --timeout 12000"
|
|
106
109
|
},
|
|
107
|
-
"version": "37.0
|
|
110
|
+
"version": "37.2.0"
|
|
108
111
|
}
|