eslint-config-chain-able
Version:
an opinionated ESLint configuration
109 lines (80 loc) • 3.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _tagNames = require('./tagNames');
var _tagNames2 = _interopRequireDefault(_tagNames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var getFunctionParameterNames = function getFunctionParameterNames(functionNode) {
return _lodash2.default.map(functionNode.params, function (param) {
if (_lodash2.default.has(param, 'name')) {
return param.name;
}
if (_lodash2.default.has(param, 'left.name')) {
return param.left.name;
}
if (param.type === 'ObjectPattern') {
return '<ObjectPattern>';
}
if (param.type === 'RestElement') {
return param.argument.name;
}
throw new Error('Unsupported function signature format.');
});
};
/**
* Gets all parameter names, including those that refer to a path, e.g. "@param foo; @param foo.bar".
*/
var getJsdocParameterNamesDeep = function getJsdocParameterNamesDeep(jsdoc, targetTagName) {
var jsdocParameterNames = void 0;
jsdocParameterNames = _lodash2.default.filter(jsdoc.tags, {
tag: targetTagName
});
jsdocParameterNames = _lodash2.default.map(jsdocParameterNames, 'name');
return jsdocParameterNames;
};
var getJsdocParameterNames = function getJsdocParameterNames(jsdoc, targetTagName) {
var jsdocParameterNames = void 0;
jsdocParameterNames = getJsdocParameterNamesDeep(jsdoc, targetTagName);
jsdocParameterNames = _lodash2.default.filter(jsdocParameterNames, function (name) {
return name.indexOf('.') === -1;
});
return jsdocParameterNames;
};
var getPreferredTagName = function getPreferredTagName(name) {
var tagPreference = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (_lodash2.default.includes(_lodash2.default.values(tagPreference), name)) {
return name;
}
var preferredTagName = _lodash2.default.findKey(_tagNames2.default, function (aliases) {
return _lodash2.default.includes(aliases, name);
});
if (preferredTagName) {
return preferredTagName;
}
return _lodash2.default.has(tagPreference, name) ? tagPreference[name] : name;
};
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 _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,
getJsdocParameterNames,
getJsdocParameterNamesDeep,
getPreferredTagName,
hasTag,
isValidTag
};
module.exports = exports['default'];
//# sourceMappingURL=jsdocUtils.js.map