eslint-plugin-jsdoc 44.2.4 → 44.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/WarnSettings.js +0 -1
  2. package/dist/WarnSettings.js.map +1 -1
  3. package/dist/alignTransform.js +1 -1
  4. package/dist/alignTransform.js.map +1 -1
  5. package/dist/bin/generateRule.js +5 -4
  6. package/dist/bin/generateRule.js.map +1 -1
  7. package/dist/exportParser.js +206 -135
  8. package/dist/exportParser.js.map +1 -1
  9. package/dist/generateRule.js +5 -4
  10. package/dist/generateRule.js.map +1 -1
  11. package/dist/iterateJsdoc.js +21 -48
  12. package/dist/iterateJsdoc.js.map +1 -1
  13. package/dist/jsdocUtils.js +126 -92
  14. package/dist/jsdocUtils.js.map +1 -1
  15. package/dist/rules/checkAccess.js +1 -1
  16. package/dist/rules/checkAccess.js.map +1 -1
  17. package/dist/rules/checkAlignment.js +1 -1
  18. package/dist/rules/checkAlignment.js.map +1 -1
  19. package/dist/rules/checkExamples.js +4 -4
  20. package/dist/rules/checkExamples.js.map +1 -1
  21. package/dist/rules/checkIndentation.js +2 -2
  22. package/dist/rules/checkIndentation.js.map +1 -1
  23. package/dist/rules/checkLineAlignment.js +4 -4
  24. package/dist/rules/checkLineAlignment.js.map +1 -1
  25. package/dist/rules/checkParamNames.js +18 -5
  26. package/dist/rules/checkParamNames.js.map +1 -1
  27. package/dist/rules/checkPropertyNames.js +1 -1
  28. package/dist/rules/checkPropertyNames.js.map +1 -1
  29. package/dist/rules/checkSyntax.js +1 -1
  30. package/dist/rules/checkSyntax.js.map +1 -1
  31. package/dist/rules/checkTagNames.js +3 -7
  32. package/dist/rules/checkTagNames.js.map +1 -1
  33. package/dist/rules/checkTypes.js +2 -6
  34. package/dist/rules/checkTypes.js.map +1 -1
  35. package/dist/rules/checkValues.js +2 -2
  36. package/dist/rules/checkValues.js.map +1 -1
  37. package/dist/rules/emptyTags.js +1 -1
  38. package/dist/rules/emptyTags.js.map +1 -1
  39. package/dist/rules/implementsOnClasses.js +1 -1
  40. package/dist/rules/implementsOnClasses.js.map +1 -1
  41. package/dist/rules/informativeDocs.js +1 -1
  42. package/dist/rules/informativeDocs.js.map +1 -1
  43. package/dist/rules/matchDescription.js +1 -1
  44. package/dist/rules/matchDescription.js.map +1 -1
  45. package/dist/rules/matchName.js +1 -1
  46. package/dist/rules/matchName.js.map +1 -1
  47. package/dist/rules/multilineBlocks.js +1 -1
  48. package/dist/rules/multilineBlocks.js.map +1 -1
  49. package/dist/rules/noBadBlocks.js +2 -2
  50. package/dist/rules/noBadBlocks.js.map +1 -1
  51. package/dist/rules/noBlankBlockDescriptions.js +1 -1
  52. package/dist/rules/noBlankBlockDescriptions.js.map +1 -1
  53. package/dist/rules/noBlankBlocks.js +1 -1
  54. package/dist/rules/noBlankBlocks.js.map +1 -1
  55. package/dist/rules/noDefaults.js +1 -1
  56. package/dist/rules/noDefaults.js.map +1 -1
  57. package/dist/rules/noMissingSyntax.js +4 -10
  58. package/dist/rules/noMissingSyntax.js.map +1 -1
  59. package/dist/rules/noMultiAsterisks.js +1 -1
  60. package/dist/rules/noMultiAsterisks.js.map +1 -1
  61. package/dist/rules/noRestrictedSyntax.js +4 -10
  62. package/dist/rules/noRestrictedSyntax.js.map +1 -1
  63. package/dist/rules/noTypes.js +1 -1
  64. package/dist/rules/noTypes.js.map +1 -1
  65. package/dist/rules/noUndefinedTypes.js +6 -9
  66. package/dist/rules/noUndefinedTypes.js.map +1 -1
  67. package/dist/rules/requireDescription.js +1 -1
  68. package/dist/rules/requireDescription.js.map +1 -1
  69. package/dist/rules/requireDescriptionCompleteSentence.js +4 -4
  70. package/dist/rules/requireDescriptionCompleteSentence.js.map +1 -1
  71. package/dist/rules/requireExample.js +1 -1
  72. package/dist/rules/requireExample.js.map +1 -1
  73. package/dist/rules/requireFileOverview.js +1 -1
  74. package/dist/rules/requireFileOverview.js.map +1 -1
  75. package/dist/rules/requireHyphenBeforeParamDescription.js +4 -7
  76. package/dist/rules/requireHyphenBeforeParamDescription.js.map +1 -1
  77. package/dist/rules/requireJsdoc.js +13 -8
  78. package/dist/rules/requireJsdoc.js.map +1 -1
  79. package/dist/rules/requireParam.js +84 -22
  80. package/dist/rules/requireParam.js.map +1 -1
  81. package/dist/rules/requireParamDescription.js +1 -1
  82. package/dist/rules/requireParamDescription.js.map +1 -1
  83. package/dist/rules/requireParamName.js +1 -1
  84. package/dist/rules/requireParamName.js.map +1 -1
  85. package/dist/rules/requireParamType.js +1 -1
  86. package/dist/rules/requireParamType.js.map +1 -1
  87. package/dist/rules/requireProperty.js +1 -1
  88. package/dist/rules/requireProperty.js.map +1 -1
  89. package/dist/rules/requirePropertyDescription.js +1 -1
  90. package/dist/rules/requirePropertyDescription.js.map +1 -1
  91. package/dist/rules/requirePropertyName.js +1 -1
  92. package/dist/rules/requirePropertyName.js.map +1 -1
  93. package/dist/rules/requirePropertyType.js +1 -1
  94. package/dist/rules/requirePropertyType.js.map +1 -1
  95. package/dist/rules/requireReturns.js +1 -2
  96. package/dist/rules/requireReturns.js.map +1 -1
  97. package/dist/rules/requireReturnsCheck.js +1 -1
  98. package/dist/rules/requireReturnsCheck.js.map +1 -1
  99. package/dist/rules/requireReturnsDescription.js +1 -1
  100. package/dist/rules/requireReturnsDescription.js.map +1 -1
  101. package/dist/rules/requireReturnsType.js +1 -1
  102. package/dist/rules/requireReturnsType.js.map +1 -1
  103. package/dist/rules/requireThrows.js +1 -2
  104. package/dist/rules/requireThrows.js.map +1 -1
  105. package/dist/rules/requireYields.js +1 -2
  106. package/dist/rules/requireYields.js.map +1 -1
  107. package/dist/rules/requireYieldsCheck.js +1 -1
  108. package/dist/rules/requireYieldsCheck.js.map +1 -1
  109. package/dist/rules/sortTags.js +2 -2
  110. package/dist/rules/sortTags.js.map +1 -1
  111. package/dist/rules/tagLines.js +1 -1
  112. package/dist/rules/tagLines.js.map +1 -1
  113. package/dist/rules/textEscaping.js +3 -3
  114. package/dist/rules/textEscaping.js.map +1 -1
  115. package/dist/rules/validTypes.js +2 -2
  116. package/dist/rules/validTypes.js.map +1 -1
  117. package/dist/tagNames.js +0 -2
  118. package/dist/tagNames.js.map +1 -1
  119. package/dist/utils/hasReturnValue.js +0 -5
  120. package/dist/utils/hasReturnValue.js.map +1 -1
  121. package/docs/rules/check-line-alignment.md +7 -0
  122. package/docs/rules/no-undefined-types.md +6 -0
  123. package/docs/rules/require-param.md +4 -0
  124. package/docs/settings.md +2 -0
  125. package/package.json +9 -9
