eslint-plugin-jsdoc 35.4.5 → 35.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12911,6 +12911,24 @@ const obj = {
12911
12911
  }
12912
12912
  // "jsdoc/require-jsdoc": ["error"|"warn", {"checkGetters":"no-setter","contexts":["Property > FunctionExpression"]}]
12913
12913
  // Message: Missing JSDoc comment.
12914
+
12915
+ function comment () {
12916
+ return "comment";
12917
+ }
12918
+ // "jsdoc/require-jsdoc": ["error"|"warn", {"enableFixer":true,"fixerMessage":" TODO: add comment"}]
12919
+ // Message: Missing JSDoc comment.
12920
+
12921
+ function comment () {
12922
+ return "comment";
12923
+ }
12924
+ // "jsdoc/require-jsdoc": ["error"|"warn", {"contexts":["any",{"context":"FunctionDeclaration","inlineCommentBlock":true}],"fixerMessage":"TODO: add comment "}]
12925
+ // Message: Missing JSDoc comment.
12926
+
12927
+ function comment () {
12928
+ return "comment";
12929
+ }
12930
+ // "jsdoc/require-jsdoc": ["error"|"warn", {"enableFixer":false,"fixerMessage":" TODO: add comment"}]
12931
+ // Message: Missing JSDoc comment.
12914
12932
  ````
12915
12933
 
12916
12934
  The following patterns are not considered problems:
@@ -15161,6 +15179,10 @@ export function testFn1 ({ prop = { a: 1, b: 2 } }) {
15161
15179
  }
15162
15180
  // "jsdoc/require-param": ["error"|"warn", {"useDefaultObjectProperties":true}]
15163
15181
  // Message: Missing JSDoc @param "props.prop.a" declaration.
15182
+
15183
+ /** Foo. */
15184
+ function foo(a, b, c) {}
15185
+ // Message: Missing JSDoc @param "a" declaration.
15164
15186
  ````
15165
15187
 
15166
15188
  The following patterns are not considered problems:
@@ -16098,6 +16120,13 @@ Will also report if multiple `@returns` tags are present.
16098
16120
  <a name="eslint-plugin-jsdoc-rules-require-returns-check-options-33"></a>
16099
16121
  #### Options
16100
16122
 
16123
+ - `exemptGenerators`- Because a generator might be labeled as having a
16124
+ `IterableIterator` `@returns` value (along with an iterator type
16125
+ corresponding to the type of any `yield` statements), projects might wish to
16126
+ leverage `@returns` in generators even without a` return` statement. This
16127
+ option is therefore `true` by default in `typescript` mode (in "jsdoc" mode,
16128
+ one might be more likely to take advantage of `@yields`). Set it to `false`
16129
+ if you wish for a missing `return` to be flagged regardless.
16101
16130
  - `exemptAsync` - By default, functions which return a `Promise` that are not
16102
16131
  detected as resolving with a non-`undefined` value and `async` functions
16103
16132
  (even ones that do not explicitly return a value, as these are returning a
@@ -16207,6 +16236,21 @@ async function quux() {}
16207
16236
  // "jsdoc/require-returns-check": ["error"|"warn", {"exemptAsync":false}]
16208
16237
  // Message: JSDoc @returns declaration present but return expression not available in function.
16209
16238
 
16239
+ /**
16240
+ * @returns {IterableIterator<any>}
16241
+ */
16242
+ function * quux() {}
16243
+ // Settings: {"jsdoc":{"mode":"jsdoc"}}
16244
+ // Message: JSDoc @returns declaration present but return expression not available in function.
16245
+
16246
+ /**
16247
+ * @returns {IterableIterator<any>}
16248
+ */
16249
+ function * quux() {}
16250
+ // Settings: {"jsdoc":{"mode":"typescript"}}
16251
+ // "jsdoc/require-returns-check": ["error"|"warn", {"exemptGenerators":false}]
16252
+ // Message: JSDoc @returns declaration present but return expression not available in function.
16253
+
16210
16254
  /**
16211
16255
  * @returns {Promise<void>}
16212
16256
  */
@@ -16612,6 +16656,19 @@ function quux () {
16612
16656
  return 'abc';
16613
16657
  }
16614
16658
  // "jsdoc/require-returns-check": ["error"|"warn", {"reportMissingReturnForUndefinedTypes":true}]
16659
+
16660
+ /**
16661
+ * @returns {IterableIterator<any>}
16662
+ */
16663
+ function * quux() {}
16664
+ // Settings: {"jsdoc":{"mode":"typescript"}}
16665
+
16666
+ /**
16667
+ * @returns {IterableIterator<any>}
16668
+ */
16669
+ function * quux() {}
16670
+ // Settings: {"jsdoc":{"mode":"jsdoc"}}
16671
+ // "jsdoc/require-returns-check": ["error"|"warn", {"exemptGenerators":true}]
16615
16672
  ````
16616
16673
 
16617
16674
 
@@ -17431,6 +17488,46 @@ async function quux () {
17431
17488
  }
17432
17489
  // "jsdoc/require-returns": ["error"|"warn", {"forceReturnsWithAsync":true}]
17433
17490
  // Message: Missing JSDoc @returns declaration.
17491
+
17492
+ export class A {
17493
+ /**
17494
+ * Description.
17495
+ */
17496
+ public f(): string {
17497
+ return "";
17498
+ }
17499
+ }
17500
+
17501
+ export interface B {
17502
+ /**
17503
+ * Description.
17504
+ */
17505
+ f(): string;
17506
+
17507
+ /**
17508
+ * Description.
17509
+ */
17510
+ g: () => string;
17511
+
17512
+ /**
17513
+ * Description.
17514
+ */
17515
+ h(): void;
17516
+
17517
+ /**
17518
+ * Description.
17519
+ */
17520
+ i: () => void;
17521
+ }
17522
+
17523
+ /**
17524
+ * Description.
17525
+ */
17526
+ export function f(): string {
17527
+ return "";
17528
+ }
17529
+ // "jsdoc/require-returns": ["error"|"warn", {"contexts":[":not(BlockStatement) > FunctionDeclaration","MethodDefinition","TSMethodSignature","TSPropertySignature > TSTypeAnnotation > TSFunctionType"]}]
17530
+ // Message: Missing JSDoc @returns declaration.
17434
17531
  ````
17435
17532
 
17436
17533
  The following patterns are not considered problems:
@@ -266,6 +266,12 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
266
266
 
267
267
  utils.seedTokens = _util.seedTokens;
268
268
 
269
+ utils.emptyTokens = tokens => {
270
+ ['start', 'postDelimiter', 'tag', 'type', 'postType', 'postTag', 'name', 'postName', 'description', 'end'].forEach(prop => {
271
+ tokens[prop] = '';
272
+ });
273
+ };
274
+
269
275
  utils.addLine = (sourceIndex, tokens) => {
270
276
  var _jsdoc$source;
271
277
 
@@ -329,6 +335,60 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
329
335
  });
