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.
Files changed (124) hide show
  1. package/README.md +273 -52
  2. package/dist/WarnSettings.js +0 -5
  3. package/dist/WarnSettings.js.map +1 -1
  4. package/dist/alignTransform.js +69 -61
  5. package/dist/alignTransform.js.map +1 -1
  6. package/dist/bin/generateRule.js +7 -26
  7. package/dist/bin/generateRule.js.map +1 -1
  8. package/dist/defaultTagOrder.js +30 -14
  9. package/dist/defaultTagOrder.js.map +1 -1
  10. package/dist/exportParser.js +34 -143
  11. package/dist/exportParser.js.map +1 -1
  12. package/dist/generateRule.js +7 -26
  13. package/dist/generateRule.js.map +1 -1
  14. package/dist/getDefaultTagStructureForMode.js +189 -93
  15. package/dist/getDefaultTagStructureForMode.js.map +1 -1
  16. package/dist/index.js +0 -51
  17. package/dist/index.js.map +1 -1
  18. package/dist/iterateJsdoc.js +44 -207
  19. package/dist/iterateJsdoc.js.map +1 -1
  20. package/dist/jsdocUtils.js +72 -221
  21. package/dist/jsdocUtils.js.map +1 -1
  22. package/dist/rules/checkAccess.js +0 -8
  23. package/dist/rules/checkAccess.js.map +1 -1
  24. package/dist/rules/checkAlignment.js +0 -8
  25. package/dist/rules/checkAlignment.js.map +1 -1
  26. package/dist/rules/checkExamples.js +25 -63
  27. package/dist/rules/checkExamples.js.map +1 -1
  28. package/dist/rules/checkIndentation.js +0 -7
  29. package/dist/rules/checkIndentation.js.map +1 -1
  30. package/dist/rules/checkLineAlignment.js +9 -30
  31. package/dist/rules/checkLineAlignment.js.map +1 -1
  32. package/dist/rules/checkParamNames.js +9 -47
  33. package/dist/rules/checkParamNames.js.map +1 -1
  34. package/dist/rules/checkPropertyNames.js +1 -18
  35. package/dist/rules/checkPropertyNames.js.map +1 -1
  36. package/dist/rules/checkSyntax.js +2 -5
  37. package/dist/rules/checkSyntax.js.map +1 -1
  38. package/dist/rules/checkTagNames.js +0 -18
  39. package/dist/rules/checkTagNames.js.map +1 -1
  40. package/dist/rules/checkTypes.js +17 -46
  41. package/dist/rules/checkTypes.js.map +1 -1
  42. package/dist/rules/checkValues.js +0 -18
  43. package/dist/rules/checkValues.js.map +1 -1
  44. package/dist/rules/emptyTags.js +6 -11
  45. package/dist/rules/emptyTags.js.map +1 -1
  46. package/dist/rules/implementsOnClasses.js +0 -6
  47. package/dist/rules/implementsOnClasses.js.map +1 -1
  48. package/dist/rules/matchDescription.js +0 -20
  49. package/dist/rules/matchDescription.js.map +1 -1
  50. package/dist/rules/matchName.js +2 -17
  51. package/dist/rules/matchName.js.map +1 -1
  52. package/dist/rules/multilineBlocks.js +10 -34
  53. package/dist/rules/multilineBlocks.js.map +1 -1
  54. package/dist/rules/newlineAfterDescription.js +0 -8
  55. package/dist/rules/newlineAfterDescription.js.map +1 -1
  56. package/dist/rules/noBadBlocks.js +2 -16
  57. package/dist/rules/noBadBlocks.js.map +1 -1
  58. package/dist/rules/noDefaults.js +0 -7
  59. package/dist/rules/noDefaults.js.map +1 -1
  60. package/dist/rules/noMissingSyntax.js +2 -16
  61. package/dist/rules/noMissingSyntax.js.map +1 -1
  62. package/dist/rules/noMultiAsterisks.js +2 -16
  63. package/dist/rules/noMultiAsterisks.js.map +1 -1
  64. package/dist/rules/noRestrictedSyntax.js +3 -9
  65. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  66. package/dist/rules/noTypes.js +0 -7
  67. package/dist/rules/noTypes.js.map +1 -1
  68. package/dist/rules/noUndefinedTypes.js +13 -34
  69. package/dist/rules/noUndefinedTypes.js.map +1 -1
  70. package/dist/rules/requireAsteriskPrefix.js +2 -26
  71. package/dist/rules/requireAsteriskPrefix.js.map +1 -1
  72. package/dist/rules/requireDescription.js +0 -17
  73. package/dist/rules/requireDescription.js.map +1 -1
  74. package/dist/rules/requireDescriptionCompleteSentence.js +13 -34
  75. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  76. package/dist/rules/requireExample.js +0 -9
  77. package/dist/rules/requireExample.js.map +1 -1
  78. package/dist/rules/requireFileOverview.js +0 -16
  79. package/dist/rules/requireFileOverview.js.map +1 -1
  80. package/dist/rules/requireHyphenBeforeParamDescription.js +2 -16
  81. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  82. package/dist/rules/requireJsdoc.js +13 -58
  83. package/dist/rules/requireJsdoc.js.map +1 -1
  84. package/dist/rules/requireParam.js +6 -53
  85. package/dist/rules/requireParam.js.map +1 -1
  86. package/dist/rules/requireParamDescription.js +0 -4
  87. package/dist/rules/requireParamDescription.js.map +1 -1
  88. package/dist/rules/requireParamName.js +0 -4
  89. package/dist/rules/requireParamName.js.map +1 -1
  90. package/dist/rules/requireParamType.js +0 -4
  91. package/dist/rules/requireParamType.js.map +1 -1
  92. package/dist/rules/requireProperty.js +0 -9
  93. package/dist/rules/requireProperty.js.map +1 -1
  94. package/dist/rules/requirePropertyDescription.js +0 -4
  95. package/dist/rules/requirePropertyDescription.js.map +1 -1
  96. package/dist/rules/requirePropertyName.js +0 -4
  97. package/dist/rules/requirePropertyName.js.map +1 -1
  98. package/dist/rules/requirePropertyType.js +0 -4
  99. package/dist/rules/requirePropertyType.js.map +1 -1
  100. package/dist/rules/requireReturns.js +13 -23
  101. package/dist/rules/requireReturns.js.map +1 -1
  102. package/dist/rules/requireReturnsCheck.js +12 -20
  103. package/dist/rules/requireReturnsCheck.js.map +1 -1
  104. package/dist/rules/requireReturnsDescription.js +0 -6
  105. package/dist/rules/requireReturnsDescription.js.map +1 -1
  106. package/dist/rules/requireReturnsType.js +0 -4
  107. package/dist/rules/requireReturnsType.js.map +1 -1
  108. package/dist/rules/requireThrows.js +6 -15
  109. package/dist/rules/requireThrows.js.map +1 -1
  110. package/dist/rules/requireYields.js +13 -29
  111. package/dist/rules/requireYields.js.map +1 -1
  112. package/dist/rules/requireYieldsCheck.js +8 -29
  113. package/dist/rules/requireYieldsCheck.js.map +1 -1
  114. package/dist/rules/sortTags.js +17 -30
  115. package/dist/rules/sortTags.js.map +1 -1
  116. package/dist/rules/tagLines.js +0 -26
  117. package/dist/rules/tagLines.js.map +1 -1
  118. package/dist/rules/validTypes.js +22 -53
  119. package/dist/rules/validTypes.js.map +1 -1
  120. package/dist/tagNames.js +7 -4
  121. package/dist/tagNames.js.map +1 -1
  122. package/dist/utils/hasReturnValue.js +22 -66
  123. package/dist/utils/hasReturnValue.js.map +1 -1
  124. 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":";;;;;;AAAA;AACA;AACA;AAA2C;AAE3C,MAAMA,YAAY,GAAG,IAAIC,GAAG,CAAC,CAC3B,OAAO,EACP,UAAU,EACV,OAAO,EACP,UAAU,EACV,MAAM,EACN,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,WAAW,EACX,SAAS,CACV,CAAC;AAAC,eAEY,IAAAC,qBAAY,EAAC,CAAC;EAC3BC,KAAK;EACLC,MAAM;EACNC;AACF,CAAC,KAAK;EACJ,MAAMC,OAAO,GAAGD,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EACxC,MAAM;IACJC,eAAe,GAAG,IAAI;IACtBC,cAAc,GAAG,IAAI;IACrBC,oBAAoB,GAAG,KAAK;IAC5BC,cAAc,GAAG;EACnB,CAAC,GAAGJ,OAAO;EAEXH,KAAK,CAACQ,mBAAmB,CAAC,SAAS,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACtE,MAAMC,OAAO,GAAGX,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAC,CAACI,IAAI,EAAE;IAC9D,IAAI,CAACF,OAAO,EAAE;MACZV,MAAM,CACH,kBAAiBS,aAAc,SAAQ,EACxC,IAAI,EACJD,cAAc,CACf;IACH,CAAC,MAAM,IAAI,CAACK,eAAM,CAACC,KAAK,CAACJ,OAAO,CAAC,EAAE;MACjCV,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAE,IAAG,EAChF,IAAI,EACJA,cAAc,CACf;IACH;EACF,CAAC,CAAC;EAEFT,KAAK,CAACQ,mBAAmB,CAAC,MAAM,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACnE,MAAMM,IAAI,GAAGhB,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAC,CAACI,IAAI,EAAE;IAC3D,IAAI,CAACG,IAAI,EAAE;MACTf,MAAM,CACH,kBAAiBS,aAAc,SAAQ,EACxC,IAAI,EACJD,cAAc,CACf;IACH,CAAC,MAAM,IAAI,CAACZ,YAAY,CAACoB,GAAG,CAACD,IAAI,CAAC,EAAE;MAClCf,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAE,KAAI,GAChF,mBAAkB,CACjB,GAAGZ,YAAY,CAChB,CAACqB,IAAI,CAAC,IAAI,CAAE,GAAE,EACf,IAAI,EACJT,cAAc,CACf;IACH;EACF,CAAC,CAAC;EAEF,IAAIH,oBAAoB,EAAE;IACxBN,KAAK,CAACQ,mBAAmB,CAAC,WAAW,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;MACxE,MAAMS,SAAS,GAAGnB,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAC,CAACI,IAAI,EAAE;MAChE,IAAI,CAACM,SAAS,EAAE;QACdlB,MAAM,CACH,kBAAiBS,aAAc,SAAQ,EACxC,IAAI,EACJD,cAAc,CACf;MACH,CAAC,MAAM,IACL,CAACW,MAAM,CAACC,SAAS,CAACD,MAAM,CAACD,SAAS,CAAC,CAAC,IACpCC,MAAM,CAACD,SAAS,CAAC,IAAI,CAAC,EACtB;QACAlB,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAE,IAAG,EAChF,IAAI,EACJA,cAAc,CACf;MACH;IACF,CAAC,CAAC;EACJ;EAEAT,KAAK,CAACQ,mBAAmB,CAAC,OAAO,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACpE,MAAMC,OAAO,GAAGX,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAC,CAACI,IAAI,EAAE;IAC9D,IAAI,CAACF,OAAO,EAAE;MACZV,MAAM,CACH,kBAAiBS,aAAc,SAAQ,EACxC,IAAI,EACJD,cAAc,CACf;IACH,CAAC,MAAM,IAAI,CAACK,eAAM,CAACC,KAAK,CAACJ,OAAO,CAAC,EAAE;MACjCV,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAE,IAAG,EAChF,IAAI,EACJA,cAAc,CACf;IACH;EACF,CAAC,CAAC;EACFT,KAAK,CAACQ,mBAAmB,CAAC,SAAS,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACtE,MAAMY,YAAY,GAAGtB,KAAK,CAACuB,kBAAkB,CAAChB,cAAc,EAAE,GAAG,CAAC;IAClE,MAAMiB,OAAO,GAAGxB,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAC,CAACgB,QAAQ,CAACH,YAAY,CAAC;IAC9E,IAAII,aAAa,GAAG,KAAK;IACzB,KAAK,MAAMC,KAAK,IAAIH,OAAO,EAAE;MAC3B,MAAMI,OAAO,GAAGD,KAAK,CAAC,CAAC,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC;MACpC,IAAIC,OAAO,EAAE;QACXF,aAAa,GAAG,IAAI;MACtB;MAEA,IAAI,CAACE,OAAO,CAACf,IAAI,EAAE,EAAE;QACnB;QACA,IAAIa,aAAa,EAAE;UACjB;QACF;QAEAzB,MAAM,CACH,kBAAiBS,aAAc,SAAQ,EACxC,IAAI,EACJD,cAAc,CACf;MACH,CAAC,MAAM,IAAIL,eAAe,EAAE;QAC1B,IAAIA,eAAe,KAAK,IAAI,IAAI,CAACA,eAAe,CAACyB,QAAQ,CAACD,OAAO,CAAC,EAAE;UAClE3B,MAAM,CACH,kBAAiBS,aAAc,MAAKkB,OAAQ,sBAAqBxB,eAAe,CAACc,IAAI,CAAC,IAAI,CAAE,GAAE,EAC/F,IAAI,EACJT,cAAc,CACf;QACH;MACF,CAAC,MAAM;QACL,IAAI;UACF,IAAAqB,4BAAmB,EAACF,OAAO,CAAC;QAC9B,CAAC,CAAC,MAAM;UACN3B,MAAM,CACH,kBAAiBS,aAAc,MAAKkB,OAAQ,0DAAyD,EACtG,IAAI,EACJnB,cAAc,CACf;QACH;MACF;IACF;EACF,CAAC,CAAC;EAEFT,KAAK,CAACQ,mBAAmB,CAAC,QAAQ,EAAE,CAACC,cAAc,EAAEC,aAAa,KAAK;IACrE,MAAMqB,MAAM,GAAG/B,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAC,CAACI,IAAI,EAAE;IAC7D,IAAI,CAACkB,MAAM,EAAE;MACX9B,MAAM,CACH,kBAAiBS,aAAc,SAAQ,EACxC,IAAI,EACJD,cAAc,CACf;IACH,CAAC,MAAM,IAAIJ,cAAc,IAAI,CAACA,cAAc,CAACwB,QAAQ,CAACE,MAAM,CAAC,EAAE;MAC7D9B,MAAM,CACH,kBAAiBS,aAAc,MAAKV,KAAK,CAACY,iBAAiB,CAACH,cAAc,CAAE,sBAAqBJ,cAAc,CAACa,IAAI,CAAC,IAAI,CAAE,GAAE,EAC9H,IAAI,EACJT,cAAc,CACf;IACH;EACF,CAAC,CAAC;AACJ,CAAC,EAAE;EACDuB,gBAAgB,EAAE,IAAI;EACtBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,oGAAoG;MACjHC,GAAG,EAAE;IACP,CAAC;IACDC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVlC,cAAc,EAAE;UACdmC,KAAK,EAAE;YACLC,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDrC,eAAe,EAAE;UACfsC,KAAK,EAAE,CACL;YACEF,KAAK,EAAE;cACLC,IAAI,EAAE;YACR,CAAC;YACDA,IAAI,EAAE;UACR,CAAC,EACD;YACEA,IAAI,EAAE;UACR,CAAC;QAEL,CAAC;QACDlC,cAAc,EAAE;UACdkC,IAAI,EAAE;QACR,CAAC;QACDnC,oBAAoB,EAAE;UACpBmC,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
