Socket
Socket
Sign inDemoInstall

eslint-plugin-jsdoc

Package Overview
Dependencies
Maintainers
1
Versions
656
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-plugin-jsdoc - npm Package Compare versions

Comparing version 2.3.1 to 2.4.0

56

dist/index.js
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});

@@ -54,30 +54,30 @@

exports.default = {
rules: {
'check-param-names': _checkParamNames2.default,
'check-tag-names': _checkTagNames2.default,
'check-types': _checkTypes2.default,
'newline-after-description': _newlineAfterDescription2.default,
'require-description-complete-sentence': _requireDescriptionCompleteSentence2.default,
'require-hyphen-before-param-description': _requireHyphenBeforeParamDescription2.default,
'require-param': _requireParam2.default,
'require-param-description': _requireParamDescription2.default,
'require-param-type': _requireParamType2.default,
'require-returns-description': _requireReturnsDescription2.default,
'require-returns-type': _requireReturnsType2.default
},
rulesConfig: {
'check-param-names': 0,
'check-tag-names': 0,
'check-types': 0,
'newline-after-description': 0,
'require-description-complete-sentence': 0,
'require-hyphen-before-param-description': 0,
'require-param': 0,
'require-param-description': 0,
'require-param-type': 0,
'require-returns-description': 0,
'require-returns-type': 0
}
rules: {
'check-param-names': _checkParamNames2.default,
'check-tag-names': _checkTagNames2.default,
'check-types': _checkTypes2.default,
'newline-after-description': _newlineAfterDescription2.default,
'require-description-complete-sentence': _requireDescriptionCompleteSentence2.default,
'require-hyphen-before-param-description': _requireHyphenBeforeParamDescription2.default,
'require-param': _requireParam2.default,
'require-param-description': _requireParamDescription2.default,
'require-param-type': _requireParamType2.default,
'require-returns-description': _requireReturnsDescription2.default,
'require-returns-type': _requireReturnsType2.default
},
rulesConfig: {
'check-param-names': 0,
'check-tag-names': 0,
'check-types': 0,
'newline-after-description': 0,
'require-description-complete-sentence': 0,
'require-hyphen-before-param-description': 0,
'require-param': 0,
'require-param-description': 0,
'require-param-type': 0,
'require-returns-description': 0,
'require-returns-type': 0
}
};
module.exports = exports['default'];
//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _includes2 = require('lodash/includes');
var _lodash = require('lodash');
var _includes3 = _interopRequireDefault(_includes2);
var _lodash2 = _interopRequireDefault(_lodash);
var _get2 = require('lodash/get');
var _get3 = _interopRequireDefault(_get2);
var _commentParser = require('comment-parser');

@@ -25,75 +21,81 @@