@@ -4,11 +4,19 @@ 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
+ */
12
20
  /** @type {import('json-schema').JSONSchema4} */
13
21
  const OPTIONS_SCHEMA = {
14
22
  additionalProperties: false,
@@ -149,14 +157,11 @@ const getOption = (context, baseObject, option, key) => {
149
157
  typeof context.options[0][option] === 'boolean' || key in context.options[0][option])) {
150
158
  return context.options[0][option][key];
151
159
  }
152
-
153
- /* eslint-disable jsdoc/valid-types -- Old version */
154
160
  return (/** @type {{[key: string]: {default?: boolean|undefined}}} */baseObject.properties[key].default
155
161
  );
156
162
  /* eslint-enable jsdoc/valid-types -- Old version */
157
163
  };
158
164
 
159
- /* eslint-disable jsdoc/valid-types -- Old version */
160
165
  /**
161
166
  * @param {import('eslint').Rule.RuleContext} context
162
167
  * @param {import('../iterateJsdoc.js').Settings} settings
@@ -198,7 +203,6 @@ const getOptions = (context, settings) => {
198
203
  return false;
199
204
  }
200
205
 
201
- /* eslint-disable jsdoc/valid-types -- Old version */
202
206
  /** @type {{[key: string]: boolean|undefined}} */
