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

1 line
7.3 KiB
Plaintext
Executable file

{"version":3,"sources":["../../src/rules/matchDescription.js"],"names":["matchDescriptionDefault","stringOrDefault","value","userDefault","jsdoc","report","context","utils","options","validateDescription","description","tag","mainDescription","tagValue","tagName","tags","regex","RegExp","matchDescription","test","line","Object","keys","length","hasOptionTag","Boolean","forEachPreferredTag","matchingJsdocTag","targetTagName","name","trim","whitelistedTags","filterTags","tagsWithNames","tagsWithoutNames","getTagsByType","some","_","trimStart","contextDefaults","meta","docs","url","schema","additionalProperties","properties","contexts","items","type","oneOf","format","patternProperties","enum"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\n// If supporting Node >= 10, we could loosen the default to this for the\n// initial letter: \\\\p{Upper}\nconst matchDescriptionDefault = '^[A-Z`\\\\d_][\\\\s\\\\S]*[.?!`]$';\n\nconst stringOrDefault = (value, userDefault) => {\n return typeof value === 'string' ?\n value :\n userDefault || matchDescriptionDefault;\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n context,\n utils,\n}) => {\n const options = context.options[0] || {};\n\n const validateDescription = (description, tag) => {\n if (!tag && options.mainDescription === false) {\n return;\n }\n\n let tagValue = options.mainDescription;\n if (tag) {\n const tagName = tag.tag;\n tagValue = options.tags[tagName];\n }\n\n const regex = new RegExp(\n stringOrDefault(tagValue, options.matchDescription),\n 'u',\n );\n\n if (!regex.test(description)) {\n report('JSDoc description does not satisfy the regex pattern.', null, tag || {\n // Add one as description would typically be into block\n line: jsdoc.line + 1,\n });\n }\n };\n\n if (jsdoc.description) {\n validateDescription(jsdoc.description);\n }\n\n if (!options.tags || !Object.keys(options.tags).length) {\n return;\n }\n\n const hasOptionTag = (tagName) => {\n return Boolean(options.tags[tagName]);\n };\n\n utils.forEachPreferredTag('description', (matchingJsdocTag, targetTagName) => {\n const description = (matchingJsdocTag.name + ' ' + matchingJsdocTag.description).trim();\n if (hasOptionTag(targetTagName)) {\n validateDescription(description, matchingJsdocTag);\n }\n }, true);\n\n const whitelistedTags = utils.filterTags(({tag: tagName}) => {\n return hasOptionTag(tagName);\n });\n const {tagsWithNames, tagsWithoutNames} = utils.getTagsByType(whitelistedTags);\n\n tagsWithNames.some((tag) => {\n const description = _.trimStart(tag.description, '- ');\n\n return validateDescription(description, tag);\n });\n\n tagsWithoutNames.some((tag) => {\n const description = (tag.name + ' ' + tag.description).trim();\n\n return validateDescription(description, tag);\n });\n}, {\n contextDefaults: true,\n meta: {\n docs: {\n description: 'Enforces a regular expression pattern on descriptions.',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc#eslint-plugin-jsdoc-rules-match-description',\n },\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n mainDescription: {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n type: 'boolean',\n },\n ],\n },\n matchDescription: {\n format: 'regex',\n type: 'string',\n },\n tags: {\n patternProperties: {\n '.*': {\n oneOf: [\n {\n format: 'regex',\n type: 'string',\n },\n {\n enum: [true],\n type: 'boolean',\n },\n ],\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"matchDescription.js"}