"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lodash = _interopRequireDefault(require("lodash")); var _tagNames = _interopRequireDefault(require("./tagNames")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var getFunctionParameterNames = function getFunctionParameterNames(functionNode) { return _lodash.default.map(functionNode.params, function (param) { if (_lodash.default.has(param, 'name')) { return param.name; } if (_lodash.default.has(param, 'left.name')) { return param.left.name; } if (param.type === 'ObjectPattern' || _lodash.default.get(param, 'left.type') === 'ObjectPattern') { return ''; } if (param.type === 'ArrayPattern' || _lodash.default.get(param, 'left.type') === 'ArrayPattern') { return ''; } 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; jsdocParameterNames = _lodash.default.filter(jsdoc.tags, { tag: targetTagName }); jsdocParameterNames = _lodash.default.map(jsdocParameterNames, 'name'); return jsdocParameterNames; }; var getJsdocParameterNames = function getJsdocParameterNames(jsdoc, targetTagName) { var jsdocParameterNames; jsdocParameterNames = getJsdocParameterNamesDeep(jsdoc, targetTagName); jsdocParameterNames = _lodash.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 (_lodash.default.includes(_lodash.default.values(tagPreference), name)) { return name; } var preferredTagName = _lodash.default.findKey(_tagNames.default, function (aliases) { return _lodash.default.includes(aliases, name); }); if (preferredTagName) { return preferredTagName; } return _lodash.default.has(tagPreference, name) ? tagPreference[name] : name; }; var isValidTag = function isValidTag(name, additionalTagNames) { var validTagNames = _lodash.default.keys(_tagNames.default).concat(_lodash.default.flatten(_lodash.default.values(_tagNames.default))); var additionalTags = additionalTagNames.customTags || []; var allTags = validTagNames.concat(additionalTags); return _lodash.default.includes(allTags, name); }; var hasTag = function hasTag(jsdoc, targetTagName) { var targetTagLower = targetTagName.toLowerCase(); return _lodash.default.some(jsdoc.tags, function (doc) { return doc.tag.toLowerCase() === targetTagLower; }); }; var hasATag = function hasATag(jsdoc, targetTagNames) { return targetTagNames.some(function (targetTagName) { return hasTag(jsdoc, targetTagName); }); }; var namepathAsNameTags = ['alias', 'augments', 'callback', 'extends', 'lends', 'memberof', 'memberof!', 'mixes', 'name', 'this', 'emits', 'event', 'fires', 'listens']; var isNamepathType = function isNamepathType(tagName, checkSeesForNamepaths) { return _lodash.default.includes(namepathAsNameTags, tagName) || tagName === 'see' && checkSeesForNamepaths; }; var _default = { getFunctionParameterNames, getJsdocParameterNames, getJsdocParameterNamesDeep, getPreferredTagName, hasATag, hasTag, isNamepathType, isValidTag }; exports.default = _default; module.exports = exports.default; //# sourceMappingURL=jsdocUtils.js.map