projecte_ionic/node_modules/eslint-plugin-jsdoc/dist/rules/requireParam.js.map
2022-02-09 18:30:03 +01:00

1 line
21 KiB
Plaintext
Executable file

{"version":3,"sources":["../../src/rules/requireParam.js"],"names":["rootNamer","desiredRoots","currentIndex","name","idx","incremented","length","base","suffix","shift","jsdoc","utils","context","functionParameterNames","getFunctionParameterNames","preferredTagName","getPreferredTagName","tagName","jsdocParameterNames","getJsdocTagsDeep","shallowJsdocParameterNames","filter","tag","includes","map","avoidDocs","hasTag","autoIncrementBase","checkRestProperty","checkDestructured","checkDestructuredRoots","checkTypesPattern","enableFixer","enableRootFixer","enableRestElementFixer","unnamedRootBase","options","lastSlashPos","lastIndexOf","checkTypesRegex","RegExp","slice","missingTags","flattenedRoots","flattenRoots","names","paramIndex","hasParamIndex","cur","_","has","dropPathSegmentQuotes","String","getParamIndex","setParamIndex","forEach","findExpectedIndex","jsdocTags","indexAtFunctionParams","remainingRoots","foundIndex","findIndex","newAdd","some","remainingRoot","Array","isArray","paramTags","nextRootName","namer","functionParameterName","functionParameterIdx","inc","matchedJsdoc","rootName","type","search","hasRestElement","hasPropertyRest","rests","notCheckingNames","paramName","find","fpn","emptyParamIdx","push","remove","fullParamName","notCheckingName","paramType","comparePaths","undefined","startsWith","funcParamName","restElement","fix","tags","splice","expectedIdx","fixer","missingTag","reportJSDoc","contextDefaults","meta","docs","description","url","fixable","schema","additionalProperties","properties","default","checkConstructors","checkGetters","checkSetters","contexts","items","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\ntype T = [string, () => T];\nconst rootNamer = (desiredRoots: string[], currentIndex: number): T => {\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 [name, incremented, () => {\n return rootNamer(desiredRoots, idx);\n }];\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n utils,\n context,\n}) => {\n const functionParameterNames = utils.getFunctionParameterNames();\n const preferredTagName = utils.getPreferredTagName({tagName: 'param'});\n if (!preferredTagName) {\n return;\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 {...tag,\n idx};\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 = ['root'],\n } = context.options[0] || {};\n\n const lastSlashPos = checkTypesPattern.lastIndexOf('/');\n const checkTypesRegex = lastSlashPos === -1 ?\n new RegExp(checkTypesPattern) :\n new RegExp(checkTypesPattern.slice(1, lastSlashPos), checkTypesPattern.slice(lastSlashPos + 1));\n\n const missingTags = [];\n const flattenedRoots = utils.flattenRoots(functionParameterNames).names;\n\n const paramIndex = {};\n const hasParamIndex = (cur) => {\n return _.has(paramIndex, utils.dropPathSegmentQuotes(String(cur)));\n };\n const getParamIndex = (cur) => {\n return paramIndex[utils.dropPathSegmentQuotes(String(cur))];\n };\n const setParamIndex = (cur, idx) => {\n paramIndex[utils.dropPathSegmentQuotes(String(cur))] = idx;\n };\n flattenedRoots.forEach((cur, idx) => {\n setParamIndex(cur, idx);\n });\n\n const findExpectedIndex = (jsdocTags, indexAtFunctionParams) => {\n const remainingRoots = functionParameterNames.slice(indexAtFunctionParams || 0);\n const foundIndex = jsdocTags.findIndex(({name, newAdd}) => {\n return !newAdd && remainingRoots.some((remainingRoot) => {\n if (Array.isArray(remainingRoot)) {\n return remainingRoot[1].names.includes(name);\n }\n if (typeof remainingRoot === 'object') {\n return name === remainingRoot.name;\n }\n\n return name === remainingRoot;\n });\n });\n\n if (foundIndex > -1) {\n return foundIndex;\n }\n\n const paramTags = jsdocTags.filter(({tag}) => {\n return tag === preferredTagName;\n });\n\n return paramTags.length;\n };\n\n let [nextRootName, incremented, namer] = rootNamer([...unnamedRootBase], autoIncrementBase);\n\n functionParameterNames.forEach((functionParameterName, functionParameterIdx) => {\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 return;\n }\n } else {\n rootName = nextRootName;\n inc = incremented;\n [nextRootName, incremented, namer] = namer();\n }\n\n const {hasRestElement, hasPropertyRest, rests, names} = functionParameterName[1];\n const notCheckingNames = [];\n if (!enableRestElementFixer && hasRestElement) {\n return;\n }\n\n if (!checkDestructuredRoots) {\n return;\n }\n\n names.forEach((paramName, idx) => {\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(({name}) => {\n return name === rootName;\n }) && !missingTags.find(({functionParameterName: fpn}) => {\n return fpn === rootName;\n })) {\n const emptyParamIdx = jsdocParameterNames.findIndex(({name}) => {\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 return;\n }\n\n if (!checkRestProperty && rests[idx]) {\n return;\n }\n\n const fullParamName = `${rootName}.${paramName}`;\n\n const notCheckingName = jsdocParameterNames.find(({name, type: paramType}) => {\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 return;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({name}) => {\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 return;\n }\n let funcParamName;\n let type;\n if (typeof functionParameterName === 'object') {\n if (!enableRestElementFixer && functionParameterName.restElement) {\n return;\n }\n funcParamName = functionParameterName.name;\n type = '...any';\n } else {\n funcParamName = functionParameterName;\n }\n\n if (jsdocParameterNames && !jsdocParameterNames.find(({name}) => {\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, functionParameterName, remove, inc, type,\n }, tags) => {\n if (inc && !enableRootFixer) {\n return;\n }\n if (remove) {\n tags.splice(functionParameterIdx, 1, {\n name: functionParameterName,\n newAdd: true,\n tag: preferredTagName,\n type,\n });\n } else {\n const expectedIdx = findExpectedIndex(tags, functionParameterIdx);\n tags.splice(expectedIdx, 0, {\n name: functionParameterName,\n newAdd: true,\n tag: preferredTagName,\n type,\n });\n }\n };\n\n const fixer = () => {\n if (!jsdoc.tags) {\n jsdoc.tags = [];\n }\n\n missingTags.forEach((missingTag) => {\n fix(missingTag, jsdoc.tags);\n });\n };\n\n missingTags.forEach(({functionParameterName}) => {\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 type: 'string',\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 },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireParam.js"}