eslint-plugin-jsdoc 39.3.5 → 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 +273 -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 +44 -207
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/jsdocUtils.js +72 -221
- 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,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _semver = _interopRequireDefault(require("semver"));
|
|
9
|
-
|
|
10
8
|
var _spdxExpressionParse = _interopRequireDefault(require("spdx-expression-parse"));
|
|
11
|
-
|
|
12
9
|
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
const allowedKinds = new Set(['class', 'constant', 'event', 'external', 'file', 'function', 'member', 'mixin', 'module', 'namespace', 'typedef']);
|
|
17
|
-
|
|
18
12
|
var _default = (0, _iterateJsdoc.default)(({
|
|
19
13
|
utils,
|
|
20
14
|
report,
|
|
@@ -29,7 +23,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
29
23
|
} = options;
|
|
30
24
|
utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {
|
|
31
25
|
const version = utils.getTagDescription(jsdocParameter).trim();
|
|
32
|
-
|
|
33
26
|
if (!version) {
|
|
34
27
|
report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter);
|
|
35
28
|
} else if (!_semver.default.valid(version)) {
|
|
@@ -38,18 +31,15 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
38
31
|
});
|
|
39
32
|
utils.forEachPreferredTag('kind', (jsdocParameter, targetTagName) => {
|
|
40
33
|
const kind = utils.getTagDescription(jsdocParameter).trim();
|
|
41
|
-
|
|
42
34
|
if (!kind) {
|
|
43
35
|
report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter);
|
|
44
36
|
} else if (!allowedKinds.has(kind)) {
|
|
45
37
|
report(`Invalid JSDoc @${targetTagName}: "${utils.getTagDescription(jsdocParameter)}"; ` + `must be one of: ${[...allowedKinds].join(', ')}.`, null, jsdocParameter);
|
|
46
38
|
}
|
|
47
39
|
});
|
|
48
|
-
|
|
49
40
|
if (numericOnlyVariation) {
|
|
50
41
|
utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {
|
|
51
42
|
const variation = utils.getTagDescription(jsdocParameter).trim();
|
|
52
|
-
|
|
53
43
|
if (!variation) {
|
|
54
44
|
report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter);
|
|
55
45
|
} else if (!Number.isInteger(Number(variation)) || Number(variation) <= 0) {
|
|
@@ -57,10 +47,8 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
57
47
|
}
|
|
58
48
|
});
|
|
59
49
|
}
|
|
60
|
-
|
|
61
50
|
utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {
|
|
62
51
|
const version = utils.getTagDescription(jsdocParameter).trim();
|
|
63
|
-
|
|
64
52
|
if (!version) {
|
|
65
53
|
report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter);
|
|
66
54
|
} else if (!_semver.default.valid(version)) {
|
|
@@ -71,20 +59,16 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
71
59
|
const licenseRegex = utils.getRegexFromString(licensePattern, 'g');
|
|
72
60
|
const matches = utils.getTagDescription(jsdocParameter).matchAll(licenseRegex);
|
|
73
61
|
let positiveMatch = false;
|
|
74
|
-
|
|
75
62
|
for (const match of matches) {
|
|
76
63
|
const license = match[1] || match[0];
|
|
77
|
-
|
|
78
64
|
if (license) {
|
|
79
65
|
positiveMatch = true;
|
|
80
66
|
}
|
|
81
|
-
|
|
82
67
|
if (!license.trim()) {
|
|
83
68
|
// Avoid reporting again as empty match
|
|
84
69
|
if (positiveMatch) {
|
|
85
70
|
return;
|
|
86
71
|
}
|
|
87
|
-
|
|
88
72
|
report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter);
|
|
89
73
|
} else if (allowedLicenses) {
|
|
90
74
|
if (allowedLicenses !== true && !allowedLicenses.includes(license)) {
|
|
@@ -101,7 +85,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
101
85
|
});
|
|
102
86
|
utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {
|
|
103
87
|
const author = utils.getTagDescription(jsdocParameter).trim();
|
|
104
|
-
|
|
105
88
|
if (!author) {
|
|
106
89
|
report(`Missing JSDoc @${targetTagName} value.`, null, jsdocParameter);
|
|
107
90
|
} else if (allowedAuthors && !allowedAuthors.includes(author)) {
|
|
@@ -146,7 +129,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
146
129
|
type: 'suggestion'
|
|
147
130
|
}
|
|
148
131
|
});
|
|
149
|
-
|
|
150
132
|
exports.default = _default;
|
|
151
133
|
module.exports = exports.default;
|
|
152
134
|
//# sourceMappingURL=checkValues.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkValues.js","names":["allowedKinds","Set","iterateJsdoc","utils","report","context","options","allowedLicenses","allowedAuthors","numericOnlyVariation","licensePattern","forEachPreferredTag","jsdocParameter","targetTagName","version","getTagDescription","trim","semver","valid","kind","has","join","variation","Number","isInteger","licenseRegex","getRegexFromString","matches","matchAll","positiveMatch","match","license","includes","spdxExpressionParse","author","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","type","anyOf"],"sources":["../../src/rules/checkValues.js"],"sourcesContent":["import semver from 'semver';\nimport spdxExpressionParse from 'spdx-expression-parse';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst allowedKinds = new Set([\n 'class',\n 'constant',\n 'event',\n 'external',\n 'file',\n 'function',\n 'member',\n 'mixin',\n 'module',\n 'namespace',\n 'typedef',\n]);\n\nexport default iterateJsdoc(({\n utils,\n report,\n context,\n}) => {\n const options = context.options[0] || {};\n const {\n allowedLicenses = null,\n allowedAuthors = null,\n numericOnlyVariation = false,\n licensePattern = '/([^\\n\\r]*)/gu',\n } = options;\n\n utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n\n utils.forEachPreferredTag('kind', (jsdocParameter, targetTagName) => {\n const kind = utils.getTagDescription(jsdocParameter).trim();\n if (!kind) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!allowedKinds.has(kind)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; ` +\n `must be one of: ${[\n ...allowedKinds,\n ].join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n\n if (numericOnlyVariation) {\n utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {\n const variation = utils.getTagDescription(jsdocParameter).trim();\n if (!variation) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (\n !Number.isInteger(Number(variation)) ||\n Number(variation) <= 0\n ) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n }\n\n utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {\n const licenseRegex = utils.getRegexFromString(licensePattern, 'g');\n const matches = utils.getTagDescription(jsdocParameter).matchAll(licenseRegex);\n let positiveMatch = false;\n for (const match of matches) {\n const license = match[1] || match[0];\n if (license) {\n positiveMatch = true;\n }\n\n if (!license.trim()) {\n // Avoid reporting again as empty match\n if (positiveMatch) {\n return;\n }\n\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedLicenses) {\n if (allowedLicenses !== true && !allowedLicenses.includes(license)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected one of ${allowedLicenses.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n } else {\n try {\n spdxExpressionParse(license);\n } catch {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected SPDX expression: https://spdx.org/licenses/.`,\n null,\n jsdocParameter,\n );\n }\n }\n }\n });\n\n utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {\n const author = utils.getTagDescription(jsdocParameter).trim();\n if (!author) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedAuthors && !allowedAuthors.includes(author)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; expected one of ${allowedAuthors.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-values',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowedAuthors: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n allowedLicenses: {\n anyOf: [\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n {\n type: 'boolean',\n },\n ],\n },\n licensePattern: {\n type: 'string',\n },\n numericOnlyVariation: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"checkValues.js","names":["allowedKinds","Set","iterateJsdoc","utils","report","context","options","allowedLicenses","allowedAuthors","numericOnlyVariation","licensePattern","forEachPreferredTag","jsdocParameter","targetTagName","version","getTagDescription","trim","semver","valid","kind","has","join","variation","Number","isInteger","licenseRegex","getRegexFromString","matches","matchAll","positiveMatch","match","license","includes","spdxExpressionParse","author","iterateAllJsdocs","meta","docs","description","url","schema","additionalProperties","properties","items","type","anyOf"],"sources":["../../src/rules/checkValues.js"],"sourcesContent":["import semver from 'semver';\nimport spdxExpressionParse from 'spdx-expression-parse';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst allowedKinds = new Set([\n 'class',\n 'constant',\n 'event',\n 'external',\n 'file',\n 'function',\n 'member',\n 'mixin',\n 'module',\n 'namespace',\n 'typedef',\n]);\n\nexport default iterateJsdoc(({\n utils,\n report,\n context,\n}) => {\n const options = context.options[0] || {};\n const {\n allowedLicenses = null,\n allowedAuthors = null,\n numericOnlyVariation = false,\n licensePattern = '/([^\\n\\r]*)/gu',\n } = options;\n\n utils.forEachPreferredTag('version', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n\n utils.forEachPreferredTag('kind', (jsdocParameter, targetTagName) => {\n const kind = utils.getTagDescription(jsdocParameter).trim();\n if (!kind) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!allowedKinds.has(kind)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; ` +\n `must be one of: ${[\n ...allowedKinds,\n ].join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n\n if (numericOnlyVariation) {\n utils.forEachPreferredTag('variation', (jsdocParameter, targetTagName) => {\n const variation = utils.getTagDescription(jsdocParameter).trim();\n if (!variation) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (\n !Number.isInteger(Number(variation)) ||\n Number(variation) <= 0\n ) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n }\n\n utils.forEachPreferredTag('since', (jsdocParameter, targetTagName) => {\n const version = utils.getTagDescription(jsdocParameter).trim();\n if (!version) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (!semver.valid(version)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\".`,\n null,\n jsdocParameter,\n );\n }\n });\n utils.forEachPreferredTag('license', (jsdocParameter, targetTagName) => {\n const licenseRegex = utils.getRegexFromString(licensePattern, 'g');\n const matches = utils.getTagDescription(jsdocParameter).matchAll(licenseRegex);\n let positiveMatch = false;\n for (const match of matches) {\n const license = match[1] || match[0];\n if (license) {\n positiveMatch = true;\n }\n\n if (!license.trim()) {\n // Avoid reporting again as empty match\n if (positiveMatch) {\n return;\n }\n\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedLicenses) {\n if (allowedLicenses !== true && !allowedLicenses.includes(license)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected one of ${allowedLicenses.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n } else {\n try {\n spdxExpressionParse(license);\n } catch {\n report(\n `Invalid JSDoc @${targetTagName}: \"${license}\"; expected SPDX expression: https://spdx.org/licenses/.`,\n null,\n jsdocParameter,\n );\n }\n }\n }\n });\n\n utils.forEachPreferredTag('author', (jsdocParameter, targetTagName) => {\n const author = utils.getTagDescription(jsdocParameter).trim();\n if (!author) {\n report(\n `Missing JSDoc @${targetTagName} value.`,\n null,\n jsdocParameter,\n );\n } else if (allowedAuthors && !allowedAuthors.includes(author)) {\n report(\n `Invalid JSDoc @${targetTagName}: \"${utils.getTagDescription(jsdocParameter)}\"; expected one of ${allowedAuthors.join(', ')}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'This rule checks the values for a handful of tags: `@version`, `@since`, `@license` and `@author`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-check-values',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowedAuthors: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n allowedLicenses: {\n anyOf: [\n {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n {\n type: 'boolean',\n },\n ],\n },\n licensePattern: {\n type: 'string',\n },\n numericOnlyVariation: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
package/dist/rules/emptyTags.js
CHANGED
|
@@ -4,19 +4,18 @@ 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 defaultEmptyTags = new Set(['abstract', 'async', 'generator', 'global', 'hideconstructor', 'ignore', 'inner', 'instance', 'override', 'readonly',
|
|
10
|
+
// jsdoc doesn't use this form in its docs, but allow for compatibility with
|
|
13
11
|
// TypeScript which allows and Closure which requires
|
|
14
|
-
'inheritDoc',
|
|
12
|
+
'inheritDoc',
|
|
13
|
+
// jsdoc doesn't use but allow for TypeScript
|
|
15
14
|
'internal']);
|
|
16
|
-
const emptyIfNotClosure = new Set(['package', 'private', 'protected', 'public', 'static',
|
|
15
|
+
const emptyIfNotClosure = new Set(['package', 'private', 'protected', 'public', 'static',
|
|
16
|
+
// Closure doesn't allow with this casing
|
|
17
17
|
'inheritdoc']);
|
|
18
18
|
const emptyIfClosure = new Set(['interface']);
|
|
19
|
-
|
|
20
19
|
var _default = (0, _iterateJsdoc.default)(({
|
|
21
20
|
settings,
|
|
22
21
|
jsdoc,
|
|
@@ -31,15 +30,12 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
31
30
|
return tag === tagName;
|
|
32
31
|
}) || settings.mode === 'closure' && emptyIfClosure.has(tagName) || settings.mode !== 'closure' && emptyIfNotClosure.has(tagName);
|
|
33
32
|
});
|
|
34
|
-
|
|
35
33
|
for (const tag of emptyTags) {
|
|
36
34
|
const content = tag.name || tag.description || tag.type;
|
|
37
|
-
|
|
38
35
|
if (content.trim()) {
|
|
39
36
|
const fix = () => {
|
|
40
37
|
utils.setTag(tag);
|
|
41
38
|
};
|
|
42
|
-
|
|
43
39
|
utils.reportJSDoc(`@${tag.tag} should be empty.`, tag, fix, true);
|
|
44
40
|
}
|
|
45
41
|
}
|
|
@@ -68,7 +64,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
68
64
|
type: 'suggestion'
|
|
69
65
|
}
|
|
70
66
|
});
|
|
71
|
-
|
|
72
67
|
exports.default = _default;
|
|
73
68
|
module.exports = exports.default;
|
|
74
69
|
//# sourceMappingURL=emptyTags.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emptyTags.js","names":["defaultEmptyTags","Set","emptyIfNotClosure","emptyIfClosure","iterateJsdoc","settings","jsdoc","utils","emptyTags","filterTags","tag","tagName","has","hasOptionTag","tags","some","mode","content","name","description","type","trim","fix","setTag","reportJSDoc","checkInternal","checkPrivate","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items"],"sources":["../../src/rules/emptyTags.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst defaultEmptyTags = new Set([\n 'abstract', 'async', 'generator', 'global', 'hideconstructor',\n 'ignore', 'inner', 'instance', 'override', 'readonly',\n\n // jsdoc doesn't use this form in its docs, but allow for compatibility with\n // TypeScript which allows and Closure which requires\n 'inheritDoc',\n\n // jsdoc doesn't use but allow for TypeScript\n 'internal',\n]);\n\nconst emptyIfNotClosure = new Set([\n 'package', 'private', 'protected', 'public', 'static',\n\n // Closure doesn't allow with this casing\n 'inheritdoc',\n]);\n\nconst emptyIfClosure = new Set([\n 'interface',\n]);\n\nexport default iterateJsdoc(({\n settings,\n jsdoc,\n utils,\n}) => {\n const emptyTags = utils.filterTags(({\n tag: tagName,\n }) => {\n return defaultEmptyTags.has(tagName) ||\n utils.hasOptionTag(tagName) && jsdoc.tags.some(({\n tag,\n }) => {\n return tag === tagName;\n }) ||\n settings.mode === 'closure' && emptyIfClosure.has(tagName) ||\n settings.mode !== 'closure' && emptyIfNotClosure.has(tagName);\n });\n for (const tag of emptyTags) {\n const content = tag.name || tag.description || tag.type;\n if (content.trim()) {\n const fix = () => {\n utils.setTag(tag);\n };\n\n utils.reportJSDoc(`@${tag.tag} should be empty.`, tag, fix, true);\n }\n }\n}, {\n checkInternal: true,\n checkPrivate: true,\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Expects specific tags to be empty of any content.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-empty-tags',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"emptyTags.js","names":["defaultEmptyTags","Set","emptyIfNotClosure","emptyIfClosure","iterateJsdoc","settings","jsdoc","utils","emptyTags","filterTags","tag","tagName","has","hasOptionTag","tags","some","mode","content","name","description","type","trim","fix","setTag","reportJSDoc","checkInternal","checkPrivate","iterateAllJsdocs","meta","docs","url","fixable","schema","additionalProperties","properties","items"],"sources":["../../src/rules/emptyTags.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst defaultEmptyTags = new Set([\n 'abstract', 'async', 'generator', 'global', 'hideconstructor',\n 'ignore', 'inner', 'instance', 'override', 'readonly',\n\n // jsdoc doesn't use this form in its docs, but allow for compatibility with\n // TypeScript which allows and Closure which requires\n 'inheritDoc',\n\n // jsdoc doesn't use but allow for TypeScript\n 'internal',\n]);\n\nconst emptyIfNotClosure = new Set([\n 'package', 'private', 'protected', 'public', 'static',\n\n // Closure doesn't allow with this casing\n 'inheritdoc',\n]);\n\nconst emptyIfClosure = new Set([\n 'interface',\n]);\n\nexport default iterateJsdoc(({\n settings,\n jsdoc,\n utils,\n}) => {\n const emptyTags = utils.filterTags(({\n tag: tagName,\n }) => {\n return defaultEmptyTags.has(tagName) ||\n utils.hasOptionTag(tagName) && jsdoc.tags.some(({\n tag,\n }) => {\n return tag === tagName;\n }) ||\n settings.mode === 'closure' && emptyIfClosure.has(tagName) ||\n settings.mode !== 'closure' && emptyIfNotClosure.has(tagName);\n });\n for (const tag of emptyTags) {\n const content = tag.name || tag.description || tag.type;\n if (content.trim()) {\n const fix = () => {\n utils.setTag(tag);\n };\n\n utils.reportJSDoc(`@${tag.tag} should be empty.`, tag, fix, true);\n }\n }\n}, {\n checkInternal: true,\n checkPrivate: true,\n iterateAllJsdocs: true,\n meta: {\n docs: {\n description: 'Expects specific tags to be empty of any content.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-empty-tags',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAE3C,MAAMA,gBAAgB,GAAG,IAAIC,GAAG,CAAC,CAC/B,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAC7D,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;AAErD;AACA;AACA,YAAY;AAEZ;AACA,UAAU,CACX,CAAC;AAEF,MAAMC,iBAAiB,GAAG,IAAID,GAAG,CAAC,CAChC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ;AAErD;AACA,YAAY,CACb,CAAC;AAEF,MAAME,cAAc,GAAG,IAAIF,GAAG,CAAC,CAC7B,WAAW,CACZ,CAAC;AAAC,eAEY,IAAAG,qBAAY,EAAC,CAAC;EAC3BC,QAAQ;EACRC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAMC,SAAS,GAAGD,KAAK,CAACE,UAAU,CAAC,CAAC;IAClCC,GAAG,EAAEC;EACP,CAAC,KAAK;IACJ,OAAOX,gBAAgB,CAACY,GAAG,CAACD,OAAO,CAAC,IAClCJ,KAAK,CAACM,YAAY,CAACF,OAAO,CAAC,IAAIL,KAAK,CAACQ,IAAI,CAACC,IAAI,CAAC,CAAC;MAC9CL;IACF,CAAC,KAAK;MACJ,OAAOA,GAAG,KAAKC,OAAO;IACxB,CAAC,CAAC,IACFN,QAAQ,CAACW,IAAI,KAAK,SAAS,IAAIb,cAAc,CAACS,GAAG,CAACD,OAAO,CAAC,IAC1DN,QAAQ,CAACW,IAAI,KAAK,SAAS,IAAId,iBAAiB,CAACU,GAAG,CAACD,OAAO,CAAC;EACjE,CAAC,CAAC;EACF,KAAK,MAAMD,GAAG,IAAIF,SAAS,EAAE;IAC3B,MAAMS,OAAO,GAAGP,GAAG,CAACQ,IAAI,IAAIR,GAAG,CAACS,WAAW,IAAIT,GAAG,CAACU,IAAI;IACvD,IAAIH,OAAO,CAACI,IAAI,EAAE,EAAE;MAClB,MAAMC,GAAG,GAAG,MAAM;QAChBf,KAAK,CAACgB,MAAM,CAACb,GAAG,CAAC;MACnB,CAAC;MAEDH,KAAK,CAACiB,WAAW,CAAE,IAAGd,GAAG,CAACA,GAAI,mBAAkB,EAAEA,GAAG,EAAEY,GAAG,EAAE,IAAI,CAAC;IACnE;EACF;AACF,CAAC,EAAE;EACDG,aAAa,EAAE,IAAI;EACnBC,YAAY,EAAE,IAAI;EAClBC,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJV,WAAW,EAAE,mDAAmD;MAChEW,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVpB,IAAI,EAAE;UACJqB,KAAK,EAAE;YACLf,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
|
|
@@ -4,17 +4,13 @@ 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
|
report,
|
|
14
11
|
utils
|
|
15
12
|
}) => {
|
|
16
13
|
const iteratingFunction = utils.isIteratingFunction();
|
|
17
|
-
|
|
18
14
|
if (iteratingFunction) {
|
|
19
15
|
if (utils.hasATag(['class', 'constructor']) || utils.isConstructor()) {
|
|
20
16
|
return;
|
|
@@ -22,7 +18,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
22
18
|
} else if (!utils.isVirtualFunction()) {
|
|
23
19
|
return;
|
|
24
20
|
}
|
|
25
|
-
|
|
26
21
|
utils.forEachPreferredTag('implements', tag => {
|
|
27
22
|
report('@implements used on a non-constructor function', null, tag);
|
|
28
23
|
});
|
|
@@ -61,7 +56,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
61
56
|
type: 'suggestion'
|
|
62
57
|
}
|
|
63
58
|
});
|
|
64
|
-
|
|
65
59
|
exports.default = _default;
|
|
66
60
|
module.exports = exports.default;
|
|
67
61
|
//# sourceMappingURL=implementsOnClasses.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implementsOnClasses.js","names":["iterateJsdoc","report","utils","iteratingFunction","isIteratingFunction","hasATag","isConstructor","isVirtualFunction","forEachPreferredTag","tag","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","context"],"sources":["../../src/rules/implementsOnClasses.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n const iteratingFunction = utils.isIteratingFunction();\n\n if (iteratingFunction) {\n if (utils.hasATag([\n 'class',\n 'constructor',\n ]) ||\n utils.isConstructor()\n ) {\n return;\n }\n } else if (!utils.isVirtualFunction()) {\n return;\n }\n\n utils.forEachPreferredTag('implements', (tag) => {\n report('@implements used on a non-constructor function', null, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Reports an issue with any non-constructor function using `@implements`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-implements-on-classes',\n },\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":"implementsOnClasses.js","names":["iterateJsdoc","report","utils","iteratingFunction","isIteratingFunction","hasATag","isConstructor","isVirtualFunction","forEachPreferredTag","tag","contextDefaults","meta","docs","description","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","context"],"sources":["../../src/rules/implementsOnClasses.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n const iteratingFunction = utils.isIteratingFunction();\n\n if (iteratingFunction) {\n if (utils.hasATag([\n 'class',\n 'constructor',\n ]) ||\n utils.isConstructor()\n ) {\n return;\n }\n } else if (!utils.isVirtualFunction()) {\n return;\n }\n\n utils.forEachPreferredTag('implements', (tag) => {\n report('@implements used on a non-constructor function', null, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Reports an issue with any non-constructor function using `@implements`.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-implements-on-classes',\n },\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;AAAA,eAE5B,IAAAA,qBAAY,EAAC,CAAC;EAC3BC,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,MAAMC,iBAAiB,GAAGD,KAAK,CAACE,mBAAmB,EAAE;EAErD,IAAID,iBAAiB,EAAE;IACrB,IAAID,KAAK,CAACG,OAAO,CAAC,CAChB,OAAO,EACP,aAAa,CACd,CAAC,IACAH,KAAK,CAACI,aAAa,EAAE,EACrB;MACA;IACF;EACF,CAAC,MAAM,IAAI,CAACJ,KAAK,CAACK,iBAAiB,EAAE,EAAE;IACrC;EACF;EAEAL,KAAK,CAACM,mBAAmB,CAAC,YAAY,EAAGC,GAAG,IAAK;IAC/CR,MAAM,CAAC,gDAAgD,EAAE,IAAI,EAAEQ,GAAG,CAAC;EACrE,CAAC,CAAC;AACJ,CAAC,EAAE;EACDC,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,yEAAyE;MACtFC,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YACR,CAAC,EACD;cACEL,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVK,OAAO,EAAE;kBACPD,IAAI,EAAE;gBACR,CAAC;gBACDE,OAAO,EAAE;kBACPF,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,19 +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
|
// If supporting Node >= 10, we could loosen the default to this for the
|
|
13
10
|
// initial letter: \\p{Upper}
|
|
14
11
|
const matchDescriptionDefault = '^\n?([A-Z`\\d_][\\s\\S]*[.?!`]\\s*)?$';
|
|
15
|
-
|
|
16
12
|
const stringOrDefault = (value, userDefault) => {
|
|
17
13
|
return typeof value === 'string' ? value : userDefault || matchDescriptionDefault;
|
|
18
14
|
};
|
|
19
|
-
|
|
20
15
|
var _default = (0, _iterateJsdoc.default)(({
|
|
21
16
|
jsdoc,
|
|
22
17
|
report,
|
|
@@ -29,25 +24,19 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
29
24
|
message,
|
|
30
25
|
tags
|
|
31
26
|
} = context.options[0] || {};
|
|
32
|
-
|
|
33
27
|
const validateDescription = (desc, tag) => {
|
|
34
28
|
let mainDescriptionMatch = mainDescription;
|
|
35
29
|
let errorMessage = message;
|
|
36
|
-
|
|
37
30
|
if (typeof mainDescription === 'object') {
|
|
38
31
|
mainDescriptionMatch = mainDescription.match;
|
|
39
32
|
errorMessage = mainDescription.message;
|
|
40
33
|
}
|
|
41
|
-
|
|
42
34
|
if (mainDescriptionMatch === false && (!tag || !Object.prototype.hasOwnProperty.call(tags, tag.tag))) {
|
|
43
35
|
return;
|
|
44
36
|
}
|
|
45
|
-
|
|
46
37
|
let tagValue = mainDescriptionMatch;
|
|
47
|
-
|
|
48
38
|
if (tag) {
|
|
49
39
|
const tagName = tag.tag;
|
|
50
|
-
|
|
51
40
|
if (typeof tags[tagName] === 'object') {
|
|
52
41
|
tagValue = tags[tagName].match;
|
|
53
42
|
errorMessage = tags[tagName].message;
|
|
@@ -55,9 +44,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
55
44
|
tagValue = tags[tagName];
|
|
56
45
|
}
|
|
57
46
|
}
|
|
58
|
-
|
|
59
47
|
const regex = utils.getRegexFromString(stringOrDefault(tagValue, matchDescription));
|
|
60
|
-
|
|
61
48
|
if (!regex.test(desc)) {
|
|
62
49
|
report(errorMessage || 'JSDoc description does not satisfy the regex pattern.', null, tag || {
|
|
63
50
|
// Add one as description would typically be into block
|
|
@@ -65,26 +52,20 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
65
52
|
});
|
|
66
53
|
}
|
|
67
54
|
};
|
|
68
|
-
|
|
69
55
|
const {
|
|
70
56
|
description
|
|
71
57
|
} = utils.getDescription();
|
|
72
|
-
|
|
73
58
|
if (description) {
|
|
74
59
|
validateDescription(description);
|
|
75
60
|
}
|
|
76
|
-
|
|
77
61
|
if (!tags || !Object.keys(tags).length) {
|
|
78
62
|
return;
|
|
79
63
|
}
|
|
80
|
-
|
|
81
64
|
const hasOptionTag = tagName => {
|
|
82
65
|
return Boolean(tags[tagName]);
|
|
83
66
|
};
|
|
84
|
-
|
|
85
67
|
utils.forEachPreferredTag('description', (matchingJsdocTag, targetTagName) => {
|
|
86
68
|
const desc = (matchingJsdocTag.name + ' ' + utils.getTagDescription(matchingJsdocTag)).trim();
|
|
87
|
-
|
|
88
69
|
if (hasOptionTag(targetTagName)) {
|
|
89
70
|
validateDescription(desc, matchingJsdocTag);
|
|
90
71
|
}
|
|
@@ -203,7 +184,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
203
184
|
type: 'suggestion'
|
|
204
185
|
}
|
|
205
186
|
});
|
|
206
|
-
|
|
207
187
|
exports.default = _default;
|
|
208
188
|
module.exports = exports.default;
|
|
209
189
|
//# sourceMappingURL=matchDescription.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchDescription.js","names":["matchDescriptionDefault","stringOrDefault","value","userDefault","iterateJsdoc","jsdoc","report","context","utils","mainDescription","matchDescription","message","tags","options","validateDescription","desc","tag","mainDescriptionMatch","errorMessage","match","Object","prototype","hasOwnProperty","call","tagValue","tagName","regex","getRegexFromString","test","line","source","number","description","getDescription","keys","length","hasOptionTag","Boolean","forEachPreferredTag","matchingJsdocTag","targetTagName","name","getTagDescription","trim","whitelistedTags","filterTags","tagsWithNames","tagsWithoutNames","getTagsByType","some","replace","contextDefaults","meta","docs","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","oneOf","format","patternProperties","enum"],"sources":["../../src/rules/matchDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n// If supporting Node >= 10, we could loosen the default to this for the\n// initial letter: \\\\p{Upper}\nconst matchDescriptionDefault = '^\\n?([A-Z`\\\\d_][\\\\s\\\\S]*[.?!`]\\\\s*)?$';\n\nconst stringOrDefault = (value, userDefault) => {\n return typeof value === 'string' ?\n value :\n userDefault || matchDescriptionDefault;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n context,\n utils,\n}) => {\n const {\n mainDescription,\n matchDescription,\n message,\n tags,\n } = context.options[0] || {};\n\n const validateDescription = (desc, tag) => {\n let mainDescriptionMatch = mainDescription;\n let errorMessage = message;\n if (typeof mainDescription === 'object') {\n mainDescriptionMatch = mainDescription.match;\n errorMessage = mainDescription.message;\n }\n\n if (mainDescriptionMatch === false && (\n !tag || !Object.prototype.hasOwnProperty.call(tags, tag.tag))\n ) {\n return;\n }\n\n let tagValue = mainDescriptionMatch;\n if (tag) {\n const tagName = tag.tag;\n if (typeof tags[tagName] === 'object') {\n tagValue = tags[tagName].match;\n errorMessage = tags[tagName].message;\n } else {\n tagValue = tags[tagName];\n }\n }\n\n const regex = utils.getRegexFromString(\n stringOrDefault(tagValue, matchDescription),\n );\n\n if (!regex.test(desc)) {\n report(\n errorMessage || 'JSDoc description does not satisfy the regex pattern.',\n null,\n tag || {\n // Add one as description would typically be into block\n line: jsdoc.source[0].number + 1,\n },\n );\n }\n };\n\n const {\n description,\n } = utils.getDescription();\n if (description) {\n validateDescription(description);\n }\n\n if (!tags || !Object.keys(tags).length) {\n return;\n }\n\n const hasOptionTag = (tagName) => {\n return Boolean(tags[tagName]);\n };\n\n utils.forEachPreferredTag('description', (matchingJsdocTag, targetTagName) => {\n const desc = (matchingJsdocTag.name + ' ' + utils.getTagDescription(matchingJsdocTag)).trim();\n if (hasOptionTag(targetTagName)) {\n validateDescription(desc, matchingJsdocTag);\n }\n }, true);\n\n const whitelistedTags = utils.filterTags(({\n tag: tagName,\n }) => {\n return hasOptionTag(tagName);\n });\n const {\n tagsWithNames,\n tagsWithoutNames,\n } = utils.getTagsByType(whitelistedTags);\n\n tagsWithNames.some((tag) => {\n const desc = utils.getTagDescription(tag).replace(/^[- ]*/u, '')\n .trim();\n\n return validateDescription(desc, tag);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = (tag.name + ' ' + utils.getTagDescription(tag)).trim();\n\n return validateDescription(desc, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Enforces a regular expression pattern on descriptions.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-match-description',\n },\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 mainDescription: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n matchDescription: {\n format: 'regex',\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n patternProperties: {\n '.*': {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"matchDescription.js","names":["matchDescriptionDefault","stringOrDefault","value","userDefault","iterateJsdoc","jsdoc","report","context","utils","mainDescription","matchDescription","message","tags","options","validateDescription","desc","tag","mainDescriptionMatch","errorMessage","match","Object","prototype","hasOwnProperty","call","tagValue","tagName","regex","getRegexFromString","test","line","source","number","description","getDescription","keys","length","hasOptionTag","Boolean","forEachPreferredTag","matchingJsdocTag","targetTagName","name","getTagDescription","trim","whitelistedTags","filterTags","tagsWithNames","tagsWithoutNames","getTagsByType","some","replace","contextDefaults","meta","docs","url","schema","additionalProperties","properties","contexts","items","anyOf","type","comment","oneOf","format","patternProperties","enum"],"sources":["../../src/rules/matchDescription.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n// If supporting Node >= 10, we could loosen the default to this for the\n// initial letter: \\\\p{Upper}\nconst matchDescriptionDefault = '^\\n?([A-Z`\\\\d_][\\\\s\\\\S]*[.?!`]\\\\s*)?$';\n\nconst stringOrDefault = (value, userDefault) => {\n return typeof value === 'string' ?\n value :\n userDefault || matchDescriptionDefault;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n context,\n utils,\n}) => {\n const {\n mainDescription,\n matchDescription,\n message,\n tags,\n } = context.options[0] || {};\n\n const validateDescription = (desc, tag) => {\n let mainDescriptionMatch = mainDescription;\n let errorMessage = message;\n if (typeof mainDescription === 'object') {\n mainDescriptionMatch = mainDescription.match;\n errorMessage = mainDescription.message;\n }\n\n if (mainDescriptionMatch === false && (\n !tag || !Object.prototype.hasOwnProperty.call(tags, tag.tag))\n ) {\n return;\n }\n\n let tagValue = mainDescriptionMatch;\n if (tag) {\n const tagName = tag.tag;\n if (typeof tags[tagName] === 'object') {\n tagValue = tags[tagName].match;\n errorMessage = tags[tagName].message;\n } else {\n tagValue = tags[tagName];\n }\n }\n\n const regex = utils.getRegexFromString(\n stringOrDefault(tagValue, matchDescription),\n );\n\n if (!regex.test(desc)) {\n report(\n errorMessage || 'JSDoc description does not satisfy the regex pattern.',\n null,\n tag || {\n // Add one as description would typically be into block\n line: jsdoc.source[0].number + 1,\n },\n );\n }\n };\n\n const {\n description,\n } = utils.getDescription();\n if (description) {\n validateDescription(description);\n }\n\n if (!tags || !Object.keys(tags).length) {\n return;\n }\n\n const hasOptionTag = (tagName) => {\n return Boolean(tags[tagName]);\n };\n\n utils.forEachPreferredTag('description', (matchingJsdocTag, targetTagName) => {\n const desc = (matchingJsdocTag.name + ' ' + utils.getTagDescription(matchingJsdocTag)).trim();\n if (hasOptionTag(targetTagName)) {\n validateDescription(desc, matchingJsdocTag);\n }\n }, true);\n\n const whitelistedTags = utils.filterTags(({\n tag: tagName,\n }) => {\n return hasOptionTag(tagName);\n });\n const {\n tagsWithNames,\n tagsWithoutNames,\n } = utils.getTagsByType(whitelistedTags);\n\n tagsWithNames.some((tag) => {\n const desc = utils.getTagDescription(tag).replace(/^[- ]*/u, '')\n .trim();\n\n return validateDescription(desc, tag);\n });\n\n tagsWithoutNames.some((tag) => {\n const desc = (tag.name + ' ' + utils.getTagDescription(tag)).trim();\n\n return validateDescription(desc, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Enforces a regular expression pattern on descriptions.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-match-description',\n },\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 mainDescription: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n matchDescription: {\n format: 'regex',\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n patternProperties: {\n '.*': {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n {\n additionalProperties: false,\n properties: {\n match: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [\n true,\n ],\n type: 'boolean',\n },\n ],\n },\n message: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAE3C;AACA;AACA,MAAMA,uBAAuB,GAAG,uCAAuC;AAEvE,MAAMC,eAAe,GAAG,CAACC,KAAK,EAAEC,WAAW,KAAK;EAC9C,OAAO,OAAOD,KAAK,KAAK,QAAQ,GAC9BA,KAAK,GACLC,WAAW,IAAIH,uBAAuB;AAC1C,CAAC;AAAC,eAEa,IAAAI,qBAAY,EAAC,CAAC;EAC3BC,KAAK;EACLC,MAAM;EACNC,OAAO;EACPC;AACF,CAAC,KAAK;EACJ,MAAM;IACJC,eAAe;IACfC,gBAAgB;IAChBC,OAAO;IACPC;EACF,CAAC,GAAGL,OAAO,CAACM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAMC,mBAAmB,GAAG,CAACC,IAAI,EAAEC,GAAG,KAAK;IACzC,IAAIC,oBAAoB,GAAGR,eAAe;IAC1C,IAAIS,YAAY,GAAGP,OAAO;IAC1B,IAAI,OAAOF,eAAe,KAAK,QAAQ,EAAE;MACvCQ,oBAAoB,GAAGR,eAAe,CAACU,KAAK;MAC5CD,YAAY,GAAGT,eAAe,CAACE,OAAO;IACxC;IAEA,IAAIM,oBAAoB,KAAK,KAAK,KAChC,CAACD,GAAG,IAAI,CAACI,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACX,IAAI,EAAEI,GAAG,CAACA,GAAG,CAAC,CAAC,EAC7D;MACA;IACF;IAEA,IAAIQ,QAAQ,GAAGP,oBAAoB;IACnC,IAAID,GAAG,EAAE;MACP,MAAMS,OAAO,GAAGT,GAAG,CAACA,GAAG;MACvB,IAAI,OAAOJ,IAAI,CAACa,OAAO,CAAC,KAAK,QAAQ,EAAE;QACrCD,QAAQ,GAAGZ,IAAI,CAACa,OAAO,CAAC,CAACN,KAAK;QAC9BD,YAAY,GAAGN,IAAI,CAACa,OAAO,CAAC,CAACd,OAAO;MACtC,CAAC,MAAM;QACLa,QAAQ,GAAGZ,IAAI,CAACa,OAAO,CAAC;MAC1B;IACF;IAEA,MAAMC,KAAK,GAAGlB,KAAK,CAACmB,kBAAkB,CACpC1B,eAAe,CAACuB,QAAQ,EAAEd,gBAAgB,CAAC,CAC5C;IAED,IAAI,CAACgB,KAAK,CAACE,IAAI,CAACb,IAAI,CAAC,EAAE;MACrBT,MAAM,CACJY,YAAY,IAAI,uDAAuD,EACvE,IAAI,EACJF,GAAG,IAAI;QACL;QACAa,IAAI,EAAExB,KAAK,CAACyB,MAAM,CAAC,CAAC,CAAC,CAACC,MAAM,GAAG;MACjC,CAAC,CACF;IACH;EACF,CAAC;EAED,MAAM;IACJC;EACF,CAAC,GAAGxB,KAAK,CAACyB,cAAc,EAAE;EAC1B,IAAID,WAAW,EAAE;IACflB,mBAAmB,CAACkB,WAAW,CAAC;EAClC;EAEA,IAAI,CAACpB,IAAI,IAAI,CAACQ,MAAM,CAACc,IAAI,CAACtB,IAAI,CAAC,CAACuB,MAAM,EAAE;IACtC;EACF;EAEA,MAAMC,YAAY,GAAIX,OAAO,IAAK;IAChC,OAAOY,OAAO,CAACzB,IAAI,CAACa,OAAO,CAAC,CAAC;EAC/B,CAAC;EAEDjB,KAAK,CAAC8B,mBAAmB,CAAC,aAAa,EAAE,CAACC,gBAAgB,EAAEC,aAAa,KAAK;IAC5E,MAAMzB,IAAI,GAAG,CAACwB,gBAAgB,CAACE,IAAI,GAAG,GAAG,GAAGjC,KAAK,CAACkC,iBAAiB,CAACH,gBAAgB,CAAC,EAAEI,IAAI,EAAE;IAC7F,IAAIP,YAAY,CAACI,aAAa,CAAC,EAAE;MAC/B1B,mBAAmB,CAACC,IAAI,EAAEwB,gBAAgB,CAAC;IAC7C;EACF,CAAC,EAAE,IAAI,CAAC;EAER,MAAMK,eAAe,GAAGpC,KAAK,CAACqC,UAAU,CAAC,CAAC;IACxC7B,GAAG,EAAES;EACP,CAAC,KAAK;IACJ,OAAOW,YAAY,CAACX,OAAO,CAAC;EAC9B,CAAC,CAAC;EACF,MAAM;IACJqB,aAAa;IACbC;EACF,CAAC,GAAGvC,KAAK,CAACwC,aAAa,CAACJ,eAAe,CAAC;EAExCE,aAAa,CAACG,IAAI,CAAEjC,GAAG,IAAK;IAC1B,MAAMD,IAAI,GAAGP,KAAK,CAACkC,iBAAiB,CAAC1B,GAAG,CAAC,CAACkC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAC7DP,IAAI,EAAE;IAET,OAAO7B,mBAAmB,CAACC,IAAI,EAAEC,GAAG,CAAC;EACvC,CAAC,CAAC;EAEF+B,gBAAgB,CAACE,IAAI,CAAEjC,GAAG,IAAK;IAC7B,MAAMD,IAAI,GAAG,CAACC,GAAG,CAACyB,IAAI,GAAG,GAAG,GAAGjC,KAAK,CAACkC,iBAAiB,CAAC1B,GAAG,CAAC,EAAE2B,IAAI,EAAE;IAEnE,OAAO7B,mBAAmB,CAACC,IAAI,EAAEC,GAAG,CAAC;EACvC,CAAC,CAAC;AACJ,CAAC,EAAE;EACDmC,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJrB,WAAW,EAAE,wDAAwD;MACrEsB,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YACR,CAAC,EACD;cACEL,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVK,OAAO,EAAE;kBACPD,IAAI,EAAE;gBACR,CAAC;gBACDtD,OAAO,EAAE;kBACPsD,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDpD,eAAe,EAAE;UACfsD,KAAK,EAAE,CACL;YACEC,MAAM,EAAE,OAAO;YACfH,IAAI,EAAE;UACR,CAAC,EACD;YACEA,IAAI,EAAE;UACR,CAAC,EACD;YACEL,oBAAoB,EAAE,KAAK;YAC3BC,UAAU,EAAE;cACVtC,KAAK,EAAE;gBACL4C,KAAK,EAAE,CACL;kBACEC,MAAM,EAAE,OAAO;kBACfH,IAAI,EAAE;gBACR,CAAC,EACD;kBACEA,IAAI,EAAE;gBACR,CAAC;cAEL,CAAC;cACDlD,OAAO,EAAE;gBACPkD,IAAI,EAAE;cACR;YACF,CAAC;YACDA,IAAI,EAAE;UACR,CAAC;QAEL,CAAC;QACDnD,gBAAgB,EAAE;UAChBsD,MAAM,EAAE,OAAO;UACfH,IAAI,EAAE;QACR,CAAC;QACDlD,OAAO,EAAE;UACPkD,IAAI,EAAE;QACR,CAAC;QACDjD,IAAI,EAAE;UACJqD,iBAAiB,EAAE;YACjB,IAAI,EAAE;cACJF,KAAK,EAAE,CACL;gBACEC,MAAM,EAAE,OAAO;gBACfH,IAAI,EAAE;cACR,CAAC,EACD;gBACEK,IAAI,EAAE,CACJ,IAAI,CACL;gBACDL,IAAI,EAAE;cACR,CAAC,EACD;gBACEL,oBAAoB,EAAE,KAAK;gBAC3BC,UAAU,EAAE;kBACVtC,KAAK,EAAE;oBACL4C,KAAK,EAAE,CACL;sBACEC,MAAM,EAAE,OAAO;sBACfH,IAAI,EAAE;oBACR,CAAC,EACD;sBACEK,IAAI,EAAE,CACJ,IAAI,CACL;sBACDL,IAAI,EAAE;oBACR,CAAC;kBAEL,CAAC;kBACDlD,OAAO,EAAE;oBACPkD,IAAI,EAAE;kBACR;gBACF,CAAC;gBACDA,IAAI,EAAE;cACR,CAAC;YAEL;UACF,CAAC;UACDA,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
|
package/dist/rules/matchName.js
CHANGED
|
@@ -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
|
// eslint-disable-next-line complexity
|
|
13
10
|
var _default = (0, _iterateJsdoc.default)(({
|
|
14
11
|
context,
|
|
@@ -22,12 +19,10 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
22
19
|
const {
|
|
23
20
|
match
|
|
24
21
|
} = context.options[0] || {};
|
|
25
|
-
|
|
26
22
|
if (!match) {
|
|
27
23
|
report('Rule `no-restricted-syntax` is missing a `match` option.');
|
|
28
24
|
return;
|
|
29
25
|
}
|
|
30
|
-
|
|
31
26
|
const {
|
|
32
27
|
allowName,
|
|
33
28
|
disallowName,
|
|
@@ -37,26 +32,20 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
37
32
|
const allowNameRegex = allowName && utils.getRegexFromString(allowName);
|
|
38
33
|
const disallowNameRegex = disallowName && utils.getRegexFromString(disallowName);
|
|
39
34
|
let applicableTags = jsdoc.tags;
|
|
40
|
-
|
|
41
35
|
if (!tags.includes('*')) {
|
|
42
36
|
applicableTags = utils.getPresentTags(tags);
|
|
43
37
|
}
|
|
44
|
-
|
|
45
38
|
let reported = false;
|
|
46
|
-
|
|
47
39
|
for (const tag of applicableTags) {
|
|
48
40
|
const allowed = !allowNameRegex || allowNameRegex.test(tag.name);
|
|
49
41
|
const disallowed = disallowNameRegex && disallowNameRegex.test(tag.name);
|
|
50
42
|
const hasRegex = allowNameRegex || disallowNameRegex;
|
|
51
|
-
|
|
52
43
|
if (hasRegex && allowed && !disallowed) {
|
|
53
44
|
continue;
|
|
54
45
|
}
|
|
55
|
-
|
|
56
46
|
if (!hasRegex && reported) {
|
|
57
47
|
continue;
|
|
58
48
|
}
|
|
59
|
-
|
|
60
49
|
const fixer = () => {
|
|
61
50
|
for (const src of tag.source) {
|
|
62
51
|
if (src.tokens.name) {
|
|
@@ -65,11 +54,9 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
65
54
|
}
|
|
66
55
|
}
|
|
67
56
|
};
|
|
68
|
-
|
|
69
57
|
let {
|
|
70
58
|
message
|
|
71
59
|
} = match[lastIndex];
|
|
72
|
-
|
|
73
60
|
if (!message) {
|
|
74
61
|
if (hasRegex) {
|
|
75
62
|
message = disallowed ? `Only allowing names not matching \`${disallowNameRegex}\` but found "${tag.name}".` : `Only allowing names matching \`${allowNameRegex}\` but found "${tag.name}".`;
|
|
@@ -77,15 +64,14 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
77
64
|
message = `Prohibited context for "${tag.name}".`;
|
|
78
65
|
}
|
|
79
66
|
}
|
|
80
|
-
|
|
81
|
-
|
|
67
|
+
utils.reportJSDoc(message, hasRegex ? tag : null,
|
|
68
|
+
// We could match up
|
|
82
69
|
disallowNameRegex && replacement !== undefined ? fixer : null, false, {
|
|
83
70
|
// Could also supply `context`, `comment`, `tags`
|
|
84
71
|
allowName,
|
|
85
72
|
disallowName,
|
|
86
73
|
name: tag.name
|
|
87
74
|
});
|
|
88
|
-
|
|
89
75
|
if (!hasRegex) {
|
|
90
76
|
reported = true;
|
|
91
77
|
}
|
|
@@ -138,7 +124,6 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
138
124
|
type: 'suggestion'
|
|
139
125
|
}
|
|
140
126
|
});
|
|
141
|
-
|
|
142
127
|
exports.default = _default;
|
|
143
128
|
module.exports = exports.default;
|
|
144
129
|
//# sourceMappingURL=matchName.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matchName.js","names":["iterateJsdoc","context","jsdoc","report","info","lastIndex","utils","match","options","allowName","disallowName","replacement","tags","allowNameRegex","getRegexFromString","disallowNameRegex","applicableTags","includes","getPresentTags","reported","tag","allowed","test","name","disallowed","hasRegex","fixer","src","source","tokens","replace","message","reportJSDoc","undefined","matchContext","meta","docs","description","url","fixable","schema","additionalProperies","properties","items","type","comment","required"],"sources":["../../src/rules/matchName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n info: {\n lastIndex,\n },\n utils,\n}) => {\n const {\n match,\n } = context.options[0] || {};\n if (!match) {\n report('Rule `no-restricted-syntax` is missing a `match` option.');\n\n return;\n }\n\n const {\n allowName,\n disallowName,\n replacement,\n tags = [\n '*',\n ],\n } = match[lastIndex];\n\n const allowNameRegex = allowName && utils.getRegexFromString(allowName);\n const disallowNameRegex = disallowName && utils.getRegexFromString(disallowName);\n\n let applicableTags = jsdoc.tags;\n if (!tags.includes('*')) {\n applicableTags = utils.getPresentTags(tags);\n }\n\n let reported = false;\n for (const tag of applicableTags) {\n const allowed = !allowNameRegex || allowNameRegex.test(tag.name);\n const disallowed = disallowNameRegex && disallowNameRegex.test(tag.name);\n const hasRegex = allowNameRegex || disallowNameRegex;\n if (hasRegex && allowed && !disallowed) {\n continue;\n }\n\n if (!hasRegex && reported) {\n continue;\n }\n\n const fixer = () => {\n for (const src of tag.source) {\n if (src.tokens.name) {\n src.tokens.name = src.tokens.name.replace(\n disallowNameRegex, replacement,\n );\n break;\n }\n }\n };\n\n let {\n message,\n } = match[lastIndex];\n if (!message) {\n if (hasRegex) {\n message = disallowed ?\n `Only allowing names not matching \\`${disallowNameRegex}\\` but found \"${tag.name}\".` :\n `Only allowing names matching \\`${allowNameRegex}\\` but found \"${tag.name}\".`;\n } else {\n message = `Prohibited context for \"${tag.name}\".`;\n }\n }\n\n utils.reportJSDoc(\n message,\n hasRegex ? tag : null,\n\n // We could match up\n disallowNameRegex && replacement !== undefined ?\n fixer :\n null,\n false,\n {\n // Could also supply `context`, `comment`, `tags`\n allowName,\n disallowName,\n name: tag.name,\n },\n );\n if (!hasRegex) {\n reported = true;\n }\n }\n}, {\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports the name portion of a JSDoc tag if matching or not matching a given regular expression.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-match-name',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n match: {\n additionalProperies: false,\n items: {\n properties: {\n allowName: {\n type: 'string',\n },\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n disallowName: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n },\n required: [\n 'match',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"matchName.js","names":["iterateJsdoc","context","jsdoc","report","info","lastIndex","utils","match","options","allowName","disallowName","replacement","tags","allowNameRegex","getRegexFromString","disallowNameRegex","applicableTags","includes","getPresentTags","reported","tag","allowed","test","name","disallowed","hasRegex","fixer","src","source","tokens","replace","message","reportJSDoc","undefined","matchContext","meta","docs","description","url","fixable","schema","additionalProperies","properties","items","type","comment","required"],"sources":["../../src/rules/matchName.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n context,\n jsdoc,\n report,\n info: {\n lastIndex,\n },\n utils,\n}) => {\n const {\n match,\n } = context.options[0] || {};\n if (!match) {\n report('Rule `no-restricted-syntax` is missing a `match` option.');\n\n return;\n }\n\n const {\n allowName,\n disallowName,\n replacement,\n tags = [\n '*',\n ],\n } = match[lastIndex];\n\n const allowNameRegex = allowName && utils.getRegexFromString(allowName);\n const disallowNameRegex = disallowName && utils.getRegexFromString(disallowName);\n\n let applicableTags = jsdoc.tags;\n if (!tags.includes('*')) {\n applicableTags = utils.getPresentTags(tags);\n }\n\n let reported = false;\n for (const tag of applicableTags) {\n const allowed = !allowNameRegex || allowNameRegex.test(tag.name);\n const disallowed = disallowNameRegex && disallowNameRegex.test(tag.name);\n const hasRegex = allowNameRegex || disallowNameRegex;\n if (hasRegex && allowed && !disallowed) {\n continue;\n }\n\n if (!hasRegex && reported) {\n continue;\n }\n\n const fixer = () => {\n for (const src of tag.source) {\n if (src.tokens.name) {\n src.tokens.name = src.tokens.name.replace(\n disallowNameRegex, replacement,\n );\n break;\n }\n }\n };\n\n let {\n message,\n } = match[lastIndex];\n if (!message) {\n if (hasRegex) {\n message = disallowed ?\n `Only allowing names not matching \\`${disallowNameRegex}\\` but found \"${tag.name}\".` :\n `Only allowing names matching \\`${allowNameRegex}\\` but found \"${tag.name}\".`;\n } else {\n message = `Prohibited context for \"${tag.name}\".`;\n }\n }\n\n utils.reportJSDoc(\n message,\n hasRegex ? tag : null,\n\n // We could match up\n disallowNameRegex && replacement !== undefined ?\n fixer :\n null,\n false,\n {\n // Could also supply `context`, `comment`, `tags`\n allowName,\n disallowName,\n name: tag.name,\n },\n );\n if (!hasRegex) {\n reported = true;\n }\n }\n}, {\n matchContext: true,\n meta: {\n docs: {\n description: 'Reports the name portion of a JSDoc tag if matching or not matching a given regular expression.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-match-name',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperies: false,\n properties: {\n match: {\n additionalProperies: false,\n items: {\n properties: {\n allowName: {\n type: 'string',\n },\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n disallowName: {\n type: 'string',\n },\n message: {\n type: 'string',\n },\n tags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n type: 'array',\n },\n },\n required: [\n 'match',\n ],\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|