eslint-plugin-jsdoc 46.4.6 → 46.5.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 (187) hide show
  1. package/README.md +31 -0
  2. package/dist/index.js +21 -10
  3. package/dist/index.js.map +1 -1
  4. package/package.json +14 -12
  5. package/dist/WarnSettings.d.ts +0 -17
  6. package/dist/WarnSettings.d.ts.map +0 -1
  7. package/dist/alignTransform.d.ts +0 -32
  8. package/dist/alignTransform.d.ts.map +0 -1
  9. package/dist/defaultTagOrder.d.ts +0 -5
  10. package/dist/defaultTagOrder.d.ts.map +0 -1
  11. package/dist/exportParser.d.ts +0 -41
  12. package/dist/exportParser.d.ts.map +0 -1
  13. package/dist/getDefaultTagStructureForMode.d.ts +0 -11
  14. package/dist/getDefaultTagStructureForMode.d.ts.map +0 -1
  15. package/dist/index.d.ts +0 -10
  16. package/dist/index.d.ts.map +0 -1
  17. package/dist/iterateJsdoc.d.ts +0 -460
  18. package/dist/iterateJsdoc.d.ts.map +0 -1
  19. package/dist/jsdocUtils.d.ts +0 -421
  20. package/dist/jsdocUtils.d.ts.map +0 -1
  21. package/dist/rules/checkAccess.d.ts +0 -3
  22. package/dist/rules/checkAccess.d.ts.map +0 -1
  23. package/dist/rules/checkAlignment.d.ts +0 -3
  24. package/dist/rules/checkAlignment.d.ts.map +0 -1
  25. package/dist/rules/checkExamples.d.ts +0 -4
  26. package/dist/rules/checkExamples.d.ts.map +0 -1
  27. package/dist/rules/checkIndentation.d.ts +0 -3
  28. package/dist/rules/checkIndentation.d.ts.map +0 -1
  29. package/dist/rules/checkLineAlignment.d.ts +0 -10
  30. package/dist/rules/checkLineAlignment.d.ts.map +0 -1
  31. package/dist/rules/checkParamNames.d.ts +0 -3
  32. package/dist/rules/checkParamNames.d.ts.map +0 -1
  33. package/dist/rules/checkPropertyNames.d.ts +0 -3
  34. package/dist/rules/checkPropertyNames.d.ts.map +0 -1
  35. package/dist/rules/checkSyntax.d.ts +0 -3
  36. package/dist/rules/checkSyntax.d.ts.map +0 -1
  37. package/dist/rules/checkTagNames.d.ts +0 -3
  38. package/dist/rules/checkTagNames.d.ts.map +0 -1
  39. package/dist/rules/checkTypes.d.ts +0 -3
  40. package/dist/rules/checkTypes.d.ts.map +0 -1
  41. package/dist/rules/checkValues.d.ts +0 -3
  42. package/dist/rules/checkValues.d.ts.map +0 -1
  43. package/dist/rules/emptyTags.d.ts +0 -3
  44. package/dist/rules/emptyTags.d.ts.map +0 -1
  45. package/dist/rules/implementsOnClasses.d.ts +0 -3
  46. package/dist/rules/implementsOnClasses.d.ts.map +0 -1
  47. package/dist/rules/importsAsDependencies.d.ts +0 -3
  48. package/dist/rules/importsAsDependencies.d.ts.map +0 -1
  49. package/dist/rules/informativeDocs.d.ts +0 -3
  50. package/dist/rules/informativeDocs.d.ts.map +0 -1
  51. package/dist/rules/matchDescription.d.ts +0 -3
  52. package/dist/rules/matchDescription.d.ts.map +0 -1
  53. package/dist/rules/matchName.d.ts +0 -3
  54. package/dist/rules/matchName.d.ts.map +0 -1
  55. package/dist/rules/multilineBlocks.d.ts +0 -3
  56. package/dist/rules/multilineBlocks.d.ts.map +0 -1
  57. package/dist/rules/noBadBlocks.d.ts +0 -3
  58. package/dist/rules/noBadBlocks.d.ts.map +0 -1
  59. package/dist/rules/noBlankBlockDescriptions.d.ts +0 -3
  60. package/dist/rules/noBlankBlockDescriptions.d.ts.map +0 -1
  61. package/dist/rules/noBlankBlocks.d.ts +0 -3
  62. package/dist/rules/noBlankBlocks.d.ts.map +0 -1
  63. package/dist/rules/noDefaults.d.ts +0 -3
  64. package/dist/rules/noDefaults.d.ts.map +0 -1
  65. package/dist/rules/noMissingSyntax.d.ts +0 -10
  66. package/dist/rules/noMissingSyntax.d.ts.map +0 -1
  67. package/dist/rules/noMultiAsterisks.d.ts +0 -3
  68. package/dist/rules/noMultiAsterisks.d.ts.map +0 -1
  69. package/dist/rules/noRestrictedSyntax.d.ts +0 -3
  70. package/dist/rules/noRestrictedSyntax.d.ts.map +0 -1
  71. package/dist/rules/noTypes.d.ts +0 -3
  72. package/dist/rules/noTypes.d.ts.map +0 -1
  73. package/dist/rules/noUndefinedTypes.d.ts +0 -3
  74. package/dist/rules/noUndefinedTypes.d.ts.map +0 -1
  75. package/dist/rules/requireAsteriskPrefix.d.ts +0 -3
  76. package/dist/rules/requireAsteriskPrefix.d.ts.map +0 -1
  77. package/dist/rules/requireDescription.d.ts +0 -3
  78. package/dist/rules/requireDescription.d.ts.map +0 -1
  79. package/dist/rules/requireDescriptionCompleteSentence.d.ts +0 -3
  80. package/dist/rules/requireDescriptionCompleteSentence.d.ts.map +0 -1
  81. package/dist/rules/requireExample.d.ts +0 -3
  82. package/dist/rules/requireExample.d.ts.map +0 -1
  83. package/dist/rules/requireFileOverview.d.ts +0 -3
  84. package/dist/rules/requireFileOverview.d.ts.map +0 -1
  85. package/dist/rules/requireHyphenBeforeParamDescription.d.ts +0 -3
  86. package/dist/rules/requireHyphenBeforeParamDescription.d.ts.map +0 -1
  87. package/dist/rules/requireJsdoc.d.ts +0 -9
  88. package/dist/rules/requireJsdoc.d.ts.map +0 -1
  89. package/dist/rules/requireParam.d.ts +0 -4
  90. package/dist/rules/requireParam.d.ts.map +0 -1
  91. package/dist/rules/requireParamDescription.d.ts +0 -3
  92. package/dist/rules/requireParamDescription.d.ts.map +0 -1
  93. package/dist/rules/requireParamName.d.ts +0 -3
  94. package/dist/rules/requireParamName.d.ts.map +0 -1
  95. package/dist/rules/requireParamType.d.ts +0 -3
  96. package/dist/rules/requireParamType.d.ts.map +0 -1
  97. package/dist/rules/requireProperty.d.ts +0 -3
  98. package/dist/rules/requireProperty.d.ts.map +0 -1
  99. package/dist/rules/requirePropertyDescription.d.ts +0 -3
  100. package/dist/rules/requirePropertyDescription.d.ts.map +0 -1
  101. package/dist/rules/requirePropertyName.d.ts +0 -3
  102. package/dist/rules/requirePropertyName.d.ts.map +0 -1
  103. package/dist/rules/requirePropertyType.d.ts +0 -3
  104. package/dist/rules/requirePropertyType.d.ts.map +0 -1
  105. package/dist/rules/requireReturns.d.ts +0 -3
  106. package/dist/rules/requireReturns.d.ts.map +0 -1
  107. package/dist/rules/requireReturnsCheck.d.ts +0 -3
  108. package/dist/rules/requireReturnsCheck.d.ts.map +0 -1
  109. package/dist/rules/requireReturnsDescription.d.ts +0 -3
  110. package/dist/rules/requireReturnsDescription.d.ts.map +0 -1
  111. package/dist/rules/requireReturnsType.d.ts +0 -3
  112. package/dist/rules/requireReturnsType.d.ts.map +0 -1
  113. package/dist/rules/requireThrows.d.ts +0 -3
  114. package/dist/rules/requireThrows.d.ts.map +0 -1
  115. package/dist/rules/requireYields.d.ts +0 -3
  116. package/dist/rules/requireYields.d.ts.map +0 -1
  117. package/dist/rules/requireYieldsCheck.d.ts +0 -3
  118. package/dist/rules/requireYieldsCheck.d.ts.map +0 -1
  119. package/dist/rules/sortTags.d.ts +0 -3
  120. package/dist/rules/sortTags.d.ts.map +0 -1
  121. package/dist/rules/tagLines.d.ts +0 -3
  122. package/dist/rules/tagLines.d.ts.map +0 -1
  123. package/dist/rules/textEscaping.d.ts +0 -3
  124. package/dist/rules/textEscaping.d.ts.map +0 -1
  125. package/dist/rules/validTypes.d.ts +0 -3
  126. package/dist/rules/validTypes.d.ts.map +0 -1
  127. package/dist/tagNames.d.ts +0 -16
  128. package/dist/tagNames.d.ts.map +0 -1
  129. package/dist/utils/hasReturnValue.d.ts +0 -20
  130. package/dist/utils/hasReturnValue.d.ts.map +0 -1
  131. package/docs/advanced.md +0 -102
  132. package/docs/rules/check-access.md +0 -193
  133. package/docs/rules/check-alignment.md +0 -169
  134. package/docs/rules/check-examples.md +0 -784
  135. package/docs/rules/check-indentation.md +0 -296
  136. package/docs/rules/check-line-alignment.md +0 -1002
  137. package/docs/rules/check-param-names.md +0 -1035
  138. package/docs/rules/check-property-names.md +0 -244
  139. package/docs/rules/check-syntax.md +0 -80
  140. package/docs/rules/check-tag-names.md +0 -1132
  141. package/docs/rules/check-types.md +0 -1198
  142. package/docs/rules/check-values.md +0 -409
  143. package/docs/rules/empty-tags.md +0 -220
  144. package/docs/rules/implements-on-classes.md +0 -219
  145. package/docs/rules/imports-as-dependencies.md +0 -99
  146. package/docs/rules/informative-docs.md +0 -400
  147. package/docs/rules/match-description.md +0 -1008
  148. package/docs/rules/match-name.md +0 -249
  149. package/docs/rules/multiline-blocks.md +0 -398
  150. package/docs/rules/no-bad-blocks.md +0 -174
  151. package/docs/rules/no-blank-block-descriptions.md +0 -91
  152. package/docs/rules/no-blank-blocks.md +0 -98
  153. package/docs/rules/no-defaults.md +0 -207
  154. package/docs/rules/no-missing-syntax.md +0 -275
  155. package/docs/rules/no-multi-asterisks.md +0 -278
  156. package/docs/rules/no-restricted-syntax.md +0 -383
  157. package/docs/rules/no-types.md +0 -168
  158. package/docs/rules/no-undefined-types.md +0 -789
  159. package/docs/rules/require-asterisk-prefix.md +0 -297
  160. package/docs/rules/require-description-complete-sentence.md +0 -820
  161. package/docs/rules/require-description.md +0 -585
  162. package/docs/rules/require-example.md +0 -390
  163. package/docs/rules/require-file-overview.md +0 -324
  164. package/docs/rules/require-hyphen-before-param-description.md +0 -281
  165. package/docs/rules/require-jsdoc.md +0 -1857
  166. package/docs/rules/require-param-description.md +0 -238
  167. package/docs/rules/require-param-name.md +0 -163
  168. package/docs/rules/require-param-type.md +0 -227
  169. package/docs/rules/require-param.md +0 -1820
  170. package/docs/rules/require-property-description.md +0 -88
  171. package/docs/rules/require-property-name.md +0 -79
  172. package/docs/rules/require-property-type.md +0 -79
  173. package/docs/rules/require-property.md +0 -128
  174. package/docs/rules/require-returns-check.md +0 -1053
  175. package/docs/rules/require-returns-description.md +0 -181
  176. package/docs/rules/require-returns-type.md +0 -144
  177. package/docs/rules/require-returns.md +0 -1191
  178. package/docs/rules/require-throws.md +0 -326
  179. package/docs/rules/require-yields-check.md +0 -544
  180. package/docs/rules/require-yields.md +0 -823
  181. package/docs/rules/sort-tags.md +0 -635
  182. package/docs/rules/tag-lines.md +0 -551
  183. package/docs/rules/text-escaping.md +0 -177
  184. package/docs/rules/valid-types.md +0 -881
  185. package/docs/settings.md +0 -362
  186. package/tsconfig-prod.json +0 -20
  187. package/tsconfig.json +0 -21
