cz-conventional-changelog-befe
Version:
cz adaptor for baidu BEFE
182 lines (143 loc) • 5.59 kB
JavaScript
;
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @file icafe
* @author Cuttle Cong
* @date 2018/10/24
*
*/
var gh = require('gh-got');
var isPrimitive = require('is-primitive');
var toArray = require('lodash.toarray');
var debug = require('../debug');
var memoize = require('../memoize');
var AdaptorInterface = require('./AdaptorInterface');
var _require = require('../utils'),
simplifyData = _require.simplifyData;
var omit = require('lodash.omit');
var GitHub = function (_AdaptorInterface) {
(0, _inherits3.default)(GitHub, _AdaptorInterface);
function GitHub(config, pkg) {
(0, _classCallCheck3.default)(this, GitHub);
var _this = (0, _possibleConstructorReturn3.default)(this, (GitHub.__proto__ || Object.getPrototypeOf(GitHub)).apply(this, arguments));
_this.memoized = memoize(gh);
_this.data = _this.normalizeConfigData((0, _extends3.default)({
per_page: 10
}, _this.data));
_this.namespace = _this.gitUrlObj && _this.gitUrlObj.repository;
_this.matchRegexps = _this.matchRegexps.concat(['^(?<namespace>[\\w-.:]+/[\\w-.:]+)#(?<matching>.*)$']);
return _this;
}
(0, _createClass3.default)(GitHub, [{
key: 'normalizeConfigData',
value: function normalizeConfigData(data) {
return data;
}
}, {
key: 'flattenIncomeData',
value: function flattenIncomeData(data) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$namespace = _ref.namespace,
namespace = _ref$namespace === undefined ? this.namespace : _ref$namespace;
data = simplifyData(data, {
flattenKeys: ['user', { name: 'labels', valueKey: 'name' }],
defaultKeyName: 'login'
});
return (0, _extends3.default)({}, data, {
issueURL: data.html_url,
issueId: namespace && namespace !== this.namespace ? namespace + '#' + data.number : null,
type: data.pull_request ? 'pr' : 'issue'
});
}
}, {
key: '_isEnabled',
value: function _isEnabled() {
return this.gitUrlObj && this.gitUrlObj.host === 'github.com';
}
}, {
key: 'queryStringify',
value: function queryStringify(query) {
var string = '';
Object.keys(query).forEach(function (key) {
var val = query[key];
var prefix = key + ':';
if (key === 'search') {
prefix = '';
}
if (Array.isArray(val)) {
string += val.map(function (x) {
return x ? '' + prefix + String(x) : '';
}).join(' ') + ' ';
} else if (val && isPrimitive(val)) {
string += ' ' + String(val);
}
});
return string.trim();
}
}, {
key: 'fetch',
value: function () {
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(_ref2) {
var namespace = _ref2.namespace,
matching = _ref2.matching;
var query, _ref4, body;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
query = omit(this.data, ['sort', 'order', 'per_page']);
query.search = toArray(query.search || []);
query.repo = toArray(query.repo || []);
matching && query.search.push(matching);
namespace && query.repo.push(namespace);
_context.next = 7;
return this.memoized.fn('search/issues', {
method: 'get',
token: this.options.token,
query: {
q: this.queryStringify(query),
sort: this.data.sort,
order: this.data.order,
per_page: this.data.per_page
},
hooks: {
beforeRequest: [function (data) {
return debug('gh-request: %O', data);
}]
}
});
case 7:
_ref4 = _context.sent;
body = _ref4.body;
return _context.abrupt('return', body && body.items);
case 10:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
function fetch(_x2) {
return _ref3.apply(this, arguments);
}
return fetch;
}()
}]);
return GitHub;
}(AdaptorInterface);
GitHub.displayName = 'GitHub';
module.exports = GitHub;