eslint-plugin-jsdoc 39.1.0 → 39.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +96 -4
- package/dist/exportParser.js +11 -3
- package/dist/exportParser.js.map +1 -1
- package/dist/rules/requireJsdoc.js +51 -9
- package/dist/rules/requireJsdoc.js.map +1 -1
- package/package.json +1 -1
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
|
|
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
|
|
|
@@ -13652,6 +13661,65 @@ export class Component {
|
|
|
13652
13661
|
}
|
|
13653
13662
|
// "jsdoc/require-jsdoc": ["error"|"warn", {"checkConstructors":false,"contexts":["PropertyDefinition"],"publicOnly":true}]
|
|
13654
13663
|
// Message: Missing JSDoc comment.
|
|
13664
|
+
|
|
13665
|
+
class Utility {
|
|
13666
|
+
/**
|
|
13667
|
+
*
|
|
13668
|
+
*/
|
|
13669
|
+
mthd() {
|
|
13670
|
+
return false;
|
|
13671
|
+
}
|
|
13672
|
+
}
|
|
13673
|
+
|
|
13674
|
+
module.exports = Utility;
|
|
13675
|
+
// "jsdoc/require-jsdoc": ["error"|"warn", {"enableFixer":false,"publicOnly":true,"require":{"ArrowFunctionExpression":true,"ClassDeclaration":true,"ClassExpression":true,"FunctionDeclaration":true,"FunctionExpression":true,"MethodDefinition":true}}]
|
|
13676
|
+
// Message: Missing JSDoc comment.
|
|
13677
|
+
|
|
13678
|
+
/**
|
|
13679
|
+
*
|
|
13680
|
+
*/
|
|
13681
|
+
module.exports = class Utility {
|
|
13682
|
+
mthd() {
|
|
13683
|
+
return false;
|
|
13684
|
+
}
|
|
13685
|
+
};
|
|
13686
|
+
// "jsdoc/require-jsdoc": ["error"|"warn", {"enableFixer":false,"publicOnly":true,"require":{"ArrowFunctionExpression":true,"ClassDeclaration":true,"ClassExpression":true,"FunctionDeclaration":true,"FunctionExpression":true,"MethodDefinition":true}}]
|
|
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.
|
|
13655
13723
|
````
|
|
13656
13724
|
|
|
13657
13725
|
The following patterns are not considered problems:
|
|
@@ -14465,6 +14533,30 @@ export class UserSettingsState { }
|
|
|
14465
14533
|
export class User {
|
|
14466
14534
|
}
|
|
14467
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}}]
|
|
14468
14560
|
````
|
|
14469
14561
|
|
|
14470
14562
|
|
package/dist/exportParser.js
CHANGED
|
@@ -108,11 +108,15 @@ const getSymbol = function (node, globals, scope, opt) {
|
|
|
108
108
|
return null;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
+
case 'ClassExpression':
|
|
112
|
+
{
|
|
113
|
+
return getSymbol(node.body, globals, scope, opts);
|
|
114
|
+
}
|
|
115
|
+
|
|
111
116
|
case 'TSTypeAliasDeclaration':
|
|
112
117
|
case 'TSEnumDeclaration':
|
|
113
118
|
case 'TSInterfaceDeclaration':
|
|
114
119
|
case 'ClassDeclaration':
|
|
115
|
-
case 'ClassExpression':
|
|
116
120
|
case 'FunctionExpression':
|
|
117
121
|
case 'FunctionDeclaration':
|
|
118
122
|
case 'ArrowFunctionExpression':
|
|
@@ -141,7 +145,7 @@ const getSymbol = function (node, globals, scope, opt) {
|
|
|
141
145
|
}
|
|
142
146
|
|
|
143
147
|
val.type = 'object';
|
|
144
|
-
val.value = node;
|
|
148
|
+
val.value = node.parent;
|
|
145
149
|
return val;
|
|
146
150
|
}
|
|
147
151
|
|
|
@@ -539,7 +543,11 @@ const findExportedNode = function (block, node, cache) {
|
|
|
539
543
|
};
|
|
540
544
|
|
|
541
545
|
const isNodeExported = function (node, globals, opt) {
|
|
542
|
-
|
|
546
|
+
var _globals$props$module, _globals$props$module2;
|
|
547
|
+
|
|
548
|
+
const moduleExports = (_globals$props$module = globals.props.module) === null || _globals$props$module === void 0 ? void 0 : (_globals$props$module2 = _globals$props$module.props) === null || _globals$props$module2 === void 0 ? void 0 : _globals$props$module2.exports;
|
|
549
|
+
|
|
550
|
+
if (opt.initModuleExports && moduleExports && findNode(node, moduleExports)) {
|
|
543
551
|
return true;
|
|
544
552
|
}
|
|
545
553
|
|
package/dist/exportParser.js.map
CHANGED
|
@@ -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","method","body","key","prop","properties","includes","propVal","createBlockSymbol","isGlobal","window","special","id","valueSymbol","initVariables","childNode","expression","declaration","declarations","initWindow","kind","mapVariables","isExport","ancestorsOnly","init","exported","ANONYMOUS_DEFAULT","specifier","specifiers","local","findNode","cache","blockCache","slice","push","propval","Object","values","Array","isArray","some","exportTypes","Set","ignorableNestedTypes","getExportAncestor","nde","idx","ignorableIfDeep","has","parent","canBeExportedByAncestorType","canExportChildrenType","isExportByAncestor","findExportedNode","isNodeExported","initModuleExports","module","exports","esm","parseRecursive","globalVars","parse","ast","isUncommentedExport","sourceCode","settings","exportNode","parseResult"],"mappings":"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","sourcesContent":["import {\n findJSDocComment,\n} from '@es-joy/jsdoccomment';\nimport 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\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 = {\n value: node.name,\n };\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;\n\n// eslint-disable-next-line complexity\nconst getSymbol = function (node, globals, scope, opt) {\n const opts = opt || {};\n /* istanbul ignore next */\n // eslint-disable-next-line default-case\n switch (node.type) {\n case 'Identifier': {\n return getIdentifier(node, globals, scope, opts);\n }\n\n case 'MemberExpression': {\n const obj = getSymbol(node.object, globals, scope, opts);\n const propertySymbol = getSymbol(node.property, globals, scope, {\n simpleIdentifier: !node.computed,\n });\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 }\n\n case 'TSTypeAliasDeclaration':\n case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n case 'ClassDeclaration': case 'ClassExpression':\n case 'FunctionExpression': case 'FunctionDeclaration':\n 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 }\n\n case 'AssignmentExpression': {\n return createSymbol(node.left, globals, node.right, scope, opts);\n }\n\n case 'ClassBody': {\n const val = createNode();\n for (const method of node.body) {\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\n val.type = 'object';\n val.value = node;\n\n return val;\n }\n\n case 'ObjectExpression': {\n const val = createNode();\n val.type = 'object';\n for (const prop of node.properties) {\n if ([\n // @typescript-eslint/parser, espree, acorn, etc.\n 'SpreadElement',\n\n // @babel/eslint-parser\n 'ExperimentalSpreadProperty',\n ].includes(prop.type)) {\n continue;\n }\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 }\n\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 // eslint-disable-next-line default-case\n switch (node.type) {\n case 'FunctionDeclaration':\n /* istanbul ignore next */\n // Fall through\n case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n /* istanbul ignore next */\n // Fall through\n case 'TSTypeAliasDeclaration': case 'ClassDeclaration': {\n /* istanbul ignore next */\n if (node.id && node.id.type === 'Identifier') {\n return createSymbol(node.id, globals, node, globals);\n }\n\n /* istanbul ignore next */\n break;\n }\n\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\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\n /* istanbul ignore next */\n break;\n }\n\n case 'MemberExpression': {\n symbol = getSymbol(node.object, globals, block);\n\n const propertySymbol = getSymbol(node.property, globals, block, {\n simpleIdentifier: !node.computed,\n });\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\n /* istanbul ignore next */\n debug('MemberExpression: Missing symbol: %s', node.property.name);\n break;\n }\n }\n\n return null;\n};\n\n// Creates variables from variable definitions\nconst initVariables = function (node, globals, opts) {\n // eslint-disable-next-line default-case\n switch (node.type) {\n case 'Program': {\n for (const childNode of node.body) {\n initVariables(childNode, globals, opts);\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n initVariables(node.expression, globals, opts);\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\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\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n initVariables(node.declaration, globals, opts);\n }\n\n break;\n }\n }\n};\n\n// Populates variable maps using AST\n// eslint-disable-next-line complexity\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 }\n\n for (const childNode of node.body) {\n mapVariables(childNode, globals, opts);\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n mapVariables(node.expression, globals, opts);\n break;\n }\n\n case 'AssignmentExpression': {\n createSymbol(node.left, globals, node.right);\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\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\n break;\n }\n\n case 'FunctionDeclaration': {\n /* istanbul ignore next */\n if (node.id.type === 'Identifier') {\n createSymbol(node.id, globals, node, globals, true);\n }\n\n break;\n }\n\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\n break;\n }\n\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\n for (const specifier of node.specifiers) {\n mapVariables(specifier, globals, opts);\n }\n\n break;\n }\n\n case 'ExportSpecifier': {\n const symbol = getSymbol(node.local, globals, globals);\n /* istanbul ignore next */\n if (symbol) {\n symbol.exported = true;\n }\n\n break;\n }\n\n case 'ClassDeclaration': {\n createSymbol(node.id, globals, node.body, globals);\n break;\n }\n\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\n blockCache = blockCache.slice();\n blockCache.push(block);\n\n if (\n (block.type === 'object' || block.type === 'MethodDefinition') &&\n block.value === node\n ) {\n return true;\n }\n\n const {\n props = block.body,\n } = block;\n for (const propval of Object.values(props || {})) {\n if (Array.isArray(propval)) {\n /* istanbul ignore if */\n if (propval.some((val) => {\n return findNode(node, val, blockCache);\n })) {\n return true;\n }\n } else if (findNode(node, propval, blockCache)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst exportTypes = new Set([\n 'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n]);\nconst ignorableNestedTypes = new Set([\n 'FunctionDeclaration', 'ArrowFunctionExpression', 'FunctionExpression',\n]);\nconst getExportAncestor = function (nde) {\n let node = nde;\n let idx = 0;\n const ignorableIfDeep = ignorableNestedTypes.has(nde?.type);\n while (node) {\n // Ignore functions nested more deeply than say `export default function () {}`\n if (idx >= 2 && ignorableIfDeep) {\n break;\n }\n\n if (exportTypes.has(node.type)) {\n return node;\n }\n\n node = node.parent;\n idx++;\n }\n\n return false;\n};\n\nconst canBeExportedByAncestorType = new Set([\n 'TSPropertySignature',\n 'TSMethodSignature',\n 'ClassProperty',\n 'PropertyDefinition',\n 'Method',\n]);\n\nconst canExportChildrenType = new Set([\n 'TSInterfaceBody',\n 'TSInterfaceDeclaration',\n 'TSTypeLiteral',\n 'TSTypeAliasDeclaration',\n 'ClassDeclaration',\n 'ClassBody',\n 'ClassDefinition',\n 'ClassExpression',\n 'Program',\n]);\n\nconst isExportByAncestor = function (nde) {\n if (!canBeExportedByAncestorType.has(nde.type)) {\n return false;\n }\n\n let node = nde.parent;\n while (node) {\n if (exportTypes.has(node.type)) {\n return node;\n }\n\n if (!canExportChildrenType.has(node.type)) {\n return false;\n }\n\n node = node.parent;\n }\n\n return false;\n};\n\nconst findExportedNode = function (block, node, cache) {\n /* istanbul ignore next */\n if (block === null) {\n return false;\n }\n\n const blockCache = cache || [];\n const {\n props,\n } = block;\n for (const propval of Object.values(props)) {\n blockCache.push(propval);\n if (propval.exported && (node === propval.value || findNode(node, propval.value))) {\n return true;\n }\n\n // No need to check `propval` for exported nodes as ESM\n // exports are only global\n }\n\n return false;\n};\n\nconst isNodeExported = function (node, globals, opt) {\n if (\n opt.initModuleExports && globals.props.module && globals.props.module.props.exports &&\n findNode(node, globals.props.module.props.exports)\n ) {\n return true;\n }\n\n if (opt.initWindow && globals.props.window && findNode(node, globals.props.window)) {\n return true;\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 && parseRecursive(node.parent, globalVars, opts)) {\n return true;\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\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 isUncommentedExport = function (node, sourceCode, opt, settings) {\n // console.log({node});\n // Optimize with ancestor check for esm\n if (opt.esm) {\n const exportNode = getExportAncestor(node);\n\n // Is export node comment\n if (exportNode && !findJSDocComment(exportNode, sourceCode, settings)) {\n return true;\n }\n\n /**\n * Some typescript types are not in variable map, but inherit exported (interface property and method)\n */\n if (\n isExportByAncestor(node) &&\n !findJSDocComment(node, sourceCode, settings)\n ) {\n return true;\n }\n }\n\n const parseResult = parse(sourceCode.ast, node, opt);\n\n return isNodeExported(node, parseResult.globalVars, opt);\n};\n\nexport default {\n isUncommentedExport,\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","body","val","prototype","left","right","method","key","parent","prop","properties","includes","propVal","createBlockSymbol","isGlobal","window","special","id","valueSymbol","initVariables","childNode","expression","declaration","declarations","initWindow","kind","mapVariables","isExport","ancestorsOnly","init","exported","ANONYMOUS_DEFAULT","specifier","specifiers","local","findNode","cache","blockCache","slice","push","propval","Object","values","Array","isArray","some","exportTypes","Set","ignorableNestedTypes","getExportAncestor","nde","idx","ignorableIfDeep","has","canBeExportedByAncestorType","canExportChildrenType","isExportByAncestor","findExportedNode","isNodeExported","moduleExports","module","exports","initModuleExports","esm","parseRecursive","globalVars","parse","ast","isUncommentedExport","sourceCode","settings","exportNode","parseResult"],"mappings":";;;;;;;AAAA;;AAGA;;;;AAEA,MAAMA,KAAK,GAAG,oBAAY,oBAAZ,CAAd;;AAEA,MAAMC,UAAU,GAAG,YAAY;AAC7B,SAAO;AACLC,IAAAA,KAAK,EAAE;AADF,GAAP;AAGD,CAJD;;AAMA,MAAMC,cAAc,GAAG,UAAUC,MAAV,EAAkB;AACvC;AACA,MAAI,CAACA,MAAL,EAAa;AACX;AACA,WAAO,IAAP;AACD;AAED;;;AACA,MAAIA,MAAM,CAACC,IAAP,KAAgB,SAApB,EAA+B;AAC7B,WAAOD,MAAM,CAACE,KAAP,CAAaA,KAApB;AACD;AAED;;;AACA,SAAO,IAAP;AACD,CAdD;;AAgBA,MAAMC,aAAa,GAAG,UAAUC,IAAV,EAAgBC,OAAhB,EAAyBC,KAAzB,EAAgCC,IAAhC,EAAsC;AAC1D,MAAIA,IAAI,CAACC,gBAAT,EAA2B;AACzB;AACA,UAAMC,iBAAiB,GAAGZ,UAAU,EAApC;AACAY,IAAAA,iBAAiB,CAACR,IAAlB,GAAyB,SAAzB;AACAQ,IAAAA,iBAAiB,CAACP,KAAlB,GAA0B;AACxBA,MAAAA,KAAK,EAAEE,IAAI,CAACM;AADY,KAA1B;AAIA,WAAOD,iBAAP;AACD;AAED;;;AACA,QAAME,KAAK,GAAGL,KAAK,IAAID,OAAvB,CAb0D,CAe1D;;AACA,MAAIM,KAAK,CAACb,KAAN,CAAYM,IAAI,CAACM,IAAjB,CAAJ,EAA4B;AAC1B,WAAOC,KAAK,CAACb,KAAN,CAAYM,IAAI,CAACM,IAAjB,CAAP;AACD,GAlByD,CAoB1D;;AACA;;;AACA,MAAIL,OAAO,CAACP,KAAR,CAAcM,IAAI,CAACM,IAAnB,CAAJ,EAA8B;AAC5B,WAAOL,OAAO,CAACP,KAAR,CAAcM,IAAI,CAACM,IAAnB,CAAP;AACD;;AAED,SAAO,IAAP;AACD,CA3BD;;AA6BA,IAAIE,YAAY,GAAG,IAAnB,C,CAEA;;AACA,MAAMC,SAAS,GAAG,UAAUT,IAAV,EAAgBC,OAAhB,EAAyBC,KAAzB,EAAgCQ,GAAhC,EAAqC;AACrD,QAAMP,IAAI,GAAGO,GAAG,IAAI,EAApB;AACA;AACA;;AACA,UAAQV,IAAI,CAACH,IAAb;AACA,SAAK,YAAL;AAAmB;AACjB,eAAOE,aAAa,CAACC,IAAD,EAAOC,OAAP,EAAgBC,KAAhB,EAAuBC,IAAvB,CAApB;AACD;;AAED,SAAK,kBAAL;AAAyB;AACvB,cAAMQ,GAAG,GAAGF,SAAS,CAACT,IAAI,CAACY,MAAN,EAAcX,OAAd,EAAuBC,KAAvB,EAA8BC,IAA9B,CAArB;AACA,cAAMU,cAAc,GAAGJ,SAAS,CAACT,IAAI,CAACc,QAAN,EAAgBb,OAAhB,EAAyBC,KAAzB,EAAgC;AAC9DE,UAAAA,gBAAgB,EAAE,CAACJ,IAAI,CAACe;AADsC,SAAhC,CAAhC;AAGA,cAAMC,aAAa,GAAGrB,cAAc,CAACkB,cAAD,CAApC;AAEA;;AACA,YAAIF,GAAG,IAAIK,aAAP,IAAwBL,GAAG,CAACjB,KAAJ,CAAUsB,aAAV,CAA5B,EAAsD;AACpD,gBAAMT,KAAK,GAAGI,GAAG,CAACjB,KAAJ,CAAUsB,aAAV,CAAd;AAEA,iBAAOT,KAAP;AACD;AAED;AACJ;AACA;AACA;AACA;AACA;;AAEI;;;AACAf,QAAAA,KAAK,CAAE,sCAAqCQ,IAAI,CAACc,QAAL,CAAcR,IAAK,EAA1D,CAAL;AAEA;;AACA,eAAO,IAAP;AACD;;AAED,SAAK,iBAAL;AAAwB;AACtB,eAAOG,SAAS,CAACT,IAAI,CAACiB,IAAN,EAAYhB,OAAZ,EAAqBC,KAArB,EAA4BC,IAA5B,CAAhB;AACD;;AAED,SAAK,wBAAL;AACA,SAAK,mBAAL;AAA0B,SAAK,wBAAL;AAC1B,SAAK,kBAAL;AACA,SAAK,oBAAL;AAA2B,SAAK,qBAAL;AAC3B,SAAK,yBAAL;AAAgC;AAC9B,cAAMe,GAAG,GAAGzB,UAAU,EAAtB;AACAyB,QAAAA,GAAG,CAACxB,KAAJ,CAAUyB,SAAV,GAAsB1B,UAAU,EAAhC;AACAyB,QAAAA,GAAG,CAACxB,KAAJ,CAAUyB,SAAV,CAAoBtB,IAApB,GAA2B,QAA3B;AACAqB,QAAAA,GAAG,CAACrB,IAAJ,GAAW,QAAX;AACAqB,QAAAA,GAAG,CAACpB,KAAJ,GAAYE,IAAZ;AAEA,eAAOkB,GAAP;AACD;;AAED,SAAK,sBAAL;AAA6B;AAC3B,eAAOV,YAAY,CAACR,IAAI,CAACoB,IAAN,EAAYnB,OAAZ,EAAqBD,IAAI,CAACqB,KAA1B,EAAiCnB,KAAjC,EAAwCC,IAAxC,CAAnB;AACD;;AAED,SAAK,WAAL;AAAkB;AAChB,cAAMe,GAAG,GAAGzB,UAAU,EAAtB;;AACA,aAAK,MAAM6B,MAAX,IAAqBtB,IAAI,CAACiB,IAA1B,EAAgC;AAC9BC,UAAAA,GAAG,CAACxB,KAAJ,CAAU4B,MAAM,CAACC,GAAP,CAAWjB,IAArB,IAA6Bb,UAAU,EAAvC;AACAyB,UAAAA,GAAG,CAACxB,KAAJ,CAAU4B,MAAM,CAACC,GAAP,CAAWjB,IAArB,EAA2BT,IAA3B,GAAkC,QAAlC;AACAqB,UAAAA,GAAG,CAACxB,KAAJ,CAAU4B,MAAM,CAACC,GAAP,CAAWjB,IAArB,EAA2BR,KAA3B,GAAmCwB,MAAM,CAACxB,KAA1C;AACD;;AAEDoB,QAAAA,GAAG,CAACrB,IAAJ,GAAW,QAAX;AACAqB,QAAAA,GAAG,CAACpB,KAAJ,GAAYE,IAAI,CAACwB,MAAjB;AAEA,eAAON,GAAP;AACD;;AAED,SAAK,kBAAL;AAAyB;AACvB,cAAMA,GAAG,GAAGzB,UAAU,EAAtB;AACAyB,QAAAA,GAAG,CAACrB,IAAJ,GAAW,QAAX;;AACA,aAAK,MAAM4B,IAAX,IAAmBzB,IAAI,CAAC0B,UAAxB,EAAoC;AAClC,cAAI,CACF;AACA,yBAFE,EAIF;AACA,sCALE,EAMFC,QANE,CAMOF,IAAI,CAAC5B,IANZ,CAAJ,EAMuB;AACrB;AACD;;AAED,gBAAM+B,OAAO,GAAGnB,SAAS,CAACgB,IAAI,CAAC3B,KAAN,EAAaG,OAAb,EAAsBC,KAAtB,EAA6BC,IAA7B,CAAzB;AACA;;AACA,cAAIyB,OAAJ,EAAa;AACXV,YAAAA,GAAG,CAACxB,KAAJ,CAAU+B,IAAI,CAACF,GAAL,CAASjB,IAAnB,IAA2BsB,OAA3B;AACD;AACF;;AAED,eAAOV,GAAP;AACD;;AAED,SAAK,SAAL;AAAgB;AACd,cAAMA,GAAG,GAAGzB,UAAU,EAAtB;AACAyB,QAAAA,GAAG,CAACrB,IAAJ,GAAW,SAAX;AACAqB,QAAAA,GAAG,CAACpB,KAAJ,GAAYE,IAAZ;AAEA,eAAOkB,GAAP;AACD;AAnGD;AAsGA;;;AACA,SAAO,IAAP;AACD,CA5GD;;AA8GA,MAAMW,iBAAiB,GAAG,UAAUtB,KAAV,EAAiBD,IAAjB,EAAuBR,KAAvB,EAA8BG,OAA9B,EAAuC6B,QAAvC,EAAiD;AACzEvB,EAAAA,KAAK,CAACb,KAAN,CAAYY,IAAZ,IAAoBR,KAApB;;AACA,MAAIgC,QAAQ,IAAI7B,OAAO,CAACP,KAAR,CAAcqC,MAA1B,IAAoC9B,OAAO,CAACP,KAAR,CAAcqC,MAAd,CAAqBC,OAA7D,EAAsE;AACpE/B,IAAAA,OAAO,CAACP,KAAR,CAAcqC,MAAd,CAAqBrC,KAArB,CAA2BY,IAA3B,IAAmCR,KAAnC;AACD;AACF,CALD;;AAOAU,YAAY,GAAG,UAAUR,IAAV,EAAgBC,OAAhB,EAAyBH,KAAzB,EAAgCI,KAAhC,EAAuC4B,QAAvC,EAAiD;AAC9D,QAAMvB,KAAK,GAAGL,KAAK,IAAID,OAAvB;AACA,MAAIL,MAAJ,CAF8D,CAG9D;;AACA,UAAQI,IAAI,CAACH,IAAb;AACA,SAAK,qBAAL;AACA;AACA;;AACA,SAAK,mBAAL;AAA0B,SAAK,wBAAL;AAC1B;AACA;;AACA,SAAK,wBAAL;AAA+B,SAAK,kBAAL;AAAyB;AACtD;AACA,YAAIG,IAAI,CAACiC,EAAL,IAAWjC,IAAI,CAACiC,EAAL,CAAQpC,IAAR,KAAiB,YAAhC,EAA8C;AAC5C,iBAAOW,YAAY,CAACR,IAAI,CAACiC,EAAN,EAAUhC,OAAV,EAAmBD,IAAnB,EAAyBC,OAAzB,CAAnB;AACD;AAED;;;AACA;AACD;;AAED,SAAK,YAAL;AAAmB;AACjB,YAAIH,KAAJ,EAAW;AACT,gBAAMoC,WAAW,GAAGzB,SAAS,CAACX,KAAD,EAAQG,OAAR,EAAiBM,KAAjB,CAA7B;AACA;;AACA,cAAI2B,WAAJ,EAAiB;AACfL,YAAAA,iBAAiB,CAACtB,KAAD,EAAQP,IAAI,CAACM,IAAb,EAAmB4B,WAAnB,EAAgCjC,OAAhC,EAAyC6B,QAAzC,CAAjB;AAEA,mBAAOvB,KAAK,CAACb,KAAN,CAAYM,IAAI,CAACM,IAAjB,CAAP;AACD;AAED;;;AACAd,UAAAA,KAAK,CAAC,yCAAD,EAA4CQ,IAAI,CAACM,IAAjD,CAAL;AACD,SAXD,MAWO;AACLuB,UAAAA,iBAAiB,CAACtB,KAAD,EAAQP,IAAI,CAACM,IAAb,EAAmBb,UAAU,EAA7B,EAAiCQ,OAAjC,EAA0C6B,QAA1C,CAAjB;AAEA,iBAAOvB,KAAK,CAACb,KAAN,CAAYM,IAAI,CAACM,IAAjB,CAAP;AACD;AAED;;;AACA;AACD;;AAED,SAAK,kBAAL;AAAyB;AACvBV,QAAAA,MAAM,GAAGa,SAAS,CAACT,IAAI,CAACY,MAAN,EAAcX,OAAd,EAAuBM,KAAvB,CAAlB;AAEA,cAAMM,cAAc,GAAGJ,SAAS,CAACT,IAAI,CAACc,QAAN,EAAgBb,OAAhB,EAAyBM,KAAzB,EAAgC;AAC9DH,UAAAA,gBAAgB,EAAE,CAACJ,IAAI,CAACe;AADsC,SAAhC,CAAhC;AAGA,cAAMC,aAAa,GAAGrB,cAAc,CAACkB,cAAD,CAApC;;AACA,YAAIjB,MAAM,IAAIoB,aAAd,EAA6B;AAC3Ba,UAAAA,iBAAiB,CAACjC,MAAD,EAASoB,aAAT,EAAwBP,SAAS,CAACX,KAAD,EAAQG,OAAR,EAAiBM,KAAjB,CAAjC,EAA0DN,OAA1D,EAAmE6B,QAAnE,CAAjB;AAEA,iBAAOlC,MAAM,CAACF,KAAP,CAAasB,aAAb,CAAP;AACD;AAED;;;AACAxB,QAAAA,KAAK,CAAC,sCAAD,EAAyCQ,IAAI,CAACc,QAAL,CAAcR,IAAvD,CAAL;AACA;AACD;AAvDD;;AA0DA,SAAO,IAAP;AACD,CA/DD,C,CAiEA;;;AACA,MAAM6B,aAAa,GAAG,UAAUnC,IAAV,EAAgBC,OAAhB,EAAyBE,IAAzB,EAA+B;AACnD;AACA,UAAQH,IAAI,CAACH,IAAb;AACA,SAAK,SAAL;AAAgB;AACd,aAAK,MAAMuC,SAAX,IAAwBpC,IAAI,CAACiB,IAA7B,EAAmC;AACjCkB,UAAAA,aAAa,CAACC,SAAD,EAAYnC,OAAZ,EAAqBE,IAArB,CAAb;AACD;;AAED;AACD;;AAED,SAAK,qBAAL;AAA4B;AAC1BgC,QAAAA,aAAa,CAACnC,IAAI,CAACqC,UAAN,EAAkBpC,OAAlB,EAA2BE,IAA3B,CAAb;AACA;AACD;;AAED,SAAK,qBAAL;AAA4B;AAC1B,aAAK,MAAMmC,WAAX,IAA0BtC,IAAI,CAACuC,YAA/B,EAA6C;AAC3C;AACA,gBAAM3C,MAAM,GAAGY,YAAY,CAAC8B,WAAW,CAACL,EAAb,EAAiBhC,OAAjB,EAA0B,IAA1B,EAAgCA,OAAhC,CAA3B;;AACA,cAAIE,IAAI,CAACqC,UAAL,IAAmBxC,IAAI,CAACyC,IAAL,KAAc,KAAjC,IAA0CxC,OAAO,CAACP,KAAR,CAAcqC,MAA5D,EAAoE;AAClE;AACA9B,YAAAA,OAAO,CAACP,KAAR,CAAcqC,MAAd,CAAqBrC,KAArB,CAA2B4C,WAAW,CAACL,EAAZ,CAAe3B,IAA1C,IAAkDV,MAAlD;AACD;AACF;;AAED;AACD;;AAED,SAAK,wBAAL;AAA+B;AAC7B,YAAII,IAAI,CAACsC,WAAT,EAAsB;AACpBH,UAAAA,aAAa,CAACnC,IAAI,CAACsC,WAAN,EAAmBrC,OAAnB,EAA4BE,IAA5B,CAAb;AACD;;AAED;AACD;AAjCD;AAmCD,CArCD,C,CAuCA;AACA;;;AACA,MAAMuC,YAAY,GAAG,UAAU1C,IAAV,EAAgBC,OAAhB,EAAyBS,GAAzB,EAA8BiC,QAA9B,EAAwC;AAC3D;AACA,QAAMxC,IAAI,GAAGO,GAAG,IAAI,EAApB;AACA;;AACA,UAAQV,IAAI,CAACH,IAAb;AACA,SAAK,SAAL;AAAgB;AACd,YAAIM,IAAI,CAACyC,aAAT,EAAwB;AACtB,iBAAO,KAAP;AACD;;AAED,aAAK,MAAMR,SAAX,IAAwBpC,IAAI,CAACiB,IAA7B,EAAmC;AACjCyB,UAAAA,YAAY,CAACN,SAAD,EAAYnC,OAAZ,EAAqBE,IAArB,CAAZ;AACD;;AAED;AACD;;AAED,SAAK,qBAAL;AAA4B;AAC1BuC,QAAAA,YAAY,CAAC1C,IAAI,CAACqC,UAAN,EAAkBpC,OAAlB,EAA2BE,IAA3B,CAAZ;AACA;AACD;;AAED,SAAK,sBAAL;AAA6B;AAC3BK,QAAAA,YAAY,CAACR,IAAI,CAACoB,IAAN,EAAYnB,OAAZ,EAAqBD,IAAI,CAACqB,KAA1B,CAAZ;AACA;AACD;;AAED,SAAK,qBAAL;AAA4B;AAC1B,aAAK,MAAMiB,WAAX,IAA0BtC,IAAI,CAACuC,YAA/B,EAA6C;AAC3C,gBAAMT,QAAQ,GAAG3B,IAAI,CAACqC,UAAL,IAAmBxC,IAAI,CAACyC,IAAL,KAAc,KAAjC,IAA0CxC,OAAO,CAACP,KAAR,CAAcqC,MAAzE;AACA,gBAAMnC,MAAM,GAAGY,YAAY,CAAC8B,WAAW,CAACL,EAAb,EAAiBhC,OAAjB,EAA0BqC,WAAW,CAACO,IAAtC,EAA4C5C,OAA5C,EAAqD6B,QAArD,CAA3B;;AACA,cAAIlC,MAAM,IAAI+C,QAAd,EAAwB;AACtB/C,YAAAA,MAAM,CAACkD,QAAP,GAAkB,IAAlB;AACD;AACF;;AAED;AACD;;AAED,SAAK,qBAAL;AAA4B;AAC1B;AACA,YAAI9C,IAAI,CAACiC,EAAL,CAAQpC,IAAR,KAAiB,YAArB,EAAmC;AACjCW,UAAAA,YAAY,CAACR,IAAI,CAACiC,EAAN,EAAUhC,OAAV,EAAmBD,IAAnB,EAAyBC,OAAzB,EAAkC,IAAlC,CAAZ;AACD;;AAED;AACD;;AAED,SAAK,0BAAL;AAAiC;AAC/B,cAAML,MAAM,GAAGY,YAAY,CAACR,IAAI,CAACsC,WAAN,EAAmBrC,OAAnB,EAA4BD,IAAI,CAACsC,WAAjC,CAA3B;;AACA,YAAI1C,MAAJ,EAAY;AACVA,UAAAA,MAAM,CAACkD,QAAP,GAAkB,IAAlB;AACD,SAFD,MAEO,IAAI,CAAC9C,IAAI,CAACiC,EAAV,EAAc;AACnBhC,UAAAA,OAAO,CAAC8C,iBAAR,GAA4B/C,IAAI,CAACsC,WAAjC;AACD;;AAED;AACD;;AAED,SAAK,wBAAL;AAA+B;AAC7B,YAAItC,IAAI,CAACsC,WAAT,EAAsB;AACpB,cAAItC,IAAI,CAACsC,WAAL,CAAiBzC,IAAjB,KAA0B,qBAA9B,EAAqD;AACnD6C,YAAAA,YAAY,CAAC1C,IAAI,CAACsC,WAAN,EAAmBrC,OAAnB,EAA4BE,IAA5B,EAAkC,IAAlC,CAAZ;AACD,WAFD,MAEO;AACL,kBAAMP,MAAM,GAAGY,YAAY,CAACR,IAAI,CAACsC,WAAN,EAAmBrC,OAAnB,EAA4BD,IAAI,CAACsC,WAAjC,CAA3B;AACA;;AACA,gBAAI1C,MAAJ,EAAY;AACVA,cAAAA,MAAM,CAACkD,QAAP,GAAkB,IAAlB;AACD;AACF;AACF;;AAED,aAAK,MAAME,SAAX,IAAwBhD,IAAI,CAACiD,UAA7B,EAAyC;AACvCP,UAAAA,YAAY,CAACM,SAAD,EAAY/C,OAAZ,EAAqBE,IAArB,CAAZ;AACD;;AAED;AACD;;AAED,SAAK,iBAAL;AAAwB;AACtB,cAAMP,MAAM,GAAGa,SAAS,CAACT,IAAI,CAACkD,KAAN,EAAajD,OAAb,EAAsBA,OAAtB,CAAxB;AACA;;AACA,YAAIL,MAAJ,EAAY;AACVA,UAAAA,MAAM,CAACkD,QAAP,GAAkB,IAAlB;AACD;;AAED;AACD;;AAED,SAAK,kBAAL;AAAyB;AACvBtC,QAAAA,YAAY,CAACR,IAAI,CAACiC,EAAN,EAAUhC,OAAV,EAAmBD,IAAI,CAACiB,IAAxB,EAA8BhB,OAA9B,CAAZ;AACA;AACD;;AAED;AAAS;AACP;AACA,eAAO,KAAP;AACD;AA7FD;;AAgGA,SAAO,IAAP;AACD,CArGD;;AAuGA,MAAMkD,QAAQ,GAAG,UAAUnD,IAAV,EAAgBO,KAAhB,EAAuB6C,KAAvB,EAA8B;AAC7C,MAAIC,UAAU,GAAGD,KAAK,IAAI,EAA1B;AACA;;AACA,MAAI,CAAC7C,KAAD,IAAU8C,UAAU,CAAC1B,QAAX,CAAoBpB,KAApB,CAAd,EAA0C;AACxC,WAAO,KAAP;AACD;;AAED8C,EAAAA,UAAU,GAAGA,UAAU,CAACC,KAAX,EAAb;AACAD,EAAAA,UAAU,CAACE,IAAX,CAAgBhD,KAAhB;;AAEA,MACE,CAACA,KAAK,CAACV,IAAN,KAAe,QAAf,IAA2BU,KAAK,CAACV,IAAN,KAAe,kBAA3C,KACAU,KAAK,CAACT,KAAN,KAAgBE,IAFlB,EAGE;AACA,WAAO,IAAP;AACD;;AAED,QAAM;AACJN,IAAAA,KAAK,GAAGa,KAAK,CAACU;AADV,MAEFV,KAFJ;;AAGA,OAAK,MAAMiD,OAAX,IAAsBC,MAAM,CAACC,MAAP,CAAchE,KAAK,IAAI,EAAvB,CAAtB,EAAkD;AAChD,QAAIiE,KAAK,CAACC,OAAN,CAAcJ,OAAd,CAAJ,EAA4B;AAC1B;AACA,UAAIA,OAAO,CAACK,IAAR,CAAc3C,GAAD,IAAS;AACxB,eAAOiC,QAAQ,CAACnD,IAAD,EAAOkB,GAAP,EAAYmC,UAAZ,CAAf;AACD,OAFG,CAAJ,EAEI;AACF,eAAO,IAAP;AACD;AACF,KAPD,MAOO,IAAIF,QAAQ,CAACnD,IAAD,EAAOwD,OAAP,EAAgBH,UAAhB,CAAZ,EAAyC;AAC9C,aAAO,IAAP;AACD;AACF;;AAED,SAAO,KAAP;AACD,CAlCD;;AAoCA,MAAMS,WAAW,GAAG,IAAIC,GAAJ,CAAQ,CAC1B,wBAD0B,EACA,0BADA,CAAR,CAApB;AAGA,MAAMC,oBAAoB,GAAG,IAAID,GAAJ,CAAQ,CACnC,qBADmC,EACZ,yBADY,EACe,oBADf,CAAR,CAA7B;;AAGA,MAAME,iBAAiB,GAAG,UAAUC,GAAV,EAAe;AACvC,MAAIlE,IAAI,GAAGkE,GAAX;AACA,MAAIC,GAAG,GAAG,CAAV;AACA,QAAMC,eAAe,GAAGJ,oBAAoB,CAACK,GAArB,CAAyBH,GAAzB,aAAyBA,GAAzB,uBAAyBA,GAAG,CAAErE,IAA9B,CAAxB;;AACA,SAAOG,IAAP,EAAa;AACX;AACA,QAAImE,GAAG,IAAI,CAAP,IAAYC,eAAhB,EAAiC;AAC/B;AACD;;AAED,QAAIN,WAAW,CAACO,GAAZ,CAAgBrE,IAAI,CAACH,IAArB,CAAJ,EAAgC;AAC9B,aAAOG,IAAP;AACD;;AAEDA,IAAAA,IAAI,GAAGA,IAAI,CAACwB,MAAZ;AACA2C,IAAAA,GAAG;AACJ;;AAED,SAAO,KAAP;AACD,CAnBD;;AAqBA,MAAMG,2BAA2B,GAAG,IAAIP,GAAJ,CAAQ,CAC1C,qBAD0C,EAE1C,mBAF0C,EAG1C,eAH0C,EAI1C,oBAJ0C,EAK1C,QAL0C,CAAR,CAApC;AAQA,MAAMQ,qBAAqB,GAAG,IAAIR,GAAJ,CAAQ,CACpC,iBADoC,EAEpC,wBAFoC,EAGpC,eAHoC,EAIpC,wBAJoC,EAKpC,kBALoC,EAMpC,WANoC,EAOpC,iBAPoC,EAQpC,iBARoC,EASpC,SAToC,CAAR,CAA9B;;AAYA,MAAMS,kBAAkB,GAAG,UAAUN,GAAV,EAAe;AACxC,MAAI,CAACI,2BAA2B,CAACD,GAA5B,CAAgCH,GAAG,CAACrE,IAApC,CAAL,EAAgD;AAC9C,WAAO,KAAP;AACD;;AAED,MAAIG,IAAI,GAAGkE,GAAG,CAAC1C,MAAf;;AACA,SAAOxB,IAAP,EAAa;AACX,QAAI8D,WAAW,CAACO,GAAZ,CAAgBrE,IAAI,CAACH,IAArB,CAAJ,EAAgC;AAC9B,aAAOG,IAAP;AACD;;AAED,QAAI,CAACuE,qBAAqB,CAACF,GAAtB,CAA0BrE,IAAI,CAACH,IAA/B,CAAL,EAA2C;AACzC,aAAO,KAAP;AACD;;AAEDG,IAAAA,IAAI,GAAGA,IAAI,CAACwB,MAAZ;AACD;;AAED,SAAO,KAAP;AACD,CAnBD;;AAqBA,MAAMiD,gBAAgB,GAAG,UAAUlE,KAAV,EAAiBP,IAAjB,EAAuBoD,KAAvB,EAA8B;AACrD;AACA,MAAI7C,KAAK,KAAK,IAAd,EAAoB;AAClB,WAAO,KAAP;AACD;;AAED,QAAM8C,UAAU,GAAGD,KAAK,IAAI,EAA5B;AACA,QAAM;AACJ1D,IAAAA;AADI,MAEFa,KAFJ;;AAGA,OAAK,MAAMiD,OAAX,IAAsBC,MAAM,CAACC,MAAP,CAAchE,KAAd,CAAtB,EAA4C;AAC1C2D,IAAAA,UAAU,CAACE,IAAX,CAAgBC,OAAhB;;AACA,QAAIA,OAAO,CAACV,QAAR,KAAqB9C,IAAI,KAAKwD,OAAO,CAAC1D,KAAjB,IAA0BqD,QAAQ,CAACnD,IAAD,EAAOwD,OAAO,CAAC1D,KAAf,CAAvD,CAAJ,EAAmF;AACjF,aAAO,IAAP;AACD,KAJyC,CAM1C;AACA;;AACD;;AAED,SAAO,KAAP;AACD,CArBD;;AAuBA,MAAM4E,cAAc,GAAG,UAAU1E,IAAV,EAAgBC,OAAhB,EAAyBS,GAAzB,EAA8B;AAAA;;AACnD,QAAMiE,aAAa,4BAAG1E,OAAO,CAACP,KAAR,CAAckF,MAAjB,oFAAG,sBAAsBlF,KAAzB,2DAAG,uBAA6BmF,OAAnD;;AACA,MACEnE,GAAG,CAACoE,iBAAJ,IAAyBH,aAAzB,IAA0CxB,QAAQ,CAACnD,IAAD,EAAO2E,aAAP,CADpD,EAEE;AACA,WAAO,IAAP;AACD;;AAED,MAAIjE,GAAG,CAAC8B,UAAJ,IAAkBvC,OAAO,CAACP,KAAR,CAAcqC,MAAhC,IAA0CoB,QAAQ,CAACnD,IAAD,EAAOC,OAAO,CAACP,KAAR,CAAcqC,MAArB,CAAtD,EAAoF;AAClF,WAAO,IAAP;AACD;;AAED,MAAIrB,GAAG,CAACqE,GAAJ,IAAWN,gBAAgB,CAACxE,OAAD,EAAUD,IAAV,CAA/B,EAAgD;AAC9C,WAAO,IAAP;AACD;;AAED,SAAO,KAAP;AACD,CAjBD;;AAmBA,MAAMgF,cAAc,GAAG,UAAUhF,IAAV,EAAgBiF,UAAhB,EAA4B9E,IAA5B,EAAkC;AACvD;AACA,MAAIH,IAAI,CAACwB,MAAL,IAAewD,cAAc,CAAChF,IAAI,CAACwB,MAAN,EAAcyD,UAAd,EAA0B9E,IAA1B,CAAjC,EAAkE;AAChE,WAAO,IAAP;AACD;;AAED,SAAOuC,YAAY,CAAC1C,IAAD,EAAOiF,UAAP,EAAmB9E,IAAnB,CAAnB;AACD,CAPD;;AASA,MAAM+E,KAAK,GAAG,UAAUC,GAAV,EAAenF,IAAf,EAAqBU,GAArB,EAA0B;AACtC;AACA,QAAMP,IAAI,GAAGO,GAAG,IAAI;AAClBkC,IAAAA,aAAa,EAAE,KADG;AAElBmC,IAAAA,GAAG,EAAE,IAFa;AAGlBD,IAAAA,iBAAiB,EAAE,IAHD;AAIlBtC,IAAAA,UAAU,EAAE;AAJM,GAApB;AAOA,QAAMyC,UAAU,GAAGxF,UAAU,EAA7B;;AACA,MAAIU,IAAI,CAAC2E,iBAAT,EAA4B;AAC1BG,IAAAA,UAAU,CAACvF,KAAX,CAAiBkF,MAAjB,GAA0BnF,UAAU,EAApC;AACAwF,IAAAA,UAAU,CAACvF,KAAX,CAAiBkF,MAAjB,CAAwBlF,KAAxB,CAA8BmF,OAA9B,GAAwCpF,UAAU,EAAlD;AACAwF,IAAAA,UAAU,CAACvF,KAAX,CAAiBmF,OAAjB,GAA2BI,UAAU,CAACvF,KAAX,CAAiBkF,MAAjB,CAAwBlF,KAAxB,CAA8BmF,OAAzD;AACD;;AAED,MAAI1E,IAAI,CAACqC,UAAT,EAAqB;AACnByC,IAAAA,UAAU,CAACvF,KAAX,CAAiBqC,MAAjB,GAA0BtC,UAAU,EAApC;AACAwF,IAAAA,UAAU,CAACvF,KAAX,CAAiBqC,MAAjB,CAAwBC,OAAxB,GAAkC,IAAlC;AACD;;AAED,MAAI7B,IAAI,CAACyC,aAAT,EAAwB;AACtBoC,IAAAA,cAAc,CAAChF,IAAD,EAAOiF,UAAP,EAAmB9E,IAAnB,CAAd;AACD,GAFD,MAEO;AACLgC,IAAAA,aAAa,CAACgD,GAAD,EAAMF,UAAN,EAAkB9E,IAAlB,CAAb;AACAuC,IAAAA,YAAY,CAACyC,GAAD,EAAMF,UAAN,EAAkB9E,IAAlB,CAAZ;AACD;;AAED,SAAO;AACL8E,IAAAA;AADK,GAAP;AAGD,CA/BD;;AAiCA,MAAMG,mBAAmB,GAAG,UAAUpF,IAAV,EAAgBqF,UAAhB,EAA4B3E,GAA5B,EAAiC4E,QAAjC,EAA2C;AACrE;AACA;AACA,MAAI5E,GAAG,CAACqE,GAAR,EAAa;AACX,UAAMQ,UAAU,GAAGtB,iBAAiB,CAACjE,IAAD,CAApC,CADW,CAGX;;AACA,QAAIuF,UAAU,IAAI,CAAC,oCAAiBA,UAAjB,EAA6BF,UAA7B,EAAyCC,QAAzC,CAAnB,EAAuE;AACrE,aAAO,IAAP;AACD;AAED;AACJ;AACA;;;AACI,QACEd,kBAAkB,CAACxE,IAAD,CAAlB,IACA,CAAC,oCAAiBA,IAAjB,EAAuBqF,UAAvB,EAAmCC,QAAnC,CAFH,EAGE;AACA,aAAO,IAAP;AACD;AACF;;AAED,QAAME,WAAW,GAAGN,KAAK,CAACG,UAAU,CAACF,GAAZ,EAAiBnF,IAAjB,EAAuBU,GAAvB,CAAzB;AAEA,SAAOgE,cAAc,CAAC1E,IAAD,EAAOwF,WAAW,CAACP,UAAnB,EAA+BvE,GAA/B,CAArB;AACD,CAzBD;;eA2Be;AACb0E,EAAAA,mBADa;AAEbF,EAAAA;AAFa,C","sourcesContent":["import {\n findJSDocComment,\n} from '@es-joy/jsdoccomment';\nimport 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\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 = {\n value: node.name,\n };\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;\n\n// eslint-disable-next-line complexity\nconst getSymbol = function (node, globals, scope, opt) {\n const opts = opt || {};\n /* istanbul ignore next */\n // eslint-disable-next-line default-case\n switch (node.type) {\n case 'Identifier': {\n return getIdentifier(node, globals, scope, opts);\n }\n\n case 'MemberExpression': {\n const obj = getSymbol(node.object, globals, scope, opts);\n const propertySymbol = getSymbol(node.property, globals, scope, {\n simpleIdentifier: !node.computed,\n });\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 }\n\n case 'ClassExpression': {\n return getSymbol(node.body, globals, scope, opts);\n }\n\n case 'TSTypeAliasDeclaration':\n case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n case 'ClassDeclaration':\n case 'FunctionExpression': case 'FunctionDeclaration':\n 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 }\n\n case 'AssignmentExpression': {\n return createSymbol(node.left, globals, node.right, scope, opts);\n }\n\n case 'ClassBody': {\n const val = createNode();\n for (const method of node.body) {\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\n val.type = 'object';\n val.value = node.parent;\n\n return val;\n }\n\n case 'ObjectExpression': {\n const val = createNode();\n val.type = 'object';\n for (const prop of node.properties) {\n if ([\n // @typescript-eslint/parser, espree, acorn, etc.\n 'SpreadElement',\n\n // @babel/eslint-parser\n 'ExperimentalSpreadProperty',\n ].includes(prop.type)) {\n continue;\n }\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 }\n\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 // eslint-disable-next-line default-case\n switch (node.type) {\n case 'FunctionDeclaration':\n /* istanbul ignore next */\n // Fall through\n case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n /* istanbul ignore next */\n // Fall through\n case 'TSTypeAliasDeclaration': case 'ClassDeclaration': {\n /* istanbul ignore next */\n if (node.id && node.id.type === 'Identifier') {\n return createSymbol(node.id, globals, node, globals);\n }\n\n /* istanbul ignore next */\n break;\n }\n\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\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\n /* istanbul ignore next */\n break;\n }\n\n case 'MemberExpression': {\n symbol = getSymbol(node.object, globals, block);\n\n const propertySymbol = getSymbol(node.property, globals, block, {\n simpleIdentifier: !node.computed,\n });\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\n /* istanbul ignore next */\n debug('MemberExpression: Missing symbol: %s', node.property.name);\n break;\n }\n }\n\n return null;\n};\n\n// Creates variables from variable definitions\nconst initVariables = function (node, globals, opts) {\n // eslint-disable-next-line default-case\n switch (node.type) {\n case 'Program': {\n for (const childNode of node.body) {\n initVariables(childNode, globals, opts);\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n initVariables(node.expression, globals, opts);\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\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\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n initVariables(node.declaration, globals, opts);\n }\n\n break;\n }\n }\n};\n\n// Populates variable maps using AST\n// eslint-disable-next-line complexity\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 }\n\n for (const childNode of node.body) {\n mapVariables(childNode, globals, opts);\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n mapVariables(node.expression, globals, opts);\n break;\n }\n\n case 'AssignmentExpression': {\n createSymbol(node.left, globals, node.right);\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\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\n break;\n }\n\n case 'FunctionDeclaration': {\n /* istanbul ignore next */\n if (node.id.type === 'Identifier') {\n createSymbol(node.id, globals, node, globals, true);\n }\n\n break;\n }\n\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\n break;\n }\n\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\n for (const specifier of node.specifiers) {\n mapVariables(specifier, globals, opts);\n }\n\n break;\n }\n\n case 'ExportSpecifier': {\n const symbol = getSymbol(node.local, globals, globals);\n /* istanbul ignore next */\n if (symbol) {\n symbol.exported = true;\n }\n\n break;\n }\n\n case 'ClassDeclaration': {\n createSymbol(node.id, globals, node.body, globals);\n break;\n }\n\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\n blockCache = blockCache.slice();\n blockCache.push(block);\n\n if (\n (block.type === 'object' || block.type === 'MethodDefinition') &&\n block.value === node\n ) {\n return true;\n }\n\n const {\n props = block.body,\n } = block;\n for (const propval of Object.values(props || {})) {\n if (Array.isArray(propval)) {\n /* istanbul ignore if */\n if (propval.some((val) => {\n return findNode(node, val, blockCache);\n })) {\n return true;\n }\n } else if (findNode(node, propval, blockCache)) {\n return true;\n }\n }\n\n return false;\n};\n\nconst exportTypes = new Set([\n 'ExportNamedDeclaration', 'ExportDefaultDeclaration',\n]);\nconst ignorableNestedTypes = new Set([\n 'FunctionDeclaration', 'ArrowFunctionExpression', 'FunctionExpression',\n]);\nconst getExportAncestor = function (nde) {\n let node = nde;\n let idx = 0;\n const ignorableIfDeep = ignorableNestedTypes.has(nde?.type);\n while (node) {\n // Ignore functions nested more deeply than say `export default function () {}`\n if (idx >= 2 && ignorableIfDeep) {\n break;\n }\n\n if (exportTypes.has(node.type)) {\n return node;\n }\n\n node = node.parent;\n idx++;\n }\n\n return false;\n};\n\nconst canBeExportedByAncestorType = new Set([\n 'TSPropertySignature',\n 'TSMethodSignature',\n 'ClassProperty',\n 'PropertyDefinition',\n 'Method',\n]);\n\nconst canExportChildrenType = new Set([\n 'TSInterfaceBody',\n 'TSInterfaceDeclaration',\n 'TSTypeLiteral',\n 'TSTypeAliasDeclaration',\n 'ClassDeclaration',\n 'ClassBody',\n 'ClassDefinition',\n 'ClassExpression',\n 'Program',\n]);\n\nconst isExportByAncestor = function (nde) {\n if (!canBeExportedByAncestorType.has(nde.type)) {\n return false;\n }\n\n let node = nde.parent;\n while (node) {\n if (exportTypes.has(node.type)) {\n return node;\n }\n\n if (!canExportChildrenType.has(node.type)) {\n return false;\n }\n\n node = node.parent;\n }\n\n return false;\n};\n\nconst findExportedNode = function (block, node, cache) {\n /* istanbul ignore next */\n if (block === null) {\n return false;\n }\n\n const blockCache = cache || [];\n const {\n props,\n } = block;\n for (const propval of Object.values(props)) {\n blockCache.push(propval);\n if (propval.exported && (node === propval.value || findNode(node, propval.value))) {\n return true;\n }\n\n // No need to check `propval` for exported nodes as ESM\n // exports are only global\n }\n\n return false;\n};\n\nconst isNodeExported = function (node, globals, opt) {\n const moduleExports = globals.props.module?.props?.exports;\n if (\n opt.initModuleExports && moduleExports && findNode(node, moduleExports)\n ) {\n return true;\n }\n\n if (opt.initWindow && globals.props.window && findNode(node, globals.props.window)) {\n return true;\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 && parseRecursive(node.parent, globalVars, opts)) {\n return true;\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\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 isUncommentedExport = function (node, sourceCode, opt, settings) {\n // console.log({node});\n // Optimize with ancestor check for esm\n if (opt.esm) {\n const exportNode = getExportAncestor(node);\n\n // Is export node comment\n if (exportNode && !findJSDocComment(exportNode, sourceCode, settings)) {\n return true;\n }\n\n /**\n * Some typescript types are not in variable map, but inherit exported (interface property and method)\n */\n if (\n isExportByAncestor(node) &&\n !findJSDocComment(node, sourceCode, settings)\n ) {\n return true;\n }\n }\n\n const parseResult = parse(sourceCode.ast, node, opt);\n\n return isNodeExported(node, parseResult.globalVars, opt);\n};\n\nexport default {\n isUncommentedExport,\n parse,\n};\n"],"file":"exportParser.js"}
|
|
@@ -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":";;;;;;;AAAA;;AAKA;;AACA;;AAGA;;;;AAEA,MAAMA,cAAc,GAAG;AACrBC,EAAAA,oBAAoB,EAAE,KADD;AAErBC,EAAAA,UAAU,EAAE;AACVC,IAAAA,iBAAiB,EAAE;AACjBC,MAAAA,OAAO,EAAE,IADQ;AAEjBC,MAAAA,IAAI,EAAE;AAFW,KADT;AAKVC,IAAAA,YAAY,EAAE;AACZC,MAAAA,KAAK,EAAE,CACL;AACEF,QAAAA,IAAI,EAAE;AADR,OADK,EAIL;AACEG,QAAAA,IAAI,EAAE,CACJ,WADI,CADR;AAIEH,QAAAA,IAAI,EAAE;AAJR,OAJK,CADK;AAYZD,MAAAA,OAAO,EAAE;AAZG,KALJ;AAmBVK,IAAAA,YAAY,EAAE;AACZF,MAAAA,KAAK,EAAE,CACL;AACEF,QAAAA,IAAI,EAAE;AADR,OADK,EAIL;AACEG,QAAAA,IAAI,EAAE,CACJ,WADI,CADR;AAIEH,QAAAA,IAAI,EAAE;AAJR,OAJK,CADK;AAYZD,MAAAA,OAAO,EAAE;AAZG,KAnBJ;AAiCVM,IAAAA,QAAQ,EAAE;AACRC,MAAAA,KAAK,EAAE;AACLJ,QAAAA,KAAK,EAAE,CACL;AACEF,UAAAA,IAAI,EAAE;AADR,SADK,EAIL;AACEJ,UAAAA,oBAAoB,EAAE,KADxB;AAEEC,UAAAA,UAAU,EAAE;AACVU,YAAAA,OAAO,EAAE;AACPP,cAAAA,IAAI,EAAE;AADC,aADC;AAIVQ,YAAAA,kBAAkB,EAAE;AAClBR,cAAAA,IAAI,EAAE;AADY,aAJV;AAOVS,YAAAA,YAAY,EAAE;AACZT,cAAAA,IAAI,EAAE;AADM;AAPJ,WAFd;AAaEA,UAAAA,IAAI,EAAE;AAbR,SAJK;AADF,OADC;AAuBRA,MAAAA,IAAI,EAAE;AAvBE,KAjCA;AA0DVU,IAAAA,WAAW,EAAE;AACXX,MAAAA,OAAO,EAAE,IADE;AAEXC,MAAAA,IAAI,EAAE;AAFK,KA1DH;AA8DVW,IAAAA,uBAAuB,EAAE;AACvBZ,MAAAA,OAAO,EAAE,KADc;AAEvBC,MAAAA,IAAI,EAAE;AAFiB,KA9Df;AAkEVY,IAAAA,oBAAoB,EAAE;AACpBb,MAAAA,OAAO,EAAE,KADW;AAEpBC,MAAAA,IAAI,EAAE;AAFc,KAlEZ;AAsEVa,IAAAA,YAAY,EAAE;AACZd,MAAAA,OAAO,EAAE,EADG;AAEZC,MAAAA,IAAI,EAAE;AAFM,KAtEJ;AA0EVS,IAAAA,YAAY,EAAE;AACZT,MAAAA,IAAI,EAAE;AADM,KA1EJ;AA6EVc,IAAAA,UAAU,EAAE;AACVC,MAAAA,KAAK,EAAE,CACL;AACEhB,QAAAA,OAAO,EAAE,KADX;AAEEC,QAAAA,IAAI,EAAE;AAFR,OADK,EAKL;AACEJ,QAAAA,oBAAoB,EAAE,KADxB;AAEEG,QAAAA,OAAO,EAAE,EAFX;AAGEF,QAAAA,UAAU,EAAE;AACVmB,UAAAA,aAAa,EAAE;AACbhB,YAAAA,IAAI,EAAE;AADO,WADL;AAIViB,UAAAA,GAAG,EAAE;AACHjB,YAAAA,IAAI,EAAE;AADH,WAJK;AAOVkB,UAAAA,GAAG,EAAE;AACHlB,YAAAA,IAAI,EAAE;AADH,WAPK;AAUVmB,UAAAA,MAAM,EAAE;AACNnB,YAAAA,IAAI,EAAE;AADA;AAVE,SAHd;AAiBEA,QAAAA,IAAI,EAAE;AAjBR,OALK;AADG,KA7EF;AAwGVoB,IAAAA,OAAO,EAAE;AACPxB,MAAAA,oBAAoB,EAAE,KADf;AAEPG,MAAAA,OAAO,EAAE,EAFF;AAGPF,MAAAA,UAAU,EAAE;AACVwB,QAAAA,uBAAuB,EAAE;AACvBtB,UAAAA,OAAO,EAAE,KADc;AAEvBC,UAAAA,IAAI,EAAE;AAFiB,SADf;AAKVsB,QAAAA,gBAAgB,EAAE;AAChBvB,UAAAA,OAAO,EAAE,KADO;AAEhBC,UAAAA,IAAI,EAAE;AAFU,SALR;AASVuB,QAAAA,eAAe,EAAE;AACfxB,UAAAA,OAAO,EAAE,KADM;AAEfC,UAAAA,IAAI,EAAE;AAFS,SATP;AAaVwB,QAAAA,mBAAmB,EAAE;AACnBzB,UAAAA,OAAO,EAAE,IADU;AAEnBC,UAAAA,IAAI,EAAE;AAFa,SAbX;AAiBVyB,QAAAA,kBAAkB,EAAE;AAClB1B,UAAAA,OAAO,EAAE,KADS;AAElBC,UAAAA,IAAI,EAAE;AAFY,SAjBV;AAqBV0B,QAAAA,gBAAgB,EAAE;AAChB3B,UAAAA,OAAO,EAAE,KADO;AAEhBC,UAAAA,IAAI,EAAE;AAFU;AArBR,OAHL;AA6BPA,MAAAA,IAAI,EAAE;AA7BC;AAxGC,GAFS;AA0IrBA,EAAAA,IAAI,EAAE;AA1Ie,CAAvB;;AA6IA,MAAM2B,SAAS,GAAG,CAACpB,OAAD,EAAUqB,UAAV,EAAsBC,MAAtB,EAA8BC,GAA9B,KAAsC;AACtD,MAAIvB,OAAO,CAACwB,OAAR,CAAgB,CAAhB,KAAsBF,MAAM,IAAItB,OAAO,CAACwB,OAAR,CAAgB,CAAhB,CAAhC,MACF;AACC,SAAOxB,OAAO,CAACwB,OAAR,CAAgB,CAAhB,EAAmBF,MAAnB,CAAP,KAAsC,SAAtC,IACDC,GAAG,IAAIvB,OAAO,CAACwB,OAAR,CAAgB,CAAhB,EAAmBF,MAAnB,CAHL,CAAJ,EAIE;AACA,WAAOtB,OAAO,CAACwB,OAAR,CAAgB,CAAhB,EAAmBF,MAAnB,EAA2BC,GAA3B,CAAP;AACD;;AAED,SAAOF,UAAU,CAAC/B,UAAX,CAAsBiC,GAAtB,EAA2B/B,OAAlC;AACD,CAVD;;AAYA,MAAMiC,UAAU,GAAIzB,OAAD,IAAa;AAC9B,QAAM;AACJO,IAAAA,UADI;AAEJT,IAAAA,QAAQ,GAAG,EAFP;AAGJM,IAAAA,uBAAuB,GAAG,IAHtB;AAIJC,IAAAA,oBAAoB,GAAG,KAJnB;AAKJF,IAAAA,WAAW,GAAG,IALV;AAMJG,IAAAA,YAAY,GAAG,EANX;AAOJJ,IAAAA,YAAY,GAAGwB;AAPX,MAQF1B,OAAO,CAACwB,OAAR,CAAgB,CAAhB,KAAsB,EAR1B;AAUA,SAAO;AACL1B,IAAAA,QADK;AAELK,IAAAA,WAFK;AAGLC,IAAAA,uBAHK;AAILC,IAAAA,oBAJK;AAKLC,IAAAA,YALK;AAMLJ,IAAAA,YANK;AAOLK,IAAAA,UAAU,EAAE,CAAEoB,OAAD,IAAa;AACxB,UAAI,CAACpB,UAAL,EAAiB;AACf,eAAO,KAAP;AACD;;AAED,YAAMjB,UAAU,GAAG,EAAnB;;AACA,WAAK,MAAMsC,IAAX,IAAmBC,MAAM,CAACC,IAAP,CAAYH,OAAO,CAACrC,UAApB,CAAnB,EAAoD;AAClD,cAAMyC,GAAG,GAAGX,SAAS,CAACpB,OAAD,EAAU2B,OAAV,EAAmB,YAAnB,EAAiCC,IAAjC,CAArB;AACAtC,QAAAA,UAAU,CAACsC,IAAD,CAAV,GAAmBG,GAAnB;AACD;;AAED,aAAOzC,UAAP;AACD,KAZW,EAYTF,cAAc,CAACE,UAAf,CAA0BiB,UAA1B,CAAqCC,KAArC,CAA2C,CAA3C,CAZS,CAPP;AAoBLK,IAAAA,OAAO,EAAE,CAAEc,OAAD,IAAa;AACrB,YAAMrC,UAAU,GAAG,EAAnB;;AACA,WAAK,MAAMsC,IAAX,IAAmBC,MAAM,CAACC,IAAP,CAAYH,OAAO,CAACrC,UAApB,CAAnB,EAAoD;AAClD,cAAMyC,GAAG,GAAGX,SAAS,CAACpB,OAAD,EAAU2B,OAAV,EAAmB,SAAnB,EAA8BC,IAA9B,CAArB;AACAtC,QAAAA,UAAU,CAACsC,IAAD,CAAV,GAAmBG,GAAnB;AACD;;AAED,aAAOzC,UAAP;AACD,KARQ,EAQNF,cAAc,CAACE,UAAf,CAA0BuB,OARpB;AApBJ,GAAP;AA8BD,CAzCD;;eA2Ce;AACbmB,EAAAA,MAAM,CAAEhC,OAAF,EAAW;AACf,UAAMiC,UAAU,GAAGjC,OAAO,CAACkC,aAAR,EAAnB;AACA,UAAMC,QAAQ,GAAG,+BAAYnC,OAAZ,CAAjB;;AACA,QAAI,CAACmC,QAAL,EAAe;AACb,aAAO,EAAP;AACD;;AAED,UAAM;AACJtB,MAAAA,OAAO,EAAEuB,aADL;AAEJtC,MAAAA,QAFI;AAGJS,MAAAA,UAHI;AAIJF,MAAAA,oBAJI;AAKJD,MAAAA,uBALI;AAMJD,MAAAA,WANI;AAOJG,MAAAA,YAPI;AAQJJ,MAAAA;AARI,QASFuB,UAAU,CAACzB,OAAD,CATd;;AAWA,UAAMqC,UAAU,GAAG,CAACC,IAAD,EAAOC,OAAP,EAAgBC,IAAhB,KAAyB;AAC1C,WACE;AACAtC,MAAAA,YAAY,KAAKwB,SAAjB,IAA8B5B,QAAQ,CAAC2C,IAAT,CAAc,CAAC;AAC3CvC,QAAAA,YAAY,EAAEwC;AAD6B,OAAD,KAEtC;AACJ,eAAOA,KAAK,KAAKhB,SAAjB;AACD,OAJ6B,CAFhC,EAOE;AACA,cAAMiB,YAAY,GAAID,KAAD,IAAW;AAAA;;AAC9B,iBAAOA,KAAK,KAAKhB,SAAV,IAAuBgB,KAAK,GACjC,CAAC,0BAAAT,UAAU,CAACW,OAAX,CAAmBJ,IAAnB,EAAyBK,KAAzB,CAA+B,MAA/B,iFAAwCC,MAAxC,KAAkD,CAAnD,IAAwD,CAD1D;AAED,SAHD;;AAKA,YAAIH,YAAY,CAACzC,YAAD,CAAhB,EAAgC;AAC9B;AACD;;AAED,cAAM;AACJA,UAAAA,YAAY,EAAE6C;AADV,YAEFjD,QAAQ,CAACkD,IAAT,CAAc,CAAC;AACjBhD,UAAAA,OAAO,EAAEiD;AADQ,SAAD,KAEZ;AACJ,iBAAOA,IAAI,MAAMX,IAAI,CAACY,QAAL,IAAiBV,IAAI,CAAC/C,IAA5B,CAAX;AACD,SAJG,KAIE,EANN;;AAOA,YAAIkD,YAAY,CAACI,mBAAD,CAAhB,EAAuC;AACrC;AACD;AACF;;AAED,YAAMI,SAAS,GAAG,mCAAgBlB,UAAhB,EAA4BO,IAA5B,EAAkCL,QAAlC,CAAlB;;AAEA,UAAIgB,SAAJ,EAAe;AACb;AACD,OAlCyC,CAoC1C;AACA;;;AACA,UAAIC,oBAAWC,mBAAX,CACF;AACEC,QAAAA,IAAI,EAAE;AADR,OADE,EAGCd,IAHD,EAGOxC,OAHP,EAGgB,CAChBZ,cADgB,CAHhB,CAAJ,EAMG;AACD;AACD;;AAED,WACE;AACA;AACAiB,MAAAA,oBAAoB,IAAIiC,IAAI,CAACiB,iBAA7B,IAEA;AACA;AACAnD,MAAAA,uBAAuB,IAAIgD,oBAAWI,aAAX,CAAyBhB,IAAzB,CAP7B,EAQE;AACA,cAAMiB,sBAAsB,GAAGL,oBAAWM,yBAAX,CAAqClB,IAArC,CAA/B;;AACA,YAAI,CAACiB,sBAAsB,CAACX,MAAxB,IAAkC,CAACM,oBAAWO,cAAX,CAA0BnB,IAA1B,CAAvC,EAAwE;AACtE;AACD;AACF;;AAED,YAAMoB,GAAG,GAAIC,KAAD,IAAW;AACrB;AACA,cAAMC,KAAK,GAAG3B,QAAQ,CAAC4B,QAAT,KAAsB,CAAtB,IAA2B5B,QAAQ,CAAC6B,QAAT,IAAqB,CAAhD,GAAoD,CAApD,GAAwD7B,QAAQ,CAAC4B,QAA/E;AACA,YAAIE,QAAQ,GAAG,qCAAkBzB,IAAlB,EAAwBP,UAAxB,CAAf;AAEA,cAAMiC,SAAS,GAAG,gCAAaD,QAAb,CAAlB;;AACA,YAAIC,SAAJ,EAAe;AACbD,UAAAA,QAAQ,GAAGC,SAAX;AACD;;AAED,cAAMC,MAAM,GAAGf,oBAAWgB,SAAX,CAAqB;AAClCC,UAAAA,IAAI,EAAEpC,UAAU,CAACW,OAAX,CACJqB,QADI,EAEJA,QAAQ,CAACK,GAAT,CAAaC,KAAb,CAAmBC,MAFf;AAD4B,SAArB,CAAf;;AAOA,cAAM;AACJvE,UAAAA;AADI,YAEFH,QAAQ,CAACkD,IAAT,CAAc,CAAC;AACjBhD,UAAAA,OAAO,EAAEiD;AADQ,SAAD,KAEZ;AACJ,iBAAOA,IAAI,KAAKT,IAAI,CAAC/C,IAArB;AACD,SAJG,KAIE,EANN;AAOA,cAAMgF,SAAS,GAAG,CAACxE,kBAAkB,GAClC,OAAMK,YAAa,EADe,GAElC,QAAO6D,MAAO,IAAG7D,YAAa,KAAI6D,MAAO,EAF1B,IAGb,KAAI,KAAKO,MAAL,CAAYZ,KAAZ,CAAmB,GAAEK,MAAM,CAACQ,KAAP,CAAa,CAAb,EAAgB,CAAC,CAAjB,CAAoB,EAHlD;AAKA,eAAOd,KAAK,CAACe,gBAAN,CAAuBX,QAAvB,EAAiCQ,SAAjC,CAAP;AACD,OA9BD;;AAgCA,YAAMI,MAAM,GAAG,MAAM;AACnB,cAAMP,GAAG,GAAG;AACVQ,UAAAA,GAAG,EAAEtC,IAAI,CAAC8B,GAAL,CAASC,KAAT,GAAiB,CADZ;AAEVA,UAAAA,KAAK,EAAE/B,IAAI,CAAC8B,GAAL,CAASC;AAFN,SAAZ;AAIAvE,QAAAA,OAAO,CAAC6E,MAAR,CAAe;AACbjB,UAAAA,GAAG,EAAEzD,WAAW,GAAGyD,GAAH,GAAS,IADZ;AAEbU,UAAAA,GAFa;AAGbS,UAAAA,SAAS,EAAE,cAHE;AAIbvC,UAAAA;AAJa,SAAf;AAMD,OAXD;;AAaA,UAAIjC,UAAJ,EAAgB;AACd,cAAMwB,GAAG,GAAG;AACVtB,UAAAA,aAAa,EAAEuE,OAAO,CAAC,CAAAzE,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEE,aAAZ,KAA6B,KAA9B,CADZ;AAEVE,UAAAA,GAAG,EAAEqE,OAAO,CAAC,CAAAzE,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEI,GAAZ,KAAmB,IAApB,CAFF;AAGVsE,UAAAA,iBAAiB,EAAED,OAAO,CAAC,CAAAzE,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEG,GAAZ,KAAmB,IAApB,CAHhB;AAIVwE,UAAAA,UAAU,EAAEF,OAAO,CAAC,CAAAzE,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAEK,MAAZ,KAAsB,KAAvB;AAJT,SAAZ;;AAMA,cAAMuE,QAAQ,GAAGC,sBAAaC,mBAAb,CAAiC7C,IAAjC,EAAuCP,UAAvC,EAAmDF,GAAnD,EAAwDI,QAAxD,CAAjB;;AAEA,YAAIgD,QAAJ,EAAc;AACZN,UAAAA,MAAM;AACP;AACF,OAZD,MAYO;AACLA,QAAAA,MAAM;AACP;AACF,KA3HD;;AA6HA,UAAMS,SAAS,GAAI1D,IAAD,IAAU;AAC1B,aAAOQ,aAAa,CAACR,IAAD,CAAb,IAAuB9B,QAAQ,CAAC2C,IAAT,CAAeQ,IAAD,IAAU;AACpD,eAAO,OAAOA,IAAP,KAAgB,QAAhB,GAA2BA,IAAI,CAACjD,OAAL,KAAiB4B,IAA5C,GAAmDqB,IAAI,KAAKrB,IAAnE;AACD,OAF6B,CAA9B;AAGD,KAJD;;AAMA,WAAO,EACL,GAAGwB,oBAAWmC,gBAAX,CACDnC,oBAAWoC,gBAAX,CAA4BxF,OAA5B,EAAqC,EAArC,CADC,EAEDqC,UAFC,CADE;;AAKLvB,MAAAA,uBAAuB,CAAE0B,IAAF,EAAQ;AAC7B,YAAI,CAAC8C,SAAS,CAAC,yBAAD,CAAd,EAA2C;AACzC;AACD;;AAED,YACE,CACE,oBADF,EACwB,sBADxB,EACgD,0BADhD,EAEEG,QAFF,CAEWjD,IAAI,CAACkD,MAAL,CAAYjG,IAFvB,KAGA,CACE,UADF,EACc,gBADd,EACgC,eADhC,EACiD,oBADjD,EAEEgG,QAFF,CAEWjD,IAAI,CAACkD,MAAL,CAAYjG,IAFvB,KAEgC+C,IAAI,KAAKA,IAAI,CAACkD,MAAL,CAAYC,KANvD,EAOE;AACAtD,UAAAA,UAAU,CAAC;AACTkB,YAAAA,iBAAiB,EAAE;AADV,WAAD,EAEP,IAFO,EAEDf,IAFC,CAAV;AAGD;AACF,OAtBI;;AAwBLzB,MAAAA,gBAAgB,CAAEyB,IAAF,EAAQ;AACtB,YAAI,CAAC8C,SAAS,CAAC,kBAAD,CAAd,EAAoC;AAClC;AACD;;AAEDjD,QAAAA,UAAU,CAAC;AACTkB,UAAAA,iBAAiB,EAAE;AADV,SAAD,EAEP,IAFO,EAEDf,IAFC,CAAV;AAGD,OAhCI;;AAkCLxB,MAAAA,eAAe,CAAEwB,IAAF,EAAQ;AACrB,YAAI,CAAC8C,SAAS,CAAC,iBAAD,CAAd,EAAmC;AACjC;AACD;;AAEDjD,QAAAA,UAAU,CAAC;AACTkB,UAAAA,iBAAiB,EAAE;AADV,SAAD,EAEP,IAFO,EAEDf,IAFC,CAAV;AAGD,OA1CI;;AA4CLvB,MAAAA,mBAAmB,CAAEuB,IAAF,EAAQ;AACzB,YAAI,CAAC8C,SAAS,CAAC,qBAAD,CAAd,EAAuC;AACrC;AACD;;AAEDjD,QAAAA,UAAU,CAAC;AACTkB,UAAAA,iBAAiB,EAAE;AADV,SAAD,EAEP,IAFO,EAEDf,IAFC,CAAV;AAGD,OApDI;;AAsDLtB,MAAAA,kBAAkB,CAAEsB,IAAF,EAAQ;AACxB,YAAI,CAAC8C,SAAS,CAAC,oBAAD,CAAd,EAAsC;AACpC;AACD;;AAED,YACE,CACE,oBADF,EACwB,sBADxB,EACgD,0BADhD,EAEEG,QAFF,CAEWjD,IAAI,CAACkD,MAAL,CAAYjG,IAFvB,KAGA,CACE,UADF,EACc,gBADd,EACgC,eADhC,EACiD,oBADjD,EAEEgG,QAFF,CAEWjD,IAAI,CAACkD,MAAL,CAAYjG,IAFvB,KAEgC+C,IAAI,KAAKA,IAAI,CAACkD,MAAL,CAAYC,KANvD,EAOE;AACAtD,UAAAA,UAAU,CAAC;AACTkB,YAAAA,iBAAiB,EAAE;AADV,WAAD,EAEP,IAFO,EAEDf,IAFC,CAAV;AAGD;AACF,OAvEI;;AAyELrB,MAAAA,gBAAgB,CAAEqB,IAAF,EAAQ;AACtB,YAAI,CAAC8C,SAAS,CAAC,kBAAD,CAAd,EAAoC;AAClC;AACD;;AAEDjD,QAAAA,UAAU,CAAC;AACTkB,UAAAA,iBAAiB,EAAE,IADV;AAETL,UAAAA,QAAQ,EAAE;AAFD,SAAD,EAGP,IAHO,EAGDV,IAAI,CAACmD,KAHJ,CAAV;AAID;;AAlFI,KAAP;AAoFD,GA1OY;;AA2ObC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AACJC,MAAAA,QAAQ,EAAE,kBADN;AAEJC,MAAAA,WAAW,EAAE,wBAFT;AAGJC,MAAAA,WAAW,EAAE,MAHT;AAIJC,MAAAA,GAAG,EAAE;AAJD,KADF;AAQJC,IAAAA,OAAO,EAAE,MARL;AAUJC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,YAAY,EAAE;AADN,KAVN;AAcJC,IAAAA,MAAM,EAAE,CACNjH,cADM,CAdJ;AAkBJK,IAAAA,IAAI,EAAE;AAlBF;AA3OO,C","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