UNPKG

cz-conventional-changelog-befe

Version:
182 lines (143 loc) 5.59 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 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;