var curryUtils = function curryUtils(functionNode, jsdoc, tagNamePreference) {
var utils = {};
var curryUtils = function curryUtils(functionNode, jsdoc, tagNamePreference, additionalTagNames) {
var utils = {};
utils.getFunctionParameterNames = function () {
return _jsdocUtils2.default.getFunctionParameterNames(functionNode);
};
utils.getFunctionParameterNames = function () {
return _jsdocUtils2.default.getFunctionParameterNames(functionNode);
};
utils.getJsdocParameterNamesDeep = function () {
return _jsdocUtils2.default.getJsdocParameterNamesDeep(jsdoc, utils.getPreferredTagName('param'));
};
utils.getJsdocParameterNamesDeep = function () {
return _jsdocUtils2.default.getJsdocParameterNamesDeep(jsdoc, utils.getPreferredTagName('param'));
};
utils.getJsdocParameterNames = function () {
return _jsdocUtils2.default.getJsdocParameterNames(jsdoc, utils.getPreferredTagName('param'));
};
utils.getJsdocParameterNames = function () {
return _jsdocUtils2.default.getJsdocParameterNames(jsdoc, utils.getPreferredTagName('param'));
};
utils.getPreferredTagName = function (name) {
return _jsdocUtils2.default.getPreferredTagName(name, tagNamePreference);
};
utils.getPreferredTagName = function (name) {
return _jsdocUtils2.default.getPreferredTagName(name, tagNamePreference);
};
utils.isValidTag = function (name) {
return _jsdocUtils2.default.isValidTag(name);
};
utils.isValidTag = function (name) {
return _jsdocUtils2.default.isValidTag(name, additionalTagNames);
};
return utils;
utils.hasTag = function (name) {
return _jsdocUtils2.default.hasTag(jsdoc, name);
};
return utils;
};
exports.default = function (iterator) {
return function (context) {
var sourceCode = context.getSourceCode();
var tagNamePreference = (0, _get3.default)(context, 'settings.jsdoc.tagNamePreference') || {};
return function (context) {
var sourceCode = context.getSourceCode();
var tagNamePreference = _lodash2.default.get(context, 'settings.jsdoc.tagNamePreference') || {};
var additionalTagNames = _lodash2.default.get(context, 'settings.jsdoc.additionalTagNames') || {};
var checkJsdoc = function checkJsdoc(functionNode) {
var jsdocNode = sourceCode.getJSDocComment(functionNode);
var checkJsdoc = function checkJsdoc(functionNode) {
var jsdocNode = sourceCode.getJSDocComment(functionNode);
if (!jsdocNode) {
return;
}
if (!jsdocNode) {
return;
}
var jsdoc = (0, _commentParser2.default)('/*' + jsdocNode.value + '*/', {
// @see https://github.com/yavorskiy/comment-parser/issues/21
parsers: [_commentParser2.default.PARSERS.parse_tag, _commentParser2.default.PARSERS.parse_type, function (str, data) {
if ((0, _includes3.default)(['return', 'returns'], data.tag)) {
return null;
}
return _commentParser2.default.PARSERS.parse_name(str, data);
}, _commentParser2.default.PARSERS.parse_description]
})[0] || {};
var jsdoc = (0, _commentParser2.default)('/*' + jsdocNode.value + '*/', {
// @see https://github.com/yavorskiy/comment-parser/issues/21
parsers: [_commentParser2.default.PARSERS.parse_tag, _commentParser2.default.PARSERS.parse_type, function (str, data) {
if (_lodash2.default.includes(['return', 'returns'], data.tag)) {
return null;
}
var report = function report(message) {
context.report(jsdocNode, message);
};
return _commentParser2.default.PARSERS.parse_name(str, data);
}, _commentParser2.default.PARSERS.parse_description]
})[0] || {};
var utils = curryUtils(functionNode, jsdoc, tagNamePreference);
var report = function report(message) {
context.report(jsdocNode, message);
};
iterator({
context: context,
functionNode: functionNode,
jsdoc: jsdoc,
jsdocNode: jsdocNode,
report: report,
utils: utils
});
};
var utils = curryUtils(functionNode, jsdoc, tagNamePreference, additionalTagNames);
return {
ArrowFunctionExpression: checkJsdoc,
FunctionDeclaration: checkJsdoc,
FunctionExpression: checkJsdoc
};
iterator({
context: context,
functionNode: functionNode,
jsdoc: jsdoc,
jsdocNode: jsdocNode,
report: report,
utils: utils
});
};
return {
ArrowFunctionExpression: checkJsdoc,
FunctionDeclaration: checkJsdoc,
FunctionExpression: checkJsdoc
};
};
};
module.exports = exports['default'];
//# sourceMappingURL=iterateJsdoc.js.map
//# sourceMappingURL=iterateJsdoc.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _flatten2 = require('lodash/flatten');
var _lodash = require('lodash');
var _flatten3 = _interopRequireDefault(_flatten2);
var _lodash2 = _interopRequireDefault(_lodash);
var _keys2 = require('lodash/keys');
var _keys3 = _interopRequireDefault(_keys2);
var _findKey2 = require('lodash/findKey');
var _findKey3 = _interopRequireDefault(_findKey2);
var _values2 = require('lodash/values');
var _values3 = _interopRequireDefault(_values2);
var _includes2 = require('lodash/includes');
var _includes3 = _interopRequireDefault(_includes2);
var _filter2 = require('lodash/filter');
var _filter3 = _interopRequireDefault(_filter2);
var _has2 = require('lodash/has');
var _has3 = _interopRequireDefault(_has2);
var _map2 = require('lodash/map');
var _map3 = _interopRequireDefault(_map2);
var _tagNames = require('./tagNames');

@@ -46,21 +18,21 @@

var getFunctionParameterNames = function getFunctionParameterNames(functionNode) {
return (0, _map3.default)(functionNode.params, function (param) {
if ((0, _has3.default)(param, 'name')) {
return param.name;
}
return _lodash2.default.map(functionNode.params, function (param) {
if (_lodash2.default.has(param, 'name')) {
return param.name;
}
if ((0, _has3.default)(param, 'left.name')) {
return param.left.name;
}
if (_lodash2.default.has(param, 'left.name')) {
return param.left.name;
}
if (param.type === 'ObjectPattern') {
return '<ObjectPattern>';
}
if (param.type === 'ObjectPattern') {
return '<ObjectPattern>';
}
if (param.type === 'RestElement') {
return param.argument.name;
}
if (param.type === 'RestElement') {
return param.argument.name;
}
throw new Error('Unsupported function signature format.');
});
throw new Error('Unsupported function signature format.');
});
};

@@ -72,57 +44,68 @@

var getJsdocParameterNamesDeep = function getJsdocParameterNamesDeep(jsdoc, targetTagName) {
var jsdocParameterNames = undefined;
var jsdocParameterNames = void 0;
jsdocParameterNames = (0, _filter3.default)(jsdoc.tags, {
tag: targetTagName
});
jsdocParameterNames = _lodash2.default.filter(jsdoc.tags, {
tag: targetTagName
});
jsdocParameterNames = (0, _map3.default)(jsdocParameterNames, 'name');
jsdocParameterNames = _lodash2.default.map(jsdocParameterNames, 'name');
return jsdocParameterNames;
return jsdocParameterNames;
};
var getJsdocParameterNames = function getJsdocParameterNames(jsdoc, targetTagName) {
var jsdocParameterNames = undefined;
var jsdocParameterNames = void 0;
jsdocParameterNames = getJsdocParameterNamesDeep(jsdoc, targetTagName);
jsdocParameterNames = getJsdocParameterNamesDeep(jsdoc, targetTagName);
jsdocParameterNames = (0, _filter3.default)(jsdocParameterNames, function (name) {
return name.indexOf('.') === -1;
});
jsdocParameterNames = _lodash2.default.filter(jsdocParameterNames, function (name) {
return name.indexOf('.') === -1;
});
return jsdocParameterNames;
return jsdocParameterNames;
};
var getPreferredTagName = function getPreferredTagName(name) {
var tagPreference = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
var tagPreference = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if ((0, _includes3.default)((0, _values3.default)(tagPreference), name)) {
return name;
}
if (_lodash2.default.includes(_lodash2.default.values(tagPreference), name)) {
return name;
}
var preferredTagName = (0, _findKey3.default)(_tagNames2.default, function (aliases) {
return (0, _includes3.default)(aliases, name);
});
var preferredTagName = _lodash2.default.findKey(_tagNames2.default, function (aliases) {
return _lodash2.default.includes(aliases, name);
});
if (preferredTagName) {
return preferredTagName;
}
if (preferredTagName) {
return preferredTagName;
}
return (0, _has3.default)(tagPreference, name) ? tagPreference[name] : name;
return _lodash2.default.has(tagPreference, name) ? tagPreference[name] : name;
};
var isValidTag = function isValidTag(name) {
var validTagNames = (0, _keys3.default)(_tagNames2.default).concat((0, _flatten3.default)((0, _values3.default)(_tagNames2.default)));
var isValidTag = function isValidTag(name, additionalTagNames) {
var validTagNames = _lodash2.default.keys(_tagNames2.default).concat(_lodash2.default.flatten(_lodash2.default.values(_tagNames2.default)));
var additionalTags = additionalTagNames.customTags || [];
var allTags = validTagNames.concat(additionalTags);
return (0, _includes3.default)(validTagNames, name);
return _lodash2.default.includes(allTags, name);
};
var hasTag = function hasTag(jsdoc, targetTagName) {
var targetTagLower = targetTagName.toLowerCase();
return _lodash2.default.some(jsdoc.tags, function (doc) {
return doc.tag.toLowerCase() === targetTagLower;
});
};
exports.default = {
getFunctionParameterNames: getFunctionParameterNames,
getJsdocParameterNames: getJsdocParameterNames,
getJsdocParameterNamesDeep: getJsdocParameterNamesDeep,
getPreferredTagName: getPreferredTagName,
isValidTag: isValidTag
getFunctionParameterNames: getFunctionParameterNames,
getJsdocParameterNames: getJsdocParameterNames,
getJsdocParameterNamesDeep: getJsdocParameterNamesDeep,
getPreferredTagName: getPreferredTagName,
hasTag: hasTag,
isValidTag: isValidTag
};
module.exports = exports['default'];
//# sourceMappingURL=jsdocUtils.js.map
//# sourceMappingURL=jsdocUtils.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _includes2 = require('lodash/includes');
var _lodash = require('lodash');
var _includes3 = _interopRequireDefault(_includes2);
var _lodash2 = _interopRequireDefault(_lodash);
var _some2 = require('lodash/some');
var _iterateJsdoc = require('../iterateJsdoc');
var _some3 = _interopRequireDefault(_some2);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);

@@ -22,70 +18,70 @@

var validateParameterNames = function validateParameterNames(targetTagName, functionParameterNames, jsdocParameterNames, report) {
return (0, _some3.default)(jsdocParameterNames, function (jsdocParameterName, index) {
var functionParameterName = functionParameterNames[index];
return _lodash2.default.some(jsdocParameterNames, function (jsdocParameterName, index) {
var functionParameterName = functionParameterNames[index];
if (!functionParameterName) {
report('@' + targetTagName + ' "' + jsdocParameterName + '" does not match an existing function parameter.');
if (!functionParameterName) {
report('@' + targetTagName + ' "' + jsdocParameterName + '" does not match an existing function parameter.');
return true;
}
return true;
}
if (functionParameterName === '<ObjectPattern>') {
return;
}
if (functionParameterName === '<ObjectPattern>') {
return false;
}
if (functionParameterName !== jsdocParameterName) {
report('Expected @' + targetTagName + ' names to be "' + functionParameterNames.join(', ') + '". Got "' + jsdocParameterNames.join(', ') + '".');
if (functionParameterName !== jsdocParameterName) {
report('Expected @' + targetTagName + ' names to be "' + functionParameterNames.join(', ') + '". Got "' + jsdocParameterNames.join(', ') + '".');
return true;
}
return true;
}
return false;
});
return false;
});
};
var validateParameterNamesDeep = function validateParameterNamesDeep(targetTagName, jsdocParameterNames, report) {
var lastRealParameter = undefined;
var lastRealParameter = void 0;
return (0, _some3.default)(jsdocParameterNames, function (jsdocParameterName) {
var isPropertyPath = (0, _includes3.default)(jsdocParameterName, '.');
return _lodash2.default.some(jsdocParameterNames, function (jsdocParameterName) {
var isPropertyPath = _lodash2.default.includes(jsdocParameterName, '.');
if (isPropertyPath) {
if (!lastRealParameter) {
report('@' + targetTagName + ' path declaration ("' + jsdocParameterName + '") appears before any real parameter.');
if (isPropertyPath) {
if (!lastRealParameter) {
report('@' + targetTagName + ' path declaration ("' + jsdocParameterName + '") appears before any real parameter.');
return true;
}
return true;
}
var pathRootNodeName = jsdocParameterName.slice(0, jsdocParameterName.indexOf('.'));
var pathRootNodeName = jsdocParameterName.slice(0, jsdocParameterName.indexOf('.'));
if (pathRootNodeName !== lastRealParameter) {
report('@' + targetTagName + ' path declaration ("' + jsdocParameterName + '") root node name ("' + pathRootNodeName + '") does not match previous real parameter name ("' + lastRealParameter + '").');
if (pathRootNodeName !== lastRealParameter) {
report('@' + targetTagName + ' path declaration ("' + jsdocParameterName + '") root node name ("' + pathRootNodeName + '") does not match previous real parameter name ("' + lastRealParameter + '").');
return true;
}
} else {
lastRealParameter = jsdocParameterName;
}
return true;
}
} else {
lastRealParameter = jsdocParameterName;
}
return false;
});
return false;
});
};
exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var report = _ref.report;
var utils = _ref.utils;
var report = _ref.report,
utils = _ref.utils;
var functionParameterNames = utils.getFunctionParameterNames();
var jsdocParameterNames = utils.getJsdocParameterNames();
var jsdocParameterNamesDeep = utils.getJsdocParameterNamesDeep();
var targetTagName = utils.getPreferredTagName('param');
var isError = validateParameterNames(targetTagName, functionParameterNames, jsdocParameterNames, report);
var functionParameterNames = utils.getFunctionParameterNames();
var jsdocParameterNames = utils.getJsdocParameterNames();
var jsdocParameterNamesDeep = utils.getJsdocParameterNamesDeep();
var targetTagName = utils.getPreferredTagName('param');
var isError = validateParameterNames(targetTagName, functionParameterNames, jsdocParameterNames, report);
if (isError) {
return;
}
if (isError) {
return;
}
validateParameterNamesDeep(targetTagName, jsdocParameterNamesDeep, report);
validateParameterNamesDeep(targetTagName, jsdocParameterNamesDeep, report);
});
module.exports = exports['default'];
//# sourceMappingURL=checkParamNames.js.map
//# sourceMappingURL=checkParamNames.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _forEach2 = require('lodash/forEach');
var _lodash = require('lodash');
var _forEach3 = _interopRequireDefault(_forEach2);
var _lodash2 = _interopRequireDefault(_lodash);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc = require('../iterateJsdoc');

