eslint-config-chain-able
Version:
an opinionated ESLint configuration
100 lines (74 loc) • 2.99 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _commentParser = require('comment-parser');
var _commentParser2 = _interopRequireDefault(_commentParser);
var _jsdocUtils = require('./jsdocUtils');
var _jsdocUtils2 = _interopRequireDefault(_jsdocUtils);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var curryUtils = function curryUtils(functionNode, jsdoc, tagNamePreference, additionalTagNames) {
var utils = {};
utils.getFunctionParameterNames = function () {
return _jsdocUtils2.default.getFunctionParameterNames(functionNode);
};
utils.getJsdocParameterNamesDeep = function () {
return _jsdocUtils2.default.getJsdocParameterNamesDeep(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.isValidTag = function (name) {
return _jsdocUtils2.default.isValidTag(name, additionalTagNames);
};
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 = _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);
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 (_lodash2.default.includes(['return', 'returns'], data.tag)) {
return null;
}
return _commentParser2.default.PARSERS.parse_name(str, data);
}, _commentParser2.default.PARSERS.parse_description]
})[0] || {};
var report = function report(message) {
context.report(jsdocNode, message);
};
var utils = curryUtils(functionNode, jsdoc, tagNamePreference, additionalTagNames);
iterator({
context,
functionNode,
jsdoc,
jsdocNode,
report,
utils
});
};
return {
ArrowFunctionExpression: checkJsdoc,
FunctionDeclaration: checkJsdoc,
FunctionExpression: checkJsdoc
};
};
};
module.exports = exports['default'];
//# sourceMappingURL=iterateJsdoc.js.map