cz-conventional-changelog-befe
Version:
cz adaptor for baidu BEFE
175 lines (138 loc) • 4.33 kB
JavaScript
'use strict';
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
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);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @file Interface
* @author Cuttle Cong
* @date 2018/10/24
*
*/
var parse = require('parse-github-url');
/**
* @typedef {{}} InputData
* @param namespace {string}
* @param matching {string}
*/
/**
* 适配器接口
* @class
*/
var AdaptorInterface = function () {
(0, _createClass3.default)(AdaptorInterface, [{
key: 'flattenIncomeData',
/**
* 扁平化,规范化 数据 (来自 fetch 方法)
* @param data {{}}
* @param inputData {InputData}
* @return {{title: string, issueURL?: string, issueId?: string, number?: string, searchText?: string} & *}
*/
value: function flattenIncomeData(data, inputData) {
return (0, _extends3.default)({
title: '',
issueURL: '',
issueId: '',
number: '',
searchText: ''
}, data);
}
/**
*
* @param config {object} - cz-conventional-changelog-befe config
* @param pkg {object} - package.json
* @param gitUrl {string} - git remote url
*/
}, {
key: 'name',
get: function get() {
return this.constructor.displayName || this.constructor.name;
}
}]);
function AdaptorInterface() {
var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var pkg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var gitUrl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
(0, _classCallCheck3.default)(this, AdaptorInterface);
if (typeof this.name !== 'string') {
throw new TypeError('Adaptor requires `displayName` (string) static property, but ' + (0, _typeof3.default)(this.name));
}
this.pkg = pkg;
this.config = config;
this.gitUrl = gitUrl;
if (gitUrl) {
gitUrl = gitUrl.trim();
this.gitUrlObj = parse(gitUrl);
// git@gitlab.com:gitlab-org/release/tasks.git
if (/^git@.+?:(.+)$/.test(gitUrl)) {
this.gitUrlObj.path = this.gitUrlObj.pathname = RegExp.$1;
}
} else if (pkg.repository) {
var repository = typeof pkg.repository === 'string' ? pkg.repository : pkg.repository.url;
if (repository) {
this.gitUrlObj = parse(repository);
}
}
this.options = (0, _extends3.default)({
placeholder: '{#:number?link} {[:type:]?align=center} {(:state:)?align=center} {title?w=50%} {assignees}',
suggestEnabled: true
}, this.config && this.config[this.name.toLowerCase()] ? this.config[this.name.toLowerCase()] : this.config);
this.data = (this.options || {}).data || {};
this.namespace = '';
this.matchRegexps = ['^#(?<matching>.+)$'];
}
/**
* 判断 suggest adaptor 是否生效
* @public
* @return {boolean}
*/
(0, _createClass3.default)(AdaptorInterface, [{
key: 'isEnabled',
value: function isEnabled() {
return this._isEnabled() && this.options.suggestEnabled;
}
/**
* @return {boolean}
* @protected
*/
}, {
key: '_isEnabled',
value: function _isEnabled() {
return !!this.namespace;
}
/**
* 获取 suggest 列表
* @param inputData {InputData}
* @return {Array|Promise<Array>}
*/
}, {
key: 'fetch',
value: function fetch(_ref) {
var namespace = _ref.namespace,
matching = _ref.matching;
return [];
}
/**
* 转换 commit message
* @param message {string}
* @return {string}
*/
}, {
key: 'transformCommitMessage',
value: function transformCommitMessage(message) {
return message;
}
}]);
return AdaptorInterface;
}();
/**
* name
* @type {string}
*/
AdaptorInterface.displayName = '';
module.exports = AdaptorInterface;