jsdocUtils.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. var _lodash = _interopRequireDefault(require("lodash"));
  7. var _tagNames = _interopRequireDefault(require("./tagNames"));
  8. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  9. var getFunctionParameterNames = function getFunctionParameterNames(functionNode) {
  10. return _lodash.default.map(functionNode.params, function (param) {
  11. if (_lodash.default.has(param, 'name')) {
  12. return param.name;
  13. }
  14. if (_lodash.default.has(param, 'left.name')) {
  15. return param.left.name;
  16. }
  17. if (param.type === 'ObjectPattern' || _lodash.default.get(param, 'left.type') === 'ObjectPattern') {
  18. return '<ObjectPattern>';
  19. }
  20. if (param.type === 'ArrayPattern' || _lodash.default.get(param, 'left.type') === 'ArrayPattern') {
  21. return '<ArrayPattern>';
  22. }
  23. if (param.type === 'RestElement') {
  24. return param.argument.name;
  25. }
  26. throw new Error('Unsupported function signature format.');
  27. });
  28. };
  29. /**
  30. * Gets all parameter names, including those that refer to a path, e.g. "@param foo; @param foo.bar".
  31. */
  32. var getJsdocParameterNamesDeep = function getJsdocParameterNamesDeep(jsdoc, targetTagName) {
  33. var jsdocParameterNames;
  34. jsdocParameterNames = _lodash.default.filter(jsdoc.tags, {
  35. tag: targetTagName
  36. });
  37. jsdocParameterNames = _lodash.default.map(jsdocParameterNames, 'name');
  38. return jsdocParameterNames;
  39. };
  40. var getJsdocParameterNames = function getJsdocParameterNames(jsdoc, targetTagName) {
  41. var jsdocParameterNames;
  42. jsdocParameterNames = getJsdocParameterNamesDeep(jsdoc, targetTagName);
  43. jsdocParameterNames = _lodash.default.filter(jsdocParameterNames, function (name) {
  44. return name.indexOf('.') === -1;
  45. });
  46. return jsdocParameterNames;
  47. };
  48. var getPreferredTagName = function getPreferredTagName(name) {
  49. var tagPreference = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  50. if (_lodash.default.includes(_lodash.default.values(tagPreference), name)) {
  51. return name;
  52. }
  53. var preferredTagName = _lodash.default.findKey(_tagNames.default, function (aliases) {
  54. return _lodash.default.includes(aliases, name);
  55. });
  56. if (preferredTagName) {
  57. return preferredTagName;
  58. }
  59. return _lodash.default.has(tagPreference, name) ? tagPreference[name] : name;
  60. };
  61. var isValidTag = function isValidTag(name, additionalTagNames) {
  62. var validTagNames = _lodash.default.keys(_tagNames.default).concat(_lodash.default.flatten(_lodash.default.values(_tagNames.default)));
  63. var additionalTags = additionalTagNames.customTags || [];
  64. var allTags = validTagNames.concat(additionalTags);
  65. return _lodash.default.includes(allTags, name);
  66. };
  67. var hasTag = function hasTag(jsdoc, targetTagName) {
  68. var targetTagLower = targetTagName.toLowerCase();
  69. return _lodash.default.some(jsdoc.tags, function (doc) {
  70. return doc.tag.toLowerCase() === targetTagLower;
  71. });
  72. };
  73. var hasATag = function hasATag(jsdoc, targetTagNames) {
  74. return targetTagNames.some(function (targetTagName) {
  75. return hasTag(jsdoc, targetTagName);
  76. });
  77. };
  78. var namepathAsNameTags = ['alias', 'augments', 'callback', 'extends', 'lends', 'memberof', 'memberof!', 'mixes', 'name', 'this', 'emits', 'event', 'fires', 'listens'];
  79. var isNamepathType = function isNamepathType(tagName, checkSeesForNamepaths) {
  80. return _lodash.default.includes(namepathAsNameTags, tagName) || tagName === 'see' && checkSeesForNamepaths;
  81. };
  82. var _default = {
  83. getFunctionParameterNames,
  84. getJsdocParameterNames,
  85. getJsdocParameterNamesDeep,
  86. getPreferredTagName,
  87. hasATag,
  88. hasTag,
  89. isNamepathType,
  90. isValidTag
  91. };
  92. exports.default = _default;
  93. module.exports = exports.default;
  94. //# sourceMappingURL=jsdocUtils.js.map