UNPKG

cz-conventional-changelog-befe

Version:
200 lines (157 loc) 6.05 kB
'use strict'; 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;