@@ -18,19 +18,19 @@ var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);

exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var jsdoc = _ref.jsdoc;
var report = _ref.report;
var utils = _ref.utils;
var jsdoc = _ref.jsdoc,
report = _ref.report,
utils = _ref.utils;
(0, _forEach3.default)(jsdoc.tags, function (jsdocTag) {
if (utils.isValidTag(jsdocTag.tag)) {
var preferredTagName = utils.getPreferredTagName(jsdocTag.tag);
_lodash2.default.forEach(jsdoc.tags, function (jsdocTag) {
if (utils.isValidTag(jsdocTag.tag)) {
var preferredTagName = utils.getPreferredTagName(jsdocTag.tag);
if (preferredTagName !== jsdocTag.tag) {
report('Invalid JSDoc tag (preference). Replace "' + jsdocTag.tag + '" JSDoc tag with "' + preferredTagName + '".');
}
} else {
report('Invalid JSDoc tag name "' + jsdocTag.tag + '".');
}
});
if (preferredTagName !== jsdocTag.tag) {
report('Invalid JSDoc tag (preference). Replace "' + jsdocTag.tag + '" JSDoc tag with "' + preferredTagName + '".');
}
} else {
report('Invalid JSDoc tag name "' + jsdocTag.tag + '".');
}
});
});
module.exports = exports['default'];
//# sourceMappingURL=checkTagNames.js.map
//# sourceMappingURL=checkTagNames.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _some2 = require('lodash/some');
var _lodash = require('lodash');
var _some3 = _interopRequireDefault(_some2);
var _lodash2 = _interopRequireDefault(_lodash);
var _forEach2 = require('lodash/forEach');
var _forEach3 = _interopRequireDefault(_forEach2);
var _includes2 = require('lodash/includes');
var _includes3 = _interopRequireDefault(_includes2);
var _filter2 = require('lodash/filter');
var _filter3 = _interopRequireDefault(_filter2);
var _iterateJsdoc = require('./../iterateJsdoc');

