eslint-plugin-jsdoc 39.1.1 → 39.2.2

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
@@ -569,8 +569,8 @@ While at their simplest, these can be an array of string selectors, one can
569
569
  also supply an object with `context` (in place of the string) and one of two
570
570
  properties:
571
571
 
572
- 1. For `require-jsdoc`, there is also an `inlineCommentBlock` property. See
573
- that rule for details.
572
+ 1. For `require-jsdoc`, there are also `inlineCommentBlock` and
573
+ `minLineCount` properties. See that rule for details.
574
574
  1. For `no-missing-syntax` and `no-restricted-syntax`, there is also a
575
575
  `message` property which allows customization of the message to be shown
576
576
  when the rule is triggered.
@@ -12821,7 +12821,8 @@ contexts where you wish the rule to be applied (e.g., `Property` for
12821
12821
  properties). If specified as an object, it should have a `context` property
12822
12822
  and can have an `inlineCommentBlock` property which, if set to `true`, will
12823
12823
  add an inline `/** */` instead of the regular, multi-line, indented jsdoc
12824
- block which will otherwise be added. Defaults to an empty array.
12824
+ block which will otherwise be added. Defaults to an empty array. Contexts
12825
+ may also have their own `minLineCount` property.
12825
12826
 
12826
12827
  Note that you may need to disable `require` items (e.g., `MethodDefinition`)
12827
12828
  if you are specifying a more precise form in `contexts` (e.g., `MethodDefinition:not([accessibility="private"] > FunctionExpression`).
@@ -12884,12 +12885,20 @@ if one only wishes documentation on one of the two accessors. Defaults to
12884
12885
  A boolean on whether to enable the fixer (which adds an empty jsdoc block).
12885
12886
  Defaults to `true`.
12886
12887
 
12888
+ <a name="user-content-eslint-plugin-jsdoc-rules-require-jsdoc-options-28-minlinecount"></a>
12889
+ <a name="eslint-plugin-jsdoc-rules-require-jsdoc-options-28-minlinecount"></a>
12890
+ ##### <code>minLineCount</code>
12891
+
12892
+ An integer to indicate a minimum number of lines expected for a node in order
12893
+ for it to require documentation. Defaults to `undefined`. This option will
12894
+ apply to any context; see `contexts` for line counts per context.
12895
+
12887
12896
  |||
12888
12897
  |---|---|
12889
12898
  |Context|`ArrowFunctionExpression`, `ClassDeclaration`, `ClassExpression`, `FunctionDeclaration`, `FunctionExpression`; others when `contexts` option enabled|
12890
12899
  |Tags|N/A|
12891
12900
  |Recommended|true|
12892
- |Options|`publicOnly`, `require`, `contexts`, `exemptEmptyConstructors`, `exemptEmptyFunctions`, `enableFixer`|
12901
+ |Options|`publicOnly`, `require`, `contexts`, `exemptEmptyConstructors`, `exemptEmptyFunctions`, `enableFixer`, `minLineCount`|
12893
12902
 
12894
12903
  The following patterns are considered problems:
12895
12904
 
@@ -13676,6 +13685,41 @@ module.exports = class Utility {
13676
13685
  };
13677
13686
  // "jsdoc/require-jsdoc": ["error"|"warn", {"enableFixer":false,"publicOnly":true,"require":{"ArrowFunctionExpression":true,"ClassDeclaration":true,"ClassExpression":true,"FunctionDeclaration":true,"FunctionExpression":true,"MethodDefinition":true}}]
13678
13687
  // Message: Missing JSDoc comment.
13688
+
13689
+ function quux () {
13690
+ return 3;
13691
+ }
13692
+
13693
+ function b () {}
13694
+ // "jsdoc/require-jsdoc": ["error"|"warn", {"minLineCount":2}]
13695
+ // Message: Missing JSDoc comment.
13696
+
13697
+ function quux () {
13698
+ return 3;
13699
+ }
13700
+
13701
+ var a = {};
13702
+ // "jsdoc/require-jsdoc": ["error"|"warn", {"contexts":[{"context":"FunctionDeclaration","minLineCount":2},{"context":"VariableDeclaration","minLineCount":2}],"require":{"FunctionDeclaration":false}}]
13703
+ // Message: Missing JSDoc comment.
13704
+
13705
+ function quux () {
13706
+ return 3;
13707
+ }
13708
+
13709
+ var a = {
13710
+ b: 1,
13711
+ c: 2
13712
+ };
13713
+ // "jsdoc/require-jsdoc": ["error"|"warn", {"contexts":[{"context":"FunctionDeclaration","minLineCount":4},{"context":"VariableDeclaration","minLineCount":2}],"require":{"FunctionDeclaration":false}}]
13714
+ // Message: Missing JSDoc comment.
13715
+
13716
+ class A {
13717
+ setId(newId: number): void {
13718
+ this.id = id;
13719
+ }
13720
+ }
13721
+ // "jsdoc/require-jsdoc": ["error"|"warn", {"contexts":[{"context":"MethodDefinition","minLineCount":3}],"require":{"ClassDeclaration":false,"FunctionExpression":false,"MethodDefinition":false}}]
13722
+ // Message: Missing JSDoc comment.
13679
13723
  ````
13680
13724
 
13681
13725
  The following patterns are not considered problems:
@@ -14489,6 +14533,30 @@ export class UserSettingsState { }
14489
14533
  export class User {
14490
14534
  }
14491
14535
  // "jsdoc/require-jsdoc": ["error"|"warn", {"contexts":["Decorator"],"require":{"FunctionDeclaration":false}}]
14536
+
14537
+ function quux () {
14538
+ return 3;
14539
+ }
14540
+
14541
+ function b () {}
14542
+ // "jsdoc/require-jsdoc": ["error"|"warn", {"minLineCount":4}]
14543
+
14544
+ function quux () {
14545
+ return 3;
14546
+ }
14547
+
14548
+ var a = {
14549
+ b: 1,
14550
+ c: 2
14551
+ };
14552
+ // "jsdoc/require-jsdoc": ["error"|"warn", {"contexts":[{"context":"FunctionDeclaration","minLineCount":4},{"context":"VariableDeclaration","minLineCount":5}],"require":{"FunctionDeclaration":false}}]
14553
+
14554
+ class A {
14555
+ setId(newId: number): void {
14556
+ this.id = id;
14557
+ }
14558
+ }
14559
+ // "jsdoc/require-jsdoc": ["error"|"warn", {"contexts":[{"context":"MethodDefinition","minLineCount":4}],"require":{"ClassDeclaration":false,"FunctionExpression":false,"MethodDefinition":false}}]
14492
14560
  ````
14493
14561
 
14494
14562
 
@@ -52,6 +52,9 @@ const OPTIONS_SCHEMA = {
52
52
  },
53
53
  inlineCommentBlock: {
54
54
  type: 'boolean'
55
+ },
56
+ minLineCount: {
57
+ type: 'integer'
55
58
  }
56
59
  },
57
60
  type: 'object'
@@ -75,6 +78,9 @@ const OPTIONS_SCHEMA = {
75
78
  default: '',
76
79
  type: 'string'
77
80
  },
81
+ minLineCount: {
82
+ type: 'integer'
83
+ },
78
84
  publicOnly: {
79
85
  oneOf: [{
80
86
  default: false,
@@ -150,7 +156,8 @@ const getOptions = context => {
150
156
  exemptEmptyConstructors = true,
151
157
  exemptEmptyFunctions = false,
152
158
  enableFixer = true,
153
- fixerMessage = ''
159
+ fixerMessage = '',
160
+ minLineCount = undefined
154
161
  } = context.options[0] || {};
155
162
  return {
156
163
  contexts,
@@ -158,6 +165,7 @@ const getOptions = context => {
158
165
  exemptEmptyConstructors,
159
166
  exemptEmptyFunctions,
160
167
  fixerMessage,
168
+ minLineCount,
161
169
  publicOnly: (baseObj => {
162
170
  if (!publicOnly) {
163
171
  return false;
@@ -201,10 +209,40 @@ var _default = {
201
209
  exemptEmptyFunctions,
202
210
  exemptEmptyConstructors,
203
211
  enableFixer,
204
- fixerMessage
212
+ fixerMessage,
213
+ minLineCount
205
214
  } = getOptions(context);
206
215
 
207
216
  const checkJsDoc = (info, handler, node) => {
217
+ if ( // Optimize
218
+ minLineCount !== undefined || contexts.some(({
219
+ minLineCount: count
220
+ }) => {
221
+ return count !== undefined;
222
+ })) {
223
+ const underMinLine = count => {
224
+ var _sourceCode$getText$m;
225
+
226
+ return count !== undefined && count > (((_sourceCode$getText$m = sourceCode.getText(node).match(/\n/gu)) === null || _sourceCode$getText$m === void 0 ? void 0 : _sourceCode$getText$m.length) ?? 0) + 1;
227
+ };
228
+
229
+ if (underMinLine(minLineCount)) {
230
+ return;
231
+ }
232
+
233
+ const {
234
+ minLineCount: contextMinLineCount
235
+ } = contexts.find(({
236
+ context: ctxt
237
+ }) => {
238
+ return ctxt === (info.selector || node.type);
239
+ }) || {};
240
+
241
+ if (underMinLine(contextMinLineCount)) {
242
+ return;
243
+ }
244
+ }
245
+
208
246
  const jsDocNode = (0, _jsdoccomment.getJSDocComment)(sourceCode, node, settings);
209
247
 
210
248
  if (jsDocNode) {
@@ -338,13 +376,6 @@ var _default = {
338
376
  },
339
377
 
340
378
  FunctionExpression(node) {
341
- if (hasOption('MethodDefinition') && node.parent.type === 'MethodDefinition') {
342
- checkJsDoc({
343
- isFunctionContext: true
344
- }, null, node);
345
- return;
346
- }
347
-
348
379
  if (!hasOption('FunctionExpression')) {
349
380
  return;
350
381
  }
@@ -354,6 +385,17 @@ var _default = {
354
385
  isFunctionContext: true
355
386
  }, null, node);
356
387
  }
388
+ },
389
+
390
+ MethodDefinition(node) {
391
+ if (!hasOption('MethodDefinition')) {
392
+ return;
393
+ }
394
+
395
+ checkJsDoc({
396
+ isFunctionContext: true,
397
+ selector: 'MethodDefinition'
398
+ }, null, node.value);
357
399
  }
358
400
 
359
401
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rules/requireJsdoc.js"],"names":["OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","default","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","baseObj","prop","Object","keys","opt","create","sourceCode","getSourceCode","settings","requireOption","checkJsDoc","info","handler","node","jsDocNode","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","length","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","decorator","indent","getIndent","text","getText","loc","start","column","find","ctxt","insertion","repeat","slice","insertTextBefore","report","end","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","some","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema"],"mappings":"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","sourcesContent":["import {\n getJSDocComment,\n getReducedASTNode,\n getDecorator,\n} from '@es-joy/jsdoccomment';\nimport exportParser from '../exportParser';\nimport {\n getSettings,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n },\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 publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return baseObject.properties[key].default;\n};\n\nconst getOptions = (context) => {\n const {\n publicOnly,\n contexts = [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'require', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\nexport default {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const {\n require: requireOption,\n contexts,\n publicOnly,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n } = getOptions(context);\n\n const checkJsDoc = (info, handler, node) => {\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n tags: [],\n }, node, context, [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n baseNode,\n baseNode.loc.start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === node.type;\n }) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const loc = {\n end: node.loc.start + 1,\n start: node.loc.start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, []),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (hasOption('MethodDefinition') && node.parent.type === 'MethodDefinition') {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n\n return;\n }\n\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n };\n },\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"],"file":"requireJsdoc.js"}
1
+ {"version":3,"sources":["../../src/rules/requireJsdoc.js"],"names":["OPTIONS_SCHEMA","additionalProperties","properties","checkConstructors","default","type","checkGetters","anyOf","enum","checkSetters","contexts","items","context","inlineCommentBlock","minLineCount","enableFixer","exemptEmptyConstructors","exemptEmptyFunctions","fixerMessage","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","baseObject","option","key","options","getOptions","undefined","baseObj","prop","Object","keys","opt","create","sourceCode","getSourceCode","settings","requireOption","checkJsDoc","info","handler","node","some","count","underMinLine","getText","match","length","contextMinLineCount","find","ctxt","selector","jsDocNode","jsdocUtils","exemptSpeciaMethods","tags","isFunctionContext","isConstructor","functionParameterNames","getFunctionParameterNames","hasReturnValue","fix","fixer","lines","minLines","maxLines","baseNode","decorator","indent","getIndent","text","loc","start","column","insertion","repeat","slice","insertTextBefore","report","end","messageId","Boolean","initModuleExports","initWindow","exported","exportParser","isUncommentedExport","hasOption","getContextObject","enforcedContexts","includes","parent","value","meta","docs","category","description","recommended","url","fixable","messages","missingJsDoc","schema"],"mappings":"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","sourcesContent":["import {\n getJSDocComment,\n getReducedASTNode,\n getDecorator,\n} from '@es-joy/jsdoccomment';\nimport exportParser from '../exportParser';\nimport {\n getSettings,\n} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-setter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n checkSetters: {\n anyOf: [\n {\n type: 'boolean',\n },\n {\n enum: [\n 'no-getter',\n ],\n type: 'string',\n },\n ],\n default: true,\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n context: {\n type: 'string',\n },\n inlineCommentBlock: {\n type: 'boolean',\n },\n minLineCount: {\n type: 'integer',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n default: true,\n type: 'boolean',\n },\n exemptEmptyConstructors: {\n default: false,\n type: 'boolean',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n fixerMessage: {\n default: '',\n type: 'string',\n },\n minLineCount: {\n type: 'integer',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (context.options[0] && option in context.options[0] &&\n // Todo: boolean shouldn't be returning property, but tests currently require\n (typeof context.options[0][option] === 'boolean' ||\n key in context.options[0][option])\n ) {\n return context.options[0][option][key];\n }\n\n return baseObject.properties[key].default;\n};\n\nconst getOptions = (context) => {\n const {\n publicOnly,\n contexts = [],\n exemptEmptyConstructors = true,\n exemptEmptyFunctions = false,\n enableFixer = true,\n fixerMessage = '',\n minLineCount = undefined,\n } = context.options[0] || {};\n\n return {\n contexts,\n enableFixer,\n exemptEmptyConstructors,\n exemptEmptyFunctions,\n fixerMessage,\n minLineCount,\n publicOnly: ((baseObj) => {\n if (!publicOnly) {\n return false;\n }\n\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n const properties = {};\n for (const prop of Object.keys(baseObj.properties)) {\n const opt = getOption(context, baseObj, 'require', prop);\n properties[prop] = opt;\n }\n\n return properties;\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\nexport default {\n create (context) {\n const sourceCode = context.getSourceCode();\n const settings = getSettings(context);\n if (!settings) {\n return {};\n }\n\n const {\n require: requireOption,\n contexts,\n publicOnly,\n exemptEmptyFunctions,\n exemptEmptyConstructors,\n enableFixer,\n fixerMessage,\n minLineCount,\n } = getOptions(context);\n\n const checkJsDoc = (info, handler, node) => {\n if (\n // Optimize\n minLineCount !== undefined || contexts.some(({\n minLineCount: count,\n }) => {\n return count !== undefined;\n })\n ) {\n const underMinLine = (count) => {\n return count !== undefined && count >\n (sourceCode.getText(node).match(/\\n/gu)?.length ?? 0) + 1;\n };\n\n if (underMinLine(minLineCount)) {\n return;\n }\n\n const {\n minLineCount: contextMinLineCount,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === (info.selector || node.type);\n }) || {};\n if (underMinLine(contextMinLineCount)) {\n return;\n }\n }\n\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n // For those who have options configured against ANY constructors (or\n // setters or getters) being reported\n if (jsdocUtils.exemptSpeciaMethods(\n {\n tags: [],\n }, node, context, [\n OPTIONS_SCHEMA,\n ],\n )) {\n return;\n }\n\n if (\n // Avoid reporting param-less, return-less functions (when\n // `exemptEmptyFunctions` option is set)\n exemptEmptyFunctions && info.isFunctionContext ||\n\n // Avoid reporting param-less, return-less constructor methods (when\n // `exemptEmptyConstructors` option is set)\n exemptEmptyConstructors && jsdocUtils.isConstructor(node)\n ) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n let baseNode = getReducedASTNode(node, sourceCode);\n\n const decorator = getDecorator(baseNode);\n if (decorator) {\n baseNode = decorator;\n }\n\n const indent = jsdocUtils.getIndent({\n text: sourceCode.getText(\n baseNode,\n baseNode.loc.start.column,\n ),\n });\n\n const {\n inlineCommentBlock,\n } = contexts.find(({\n context: ctxt,\n }) => {\n return ctxt === node.type;\n }) || {};\n const insertion = (inlineCommentBlock ?\n `/** ${fixerMessage}` :\n `/**\\n${indent}*${fixerMessage}\\n${indent}`) +\n `*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const loc = {\n end: node.loc.start + 1,\n start: node.loc.start,\n };\n context.report({\n fix: enableFixer ? fix : null,\n loc,\n messageId: 'missingJsDoc',\n node,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(publicOnly?.ancestorsOnly ?? false),\n esm: Boolean(publicOnly?.esm ?? true),\n initModuleExports: Boolean(publicOnly?.cjs ?? true),\n initWindow: Boolean(publicOnly?.window ?? false),\n };\n const exported = exportParser.isUncommentedExport(node, sourceCode, opt, settings);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n const hasOption = (prop) => {\n return requireOption[prop] || contexts.some((ctxt) => {\n return typeof ctxt === 'object' ? ctxt.context === prop : ctxt === prop;\n });\n };\n\n return {\n ...jsdocUtils.getContextObject(\n jsdocUtils.enforcedContexts(context, []),\n checkJsDoc,\n ),\n ArrowFunctionExpression (node) {\n if (!hasOption('ArrowFunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n ClassDeclaration (node) {\n if (!hasOption('ClassDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n ClassExpression (node) {\n if (!hasOption('ClassExpression')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: false,\n }, null, node);\n },\n\n FunctionDeclaration (node) {\n if (!hasOption('FunctionDeclaration')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n },\n\n FunctionExpression (node) {\n if (!hasOption('FunctionExpression')) {\n return;\n }\n\n if (\n [\n 'VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration',\n ].includes(node.parent.type) ||\n [\n 'Property', 'ObjectProperty', 'ClassProperty', 'PropertyDefinition',\n ].includes(node.parent.type) && node === node.parent.value\n ) {\n checkJsDoc({\n isFunctionContext: true,\n }, null, node);\n }\n },\n\n MethodDefinition (node) {\n if (!hasOption('MethodDefinition')) {\n return;\n }\n\n checkJsDoc({\n isFunctionContext: true,\n selector: 'MethodDefinition',\n }, null, node.value);\n },\n };\n },\n meta: {\n docs: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n};\n"],"file":"requireJsdoc.js"}
package/package.json CHANGED
@@ -5,12 +5,12 @@
5
5
  "url": "http://gajus.com"
6
6
  },
7
7
  "dependencies": {
8
- "@es-joy/jsdoccomment": "~0.22.1",
8
+ "@es-joy/jsdoccomment": "~0.23.1",
9
9
  "comment-parser": "1.3.1",
10
10
  "debug": "^4.3.4",
11
11
  "escape-string-regexp": "^4.0.0",
12
12
  "esquery": "^1.4.0",
13
- "semver": "^7.3.6",
13
+ "semver": "^7.3.7",
14
14
  "spdx-expression-parse": "^3.0.1"
15
15
  },
16
16
  "description": "JSDoc linting rules for ESLint.",
@@ -23,21 +23,21 @@
23
23
  "@babel/plugin-transform-flow-strip-types": "^7.16.7",
24
24
  "@babel/preset-env": "^7.16.11",
25
25
  "@babel/register": "^7.17.7",
26
- "@es-joy/jsdoc-eslint-parser": "^0.8.2",
26
+ "@es-joy/jsdoc-eslint-parser": "^0.10.1",
27
27
  "@hkdobrev/run-if-changed": "^0.3.1",
28
- "@typescript-eslint/parser": "^5.18.0",
28
+ "@typescript-eslint/parser": "^5.19.0",
29
29
  "babel-plugin-add-module-exports": "^1.0.4",
30
30
  "babel-plugin-istanbul": "^6.1.1",
31
31
  "camelcase": "^6.3.0",
32
32
  "chai": "^4.3.6",
33
33
  "cross-env": "^7.0.3",
34
34
  "decamelize": "^5.0.1",
35
- "eslint": "^8.12.0",
35
+ "eslint": "^8.13.0",
36
36
  "eslint-config-canonical": "~33.0.1",
37
37
  "gitdown": "^3.1.5",
38
- "glob": "^7.2.0",
38
+ "glob": "^8.0.1",
39
39
  "husky": "^7.0.4",
40
- "lint-staged": "^12.3.7",
40
+ "lint-staged": "^12.3.8",
41
41
  "lodash.defaultsdeep": "^4.6.1",
42
42
  "mocha": "^9.2.2",
43
43
  "nyc": "^15.1.0",
@@ -116,5 +116,5 @@
116
116
  "test-cov": "cross-env TIMING=1 nyc --reporter text npm run test-no-cov",
117
117
  "test-index": "npm run test-no-cov -- test/rules/index.js"
118
118
  },
119
- "version": "39.1.1"
119
+ "version": "39.2.2"
120
120
  }