eslint-plugin-jsdoc 55.3.0 → 56.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/cjs/WarnSettings.d.ts +16 -0
  2. package/dist/cjs/WarnSettings.js +30 -0
  3. package/dist/cjs/alignTransform.d.ts +33 -0
  4. package/dist/cjs/alignTransform.js +285 -0
  5. package/dist/cjs/defaultTagOrder.d.ts +4 -0
  6. package/dist/cjs/defaultTagOrder.js +152 -0
  7. package/dist/cjs/exportParser.d.ts +40 -0
  8. package/dist/cjs/exportParser.js +754 -0
  9. package/dist/cjs/getDefaultTagStructureForMode.d.ts +10 -0
  10. package/dist/cjs/getDefaultTagStructureForMode.js +840 -0
  11. package/dist/cjs/getJsdocProcessorPlugin.cjs +4 -0
  12. package/dist/cjs/getJsdocProcessorPlugin.d.cts +1 -0
  13. package/dist/cjs/getJsdocProcessorPlugin.d.ts +66 -0
  14. package/dist/cjs/getJsdocProcessorPlugin.js +553 -0
  15. package/dist/cjs/index-cjs.d.ts +16 -0
  16. package/dist/cjs/index-cjs.js +492 -0
  17. package/dist/cjs/index.cjs.cjs +6 -0
  18. package/dist/cjs/index.cjs.d.cts +2 -0
  19. package/dist/cjs/iterateJsdoc.cjs +38 -0
  20. package/dist/cjs/iterateJsdoc.d.cts +2 -0
  21. package/dist/cjs/iterateJsdoc.d.ts +462 -0
  22. package/dist/cjs/iterateJsdoc.js +1981 -0
  23. package/dist/cjs/jsdocUtils.d.ts +454 -0
  24. package/dist/cjs/jsdocUtils.js +1470 -0
  25. package/dist/cjs/rules/checkAccess.d.ts +2 -0
  26. package/dist/cjs/rules/checkAccess.js +35 -0
  27. package/dist/cjs/rules/checkAlignment.d.ts +2 -0
  28. package/dist/cjs/rules/checkAlignment.js +63 -0
  29. package/dist/cjs/rules/checkExamples.d.ts +3 -0
  30. package/dist/cjs/rules/checkExamples.js +486 -0
  31. package/dist/cjs/rules/checkIndentation.d.ts +2 -0
  32. package/dist/cjs/rules/checkIndentation.js +66 -0
  33. package/dist/cjs/rules/checkLineAlignment.d.ts +9 -0
  34. package/dist/cjs/rules/checkLineAlignment.js +297 -0
  35. package/dist/cjs/rules/checkParamNames.d.ts +2 -0
  36. package/dist/cjs/rules/checkParamNames.js +320 -0
  37. package/dist/cjs/rules/checkPropertyNames.d.ts +2 -0
  38. package/dist/cjs/rules/checkPropertyNames.js +105 -0
  39. package/dist/cjs/rules/checkSyntax.d.ts +2 -0
  40. package/dist/cjs/rules/checkSyntax.js +27 -0
  41. package/dist/cjs/rules/checkTagNames.d.ts +2 -0
  42. package/dist/cjs/rules/checkTagNames.js +252 -0
  43. package/dist/cjs/rules/checkTemplateNames.d.ts +2 -0
  44. package/dist/cjs/rules/checkTemplateNames.js +189 -0
  45. package/dist/cjs/rules/checkTypes.d.ts +2 -0
  46. package/dist/cjs/rules/checkTypes.js +421 -0
  47. package/dist/cjs/rules/checkValues.d.ts +2 -0
  48. package/dist/cjs/rules/checkValues.js +163 -0
  49. package/dist/cjs/rules/convertToJsdocComments.d.ts +251 -0
  50. package/dist/cjs/rules/convertToJsdocComments.js +313 -0
  51. package/dist/cjs/rules/emptyTags.d.ts +2 -0
  52. package/dist/cjs/rules/emptyTags.js +79 -0
  53. package/dist/cjs/rules/implementsOnClasses.d.ts +2 -0
  54. package/dist/cjs/rules/implementsOnClasses.js +63 -0
  55. package/dist/cjs/rules/importsAsDependencies.d.ts +2 -0
  56. package/dist/cjs/rules/importsAsDependencies.js +105 -0
  57. package/dist/cjs/rules/informativeDocs.d.ts +2 -0
  58. package/dist/cjs/rules/informativeDocs.js +153 -0
  59. package/dist/cjs/rules/linesBeforeBlock.d.ts +2 -0
  60. package/dist/cjs/rules/linesBeforeBlock.js +106 -0
  61. package/dist/cjs/rules/matchDescription.d.ts +2 -0
  62. package/dist/cjs/rules/matchDescription.js +240 -0
  63. package/dist/cjs/rules/matchName.d.ts +2 -0
  64. package/dist/cjs/rules/matchName.js +122 -0
  65. package/dist/cjs/rules/multilineBlocks.d.ts +2 -0
  66. package/dist/cjs/rules/multilineBlocks.js +339 -0
  67. package/dist/cjs/rules/noBadBlocks.d.ts +2 -0
  68. package/dist/cjs/rules/noBadBlocks.js +88 -0
  69. package/dist/cjs/rules/noBlankBlockDescriptions.d.ts +2 -0
  70. package/dist/cjs/rules/noBlankBlockDescriptions.js +56 -0
  71. package/dist/cjs/rules/noBlankBlocks.d.ts +2 -0
  72. package/dist/cjs/rules/noBlankBlocks.js +41 -0
  73. package/dist/cjs/rules/noDefaults.d.ts +2 -0
  74. package/dist/cjs/rules/noDefaults.js +84 -0
  75. package/dist/cjs/rules/noMissingSyntax.d.ts +9 -0
  76. package/dist/cjs/rules/noMissingSyntax.js +164 -0
  77. package/dist/cjs/rules/noMultiAsterisks.d.ts +2 -0
  78. package/dist/cjs/rules/noMultiAsterisks.js +83 -0
  79. package/dist/cjs/rules/noRestrictedSyntax.d.ts +2 -0
  80. package/dist/cjs/rules/noRestrictedSyntax.js +75 -0
  81. package/dist/cjs/rules/noTypes.d.ts +2 -0
  82. package/dist/cjs/rules/noTypes.js +88 -0
  83. package/dist/cjs/rules/noUndefinedTypes.d.ts +2 -0
  84. package/dist/cjs/rules/noUndefinedTypes.js +451 -0
  85. package/dist/cjs/rules/requireAsteriskPrefix.d.ts +2 -0
  86. package/dist/cjs/rules/requireAsteriskPrefix.js +144 -0
  87. package/dist/cjs/rules/requireDescription.d.ts +2 -0
  88. package/dist/cjs/rules/requireDescription.js +136 -0
  89. package/dist/cjs/rules/requireDescriptionCompleteSentence.d.ts +2 -0
  90. package/dist/cjs/rules/requireDescriptionCompleteSentence.js +258 -0
  91. package/dist/cjs/rules/requireExample.d.ts +2 -0
  92. package/dist/cjs/rules/requireExample.js +103 -0
  93. package/dist/cjs/rules/requireFileOverview.d.ts +2 -0
  94. package/dist/cjs/rules/requireFileOverview.js +117 -0
  95. package/dist/cjs/rules/requireHyphenBeforeParamDescription.d.ts +2 -0
  96. package/dist/cjs/rules/requireHyphenBeforeParamDescription.js +144 -0
  97. package/dist/cjs/rules/requireJsdoc.d.ts +25 -0
  98. package/dist/cjs/rules/requireJsdoc.js +629 -0
  99. package/dist/cjs/rules/requireParam.d.ts +3 -0
  100. package/dist/cjs/rules/requireParam.js +480 -0
  101. package/dist/cjs/rules/requireParamDescription.d.ts +2 -0
  102. package/dist/cjs/rules/requireParamDescription.js +77 -0
  103. package/dist/cjs/rules/requireParamName.d.ts +2 -0
  104. package/dist/cjs/rules/requireParamName.js +52 -0
  105. package/dist/cjs/rules/requireParamType.d.ts +2 -0
  106. package/dist/cjs/rules/requireParamType.js +77 -0
  107. package/dist/cjs/rules/requireProperty.d.ts +2 -0
  108. package/dist/cjs/rules/requireProperty.js +44 -0
  109. package/dist/cjs/rules/requirePropertyDescription.d.ts +2 -0
  110. package/dist/cjs/rules/requirePropertyDescription.js +22 -0
  111. package/dist/cjs/rules/requirePropertyName.d.ts +2 -0
  112. package/dist/cjs/rules/requirePropertyName.js +22 -0
  113. package/dist/cjs/rules/requirePropertyType.d.ts +2 -0
  114. package/dist/cjs/rules/requirePropertyType.js +22 -0
  115. package/dist/cjs/rules/requireReturns.d.ts +2 -0
  116. package/dist/cjs/rules/requireReturns.js +197 -0
  117. package/dist/cjs/rules/requireReturnsCheck.d.ts +2 -0
  118. package/dist/cjs/rules/requireReturnsCheck.js +108 -0
  119. package/dist/cjs/rules/requireReturnsDescription.d.ts +2 -0
  120. package/dist/cjs/rules/requireReturnsDescription.js +58 -0
  121. package/dist/cjs/rules/requireReturnsType.d.ts +2 -0
  122. package/dist/cjs/rules/requireReturnsType.js +52 -0
  123. package/dist/cjs/rules/requireTemplate.d.ts +2 -0
  124. package/dist/cjs/rules/requireTemplate.js +173 -0
  125. package/dist/cjs/rules/requireThrows.d.ts +2 -0
  126. package/dist/cjs/rules/requireThrows.js +101 -0
  127. package/dist/cjs/rules/requireYields.d.ts +2 -0
  128. package/dist/cjs/rules/requireYields.js +172 -0
  129. package/dist/cjs/rules/requireYieldsCheck.d.ts +2 -0
  130. package/dist/cjs/rules/requireYieldsCheck.js +164 -0
  131. package/dist/cjs/rules/sortTags.d.ts +2 -0
  132. package/dist/cjs/rules/sortTags.js +392 -0
  133. package/dist/cjs/rules/tagLines.d.ts +2 -0
  134. package/dist/cjs/rules/tagLines.js +259 -0
  135. package/dist/cjs/rules/textEscaping.d.ts +2 -0
  136. package/dist/cjs/rules/textEscaping.js +125 -0
  137. package/dist/cjs/rules/typeFormatting.d.ts +2 -0
  138. package/dist/cjs/rules/typeFormatting.js +328 -0
  139. package/dist/cjs/rules/validTypes.d.ts +2 -0
  140. package/dist/cjs/rules/validTypes.js +333 -0
  141. package/dist/cjs/tagNames.d.ts +15 -0
  142. package/dist/cjs/tagNames.js +209 -0
  143. package/dist/cjs/utils/hasReturnValue.d.ts +19 -0
  144. package/dist/cjs/utils/hasReturnValue.js +469 -0
  145. package/dist/getJsdocProcessorPlugin.cts +3 -0
  146. package/dist/index.cjs.cts +3 -0
  147. package/dist/iterateJsdoc.cts +6 -0
  148. package/dist/rules/typeFormatting.cjs +82 -38
  149. package/dist/rules/typeFormatting.cjs.map +1 -1
  150. package/dist/rules.d.ts +4 -7
  151. package/package.json +24 -13
  152. package/src/getJsdocProcessorPlugin.cts +3 -0
  153. package/src/index.cjs.cts +3 -0
  154. package/src/iterateJsdoc.cts +6 -0
  155. package/src/rules/typeFormatting.js +104 -40
  156. package/src/rules.d.ts +4 -7
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const iterateJsdoc_js_1 = __importDefault(require("../iterateJsdoc.js"));
7
+ exports.default = (0, iterateJsdoc_js_1.default)(({ context, jsdoc, utils, }) => {
8
+ const [mainCircumstance, { tags = null, } = {},] = context.options;
9
+ const tgs = /**
10
+ * @type {null|"any"|{[key: string]: "always"|"never"}}
11
+ */ (tags);
12
+ /**
13
+ * @param {import('@es-joy/jsdoccomment').JsdocTagWithInline} jsdocTag
14
+ * @param {string} targetTagName
15
+ * @param {"always"|"never"} [circumstance]
16
+ * @returns {void}
17
+ */
18
+ const checkHyphens = (jsdocTag, targetTagName, circumstance = mainCircumstance) => {
19
+ const always = !circumstance || circumstance === 'always';
20
+ const desc = /** @type {string} */ (utils.getTagDescription(jsdocTag));
21
+ if (!desc.trim()) {
22
+ return;
23
+ }
24
+ const startsWithHyphen = (/^\s*-/v).test(desc);
25
+ const hyphenNewline = (/^\s*-\n/v).test(desc);
26
+ let lines = 0;
27
+ for (const { tokens, } of jsdocTag.source) {
28
+ if (tokens.description) {
29
+ break;
30
+ }
31
+ lines++;
32
+ }
33
+ if (always && !hyphenNewline) {
34
+ if (!startsWithHyphen) {
35
+ let fixIt = true;
36
+ for (const { tokens, } of jsdocTag.source) {
37
+ if (tokens.description) {
38
+ tokens.description = tokens.description.replace(/^(\s*)/v, '$1- ');
39
+ break;
40
+ }
41
+ // Linebreak after name since has no description
42
+ if (tokens.name) {
43
+ fixIt = false;
44
+ break;
45
+ }
46
+ }
47
+ if (fixIt) {
48
+ utils.reportJSDoc(`There must be a hyphen before @${targetTagName} description.`, {
49
+ line: jsdocTag.source[0].number + lines,
50
+ }, () => { });
51
+ }
52
+ }
53
+ }
54
+ else if (startsWithHyphen) {
55
+ utils.reportJSDoc(always ?
56
+ `There must be no hyphen followed by newline after the @${targetTagName} name.` :
57
+ `There must be no hyphen before @${targetTagName} description.`, {
58
+ line: jsdocTag.source[0].number + lines,
59
+ }, () => {
60
+ for (const { tokens, } of jsdocTag.source) {
61
+ if (tokens.description) {
62
+ tokens.description = tokens.description.replace(/^\s*-\s*/v, '');
63
+ if (hyphenNewline) {
64
+ tokens.postName = '';
65
+ }
66
+ break;
67
+ }
68
+ }
69
+ }, true);
70
+ }
71
+ };
72
+ utils.forEachPreferredTag('param', checkHyphens);
73
+ if (tgs) {
74
+ const tagEntries = Object.entries(tgs);
75
+ for (const [tagName, circumstance,] of tagEntries) {
76
+ if (tagName === '*') {
77
+ const preferredParamTag = utils.getPreferredTagName({
78
+ tagName: 'param',
79
+ });
80
+ for (const { tag, } of jsdoc.tags) {
81
+ if (tag === preferredParamTag || tagEntries.some(([tagNme,]) => {
82
+ return tagNme !== '*' && tagNme === tag;
83
+ })) {
84
+ continue;
85
+ }
86
+ utils.forEachPreferredTag(tag, (jsdocTag, targetTagName) => {
87
+ checkHyphens(jsdocTag, targetTagName,
88
+ /** @type {"always"|"never"} */ (circumstance));
89
+ });
90
+ }
91
+ continue;
92
+ }
93
+ utils.forEachPreferredTag(tagName, (jsdocTag, targetTagName) => {
94
+ checkHyphens(jsdocTag, targetTagName,
95
+ /** @type {"always"|"never"} */ (circumstance));
96
+ });
97
+ }
98
+ }
99
+ }, {
100
+ iterateAllJsdocs: true,
101
+ meta: {
102
+ docs: {
103
+ description: 'Requires a hyphen before the `@param` description.',
104
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-hyphen-before-param-description.md#repos-sticky-header',
105
+ },
106
+ fixable: 'code',
107
+ schema: [
108
+ {
109
+ enum: [
110
+ 'always', 'never',
111
+ ],
112
+ type: 'string',
113
+ },
114
+ {
115
+ additionalProperties: false,
116
+ properties: {
117
+ tags: {
118
+ anyOf: [
119
+ {
120
+ patternProperties: {
121
+ '.*': {
122
+ enum: [
123
+ 'always', 'never',
124
+ ],
125
+ type: 'string',
126
+ },
127
+ },
128
+ type: 'object',
129
+ },
130
+ {
131
+ enum: [
132
+ 'any',
133
+ ],
134
+ type: 'string',
135
+ },
136
+ ],
137
+ },
138
+ },
139
+ type: 'object',
140
+ },
141
+ ],
142
+ type: 'layout',
143
+ },
144
+ });
@@ -0,0 +1,25 @@
1
+ declare const _default: {
2
+ create(context: import("eslint").Rule.RuleContext): {};
3
+ meta: {
4
+ docs: {
5
+ category: string;
6
+ description: string;
7
+ recommended: boolean;
8
+ url: string;
9
+ };
10
+ fixable: "code";
11
+ messages: {
12
+ missingJsDoc: string;
13
+ };
14
+ schema: import("json-schema").JSONSchema4[];
15
+ type: "suggestion";
16
+ };
17
+ };
18
+ export default _default;
19
+ export type RequireJsdocOpts = {
20
+ ancestorsOnly: boolean;
21
+ esm: boolean;
22
+ initModuleExports: boolean;
23
+ initWindow: boolean;
24
+ };
25
+ export type ESLintOrTSNode = import("eslint").Rule.Node | import("@typescript-eslint/types").TSESTree.Node;