eslint-plugin-jsdoc 48.0.2 → 48.0.3
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/dist/exportParser.cjs
CHANGED
|
@@ -553,7 +553,7 @@ const getExportAncestor = function (nde) {
|
|
|
553
553
|
return false;
|
|
554
554
|
};
|
|
555
555
|
const canBeExportedByAncestorType = new Set(['TSPropertySignature', 'TSMethodSignature', 'ClassProperty', 'PropertyDefinition', 'Method']);
|
|
556
|
-
const canExportChildrenType = new Set(['TSInterfaceBody', 'TSInterfaceDeclaration', 'TSTypeLiteral', 'TSTypeAliasDeclaration', 'ClassDeclaration', 'ClassBody', 'ClassDefinition', 'ClassExpression', 'Program']);
|
|
556
|
+
const canExportChildrenType = new Set(['TSInterfaceBody', 'TSInterfaceDeclaration', 'TSTypeLiteral', 'TSTypeAliasDeclaration', 'TSTypeParameterInstantiation', 'TSTypeReference', 'ClassDeclaration', 'ClassBody', 'ClassDefinition', 'ClassExpression', 'Program']);
|
|
557
557
|
|
|
558
558
|
/**
|
|
559
559
|
* @param {import('eslint').Rule.Node} nde
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exportParser.cjs","names":["_jsdoccomment","require","_debug","_interopRequireDefault","obj","__esModule","default","debug","debugModule","createNode","props","getSymbolValue","symbol","type","value","getIdentifier","node","globals","scope","opts","simpleIdentifier","identifierLiteral","name","block","createSymbol","getSymbol","opt","object","propertySymbol","property","computed","propertyValue","body","val","prototype","left","right","method","key","parent","prop","properties","includes","propVal","createBlockSymbol","isGlobal","window","special","nde","id","valueSymbol","initVariables","childNode","expression","declaration","declarations","initWindow","kind","mapVariables","isExport","ancestorsOnly","Boolean","init","exported","ANONYMOUS_DEFAULT","specifier","specifiers","local","findNode","cache","blockCache","slice","push","propval","Object","values","Array","isArray","some","exportTypes","Set","ignorableNestedTypes","getExportAncestor","idx","ignorableIfDeep","has","canBeExportedByAncestorType","canExportChildrenType","isExportByAncestor","findExportedNode","pval","isNodeExported","_globals$props$module","moduleExports","module","exports","initModuleExports","esm","parseRecursive","globalVars","parse","ast","accessibilityNodes","hasAccessibility","accessibility","undefined","isUncommentedExport","sourceCode","settings","exportNode","findJSDocComment","parseResult","_default"],"sources":["../src/exportParser.js"],"sourcesContent":["import {\n findJSDocComment,\n} from '@es-joy/jsdoccomment';\nimport debugModule from 'debug';\n\nconst debug = debugModule('requireExportJsdoc');\n\n/**\n * @typedef {{\n * value: string\n * }} ValueObject\n */\n\n/**\n * @typedef {{\n * type?: string,\n * value?: ValueObject|import('eslint').Rule.Node,\n * props: {\n * [key: string]: CreatedNode|null,\n * },\n * special?: true,\n * globalVars?: CreatedNode,\n * exported?: boolean,\n * ANONYMOUS_DEFAULT?: import('eslint').Rule.Node\n * }} CreatedNode\n */\n\n/**\n * @returns {CreatedNode}\n */\nconst createNode = function () {\n return {\n props: {},\n };\n};\n\n/**\n * @param {CreatedNode|null} symbol\n * @returns {string|null}\n */\nconst getSymbolValue = function (symbol) {\n /* c8 ignore next 3 */\n if (!symbol) {\n return null;\n }\n\n /* c8 ignore else */\n if (symbol.type === 'literal') {\n return /** @type {ValueObject} */ (symbol.value).value;\n }\n /* c8 ignore next */\n return null;\n};\n\n/**\n *\n * @param {import('estree').Identifier} node\n * @param {CreatedNode} globals\n * @param {CreatedNode} scope\n * @param {SymbolOptions} opts\n * @returns {CreatedNode|null}\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 /* c8 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 /* c8 ignore next 3 */\n if (globals.props[node.name]) {\n return globals.props[node.name];\n }\n\n return null;\n};\n\n/**\n * @callback CreateSymbol\n * @param {import('eslint').Rule.Node|null} node\n * @param {CreatedNode} globals\n * @param {import('eslint').Rule.Node|null} value\n * @param {CreatedNode} [scope]\n * @param {boolean|SymbolOptions} [isGlobal]\n * @returns {CreatedNode|null}\n */\n\n/** @type {CreateSymbol} */\nlet createSymbol; // eslint-disable-line prefer-const\n\n/* eslint-disable complexity -- Temporary */\n\n/**\n * @typedef {{\n * simpleIdentifier?: boolean\n * }} SymbolOptions\n */\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {CreatedNode} scope\n * @param {SymbolOptions} [opt]\n * @returns {CreatedNode|null}\n */\nconst getSymbol = function (node, globals, scope, opt) {\n /* eslint-enable complexity -- Temporary */\n const opts = opt || {};\n /* c8 ignore next */\n switch (node.type) {\n case 'Identifier': {\n return getIdentifier(node, globals, scope, opts);\n }\n\n case 'MemberExpression': {\n const obj = getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.object),\n globals,\n scope,\n opts,\n );\n const propertySymbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.property),\n globals,\n scope,\n {\n simpleIdentifier: !node.computed,\n },\n );\n const propertyValue = getSymbolValue(propertySymbol);\n\n /* c8 ignore else */\n if (obj && propertyValue && obj.props[propertyValue]) {\n const block = obj.props[propertyValue];\n\n return block;\n }\n /* c8 ignore next 10 */\n /*\n if (opts.createMissingProps && propertyValue) {\n obj.props[propertyValue] = createNode();\n\n return obj.props[propertyValue];\n }\n */\n debug(`MemberExpression: Missing property ${\n /** @type {import('estree').PrivateIdentifier} */ (node.property).name\n }`);\n /* c8 ignore next 2 */\n return null;\n }\n\n case 'ClassExpression': {\n return getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.body),\n globals,\n scope,\n opts,\n );\n }\n\n /* c8 ignore next 7 -- No longer needed? */\n // @ts-expect-error TS OK\n case 'TSTypeAliasDeclaration':\n // @ts-expect-error TS OK\n // Fallthrough\n case 'TSEnumDeclaration':\n // @ts-expect-error TS OK\n 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(\n /** @type {import('eslint').Rule.Node} */\n (node.left),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.right),\n scope,\n opts,\n );\n }\n\n case 'ClassBody': {\n const val = createNode();\n for (const method of node.body) {\n val.props[\n /** @type {import('estree').Identifier} */ (\n /** @type {import('estree').MethodDefinition} */ (\n method\n ).key\n ).name\n ] = createNode();\n /** @type {{[key: string]: CreatedNode}} */ (val.props)[\n /** @type {import('estree').Identifier} */ (\n /** @type {import('estree').MethodDefinition} */ (\n method\n ).key\n ).name\n ].type = 'object';\n /** @type {{[key: string]: CreatedNode}} */ (val.props)[\n /** @type {import('estree').Identifier} */ (\n /** @type {import('estree').MethodDefinition} */ (\n method\n ).key\n ).name\n ].value = /** @type {import('eslint').Rule.Node} */ (\n /** @type {import('estree').MethodDefinition} */ (method).value\n );\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(\n /** @type {import('eslint').Rule.Node} */ (\n /** @type {import('estree').Property} */\n (prop).value\n ),\n globals,\n scope,\n opts,\n );\n /* c8 ignore next 8 */\n if (propVal) {\n val.props[\n /** @type {import('estree').PrivateIdentifier} */\n (\n /** @type {import('estree').Property} */ (prop).key\n ).name\n ] = 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 /* c8 ignore next */\n return null;\n};\n\n/**\n *\n * @param {CreatedNode} block\n * @param {string} name\n * @param {CreatedNode|null} value\n * @param {CreatedNode} globals\n * @param {boolean|SymbolOptions|undefined} isGlobal\n * @returns {void}\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 /* c8 ignore next 3 */\n if (!node) {\n return null;\n }\n\n let symbol;\n switch (node.type) {\n case 'FunctionDeclaration':\n /* c8 ignore next */\n // @ts-expect-error TS OK\n // Fall through\n case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n /* c8 ignore next */\n // @ts-expect-error TS OK\n // Fall through\n case 'TSTypeAliasDeclaration': case 'ClassDeclaration': {\n const nde = /** @type {import('estree').ClassDeclaration} */ (node);\n /* c8 ignore else */\n if (nde.id && nde.id.type === 'Identifier') {\n return createSymbol(\n /** @type {import('eslint').Rule.Node} */ (nde.id),\n globals,\n node,\n globals,\n );\n }\n /* c8 ignore next 2 */\n break;\n }\n\n case 'Identifier': {\n const nde = /** @type {import('estree').Identifier} */ (node);\n if (value) {\n const valueSymbol = getSymbol(value, globals, block);\n /* c8 ignore else */\n if (valueSymbol) {\n createBlockSymbol(block, nde.name, valueSymbol, globals, isGlobal);\n\n return block.props[nde.name];\n }\n /* c8 ignore next */\n debug('Identifier: Missing value symbol for %s', nde.name);\n } else {\n createBlockSymbol(block, nde.name, createNode(), globals, isGlobal);\n\n return block.props[nde.name];\n }\n /* c8 ignore next 2 */\n break;\n }\n\n case 'MemberExpression': {\n const nde = /** @type {import('estree').MemberExpression} */ (node);\n symbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */ (nde.object), globals, block,\n );\n\n const propertySymbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */ (nde.property),\n globals,\n block,\n {\n simpleIdentifier: !nde.computed,\n },\n );\n const propertyValue = getSymbolValue(propertySymbol);\n if (symbol && propertyValue) {\n createBlockSymbol(symbol, propertyValue, getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (value), globals, block,\n ), globals, isGlobal);\n return symbol.props[propertyValue];\n }\n\n debug(\n 'MemberExpression: Missing symbol: %s',\n /** @type {import('estree').Identifier} */ (\n nde.property\n ).name,\n );\n break;\n }\n }\n\n return null;\n};\n\n/**\n * Creates variables from variable definitions\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opts\n * @returns {void}\n */\nconst initVariables = function (node, globals, opts) {\n switch (node.type) {\n case 'Program': {\n for (const childNode of node.body) {\n initVariables(\n /** @type {import('eslint').Rule.Node} */\n (childNode),\n globals,\n opts,\n );\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n initVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.expression),\n globals,\n opts,\n );\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\n // let and const\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (declaration.id),\n globals,\n null,\n globals,\n );\n if (opts.initWindow && node.kind === 'var' && globals.props.window) {\n // If var, also add to window\n globals.props.window.props[\n /** @type {import('estree').Identifier} */\n (declaration.id).name\n ] = symbol;\n }\n }\n\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n initVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n opts,\n );\n }\n\n break;\n }\n }\n};\n\n/* eslint-disable complexity -- Temporary */\n\n/**\n * Populates variable maps using AST\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @param {true} [isExport]\n * @returns {boolean}\n */\nconst mapVariables = function (node, globals, opt, isExport) {\n /* eslint-enable complexity -- Temporary */\n /* c8 ignore next */\n const opts = opt || {};\n /* c8 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(\n /** @type {import('eslint').Rule.Node} */\n (childNode),\n globals,\n opts,\n );\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n mapVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.expression),\n globals,\n opts,\n );\n break;\n }\n\n case 'AssignmentExpression': {\n createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.left),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.right),\n );\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\n const isGlobal = Boolean(opts.initWindow && node.kind === 'var' && globals.props.window);\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (declaration.id),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (declaration.init),\n globals,\n isGlobal,\n );\n if (symbol && isExport) {\n symbol.exported = true;\n }\n }\n\n break;\n }\n\n case 'FunctionDeclaration': {\n /* c8 ignore next 10 */\n if (/** @type {import('estree').Identifier} */ (node.id).type === 'Identifier') {\n createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.id),\n globals,\n node,\n globals,\n true,\n );\n }\n\n break;\n }\n\n case 'ExportDefaultDeclaration': {\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n );\n if (symbol) {\n symbol.exported = true;\n /* c8 ignore next 6 */\n } else {\n // if (!node.id) {\n globals.ANONYMOUS_DEFAULT = /** @type {import('eslint').Rule.Node} */ (\n node.declaration\n );\n }\n\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n if (node.declaration.type === 'VariableDeclaration') {\n mapVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n opts,\n true,\n );\n } else {\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n );\n /* c8 ignore next 3 */\n if (symbol) {\n symbol.exported = true;\n }\n }\n }\n\n for (const specifier of node.specifiers) {\n mapVariables(\n /** @type {import('eslint').Rule.Node} */\n (specifier),\n globals,\n opts,\n );\n }\n\n break;\n }\n\n case 'ExportSpecifier': {\n const symbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.local),\n globals,\n globals,\n );\n /* c8 ignore next 3 */\n if (symbol) {\n symbol.exported = true;\n }\n\n break;\n }\n\n case 'ClassDeclaration': {\n createSymbol(\n /** @type {import('eslint').Rule.Node|null} */ (node.id),\n globals,\n /** @type {import('eslint').Rule.Node} */ (node.body),\n globals,\n );\n break;\n }\n\n default: {\n /* c8 ignore next */\n return false;\n }\n }\n\n return true;\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode|ValueObject|string|undefined|\n * import('eslint').Rule.Node} block\n * @param {(CreatedNode|ValueObject|string|\n * import('eslint').Rule.Node)[]} [cache]\n * @returns {boolean}\n */\nconst findNode = function (node, block, cache) {\n let blockCache = cache || [];\n if (!block || blockCache.includes(block)) {\n return false;\n }\n\n blockCache = blockCache.slice();\n blockCache.push(block);\n\n if (\n typeof block === 'object' &&\n 'type' in block &&\n (block.type === 'object' || block.type === 'MethodDefinition') &&\n block.value === node\n ) {\n return true;\n }\n\n if (typeof block !== 'object') {\n return false;\n }\n\n const props = ('props' in block && block.props) || ('body' in block && block.body);\n for (const propval of Object.values(props || {})) {\n if (Array.isArray(propval)) {\n /* c8 ignore next 5 */\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]);\n\n/**\n * @param {import('eslint').Rule.Node} nde\n * @returns {import('eslint').Rule.Node|false}\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\n/**\n * @param {import('eslint').Rule.Node} nde\n * @returns {false|import('eslint').Rule.Node}\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\n/**\n *\n * @param {CreatedNode} block\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode[]} [cache] Currently unused\n * @returns {boolean}\n */\nconst findExportedNode = function (block, node, cache) {\n /* c8 ignore next 3 */\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 const pval = /** @type {CreatedNode} */ (propval);\n blockCache.push(pval);\n if (pval.exported && (node === pval.value || findNode(node, pval.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\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @returns {boolean}\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\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globalVars\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opts\n * @returns {boolean}\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\n/**\n *\n * @param {import('eslint').Rule.Node} ast\n * @param {import('eslint').Rule.Node} node\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @returns {CreatedNode}\n */\nconst parse = function (ast, node, opt) {\n /* c8 ignore next 6 */\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 props: {},\n };\n};\n\nconst accessibilityNodes = new Set([\n 'PropertyDefinition',\n 'MethodDefinition',\n]);\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @returns {boolean}\n */\nconst hasAccessibility = (node) => {\n return accessibilityNodes.has(node.type) && 'accessibility' in node &&\n node.accessibility !== 'public' && node.accessibility !== undefined;\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {import('eslint').SourceCode} sourceCode\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @param {import('./iterateJsdoc.js').Settings} settings\n * @returns {boolean}\n */\nconst isUncommentedExport = function (node, sourceCode, opt, settings) {\n // console.log({node});\n // Optimize with ancestor check for esm\n if (opt.esm) {\n if (hasAccessibility(node) ||\n node.parent && hasAccessibility(node.parent)) {\n return false;\n }\n\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 ast = /** @type {unknown} */ (sourceCode.ast);\n\n const parseResult = parse(\n /** @type {import('eslint').Rule.Node} */\n (ast),\n node,\n opt,\n );\n\n return isNodeExported(\n node, /** @type {CreatedNode} */ (parseResult.globalVars), opt,\n );\n};\n\nexport default {\n isUncommentedExport,\n parse,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exportParser.cjs","names":["_jsdoccomment","require","_debug","_interopRequireDefault","obj","__esModule","default","debug","debugModule","createNode","props","getSymbolValue","symbol","type","value","getIdentifier","node","globals","scope","opts","simpleIdentifier","identifierLiteral","name","block","createSymbol","getSymbol","opt","object","propertySymbol","property","computed","propertyValue","body","val","prototype","left","right","method","key","parent","prop","properties","includes","propVal","createBlockSymbol","isGlobal","window","special","nde","id","valueSymbol","initVariables","childNode","expression","declaration","declarations","initWindow","kind","mapVariables","isExport","ancestorsOnly","Boolean","init","exported","ANONYMOUS_DEFAULT","specifier","specifiers","local","findNode","cache","blockCache","slice","push","propval","Object","values","Array","isArray","some","exportTypes","Set","ignorableNestedTypes","getExportAncestor","idx","ignorableIfDeep","has","canBeExportedByAncestorType","canExportChildrenType","isExportByAncestor","findExportedNode","pval","isNodeExported","_globals$props$module","moduleExports","module","exports","initModuleExports","esm","parseRecursive","globalVars","parse","ast","accessibilityNodes","hasAccessibility","accessibility","undefined","isUncommentedExport","sourceCode","settings","exportNode","findJSDocComment","parseResult","_default"],"sources":["../src/exportParser.js"],"sourcesContent":["import {\n findJSDocComment,\n} from '@es-joy/jsdoccomment';\nimport debugModule from 'debug';\n\nconst debug = debugModule('requireExportJsdoc');\n\n/**\n * @typedef {{\n * value: string\n * }} ValueObject\n */\n\n/**\n * @typedef {{\n * type?: string,\n * value?: ValueObject|import('eslint').Rule.Node,\n * props: {\n * [key: string]: CreatedNode|null,\n * },\n * special?: true,\n * globalVars?: CreatedNode,\n * exported?: boolean,\n * ANONYMOUS_DEFAULT?: import('eslint').Rule.Node\n * }} CreatedNode\n */\n\n/**\n * @returns {CreatedNode}\n */\nconst createNode = function () {\n return {\n props: {},\n };\n};\n\n/**\n * @param {CreatedNode|null} symbol\n * @returns {string|null}\n */\nconst getSymbolValue = function (symbol) {\n /* c8 ignore next 3 */\n if (!symbol) {\n return null;\n }\n\n /* c8 ignore else */\n if (symbol.type === 'literal') {\n return /** @type {ValueObject} */ (symbol.value).value;\n }\n /* c8 ignore next */\n return null;\n};\n\n/**\n *\n * @param {import('estree').Identifier} node\n * @param {CreatedNode} globals\n * @param {CreatedNode} scope\n * @param {SymbolOptions} opts\n * @returns {CreatedNode|null}\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 /* c8 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 /* c8 ignore next 3 */\n if (globals.props[node.name]) {\n return globals.props[node.name];\n }\n\n return null;\n};\n\n/**\n * @callback CreateSymbol\n * @param {import('eslint').Rule.Node|null} node\n * @param {CreatedNode} globals\n * @param {import('eslint').Rule.Node|null} value\n * @param {CreatedNode} [scope]\n * @param {boolean|SymbolOptions} [isGlobal]\n * @returns {CreatedNode|null}\n */\n\n/** @type {CreateSymbol} */\nlet createSymbol; // eslint-disable-line prefer-const\n\n/* eslint-disable complexity -- Temporary */\n\n/**\n * @typedef {{\n * simpleIdentifier?: boolean\n * }} SymbolOptions\n */\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {CreatedNode} scope\n * @param {SymbolOptions} [opt]\n * @returns {CreatedNode|null}\n */\nconst getSymbol = function (node, globals, scope, opt) {\n /* eslint-enable complexity -- Temporary */\n const opts = opt || {};\n /* c8 ignore next */\n switch (node.type) {\n case 'Identifier': {\n return getIdentifier(node, globals, scope, opts);\n }\n\n case 'MemberExpression': {\n const obj = getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.object),\n globals,\n scope,\n opts,\n );\n const propertySymbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.property),\n globals,\n scope,\n {\n simpleIdentifier: !node.computed,\n },\n );\n const propertyValue = getSymbolValue(propertySymbol);\n\n /* c8 ignore else */\n if (obj && propertyValue && obj.props[propertyValue]) {\n const block = obj.props[propertyValue];\n\n return block;\n }\n /* c8 ignore next 10 */\n /*\n if (opts.createMissingProps && propertyValue) {\n obj.props[propertyValue] = createNode();\n\n return obj.props[propertyValue];\n }\n */\n debug(`MemberExpression: Missing property ${\n /** @type {import('estree').PrivateIdentifier} */ (node.property).name\n }`);\n /* c8 ignore next 2 */\n return null;\n }\n\n case 'ClassExpression': {\n return getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.body),\n globals,\n scope,\n opts,\n );\n }\n\n /* c8 ignore next 7 -- No longer needed? */\n // @ts-expect-error TS OK\n case 'TSTypeAliasDeclaration':\n // @ts-expect-error TS OK\n // Fallthrough\n case 'TSEnumDeclaration':\n // @ts-expect-error TS OK\n 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(\n /** @type {import('eslint').Rule.Node} */\n (node.left),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.right),\n scope,\n opts,\n );\n }\n\n case 'ClassBody': {\n const val = createNode();\n for (const method of node.body) {\n val.props[\n /** @type {import('estree').Identifier} */ (\n /** @type {import('estree').MethodDefinition} */ (\n method\n ).key\n ).name\n ] = createNode();\n /** @type {{[key: string]: CreatedNode}} */ (val.props)[\n /** @type {import('estree').Identifier} */ (\n /** @type {import('estree').MethodDefinition} */ (\n method\n ).key\n ).name\n ].type = 'object';\n /** @type {{[key: string]: CreatedNode}} */ (val.props)[\n /** @type {import('estree').Identifier} */ (\n /** @type {import('estree').MethodDefinition} */ (\n method\n ).key\n ).name\n ].value = /** @type {import('eslint').Rule.Node} */ (\n /** @type {import('estree').MethodDefinition} */ (method).value\n );\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(\n /** @type {import('eslint').Rule.Node} */ (\n /** @type {import('estree').Property} */\n (prop).value\n ),\n globals,\n scope,\n opts,\n );\n /* c8 ignore next 8 */\n if (propVal) {\n val.props[\n /** @type {import('estree').PrivateIdentifier} */\n (\n /** @type {import('estree').Property} */ (prop).key\n ).name\n ] = 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 /* c8 ignore next */\n return null;\n};\n\n/**\n *\n * @param {CreatedNode} block\n * @param {string} name\n * @param {CreatedNode|null} value\n * @param {CreatedNode} globals\n * @param {boolean|SymbolOptions|undefined} isGlobal\n * @returns {void}\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 /* c8 ignore next 3 */\n if (!node) {\n return null;\n }\n\n let symbol;\n switch (node.type) {\n case 'FunctionDeclaration':\n /* c8 ignore next */\n // @ts-expect-error TS OK\n // Fall through\n case 'TSEnumDeclaration': case 'TSInterfaceDeclaration':\n /* c8 ignore next */\n // @ts-expect-error TS OK\n // Fall through\n case 'TSTypeAliasDeclaration': case 'ClassDeclaration': {\n const nde = /** @type {import('estree').ClassDeclaration} */ (node);\n /* c8 ignore else */\n if (nde.id && nde.id.type === 'Identifier') {\n return createSymbol(\n /** @type {import('eslint').Rule.Node} */ (nde.id),\n globals,\n node,\n globals,\n );\n }\n /* c8 ignore next 2 */\n break;\n }\n\n case 'Identifier': {\n const nde = /** @type {import('estree').Identifier} */ (node);\n if (value) {\n const valueSymbol = getSymbol(value, globals, block);\n /* c8 ignore else */\n if (valueSymbol) {\n createBlockSymbol(block, nde.name, valueSymbol, globals, isGlobal);\n\n return block.props[nde.name];\n }\n /* c8 ignore next */\n debug('Identifier: Missing value symbol for %s', nde.name);\n } else {\n createBlockSymbol(block, nde.name, createNode(), globals, isGlobal);\n\n return block.props[nde.name];\n }\n /* c8 ignore next 2 */\n break;\n }\n\n case 'MemberExpression': {\n const nde = /** @type {import('estree').MemberExpression} */ (node);\n symbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */ (nde.object), globals, block,\n );\n\n const propertySymbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */ (nde.property),\n globals,\n block,\n {\n simpleIdentifier: !nde.computed,\n },\n );\n const propertyValue = getSymbolValue(propertySymbol);\n if (symbol && propertyValue) {\n createBlockSymbol(symbol, propertyValue, getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (value), globals, block,\n ), globals, isGlobal);\n return symbol.props[propertyValue];\n }\n\n debug(\n 'MemberExpression: Missing symbol: %s',\n /** @type {import('estree').Identifier} */ (\n nde.property\n ).name,\n );\n break;\n }\n }\n\n return null;\n};\n\n/**\n * Creates variables from variable definitions\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opts\n * @returns {void}\n */\nconst initVariables = function (node, globals, opts) {\n switch (node.type) {\n case 'Program': {\n for (const childNode of node.body) {\n initVariables(\n /** @type {import('eslint').Rule.Node} */\n (childNode),\n globals,\n opts,\n );\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n initVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.expression),\n globals,\n opts,\n );\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\n // let and const\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (declaration.id),\n globals,\n null,\n globals,\n );\n if (opts.initWindow && node.kind === 'var' && globals.props.window) {\n // If var, also add to window\n globals.props.window.props[\n /** @type {import('estree').Identifier} */\n (declaration.id).name\n ] = symbol;\n }\n }\n\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n initVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n opts,\n );\n }\n\n break;\n }\n }\n};\n\n/* eslint-disable complexity -- Temporary */\n\n/**\n * Populates variable maps using AST\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @param {true} [isExport]\n * @returns {boolean}\n */\nconst mapVariables = function (node, globals, opt, isExport) {\n /* eslint-enable complexity -- Temporary */\n /* c8 ignore next */\n const opts = opt || {};\n /* c8 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(\n /** @type {import('eslint').Rule.Node} */\n (childNode),\n globals,\n opts,\n );\n }\n\n break;\n }\n\n case 'ExpressionStatement': {\n mapVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.expression),\n globals,\n opts,\n );\n break;\n }\n\n case 'AssignmentExpression': {\n createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.left),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.right),\n );\n break;\n }\n\n case 'VariableDeclaration': {\n for (const declaration of node.declarations) {\n const isGlobal = Boolean(opts.initWindow && node.kind === 'var' && globals.props.window);\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (declaration.id),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (declaration.init),\n globals,\n isGlobal,\n );\n if (symbol && isExport) {\n symbol.exported = true;\n }\n }\n\n break;\n }\n\n case 'FunctionDeclaration': {\n /* c8 ignore next 10 */\n if (/** @type {import('estree').Identifier} */ (node.id).type === 'Identifier') {\n createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.id),\n globals,\n node,\n globals,\n true,\n );\n }\n\n break;\n }\n\n case 'ExportDefaultDeclaration': {\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n );\n if (symbol) {\n symbol.exported = true;\n /* c8 ignore next 6 */\n } else {\n // if (!node.id) {\n globals.ANONYMOUS_DEFAULT = /** @type {import('eslint').Rule.Node} */ (\n node.declaration\n );\n }\n\n break;\n }\n\n case 'ExportNamedDeclaration': {\n if (node.declaration) {\n if (node.declaration.type === 'VariableDeclaration') {\n mapVariables(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n opts,\n true,\n );\n } else {\n const symbol = createSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n globals,\n /** @type {import('eslint').Rule.Node} */\n (node.declaration),\n );\n /* c8 ignore next 3 */\n if (symbol) {\n symbol.exported = true;\n }\n }\n }\n\n for (const specifier of node.specifiers) {\n mapVariables(\n /** @type {import('eslint').Rule.Node} */\n (specifier),\n globals,\n opts,\n );\n }\n\n break;\n }\n\n case 'ExportSpecifier': {\n const symbol = getSymbol(\n /** @type {import('eslint').Rule.Node} */\n (node.local),\n globals,\n globals,\n );\n /* c8 ignore next 3 */\n if (symbol) {\n symbol.exported = true;\n }\n\n break;\n }\n\n case 'ClassDeclaration': {\n createSymbol(\n /** @type {import('eslint').Rule.Node|null} */ (node.id),\n globals,\n /** @type {import('eslint').Rule.Node} */ (node.body),\n globals,\n );\n break;\n }\n\n default: {\n /* c8 ignore next */\n return false;\n }\n }\n\n return true;\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode|ValueObject|string|undefined|\n * import('eslint').Rule.Node} block\n * @param {(CreatedNode|ValueObject|string|\n * import('eslint').Rule.Node)[]} [cache]\n * @returns {boolean}\n */\nconst findNode = function (node, block, cache) {\n let blockCache = cache || [];\n if (!block || blockCache.includes(block)) {\n return false;\n }\n\n blockCache = blockCache.slice();\n blockCache.push(block);\n\n if (\n typeof block === 'object' &&\n 'type' in block &&\n (block.type === 'object' || block.type === 'MethodDefinition') &&\n block.value === node\n ) {\n return true;\n }\n\n if (typeof block !== 'object') {\n return false;\n }\n\n const props = ('props' in block && block.props) || ('body' in block && block.body);\n for (const propval of Object.values(props || {})) {\n if (Array.isArray(propval)) {\n /* c8 ignore next 5 */\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]);\n\n/**\n * @param {import('eslint').Rule.Node} nde\n * @returns {import('eslint').Rule.Node|false}\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 'TSTypeParameterInstantiation',\n 'TSTypeReference',\n 'ClassDeclaration',\n 'ClassBody',\n 'ClassDefinition',\n 'ClassExpression',\n 'Program',\n]);\n\n/**\n * @param {import('eslint').Rule.Node} nde\n * @returns {false|import('eslint').Rule.Node}\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\n/**\n *\n * @param {CreatedNode} block\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode[]} [cache] Currently unused\n * @returns {boolean}\n */\nconst findExportedNode = function (block, node, cache) {\n /* c8 ignore next 3 */\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 const pval = /** @type {CreatedNode} */ (propval);\n blockCache.push(pval);\n if (pval.exported && (node === pval.value || findNode(node, pval.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\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globals\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @returns {boolean}\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\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {CreatedNode} globalVars\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opts\n * @returns {boolean}\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\n/**\n *\n * @param {import('eslint').Rule.Node} ast\n * @param {import('eslint').Rule.Node} node\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @returns {CreatedNode}\n */\nconst parse = function (ast, node, opt) {\n /* c8 ignore next 6 */\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 props: {},\n };\n};\n\nconst accessibilityNodes = new Set([\n 'PropertyDefinition',\n 'MethodDefinition',\n]);\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @returns {boolean}\n */\nconst hasAccessibility = (node) => {\n return accessibilityNodes.has(node.type) && 'accessibility' in node &&\n node.accessibility !== 'public' && node.accessibility !== undefined;\n};\n\n/**\n *\n * @param {import('eslint').Rule.Node} node\n * @param {import('eslint').SourceCode} sourceCode\n * @param {import('./rules/requireJsdoc.js').RequireJsdocOpts} opt\n * @param {import('./iterateJsdoc.js').Settings} settings\n * @returns {boolean}\n */\nconst isUncommentedExport = function (node, sourceCode, opt, settings) {\n // console.log({node});\n // Optimize with ancestor check for esm\n if (opt.esm) {\n if (hasAccessibility(node) ||\n node.parent && hasAccessibility(node.parent)) {\n return false;\n }\n\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 ast = /** @type {unknown} */ (sourceCode.ast);\n\n const parseResult = parse(\n /** @type {import('eslint').Rule.Node} */\n (ast),\n node,\n opt,\n );\n\n return isNodeExported(\n node, /** @type {CreatedNode} */ (parseResult.globalVars), opt,\n );\n};\n\nexport default {\n isUncommentedExport,\n parse,\n};\n"],"mappings":"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"}
|
|
@@ -190,10 +190,11 @@ var _default = exports.default = (0, _iterateJsdoc.default)(({
|
|
|
190
190
|
return tagLineCount;
|
|
191
191
|
};
|
|
192
192
|
let [nextRootName, incremented, namer] = rootNamer([...unnamedRootBase], autoIncrementBase);
|
|
193
|
+
const thisOffset = functionParameterNames[0] === 'this' ? 1 : 0;
|
|
193
194
|
for (const [functionParameterIdx, functionParameterName] of functionParameterNames.entries()) {
|
|
194
195
|
let inc;
|
|
195
196
|
if (Array.isArray(functionParameterName)) {
|
|
196
|
-
const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] || jsdocParameterNames[functionParameterIdx];
|
|
197
|
+
const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx - thisOffset] || jsdocParameterNames[functionParameterIdx - thisOffset];
|
|
197
198
|
|
|
198
199
|
/** @type {string} */
|
|
199
200
|
let rootName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireParam.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","_default","exports","iterateJsdoc","jsdoc","utils","context","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","preferredTagName","getPreferredTagName","tagName","functionParameterNames","getFunctionParameterNames","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","checkTypesRegex","getRegexFromString","missingTags","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","inlineTags","optional","problems","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy","noTracking","module"],"sources":["../../src/rules/requireParam.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @typedef {[string, boolean, () => RootNamerReturn]} RootNamerReturn\n */\n\n/**\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {RootNamerReturn}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n /** @type {string} */\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = /** @type {string} */ (desiredRoots.shift());\n }\n\n return [\n name,\n incremented,\n () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n/* eslint-disable complexity -- Temporary */\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n /* eslint-enable complexity -- Temporary */\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = [\n 'root',\n ],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'param',\n }));\n if (!preferredTagName) {\n return;\n }\n\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n if (!functionParameterNames.length) {\n return;\n }\n\n const jsdocParameterNames =\n /**\n * @type {{\n * idx: import('../iterateJsdoc.js').Integer;\n * name: string;\n * type: string;\n * }[]}\n */ (utils.getJsdocTagsDeep(preferredTagName));\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n /**\n * @type {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * inc: boolean|undefined,\n * remove?: true,\n * type?: string|undefined\n * }[]}\n */\n const missingTags = [];\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n /**\n * @type {{\n * [key: string]: import('../iterateJsdoc.js').Integer\n * }}\n */\n const paramIndex = {};\n\n /**\n * @param {string} cur\n * @returns {boolean}\n */\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n /**\n *\n * @param {string|number|undefined} cur\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n /**\n *\n * @param {string} cur\n * @param {import('../iterateJsdoc.js').Integer} idx\n * @returns {void}\n */\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [\n idx,\n cur,\n ] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n /**\n *\n * @param {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * newAdd?: boolean\n * })[]} jsdocTags\n * @param {import('../iterateJsdoc.js').Integer} indexAtFunctionParams\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return (\n /**\n * @type {import('../jsdocUtils.js').FlattendRootInfo & {\n * annotationParamName?: string|undefined;\n * }}\n */ (remainingRoot[1]).names.includes(name)\n );\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n /** @type {string} */\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = /**\n * @type {import('../jsdocUtils.js').FlattendRootInfo & {\n * annotationParamName?: string | undefined;\n * }}\n */ (functionParameterName[1]);\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n /** @type {string} */\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = /** @type {string} */ (functionParameterName.name);\n type = '{...any}';\n } else {\n funcParamName = /** @type {string} */ (functionParameterName);\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n }) && funcParamName !== 'this') {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n /**\n *\n * @param {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * remove?: true,\n * inc?: boolean,\n * type?: string\n * }} cfg\n */\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n /**\n *\n * @param {import('../iterateJsdoc.js').Integer} tagIndex\n * @param {import('../iterateJsdoc.js').Integer} sourceIndex\n * @param {import('../iterateJsdoc.js').Integer} spliceCount\n * @returns {void}\n */\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n source: '',\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n\n /**\n * @type {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * newAdd?: true\n * })[]}\n */ (jsdoc.tags).splice(tagIndex, spliceCount, {\n description: '',\n inlineTags: [],\n name: functionParameterName,\n newAdd: true,\n optional: false,\n problems: [],\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n /**\n * @returns {void}\n */\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n\n // We cannot cache comment nodes as the contexts may recur with the\n // same comment node but a different JS node, and we may need the different\n // JS node to ensure we iterate its context\n noTracking: true,\n});\n"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA8C,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAE9C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAMG,SAAS,GAAGA,CAACC,YAAY,EAAEC,YAAY,KAAK;EAChD;EACA,IAAIC,IAAI;EACR,IAAIC,GAAG,GAAGF,YAAY;EACtB,MAAMG,WAAW,GAAGJ,YAAY,CAACK,MAAM,IAAI,CAAC;EAC5C,IAAID,WAAW,EAAE;IACf,MAAME,IAAI,GAAGN,YAAY,CAAC,CAAC,CAAC;IAC5B,MAAMO,MAAM,GAAGJ,GAAG,EAAE;IACpBD,IAAI,GAAI,GAAEI,IAAK,GAAEC,MAAO,EAAC;EAC3B,CAAC,MAAM;IACLL,IAAI,GAAG,qBAAuBF,YAAY,CAACQ,KAAK,CAAC,CAAE;EACrD;EAEA,OAAO,CACLN,IAAI,EACJE,WAAW,EACX,MAAM;IACJ,OAAOL,SAAS,CAACC,YAAY,EAAEG,GAAG,CAAC;EACrC,CAAC,CACF;AACH,CAAC;;AAED;AAAA,IAAAM,QAAA,GAAAC,OAAA,CAAAZ,OAAA,GACe,IAAAa,qBAAY,EAAC,CAAC;EAC3BC,KAAK;EACLC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ;EACA,IAAID,KAAK,CAACE,SAAS,CAAC,CAAC,EAAE;IACrB;EACF;;EAEA;EACA,IAAIF,KAAK,CAACG,MAAM,CAAC,MAAM,CAAC,EAAE;IACxB;EACF;EAEA,MAAM;IACJC,iBAAiB,GAAG,CAAC;IACrBC,iBAAiB,GAAG,KAAK;IACzBC,iBAAiB,GAAG,IAAI;IACxBC,sBAAsB,GAAG,IAAI;IAC7BC,iBAAiB,GAAG,gEAAgE;IACpFC,WAAW,GAAG,IAAI;IAClBC,eAAe,GAAG,IAAI;IACtBC,sBAAsB,GAAG,IAAI;IAC7BC,eAAe,GAAG,CAChB,MAAM,CACP;IACDC,0BAA0B,GAAG;EAC/B,CAAC,GAAGZ,OAAO,CAACa,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAMC,gBAAgB,GAAG,qBAAuBf,KAAK,CAACgB,mBAAmB,CAAC;IACxEC,OAAO,EAAE;EACX,CAAC,CAAE;EACH,IAAI,CAACF,gBAAgB,EAAE;IACrB;EACF;EAEA,MAAMG,sBAAsB,GAAGlB,KAAK,CAACmB,yBAAyB,CAACN,0BAA0B,CAAC;EAC1F,IAAI,CAACK,sBAAsB,CAAC1B,MAAM,EAAE;IAClC;EACF;EAEA,MAAM4B,mBAAmB;EACvB;AACJ;AACA;AACA;AACA;AACA;AACA;EAASpB,KAAK,CAACqB,gBAAgB,CAACN,gBAAgB,CAAE;EAEhD,MAAMO,0BAA0B,GAAGF,mBAAmB,CAACG,MAAM,CAAEC,GAAG,IAAK;IACrE,OAAO,CAACA,GAAG,CAACnC,IAAI,CAACoC,QAAQ,CAAC,GAAG,CAAC;EAChC,CAAC,CAAC,CAACC,GAAG,CAAC,CAACF,GAAG,EAAElC,GAAG,KAAK;IACnB,OAAO;MACL,GAAGkC,GAAG;MACNlC;IACF,CAAC;EACH,CAAC,CAAC;EAEF,MAAMqC,eAAe,GAAG3B,KAAK,CAAC4B,kBAAkB,CAACpB,iBAAiB,CAAC;;EAEnE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMqB,WAAW,GAAG,EAAE;EACtB,MAAMC,cAAc,GAAG9B,KAAK,CAAC+B,YAAY,CAACb,sBAAsB,CAAC,CAACc,KAAK;;EAEvE;AACF;AACA;AACA;AACA;EACE,MAAMC,UAAU,GAAG,CAAC,CAAC;;EAErB;AACF;AACA;AACA;EACE,MAAMC,aAAa,GAAIC,GAAG,IAAK;IAC7B,OAAOnC,KAAK,CAACoC,qBAAqB,CAACC,MAAM,CAACF,GAAG,CAAC,CAAC,IAAIF,UAAU;EAC/D,CAAC;;EAED;AACF;AACA;AACA;AACA;EACE,MAAMK,aAAa,GAAIH,GAAG,IAAK;IAC7B,OAAOF,UAAU,CAACjC,KAAK,CAACoC,qBAAqB,CAACC,MAAM,CAACF,GAAG,CAAC,CAAC,CAAC;EAC7D,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;EACE,MAAMI,aAAa,GAAGA,CAACJ,GAAG,EAAE7C,GAAG,KAAK;IAClC2C,UAAU,CAACjC,KAAK,CAACoC,qBAAqB,CAACC,MAAM,CAACF,GAAG,CAAC,CAAC,CAAC,GAAG7C,GAAG;EAC5D,CAAC;EAED,KAAK,MAAM,CACTA,GAAG,EACH6C,GAAG,CACJ,IAAIL,cAAc,CAACU,OAAO,CAAC,CAAC,EAAE;IAC7BD,aAAa,CAACJ,GAAG,EAAE7C,GAAG,CAAC;EACzB;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMmD,iBAAiB,GAAGA,CAACC,SAAS,EAAEC,qBAAqB,KAAK;IAC9D,MAAMC,cAAc,GAAG1B,sBAAsB,CAAC2B,KAAK,CAACF,qBAAqB,IAAI,CAAC,CAAC;IAC/E,MAAMG,UAAU,GAAGJ,SAAS,CAACK,SAAS,CAAC,CAAC;MACtC1D,IAAI;MACJ2D;IACF,CAAC,KAAK;MACJ,OAAO,CAACA,MAAM,IAAIJ,cAAc,CAACK,IAAI,CAAEC,aAAa,IAAK;QACvD,IAAIC,KAAK,CAACC,OAAO,CAACF,aAAa,CAAC,EAAE;UAChC;YACE;AACZ;AACA;AACA;AACA;YAAiBA,aAAa,CAAC,CAAC,CAAC,CAAElB,KAAK,CAACP,QAAQ,CAACpC,IAAI;UAAC;QAE/C;QAEA,IAAI,OAAO6D,aAAa,KAAK,QAAQ,EAAE;UACrC,OAAO7D,IAAI,KAAK6D,aAAa,CAAC7D,IAAI;QACpC;QAEA,OAAOA,IAAI,KAAK6D,aAAa;MAC/B,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAMG,IAAI,GAAGP,UAAU,GAAG,CAAC,CAAC,GAC1BJ,SAAS,CAACG,KAAK,CAAC,CAAC,EAAEC,UAAU,CAAC,GAC9BJ,SAAS,CAACnB,MAAM,CAAC,CAAC;MAChBC;IACF,CAAC,KAAK;MACJ,OAAOA,GAAG,KAAKT,gBAAgB;IACjC,CAAC,CAAC;IAEJ,IAAIuC,YAAY,GAAG,CAAC;IACpB,KAAK,MAAM;MACTC;IACF,CAAC,IAAIF,IAAI,EAAE;MACT,KAAK,MAAM;QACTG,MAAM,EAAE;UACNC;QACF;MACF,CAAC,IAAIF,MAAM,EAAE;QACX,IAAI,CAACE,GAAG,EAAE;UACRH,YAAY,EAAE;QAChB;MACF;IACF;IAEA,OAAOA,YAAY;EACrB,CAAC;EAED,IAAI,CACFI,YAAY,EACZnE,WAAW,EACXoE,KAAK,CACN,GAAGzE,SAAS,CAAC,CACZ,GAAG0B,eAAe,CACnB,EAAER,iBAAiB,CAAC;EAErB,KAAK,MAAM,CACTwD,oBAAoB,EACpBC,qBAAqB,CACtB,IAAI3C,sBAAsB,CAACsB,OAAO,CAAC,CAAC,EAAE;IACrC,IAAIsB,GAAG;IACP,IAAIX,KAAK,CAACC,OAAO,CAACS,qBAAqB,CAAC,EAAE;MACxC,MAAME,YAAY,GAAGzC,0BAA0B,CAACsC,oBAAoB,CAAC,IACnExC,mBAAmB,CAACwC,oBAAoB,CAAC;;MAE3C;MACA,IAAII,QAAQ;MACZ,IAAIH,qBAAqB,CAAC,CAAC,CAAC,EAAE;QAC5BG,QAAQ,GAAGH,qBAAqB,CAAC,CAAC,CAAC;MACrC,CAAC,MAAM,IAAIE,YAAY,IAAIA,YAAY,CAAC1E,IAAI,EAAE;QAC5C2E,QAAQ,GAAGD,YAAY,CAAC1E,IAAI;QAC5B,IAAI0E,YAAY,CAACE,IAAI,IAAIF,YAAY,CAACE,IAAI,CAACC,MAAM,CAACvC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;UACzE;QACF;MACF,CAAC,MAAM;QACLqC,QAAQ,GAAGN,YAAY;QACvBI,GAAG,GAAGvE,WAAW;QACjB,CACEmE,YAAY,EACZnE,WAAW,EACXoE,KAAK,CACN,GAAGA,KAAK,CAAC,CAAC;MACb;MAEA,MAAM;QACJQ,cAAc;QACdC,eAAe;QACfC,KAAK;QACLrC;MACF,CAAC;MAAG;AACV;AACA;AACA;AACA;MAAe6B,qBAAqB,CAAC,CAAC,CAAE;MAClC,MAAMS,gBAAgB,GAAG,EAAE;MAC3B,IAAI,CAAC3D,sBAAsB,IAAIwD,cAAc,EAAE;QAC7C;MACF;MAEA,IAAI,CAAC5D,sBAAsB,EAAE;QAC3B;MACF;MAEA,KAAK,MAAM,CACTjB,GAAG,EACHiF,SAAS,CACV,IAAIvC,KAAK,CAACQ,OAAO,CAAC,CAAC,EAAE;QACpB;QACA;QACA,IAAI,CAACpB,mBAAmB,CAACoD,IAAI,CAAC,CAAC;UAC7BnF;QACF,CAAC,KAAK;UACJ,OAAOA,IAAI,KAAK2E,QAAQ;QAC1B,CAAC,CAAC,IAAI,CAACnC,WAAW,CAAC2C,IAAI,CAAC,CAAC;UACvBX,qBAAqB,EAAEY;QACzB,CAAC,KAAK;UACJ,OAAOA,GAAG,KAAKT,QAAQ;QACzB,CAAC,CAAC,EAAE;UACF,MAAMU,aAAa,GAAGtD,mBAAmB,CAAC2B,SAAS,CAAC,CAAC;YACnD1D;UACF,CAAC,KAAK;YACJ,OAAO,CAACA,IAAI;UACd,CAAC,CAAC;UAEF,IAAIqF,aAAa,GAAG,CAAC,CAAC,EAAE;YACtB7C,WAAW,CAAC8C,IAAI,CAAC;cACff,oBAAoB,EAAEc,aAAa;cACnCb,qBAAqB,EAAEG,QAAQ;cAC/BF,GAAG;cACHc,MAAM,EAAE;YACV,CAAC,CAAC;UACJ,CAAC,MAAM;YACL/C,WAAW,CAAC8C,IAAI,CAAC;cACff,oBAAoB,EAAE1B,aAAa,CAAC8B,QAAQ,CAAC,GAC3C1B,aAAa,CAAC0B,QAAQ,CAAC,GACvB1B,aAAa,CAACiC,SAAS,CAAC;cAC1BV,qBAAqB,EAAEG,QAAQ;cAC/BF;YACF,CAAC,CAAC;UACJ;QACF;QAEA,IAAI,CAACxD,iBAAiB,EAAE;UACtB;QACF;QAEA,IAAI,CAACD,iBAAiB,IAAIgE,KAAK,CAAC/E,GAAG,CAAC,EAAE;UACpC;QACF;QAEA,MAAMuF,aAAa,GAAI,GAAEb,QAAS,IAAGO,SAAU,EAAC;QAEhD,MAAMO,eAAe,GAAG1D,mBAAmB,CAACoD,IAAI,CAAC,CAAC;UAChDnF,IAAI;UACJ4E,IAAI,EAAEc;QACR,CAAC,KAAK;UACJ,OAAO/E,KAAK,CAACgF,YAAY,CAAC3F,IAAI,CAAC,CAACwF,aAAa,CAAC,IAAIE,SAAS,CAACb,MAAM,CAACvC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAIoD,SAAS,KAAK,EAAE;QAChH,CAAC,CAAC;QAEF,IAAID,eAAe,KAAKG,SAAS,EAAE;UACjCX,gBAAgB,CAACK,IAAI,CAACG,eAAe,CAACzF,IAAI,CAAC;QAC7C;QAEA,IAAIiF,gBAAgB,CAACE,IAAI,CAAEnF,IAAI,IAAK;UAClC,OAAOwF,aAAa,CAACK,UAAU,CAAC7F,IAAI,CAAC;QACvC,CAAC,CAAC,EAAE;UACF;QACF;QAEA,IAAI+B,mBAAmB,IAAI,CAACA,mBAAmB,CAACoD,IAAI,CAAC,CAAC;UACpDnF;QACF,CAAC,KAAK;UACJ,OAAOW,KAAK,CAACgF,YAAY,CAAC3F,IAAI,CAAC,CAACwF,aAAa,CAAC;QAChD,CAAC,CAAC,EAAE;UACFhD,WAAW,CAAC8C,IAAI,CAAC;YACff,oBAAoB,EAAEtB,aAAa,CACjCuB,qBAAqB,CAAC,CAAC,CAAC,GAAGgB,aAAa,GAAGN,SAC7C,CAAC;YACDV,qBAAqB,EAAEgB,aAAa;YACpCf,GAAG;YACHG,IAAI,EAAEE,cAAc,IAAI,CAACC,eAAe,GAAG,UAAU,GAAGa;UAC1D,CAAC,CAAC;QACJ;MACF;MAEA;IACF;;IAEA;IACA,IAAIE,aAAa;IACjB,IAAIlB,IAAI;IACR,IAAI,OAAOJ,qBAAqB,KAAK,QAAQ,EAAE;MAC7C,IAAI,CAAClD,sBAAsB,IAAIkD,qBAAqB,CAACuB,WAAW,EAAE;QAChE;MACF;MAEAD,aAAa,GAAG,qBAAuBtB,qBAAqB,CAACxE,IAAK;MAClE4E,IAAI,GAAG,UAAU;IACnB,CAAC,MAAM;MACLkB,aAAa,GAAG,qBAAuBtB,qBAAsB;IAC/D;IAEA,IAAIzC,mBAAmB,IAAI,CAACA,mBAAmB,CAACoD,IAAI,CAAC,CAAC;MACpDnF;IACF,CAAC,KAAK;MACJ,OAAOA,IAAI,KAAK8F,aAAa;IAC/B,CAAC,CAAC,IAAIA,aAAa,KAAK,MAAM,EAAE;MAC9BtD,WAAW,CAAC8C,IAAI,CAAC;QACff,oBAAoB,EAAEtB,aAAa,CAAC6C,aAAa,CAAC;QAClDtB,qBAAqB,EAAEsB,aAAa;QACpCrB,GAAG;QACHG;MACF,CAAC,CAAC;IACJ;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAMoB,GAAG,GAAGA,CAAC;IACXzB,oBAAoB;IACpBC,qBAAqB;IACrBe,MAAM;IACNd,GAAG;IACHG;EACF,CAAC,KAAK;IACJ,IAAIH,GAAG,IAAI,CAACpD,eAAe,EAAE;MAC3B;IACF;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;IACI,MAAM4E,YAAY,GAAGA,CAACC,QAAQ,EAAEC,WAAW,EAAEC,WAAW,KAAK;MAC3D;MACA,MAAMjC,MAAM,GAAG;QACbkC,MAAM,EAAEF,WAAW,GAAG,CAAC;QACvBjC,MAAM,EAAE,EAAE;QACVC,MAAM,EAAE;UACNmC,SAAS,EAAE,GAAG;UACdC,WAAW,EAAE,EAAE;UACfnC,GAAG,EAAE,EAAE;UACPoC,OAAO,EAAE,EAAE;UACXxG,IAAI,EAAEwE,qBAAqB;UAC3Bb,MAAM,EAAE,IAAI;UACZ8C,aAAa,EAAE,GAAG;UAClBC,QAAQ,EAAE,EAAE;UACZC,OAAO,EAAE,GAAG;UACZC,QAAQ,EAAEhC,IAAI,GAAG,GAAG,GAAG,EAAE;UACzBiC,KAAK,EAAEnG,KAAK,CAACwD,MAAM,CAACiC,WAAW,CAAC,CAAChC,MAAM,CAAC0C,KAAK;UAC7C1E,GAAG,EAAG,IAAGT,gBAAiB,EAAC;UAC3BkD,IAAI,EAAEA,IAAI,IAAI;QAChB;MACF,CAAC;;MAED;AACN;AACA;AACA;AACA;MAAWlE,KAAK,CAACsD,IAAI,CAAE8C,MAAM,CAACZ,QAAQ,EAAEE,WAAW,EAAE;QAC7CG,WAAW,EAAE,EAAE;QACfQ,UAAU,EAAE,EAAE;QACd/G,IAAI,EAAEwE,qBAAqB;QAC3Bb,MAAM,EAAE,IAAI;QACZqD,QAAQ,EAAE,KAAK;QACfC,QAAQ,EAAE,EAAE;QACZ/C,MAAM,EAAE,CACNC,MAAM,CACP;QACDhC,GAAG,EAAET,gBAAgB;QACrBkD,IAAI,EAAEA,IAAI,IAAI;MAChB,CAAC,CAAC;MACF,MAAMsC,WAAW,GAAGxG,KAAK,CAACwD,MAAM,CAAC,CAAC,CAAC,CAACmC,MAAM;MAC1C3F,KAAK,CAACwD,MAAM,CAAC4C,MAAM,CAACX,WAAW,EAAEC,WAAW,EAAEjC,MAAM,CAAC;MACrD,KAAK,MAAM,CACTlE,GAAG,EACHkH,GAAG,CACJ,IAAIzG,KAAK,CAACwD,MAAM,CAACV,KAAK,CAAC2C,WAAW,CAAC,CAAChD,OAAO,CAAC,CAAC,EAAE;QAC9CgE,GAAG,CAACd,MAAM,GAAGa,WAAW,GAAGf,WAAW,GAAGlG,GAAG;MAC9C;IACF,CAAC;IAED,MAAMmH,MAAM,GAAG1G,KAAK,CAACwD,MAAM,CAACR,SAAS,CAAC,CAAC;MACrCS,MAAM,EAAE;QACNhC,GAAG;QACHiC;MACF;IACF,CAAC,KAAK;MACJ,OAAOjC,GAAG,IAAIiC,GAAG;IACnB,CAAC,CAAC;IACF,IAAImB,MAAM,EAAE;MACVU,YAAY,CAAC1B,oBAAoB,EAAE6C,MAAM,GAAG7C,oBAAoB,EAAE,CAAC,CAAC;IACtE,CAAC,MAAM;MACL,MAAM8C,WAAW,GAAGjE,iBAAiB,CAAC1C,KAAK,CAACsD,IAAI,EAAEO,oBAAoB,CAAC;MACvE0B,YAAY,CAACoB,WAAW,EAAED,MAAM,GAAGC,WAAW,EAAE,CAAC,CAAC;IACpD;EACF,CAAC;;EAED;AACF;AACA;EACE,MAAMC,KAAK,GAAGA,CAAA,KAAM;IAClB,KAAK,MAAMC,UAAU,IAAI/E,WAAW,EAAE;MACpCwD,GAAG,CAACuB,UAAU,CAAC;IACjB;EACF,CAAC;EAED,IAAI/E,WAAW,CAACrC,MAAM,IAAIO,KAAK,CAACwD,MAAM,CAAC/D,MAAM,KAAK,CAAC,EAAE;IACnDQ,KAAK,CAAC6G,aAAa,CAAC,CAAC;EACvB;EAEA,KAAK,MAAM;IACThD;EACF,CAAC,IAAIhC,WAAW,EAAE;IAChB7B,KAAK,CAAC8G,WAAW,CACd,kBAAiB/F,gBAAiB,KAAI8C,qBAAsB,gBAAe,EAC5E,IAAI,EACJpD,WAAW,GAAGkG,KAAK,GAAG,IACxB,CAAC;EACH;AACF,CAAC,EAAE;EACDI,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJrB,WAAW,EAAE,uDAAuD;MACpEsB,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVlH,iBAAiB,EAAE;UACjBnB,OAAO,EAAE,CAAC;UACVgF,IAAI,EAAE;QACR,CAAC;QACDsD,iBAAiB,EAAE;UACjBtI,OAAO,EAAE,IAAI;UACbgF,IAAI,EAAE;QACR,CAAC;QACD3D,iBAAiB,EAAE;UACjBrB,OAAO,EAAE,IAAI;UACbgF,IAAI,EAAE;QACR,CAAC;QACD1D,sBAAsB,EAAE;UACtBtB,OAAO,EAAE,IAAI;UACbgF,IAAI,EAAE;QACR,CAAC;QACDuD,YAAY,EAAE;UACZvI,OAAO,EAAE,KAAK;UACdgF,IAAI,EAAE;QACR,CAAC;QACD5D,iBAAiB,EAAE;UACjBpB,OAAO,EAAE,KAAK;UACdgF,IAAI,EAAE;QACR,CAAC;QACDwD,YAAY,EAAE;UACZxI,OAAO,EAAE,KAAK;UACdgF,IAAI,EAAE;QACR,CAAC;QACDzD,iBAAiB,EAAE;UACjByD,IAAI,EAAE;QACR,CAAC;QACDyD,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACE3D,IAAI,EAAE;YACR,CAAC,EACD;cACEoD,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVO,OAAO,EAAE;kBACP5D,IAAI,EAAE;gBACR,CAAC;gBACDhE,OAAO,EAAE;kBACPgE,IAAI,EAAE;gBACR;cACF,CAAC;cACDA,IAAI,EAAE;YACR,CAAC;UAEL,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDxD,WAAW,EAAE;UACXwD,IAAI,EAAE;QACR,CAAC;QACDtD,sBAAsB,EAAE;UACtBsD,IAAI,EAAE;QACR,CAAC;QACDvD,eAAe,EAAE;UACfuD,IAAI,EAAE;QACR,CAAC;QACD6D,UAAU,EAAE;UACVH,KAAK,EAAE;YACL1D,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDrD,eAAe,EAAE;UACf+G,KAAK,EAAE;YACL1D,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACDpD,0BAA0B,EAAE;UAC1BoD,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR,CAAC;EAED;EACA;EACA;EACA8D,UAAU,EAAE;AACd,CAAC,CAAC;AAAAC,MAAA,CAAAnI,OAAA,GAAAA,OAAA,CAAAZ,OAAA"}
|
|
1
|
+
{"version":3,"file":"requireParam.cjs","names":["_iterateJsdoc","_interopRequireDefault","require","obj","__esModule","default","rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","_default","exports","iterateJsdoc","jsdoc","utils","context","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","preferredTagName","getPreferredTagName","tagName","functionParameterNames","getFunctionParameterNames","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","checkTypesRegex","getRegexFromString","missingTags","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","thisOffset","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","inlineTags","optional","problems","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy","noTracking","module"],"sources":["../../src/rules/requireParam.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc.js';\n\n/**\n * @typedef {[string, boolean, () => RootNamerReturn]} RootNamerReturn\n */\n\n/**\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {RootNamerReturn}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n /** @type {string} */\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = /** @type {string} */ (desiredRoots.shift());\n }\n\n return [\n name,\n incremented,\n () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n/* eslint-disable complexity -- Temporary */\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n /* eslint-enable complexity -- Temporary */\n if (utils.avoidDocs()) {\n return;\n }\n\n // Param type is specified by type in @type\n if (utils.hasTag('type')) {\n return;\n }\n\n const {\n autoIncrementBase = 0,\n checkRestProperty = false,\n checkDestructured = true,\n checkDestructuredRoots = true,\n checkTypesPattern = '/^(?:[oO]bject|[aA]rray|PlainObject|Generic(?:Object|Array))$/',\n enableFixer = true,\n enableRootFixer = true,\n enableRestElementFixer = true,\n unnamedRootBase = [\n 'root',\n ],\n useDefaultObjectProperties = false,\n } = context.options[0] || {};\n\n const preferredTagName = /** @type {string} */ (utils.getPreferredTagName({\n tagName: 'param',\n }));\n if (!preferredTagName) {\n return;\n }\n\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n if (!functionParameterNames.length) {\n return;\n }\n\n const jsdocParameterNames =\n /**\n * @type {{\n * idx: import('../iterateJsdoc.js').Integer;\n * name: string;\n * type: string;\n * }[]}\n */ (utils.getJsdocTagsDeep(preferredTagName));\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n const checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n /**\n * @type {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * inc: boolean|undefined,\n * remove?: true,\n * type?: string|undefined\n * }[]}\n */\n const missingTags = [];\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n /**\n * @type {{\n * [key: string]: import('../iterateJsdoc.js').Integer\n * }}\n */\n const paramIndex = {};\n\n /**\n * @param {string} cur\n * @returns {boolean}\n */\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n /**\n *\n * @param {string|number|undefined} cur\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n\n /**\n *\n * @param {string} cur\n * @param {import('../iterateJsdoc.js').Integer} idx\n * @returns {void}\n */\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n\n for (const [\n idx,\n cur,\n ] of flattenedRoots.entries()) {\n setParamIndex(cur, idx);\n }\n\n /**\n *\n * @param {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * newAdd?: boolean\n * })[]} jsdocTags\n * @param {import('../iterateJsdoc.js').Integer} indexAtFunctionParams\n * @returns {import('../iterateJsdoc.js').Integer}\n */\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return (\n /**\n * @type {import('../jsdocUtils.js').FlattendRootInfo & {\n * annotationParamName?: string|undefined;\n * }}\n */ (remainingRoot[1]).names.includes(name)\n );\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n const thisOffset = functionParameterNames[0] === 'this' ? 1 : 0;\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx - thisOffset] ||\n jsdocParameterNames[functionParameterIdx - thisOffset];\n\n /** @type {string} */\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = /**\n * @type {import('../jsdocUtils.js').FlattendRootInfo & {\n * annotationParamName?: string | undefined;\n * }}\n */ (functionParameterName[1]);\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n /** @type {string} */\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = /** @type {string} */ (functionParameterName.name);\n type = '{...any}';\n } else {\n funcParamName = /** @type {string} */ (functionParameterName);\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n }) && funcParamName !== 'this') {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n /**\n *\n * @param {{\n * functionParameterIdx: import('../iterateJsdoc.js').Integer,\n * functionParameterName: string,\n * remove?: true,\n * inc?: boolean,\n * type?: string\n * }} cfg\n */\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n /**\n *\n * @param {import('../iterateJsdoc.js').Integer} tagIndex\n * @param {import('../iterateJsdoc.js').Integer} sourceIndex\n * @param {import('../iterateJsdoc.js').Integer} spliceCount\n * @returns {void}\n */\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n source: '',\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n\n /**\n * @type {(import('@es-joy/jsdoccomment').JsdocTagWithInline & {\n * newAdd?: true\n * })[]}\n */ (jsdoc.tags).splice(tagIndex, spliceCount, {\n description: '',\n inlineTags: [],\n name: functionParameterName,\n newAdd: true,\n optional: false,\n problems: [],\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n /**\n * @returns {void}\n */\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc/blob/main/docs/rules/require-param.md#repos-sticky-header',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n\n // We cannot cache comment nodes as the contexts may recur with the\n // same comment node but a different JS node, and we may need the different\n // JS node to ensure we iterate its context\n noTracking: true,\n});\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@babel/node": "^7.22.19",
|
|
24
24
|
"@babel/plugin-syntax-class-properties": "^7.12.13",
|
|
25
25
|
"@babel/plugin-transform-flow-strip-types": "^7.23.3",
|
|
26
|
-
"@babel/preset-env": "^7.23.
|
|
26
|
+
"@babel/preset-env": "^7.23.8",
|
|
27
27
|
"@es-joy/escodegen": "^3.5.1",
|
|
28
28
|
"@es-joy/jsdoc-eslint-parser": "^0.21.1",
|
|
29
29
|
"@hkdobrev/run-if-changed": "^0.3.1",
|
|
@@ -32,25 +32,25 @@
|
|
|
32
32
|
"@semantic-release/npm": "^11.0.2",
|
|
33
33
|
"@types/chai": "^4.3.11",
|
|
34
34
|
"@types/debug": "^4.1.12",
|
|
35
|
-
"@types/eslint": "^8.56.
|
|
35
|
+
"@types/eslint": "^8.56.2",
|
|
36
36
|
"@types/esquery": "^1.5.3",
|
|
37
37
|
"@types/estree": "^1.0.5",
|
|
38
38
|
"@types/json-schema": "^7.0.15",
|
|
39
39
|
"@types/lodash.defaultsdeep": "^4.6.9",
|
|
40
40
|
"@types/mocha": "^10.0.6",
|
|
41
|
-
"@types/node": "^20.
|
|
41
|
+
"@types/node": "^20.11.6",
|
|
42
42
|
"@types/semver": "^7.5.6",
|
|
43
43
|
"@types/spdx-expression-parse": "^3.0.5",
|
|
44
|
-
"@typescript-eslint/parser": "^6.
|
|
44
|
+
"@typescript-eslint/parser": "^6.19.1",
|
|
45
45
|
"babel-plugin-add-module-exports": "^1.0.4",
|
|
46
46
|
"babel-plugin-istanbul": "^6.1.1",
|
|
47
|
-
"c8": "^
|
|
47
|
+
"c8": "^9.1.0",
|
|
48
48
|
"camelcase": "^6.3.0",
|
|
49
49
|
"chai": "^4.3.10",
|
|
50
50
|
"cross-env": "^7.0.3",
|
|
51
51
|
"decamelize": "^5.0.1",
|
|
52
52
|
"eslint": "9.0.0-alpha.0",
|
|
53
|
-
"eslint-config-canonical": "~42.8.
|
|
53
|
+
"eslint-config-canonical": "~42.8.1",
|
|
54
54
|
"espree": "^9.6.1",
|
|
55
55
|
"gitdown": "^3.1.5",
|
|
56
56
|
"glob": "^10.3.10",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"open-editor": "^3.0.0",
|
|
65
65
|
"replace": "^1.2.2",
|
|
66
66
|
"rimraf": "^5.0.5",
|
|
67
|
-
"semantic-release": "^
|
|
67
|
+
"semantic-release": "^23.0.0",
|
|
68
68
|
"typescript": "5.3.3"
|
|
69
69
|
},
|
|
70
70
|
"engines": {
|
|
@@ -141,5 +141,5 @@
|
|
|
141
141
|
"test-cov": "cross-env TIMING=1 c8 --reporter text npm run test-no-cov",
|
|
142
142
|
"test-index": "npm run test-no-cov -- test/rules/index.js"
|
|
143
143
|
},
|
|
144
|
-
"version": "48.0.
|
|
144
|
+
"version": "48.0.3"
|
|
145
145
|
}
|
package/src/exportParser.js
CHANGED
|
@@ -214,14 +214,16 @@ export default iterateJsdoc(({
|
|
|
214
214
|
...unnamedRootBase,
|
|
215
215
|
], autoIncrementBase);
|
|
216
216
|
|
|
217
|
+
const thisOffset = functionParameterNames[0] === 'this' ? 1 : 0;
|
|
218
|
+
|
|
217
219
|
for (const [
|
|
218
220
|
functionParameterIdx,
|
|
219
221
|
functionParameterName,
|
|
220
222
|
] of functionParameterNames.entries()) {
|
|
221
223
|
let inc;
|
|
222
224
|
if (Array.isArray(functionParameterName)) {
|
|
223
|
-
const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||
|
|
224
|
-
jsdocParameterNames[functionParameterIdx];
|
|
225
|
+
const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx - thisOffset] ||
|
|
226
|
+
jsdocParameterNames[functionParameterIdx - thisOffset];
|
|
225
227
|
|
|
226
228
|
/** @type {string} */
|
|
227
229
|
let rootName;
|