eslint-plugin-jsdoc 39.3.18 → 39.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -16916,6 +16916,25 @@ function Item({
|
|
|
16916
16916
|
export function testFn1 ({ prop = { a: 1, b: 2 } }) {
|
|
16917
16917
|
}
|
|
16918
16918
|
// "jsdoc/require-param": ["error"|"warn", {"useDefaultObjectProperties":false}]
|
|
16919
|
+
|
|
16920
|
+
/**
|
|
16921
|
+
* @param this The this object
|
|
16922
|
+
* @param bar number to return
|
|
16923
|
+
* @returns number returned back to caller
|
|
16924
|
+
*/
|
|
16925
|
+
function foo(this: T, bar: number): number {
|
|
16926
|
+
console.log(this.name);
|
|
16927
|
+
return bar;
|
|
16928
|
+
}
|
|
16929
|
+
|
|
16930
|
+
/**
|
|
16931
|
+
* @param bar number to return
|
|
16932
|
+
* @returns number returned back to caller
|
|
16933
|
+
*/
|
|
16934
|
+
function foo(this: T, bar: number): number {
|
|
16935
|
+
console.log(this.name);
|
|
16936
|
+
return bar;
|
|
16937
|
+
}
|
|
16919
16938
|
````
|
|
16920
16939
|
|
|
16921
16940
|
|
|
@@ -18075,6 +18094,42 @@ function foo() {
|
|
|
18075
18094
|
return "baz";
|
|
18076
18095
|
}
|
|
18077
18096
|
};
|
|
18097
|
+
|
|
18098
|
+
/**
|
|
18099
|
+
* Return a V1 style query identifier.
|
|
18100
|
+
*
|
|
18101
|
+
* @param {string} id - The query identifier.
|
|
18102
|
+
* @returns {string} V1 style query identifier.
|
|
18103
|
+
*/
|
|
18104
|
+
function v1QueryId(id) {
|
|
18105
|
+
switch (id) {
|
|
18106
|
+
case 'addq':
|
|
18107
|
+
case 'aliq':
|
|
18108
|
+
case 'locq':
|
|
18109
|
+
return id.substring(3);
|
|
18110
|
+
case 'lost':
|
|
18111
|
+
return id.substring(4);
|
|
18112
|
+
default:
|
|
18113
|
+
return id;
|
|
18114
|
+
}
|
|
18115
|
+
}
|
|
18116
|
+
|
|
18117
|
+
/**
|
|
18118
|
+
* Parses the required header fields for the given SIP message.
|
|
18119
|
+
*
|
|
18120
|
+
* @param {string} logPrefix - The log prefix.
|
|
18121
|
+
* @param {string} sipMessage - The SIP message.
|
|
18122
|
+
* @param {string[]} headers - The header fields to be parsed.
|
|
18123
|
+
* @returns {object} Object with parsed header fields.
|
|
18124
|
+
*/
|
|
18125
|
+
function parseSipHeaders(logPrefix, sipMessage, headers) {
|
|
18126
|
+
try {
|
|
18127
|
+
return esappSip.parseHeaders(sipMessage, headers);
|
|
18128
|
+
} catch (err) {
|
|
18129
|
+
logger.error(logPrefix, 'Failed to parse');
|
|
18130
|
+
return {};
|
|
18131
|
+
}
|
|
18132
|
+
}
|
|
18078
18133
|
````
|
|
18079
18134
|
|
|
18080
18135
|
|
|
@@ -237,7 +237,7 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
237
237
|
name
|
|
238
238
|
}) => {
|
|
239
239
|
return name === funcParamName;
|
|
240
|
-
})) {
|
|
240
|
+
}) && funcParamName !== 'this') {
|
|
241
241
|
missingTags.push({
|
|
242
242
|
functionParameterIdx: getParamIndex(funcParamName),
|
|
243
243
|
functionParameterName: funcParamName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireParam.js","names":["rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","iterateJsdoc","jsdoc","utils","context","preferredTagName","getPreferredTagName","tagName","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","checkTypesRegex","getRegexFromString","missingTags","functionParameterNames","getFunctionParameterNames","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","default","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"sources":["../../src/rules/requireParam.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @template T\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {[string, boolean, () => T]}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = desiredRoots.shift();\n }\n\n return [\n name, incremented, () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n const preferredTagName = utils.getPreferredTagName({\n tagName: 'param',\n });\n if (!preferredTagName) {\n return;\n }\n\n const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n 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 checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const missingTags = [];\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n const paramIndex = {};\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\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 const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return remainingRoot[1].names.includes(name);\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = functionParameterName[1];\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = functionParameterName.name;\n type = '{...any}';\n } else {\n funcParamName = functionParameterName;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n jsdoc.tags.splice(tagIndex, spliceCount, {\n name: functionParameterName,\n newAdd: true,\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"requireParam.js","names":["rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","iterateJsdoc","jsdoc","utils","context","preferredTagName","getPreferredTagName","tagName","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","useDefaultObjectProperties","options","checkTypesRegex","getRegexFromString","missingTags","functionParameterNames","getFunctionParameterNames","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","entries","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","slice","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","tags","tagLineCount","source","tokens","end","nextRootName","namer","functionParameterIdx","functionParameterName","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","createTokens","tagIndex","sourceIndex","spliceCount","number","delimiter","description","lineEnd","postDelimiter","postName","postTag","postType","start","splice","firstNumber","src","offset","expectedIdx","fixer","missingTag","makeMultiline","reportJSDoc","contextDefaults","meta","docs","url","fixable","schema","additionalProperties","properties","default","checkConstructors","checkGetters","checkSetters","contexts","items","anyOf","comment","exemptedBy"],"sources":["../../src/rules/requireParam.js"],"sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\n/**\n * @template T\n * @param {string[]} desiredRoots\n * @param {number} currentIndex\n * @returns {[string, boolean, () => T]}\n */\nconst rootNamer = (desiredRoots, currentIndex) => {\n let name;\n let idx = currentIndex;\n const incremented = desiredRoots.length <= 1;\n if (incremented) {\n const base = desiredRoots[0];\n const suffix = idx++;\n name = `${base}${suffix}`;\n } else {\n name = desiredRoots.shift();\n }\n\n return [\n name, incremented, () => {\n return rootNamer(desiredRoots, idx);\n },\n ];\n};\n\n// eslint-disable-next-line complexity\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n const preferredTagName = utils.getPreferredTagName({\n tagName: 'param',\n });\n if (!preferredTagName) {\n return;\n }\n\n const jsdocParameterNames = utils.getJsdocTagsDeep(preferredTagName);\n\n const shallowJsdocParameterNames = jsdocParameterNames.filter((tag) => {\n return !tag.name.includes('.');\n }).map((tag, idx) => {\n return {\n ...tag,\n idx,\n };\n });\n\n 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 checkTypesRegex = utils.getRegexFromString(checkTypesPattern);\n\n const missingTags = [];\n const functionParameterNames = utils.getFunctionParameterNames(useDefaultObjectProperties);\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n const paramIndex = {};\n const hasParamIndex = (cur) => {\n return utils.dropPathSegmentQuotes(String(cur)) in paramIndex;\n };\n\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\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 const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({\n name,\n newAdd,\n }) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return remainingRoot[1].names.includes(name);\n }\n\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n const tags = foundIndex > -1 ?\n jsdocTags.slice(0, foundIndex) :\n jsdocTags.filter(({\n tag,\n }) => {\n return tag === preferredTagName;\n });\n\n let tagLineCount = 0;\n for (const {\n source,\n } of tags) {\n for (const {\n tokens: {\n end,\n },\n } of source) {\n if (!end) {\n tagLineCount++;\n }\n }\n }\n\n return tagLineCount;\n };\n\n let [\n nextRootName,\n incremented,\n namer,\n ] = rootNamer([\n ...unnamedRootBase,\n ], autoIncrementBase);\n\n for (const [\n functionParameterIdx,\n functionParameterName,\n ] of functionParameterNames.entries()) {\n let inc;\n if (Array.isArray(functionParameterName)) {\n const matchedJsdoc = shallowJsdocParameterNames[functionParameterIdx] ||\n jsdocParameterNames[functionParameterIdx];\n\n let rootName;\n if (functionParameterName[0]) {\n rootName = functionParameterName[0];\n } else if (matchedJsdoc && matchedJsdoc.name) {\n rootName = matchedJsdoc.name;\n if (matchedJsdoc.type && matchedJsdoc.type.search(checkTypesRegex) === -1) {\n continue;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [\n nextRootName,\n incremented,\n namer,\n ] = namer();\n }\n\n const {\n hasRestElement,\n hasPropertyRest,\n rests,\n names,\n } = functionParameterName[1];\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n continue;\n }\n\n if (!checkDestructuredRoots) {\n continue;\n }\n\n for (const [\n idx,\n paramName,\n ] of names.entries()) {\n // Add root if the root name is not in the docs (and is not already\n // in the tags to be fixed)\n if (!jsdocParameterNames.find(({\n name,\n }) => {\n return name === rootName;\n }) && !missingTags.find(({\n functionParameterName: fpn,\n }) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({\n name,\n }) => {\n return !name;\n });\n\n if (emptyParamIdx > -1) {\n missingTags.push({\n functionParameterIdx: emptyParamIdx,\n functionParameterName: rootName,\n inc,\n remove: true,\n });\n } else {\n missingTags.push({\n functionParameterIdx: hasParamIndex(rootName) ?\n getParamIndex(rootName) :\n getParamIndex(paramName),\n functionParameterName: rootName,\n inc,\n });\n }\n }\n\n if (!checkDestructured) {\n continue;\n }\n\n if (!checkRestProperty && rests[idx]) {\n continue;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({\n name,\n type: paramType,\n }) => {\n return utils.comparePaths(name)(fullParamName) && paramType.search(checkTypesRegex) === -1 && paramType !== '';\n });\n\n if (notCheckingName !== undefined) {\n notCheckingNames.push(notCheckingName.name);\n }\n\n if (notCheckingNames.find((name) => {\n return fullParamName.startsWith(name);\n })) {\n continue;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return utils.comparePaths(name)(fullParamName);\n })) {\n missingTags.push({\n functionParameterIdx: getParamIndex(\n functionParameterName[0] ? fullParamName : paramName,\n ),\n functionParameterName: fullParamName,\n inc,\n type: hasRestElement && !hasPropertyRest ? '{...any}' : undefined,\n });\n }\n }\n\n continue;\n }\n\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n continue;\n }\n\n funcParamName = functionParameterName.name;\n type = '{...any}';\n } else {\n funcParamName = functionParameterName;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({\n name,\n }) => {\n return name === funcParamName;\n }) && funcParamName !== 'this') {\n missingTags.push({\n functionParameterIdx: getParamIndex(funcParamName),\n functionParameterName: funcParamName,\n inc,\n type,\n });\n }\n }\n\n const fix = ({\n functionParameterIdx,\n functionParameterName,\n remove,\n inc,\n type,\n }) => {\n if (inc && !enableRootFixer) {\n return;\n }\n\n const createTokens = (tagIndex, sourceIndex, spliceCount) => {\n // console.log(sourceIndex, tagIndex, jsdoc.tags, jsdoc.source);\n const tokens = {\n number: sourceIndex + 1,\n tokens: {\n delimiter: '*',\n description: '',\n end: '',\n lineEnd: '',\n name: functionParameterName,\n newAdd: true,\n postDelimiter: ' ',\n postName: '',\n postTag: ' ',\n postType: type ? ' ' : '',\n start: jsdoc.source[sourceIndex].tokens.start,\n tag: `@${preferredTagName}`,\n type: type ?? '',\n },\n };\n jsdoc.tags.splice(tagIndex, spliceCount, {\n name: functionParameterName,\n newAdd: true,\n source: [\n tokens,\n ],\n tag: preferredTagName,\n type: type ?? '',\n });\n const firstNumber = jsdoc.source[0].number;\n jsdoc.source.splice(sourceIndex, spliceCount, tokens);\n for (const [\n idx,\n src,\n ] of jsdoc.source.slice(sourceIndex).entries()) {\n src.number = firstNumber + sourceIndex + idx;\n }\n };\n\n const offset = jsdoc.source.findIndex(({\n tokens: {\n tag,\n end,\n },\n }) => {\n return tag || end;\n });\n if (remove) {\n createTokens(functionParameterIdx, offset + functionParameterIdx, 1);\n } else {\n const expectedIdx = findExpectedIndex(jsdoc.tags, functionParameterIdx);\n createTokens(expectedIdx, offset + expectedIdx, 0);\n }\n };\n\n const fixer = () => {\n for (const missingTag of missingTags) {\n fix(missingTag);\n }\n };\n\n if (missingTags.length && jsdoc.source.length === 1) {\n utils.makeMultiline();\n }\n\n for (const {\n functionParameterName,\n } of missingTags) {\n utils.reportJSDoc(\n `Missing JSDoc @${preferredTagName} \"${functionParameterName}\" declaration.`,\n null,\n enableFixer ? fixer : null,\n );\n }\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Requires that all function parameters are documented.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-require-param',\n },\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n autoIncrementBase: {\n default: 0,\n type: 'integer',\n },\n checkConstructors: {\n default: true,\n type: 'boolean',\n },\n checkDestructured: {\n default: true,\n type: 'boolean',\n },\n checkDestructuredRoots: {\n default: true,\n type: 'boolean',\n },\n checkGetters: {\n default: false,\n type: 'boolean',\n },\n checkRestProperty: {\n default: false,\n type: 'boolean',\n },\n checkSetters: {\n default: false,\n type: 'boolean',\n },\n checkTypesPattern: {\n type: 'string',\n },\n contexts: {\n items: {\n anyOf: [\n {\n type: 'string',\n },\n {\n additionalProperties: false,\n properties: {\n comment: {\n type: 'string',\n },\n context: {\n type: 'string',\n },\n },\n type: 'object',\n },\n ],\n },\n type: 'array',\n },\n enableFixer: {\n type: 'boolean',\n },\n enableRestElementFixer: {\n type: 'boolean',\n },\n enableRootFixer: {\n type: 'boolean',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n unnamedRootBase: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n useDefaultObjectProperties: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"mappings":";;;;;;AAAA;AAA2C;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA,MAAMA,SAAS,GAAG,CAACC,YAAY,EAAEC,YAAY,KAAK;EAChD,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,GAAGF,YAAY,CAACQ,KAAK,EAAE;EAC7B;EAEA,OAAO,CACLN,IAAI,EAAEE,WAAW,EAAE,MAAM;IACvB,OAAOL,SAAS,CAACC,YAAY,EAAEG,GAAG,CAAC;EACrC,CAAC,CACF;AACH,CAAC;;AAED;AAAA,eACe,IAAAM,qBAAY,EAAC,CAAC;EAC3BC,KAAK;EACLC,KAAK;EACLC;AACF,CAAC,KAAK;EACJ,MAAMC,gBAAgB,GAAGF,KAAK,CAACG,mBAAmB,CAAC;IACjDC,OAAO,EAAE;EACX,CAAC,CAAC;EACF,IAAI,CAACF,gBAAgB,EAAE;IACrB;EACF;EAEA,MAAMG,mBAAmB,GAAGL,KAAK,CAACM,gBAAgB,CAACJ,gBAAgB,CAAC;EAEpE,MAAMK,0BAA0B,GAAGF,mBAAmB,CAACG,MAAM,CAAEC,GAAG,IAAK;IACrE,OAAO,CAACA,GAAG,CAAClB,IAAI,CAACmB,QAAQ,CAAC,GAAG,CAAC;EAChC,CAAC,CAAC,CAACC,GAAG,CAAC,CAACF,GAAG,EAAEjB,GAAG,KAAK;IACnB,OAAO;MACL,GAAGiB,GAAG;MACNjB;IACF,CAAC;EACH,CAAC,CAAC;EAEF,IAAIQ,KAAK,CAACY,SAAS,EAAE,EAAE;IACrB;EACF;;EAEA;EACA,IAAIZ,KAAK,CAACa,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,GAAGtB,OAAO,CAACuB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;EAE5B,MAAMC,eAAe,GAAGzB,KAAK,CAAC0B,kBAAkB,CAACR,iBAAiB,CAAC;EAEnE,MAAMS,WAAW,GAAG,EAAE;EACtB,MAAMC,sBAAsB,GAAG5B,KAAK,CAAC6B,yBAAyB,CAACN,0BAA0B,CAAC;EAC1F,MAAMO,cAAc,GAAG9B,KAAK,CAAC+B,YAAY,CAACH,sBAAsB,CAAC,CAACI,KAAK;EAEvE,MAAMC,UAAU,GAAG,CAAC,CAAC;EACrB,MAAMC,aAAa,GAAIC,GAAG,IAAK;IAC7B,OAAOnC,KAAK,CAACoC,qBAAqB,CAACC,MAAM,CAACF,GAAG,CAAC,CAAC,IAAIF,UAAU;EAC/D,CAAC;EAED,MAAMK,aAAa,GAAIH,GAAG,IAAK;IAC7B,OAAOF,UAAU,CAACjC,KAAK,CAACoC,qBAAqB,CAACC,MAAM,CAACF,GAAG,CAAC,CAAC,CAAC;EAC7D,CAAC;EAED,MAAMI,aAAa,GAAG,CAACJ,GAAG,EAAE3C,GAAG,KAAK;IAClCyC,UAAU,CAACjC,KAAK,CAACoC,qBAAqB,CAACC,MAAM,CAACF,GAAG,CAAC,CAAC,CAAC,GAAG3C,GAAG;EAC5D,CAAC;EAED,KAAK,MAAM,CACTA,GAAG,EACH2C,GAAG,CACJ,IAAIL,cAAc,CAACU,OAAO,EAAE,EAAE;IAC7BD,aAAa,CAACJ,GAAG,EAAE3C,GAAG,CAAC;EACzB;EAEA,MAAMiD,iBAAiB,GAAG,CAACC,SAAS,EAAEC,qBAAqB,KAAK;IAC9D,MAAMC,cAAc,GAAGhB,sBAAsB,CAACiB,KAAK,CAACF,qBAAqB,IAAI,CAAC,CAAC;IAC/E,MAAMG,UAAU,GAAGJ,SAAS,CAACK,SAAS,CAAC,CAAC;MACtCxD,IAAI;MACJyD;IACF,CAAC,KAAK;MACJ,OAAO,CAACA,MAAM,IAAIJ,cAAc,CAACK,IAAI,CAAEC,aAAa,IAAK;QACvD,IAAIC,KAAK,CAACC,OAAO,CAACF,aAAa,CAAC,EAAE;UAChC,OAAOA,aAAa,CAAC,CAAC,CAAC,CAAClB,KAAK,CAACtB,QAAQ,CAACnB,IAAI,CAAC;QAC9C;QAEA,IAAI,OAAO2D,aAAa,KAAK,QAAQ,EAAE;UACrC,OAAO3D,IAAI,KAAK2D,aAAa,CAAC3D,IAAI;QACpC;QAEA,OAAOA,IAAI,KAAK2D,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,CAAClC,MAAM,CAAC,CAAC;MAChBC;IACF,CAAC,KAAK;MACJ,OAAOA,GAAG,KAAKP,gBAAgB;IACjC,CAAC,CAAC;IAEJ,IAAIoD,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,EACZjE,WAAW,EACXkE,KAAK,CACN,GAAGvE,SAAS,CAAC,CACZ,GAAGkC,eAAe,CACnB,EAAER,iBAAiB,CAAC;EAErB,KAAK,MAAM,CACT8C,oBAAoB,EACpBC,qBAAqB,CACtB,IAAIjC,sBAAsB,CAACY,OAAO,EAAE,EAAE;IACrC,IAAIsB,GAAG;IACP,IAAIX,KAAK,CAACC,OAAO,CAACS,qBAAqB,CAAC,EAAE;MACxC,MAAME,YAAY,GAAGxD,0BAA0B,CAACqD,oBAAoB,CAAC,IACnEvD,mBAAmB,CAACuD,oBAAoB,CAAC;MAE3C,IAAII,QAAQ;MACZ,IAAIH,qBAAqB,CAAC,CAAC,CAAC,EAAE;QAC5BG,QAAQ,GAAGH,qBAAqB,CAAC,CAAC,CAAC;MACrC,CAAC,MAAM,IAAIE,YAAY,IAAIA,YAAY,CAACxE,IAAI,EAAE;QAC5CyE,QAAQ,GAAGD,YAAY,CAACxE,IAAI;QAC5B,IAAIwE,YAAY,CAACE,IAAI,IAAIF,YAAY,CAACE,IAAI,CAACC,MAAM,CAACzC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE;UACzE;QACF;MACF,CAAC,MAAM;QACLuC,QAAQ,GAAGN,YAAY;QACvBI,GAAG,GAAGrE,WAAW;QACjB,CACEiE,YAAY,EACZjE,WAAW,EACXkE,KAAK,CACN,GAAGA,KAAK,EAAE;MACb;MAEA,MAAM;QACJQ,cAAc;QACdC,eAAe;QACfC,KAAK;QACLrC;MACF,CAAC,GAAG6B,qBAAqB,CAAC,CAAC,CAAC;MAC5B,MAAMS,gBAAgB,GAAG,EAAE;MAC3B,IAAI,CAACjD,sBAAsB,IAAI8C,cAAc,EAAE;QAC7C;MACF;MAEA,IAAI,CAAClD,sBAAsB,EAAE;QAC3B;MACF;MAEA,KAAK,MAAM,CACTzB,GAAG,EACH+E,SAAS,CACV,IAAIvC,KAAK,CAACQ,OAAO,EAAE,EAAE;QACpB;QACA;QACA,IAAI,CAACnC,mBAAmB,CAACmE,IAAI,CAAC,CAAC;UAC7BjF;QACF,CAAC,KAAK;UACJ,OAAOA,IAAI,KAAKyE,QAAQ;QAC1B,CAAC,CAAC,IAAI,CAACrC,WAAW,CAAC6C,IAAI,CAAC,CAAC;UACvBX,qBAAqB,EAAEY;QACzB,CAAC,KAAK;UACJ,OAAOA,GAAG,KAAKT,QAAQ;QACzB,CAAC,CAAC,EAAE;UACF,MAAMU,aAAa,GAAGrE,mBAAmB,CAAC0C,SAAS,CAAC,CAAC;YACnDxD;UACF,CAAC,KAAK;YACJ,OAAO,CAACA,IAAI;UACd,CAAC,CAAC;UAEF,IAAImF,aAAa,GAAG,CAAC,CAAC,EAAE;YACtB/C,WAAW,CAACgD,IAAI,CAAC;cACff,oBAAoB,EAAEc,aAAa;cACnCb,qBAAqB,EAAEG,QAAQ;cAC/BF,GAAG;cACHc,MAAM,EAAE;YACV,CAAC,CAAC;UACJ,CAAC,MAAM;YACLjD,WAAW,CAACgD,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,CAAC9C,iBAAiB,EAAE;UACtB;QACF;QAEA,IAAI,CAACD,iBAAiB,IAAIsD,KAAK,CAAC7E,GAAG,CAAC,EAAE;UACpC;QACF;QAEA,MAAMqF,aAAa,GAAI,GAAEb,QAAS,IAAGO,SAAU,EAAC;QAEhD,MAAMO,eAAe,GAAGzE,mBAAmB,CAACmE,IAAI,CAAC,CAAC;UAChDjF,IAAI;UACJ0E,IAAI,EAAEc;QACR,CAAC,KAAK;UACJ,OAAO/E,KAAK,CAACgF,YAAY,CAACzF,IAAI,CAAC,CAACsF,aAAa,CAAC,IAAIE,SAAS,CAACb,MAAM,CAACzC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAIsD,SAAS,KAAK,EAAE;QAChH,CAAC,CAAC;QAEF,IAAID,eAAe,KAAKG,SAAS,EAAE;UACjCX,gBAAgB,CAACK,IAAI,CAACG,eAAe,CAACvF,IAAI,CAAC;QAC7C;QAEA,IAAI+E,gBAAgB,CAACE,IAAI,CAAEjF,IAAI,IAAK;UAClC,OAAOsF,aAAa,CAACK,UAAU,CAAC3F,IAAI,CAAC;QACvC,CAAC,CAAC,EAAE;UACF;QACF;QAEA,IAAIc,mBAAmB,IAAI,CAACA,mBAAmB,CAACmE,IAAI,CAAC,CAAC;UACpDjF;QACF,CAAC,KAAK;UACJ,OAAOS,KAAK,CAACgF,YAAY,CAACzF,IAAI,CAAC,CAACsF,aAAa,CAAC;QAChD,CAAC,CAAC,EAAE;UACFlD,WAAW,CAACgD,IAAI,CAAC;YACff,oBAAoB,EAAEtB,aAAa,CACjCuB,qBAAqB,CAAC,CAAC,CAAC,GAAGgB,aAAa,GAAGN,SAAS,CACrD;YACDV,qBAAqB,EAAEgB,aAAa;YACpCf,GAAG;YACHG,IAAI,EAAEE,cAAc,IAAI,CAACC,eAAe,GAAG,UAAU,GAAGa;UAC1D,CAAC,CAAC;QACJ;MACF;MAEA;IACF;IAEA,IAAIE,aAAa;IACjB,IAAIlB,IAAI;IACR,IAAI,OAAOJ,qBAAqB,KAAK,QAAQ,EAAE;MAC7C,IAAI,CAACxC,sBAAsB,IAAIwC,qBAAqB,CAACuB,WAAW,EAAE;QAChE;MACF;MAEAD,aAAa,GAAGtB,qBAAqB,CAACtE,IAAI;MAC1C0E,IAAI,GAAG,UAAU;IACnB,CAAC,MAAM;MACLkB,aAAa,GAAGtB,qBAAqB;IACvC;IAEA,IAAIxD,mBAAmB,IAAI,CAACA,mBAAmB,CAACmE,IAAI,CAAC,CAAC;MACpDjF;IACF,CAAC,KAAK;MACJ,OAAOA,IAAI,KAAK4F,aAAa;IAC/B,CAAC,CAAC,IAAIA,aAAa,KAAK,MAAM,EAAE;MAC9BxD,WAAW,CAACgD,IAAI,CAAC;QACff,oBAAoB,EAAEtB,aAAa,CAAC6C,aAAa,CAAC;QAClDtB,qBAAqB,EAAEsB,aAAa;QACpCrB,GAAG;QACHG;MACF,CAAC,CAAC;IACJ;EACF;EAEA,MAAMoB,GAAG,GAAG,CAAC;IACXzB,oBAAoB;IACpBC,qBAAqB;IACrBe,MAAM;IACNd,GAAG;IACHG;EACF,CAAC,KAAK;IACJ,IAAIH,GAAG,IAAI,CAAC1C,eAAe,EAAE;MAC3B;IACF;IAEA,MAAMkE,YAAY,GAAG,CAACC,QAAQ,EAAEC,WAAW,EAAEC,WAAW,KAAK;MAC3D;MACA,MAAMjC,MAAM,GAAG;QACbkC,MAAM,EAAEF,WAAW,GAAG,CAAC;QACvBhC,MAAM,EAAE;UACNmC,SAAS,EAAE,GAAG;UACdC,WAAW,EAAE,EAAE;UACfnC,GAAG,EAAE,EAAE;UACPoC,OAAO,EAAE,EAAE;UACXtG,IAAI,EAAEsE,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;UAC7CzF,GAAG,EAAG,IAAGP,gBAAiB,EAAC;UAC3B+D,IAAI,EAAEA,IAAI,IAAI;QAChB;MACF,CAAC;MACDlE,KAAK,CAACsD,IAAI,CAAC8C,MAAM,CAACZ,QAAQ,EAAEE,WAAW,EAAE;QACvClG,IAAI,EAAEsE,qBAAqB;QAC3Bb,MAAM,EAAE,IAAI;QACZO,MAAM,EAAE,CACNC,MAAM,CACP;QACD/C,GAAG,EAAEP,gBAAgB;QACrB+D,IAAI,EAAEA,IAAI,IAAI;MAChB,CAAC,CAAC;MACF,MAAMmC,WAAW,GAAGrG,KAAK,CAACwD,MAAM,CAAC,CAAC,CAAC,CAACmC,MAAM;MAC1C3F,KAAK,CAACwD,MAAM,CAAC4C,MAAM,CAACX,WAAW,EAAEC,WAAW,EAAEjC,MAAM,CAAC;MACrD,KAAK,MAAM,CACThE,GAAG,EACH6G,GAAG,CACJ,IAAItG,KAAK,CAACwD,MAAM,CAACV,KAAK,CAAC2C,WAAW,CAAC,CAAChD,OAAO,EAAE,EAAE;QAC9C6D,GAAG,CAACX,MAAM,GAAGU,WAAW,GAAGZ,WAAW,GAAGhG,GAAG;MAC9C;IACF,CAAC;IAED,MAAM8G,MAAM,GAAGvG,KAAK,CAACwD,MAAM,CAACR,SAAS,CAAC,CAAC;MACrCS,MAAM,EAAE;QACN/C,GAAG;QACHgD;MACF;IACF,CAAC,KAAK;MACJ,OAAOhD,GAAG,IAAIgD,GAAG;IACnB,CAAC,CAAC;IACF,IAAImB,MAAM,EAAE;MACVU,YAAY,CAAC1B,oBAAoB,EAAE0C,MAAM,GAAG1C,oBAAoB,EAAE,CAAC,CAAC;IACtE,CAAC,MAAM;MACL,MAAM2C,WAAW,GAAG9D,iBAAiB,CAAC1C,KAAK,CAACsD,IAAI,EAAEO,oBAAoB,CAAC;MACvE0B,YAAY,CAACiB,WAAW,EAAED,MAAM,GAAGC,WAAW,EAAE,CAAC,CAAC;IACpD;EACF,CAAC;EAED,MAAMC,KAAK,GAAG,MAAM;IAClB,KAAK,MAAMC,UAAU,IAAI9E,WAAW,EAAE;MACpC0D,GAAG,CAACoB,UAAU,CAAC;IACjB;EACF,CAAC;EAED,IAAI9E,WAAW,CAACjC,MAAM,IAAIK,KAAK,CAACwD,MAAM,CAAC7D,MAAM,KAAK,CAAC,EAAE;IACnDM,KAAK,CAAC0G,aAAa,EAAE;EACvB;EAEA,KAAK,MAAM;IACT7C;EACF,CAAC,IAAIlC,WAAW,EAAE;IAChB3B,KAAK,CAAC2G,WAAW,CACd,kBAAiBzG,gBAAiB,KAAI2D,qBAAsB,gBAAe,EAC5E,IAAI,EACJ1C,WAAW,GAAGqF,KAAK,GAAG,IAAI,CAC3B;EACH;AACF,CAAC,EAAE;EACDI,eAAe,EAAE,IAAI;EACrBC,IAAI,EAAE;IACJC,IAAI,EAAE;MACJlB,WAAW,EAAE,uDAAuD;MACpEmB,GAAG,EAAE;IACP,CAAC;IACDC,OAAO,EAAE,MAAM;IACfC,MAAM,EAAE,CACN;MACEC,oBAAoB,EAAE,KAAK;MAC3BC,UAAU,EAAE;QACVrG,iBAAiB,EAAE;UACjBsG,OAAO,EAAE,CAAC;UACVnD,IAAI,EAAE;QACR,CAAC;QACDoD,iBAAiB,EAAE;UACjBD,OAAO,EAAE,IAAI;UACbnD,IAAI,EAAE;QACR,CAAC;QACDjD,iBAAiB,EAAE;UACjBoG,OAAO,EAAE,IAAI;UACbnD,IAAI,EAAE;QACR,CAAC;QACDhD,sBAAsB,EAAE;UACtBmG,OAAO,EAAE,IAAI;UACbnD,IAAI,EAAE;QACR,CAAC;QACDqD,YAAY,EAAE;UACZF,OAAO,EAAE,KAAK;UACdnD,IAAI,EAAE;QACR,CAAC;QACDlD,iBAAiB,EAAE;UACjBqG,OAAO,EAAE,KAAK;UACdnD,IAAI,EAAE;QACR,CAAC;QACDsD,YAAY,EAAE;UACZH,OAAO,EAAE,KAAK;UACdnD,IAAI,EAAE;QACR,CAAC;QACD/C,iBAAiB,EAAE;UACjB+C,IAAI,EAAE;QACR,CAAC;QACDuD,QAAQ,EAAE;UACRC,KAAK,EAAE;YACLC,KAAK,EAAE,CACL;cACEzD,IAAI,EAAE;YACR,CAAC,EACD;cACEiD,oBAAoB,EAAE,KAAK;cAC3BC,UAAU,EAAE;gBACVQ,OAAO,EAAE;kBACP1D,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;QACD9C,WAAW,EAAE;UACX8C,IAAI,EAAE;QACR,CAAC;QACD5C,sBAAsB,EAAE;UACtB4C,IAAI,EAAE;QACR,CAAC;QACD7C,eAAe,EAAE;UACf6C,IAAI,EAAE;QACR,CAAC;QACD2D,UAAU,EAAE;UACVH,KAAK,EAAE;YACLxD,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACD3C,eAAe,EAAE;UACfmG,KAAK,EAAE;YACLxD,IAAI,EAAE;UACR,CAAC;UACDA,IAAI,EAAE;QACR,CAAC;QACD1C,0BAA0B,EAAE;UAC1B0C,IAAI,EAAE;QACR;MACF,CAAC;MACDA,IAAI,EAAE;IACR,CAAC,CACF;IACDA,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAA;AAAA"}
|
|
@@ -158,13 +158,13 @@ const allBrancheshaveReturnValues = (node, promFilter) => {
|
|
|
158
158
|
}
|
|
159
159
|
case 'TryStatement':
|
|
160
160
|
{
|
|
161
|
-
return allBrancheshaveReturnValues(node.block, promFilter) && allBrancheshaveReturnValues(node.handler && node.handler.body, promFilter) && allBrancheshaveReturnValues(node.finalizer, promFilter);
|
|
161
|
+
return allBrancheshaveReturnValues(node.block, promFilter) && (!node.handler || allBrancheshaveReturnValues(node.handler && node.handler.body, promFilter)) && (!node.finalizer || allBrancheshaveReturnValues(node.finalizer, promFilter));
|
|
162
162
|
}
|
|
163
163
|
case 'SwitchStatement':
|
|
164
164
|
{
|
|
165
165
|
return node.cases.every(someCase => {
|
|
166
166
|
const nde = someCase.consequent.slice(-1)[0];
|
|
167
|
-
return allBrancheshaveReturnValues(nde, promFilter);
|
|
167
|
+
return !nde || allBrancheshaveReturnValues(nde, promFilter);
|
|
168
168
|
});
|
|
169
169
|
}
|
|
170
170
|
case 'ThrowStatement':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasReturnValue.js","names":["isNewPromiseExpression","node","type","callee","name","isVoidPromise","typeParameters","params","undefinedKeywords","Set","hasReturnValue","throwOnNullReturn","promFilter","returnType","typeAnnotation","has","value","expression","body","some","bodyNode","consequent","alternate","block","handler","finalizer","cases","someCase","nde","argument","Error","allBrancheshaveReturnValues","lastBodyNode","slice","every","hasNonEmptyResolverCall","resolverName","arguments","length","undefined","test","elements","element","right","left","expressions","subExpression","properties","property","decorators","decorator","computed","key","declarations","id","init","quasi","object","source","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","allBranches","hasReturnMethod","promiseFilter","hasReturn","error","message","prom"],"sources":["../../src/utils/hasReturnValue.js"],"sourcesContent":["/* eslint-disable jsdoc/no-undefined-types */\n/**\n * Checks if a node is a promise but has no resolve value or an empty value.\n * An `undefined` resolve does not count.\n *\n * @param {object} node\n * @returns {boolean}\n */\nconst isNewPromiseExpression = (node) => {\n return node && node.type === 'NewExpression' && node.callee.type === 'Identifier' &&\n node.callee.name === 'Promise';\n};\n\nconst isVoidPromise = (node) => {\n return node?.typeParameters?.params?.[0]?.type === 'TSVoidKeyword';\n};\n\nconst undefinedKeywords = new Set([\n 'TSVoidKeyword', 'TSUndefinedKeyword', 'TSNeverKeyword',\n]);\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n *\n * @param {object} node\n * @param {boolean} throwOnNullReturn\n * @param {PromiseFilter} promFilter\n * @returns {boolean|Node}\n */\n// eslint-disable-next-line complexity\nconst hasReturnValue = (node, throwOnNullReturn, promFilter) => {\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'TSDeclareFunction':\n case 'TSFunctionType':\n case 'TSMethodSignature': {\n const type = node?.returnType?.typeAnnotation?.type;\n return type && !undefinedKeywords.has(type);\n }\n\n case 'MethodDefinition':\n return hasReturnValue(node.value, throwOnNullReturn, promFilter);\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return node.expression && (!isNewPromiseExpression(node.body) || !isVoidPromise(node.body)) ||\n hasReturnValue(node.body, throwOnNullReturn, promFilter);\n }\n\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasReturnValue(bodyNode, throwOnNullReturn, promFilter);\n });\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasReturnValue(node.body, throwOnNullReturn, promFilter);\n }\n\n case 'IfStatement': {\n return hasReturnValue(node.consequent, throwOnNullReturn, promFilter) ||\n hasReturnValue(node.alternate, throwOnNullReturn, promFilter);\n }\n\n case 'TryStatement': {\n return hasReturnValue(node.block, throwOnNullReturn, promFilter) ||\n hasReturnValue(node.handler && node.handler.body, throwOnNullReturn, promFilter) ||\n hasReturnValue(node.finalizer, throwOnNullReturn, promFilter);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasReturnValue(nde, throwOnNullReturn, promFilter);\n });\n },\n );\n }\n\n case 'ReturnStatement': {\n // void return does not count.\n if (node.argument === null) {\n if (throwOnNullReturn) {\n throw new Error('Null return');\n }\n\n return false;\n }\n\n if (promFilter && isNewPromiseExpression(node.argument)) {\n // Let caller decide how to filter, but this is, at the least,\n // a return of sorts and truthy\n return promFilter(node.argument);\n }\n\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n *\n * @param {object} node\n * @param {PromiseFilter} promFilter\n * @returns {boolean|Node}\n */\n// eslint-disable-next-line complexity\nconst allBrancheshaveReturnValues = (node, promFilter) => {\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'TSDeclareFunction':\n case 'TSFunctionType':\n case 'TSMethodSignature': {\n const type = node?.returnType?.typeAnnotation?.type;\n return type && !undefinedKeywords.has(type);\n }\n\n // case 'MethodDefinition':\n // return allBrancheshaveReturnValues(node.value, promFilter);\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return node.expression && (!isNewPromiseExpression(node.body) || !isVoidPromise(node.body)) ||\n allBrancheshaveReturnValues(node.body, promFilter);\n }\n\n case 'BlockStatement': {\n const lastBodyNode = node.body.slice(-1)[0];\n return allBrancheshaveReturnValues(lastBodyNode, promFilter);\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return allBrancheshaveReturnValues(node.body, promFilter);\n }\n\n case 'IfStatement': {\n return allBrancheshaveReturnValues(node.consequent, promFilter) && allBrancheshaveReturnValues(node.alternate, promFilter);\n }\n\n case 'TryStatement': {\n return allBrancheshaveReturnValues(node.block, promFilter) &&\n allBrancheshaveReturnValues(node.handler && node.handler.body, promFilter) &&\n allBrancheshaveReturnValues(node.finalizer, promFilter);\n }\n\n case 'SwitchStatement': {\n return node.cases.every(\n (someCase) => {\n const nde = someCase.consequent.slice(-1)[0];\n return allBrancheshaveReturnValues(nde, promFilter);\n },\n );\n }\n\n case 'ThrowStatement': {\n return true;\n }\n\n case 'ReturnStatement': {\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n if (promFilter && isNewPromiseExpression(node.argument)) {\n // Let caller decide how to filter, but this is, at the least,\n // a return of sorts and truthy\n return promFilter(node.argument);\n }\n\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * @callback PromiseFilter\n * @param {object} node\n * @returns {boolean}\n */\n\n/**\n * Avoids further checking child nodes if a nested function shadows the\n * resolver, but otherwise, if name is used (by call or passed in as an\n * argument to another function), will be considered as non-empty.\n *\n * This could check for redeclaration of the resolver, but as such is\n * unlikely, we avoid the performance cost of checking everywhere for\n * (re)declarations or assignments.\n *\n * @param {AST} node\n * @param {string} resolverName\n * @returns {boolean}\n */\n// eslint-disable-next-line complexity\nconst hasNonEmptyResolverCall = (node, resolverName) => {\n if (!node) {\n return false;\n }\n\n // Arrow function without block\n switch (node.type) {\n // istanbul ignore next -- In Babel?\n case 'OptionalCallExpression':\n case 'CallExpression':\n return node.callee.name === resolverName && (\n\n // Implicit or explicit undefined\n node.arguments.length > 1 || node.arguments[0] !== undefined\n ) ||\n node.arguments.some((nde) => {\n // Being passed in to another function (which might invoke it)\n return nde.type === 'Identifier' && nde.name === resolverName ||\n\n // Handle nested items\n hasNonEmptyResolverCall(nde, resolverName);\n });\n case 'ChainExpression':\n case 'Decorator':\n case 'ExpressionStatement':\n return hasNonEmptyResolverCall(node.expression, resolverName);\n case 'ClassBody':\n case 'BlockStatement':\n return node.body.some((bodyNode) => {\n return hasNonEmptyResolverCall(bodyNode, resolverName);\n });\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n // Shadowing\n if (node.params[0]?.name === resolverName) {\n return false;\n }\n\n return hasNonEmptyResolverCall(node.body, resolverName);\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasNonEmptyResolverCall(node.body, resolverName);\n }\n\n case 'ConditionalExpression':\n case 'IfStatement': {\n return hasNonEmptyResolverCall(node.test, resolverName) ||\n hasNonEmptyResolverCall(node.consequent, resolverName) ||\n hasNonEmptyResolverCall(node.alternate, resolverName);\n }\n\n case 'TryStatement': {\n return hasNonEmptyResolverCall(node.block, resolverName) ||\n hasNonEmptyResolverCall(node.handler && node.handler.body, resolverName) ||\n hasNonEmptyResolverCall(node.finalizer, resolverName);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasNonEmptyResolverCall(nde, resolverName);\n });\n },\n );\n }\n\n case 'ArrayPattern':\n case 'ArrayExpression':\n return node.elements.some((element) => {\n return hasNonEmptyResolverCall(element, resolverName);\n });\n\n case 'AssignmentPattern':\n return hasNonEmptyResolverCall(node.right, resolverName);\n\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'LogicalExpression': {\n return hasNonEmptyResolverCall(node.left, resolverName) ||\n hasNonEmptyResolverCall(node.right, resolverName);\n }\n\n // Comma\n case 'SequenceExpression':\n case 'TemplateLiteral':\n return node.expressions.some((subExpression) => {\n return hasNonEmptyResolverCall(subExpression, resolverName);\n });\n\n case 'ObjectPattern':\n case 'ObjectExpression':\n return node.properties.some((property) => {\n return hasNonEmptyResolverCall(property, resolverName);\n });\n // istanbul ignore next -- In Babel?\n case 'ClassMethod':\n case 'MethodDefinition':\n return node.decorators && node.decorators.some((decorator) => {\n return hasNonEmptyResolverCall(decorator, resolverName);\n }) ||\n node.computed && hasNonEmptyResolverCall(node.key, resolverName) ||\n hasNonEmptyResolverCall(node.value, resolverName);\n\n // istanbul ignore next -- In Babel?\n case 'ObjectProperty':\n /* eslint-disable no-fallthrough */\n // istanbul ignore next -- In Babel?\n case 'PropertyDefinition':\n // istanbul ignore next -- In Babel?\n case 'ClassProperty':\n /* eslint-enable no-fallthrough */\n case 'Property':\n return node.computed && hasNonEmptyResolverCall(node.key, resolverName) ||\n hasNonEmptyResolverCall(node.value, resolverName);\n // istanbul ignore next -- In Babel?\n case 'ObjectMethod':\n // istanbul ignore next -- In Babel?\n return node.computed && hasNonEmptyResolverCall(node.key, resolverName) ||\n node.arguments.some((nde) => {\n return hasNonEmptyResolverCall(nde, resolverName);\n });\n\n case 'ClassExpression':\n case 'ClassDeclaration':\n return hasNonEmptyResolverCall(node.body, resolverName);\n\n case 'AwaitExpression':\n case 'SpreadElement':\n case 'UnaryExpression':\n case 'YieldExpression':\n return hasNonEmptyResolverCall(node.argument, resolverName);\n\n case 'VariableDeclaration': {\n return node.declarations.some((nde) => {\n return hasNonEmptyResolverCall(nde, resolverName);\n });\n }\n\n case 'VariableDeclarator': {\n return hasNonEmptyResolverCall(node.id, resolverName) ||\n hasNonEmptyResolverCall(node.init, resolverName);\n }\n\n case 'TaggedTemplateExpression':\n return hasNonEmptyResolverCall(node.quasi, resolverName);\n\n // ?.\n // istanbul ignore next -- In Babel?\n case 'OptionalMemberExpression':\n case 'MemberExpression':\n return hasNonEmptyResolverCall(node.object, resolverName) ||\n hasNonEmptyResolverCall(node.property, resolverName);\n\n // istanbul ignore next -- In Babel?\n case 'Import':\n case 'ImportExpression':\n return hasNonEmptyResolverCall(node.source, resolverName);\n\n case 'ReturnStatement': {\n if (node.argument === null) {\n return false;\n }\n\n return hasNonEmptyResolverCall(node.argument, resolverName);\n }\n\n /*\n // Shouldn't need to parse literals/literal components, etc.\n\n case 'Identifier':\n case 'TemplateElement':\n case 'Super':\n // Exports not relevant in this context\n */\n default:\n return false;\n }\n};\n\n/**\n * Checks if a Promise executor has no resolve value or an empty value.\n * An `undefined` resolve does not count.\n *\n * @param {object} node\n * @param {boolean} anyPromiseAsReturn\n * @param {boolean} allBranches\n * @returns {boolean}\n */\nconst hasValueOrExecutorHasNonEmptyResolveValue = (node, anyPromiseAsReturn, allBranches) => {\n const hasReturnMethod = allBranches ?\n (nde, promiseFilter) => {\n let hasReturn;\n try {\n hasReturn = hasReturnValue(nde, true, promiseFilter);\n } catch (error) {\n // istanbul ignore else\n if (error.message === 'Null return') {\n return false;\n }\n\n // istanbul ignore next\n throw error;\n }\n\n // `hasReturn` check needed since `throw` treated as valid return by\n // `allBrancheshaveReturnValues`\n return hasReturn && allBrancheshaveReturnValues(nde, promiseFilter);\n } :\n (nde, promiseFilter) => {\n return hasReturnValue(nde, false, promiseFilter);\n };\n\n return hasReturnMethod(node, (prom) => {\n if (anyPromiseAsReturn) {\n return true;\n }\n\n if (isVoidPromise(prom)) {\n return false;\n }\n\n const [\n {\n params,\n body,\n } = {},\n ] = prom.arguments;\n\n if (!params?.length) {\n return false;\n }\n\n const [\n {\n name: resolverName,\n },\n ] = params;\n\n return hasNonEmptyResolverCall(body, resolverName);\n });\n};\n\nexport {\n hasReturnValue,\n hasValueOrExecutorHasNonEmptyResolveValue,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hasReturnValue.js","names":["isNewPromiseExpression","node","type","callee","name","isVoidPromise","typeParameters","params","undefinedKeywords","Set","hasReturnValue","throwOnNullReturn","promFilter","returnType","typeAnnotation","has","value","expression","body","some","bodyNode","consequent","alternate","block","handler","finalizer","cases","someCase","nde","argument","Error","allBrancheshaveReturnValues","lastBodyNode","slice","every","hasNonEmptyResolverCall","resolverName","arguments","length","undefined","test","elements","element","right","left","expressions","subExpression","properties","property","decorators","decorator","computed","key","declarations","id","init","quasi","object","source","hasValueOrExecutorHasNonEmptyResolveValue","anyPromiseAsReturn","allBranches","hasReturnMethod","promiseFilter","hasReturn","error","message","prom"],"sources":["../../src/utils/hasReturnValue.js"],"sourcesContent":["/* eslint-disable jsdoc/no-undefined-types */\n/**\n * Checks if a node is a promise but has no resolve value or an empty value.\n * An `undefined` resolve does not count.\n *\n * @param {object} node\n * @returns {boolean}\n */\nconst isNewPromiseExpression = (node) => {\n return node && node.type === 'NewExpression' && node.callee.type === 'Identifier' &&\n node.callee.name === 'Promise';\n};\n\nconst isVoidPromise = (node) => {\n return node?.typeParameters?.params?.[0]?.type === 'TSVoidKeyword';\n};\n\nconst undefinedKeywords = new Set([\n 'TSVoidKeyword', 'TSUndefinedKeyword', 'TSNeverKeyword',\n]);\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n *\n * @param {object} node\n * @param {boolean} throwOnNullReturn\n * @param {PromiseFilter} promFilter\n * @returns {boolean|Node}\n */\n// eslint-disable-next-line complexity\nconst hasReturnValue = (node, throwOnNullReturn, promFilter) => {\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'TSDeclareFunction':\n case 'TSFunctionType':\n case 'TSMethodSignature': {\n const type = node?.returnType?.typeAnnotation?.type;\n return type && !undefinedKeywords.has(type);\n }\n\n case 'MethodDefinition':\n return hasReturnValue(node.value, throwOnNullReturn, promFilter);\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return node.expression && (!isNewPromiseExpression(node.body) || !isVoidPromise(node.body)) ||\n hasReturnValue(node.body, throwOnNullReturn, promFilter);\n }\n\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasReturnValue(bodyNode, throwOnNullReturn, promFilter);\n });\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasReturnValue(node.body, throwOnNullReturn, promFilter);\n }\n\n case 'IfStatement': {\n return hasReturnValue(node.consequent, throwOnNullReturn, promFilter) ||\n hasReturnValue(node.alternate, throwOnNullReturn, promFilter);\n }\n\n case 'TryStatement': {\n return hasReturnValue(node.block, throwOnNullReturn, promFilter) ||\n hasReturnValue(node.handler && node.handler.body, throwOnNullReturn, promFilter) ||\n hasReturnValue(node.finalizer, throwOnNullReturn, promFilter);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasReturnValue(nde, throwOnNullReturn, promFilter);\n });\n },\n );\n }\n\n case 'ReturnStatement': {\n // void return does not count.\n if (node.argument === null) {\n if (throwOnNullReturn) {\n throw new Error('Null return');\n }\n\n return false;\n }\n\n if (promFilter && isNewPromiseExpression(node.argument)) {\n // Let caller decide how to filter, but this is, at the least,\n // a return of sorts and truthy\n return promFilter(node.argument);\n }\n\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n *\n * @param {object} node\n * @param {PromiseFilter} promFilter\n * @returns {boolean|Node}\n */\n// eslint-disable-next-line complexity\nconst allBrancheshaveReturnValues = (node, promFilter) => {\n if (!node) {\n return false;\n }\n\n switch (node.type) {\n case 'TSDeclareFunction':\n case 'TSFunctionType':\n case 'TSMethodSignature': {\n const type = node?.returnType?.typeAnnotation?.type;\n return type && !undefinedKeywords.has(type);\n }\n\n // case 'MethodDefinition':\n // return allBrancheshaveReturnValues(node.value, promFilter);\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return node.expression && (!isNewPromiseExpression(node.body) || !isVoidPromise(node.body)) ||\n allBrancheshaveReturnValues(node.body, promFilter);\n }\n\n case 'BlockStatement': {\n const lastBodyNode = node.body.slice(-1)[0];\n return allBrancheshaveReturnValues(lastBodyNode, promFilter);\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return allBrancheshaveReturnValues(node.body, promFilter);\n }\n\n case 'IfStatement': {\n return allBrancheshaveReturnValues(node.consequent, promFilter) && allBrancheshaveReturnValues(node.alternate, promFilter);\n }\n\n case 'TryStatement': {\n return allBrancheshaveReturnValues(node.block, promFilter) &&\n (!node.handler ||\n allBrancheshaveReturnValues(node.handler && node.handler.body, promFilter)) &&\n (!node.finalizer ||\n allBrancheshaveReturnValues(node.finalizer, promFilter));\n }\n\n case 'SwitchStatement': {\n return node.cases.every(\n (someCase) => {\n const nde = someCase.consequent.slice(-1)[0];\n return !nde || allBrancheshaveReturnValues(nde, promFilter);\n },\n );\n }\n\n case 'ThrowStatement': {\n return true;\n }\n\n case 'ReturnStatement': {\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n if (promFilter && isNewPromiseExpression(node.argument)) {\n // Let caller decide how to filter, but this is, at the least,\n // a return of sorts and truthy\n return promFilter(node.argument);\n }\n\n return true;\n }\n\n default: {\n return false;\n }\n }\n};\n\n/**\n * @callback PromiseFilter\n * @param {object} node\n * @returns {boolean}\n */\n\n/**\n * Avoids further checking child nodes if a nested function shadows the\n * resolver, but otherwise, if name is used (by call or passed in as an\n * argument to another function), will be considered as non-empty.\n *\n * This could check for redeclaration of the resolver, but as such is\n * unlikely, we avoid the performance cost of checking everywhere for\n * (re)declarations or assignments.\n *\n * @param {AST} node\n * @param {string} resolverName\n * @returns {boolean}\n */\n// eslint-disable-next-line complexity\nconst hasNonEmptyResolverCall = (node, resolverName) => {\n if (!node) {\n return false;\n }\n\n // Arrow function without block\n switch (node.type) {\n // istanbul ignore next -- In Babel?\n case 'OptionalCallExpression':\n case 'CallExpression':\n return node.callee.name === resolverName && (\n\n // Implicit or explicit undefined\n node.arguments.length > 1 || node.arguments[0] !== undefined\n ) ||\n node.arguments.some((nde) => {\n // Being passed in to another function (which might invoke it)\n return nde.type === 'Identifier' && nde.name === resolverName ||\n\n // Handle nested items\n hasNonEmptyResolverCall(nde, resolverName);\n });\n case 'ChainExpression':\n case 'Decorator':\n case 'ExpressionStatement':\n return hasNonEmptyResolverCall(node.expression, resolverName);\n case 'ClassBody':\n case 'BlockStatement':\n return node.body.some((bodyNode) => {\n return hasNonEmptyResolverCall(bodyNode, resolverName);\n });\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n // Shadowing\n if (node.params[0]?.name === resolverName) {\n return false;\n }\n\n return hasNonEmptyResolverCall(node.body, resolverName);\n }\n\n case 'LabeledStatement':\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasNonEmptyResolverCall(node.body, resolverName);\n }\n\n case 'ConditionalExpression':\n case 'IfStatement': {\n return hasNonEmptyResolverCall(node.test, resolverName) ||\n hasNonEmptyResolverCall(node.consequent, resolverName) ||\n hasNonEmptyResolverCall(node.alternate, resolverName);\n }\n\n case 'TryStatement': {\n return hasNonEmptyResolverCall(node.block, resolverName) ||\n hasNonEmptyResolverCall(node.handler && node.handler.body, resolverName) ||\n hasNonEmptyResolverCall(node.finalizer, resolverName);\n }\n\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some((nde) => {\n return hasNonEmptyResolverCall(nde, resolverName);\n });\n },\n );\n }\n\n case 'ArrayPattern':\n case 'ArrayExpression':\n return node.elements.some((element) => {\n return hasNonEmptyResolverCall(element, resolverName);\n });\n\n case 'AssignmentPattern':\n return hasNonEmptyResolverCall(node.right, resolverName);\n\n case 'AssignmentExpression':\n case 'BinaryExpression':\n case 'LogicalExpression': {\n return hasNonEmptyResolverCall(node.left, resolverName) ||\n hasNonEmptyResolverCall(node.right, resolverName);\n }\n\n // Comma\n case 'SequenceExpression':\n case 'TemplateLiteral':\n return node.expressions.some((subExpression) => {\n return hasNonEmptyResolverCall(subExpression, resolverName);\n });\n\n case 'ObjectPattern':\n case 'ObjectExpression':\n return node.properties.some((property) => {\n return hasNonEmptyResolverCall(property, resolverName);\n });\n // istanbul ignore next -- In Babel?\n case 'ClassMethod':\n case 'MethodDefinition':\n return node.decorators && node.decorators.some((decorator) => {\n return hasNonEmptyResolverCall(decorator, resolverName);\n }) ||\n node.computed && hasNonEmptyResolverCall(node.key, resolverName) ||\n hasNonEmptyResolverCall(node.value, resolverName);\n\n // istanbul ignore next -- In Babel?\n case 'ObjectProperty':\n /* eslint-disable no-fallthrough */\n // istanbul ignore next -- In Babel?\n case 'PropertyDefinition':\n // istanbul ignore next -- In Babel?\n case 'ClassProperty':\n /* eslint-enable no-fallthrough */\n case 'Property':\n return node.computed && hasNonEmptyResolverCall(node.key, resolverName) ||\n hasNonEmptyResolverCall(node.value, resolverName);\n // istanbul ignore next -- In Babel?\n case 'ObjectMethod':\n // istanbul ignore next -- In Babel?\n return node.computed && hasNonEmptyResolverCall(node.key, resolverName) ||\n node.arguments.some((nde) => {\n return hasNonEmptyResolverCall(nde, resolverName);\n });\n\n case 'ClassExpression':\n case 'ClassDeclaration':\n return hasNonEmptyResolverCall(node.body, resolverName);\n\n case 'AwaitExpression':\n case 'SpreadElement':\n case 'UnaryExpression':\n case 'YieldExpression':\n return hasNonEmptyResolverCall(node.argument, resolverName);\n\n case 'VariableDeclaration': {\n return node.declarations.some((nde) => {\n return hasNonEmptyResolverCall(nde, resolverName);\n });\n }\n\n case 'VariableDeclarator': {\n return hasNonEmptyResolverCall(node.id, resolverName) ||\n hasNonEmptyResolverCall(node.init, resolverName);\n }\n\n case 'TaggedTemplateExpression':\n return hasNonEmptyResolverCall(node.quasi, resolverName);\n\n // ?.\n // istanbul ignore next -- In Babel?\n case 'OptionalMemberExpression':\n case 'MemberExpression':\n return hasNonEmptyResolverCall(node.object, resolverName) ||\n hasNonEmptyResolverCall(node.property, resolverName);\n\n // istanbul ignore next -- In Babel?\n case 'Import':\n case 'ImportExpression':\n return hasNonEmptyResolverCall(node.source, resolverName);\n\n case 'ReturnStatement': {\n if (node.argument === null) {\n return false;\n }\n\n return hasNonEmptyResolverCall(node.argument, resolverName);\n }\n\n /*\n // Shouldn't need to parse literals/literal components, etc.\n\n case 'Identifier':\n case 'TemplateElement':\n case 'Super':\n // Exports not relevant in this context\n */\n default:\n return false;\n }\n};\n\n/**\n * Checks if a Promise executor has no resolve value or an empty value.\n * An `undefined` resolve does not count.\n *\n * @param {object} node\n * @param {boolean} anyPromiseAsReturn\n * @param {boolean} allBranches\n * @returns {boolean}\n */\nconst hasValueOrExecutorHasNonEmptyResolveValue = (node, anyPromiseAsReturn, allBranches) => {\n const hasReturnMethod = allBranches ?\n (nde, promiseFilter) => {\n let hasReturn;\n try {\n hasReturn = hasReturnValue(nde, true, promiseFilter);\n } catch (error) {\n // istanbul ignore else\n if (error.message === 'Null return') {\n return false;\n }\n\n // istanbul ignore next\n throw error;\n }\n\n // `hasReturn` check needed since `throw` treated as valid return by\n // `allBrancheshaveReturnValues`\n return hasReturn && allBrancheshaveReturnValues(nde, promiseFilter);\n } :\n (nde, promiseFilter) => {\n return hasReturnValue(nde, false, promiseFilter);\n };\n\n return hasReturnMethod(node, (prom) => {\n if (anyPromiseAsReturn) {\n return true;\n }\n\n if (isVoidPromise(prom)) {\n return false;\n }\n\n const [\n {\n params,\n body,\n } = {},\n ] = prom.arguments;\n\n if (!params?.length) {\n return false;\n }\n\n const [\n {\n name: resolverName,\n },\n ] = params;\n\n return hasNonEmptyResolverCall(body, resolverName);\n });\n};\n\nexport {\n hasReturnValue,\n hasValueOrExecutorHasNonEmptyResolveValue,\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED