eslint-plugin-jsdoc 15.12.1 → 15.12.2
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 +24 -0
- package/dist/iterateJsdoc.js +5 -2
- package/dist/iterateJsdoc.js.map +1 -1
- package/dist/jsdocUtils.js.map +1 -1
- package/dist/rules/checkAlignment.js +7 -5
- package/dist/rules/checkAlignment.js.map +1 -1
- package/dist/rules/checkExamples.js.map +1 -1
- package/dist/rules/checkParamNames.js.map +1 -1
- package/dist/rules/checkTagNames.js.map +1 -1
- package/dist/rules/checkTypes.js.map +1 -1
- package/dist/rules/matchDescription.js.map +1 -1
- package/dist/rules/noUndefinedTypes.js.map +1 -1
- package/dist/rules/requireDescription.js.map +1 -1
- package/dist/rules/requireJsdoc.js.map +1 -1
- package/dist/rules/requireParamDescription.js.map +1 -1
- package/dist/rules/requireParamName.js.map +1 -1
- package/dist/rules/requireParamType.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -338,7 +338,31 @@ The following patterns are considered problems:
|
|
|
338
338
|
* @param {Number} foo
|
|
339
339
|
*/
|
|
340
340
|
function quux (foo) {
|
|
341
|
+
// with spaces
|
|
342
|
+
}
|
|
343
|
+
// Message: Expected JSDoc block to be aligned.
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* @param {Number} foo
|
|
347
|
+
*/
|
|
348
|
+
function quux (foo) {
|
|
349
|
+
// with tabs
|
|
350
|
+
}
|
|
351
|
+
// Message: Expected JSDoc block to be aligned.
|
|
341
352
|
|
|
353
|
+
/**
|
|
354
|
+
* @param {Number} foo
|
|
355
|
+
*/
|
|
356
|
+
function quux (foo) {
|
|
357
|
+
// with spaces
|
|
358
|
+
}
|
|
359
|
+
// Message: Expected JSDoc block to be aligned.
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* @param {Number} foo
|
|
363
|
+
*/
|
|
364
|
+
function quux (foo) {
|
|
365
|
+
// with spaces
|
|
342
366
|
}
|
|
343
367
|
// Message: Expected JSDoc block to be aligned.
|
|
344
368
|
|
package/dist/iterateJsdoc.js
CHANGED
|
@@ -26,6 +26,7 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
|
|
|
26
26
|
*
|
|
27
27
|
* @param {object} commentNode
|
|
28
28
|
* @param {string} indent Whitespace
|
|
29
|
+
* @param {boolean} [trim=true]
|
|
29
30
|
* @returns {object}
|
|
30
31
|
*/
|
|
31
32
|
const parseComment = (commentNode, indent, trim = true) => {
|
|
@@ -425,7 +426,8 @@ const iterateAllJsdocs = (iterator, ruleConfig) => {
|
|
|
425
426
|
return;
|
|
426
427
|
}
|
|
427
428
|
|
|
428
|
-
const
|
|
429
|
+
const sourceLine = sourceCode.lines[comment.loc.start.line - 1];
|
|
430
|
+
const indent = sourceLine.charAt(0).repeat(comment.loc.start.column);
|
|
429
431
|
const jsdoc = parseComment(comment, indent, !ruleConfig.noTrim);
|
|
430
432
|
const settings = getSettings(context);
|
|
431
433
|
const report = makeReport(context, comment);
|
|
@@ -498,7 +500,8 @@ function iterateJsdoc(iterator, ruleConfig) {
|
|
|
498
500
|
return;
|
|
499
501
|
}
|
|
500
502
|
|
|
501
|
-
const
|
|
503
|
+
const sourceLine = sourceCode.lines[jsdocNode.loc.start.line - 1];
|
|
504
|
+
const indent = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);
|
|
502
505
|
const jsdoc = parseComment(jsdocNode, indent);
|
|
503
506
|
const report = makeReport(context, jsdocNode);
|
|
504
507
|
const utils = getUtils(node, jsdoc, jsdocNode, settings, report, context);
|
package/dist/iterateJsdoc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/iterateJsdoc.js"],"names":["parseComment","commentNode","indent","trim","skipSeeLink","parser","str","data","tag","match","value","parsers","commentParser","PARSERS","parse_tag","parse_type","includes","parse_name","parse_description","errors","length","result","description","undefined","source","getUtils","node","jsdoc","jsdocNode","tagNamePreference","overrideReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","report","context","ancestors","getAncestors","sourceCode","getSourceCode","utils","stringify","tagBlock","jsdocUtils","getIndent","slice","reportJSDoc","msg","handler","fixer","replacement","replaceText","getFunctionParameterNames","isConstructor","parent","kind","isSetter","getJsdocParameterNamesDeep","param","getPreferredTagName","tagName","getJsdocParameterNames","skipReportingBlockedTag","allowObjectReturn","defaultMessage","ret","isObject","hasTag","blocked","message","getTags","isValidTag","name","definedTags","hasATag","avoidDocs","classHasTag","exemptedBy","_","get","getPresentTags","tagMustHaveEitherTypeOrNamepath","tagMightHaveEitherTypeOrNamepath","tagMustHaveNamepath","tagMightHaveNamepath","tagMustHaveType","tagMightHaveType","isNamepathDefiningTag","hasDefinedTypeReturnTag","hasReturnValue","isAsync","async","filterTags","item","tagList","filter","tags","getTagsByType","getClassNode","greatGrandParent","getAncestor","greatGrandParentValue","getFirstToken","getClassJsdoc","classNode","classJsdocNode","repeat","loc","start","column","classJsdoc","forEachPreferredTag","arrayHandler","targetTagName","matchingJsdocTags","forEach","matchingJsdocTag","reportSettings","line","getSettings","settings","ignorePrivate","Boolean","Number","preferredTypes","makeReport","fix","jsdocLoc","lineNumber","end","colNumber","iterateAllJsdocs","iterator","ruleConfig","create","comments","getAllComments","comment","getText","startsWith","noTrim","meta","iterateJsdoc","metaType","TypeError","checkJsdoc","contextDefaults","contexts","enforcedContexts","getContextObject","ArrowFunctionExpression","FunctionDeclaration","FunctionExpression"],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-named-default\nimport {default as commentParser, stringify as commentStringify} from 'comment-parser';\nimport _ from 'lodash';\nimport jsdocUtils from './jsdocUtils';\nimport getJSDocComment from './eslint/getJSDocComment';\n\n/**\n *\n * @param {object} commentNode\n * @param {string} indent Whitespace\n * @returns {object}\n */\nconst parseComment = (commentNode, indent, trim = true) => {\n const skipSeeLink = (parser) => {\n return (str, data) => {\n if (data.tag === 'see' && str.match(/{@link.+?}/)) {\n return null;\n }\n\n return parser(str, data);\n };\n };\n\n // Preserve JSDoc block start/end indentation.\n return commentParser(`${indent}/*${commentNode.value}${indent}*/`, {\n // @see https://github.com/yavorskiy/comment-parser/issues/21\n parsers: [\n commentParser.PARSERS.parse_tag,\n skipSeeLink(commentParser.PARSERS.parse_type),\n skipSeeLink(\n (str, data) => {\n if (['example', 'return', 'returns', 'throws', 'exception'].includes(data.tag)) {\n return null;\n }\n\n return commentParser.PARSERS.parse_name(str, data);\n },\n ),\n trim ?\n commentParser.PARSERS.parse_description :\n\n // parse_description\n (str, data) => {\n // Only expected throw in previous step is if bad name (i.e.,\n // missing end bracket on optional name), but `@example`\n // skips name parsing\n /* istanbul ignore next */\n if (data.errors && data.errors.length) {\n return null;\n }\n\n // Tweak original regex to capture only single optional space\n const result = str.match(/^\\s?((.|\\s)+)?/);\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n if (result) {\n return {\n data: {\n description: result[1] === undefined ? '' : result[1],\n },\n source: result[0],\n };\n }\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n return null;\n },\n ],\n trim,\n })[0] || {};\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n {\n tagNamePreference,\n overrideReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n },\n report,\n context\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = {};\n\n utils.stringify = (tagBlock) => {\n const indent = jsdocUtils.getIndent(sourceCode);\n\n return commentStringify([tagBlock], {indent}).slice(indent.length - 1);\n };\n\n utils.reportJSDoc = (msg, tag, handler) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag);\n };\n\n utils.getFunctionParameterNames = () => {\n return jsdocUtils.getFunctionParameterNames(node);\n };\n\n utils.isConstructor = () => {\n return node.parent && node.parent.kind === 'constructor';\n };\n\n utils.isSetter = () => {\n return node.parent.kind === 'set';\n };\n\n utils.getJsdocParameterNamesDeep = () => {\n const param = utils.getPreferredTagName({tagName: 'param'});\n if (!param) {\n return false;\n }\n\n return jsdocUtils.getJsdocParameterNamesDeep(jsdoc, param);\n };\n\n utils.getJsdocParameterNames = () => {\n const param = utils.getPreferredTagName({tagName: 'param'});\n if (!param) {\n return false;\n }\n\n return jsdocUtils.getJsdocParameterNames(jsdoc, param);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\n const ret = jsdocUtils.getPreferredTagName(tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(name, definedTags);\n };\n\n utils.hasATag = (name) => {\n return jsdocUtils.hasATag(jsdoc, name);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.avoidDocs = () => {\n if (\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n // inheritdoc implies that all documentation is inherited; see https://jsdoc.app/tags-inheritdoc.html\n utils.hasTag('inheritdoc') ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n const exemptedBy = _.get(context, 'options[0].exemptedBy');\n if (exemptedBy && exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n utils.tagMustHaveEitherTypeOrNamepath = (tagName) => {\n return jsdocUtils.tagMustHaveEitherTypeOrNamepath(tagName);\n };\n\n utils.tagMightHaveEitherTypeOrNamepath = (tagName) => {\n return jsdocUtils.tagMightHaveEitherTypeOrNamepath(tagName);\n };\n\n utils.tagMustHaveNamepath = (tagName) => {\n return jsdocUtils.tagMustHaveNamepath(tagName);\n };\n\n utils.tagMightHaveNamepath = (tagName) => {\n return jsdocUtils.tagMightHaveNamepath(tagName);\n };\n\n utils.tagMustHaveType = (tagName) => {\n return jsdocUtils.tagMustHaveType(tagName);\n };\n\n utils.tagMightHaveType = (tagName) => {\n return jsdocUtils.tagMightHaveType(tagName);\n };\n\n utils.isNamepathDefiningTag = (tagName) => {\n return jsdocUtils.isNamepathDefiningTag(tagName);\n };\n\n utils.hasDefinedTypeReturnTag = (tag) => {\n return jsdocUtils.hasDefinedTypeReturnTag(tag);\n };\n\n utils.hasReturnValue = () => {\n return jsdocUtils.hasReturnValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(tags, tagNamePreference);\n };\n\n utils.getClassNode = () => {\n // Ancestors missing in `Program` comment iteration\n const greatGrandParent = ancestors.length ?\n ancestors.slice(-3)[0] :\n jsdocUtils.getAncestor(sourceCode, jsdocNode, 3);\n\n const greatGrandParentValue = greatGrandParent && sourceCode.getFirstToken(greatGrandParent).value;\n\n if (greatGrandParentValue === 'class') {\n return greatGrandParent;\n }\n\n return false;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indent = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indent);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return classJsdoc && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n const matchingJsdocTags = _.filter(jsdoc.tags || [], {\n tag: targetTagName,\n });\n\n matchingJsdocTags.forEach((matchingJsdocTag) => {\n arrayHandler(matchingJsdocTag, targetTagName);\n });\n };\n\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n const settings = {};\n\n // All rules\n settings.ignorePrivate = Boolean(_.get(context, 'settings.jsdoc.ignorePrivate'));\n settings.minLines = Number(_.get(context, 'settings.jsdoc.minLines', 0));\n settings.maxLines = Number(_.get(context, 'settings.jsdoc.maxLines', 1));\n\n // `check-tag-names` and many returns/param rules\n settings.tagNamePreference = _.get(context, 'settings.jsdoc.tagNamePreference') || {};\n\n // `check-types` and `no-undefined-types`\n settings.preferredTypes = _.get(context, 'settings.jsdoc.preferredTypes') || {};\n\n // `require-param`, `require-description`, `require-example`, `require-returns`\n settings.overrideReplacesDocs = _.get(context, 'settings.jsdoc.overrideReplacesDocs');\n settings.implementsReplacesDocs = _.get(context, 'settings.jsdoc.implementsReplacesDocs');\n settings.augmentsExtendsReplacesDocs = _.get(context, 'settings.jsdoc.augmentsExtendsReplacesDocs');\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: Object,\n * sourceCode: Object,\n * indent: string,\n * jsdoc: Object,\n * jsdocNode: Object,\n * node: Object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst iterateAllJsdocs = (iterator, ruleConfig) => {\n return {\n create (context) {\n return {\n 'Program' () {\n const sourceCode = context.getSourceCode();\n const comments = sourceCode.getAllComments();\n\n comments.forEach((comment) => {\n if (!sourceCode.getText(comment).startsWith('/**')) {\n return;\n }\n\n const indent = ' '.repeat(comment.loc.start.column);\n const jsdoc = parseComment(comment, indent, !ruleConfig.noTrim);\n const settings = getSettings(context);\n const report = makeReport(context, comment);\n const jsdocNode = comment;\n\n iterator({\n context,\n indent,\n jsdoc,\n jsdocNode,\n node: null,\n report,\n settings,\n sourceCode,\n utils: getUtils(null, jsdoc, jsdocNode, settings, report, context),\n });\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = _.get(ruleConfig, 'meta.type');\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, {\n meta: ruleConfig.meta,\n noTrim: ruleConfig.noTrim,\n });\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const sourceCode = context.getSourceCode();\n\n const settings = getSettings(context);\n\n const checkJsdoc = (node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const indent = ' '.repeat(jsdocNode.loc.start.column);\n\n const jsdoc = parseComment(jsdocNode, indent);\n\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context\n );\n\n if (\n settings.ignorePrivate &&\n utils.hasTag('private')\n ) {\n return;\n }\n\n iterator({\n context,\n indent,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n utils,\n });\n };\n\n if (ruleConfig.contextDefaults) {\n const contexts = jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n return jsdocUtils.getContextObject(contexts, checkJsdoc);\n }\n\n return {\n ArrowFunctionExpression: checkJsdoc,\n FunctionDeclaration: checkJsdoc,\n FunctionExpression: checkJsdoc,\n };\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}
|
|
1
|
+
{"version":3,"sources":["../src/iterateJsdoc.js"],"names":["parseComment","commentNode","indent","trim","skipSeeLink","parser","str","data","tag","match","value","parsers","commentParser","PARSERS","parse_tag","parse_type","includes","parse_name","parse_description","errors","length","result","description","undefined","source","getUtils","node","jsdoc","jsdocNode","tagNamePreference","overrideReplacesDocs","implementsReplacesDocs","augmentsExtendsReplacesDocs","maxLines","minLines","report","context","ancestors","getAncestors","sourceCode","getSourceCode","utils","stringify","tagBlock","jsdocUtils","getIndent","slice","reportJSDoc","msg","handler","fixer","replacement","replaceText","getFunctionParameterNames","isConstructor","parent","kind","isSetter","getJsdocParameterNamesDeep","param","getPreferredTagName","tagName","getJsdocParameterNames","skipReportingBlockedTag","allowObjectReturn","defaultMessage","ret","isObject","hasTag","blocked","message","getTags","isValidTag","name","definedTags","hasATag","avoidDocs","classHasTag","exemptedBy","_","get","getPresentTags","tagMustHaveEitherTypeOrNamepath","tagMightHaveEitherTypeOrNamepath","tagMustHaveNamepath","tagMightHaveNamepath","tagMustHaveType","tagMightHaveType","isNamepathDefiningTag","hasDefinedTypeReturnTag","hasReturnValue","isAsync","async","filterTags","item","tagList","filter","tags","getTagsByType","getClassNode","greatGrandParent","getAncestor","greatGrandParentValue","getFirstToken","getClassJsdoc","classNode","classJsdocNode","repeat","loc","start","column","classJsdoc","forEachPreferredTag","arrayHandler","targetTagName","matchingJsdocTags","forEach","matchingJsdocTag","reportSettings","line","getSettings","settings","ignorePrivate","Boolean","Number","preferredTypes","makeReport","fix","jsdocLoc","lineNumber","end","colNumber","iterateAllJsdocs","iterator","ruleConfig","create","comments","getAllComments","comment","getText","startsWith","sourceLine","lines","charAt","noTrim","meta","iterateJsdoc","metaType","TypeError","checkJsdoc","contextDefaults","contexts","enforcedContexts","getContextObject","ArrowFunctionExpression","FunctionDeclaration","FunctionExpression"],"mappings":"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","sourcesContent":["// eslint-disable-next-line import/no-named-default\nimport {default as commentParser, stringify as commentStringify} from 'comment-parser';\nimport _ from 'lodash';\nimport jsdocUtils from './jsdocUtils';\nimport getJSDocComment from './eslint/getJSDocComment';\n\n/**\n *\n * @param {object} commentNode\n * @param {string} indent Whitespace\n * @param {boolean} [trim=true]\n * @returns {object}\n */\nconst parseComment = (commentNode, indent, trim = true) => {\n const skipSeeLink = (parser) => {\n return (str, data) => {\n if (data.tag === 'see' && str.match(/{@link.+?}/)) {\n return null;\n }\n\n return parser(str, data);\n };\n };\n\n // Preserve JSDoc block start/end indentation.\n return commentParser(`${indent}/*${commentNode.value}${indent}*/`, {\n // @see https://github.com/yavorskiy/comment-parser/issues/21\n parsers: [\n commentParser.PARSERS.parse_tag,\n skipSeeLink(commentParser.PARSERS.parse_type),\n skipSeeLink(\n (str, data) => {\n if (['example', 'return', 'returns', 'throws', 'exception'].includes(data.tag)) {\n return null;\n }\n\n return commentParser.PARSERS.parse_name(str, data);\n },\n ),\n trim ?\n commentParser.PARSERS.parse_description :\n\n // parse_description\n (str, data) => {\n // Only expected throw in previous step is if bad name (i.e.,\n // missing end bracket on optional name), but `@example`\n // skips name parsing\n /* istanbul ignore next */\n if (data.errors && data.errors.length) {\n return null;\n }\n\n // Tweak original regex to capture only single optional space\n const result = str.match(/^\\s?((.|\\s)+)?/);\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n if (result) {\n return {\n data: {\n description: result[1] === undefined ? '' : result[1],\n },\n source: result[0],\n };\n }\n\n // Always has at least whitespace due to `indent` we've added\n /* istanbul ignore next */\n return null;\n },\n ],\n trim,\n })[0] || {};\n};\n\nconst getUtils = (\n node,\n jsdoc,\n jsdocNode,\n {\n tagNamePreference,\n overrideReplacesDocs,\n implementsReplacesDocs,\n augmentsExtendsReplacesDocs,\n maxLines,\n minLines,\n },\n report,\n context,\n) => {\n const ancestors = context.getAncestors();\n const sourceCode = context.getSourceCode();\n\n const utils = {};\n\n utils.stringify = (tagBlock) => {\n const indent = jsdocUtils.getIndent(sourceCode);\n\n return commentStringify([tagBlock], {indent}).slice(indent.length - 1);\n };\n\n utils.reportJSDoc = (msg, tag, handler) => {\n report(msg, handler ? (fixer) => {\n handler();\n const replacement = utils.stringify(jsdoc);\n\n return fixer.replaceText(jsdocNode, replacement);\n } : null, tag);\n };\n\n utils.getFunctionParameterNames = () => {\n return jsdocUtils.getFunctionParameterNames(node);\n };\n\n utils.isConstructor = () => {\n return node.parent && node.parent.kind === 'constructor';\n };\n\n utils.isSetter = () => {\n return node.parent.kind === 'set';\n };\n\n utils.getJsdocParameterNamesDeep = () => {\n const param = utils.getPreferredTagName({tagName: 'param'});\n if (!param) {\n return false;\n }\n\n return jsdocUtils.getJsdocParameterNamesDeep(jsdoc, param);\n };\n\n utils.getJsdocParameterNames = () => {\n const param = utils.getPreferredTagName({tagName: 'param'});\n if (!param) {\n return false;\n }\n\n return jsdocUtils.getJsdocParameterNames(jsdoc, param);\n };\n\n utils.getPreferredTagName = ({tagName, skipReportingBlockedTag = false, allowObjectReturn = false, defaultMessage = `Unexpected tag \\`@${tagName}\\``}) => {\n const ret = jsdocUtils.getPreferredTagName(tagName, tagNamePreference);\n const isObject = ret && typeof ret === 'object';\n if (utils.hasTag(tagName) && (ret === false || isObject && !ret.replacement)) {\n if (skipReportingBlockedTag) {\n return {\n blocked: true,\n tagName,\n };\n }\n const message = isObject && ret.message || defaultMessage;\n report(message, null, utils.getTags(tagName)[0]);\n\n return false;\n }\n\n return isObject && !allowObjectReturn ? ret.replacement : ret;\n };\n\n utils.isValidTag = (name, definedTags) => {\n return jsdocUtils.isValidTag(name, definedTags);\n };\n\n utils.hasATag = (name) => {\n return jsdocUtils.hasATag(jsdoc, name);\n };\n\n utils.hasTag = (name) => {\n return jsdocUtils.hasTag(jsdoc, name);\n };\n\n utils.avoidDocs = () => {\n if (\n overrideReplacesDocs !== false &&\n (utils.hasTag('override') || utils.classHasTag('override')) ||\n implementsReplacesDocs !== false &&\n (utils.hasTag('implements') || utils.classHasTag('implements')) ||\n\n // inheritdoc implies that all documentation is inherited; see https://jsdoc.app/tags-inheritdoc.html\n utils.hasTag('inheritdoc') ||\n\n augmentsExtendsReplacesDocs &&\n (utils.hasATag(['augments', 'extends']) ||\n utils.classHasTag('augments') ||\n utils.classHasTag('extends'))) {\n return true;\n }\n\n const exemptedBy = _.get(context, 'options[0].exemptedBy');\n if (exemptedBy && exemptedBy.length && utils.getPresentTags(exemptedBy).length) {\n return true;\n }\n\n return false;\n };\n\n utils.tagMustHaveEitherTypeOrNamepath = (tagName) => {\n return jsdocUtils.tagMustHaveEitherTypeOrNamepath(tagName);\n };\n\n utils.tagMightHaveEitherTypeOrNamepath = (tagName) => {\n return jsdocUtils.tagMightHaveEitherTypeOrNamepath(tagName);\n };\n\n utils.tagMustHaveNamepath = (tagName) => {\n return jsdocUtils.tagMustHaveNamepath(tagName);\n };\n\n utils.tagMightHaveNamepath = (tagName) => {\n return jsdocUtils.tagMightHaveNamepath(tagName);\n };\n\n utils.tagMustHaveType = (tagName) => {\n return jsdocUtils.tagMustHaveType(tagName);\n };\n\n utils.tagMightHaveType = (tagName) => {\n return jsdocUtils.tagMightHaveType(tagName);\n };\n\n utils.isNamepathDefiningTag = (tagName) => {\n return jsdocUtils.isNamepathDefiningTag(tagName);\n };\n\n utils.hasDefinedTypeReturnTag = (tag) => {\n return jsdocUtils.hasDefinedTypeReturnTag(tag);\n };\n\n utils.hasReturnValue = () => {\n return jsdocUtils.hasReturnValue(node);\n };\n\n utils.isAsync = () => {\n return node.async;\n };\n\n utils.getTags = (tagName) => {\n return utils.filterTags((item) => {\n return item.tag === tagName;\n });\n };\n\n utils.getPresentTags = (tagList) => {\n return utils.filterTags((tag) => {\n return tagList.includes(tag.tag);\n });\n };\n\n utils.filterTags = (filter) => {\n return jsdocUtils.filterTags(jsdoc.tags, filter);\n };\n\n utils.getTagsByType = (tags) => {\n return jsdocUtils.getTagsByType(tags, tagNamePreference);\n };\n\n utils.getClassNode = () => {\n // Ancestors missing in `Program` comment iteration\n const greatGrandParent = ancestors.length ?\n ancestors.slice(-3)[0] :\n jsdocUtils.getAncestor(sourceCode, jsdocNode, 3);\n\n const greatGrandParentValue = greatGrandParent && sourceCode.getFirstToken(greatGrandParent).value;\n\n if (greatGrandParentValue === 'class') {\n return greatGrandParent;\n }\n\n return false;\n };\n\n utils.getClassJsdoc = () => {\n const classNode = utils.getClassNode();\n const classJsdocNode = getJSDocComment(sourceCode, classNode, {\n maxLines,\n minLines,\n });\n\n if (classJsdocNode) {\n const indent = ' '.repeat(classJsdocNode.loc.start.column);\n\n return parseComment(classJsdocNode, indent);\n }\n\n return null;\n };\n\n utils.classHasTag = (tagName) => {\n const classJsdoc = utils.getClassJsdoc();\n\n return classJsdoc && jsdocUtils.hasTag(classJsdoc, tagName);\n };\n\n utils.forEachPreferredTag = (tagName, arrayHandler, skipReportingBlockedTag = false) => {\n const targetTagName = utils.getPreferredTagName({\n skipReportingBlockedTag,\n tagName,\n });\n if (!targetTagName ||\n skipReportingBlockedTag && targetTagName && typeof targetTagName === 'object'\n ) {\n return;\n }\n const matchingJsdocTags = _.filter(jsdoc.tags || [], {\n tag: targetTagName,\n });\n\n matchingJsdocTags.forEach((matchingJsdocTag) => {\n arrayHandler(matchingJsdocTag, targetTagName);\n });\n };\n\n utils.reportSettings = (message) => {\n context.report({\n loc: {\n start: {\n column: 1,\n line: 1,\n },\n },\n message,\n });\n };\n\n return utils;\n};\n\nconst getSettings = (context) => {\n const settings = {};\n\n // All rules\n settings.ignorePrivate = Boolean(_.get(context, 'settings.jsdoc.ignorePrivate'));\n settings.minLines = Number(_.get(context, 'settings.jsdoc.minLines', 0));\n settings.maxLines = Number(_.get(context, 'settings.jsdoc.maxLines', 1));\n\n // `check-tag-names` and many returns/param rules\n settings.tagNamePreference = _.get(context, 'settings.jsdoc.tagNamePreference') || {};\n\n // `check-types` and `no-undefined-types`\n settings.preferredTypes = _.get(context, 'settings.jsdoc.preferredTypes') || {};\n\n // `require-param`, `require-description`, `require-example`, `require-returns`\n settings.overrideReplacesDocs = _.get(context, 'settings.jsdoc.overrideReplacesDocs');\n settings.implementsReplacesDocs = _.get(context, 'settings.jsdoc.implementsReplacesDocs');\n settings.augmentsExtendsReplacesDocs = _.get(context, 'settings.jsdoc.augmentsExtendsReplacesDocs');\n\n return settings;\n};\n\n/**\n * Create the report function\n *\n * @param {object} context\n * @param {object} commentNode\n */\nconst makeReport = (context, commentNode) => {\n const report = (message, fix = null, jsdocLoc = null, data = null) => {\n let loc;\n\n if (jsdocLoc) {\n const lineNumber = commentNode.loc.start.line + jsdocLoc.line;\n\n loc = {\n end: {line: lineNumber},\n start: {line: lineNumber},\n };\n if (jsdocLoc.column) {\n const colNumber = commentNode.loc.start.column + jsdocLoc.column;\n\n loc.end.column = colNumber;\n loc.start.column = colNumber;\n }\n }\n\n context.report({\n data,\n fix,\n loc,\n message,\n node: commentNode,\n });\n };\n\n return report;\n};\n\n/**\n * @typedef {ReturnType<typeof getUtils>} Utils\n * @typedef {ReturnType<typeof getSettings>} Settings\n * @typedef {(\n * arg: {\n * context: Object,\n * sourceCode: Object,\n * indent: string,\n * jsdoc: Object,\n * jsdocNode: Object,\n * node: Object | null,\n * report: ReturnType<typeof makeReport>,\n * settings: Settings,\n * utils: Utils,\n * }\n * ) => any } JsdocVisitor\n */\n\n/**\n * Create an eslint rule that iterates over all JSDocs, regardless of whether\n * they are attached to a function-like node.\n *\n * @param {JsdocVisitor} iterator\n * @param {{meta: any}} ruleConfig\n */\nconst iterateAllJsdocs = (iterator, ruleConfig) => {\n return {\n create (context) {\n return {\n 'Program' () {\n const sourceCode = context.getSourceCode();\n const comments = sourceCode.getAllComments();\n\n comments.forEach((comment) => {\n if (!sourceCode.getText(comment).startsWith('/**')) {\n return;\n }\n\n const sourceLine = sourceCode.lines[comment.loc.start.line - 1];\n const indent = sourceLine.charAt(0).repeat(comment.loc.start.column);\n const jsdoc = parseComment(comment, indent, !ruleConfig.noTrim);\n const settings = getSettings(context);\n const report = makeReport(context, comment);\n const jsdocNode = comment;\n\n iterator({\n context,\n indent,\n jsdoc,\n jsdocNode,\n node: null,\n report,\n settings,\n sourceCode,\n utils: getUtils(null, jsdoc, jsdocNode, settings, report, context),\n });\n });\n },\n };\n },\n meta: ruleConfig.meta,\n };\n};\n\nexport {\n getSettings,\n parseComment,\n};\n\n/**\n * @param {JsdocVisitor} iterator\n * @param {{\n * meta: any,\n * contextDefaults?: true | string[],\n * iterateAllJsdocs?: true,\n * }} ruleConfig\n */\nexport default function iterateJsdoc (iterator, ruleConfig) {\n const metaType = _.get(ruleConfig, 'meta.type');\n if (!metaType || !['problem', 'suggestion', 'layout'].includes(metaType)) {\n throw new TypeError('Rule must include `meta.type` option (with value \"problem\", \"suggestion\", or \"layout\")');\n }\n if (typeof iterator !== 'function') {\n throw new TypeError('The iterator argument must be a function.');\n }\n\n if (ruleConfig.iterateAllJsdocs) {\n return iterateAllJsdocs(iterator, {\n meta: ruleConfig.meta,\n noTrim: ruleConfig.noTrim,\n });\n }\n\n return {\n /**\n * The entrypoint for the JSDoc rule.\n *\n * @param {*} context\n * a reference to the context which hold all important information\n * like settings and the sourcecode to check.\n * @returns {object}\n * a list with parser callback function.\n */\n create (context) {\n const sourceCode = context.getSourceCode();\n\n const settings = getSettings(context);\n\n const checkJsdoc = (node) => {\n const jsdocNode = getJSDocComment(sourceCode, node, settings);\n\n if (!jsdocNode) {\n return;\n }\n\n const sourceLine = sourceCode.lines[jsdocNode.loc.start.line - 1];\n\n const indent = sourceLine.charAt(0).repeat(jsdocNode.loc.start.column);\n\n const jsdoc = parseComment(jsdocNode, indent);\n\n const report = makeReport(context, jsdocNode);\n\n const utils = getUtils(\n node,\n jsdoc,\n jsdocNode,\n settings,\n report,\n context,\n );\n\n if (\n settings.ignorePrivate &&\n utils.hasTag('private')\n ) {\n return;\n }\n\n iterator({\n context,\n indent,\n jsdoc,\n jsdocNode,\n node,\n report,\n settings,\n sourceCode,\n utils,\n });\n };\n\n if (ruleConfig.contextDefaults) {\n const contexts = jsdocUtils.enforcedContexts(context, ruleConfig.contextDefaults);\n\n return jsdocUtils.getContextObject(contexts, checkJsdoc);\n }\n\n return {\n ArrowFunctionExpression: checkJsdoc,\n FunctionDeclaration: checkJsdoc,\n FunctionExpression: checkJsdoc,\n };\n },\n meta: ruleConfig.meta,\n };\n}\n"],"file":"iterateJsdoc.js"}
|
package/dist/jsdocUtils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/jsdocUtils.js"],"names":["tagNames","closureTags","getFunctionParameterNames","functionNode","getParamName","param","_","has","name","left","type","get","argument","parameter","Error","params","map","getJsdocParameterNamesDeep","jsdoc","targetTagName","jsdocParameterNames","filter","tags","tag","getJsdocParameterNames","includes","getPreferredTagName","tagPreference","prefValues","values","some","prefVal","replacement","preferredTagName","findKey","aliases","isValidTag","definedTags","validTagNames","keys","concat","flatten","additionalTags","allTags","hasTag","targetTagLower","toLowerCase","doc","hasATag","targetTagNames","hasDefinedTypeReturnTag","tagType","trim","tagsWithMandatoryType","tagsWithOptionalType","namepathDefiningTags","tagsWithOptionalNamepath","tagsWithMandatoryNamepath","tagsWithMandatoryTypeOrNamepath","isNamepathDefiningTag","tagName","tagMightHaveType","tagMustHaveType","tagMightHaveNamepath","tagMustHaveNamepath","tagMightHaveEitherTypeOrNamepath","tagMustHaveEitherTypeOrNamepath","hasReturnValue","node","expression","body","bodyNode","consequent","alternate","block","handler","finalizer","cases","someCase","parseClosureTemplateTag","source","split","enforcedContexts","context","defaultContexts","options","contexts","getContextObject","checkJsdoc","reduce","obj","prop","filterTags","tagsWithNamesAndDescriptions","getTagsByType","descName","tagsWithoutNames","tagsWithNames","tagWithName","push","getAncestor","sourceCode","nde","depth","idx","prevToken","getTokenBefore","getIndent","indent","text","match","charAt"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport {closureTags} from './tagNames';\n\n// Todo: Distinguish closure tags\nconst tagNames = closureTags;\n\nconst getFunctionParameterNames = (functionNode : Object) : Array<string> => {\n const getParamName = (param) => {\n if (_.has(param, 'name')) {\n return param.name;\n }\n\n if (_.has(param, 'left.name')) {\n return param.left.name;\n }\n\n if (param.type === 'ObjectPattern' || _.get(param, 'left.type') === 'ObjectPattern') {\n return '<ObjectPattern>';\n }\n\n if (param.type === 'ArrayPattern' || _.get(param, 'left.type') === 'ArrayPattern') {\n return '<ArrayPattern>';\n }\n\n if (param.type === 'RestElement') {\n return param.argument.name;\n }\n\n if (param.type === 'TSParameterProperty') {\n return getParamName(param.parameter);\n }\n\n throw new Error('Unsupported function signature format.');\n };\n\n return functionNode.params.map(getParamName);\n};\n\n/**\n * Gets all parameter names, including those that refer to a path, e.g. \"@param foo; @param foo.bar\".\n */\nconst getJsdocParameterNamesDeep = (jsdoc : Object, targetTagName : string) : Array<string> => {\n let jsdocParameterNames;\n\n jsdocParameterNames = _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n jsdocParameterNames = _.map(jsdocParameterNames, 'name');\n\n return jsdocParameterNames;\n};\n\nconst getJsdocParameterNames = (jsdoc : Object, targetTagName : string) : Array<string> => {\n let jsdocParameterNames;\n\n jsdocParameterNames = getJsdocParameterNamesDeep(jsdoc, targetTagName);\n\n jsdocParameterNames = jsdocParameterNames.filter((name) => {\n return !name.includes('.');\n });\n\n return jsdocParameterNames;\n};\n\nconst getPreferredTagName = (name : string, tagPreference : Object = {}) : string => {\n const prefValues = _.values(tagPreference);\n if (prefValues.includes(name) || prefValues.some((prefVal) => {\n return prefVal && typeof prefVal === 'object' && prefVal.replacement === name;\n })) {\n return name;\n }\n\n if (_.has(tagPreference, name)) {\n return tagPreference[name];\n }\n\n const preferredTagName = _.findKey(tagNames, (aliases) => {\n return aliases.includes(name);\n });\n if (preferredTagName) {\n return preferredTagName;\n }\n\n return name;\n};\n\nconst isValidTag = (name : string, definedTags : Array) : boolean => {\n const validTagNames = _.keys(tagNames).concat(_.flatten(_.values(tagNames)));\n const additionalTags = definedTags;\n const allTags = validTagNames.concat(additionalTags);\n\n return allTags.includes(name);\n};\n\nconst hasTag = (jsdoc : Object, targetTagName : string) : boolean => {\n const targetTagLower = targetTagName.toLowerCase();\n\n return _.some(jsdoc.tags, (doc : Object) => {\n return doc.tag.toLowerCase() === targetTagLower;\n });\n};\n\nconst hasATag = (jsdoc : Object, targetTagNames : Array) : boolean => {\n return targetTagNames.some((targetTagName) => {\n return hasTag(jsdoc, targetTagName);\n });\n};\n\n/**\n * Checks if the JSDoc comment declares a return value.\n *\n * @param {JsDocTag} tag\n * the tag which should be checked.\n * @returns {boolean}\n * true in case a return value is declared; otherwise false.\n */\nconst hasDefinedTypeReturnTag = (tag) => {\n // The function should not continue in the event @returns is not defined...\n if (typeof tag === 'undefined' || tag === null) {\n return false;\n }\n\n // .. same applies if it declares `@returns {undefined}` or `@returns {void}`\n const tagType = tag.type.trim();\n if (tagType === 'undefined' || tagType === 'void') {\n return false;\n }\n\n // In any other case, something must be returned, and\n // a return statement is expected\n return true;\n};\n\n// Todo: These type and namepath tag listings currently look\n// at tags with `{...}` as being a type, but jsdoc may\n// allow some namepaths only within brackets as well\n\nconst tagsWithMandatoryType = [\n // These both show curly brackets in the doc signature and examples\n // \"typeExpression\"\n 'implements',\n\n // \"typeName\"\n 'type',\n];\n\n// All of these have a signature with \"type\" except for\n// `augments`/`extends` (\"namepath\")\n// `param`/`arg`/`argument` (no signature)\n// `property`/`prop` (no signature)\n// `modifies` (undocumented)\nconst tagsWithOptionalType = [\n // These have the example showing curly brackets but not in their doc signature, e.g.: https://jsdoc.app/tags-enum.html\n 'enum',\n 'member', 'var',\n\n 'typedef',\n\n // These do not show curly brackets in either the signature or examples\n 'augments', 'extends',\n\n 'class', 'constructor',\n 'constant', 'const',\n\n // These show the signature with curly brackets but not in the example\n 'module',\n 'namespace',\n\n // These have no formal signature in the docs but show curly brackets\n // in the examples\n 'param', 'arg', 'argument',\n 'property', 'prop',\n\n // These show curly brackets in the signature and in the examples\n 'returns', 'return',\n 'throws', 'exception',\n 'yields', 'yield',\n\n // Todo: Omit these GCC specific items when in non-GCC mode after landing https://github.com/gajus/eslint-plugin-jsdoc/issues/356\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n 'package',\n 'private',\n 'protected',\n\n // These do not show a signature nor show curly brackets in the example\n 'public',\n 'static',\n\n // Has no documentation, but test example has curly brackets, and\n // \"name\" would be suggested rather than \"namepath\" based on example; not\n // sure if name is required\n 'modifies',\n];\n\n// None of these show as having curly brackets for their name/namepath\nconst namepathDefiningTags = [\n // These appear to require a \"name\" in their signature, albeit these\n // are somewhat different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n 'external', 'host',\n 'event',\n\n // These allow for \"name\"'s in their signature, but indicate as optional\n 'class', 'constructor',\n 'constant', 'const',\n 'function', 'func', 'method',\n 'interface',\n 'member', 'var',\n 'mixin',\n 'namespace',\n\n // Todo: Should add `module` here (with optional \"name\" and no curly brackets);\n // this block impacts `no-undefined-types` and `valid-types` (search for \"isNamepathDefiningTag|tagMightHaveNamepath|tagMightHaveEitherTypeOrNamepath\")\n\n // These seem to all require a \"namepath\" in their signatures (with no counter-examples)\n 'name',\n 'typedef',\n 'callback',\n];\n\n// The following do not seem to allow curly brackets in their doc\n// signature or examples (besides `modifies`)\nconst tagsWithOptionalNamepath = [\n ...namepathDefiningTags,\n\n // `borrows` has a different format, however, so needs special parsing;\n // seems to require both, and as \"namepath\"'s\n 'borrows',\n\n // Signature seems to require a \"name\" (of an event) and no counter-examples\n 'emits', 'fires',\n 'listens',\n\n // Signature seems to require a \"namepath\" (and no counter-examples)\n 'alias',\n 'augments', 'extends',\n 'lends',\n 'this',\n\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n 'memberof', 'memberof!',\n\n // Signature seems to require a \"OtherObjectPath\" with no counter-examples\n 'mixes',\n\n // Signature allows for \"namepath\" or text\n 'see',\n];\n\n// Todo: `@link` seems to require a namepath OR URL and might be checked as such.\n\n// The doc signature of `event` seems to require a \"name\"\nconst tagsWithMandatoryNamepath = [\n // \"name\" (and a special syntax for the `external` name)\n 'external', 'host',\n\n // \"namepath\"\n 'callback',\n 'name',\n 'typedef',\n];\n\nconst tagsWithMandatoryTypeOrNamepath = [\n // \"namepath\"\n 'alias',\n 'augments', 'extends',\n 'borrows',\n 'lends',\n 'memberof', 'memberof!',\n 'name',\n 'this',\n 'typedef',\n\n // \"name\"\n 'external', 'host',\n\n // \"OtherObjectPath\"\n 'mixes',\n];\n\nconst isNamepathDefiningTag = (tagName) => {\n return namepathDefiningTags.includes(tagName);\n};\n\nconst tagMightHaveType = (tag) => {\n return tagsWithMandatoryType.includes(tag) || tagsWithOptionalType.includes(tag);\n};\n\nconst tagMustHaveType = (tag) => {\n return tagsWithMandatoryType.includes(tag);\n};\n\nconst tagMightHaveNamepath = (tag) => {\n return tagsWithOptionalNamepath.includes(tag);\n};\n\nconst tagMustHaveNamepath = (tag) => {\n return tagsWithMandatoryNamepath.includes(tag);\n};\n\nconst tagMightHaveEitherTypeOrNamepath = (tag) => {\n return tagMightHaveType(tag) || tagMightHaveNamepath(tag);\n};\n\nconst tagMustHaveEitherTypeOrNamepath = (tag) => {\n return tagsWithMandatoryTypeOrNamepath.includes(tag);\n};\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n *\n * @param {object} node\n * @returns {boolean}\n */\n// eslint-disable-next-line complexity\nconst hasReturnValue = (node) => {\n if (!node) {\n return false;\n }\n switch (node.type) {\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return node.expression || hasReturnValue(node.body);\n }\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasReturnValue(bodyNode);\n });\n }\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasReturnValue(node.body);\n }\n case 'IfStatement': {\n return hasReturnValue(node.consequent) || hasReturnValue(node.alternate);\n }\n case 'TryStatement': {\n return hasReturnValue(node.block) ||\n hasReturnValue(node.handler && node.handler.body) ||\n hasReturnValue(node.finalizer);\n }\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some(hasReturnValue);\n }\n );\n }\n case 'ReturnStatement': {\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n return true;\n }\n default: {\n return false;\n }\n }\n};\n\n/** @param {string} tag */\n/*\nconst isInlineTag = (tag) => {\n return /^(@link|@linkcode|@linkplain|@tutorial) /.test(tag);\n};\n*/\n\n/**\n * Parses GCC Generic/Template types\n *\n * @see {https://github.com/google/closure-compiler/wiki/Generic-Types}\n * @param {JsDocTag} tag\n * @returns {Array<string>}\n */\nconst parseClosureTemplateTag = (tag) => {\n return tag.source\n .split('@template')[1]\n .split(',')\n .map((type) => {\n return type.trim();\n });\n};\n\n/**\n * Checks user option for `contexts` array, defaulting to\n * contexts designated by the rule. Returns an array of\n * ESTree AST types, indicating allowable contexts.\n *\n * @param {*} context\n * @param {true|string[]} defaultContexts\n * @returns {string[]}\n */\nconst enforcedContexts = (context, defaultContexts) => {\n const {\n /* istanbul ignore next */\n contexts = defaultContexts === true ? [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ] : defaultContexts,\n } = context.options[0] || {};\n\n return contexts;\n};\n\n/**\n * @param {string[]} contexts\n * @param {Function} checkJsdoc\n */\nconst getContextObject = (contexts, checkJsdoc) => {\n return contexts.reduce((obj, prop) => {\n obj[prop] = checkJsdoc;\n\n return obj;\n }, {});\n};\n\nconst filterTags = (tags = [], filter) => {\n return tags.filter(filter);\n};\n\nconst tagsWithNamesAndDescriptions = [\n 'param', 'arg', 'argument', 'property', 'prop',\n\n // These two are parsed by our custom parser as though having a `name`\n 'returns', 'return',\n];\n\nconst getTagsByType = (tags, tagPreference) => {\n const descName = getPreferredTagName('description', tagPreference);\n const tagsWithoutNames = [];\n const tagsWithNames = filterTags(tags, (tag) => {\n const {tag: tagName} = tag;\n const tagWithName = tagsWithNamesAndDescriptions.includes(tagName);\n if (!tagWithName && tagName !== descName) {\n tagsWithoutNames.push(tag);\n }\n\n return tagWithName;\n });\n\n return {\n tagsWithNames,\n tagsWithoutNames,\n };\n};\n\nconst getAncestor = (sourceCode, nde, depth, idx = 0) => {\n if (idx === depth) {\n return nde;\n }\n const prevToken = sourceCode.getTokenBefore(nde);\n if (prevToken) {\n return getAncestor(sourceCode, prevToken, depth, idx + 1);\n }\n\n return null;\n};\n\nconst getIndent = (sourceCode) => {\n let indent = sourceCode.text.match(/^\\n*([ \\t]+)/);\n /* istanbul ignore next */\n indent = indent ? indent[1] + indent[1].charAt() : ' ';\n\n return indent;\n};\n\nexport default {\n enforcedContexts,\n filterTags,\n getAncestor,\n getContextObject,\n getFunctionParameterNames,\n getIndent,\n getJsdocParameterNames,\n getJsdocParameterNamesDeep,\n getPreferredTagName,\n getTagsByType,\n hasATag,\n hasDefinedTypeReturnTag,\n hasReturnValue,\n hasTag,\n isNamepathDefiningTag,\n isValidTag,\n parseClosureTemplateTag,\n tagMightHaveEitherTypeOrNamepath,\n tagMightHaveNamepath,\n tagMightHaveType,\n tagMustHaveEitherTypeOrNamepath,\n tagMustHaveNamepath,\n tagMustHaveType,\n};\n"],"file":"jsdocUtils.js"}
|
|
1
|
+
{"version":3,"sources":["../src/jsdocUtils.js"],"names":["tagNames","closureTags","getFunctionParameterNames","functionNode","getParamName","param","_","has","name","left","type","get","argument","parameter","Error","params","map","getJsdocParameterNamesDeep","jsdoc","targetTagName","jsdocParameterNames","filter","tags","tag","getJsdocParameterNames","includes","getPreferredTagName","tagPreference","prefValues","values","some","prefVal","replacement","preferredTagName","findKey","aliases","isValidTag","definedTags","validTagNames","keys","concat","flatten","additionalTags","allTags","hasTag","targetTagLower","toLowerCase","doc","hasATag","targetTagNames","hasDefinedTypeReturnTag","tagType","trim","tagsWithMandatoryType","tagsWithOptionalType","namepathDefiningTags","tagsWithOptionalNamepath","tagsWithMandatoryNamepath","tagsWithMandatoryTypeOrNamepath","isNamepathDefiningTag","tagName","tagMightHaveType","tagMustHaveType","tagMightHaveNamepath","tagMustHaveNamepath","tagMightHaveEitherTypeOrNamepath","tagMustHaveEitherTypeOrNamepath","hasReturnValue","node","expression","body","bodyNode","consequent","alternate","block","handler","finalizer","cases","someCase","parseClosureTemplateTag","source","split","enforcedContexts","context","defaultContexts","options","contexts","getContextObject","checkJsdoc","reduce","obj","prop","filterTags","tagsWithNamesAndDescriptions","getTagsByType","descName","tagsWithoutNames","tagsWithNames","tagWithName","push","getAncestor","sourceCode","nde","depth","idx","prevToken","getTokenBefore","getIndent","indent","text","match","charAt"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport {closureTags} from './tagNames';\n\n// Todo: Distinguish closure tags\nconst tagNames = closureTags;\n\nconst getFunctionParameterNames = (functionNode : Object) : Array<string> => {\n const getParamName = (param) => {\n if (_.has(param, 'name')) {\n return param.name;\n }\n\n if (_.has(param, 'left.name')) {\n return param.left.name;\n }\n\n if (param.type === 'ObjectPattern' || _.get(param, 'left.type') === 'ObjectPattern') {\n return '<ObjectPattern>';\n }\n\n if (param.type === 'ArrayPattern' || _.get(param, 'left.type') === 'ArrayPattern') {\n return '<ArrayPattern>';\n }\n\n if (param.type === 'RestElement') {\n return param.argument.name;\n }\n\n if (param.type === 'TSParameterProperty') {\n return getParamName(param.parameter);\n }\n\n throw new Error('Unsupported function signature format.');\n };\n\n return functionNode.params.map(getParamName);\n};\n\n/**\n * Gets all parameter names, including those that refer to a path, e.g. \"@param foo; @param foo.bar\".\n */\nconst getJsdocParameterNamesDeep = (jsdoc : Object, targetTagName : string) : Array<string> => {\n let jsdocParameterNames;\n\n jsdocParameterNames = _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n jsdocParameterNames = _.map(jsdocParameterNames, 'name');\n\n return jsdocParameterNames;\n};\n\nconst getJsdocParameterNames = (jsdoc : Object, targetTagName : string) : Array<string> => {\n let jsdocParameterNames;\n\n jsdocParameterNames = getJsdocParameterNamesDeep(jsdoc, targetTagName);\n\n jsdocParameterNames = jsdocParameterNames.filter((name) => {\n return !name.includes('.');\n });\n\n return jsdocParameterNames;\n};\n\nconst getPreferredTagName = (name : string, tagPreference : Object = {}) : string => {\n const prefValues = _.values(tagPreference);\n if (prefValues.includes(name) || prefValues.some((prefVal) => {\n return prefVal && typeof prefVal === 'object' && prefVal.replacement === name;\n })) {\n return name;\n }\n\n if (_.has(tagPreference, name)) {\n return tagPreference[name];\n }\n\n const preferredTagName = _.findKey(tagNames, (aliases) => {\n return aliases.includes(name);\n });\n if (preferredTagName) {\n return preferredTagName;\n }\n\n return name;\n};\n\nconst isValidTag = (name : string, definedTags : Array) : boolean => {\n const validTagNames = _.keys(tagNames).concat(_.flatten(_.values(tagNames)));\n const additionalTags = definedTags;\n const allTags = validTagNames.concat(additionalTags);\n\n return allTags.includes(name);\n};\n\nconst hasTag = (jsdoc : Object, targetTagName : string) : boolean => {\n const targetTagLower = targetTagName.toLowerCase();\n\n return _.some(jsdoc.tags, (doc : Object) => {\n return doc.tag.toLowerCase() === targetTagLower;\n });\n};\n\nconst hasATag = (jsdoc : Object, targetTagNames : Array) : boolean => {\n return targetTagNames.some((targetTagName) => {\n return hasTag(jsdoc, targetTagName);\n });\n};\n\n/**\n * Checks if the JSDoc comment declares a return value.\n *\n * @param {JsDocTag} tag\n * the tag which should be checked.\n * @returns {boolean}\n * true in case a return value is declared; otherwise false.\n */\nconst hasDefinedTypeReturnTag = (tag) => {\n // The function should not continue in the event @returns is not defined...\n if (typeof tag === 'undefined' || tag === null) {\n return false;\n }\n\n // .. same applies if it declares `@returns {undefined}` or `@returns {void}`\n const tagType = tag.type.trim();\n if (tagType === 'undefined' || tagType === 'void') {\n return false;\n }\n\n // In any other case, something must be returned, and\n // a return statement is expected\n return true;\n};\n\n// Todo: These type and namepath tag listings currently look\n// at tags with `{...}` as being a type, but jsdoc may\n// allow some namepaths only within brackets as well\n\nconst tagsWithMandatoryType = [\n // These both show curly brackets in the doc signature and examples\n // \"typeExpression\"\n 'implements',\n\n // \"typeName\"\n 'type',\n];\n\n// All of these have a signature with \"type\" except for\n// `augments`/`extends` (\"namepath\")\n// `param`/`arg`/`argument` (no signature)\n// `property`/`prop` (no signature)\n// `modifies` (undocumented)\nconst tagsWithOptionalType = [\n // These have the example showing curly brackets but not in their doc signature, e.g.: https://jsdoc.app/tags-enum.html\n 'enum',\n 'member', 'var',\n\n 'typedef',\n\n // These do not show curly brackets in either the signature or examples\n 'augments', 'extends',\n\n 'class', 'constructor',\n 'constant', 'const',\n\n // These show the signature with curly brackets but not in the example\n 'module',\n 'namespace',\n\n // These have no formal signature in the docs but show curly brackets\n // in the examples\n 'param', 'arg', 'argument',\n 'property', 'prop',\n\n // These show curly brackets in the signature and in the examples\n 'returns', 'return',\n 'throws', 'exception',\n 'yields', 'yield',\n\n // Todo: Omit these GCC specific items when in non-GCC mode after landing https://github.com/gajus/eslint-plugin-jsdoc/issues/356\n // Shows the signature with curly brackets but not in the example\n // \"typeExpression\"\n 'package',\n 'private',\n 'protected',\n\n // These do not show a signature nor show curly brackets in the example\n 'public',\n 'static',\n\n // Has no documentation, but test example has curly brackets, and\n // \"name\" would be suggested rather than \"namepath\" based on example; not\n // sure if name is required\n 'modifies',\n];\n\n// None of these show as having curly brackets for their name/namepath\nconst namepathDefiningTags = [\n // These appear to require a \"name\" in their signature, albeit these\n // are somewhat different from other \"name\"'s (including as described\n // at https://jsdoc.app/about-namepaths.html )\n 'external', 'host',\n 'event',\n\n // These allow for \"name\"'s in their signature, but indicate as optional\n 'class', 'constructor',\n 'constant', 'const',\n 'function', 'func', 'method',\n 'interface',\n 'member', 'var',\n 'mixin',\n 'namespace',\n\n // Todo: Should add `module` here (with optional \"name\" and no curly brackets);\n // this block impacts `no-undefined-types` and `valid-types` (search for \"isNamepathDefiningTag|tagMightHaveNamepath|tagMightHaveEitherTypeOrNamepath\")\n\n // These seem to all require a \"namepath\" in their signatures (with no counter-examples)\n 'name',\n 'typedef',\n 'callback',\n];\n\n// The following do not seem to allow curly brackets in their doc\n// signature or examples (besides `modifies`)\nconst tagsWithOptionalNamepath = [\n ...namepathDefiningTags,\n\n // `borrows` has a different format, however, so needs special parsing;\n // seems to require both, and as \"namepath\"'s\n 'borrows',\n\n // Signature seems to require a \"name\" (of an event) and no counter-examples\n 'emits', 'fires',\n 'listens',\n\n // Signature seems to require a \"namepath\" (and no counter-examples)\n 'alias',\n 'augments', 'extends',\n 'lends',\n 'this',\n\n // Signature seems to require a \"namepath\" (and no counter-examples),\n // though it allows an incomplete namepath ending with connecting symbol\n 'memberof', 'memberof!',\n\n // Signature seems to require a \"OtherObjectPath\" with no counter-examples\n 'mixes',\n\n // Signature allows for \"namepath\" or text\n 'see',\n];\n\n// Todo: `@link` seems to require a namepath OR URL and might be checked as such.\n\n// The doc signature of `event` seems to require a \"name\"\nconst tagsWithMandatoryNamepath = [\n // \"name\" (and a special syntax for the `external` name)\n 'external', 'host',\n\n // \"namepath\"\n 'callback',\n 'name',\n 'typedef',\n];\n\nconst tagsWithMandatoryTypeOrNamepath = [\n // \"namepath\"\n 'alias',\n 'augments', 'extends',\n 'borrows',\n 'lends',\n 'memberof', 'memberof!',\n 'name',\n 'this',\n 'typedef',\n\n // \"name\"\n 'external', 'host',\n\n // \"OtherObjectPath\"\n 'mixes',\n];\n\nconst isNamepathDefiningTag = (tagName) => {\n return namepathDefiningTags.includes(tagName);\n};\n\nconst tagMightHaveType = (tag) => {\n return tagsWithMandatoryType.includes(tag) || tagsWithOptionalType.includes(tag);\n};\n\nconst tagMustHaveType = (tag) => {\n return tagsWithMandatoryType.includes(tag);\n};\n\nconst tagMightHaveNamepath = (tag) => {\n return tagsWithOptionalNamepath.includes(tag);\n};\n\nconst tagMustHaveNamepath = (tag) => {\n return tagsWithMandatoryNamepath.includes(tag);\n};\n\nconst tagMightHaveEitherTypeOrNamepath = (tag) => {\n return tagMightHaveType(tag) || tagMightHaveNamepath(tag);\n};\n\nconst tagMustHaveEitherTypeOrNamepath = (tag) => {\n return tagsWithMandatoryTypeOrNamepath.includes(tag);\n};\n\n/**\n * Checks if a node has a return statement. Void return does not count.\n *\n * @param {object} node\n * @returns {boolean}\n */\n// eslint-disable-next-line complexity\nconst hasReturnValue = (node) => {\n if (!node) {\n return false;\n }\n switch (node.type) {\n case 'FunctionExpression':\n case 'FunctionDeclaration':\n case 'ArrowFunctionExpression': {\n return node.expression || hasReturnValue(node.body);\n }\n case 'BlockStatement': {\n return node.body.some((bodyNode) => {\n return bodyNode.type !== 'FunctionDeclaration' && hasReturnValue(bodyNode);\n });\n }\n case 'WhileStatement':\n case 'DoWhileStatement':\n case 'ForStatement':\n case 'ForInStatement':\n case 'ForOfStatement':\n case 'WithStatement': {\n return hasReturnValue(node.body);\n }\n case 'IfStatement': {\n return hasReturnValue(node.consequent) || hasReturnValue(node.alternate);\n }\n case 'TryStatement': {\n return hasReturnValue(node.block) ||\n hasReturnValue(node.handler && node.handler.body) ||\n hasReturnValue(node.finalizer);\n }\n case 'SwitchStatement': {\n return node.cases.some(\n (someCase) => {\n return someCase.consequent.some(hasReturnValue);\n },\n );\n }\n case 'ReturnStatement': {\n // void return does not count.\n if (node.argument === null) {\n return false;\n }\n\n return true;\n }\n default: {\n return false;\n }\n }\n};\n\n/** @param {string} tag */\n/*\nconst isInlineTag = (tag) => {\n return /^(@link|@linkcode|@linkplain|@tutorial) /.test(tag);\n};\n*/\n\n/**\n * Parses GCC Generic/Template types\n *\n * @see {https://github.com/google/closure-compiler/wiki/Generic-Types}\n * @param {JsDocTag} tag\n * @returns {Array<string>}\n */\nconst parseClosureTemplateTag = (tag) => {\n return tag.source\n .split('@template')[1]\n .split(',')\n .map((type) => {\n return type.trim();\n });\n};\n\n/**\n * Checks user option for `contexts` array, defaulting to\n * contexts designated by the rule. Returns an array of\n * ESTree AST types, indicating allowable contexts.\n *\n * @param {*} context\n * @param {true|string[]} defaultContexts\n * @returns {string[]}\n */\nconst enforcedContexts = (context, defaultContexts) => {\n const {\n /* istanbul ignore next */\n contexts = defaultContexts === true ? [\n 'ArrowFunctionExpression',\n 'FunctionDeclaration',\n 'FunctionExpression',\n ] : defaultContexts,\n } = context.options[0] || {};\n\n return contexts;\n};\n\n/**\n * @param {string[]} contexts\n * @param {Function} checkJsdoc\n */\nconst getContextObject = (contexts, checkJsdoc) => {\n return contexts.reduce((obj, prop) => {\n obj[prop] = checkJsdoc;\n\n return obj;\n }, {});\n};\n\nconst filterTags = (tags = [], filter) => {\n return tags.filter(filter);\n};\n\nconst tagsWithNamesAndDescriptions = [\n 'param', 'arg', 'argument', 'property', 'prop',\n\n // These two are parsed by our custom parser as though having a `name`\n 'returns', 'return',\n];\n\nconst getTagsByType = (tags, tagPreference) => {\n const descName = getPreferredTagName('description', tagPreference);\n const tagsWithoutNames = [];\n const tagsWithNames = filterTags(tags, (tag) => {\n const {tag: tagName} = tag;\n const tagWithName = tagsWithNamesAndDescriptions.includes(tagName);\n if (!tagWithName && tagName !== descName) {\n tagsWithoutNames.push(tag);\n }\n\n return tagWithName;\n });\n\n return {\n tagsWithNames,\n tagsWithoutNames,\n };\n};\n\nconst getAncestor = (sourceCode, nde, depth, idx = 0) => {\n if (idx === depth) {\n return nde;\n }\n const prevToken = sourceCode.getTokenBefore(nde);\n if (prevToken) {\n return getAncestor(sourceCode, prevToken, depth, idx + 1);\n }\n\n return null;\n};\n\nconst getIndent = (sourceCode) => {\n let indent = sourceCode.text.match(/^\\n*([ \\t]+)/);\n /* istanbul ignore next */\n indent = indent ? indent[1] + indent[1].charAt() : ' ';\n\n return indent;\n};\n\nexport default {\n enforcedContexts,\n filterTags,\n getAncestor,\n getContextObject,\n getFunctionParameterNames,\n getIndent,\n getJsdocParameterNames,\n getJsdocParameterNamesDeep,\n getPreferredTagName,\n getTagsByType,\n hasATag,\n hasDefinedTypeReturnTag,\n hasReturnValue,\n hasTag,\n isNamepathDefiningTag,\n isValidTag,\n parseClosureTemplateTag,\n tagMightHaveEitherTypeOrNamepath,\n tagMightHaveNamepath,\n tagMightHaveType,\n tagMustHaveEitherTypeOrNamepath,\n tagMustHaveNamepath,\n tagMustHaveType,\n};\n"],"file":"jsdocUtils.js"}
|
|
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _lodash = _interopRequireDefault(require("lodash"));
|
|
9
|
-
|
|
10
8
|
var _iterateJsdoc = _interopRequireDefault(require("../iterateJsdoc"));
|
|
11
9
|
|
|
12
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
11
|
|
|
12
|
+
const trimStart = string => {
|
|
13
|
+
return string.replace(/^\s+/, '');
|
|
14
|
+
};
|
|
15
|
+
|
|
14
16
|
var _default = (0, _iterateJsdoc.default)(({
|
|
15
17
|
sourceCode,
|
|
16
18
|
jsdocNode,
|
|
@@ -22,14 +24,14 @@ var _default = (0, _iterateJsdoc.default)(({
|
|
|
22
24
|
const sourceLines = sourceCode.getText(jsdocNode).split('\n').slice(1).map(line => {
|
|
23
25
|
return line.split('*')[0];
|
|
24
26
|
}).filter(line => {
|
|
25
|
-
return !line
|
|
27
|
+
return !trimStart(line).length;
|
|
26
28
|
});
|
|
27
29
|
|
|
28
30
|
const fix = fixer => {
|
|
29
31
|
const replacement = sourceCode.getText(jsdocNode).split('\n').map((line, index) => {
|
|
30
32
|
// Ignore the first line and all lines not starting with `*`
|
|
31
|
-
const ignored = !index || line.split('*')[0]
|
|
32
|
-
return ignored ? line : `${indent} ${
|
|
33
|
+
const ignored = !index || trimStart(line.split('*')[0]).length;
|
|
34
|
+
return ignored ? line : `${indent} ${trimStart(line)}`;
|
|
33
35
|
}).join('\n');
|
|
34
36
|
return fixer.replaceText(jsdocNode, replacement);
|
|
35
37
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/checkAlignment.js"],"names":["sourceCode","jsdocNode","report","indent","indentLevel","length","sourceLines","getText","split","slice","map","line","filter","
|
|
1
|
+
{"version":3,"sources":["../../src/rules/checkAlignment.js"],"names":["trimStart","string","replace","sourceCode","jsdocNode","report","indent","indentLevel","length","sourceLines","getText","split","slice","map","line","filter","fix","fixer","replacement","index","ignored","join","replaceText","some","lineNum","iterateAllJsdocs","meta","fixable","type"],"mappings":";;;;;;;AAAA;;;;AAEA,MAAMA,SAAS,GAAIC,MAAD,IAAY;AAC5B,SAAOA,MAAM,CAACC,OAAP,CAAe,MAAf,EAAuB,EAAvB,CAAP;AACD,CAFD;;eAIe,2BAAa,CAAC;AAC3BC,EAAAA,UAD2B;AAE3BC,EAAAA,SAF2B;AAG3BC,EAAAA,MAH2B;AAI3BC,EAAAA;AAJ2B,CAAD,KAKtB;AACJ;AACA,QAAMC,WAAW,GAAGD,MAAM,CAACE,MAAP,GAAgB,CAApC;AACA,QAAMC,WAAW,GAAGN,UAAU,CAACO,OAAX,CAAmBN,SAAnB,EAA8BO,KAA9B,CAAoC,IAApC,EACjBC,KADiB,CACX,CADW,EAEjBC,GAFiB,CAEZC,IAAD,IAAU;AACb,WAAOA,IAAI,CAACH,KAAL,CAAW,GAAX,EAAgB,CAAhB,CAAP;AACD,GAJiB,EAKjBI,MALiB,CAKTD,IAAD,IAAU;AAChB,WAAO,CAACd,SAAS,CAACc,IAAD,CAAT,CAAgBN,MAAxB;AACD,GAPiB,CAApB;;AASA,QAAMQ,GAAG,GAAIC,KAAD,IAAW;AACrB,UAAMC,WAAW,GAAGf,UAAU,CAACO,OAAX,CAAmBN,SAAnB,EAA8BO,KAA9B,CAAoC,IAApC,EACjBE,GADiB,CACb,CAACC,IAAD,EAAOK,KAAP,KAAiB;AACpB;AACA,YAAMC,OAAO,GAAG,CAACD,KAAD,IAAUnB,SAAS,CAACc,IAAI,CAACH,KAAL,CAAW,GAAX,EAAgB,CAAhB,CAAD,CAAT,CAA8BH,MAAxD;AAEA,aAAOY,OAAO,GAAGN,IAAH,GAAW,GAAER,MAAO,IAAGN,SAAS,CAACc,IAAD,CAAO,EAArD;AACD,KANiB,EAOjBO,IAPiB,CAOZ,IAPY,CAApB;AASA,WAAOJ,KAAK,CAACK,WAAN,CAAkBlB,SAAlB,EAA6Bc,WAA7B,CAAP;AACD,GAXD;;AAaAT,EAAAA,WAAW,CAACc,IAAZ,CAAiB,CAACT,IAAD,EAAOU,OAAP,KAAmB;AAClC,QAAIV,IAAI,CAACN,MAAL,KAAgBD,WAApB,EAAiC;AAC/BF,MAAAA,MAAM,CAAC,qCAAD,EAAwCW,GAAxC,EAA6C;AACjDF,QAAAA,IAAI,EAAEU,OAAO,GAAG;AADiC,OAA7C,CAAN;AAIA,aAAO,IAAP;AACD;;AAED,WAAO,KAAP;AACD,GAVD;AAWD,CAzCc,EAyCZ;AACDC,EAAAA,gBAAgB,EAAE,IADjB;AAEDC,EAAAA,IAAI,EAAE;AACJC,IAAAA,OAAO,EAAE,MADL;AAEJC,IAAAA,IAAI,EAAE;AAFF;AAFL,CAzCY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nconst trimStart = (string) => {\n return string.replace(/^\\s+/, '');\n};\n\nexport default iterateJsdoc(({\n sourceCode,\n jsdocNode,\n report,\n indent,\n}) => {\n // `indent` is whitespace from line 1 (`/**`), so slice and account for \"/\".\n const indentLevel = indent.length + 1;\n const sourceLines = sourceCode.getText(jsdocNode).split('\\n')\n .slice(1)\n .map((line) => {\n return line.split('*')[0];\n })\n .filter((line) => {\n return !trimStart(line).length;\n });\n\n const fix = (fixer) => {\n const replacement = sourceCode.getText(jsdocNode).split('\\n')\n .map((line, index) => {\n // Ignore the first line and all lines not starting with `*`\n const ignored = !index || trimStart(line.split('*')[0]).length;\n\n return ignored ? line : `${indent} ${trimStart(line)}`;\n })\n .join('\\n');\n\n return fixer.replaceText(jsdocNode, replacement);\n };\n\n sourceLines.some((line, lineNum) => {\n if (line.length !== indentLevel) {\n report('Expected JSDoc block to be aligned.', fix, {\n line: lineNum + 1,\n });\n\n return true;\n }\n\n return false;\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n type: 'layout',\n },\n});\n"],"file":"checkAlignment.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/checkExamples.js"],"names":["zeroBasedLineIndexAdjust","likelyNestedJSDocIndentSpace","preTagSpaceLength","hasCaptionRegex","escapeStringRegexp","str","replace","countChars","ch","match","RegExp","length","report","utils","context","options","exampleCodeRegex","rejectExampleCodeRegex","noDefaultExampleRules","eslintrcForExamples","matchingFileName","filename","paddedIndent","baseConfig","configFile","allowInlineConfig","reportUnusedDisableDirectives","captionRequired","rulePaths","rules","undefined","forEachPreferredTag","tag","targetTagName","firstLinePrefixLength","source","description","trim","test","nonJSPrefacingLines","nonJSPrefacingCols","idx","search","preMatch","slice","preMatchLines","colDelta","lastIndexOf","n0","n1","nonJSPreface","nonJSPrefaceLineCount","index","indexOf","charsInLastLine","cli","CLIEngine","useEslintrc","messages","config","getConfigForFile","cliFile","linter","Linter","executeOnText","error","linterRules","getRules","entries","reduce","obj","key","val","defineRules","parser","defineParser","require","verify","results","codeStartLine","line","codeStartCol","forEach","message","column","severity","ruleId","startLine","startCol","iterateAllJsdocs","meta","schema","additionalProperties","properties","default","type","noTrim"],"mappings":"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","sourcesContent":["import {CLIEngine, Linter} from 'eslint';\nimport iterateJsdoc from '../iterateJsdoc';\nimport warnRemovedSettings from '../warnRemovedSettings';\n\nconst zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\nconst hasCaptionRegex = /^\\s*<caption>(.*?)<\\/caption>/;\n\nconst escapeStringRegexp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'g')) || []).length;\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n}) => {\n warnRemovedSettings(context, 'check-examples');\n const options = context.options[0] || {};\n let {\n exampleCodeRegex = null,\n rejectExampleCodeRegex = null,\n } = options;\n const {\n noDefaultExampleRules = false,\n eslintrcForExamples = true,\n matchingFileName: filename = null,\n paddedIndent = 0,\n baseConfig = {},\n configFile,\n allowInlineConfig = true,\n reportUnusedDisableDirectives = true,\n captionRequired = false,\n } = options;\n\n // Make this configurable?\n const rulePaths = [];\n\n const rules = noDefaultExampleRules ? undefined : {\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n };\n\n exampleCodeRegex = exampleCodeRegex && new RegExp(exampleCodeRegex, '');\n rejectExampleCodeRegex = rejectExampleCodeRegex && new RegExp(rejectExampleCodeRegex, '');\n\n utils.forEachPreferredTag('example', (tag, targetTagName) => {\n // If a space is present, we should ignore it\n const firstLinePrefixLength = preTagSpaceLength;\n\n let source = tag.description;\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n report('Caption is expected for examples.', null, tag);\n }\n\n // If we allow newlines in hasCaptionRegex, we should add to line count\n source = source.replace(hasCaptionRegex, '');\n\n if (exampleCodeRegex && !exampleCodeRegex.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)\n ) {\n return;\n }\n\n let nonJSPrefacingLines = 0;\n let nonJSPrefacingCols = 0;\n\n if (exampleCodeRegex) {\n const idx = source.search(exampleCodeRegex);\n\n // Strip out anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(0, idx);\n\n const preMatchLines = countChars(preMatch, '\\n');\n\n nonJSPrefacingLines = preMatchLines;\n\n const colDelta = preMatchLines ?\n preMatch.slice(preMatch.lastIndexOf('\\n') + 1).length :\n preMatch.length;\n\n // Get rid of text preceding user regex match (even if it leaves valid JS, it\n // could cause us to count newlines twice)\n source = source.slice(idx);\n\n source = source.replace(exampleCodeRegex, (n0, n1) => {\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const index = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, index);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n return n1 || n0;\n });\n }\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const cli = new CLIEngine({\n allowInlineConfig,\n baseConfig,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: eslintrcForExamples,\n });\n\n let messages;\n\n if (paddedIndent) {\n source = source.replace(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'g'), '\\n');\n }\n\n if (filename) {\n const config = cli.getConfigForFile(filename);\n\n // We need a new instance to ensure that the rules that may only\n // be available to `filename` (if it has its own `.eslintrc`),\n // will be defined.\n const cliFile = new CLIEngine({\n allowInlineConfig,\n baseConfig: config,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: eslintrcForExamples,\n });\n\n const linter = new Linter();\n\n // Force external rules to become available on `cli`\n try {\n cliFile.executeOnText('');\n } catch (error) {\n // Ignore\n }\n\n const linterRules = [...cliFile.getRules().entries()].reduce((obj, [key, val]) => {\n obj[key] = val;\n\n return obj;\n }, {});\n\n linter.defineRules(linterRules);\n\n if (config.parser) {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n linter.defineParser(config.parser, require(config.parser));\n }\n\n // Could also support `disableFixes` and `allowInlineConfig`\n messages = linter.verify(source, config, {\n filename,\n reportUnusedDisableDirectives,\n });\n } else {\n ({results: [{messages}]} =\n cli.executeOnText(source));\n }\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = tag.line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n messages.forEach(({message, line, column, severity, ruleId}) => {\n const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;\n const startCol = codeStartCol + (\n\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n // Could perhaps make fixable\n report(\n '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n message,\n null,\n {\n column: startCol,\n line: startLine,\n }\n );\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowInlineConfig: {\n default: true,\n type: 'boolean',\n },\n baseConfig: {\n type: 'object',\n },\n captionRequired: {\n default: false,\n type: 'boolean',\n },\n configFile: {\n type: 'string',\n },\n eslintrcForExamples: {\n default: true,\n type: 'boolean',\n },\n exampleCodeRegex: {\n type: 'string',\n },\n matchingFileName: {\n type: 'string',\n },\n noDefaultExampleRules: {\n default: false,\n type: 'boolean',\n },\n paddedIndent: {\n default: 0,\n type: 'integer',\n },\n rejectExampleCodeRegex: {\n type: 'string',\n },\n reportUnusedDisableDirectives: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n noTrim: true,\n});\n"],"file":"checkExamples.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/checkExamples.js"],"names":["zeroBasedLineIndexAdjust","likelyNestedJSDocIndentSpace","preTagSpaceLength","hasCaptionRegex","escapeStringRegexp","str","replace","countChars","ch","match","RegExp","length","report","utils","context","options","exampleCodeRegex","rejectExampleCodeRegex","noDefaultExampleRules","eslintrcForExamples","matchingFileName","filename","paddedIndent","baseConfig","configFile","allowInlineConfig","reportUnusedDisableDirectives","captionRequired","rulePaths","rules","undefined","forEachPreferredTag","tag","targetTagName","firstLinePrefixLength","source","description","trim","test","nonJSPrefacingLines","nonJSPrefacingCols","idx","search","preMatch","slice","preMatchLines","colDelta","lastIndexOf","n0","n1","nonJSPreface","nonJSPrefaceLineCount","index","indexOf","charsInLastLine","cli","CLIEngine","useEslintrc","messages","config","getConfigForFile","cliFile","linter","Linter","executeOnText","error","linterRules","getRules","entries","reduce","obj","key","val","defineRules","parser","defineParser","require","verify","results","codeStartLine","line","codeStartCol","forEach","message","column","severity","ruleId","startLine","startCol","iterateAllJsdocs","meta","schema","additionalProperties","properties","default","type","noTrim"],"mappings":"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","sourcesContent":["import {CLIEngine, Linter} from 'eslint';\nimport iterateJsdoc from '../iterateJsdoc';\nimport warnRemovedSettings from '../warnRemovedSettings';\n\nconst zeroBasedLineIndexAdjust = -1;\nconst likelyNestedJSDocIndentSpace = 1;\nconst preTagSpaceLength = 1;\nconst hasCaptionRegex = /^\\s*<caption>(.*?)<\\/caption>/;\n\nconst escapeStringRegexp = (str) => {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\nconst countChars = (str, ch) => {\n return (str.match(new RegExp(escapeStringRegexp(ch), 'g')) || []).length;\n};\n\nexport default iterateJsdoc(({\n report,\n utils,\n context,\n}) => {\n warnRemovedSettings(context, 'check-examples');\n const options = context.options[0] || {};\n let {\n exampleCodeRegex = null,\n rejectExampleCodeRegex = null,\n } = options;\n const {\n noDefaultExampleRules = false,\n eslintrcForExamples = true,\n matchingFileName: filename = null,\n paddedIndent = 0,\n baseConfig = {},\n configFile,\n allowInlineConfig = true,\n reportUnusedDisableDirectives = true,\n captionRequired = false,\n } = options;\n\n // Make this configurable?\n const rulePaths = [];\n\n const rules = noDefaultExampleRules ? undefined : {\n // \"always\" newline rule at end unlikely in sample code\n 'eol-last': 0,\n\n // Wouldn't generally expect example paths to resolve relative to JS file\n 'import/no-unresolved': 0,\n\n // Snippets likely too short to always include import/export info\n 'import/unambiguous': 0,\n\n // Unlikely to have inadvertent debugging within examples\n 'no-console': 0,\n\n // Many variables in examples will be `undefined`\n 'no-undef': 0,\n\n // Common to define variables for clarity without always using them\n 'no-unused-vars': 0,\n\n // See import/no-unresolved\n 'node/no-missing-import': 0,\n 'node/no-missing-require': 0,\n\n // Can generally look nicer to pad a little even if code imposes more stringency\n 'padded-blocks': 0,\n };\n\n exampleCodeRegex = exampleCodeRegex && new RegExp(exampleCodeRegex, '');\n rejectExampleCodeRegex = rejectExampleCodeRegex && new RegExp(rejectExampleCodeRegex, '');\n\n utils.forEachPreferredTag('example', (tag, targetTagName) => {\n // If a space is present, we should ignore it\n const firstLinePrefixLength = preTagSpaceLength;\n\n let source = tag.description;\n const match = source.match(hasCaptionRegex);\n\n if (captionRequired && (!match || !match[1].trim())) {\n report('Caption is expected for examples.', null, tag);\n }\n\n // If we allow newlines in hasCaptionRegex, we should add to line count\n source = source.replace(hasCaptionRegex, '');\n\n if (exampleCodeRegex && !exampleCodeRegex.test(source) ||\n rejectExampleCodeRegex && rejectExampleCodeRegex.test(source)\n ) {\n return;\n }\n\n let nonJSPrefacingLines = 0;\n let nonJSPrefacingCols = 0;\n\n if (exampleCodeRegex) {\n const idx = source.search(exampleCodeRegex);\n\n // Strip out anything preceding user regex match (can affect line numbering)\n const preMatch = source.slice(0, idx);\n\n const preMatchLines = countChars(preMatch, '\\n');\n\n nonJSPrefacingLines = preMatchLines;\n\n const colDelta = preMatchLines ?\n preMatch.slice(preMatch.lastIndexOf('\\n') + 1).length :\n preMatch.length;\n\n // Get rid of text preceding user regex match (even if it leaves valid JS, it\n // could cause us to count newlines twice)\n source = source.slice(idx);\n\n source = source.replace(exampleCodeRegex, (n0, n1) => {\n let nonJSPreface;\n let nonJSPrefaceLineCount;\n if (n1) {\n const index = n0.indexOf(n1);\n nonJSPreface = n0.slice(0, index);\n nonJSPrefaceLineCount = countChars(nonJSPreface, '\\n');\n } else {\n nonJSPreface = '';\n nonJSPrefaceLineCount = 0;\n }\n\n nonJSPrefacingLines += nonJSPrefaceLineCount;\n\n // Ignore `preMatch` delta if newlines here\n if (nonJSPrefaceLineCount) {\n const charsInLastLine = nonJSPreface.slice(nonJSPreface.lastIndexOf('\\n') + 1).length;\n\n nonJSPrefacingCols += charsInLastLine;\n } else {\n nonJSPrefacingCols += colDelta + nonJSPreface.length;\n }\n\n return n1 || n0;\n });\n }\n\n // Programmatic ESLint API: https://eslint.org/docs/developer-guide/nodejs-api\n const cli = new CLIEngine({\n allowInlineConfig,\n baseConfig,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: eslintrcForExamples,\n });\n\n let messages;\n\n if (paddedIndent) {\n source = source.replace(new RegExp(`(^|\\n) {${paddedIndent}}(?!$)`, 'g'), '\\n');\n }\n\n if (filename) {\n const config = cli.getConfigForFile(filename);\n\n // We need a new instance to ensure that the rules that may only\n // be available to `filename` (if it has its own `.eslintrc`),\n // will be defined.\n const cliFile = new CLIEngine({\n allowInlineConfig,\n baseConfig: config,\n configFile,\n reportUnusedDisableDirectives,\n rulePaths,\n rules,\n useEslintrc: eslintrcForExamples,\n });\n\n const linter = new Linter();\n\n // Force external rules to become available on `cli`\n try {\n cliFile.executeOnText('');\n } catch (error) {\n // Ignore\n }\n\n const linterRules = [...cliFile.getRules().entries()].reduce((obj, [key, val]) => {\n obj[key] = val;\n\n return obj;\n }, {});\n\n linter.defineRules(linterRules);\n\n if (config.parser) {\n // eslint-disable-next-line global-require, import/no-dynamic-require\n linter.defineParser(config.parser, require(config.parser));\n }\n\n // Could also support `disableFixes` and `allowInlineConfig`\n messages = linter.verify(source, config, {\n filename,\n reportUnusedDisableDirectives,\n });\n } else {\n ({results: [{messages}]} =\n cli.executeOnText(source));\n }\n\n // NOTE: `tag.line` can be 0 if of form `/** @tag ... */`\n const codeStartLine = tag.line + nonJSPrefacingLines;\n const codeStartCol = likelyNestedJSDocIndentSpace;\n\n messages.forEach(({message, line, column, severity, ruleId}) => {\n const startLine = codeStartLine + line + zeroBasedLineIndexAdjust;\n const startCol = codeStartCol + (\n\n // This might not work for line 0, but line 0 is unlikely for examples\n line <= 1 ? nonJSPrefacingCols + firstLinePrefixLength : preTagSpaceLength\n ) + column;\n\n // Could perhaps make fixable\n report(\n '@' + targetTagName + ' ' + (severity === 2 ? 'error' : 'warning') +\n (ruleId ? ' (' + ruleId + ')' : '') + ': ' +\n message,\n null,\n {\n column: startCol,\n line: startLine,\n },\n );\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n schema: [\n {\n additionalProperties: false,\n properties: {\n allowInlineConfig: {\n default: true,\n type: 'boolean',\n },\n baseConfig: {\n type: 'object',\n },\n captionRequired: {\n default: false,\n type: 'boolean',\n },\n configFile: {\n type: 'string',\n },\n eslintrcForExamples: {\n default: true,\n type: 'boolean',\n },\n exampleCodeRegex: {\n type: 'string',\n },\n matchingFileName: {\n type: 'string',\n },\n noDefaultExampleRules: {\n default: false,\n type: 'boolean',\n },\n paddedIndent: {\n default: 0,\n type: 'integer',\n },\n rejectExampleCodeRegex: {\n type: 'string',\n },\n reportUnusedDisableDirectives: {\n default: true,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n noTrim: true,\n});\n"],"file":"checkExamples.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/checkParamNames.js"],"names":["Object","entries","validateParameterNames","targetTagName","functionParameterNames","jsdoc","jsdocNode","utils","report","tags","paramTags","filter","tag","name","includes","some","index","tagsIndex","dupeTagInfo","find","tgsIndex","tg","idx","reportJSDoc","splice","functionParameterName","expectedNames","join","actualNames","map","validateParameterNamesDeep","jsdocParameterNames","lastRealParameter","jsdocParameterName","isPropertyPath","pathRootNodeName","slice","indexOf","endsWith","getFunctionParameterNames","jsdocParameterNamesDeep","getJsdocParameterNamesDeep","getPreferredTagName","tagName","isError","meta","fixable","type"],"mappings":"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","sourcesContent":["import entries from 'object.entries-ponyfill';\nimport iterateJsdoc from '../iterateJsdoc';\n\n/* istanbul ignore next */\nif (!Object.entries) {\n Object.entries = entries;\n}\n\nconst validateParameterNames = (targetTagName : string, functionParameterNames : Array<string>, jsdoc, jsdocNode, utils, report) => {\n if (!jsdoc || !jsdoc.tags) {\n return false;\n }\n\n const paramTags = Object.entries(jsdoc.tags).filter(([, tag]) => {\n return tag.tag === targetTagName && !tag.name.includes('.');\n });\n\n return paramTags.some(([, tag], index) => {\n let tagsIndex;\n const dupeTagInfo = paramTags.find(([tgsIndex, tg], idx) => {\n tagsIndex = tgsIndex;\n\n return tg.name === tag.name && idx !== index;\n });\n if (dupeTagInfo) {\n utils.reportJSDoc(`Duplicate @${targetTagName} \"${tag.name}\"`, dupeTagInfo[1], () => {\n jsdoc.tags.splice(tagsIndex, 1);\n });\n\n return true;\n }\n const functionParameterName = functionParameterNames[index];\n\n if (!functionParameterName) {\n report(\n `@${targetTagName} \"${tag.name}\" does not match an existing function parameter.`,\n null,\n tag
|
|
1
|
+
{"version":3,"sources":["../../src/rules/checkParamNames.js"],"names":["Object","entries","validateParameterNames","targetTagName","functionParameterNames","jsdoc","jsdocNode","utils","report","tags","paramTags","filter","tag","name","includes","some","index","tagsIndex","dupeTagInfo","find","tgsIndex","tg","idx","reportJSDoc","splice","functionParameterName","expectedNames","join","actualNames","map","validateParameterNamesDeep","jsdocParameterNames","lastRealParameter","jsdocParameterName","isPropertyPath","pathRootNodeName","slice","indexOf","endsWith","getFunctionParameterNames","jsdocParameterNamesDeep","getJsdocParameterNamesDeep","getPreferredTagName","tagName","isError","meta","fixable","type"],"mappings":"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","sourcesContent":["import entries from 'object.entries-ponyfill';\nimport iterateJsdoc from '../iterateJsdoc';\n\n/* istanbul ignore next */\nif (!Object.entries) {\n Object.entries = entries;\n}\n\nconst validateParameterNames = (targetTagName : string, functionParameterNames : Array<string>, jsdoc, jsdocNode, utils, report) => {\n if (!jsdoc || !jsdoc.tags) {\n return false;\n }\n\n const paramTags = Object.entries(jsdoc.tags).filter(([, tag]) => {\n return tag.tag === targetTagName && !tag.name.includes('.');\n });\n\n return paramTags.some(([, tag], index) => {\n let tagsIndex;\n const dupeTagInfo = paramTags.find(([tgsIndex, tg], idx) => {\n tagsIndex = tgsIndex;\n\n return tg.name === tag.name && idx !== index;\n });\n if (dupeTagInfo) {\n utils.reportJSDoc(`Duplicate @${targetTagName} \"${tag.name}\"`, dupeTagInfo[1], () => {\n jsdoc.tags.splice(tagsIndex, 1);\n });\n\n return true;\n }\n const functionParameterName = functionParameterNames[index];\n\n if (!functionParameterName) {\n report(\n `@${targetTagName} \"${tag.name}\" does not match an existing function parameter.`,\n null,\n tag,\n );\n\n return true;\n }\n\n if (functionParameterName === '<ObjectPattern>' || functionParameterName === '<ArrayPattern>') {\n return false;\n }\n\n if (functionParameterName !== tag.name) {\n const expectedNames = functionParameterNames.join(', ');\n const actualNames = paramTags.map(([, {name}]) => {\n return name;\n }).join(', ');\n\n report(\n `Expected @${targetTagName} names to be \"${expectedNames}\". Got \"${actualNames}\".`,\n null,\n tag,\n );\n\n return true;\n }\n\n return false;\n });\n};\n\nconst validateParameterNamesDeep = (targetTagName : string, jsdocParameterNames : Array<string>, jsdoc, report : Function) => {\n let lastRealParameter;\n\n return jsdocParameterNames.some((jsdocParameterName, idx) => {\n const isPropertyPath = jsdocParameterName.includes('.');\n\n if (isPropertyPath) {\n if (!lastRealParameter) {\n report(`@${targetTagName} path declaration (\"${jsdocParameterName}\") appears before any real parameter.`, null, jsdoc.tags[idx]);\n\n return true;\n }\n\n let pathRootNodeName = jsdocParameterName.slice(0, jsdocParameterName.indexOf('.'));\n\n if (pathRootNodeName.endsWith('[]')) {\n pathRootNodeName = pathRootNodeName.slice(0, -2);\n }\n\n if (pathRootNodeName !== lastRealParameter) {\n report(\n `@${targetTagName} path declaration (\"${jsdocParameterName}\") root node name (\"${pathRootNodeName}\") ` +\n `does not match previous real parameter name (\"${lastRealParameter}\").`,\n null,\n jsdoc.tags[idx],\n );\n\n return true;\n }\n } else {\n lastRealParameter = jsdocParameterName;\n }\n\n return false;\n });\n};\n\nexport default iterateJsdoc(({\n jsdoc,\n jsdocNode,\n report,\n utils,\n}) => {\n const functionParameterNames = utils.getFunctionParameterNames();\n const jsdocParameterNamesDeep = utils.getJsdocParameterNamesDeep();\n if (!jsdocParameterNamesDeep) {\n return;\n }\n const targetTagName = utils.getPreferredTagName({tagName: 'param'});\n const isError = validateParameterNames(targetTagName, functionParameterNames, jsdoc, jsdocNode, utils, report);\n\n if (isError) {\n return;\n }\n\n validateParameterNamesDeep(targetTagName, jsdocParameterNamesDeep, jsdoc, report);\n}, {\n meta: {\n fixable: 'code',\n type: 'suggestion',\n },\n});\n"],"file":"checkParamNames.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/checkTagNames.js"],"names":["sourceCode","jsdoc","report","utils","context","settings","jsdocNode","tags","options","definedTags","definedPreferredTags","definedNonPreferredTags","tagNamePreference","Object","keys","length","_","values","map","preferredTag","undefined","reportSettings","replacement","filter","preferredType","forEach","jsdocTag","tagName","tag","isValidTag","preferredTagName","getPreferredTagName","allowObjectReturn","defaultMessage","message","fixer","getText","replace","RegExp","escapeRegExp","replaceText","iterateAllJsdocs","meta","fixable","schema","additionalProperties","properties","items","type"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n sourceCode,\n jsdoc,\n report,\n utils,\n context,\n settings,\n jsdocNode,\n}) => {\n if (!jsdoc.tags) {\n return;\n }\n const {definedTags = []} = context.options[0] || {};\n\n let definedPreferredTags = [];\n let definedNonPreferredTags = [];\n const {tagNamePreference} = settings;\n if (Object.keys(tagNamePreference).length) {\n definedNonPreferredTags = _.keys(tagNamePreference);\n\n // Replace `_.values` with `Object.values` when we may start requiring Node 7+\n definedPreferredTags = _.values(tagNamePreference).map((preferredTag) => {\n if (typeof preferredTag === 'string') {\n // May become an empty string but will be filtered out below\n return preferredTag;\n }\n if (!preferredTag) {\n return undefined;\n }\n if (typeof preferredTag !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.tagNamePreference`. Values must be falsy, a string, or an object.'
|
|
1
|
+
{"version":3,"sources":["../../src/rules/checkTagNames.js"],"names":["sourceCode","jsdoc","report","utils","context","settings","jsdocNode","tags","options","definedTags","definedPreferredTags","definedNonPreferredTags","tagNamePreference","Object","keys","length","_","values","map","preferredTag","undefined","reportSettings","replacement","filter","preferredType","forEach","jsdocTag","tagName","tag","isValidTag","preferredTagName","getPreferredTagName","allowObjectReturn","defaultMessage","message","fixer","getText","replace","RegExp","escapeRegExp","replaceText","iterateAllJsdocs","meta","fixable","schema","additionalProperties","properties","items","type"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n sourceCode,\n jsdoc,\n report,\n utils,\n context,\n settings,\n jsdocNode,\n}) => {\n if (!jsdoc.tags) {\n return;\n }\n const {definedTags = []} = context.options[0] || {};\n\n let definedPreferredTags = [];\n let definedNonPreferredTags = [];\n const {tagNamePreference} = settings;\n if (Object.keys(tagNamePreference).length) {\n definedNonPreferredTags = _.keys(tagNamePreference);\n\n // Replace `_.values` with `Object.values` when we may start requiring Node 7+\n definedPreferredTags = _.values(tagNamePreference).map((preferredTag) => {\n if (typeof preferredTag === 'string') {\n // May become an empty string but will be filtered out below\n return preferredTag;\n }\n if (!preferredTag) {\n return undefined;\n }\n if (typeof preferredTag !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.tagNamePreference`. Values must be falsy, a string, or an object.',\n );\n }\n\n return preferredTag.replacement;\n }).filter((preferredType) => {\n return preferredType;\n });\n }\n\n jsdoc.tags.forEach((jsdocTag) => {\n const tagName = jsdocTag.tag;\n if (utils.isValidTag(tagName, [...definedTags, ...definedPreferredTags, ...definedNonPreferredTags])) {\n let preferredTagName = utils.getPreferredTagName({\n allowObjectReturn: true,\n defaultMessage: `Blacklisted tag found (\\`@${tagName}\\`)`,\n tagName,\n });\n let message = `Invalid JSDoc tag (preference). Replace \"${tagName}\" JSDoc tag with \"${preferredTagName}\".`;\n if (!preferredTagName) {\n return;\n }\n if (typeof preferredTagName === 'object') {\n ({message, replacement: preferredTagName} = preferredTagName);\n }\n\n if (preferredTagName !== tagName) {\n report(message, (fixer) => {\n const replacement = sourceCode.getText(jsdocNode).replace(\n new RegExp(`@${_.escapeRegExp(tagName)}\\\\b`),\n `@${preferredTagName}`,\n );\n\n return fixer.replaceText(jsdocNode, replacement);\n }, jsdocTag);\n }\n } else {\n report(`Invalid JSDoc tag name \"${tagName}\".`, null, jsdocTag);\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTags: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkTagNames.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/checkTypes.js"],"names":["strictNativeTypes","jsdocNode","sourceCode","report","utils","settings","context","jsdocTags","filterTags","tag","tagMightHaveType","preferredTypes","optionObj","options","noDefaults","_","get","unifyParentAndChildTypeChecks","forEach","jsdocTag","invalidTypes","typeAst","type","error","getPreferredTypeInfo","nodeName","parentName","parentNode","hasMatchingPreferredType","isGenericMatch","typeName","Object","keys","length","parentType","syntax","some","checkPostFix","syn","undefined","directNameMatch","unifiedSyntaxParentMatch","adjustNames","preferred","node","ret","meta","dotBracketEnd","match","slice","bracketEnd","endsWith","name","replace","includes","preferredSetting","push","reportSettings","strictNativeType","toLowerCase","fixedType","tagName","badType","preferredType","message","fix","fixer","replaceText","getText","tagValue","iterateAllJsdocs","fixable","schema","additionalProperties","properties"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport {parse, traverse, publish} from 'jsdoctypeparser';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\nexport default iterateJsdoc(({\n jsdocNode,\n sourceCode,\n report,\n utils,\n settings,\n context,\n}) => {\n const jsdocTags = utils.filterTags((tag) => {\n return utils.tagMightHaveType(tag.tag);\n });\n\n const {preferredTypes} = settings;\n const optionObj = context.options[0];\n const noDefaults = _.get(optionObj, 'noDefaults');\n const unifyParentAndChildTypeChecks = _.get(optionObj, 'unifyParentAndChildTypeChecks');\n\n jsdocTags.forEach((jsdocTag) => {\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = parse(jsdocTag.type);\n } catch (error) {\n return;\n }\n\n const getPreferredTypeInfo = (type, nodeName, parentName, parentNode) => {\n let hasMatchingPreferredType;\n let isGenericMatch;\n let typeName = nodeName;\n if (Object.keys(preferredTypes).length) {\n const parentType = parentName === 'subject';\n if (unifyParentAndChildTypeChecks || parentType) {\n const syntax = _.get(parentNode, 'meta.syntax');\n\n [\n ['.', 'ANGLE_BRACKET_WITH_DOT'],\n ['.<>', 'ANGLE_BRACKET_WITH_DOT'],\n ['<>', 'ANGLE_BRACKET'],\n ].some(([checkPostFix, syn]) => {\n isGenericMatch = _.get(\n preferredTypes,\n nodeName + checkPostFix\n ) !== undefined &&\n syntax === syn;\n if (isGenericMatch) {\n typeName += checkPostFix;\n }\n\n return isGenericMatch;\n });\n if (!isGenericMatch && parentType) {\n [\n ['[]', 'SQUARE_BRACKET'],\n ['.', 'ANGLE_BRACKET_WITH_DOT'],\n ['.<>', 'ANGLE_BRACKET_WITH_DOT'],\n ['<>', 'ANGLE_BRACKET'],\n ].some(([checkPostFix, syn]) => {\n isGenericMatch = _.get(preferredTypes, checkPostFix) !== undefined &&\n syntax === syn;\n if (isGenericMatch) {\n typeName = checkPostFix;\n }\n\n return isGenericMatch;\n });\n }\n }\n const directNameMatch = _.get(preferredTypes, nodeName) !== undefined;\n const unifiedSyntaxParentMatch = parentType && directNameMatch && unifyParentAndChildTypeChecks;\n isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch;\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !parentType;\n }\n\n return [hasMatchingPreferredType, typeName, isGenericMatch];\n };\n\n const adjustNames = (type, preferred, isGenericMatch, nodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n if (preferred === '[]') {\n parentNode.meta.syntax = 'SQUARE_BRACKET';\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/);\n if (dotBracketEnd) {\n parentNode.meta.syntax = 'ANGLE_BRACKET_WITH_DOT';\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentNode.meta.syntax = 'ANGLE_BRACKET';\n ret = preferred.slice(0, -2);\n }\n }\n }\n } else if (type === 'ANY') {\n node.type = 'NAME';\n }\n node.name = ret.replace(/(?:\\.|<>|\\.<>|\\[])$/, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n node.name = nodeName;\n }\n };\n\n traverse(typeAst, (node, parentName, parentNode) => {\n if (!node) {\n return;\n }\n const {type, name} = node;\n if (!['NAME', 'ANY'].includes(type)) {\n return;\n }\n let nodeName = type === 'ANY' ? '*' : name;\n\n const [hasMatchingPreferredType, typeName, isGenericMatch] = getPreferredTypeInfo(type, nodeName, parentName, parentNode);\n\n let preferred;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typeName];\n nodeName = typeName === '[]' ? typeName : nodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([nodeName]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([nodeName, preferred]);\n } else if (typeof preferredSetting === 'object') {\n preferred = _.get(preferredSetting, 'replacement');\n invalidTypes.push([\n nodeName,\n preferred,\n _.get(preferredSetting, 'message'),\n ]);\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.'\n );\n\n return;\n }\n } else if (!noDefaults && type === 'NAME') {\n for (const strictNativeType of strictNativeTypes) {\n if (strictNativeType.toLowerCase() === nodeName.toLowerCase() &&\n strictNativeType !== nodeName &&\n\n // Don't report if user has own map for a strict native type\n (!preferredTypes || _.get(preferredTypes, strictNativeType) === undefined)\n ) {\n preferred = strictNativeType;\n invalidTypes.push([nodeName, preferred]);\n break;\n }\n }\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, nodeName, node, parentNode);\n }\n });\n\n if (invalidTypes.length) {\n const fixedType = publish(typeAst);\n\n const tagName = jsdocTag.tag;\n invalidTypes.forEach(([badType, preferredType = '', message]) => {\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`\n )\n );\n };\n\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n\n report(\n message ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: \"${preferredType}\".` : ''),\n preferredType ? fix : null,\n jsdocTag,\n message ? {\n tagName,\n tagValue,\n } : null\n );\n });\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n noDefaults: {\n type: 'boolean',\n },\n unifyParentAndChildTypeChecks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkTypes.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/checkTypes.js"],"names":["strictNativeTypes","jsdocNode","sourceCode","report","utils","settings","context","jsdocTags","filterTags","tag","tagMightHaveType","preferredTypes","optionObj","options","noDefaults","_","get","unifyParentAndChildTypeChecks","forEach","jsdocTag","invalidTypes","typeAst","type","error","getPreferredTypeInfo","nodeName","parentName","parentNode","hasMatchingPreferredType","isGenericMatch","typeName","Object","keys","length","parentType","syntax","some","checkPostFix","syn","undefined","directNameMatch","unifiedSyntaxParentMatch","adjustNames","preferred","node","ret","meta","dotBracketEnd","match","slice","bracketEnd","endsWith","name","replace","includes","preferredSetting","push","reportSettings","strictNativeType","toLowerCase","fixedType","tagName","badType","preferredType","message","fix","fixer","replaceText","getText","tagValue","iterateAllJsdocs","fixable","schema","additionalProperties","properties"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport {parse, traverse, publish} from 'jsdoctypeparser';\nimport iterateJsdoc from '../iterateJsdoc';\n\nconst strictNativeTypes = [\n 'undefined',\n 'null',\n 'boolean',\n 'number',\n 'bigint',\n 'string',\n 'symbol',\n 'object',\n 'Array',\n 'Function',\n 'Date',\n 'RegExp',\n];\n\nexport default iterateJsdoc(({\n jsdocNode,\n sourceCode,\n report,\n utils,\n settings,\n context,\n}) => {\n const jsdocTags = utils.filterTags((tag) => {\n return utils.tagMightHaveType(tag.tag);\n });\n\n const {preferredTypes} = settings;\n const optionObj = context.options[0];\n const noDefaults = _.get(optionObj, 'noDefaults');\n const unifyParentAndChildTypeChecks = _.get(optionObj, 'unifyParentAndChildTypeChecks');\n\n jsdocTags.forEach((jsdocTag) => {\n const invalidTypes = [];\n let typeAst;\n\n try {\n typeAst = parse(jsdocTag.type);\n } catch (error) {\n return;\n }\n\n const getPreferredTypeInfo = (type, nodeName, parentName, parentNode) => {\n let hasMatchingPreferredType;\n let isGenericMatch;\n let typeName = nodeName;\n if (Object.keys(preferredTypes).length) {\n const parentType = parentName === 'subject';\n if (unifyParentAndChildTypeChecks || parentType) {\n const syntax = _.get(parentNode, 'meta.syntax');\n\n [\n ['.', 'ANGLE_BRACKET_WITH_DOT'],\n ['.<>', 'ANGLE_BRACKET_WITH_DOT'],\n ['<>', 'ANGLE_BRACKET'],\n ].some(([checkPostFix, syn]) => {\n isGenericMatch = _.get(\n preferredTypes,\n nodeName + checkPostFix,\n ) !== undefined &&\n syntax === syn;\n if (isGenericMatch) {\n typeName += checkPostFix;\n }\n\n return isGenericMatch;\n });\n if (!isGenericMatch && parentType) {\n [\n ['[]', 'SQUARE_BRACKET'],\n ['.', 'ANGLE_BRACKET_WITH_DOT'],\n ['.<>', 'ANGLE_BRACKET_WITH_DOT'],\n ['<>', 'ANGLE_BRACKET'],\n ].some(([checkPostFix, syn]) => {\n isGenericMatch = _.get(preferredTypes, checkPostFix) !== undefined &&\n syntax === syn;\n if (isGenericMatch) {\n typeName = checkPostFix;\n }\n\n return isGenericMatch;\n });\n }\n }\n const directNameMatch = _.get(preferredTypes, nodeName) !== undefined;\n const unifiedSyntaxParentMatch = parentType && directNameMatch && unifyParentAndChildTypeChecks;\n isGenericMatch = isGenericMatch || unifiedSyntaxParentMatch;\n\n hasMatchingPreferredType = isGenericMatch ||\n directNameMatch && !parentType;\n }\n\n return [hasMatchingPreferredType, typeName, isGenericMatch];\n };\n\n const adjustNames = (type, preferred, isGenericMatch, nodeName, node, parentNode) => {\n let ret = preferred;\n if (isGenericMatch) {\n if (preferred === '[]') {\n parentNode.meta.syntax = 'SQUARE_BRACKET';\n ret = 'Array';\n } else {\n const dotBracketEnd = preferred.match(/\\.(?:<>)?$/);\n if (dotBracketEnd) {\n parentNode.meta.syntax = 'ANGLE_BRACKET_WITH_DOT';\n ret = preferred.slice(0, -dotBracketEnd[0].length);\n } else {\n const bracketEnd = preferred.endsWith('<>');\n if (bracketEnd) {\n parentNode.meta.syntax = 'ANGLE_BRACKET';\n ret = preferred.slice(0, -2);\n }\n }\n }\n } else if (type === 'ANY') {\n node.type = 'NAME';\n }\n node.name = ret.replace(/(?:\\.|<>|\\.<>|\\[])$/, '');\n\n // For bare pseudo-types like `<>`\n if (!ret) {\n node.name = nodeName;\n }\n };\n\n traverse(typeAst, (node, parentName, parentNode) => {\n if (!node) {\n return;\n }\n const {type, name} = node;\n if (!['NAME', 'ANY'].includes(type)) {\n return;\n }\n let nodeName = type === 'ANY' ? '*' : name;\n\n const [hasMatchingPreferredType, typeName, isGenericMatch] = getPreferredTypeInfo(type, nodeName, parentName, parentNode);\n\n let preferred;\n if (hasMatchingPreferredType) {\n const preferredSetting = preferredTypes[typeName];\n nodeName = typeName === '[]' ? typeName : nodeName;\n\n if (!preferredSetting) {\n invalidTypes.push([nodeName]);\n } else if (typeof preferredSetting === 'string') {\n preferred = preferredSetting;\n invalidTypes.push([nodeName, preferred]);\n } else if (typeof preferredSetting === 'object') {\n preferred = _.get(preferredSetting, 'replacement');\n invalidTypes.push([\n nodeName,\n preferred,\n _.get(preferredSetting, 'message'),\n ]);\n } else {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n\n return;\n }\n } else if (!noDefaults && type === 'NAME') {\n for (const strictNativeType of strictNativeTypes) {\n if (strictNativeType.toLowerCase() === nodeName.toLowerCase() &&\n strictNativeType !== nodeName &&\n\n // Don't report if user has own map for a strict native type\n (!preferredTypes || _.get(preferredTypes, strictNativeType) === undefined)\n ) {\n preferred = strictNativeType;\n invalidTypes.push([nodeName, preferred]);\n break;\n }\n }\n }\n\n // For fixer\n if (preferred) {\n adjustNames(type, preferred, isGenericMatch, nodeName, node, parentNode);\n }\n });\n\n if (invalidTypes.length) {\n const fixedType = publish(typeAst);\n\n const tagName = jsdocTag.tag;\n invalidTypes.forEach(([badType, preferredType = '', message]) => {\n const fix = (fixer) => {\n return fixer.replaceText(\n jsdocNode,\n sourceCode.getText(jsdocNode).replace(\n `{${jsdocTag.type}}`,\n `{${fixedType}}`,\n ),\n );\n };\n\n const tagValue = jsdocTag.name ? ` \"${jsdocTag.name}\"` : '';\n\n report(\n message ||\n `Invalid JSDoc @${tagName}${tagValue} type \"${badType}\"` +\n (preferredType ? '; ' : '.') +\n (preferredType ? `prefer: \"${preferredType}\".` : ''),\n preferredType ? fix : null,\n jsdocTag,\n message ? {\n tagName,\n tagValue,\n } : null,\n );\n });\n }\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n fixable: 'code',\n schema: [\n {\n additionalProperties: false,\n properties: {\n noDefaults: {\n type: 'boolean',\n },\n unifyParentAndChildTypeChecks: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"checkTypes.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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","getTagsByType","tagsWithNames","tagsWithoutNames","some","_","trimStart","contextDefaults","meta","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'
|
|
1
|
+
{"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","getTagsByType","tagsWithNames","tagsWithoutNames","some","_","trimStart","contextDefaults","meta","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 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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/noUndefinedTypes.js"],"names":["extraTypes","stripPseudoTypes","str","replace","context","report","settings","sourceCode","scopeManager","utils","globalScope","options","definedTypes","definedPreferredTypes","preferredTypes","Object","keys","length","_","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","value","startsWith","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","templateTags","getPresentTags","classJsdoc","getClassJsdoc","concat","closureGenericTypes","jsdocUtils","parseClosureTemplateTag","allDefinedTypes","variables","variable","__options","nodejsScope","isModule","childScopes","reduce","arr","push","jsdocTags","filterTags","tagMightHaveType","forEach","parsedType","type","error","includes","markVariableAsUsed","iterateAllJsdocs","meta","schema","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport {parse as parseType, traverse} from 'jsdoctypeparser';\nimport iterateJsdoc, {parseComment} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'symbol', 'boolean', 'object',\n 'function',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[])$/, '');\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n sourceCode: {scopeManager},\n utils,\n}) => {\n const {globalScope} = scopeManager;\n\n const {definedTypes = []} = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {preferredTypes} = settings;\n if (Object.keys(preferredTypes).length) {\n // Replace `_.values` with `Object.values` when we may start requiring Node 7+\n definedPreferredTypes = _.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n if (!preferredType) {\n return undefined;\n }\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.'
|
|
1
|
+
{"version":3,"sources":["../../src/rules/noUndefinedTypes.js"],"names":["extraTypes","stripPseudoTypes","str","replace","context","report","settings","sourceCode","scopeManager","utils","globalScope","options","definedTypes","definedPreferredTypes","preferredTypes","Object","keys","length","_","values","map","preferredType","undefined","reportSettings","replacement","filter","typedefDeclarations","getAllComments","comment","value","startsWith","parseComment","flatMap","doc","tags","tag","isNamepathDefiningTag","name","templateTags","getPresentTags","classJsdoc","getClassJsdoc","concat","closureGenericTypes","jsdocUtils","parseClosureTemplateTag","allDefinedTypes","variables","variable","__options","nodejsScope","isModule","childScopes","reduce","arr","push","jsdocTags","filterTags","tagMightHaveType","forEach","parsedType","type","error","includes","markVariableAsUsed","iterateAllJsdocs","meta","schema","additionalProperties","properties","items"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport {parse as parseType, traverse} from 'jsdoctypeparser';\nimport iterateJsdoc, {parseComment} from '../iterateJsdoc';\nimport jsdocUtils from '../jsdocUtils';\n\nconst extraTypes = [\n 'null', 'undefined', 'void', 'string', 'symbol', 'boolean', 'object',\n 'function',\n 'number', 'bigint', 'NaN', 'Infinity',\n 'any', '*',\n 'Array', 'Object', 'RegExp', 'Date', 'Function',\n];\n\nconst stripPseudoTypes = (str) => {\n return str && str.replace(/(?:\\.|<>|\\.<>|\\[])$/, '');\n};\n\nexport default iterateJsdoc(({\n context,\n report,\n settings,\n sourceCode: {scopeManager},\n utils,\n}) => {\n const {globalScope} = scopeManager;\n\n const {definedTypes = []} = context.options[0] || {};\n\n let definedPreferredTypes = [];\n const {preferredTypes} = settings;\n if (Object.keys(preferredTypes).length) {\n // Replace `_.values` with `Object.values` when we may start requiring Node 7+\n definedPreferredTypes = _.values(preferredTypes).map((preferredType) => {\n if (typeof preferredType === 'string') {\n // May become an empty string but will be filtered out below\n return stripPseudoTypes(preferredType);\n }\n if (!preferredType) {\n return undefined;\n }\n if (typeof preferredType !== 'object') {\n utils.reportSettings(\n 'Invalid `settings.jsdoc.preferredTypes`. Values must be falsy, a string, or an object.',\n );\n }\n\n return stripPseudoTypes(preferredType.replacement);\n }).filter((preferredType) => {\n return preferredType;\n });\n }\n\n const typedefDeclarations = _(context.getAllComments())\n .filter((comment) => {\n return comment.value.startsWith('*');\n })\n .map(parseComment)\n .flatMap((doc) => {\n return (doc.tags || []).filter(({tag}) => {\n return utils.isNamepathDefiningTag(tag);\n });\n })\n .map((tag) => {\n return tag.name;\n })\n .value();\n\n let templateTags = utils.getPresentTags('template');\n const classJsdoc = utils.getClassJsdoc();\n if (classJsdoc && classJsdoc.tags) {\n templateTags = templateTags.concat(\n classJsdoc.tags\n .filter((tag) => {\n return tag.tag === 'template';\n }),\n );\n }\n\n const closureGenericTypes = _.flatMap(templateTags, (tag) => {\n return jsdocUtils.parseClosureTemplateTag(tag);\n });\n\n const allDefinedTypes = globalScope.variables.map((variable) => {\n return variable.name;\n })\n\n // If the file is a module, concat the variables from the module scope.\n .concat(\n\n // This covers `commonjs` as well as `node`\n scopeManager.__options.nodejsScope ||\n scopeManager.isModule() ?\n globalScope.childScopes.reduce((arr, {variables}) => {\n // Flatten\n arr.push(...variables);\n\n return arr;\n }, []).map(({name}) => {\n return name;\n }) : [],\n )\n .concat(extraTypes)\n .concat(typedefDeclarations)\n .concat(definedTypes)\n .concat(definedPreferredTypes)\n .concat(closureGenericTypes);\n\n const jsdocTags = utils.filterTags((tag) => {\n return utils.tagMightHaveType(tag.tag);\n });\n\n jsdocTags.forEach((tag) => {\n let parsedType;\n\n try {\n parsedType = parseType(tag.type);\n } catch (error) {\n // On syntax error, will be handled by valid-types.\n return;\n }\n\n traverse(parsedType, ({type, name}) => {\n if (type === 'NAME') {\n if (!allDefinedTypes.includes(name)) {\n report(`The type '${name}' is undefined.`, null, tag);\n } else if (!_.includes(extraTypes, name)) {\n context.markVariableAsUsed(name);\n }\n }\n });\n });\n}, {\n iterateAllJsdocs: true,\n meta: {\n schema: [\n {\n additionalProperties: false,\n properties: {\n definedTypes: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n },\n type: 'object',\n },\n ],\n type: 'suggestion',\n },\n});\n"],"file":"noUndefinedTypes.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireDescription.js"],"names":["jsdoc","report","utils","context","avoidDocs","options","descriptionStyle","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","checkDescription","description","exampleContent","_","compact","trim","split","length","functionExamples","filter","tags","tag","forEach","example","name","contextDefaults","meta","schema","additionalProperties","properties","contexts","items","type","enum","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n const {descriptionStyle = 'body'} = context.options[0] || {};\n\n let targetTagName = utils.getPreferredTagName({\n // We skip reporting except when `@description` is essential to the rule,\n // so user can block the tag and still meaningfully use this rule\n // even if the tag is present (and `check-tag-names` is the one to\n // normally report the fact that it is blocked but present)\n skipReportingBlockedTag: descriptionStyle !== 'tag',\n tagName: 'description',\n });\n if (!targetTagName) {\n return;\n }\n const isBlocked = typeof targetTagName === 'object' && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = targetTagName.tagName;\n }\n\n const checkDescription = (description) => {\n const exampleContent = _.compact(description.trim().split('\\n'));\n\n return exampleContent.length;\n };\n\n if (descriptionStyle !== 'tag') {\n if (checkDescription(jsdoc.description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n report('Missing JSDoc block description.');\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n if (!functionExamples.length) {\n report(\n descriptionStyle === 'any' ?\n `Missing JSDoc block description or @${targetTagName} declaration.` :\n `Missing JSDoc @${targetTagName} declaration
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireDescription.js"],"names":["jsdoc","report","utils","context","avoidDocs","options","descriptionStyle","targetTagName","getPreferredTagName","skipReportingBlockedTag","tagName","isBlocked","blocked","checkDescription","description","exampleContent","_","compact","trim","split","length","functionExamples","filter","tags","tag","forEach","example","name","contextDefaults","meta","schema","additionalProperties","properties","contexts","items","type","enum","exemptedBy"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n jsdoc,\n report,\n utils,\n context,\n}) => {\n if (utils.avoidDocs()) {\n return;\n }\n const {descriptionStyle = 'body'} = context.options[0] || {};\n\n let targetTagName = utils.getPreferredTagName({\n // We skip reporting except when `@description` is essential to the rule,\n // so user can block the tag and still meaningfully use this rule\n // even if the tag is present (and `check-tag-names` is the one to\n // normally report the fact that it is blocked but present)\n skipReportingBlockedTag: descriptionStyle !== 'tag',\n tagName: 'description',\n });\n if (!targetTagName) {\n return;\n }\n const isBlocked = typeof targetTagName === 'object' && targetTagName.blocked;\n if (isBlocked) {\n targetTagName = targetTagName.tagName;\n }\n\n const checkDescription = (description) => {\n const exampleContent = _.compact(description.trim().split('\\n'));\n\n return exampleContent.length;\n };\n\n if (descriptionStyle !== 'tag') {\n if (checkDescription(jsdoc.description || '')) {\n return;\n }\n\n if (descriptionStyle === 'body') {\n report('Missing JSDoc block description.');\n\n return;\n }\n }\n\n const functionExamples = isBlocked ?\n [] :\n _.filter(jsdoc.tags, {\n tag: targetTagName,\n });\n\n if (!functionExamples.length) {\n report(\n descriptionStyle === 'any' ?\n `Missing JSDoc block description or @${targetTagName} declaration.` :\n `Missing JSDoc @${targetTagName} declaration.`,\n );\n\n return;\n }\n\n functionExamples.forEach((example) => {\n if (!checkDescription(`${example.name} ${example.description}`)) {\n report(`Missing JSDoc @${targetTagName} description.`);\n }\n });\n}, {\n contextDefaults: true,\n meta: {\n schema: [\n {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n descriptionStyle: {\n enum: ['body', 'tag', 'any'],\n type: 'string',\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":"requireDescription.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireJsdoc.js"],"names":["OPTIONS_SCHEMA","additionalProperties","properties","contexts","items","type","exemptEmptyFunctions","default","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","context","baseObject","option","key","_","has","options","getOptions","baseObj","get","Object","keys","reduce","obj","prop","opt","meta","doc","category","description","recommended","url","fixable","messages","missingJsDoc","schema","create","sourceCode","getSourceCode","requireOption","settings","checkJsDoc","node","jsDocNode","functionParameterNames","jsdocUtils","getFunctionParameterNames","length","hasReturnValue","fix","fixer","lines","minLines","maxLines","indent","getIndent","insertion","repeat","slice","baseNode","includes","parent","insertTextBefore","report","loc","end","start","messageId","Boolean","initModuleExports","initWindow","parseResult","exportParser","parse","ast","exported","isExported","assign","getContextObject","enforcedContexts","value"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport jsdocUtils from '../jsdocUtils';\nimport exportParser from '../exportParser';\nimport getJSDocComment from '../eslint/getJSDocComment';\nimport warnRemovedSettings from '../warnRemovedSettings';\nimport {getSettings} from '../iterateJsdoc';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (!_.has(context, `options[0][${option}][${key}]`)) {\n return baseObject.properties[key].default;\n }\n\n return context.options[0][option][key];\n};\n\nconst getOptions = (context) => {\n return {\n exemptEmptyFunctions: context.options[0] ? context.options[0].exemptEmptyFunctions : false,\n publicOnly: ((baseObj) => {\n const publicOnly = _.get(context, 'options[0].publicOnly');\n if (!publicOnly) {\n return false;\n }\n\n return Object.keys(baseObj.properties).reduce((obj, prop) => {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n obj[prop] = opt;\n\n return obj;\n }, {});\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n return Object.keys(baseObj.properties).reduce((obj, prop) => {\n const opt = getOption(context, baseObj, 'require', prop);\n obj[prop] = opt;\n\n return obj;\n }, {});\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\n/* eslint-disable sort-keys */\nexport default {\n meta: {\n doc: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n create (context) {\n warnRemovedSettings(context, 'require-jsdoc');\n\n const sourceCode = context.getSourceCode();\n\n const {require: requireOption, publicOnly, exemptEmptyFunctions} = getOptions(context);\n\n const settings = getSettings(context);\n\n const checkJsDoc = (node) => {\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n if (exemptEmptyFunctions) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node, context)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n const indent = jsdocUtils.getIndent(sourceCode);\n const insertion = `/**\\n${indent}*\\n${indent}*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n const baseNode = [\n 'ExportDefaultDeclaration', 'ExportNamedDeclaration',\n ].includes(node.parent && node.parent.type) ? node.parent : node;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const loc = {\n end: node.loc.start + 1,\n start: node.loc.start,\n };\n context.report({\n fix,\n messageId: 'missingJsDoc',\n node,\n loc,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(_.get(publicOnly, 'ancestorsOnly', false)),\n esm: Boolean(_.get(publicOnly, 'esm', true)),\n initModuleExports: Boolean(_.get(publicOnly, 'cjs', true)),\n initWindow: Boolean(_.get(publicOnly, 'window', false)),\n };\n const parseResult = exportParser.parse(sourceCode.ast, node, opt);\n const exported = exportParser.isExported(node, parseResult, opt);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n // eslint-disable-next-line fp/no-mutating-assign\n return Object.assign(\n jsdocUtils.getContextObject(jsdocUtils.enforcedContexts(context, []), checkJsDoc),\n {\n ArrowFunctionExpression (node) {\n if (!requireOption.ArrowFunctionExpression) {\n return;\n }\n\n if (!['VariableDeclarator', 'ExportDefaultDeclaration'].includes(node.parent.type)) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n ClassDeclaration (node) {\n if (!requireOption.ClassDeclaration) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n ClassExpression (node) {\n if (!requireOption.ClassExpression) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n FunctionDeclaration (node) {\n if (!requireOption.FunctionDeclaration) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n FunctionExpression (node) {\n if (requireOption.MethodDefinition && node.parent.type === 'MethodDefinition') {\n checkJsDoc(node);\n\n return;\n }\n\n if (!requireOption.FunctionExpression) {\n return;\n }\n\n if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type)) {\n checkJsDoc(node);\n } else if (node.parent.type === 'Property' && node === node.parent.value) {\n checkJsDoc(node);\n }\n },\n }\n );\n },\n};\n"],"file":"requireJsdoc.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireJsdoc.js"],"names":["OPTIONS_SCHEMA","additionalProperties","properties","contexts","items","type","exemptEmptyFunctions","default","publicOnly","oneOf","ancestorsOnly","cjs","esm","window","require","ArrowFunctionExpression","ClassDeclaration","ClassExpression","FunctionDeclaration","FunctionExpression","MethodDefinition","getOption","context","baseObject","option","key","_","has","options","getOptions","baseObj","get","Object","keys","reduce","obj","prop","opt","meta","doc","category","description","recommended","url","fixable","messages","missingJsDoc","schema","create","sourceCode","getSourceCode","requireOption","settings","checkJsDoc","node","jsDocNode","functionParameterNames","jsdocUtils","getFunctionParameterNames","length","hasReturnValue","fix","fixer","lines","minLines","maxLines","indent","getIndent","insertion","repeat","slice","baseNode","includes","parent","insertTextBefore","report","loc","end","start","messageId","Boolean","initModuleExports","initWindow","parseResult","exportParser","parse","ast","exported","isExported","assign","getContextObject","enforcedContexts","value"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport jsdocUtils from '../jsdocUtils';\nimport exportParser from '../exportParser';\nimport getJSDocComment from '../eslint/getJSDocComment';\nimport warnRemovedSettings from '../warnRemovedSettings';\nimport {getSettings} from '../iterateJsdoc';\n\nconst OPTIONS_SCHEMA = {\n additionalProperties: false,\n properties: {\n contexts: {\n items: {\n type: 'string',\n },\n type: 'array',\n },\n exemptEmptyFunctions: {\n default: false,\n type: 'boolean',\n },\n publicOnly: {\n oneOf: [\n {\n default: false,\n type: 'boolean',\n },\n {\n additionalProperties: false,\n default: {},\n properties: {\n ancestorsOnly: {\n type: 'boolean',\n },\n cjs: {\n type: 'boolean',\n },\n esm: {\n type: 'boolean',\n },\n window: {\n type: 'boolean',\n },\n },\n type: 'object',\n },\n ],\n },\n require: {\n additionalProperties: false,\n default: {},\n properties: {\n ArrowFunctionExpression: {\n default: false,\n type: 'boolean',\n },\n ClassDeclaration: {\n default: false,\n type: 'boolean',\n },\n ClassExpression: {\n default: false,\n type: 'boolean',\n },\n FunctionDeclaration: {\n default: true,\n type: 'boolean',\n },\n FunctionExpression: {\n default: false,\n type: 'boolean',\n },\n MethodDefinition: {\n default: false,\n type: 'boolean',\n },\n },\n type: 'object',\n },\n },\n type: 'object',\n};\n\nconst getOption = (context, baseObject, option, key) => {\n if (!_.has(context, `options[0][${option}][${key}]`)) {\n return baseObject.properties[key].default;\n }\n\n return context.options[0][option][key];\n};\n\nconst getOptions = (context) => {\n return {\n exemptEmptyFunctions: context.options[0] ? context.options[0].exemptEmptyFunctions : false,\n publicOnly: ((baseObj) => {\n const publicOnly = _.get(context, 'options[0].publicOnly');\n if (!publicOnly) {\n return false;\n }\n\n return Object.keys(baseObj.properties).reduce((obj, prop) => {\n const opt = getOption(context, baseObj, 'publicOnly', prop);\n obj[prop] = opt;\n\n return obj;\n }, {});\n })(OPTIONS_SCHEMA.properties.publicOnly.oneOf[1]),\n require: ((baseObj) => {\n return Object.keys(baseObj.properties).reduce((obj, prop) => {\n const opt = getOption(context, baseObj, 'require', prop);\n obj[prop] = opt;\n\n return obj;\n }, {});\n })(OPTIONS_SCHEMA.properties.require),\n };\n};\n\n/* eslint-disable sort-keys */\nexport default {\n meta: {\n doc: {\n category: 'Stylistic Issues',\n description: 'Require JSDoc comments',\n recommended: 'true',\n url: 'https://github.com/gajus/eslint-plugin-jsdoc',\n },\n\n fixable: 'code',\n\n messages: {\n missingJsDoc: 'Missing JSDoc comment.',\n },\n\n schema: [\n OPTIONS_SCHEMA,\n ],\n\n type: 'suggestion',\n },\n create (context) {\n warnRemovedSettings(context, 'require-jsdoc');\n\n const sourceCode = context.getSourceCode();\n\n const {require: requireOption, publicOnly, exemptEmptyFunctions} = getOptions(context);\n\n const settings = getSettings(context);\n\n const checkJsDoc = (node) => {\n const jsDocNode = getJSDocComment(sourceCode, node, settings);\n\n if (jsDocNode) {\n return;\n }\n\n if (exemptEmptyFunctions) {\n const functionParameterNames = jsdocUtils.getFunctionParameterNames(node);\n if (!functionParameterNames.length && !jsdocUtils.hasReturnValue(node, context)) {\n return;\n }\n }\n\n const fix = (fixer) => {\n // Default to one line break if the `minLines`/`maxLines` settings allow\n const lines = settings.minLines === 0 && settings.maxLines >= 1 ? 1 : settings.minLines;\n const indent = jsdocUtils.getIndent(sourceCode);\n const insertion = `/**\\n${indent}*\\n${indent}*/${'\\n'.repeat(lines)}${indent.slice(0, -1)}`;\n const baseNode = [\n 'ExportDefaultDeclaration', 'ExportNamedDeclaration',\n ].includes(node.parent && node.parent.type) ? node.parent : node;\n\n return fixer.insertTextBefore(baseNode, insertion);\n };\n\n const report = () => {\n const loc = {\n end: node.loc.start + 1,\n start: node.loc.start,\n };\n context.report({\n fix,\n messageId: 'missingJsDoc',\n node,\n loc,\n });\n };\n\n if (publicOnly) {\n const opt = {\n ancestorsOnly: Boolean(_.get(publicOnly, 'ancestorsOnly', false)),\n esm: Boolean(_.get(publicOnly, 'esm', true)),\n initModuleExports: Boolean(_.get(publicOnly, 'cjs', true)),\n initWindow: Boolean(_.get(publicOnly, 'window', false)),\n };\n const parseResult = exportParser.parse(sourceCode.ast, node, opt);\n const exported = exportParser.isExported(node, parseResult, opt);\n\n if (exported) {\n report();\n }\n } else {\n report();\n }\n };\n\n // eslint-disable-next-line fp/no-mutating-assign\n return Object.assign(\n jsdocUtils.getContextObject(jsdocUtils.enforcedContexts(context, []), checkJsDoc),\n {\n ArrowFunctionExpression (node) {\n if (!requireOption.ArrowFunctionExpression) {\n return;\n }\n\n if (!['VariableDeclarator', 'ExportDefaultDeclaration'].includes(node.parent.type)) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n ClassDeclaration (node) {\n if (!requireOption.ClassDeclaration) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n ClassExpression (node) {\n if (!requireOption.ClassExpression) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n FunctionDeclaration (node) {\n if (!requireOption.FunctionDeclaration) {\n return;\n }\n\n checkJsDoc(node);\n },\n\n FunctionExpression (node) {\n if (requireOption.MethodDefinition && node.parent.type === 'MethodDefinition') {\n checkJsDoc(node);\n\n return;\n }\n\n if (!requireOption.FunctionExpression) {\n return;\n }\n\n if (['VariableDeclarator', 'AssignmentExpression', 'ExportDefaultDeclaration'].includes(node.parent.type)) {\n checkJsDoc(node);\n } else if (node.parent.type === 'Property' && node === node.parent.value) {\n checkJsDoc(node);\n }\n },\n },\n );\n },\n};\n"],"file":"requireJsdoc.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireParamDescription.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","description","name","meta","type"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAI,CAACD,cAAc,CAACE,WAApB,EAAiC;AAC/BL,MAAAA,MAAM,CACH,kBAAiBI,aAAc,KAAID,cAAc,CAACG,IAAK,gBADpD,EAEJ,IAFI,EAGJH,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDI,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (!jsdocParameter.description) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" description.`,\n null,\n jsdocParameter
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireParamDescription.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","description","name","meta","type"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAI,CAACD,cAAc,CAACE,WAApB,EAAiC;AAC/BL,MAAAA,MAAM,CACH,kBAAiBI,aAAc,KAAID,cAAc,CAACG,IAAK,gBADpD,EAEJ,IAFI,EAGJH,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDI,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (!jsdocParameter.description) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" description.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n meta: {\n type: 'suggestion',\n },\n});\n"],"file":"requireParamDescription.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireParamName.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","tag","name","type","meta"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAID,cAAc,CAACE,GAAf,IAAsBF,cAAc,CAACG,IAAf,KAAwB,EAAlD,EAAsD;AACpDN,MAAAA,MAAM,CACH,sCAAqCI,aAAc,IAAGD,cAAc,CAACI,IAAf,KAAwB,EAAxB,GAA6B,MAA7B,GAAsC,KAAM,GAD/F,EAEJ,IAFI,EAGJJ,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDK,EAAAA,IAAI,EAAE;AACJD,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (jsdocParameter.tag && jsdocParameter.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdocParameter.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdocParameter
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireParamName.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","tag","name","type","meta"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAID,cAAc,CAACE,GAAf,IAAsBF,cAAc,CAACG,IAAf,KAAwB,EAAlD,EAAsD;AACpDN,MAAAA,MAAM,CACH,sCAAqCI,aAAc,IAAGD,cAAc,CAACI,IAAf,KAAwB,EAAxB,GAA6B,MAA7B,GAAsC,KAAM,GAD/F,EAEJ,IAFI,EAGJJ,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDK,EAAAA,IAAI,EAAE;AACJD,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (jsdocParameter.tag && jsdocParameter.name === '') {\n report(\n `There must be an identifier after @${targetTagName} ${jsdocParameter.type === '' ? 'type' : 'tag'}.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n meta: {\n type: 'suggestion',\n },\n});\n"],"file":"requireParamName.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/rules/requireParamType.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","type","name","meta"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAI,CAACD,cAAc,CAACE,IAApB,EAA0B;AACxBL,MAAAA,MAAM,CACH,kBAAiBI,aAAc,KAAID,cAAc,CAACG,IAAK,SADpD,EAEJ,IAFI,EAGJH,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDI,EAAAA,IAAI,EAAE;AACJF,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (!jsdocParameter.type) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" type.`,\n null,\n jsdocParameter
|
|
1
|
+
{"version":3,"sources":["../../src/rules/requireParamType.js"],"names":["report","utils","forEachPreferredTag","jsdocParameter","targetTagName","type","name","meta"],"mappings":";;;;;;;AAAA;;;;eAEe,2BAAa,CAAC;AAC3BA,EAAAA,MAD2B;AAE3BC,EAAAA;AAF2B,CAAD,KAGtB;AACJA,EAAAA,KAAK,CAACC,mBAAN,CAA0B,OAA1B,EAAmC,CAACC,cAAD,EAAiBC,aAAjB,KAAmC;AACpE,QAAI,CAACD,cAAc,CAACE,IAApB,EAA0B;AACxBL,MAAAA,MAAM,CACH,kBAAiBI,aAAc,KAAID,cAAc,CAACG,IAAK,SADpD,EAEJ,IAFI,EAGJH,cAHI,CAAN;AAKD;AACF,GARD;AASD,CAbc,EAaZ;AACDI,EAAAA,IAAI,EAAE;AACJF,IAAAA,IAAI,EAAE;AADF;AADL,CAbY,C","sourcesContent":["import iterateJsdoc from '../iterateJsdoc';\n\nexport default iterateJsdoc(({\n report,\n utils,\n}) => {\n utils.forEachPreferredTag('param', (jsdocParameter, targetTagName) => {\n if (!jsdocParameter.type) {\n report(\n `Missing JSDoc @${targetTagName} \"${jsdocParameter.name}\" type.`,\n null,\n jsdocParameter,\n );\n }\n });\n}, {\n meta: {\n type: 'suggestion',\n },\n});\n"],"file":"requireParamType.js"}
|
package/package.json
CHANGED
|
@@ -25,14 +25,14 @@
|
|
|
25
25
|
"babel-plugin-add-module-exports": "^1.0.2",
|
|
26
26
|
"babel-plugin-istanbul": "^5.2.0",
|
|
27
27
|
"chai": "^4.2.0",
|
|
28
|
-
"eslint": "6.
|
|
28
|
+
"eslint": "6.6.0",
|
|
29
29
|
"eslint-config-canonical": "^17.7.0",
|
|
30
30
|
"gitdown": "^3.1.1",
|
|
31
31
|
"glob": "^7.1.5",
|
|
32
32
|
"husky": "^3.0.9",
|
|
33
33
|
"mocha": "^6.2.2",
|
|
34
34
|
"nyc": "^14.1.1",
|
|
35
|
-
"semantic-release": "^15.13.
|
|
35
|
+
"semantic-release": "^15.13.28",
|
|
36
36
|
"typescript": "^3.6.4"
|
|
37
37
|
},
|
|
38
38
|
"engines": {
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"functions": 100,
|
|
85
85
|
"statements": 100
|
|
86
86
|
},
|
|
87
|
-
"version": "15.12.
|
|
87
|
+
"version": "15.12.2"
|
|
88
88
|
}
|