blob: e4d0ebd1d1ef030d03cd50b49caca771b482c4fa [file] [log] [blame]
{"version":3,"sources":["../../src/rules/requireExample.js"],"names":["jsdoc","report","utils","context","avoidDocs","options","avoidExampleOnConstructors","targetTagName","functionExamples","_","filter","tags","tag","hasATag","isConstructor","length","reportJSDoc","line","push","description","name","optional","type","forEach","example","exampleContent","compact","trim","split","contextDefaults","meta","fixable","schema","additionalProperties","properties","default","contexts","items","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\nimport warnRemovedSettings from '../warnRemovedSettings';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n warnRemovedSettings(context, 'require-example');\n\n if (utils.avoidDocs()) {\n return;\n }\n\n const {avoidExampleOnConstructors = false} = context.options[0] || {};\n\n const targetTagName = 'example';\n\n const functionExamples = _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n if (avoidExampleOnConstructors && (\n utils.hasATag([\n 'class',\n 'constructor',\n ]) ||\n utils.isConstructor()\n )) {\n return;\n }\n\n if (!functionExamples.length) {\n utils.reportJSDoc(`Missing JSDoc @${targetTagName} declaration.`, null, () => {\n if (!jsdoc.tags) {\n jsdoc.tags = [];\n }\n const line = jsdoc.tags.length ? jsdoc.tags[jsdoc.tags.length - 1].line + 1 : 0;\n jsdoc.tags.push({\n description: '',\n line,\n name: '',\n optional: false,\n tag: targetTagName,\n type: '',\n });\n });\n\n return;\n }\n\n functionExamples.forEach((example) => {\n const exampleContent = _.compact(`${example.name} ${example.description}`.trim().split('\\n'));\n\n if (!exampleContent.length) {\n report(`Missing JSDoc @${targetTagName} description.`);\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n avoidExampleOnConstructors: {\n default: false,\n type: 'boolean',\n },\n contexts: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n exemptedBy: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"requireExample.js"}