@@ -38,20 +26,22 @@

exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var jsdoc = _ref.jsdoc;
var report = _ref.report;
var jsdoc = _ref.jsdoc,
report = _ref.report;
var jsdocTags = (0, _filter3.default)(jsdoc.tags, function (tag) {
return (0, _includes3.default)(targetTags, tag.tag);
});
var jsdocTags = _lodash2.default.filter(jsdoc.tags, function (tag) {
return _lodash2.default.includes(targetTags, tag.tag);
});
(0, _forEach3.default)(jsdocTags, function (jsdocTag) {
(0, _some3.default)(strictNativeTypes, function (strictNativeType) {
if (strictNativeType.toLowerCase() === jsdocTag.type.toLowerCase() && strictNativeType !== jsdocTag.type) {
report('Invalid JSDoc @' + jsdocTag.tag + ' "' + jsdocTag.name + '" type "' + jsdocTag.type + '".');
_lodash2.default.forEach(jsdocTags, function (jsdocTag) {
_lodash2.default.some(strictNativeTypes, function (strictNativeType) {
if (strictNativeType.toLowerCase() === jsdocTag.type.toLowerCase() && strictNativeType !== jsdocTag.type) {
report('Invalid JSDoc @' + jsdocTag.tag + ' "' + jsdocTag.name + '" type "' + jsdocTag.type + '".');
return true;
}
});
return true;
}
return false;
});
});
});
module.exports = exports['default'];
//# sourceMappingURL=checkTypes.js.map
//# sourceMappingURL=checkTypes.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _startsWith2 = require('lodash/startsWith');
var _lodash = require('lodash');
var _startsWith3 = _interopRequireDefault(_startsWith2);
var _lodash2 = _interopRequireDefault(_lodash);
var _has2 = require('lodash/has');
var _iterateJsdoc = require('../iterateJsdoc');
var _has3 = _interopRequireDefault(_has2);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);

