cz-conventional-changelog-befe
Version:
cz adaptor for baidu BEFE
187 lines (143 loc) • 6.04 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 _require = require('icafe-api'),
create = _require.create;
var _require2 = require('normalize-icafe-pkg'),
normalizeIcafeByPkg = _require2.normalizeIcafeByPkg;
var debug = require('../debug');
var memoize = require('../memoize');
var AdaptorInterface = require('./AdaptorInterface');
var _require3 = require('../utils'),
simplifyData = _require3.simplifyData,
issuesFormat = _require3.issuesFormat;
var _create = create(),
Card = _create.Card;
debug('icafe-api: Card.constructor.defaultData %O', Card.constructor.defaultData);
function htmlDecode(str) {
// 一般可以先转换为标准 unicode 格式(有需要就添加:当返回的数据呈现太多\\\u 之类的时)
str = str.replace(/\\u/g, '%u').replace(/&?/g, '&').replace(/<?/g, '<').replace(/>?/g, '>').replace(/"?/g, '"').replace(/'?/g, "'");
// 再对实体符进行转义
// 有 x 则表示是16进制,$1 就是匹配是否有 x,$2 就是匹配出的第二个括号捕获到的内容,将 $2 以对
str = str.replace(/&#(x)?(\w+);/g, function ($, $1, $2) {
return String.fromCharCode(parseInt($2, $1 ? 16 : 10));
});
return str;
}
var Icafe = function (_AdaptorInterface) {
(0, _inherits3.default)(Icafe, _AdaptorInterface);
function Icafe(config, pkg) {
(0, _classCallCheck3.default)(this, Icafe);
var _this = (0, _possibleConstructorReturn3.default)(this, (Icafe.__proto__ || Object.getPrototypeOf(Icafe)).apply(this, arguments));
_this.memoized = memoize(Card.fetch.bind(Card));
_this.pkg.icafe = normalizeIcafeByPkg(pkg);
_this.data = _this.normalizeConfigData((0, _extends3.default)({
spaceId: Card.constructor.defaultData.spaceId,
username: Card.constructor.defaultData.username,
password: Card.constructor.defaultData.password,
iql: '负责人 in (currentUser)',
page: 1,
order: 'createTime',
isDesc: false
}, _this.pkg.icafe, _this.data));
_this.namespace = _this.data.spaceId;
_this.matchRegexps = _this.matchRegexps.concat(['^(?<namespace>[a-zA-Z][\\w-]+)-(?<matching>.*)$']);
return _this;
}
(0, _createClass3.default)(Icafe, [{
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: [{ name: 'responsiblePeople', valueKey: 'name' }],
rollbackKeys: [{ name: 'properties', valueKey: 'displayValue' }],
defaultKeyName: 'name'
});
return (0, _extends3.default)({}, data, {
issueURL: namespace && 'http://newicafe.baidu.com/issue/' + namespace + '-' + data.sequence + '/show',
assignees: data.responsiblePeople,
state: data.status,
issueId: namespace ? namespace + '-' + data.sequence : null,
number: data.sequence,
title: htmlDecode(data.title)
});
}
}, {
key: '_isEnabled',
value: function _isEnabled() {
return this.data.username && this.data.password && this.namespace;
}
}, {
key: 'fetch',
value: function () {
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(_ref2) {
var namespace = _ref2.namespace,
matching = _ref2.matching;
var body, data;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
body = void 0;
_context.next = 3;
return this.memoized.fn((0, _extends3.default)({}, this.data, {
spaceId: namespace
}));
case 3:
data = _context.sent;
body = data && data.body;
if (!(!body || !body.cards || body.code !== 200)) {
_context.next = 7;
break;
}
return _context.abrupt('return', []);
case 7:
return _context.abrupt('return', body.cards);
case 8:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
function fetch(_x2) {
return _ref3.apply(this, arguments);
}
return fetch;
}()
}, {
key: 'transformCommitMessage',
value: function transformCommitMessage(message) {
return this.namespace ? issuesFormat(this.namespace, message) : message;
}
}]);
return Icafe;
}(AdaptorInterface);
Icafe.displayName = 'Icafe';
module.exports = Icafe;