@@ -1,1191 +0,0 @@
1
- <a name="user-content-require-returns"></a>
2
- <a name="require-returns"></a>
3
- # <code>require-returns</code>
4
-
5
- * [Options](#user-content-require-returns-options)
6
- * [Context and settings](#user-content-require-returns-context-and-settings)
7
- * [Failing examples](#user-content-require-returns-failing-examples)
8
- * [Passing examples](#user-content-require-returns-passing-examples)
9
-
10
-
11
- Requires that return statements are documented.
12
-
13
- Will also report if multiple `@returns` tags are present.
14
-
15
- <a name="user-content-require-returns-options"></a>
16
- <a name="require-returns-options"></a>
17
- ## Options
18
-
19
- - `checkConstructors` - A value indicating whether `constructor`s should
20
- be checked for `@returns` tags. Defaults to `false`.
21
- - `checkGetters` - Boolean to determine whether getter methods should
22
- be checked for `@returns` tags. Defaults to `true`.
23
- - `exemptedBy` - Array of tags (e.g., `['type']`) whose presence on the
24
- document block avoids the need for a `@returns`. Defaults to an array
25
- with `inheritdoc`. If you set this array, it will overwrite the default,
26
- so be sure to add back `inheritdoc` if you wish its presence to cause
27
- exemption of the rule.
28
- - `forceRequireReturn` - Set to `true` to always insist on
29
- `@returns` documentation regardless of implicit or explicit `return`'s
30
- in the function. May be desired to flag that a project is aware of an
31
- `undefined`/`void` return. Defaults to `false`.
32
- - `forceReturnsWithAsync` - By default `async` functions that do not explicitly
33
- return a value pass this rule as an `async` function will always return a
34
- `Promise`, even if the `Promise` resolves to void. You can force all
35
- `async` functions (including ones with an explicit `Promise` but no
36
- detected non-`undefined` `resolve` value) to require `@return`
37
- documentation by setting `forceReturnsWithAsync` to `true` on the options
38
- object. This may be useful for flagging that there has been consideration
39
- of return type. Defaults to `false`.
40
- - `contexts` - Set this to an array of strings representing the AST context
41
- (or an object with `context` and `comment` properties) where you wish
42
- the rule to be applied.
43
- Overrides the default contexts (see below). Set to `"any"` if you want
44
- the rule to apply to any jsdoc block throughout your files (as is necessary
45
- for finding function blocks not attached to a function declaration or
46
- expression, i.e., `@callback` or `@function` (or its aliases `@func` or
47
- `@method`) (including those associated with an `@interface`). This
48
- rule will only apply on non-default contexts when there is such a tag
49
- present and the `forceRequireReturn` option is set or if the
50
- `forceReturnsWithAsync` option is set with a present `@async` tag
51
- (since we are not checking against the actual `return` values in these
52
- cases).
53
-
54
- <a name="user-content-require-returns-context-and-settings"></a>
55
- <a name="require-returns-context-and-settings"></a>
56
- ## Context and settings
57
-
58
- | | |
59
- | -------- | ------- |
60
- | Context | `ArrowFunctionExpression`, `FunctionDeclaration`, `FunctionExpression`; others when `contexts` option enabled |
61
- | Tags | `returns` |
62
- | Aliases | `return` |
63
- |Recommended|true|
64
- | Options |`checkConstructors`, `checkGetters`, `contexts`, `exemptedBy`, `forceRequireReturn`, `forceReturnsWithAsync`|
65
- | Settings | `ignoreReplacesDocs`, `overrideReplacesDocs`, `augmentsExtendsReplacesDocs`, `implementsReplacesDocs` |
66
-
67
- <a name="user-content-require-returns-failing-examples"></a>
68
- <a name="require-returns-failing-examples"></a>
69
- ## Failing examples
70
-
71
- The following patterns are considered problems:
72
-
73
- ````js
74
- /**
75
- *
76
- */
77
- function quux (foo) {
78
-
79
- return foo;
80
- }
81
- // Message: Missing JSDoc @returns declaration.
82
-
83
- /**
84
- *
85
- */
86
- const foo = () => ({
87
- bar: 'baz'
88
- })
89
- // Message: Missing JSDoc @returns declaration.
90
-
91
- /**
92
- *
93
- */
94
- const foo = bar=>({ bar })
95
- // Message: Missing JSDoc @returns declaration.
96
-
97
- /**
98
- *
99
- */
100
- const foo = bar => bar.baz()
101
- // Message: Missing JSDoc @returns declaration.
102
-
103
- /**
104
- *
105
- */
106
- function quux (foo) {
107
-
108
- return foo;
109
- }
110
- // Settings: {"jsdoc":{"tagNamePreference":{"returns":"return"}}}
111
- // Message: Missing JSDoc @return declaration.
112
-
113
- /**
114
- *
115
- */
116
- async function quux() {
117
- }
118
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
119
- // Message: Missing JSDoc @returns declaration.
120
-
121
- /**
122
- *
123
- */
124
- const quux = async function () {}
125
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
126
- // Message: Missing JSDoc @returns declaration.
127
-
128
- /**
129
- *
130
- */
131
- const quux = async () => {}
132
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
133
- // Message: Missing JSDoc @returns declaration.
134
-
135
- /**
136
- *
137
- */
138
- async function quux () {}
139
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
140
- // Message: Missing JSDoc @returns declaration.
141
-
142
- /**
143
- *
144
- */
145
- function quux () {
146
- }
147
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
148
- // Message: Missing JSDoc @returns declaration.
149
-
150
- /**
151
- *
152
- */
153
- function quux () {
154
- }
155
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"],"forceRequireReturn":true}]
156
- // Message: Missing JSDoc @returns declaration.
157
-
158
- /**
159
- * @function
160
- */
161
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"],"forceRequireReturn":true}]
162
- // Message: Missing JSDoc @returns declaration.
163
-
164
- /**
165
- * @callback
166
- */
167
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"],"forceRequireReturn":true}]
168
- // Message: Missing JSDoc @returns declaration.
169
-
170
- const language = {
171
- /**
172
- * @param {string} name
173
- */
174
- get name() {
175
- return this._name;
176
- }
177
- }
178
- // Message: Missing JSDoc @returns declaration.
179
-
180
- /**
181
- *
182
- */
183
- async function quux () {
184
- }
185
- // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
186
- // Message: Missing JSDoc @returns declaration.
187
-
188
- /**
189
- * @function
190
- * @async
191
- */
192
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"],"forceReturnsWithAsync":true}]
193
- // Message: Missing JSDoc @returns declaration.
194
-
195
- /**
196
- * @callback
197
- * @async
198
- */
199
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"],"forceReturnsWithAsync":true}]
200
- // Message: Missing JSDoc @returns declaration.
201
-
202
- /**
203
- * @returns {undefined}
204
- * @returns {void}
205
- */
206
- function quux (foo) {
207
-
208
- return foo;
209
- }
210
- // Message: Found more than one @returns declaration.
211
-
212
- /**
213
- * @returns
214
- */
215
- function quux () {
216
-
217
- }
218
- // Settings: {"jsdoc":{"tagNamePreference":{"returns":false}}}
219
- // Message: Unexpected tag `@returns`
220
-
221
- /**
222
- * @param foo
223
- */
224
- function quux (foo) {
225
- return 'bar';
226
- }
227
- // "jsdoc/require-returns": ["error"|"warn", {"exemptedBy":["notPresent"]}]
228
- // Message: Missing JSDoc @returns declaration.
229
-
230
- /**
231
- * @param {array} a
232
- */
233
- async function foo(a) {
234
- return;
235
- }
236
- // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
237
- // Message: Missing JSDoc @returns declaration.
238
-
239
- /**
240
- * @param {array} a
241
- */
242
- async function foo(a) {
243
- return Promise.all(a);
244
- }
245
- // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
246
- // Message: Missing JSDoc @returns declaration.
247
-
248
- class foo {
249
- /** gets bar */
250
- get bar() {
251
- return 0;
252
- }
253
- }
254
- // "jsdoc/require-returns": ["error"|"warn", {"checkGetters":true}]
255
- // Message: Missing JSDoc @returns declaration.
256
-
257
- class TestClass {
258
- /**
259
- *
260
- */
261
- constructor() {
262
- return new Map();
263
- }
264
- }
265
- // "jsdoc/require-returns": ["error"|"warn", {"checkConstructors":true}]
266
- // Message: Missing JSDoc @returns declaration.
267
-
268
- class TestClass {
269
- /**
270
- *
271
- */
272
- get Test() {
273
- return 0;
274
- }
275
- }
276
- // "jsdoc/require-returns": ["error"|"warn", {"checkGetters":true}]
277
- // Message: Missing JSDoc @returns declaration.
278
-
279
- class quux {
280
- /**
281
- *
282
- */
283
- quux () {
284
- }
285
- }
286
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"],"forceRequireReturn":true}]
287
- // Message: Missing JSDoc @returns declaration.
288
-
289
- /**
290
- *
291
- */
292
- function quux (foo) {
293
-
294
- return new Promise(function (resolve, reject) {
295
- resolve(foo);
296
- });
297
- }
298
- // Message: Missing JSDoc @returns declaration.
299
-
300
- /**
301
- *
302
- */
303
- function quux (foo) {
304
-
305
- return new Promise(function (resolve, reject) {
306
- setTimeout(() => {
307
- resolve(true);
308
- });
309
- });
310
- }
311
- // Message: Missing JSDoc @returns declaration.
312
-
313
- /**
314
- *
315
- */
316
- function quux (foo) {
317
-
318
- return new Promise(function (resolve, reject) {
319
- foo(resolve);
320
- });
321
- }
322
- // Message: Missing JSDoc @returns declaration.
323
-
324
- /**
325
- *
326
- */
327
- function quux () {
328
- return new Promise((resolve, reject) => {
329
- while(true) {
330
- resolve(true);
331
- }
332
- });
333
- }
334
- // Message: Missing JSDoc @returns declaration.
335
-
336
- /**
337
- *
338
- */
339
- function quux () {
340
- return new Promise((resolve, reject) => {
341
- do {
342
- resolve(true);
343
- }
344
- while(true)
345
- });
346
- }
347
- // Message: Missing JSDoc @returns declaration.
348
-
349
- /**
350
- *
351
- */
352
- function quux () {
353
- return new Promise((resolve, reject) => {
354
- if (true) {
355
- resolve(true);
356
- }
357
- return;
358
- });
359
- }
360
- // Message: Missing JSDoc @returns declaration.
361
-
362
- /**
363
- *
364
- */
365
- function quux () {
366
- return new Promise((resolve, reject) => {
367
- if (true) {
368
- resolve(true);
369
- }
370
- });
371
- }
372
- // Message: Missing JSDoc @returns declaration.
373
-
374
- /**
375
- *
376
- */
377
- function quux () {
378
- var a = {};
379
- return new Promise((resolve, reject) => {
380
- with (a) {
381
- resolve(true);
382
- }
383
- });
384
- }
385
- // Message: Missing JSDoc @returns declaration.
386
-
387
- /**
388
- *
389
- */
390
- function quux () {
391
- var a = {};
392
- return new Promise((resolve, reject) => {
393
- try {
394
- resolve(true);
395
- } catch (err) {}
396
- });
397
- }
398
- // Message: Missing JSDoc @returns declaration.
399
-
400
- /**
401
- *
402
- */
403
- function quux () {
404
- var a = {};
405
- return new Promise((resolve, reject) => {
406
- try {
407
- } catch (err) {
408
- resolve(true);
409
- }
410
- });
411
- }
412
- // Message: Missing JSDoc @returns declaration.
413
-
414
- /**
415
- *
416
- */
417
- function quux () {
418
- var a = {};
419
- return new Promise((resolve, reject) => {
420
- try {
421
- } catch (err) {
422
- } finally {
423
- resolve(true);
424
- }
425
- });
426
- }
427
- // Message: Missing JSDoc @returns declaration.
428
-
429
- /**
430
- *
431
- */
432
- function quux () {
433
- var a = {};
434
- return new Promise((resolve, reject) => {
435
- switch (a) {
436
- case 'abc':
437
- resolve(true);
438
- }
439
- });
440
- }
441
- // Message: Missing JSDoc @returns declaration.
442
-
443
- /**
444
- *
445
- */
446
- function quux () {
447
- return new Promise((resolve, reject) => {
448
- if (true) {
449
- resolve();
450
- } else {
451
- resolve(true);
452
- }
453
- });
454
- }
455
- // Message: Missing JSDoc @returns declaration.
456
-
457
- /**
458
- *
459
- */
460
- function quux () {
461
- return new Promise((resolve, reject) => {
462
- for (let i = 0; i < 5 ; i++) {
463
- resolve(true);
464
- }
465
- });
466
- }
467
- // Message: Missing JSDoc @returns declaration.
468
-
469
- /**
470
- *
471
- */
472
- function quux () {
473
- return new Promise((resolve, reject) => {
474
- for (const i of obj) {
475
- resolve(true);
476
- }
477
- });
478
- }
479
- // Message: Missing JSDoc @returns declaration.
480
-
481
- /**
482
- *
483
- */
484
- function quux () {
485
- return new Promise((resolve, reject) => {
486
- for (const i in obj) {
487
- resolve(true);
488
- }
489
- });
490
- }
491
- // Message: Missing JSDoc @returns declaration.
492
-
493
- /**
494
- *
495
- */
496
- function quux () {
497
- return new Promise((resolve, reject) => {
498
- if (true) {
499
- return;
500
- } else {
501
- resolve(true);
502
- }
503
- });
504
- }
505
- // Message: Missing JSDoc @returns declaration.
506
-
507
- /**
508
- *
509
- */
510
- function quux () {
511
- return new Promise((resolve, reject) => {
512
- function a () {
513
- resolve(true);
514
- }
515
- a();
516
- });
517
- }
518
- // Message: Missing JSDoc @returns declaration.
519
-
520
- /**
521
- *
522
- */
523
- function quux () {
524
- return new Promise();
525
- }
526
- // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
527
- // Message: Missing JSDoc @returns declaration.
528
-
529
- /**
530
- *
531
- */
532
- async function quux () {
533
- return new Promise();
534
- }
535
- // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
536
- // Message: Missing JSDoc @returns declaration.
537
-
538
- /**
539
- *
540
- */
541
- async function quux () {
542
- return new Promise((resolve, reject) => {});
543
- }
544
- // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
545
- // Message: Missing JSDoc @returns declaration.
546
-
547
- export class A {
548
- /**
549
- * Description.
550
- */
551
- public f(): string {
552
- return "";
553
- }
554
- }
555
-
556
- export interface B {
557
- /**
558
- * Description.
559
- */
560
- f(): string;
561
-
562
- /**
563
- * Description.
564
- */
565
- g: () => string;
566
-
567
- /**
568
- * Description.
569
- */
570
- h(): void;
571
-
572
- /**
573
- * Description.
574
- */
575
- i: () => void;
576
- }
577
-
578
- /**
579
- * Description.
580
- */
581
- export function f(): string {
582
- return "";
583
- }
584
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":[":not(BlockStatement) > FunctionDeclaration","MethodDefinition","TSMethodSignature","TSPropertySignature > TSTypeAnnotation > TSFunctionType"]}]
585
- // Message: Missing JSDoc @returns declaration.
586
-
587
- /**
588
- * @param ms time in millis
589
- */
590
- export const sleep = (ms: number) =>
591
- new Promise<string>((res) => setTimeout(res, ms));
592
- // Message: Missing JSDoc @returns declaration.
593
-
594
- /**
595
- * @param ms time in millis
596
- */
597
- export const sleep = (ms: number) => {
598
- return new Promise<string>((res) => setTimeout(res, ms));
599
- };
600
- // Message: Missing JSDoc @returns declaration.
601
-
602
- /**
603
- * Reads a test fixture.
604
- */
605
- export function readFixture(path: string): Promise<Buffer>;
606
- // Message: Missing JSDoc @returns declaration.
607
-
608
- /**
609
- * Reads a test fixture.
610
- */
611
- export function readFixture(path: string): void;
612
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
613
- // Message: Missing JSDoc @returns declaration.
614
-
615
- /**
616
- * Reads a test fixture.
617
- */
618
- export function readFixture(path: string);
619
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
620
- // Message: Missing JSDoc @returns declaration.
621
-
622
- /**
623
- * @param {array} a
624
- */
625
- async function foo(a) {
626
- return Promise.all(a);
627
- }
628
- // Message: Missing JSDoc @returns declaration.
629
-
630
- /**
631
- * Description.
632
- */
633
- export default async function demo() {
634
- return true;
635
- }
636
- // Message: Missing JSDoc @returns declaration.
637
-
638
- /**
639
- *
640
- */
641
- function quux () {}
642
-
643
- class Test {
644
- /**
645
- *
646
- */
647
- abstract Test(): string;
648
- }
649
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["FunctionDeclaration",{"context":"TSEmptyBodyFunctionExpression","forceRequireReturn":true}]}]
650
- // Message: Missing JSDoc @returns declaration.
651
- ````
652
-
653
-
654
-
655
- <a name="user-content-require-returns-passing-examples"></a>
656
- <a name="require-returns-passing-examples"></a>
657
- ## Passing examples
658
-
659
- The following patterns are not considered problems:
660
-
661
- ````js
662
- /**
663
- * @returns Foo.
664
- */
665
- function quux () {
666
-
667
- return foo;
668
- }
669
-
670
- /**
671
- * @returns Foo.
672
- */
673
- function quux () {
674
-
675
- return foo;
676
- }
677
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"]}]
678
-
679
- /**
680
- *
681
- */
682
- function quux () {
683
- }
684
-
685
- /**
686
- *
687
- */
688
- function quux (bar) {
689
- bar.filter(baz => {
690
- return baz.corge();
691
- })
692
- }
693
-
694
- /**
695
- * @returns Array
696
- */
697
- function quux (bar) {
698
- return bar.filter(baz => {
699
- return baz.corge();
700
- })
701
- }
702
-
703
- /**
704
- * @returns Array
705
- */
706
- const quux = (bar) => bar.filter(({ corge }) => corge())
707
-
708
- /**
709
- * @inheritdoc
710
- */
711
- function quux (foo) {
712
- }
713
-
714
- /**
715
- * @override
716
- */
717
- function quux (foo) {
718
- }
719
-
720
- /**
721
- * @constructor
722
- */
723
- function quux (foo) {
724
- return true;
725
- }
726
-
727
- /**
728
- * @implements
729
- */
730
- function quux (foo) {
731
- return true;
732
- }
733
-
734
- /**
735
- * @override
736
- */
737
- function quux (foo) {
738
-
739
- return foo;
740
- }
741
-
742
- /**
743
- * @class
744
- */
745
- function quux (foo) {
746
- return true;
747
- }
748
-
749
- /**
750
- * @constructor
751
- */
752
- function quux (foo) {
753
-
754
- }
755
-
756
- /**
757
- * @returns {object}
758
- */
759
- function quux () {
760
-
761
- return {a: foo};
762
- }
763
-
764
- /**
765
- * @returns {object}
766
- */
767
- const quux = () => ({a: foo});
768
-
769
- /**
770
- * @returns {object}
771
- */
772
- const quux = () => {
773
- return {a: foo}
774
- };
775
-
776
- /**
777
- * @returns {void}
778
- */
779
- function quux () {
780
- }
781
-
782
- /**
783
- * @returns {void}
784
- */
785
- const quux = () => {
786
-
787
- }
788
-
789
- /**
790
- * @returns {undefined}
791
- */
792
- function quux () {
793
- }
794
-
795
- /**
796
- * @returns {undefined}
797
- */
798
- const quux = () => {
799
-
800
- }
801
-
802
- /**
803
- *
804
- */
805
- function quux () {
806
- }
807
-
808
- /**
809
- *
810
- */
811
- const quux = () => {
812
-
813
- }
814
-
815
- class Foo {
816
- /**
817
- *
818
- */
819
- constructor () {
820
- }
821
- }
822
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
823
-
824
- const language = {
825
- /**
826
- * @param {string} name
827
- */
828
- set name(name) {
829
- this._name = name;
830
- }
831
- }
832
-
833
- /**
834
- * @returns {void}
835
- */
836
- function quux () {
837
- }
838
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
839
-
840
- /**
841
- * @returns {void}
842
- */
843
- function quux () {
844
- return undefined;
845
- }
846
-
847
- /**
848
- * @returns {void}
849
- */
850
- function quux () {
851
- return undefined;
852
- }
853
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
854
-
855
- /**
856
- * @returns {void}
857
- */
858
- function quux () {
859
- return;
860
- }
861
-
862
- /**
863
- * @returns {void}
864
- */
865
- function quux () {
866
- }
867
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
868
-
869
- /**
870
- * @returns {void}
871
- */
872
- function quux () {
873
- return;
874
- }
875
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
876
-
877
- /** @type {RequestHandler} */
878
- function quux (req, res , next) {
879
- return;
880
- }
881
-
882
- /**
883
- * @returns {Promise}
884
- */
885
- async function quux () {
886
- }
887
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
888
-
889
- /**
890
- * @returns {Promise}
891
- */
892
- async function quux () {
893
- }
894
- // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
895
-
896
- /**
897
- *
898
- */
899
- async function quux () {}
900
-
901
- /**
902
- *
903
- */
904
- const quux = async function () {}
905
-
906
- /**
907
- *
908
- */
909
- const quux = async () => {}
910
-
911
- /** foo class */
912
- class foo {
913
- /** foo constructor */
914
- constructor () {
915
- // =>
916
- this.bar = true;
917
- }
918
- }
919
-
920
- export default foo;
921
-
922
- /**
923
- *
924
- */
925
- function quux () {
926
- }
927
- // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
928
-
929
- /**
930
- * @type {MyCallback}
931
- */
932
- function quux () {
933
-
934
- }
935
- // "jsdoc/require-returns": ["error"|"warn", {"exemptedBy":["type"]}]
936
-
937
- /**
938
- * @param {array} a
939
- */
940
- async function foo(a) {
941
- return;
942
- }
943
-
944
- /**
945
- *
946
- */
947
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"]}]
948
-
949
- /**
950
- * @async
951
- */
952
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"]}]
953
-
954
- /**
955
- * @function
956
- */
957
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
958
-
959
- /**
960
- * @callback
961
- */
962
- // "jsdoc/require-returns": ["error"|"warn", {"forceRequireReturn":true}]
963
-
964
- /**
965
- * @function
966
- * @async
967
- */
968
- // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
969
-
970
- /**
971
- * @callback
972
- * @async
973
- */
974
- // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
975
-
976
- /**
977
- * @function
978
- */
979
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"],"forceReturnsWithAsync":true}]
980
-
981
- /**
982
- * @callback
983
- */
984
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["any"],"forceReturnsWithAsync":true}]
985
-
986
- class foo {
987
- get bar() {
988
- return 0;
989
- }
990
- }
991
- // "jsdoc/require-returns": ["error"|"warn", {"checkGetters":false}]
992
-
993
- class foo {
994
- /** @returns zero */
995
- get bar() {
996
- return 0;
997
- }
998
- }
999
- // "jsdoc/require-returns": ["error"|"warn", {"checkGetters":true}]
1000
-
1001
- class foo {
1002
- /** @returns zero */
1003
- get bar() {
1004
- return 0;
1005
- }
1006
- }
1007
- // "jsdoc/require-returns": ["error"|"warn", {"checkGetters":false}]
1008
-
1009
- class TestClass {
1010
- /**
1011
- *
1012
- */
1013
- constructor() { }
1014
- }
1015
-
1016
- class TestClass {
1017
- /**
1018
- * @returns A map.
1019
- */
1020
- constructor() {
1021
- return new Map();
1022
- }
1023
- }
1024
-
1025
- class TestClass {
1026
- /**
1027
- *
1028
- */
1029
- constructor() { }
1030
- }
1031
- // "jsdoc/require-returns": ["error"|"warn", {"checkConstructors":false}]
1032
-
1033
- class TestClass {
1034
- /**
1035
- *
1036
- */
1037
- get Test() { }
1038
- }
1039
-
1040
- class TestClass {
1041
- /**
1042
- * @returns A number.
1043
- */
1044
- get Test() {
1045
- return 0;
1046
- }
1047
- }
1048
-
1049
- class TestClass {
1050
- /**
1051
- *
1052
- */
1053
- get Test() {
1054
- return 0;
1055
- }
1056
- }
1057
- // "jsdoc/require-returns": ["error"|"warn", {"checkGetters":false}]
1058
-
1059
- /**
1060
- *
1061
- */
1062
- function quux (foo) {
1063
-
1064
- return new Promise(function (resolve, reject) {
1065
- resolve();
1066
- });
1067
- }
1068
-
1069
- /**
1070
- *
1071
- */
1072
- function quux (foo) {
1073
-
1074
- return new Promise(function (resolve, reject) {
1075
- setTimeout(() => {
1076
- resolve();
1077
- });
1078
- });
1079
- }
1080
-
1081
- /**
1082
- *
1083
- */
1084
- function quux (foo) {
1085
-
1086
- return new Promise(function (resolve, reject) {
1087
- foo();
1088
- });
1089
- }
1090
-
1091
- /**
1092
- *
1093
- */
1094
- function quux (foo) {
1095
-
1096
- return new Promise(function (resolve, reject) {
1097
- abc((resolve) => {
1098
- resolve(true);
1099
- });
1100
- });
1101
- }
1102
-
1103
- /**
1104
- *
1105
- */
1106
- function quux (foo) {
1107
-
1108
- return new Promise(function (resolve, reject) {
1109
- abc(function (resolve) {
1110
- resolve(true);
1111
- });
1112
- });
1113
- }
1114
-
1115
- /**
1116
- *
1117
- */
1118
- function quux () {
1119
- return new Promise((resolve, reject) => {
1120
- if (true) {
1121
- resolve();
1122
- }
1123
- });
1124
- return;
1125
- }
1126
-
1127
- /**
1128
- *
1129
- */
1130
- function quux () {
1131
- return new Promise();
1132
- }
1133
-
1134
- /**
1135
- * Description.
1136
- */
1137
- async function foo() {
1138
- return new Promise(resolve => resolve());
1139
- }
1140
-
1141
- /**
1142
- * @param ms time in millis
1143
- */
1144
- export const sleep = (ms: number) =>
1145
- new Promise<void>((res) => setTimeout(res, ms));
1146
-
1147
- /**
1148
- * @param ms time in millis
1149
- */
1150
- export const sleep = (ms: number) => {
1151
- return new Promise<void>((res) => setTimeout(res, ms));
1152
- };
1153
-
1154
- /**
1155
- * Reads a test fixture.
1156
- *
1157
- * @returns The file contents as buffer.
1158
- */
1159
- export function readFixture(path: string): Promise<Buffer>;
1160
-
1161
- /**
1162
- * Reads a test fixture.
1163
- *
1164
- * @returns {void}.
1165
- */
1166
- export function readFixture(path: string): void;
1167
-
1168
- /**
1169
- * Reads a test fixture.
1170
- */
1171
- export function readFixture(path: string): void;
1172
-
1173
- /**
1174
- * Reads a test fixture.
1175
- */
1176
- export function readFixture(path: string);
1177
-
1178
- /**
1179
- *
1180
- */
1181
- function quux () {}
1182
-
1183
- class Test {
1184
- /**
1185
- * @returns {string} The test value
1186
- */
1187
- abstract Test(): string;
1188
- }
1189
- // "jsdoc/require-returns": ["error"|"warn", {"contexts":["FunctionDeclaration",{"context":"TSEmptyBodyFunctionExpression","forceRequireReturn":true}]}]
1190
- ````
1191
-