@@ -22,34 +18,32 @@

exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var jsdoc = _ref.jsdoc;
var report = _ref.report;
var context = _ref.context;
var jsdoc = _ref.jsdoc,
report = _ref.report,
context = _ref.context;
var always = undefined;
var always = void 0;
if (!jsdoc.description || !jsdoc.tags.length) {
return;
}
if (!jsdoc.description || !jsdoc.tags.length) {
return;
}
if ((0, _has3.default)(context.options, 0)) {
always = context.options[0] === 'always';
} else {
always = true;
}
if (_lodash2.default.has(context.options, 0)) {
always = context.options[0] === 'always';
} else {
always = true;
}
// The contents of the jsdoc.source and of jsdoc.description is left trimmed.
// The contents of the jsdoc.description is right trimmed.
// This gets the text following the description.
var descriptionEndsWithANewline = (0, _startsWith3.default)(jsdoc.source.slice(jsdoc.description.length), '\n\n');
// The contents of the jsdoc.source and of jsdoc.description is left trimmed.
// The contents of the jsdoc.description is right trimmed.
// This gets the text following the description.
var descriptionEndsWithANewline = _lodash2.default.startsWith(jsdoc.source.slice(jsdoc.description.length), '\n\n');
if (always) {
if (!descriptionEndsWithANewline) {
report('There must be a newline after the description of the JSDoc block.');
}
} else {
if (descriptionEndsWithANewline) {
report('There must be no newline after the description of the JSDoc block.');
}
if (always) {
if (!descriptionEndsWithANewline) {
report('There must be a newline after the description of the JSDoc block.');
}
} else if (descriptionEndsWithANewline) {
report('There must be no newline after the description of the JSDoc block.');
}
});
module.exports = exports['default'];
//# sourceMappingURL=newlineAfterDescription.js.map
//# sourceMappingURL=newlineAfterDescription.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _trimStart2 = require('lodash/trimStart');
var _lodash = require('lodash');
var _trimStart3 = _interopRequireDefault(_trimStart2);
var _lodash2 = _interopRequireDefault(_lodash);
var _includes2 = require('lodash/includes');
var _iterateJsdoc = require('../iterateJsdoc');
var _includes3 = _interopRequireDefault(_includes2);
var _filter2 = require('lodash/filter');
var _filter3 = _interopRequireDefault(_filter2);
var _isBoolean2 = require('lodash/isBoolean');
var _isBoolean3 = _interopRequireDefault(_isBoolean2);
var _some2 = require('lodash/some');
var _some3 = _interopRequireDefault(_some2);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);

@@ -34,74 +18,74 @@

var extractParagraphs = function extractParagraphs(text) {
return text.split(/\n\n/);
return text.split(/\n\n/);
};
var isNewLinePrecededByAPeriod = function isNewLinePrecededByAPeriod(text) {
var lastLineEndsSentence = undefined;
var lastLineEndsSentence = void 0;
var lines = text.split('\n');
var lines = text.split('\n');
return !(0, _some3.default)(lines, function (line) {
if ((0, _isBoolean3.default)(lastLineEndsSentence) && !lastLineEndsSentence && /^[A-Z]/.test(line)) {
return true;
}
return !_lodash2.default.some(lines, function (line) {
if (_lodash2.default.isBoolean(lastLineEndsSentence) && !lastLineEndsSentence && /^[A-Z]/.test(line)) {
return true;
}
lastLineEndsSentence = /\.$/.test(line);
lastLineEndsSentence = /\.$/.test(line);
return false;
});
return false;
});
};
var validateDescription = function validateDescription(description, report) {
if (!description) {
return false;
}
if (!description) {
return false;
}
var paragraphs = extractParagraphs(description);
var paragraphs = extractParagraphs(description);
return (0, _some3.default)(paragraphs, function (paragraph, index) {
if (!/^[A-Z]/.test(paragraph)) {
if (index === 0) {
report('Description must start with an uppercase character.');
} else {
report('Paragraph must start with an uppercase character.');
}
return _lodash2.default.some(paragraphs, function (paragraph, index) {
if (!/^[A-Z]/.test(paragraph)) {
if (index === 0) {
report('Description must start with an uppercase character.');
} else {
report('Paragraph must start with an uppercase character.');
}
return true;
}
return true;
}
if (!/\.$/.test(paragraph)) {
report('Sentence must end with a period.');
if (!/\.$/.test(paragraph)) {
report('Sentence must end with a period.');
return true;
}
return true;
}
if (!isNewLinePrecededByAPeriod(paragraph)) {
report('A line of text is started with an uppercase character, but preceding line does not end the sentence.');
if (!isNewLinePrecededByAPeriod(paragraph)) {
report('A line of text is started with an uppercase character, but preceding line does not end the sentence.');
return true;
}
return true;
}
return false;
});
return false;
});
};
exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var jsdoc = _ref.jsdoc;
var report = _ref.report;
var jsdoc = _ref.jsdoc,
report = _ref.report;
if (validateDescription(jsdoc.description, report)) {
return;
}
if (validateDescription(jsdoc.description, report)) {
return;
}
var tags = (0, _filter3.default)(jsdoc.tags, function (tag) {
return (0, _includes3.default)(['param', 'returns'], tag.tag);
});
var tags = _lodash2.default.filter(jsdoc.tags, function (tag) {
return _lodash2.default.includes(['param', 'returns'], tag.tag);
});
(0, _some3.default)(tags, function (tag) {
var description = (0, _trimStart3.default)(tag.description, '- ');
_lodash2.default.some(tags, function (tag) {
var description = _lodash2.default.trimStart(tag.description, '- ');
return validateDescription(description, report);
});
return validateDescription(description, report);
});
});
module.exports = exports['default'];
//# sourceMappingURL=requireDescriptionCompleteSentence.js.map
//# sourceMappingURL=requireDescriptionCompleteSentence.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _startsWith2 = require('lodash/startsWith');
var _lodash = require('lodash');
var _startsWith3 = _interopRequireDefault(_startsWith2);
var _lodash2 = _interopRequireDefault(_lodash);
var _forEach2 = require('lodash/forEach');
var _iterateJsdoc = require('../iterateJsdoc');
var _forEach3 = _interopRequireDefault(_forEach2);
var _filter2 = require('lodash/filter');
var _filter3 = _interopRequireDefault(_filter2);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);

