'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getJsDocTagValue = getJsDocTagValue;
exports.getJsDocTag = getJsDocTag;
exports.getJsDocClassInfo = getJsDocClassInfo;
exports.hasJsdocExportFlag = hasJsdocExportFlag;
require('source-map-support/register');
var _doctrine = require('doctrine');
var _doctrine2 = _interopRequireDefault(_doctrine);
var _ignoreCase = require('ignore-case');
var _ignoreCase2 = _interopRequireDefault(_ignoreCase);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getJsDocTagValue(tags, name) {
const tag = getJsDocTag(tags, name);
return tag && (tag.name || tag.description);
}
function getJsDocTag(tags, name) {
return tags.find(t => _ignoreCase2.default.equals(name, t.title));
}
function getJsDocClassInfo(node, parent) {
if (node.leadingComments) {
return node.leadingComments.filter(comment => comment.type === 'CommentBlock').map(comment => {
const docAST = _doctrine2.default.parse(comment.value, {
unwrap: true
});
const tags = docAST.tags || [];
return {
alias: getJsDocTagValue(tags, 'alias'),
name: getJsDocTagValue(tags, 'name'),
namespace: getJsDocTagValue(tags, 'namespace'),
nonUI5: !!getJsDocTag(tags, 'nonui5'),
metadata: getJsDocTagValue(tags, 'metadata'),
renderer: getJsDocTagValue(tags, 'renderer')
};
}).filter(classInfo => Object.values(classInfo).some(value => value))[0];
}
// Else see if the JSDoc are on the return statement (i..e return class X extends SAPClass)
else Eif (node.type === 'ClassExpression' && parent && parent.type === 'ReturnStatement') {
return getJsDocClassInfo(parent);
} else {
return {};
}
}
function hasJsdocExportFlag(node) {
if (!node.leadingComments) {
return false;
}
return node.leadingComments.filter(comment => comment.type === 'CommentBlock').some(comment => {
return _doctrine2.default.parse(comment.value, {
unwrap: true,
tags: ['export']
}).tags.length > 0;
});
} |