cz-conventional-changelog-befe
Version:
cz adaptor for baidu BEFE
200 lines (157 loc) • 6.05 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 gl = require('gl-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 GitLab = function (_AdaptorInterface) {
(0, _inherits3.default)(GitLab, _AdaptorInterface);
function GitLab(config, pkg) {
(0, _classCallCheck3.default)(this, GitLab);
var _this = (0, _possibleConstructorReturn3.default)(this, (GitLab.__proto__ || Object.getPrototypeOf(GitLab)).apply(this, arguments));
_this.memoized = memoize(gl);
_this.data = _this.normalizeConfigData((0, _extends3.default)({
per_page: 10
}, _this.data));
_this.namespace = _this.gitUrlObj && _this.gitUrlObj.pathname.replace(/\.git$/i, '');
_this.matchRegexps = _this.matchRegexps.concat(['^(?<namespace>[\\w-.:]+/[\\w-.:]+(/[\\w-.:]+)?)#(?<matching>.*)$']);
return _this;
}
(0, _createClass3.default)(GitLab, [{
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, {
defaultKeyName: 'name'
});
return (0, _extends3.default)({}, data, {
issueURL: data.web_url,
issueId: namespace && namespace !== this.namespace ? namespace + '#' + data.iid : null,
type: data.pull_request ? 'pr' : 'issue',
number: data.iid
});
}
}, {
key: '_isEnabled',
value: function _isEnabled() {
return this.gitUrlObj && this.gitUrlObj.hostname.startsWith('gitlab.');
}
}, {
key: 'queryStringify',
value: function queryStringify(query) {
query = (0, _extends3.default)({}, query);
function getChunks(query) {
var stringChunks = [];
Object.keys(query).forEach(function (name) {
var val = query[name];
if (name === 'search') {
if (Array.isArray(val)) {
val = val.join('+');
}
}
if (name === 'iids') {
toArray(val).forEach(function (id) {
stringChunks = stringChunks.concat(getChunks({ 'iids[]': id }));
});
return;
}
if (Array.isArray(val)) {
val = val.join(',');
}
if (val instanceof Date) {
val = val.toISOString();
}
stringChunks.push(encodeURIComponent(name) + '=' + encodeURIComponent(String(val)));
});
return stringChunks;
}
return getChunks(query).join('&');
}
}, {
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 = (0, _extends3.default)({}, this.data);
query.search = toArray(query.search || []);
query.search.push(matching);
_context.next = 5;
return this.memoized.fn('/api/v4/projects/' + encodeURIComponent(namespace) + '/issues', {
method: 'get',
token: this.options.token,
baseUrl: this.baseUrl,
query: this.queryStringify(query),
hooks: {
beforeRequest: [function (data) {
return debug('gl-request: %O', data);
}]
}
});
case 5:
_ref4 = _context.sent;
body = _ref4.body;
return _context.abrupt('return', body);
case 8:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
function fetch(_x2) {
return _ref3.apply(this, arguments);
}
return fetch;
}()
}, {
key: 'baseUrl',
get: function get() {
var _ref5 = this.gitUrlObj || {},
protocol = _ref5.protocol,
hostname = _ref5.hostname;
var isHTTP = ['http:', 'https:'].includes(protocol);
return (isHTTP ? protocol : 'http:') + '//' + hostname;
}
}]);
return GitLab;
}(AdaptorInterface);
GitLab.displayName = 'GitLab';
module.exports = GitLab;