@@ -26,16 +18,16 @@

exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var jsdoc = _ref.jsdoc;
var report = _ref.report;
var jsdoc = _ref.jsdoc,
report = _ref.report;
var jsdocTags = (0, _filter3.default)(jsdoc.tags, {
tag: 'param'
});
var jsdocTags = _lodash2.default.filter(jsdoc.tags, {
tag: 'param'
});
(0, _forEach3.default)(jsdocTags, function (jsdocTag) {
if (jsdocTag.description && !(0, _startsWith3.default)(jsdocTag.description, '-')) {
report('There must be a hyphen before @param description.');
}
});
_lodash2.default.forEach(jsdocTags, function (jsdocTag) {
if (jsdocTag.description && !_lodash2.default.startsWith(jsdocTag.description, '-')) {
report('There must be a hyphen before @param description.');
}
});
});
module.exports = exports['default'];
//# sourceMappingURL=requireHyphenBeforeParamDescription.js.map
//# sourceMappingURL=requireHyphenBeforeParamDescription.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _some2 = require('lodash/some');
var _lodash = require('lodash');
var _some3 = _interopRequireDefault(_some2);
var _lodash2 = _interopRequireDefault(_lodash);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc = require('../iterateJsdoc');

@@ -18,21 +18,26 @@ var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);

exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var report = _ref.report;
var utils = _ref.utils;
var report = _ref.report,
utils = _ref.utils;
var functionParameterNames = utils.getFunctionParameterNames();
var jsdocParameterNames = utils.getJsdocParameterNames();
var functionParameterNames = utils.getFunctionParameterNames();
var jsdocParameterNames = utils.getJsdocParameterNames();
(0, _some3.default)(functionParameterNames, function (functionParameterName, index) {
var jsdocParameterName = jsdocParameterNames[index];
// inheritdoc implies that all documentation is inherited; see http://usejsdoc.org/tags-inheritdoc.html
if (utils.hasTag('inheritdoc')) {
return;
}
if (!jsdocParameterName) {
report('Missing JSDoc @' + utils.getPreferredTagName('param') + ' "' + functionParameterName + '" declaration.');
_lodash2.default.some(functionParameterNames, function (functionParameterName, index) {
var jsdocParameterName = jsdocParameterNames[index];
return true;
}
if (!jsdocParameterName) {
report('Missing JSDoc @' + utils.getPreferredTagName('param') + ' "' + functionParameterName + '" declaration.');
return false;
});
return true;
}
return false;
});
});
module.exports = exports['default'];
//# sourceMappingURL=requireParam.js.map
//# sourceMappingURL=requireParam.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _forEach2 = require('lodash/forEach');
var _lodash = require('lodash');
var _forEach3 = _interopRequireDefault(_forEach2);
var _lodash2 = _interopRequireDefault(_lodash);
var _filter2 = require('lodash/filter');
var _iterateJsdoc = require('../iterateJsdoc');
var _filter3 = _interopRequireDefault(_filter2);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);

@@ -22,19 +18,19 @@

exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var jsdoc = _ref.jsdoc;
var report = _ref.report;
var utils = _ref.utils;
var jsdoc = _ref.jsdoc,
report = _ref.report,
utils = _ref.utils;
var targetTagName = utils.getPreferredTagName('param');
var targetTagName = utils.getPreferredTagName('param');
var jsdocParameters = (0, _filter3.default)(jsdoc.tags, {
tag: targetTagName
});
var jsdocParameters = _lodash2.default.filter(jsdoc.tags, {
tag: targetTagName
});
(0, _forEach3.default)(jsdocParameters, function (jsdocParameter) {
if (!jsdocParameter.description) {
report('Missing JSDoc @' + targetTagName + ' "' + jsdocParameter.name + '" description.');
}
});
_lodash2.default.forEach(jsdocParameters, function (jsdocParameter) {
if (!jsdocParameter.description) {
report('Missing JSDoc @' + targetTagName + ' "' + jsdocParameter.name + '" description.');
}
});
});
module.exports = exports['default'];
//# sourceMappingURL=requireParamDescription.js.map
//# sourceMappingURL=requireParamDescription.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _forEach2 = require('lodash/forEach');
var _lodash = require('lodash');
var _forEach3 = _interopRequireDefault(_forEach2);
var _lodash2 = _interopRequireDefault(_lodash);
var _filter2 = require('lodash/filter');
var _iterateJsdoc = require('../iterateJsdoc');
var _filter3 = _interopRequireDefault(_filter2);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);

@@ -22,19 +18,19 @@

exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var jsdoc = _ref.jsdoc;
var report = _ref.report;
var utils = _ref.utils;
var jsdoc = _ref.jsdoc,
report = _ref.report,
utils = _ref.utils;
var targetTagName = utils.getPreferredTagName('param');
var targetTagName = utils.getPreferredTagName('param');
var jsdocParameters = (0, _filter3.default)(jsdoc.tags, {
tag: targetTagName
});
var jsdocParameters = _lodash2.default.filter(jsdoc.tags, {
tag: targetTagName
});
(0, _forEach3.default)(jsdocParameters, function (jsdocParameter) {
if (!jsdocParameter.type) {
report('Missing JSDoc @' + targetTagName + ' "' + jsdocParameter.name + '" type.');
}
});
_lodash2.default.forEach(jsdocParameters, function (jsdocParameter) {
if (!jsdocParameter.type) {
report('Missing JSDoc @' + targetTagName + ' "' + jsdocParameter.name + '" type.');
}
});
});
module.exports = exports['default'];
//# sourceMappingURL=requireParamType.js.map
//# sourceMappingURL=requireParamType.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _forEach2 = require('lodash/forEach');
var _lodash = require('lodash');
var _forEach3 = _interopRequireDefault(_forEach2);
var _lodash2 = _interopRequireDefault(_lodash);
var _filter2 = require('lodash/filter');
var _iterateJsdoc = require('../iterateJsdoc');
var _filter3 = _interopRequireDefault(_filter2);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);

@@ -22,19 +18,19 @@

exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var jsdoc = _ref.jsdoc;
var report = _ref.report;
var utils = _ref.utils;
var jsdoc = _ref.jsdoc,
report = _ref.report,
utils = _ref.utils;
var targetTagName = utils.getPreferredTagName('returns');
var targetTagName = utils.getPreferredTagName('returns');
var jsdocTags = (0, _filter3.default)(jsdoc.tags, {
tag: targetTagName
});
var jsdocTags = _lodash2.default.filter(jsdoc.tags, {
tag: targetTagName
});
(0, _forEach3.default)(jsdocTags, function (jsdocTag) {
if (!jsdocTag.description) {
report('Missing JSDoc @' + targetTagName + ' description.');
}
});
_lodash2.default.forEach(jsdocTags, function (jsdocTag) {
if (!jsdocTag.description) {
report('Missing JSDoc @' + targetTagName + ' description.');
}
});
});
module.exports = exports['default'];
//# sourceMappingURL=requireReturnsDescription.js.map
//# sourceMappingURL=requireReturnsDescription.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
var _forEach2 = require('lodash/forEach');
var _lodash = require('lodash');
var _forEach3 = _interopRequireDefault(_forEach2);
var _lodash2 = _interopRequireDefault(_lodash);
var _filter2 = require('lodash/filter');
var _iterateJsdoc = require('../iterateJsdoc');
var _filter3 = _interopRequireDefault(_filter2);
var _iterateJsdoc = require('./../iterateJsdoc');
var _iterateJsdoc2 = _interopRequireDefault(_iterateJsdoc);

@@ -22,19 +18,19 @@

