util-helpers
Version:
1,304 lines (1,215 loc) • 129 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.utilHelpers = {}));
})(this, (function (exports) { 'use strict';
var nativeUndefined$1 = void 0;
var stringUndefined = 'undefined';
var stringObject = 'object';
var objectProto = Object.prototype;
var objectProtoToString = objectProto.toString;
var objectProtoHasOwnProperty = objectProto.hasOwnProperty;
var objectProtoPropertyIsEnumerable = objectProto.propertyIsEnumerable;
var objectGetOwnPropertySymbols = Object.getOwnPropertySymbols;
var objectGetPrototypeOf = Object.getPrototypeOf;
var objectKeys$1 = Object.keys;
var functionProto = Function.prototype;
var functionProtoToString = functionProto.toString;
var symbolExisted = typeof Symbol !== stringUndefined;
var symbolProto = symbolExisted ? Symbol.prototype : nativeUndefined$1;
var mathMin = Math.min;
var mathMax = Math.max;
var mathRandom = Math.random;
var mathFloor = Math.floor;
var mathCeil = Math.ceil;
var numberIsFinite = Number.isFinite;
var globalThisExisted = typeof globalThis === stringObject && globalThis;
var globalExisted = typeof global === stringObject && global;
var selfExisted = typeof self === stringObject && self;
var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
var tagPrefix = '[object ';
var numberTag = tagPrefix + 'Number]';
var stringTag = tagPrefix + 'String]';
var symbolTag = tagPrefix + 'Symbol]';
var functionTags = ['Function', 'AsyncFunction', 'GeneratorFunction', 'Proxy'].map(function (item) { return tagPrefix + item + ']'; });
var blobTag = tagPrefix + 'Blob]';
var fileTag = tagPrefix + 'File]';
var objectTag = tagPrefix + 'Object]';
function isArray(value) {
return Array.isArray(value);
}
function isObjectLike(value) {
return value !== null && typeof value === 'object';
}
function isObject(value) {
return typeof value === 'function' || isObjectLike(value);
}
function getTag(value) {
return objectProtoToString.call(value);
}
function isSymbol(value) {
return typeof value === 'symbol' || getTag(value) === symbolTag;
}
var reIsBinary = /^0b[01]+$/i;
var reIsOctal = /^0o[0-7]+$/i;
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
function toNumber(value) {
if (typeof value === 'number') {
return value;
}
if (isSymbol(value)) {
return NaN;
}
if (isObject(value)) {
value = Number(value);
}
if (typeof value !== 'string') {
return value === 0 ? value : +value;
}
value = value.trim();
var isBinary = reIsBinary.test(value);
return isBinary || reIsOctal.test(value) ? parseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NaN : +value;
}
function toInteger(value) {
var result = toNumber(value);
if (!result || result === Infinity || result === -Infinity) {
return result === result ? result : 0;
}
var remainder = result % 1;
return remainder ? result - remainder : result;
}
function identity(value) {
return value;
}
function isFunction(value) {
if (typeof value === 'function') {
return true;
}
var tag = getTag(value);
return functionTags.some(function (item) { return item === tag; });
}
function isLength(value) {
return typeof value === 'number' && value > -1 && value % 1 === 0 && value <= MAX_SAFE_INTEGER;
}
function isArrayLike(value) {
return value != null && isLength(value.length) && !isFunction(value);
}
var nth = function (array, n) {
if (n === void 0) { n = 0; }
if (!isArrayLike(array)) {
return nativeUndefined$1;
}
n += n < 0 ? array.length : 0;
return array[n];
};
var MAX_VALUE = 1.7976931348623157e308;
function toFinite(value) {
if (!value) {
return value === 0 ? value : 0;
}
value = toNumber(value);
if (value === Infinity || value === -Infinity) {
var sign = value < 0 ? -1 : 1;
return sign * MAX_VALUE;
}
return value === value ? value : 0;
}
function randomInt(lower, upper) {
if (lower === void 0) { lower = 0; }
if (upper === void 0) { upper = 1; }
lower = toFinite(lower);
upper = toFinite(upper);
var min = mathCeil(mathMin(lower, upper) || 0);
var max = mathFloor(mathMax(lower, upper) || 0);
if (min > max) {
var temp = min;
min = max;
max = temp;
}
return mathFloor(min + mathRandom() * (max - min + 1));
}
function getSymbols(object) {
if (!objectGetOwnPropertySymbols || object === null) {
return [];
}
return objectGetOwnPropertySymbols(object).filter(function (item) { return objectProtoPropertyIsEnumerable.call(object, item); });
}
function allKeys(object) {
if (!isObject(object)) {
return [];
}
return objectKeys$1(object).concat(getSymbols(object));
}
function createForEach(dir) {
var forEach = function (collection, iteratee) {
if (iteratee === void 0) { iteratee = identity; }
var _keys = !isArrayLike(collection) && allKeys(collection);
var len = (_keys || collection).length;
var i = 0 ;
while (i >= 0 && i < len) {
var currentKey = _keys ? _keys[i] : i;
if (iteratee(collection[currentKey], currentKey, collection) === false) {
break;
}
i += dir;
}
return collection;
};
return forEach;
}
var forEach = createForEach(1);
function isNumber(value) {
return typeof value === 'number' || getTag(value) === numberTag;
}
function isNil(value) {
return value == null;
}
var symbolToString = symbolProto ? symbolProto.toString : nativeUndefined$1;
function baseToString(value) {
if (typeof value === 'string') {
return value;
}
if (isArray(value)) {
return '' + value.map(baseToString);
}
if (isSymbol(value)) {
return symbolToString ? symbolToString.call(value) : '';
}
var result = '' + value;
return result === '0' && 1 / value === -Infinity ? '-0' : result;
}
function toString(value) {
return isNil(value) ? '' : baseToString(value);
}
var blobExisted = typeof Blob !== stringUndefined;
function isBlob(value) {
if (blobExisted && value instanceof Blob) {
return true;
}
return getTag(value) === blobTag;
}
var objectCtorString = functionProtoToString.call(Object);
function isPlainObject(value) {
if (!isObjectLike(value) || getTag(value) !== objectTag) {
return false;
}
var proto = objectGetPrototypeOf(Object(value));
if (proto === null) {
return true;
}
var Ctor = objectProtoHasOwnProperty.call(proto, 'constructor') && proto.constructor;
return typeof Ctor === 'function' && Ctor instanceof Ctor && functionProtoToString.call(Ctor) === objectCtorString;
}
var fileExisted = typeof File !== stringUndefined;
function isFile(value) {
if (fileExisted && value instanceof File) {
return true;
}
return getTag(value) === fileTag;
}
var freeGlobalThis = globalThisExisted && globalThis.Object === Object && globalThis;
var freeGlobal = globalExisted && global.Object === Object && global;
var freeSelf = selfExisted && self.Object === Object && self;
var root = freeGlobalThis || freeGlobal || freeSelf || Function('return this')();
function isFinite$1(value) {
return numberIsFinite ? numberIsFinite(value) : typeof value === 'number' && root.isFinite(value);
}
function isNaN(value) {
return isNumber(value) && root.isNaN(value);
}
function isPromiseLike(value) {
return isObject(value) && typeof value.then === 'function';
}
function isString(value) {
return typeof value === 'string' || getTag(value) === stringTag;
}
function decimalAdjust(type, value, precision) {
if (precision === void 0) { precision = 0; }
var func = Math[type];
value = toNumber(value);
precision = mathMin(toInteger(precision), 292);
if (precision === 0 || !isFinite$1(value)) {
return func(value);
}
var pair = toString(value).split('e');
value = func(+(pair[0] + 'e' + (pair[1] ? +pair[1] + precision : precision)));
pair = toString(value).split('e');
return +(pair[0] + 'e' + (pair[1] ? +pair[1] - precision : -precision));
}
function round(number, precision) {
return decimalAdjust('round', number, precision);
}
/******************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
}
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
}
function __read(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
}
function __spreadArray(to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
}
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
var e = new Error(message);
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
};
function constant(value) {
return function () {
return value;
};
}
function noop() { }
var reg$b = /^1[3456789]\d{9}$/;
function isMobile(value) {
var valueStr = toString(value);
return reg$b.test(valueStr);
}
var reg$a = /^(0\d{2,3}-)?([2-9]\d{6,7})(-\d{1,6})?$/;
function isTelephone(value) {
var valueStr = toString(value);
return reg$a.test(valueStr);
}
var reg$9 = /^\d{6}$/;
function isPostcode(value) {
var valueStr = toString(value);
return reg$9.test(valueStr);
}
var regIdCard$1 = /^[1-9]\d{5}(19|20)?\d{2}((0[1-9])|(1[012]))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X)?$/i;
function check(id) {
var index, sum;
for (sum = index = 0; index < 17; index++) {
sum += (Math.pow(2, 17 - index) % 11) * Number(id[index]);
}
var num = (12 - (sum % 11)) % 11;
if (num < 10) {
return num === Number(id[17]);
}
else {
return id[17].toUpperCase() === 'X';
}
}
function isIdCard(value, options) {
if (options === void 0) { options = {}; }
var _a = options.loose, loose = _a === void 0 ? false : _a, _b = options.checkCode, checkCode = _b === void 0 ? true : _b;
var valueStr = toString(value);
if (valueStr.length === 15 && loose) {
return regIdCard$1.test(valueStr);
}
if (valueStr.length === 18 && regIdCard$1.test(valueStr)) {
if (checkCode) {
return check(valueStr);
}
return true;
}
return false;
}
var reg$8 = /^[\da-z]+([-._]?[\da-z]+)*@[\da-z]+([-.]?[\da-z]+)*(\.[a-z]{2,})+$/i;
function isEmail(value) {
var valueStr = toString(value);
return reg$8.test(valueStr);
}
var reg$7 = /^[1-9]\d{4,10}$/;
function isQQ(value) {
var valueStr = toString(value);
return reg$7.test(valueStr);
}
var reg$6 = /^[a-z]([-_a-z0-9]{5,19})+$/i;
function isWX(value) {
var valueStr = toString(value);
return reg$6.test(valueStr);
}
var reg$5 = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([A-Z0-9]{4}[A-Z0-9挂学警港澳]{1})|([A-Z0-9]{5}[DF])|([DF][A-Z0-9]{5}))$/;
function isVehicle(value) {
var valueStr = toString(value);
return reg$5.test(valueStr);
}
var reg$4 = /^[1-9]\d{9,20}$/;
var regLoose = /^\d{8,30}$/;
function sumCheckCode$2(numStr) {
var numArr = (numStr + '').replace(/\D/g, '').split('').reverse();
var sum = 0;
for (var i = 0; i < numArr.length; i++) {
var currNum = parseInt(numArr[i]);
sum += i % 2 === 0 ? currNum * 2 - (currNum > 4 ? 9 : 0) : currNum;
}
var mod = sum % 10;
return mod !== 0 ? 10 - mod : 0;
}
function isBankCard(value, options) {
if (options === void 0) { options = {}; }
var _a = options.loose, loose = _a === void 0 ? false : _a, _b = options.luhn, luhn = _b === void 0 ? false : _b;
var valueStr = toString(value);
var validateResult = loose ? regLoose.test(valueStr) : reg$4.test(valueStr);
if (validateResult && luhn) {
var precode = valueStr.substring(0, valueStr.length - 1);
var checkCode = valueStr[valueStr.length - 1];
return checkCode === String(sumCheckCode$2(precode));
}
return validateResult;
}
isBankCard.sumCheckCode = sumCheckCode$2;
var baseReg$1 = /^[\dA-HJ-NPQRTUWXY]{2}\d{6}[\dA-HJ-NPQRTUWXY]{10}$/;
var baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split('');
function sumCheckCode$1(preCode) {
var total = 0;
var _loop_1 = function (i) {
var index = baseCodeArr.findIndex(function (item) { return item === preCode[i]; });
var wf = Math.pow(3, i) % 31;
total += index * wf;
};
for (var i = 0; i < 17; i++) {
_loop_1(i);
}
var remainder = total % 31;
var checkCodeIndex = remainder !== 0 ? 31 - remainder : 0;
return baseCodeArr[checkCodeIndex];
}
function isUnifiedIdentifier(value, options) {
var valueStr = toString(value);
var _a = (options || {}).checkCode, needCheckCode = _a === void 0 ? true : _a;
var passBaseRule = baseReg$1.test(valueStr);
if (!needCheckCode || !passBaseRule) {
return passBaseRule;
}
var preCode = valueStr.substring(0, 17);
var lastCode = valueStr.substring(valueStr.length - 1);
var checkCode = sumCheckCode$1(preCode);
return lastCode === checkCode;
}
isUnifiedIdentifier.sumCheckCode = sumCheckCode$1;
var isSocialCreditCode = isUnifiedIdentifier;
var config$1 = {
disableWarning: true
};
function setDisableWarning(bool) {
config$1.disableWarning = !!bool;
}
function devWarn() {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
if (!config$1.disableWarning) {
console.warn.apply(void 0, args);
}
}
var regNumber = /\d/;
var regLowerCaseLetter = /[a-z]/;
var regUpperCaseLetter = /[A-Z]/;
var regAllNumberAndLetter = /[\d|a-z]/gi;
function hasHex(val) {
return val.indexOf('\\x') > -1 || val.indexOf('\\u') > -1;
}
function hasSpecialCharacter(val, chars) {
if (!chars || !val) {
return false;
}
var specialChars = val.replace(regAllNumberAndLetter, '');
if (!specialChars) {
return false;
}
var regChars = hasHex(chars) ? new RegExp("[".concat(chars, "]")) : null;
if (regChars) {
return regChars.test(specialChars);
}
var ret = false;
specialChars.split('').some(function (charItem) {
if (chars.indexOf(charItem) > -1) {
ret = true;
}
return ret;
});
return ret;
}
function hasUnallowableCharacter(val, chars) {
if (!val) {
return false;
}
var specialChars = val.replace(regAllNumberAndLetter, '');
if (!specialChars) {
return false;
}
else if (!chars) {
return true;
}
var regChars = hasHex(chars) ? new RegExp("[^".concat(chars, "]")) : null;
if (regChars) {
return regChars.test(specialChars);
}
var ret = false;
specialChars.split('').some(function (charItem) {
if (chars.indexOf(charItem) === -1) {
ret = true;
}
return ret;
});
return ret;
}
function validatePassword(value, options) {
if (options === void 0) { options = {}; }
var _a = options.level, level = _a === void 0 ? 2 : _a, _b = options.ignoreCase, ignoreCase = _b === void 0 ? false : _b, _c = options.special, special = _c === void 0 ? '\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E' : _c;
var valStr = value;
if (typeof value !== 'string') {
devWarn("[validatePassword] value must be a string.");
valStr = '';
}
var currentLevel = 0;
var containesNumber = regNumber.test(valStr);
var containesLowerCaseLetter = regLowerCaseLetter.test(valStr);
var containesUpperCaseLetter = regUpperCaseLetter.test(valStr);
var containesSpecialCharacter = hasSpecialCharacter(valStr, special);
var containesUnallowableCharacter = hasUnallowableCharacter(valStr, special);
if (containesNumber) {
currentLevel += 1;
}
if (ignoreCase) {
if (containesLowerCaseLetter || containesUpperCaseLetter) {
currentLevel += 1;
}
}
else {
if (containesLowerCaseLetter) {
currentLevel += 1;
}
if (containesUpperCaseLetter) {
currentLevel += 1;
}
}
if (containesSpecialCharacter) {
currentLevel += 1;
}
var validated = currentLevel >= level && !containesUnallowableCharacter;
return {
validated: validated,
level: currentLevel,
containes: {
number: containesNumber,
lowerCaseLetter: containesLowerCaseLetter,
upperCaseLetter: containesUpperCaseLetter,
specialCharacter: containesSpecialCharacter,
unallowableCharacter: containesUnallowableCharacter
}
};
}
function isPassword(value, options) {
if (options === void 0) { options = {}; }
var _a = options.level, level = _a === void 0 ? 2 : _a, _b = options.ignoreCase, ignoreCase = _b === void 0 ? false : _b, _c = options.special, special = _c === void 0 ? '\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E' : _c;
return validatePassword(value, { level: level, ignoreCase: ignoreCase, special: special }).validated;
}
var reg$3 = /^((e[\da-z])|(de)|(se)|(pe)|([khm][\da-z]))[\da-z]{7}$/i;
function isPassport(value) {
var valueStr = toString(value);
return reg$3.test(valueStr);
}
var URLExisted = typeof URL !== 'undefined';
var nativeUndefined = void 0;
var objectKeys = Object.keys;
var objectValues = Object.values;
var createObjectURL = URLExisted ? URL.createObjectURL : constant('');
var revokeObjectURL = URLExisted ? URL.revokeObjectURL : noop;
var chineseDictionary = {
chineseBasic: '[\u4e00-\u9fa5]',
chineseExtend: '[\u9ea6-\u9fff]',
chineseExtend2: '[\uF900-\uFAD9]',
chineseExtendA: '[\u3400-\u4DBF]',
chineseExtendB: "[\uD840\uDC00-\uD869\uDEDF]",
chineseExtendC: "[\uD869\uDF00-\uD86D\uDF38]",
chineseExtendD: "[\uD86D\uDF40-\uD86E\uDC1D]",
chineseExtendE: "[\uD86E\uDC20-\uD873\uDEA1]",
chineseExtendF: "[\uD873\uDEB0-\uD87A\uDFE0]",
chineseExtendG: "[\uD880\uDC00-\uD884\uDF4A]",
chineseExtendH: "[\uD884\uDF50-\uD888\uDFAF]",
chineseExtendI: "[\uD87A\uDFF0-\uD87B\uDE5D]"
};
var looseChineseRegExp = chineseDictionary.chineseBasic + '+';
var chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$';
var chineseWithExtend = '(?:' + objectValues(chineseDictionary).join('|') + ')';
var looseChineseExtendRegExp = chineseWithExtend + '+';
var chineseExtendRegExp = '^' + chineseWithExtend + '+$';
var supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');
function isChinese(value, options) {
if (options === void 0) { options = {}; }
var _a = options.loose, loose = _a === void 0 ? false : _a, _b = options.useExtend, useExtend = _b === void 0 ? false : _b;
var valueStr = toString(value);
var basicRegExp = loose ? looseChineseRegExp : chineseRegExp;
var extendRegExp = loose ? looseChineseExtendRegExp : chineseExtendRegExp;
var hasExtend = useExtend && supportRegExpUnicode;
var resultRegExp = hasExtend ? extendRegExp : basicRegExp;
var flag = hasExtend ? 'u' : nativeUndefined;
var reg = new RegExp(resultRegExp, flag);
return reg.test(valueStr);
}
var reg$2 = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
function isIPv4(value) {
var valueStr = toString(value);
return reg$2.test(valueStr);
}
var reg$1 = /^((([0-9A-F]{1,4}:){7}([0-9A-F]{1,4}|:))|(([0-9A-F]{1,4}:){6}(:[0-9A-F]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})|:))|(([0-9A-F]{1,4}:){5}(((:[0-9A-F]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})|:))|(([0-9A-F]{1,4}:){4}(((:[0-9A-F]{1,4}){1,3})|((:[0-9A-F]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){3}(((:[0-9A-F]{1,4}){1,4})|((:[0-9A-F]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){2}(((:[0-9A-F]{1,4}){1,5})|((:[0-9A-F]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){1}(((:[0-9A-F]{1,4}){1,6})|((:[0-9A-F]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(:(((:[0-9A-F]{1,4}){1,7})|((:[0-9A-F]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:)))(%.+)?$/i;
function isIPv6(value) {
var valueStr = toString(value);
return reg$1.test(valueStr);
}
var protocalReg = '[\\w-.]+:\\/\\/';
var credentialsReg = '[-;:&=\\+\\$,\\w]+@';
var serverReg = 'localhost|(([^\\s:\\/]+?\\.)+?[^\\s:\\/]+)';
var portReg = ':\\d+';
var pathReg = '\\/.*';
var searchReg = '\\?.*';
var hashReg = '#.*';
var regWithProtocal = new RegExp("^".concat(protocalReg, "(?:").concat(credentialsReg, ")?(?:").concat(serverReg, ")(?:").concat(portReg, ")?(?:").concat(pathReg, ")*(?:").concat(searchReg, ")?(?:").concat(hashReg, ")?$"));
var regNonProtocal = new RegExp("^(?:".concat(serverReg, ")(?:").concat(portReg, ")?(?:").concat(pathReg, ")*(?:").concat(searchReg, ")?(?:").concat(hashReg, ")?$"));
function isUrl(value) {
var valueStr = toString(value);
return regWithProtocal.test(valueStr) || regNonProtocal.test(valueStr);
}
var baseReg = /^\d{15}$/;
function sumCheckCode(preCode) {
var retNum;
var pj = 10;
for (var j = 0; j < 14; j++) {
var sj = pj + Number(preCode[j]);
var sj10 = sj % 10;
sj10 = sj10 === 0 ? 10 : sj10;
var pj1 = sj10 * 2;
pj = pj1 % 11;
}
if (pj === 1) {
retNum = 0;
}
else {
retNum = 11 - pj;
}
return retNum;
}
function isBusinessLicense(value, options) {
if (options === void 0) { options = {}; }
var valueStr = toString(value);
var _a = options.checkCode, needCheckCode = _a === void 0 ? true : _a;
var passBaseRule = baseReg.test(valueStr);
if (!needCheckCode || !passBaseRule) {
return passBaseRule;
}
var preCode = valueStr.substring(0, 14);
var lastCode = valueStr.substring(valueStr.length - 1);
var checkCode = sumCheckCode(preCode);
return lastCode === String(checkCode);
}
isBusinessLicense.sumCheckCode = sumCheckCode;
var regHMCard = /^[hm]{1}([0-9]{10}|[0-9]{8})$/i;
function isHMCard(value) {
var valueStr = toString(value);
return regHMCard.test(valueStr);
}
var regTWCard = /^\d{8}$/i;
var singleRegTWCard = /^[\da-z]{10,12}$/i;
function isTWCard(value, options) {
if (options === void 0) { options = {}; }
var _a = options.loose, loose = _a === void 0 ? false : _a;
var valueStr = toString(value);
if (regTWCard.test(valueStr)) {
return true;
}
return loose ? singleRegTWCard.test(valueStr) : false;
}
var reg = /^[A-Z]{6}[A-Z\d]{2}(?:[A-Z\d]{3})?$/;
function isSwiftCode(value) {
var valueStr = toString(value);
return reg.test(valueStr);
}
function isValidNumber(value, strict) {
if (strict === void 0) { strict = false; }
var ret;
if (strict) {
ret = typeof value === 'string' && value !== '' ? Number(value) : value;
}
else {
if (typeof value === 'number') {
ret = value;
}
else if (isSymbol(value)) {
ret = Number.NaN;
}
else {
ret = Number(value);
}
}
return typeof ret === 'number' && !isNaN(ret);
}
var radixReg = /^[-+]?0[b|o|x]\d+/i;
var dotNumberStringReg = /^\.\d+/;
function transformEffectiveNumber(value) {
var ret;
if (isString(value)) {
ret = value.trim();
if (ret === '') {
ret = Number(ret);
}
else if (radixReg.test(ret) || dotNumberStringReg.test(ret)) {
ret = toNumber(ret);
}
else if (isNaN(Number(ret))) {
ret = Number.NaN;
}
}
else if (isSymbol(value)) {
ret = Number.NaN;
}
else if (!isNumber(value)) {
ret = Number(value);
}
else {
ret = value;
}
if (isNaN(ret)) {
return Number.NaN;
}
return ret;
}
function isScientificNumber(num) {
return /\d+\.?\d*e[+-]*\d+/i.test(num);
}
function strip(num, precision) {
if (precision === void 0) { precision = 12; }
return +parseFloat(num.toPrecision(precision));
}
function digitLength(num) {
var eSplit = num.toString().split(/e/i);
var len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);
return len > 0 ? len : 0;
}
function float2Fixed(num) {
var strNum = String(num);
if (!isScientificNumber(strNum)) {
return Number(strNum.replace('.', ''));
}
var dLen = digitLength(num);
return dLen > 0 ? strip(+num * Math.pow(10, dLen)) : +num;
}
function checkBoundary(num) {
if (+num > MAX_SAFE_INTEGER || +num < MIN_SAFE_INTEGER) {
devWarn("".concat(num, " is beyond boundary when transfer to integer, the results may not be accurate"));
}
}
function trimLeftZero(num) {
var reg = /^([+-])?(0+)([0-9.]+)$/;
var result = reg.exec(num);
var sign;
if (result) {
sign = result[1] || '';
return sign + (result[3][0] === '.' ? '0' + result[3] : result[3]);
}
return num;
}
function checkNumber(num) {
if (!isValidNumber(num)) {
devWarn("".concat(num, " invalid parameter."));
return false;
}
if (typeof num === 'number') {
checkBoundary(num);
}
return true;
}
function formatInt(intStr, thousand) {
var txt = '';
intStr = trimLeftZero(intStr);
intStr = intStr[0] === '+' ? intStr.substring(1) : intStr;
var negativeSymbol = Number(intStr) < 0 ? '-' : '';
var reArr = negativeSymbol ? intStr.substring(1).split('').reverse() : intStr.split('').reverse();
for (var i = 0; i < reArr.length; i++) {
txt += reArr[i] + ((i + 1) % 3 === 0 && i + 1 !== reArr.length ? thousand : '');
}
return negativeSymbol + txt.split('').reverse().join('');
}
function formatDec(decStr, precision, decimal) {
if (precision === 0) {
return '';
}
var zero = 0;
var ret = '';
if (decStr && Number(decStr) > 0) {
var tmpNum = parseFloat('0.' + decStr);
ret = tmpNum.toFixed(precision).substring(2);
}
else {
ret = zero.toFixed(precision).substring(2);
}
return decimal + ret;
}
var formatMoney = function (num, options) {
if (options === void 0) { options = {}; }
var _a = options.precision, precision = _a === void 0 ? 2 : _a, symbol = options.symbol, _b = options.thousand, thousand = _b === void 0 ? ',' : _b, _c = options.decimal, decimal = _c === void 0 ? '.' : _c, _d = options.strict, strict = _d === void 0 ? true : _d;
if (!checkNumber(num) || (strict && (!isString(num) || num === '') && !isNumber(num))) {
return '';
}
if (typeof num === 'number' && !isFinite(num)) {
return num + '';
}
if (typeof precision !== 'number' || isNaN(precision) || precision < 0) {
precision = 2;
}
else if (precision > 10) {
precision = 10;
}
symbol = typeof symbol === 'string' ? symbol : '';
thousand = typeof thousand === 'string' ? thousand : ',';
decimal = typeof decimal === 'string' ? decimal : '.';
var strNum = transformEffectiveNumber(num) + '';
var _e = __read(strNum.split('.'), 2), intStr = _e[0], decStr = _e[1];
return symbol + formatInt(intStr, thousand) + formatDec(decStr, precision, decimal);
};
function formatBankCard(bankCardNo, options) {
if (bankCardNo === void 0) { bankCardNo = ''; }
var _a = options || {}, _b = _a.spaceMark, spaceMark = _b === void 0 ? ' ' : _b, _c = _a.length, length = _c === void 0 ? 4 : _c;
var reg = new RegExp("(.{".concat(length, "})"), 'g');
var regChar = new RegExp("".concat(spaceMark), 'g');
var realValue = toString(bankCardNo).replace(regChar, '');
var str = realValue.replace(reg, "$1".concat(spaceMark));
return realValue.length % length === 0 ? str.substring(0, str.length - 1) : str;
}
function replaceChar(str, options) {
if (str === void 0) { str = ''; }
if (options === void 0) { options = {}; }
var _a = options.char, char = _a === void 0 ? '*' : _a, exclude = options.exclude;
var _b = options.start, start = _b === void 0 ? 3 : _b, _c = options.end, end = _c === void 0 ? -4 : _c, repeat = options.repeat;
var realStr = toString(str);
var strLen = realStr.length;
if (Math.abs(start) >= strLen) {
return realStr;
}
start = start >= 0 ? start : strLen + start;
end = end >= 0 ? end : strLen + end;
if (start >= end) {
return realStr;
}
var middleStr = realStr.substring(start, end);
if (exclude) {
var reg = new RegExp("[^".concat(exclude, "]"), 'g');
middleStr = middleStr.replace(reg, char);
}
else {
repeat = typeof repeat === 'number' && repeat >= 0 ? repeat : middleStr.length;
middleStr = char.repeat(repeat);
}
return realStr.substring(0, start) + middleStr + realStr.substring(end);
}
var chnNumberChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
var chnUnitChar = ['', '十', '百', '千'];
var big5NumberChar = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
var big5UnitChar = ['', '拾', '佰', '仟'];
var numberChar;
var unitChar;
var unitSection;
function sectionToChinese(section) {
var str = '';
var chnstr = '';
var zero = false;
var unitPos = 0;
while (section > 0) {
var v = section % 10;
if (v == 0) {
if (zero) {
zero = false;
chnstr = numberChar[v] + chnstr;
}
}
else {
zero = true;
str = numberChar[v];
str += unitChar[unitPos];
chnstr = str + chnstr;
}
unitPos++;
section = Math.floor(section / 10);
}
return chnstr;
}
function convertInteger(num) {
var numInt = Math.floor(num);
var unitPos = 0;
var strIns = '';
var chnStr = '';
var needZero = false;
if (numInt === 0) {
return numberChar[0];
}
while (numInt > 0) {
var section = numInt % 10000;
if (needZero) {
chnStr = numberChar[0] + chnStr;
}
strIns = sectionToChinese(section);
strIns += section !== 0 ? unitSection[unitPos] : unitSection[0];
chnStr = strIns + chnStr;
needZero = section < 1000 && section > 0;
numInt = Math.floor(numInt / 10000);
unitPos++;
}
return chnStr;
}
function convertDecimal(num) {
var strNum = num + '';
var index = strNum.indexOf('.');
var ret = '';
if (index > -1) {
var decimalStr = strNum.slice(index + 1);
ret = mapNumberChar(decimalStr);
}
return ret;
}
function mapNumberChar(num) {
var strNum = num + '';
var ret = '';
for (var i = 0, len = strNum.length; i < len; i++) {
ret += numberChar[parseInt(strNum[i])];
}
return ret;
}
function numberToChinese(num, options) {
if (options === void 0) { options = {}; }
var _a = options.big5, big5 = _a === void 0 ? false : _a, _b = options.unit, unit = _b === void 0 ? true : _b, _c = options.zero, zero = _c === void 0 ? '' : _c, _d = options.negative, negative = _d === void 0 ? '负' : _d, _e = options.unitConfig, unitConfig = _e === void 0 ? {} : _e;
var _f = options.decimal, decimal = _f === void 0 ? '' : _f;
if (typeof num !== 'number' || isNaN(num)) {
devWarn("\u53C2\u6570\u9519\u8BEF ".concat(num, "\uFF0C\u8BF7\u4F20\u5165\u6570\u5B57"));
return '';
}
checkBoundary(num);
if (big5) {
numberChar = big5NumberChar.slice();
unitChar = big5UnitChar.slice();
decimal = decimal || '點';
}
else {
numberChar = chnNumberChar.slice();
unitChar = chnUnitChar.slice();
decimal = decimal || '点';
}
var unitWan = unitConfig.w || '万';
var unitYi = unitConfig.y || '亿';
var unitWanYi = unitWan + unitYi;
unitSection = ['', unitWan, unitYi, unitWanYi];
if (zero) {
numberChar[0] = zero;
}
var preStr = num < 0 ? negative : '';
var chnInteger;
var numAbs = Math.abs(num);
if (unit) {
chnInteger = convertInteger(numAbs);
}
else {
chnInteger = mapNumberChar(Math.floor(numAbs));
}
var chnDecimal = convertDecimal(numAbs);
return chnDecimal ? "".concat(preStr).concat(chnInteger).concat(decimal).concat(chnDecimal) : "".concat(preStr).concat(chnInteger);
}
function bytesToSize(bytes, options) {
if (options === void 0) { options = {}; }
var _a = options.spaceMark, spaceMark = _a === void 0 ? ' ' : _a, _b = options.precision, precision = _b === void 0 ? 2 : _b;
var numBytes = typeof bytes !== 'number' ? Number(bytes) : bytes;
if (numBytes === 0 || isNaN(numBytes))
return "0".concat(spaceMark, "B");
var k = 1024;
var sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
var i = Math.floor(Math.log(numBytes) / Math.log(k));
return sizes[i] ? "".concat(Number((numBytes / Math.pow(k, i)).toFixed(precision))).concat(spaceMark).concat(sizes[i]) : numBytes + '';
}
var regIdCard = /^(\d{2})(\d{2})(\d{2})((?:\d{2})?\d{2})(\d{2})(\d{2})\d{2}(\d)(?:\d|X)?$/i;
var Provinces = [
['11', '北京市'],
['12', '天津市'],
['13', '河北省'],
['14', '山西省'],
['15', '内蒙古自治区'],
['21', '辽宁省'],
['22', '吉林省'],
['23', '黑龙江省'],
['31', '上海市'],
['32', '江苏省'],
['33', '浙江省'],
['34', '安徽省'],
['35', '福建省'],
['36', '江西省'],
['37', '山东省'],
['41', '河南省'],
['42', '湖北省'],
['43', '湖南省'],
['44', '广东省'],
['45', '广西壮族自治区'],
['46', '海南省'],
['50', '重庆市'],
['51', '四川省'],
['52', '贵州省'],
['53', '云南省'],
['54', '西藏自治区'],
['61', '陕西省'],
['62', '甘肃省'],
['63', '青海省'],
['64', '宁夏回族自治区'],
['65', '新疆维吾尔自治区'],
['71', '台湾省'],
['83', '台湾省'],
['81', '香港特别行政区'],
['82', '澳门特别行政区']
];
function parseIdCard(id) {
var match = regIdCard.exec(id);
if (!match) {
return null;
}
var origin = {
province: match[1],
city: match[2],
area: match[3],
year: match[4],
month: match[5],
day: match[6],
gender: match[7]
};
var province = Provinces.find(function (item) { return item[0] === origin.province; });
if (!province) {
return null;
}
var birthday = "".concat(origin.year, "-").concat(origin.month, "-").concat(origin.day);
var gender = Number(origin.gender) % 2 === 0 ? '女' : '男';
return {
province: province[1],
birthday: birthday,
gender: gender,
origin: origin
};
}
function setDataURLPrefix(data, mimeType, base64) {
if (mimeType === void 0) { mimeType = 'image/png'; }
if (base64 === void 0) { base64 = true; }
return "data:".concat(mimeType).concat(base64 ? ';base64' : '', ",").concat(data);
}
var safeDate = function (value) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
var safeValue = typeof value === 'string' ? value.replace(/[\\.-]/g, '/') : value;
if (args && args.length > 0) {
return new (Date.bind.apply(Date, __spreadArray([void 0, safeValue], __read(args), false)))();
}
return typeof safeValue === 'undefined' ? new Date() : new Date(safeValue);
};
function formatMobile(mobileNo, options) {
if (mobileNo === void 0) { mobileNo = ''; }
var _a = (options || {}).spaceMark, spaceMark = _a === void 0 ? ' ' : _a;
var regChar = new RegExp(spaceMark, 'g');
var realValue = toString(mobileNo).replace(regChar, '').substring(0, 11);
if (realValue.length > 7) {
return realValue.replace(/^(...)(....)/g, "$1".concat(spaceMark, "$2").concat(spaceMark));
}
if (realValue.length > 3) {
return realValue.replace(/^(...)/g, "$1".concat(spaceMark));
}
return realValue;
}
function padZero(value, size) {
if (size === void 0) { size = 2; }
var str = toString(value);
var len = str.length;
if (typeof size !== 'number' || size < 0) {
size = 0;
}
if (len < size) {
return '0'.repeat(size - len) + str;
}
return str;
}
var transformObjectValue = function (data, fn, deep) {
if (deep === void 0) { deep = true; }
if (isPlainObject(data)) {
var result_1 = {};
forEach(data, function (value, key) {
var newValue = deep && (isPlainObject(value) || isArray(value)) ? transformObjectValue(value, fn) : fn(value, key);
result_1[key] = newValue;
});
return result_1;
}
else if (isArray(data)) {
var result_2 = [];
forEach(data, function (value, index) {
var newValue = deep && (isPlainObject(value) || isArray(value)) ? transformObjectValue(value, fn) : fn(value, index);
result_2.push(newValue);
});
return result_2;
}
return data;
};
function times() {
var nums = [];
for (var _i = 0; _i < arguments.length; _i++) {
nums[_i] = arguments[_i];
}
var num1 = nums[0];
var num2 = nums[1] === void 0 ? 1 : nums[1];
var rest = nums.slice(2);
if (rest.length > 0) {
return times.apply(void 0, [times(num1, num2)].concat(rest));
}
num1 = transformEffectiveNumber(num1);
num2 = transformEffectiveNumber(num2);
if (isNaN(num1) || isNaN(num2)) {
return Number.NaN;
}
var num1Changed = float2Fixed(num1);
var num2Changed = float2Fixed(num2);
var baseNum = digitLength(num1) + digitLength(num2);
var leftValue = num1Changed * num2Changed;
checkBoundary(leftValue);
return leftValue / Math.pow(10, baseNum);
}
function plus() {
var nums = [];
for (var _i = 0; _i < arguments.length; _i++) {
nums[_i] = arguments[_i];
}
var num1 = nums[0];
var num2 = nums[1] === void 0 ? 0 : nums[1];
var rest = nums.slice(2);
if (rest.length > 0) {
return plus.apply(void 0, [plus(num1, num2)].concat(rest));
}
num1 = transformEffectiveNumber(num1);
num2 = transformEffectiveNumber(num2);
if (isNaN(num1) || isNaN(num2)) {
return Number.NaN;
}
var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;
}
function minus() {
var nums = [];
for (var _i = 0; _i < arguments.length; _i++) {
nums[_i] = arguments[_i];
}
var num1 = nums[0];
var num2 = nums[1] === void 0 ? 0 : nums[1];
var rest = nums.slice(2);
if (rest.length > 0) {
return minus.apply(void 0, [minus(num1, num2)].concat(rest));
}
num1 = transformEffectiveNumber(num1);
num2 = transformEffectiveNumber(num2);
if (isNaN(num1) || isNaN(num2)) {
return Number.NaN;
}
var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
return (times(num1, baseNum) - times(num2, baseNum)) / baseNum;
}
function divide() {
var nums = [];
for (var _i = 0; _i < arguments.length; _i++) {
nums[_i] = arguments[_i];
}
var num1 = nums[0];
var num2 = nums[1] === void 0 ? 1 : nums[1];
var rest = nums.slice(2);
if (rest.length > 0) {
return divide.apply(void 0, [divide(num1, num2)].concat(rest));
}
num1 = transformEffectiveNumber(num1);
num2 = tr