eslint-plugin-jsdoc 39.3.6 → 39.3.12
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 +267 -52
- package/dist/WarnSettings.js +0 -5
- package/dist/WarnSettings.js.map +1 -1
- package/dist/alignTransform.js +69 -61
- package/dist/alignTransform.js.map +1 -1
- package/dist/bin/generateRule.js +7 -26
- package/dist/bin/generateRule.js.map +1 -1
- package/dist/defaultTagOrder.js +30 -14
- package/dist/defaultTagOrder.js.map +1 -1
- package/dist/exportParser.js +34 -143
- package/dist/exportParser.js.map +1 -1
- package/dist/generateRule.js +7 -26
- package/dist/generateRule.js.map +1 -1
- package/dist/getDefaultTagStructureForMode.js +189 -93
- package/dist/getDefaultTagStructureForMode.js.map +1 -1
- package/dist/index.js +0 -51
- package/dist/index.js.map +1 -1
- package/dist/iterateJsdoc.js +43 -206
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/jsdocUtils.js +71 -220
- package/dist/jsdocUtils.js.map +1 -1
- package/dist/rules/checkAccess.js +0 -8
- package/dist/rules/checkAccess.js.map +1 -1
- package/dist/rules/checkAlignment.js +0 -8
- package/dist/rules/checkAlignment.js.map +1 -1
- package/dist/rules/checkExamples.js +25 -63
- package/dist/rules/checkExamples.js.map +1 -1
- package/dist/rules/checkIndentation.js +0 -7
- package/dist/rules/checkIndentation.js.map +1 -1
- package/dist/rules/checkLineAlignment.js +9 -30
- package/dist/rules/checkLineAlignment.js.map +1 -1
- package/dist/rules/checkParamNames.js +9 -47
- package/dist/rules/checkParamNames.js.map +1 -1
- package/dist/rules/checkPropertyNames.js +1 -18
- package/dist/rules/checkPropertyNames.js.map +1 -1
- package/dist/rules/checkSyntax.js +2 -5
- package/dist/rules/checkSyntax.js.map +1 -1
- package/dist/rules/checkTagNames.js +0 -18
- package/dist/rules/checkTagNames.js.map +1 -1
- package/dist/rules/checkTypes.js +17 -46
- package/dist/rules/checkTypes.js.map +1 -1
- package/dist/rules/checkValues.js +0 -18
- package/dist/rules/checkValues.js.map +1 -1
- package/dist/rules/emptyTags.js +6 -11
- package/dist/rules/emptyTags.js.map +1 -1
- package/dist/rules/implementsOnClasses.js +0 -6
- package/dist/rules/implementsOnClasses.js.map +1 -1
- package/dist/rules/matchDescription.js +0 -20
- package/dist/rules/matchDescription.js.map +1 -1
- package/dist/rules/matchName.js +2 -17
- package/dist/rules/matchName.js.map +1 -1
- package/dist/rules/multilineBlocks.js +10 -34
- package/dist/rules/multilineBlocks.js.map +1 -1
- package/dist/rules/newlineAfterDescription.js +0 -8
- package/dist/rules/newlineAfterDescription.js.map +1 -1
- package/dist/rules/noBadBlocks.js +2 -16
- package/dist/rules/noBadBlocks.js.map +1 -1
- package/dist/rules/noDefaults.js +0 -7
- package/dist/rules/noDefaults.js.map +1 -1
- package/dist/rules/noMissingSyntax.js +2 -16
- package/dist/rules/noMissingSyntax.js.map +1 -1
- package/dist/rules/noMultiAsterisks.js +2 -16
- package/dist/rules/noMultiAsterisks.js.map +1 -1
- package/dist/rules/noRestrictedSyntax.js +3 -9
- package/dist/rules/noRestrictedSyntax.js.map +1 -1
- package/dist/rules/noTypes.js +0 -7
- package/dist/rules/noTypes.js.map +1 -1
- package/dist/rules/noUndefinedTypes.js +13 -34
- package/dist/rules/noUndefinedTypes.js.map +1 -1
- package/dist/rules/requireAsteriskPrefix.js +2 -26
- package/dist/rules/requireAsteriskPrefix.js.map +1 -1
- package/dist/rules/requireDescription.js +0 -17
- package/dist/rules/requireDescription.js.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.js +13 -34
- package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
- package/dist/rules/requireExample.js +0 -9
- package/dist/rules/requireExample.js.map +1 -1
- package/dist/rules/requireFileOverview.js +0 -16
- package/dist/rules/requireFileOverview.js.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.js +2 -16
- package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
- package/dist/rules/requireJsdoc.js +13 -58
- package/dist/rules/requireJsdoc.js.map +1 -1
- package/dist/rules/requireParam.js +6 -53
- package/dist/rules/requireParam.js.map +1 -1
- package/dist/rules/requireParamDescription.js +0 -4
- package/dist/rules/requireParamDescription.js.map +1 -1
- package/dist/rules/requireParamName.js +0 -4
- package/dist/rules/requireParamName.js.map +1 -1
- package/dist/rules/requireParamType.js +0 -4
- package/dist/rules/requireParamType.js.map +1 -1
- package/dist/rules/requireProperty.js +0 -9
- package/dist/rules/requireProperty.js.map +1 -1
- package/dist/rules/requirePropertyDescription.js +0 -4
- package/dist/rules/requirePropertyDescription.js.map +1 -1
- package/dist/rules/requirePropertyName.js +0 -4
- package/dist/rules/requirePropertyName.js.map +1 -1
- package/dist/rules/requirePropertyType.js +0 -4
- package/dist/rules/requirePropertyType.js.map +1 -1
- package/dist/rules/requireReturns.js +13 -23
- package/dist/rules/requireReturns.js.map +1 -1
- package/dist/rules/requireReturnsCheck.js +12 -20
- package/dist/rules/requireReturnsCheck.js.map +1 -1
- package/dist/rules/requireReturnsDescription.js +0 -6
- package/dist/rules/requireReturnsDescription.js.map +1 -1
- package/dist/rules/requireReturnsType.js +0 -4
- package/dist/rules/requireReturnsType.js.map +1 -1
- package/dist/rules/requireThrows.js +6 -15
- package/dist/rules/requireThrows.js.map +1 -1
- package/dist/rules/requireYields.js +13 -29
- package/dist/rules/requireYields.js.map +1 -1
- package/dist/rules/requireYieldsCheck.js +8 -29
- package/dist/rules/requireYieldsCheck.js.map +1 -1
- package/dist/rules/sortTags.js +17 -30
- package/dist/rules/sortTags.js.map +1 -1
- package/dist/rules/tagLines.js +0 -26
- package/dist/rules/tagLines.js.map +1 -1
- package/dist/rules/validTypes.js +22 -53
- package/dist/rules/validTypes.js.map +1 -1
- package/dist/tagNames.js +7 -4
- package/dist/tagNames.js.map +1 -1
- package/dist/utils/hasReturnValue.js +22 -66
- package/dist/utils/hasReturnValue.js.map +1 -1
- package/package.json +16 -16
|
@@ -4,18 +4,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
const middleAsterisksBlockWS = /^([\t ]|\*(?!\*))+/u;
|
|
13
10
|
const middleAsterisksNoBlockWS = /^\*+/u;
|
|
14
11
|
const endAsterisksSingleLineBlockWS = /\*((?:\*|(?: |\t))*)\*$/u;
|
|
15
12
|
const endAsterisksMultipleLineBlockWS = /((?:\*|(?: |\t))*)\*$/u;
|
|
16
13
|
const endAsterisksSingleLineNoBlockWS = /\*(\**)\*$/u;
|
|
17
14
|
const endAsterisksMultipleLineNoBlockWS = /(\**)\*$/u;
|
|
18
|
-
|
|
19
15
|
var _default = (0, _iterateJsdoc.default)(({
|
|
20
16
|
context,
|
|
21
17
|
jsdoc,
|
|
@@ -26,8 +22,9 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
26
22
|
preventAtEnd = true,
|
|
27
23
|
preventAtMiddleLines = true
|
|
28
24
|
} = context.options[0] || {};
|
|
29
|
-
const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;
|
|
25
|
+
const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;
|
|
30
26
|
|
|
27
|
+
// eslint-disable-next-line complexity -- Todo
|
|
31
28
|
jsdoc.source.some(({
|
|
32
29
|
tokens,
|
|
33
30
|
number
|
|
@@ -41,47 +38,37 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
41
38
|
end,
|
|
42
39
|
postDelimiter
|
|
43
40
|
} = tokens;
|
|
44
|
-
|
|
45
41
|
if (preventAtMiddleLines && !end && !tag && !type && !name && (!allowWhitespace && middleAsterisks.test(description) || allowWhitespace && middleAsterisks.test(postDelimiter + description))) {
|
|
46
42
|
// console.log('description', JSON.stringify(description));
|
|
47
43
|
const fix = () => {
|
|
48
44
|
tokens.description = description.replace(middleAsterisks, '');
|
|
49
45
|
};
|
|
50
|
-
|
|
51
46
|
utils.reportJSDoc('Should be no multiple asterisks on middle lines.', {
|
|
52
47
|
line: number
|
|
53
48
|
}, fix, true);
|
|
54
49
|
return true;
|
|
55
50
|
}
|
|
56
|
-
|
|
57
51
|
if (!preventAtEnd || !end) {
|
|
58
52
|
return false;
|
|
59
53
|
}
|
|
60
|
-
|
|
61
54
|
const isSingleLineBlock = delimiter === '/**';
|
|
62
55
|
const delim = isSingleLineBlock ? '*' : delimiter;
|
|
63
56
|
let endAsterisks;
|
|
64
|
-
|
|
65
57
|
if (allowWhitespace) {
|
|
66
58
|
endAsterisks = isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS;
|
|
67
59
|
} else {
|
|
68
60
|
endAsterisks = isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS;
|
|
69
61
|
}
|
|
70
|
-
|
|
71
62
|
const endingAsterisksAndSpaces = (allowWhitespace ? postDelimiter + description + delim : description + delim).match(endAsterisks);
|
|
72
|
-
|
|
73
63
|
if (!endingAsterisksAndSpaces || !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()) {
|
|
74
64
|
return false;
|
|
75
65
|
}
|
|
76
|
-
|
|
77
66
|
const endFix = () => {
|
|
78
67
|
if (!isSingleLineBlock) {
|
|
79
68
|
tokens.delimiter = '';
|
|
80
69
|
}
|
|
81
|
-
|
|
82
70
|
tokens.description = (description + delim).replace(endAsterisks, '');
|
|
83
71
|
};
|
|
84
|
-
|
|
85
72
|
utils.reportJSDoc('Should be no multiple asterisks on end lines.', {
|
|
86
73
|
line: number
|
|
87
74
|
}, endFix, true);
|
|
@@ -113,7 +100,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
113
100
|
type: 'suggestion'
|
|
114
101
|
}
|
|
115
102
|
});
|
|
116
|
-
|
|
117
103
|
exports.default = _default;
|
|
118
104
|
module.exports = exports.default;
|
|
119
105
|
//# sourceMappingURL=noMultiAsterisks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noMultiAsterisks.js","names":["middleAsterisksBlockWS","middleAsterisksNoBlockWS","endAsterisksSingleLineBlockWS","endAsterisksMultipleLineBlockWS","endAsterisksSingleLineNoBlockWS","endAsterisksMultipleLineNoBlockWS","iterateJsdoc","context","jsdoc","utils","allowWhitespace","preventAtEnd","preventAtMiddleLines","options","middleAsterisks","source","some","tokens","number","delimiter","tag","name","type","description","end","postDelimiter","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperies","properties"],"sources":["../../src/rules/noMultiAsterisks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst middleAsterisksBlockWS = /^([\\t ]|\\*(?!\\*))+/u;\nconst middleAsterisksNoBlockWS = /^\\*+/u;\n\nconst endAsterisksSingleLineBlockWS = /\\*((?:\\*|(?: |\\t))*)\\*$/u;\nconst endAsterisksMultipleLineBlockWS = /((?:\\*|(?: |\\t))*)\\*$/u;\n\nconst endAsterisksSingleLineNoBlockWS = /\\*(\\**)\\*$/u;\nconst endAsterisksMultipleLineNoBlockWS = /(\\**)\\*$/u;\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowWhitespace = false,\n preventAtEnd = true,\n preventAtMiddleLines = true,\n } = context.options[0] || {};\n\n const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;\n\n // eslint-disable-next-line complexity -- Todo\n jsdoc.source.some(({\n tokens,\n number,\n }) => {\n const {\n delimiter,\n tag,\n name,\n type,\n description,\n end,\n postDelimiter,\n } = tokens;\n\n if (\n preventAtMiddleLines &&\n !end && !tag && !type && !name &&\n (\n !allowWhitespace && middleAsterisks.test(description) ||\n allowWhitespace && middleAsterisks.test(postDelimiter + description)\n )\n ) {\n // console.log('description', JSON.stringify(description));\n const fix = () => {\n tokens.description = description.replace(middleAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on middle lines.',\n {\n line: number,\n },\n fix,\n true,\n );\n\n return true;\n }\n\n if (!preventAtEnd || !end) {\n return false;\n }\n\n const isSingleLineBlock = delimiter === '/**';\n const delim = isSingleLineBlock ? '*' : delimiter;\n let endAsterisks;\n if (allowWhitespace) {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS;\n } else {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS;\n }\n\n const endingAsterisksAndSpaces = (\n allowWhitespace ? postDelimiter + description + delim : description + delim\n ).match(\n endAsterisks,\n );\n\n if (\n !endingAsterisksAndSpaces ||\n !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n ) {\n return false;\n }\n\n const endFix = () => {\n if (!isSingleLineBlock) {\n tokens.delimiter = '';\n }\n\n tokens.description = (description + delim).replace(endAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on end lines.',\n {\n line: number,\n },\n endFix,\n true,\n );\n\n return true;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-multi-asterisks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowWhitespace: {\n type: 'boolean',\n },\n preventAtEnd: {\n type: 'boolean',\n },\n preventAtMiddleLines: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"noMultiAsterisks.js","names":["middleAsterisksBlockWS","middleAsterisksNoBlockWS","endAsterisksSingleLineBlockWS","endAsterisksMultipleLineBlockWS","endAsterisksSingleLineNoBlockWS","endAsterisksMultipleLineNoBlockWS","iterateJsdoc","context","jsdoc","utils","allowWhitespace","preventAtEnd","preventAtMiddleLines","options","middleAsterisks","source","some","tokens","number","delimiter","tag","name","type","description","end","postDelimiter","test","fix","replace","reportJSDoc","line","isSingleLineBlock","delim","endAsterisks","endingAsterisksAndSpaces","match","trim","endFix","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperies","properties"],"sources":["../../src/rules/noMultiAsterisks.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst middleAsterisksBlockWS = /^([\\t ]|\\*(?!\\*))+/u;\nconst middleAsterisksNoBlockWS = /^\\*+/u;\n\nconst endAsterisksSingleLineBlockWS = /\\*((?:\\*|(?: |\\t))*)\\*$/u;\nconst endAsterisksMultipleLineBlockWS = /((?:\\*|(?: |\\t))*)\\*$/u;\n\nconst endAsterisksSingleLineNoBlockWS = /\\*(\\**)\\*$/u;\nconst endAsterisksMultipleLineNoBlockWS = /(\\**)\\*$/u;\n\nexport default iterateJsdoc(({\n context,\n jsdoc,\n utils,\n}) => {\n const {\n allowWhitespace = false,\n preventAtEnd = true,\n preventAtMiddleLines = true,\n } = context.options[0] || {};\n\n const middleAsterisks = allowWhitespace ? middleAsterisksNoBlockWS : middleAsterisksBlockWS;\n\n // eslint-disable-next-line complexity -- Todo\n jsdoc.source.some(({\n tokens,\n number,\n }) => {\n const {\n delimiter,\n tag,\n name,\n type,\n description,\n end,\n postDelimiter,\n } = tokens;\n\n if (\n preventAtMiddleLines &&\n !end && !tag && !type && !name &&\n (\n !allowWhitespace && middleAsterisks.test(description) ||\n allowWhitespace && middleAsterisks.test(postDelimiter + description)\n )\n ) {\n // console.log('description', JSON.stringify(description));\n const fix = () => {\n tokens.description = description.replace(middleAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on middle lines.',\n {\n line: number,\n },\n fix,\n true,\n );\n\n return true;\n }\n\n if (!preventAtEnd || !end) {\n return false;\n }\n\n const isSingleLineBlock = delimiter === '/**';\n const delim = isSingleLineBlock ? '*' : delimiter;\n let endAsterisks;\n if (allowWhitespace) {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineNoBlockWS : endAsterisksMultipleLineNoBlockWS;\n } else {\n endAsterisks = isSingleLineBlock ? endAsterisksSingleLineBlockWS : endAsterisksMultipleLineBlockWS;\n }\n\n const endingAsterisksAndSpaces = (\n allowWhitespace ? postDelimiter + description + delim : description + delim\n ).match(\n endAsterisks,\n );\n\n if (\n !endingAsterisksAndSpaces ||\n !isSingleLineBlock && endingAsterisksAndSpaces[1] && !endingAsterisksAndSpaces[1].trim()\n ) {\n return false;\n }\n\n const endFix = () => {\n if (!isSingleLineBlock) {\n tokens.delimiter = '';\n }\n\n tokens.description = (description + delim).replace(endAsterisks, '');\n };\n\n utils.reportJSDoc(\n 'Should be no multiple asterisks on end lines.',\n {\n line: number,\n },\n endFix,\n true,\n );\n\n return true;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: '',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-multi-asterisks',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n allowWhitespace: {\n type: 'boolean',\n },\n preventAtEnd: {\n type: 'boolean',\n },\n preventAtMiddleLines: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _esquery = _interopRequireDefault(require("esquery"));
|
|
9
|
-
|
|
10
8
|
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
|
|
11
|
-
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
10
|
var _default = (0, _iterateJsdoc.default)(({
|
|
15
11
|
node,
|
|
16
12
|
context,
|
|
@@ -24,7 +20,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
24
20
|
report('Rule `no-restricted-syntax` is missing a `context` option.');
|
|
25
21
|
return;
|
|
26
22
|
}
|
|
27
|
-
|
|
28
23
|
const {
|
|
29
24
|
contexts
|
|
30
25
|
} = context.options[0];
|
|
@@ -34,13 +29,13 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
34
29
|
}) : (!cntxt.context || cntxt.context === 'any' || _esquery.default.matches(node, _esquery.default.parse(cntxt.context), null, {
|
|
35
30
|
visitorKeys: sourceCode.visitorKeys
|
|
36
31
|
})) && comment === cntxt.comment;
|
|
37
|
-
});
|
|
38
|
-
// we need reporting
|
|
32
|
+
});
|
|
39
33
|
|
|
34
|
+
// We are not on the *particular* matching context/comment, so don't assume
|
|
35
|
+
// we need reporting
|
|
40
36
|
if (!foundContext) {
|
|
41
37
|
return;
|
|
42
38
|
}
|
|
43
|
-
|
|
44
39
|
const contextStr = typeof foundContext === 'object' ? foundContext.context ?? 'any' : foundContext;
|
|
45
40
|
const message = (foundContext === null || foundContext === void 0 ? void 0 : foundContext.message) ?? 'Syntax is restricted: {{context}}' + (comment ? ' with {{comment}}' : '');
|
|
46
41
|
report(message, null, null, {
|
|
@@ -87,7 +82,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
87
82
|
type: 'suggestion'
|
|
88
83
|
}
|
|
89
84
|
});
|
|
90
|
-
|
|
91
85
|
exports.default = _default;
|
|
92
86
|
module.exports = exports.default;
|
|
93
87
|
//# sourceMappingURL=noRestrictedSyntax.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noRestrictedSyntax.js","names":["iterateJsdoc","node","context","info","comment","sourceCode","report","options","length","contexts","foundContext","find","cntxt","esquery","matches","parse","visitorKeys","contextStr","message","contextSelected","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","required"],"sources":["../../src/rules/noRestrictedSyntax.js"],"sourcesContent":["import esquery from 'esquery';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n node,\n context,\n info: {\n comment,\n },\n sourceCode,\n report,\n}) => {\n if (!context.options.length) {\n report('Rule `no-restricted-syntax` is missing a `context` option.');\n\n return;\n }\n\n const {\n contexts,\n } = context.options[0];\n\n const foundContext = contexts.find((cntxt) => {\n return typeof cntxt === 'string' ?\n esquery.matches(node, esquery.parse(cntxt), null, {\n visitorKeys: sourceCode.visitorKeys,\n }) :\n (!cntxt.context || cntxt.context === 'any' || esquery.matches(node, esquery.parse(cntxt.context), null, {\n visitorKeys: sourceCode.visitorKeys,\n })) &&\n comment === cntxt.comment;\n });\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const contextStr = typeof foundContext === 'object' ?\n foundContext.context ?? 'any' :\n foundContext;\n const message = foundContext?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, {\n comment,\n context: contextStr,\n });\n}, {\n contextSelected: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are present.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-restricted-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n required: [\n 'contexts',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"noRestrictedSyntax.js","names":["iterateJsdoc","node","context","info","comment","sourceCode","report","options","length","contexts","foundContext","find","cntxt","esquery","matches","parse","visitorKeys","contextStr","message","contextSelected","meta","docs","description","url","fixable","schema","additionalProperties","properties","items","anyOf","type","required"],"sources":["../../src/rules/noRestrictedSyntax.js"],"sourcesContent":["import esquery from 'esquery';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n node,\n context,\n info: {\n comment,\n },\n sourceCode,\n report,\n}) => {\n if (!context.options.length) {\n report('Rule `no-restricted-syntax` is missing a `context` option.');\n\n return;\n }\n\n const {\n contexts,\n } = context.options[0];\n\n const foundContext = contexts.find((cntxt) => {\n return typeof cntxt === 'string' ?\n esquery.matches(node, esquery.parse(cntxt), null, {\n visitorKeys: sourceCode.visitorKeys,\n }) :\n (!cntxt.context || cntxt.context === 'any' || esquery.matches(node, esquery.parse(cntxt.context), null, {\n visitorKeys: sourceCode.visitorKeys,\n })) &&\n comment === cntxt.comment;\n });\n\n // We are not on the *particular* matching context/comment, so don't assume\n // we need reporting\n if (!foundContext) {\n return;\n }\n\n const contextStr = typeof foundContext === 'object' ?\n foundContext.context ?? 'any' :\n foundContext;\n const message = foundContext?.message ??\n 'Syntax is restricted: {{context}}' +\n (comment ? ' with {{comment}}' : '');\n\n report(message, null, null, {\n comment,\n context: contextStr,\n });\n}, {\n contextSelected: true,\n meta: {\n docs: {\n description: 'Reports when certain comment structures are present.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-restricted-syntax',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n required: [\n 'contexts',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AACA;AAA2C;AAAA,eAE5B,IAAAA,qBAAY,EAAC,CAAC;EAC3BC,IAAI;EACJC,OAAO;EACPC,IAAI,EAAE;IACJC;EACF,CAAC;EACDC,UAAU;EACVC;AACF,CAAC,KAAK;EACJ,IAAI,CAACJ,OAAO,CAACK,OAAO,CAACC,MAAM,EAAE;IAC3BF,MAAM,CAAC,4DAA4D,CAAC;IAEpE;EACF;EAEA,MAAM;IACJG;EACF,CAAC,GAAGP,OAAO,CAACK,OAAO,CAAC,CAAC,CAAC;EAEtB,MAAMG,YAAY,GAAGD,QAAQ,CAACE,IAAI,CAAEC,KAAK,IAAK;IAC5C,OAAO,OAAOA,KAAK,KAAK,QAAQ,GAC9BC,gBAAO,CAACC,OAAO,CAACb,IAAI,EAAEY,gBAAO,CAACE,KAAK,CAACH,KAAK,CAAC,EAAE,IAAI,EAAE;MAChDI,WAAW,EAAEX,UAAU,CAACW;IAC1B,CAAC,CAAC,GACF,CAAC,CAACJ,KAAK,CAACV,OAAO,IAAIU,KAAK,CAACV,OAAO,KAAK,KAAK,IAAIW,gBAAO,CAACC,OAAO,CAACb,IAAI,EAAEY,gBAAO,CAACE,KAAK,CAACH,KAAK,CAACV,OAAO,CAAC,EAAE,IAAI,EAAE;MACtGc,WAAW,EAAEX,UAAU,CAACW;IAC1B,CAAC,CAAC,KACAZ,OAAO,KAAKQ,KAAK,CAACR,OAAO;EAC/B,CAAC,CAAC;;EAEF;EACA;EACA,IAAI,CAACM,YAAY,EAAE;IACjB;EACF;EAEA,MAAMO,UAAU,GAAG,OAAOP,YAAY,KAAK,QAAQ,GACjDA,YAAY,CAACR,OAAO,IAAI,KAAK,GAC7BQ,YAAY;EACd,MAAMQ,OAAO,GAAG,CAAAR,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEQ,OAAO,KACnC,mCAAmC,IAChCd,OAAO,GAAG,mBAAmB,GAAG,EAAE,CAAC;EAExCE,MAAM,CAACY,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;IAC1Bd,OAAO;IACPF,OAAO,EAAEe;EACX,CAAC,CAAC;AACJ,CAAC,EAAE;EACDE,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,sDAAsD;MACnEC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVlB,QAAQ,EAAE;UACRmB,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YACR,CAAC,EACD;cACEJ,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVvB,OAAO,EAAE;kBACP0B,IAAI,EAAE;gBACR,CAAC;gBACD5B,OAAO,EAAE;kBACP4B,IAAI,EAAE;gBACR,CAAC;gBACDZ,OAAO,EAAE;kBACPY,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDC,QAAQ,EAAE,CACR,UAAU,CACX;MACDD,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
|
package/dist/rules/noTypes.js
CHANGED
|
@@ -4,27 +4,21 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
const removeType = ({
|
|
13
10
|
tokens
|
|
14
11
|
}) => {
|
|
15
12
|
tokens.postTag = '';
|
|
16
13
|
tokens.type = '';
|
|
17
14
|
};
|
|
18
|
-
|
|
19
15
|
var _default = (0, _iterateJsdoc.default)(({
|
|
20
16
|
utils
|
|
21
17
|
}) => {
|
|
22
18
|
if (!utils.isIteratingFunction() && !utils.isVirtualFunction()) {
|
|
23
19
|
return;
|
|
24
20
|
}
|
|
25
|
-
|
|
26
21
|
const tags = utils.getPresentTags(['param', 'arg', 'argument', 'returns', 'return']);
|
|
27
|
-
|
|
28
22
|
for (const tag of tags) {
|
|
29
23
|
if (tag.type) {
|
|
30
24
|
utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {
|
|
@@ -70,7 +64,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
70
64
|
type: 'suggestion'
|
|
71
65
|
}
|
|
72
66
|
});
|
|
73
|
-
|
|
74
67
|
exports.default = _default;
|
|
75
68
|
module.exports = exports.default;
|
|
76
69
|
//# sourceMappingURL=noTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noTypes.js","names":["removeType","tokens","postTag","type","iterateJsdoc","utils","isIteratingFunction","isVirtualFunction","tags","getPresentTags","tag","reportJSDoc","source","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","context"],"sources":["../../src/rules/noTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst removeType = ({\n tokens,\n}) => {\n tokens.postTag = '';\n tokens.type = '';\n};\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n if (!utils.isIteratingFunction() && !utils.isVirtualFunction()) {\n return;\n }\n\n const tags = utils.getPresentTags([\n 'param', 'arg', 'argument', 'returns', 'return',\n ]);\n\n for (const tag of tags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"noTypes.js","names":["removeType","tokens","postTag","type","iterateJsdoc","utils","isIteratingFunction","isVirtualFunction","tags","getPresentTags","tag","reportJSDoc","source","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","contexts","items","anyOf","comment","context"],"sources":["../../src/rules/noTypes.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst removeType = ({\n tokens,\n}) => {\n tokens.postTag = '';\n tokens.type = '';\n};\n\nexport default iterateJsdoc(({\n utils,\n}) => {\n if (!utils.isIteratingFunction() && !utils.isVirtualFunction()) {\n return;\n }\n\n const tags = utils.getPresentTags([\n 'param', 'arg', 'argument', 'returns', 'return',\n ]);\n\n for (const tag of tags) {\n if (tag.type) {\n utils.reportJSDoc(`Types are not permitted on @${tag.tag}.`, tag, () => {\n for (const source of tag.source) {\n removeType(source);\n }\n });\n }\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'This rule reports types being used on `@param` or `@returns`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-types',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAE3C,MAAMA,UAAU,GAAG,CAAC;EAClBC;AACF,CAAC,KAAK;EACJA,MAAM,CAACC,OAAO,GAAG,EAAE;EACnBD,MAAM,CAACE,IAAI,GAAG,EAAE;AAClB,CAAC;AAAC,eAEa,IAAAC,qBAAY,EAAC,CAAC;EAC3BC;AACF,CAAC,KAAK;EACJ,IAAI,CAACA,KAAK,CAACC,mBAAmB,EAAE,IAAI,CAACD,KAAK,CAACE,iBAAiB,EAAE,EAAE;IAC9D;EACF;EAEA,MAAMC,IAAI,GAAGH,KAAK,CAACI,cAAc,CAAC,CAChC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAChD,CAAC;EAEF,KAAK,MAAMC,GAAG,IAAIF,IAAI,EAAE;IACtB,IAAIE,GAAG,CAACP,IAAI,EAAE;MACZE,KAAK,CAACM,WAAW,CAAE,+BAA8BD,GAAG,CAACA,GAAI,GAAE,EAAEA,GAAG,EAAE,MAAM;QACtE,KAAK,MAAME,MAAM,IAAIF,GAAG,CAACE,MAAM,EAAE;UAC/BZ,UAAU,CAACY,MAAM,CAAC;QACpB;MACF,CAAC,CAAC;IACJ;EACF;AACF,CAAC,EAAE;EACDC,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,+DAA+D;MAC5EC,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACErB,IAAI,EAAE;YACR,CAAC,EACD;cACEiB,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVI,OAAO,EAAE;kBACPtB,IAAI,EAAE;gBACR,CAAC;gBACDuB,OAAO,EAAE;kBACPvB,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
|
|
@@ -4,27 +4,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _jsdoccomment = require("@es-joy/jsdoccomment");
|
|
9
|
-
|
|
10
8
|
var _iterateJsdoc = _interopRequireWildcard(require("../iterateJsdoc"));
|
|
11
|
-
|
|
12
9
|
var _jsdocUtils = _interopRequireDefault(require("../jsdocUtils"));
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
|
-
|
|
18
12
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
const extraTypes = ['null', 'undefined', 'void', 'string', 'boolean', 'object', 'function', 'symbol', 'number', 'bigint', 'NaN', 'Infinity', 'any', '*', 'never', 'unknown', 'const', 'this', 'true', 'false', 'Array', 'Object', 'RegExp', 'Date', 'Function'];
|
|
19
14
|
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
// https://www.typescriptlang.org/docs/handbook/utility-types.html
|
|
22
16
|
const typescriptGlobals = ['Partial', 'Required', 'Readonly', 'Record', 'Pick', 'Omit', 'Exclude', 'Extract', 'NonNullable', 'Parameters', 'ConstructorParameters', 'ReturnType', 'InstanceType', 'ThisParameterType', 'OmitThisParameter', 'ThisType', 'Uppercase', 'Lowercase', 'Capitalize', 'Uncapitalize'];
|
|
23
|
-
|
|
24
17
|
const stripPseudoTypes = str => {
|
|
25
18
|
return str && str.replace(/(?:\.|<>|\.<>|\[\])$/u, '');
|
|
26
19
|
};
|
|
27
|
-
|
|
28
20
|
var _default = (0, _iterateJsdoc.default)(({
|
|
29
21
|
context,
|
|
30
22
|
node,
|
|
@@ -34,7 +26,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
34
26
|
utils
|
|
35
27
|
}) => {
|
|
36
28
|
var _globalScope$childSco, _globalScope$childSco2;
|
|
37
|
-
|
|
38
29
|
const {
|
|
39
30
|
scopeManager
|
|
40
31
|
} = sourceCode;
|
|
@@ -50,28 +41,23 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
50
41
|
structuredTags,
|
|
51
42
|
mode
|
|
52
43
|
} = settings;
|
|
53
|
-
|
|
54
44
|
if (Object.keys(preferredTypes).length) {
|
|
55
45
|
definedPreferredTypes = Object.values(preferredTypes).map(preferredType => {
|
|
56
46
|
if (typeof preferredType === 'string') {
|
|
57
47
|
// May become an empty string but will be filtered out below
|
|
58
48
|
return stripPseudoTypes(preferredType);
|
|
59
49
|
}
|
|
60
|
-
|
|
61
50
|
if (!preferredType) {
|
|
62
51
|
return undefined;
|
|
63
52
|
}
|
|
64
|
-
|
|
65
53
|
if (typeof preferredType !== 'object') {
|
|
66
54
|
utils.reportSettings('Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.');
|
|
67
55
|
}
|
|
68
|
-
|
|
69
56
|
return stripPseudoTypes(preferredType.replacement);
|
|
70
57
|
}).filter(preferredType => {
|
|
71
58
|
return preferredType;
|
|
72
59
|
});
|
|
73
60
|
}
|
|
74
|
-
|
|
75
61
|
const typedefDeclarations = context.getAllComments().filter(comment => {
|
|
76
62
|
return /^\*\s/u.test(comment.value);
|
|
77
63
|
}).map(commentNode => {
|
|
@@ -86,44 +72,43 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
86
72
|
return tag.name;
|
|
87
73
|
});
|
|
88
74
|
const ancestorNodes = [];
|
|
89
|
-
let currentNode = node;
|
|
90
|
-
|
|
75
|
+
let currentNode = node;
|
|
76
|
+
// No need for Program node?
|
|
91
77
|
while ((_currentNode = currentNode) !== null && _currentNode !== void 0 && _currentNode.parent) {
|
|
92
78
|
var _currentNode;
|
|
93
|
-
|
|
94
79
|
ancestorNodes.push(currentNode);
|
|
95
80
|
currentNode = currentNode.parent;
|
|
96
81
|
}
|
|
97
|
-
|
|
98
82
|
const getTemplateTags = function (ancestorNode) {
|
|
99
83
|
const commentNode = (0, _jsdoccomment.getJSDocComment)(sourceCode, ancestorNode, settings);
|
|
100
|
-
|
|
101
84
|
if (!commentNode) {
|
|
102
85
|
return [];
|
|
103
86
|
}
|
|
104
|
-
|
|
105
87
|
const jsdoc = (0, _iterateJsdoc.parseComment)(commentNode, '');
|
|
106
88
|
return _jsdocUtils.default.filterTags(jsdoc.tags, tag => {
|
|
107
89
|
return tag.tag === 'template';
|
|
108
90
|
});
|
|
109
|
-
};
|
|
110
|
-
// we look to present tags instead
|
|
111
|
-
|
|
91
|
+
};
|
|
112
92
|
|
|
93
|
+
// `currentScope` may be `null` or `Program`, so in such a case,
|
|
94
|
+
// we look to present tags instead
|
|
113
95
|
const templateTags = ancestorNodes.length ? ancestorNodes.flatMap(ancestorNode => {
|
|
114
96
|
return getTemplateTags(ancestorNode);
|
|
115
97
|
}) : utils.getPresentTags('template');
|
|
116
98
|
const closureGenericTypes = templateTags.flatMap(tag => {
|
|
117
99
|
return utils.parseClosureTemplateTag(tag);
|
|
118
|
-
});
|
|
119
|
-
// Program scope inside
|
|
100
|
+
});
|
|
120
101
|
|
|
102
|
+
// In modules, including Node, there is a global scope at top with the
|
|
103
|
+
// Program scope inside
|
|
121
104
|
const cjsOrESMScope = ((_globalScope$childSco = globalScope.childScopes[0]) === null || _globalScope$childSco === void 0 ? void 0 : (_globalScope$childSco2 = _globalScope$childSco.block) === null || _globalScope$childSco2 === void 0 ? void 0 : _globalScope$childSco2.type) === 'Program';
|
|
122
105
|
const allDefinedTypes = new Set(globalScope.variables.map(({
|
|
123
106
|
name
|
|
124
107
|
}) => {
|
|
125
108
|
return name;
|
|
126
|
-
})
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
// If the file is a module, concat the variables from the module scope.
|
|
127
112
|
.concat(cjsOrESMScope ? globalScope.childScopes.flatMap(({
|
|
128
113
|
variables
|
|
129
114
|
}) => {
|
|
@@ -138,26 +123,21 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
138
123
|
}) => {
|
|
139
124
|
return utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');
|
|
140
125
|
});
|
|
141
|
-
|
|
142
126
|
for (const tag of jsdocTagsWithPossibleType) {
|
|
143
127
|
let parsedType;
|
|
144
|
-
|
|
145
128
|
try {
|
|
146
129
|
parsedType = mode === 'permissive' ? (0, _jsdoccomment.tryParse)(tag.type) : (0, _jsdoccomment.parse)(tag.type, mode);
|
|
147
130
|
} catch {
|
|
148
131
|
// On syntax error, will be handled by valid-types.
|
|
149
132
|
continue;
|
|
150
133
|
}
|
|
151
|
-
|
|
152
134
|
(0, _jsdoccomment.traverse)(parsedType, ({
|
|
153
135
|
type,
|
|
154
136
|
value
|
|
155
137
|
}) => {
|
|
156
138
|
if (type === 'JsdocTypeName') {
|
|
157
139
|
var _structuredTags$tag$t;
|
|
158
|
-
|
|
159
140
|
const structuredTypes = (_structuredTags$tag$t = structuredTags[tag.tag]) === null || _structuredTags$tag$t === void 0 ? void 0 : _structuredTags$tag$t.type;
|
|
160
|
-
|
|
161
141
|
if (!allDefinedTypes.has(value) && (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))) {
|
|
162
142
|
report(`The type '${value}' is undefined.`, null, tag);
|
|
163
143
|
} else if (!extraTypes.includes(value)) {
|
|
@@ -188,7 +168,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
188
168
|
type: 'suggestion'
|
|
189
169
|
}
|
|
190
170
|
});
|
|
191
|
-
|
|
192
171
|
exports.default = _default;
|
|
193
172
|
module.exports = exports.default;
|
|
194
173
|
//# sourceMappingURL=noUndefinedTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"noUndefinedTypes.js","names":["extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","iterateJsdoc","context","node","report","settings","sourceCode","utils","scopeManager","globalScope","definedTypes","options","definedPreferredTypes","preferredTypes","structuredTags","mode","Object","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","test","value","commentNode","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","ancestorNodes","currentNode","parent","push","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","jsdocUtils","filterTags","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","type","allDefinedTypes","Set","variables","concat","jsdocTagsWithPossibleType","tagMightHaveTypePosition","parsedType","tryParseType","parseType","traverse","structuredTypes","has","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import {\n getJSDocComment,\n\n traverse,\n parse as parseType,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\n// https://www.typescriptlang.org/docs/handbook/utility-types.html\nconst typescriptGlobals = [\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n const {\n globalScope,\n } = scopeManager;\n\n const {\n definedTypes = [],\n } = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = context.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n })\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdocUtils.filterTags(jsdoc.tags, (tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags('template');\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).map(({\n name,\n }) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n const jsdocTagsWithPossibleType = utils.filterTags(({\n tag,\n }) => {\n return utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n });\n\n for (const tag of jsdocTagsWithPossibleType) {\n let parsedType;\n\n try {\n parsedType = mode === 'permissive' ? tryParseType(tag.type) : parseType(tag.type, mode);\n } catch {\n // On syntax error, will be handled by valid-types.\n continue;\n }\n\n traverse(parsedType, ({\n type,\n value,\n }) => {\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n report(`The type '${value}' is undefined.`, null, tag);\n } else if (!extraTypes.includes(value)) {\n context.markVariableAsUsed(value);\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-undefined-types',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"noUndefinedTypes.js","names":["extraTypes","typescriptGlobals","stripPseudoTypes","str","replace","iterateJsdoc","context","node","report","settings","sourceCode","utils","scopeManager","globalScope","definedTypes","options","definedPreferredTypes","preferredTypes","structuredTags","mode","Object","keys","length","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","test","value","commentNode","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","ancestorNodes","currentNode","parent","push","getTemplateTags","ancestorNode","getJSDocComment","jsdoc","jsdocUtils","filterTags","templateTags","getPresentTags","closureGenericTypes","parseClosureTemplateTag","cjsOrESMScope","childScopes","block","type","allDefinedTypes","Set","variables","concat","jsdocTagsWithPossibleType","tagMightHaveTypePosition","parsedType","tryParseType","parseType","traverse","structuredTypes","has","Array","isArray","includes","markVariableAsUsed","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items"],"sources":["../../src/rules/noUndefinedTypes.js"],"sourcesContent":["import {\n getJSDocComment,\n\n traverse,\n parse as parseType,\n tryParse as tryParseType,\n} from '@es-joy/jsdoccomment';\nimport iterateJsdoc, {\n parseComment,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'boolean', 'object',\n 'function', 'symbol',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*', 'never', 'unknown', 'const',\n 'this', 'true', 'false',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\n// https://www.typescriptlang.org/docs/handbook/utility-types.html\nconst typescriptGlobals = [\n 'Partial',\n 'Required',\n 'Readonly',\n 'Record',\n 'Pick',\n 'Omit',\n 'Exclude',\n 'Extract',\n 'NonNullable',\n 'Parameters',\n 'ConstructorParameters',\n 'ReturnType',\n 'InstanceType',\n 'ThisParameterType',\n 'OmitThisParameter',\n 'ThisType',\n 'Uppercase',\n 'Lowercase',\n 'Capitalize',\n 'Uncapitalize',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[\\])$/u, '');\n};\n\nexport default iterateJsdoc(({\n context,\n node,\n report,\n settings,\n sourceCode,\n utils,\n}) => {\n const {\n scopeManager,\n } = sourceCode;\n const {\n globalScope,\n } = scopeManager;\n\n const {\n definedTypes = [],\n } = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {\n preferredTypes,\n structuredTags,\n mode,\n } = settings;\n if (Object.keys(preferredTypes).length) {\n definedPreferredTypes = Object.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n\n if (!preferredType) {\n return undefined;\n }\n\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n })\n .filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = context.getAllComments()\n .filter((comment) => {\n return (/^\\*\\s/u).test(comment.value);\n })\n .map((commentNode) => {\n return parseComment(commentNode, '');\n })\n .flatMap((doc) => {\n return doc.tags.filter(({\n tag,\n }) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n });\n\n const ancestorNodes = [];\n\n let currentNode = node;\n // No need for Program node?\n while (currentNode?.parent) {\n ancestorNodes.push(currentNode);\n currentNode = currentNode.parent;\n }\n\n const getTemplateTags = function (ancestorNode) {\n const commentNode = getJSDocComment(sourceCode, ancestorNode, settings);\n if (!commentNode) {\n return [];\n }\n\n const jsdoc = parseComment(commentNode, '');\n\n return jsdocUtils.filterTags(jsdoc.tags, (tag) => {\n return tag.tag === 'template';\n });\n };\n\n // `currentScope` may be `null` or `Program`, so in such a case,\n // we look to present tags instead\n const templateTags = ancestorNodes.length ?\n ancestorNodes.flatMap((ancestorNode) => {\n return getTemplateTags(ancestorNode);\n }) :\n utils.getPresentTags('template');\n\n const closureGenericTypes = templateTags.flatMap((tag) => {\n return utils.parseClosureTemplateTag(tag);\n });\n\n // In modules, including Node, there is a global scope at top with the\n // Program scope inside\n const cjsOrESMScope = globalScope.childScopes[0]?.block?.type === 'Program';\n\n const allDefinedTypes = new Set(globalScope.variables.map(({\n name,\n }) => {\n return name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n cjsOrESMScope ?\n globalScope.childScopes.flatMap(({\n variables,\n }) => {\n return variables;\n }).map(({\n name,\n }) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(\n settings.mode === 'jsdoc' ?\n [] :\n [\n ...settings.mode === 'typescript' ? typescriptGlobals : [],\n ...closureGenericTypes,\n ],\n ));\n\n const jsdocTagsWithPossibleType = utils.filterTags(({\n tag,\n }) => {\n return utils.tagMightHaveTypePosition(tag) && (tag !== 'suppress' || settings.mode !== 'closure');\n });\n\n for (const tag of jsdocTagsWithPossibleType) {\n let parsedType;\n\n try {\n parsedType = mode === 'permissive' ? tryParseType(tag.type) : parseType(tag.type, mode);\n } catch {\n // On syntax error, will be handled by valid-types.\n continue;\n }\n\n traverse(parsedType, ({\n type,\n value,\n }) => {\n if (type === 'JsdocTypeName') {\n const structuredTypes = structuredTags[tag.tag]?.type;\n if (!allDefinedTypes.has(value) &&\n (!Array.isArray(structuredTypes) || !structuredTypes.includes(value))\n ) {\n report(`The type '${value}' is undefined.`, null, tag);\n } else if (!extraTypes.includes(value)) {\n context.markVariableAsUsed(value);\n }\n }\n });\n }\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Checks that types in jsdoc comments are defined.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-no-undefined-types',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
var _default = (0, _iterateJsdoc.default)(({
|
|
13
10
|
context,
|
|
14
11
|
jsdoc,
|
|
@@ -29,22 +26,18 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
29
26
|
tokens
|
|
30
27
|
}) => {
|
|
31
28
|
var _tagMap$any2;
|
|
32
|
-
|
|
33
29
|
const {
|
|
34
30
|
delimiter,
|
|
35
31
|
tag,
|
|
36
32
|
end,
|
|
37
33
|
description
|
|
38
34
|
} = tokens;
|
|
39
|
-
|
|
40
35
|
const neverFix = () => {
|
|
41
36
|
tokens.delimiter = '';
|
|
42
37
|
tokens.postDelimiter = '';
|
|
43
38
|
};
|
|
44
|
-
|
|
45
39
|
const checkNever = checkValue => {
|
|
46
40
|
var _tagMap$always, _tagMap$never;
|
|
47
|
-
|
|
48
41
|
if (delimiter && delimiter !== '/**' && (never && !((_tagMap$always = tagMap.always) !== null && _tagMap$always !== void 0 && _tagMap$always.includes(checkValue)) || (_tagMap$never = tagMap.never) !== null && _tagMap$never !== void 0 && _tagMap$never.includes(checkValue))) {
|
|
49
42
|
utils.reportJSDoc('Expected JSDoc line to have no prefix.', {
|
|
50
43
|
column: 0,
|
|
@@ -52,22 +45,17 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
52
45
|
}, neverFix);
|
|
53
46
|
return true;
|
|
54
47
|
}
|
|
55
|
-
|
|
56
48
|
return false;
|
|
57
49
|
};
|
|
58
|
-
|
|
59
50
|
const alwaysFix = () => {
|
|
60
51
|
if (!tokens.start) {
|
|
61
52
|
tokens.start = indent + ' ';
|
|
62
53
|
}
|
|
63
|
-
|
|
64
54
|
tokens.delimiter = '*';
|
|
65
55
|
tokens.postDelimiter = tag || description ? ' ' : '';
|
|
66
56
|
};
|
|
67
|
-
|
|
68
57
|
const checkAlways = checkValue => {
|
|
69
58
|
var _tagMap$never2, _tagMap$always2;
|
|
70
|
-
|
|
71
59
|
if (!delimiter && (always && !((_tagMap$never2 = tagMap.never) !== null && _tagMap$never2 !== void 0 && _tagMap$never2.includes(checkValue)) || (_tagMap$always2 = tagMap.always) !== null && _tagMap$always2 !== void 0 && _tagMap$always2.includes(checkValue))) {
|
|
72
60
|
utils.reportJSDoc('Expected JSDoc line to have the prefix.', {
|
|
73
61
|
column: 0,
|
|
@@ -75,51 +63,40 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
75
63
|
}, alwaysFix);
|
|
76
64
|
return true;
|
|
77
65
|
}
|
|
78
|
-
|
|
79
66
|
return false;
|
|
80
67
|
};
|
|
81
|
-
|
|
82
68
|
if (tag) {
|
|
83
69
|
// Remove at sign
|
|
84
70
|
currentTag = tag.slice(1);
|
|
85
71
|
}
|
|
86
|
-
|
|
87
|
-
|
|
72
|
+
if (
|
|
73
|
+
// If this is the end but has a tag, the delimiter will also be
|
|
88
74
|
// populated and will be safely ignored later
|
|
89
75
|
end && !tag) {
|
|
90
76
|
return false;
|
|
91
77
|
}
|
|
92
|
-
|
|
93
78
|
if (!currentTag) {
|
|
94
79
|
var _tagMap$any;
|
|
95
|
-
|
|
96
80
|
if ((_tagMap$any = tagMap.any) !== null && _tagMap$any !== void 0 && _tagMap$any.includes('*description')) {
|
|
97
81
|
return false;
|
|
98
82
|
}
|
|
99
|
-
|
|
100
83
|
if (checkNever('*description')) {
|
|
101
84
|
return true;
|
|
102
85
|
}
|
|
103
|
-
|
|
104
86
|
if (checkAlways('*description')) {
|
|
105
87
|
return true;
|
|
106
88
|
}
|
|
107
|
-
|
|
108
89
|
return false;
|
|
109
90
|
}
|
|
110
|
-
|
|
111
91
|
if ((_tagMap$any2 = tagMap.any) !== null && _tagMap$any2 !== void 0 && _tagMap$any2.includes(currentTag)) {
|
|
112
92
|
return false;
|
|
113
93
|
}
|
|
114
|
-
|
|
115
94
|
if (checkNever(currentTag)) {
|
|
116
95
|
return true;
|
|
117
96
|
}
|
|
118
|
-
|
|
119
97
|
if (checkAlways(currentTag)) {
|
|
120
98
|
return true;
|
|
121
99
|
}
|
|
122
|
-
|
|
123
100
|
return false;
|
|
124
101
|
});
|
|
125
102
|
}, {
|
|
@@ -161,7 +138,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
161
138
|
type: 'layout'
|
|
162
139
|
}
|
|
163
140
|
});
|
|
164
|
-
|
|
165
141
|
exports.default = _default;
|
|
166
142
|
module.exports = exports.default;
|
|
167
143
|
//# sourceMappingURL=requireAsteriskPrefix.js.map
|