330
336
  };
331
337
 
338
+ utils.makeMultiline = () => {
339
+ const {
340
+ source: [{
341
+ tokens
342
+ }]
343
+ } = jsdoc;
344
+ const {
345
+ postDelimiter,
346
+ description,
347
+ tag,
348
+ name,
349
+ type
350
+ } = tokens;
351
+ let {
352
+ tokens: {
353
+ postName,
354
+ postTag,
355
+ postType
356
+ }
357
+ } = jsdoc.source[0]; // Strip trailing leftovers from single line ending
358
+
359
+ if (!description) {
360
+ if (postName) {
361
+ postName = '';
362
+ } else if (postType) {
363
+ postType = ''; // eslint-disable-next-line max-len, no-inline-comments
364
+ } else
365
+ /* istanbul ignore else -- `comment-parser` prevents empty blocks currently per https://github.com/syavorsky/comment-parser/issues/128 */
366
+ if (postTag) {
367
+ postTag = '';
368
+ }
369
+ }
370
+
371
+ utils.emptyTokens(tokens);
372
+ utils.addLine(1, {
373
+ delimiter: '*',
374
+ // If a description were present, it may have whitespace attached
375
+ // due to being at the end of the single line
376
+ description: description.trimEnd(),
377
+ name,
378
+ postDelimiter,
379
+ postName,
380
+ postTag,
381
+ postType,
382
+ start: indent + ' ',
383
+ tag,
384
+ type
385
+ });
386
+ utils.addLine(2, {
387
+ end: '*/',
388
+ start: indent + ' '
389
+ });
390
+ };
391
+
332
392
  utils.flattenRoots = params => {
333
393
  return _jsdocUtils.default.flattenRoots(params);
334
394
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/iterateJsdoc.js"],"names":["globalState","Map","getBasicUtils","context","tagNamePreference","mode","utils","reportSettings","message","report","loc","start","column","line","parseClosureTemplateTag","tag","jsdocUtils","pathDoesNotBeginWith","getPreferredTagNameObject","tagName","ret","getPreferredTagName","isObject","replacement","blocked","getUtils","node","jsdoc","jsdocNode","settings","iteratingAll","ruleConfig","indent","ancestors","getAncestors","sourceCode","getSourceCode","overrideReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","isIteratingFunction","includes","type","isVirtualFunction","hasATag","stringify","tagBlock","specRewire","reportJSDoc","msg","handler","data","fixer","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","descriptions","source","some","tokens","end","postDelimiter","postTag","name","description","desc","slice","push","join","getDescription","lastDescriptionLine","idx","changeTag","forEach","src","setTag","number","delimiter","removeTag","removeTagItem","tagIndex","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","splice","addTag","targetTagName","length","seedTokens","addLine","addLines","numLines","makeLine","makeLines","Array","from","lines","flattenRoots","params","getFunctionParameterNames","useDefaultObjectProperties","hasParams","isGenerator","generator","value","declaration","isConstructor","getJsdocTagsDeep","skipReportingBlockedTag","allowObjectReturn","defaultMessage","hasTag","getTags","isValidTag","definedTags","names","comparePaths","dropPathSegmentQuotes","avoidDocs","classHasTag","exemptSpeciaMethods","meta","schema","exemptedBy","options","getPresentTags","method","otherModeMaps","result","otherResult","otherModeMap","otherMode","every","getTagStructureForMode","mde","structuredTags","hasDefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","hasYieldValue","hasYieldReturnValue","hasThrowValue","isAsync","async","filterTags","item","tagList","filter","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","parent","getClassJsdoc","classNode","classJsdocNode","indnt","repeat","classJsdoc","forEachPreferredTag","arrayHandler","matchingJsdocTags","_","matchingJsdocTag","getSettings","ignorePrivate","ignoreInternal","Number","preferredTypes","parserPath","setTagStructure","overrideTagStructure","error","makeReport","commentNode","fix","jsdocLoc","lineNumber","colNumber","iterate","info","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","charAt","jsdc","iterateAllJsdocs","contexts","additiveContexts","trackedJsdocs","callIterator","jsdocNodes","lastCall","test","getText","comment","selector","lastComment","exit","create","reducedNode","nonComment","allComments","getAllComments","untrackedJSdoc","checkFile","iterateJsdoc","metaType","TypeError","contextDefaults","contextSelected","matchContext","match","enforcedContexts","map","obj","hasPlainAny","hasObjectAny","ctxt","checkJsdoc","contextObject","getContextObject","prop","bind"],"mappings":"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","sourcesContent":["import {\n getReducedASTNode, getJSDocComment, commentHandler, parseComment,\n} from '@es-joy/jsdoccomment';\nimport {\n stringify as commentStringify,\n} from 'comment-parser';\nimport {\n rewireSpecs,\n seedTokens,\n} from 'comment-parser/lib/util';\nimport _ from 'lodash';\nimport jsdocUtils from './jsdocUtils';\n\n/*\nconst {\n align as commentAlign,\n flow: commentFlow,\n indent: commentIndent,\n} = transforms;\n*/\n\nconst globalState = new Map();\n\nconst getBasicUtils = (context, {tagNamePreference, mode}) => {\n const utils = {};\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n utils.parseClosureTemplateTag = (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n };\n\n utils.pathDoesNotBeginWith = jsdocUtils.pathDoesNotBeginWith;\n\n utils.getPreferredTagNameObject = ({tagName}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (ret === false || isObject && !ret.replacement) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n return ret;\n };\n\n return utils;\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = getBasicUtils(context, settings);\n\n const {\n tagNamePreference,\n overrideReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n mode,\n } = settings;\n\n utils.isIteratingFunction = () => {\n return !iteratingAll || [\n 'MethodDefinition',\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(node && node.type);\n };\n\n utils.isVirtualFunction = () => {\n return iteratingAll && utils.hasATag(['callback', 'function', 'func', 'method']);\n };\n\n utils.stringify = (tagBlock, specRewire) => {\n return commentStringify(specRewire ? rewireSpecs(tagBlock) : tagBlock);\n };\n\n utils.reportJSDoc = (msg, tag, handler, specRewire, data) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc, specRewire);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag, data);\n };\n\n utils.getRegexFromString = (str, requiredFlags) => {\n return jsdocUtils.getRegexFromString(str, requiredFlags);\n };\n\n utils.getTagDescription = (tg) => {\n const descriptions = [];\n tg.source.some(({\n tokens: {end, postDelimiter, tag, postTag, name, type, description},\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n descriptions.push(desc);\n\n return false;\n });\n\n return descriptions.join('\\n');\n };\n\n utils.getDescription = () => {\n const descriptions = [];\n let lastDescriptionLine = 0;\n jsdoc.source.some(({tokens: {description, tag, end}}, idx) => {\n if (idx && (tag || end)) {\n lastDescriptionLine = idx - 1;\n\n return true;\n }\n if (idx || description) {\n descriptions.push(description);\n }\n\n return false;\n });\n\n return {\n description: descriptions.join('\\n'),\n lastDescriptionLine,\n };\n };\n\n utils.changeTag = (tag, ...tokens) => {\n tag.source.forEach((src, idx) => {\n src.tokens = {\n ...src.tokens,\n ...tokens[idx],\n };\n });\n };\n\n utils.setTag = (tag, tokens) => {\n tag.source = [{\n // Or tag.source[0].number?\n number: tag.line,\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: '@' + tag.tag,\n ...tokens,\n }),\n }];\n };\n\n utils.removeTag = (idx) => {\n return utils.removeTagItem(idx);\n };\n\n utils.removeTagItem = (tagIndex, tagSourceOffset = 0) => {\n const {source: tagSource} = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({number}, tagIdx) => {\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber, tokens: {end},\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n let spliceCount = 1;\n tagSource.slice(tagIdx + 1).some(({tokens: {tag, end}}) => {\n if (!tag && !end) {\n spliceCount++;\n\n return false;\n }\n\n return true;\n });\n jsdoc.source.splice(sourceIndex + tagSourceOffset, spliceCount - tagSourceOffset);\n tagSource.splice(tagIdx + tagSourceOffset, spliceCount - tagSourceOffset);\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n jsdoc.source.slice(lastIndex).forEach((src, idx) => {\n src.number = firstNumber + lastIndex + idx;\n });\n };\n\n utils.addTag = (targetTagName) => {\n const number = (jsdoc.tags[jsdoc.tags.length - 1]?.source[0]?.number ?? 0) + 1;\n jsdoc.source.splice(number, 0, {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: `@${targetTagName}`,\n }),\n });\n jsdoc.source.slice(number + 1).forEach((src) => {\n src.number++;\n });\n };\n\n utils.seedTokens = seedTokens;\n\n utils.addLine = (sourceIndex, tokens) => {\n const number = (jsdoc.source[sourceIndex - 1]?.number || 0) + 1;\n jsdoc.source.splice(sourceIndex, 0, {\n number,\n source: '',\n tokens: seedTokens(tokens),\n });\n\n // If necessary, we can rewire the tags (misnamed method)\n // rewireSource(jsdoc);\n };\n\n utils.addLines = (tagIndex, tagSourceOffset, numLines) => {\n const {source: tagSource} = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({number}) => {\n const makeLine = () => {\n return {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n start: indent + ' ',\n }),\n };\n };\n const makeLines = () => {\n return Array.from({length: numLines}, makeLine);\n };\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber, tokens: {end},\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n const lines = makeLines();\n jsdoc.source.splice(sourceIndex + tagSourceOffset, 0, ...lines);\n\n // tagSource.splice(tagIdx + 1, 0, ...makeLines());\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n jsdoc.source.slice(lastIndex).forEach((src, idx) => {\n src.number = firstNumber + lastIndex + idx;\n });\n };\n\n utils.flattenRoots = (params) => {\n return jsdocUtils.flattenRoots(params);\n };\n\n utils.getFunctionParameterNames = (useDefaultObjectProperties) => {\n return jsdocUtils.getFunctionParameterNames(node, useDefaultObjectProperties);\n };\n\n utils.hasParams = () => {\n return jsdocUtils.hasParams(node);\n };\n\n utils.isGenerator = () => {\n return node && (\n node.generator ||\n node.type === 'MethodDefinition' && node.value.generator ||\n ['ExportNamedDeclaration', 'ExportDefaultDeclaration'].includes(node.type) &&\n node.declaration.generator\n );\n };\n\n utils.isConstructor = () => {\n return jsdocUtils.isConstructor(node);\n };\n\n utils.getJsdocTagsDeep = (tagName) => {\n const name = utils.getPreferredTagName({tagName});\n if (!name) {\n return false;\n }\n\n return jsdocUtils.getJsdocTagsDeep(jsdoc, name);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(context, mode, name, definedTags);\n };\n\n utils.hasATag = (names) => {\n return jsdocUtils.hasATag(jsdoc, names);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.comparePaths = (name) => {\n return jsdocUtils.comparePaths(name);\n };\n\n utils.dropPathSegmentQuotes = (name) => {\n return jsdocUtils.dropPathSegmentQuotes(name);\n };\n\n utils.avoidDocs = () => {\n if (\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n if (jsdocUtils.exemptSpeciaMethods(\n jsdoc, node, context, ruleConfig.meta.schema,\n )) {\n return true;\n }\n\n const exemptedBy = context.options[0]?.exemptedBy ?? [\n 'inheritDoc',\n ...mode === 'closure' ? [] : ['inheritdoc'],\n ];\n if (exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n [\n 'tagMightHaveNamePosition',\n 'tagMightHaveTypePosition',\n ].forEach((method) => {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (result) {\n return true;\n }\n\n if (!otherModeMaps) {\n return false;\n }\n\n const otherResult = otherModeMaps.some((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? {otherMode: true} : false;\n };\n });\n\n [\n 'tagMustHaveNamePosition',\n 'tagMustHaveTypePosition',\n 'tagMissingRequiredTypeOrNamepath',\n ].forEach((method) => {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (!result) {\n return false;\n }\n\n // if (!otherModeMaps) { return true; }\n\n const otherResult = otherModeMaps.every((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? true : {otherMode: false};\n };\n });\n\n [\n 'isNamepathDefiningTag',\n 'tagMightHaveNamepath',\n ].forEach((method) => {\n utils[method] = (tagName) => {\n return jsdocUtils[method](tagName);\n };\n });\n\n utils.getTagStructureForMode = (mde) => {\n return jsdocUtils.getTagStructureForMode(mde, settings.structuredTags);\n };\n\n utils.hasDefinedTypeTag = (tag) => {\n return jsdocUtils.hasDefinedTypeTag(tag);\n };\n\n utils.hasValueOrExecutorHasNonEmptyResolveValue = (anyPromiseAsReturn) => {\n return jsdocUtils.hasValueOrExecutorHasNonEmptyResolveValue(node, anyPromiseAsReturn);\n };\n\n utils.hasYieldValue = () => {\n if (['ExportNamedDeclaration', 'ExportDefaultDeclaration'].includes(node.type)) {\n return jsdocUtils.hasYieldValue(node.declaration);\n }\n\n return jsdocUtils.hasYieldValue(node);\n };\n\n utils.hasYieldReturnValue = () => {\n return jsdocUtils.hasYieldValue(node, true);\n };\n\n utils.hasThrowValue = () => {\n return jsdocUtils.hasThrowValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(context, mode, tags, tagNamePreference);\n };\n\n utils.hasOptionTag = (tagName) => {\n const {tags} = context.options[0] ?? {};\n\n return Boolean(tags && tags.includes(tagName));\n };\n\n utils.getClassNode = () => {\n return [...ancestors, node].reverse().find((parent) => {\n return parent && ['ClassDeclaration', 'ClassExpression'].includes(parent.type);\n }) || null;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n\n if (!classNode) {\n return null;\n }\n\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indnt = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indnt);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return Boolean(classJsdoc) && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n const matchingJsdocTags = _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n matchingJsdocTags.forEach((matchingJsdocTag) => {\n arrayHandler(matchingJsdocTag, targetTagName);\n });\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n const settings = {\n // All rules\n ignorePrivate: Boolean(context.settings.jsdoc?.ignorePrivate),\n ignoreInternal: Boolean(context.settings.jsdoc?.ignoreInternal),\n maxLines: Number(context.settings.jsdoc?.maxLines ?? 1),\n minLines: Number(context.settings.jsdoc?.minLines ?? 0),\n\n // `check-tag-names` and many returns/param rules\n tagNamePreference: context.settings.jsdoc?.tagNamePreference ?? {},\n\n // `check-types` and `no-undefined-types`\n preferredTypes: context.settings.jsdoc?.preferredTypes ?? {},\n\n // `check-types`, `no-undefined-types`, `valid-types`\n structuredTags: context.settings.jsdoc?.structuredTags ?? {},\n\n // `require-param`, `require-description`, `require-example`, `require-returns`\n overrideReplacesDocs: context.settings.jsdoc?.overrideReplacesDocs,\n implementsReplacesDocs: context.settings.jsdoc?.implementsReplacesDocs,\n augmentsExtendsReplacesDocs: context.settings.jsdoc?.augmentsExtendsReplacesDocs,\n\n // Many rules, e.g., `check-tag-names`\n mode: context.settings.jsdoc?.mode ??\n (context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc'),\n };\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n\n jsdocUtils.setTagStructure(settings.mode);\n try {\n jsdocUtils.overrideTagStructure(settings.structuredTags);\n } catch (error) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: error.message,\n });\n\n return false;\n }\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n if (!('line' in jsdocLoc)) {\n jsdocLoc.line = jsdocLoc.source[0].number;\n }\n\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: object,\n * sourceCode: object,\n * indent: string,\n * jsdoc: object,\n * jsdocNode: object,\n * node: object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\nconst iterate = (\n info,\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node, settings,\n sourceCode, iterator, state, iteratingAll,\n) => {\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n );\n\n if (\n !ruleConfig.checkInternal && settings.ignoreInternal &&\n utils.hasTag('internal')\n ) {\n return;\n }\n if (\n !ruleConfig.checkPrivate && settings.ignorePrivate &&\n (utils.hasTag('private') || _.filter(jsdoc.tags, {\n tag: 'access',\n }).some(({description}) => {\n return description === 'private';\n }))\n ) {\n return;\n }\n\n iterator({\n context,\n globalState,\n indent,\n info,\n iteratingAll,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\n });\n};\n\nconst getIndentAndJSDoc = function (lines, jsdocNode) {\n const sourceLine = lines[jsdocNode.loc.start.line - 1];\n const indnt = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n const jsdc = parseComment(jsdocNode, indnt);\n\n return [indnt, jsdc];\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n * @param contexts\n * @param {boolean} additiveContexts\n */\nconst iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => {\n const trackedJsdocs = [];\n\n let handler;\n let settings;\n const callIterator = (context, node, jsdocNodes, state, lastCall) => {\n const sourceCode = context.getSourceCode();\n const {lines} = sourceCode;\n\n const utils = getBasicUtils(context, settings);\n jsdocNodes.forEach((jsdocNode) => {\n if (!(/^\\/\\*\\*\\s/).test(sourceCode.getText(jsdocNode))) {\n return;\n }\n\n const [indent, jsdoc] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (additiveContexts) {\n contexts.forEach(({comment}, idx) => {\n if (comment && handler(comment, jsdoc) === false) {\n return;\n }\n iterate(\n {\n comment,\n lastIndex: idx,\n selector: node?.type,\n },\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator,\n state, true,\n );\n });\n\n return;\n }\n\n let lastComment;\n let lastIndex;\n if (contexts && contexts.every(({comment}, idx) => {\n lastComment = comment;\n lastIndex = idx;\n\n return comment && handler(comment, jsdoc) === false;\n })) {\n return;\n }\n\n iterate(\n lastComment ? {\n comment: lastComment,\n lastIndex,\n selector: node?.type,\n } : {\n lastIndex,\n selector: node?.type,\n },\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator,\n state, true,\n );\n });\n if (lastCall && ruleConfig.exit) {\n ruleConfig.exit({\n context,\n state,\n utils,\n });\n }\n };\n\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n settings = getSettings(context);\n if (!settings) {\n return {};\n }\n if (contexts) {\n handler = commentHandler(settings);\n }\n\n const state = {};\n\n return {\n '*:not(Program)' (node) {\n const reducedNode = getReducedASTNode(node, sourceCode);\n\n if (node !== reducedNode) {\n return;\n }\n\n const commentNode = getJSDocComment(sourceCode, node, settings);\n if (trackedJsdocs.includes(commentNode)) {\n return;\n }\n if (!commentNode) {\n if (ruleConfig.nonComment) {\n ruleConfig.nonComment({\n node,\n state,\n });\n }\n\n return;\n }\n\n trackedJsdocs.push(commentNode);\n callIterator(context, node, [commentNode], state);\n },\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const untrackedJSdoc = allComments.filter((node) => {\n return !trackedJsdocs.includes(node);\n });\n\n callIterator(context, null, untrackedJSdoc, state, true);\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst checkFile = (iterator, ruleConfig) => {\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n return {\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const {lines} = sourceCode;\n const utils = getBasicUtils(context, settings);\n\n iterator({\n allComments,\n context,\n lines,\n makeReport,\n settings,\n sourceCode,\n utils,\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * contextSelected?: true,\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = ruleConfig?.meta?.type;\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.checkFile) {\n return checkFile(iterator, ruleConfig);\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, ruleConfig);\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n let contexts;\n if (ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext) {\n contexts = ruleConfig.matchContext && context.options[0]?.match ?\n context.options[0].match :\n jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n if (contexts) {\n contexts = contexts.map((obj) => {\n if (typeof obj === 'object' && !obj.context) {\n return {...obj, context: 'any'};\n }\n\n return obj;\n });\n }\n\n const hasPlainAny = contexts?.includes('any');\n const hasObjectAny = !hasPlainAny && contexts?.find((ctxt) => {\n return ctxt?.context === 'any';\n });\n if (hasPlainAny || hasObjectAny) {\n return iterateAllJsdocs(\n iterator, ruleConfig, hasObjectAny ? contexts : null, ruleConfig.matchContext,\n ).create(context);\n }\n }\n const sourceCode = context.getSourceCode();\n const {lines} = sourceCode;\n\n const state = {};\n\n const checkJsdoc = (info, handler, node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const [indent, jsdoc] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (\n // Note, `handler` should already be bound in its first argument\n // with these only to be called after the value of\n // `comment`\n handler && handler(jsdoc) === false\n ) {\n return;\n }\n\n iterate(\n info, indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator, state,\n );\n };\n\n let contextObject = {};\n\n if (contexts && (\n ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext\n )) {\n contextObject = jsdocUtils.getContextObject(\n contexts,\n checkJsdoc,\n commentHandler(settings),\n );\n } else {\n [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].forEach((prop) => {\n contextObject[prop] = checkJsdoc.bind(null, {\n selector: prop,\n }, null);\n });\n }\n\n if (ruleConfig.exit) {\n contextObject['Program:exit'] = () => {\n ruleConfig.exit({\n context,\n state,\n });\n };\n }\n\n return contextObject;\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}
1
+ {"version":3,"sources":["../src/iterateJsdoc.js"],"names":["globalState","Map","getBasicUtils","context","tagNamePreference","mode","utils","reportSettings","message","report","loc","start","column","line","parseClosureTemplateTag","tag","jsdocUtils","pathDoesNotBeginWith","getPreferredTagNameObject","tagName","ret","getPreferredTagName","isObject","replacement","blocked","getUtils","node","jsdoc","jsdocNode","settings","iteratingAll","ruleConfig","indent","ancestors","getAncestors","sourceCode","getSourceCode","overrideReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","isIteratingFunction","includes","type","isVirtualFunction","hasATag","stringify","tagBlock","specRewire","reportJSDoc","msg","handler","data","fixer","replaceText","getRegexFromString","str","requiredFlags","getTagDescription","tg","descriptions","source","some","tokens","end","postDelimiter","postTag","name","description","desc","slice","push","join","getDescription","lastDescriptionLine","idx","changeTag","forEach","src","setTag","number","delimiter","removeTag","removeTagItem","tagIndex","tagSourceOffset","tagSource","tags","lastIndex","firstNumber","tagIdx","sourceIndex","findIndex","srcNumber","spliceCount","splice","addTag","targetTagName","length","seedTokens","emptyTokens","prop","addLine","addLines","numLines","makeLine","makeLines","Array","from","lines","makeMultiline","postName","postType","trimEnd","flattenRoots","params","getFunctionParameterNames","useDefaultObjectProperties","hasParams","isGenerator","generator","value","declaration","isConstructor","getJsdocTagsDeep","skipReportingBlockedTag","allowObjectReturn","defaultMessage","hasTag","getTags","isValidTag","definedTags","names","comparePaths","dropPathSegmentQuotes","avoidDocs","classHasTag","exemptSpeciaMethods","meta","schema","exemptedBy","options","getPresentTags","method","otherModeMaps","result","otherResult","otherModeMap","otherMode","every","getTagStructureForMode","mde","structuredTags","hasDefinedTypeTag","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","hasYieldValue","hasYieldReturnValue","hasThrowValue","isAsync","async","filterTags","item","tagList","filter","getTagsByType","hasOptionTag","Boolean","getClassNode","reverse","find","parent","getClassJsdoc","classNode","classJsdocNode","indnt","repeat","classJsdoc","forEachPreferredTag","arrayHandler","matchingJsdocTags","_","matchingJsdocTag","getSettings","ignorePrivate","ignoreInternal","Number","preferredTypes","parserPath","setTagStructure","overrideTagStructure","error","makeReport","commentNode","fix","jsdocLoc","lineNumber","colNumber","iterate","info","iterator","state","checkInternal","checkPrivate","getIndentAndJSDoc","sourceLine","charAt","jsdc","iterateAllJsdocs","contexts","additiveContexts","trackedJsdocs","callIterator","jsdocNodes","lastCall","test","getText","comment","selector","lastComment","exit","create","reducedNode","nonComment","allComments","getAllComments","untrackedJSdoc","checkFile","iterateJsdoc","metaType","TypeError","contextDefaults","contextSelected","matchContext","match","enforcedContexts","map","obj","hasPlainAny","hasObjectAny","ctxt","checkJsdoc","contextObject","getContextObject","bind"],"mappings":"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","sourcesContent":["import {\n getReducedASTNode, getJSDocComment, commentHandler, parseComment,\n} from '@es-joy/jsdoccomment';\nimport {\n stringify as commentStringify,\n} from 'comment-parser';\nimport {\n rewireSpecs,\n seedTokens,\n} from 'comment-parser/lib/util';\nimport _ from 'lodash';\nimport jsdocUtils from './jsdocUtils';\n\n/*\nconst {\n align as commentAlign,\n flow: commentFlow,\n indent: commentIndent,\n} = transforms;\n*/\n\nconst globalState = new Map();\n\nconst getBasicUtils = (context, {tagNamePreference, mode}) => {\n const utils = {};\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n utils.parseClosureTemplateTag = (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n };\n\n utils.pathDoesNotBeginWith = jsdocUtils.pathDoesNotBeginWith;\n\n utils.getPreferredTagNameObject = ({tagName}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (ret === false || isObject && !ret.replacement) {\n return {\n blocked: true,\n tagName,\n };\n }\n\n return ret;\n };\n\n return utils;\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = getBasicUtils(context, settings);\n\n const {\n tagNamePreference,\n overrideReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n mode,\n } = settings;\n\n utils.isIteratingFunction = () => {\n return !iteratingAll || [\n 'MethodDefinition',\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].includes(node && node.type);\n };\n\n utils.isVirtualFunction = () => {\n return iteratingAll && utils.hasATag(['callback', 'function', 'func', 'method']);\n };\n\n utils.stringify = (tagBlock, specRewire) => {\n return commentStringify(specRewire ? rewireSpecs(tagBlock) : tagBlock);\n };\n\n utils.reportJSDoc = (msg, tag, handler, specRewire, data) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc, specRewire);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag, data);\n };\n\n utils.getRegexFromString = (str, requiredFlags) => {\n return jsdocUtils.getRegexFromString(str, requiredFlags);\n };\n\n utils.getTagDescription = (tg) => {\n const descriptions = [];\n tg.source.some(({\n tokens: {end, postDelimiter, tag, postTag, name, type, description},\n }) => {\n const desc = (\n tag && postTag ||\n !tag && !name && !type && postDelimiter || ''\n\n // Remove space\n ).slice(1) +\n (description || '');\n\n if (end) {\n if (desc) {\n descriptions.push(desc);\n }\n\n return true;\n }\n descriptions.push(desc);\n\n return false;\n });\n\n return descriptions.join('\\n');\n };\n\n utils.getDescription = () => {\n const descriptions = [];\n let lastDescriptionLine = 0;\n jsdoc.source.some(({tokens: {description, tag, end}}, idx) => {\n if (idx && (tag || end)) {\n lastDescriptionLine = idx - 1;\n\n return true;\n }\n if (idx || description) {\n descriptions.push(description);\n }\n\n return false;\n });\n\n return {\n description: descriptions.join('\\n'),\n lastDescriptionLine,\n };\n };\n\n utils.changeTag = (tag, ...tokens) => {\n tag.source.forEach((src, idx) => {\n src.tokens = {\n ...src.tokens,\n ...tokens[idx],\n };\n });\n };\n\n utils.setTag = (tag, tokens) => {\n tag.source = [{\n // Or tag.source[0].number?\n number: tag.line,\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: '@' + tag.tag,\n ...tokens,\n }),\n }];\n };\n\n utils.removeTag = (idx) => {\n return utils.removeTagItem(idx);\n };\n\n utils.removeTagItem = (tagIndex, tagSourceOffset = 0) => {\n const {source: tagSource} = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({number}, tagIdx) => {\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber, tokens: {end},\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n let spliceCount = 1;\n tagSource.slice(tagIdx + 1).some(({tokens: {tag, end}}) => {\n if (!tag && !end) {\n spliceCount++;\n\n return false;\n }\n\n return true;\n });\n jsdoc.source.splice(sourceIndex + tagSourceOffset, spliceCount - tagSourceOffset);\n tagSource.splice(tagIdx + tagSourceOffset, spliceCount - tagSourceOffset);\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n jsdoc.source.slice(lastIndex).forEach((src, idx) => {\n src.number = firstNumber + lastIndex + idx;\n });\n };\n\n utils.addTag = (targetTagName) => {\n const number = (jsdoc.tags[jsdoc.tags.length - 1]?.source[0]?.number ?? 0) + 1;\n jsdoc.source.splice(number, 0, {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n postDelimiter: ' ',\n start: indent + ' ',\n tag: `@${targetTagName}`,\n }),\n });\n jsdoc.source.slice(number + 1).forEach((src) => {\n src.number++;\n });\n };\n\n utils.seedTokens = seedTokens;\n\n utils.emptyTokens = (tokens) => {\n [\n 'start',\n 'postDelimiter',\n 'tag',\n 'type',\n 'postType',\n 'postTag',\n 'name',\n 'postName',\n 'description',\n 'end',\n ].forEach((prop) => {\n tokens[prop] = '';\n });\n };\n\n utils.addLine = (sourceIndex, tokens) => {\n const number = (jsdoc.source[sourceIndex - 1]?.number || 0) + 1;\n jsdoc.source.splice(sourceIndex, 0, {\n number,\n source: '',\n tokens: seedTokens(tokens),\n });\n\n // If necessary, we can rewire the tags (misnamed method)\n // rewireSource(jsdoc);\n };\n\n utils.addLines = (tagIndex, tagSourceOffset, numLines) => {\n const {source: tagSource} = jsdoc.tags[tagIndex];\n let lastIndex;\n const firstNumber = jsdoc.source[0].number;\n tagSource.some(({number}) => {\n const makeLine = () => {\n return {\n number,\n source: '',\n tokens: seedTokens({\n delimiter: '*',\n start: indent + ' ',\n }),\n };\n };\n const makeLines = () => {\n return Array.from({length: numLines}, makeLine);\n };\n const sourceIndex = jsdoc.source.findIndex(({\n number: srcNumber, tokens: {end},\n }) => {\n return number === srcNumber && !end;\n });\n // istanbul ignore else\n if (sourceIndex > -1) {\n const lines = makeLines();\n jsdoc.source.splice(sourceIndex + tagSourceOffset, 0, ...lines);\n\n // tagSource.splice(tagIdx + 1, 0, ...makeLines());\n lastIndex = sourceIndex;\n\n return true;\n }\n\n // istanbul ignore next\n return false;\n });\n jsdoc.source.slice(lastIndex).forEach((src, idx) => {\n src.number = firstNumber + lastIndex + idx;\n });\n };\n\n utils.makeMultiline = () => {\n const {source: [{tokens}]} = jsdoc;\n const {postDelimiter, description, tag, name, type} = tokens;\n\n let {tokens: {\n postName, postTag, postType,\n }} = jsdoc.source[0];\n\n // Strip trailing leftovers from single line ending\n if (!description) {\n if (postName) {\n postName = '';\n } else if (postType) {\n postType = '';\n // eslint-disable-next-line max-len, no-inline-comments\n } else /* istanbul ignore else -- `comment-parser` prevents empty blocks currently per https://github.com/syavorsky/comment-parser/issues/128 */ if (postTag) {\n postTag = '';\n }\n }\n\n utils.emptyTokens(tokens);\n\n utils.addLine(1, {\n delimiter: '*',\n\n // If a description were present, it may have whitespace attached\n // due to being at the end of the single line\n description: description.trimEnd(),\n name,\n postDelimiter,\n postName,\n postTag,\n postType,\n start: indent + ' ',\n tag,\n type,\n });\n utils.addLine(2, {\n end: '*/',\n start: indent + ' ',\n });\n };\n\n utils.flattenRoots = (params) => {\n return jsdocUtils.flattenRoots(params);\n };\n\n utils.getFunctionParameterNames = (useDefaultObjectProperties) => {\n return jsdocUtils.getFunctionParameterNames(node, useDefaultObjectProperties);\n };\n\n utils.hasParams = () => {\n return jsdocUtils.hasParams(node);\n };\n\n utils.isGenerator = () => {\n return node && (\n node.generator ||\n node.type === 'MethodDefinition' && node.value.generator ||\n ['ExportNamedDeclaration', 'ExportDefaultDeclaration'].includes(node.type) &&\n node.declaration.generator\n );\n };\n\n utils.isConstructor = () => {\n return jsdocUtils.isConstructor(node);\n };\n\n utils.getJsdocTagsDeep = (tagName) => {\n const name = utils.getPreferredTagName({tagName});\n if (!name) {\n return false;\n }\n\n return jsdocUtils.getJsdocTagsDeep(jsdoc, name);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\n const ret = jsdocUtils.getPreferredTagName(context, mode, tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(context, mode, name, definedTags);\n };\n\n utils.hasATag = (names) => {\n return jsdocUtils.hasATag(jsdoc, names);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.comparePaths = (name) => {\n return jsdocUtils.comparePaths(name);\n };\n\n utils.dropPathSegmentQuotes = (name) => {\n return jsdocUtils.dropPathSegmentQuotes(name);\n };\n\n utils.avoidDocs = () => {\n if (\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n if (jsdocUtils.exemptSpeciaMethods(\n jsdoc, node, context, ruleConfig.meta.schema,\n )) {\n return true;\n }\n\n const exemptedBy = context.options[0]?.exemptedBy ?? [\n 'inheritDoc',\n ...mode === 'closure' ? [] : ['inheritdoc'],\n ];\n if (exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n [\n 'tagMightHaveNamePosition',\n 'tagMightHaveTypePosition',\n ].forEach((method) => {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (result) {\n return true;\n }\n\n if (!otherModeMaps) {\n return false;\n }\n\n const otherResult = otherModeMaps.some((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? {otherMode: true} : false;\n };\n });\n\n [\n 'tagMustHaveNamePosition',\n 'tagMustHaveTypePosition',\n 'tagMissingRequiredTypeOrNamepath',\n ].forEach((method) => {\n utils[method] = (tagName, otherModeMaps) => {\n const result = jsdocUtils[method](tagName);\n if (!result) {\n return false;\n }\n\n // if (!otherModeMaps) { return true; }\n\n const otherResult = otherModeMaps.every((otherModeMap) => {\n return jsdocUtils[method](tagName, otherModeMap);\n });\n\n return otherResult ? true : {otherMode: false};\n };\n });\n\n [\n 'isNamepathDefiningTag',\n 'tagMightHaveNamepath',\n ].forEach((method) => {\n utils[method] = (tagName) => {\n return jsdocUtils[method](tagName);\n };\n });\n\n utils.getTagStructureForMode = (mde) => {\n return jsdocUtils.getTagStructureForMode(mde, settings.structuredTags);\n };\n\n utils.hasDefinedTypeTag = (tag) => {\n return jsdocUtils.hasDefinedTypeTag(tag);\n };\n\n utils.hasValueOrExecutorHasNonEmptyResolveValue = (anyPromiseAsReturn) => {\n return jsdocUtils.hasValueOrExecutorHasNonEmptyResolveValue(node, anyPromiseAsReturn);\n };\n\n utils.hasYieldValue = () => {\n if (['ExportNamedDeclaration', 'ExportDefaultDeclaration'].includes(node.type)) {\n return jsdocUtils.hasYieldValue(node.declaration);\n }\n\n return jsdocUtils.hasYieldValue(node);\n };\n\n utils.hasYieldReturnValue = () => {\n return jsdocUtils.hasYieldValue(node, true);\n };\n\n utils.hasThrowValue = () => {\n return jsdocUtils.hasThrowValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(context, mode, tags, tagNamePreference);\n };\n\n utils.hasOptionTag = (tagName) => {\n const {tags} = context.options[0] ?? {};\n\n return Boolean(tags && tags.includes(tagName));\n };\n\n utils.getClassNode = () => {\n return [...ancestors, node].reverse().find((parent) => {\n return parent && ['ClassDeclaration', 'ClassExpression'].includes(parent.type);\n }) || null;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n\n if (!classNode) {\n return null;\n }\n\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indnt = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indnt);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return Boolean(classJsdoc) && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n const matchingJsdocTags = _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n matchingJsdocTags.forEach((matchingJsdocTag) => {\n arrayHandler(matchingJsdocTag, targetTagName);\n });\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n const settings = {\n // All rules\n ignorePrivate: Boolean(context.settings.jsdoc?.ignorePrivate),\n ignoreInternal: Boolean(context.settings.jsdoc?.ignoreInternal),\n maxLines: Number(context.settings.jsdoc?.maxLines ?? 1),\n minLines: Number(context.settings.jsdoc?.minLines ?? 0),\n\n // `check-tag-names` and many returns/param rules\n tagNamePreference: context.settings.jsdoc?.tagNamePreference ?? {},\n\n // `check-types` and `no-undefined-types`\n preferredTypes: context.settings.jsdoc?.preferredTypes ?? {},\n\n // `check-types`, `no-undefined-types`, `valid-types`\n structuredTags: context.settings.jsdoc?.structuredTags ?? {},\n\n // `require-param`, `require-description`, `require-example`, `require-returns`\n overrideReplacesDocs: context.settings.jsdoc?.overrideReplacesDocs,\n implementsReplacesDocs: context.settings.jsdoc?.implementsReplacesDocs,\n augmentsExtendsReplacesDocs: context.settings.jsdoc?.augmentsExtendsReplacesDocs,\n\n // Many rules, e.g., `check-tag-names`\n mode: context.settings.jsdoc?.mode ??\n (context.parserPath.includes('@typescript-eslint') ? 'typescript' : 'jsdoc'),\n };\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n\n jsdocUtils.setTagStructure(settings.mode);\n try {\n jsdocUtils.overrideTagStructure(settings.structuredTags);\n } catch (error) {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message: error.message,\n });\n\n return false;\n }\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n if (!('line' in jsdocLoc)) {\n jsdocLoc.line = jsdocLoc.source[0].number;\n }\n\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: object,\n * sourceCode: object,\n * indent: string,\n * jsdoc: object,\n * jsdocNode: object,\n * node: object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\nconst iterate = (\n info,\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node, settings,\n sourceCode, iterator, state, iteratingAll,\n) => {\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n iteratingAll,\n ruleConfig,\n indent,\n );\n\n if (\n !ruleConfig.checkInternal && settings.ignoreInternal &&\n utils.hasTag('internal')\n ) {\n return;\n }\n if (\n !ruleConfig.checkPrivate && settings.ignorePrivate &&\n (utils.hasTag('private') || _.filter(jsdoc.tags, {\n tag: 'access',\n }).some(({description}) => {\n return description === 'private';\n }))\n ) {\n return;\n }\n\n iterator({\n context,\n globalState,\n indent,\n info,\n iteratingAll,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n state,\n utils,\n });\n};\n\nconst getIndentAndJSDoc = function (lines, jsdocNode) {\n const sourceLine = lines[jsdocNode.loc.start.line - 1];\n const indnt = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n const jsdc = parseComment(jsdocNode, indnt);\n\n return [indnt, jsdc];\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n * @param contexts\n * @param {boolean} additiveContexts\n */\nconst iterateAllJsdocs = (iterator, ruleConfig, contexts, additiveContexts) => {\n const trackedJsdocs = [];\n\n let handler;\n let settings;\n const callIterator = (context, node, jsdocNodes, state, lastCall) => {\n const sourceCode = context.getSourceCode();\n const {lines} = sourceCode;\n\n const utils = getBasicUtils(context, settings);\n jsdocNodes.forEach((jsdocNode) => {\n if (!(/^\\/\\*\\*\\s/).test(sourceCode.getText(jsdocNode))) {\n return;\n }\n\n const [indent, jsdoc] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (additiveContexts) {\n contexts.forEach(({comment}, idx) => {\n if (comment && handler(comment, jsdoc) === false) {\n return;\n }\n iterate(\n {\n comment,\n lastIndex: idx,\n selector: node?.type,\n },\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator,\n state, true,\n );\n });\n\n return;\n }\n\n let lastComment;\n let lastIndex;\n if (contexts && contexts.every(({comment}, idx) => {\n lastComment = comment;\n lastIndex = idx;\n\n return comment && handler(comment, jsdoc) === false;\n })) {\n return;\n }\n\n iterate(\n lastComment ? {\n comment: lastComment,\n lastIndex,\n selector: node?.type,\n } : {\n lastIndex,\n selector: node?.type,\n },\n indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator,\n state, true,\n );\n });\n if (lastCall && ruleConfig.exit) {\n ruleConfig.exit({\n context,\n state,\n utils,\n });\n }\n };\n\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n settings = getSettings(context);\n if (!settings) {\n return {};\n }\n if (contexts) {\n handler = commentHandler(settings);\n }\n\n const state = {};\n\n return {\n '*:not(Program)' (node) {\n const reducedNode = getReducedASTNode(node, sourceCode);\n\n if (node !== reducedNode) {\n return;\n }\n\n const commentNode = getJSDocComment(sourceCode, node, settings);\n if (trackedJsdocs.includes(commentNode)) {\n return;\n }\n if (!commentNode) {\n if (ruleConfig.nonComment) {\n ruleConfig.nonComment({\n node,\n state,\n });\n }\n\n return;\n }\n\n trackedJsdocs.push(commentNode);\n callIterator(context, node, [commentNode], state);\n },\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const untrackedJSdoc = allComments.filter((node) => {\n return !trackedJsdocs.includes(node);\n });\n\n callIterator(context, null, untrackedJSdoc, state, true);\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst checkFile = (iterator, ruleConfig) => {\n return {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n return {\n 'Program:exit' () {\n const allComments = sourceCode.getAllComments();\n const {lines} = sourceCode;\n const utils = getBasicUtils(context, settings);\n\n iterator({\n allComments,\n context,\n lines,\n makeReport,\n settings,\n sourceCode,\n utils,\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * contextSelected?: true,\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = ruleConfig?.meta?.type;\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.checkFile) {\n return checkFile(iterator, ruleConfig);\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, ruleConfig);\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n let contexts;\n if (ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext) {\n contexts = ruleConfig.matchContext && context.options[0]?.match ?\n context.options[0].match :\n jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n if (contexts) {\n contexts = contexts.map((obj) => {\n if (typeof obj === 'object' && !obj.context) {\n return {...obj, context: 'any'};\n }\n\n return obj;\n });\n }\n\n const hasPlainAny = contexts?.includes('any');\n const hasObjectAny = !hasPlainAny && contexts?.find((ctxt) => {\n return ctxt?.context === 'any';\n });\n if (hasPlainAny || hasObjectAny) {\n return iterateAllJsdocs(\n iterator, ruleConfig, hasObjectAny ? contexts : null, ruleConfig.matchContext,\n ).create(context);\n }\n }\n const sourceCode = context.getSourceCode();\n const {lines} = sourceCode;\n\n const state = {};\n\n const checkJsdoc = (info, handler, node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const [indent, jsdoc] = getIndentAndJSDoc(\n lines, jsdocNode,\n );\n\n if (\n // Note, `handler` should already be bound in its first argument\n // with these only to be called after the value of\n // `comment`\n handler && handler(jsdoc) === false\n ) {\n return;\n }\n\n iterate(\n info, indent, jsdoc,\n ruleConfig, context, lines, jsdocNode, node,\n settings, sourceCode, iterator, state,\n );\n };\n\n let contextObject = {};\n\n if (contexts && (\n ruleConfig.contextDefaults || ruleConfig.contextSelected || ruleConfig.matchContext\n )) {\n contextObject = jsdocUtils.getContextObject(\n contexts,\n checkJsdoc,\n commentHandler(settings),\n );\n } else {\n [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ].forEach((prop) => {\n contextObject[prop] = checkJsdoc.bind(null, {\n selector: prop,\n }, null);\n });\n }\n\n if (ruleConfig.exit) {\n contextObject['Program:exit'] = () => {\n ruleConfig.exit({\n context,\n state,\n });\n };\n }\n\n return contextObject;\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}
@@ -527,11 +527,20 @@ const isNewPromiseExpression = node => {
527
527
 
528
528
 
529
529
  const hasReturnValue = (node, promFilter) => {
530
+ var _node$returnType, _node$returnType$type;
531
+
530
532
  if (!node) {
531
533
  return false;
532
534
  }
533
535
 
534
536
  switch (node.type) {
537
+ case 'TSFunctionType':
538
+ case 'TSMethodSignature':
539
+ return !['TSVoidKeyword', 'TSUndefinedKeyword'].includes(node === null || node === void 0 ? void 0 : (_node$returnType = node.returnType) === null || _node$returnType === void 0 ? void 0 : (_node$returnType$type = _node$returnType.typeAnnotation) === null || _node$returnType$type === void 0 ? void 0 : _node$returnType$type.type);
540
+
541
+ case 'MethodDefinition':
542
+ return hasReturnValue(node.value, promFilter);
543
+
535
544
  case 'FunctionExpression':
536
545
  case 'FunctionDeclaration':
537
546
  case 'ArrowFunctionExpression':