@discuzq/sdk
Version:
discuz dsk
97 lines (80 loc) • 3.8 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.requestParamsValidator = requestParamsValidator;
exports.validateParameter = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncValidator = _interopRequireDefault(require("async-validator"));
var _createError = _interopRequireDefault(require("axios/lib/core/createError"));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
/**
* 请求字段校验
* https://github.com/yiminghe/async-validator
*
* @param {object} fields 要校验的字段
* @param {object} rules 校验规则
* @param {object} config axios config
* @returns {promise}
*/
function requestParamsValidator() {
var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var rules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var config = arguments.length > 2 ? arguments[2] : undefined;
return new Promise(function (resolve, reject) {
var validator = new _asyncValidator.default(rules);
validator.validate(fields, {
firstFields: true
}, function (errors, fieldsData) {
var status = !errors ? 'success' : 'fail';
var message = errors ? errors[0].message : '';
if (status === 'success') {
resolve({
status: status,
message: message,
fieldsData: fieldsData
});
} else {
reject((0, _createError.default)('Parameter Validator Error', config, {
status: status,
message: message,
fieldsData: fieldsData,
errors: errors
}, null));
}
});
});
}
function requestParamsValidatorOnlyWarn() {
var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var rules = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var validator = new _asyncValidator.default(rules);
validator.validate(fields, {
firstFields: true
}, function (errors) {
var status = !errors ? 'success' : 'fail';
if (status !== 'success') {
console.warn('Parameter Validator Error', errors);
}
});
}
/**
* 入参校验
* @param {axios config} config axios 返回的配置信息
*/
var validateParameter = function validateParameter(config) {
var _config$params = config.params,
params = _config$params === void 0 ? {} : _config$params,
_config$data = config.data,
data = _config$data === void 0 ? {} : _config$data,
isValidate = config.isValidate,
validateRules = config.validateRules;
if (isValidate && validateRules) {
var source = _objectSpread(_objectSpread({}, params), data);
requestParamsValidatorOnlyWarn(source, validateRules, config);
}
return config;
};
exports.validateParameter = validateParameter;