exports.default = (0, _iterateJsdoc2.default)(function (_ref) {
var jsdoc = _ref.jsdoc;
var report = _ref.report;
var utils = _ref.utils;
var jsdoc = _ref.jsdoc,
report = _ref.report,
utils = _ref.utils;
var targetTagName = utils.getPreferredTagName('returns');
var targetTagName = utils.getPreferredTagName('returns');
var jsdocTags = (0, _filter3.default)(jsdoc.tags, {
tag: targetTagName
});
var jsdocTags = _lodash2.default.filter(jsdoc.tags, {
tag: targetTagName
});
(0, _forEach3.default)(jsdocTags, function (jsdocTag) {
if (!jsdocTag.type) {
report('Missing JSDoc @' + targetTagName + ' type.');
}
});
_lodash2.default.forEach(jsdocTags, function (jsdocTag) {
if (!jsdocTag.type) {
report('Missing JSDoc @' + targetTagName + ' type.');
}
});
});
module.exports = exports['default'];
//# sourceMappingURL=requireReturnsType.js.map
//# sourceMappingURL=requireReturnsType.js.map
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});
exports.default = {
abstract: ['virtual'],
access: [],
alias: [],
augments: ['extends'],
author: [],
borrows: [],
callback: [],
class: ['constructor'],
classdesc: [],
constant: ['const'],
constructs: [],
copyright: [],
default: ['defaultvalue'],
deprecated: [],
description: ['desc'],
enum: [],
event: [],
example: [],
exports: [],
external: ['host'],
file: ['fileoverview', 'overview'],
fires: ['emits'],
function: ['func', 'method'],
global: [],
ignore: [],
implements: [],
inheritdoc: [],
inner: [],
instance: [],
interface: [],
kind: [],
lends: [],
license: [],
listens: [],
member: ['var'],
memberof: [],
mixes: [],
mixin: [],
module: [],
name: [],
namespace: [],
override: [],
param: ['arg', 'argument'],
private: [],
property: ['prop'],
protected: [],
public: [],
readonly: [],
requires: [],
returns: ['return'],
see: [],
since: [],
static: [],
summary: [],
this: [],
throws: ['exception'],
todo: [],
tutorial: [],
type: [],
typedef: [],
variation: [],
version: []
abstract: ['virtual'],
access: [],
alias: [],
augments: ['extends'],
author: [],
borrows: [],
callback: [],
class: ['constructor'],
classdesc: [],
constant: ['const'],
constructs: [],
copyright: [],
default: ['defaultvalue'],
deprecated: [],
description: ['desc'],
enum: [],
event: [],
example: [],
exports: [],
external: ['host'],
file: ['fileoverview', 'overview'],
fires: ['emits'],
function: ['func', 'method'],
global: [],
ignore: [],
implements: [],
inheritdoc: [],
inner: [],
instance: [],
interface: [],
kind: [],
lends: [],
license: [],
listens: [],
member: ['var'],
memberof: [],
mixes: [],
mixin: [],
module: [],
name: [],
namespace: [],
override: [],
param: ['arg', 'argument'],
private: [],
property: ['prop'],
protected: [],
public: [],
readonly: [],
requires: [],
returns: ['return'],
see: [],
since: [],
static: [],
summary: [],
this: [],
throws: ['exception'],
todo: [],
tutorial: [],
type: [],
typedef: [],
variation: [],
version: []
};
module.exports = exports['default'];
//# sourceMappingURL=tagNames.js.map
//# sourceMappingURL=tagNames.js.map
{
"name": "eslint-plugin-jsdoc",
"author": {
"email": "gajus@gajus.com",
"name": "Gajus Kuizinas",
"url": "http://gajus.com"
},
"dependencies": {
"comment-parser": "^0.4.0",
"lodash": "^4.5.1"
},
"description": "JSDoc linting rules for ESLint.",
"version": "2.3.1",
"main": "./dist/index.js",
"repository": {
"type": "git",
"url": "https://github.com/gajus/eslint-plugin-jsdoc"
"devDependencies": {
"babel-cli": "^6.18.0",
"babel-plugin-add-module-exports": "^0.2.1",
"babel-plugin-transform-flow-strip-types": "^6.18.0",
"babel-preset-es2015": "^6.5.0",
"babel-register": "^6.18.0",
"chai": "^3.5.0",
"eslint": "^3.10.2",
"eslint-config-canonical": "^5.5.0",
"gitdown": "^2.4.0",
"globby": "^4.0.0",
"mocha": "^2.5.3"
},

@@ -15,37 +30,20 @@ "keywords": [

],
"author": {
"name": "Gajus Kuizinas",
"email": "gajus@gajus.com",
"url": "http://gajus.com"
},
"license": "BSD-3-Clause",
"main": "./dist/index.js",
"name": "eslint-plugin-jsdoc",
"peerDependencies": {
"eslint": ">=0.8.0"
},
"dependencies": {
"comment-parser": "^0.4.0",
"lodash": "^4.5.1"
"repository": {
"type": "git",
"url": "https://github.com/gajus/eslint-plugin-jsdoc"
},
"scripts": {
"pragmatist": "pragmatist --es5",
"lint": "npm run pragmatist lint",
"test": "npm run pragmatist test",
"build": "npm run pragmatist build",
"watch": "npm run pragmatist watch",
"watch-lint": "npm run pragmatist watch-lint",
"watch-test": "npm run pragmatist watch-test",
"watch-build": "npm run pragmatist watch-build",
"readme-add-assertions": "babel-node --presets es2015 ./bin/readme-assertions.js",
"readme": "node ./node_modules/.bin/gitdown ./.README/README.md --output-file ./README.md; npm run readme-add-assertions"
"add-assertions": "babel-node --presets es2015 ./bin/readme-assertions",
"build": "NODE_ENV=production babel ./src --out-dir ./dist --copy-files --source-maps",
"generate-readme": "gitdown ./.README/README.md --output-file ./README.md && npm run readme-add-assertions",
"lint": "eslint ./src ./test",
"test": "mocha --compilers js:babel-register && npm run lint"
},
"devDependencies": {
"babel-cli": "^6.5.1",
"babel-preset-es2015": "^6.5.0",
"chai": "^3.5.0",
"eslint": "^2.2.0",
"gitdown": "^2.4.0",
"globby": "^4.0.0",
"mocha": "^2.4.5",
"pragmatist": "^3.0.13"
}
"version": "2.4.0"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc