eslint-plugin-jsdoc 15.11.0 → 15.12.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
@@ -328,7 +328,7 @@ Reports invalid alignment of JSDoc block asterisks.
328
328
 
329
329
  |||
330
330
  |---|---|
331
- |Context|`ArrowFunctionExpression`, `FunctionDeclaration`, `FunctionExpression`|
331
+ |Context|everywhere|
332
332
  |Tags|N/A|
333
333
 
334
334
  The following patterns are considered problems:
@@ -338,7 +338,31 @@ The following patterns are considered problems:
338
338
  * @param {Number} foo
339
339
  */
340
340
  function quux (foo) {
341
+ // with spaces
342
+ }
343
+ // Message: Expected JSDoc block to be aligned.
341
344
 
345
+ /**
346
+ * @param {Number} foo
347
+ */
348
+ function quux (foo) {
349
+ // with tabs
350
+ }
351
+ // Message: Expected JSDoc block to be aligned.
352
+
353
+ /**
354
+ * @param {Number} foo
355
+ */
356
+ function quux (foo) {
357
+ // with spaces
358
+ }
359
+ // Message: Expected JSDoc block to be aligned.
360
+
361
+ /**
362
+ * @param {Number} foo
363
+ */
364
+ function quux (foo) {
365
+ // with spaces
342
366
  }
343
367
  // Message: Expected JSDoc block to be aligned.
344
368
 
@@ -1737,9 +1761,11 @@ function quux (foo) {
1737
1761
  // Settings: {"jsdoc":{"tagNamePreference":{"param":"baz","returns":{"message":"Prefer `bar`","replacement":"bar"},"todo":false}}}
1738
1762
 
1739
1763
  /**
1764
+ * @modifies
1740
1765
  * @abstract
1741
1766
  * @access
1742
1767
  * @alias
1768
+ * @async
1743
1769
  * @augments
1744
1770
  * @author
1745
1771
  * @borrows
@@ -1760,7 +1786,9 @@ function quux (foo) {
1760
1786
  * @file
1761
1787
  * @fires
1762
1788
  * @function
1789
+ * @generator
1763
1790
  * @global
1791
+ * @hideconstructor
1764
1792
  * @ignore
1765
1793
  * @implements
1766
1794
  * @inheritdoc
@@ -1780,6 +1808,7 @@ function quux (foo) {
1780
1808
  * @name
1781
1809
  * @namespace
1782
1810
  * @override
1811
+ * @package
1783
1812
  * @param
1784
1813
  * @private
1785
1814
  * @property
@@ -1800,6 +1829,7 @@ function quux (foo) {
1800
1829
  * @typedef
1801
1830
  * @variation
1802
1831
  * @version
1832
+ * @yields
1803
1833
  */
1804
1834
  function quux (foo) {}
1805
1835
 
@@ -1917,8 +1947,8 @@ String | **string** | **string** | `("test") instanceof String` -> **`false`**
1917
1947
  |||
1918
1948
  |---|---|
1919
1949
  |Context|everywhere|
1920
- |Tags|`class`, `constant`, `enum`, `implements`, `member`, `module`, `namespace`, `param`, `property`, `returns`, `throws`, `type`, `typedef`, `yields`|
1921
- |Aliases|`constructor`, `const`, `var`, `arg`, `argument`, `prop`, `return`, `exception`|
1950
+ |Tags|`augments`, `class`, `constant`, `enum`, `implements`, `member`, `module`, `namespace`, `param`, `property`, `returns`, `throws`, `type`, `typedef`, `yields`|
1951
+ |Aliases|`constructor`, `const`, `extends`, `var`, `arg`, `argument`, `prop`, `return`, `exception`, `yield`|
1922
1952
  |Closure-only|`package`, `private`, `protected`, `public`, `static`|
1923
1953
  |Options|`noDefaults`, `unifyParentAndChildTypeChecks`|
1924
1954
  |Settings|`preferredTypes`|
@@ -3642,8 +3672,8 @@ An option object may have the following key:
3642
3672
  |||
3643
3673
  |---|---|
3644
3674
  |Context|everywhere|
3645
- |Tags|`class`, `constant`, `enum`, `implements`, `member`, `module`, `namespace`, `param`, `property`, `returns`, `throws`, `type`, `typedef`, `yields`|
3646
- |Aliases|`constructor`, `const`, `var`, `arg`, `argument`, `prop`, `return`, `exception`, `yield`|
3675
+ |Tags|`augments`, `class`, `constant`, `enum`, `implements`, `member`, `module`, `namespace`, `param`, `property`, `returns`, `throws`, `type`, `typedef`, `yields`|
3676
+ |Aliases|`constructor`, `const`, `extends`, `var`, `arg`, `argument`, `prop`, `return`, `exception`, `yield`|
3647
3677
  |Closure-only|`package`, `private`, `protected`, `public`, `static`|
3648
3678
  |Options|`definedTypes`|
3649
3679
  |Settings|`preferredTypes`|
@@ -4572,6 +4602,14 @@ function quux () {
4572
4602
  // Settings: {"jsdoc":{"tagNamePreference":{"description":false}}}
4573
4603
  // Options: [{"descriptionStyle":"any"}]
4574
4604
  // Message: Missing JSDoc block description or @description declaration.
4605
+
4606
+ /**
4607
+ *
4608
+ */
4609
+ function quux () {
4610
+ }
4611
+ // Options: [{"exemptedBy":["notPresent"]}]
4612
+ // Message: Missing JSDoc block description.
4575
4613
  ````
4576
4614
 
4577
4615
  The following patterns are not considered problems:
@@ -4795,6 +4833,14 @@ class quux {
4795
4833
  }
4796
4834
  // Options: [{"contexts":["ClassDeclaration"]}]
4797
4835
  // Message: Missing JSDoc @example declaration.
4836
+
4837
+ /**
4838
+ *
4839
+ */
4840
+ function quux () {
4841
+ }
4842
+ // Options: [{"exemptedBy":["notPresent"]}]
4843
+ // Message: Missing JSDoc @example declaration.
4798
4844
  ````
4799
4845
 
4800
4846
  The following patterns are not considered problems:
@@ -5038,7 +5084,7 @@ Accepts one optional options object with the following optional keys.
5038
5084
 
5039
5085
  |||
5040
5086
  |---|---|
5041
- |Context|`ArrowFunctionExpression`, `ClassDeclaration`, `ClassExpression`, `FunctionDeclaration`, `FunctionExpression`|
5087
+ |Context|`ArrowFunctionExpression`, `ClassDeclaration`, `ClassExpression`, `FunctionDeclaration`, `FunctionExpression`; others when `contexts` option enabled|
5042
5088
  |Tags|N/A|
5043
5089
  |Options|`publicOnly`, `require`, `contexts`, `exemptEmptyFunctions`|
5044
5090
 
@@ -5991,6 +6037,10 @@ enum Example {
5991
6037
  test = 123
5992
6038
  }
5993
6039
  // Options: [{"contexts":["TSEnumDeclaration"]}]
6040
+
6041
+ const foo = {...{}};
6042
+ function bar() {}
6043
+ // Options: [{"exemptEmptyFunctions":false,"publicOnly":true,"require":{"ArrowFunctionExpression":true,"ClassDeclaration":true,"ClassExpression":true,"FunctionDeclaration":true,"FunctionExpression":false,"MethodDefinition":true}}]
5994
6044
  ````
5995
6045
 
5996
6046
 
@@ -6371,6 +6421,35 @@ function quux (foo) {
6371
6421
  }
6372
6422
  // Settings: {"jsdoc":{"tagNamePreference":{"param":false}}}
6373
6423
  // Message: Unexpected tag `@param`
6424
+
6425
+ /**
6426
+ *
6427
+ */
6428
+ function quux ({bar, baz}, foo) {
6429
+ }
6430
+ // Message: Missing JSDoc @param "foo" declaration.
6431
+
6432
+ /**
6433
+ *
6434
+ */
6435
+ function quux (foo, {bar, baz}) {
6436
+ }
6437
+ // Message: Missing JSDoc @param "foo" declaration.
6438
+
6439
+ /**
6440
+ *
6441
+ */
6442
+ function quux ([bar, baz], foo) {
6443
+ }
6444
+ // Message: Missing JSDoc @param "foo" declaration.
6445
+
6446
+ /**
6447
+ *
6448
+ */
6449
+ function quux (foo) {
6450
+ }
6451
+ // Options: [{"exemptedBy":["notPresent"]}]
6452
+ // Message: Missing JSDoc @param "foo" declaration.
6374
6453
  ````
6375
6454
 
6376
6455
  The following patterns are not considered problems:
@@ -7376,6 +7455,15 @@ function quux () {
7376
7455
  }
7377
7456
  // Settings: {"jsdoc":{"tagNamePreference":{"returns":false}}}
7378
7457
  // Message: Unexpected tag `@returns`
7458
+
7459
+ /**
7460
+ * @param foo
7461
+ */
7462
+ function quux (foo) {
7463
+ return 'bar';
7464
+ }
7465
+ // Options: [{"exemptedBy":["notPresent"]}]
7466
+ // Message: Missing JSDoc @returns declaration.
7379
7467
  ````
7380
7468
 
7381
7469
  The following patterns are not considered problems:
@@ -7663,7 +7751,7 @@ Also impacts behaviors on namepath (or event)-defining and pointing tags:
7663
7751
  1. Name(path)-pointing tags requiring namepath: `@alias`, `@augments`, `@extends`, `@lends`, `@memberof`, `@memberof!`, `@mixes`, `@this`
7664
7752
  1. Name(path)-pointing tags (which may have value without namepath or their
7665
7753
  namepath can be expressed elsewhere on the block): `@listens`, `@fires`,
7666
- `@emits`
7754
+ `@emits`, and `@modifies`
7667
7755
  1. Name(path)-pointing tags (multiple names in one): `@borrows`
7668
7756
 
7669
7757
  ...with the following applying to the above sets:
@@ -7689,10 +7777,10 @@ Also impacts behaviors on namepath (or event)-defining and pointing tags:
7689
7777
  empty name paths with `@callback`, `@event`, `@class`, `@constructor`,
7690
7778
  `@constant`, `@const`, `@function`, `@func`, `@method`, `@interface`,
7691
7779
  `@member`, `@var`, `@mixin`, `@namespace`, `@listens`, `@fires`,
7692
- or `@emits` (these might often be expected to have an accompanying
7693
- name path, though they have some indicative value without one; these
7694
- may also allow names to be defined in another manner elsewhere in
7695
- the block)
7780
+ `@modifies`, or `@emits` (these might often be expected to have an
7781
+ accompanying name path, though they have some indicative value without
7782
+ one; these may also allow names to be defined in another manner elsewhere
7783
+ in the block)
7696
7784
  - `checkSeesForNamepaths` (default: false) - Set this to `true` to insist
7697
7785
  that `@see` only use name paths (the tag is normally permitted to
7698
7786
  allow other text)
@@ -7701,7 +7789,7 @@ Also impacts behaviors on namepath (or event)-defining and pointing tags:
7701
7789
  |||
7702
7790
  |---|---|
7703
7791
  |Context|everywhere|
7704
- |Tags|For name only unless otherwise stated: `alias`, `augments`, `borrows`, `callback`, `class` (for name and type), `constant` (for name and type), `enum` (for type), `event`, `external`, `fires`, `function`, `implements` (for type), `interface`, `lends`, `listens`, `member` (for name and type), `memberof`, `memberof!`, `mixes`, `mixin`, `module` (for name and type), `name`, `namespace` (for name and type), `param` (for name and type), `property` (for name and type), `returns` (for type), `this`, `throws` (for type), `type` (for type), `typedef` (for name and type), `yields` (for type)|
7792
+ |Tags|For name only unless otherwise stated: `alias`, `augments`, `borrows`, `callback`, `class` (for name and type), `constant` (for name and type), `enum` (for type), `event`, `external`, `fires`, `function`, `implements` (for type), `interface`, `lends`, `listens`, `member` (for name and type), `memberof`, `memberof!`, `mixes`, `mixin`, `modifies`, `module` (for name and type), `name`, `namespace` (for name and type), `param` (for name and type), `property` (for name and type), `returns` (for type), `this`, `throws` (for type), `type` (for type), `typedef` (for name and type), `yields` (for type)|
7705
7793
  |Aliases|`extends`, `constructor`, `const`, `host`, `emits`, `func`, `method`, `var`, `arg`, `argument`, `prop`, `return`, `exception`, `yield`|
7706
7794
  |Closure-only|For type only: `package`, `private`, `protected`, `public`, `static`|
7707
7795
  |Options|`allowEmptyNamepaths`, `checkSeesForNamepaths`|
@@ -7831,6 +7919,12 @@ function quux() {
7831
7919
  */
7832
7920
  let foo;
7833
7921
  // Message: Tag @type must have a type
7922
+
7923
+ /**
7924
+ * @modifies {bar|foo<}
7925
+ */
7926
+ function quux (foo, bar, baz) {}
7927
+ // Message: Syntax error in type: bar|foo<
7834
7928
  ````
7835
7929
 
7836
7930
  The following patterns are not considered problems:
@@ -7972,6 +8066,11 @@ function quux() {
7972
8066
  * @typedef {number|string}
7973
8067
  */
7974
8068
  let UserDefinedGCCType;
8069
+
8070
+ /**
8071
+ * @modifies {foo|bar}
8072
+ */
8073
+ function quux (foo, bar, baz) {}
7975
8074
  ````
7976
8075
 
7977
8076
 
@@ -68,7 +68,6 @@ let _createSymbol = null;
68
68
 
69
69
  const getSymbol = function getSymbol(node, globals, scope, opt) {
70
70
  const opts = opt || {};
71
- let block = scope;
72
71
 
73
72
  switch (node.type) {
74
73
  case 'Identifier':
@@ -86,7 +85,7 @@ const getSymbol = function getSymbol(node, globals, scope, opt) {
86
85
  /* istanbul ignore next */
87
86
 
88
87
  if (obj && propertyValue && obj.props[propertyValue]) {
89
- block = obj.props[propertyValue];
88
+ const block = obj.props[propertyValue];
90
89
  return block;
91
90
  }
92
91
  /*
@@ -142,6 +141,10 @@ const getSymbol = function getSymbol(node, globals, scope, opt) {
142
141
  const val = createNode();
143
142
  val.type = 'object';
144
143
  node.properties.forEach(prop => {
144
+ if (prop.type === 'ExperimentalSpreadProperty') {
145
+ return;
146
+ }
147
+
145
148
  const propVal = getSymbol(prop.value, globals, scope, opts);
146
149
  /* istanbul ignore next */
147
150
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/exportParser.js"],"names":["debug","createNode","props","getSymbolValue","symbol","type","value","getIdentifier","node","globals","scope","opts","simpleIdentifier","identifierLiteral","name","block","createSymbol","getSymbol","opt","obj","object","propertySymbol","property","computed","propertyValue","val","prototype","left","right","body","forEach","method","key","properties","prop","propVal","createBlockSymbol","isGlobal","window","special","id","valueSymbol","initVariables","childNode","expression","declarations","declaration","initWindow","kind","mapVariables","isExport","ancestorsOnly","init","exported","ANONYMOUS_DEFAULT","specifiers","specifier","local","findNode","cache","blockCache","includes","slice","push","Object","hasOwnProperty","call","propval","findExportedNode","isNodeExported","initModuleExports","module","exports","esm","parseRecursive","globalVars","parent","parse","ast","isExported","parseResult"],"mappings":"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","sourcesContent":["import debugModule from 'debug';\n\nconst debug = debugModule('requireExportJsdoc');\n\nconst createNode = function () {\n return {\n props: {},\n };\n};\n\nconst getSymbolValue = function (symbol) {\n /* istanbul ignore next */\n if (!symbol) {\n /* istanbul ignore next */\n return null;\n }\n /* istanbul ignore next */\n if (symbol.type === 'literal') {\n return symbol.value.value;\n }\n\n /* istanbul ignore next */\n return null;\n};\n\nconst getIdentifier = function (node, globals, scope, opts) {\n if (opts.simpleIdentifier) {\n // Type is Identier for noncomputed properties\n const identifierLiteral = createNode();\n identifierLiteral.type = 'literal';\n identifierLiteral.value = {value: node.name};\n\n return identifierLiteral;\n }\n\n /* istanbul ignore next */\n const block = scope || globals;\n\n // As scopes are not currently supported, they are not traversed upwards recursively\n if (block.props[node.name]) {\n return block.props[node.name];\n }\n\n // Seems this will only be entered once scopes added and entered\n /* istanbul ignore next */\n if (globals.props[node.name]) {\n return globals.props[node.name];\n }\n\n return null;\n};\n\nlet createSymbol = null;\nconst getSymbol = function (node, globals, scope, opt) {\n const opts = opt || {};\n let block = scope;\n switch (node.type) {\n case 'Identifier': {\n return getIdentifier(node, globals, scope, opts);\n } case 'MemberExpression': {\n const obj = getSymbol(node.object, globals, scope, opts);\n const propertySymbol = getSymbol(node.property, globals, scope, {simpleIdentifier: !node.computed});\n const propertyValue = getSymbolValue(propertySymbol);\n\n /* istanbul ignore next */\n if (obj && propertyValue && obj.props[propertyValue]) {\n block = obj.props[propertyValue];\n\n return block;\n }\n\n /*\n if (opts.createMissingProps && propertyValue) {\n obj.props[propertyValue] = createNode();\n\n return obj.props[propertyValue];\n }\n */\n /* istanbul ignore next */\n debug(`MemberExpression: Missing property ${node.property.name}`);\n\n /* istanbul ignore next */\n return null;\n } case 'ClassDeclaration': case 'ClassExpression': case 'FunctionExpression': case 'FunctionDeclaration': case 'ArrowFunctionExpression': {\n const val = createNode();\n val.props.prototype = createNode();\n val.props.prototype.type = 'object';\n val.type = 'object';\n val.value = node;\n\n return val;\n } case 'AssignmentExpression': {\n return createSymbol(node.left, globals, node.right, scope, opts);\n } case 'ClassBody': {\n const val = createNode();\n node.body.forEach((method) => {\n val.props[method.key.name] = createNode();\n val.props[method.key.name].type = 'object';\n val.props[method.key.name].value = method.value;\n });\n val.type = 'object';\n val.value = node;\n\n return val;\n } case 'ObjectExpression': {\n const val = createNode();\n val.type = 'object';\n node.properties.forEach((prop) => {\n const propVal = getSymbol(prop.value, globals, scope, opts);\n /* istanbul ignore next */\n if (propVal) {\n val.props[prop.key.name] = propVal;\n }\n });\n\n return val;\n } case 'Literal': {\n const val = createNode();\n val.type = 'literal';\n val.value = node;\n\n return val;\n }\n }\n\n /* istanbul ignore next */\n return null;\n};\n\nconst createBlockSymbol = function (block, name, value, globals, isGlobal) {\n block.props[name] = value;\n if (isGlobal && globals.props.window && globals.props.window.special) {\n globals.props.window.props[name] = value;\n }\n};\n\ncreateSymbol = function (node, globals, value, scope, isGlobal) {\n const block = scope || globals;\n let symbol;\n switch (node.type) {\n case 'ClassDeclaration': {\n if (node.id && node.id.type === 'Identifier') {\n return createSymbol(node.id, globals, node, globals);\n }\n break;\n } case 'Identifier': {\n if (value) {\n const valueSymbol = getSymbol(value, globals, block);\n /* istanbul ignore next */\n if (valueSymbol) {\n createBlockSymbol(block, node.name, valueSymbol, globals, isGlobal);\n\n return block.props[node.name];\n }\n /* istanbul ignore next */\n debug('Identifier: Missing value symbol for %s', node.name);\n } else {\n createBlockSymbol(block, node.name, createNode(), globals, isGlobal);\n\n return block.props[node.name];\n }\n /* istanbul ignore next */\n break;\n } case 'MemberExpression': {\n symbol = getSymbol(node.object, globals, block);\n\n const propertySymbol = getSymbol(node.property, globals, block, {simpleIdentifier: !node.computed});\n const propertyValue = getSymbolValue(propertySymbol);\n if (symbol && propertyValue) {\n createBlockSymbol(symbol, propertyValue, getSymbol(value, globals, block), globals, isGlobal);\n\n return symbol.props[propertyValue];\n }\n /* istanbul ignore next */\n debug('MemberExpression: Missing symbol: %s', node.property.name);\n break;\n } case 'FunctionDeclaration': {\n if (node.id && node.id.type === 'Identifier') {\n return createSymbol(node.id, globals, node, globals);\n }\n break;\n }\n }\n\n return null;\n};\n\n// Creates variables from variable definitions\nconst initVariables = function (node, globals, opts) {\n switch (node.type) {\n case 'Program': {\n node.body.forEach((childNode) => {\n initVariables(childNode, globals, opts);\n });\n break;\n } case 'ExpressionStatement': {\n initVariables(node.expression, globals, opts);\n break;\n } case 'VariableDeclaration': {\n node.declarations.forEach((declaration) => {\n // let and const\n const symbol = createSymbol(declaration.id, globals, null, globals);\n if (opts.initWindow && node.kind === 'var' && globals.props.window) {\n // If var, also add to window\n globals.props.window.props[declaration.id.name] = symbol;\n }\n });\n break;\n } case 'ExportNamedDeclaration': {\n if (node.declaration) {\n initVariables(node.declaration, globals, opts);\n }\n break;\n }\n }\n};\n\n// Populates variable maps using AST\nconst mapVariables = function (node, globals, opt, isExport) {\n /* istanbul ignore next */\n const opts = opt || {};\n /* istanbul ignore next */\n switch (node.type) {\n case 'Program': {\n if (opts.ancestorsOnly) {\n return false;\n } else {\n node.body.forEach((childNode) => {\n mapVariables(childNode, globals, opts);\n });\n }\n break;\n } case 'ExpressionStatement': {\n mapVariables(node.expression, globals, opts);\n break;\n } case 'AssignmentExpression': {\n createSymbol(node.left, globals, node.right);\n break;\n } case 'VariableDeclaration': {\n node.declarations.forEach((declaration) => {\n const isGlobal = opts.initWindow && node.kind === 'var' && globals.props.window;\n const symbol = createSymbol(declaration.id, globals, declaration.init, globals, isGlobal);\n if (symbol && isExport) {\n symbol.exported = true;\n }\n });\n break;\n } case 'FunctionDeclaration': {\n /* istanbul ignore next */\n if (node.id.type === 'Identifier') {\n createSymbol(node.id, globals, node, globals, true);\n }\n break;\n } case 'ExportDefaultDeclaration': {\n const symbol = createSymbol(node.declaration, globals, node.declaration);\n if (symbol) {\n symbol.exported = true;\n } else if (!node.id) {\n globals.ANONYMOUS_DEFAULT = node.declaration;\n }\n break;\n } case 'ExportNamedDeclaration': {\n if (node.declaration) {\n if (node.declaration.type === 'VariableDeclaration') {\n mapVariables(node.declaration, globals, opts, true);\n } else {\n const symbol = createSymbol(node.declaration, globals, node.declaration);\n /* istanbul ignore next */\n if (symbol) {\n symbol.exported = true;\n }\n }\n }\n node.specifiers.forEach((specifier) => {\n mapVariables(specifier, globals, opts);\n });\n break;\n } case 'ExportSpecifier': {\n const symbol = getSymbol(node.local, globals, globals);\n /* istanbul ignore next */\n if (symbol) {\n symbol.exported = true;\n }\n break;\n } case 'ClassDeclaration': {\n createSymbol(node.id, globals, node.body, globals);\n break;\n } default: {\n /* istanbul ignore next */\n return false;\n }\n }\n\n return true;\n};\n\nconst findNode = function (node, block, cache) {\n let blockCache = cache || [];\n /* istanbul ignore next */\n if (!block || blockCache.includes(block)) {\n return false;\n }\n blockCache = blockCache.slice();\n blockCache.push(block);\n\n if (block.type === 'object') {\n if (block.value === node) {\n return true;\n }\n }\n\n const {props} = block;\n for (const prop in props) {\n /* istanbul ignore next */\n if (Object.prototype.hasOwnProperty.call(props, prop)) {\n const propval = props[prop];\n\n // Only check node if it had resolvable value\n if (propval && findNode(node, propval, blockCache)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst findExportedNode = function (block, node, cache) {\n if (block.ANONYMOUS_DEFAULT === node) {\n return true;\n }\n /* istanbul ignore next */\n if (block === null) {\n return false;\n }\n const blockCache = cache || [];\n const {props} = block;\n for (const key in props) {\n /* istanbul ignore next */\n if (Object.prototype.hasOwnProperty.call(props, key)) {\n blockCache.push(props[key]);\n if (props[key].exported) {\n if (node === props[key].value || findNode(node, props[key].value)) {\n return true;\n }\n }\n\n // No need to check `props[key]` for exported nodes as ESM\n // exports are only global\n }\n }\n\n return false;\n};\n\nconst isNodeExported = function (node, globals, opt) {\n if (opt.initModuleExports && globals.props.module && globals.props.module.props.exports) {\n if (findNode(node, globals.props.module.props.exports)) {\n return true;\n }\n }\n\n if (opt.initWindow && globals.props.window) {\n if (findNode(node, globals.props.window)) {\n return true;\n }\n }\n\n if (opt.esm && findExportedNode(globals, node)) {\n return true;\n }\n\n return false;\n};\n\nconst parseRecursive = function (node, globalVars, opts) {\n // Iterate from top using recursion - stop at first processed node from top\n if (node.parent) {\n if (parseRecursive(node.parent, globalVars, opts)) {\n return true;\n }\n }\n\n return mapVariables(node, globalVars, opts);\n};\n\nconst parse = function (ast, node, opt) {\n /* istanbul ignore next */\n const opts = opt || {\n ancestorsOnly: false,\n esm: true,\n initModuleExports: true,\n initWindow: true,\n };\n\n const globalVars = createNode();\n if (opts.initModuleExports) {\n globalVars.props.module = createNode();\n globalVars.props.module.props.exports = createNode();\n globalVars.props.exports = globalVars.props.module.props.exports;\n }\n if (opts.initWindow) {\n globalVars.props.window = createNode();\n globalVars.props.window.special = true;\n }\n\n if (opts.ancestorsOnly) {\n parseRecursive(node, globalVars, opts);\n } else {\n initVariables(ast, globalVars, opts);\n mapVariables(ast, globalVars, opts);\n }\n\n return {\n globalVars,\n };\n};\n\nconst isExported = function (node, parseResult, opt) {\n return isNodeExported(node, parseResult.globalVars, opt);\n};\n\nexport default {\n isExported,\n parse,\n};\n"],"file":"exportParser.js"}
1
+ {"version":3,"sources":["../src/exportParser.js"],"names":["debug","createNode","props","getSymbolValue","symbol","type","value","getIdentifier","node","globals","scope","opts","simpleIdentifier","identifierLiteral","name","block","createSymbol","getSymbol","opt","obj","object","propertySymbol","property","computed","propertyValue","val","prototype","left","right","body","forEach","method","key","properties","prop","propVal","createBlockSymbol","isGlobal","window","special","id","valueSymbol","initVariables","childNode","expression","declarations","declaration","initWindow","kind","mapVariables","isExport","ancestorsOnly","init","exported","ANONYMOUS_DEFAULT","specifiers","specifier","local","findNode","cache","blockCache","includes","slice","push","Object","hasOwnProperty","call","propval","findExportedNode","isNodeExported","initModuleExports","module","exports","esm","parseRecursive","globalVars","parent","parse","ast","isExported","parseResult"],"mappings":"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","sourcesContent":["import debugModule from 'debug';\n\nconst debug = debugModule('requireExportJsdoc');\n\nconst createNode = function () {\n return {\n props: {},\n };\n};\n\nconst getSymbolValue = function (symbol) {\n /* istanbul ignore next */\n if (!symbol) {\n /* istanbul ignore next */\n return null;\n }\n /* istanbul ignore next */\n if (symbol.type === 'literal') {\n return symbol.value.value;\n }\n\n /* istanbul ignore next */\n return null;\n};\n\nconst getIdentifier = function (node, globals, scope, opts) {\n if (opts.simpleIdentifier) {\n // Type is Identier for noncomputed properties\n const identifierLiteral = createNode();\n identifierLiteral.type = 'literal';\n identifierLiteral.value = {value: node.name};\n\n return identifierLiteral;\n }\n\n /* istanbul ignore next */\n const block = scope || globals;\n\n // As scopes are not currently supported, they are not traversed upwards recursively\n if (block.props[node.name]) {\n return block.props[node.name];\n }\n\n // Seems this will only be entered once scopes added and entered\n /* istanbul ignore next */\n if (globals.props[node.name]) {\n return globals.props[node.name];\n }\n\n return null;\n};\n\nlet createSymbol = null;\nconst getSymbol = function (node, globals, scope, opt) {\n const opts = opt || {};\n switch (node.type) {\n case 'Identifier': {\n return getIdentifier(node, globals, scope, opts);\n } case 'MemberExpression': {\n const obj = getSymbol(node.object, globals, scope, opts);\n const propertySymbol = getSymbol(node.property, globals, scope, {simpleIdentifier: !node.computed});\n const propertyValue = getSymbolValue(propertySymbol);\n\n /* istanbul ignore next */\n if (obj && propertyValue && obj.props[propertyValue]) {\n const block = obj.props[propertyValue];\n\n return block;\n }\n\n /*\n if (opts.createMissingProps && propertyValue) {\n obj.props[propertyValue] = createNode();\n\n return obj.props[propertyValue];\n }\n */\n /* istanbul ignore next */\n debug(`MemberExpression: Missing property ${node.property.name}`);\n\n /* istanbul ignore next */\n return null;\n } case 'ClassDeclaration': case 'ClassExpression': case 'FunctionExpression': case 'FunctionDeclaration': case 'ArrowFunctionExpression': {\n const val = createNode();\n val.props.prototype = createNode();\n val.props.prototype.type = 'object';\n val.type = 'object';\n val.value = node;\n\n return val;\n } case 'AssignmentExpression': {\n return createSymbol(node.left, globals, node.right, scope, opts);\n } case 'ClassBody': {\n const val = createNode();\n node.body.forEach((method) => {\n val.props[method.key.name] = createNode();\n val.props[method.key.name].type = 'object';\n val.props[method.key.name].value = method.value;\n });\n val.type = 'object';\n val.value = node;\n\n return val;\n } case 'ObjectExpression': {\n const val = createNode();\n val.type = 'object';\n node.properties.forEach((prop) => {\n if (prop.type === 'ExperimentalSpreadProperty') {\n return;\n }\n const propVal = getSymbol(prop.value, globals, scope, opts);\n /* istanbul ignore next */\n if (propVal) {\n val.props[prop.key.name] = propVal;\n }\n });\n\n return val;\n } case 'Literal': {\n const val = createNode();\n val.type = 'literal';\n val.value = node;\n\n return val;\n }\n }\n\n /* istanbul ignore next */\n return null;\n};\n\nconst createBlockSymbol = function (block, name, value, globals, isGlobal) {\n block.props[name] = value;\n if (isGlobal && globals.props.window && globals.props.window.special) {\n globals.props.window.props[name] = value;\n }\n};\n\ncreateSymbol = function (node, globals, value, scope, isGlobal) {\n const block = scope || globals;\n let symbol;\n switch (node.type) {\n case 'ClassDeclaration': {\n if (node.id && node.id.type === 'Identifier') {\n return createSymbol(node.id, globals, node, globals);\n }\n break;\n } case 'Identifier': {\n if (value) {\n const valueSymbol = getSymbol(value, globals, block);\n /* istanbul ignore next */\n if (valueSymbol) {\n createBlockSymbol(block, node.name, valueSymbol, globals, isGlobal);\n\n return block.props[node.name];\n }\n /* istanbul ignore next */\n debug('Identifier: Missing value symbol for %s', node.name);\n } else {\n createBlockSymbol(block, node.name, createNode(), globals, isGlobal);\n\n return block.props[node.name];\n }\n /* istanbul ignore next */\n break;\n } case 'MemberExpression': {\n symbol = getSymbol(node.object, globals, block);\n\n const propertySymbol = getSymbol(node.property, globals, block, {simpleIdentifier: !node.computed});\n const propertyValue = getSymbolValue(propertySymbol);\n if (symbol && propertyValue) {\n createBlockSymbol(symbol, propertyValue, getSymbol(value, globals, block), globals, isGlobal);\n\n return symbol.props[propertyValue];\n }\n /* istanbul ignore next */\n debug('MemberExpression: Missing symbol: %s', node.property.name);\n break;\n } case 'FunctionDeclaration': {\n if (node.id && node.id.type === 'Identifier') {\n return createSymbol(node.id, globals, node, globals);\n }\n break;\n }\n }\n\n return null;\n};\n\n// Creates variables from variable definitions\nconst initVariables = function (node, globals, opts) {\n switch (node.type) {\n case 'Program': {\n node.body.forEach((childNode) => {\n initVariables(childNode, globals, opts);\n });\n break;\n } case 'ExpressionStatement': {\n initVariables(node.expression, globals, opts);\n break;\n } case 'VariableDeclaration': {\n node.declarations.forEach((declaration) => {\n // let and const\n const symbol = createSymbol(declaration.id, globals, null, globals);\n if (opts.initWindow && node.kind === 'var' && globals.props.window) {\n // If var, also add to window\n globals.props.window.props[declaration.id.name] = symbol;\n }\n });\n break;\n } case 'ExportNamedDeclaration': {\n if (node.declaration) {\n initVariables(node.declaration, globals, opts);\n }\n break;\n }\n }\n};\n\n// Populates variable maps using AST\nconst mapVariables = function (node, globals, opt, isExport) {\n /* istanbul ignore next */\n const opts = opt || {};\n /* istanbul ignore next */\n switch (node.type) {\n case 'Program': {\n if (opts.ancestorsOnly) {\n return false;\n } else {\n node.body.forEach((childNode) => {\n mapVariables(childNode, globals, opts);\n });\n }\n break;\n } case 'ExpressionStatement': {\n mapVariables(node.expression, globals, opts);\n break;\n } case 'AssignmentExpression': {\n createSymbol(node.left, globals, node.right);\n break;\n } case 'VariableDeclaration': {\n node.declarations.forEach((declaration) => {\n const isGlobal = opts.initWindow && node.kind === 'var' && globals.props.window;\n const symbol = createSymbol(declaration.id, globals, declaration.init, globals, isGlobal);\n if (symbol && isExport) {\n symbol.exported = true;\n }\n });\n break;\n } case 'FunctionDeclaration': {\n /* istanbul ignore next */\n if (node.id.type === 'Identifier') {\n createSymbol(node.id, globals, node, globals, true);\n }\n break;\n } case 'ExportDefaultDeclaration': {\n const symbol = createSymbol(node.declaration, globals, node.declaration);\n if (symbol) {\n symbol.exported = true;\n } else if (!node.id) {\n globals.ANONYMOUS_DEFAULT = node.declaration;\n }\n break;\n } case 'ExportNamedDeclaration': {\n if (node.declaration) {\n if (node.declaration.type === 'VariableDeclaration') {\n mapVariables(node.declaration, globals, opts, true);\n } else {\n const symbol = createSymbol(node.declaration, globals, node.declaration);\n /* istanbul ignore next */\n if (symbol) {\n symbol.exported = true;\n }\n }\n }\n node.specifiers.forEach((specifier) => {\n mapVariables(specifier, globals, opts);\n });\n break;\n } case 'ExportSpecifier': {\n const symbol = getSymbol(node.local, globals, globals);\n /* istanbul ignore next */\n if (symbol) {\n symbol.exported = true;\n }\n break;\n } case 'ClassDeclaration': {\n createSymbol(node.id, globals, node.body, globals);\n break;\n } default: {\n /* istanbul ignore next */\n return false;\n }\n }\n\n return true;\n};\n\nconst findNode = function (node, block, cache) {\n let blockCache = cache || [];\n /* istanbul ignore next */\n if (!block || blockCache.includes(block)) {\n return false;\n }\n blockCache = blockCache.slice();\n blockCache.push(block);\n\n if (block.type === 'object') {\n if (block.value === node) {\n return true;\n }\n }\n\n const {props} = block;\n for (const prop in props) {\n /* istanbul ignore next */\n if (Object.prototype.hasOwnProperty.call(props, prop)) {\n const propval = props[prop];\n\n // Only check node if it had resolvable value\n if (propval && findNode(node, propval, blockCache)) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst findExportedNode = function (block, node, cache) {\n if (block.ANONYMOUS_DEFAULT === node) {\n return true;\n }\n /* istanbul ignore next */\n if (block === null) {\n return false;\n }\n const blockCache = cache || [];\n const {props} = block;\n for (const key in props) {\n /* istanbul ignore next */\n if (Object.prototype.hasOwnProperty.call(props, key)) {\n blockCache.push(props[key]);\n if (props[key].exported) {\n if (node === props[key].value || findNode(node, props[key].value)) {\n return true;\n }\n }\n\n // No need to check `props[key]` for exported nodes as ESM\n // exports are only global\n }\n }\n\n return false;\n};\n\nconst isNodeExported = function (node, globals, opt) {\n if (opt.initModuleExports && globals.props.module && globals.props.module.props.exports) {\n if (findNode(node, globals.props.module.props.exports)) {\n return true;\n }\n }\n\n if (opt.initWindow && globals.props.window) {\n if (findNode(node, globals.props.window)) {\n return true;\n }\n }\n\n if (opt.esm && findExportedNode(globals, node)) {\n return true;\n }\n\n return false;\n};\n\nconst parseRecursive = function (node, globalVars, opts) {\n // Iterate from top using recursion - stop at first processed node from top\n if (node.parent) {\n if (parseRecursive(node.parent, globalVars, opts)) {\n return true;\n }\n }\n\n return mapVariables(node, globalVars, opts);\n};\n\nconst parse = function (ast, node, opt) {\n /* istanbul ignore next */\n const opts = opt || {\n ancestorsOnly: false,\n esm: true,\n initModuleExports: true,\n initWindow: true,\n };\n\n const globalVars = createNode();\n if (opts.initModuleExports) {\n globalVars.props.module = createNode();\n globalVars.props.module.props.exports = createNode();\n globalVars.props.exports = globalVars.props.module.props.exports;\n }\n if (opts.initWindow) {\n globalVars.props.window = createNode();\n globalVars.props.window.special = true;\n }\n\n if (opts.ancestorsOnly) {\n parseRecursive(node, globalVars, opts);\n } else {\n initVariables(ast, globalVars, opts);\n mapVariables(ast, globalVars, opts);\n }\n\n return {\n globalVars,\n };\n};\n\nconst isExported = function (node, parseResult, opt) {\n return isNodeExported(node, parseResult.globalVars, opt);\n};\n\nexport default {\n isExported,\n parse,\n};\n"],"file":"exportParser.js"}
@@ -26,6 +26,7 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
26
26
  *
27
27
  * @param {object} commentNode
28
28
  * @param {string} indent Whitespace
29
+ * @param {boolean} [trim=true]
29
30
  * @returns {object}
30
31
  */
31
32
  const parseComment = (commentNode, indent, trim = true) => {
@@ -105,11 +106,11 @@ const getUtils = (node, jsdoc, jsdocNode, {
105
106
  };
106
107
 
107
108
  utils.reportJSDoc = (msg, tag, handler) => {
108
- report(msg, fixer => {
109
+ report(msg, handler ? fixer => {
109
110
  handler();
110
111
  const replacement = utils.stringify(jsdoc);
111
112
  return fixer.replaceText(jsdocNode, replacement);
112
- }, tag);
113
+ } : null, tag);
113
114
  };
114
115
 
115
116
  utils.getFunctionParameterNames = () => {
@@ -425,7 +426,8 @@ const iterateAllJsdocs = (iterator, ruleConfig) => {
425
426
  return;
426
427
  }
427
428
 
428
- const indent = ' '.repeat(comment.loc.start.column);
429
+ const sourceLine = sourceCode.lines[comment.loc.start.line - 1];
430
+ const indent = sourceLine.charAt(0).repeat(comment.loc.start.column);
429
431
  const jsdoc = parseComment(comment, indent, !ruleConfig.noTrim);
430
432
  const settings = getSettings(context);
431
433
  const report = makeReport(context, comment);
@@ -498,7 +500,8 @@ function iterateJsdoc(iterator, ruleConfig) {
498
500
  return;
499
501
  }
500
502
 
501
- const indent = ' '.repeat(jsdocNode.loc.start.column);
503
+ const sourceLine = sourceCode.lines[jsdocNode.loc.start.line - 1];
504
+ const indent = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);
502
505
  const jsdoc = parseComment(jsdocNode, indent);
503
506
  const report = makeReport(context, jsdocNode);
504
507
  const utils = getUtils(node, jsdoc, jsdocNode, settings, report, context);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/iterateJsdoc.js"],"names":["parseComment","commentNode","indent","trim","skipSeeLink","parser","str","data","tag","match","value","parsers","commentParser","PARSERS","parse_tag","parse_type","includes","parse_name","parse_description","errors","length","result","description","undefined","source","getUtils","node","jsdoc","jsdocNode","tagNamePreference","overrideReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","report","context","ancestors","getAncestors","sourceCode","getSourceCode","utils","stringify","tagBlock","jsdocUtils","getIndent","slice","reportJSDoc","msg","handler","fixer","replacement","replaceText","getFunctionParameterNames","isConstructor","parent","kind","isSetter","getJsdocParameterNamesDeep","param","getPreferredTagName","tagName","getJsdocParameterNames","skipReportingBlockedTag","allowObjectReturn","defaultMessage","ret","isObject","hasTag","blocked","message","getTags","isValidTag","name","definedTags","hasATag","avoidDocs","classHasTag","exemptedBy","_","get","getPresentTags","tagMustHaveEitherTypeOrNamepath","tagMightHaveEitherTypeOrNamepath","tagMustHaveNamepath","tagMightHaveNamepath","tagMustHaveType","tagMightHaveType","isNamepathDefiningTag","hasDefinedTypeReturnTag","hasReturnValue","isAsync","async","filterTags","item","tagList","filter","tags","getTagsByType","getClassNode","greatGrandParent","getAncestor","greatGrandParentValue","getFirstToken","getClassJsdoc","classNode","classJsdocNode","repeat","loc","start","column","classJsdoc","forEachPreferredTag","arrayHandler","targetTagName","matchingJsdocTags","forEach","matchingJsdocTag","reportSettings","line","getSettings","settings","ignorePrivate","Boolean","Number","preferredTypes","makeReport","fix","jsdocLoc","lineNumber","end","colNumber","iterateAllJsdocs","iterator","ruleConfig","create","comments","getAllComments","comment","getText","startsWith","noTrim","meta","iterateJsdoc","metaType","TypeError","checkJsdoc","contextDefaults","contexts","enforcedContexts","getContextObject","ArrowFunctionExpression","FunctionDeclaration","FunctionExpression"],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-named-default\nimport {default as commentParser, stringify as commentStringify} from 'comment-parser';\nimport _ from 'lodash';\nimport jsdocUtils from './jsdocUtils';\nimport getJSDocComment from './eslint/getJSDocComment';\n\n/**\n *\n * @param {object} commentNode\n * @param {string} indent Whitespace\n * @returns {object}\n */\nconst parseComment = (commentNode, indent, trim = true) => {\n const skipSeeLink = (parser) => {\n return (str, data) => {\n if (data.tag === 'see' && str.match(/{@link.+?}/)) {\n return null;\n }\n\n return parser(str, data);\n };\n };\n\n // Preserve JSDoc block start/end indentation.\n return commentParser(`${indent}/*${commentNode.value}${indent}*/`, {\n // @see https://github.com/yavorskiy/comment-parser/issues/21\n parsers: [\n commentParser.PARSERS.parse_tag,\n skipSeeLink(commentParser.PARSERS.parse_type),\n skipSeeLink(\n (str, data) => {\n if (['example', 'return', 'returns', 'throws', 'exception'].includes(data.tag)) {\n return null;\n }\n\n return commentParser.PARSERS.parse_name(str, data);\n },\n ),\n trim ?\n commentParser.PARSERS.parse_description :\n\n // parse_description\n (str, data) => {\n // Only expected throw in previous step is if bad name (i.e.,\n // missing end bracket on optional name), but `@example`\n // skips name parsing\n /* istanbul ignore next */\n if (data.errors && data.errors.length) {\n return null;\n }\n\n // Tweak original regex to capture only single optional space\n const result = str.match(/^\\s?((.|\\s)+)?/);\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n if (result) {\n return {\n data: {\n description: result[1] === undefined ? '' : result[1],\n },\n source: result[0],\n };\n }\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n return null;\n },\n ],\n trim,\n })[0] || {};\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n {\n tagNamePreference,\n overrideReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n },\n report,\n context\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = {};\n\n utils.stringify = (tagBlock) => {\n const indent = jsdocUtils.getIndent(sourceCode);\n\n return commentStringify([tagBlock], {indent}).slice(indent.length - 1);\n };\n\n utils.reportJSDoc = (msg, tag, handler) => {\n report(msg, (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc);\n\n return fixer.replaceText(jsdocNode, replacement);\n }, tag);\n };\n\n utils.getFunctionParameterNames = () => {\n return jsdocUtils.getFunctionParameterNames(node);\n };\n\n utils.isConstructor = () => {\n return node.parent && node.parent.kind === 'constructor';\n };\n\n utils.isSetter = () => {\n return node.parent.kind === 'set';\n };\n\n utils.getJsdocParameterNamesDeep = () => {\n const param = utils.getPreferredTagName({tagName: 'param'});\n if (!param) {\n return false;\n }\n\n return jsdocUtils.getJsdocParameterNamesDeep(jsdoc, param);\n };\n\n utils.getJsdocParameterNames = () => {\n const param = utils.getPreferredTagName({tagName: 'param'});\n if (!param) {\n return false;\n }\n\n return jsdocUtils.getJsdocParameterNames(jsdoc, param);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\n const ret = jsdocUtils.getPreferredTagName(tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(name, definedTags);\n };\n\n utils.hasATag = (name) => {\n return jsdocUtils.hasATag(jsdoc, name);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.avoidDocs = () => {\n if (\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n // inheritdoc implies that all documentation is inherited; see https://jsdoc.app/tags-inheritdoc.html\n utils.hasTag('inheritdoc') ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n const exemptedBy = _.get(context, 'options[0].exemptedBy');\n if (exemptedBy && exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n utils.tagMustHaveEitherTypeOrNamepath = (tagName) => {\n return jsdocUtils.tagMustHaveEitherTypeOrNamepath(tagName);\n };\n\n utils.tagMightHaveEitherTypeOrNamepath = (tagName) => {\n return jsdocUtils.tagMightHaveEitherTypeOrNamepath(tagName);\n };\n\n utils.tagMustHaveNamepath = (tagName) => {\n return jsdocUtils.tagMustHaveNamepath(tagName);\n };\n\n utils.tagMightHaveNamepath = (tagName) => {\n return jsdocUtils.tagMightHaveNamepath(tagName);\n };\n\n utils.tagMustHaveType = (tagName) => {\n return jsdocUtils.tagMustHaveType(tagName);\n };\n\n utils.tagMightHaveType = (tagName) => {\n return jsdocUtils.tagMightHaveType(tagName);\n };\n\n utils.isNamepathDefiningTag = (tagName) => {\n return jsdocUtils.isNamepathDefiningTag(tagName);\n };\n\n utils.hasDefinedTypeReturnTag = (tag) => {\n return jsdocUtils.hasDefinedTypeReturnTag(tag);\n };\n\n utils.hasReturnValue = () => {\n return jsdocUtils.hasReturnValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(tags, tagNamePreference);\n };\n\n utils.getClassNode = () => {\n // Ancestors missing in `Program` comment iteration\n const greatGrandParent = ancestors.length ?\n ancestors.slice(-3)[0] :\n jsdocUtils.getAncestor(sourceCode, jsdocNode, 3);\n\n const greatGrandParentValue = greatGrandParent && sourceCode.getFirstToken(greatGrandParent).value;\n\n if (greatGrandParentValue === 'class') {\n return greatGrandParent;\n }\n\n return false;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indent = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indent);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return classJsdoc && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n const matchingJsdocTags = _.filter(jsdoc.tags || [], {\n tag: targetTagName,\n });\n\n matchingJsdocTags.forEach((matchingJsdocTag) => {\n arrayHandler(matchingJsdocTag, targetTagName);\n });\n };\n\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n const settings = {};\n\n // All rules\n settings.ignorePrivate = Boolean(_.get(context, 'settings.jsdoc.ignorePrivate'));\n settings.minLines = Number(_.get(context, 'settings.jsdoc.minLines', 0));\n settings.maxLines = Number(_.get(context, 'settings.jsdoc.maxLines', 1));\n\n // `check-tag-names` and many returns/param rules\n settings.tagNamePreference = _.get(context, 'settings.jsdoc.tagNamePreference') || {};\n\n // `check-types` and `no-undefined-types`\n settings.preferredTypes = _.get(context, 'settings.jsdoc.preferredTypes') || {};\n\n // `require-param`, `require-description`, `require-example`, `require-returns`\n settings.overrideReplacesDocs = _.get(context, 'settings.jsdoc.overrideReplacesDocs');\n settings.implementsReplacesDocs = _.get(context, 'settings.jsdoc.implementsReplacesDocs');\n settings.augmentsExtendsReplacesDocs = _.get(context, 'settings.jsdoc.augmentsExtendsReplacesDocs');\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: Object,\n * sourceCode: Object,\n * indent: string,\n * jsdoc: Object,\n * jsdocNode: Object,\n * node: Object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst iterateAllJsdocs = (iterator, ruleConfig) => {\n return {\n create (context) {\n return {\n 'Program' () {\n const sourceCode = context.getSourceCode();\n const comments = sourceCode.getAllComments();\n\n comments.forEach((comment) => {\n if (!sourceCode.getText(comment).startsWith('/**')) {\n return;\n }\n\n const indent = ' '.repeat(comment.loc.start.column);\n const jsdoc = parseComment(comment, indent, !ruleConfig.noTrim);\n const settings = getSettings(context);\n const report = makeReport(context, comment);\n const jsdocNode = comment;\n\n iterator({\n context,\n indent,\n jsdoc,\n jsdocNode,\n node: null,\n report,\n settings,\n sourceCode,\n utils: getUtils(null, jsdoc, jsdocNode, settings, report, context),\n });\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = _.get(ruleConfig, 'meta.type');\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, {\n meta: ruleConfig.meta,\n noTrim: ruleConfig.noTrim,\n });\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const sourceCode = context.getSourceCode();\n\n const settings = getSettings(context);\n\n const checkJsdoc = (node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const indent = ' '.repeat(jsdocNode.loc.start.column);\n\n const jsdoc = parseComment(jsdocNode, indent);\n\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context\n );\n\n if (\n settings.ignorePrivate &&\n utils.hasTag('private')\n ) {\n return;\n }\n\n iterator({\n context,\n indent,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n utils,\n });\n };\n\n if (ruleConfig.contextDefaults) {\n const contexts = jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n return jsdocUtils.getContextObject(contexts, checkJsdoc);\n }\n\n return {\n ArrowFunctionExpression: checkJsdoc,\n FunctionDeclaration: checkJsdoc,\n FunctionExpression: checkJsdoc,\n };\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}
1
+ {"version":3,"sources":["../src/iterateJsdoc.js"],"names":["parseComment","commentNode","indent","trim","skipSeeLink","parser","str","data","tag","match","value","parsers","commentParser","PARSERS","parse_tag","parse_type","includes","parse_name","parse_description","errors","length","result","description","undefined","source","getUtils","node","jsdoc","jsdocNode","tagNamePreference","overrideReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","report","context","ancestors","getAncestors","sourceCode","getSourceCode","utils","stringify","tagBlock","jsdocUtils","getIndent","slice","reportJSDoc","msg","handler","fixer","replacement","replaceText","getFunctionParameterNames","isConstructor","parent","kind","isSetter","getJsdocParameterNamesDeep","param","getPreferredTagName","tagName","getJsdocParameterNames","skipReportingBlockedTag","allowObjectReturn","defaultMessage","ret","isObject","hasTag","blocked","message","getTags","isValidTag","name","definedTags","hasATag","avoidDocs","classHasTag","exemptedBy","_","get","getPresentTags","tagMustHaveEitherTypeOrNamepath","tagMightHaveEitherTypeOrNamepath","tagMustHaveNamepath","tagMightHaveNamepath","tagMustHaveType","tagMightHaveType","isNamepathDefiningTag","hasDefinedTypeReturnTag","hasReturnValue","isAsync","async","filterTags","item","tagList","filter","tags","getTagsByType","getClassNode","greatGrandParent","getAncestor","greatGrandParentValue","getFirstToken","getClassJsdoc","classNode","classJsdocNode","repeat","loc","start","column","classJsdoc","forEachPreferredTag","arrayHandler","targetTagName","matchingJsdocTags","forEach","matchingJsdocTag","reportSettings","line","getSettings","settings","ignorePrivate","Boolean","Number","preferredTypes","makeReport","fix","jsdocLoc","lineNumber","end","colNumber","iterateAllJsdocs","iterator","ruleConfig","create","comments","getAllComments","comment","getText","startsWith","sourceLine","lines","charAt","noTrim","meta","iterateJsdoc","metaType","TypeError","checkJsdoc","contextDefaults","contexts","enforcedContexts","getContextObject","ArrowFunctionExpression","FunctionDeclaration","FunctionExpression"],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-named-default\nimport {default as commentParser, stringify as commentStringify} from 'comment-parser';\nimport _ from 'lodash';\nimport jsdocUtils from './jsdocUtils';\nimport getJSDocComment from './eslint/getJSDocComment';\n\n/**\n *\n * @param {object} commentNode\n * @param {string} indent Whitespace\n * @param {boolean} [trim=true]\n * @returns {object}\n */\nconst parseComment = (commentNode, indent, trim = true) => {\n const skipSeeLink = (parser) => {\n return (str, data) => {\n if (data.tag === 'see' && str.match(/{@link.+?}/)) {\n return null;\n }\n\n return parser(str, data);\n };\n };\n\n // Preserve JSDoc block start/end indentation.\n return commentParser(`${indent}/*${commentNode.value}${indent}*/`, {\n // @see https://github.com/yavorskiy/comment-parser/issues/21\n parsers: [\n commentParser.PARSERS.parse_tag,\n skipSeeLink(commentParser.PARSERS.parse_type),\n skipSeeLink(\n (str, data) => {\n if (['example', 'return', 'returns', 'throws', 'exception'].includes(data.tag)) {\n return null;\n }\n\n return commentParser.PARSERS.parse_name(str, data);\n },\n ),\n trim ?\n commentParser.PARSERS.parse_description :\n\n // parse_description\n (str, data) => {\n // Only expected throw in previous step is if bad name (i.e.,\n // missing end bracket on optional name), but `@example`\n // skips name parsing\n /* istanbul ignore next */\n if (data.errors && data.errors.length) {\n return null;\n }\n\n // Tweak original regex to capture only single optional space\n const result = str.match(/^\\s?((.|\\s)+)?/);\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n if (result) {\n return {\n data: {\n description: result[1] === undefined ? '' : result[1],\n },\n source: result[0],\n };\n }\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n return null;\n },\n ],\n trim,\n })[0] || {};\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n {\n tagNamePreference,\n overrideReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n },\n report,\n context,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = {};\n\n utils.stringify = (tagBlock) => {\n const indent = jsdocUtils.getIndent(sourceCode);\n\n return commentStringify([tagBlock], {indent}).slice(indent.length - 1);\n };\n\n utils.reportJSDoc = (msg, tag, handler) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag);\n };\n\n utils.getFunctionParameterNames = () => {\n return jsdocUtils.getFunctionParameterNames(node);\n };\n\n utils.isConstructor = () => {\n return node.parent && node.parent.kind === 'constructor';\n };\n\n utils.isSetter = () => {\n return node.parent.kind === 'set';\n };\n\n utils.getJsdocParameterNamesDeep = () => {\n const param = utils.getPreferredTagName({tagName: 'param'});\n if (!param) {\n return false;\n }\n\n return jsdocUtils.getJsdocParameterNamesDeep(jsdoc, param);\n };\n\n utils.getJsdocParameterNames = () => {\n const param = utils.getPreferredTagName({tagName: 'param'});\n if (!param) {\n return false;\n }\n\n return jsdocUtils.getJsdocParameterNames(jsdoc, param);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\n const ret = jsdocUtils.getPreferredTagName(tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(name, definedTags);\n };\n\n utils.hasATag = (name) => {\n return jsdocUtils.hasATag(jsdoc, name);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.avoidDocs = () => {\n if (\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n // inheritdoc implies that all documentation is inherited; see https://jsdoc.app/tags-inheritdoc.html\n utils.hasTag('inheritdoc') ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n const exemptedBy = _.get(context, 'options[0].exemptedBy');\n if (exemptedBy && exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n utils.tagMustHaveEitherTypeOrNamepath = (tagName) => {\n return jsdocUtils.tagMustHaveEitherTypeOrNamepath(tagName);\n };\n\n utils.tagMightHaveEitherTypeOrNamepath = (tagName) => {\n return jsdocUtils.tagMightHaveEitherTypeOrNamepath(tagName);\n };\n\n utils.tagMustHaveNamepath = (tagName) => {\n return jsdocUtils.tagMustHaveNamepath(tagName);\n };\n\n utils.tagMightHaveNamepath = (tagName) => {\n return jsdocUtils.tagMightHaveNamepath(tagName);\n };\n\n utils.tagMustHaveType = (tagName) => {\n return jsdocUtils.tagMustHaveType(tagName);\n };\n\n utils.tagMightHaveType = (tagName) => {\n return jsdocUtils.tagMightHaveType(tagName);\n };\n\n utils.isNamepathDefiningTag = (tagName) => {\n return jsdocUtils.isNamepathDefiningTag(tagName);\n };\n\n utils.hasDefinedTypeReturnTag = (tag) => {\n return jsdocUtils.hasDefinedTypeReturnTag(tag);\n };\n\n utils.hasReturnValue = () => {\n return jsdocUtils.hasReturnValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(tags, tagNamePreference);\n };\n\n utils.getClassNode = () => {\n // Ancestors missing in `Program` comment iteration\n const greatGrandParent = ancestors.length ?\n ancestors.slice(-3)[0] :\n jsdocUtils.getAncestor(sourceCode, jsdocNode, 3);\n\n const greatGrandParentValue = greatGrandParent && sourceCode.getFirstToken(greatGrandParent).value;\n\n if (greatGrandParentValue === 'class') {\n return greatGrandParent;\n }\n\n return false;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indent = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indent);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return classJsdoc && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n const matchingJsdocTags = _.filter(jsdoc.tags || [], {\n tag: targetTagName,\n });\n\n matchingJsdocTags.forEach((matchingJsdocTag) => {\n arrayHandler(matchingJsdocTag, targetTagName);\n });\n };\n\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n const settings = {};\n\n // All rules\n settings.ignorePrivate = Boolean(_.get(context, 'settings.jsdoc.ignorePrivate'));\n settings.minLines = Number(_.get(context, 'settings.jsdoc.minLines', 0));\n settings.maxLines = Number(_.get(context, 'settings.jsdoc.maxLines', 1));\n\n // `check-tag-names` and many returns/param rules\n settings.tagNamePreference = _.get(context, 'settings.jsdoc.tagNamePreference') || {};\n\n // `check-types` and `no-undefined-types`\n settings.preferredTypes = _.get(context, 'settings.jsdoc.preferredTypes') || {};\n\n // `require-param`, `require-description`, `require-example`, `require-returns`\n settings.overrideReplacesDocs = _.get(context, 'settings.jsdoc.overrideReplacesDocs');\n settings.implementsReplacesDocs = _.get(context, 'settings.jsdoc.implementsReplacesDocs');\n settings.augmentsExtendsReplacesDocs = _.get(context, 'settings.jsdoc.augmentsExtendsReplacesDocs');\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: Object,\n * sourceCode: Object,\n * indent: string,\n * jsdoc: Object,\n * jsdocNode: Object,\n * node: Object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst iterateAllJsdocs = (iterator, ruleConfig) => {\n return {\n create (context) {\n return {\n 'Program' () {\n const sourceCode = context.getSourceCode();\n const comments = sourceCode.getAllComments();\n\n comments.forEach((comment) => {\n if (!sourceCode.getText(comment).startsWith('/**')) {\n return;\n }\n\n const sourceLine = sourceCode.lines[comment.loc.start.line - 1];\n const indent = sourceLine.charAt(0).repeat(comment.loc.start.column);\n const jsdoc = parseComment(comment, indent, !ruleConfig.noTrim);\n const settings = getSettings(context);\n const report = makeReport(context, comment);\n const jsdocNode = comment;\n\n iterator({\n context,\n indent,\n jsdoc,\n jsdocNode,\n node: null,\n report,\n settings,\n sourceCode,\n utils: getUtils(null, jsdoc, jsdocNode, settings, report, context),\n });\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = _.get(ruleConfig, 'meta.type');\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, {\n meta: ruleConfig.meta,\n noTrim: ruleConfig.noTrim,\n });\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const sourceCode = context.getSourceCode();\n\n const settings = getSettings(context);\n\n const checkJsdoc = (node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const sourceLine = sourceCode.lines[jsdocNode.loc.start.line - 1];\n\n const indent = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n\n const jsdoc = parseComment(jsdocNode, indent);\n\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n );\n\n if (\n settings.ignorePrivate &&\n utils.hasTag('private')\n ) {\n return;\n }\n\n iterator({\n context,\n indent,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n utils,\n });\n };\n\n if (ruleConfig.contextDefaults) {\n const contexts = jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n return jsdocUtils.getContextObject(contexts, checkJsdoc);\n }\n\n return {\n ArrowFunctionExpression: checkJsdoc,\n FunctionDeclaration: checkJsdoc,\n FunctionExpression: checkJsdoc,\n };\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}