@@ -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
- const defaultEmptyTags = new Set(['abstract', 'async', 'generator', 'global', 'hideconstructor', 'ignore', 'inner', 'instance', 'override', 'readonly', // jsdoc doesn't use this form in its docs, but allow for compatibility with
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', // jsdoc doesn't use but allow for TypeScript
12
+ 'inheritDoc',
13
+ // jsdoc doesn't use but allow for TypeScript
15
14
  'internal']);
16
- const emptyIfNotClosure = new Set(['package', 'private', 'protected', 'public', 'static', // Closure doesn't allow with this casing
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":";;;;;;;AAAA;;;;AAEA,MAAMA,gBAAgB,GAAG,IAAIC,GAAJ,CAAQ,CAC/B,UAD+B,EACnB,OADmB,EACV,WADU,EACG,QADH,EACa,iBADb,EAE/B,QAF+B,EAErB,OAFqB,EAEZ,UAFY,EAEA,UAFA,EAEY,UAFZ,EAI/B;AACA;AACA,YAN+B,EAQ/B;AACA,UAT+B,CAAR,CAAzB;AAYA,MAAMC,iBAAiB,GAAG,IAAID,GAAJ,CAAQ,CAChC,SADgC,EACrB,SADqB,EACV,WADU,EACG,QADH,EACa,QADb,EAGhC;AACA,YAJgC,CAAR,CAA1B;AAOA,MAAME,cAAc,GAAG,IAAIF,GAAJ,CAAQ,CAC7B,WAD6B,CAAR,CAAvB;;eAIe,IAAAG,qBAAA,EAAa,CAAC;EAC3BC,QAD2B;EAE3BC,KAF2B;EAG3BC;AAH2B,CAAD,KAItB;EACJ,MAAMC,SAAS,GAAGD,KAAK,CAACE,UAAN,CAAiB,CAAC;IAClCC,GAAG,EAAEC;EAD6B,CAAD,KAE7B;IACJ,OAAOX,gBAAgB,CAACY,GAAjB,CAAqBD,OAArB,KACLJ,KAAK,CAACM,YAAN,CAAmBF,OAAnB,KAA+BL,KAAK,CAACQ,IAAN,CAAWC,IAAX,CAAgB,CAAC;MAC9CL;IAD8C,CAAD,KAEzC;MACJ,OAAOA,GAAG,KAAKC,OAAf;IACD,CAJ8B,CAD1B,IAMLN,QAAQ,CAACW,IAAT,KAAkB,SAAlB,IAA+Bb,cAAc,CAACS,GAAf,CAAmBD,OAAnB,CAN1B,IAOLN,QAAQ,CAACW,IAAT,KAAkB,SAAlB,IAA+Bd,iBAAiB,CAACU,GAAlB,CAAsBD,OAAtB,CAPjC;EAQD,CAXiB,CAAlB;;EAYA,KAAK,MAAMD,GAAX,IAAkBF,SAAlB,EAA6B;IAC3B,MAAMS,OAAO,GAAGP,GAAG,CAACQ,IAAJ,IAAYR,GAAG,CAACS,WAAhB,IAA+BT,GAAG,CAACU,IAAnD;;IACA,IAAIH,OAAO,CAACI,IAAR,EAAJ,EAAoB;MAClB,MAAMC,GAAG,GAAG,MAAM;QAChBf,KAAK,CAACgB,MAAN,CAAab,GAAb;MACD,CAFD;;MAIAH,KAAK,CAACiB,WAAN,CAAmB,IAAGd,GAAG,CAACA,GAAI,mBAA9B,EAAkDA,GAAlD,EAAuDY,GAAvD,EAA4D,IAA5D;IACD;EACF;AACF,CA3Bc,EA2BZ;EACDG,aAAa,EAAE,IADd;EAEDC,YAAY,EAAE,IAFb;EAGDC,gBAAgB,EAAE,IAHjB;EAIDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJV,WAAW,EAAE,mDADT;MAEJW,GAAG,EAAE;IAFD,CADF;IAKJC,OAAO,EAAE,MALL;IAMJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVpB,IAAI,EAAE;UACJqB,KAAK,EAAE;YACLf,IAAI,EAAE;UADD,CADH;UAIJA,IAAI,EAAE;QAJF;MADI,CAFd;MAUEA,IAAI,EAAE;IAVR,CADM,CANJ;IAoBJA,IAAI,EAAE;EApBF;AAJL,CA3BY,C"}
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":";;;;;;;AAAA;;;;eAEe,IAAAA,qBAAA,EAAa,CAAC;EAC3BC,MAD2B;EAE3BC;AAF2B,CAAD,KAGtB;EACJ,MAAMC,iBAAiB,GAAGD,KAAK,CAACE,mBAAN,EAA1B;;EAEA,IAAID,iBAAJ,EAAuB;IACrB,IAAID,KAAK,CAACG,OAAN,CAAc,CAChB,OADgB,EAEhB,aAFgB,CAAd,KAIFH,KAAK,CAACI,aAAN,EAJF,EAKE;MACA;IACD;EACF,CATD,MASO,IAAI,CAACJ,KAAK,CAACK,iBAAN,EAAL,EAAgC;IACrC;EACD;;EAEDL,KAAK,CAACM,mBAAN,CAA0B,YAA1B,EAAyCC,GAAD,IAAS;IAC/CR,MAAM,CAAC,gDAAD,EAAmD,IAAnD,EAAyDQ,GAAzD,CAAN;EACD,CAFD;AAGD,CAtBc,EAsBZ;EACDC,eAAe,EAAE,IADhB;EAEDC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJC,WAAW,EAAE,yEADT;MAEJC,GAAG,EAAE;IAFD,CADF;IAKJC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KADxB;MAEEC,UAAU,EAAE;QACVC,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEC,IAAI,EAAE;YADR,CADK,EAIL;cACEL,oBAAoB,EAAE,KADxB;cAEEC,UAAU,EAAE;gBACVK,OAAO,EAAE;kBACPD,IAAI,EAAE;gBADC,CADC;gBAIVE,OAAO,EAAE;kBACPF,IAAI,EAAE;gBADC;cAJC,CAFd;cAUEA,IAAI,EAAE;YAVR,CAJK;UADF,CADC;UAoBRA,IAAI,EAAE;QApBE;MADA,CAFd;MA0BEA,IAAI,EAAE;IA1BR,CADM,CALJ;IAmCJA,IAAI,EAAE;EAnCF;AAFL,CAtBY,C"}
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":"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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
  // 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
- utils.reportJSDoc(message, hasRegex ? tag : null, // We could match up
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":"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"}
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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"}