203
207
  const properties = {};
204
208
  /* eslint-enable jsdoc/valid-types -- Old version */
@@ -213,7 +217,6 @@ const getOptions = (context, settings) => {
213
217
  /** @type {import('json-schema').JSONSchema4Object} */
214
218
  OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),
215
219
  require: (baseObj => {
216
- /* eslint-disable jsdoc/valid-types -- Old version */
217
220
  /** @type {{[key: string]: boolean|undefined}} */
218
221
  const properties = {};
219
222
  /* eslint-enable jsdoc/valid-types -- Old version */
@@ -247,7 +250,7 @@ var _default = {
247
250
  fixerMessage,
248
251
  minLineCount
249
252
  } = opts;
250
- const publicOnly = /* eslint-disable jsdoc/valid-types -- Old version */
253
+ const publicOnly =
251
254
  /**
252
255
  * @type {{
253
256
  * [key: string]: boolean | undefined;
@@ -313,6 +316,7 @@ var _default = {
313
316
  // setters or getters) being reported
314
317
  if (_jsdocUtils.default.exemptSpeciaMethods({
315
318
  description: '',
319
+ inlineTags: [],
316
320
  problems: [],
317
321
  source: [],
318
322
  tags: []
@@ -386,6 +390,7 @@ var _default = {
386
390
  });
387
391
  };
388
392
  if (publicOnly) {
393
+ /** @type {RequireJsdocOpts} */
389
394
  const opt = {
390
395
  ancestorsOnly: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.ancestorsOnly) ?? false),
391
396
  esm: Boolean((publicOnly === null || publicOnly === void 0 ? void 0 : publicOnly.esm) ?? true),
@@ -485,7 +490,7 @@ var _default = {
485
490
  category: 'Stylistic Issues',
486
491
  description: 'Require JSDoc comments',
487
492
  recommended: true,
488
- url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc'
493
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header'
489
494
  },
490
495
  fixable: 'code',
491
496
  messages: {
@@ -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","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","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 {\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\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 /* eslint-disable jsdoc/valid-types -- Old version */\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/* eslint-disable jsdoc/valid-types -- Old version */\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 /* eslint-disable jsdoc/valid-types -- Old version */\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 /* eslint-disable jsdoc/valid-types -- Old version */\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 /* eslint-disable jsdoc/valid-types -- Old version */\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 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 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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"}
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/blob/main/docs/rules/require-jsdoc.md#repos-sticky-header',\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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"}
@@ -7,12 +7,15 @@ exports.default = void 0;
7
7
  var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
8
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
9
  /**
10
- * @template T
10
+ * @typedef {[string, boolean, () => RootNamerReturn]} RootNamerReturn
11
+ */
12
+ /**
11
13
  * @param {string[]} desiredRoots
12
14
  * @param {number} currentIndex
13
- * @returns {[string, boolean, () => T]}
15
+ * @returns {RootNamerReturn}
14
16
  */
15
17
  const rootNamer = (desiredRoots, currentIndex) => {
18
+ /** @type {string} */
16
19
  let name;
17
20
  let idx = currentIndex;
18
21
  const incremented = desiredRoots.length <= 1;
@@ -21,7 +24,7 @@ const rootNamer = (desiredRoots, currentIndex) => {
21
24
  const suffix = idx++;
22
25
  name = `${base}${suffix}`;
23
26
  } else {
24
- name = desiredRoots.shift();
27
+ name = /** @type {string} */desiredRoots.shift();
25
28
  }
26
29
  return [name, incremented, () => {
27
30
  return rootNamer(desiredRoots, idx);
@@ -65,7 +68,15 @@ var _default = (0, _iterateJsdoc.default)(({
65
68
  if (!functionParameterNames.length) {
66
69
  return;
67
70
  }
68
- const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);
71
+ const jsdocParameterNames =
72
+ /**
73
+ * @type {{
74
+ * idx: import('../iterateJsdoc.js').Integer;
75
+ * name: string;
76
+ * type: string;
77
+ * }[]}
78
+ */
79
+ utils.getJsdocTagsDeep(preferredTagName);
69
80
  const shallowJsdocParameterNames = jsdocParameterNames.filter(tag => {
70
81
  return !tag.name.includes('.');
71
82
  }).map((tag, idx) => {
@@ -75,17 +86,38 @@ var _default = (0, _iterateJsdoc.default)(({
75
86
  };
76
87
  });
77
88
  const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);
89
+
90
+ /**
91
+ * @type {{
92
+ * functionParameterIdx: import('../iterateJsdoc.js').Integer,
93
+ * functionParameterName: string,
94
+ * inc: boolean|undefined,
95
+ * remove?: true,
96
+ * type?: string|undefined
97
+ * }[]}
98
+ */
78
99
  const missingTags = [];
79
100
  const flattenedRoots = utils.flattenRoots(functionParameterNames).names;
101
+
102
+ /**
103
+ * @type {{
104
+ * [key: string]: import('../iterateJsdoc.js').Integer
105
+ * }}
106
+ */
80
107
  const paramIndex = {};
108
+
109
+ /**
110
+ * @param {string} cur
111
+ * @returns {boolean}
112
+ */
81
113
  const hasParamIndex = cur => {
82
114
  return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;
83
115
  };
84
116
 
85
117
  /**
86
118
  *
87
- * @param {} cur
88
- * @returns {}
119
+ * @param {string|number|undefined} cur
120
+ * @returns {import('../iterateJsdoc.js').Integer}
89
121
  */
90
122
  const getParamIndex = cur => {
91
123
  return paramIndex[utils.dropPathSegmentQuotes(String(cur))];
@@ -93,8 +125,8 @@ var _default = (0, _iterateJsdoc.default)(({
93
125
 
94
126
  /**
95
127
  *
96
- * @param {} cur
97
- * @param {} idx
128
+ * @param {string} cur
129
+ * @param {import('../iterateJsdoc.js').Integer} idx
98
130
  * @returns {void}
99
131
  */
100
132
  const setParamIndex = (cur, idx) => {
@@ -106,8 +138,10 @@ var _default = (0, _iterateJsdoc.default)(({
106
138
 
107
139
  /**
108
140
  *
109
- * @param {} jsdocTags
110
- * @param {} indexAtFunctionParams
141
+ * @param {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {
142
+ * newAdd?: boolean
143
+ * })[]} jsdocTags
144
+ * @param {import('../iterateJsdoc.js').Integer} indexAtFunctionParams
111
145
  * @returns {import('../iterateJsdoc.js').Integer}
112
146
  */
113
147
  const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {
@@ -118,7 +152,14 @@ var _default = (0, _iterateJsdoc.default)(({
118
152
  }) => {
119
153
  return !newAdd && remainingRoots.some(remainingRoot => {
120
154
  if (Array.isArray(remainingRoot)) {
121
- return remainingRoot[1].names.includes(name);
155
+ return (
156
+ /**
157
+ * @type {import('../jsdocUtils.js').FlattendRootInfo & {
158
+ * annotationParamName?: string|undefined;
159
+ * }}
160
+ */
161
+ remainingRoot[1].names.includes(name)
162
+ );
122
163
  }
123
164
  if (typeof remainingRoot === 'object') {
124
165
  return name === remainingRoot.name;
@@ -152,6 +193,8 @@ var _default = (0, _iterateJsdoc.default)(({
152
193
  let inc;
153
194
  if (Array.isArray(functionParameterName)) {
154
195
  const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] || jsdocParameterNames[functionParameterIdx];
196
+
197
+ /** @type {string} */
155
198
  let rootName;
156
199
  if (functionParameterName[0]) {
157
200
  rootName = functionParameterName[0];
@@ -170,7 +213,13 @@ var _default = (0, _iterateJsdoc.default)(({
170
213
  hasPropertyRest,
171
214
  rests,
172
215
  names
173
- } = functionParameterName[1];
216
+ } =
217
+ /**
218
+ * @type {import('../jsdocUtils.js').FlattendRootInfo & {
219
+ * annotationParamName?: string | undefined;
220
+ * }}
221
+ */
222
+ functionParameterName[1];
174
223
  const notCheckingNames = [];
175
224
  if (!enableRestElementFixer && hasRestElement) {
176
225
  continue;
@@ -246,16 +295,18 @@ var _default = (0, _iterateJsdoc.default)(({
246
295
  }
247
296
  continue;
248
297
  }
298
+
299
+ /** @type {string} */
249
300
  let funcParamName;
250
301
  let type;
251
302
  if (typeof functionParameterName === 'object') {
252
303
  if (!enableRestElementFixer && functionParameterName.restElement) {
253
304
  continue;
254
305
  }
255
- funcParamName = functionParameterName.name;
306
+ funcParamName = /** @type {string} */functionParameterName.name;
256
307
  type = '{...any}';
257
308
  } else {
258
- funcParamName = functionParameterName;
309
+ funcParamName = /** @type {string} */functionParameterName;
259
310
  }
260
311
  if (jsdocParameterNames && !jsdocParameterNames.find(({
261
312
  name
@@ -276,9 +327,9 @@ var _default = (0, _iterateJsdoc.default)(({
276
327
  * @param {{
277
328
  * functionParameterIdx: import('../iterateJsdoc.js').Integer,
278
329
  * functionParameterName: string,
279
- * remove: true,
280
- * inc: boolean,
281
- * type: string
330
+ * remove?: true,
331
+ * inc?: boolean,
332
+ * type?: string
282
333
  * }} cfg
283
334
  */
284
335
  const fix = ({
@@ -294,15 +345,16 @@ var _default = (0, _iterateJsdoc.default)(({
294
345
 
295
346
  /**
296
347
  *
297
- * @param {} tagIndex
298
- * @param {} sourceIndex
299
- * @param {} spliceCount
300
- * @returns {}
348
+ * @param {import('../iterateJsdoc.js').Integer} tagIndex
349
+ * @param {import('../iterateJsdoc.js').Integer} sourceIndex
350
+ * @param {import('../iterateJsdoc.js').Integer} spliceCount
351
+ * @returns {void}
301
352
  */
302
353
  const createTokens = (tagIndex, sourceIndex, spliceCount) => {
303
354
  // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);
304
355
  const tokens = {
305
356
  number: sourceIndex + 1,
357
+ source: '',
306
358
  tokens: {
307
359
  delimiter: '*',
308
360
  description: '',
@@ -319,9 +371,19 @@ var _default = (0, _iterateJsdoc.default)(({
319
371
  type: type ?? ''
320
372
  }
321
373
  };
374
+
375
+ /**
376
+ * @type {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {
377
+ * newAdd?: true
378
+ * })[]}
379
+ */
322
380
  jsdoc.tags.splice(tagIndex, spliceCount, {
381
+ description: '',
382
+ inlineTags: [],
323
383
  name: functionParameterName,
324
384
  newAdd: true,
385
+ optional: false,
386
+ problems: [],
325
387
  source: [tokens],
326
388
  tag: preferredTagName,
327
389
  type: type ?? ''
@@ -369,7 +431,7 @@ var _default = (0, _iterateJsdoc.default)(({
369
431
  meta: {
370
432
  docs: {
371
433
  description: 'Requires that all function parameters are documented.',
372
- url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param'
434
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header'
373
435
  },
374
436
  fixable: 'code',
375
437
  schema: [{
@@ -1 +1 @@
1
- {"version":3,"file":"requireParam.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","_default","iterateJsdoc","jsdoc","utils","context","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","preferredTagName","getPreferredTagName","tagName","functionParameterNames","getFunctionParameterNames","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","checkTypesRegex","getRegexFromString","missingTags","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy","noTracking","exports","module"],"sources":["../../src/rules/requireParam.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @template T\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {[string, boolean, () => T]}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = desiredRoots.shift();\n }\n\n return [\n name,\n incremented,\n () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n/* eslint-disable complexity -- Temporary */\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n /* eslint-enable complexity -- Temporary */\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = [\n 'root',\n ],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'param',\n }));\n if (!preferredTagName) {\n return;\n }\n\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n if (!functionParameterNames.length) {\n return;\n }\n\n const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const missingTags = [];\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n const paramIndex = {};\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n /**\n *\n * @param {} cur\n * @returns {}\n */\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n /**\n *\n * @param {} cur\n * @param {} idx\n * @returns {void}\n */\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [\n idx,\n cur,\n ] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n /**\n *\n * @param {} jsdocTags\n * @param {} indexAtFunctionParams\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return remainingRoot[1].names.includes(name);\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = functionParameterName[1];\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = functionParameterName.name;\n type = '{...any}';\n } else {\n funcParamName = functionParameterName;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n }) && funcParamName !== 'this') {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n /**\n *\n * @param {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * remove: true,\n * inc: boolean,\n * type: string\n * }} cfg\n */\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n /**\n *\n * @param {} tagIndex\n * @param {} sourceIndex\n * @param {} spliceCount\n * @returns {}\n */\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n jsdoc.tags.splice(tagIndex, spliceCount, {\n name: functionParameterName,\n newAdd: true,\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n /**\n * @returns {void}\n */\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n\n // We cannot cache comment nodes as the contexts may recur with the\n // same comment node but a different JS node, and we may need the different\n // JS node to ensure we iterate its context\n noTracking: true,\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"requireParam.js","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","_default","iterateJsdoc","jsdoc","utils","context","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","preferredTagName","getPreferredTagName","tagName","functionParameterNames","getFunctionParameterNames","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","checkTypesRegex","getRegexFromString","missingTags","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","inlineTags","optional","problems","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy","noTracking","exports","module"],"sources":["../../src/rules/requireParam.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @typedef {[string, boolean, () => RootNamerReturn]} RootNamerReturn\n */\n\n/**\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {RootNamerReturn}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n /** @type {string} */\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = /** @type {string} */ (desiredRoots.shift());\n }\n\n return [\n name,\n incremented,\n () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n/* eslint-disable complexity -- Temporary */\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n /* eslint-enable complexity -- Temporary */\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = [\n 'root',\n ],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'param',\n }));\n if (!preferredTagName) {\n return;\n }\n\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n if (!functionParameterNames.length) {\n return;\n }\n\n const jsdocParameterNames =\n /**\n * @type {{\n * idx: import('../iterateJsdoc.js').Integer;\n * name: string;\n * type: string;\n * }[]}\n */ (utils.getJsdocTagsDeep(preferredTagName));\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n /**\n * @type {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * inc: boolean|undefined,\n * remove?: true,\n * type?: string|undefined\n * }[]}\n */\n const missingTags = [];\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n /**\n * @type {{\n * [key: string]: import('../iterateJsdoc.js').Integer\n * }}\n */\n const paramIndex = {};\n\n /**\n * @param {string} cur\n * @returns {boolean}\n */\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n /**\n *\n * @param {string|number|undefined} cur\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n /**\n *\n * @param {string} cur\n * @param {import('../iterateJsdoc.js').Integer} idx\n * @returns {void}\n */\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [\n idx,\n cur,\n ] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n /**\n *\n * @param {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * newAdd?: boolean\n * })[]} jsdocTags\n * @param {import('../iterateJsdoc.js').Integer} indexAtFunctionParams\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return (\n /**\n * @type {import('../jsdocUtils.js').FlattendRootInfo & {\n * annotationParamName?: string|undefined;\n * }}\n */ (remainingRoot[1]).names.includes(name)\n );\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n /** @type {string} */\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = /**\n * @type {import('../jsdocUtils.js').FlattendRootInfo & {\n * annotationParamName?: string | undefined;\n * }}\n */ (functionParameterName[1]);\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n /** @type {string} */\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = /** @type {string} */ (functionParameterName.name);\n type = '{...any}';\n } else {\n funcParamName = /** @type {string} */ (functionParameterName);\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n }) && funcParamName !== 'this') {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n /**\n *\n * @param {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * remove?: true,\n * inc?: boolean,\n * type?: string\n * }} cfg\n */\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n /**\n *\n * @param {import('../iterateJsdoc.js').Integer} tagIndex\n * @param {import('../iterateJsdoc.js').Integer} sourceIndex\n * @param {import('../iterateJsdoc.js').Integer} spliceCount\n * @returns {void}\n */\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n source: '',\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n\n /**\n * @type {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * newAdd?: true\n * })[]}\n */ (jsdoc.tags).splice(tagIndex, spliceCount, {\n description: '',\n inlineTags: [],\n name: functionParameterName,\n newAdd: true,\n optional: false,\n problems: [],\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n /**\n * @returns {void}\n */\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n\n // We cannot cache comment nodes as the contexts may recur with the\n // same comment node but a different JS node, and we may need the different\n // JS node to ensure we iterate its context\n noTracking: true,\n});\n"],"mappings":"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"}
@@ -43,7 +43,7 @@ var _default = (0, _iterateJsdoc.default)(({
43
43
  meta: {
44
44
  docs: {
45
45
  description: 'Requires that each `@param` tag has a `description` value.',
46
- url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param-description'
46
+ url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param-description.md#repos-sticky-header'
47
47
  },
48
48
  fixable: 'code',
49
49
  schema: [{