eslint-plugin-jsdoc 44.2.3 → 44.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/WarnSettings.js +0 -1
- package/dist/WarnSettings.js.map +1 -1
- package/dist/alignTransform.js +87 -5
- package/dist/alignTransform.js.map +1 -1
- package/dist/bin/generateRule.js +4 -3
- package/dist/bin/generateRule.js.map +1 -1
- package/dist/exportParser.js +272 -71
- package/dist/exportParser.js.map +1 -1
- package/dist/generateRule.js +4 -3
- package/dist/generateRule.js.map +1 -1
- package/dist/iterateJsdoc.js +921 -357
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/jsdocUtils.js +270 -168
- package/dist/jsdocUtils.js.map +1 -1
- package/dist/rules/checkAlignment.js +6 -0
- package/dist/rules/checkAlignment.js.map +1 -1
- package/dist/rules/checkExamples.js +73 -9
- package/dist/rules/checkExamples.js.map +1 -1
- package/dist/rules/checkIndentation.js +12 -2
- package/dist/rules/checkIndentation.js.map +1 -1
- package/dist/rules/checkLineAlignment.js +71 -7
- package/dist/rules/checkLineAlignment.js.map +1 -1
- package/dist/rules/checkParamNames.js +29 -11
- package/dist/rules/checkParamNames.js.map +1 -1
- package/dist/rules/checkPropertyNames.js +13 -7
- package/dist/rules/checkPropertyNames.js.map +1 -1
- package/dist/rules/checkTagNames.js +45 -9
- package/dist/rules/checkTagNames.js.map +1 -1
- package/dist/rules/checkTypes.js +98 -41
- package/dist/rules/checkTypes.js.map +1 -1
- package/dist/rules/checkValues.js +7 -7
- package/dist/rules/checkValues.js.map +1 -1
- package/dist/rules/emptyTags.js +8 -1
- package/dist/rules/emptyTags.js.map +1 -1
- package/dist/rules/informativeDocs.js +27 -8
- package/dist/rules/informativeDocs.js.map +1 -1
- package/dist/rules/matchDescription.js +18 -1
- package/dist/rules/matchDescription.js.map +1 -1
- package/dist/rules/matchName.js +2 -2
- package/dist/rules/matchName.js.map +1 -1
- package/dist/rules/multilineBlocks.js +12 -1
- package/dist/rules/multilineBlocks.js.map +1 -1
- package/dist/rules/noBadBlocks.js +4 -6
- package/dist/rules/noBadBlocks.js.map +1 -1
- package/dist/rules/noBlankBlockDescriptions.js +2 -0
- package/dist/rules/noBlankBlockDescriptions.js.map +1 -1
- package/dist/rules/noMissingSyntax.js +53 -16
- package/dist/rules/noMissingSyntax.js.map +1 -1
- package/dist/rules/noMultiAsterisks.js +1 -6
- package/dist/rules/noMultiAsterisks.js.map +1 -1
- package/dist/rules/noRestrictedSyntax.js +12 -5
- package/dist/rules/noRestrictedSyntax.js.map +1 -1
- package/dist/rules/noTypes.js +3 -0
- package/dist/rules/noTypes.js.map +1 -1
- package/dist/rules/noUndefinedTypes.js +65 -27
- package/dist/rules/noUndefinedTypes.js.map +1 -1
- package/dist/rules/requireAsteriskPrefix.js +20 -0
- package/dist/rules/requireAsteriskPrefix.js.map +1 -1
- package/dist/rules/requireDescription.js +6 -2
- package/dist/rules/requireDescription.js.map +1 -1
- package/dist/rules/requireDescriptionCompleteSentence.js +75 -12
- package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
- package/dist/rules/requireFileOverview.js +9 -4
- package/dist/rules/requireFileOverview.js.map +1 -1
- package/dist/rules/requireHyphenBeforeParamDescription.js +21 -7
- package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
- package/dist/rules/requireJsdoc.js +150 -29
- package/dist/rules/requireJsdoc.js.map +1 -1
- package/dist/rules/requireParam.js +116 -10
- package/dist/rules/requireParam.js.map +1 -1
- package/dist/rules/requireProperty.js +1 -1
- package/dist/rules/requireProperty.js.map +1 -1
- package/dist/rules/requireReturns.js +2 -3
- package/dist/rules/requireReturns.js.map +1 -1
- package/dist/rules/requireReturnsCheck.js +9 -2
- package/dist/rules/requireReturnsCheck.js.map +1 -1
- package/dist/rules/requireThrows.js +2 -3
- package/dist/rules/requireThrows.js.map +1 -1
- package/dist/rules/requireYields.js +9 -3
- package/dist/rules/requireYields.js.map +1 -1
- package/dist/rules/requireYieldsCheck.js +19 -5
- package/dist/rules/requireYieldsCheck.js.map +1 -1
- package/dist/rules/sortTags.js +67 -9
- package/dist/rules/sortTags.js.map +1 -1
- package/dist/rules/tagLines.js +22 -3
- package/dist/rules/tagLines.js.map +1 -1
- package/dist/rules/textEscaping.js +18 -4
- package/dist/rules/textEscaping.js.map +1 -1
- package/dist/rules/validTypes.js +26 -9
- package/dist/rules/validTypes.js.map +1 -1
- package/dist/tagNames.js +0 -2
- package/dist/tagNames.js.map +1 -1
- package/dist/utils/hasReturnValue.js +77 -48
- package/dist/utils/hasReturnValue.js.map +1 -1
- package/docs/rules/check-line-alignment.md +7 -0
- package/docs/rules/check-tag-names.md +15 -0
- package/docs/rules/no-missing-syntax.md +6 -0
- package/docs/rules/no-undefined-types.md +6 -0
- package/docs/rules/require-description-complete-sentence.md +525 -289
- package/docs/rules/require-description.md +289 -525
- package/docs/rules/require-file-overview.md +7 -0
- package/docs/rules/require-jsdoc.md +1 -1
- package/docs/rules/require-param-description.md +116 -1694
- package/docs/rules/require-param-name.md +58 -133
- package/docs/rules/require-param-type.md +119 -55
- package/docs/rules/require-param.md +1704 -111
- package/docs/rules/require-property-description.md +39 -79
- package/docs/rules/require-property-name.md +21 -30
- package/docs/rules/require-property-type.md +21 -21
- package/docs/rules/require-property.md +82 -33
- package/docs/rules/require-returns-check.md +636 -747
- package/docs/rules/require-returns-description.md +61 -933
- package/docs/rules/require-returns-type.md +42 -79
- package/docs/rules/require-returns.md +1081 -61
- package/docs/rules/require-yields-check.md +238 -517
- package/docs/rules/require-yields.md +517 -238
- package/docs/rules/valid-types.md +1 -1
- package/docs/settings.md +3 -1
- package/package.json +10 -9
- package/tsconfig.json +2 -3
|
@@ -4,11 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _jsdoccomment = require("@es-joy/jsdoccomment");
|
|
8
7
|
var _exportParser = _interopRequireDefault(require("../exportParser"));
|
|
9
8
|
var _iterateJsdoc = require("../iterateJsdoc");
|
|
10
9
|
var _jsdocUtils = _interopRequireDefault(require("../jsdocUtils"));
|
|
10
|
+
var _jsdoccomment = require("@es-joy/jsdoccomment");
|
|
11
11
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
/**
|
|
13
|
+
* @typedef {{
|
|
14
|
+
* ancestorsOnly: boolean,
|
|
15
|
+
* esm: boolean,
|
|
16
|
+
* initModuleExports: boolean,
|
|
17
|
+
* initWindow: boolean
|
|
18
|
+
* }} RequireJsdocOpts
|
|
19
|
+
*/
|
|
20
|
+
/** @type {import('json-schema').JSONSchema4} */
|
|
12
21
|
const OPTIONS_SCHEMA = {
|
|
13
22
|
additionalProperties: false,
|
|
14
23
|
properties: {
|
|
@@ -133,15 +142,46 @@ const OPTIONS_SCHEMA = {
|
|
|
133
142
|
},
|
|
134
143
|
type: 'object'
|
|
135
144
|
};
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* @param {import('eslint').Rule.RuleContext} context
|
|
148
|
+
* @param {import('json-schema').JSONSchema4Object} baseObject
|
|
149
|
+
* @param {string} option
|
|
150
|
+
* @param {string} key
|
|
151
|
+
* @returns {boolean|undefined}
|
|
152
|
+
*/
|
|
136
153
|
const getOption = (context, baseObject, option, key) => {
|
|
137
154
|
if (context.options[0] && option in context.options[0] && (
|
|
138
|
-
// Todo: boolean shouldn't be returning property, but
|
|
155
|
+
// Todo: boolean shouldn't be returning property, but
|
|
156
|
+
// tests currently require
|
|
139
157
|
typeof context.options[0][option] === 'boolean' || key in context.options[0][option])) {
|
|
140
158
|
return context.options[0][option][key];
|
|
141
159
|
}
|
|
142
|
-
return baseObject.properties[key].default
|
|
160
|
+
return (/** @type {{[key: string]: {default?: boolean|undefined}}} */baseObject.properties[key].default
|
|
161
|
+
);
|
|
162
|
+
/* eslint-enable jsdoc/valid-types -- Old version */
|
|
143
163
|
};
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* @param {import('eslint').Rule.RuleContext} context
|
|
167
|
+
* @param {import('../iterateJsdoc.js').Settings} settings
|
|
168
|
+
* @returns {{
|
|
169
|
+
* contexts: (string|{
|
|
170
|
+
* context: string,
|
|
171
|
+
* inlineCommentBlock: boolean,
|
|
172
|
+
* minLineCount: import('../iterateJsdoc.js').Integer
|
|
173
|
+
* })[],
|
|
174
|
+
* enableFixer: boolean,
|
|
175
|
+
* exemptEmptyConstructors: boolean,
|
|
176
|
+
* exemptEmptyFunctions: boolean,
|
|
177
|
+
* fixerMessage: string,
|
|
178
|
+
* minLineCount: undefined|import('../iterateJsdoc.js').Integer,
|
|
179
|
+
* publicOnly: boolean|{[key: string]: boolean|undefined}
|
|
180
|
+
* require: {[key: string]: boolean|undefined}
|
|
181
|
+
* }}
|
|
182
|
+
*/
|
|
144
183
|
const getOptions = (context, settings) => {
|
|
184
|
+
/* eslint-enable jsdoc/valid-types -- Old version */
|
|
145
185
|
const {
|
|
146
186
|
publicOnly,
|
|
147
187
|
contexts = settings.contexts || [],
|
|
@@ -162,21 +202,33 @@ const getOptions = (context, settings) => {
|
|
|
162
202
|
if (!publicOnly) {
|
|
163
203
|
return false;
|
|
164
204
|
}
|
|
205
|
+
|
|
206
|
+
/** @type {{[key: string]: boolean|undefined}} */
|
|
165
207
|
const properties = {};
|
|
166
|
-
|
|
167
|
-
|
|
208
|
+
/* eslint-enable jsdoc/valid-types -- Old version */
|
|
209
|
+
for (const prop of Object.keys( /** @type {import('json-schema').JSONSchema4Object} */
|
|
210
|
+
/** @type {import('json-schema').JSONSchema4Object} */baseObj.properties)) {
|
|
211
|
+
const opt = getOption(context, /** @type {import('json-schema').JSONSchema4Object} */baseObj, 'publicOnly', prop);
|
|
168
212
|
properties[prop] = opt;
|
|
169
213
|
}
|
|
170
214
|
return properties;
|
|
171
|
-
})(
|
|
215
|
+
})( /** @type {import('json-schema').JSONSchema4Object} */
|
|
216
|
+
/** @type {import('json-schema').JSONSchema4Object} */
|
|
217
|
+
/** @type {import('json-schema').JSONSchema4Object} */
|
|
218
|
+
OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),
|
|
172
219
|
require: (baseObj => {
|
|
220
|
+
/** @type {{[key: string]: boolean|undefined}} */
|
|
173
221
|
const properties = {};
|
|
174
|
-
|
|
175
|
-
|
|
222
|
+
/* eslint-enable jsdoc/valid-types -- Old version */
|
|
223
|
+
for (const prop of Object.keys( /** @type {import('json-schema').JSONSchema4Object} */
|
|
224
|
+
/** @type {import('json-schema').JSONSchema4Object} */baseObj.properties)) {
|
|
225
|
+
const opt = getOption(context, /** @type {import('json-schema').JSONSchema4Object} */
|
|
226
|
+
baseObj, 'require', prop);
|
|
176
227
|
properties[prop] = opt;
|
|
177
228
|
}
|
|
178
229
|
return properties;
|
|
179
|
-
})(
|
|
230
|
+
})( /** @type {import('json-schema').JSONSchema4Object} */
|
|
231
|
+
OPTIONS_SCHEMA.properties.require)
|
|
180
232
|
};
|
|
181
233
|
};
|
|
182
234
|
|
|
@@ -188,24 +240,43 @@ var _default = {
|
|
|
188
240
|
if (!settings) {
|
|
189
241
|
return {};
|
|
190
242
|
}
|
|
243
|
+
const opts = getOptions(context, settings);
|
|
191
244
|
const {
|
|
192
245
|
require: requireOption,
|
|
193
246
|
contexts,
|
|
194
|
-
publicOnly,
|
|
195
247
|
exemptEmptyFunctions,
|
|
196
248
|
exemptEmptyConstructors,
|
|
197
249
|
enableFixer,
|
|
198
250
|
fixerMessage,
|
|
199
251
|
minLineCount
|
|
200
|
-
} =
|
|
201
|
-
const
|
|
252
|
+
} = opts;
|
|
253
|
+
const publicOnly =
|
|
254
|
+
/**
|
|
255
|
+
* @type {{
|
|
256
|
+
* [key: string]: boolean | undefined;
|
|
257
|
+
* }}
|
|
258
|
+
*/
|
|
259
|
+
opts.publicOnly;
|
|
260
|
+
/* eslint-enable jsdoc/valid-types -- Old version */
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* @type {import('../iterateJsdoc.js').CheckJsdoc}
|
|
264
|
+
*/
|
|
265
|
+
const checkJsDoc = (info, _handler, node) => {
|
|
202
266
|
if (
|
|
203
267
|
// Optimize
|
|
204
|
-
minLineCount !== undefined || contexts.some(
|
|
205
|
-
|
|
206
|
-
|
|
268
|
+
minLineCount !== undefined || contexts.some(ctxt => {
|
|
269
|
+
if (typeof ctxt === 'string') {
|
|
270
|
+
return false;
|
|
271
|
+
}
|
|
272
|
+
const {
|
|
273
|
+
minLineCount: count
|
|
274
|
+
} = ctxt;
|
|
207
275
|
return count !== undefined;
|
|
208
276
|
})) {
|
|
277
|
+
/**
|
|
278
|
+
* @param {undefined|import('../iterateJsdoc.js').Integer} count
|
|
279
|
+
*/
|
|
209
280
|
const underMinLine = count => {
|
|
210
281
|
var _sourceCode$getText$m;
|
|
211
282
|
return count !== undefined && count > (((_sourceCode$getText$m = sourceCode.getText(node).match(/\n/gu)) === null || _sourceCode$getText$m === void 0 ? void 0 : _sourceCode$getText$m.length) ?? 0) + 1;
|
|
@@ -215,10 +286,22 @@ var _default = {
|
|
|
215
286
|
}
|
|
216
287
|
const {
|
|
217
288
|
minLineCount: contextMinLineCount
|
|
218
|
-
} =
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
289
|
+
} =
|
|
290
|
+
/**
|
|
291
|
+
* @type {{
|
|
292
|
+
* context: string;
|
|
293
|
+
* inlineCommentBlock: boolean;
|
|
294
|
+
* minLineCount: number;
|
|
295
|
+
* }}
|
|
296
|
+
*/
|
|
297
|
+
contexts.find(ctxt => {
|
|
298
|
+
if (typeof ctxt === 'string') {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
const {
|
|
302
|
+
context: ctx
|
|
303
|
+
} = ctxt;
|
|
304
|
+
return ctx === (info.selector || node.type);
|
|
222
305
|
}) || {};
|
|
223
306
|
if (underMinLine(contextMinLineCount)) {
|
|
224
307
|
return;
|
|
@@ -232,6 +315,10 @@ var _default = {
|
|
|
232
315
|
// For those who have options configured against ANY constructors (or
|
|
233
316
|
// setters or getters) being reported
|
|
234
317
|
if (_jsdocUtils.default.exemptSpeciaMethods({
|
|
318
|
+
description: '',
|
|
319
|
+
inlineTags: [],
|
|
320
|
+
problems: [],
|
|
321
|
+
source: [],
|
|
235
322
|
tags: []
|
|
236
323
|
}, node, context, [OPTIONS_SCHEMA])) {
|
|
237
324
|
return;
|
|
@@ -251,34 +338,49 @@ var _default = {
|
|
|
251
338
|
const fix = /** @type {import('eslint').Rule.ReportFixer} */fixer => {
|
|
252
339
|
// Default to one line break if the `minLines`/`maxLines` settings allow
|
|
253
340
|
const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;
|
|
341
|
+
/** @type {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Decorator} */
|
|
254
342
|
let baseNode = (0, _jsdoccomment.getReducedASTNode)(node, sourceCode);
|
|
255
343
|
const decorator = (0, _jsdoccomment.getDecorator)(baseNode);
|
|
256
344
|
if (decorator) {
|
|
257
345
|
baseNode = decorator;
|
|
258
346
|
}
|
|
259
347
|
const indent = _jsdocUtils.default.getIndent({
|
|
260
|
-
text: sourceCode.getText(baseNode,
|
|
348
|
+
text: sourceCode.getText( /** @type {import('eslint').Rule.Node} */baseNode, /** @type {import('eslint').AST.SourceLocation} */
|
|
349
|
+
/** @type {import('eslint').Rule.Node} */baseNode.loc.start.column)
|
|
261
350
|
});
|
|
262
351
|
const {
|
|
263
352
|
inlineCommentBlock
|
|
264
|
-
} =
|
|
265
|
-
|
|
266
|
-
|
|
353
|
+
} =
|
|
354
|
+
/**
|
|
355
|
+
* @type {{
|
|
356
|
+
* context: string,
|
|
357
|
+
* inlineCommentBlock: boolean,
|
|
358
|
+
* minLineCount: import('../iterateJsdoc.js').Integer
|
|
359
|
+
* }}
|
|
360
|
+
*/
|
|
361
|
+
contexts.find(contxt => {
|
|
362
|
+
if (typeof contxt === 'string') {
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
const {
|
|
366
|
+
context: ctxt
|
|
367
|
+
} = contxt;
|
|
267
368
|
return ctxt === node.type;
|
|
268
369
|
}) || {};
|
|
269
370
|
const insertion = (inlineCommentBlock ? `/** ${fixerMessage}` : `/**\n${indent}*${fixerMessage}\n${indent}`) + `*/${'\n'.repeat(lines)}${indent.slice(0, -1)}`;
|
|
270
|
-
return fixer.insertTextBefore(
|
|
371
|
+
return fixer.insertTextBefore( /** @type {import('eslint').Rule.Node} */
|
|
372
|
+
baseNode, insertion);
|
|
271
373
|
};
|
|
272
374
|
const report = () => {
|
|
273
375
|
const {
|
|
274
376
|
start
|
|
275
|
-
} = node.loc;
|
|
377
|
+
} = /** @type {import('eslint').AST.SourceLocation} */node.loc;
|
|
276
378
|
const loc = {
|
|
277
379
|
end: {
|
|
278
380
|
column: 0,
|
|
279
381
|
line: start.line + 1
|
|
280
382
|
},
|
|
281
|
-
start
|
|
383
|
+
start
|
|
282
384
|
};
|
|
283
385
|
context.report({
|
|
284
386
|
fix: enableFixer ? fix : null,
|
|
@@ -288,6 +390,7 @@ var _default = {
|
|
|
288
390
|
});
|
|
289
391
|
};
|
|
290
392
|
if (publicOnly) {
|
|
393
|
+
/** @type {RequireJsdocOpts} */
|
|
291
394
|
const opt = {
|
|
292
395
|
ancestorsOnly: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.ancestorsOnly) ?? false),
|
|
293
396
|
esm: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.esm) ?? true),
|
|
@@ -302,6 +405,12 @@ var _default = {
|
|
|
302
405
|
report();
|
|
303
406
|
}
|
|
304
407
|
};
|
|
408
|
+
/* eslint-enable complexity -- Temporary */
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* @param {string} prop
|
|
412
|
+
* @returns {boolean}
|
|
413
|
+
*/
|
|
305
414
|
const hasOption = prop => {
|
|
306
415
|
return requireOption[prop] || contexts.some(ctxt => {
|
|
307
416
|
return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;
|
|
@@ -313,7 +422,13 @@ var _default = {
|
|
|
313
422
|
if (!hasOption('ArrowFunctionExpression')) {
|
|
314
423
|
return;
|
|
315
424
|
}
|
|
316
|
-
if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) || ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node ===
|
|
425
|
+
if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) || ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node ===
|
|
426
|
+
/**
|
|
427
|
+
* @type {import('@typescript-eslint/types').TSESTree.Property|
|
|
428
|
+
* import('@typescript-eslint/types').TSESTree.PropertyDefinition
|
|
429
|
+
* }
|
|
430
|
+
*/
|
|
431
|
+
node.parent.value) {
|
|
317
432
|
checkJsDoc({
|
|
318
433
|
isFunctionContext: true
|
|
319
434
|
}, null, node);
|
|
@@ -347,7 +462,13 @@ var _default = {
|
|
|
347
462
|
if (!hasOption('FunctionExpression')) {
|
|
348
463
|
return;
|
|
349
464
|
}
|
|
350
|
-
if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) || ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node ===
|
|
465
|
+
if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type) || ['Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition'].includes(node.parent.type) && node ===
|
|
466
|
+
/**
|
|
467
|
+
* @type {import('@typescript-eslint/types').TSESTree.Property|
|
|
468
|
+
* import('@typescript-eslint/types').TSESTree.PropertyDefinition
|
|
469
|
+
* }
|
|
470
|
+
*/
|
|
471
|
+
node.parent.value) {
|
|
351
472
|
checkJsDoc({
|
|
352
473
|
isFunctionContext: true
|
|
353
474
|
}, null, node);
|
|
@@ -360,7 +481,7 @@ var _default = {
|
|
|
360
481
|
checkJsDoc({
|
|
361
482
|
isFunctionContext: true,
|
|
362
483
|
selector: 'MethodDefinition'
|
|
363
|
-
}, null, node.value);
|
|
484
|
+
}, null, /** @type {import('eslint').Rule.Node} */node.value);
|
|
364
485
|
}
|
|
365
486
|
};
|
|
366
487
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireJsdoc.js","names":["_jsdoccomment","require","_exportParser","_interopRequireDefault","_iterateJsdoc","_jsdocUtils","obj","__esModule","default","OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","settings","undefined","baseObj","prop","Object","keys","opt","_default","create","sourceCode","getSourceCode","getSettings","requireOption","checkJsDoc","info","handler","node","some","count","underMinLine","_sourceCode$getText$m","getText","match","length","contextMinLineCount","find","ctxt","selector","jsDocNode","getJSDocComment","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema","exports","module"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import {\n getJSDocComment,\n getReducedASTNode,\n getDecorator,\n} from '@es-joy/jsdoccomment';\nimport exportParser from '../exportParser';\nimport {\n getSettings,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n minLineCount: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n minLineCount: {\n type: 'integer',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return baseObject.properties[key].default;\n};\n\nconst getOptions = (context, settings) => {\n const {\n publicOnly,\n contexts = settings.contexts || [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n minLineCount = undefined,\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'require', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\n/** @type {import('eslint').Rule.RuleModule} */\nexport default {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const {\n require: requireOption,\n contexts,\n publicOnly,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n minLineCount,\n } = getOptions(context, settings);\n\n const checkJsDoc = (info, handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some(({\n minLineCount: count,\n }) => {\n return count !== undefined;\n })\n ) {\n const underMinLine = (count) => {\n return count !== undefined && count >\n (sourceCode.getText(node).match(/\\n/gu)?.length ?? 0) + 1;\n };\n\n if (underMinLine(minLineCount)) {\n return;\n }\n\n const {\n minLineCount: contextMinLineCount,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === (info.selector || node.type);\n }) || {};\n if (underMinLine(contextMinLineCount)) {\n return;\n }\n }\n\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n tags: [],\n }, node, context, [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n baseNode,\n baseNode.loc.start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === node.type;\n }) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const {\n start,\n } = node.loc;\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start: node.loc.start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, [], settings),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n MethodDefinition (node) {\n if (!hasOption('MethodDefinition')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n selector: 'MethodDefinition',\n }, null, node.value);\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: true,\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requireJsdoc.js","names":["_exportParser","_interopRequireDefault","require","_iterateJsdoc","_jsdocUtils","_jsdoccomment","obj","__esModule","default","OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","settings","undefined","baseObj","prop","Object","keys","opt","_default","create","sourceCode","getSourceCode","getSettings","opts","requireOption","checkJsDoc","info","_handler","node","some","ctxt","count","underMinLine","_sourceCode$getText$m","getText","match","length","contextMinLineCount","find","ctx","selector","jsDocNode","getJSDocComment","jsdocUtils","exemptSpeciaMethods","description","inlineTags","problems","source","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","getReducedASTNode","decorator","getDecorator","indent","getIndent","text","loc","start","column","contxt","insertion","repeat","slice","insertTextBefore","report","end","line","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","recommended","url","fixable","messages","missingJsDoc","schema","exports","module"],"sources":["../../src/rules/requireJsdoc.js"],"sourcesContent":["import exportParser from '../exportParser';\nimport {\n getSettings,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\nimport {\n getDecorator,\n getJSDocComment,\n getReducedASTNode,\n} from '@es-joy/jsdoccomment';\n\n/**\n * @typedef {{\n * ancestorsOnly: boolean,\n * esm: boolean,\n * initModuleExports: boolean,\n * initWindow: boolean\n * }} RequireJsdocOpts\n */\n\n/** @type {import('json-schema').JSONSchema4} */\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n minLineCount: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n minLineCount: {\n type: 'integer',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('json-schema').JSONSchema4Object} baseObject\n * @param {string} option\n * @param {string} key\n * @returns {boolean|undefined}\n */\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but\n // tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return /** @type {{[key: string]: {default?: boolean|undefined}}} */ (\n baseObject.properties\n )[key].default;\n /* eslint-enable jsdoc/valid-types -- Old version */\n};\n\n/**\n * @param {import('eslint').Rule.RuleContext} context\n * @param {import('../iterateJsdoc.js').Settings} settings\n * @returns {{\n * contexts: (string|{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * })[],\n * enableFixer: boolean,\n * exemptEmptyConstructors: boolean,\n * exemptEmptyFunctions: boolean,\n * fixerMessage: string,\n * minLineCount: undefined|import('../iterateJsdoc.js').Integer,\n * publicOnly: boolean|{[key: string]: boolean|undefined}\n * require: {[key: string]: boolean|undefined}\n * }}\n */\nconst getOptions = (context, settings) => {\n /* eslint-enable jsdoc/valid-types -- Old version */\n const {\n publicOnly,\n contexts = settings.contexts || [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n minLineCount = undefined,\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n /* eslint-enable jsdoc/valid-types -- Old version */\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */ (baseObj),\n 'publicOnly',\n prop,\n );\n\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n /** @type {import('json-schema').JSONSchema4Object} */\n (\n OPTIONS_SCHEMA.properties\n ).publicOnly\n ).oneOf\n )[1],\n ),\n require: ((baseObj) => {\n /** @type {{[key: string]: boolean|undefined}} */\n const properties = {};\n /* eslint-enable jsdoc/valid-types -- Old version */\n for (const prop of Object.keys(\n /** @type {import('json-schema').JSONSchema4Object} */ (\n /** @type {import('json-schema').JSONSchema4Object} */ (\n baseObj\n ).properties),\n )) {\n const opt = getOption(\n context,\n /** @type {import('json-schema').JSONSchema4Object} */\n (baseObj),\n 'require',\n prop,\n );\n properties[prop] = opt;\n }\n\n return properties;\n })(\n /** @type {import('json-schema').JSONSchema4Object} */\n (OPTIONS_SCHEMA.properties).require,\n ),\n };\n};\n\n/** @type {import('eslint').Rule.RuleModule} */\nexport default {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const opts = getOptions(context, settings);\n\n const {\n require: requireOption,\n contexts,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n minLineCount,\n } = opts;\n\n const publicOnly =\n\n /**\n * @type {{\n * [key: string]: boolean | undefined;\n * }}\n */ (\n opts.publicOnly\n );\n /* eslint-enable jsdoc/valid-types -- Old version */\n\n /**\n * @type {import('../iterateJsdoc.js').CheckJsdoc}\n */\n const checkJsDoc = (info, _handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n minLineCount: count,\n } = ctxt;\n return count !== undefined;\n })\n ) {\n /**\n * @param {undefined|import('../iterateJsdoc.js').Integer} count\n */\n const underMinLine = (count) => {\n return count !== undefined && count >\n (sourceCode.getText(node).match(/\\n/gu)?.length ?? 0) + 1;\n };\n\n if (underMinLine(minLineCount)) {\n return;\n }\n\n const {\n minLineCount: contextMinLineCount,\n } =\n /**\n * @type {{\n * context: string;\n * inlineCommentBlock: boolean;\n * minLineCount: number;\n * }}\n */ (contexts.find((ctxt) => {\n if (typeof ctxt === 'string') {\n return false;\n }\n\n const {\n context: ctx,\n } = ctxt;\n return ctx === (info.selector || node.type);\n })) || {};\n if (underMinLine(contextMinLineCount)) {\n return;\n }\n }\n\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n description: '',\n inlineTags: [],\n problems: [],\n source: [],\n tags: [],\n },\n node,\n context,\n [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = /** @type {import('eslint').Rule.ReportFixer} */ (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n /** @type {import('eslint').Rule.Node|import('@typescript-eslint/types').TSESTree.Decorator} */\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n /** @type {import('eslint').Rule.Node} */ (baseNode),\n /** @type {import('eslint').AST.SourceLocation} */\n (\n /** @type {import('eslint').Rule.Node} */ (baseNode).loc\n ).start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } =\n /**\n * @type {{\n * context: string,\n * inlineCommentBlock: boolean,\n * minLineCount: import('../iterateJsdoc.js').Integer\n * }}\n */ (contexts.find((contxt) => {\n if (typeof contxt === 'string') {\n return false;\n }\n\n const {\n context: ctxt,\n } = contxt;\n return ctxt === node.type;\n })) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(\n /** @type {import('eslint').Rule.Node} */\n (baseNode),\n insertion,\n );\n };\n\n const report = () => {\n const {\n start,\n } = /** @type {import('eslint').AST.SourceLocation} */ (node.loc);\n const loc = {\n end: {\n column: 0,\n line: start.line + 1,\n },\n start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n /** @type {RequireJsdocOpts} */\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n /* eslint-enable complexity -- Temporary */\n\n /**\n * @param {string} prop\n * @returns {boolean}\n */\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, [], settings),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (node.parent).value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) &&\n node ===\n /**\n * @type {import('@typescript-eslint/types').TSESTree.Property|\n * import('@typescript-eslint/types').TSESTree.PropertyDefinition\n * }\n */\n (node.parent).value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n MethodDefinition (node) {\n if (!hasOption('MethodDefinition')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n selector: 'MethodDefinition',\n }, null, /** @type {import('eslint').Rule.Node} */ (node.value));\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: true,\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"mappings":"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"}
|