util-helpers 4.7.0 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util-helpers.js","sources":["../src/utils/type/isType.js","../src/utils/type/isString.js","../src/utils/convertToString.js","../src/isMobile.js","../src/isTelephone.js","../src/isPostcode.js","../src/isIdCard.js","../src/isEmail.js","../src/isQQ.js","../src/isWX.js","../src/isVehicle.js","../src/isBankCard.js","../src/isSocialCreditCode.js","../src/utils/config.js","../src/validatePassword.js","../src/isPassword.js","../src/isPassport.js","../src/isChinese.js","../src/isIPv4.js","../src/isIPv6.js","../src/isUrl.js","../src/isBusinessLicense.js","../src/isPromiseLike.js","../src/isHMCard.js","../src/isTWCard.js","../src/utils/constants.js","../src/utils/math.util.js","../src/utils/type/isNaN.js","../src/formatMoney.js","../src/utils/type/isUndefined.js","../src/utils/type/isNull.js","../src/utils/type/isNil.js","../src/normalizeString.js","../src/formatBankCard.js","../src/replaceChar.js","../src/numberToChinese.js","../src/bytesToSize.js","../src/parseIdCard.js","../src/blobToDataURL.js","../src/dataURLToBlob.js","../src/setDataURLPrefix.js","../src/safeDate.js","../src/formatMobile.js","../src/padZero.js","../src/utils/type/isNumber.js","../src/times.js","../src/plus.js","../src/minus.js","../src/divide.js","../src/round.js","../src/waitTime.js","../src/calculateCursorPosition.js","../src/randomString.js"],"sourcesContent":["const toString = Object.prototype.toString;\n\n/**\n * 检测值的 `toString` 类型\n *\n * @private\n * @since 1.1.0\n * @param {*} value 检查值\n * @param {string} typename 类型名称\n * @returns {boolean} 返回值的 `toString` 类型是否匹配\n */\nfunction isType(value, typename) {\n return toString.call(value) === `[object ${typename}]`;\n}\n\nexport default isType;\n","import isType from './isType';\n\n/**\n * 检查值是否为String\n *\n * @static\n * @alias module:Type.isString\n * @since 1.1.0\n * @param {*} value 检查值\n * @returns {boolean} 是否为String\n * @example\n *\n * isString('abc')\n * // => true\n *\n * isString(1)\n * // => false\n */\nfunction isString(value) {\n return isType(value, 'String');\n}\n\nexport default isString;\n","import isString from './type/isString';\n\n/**\n * 转换为字符串\n *\n * @param {*} value 值\n * @returns {string} 字符串\n */\nfunction convertToString(value) {\n return isString(value) ? value : String(value);\n}\n\nexport default convertToString;\n","import convertToString from './utils/convertToString';\n\n// 手机号码 11位数字,以1开头,第二位是3456789其中一个,后面再加9个数字\nconst reg = /^1[3456789]\\d{9}$/;\n\n/**\n * 检测值是否为手机号码\n *\n * @static\n * @alias module:Validator.isMobile\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为手机号码\n * @example\n *\n * isMobile('13000000000');\n * // => true\n *\n * isMobile('13000');\n * // => false\n *\n */\nfunction isMobile(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isMobile;\n","import convertToString from './utils/convertToString';\n\n// 固定电话 支持区号和分机号 3~4位区号,以0开头;7~8位直播号,以2~9开头;1~6位分机号\nconst reg = /^(0\\d{2,3}\\-)?([2-9]\\d{6,7})(\\-\\d{1,6})?$/;\n\n/**\n * 检测值是否为固定电话\n *\n * @static\n * @alias module:Validator.isTelephone\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为固定电话\n * @example\n *\n * isTelephone('22033212');\n * // => true\n *\n * isTelephone('021-22033212');\n * // => true\n *\n * isTelephone('021-22033212-123');\n * // => true\n *\n * isTelephone('13000000000');\n * // => false\n *\n */\nfunction isTelephone(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isTelephone;\n","import convertToString from './utils/convertToString';\n\n// 邮政编码\nconst reg = /^\\d{6}$/;\n\n/**\n * 检测值是否为邮政编码,6位数字\n *\n * @static\n * @alias module:Validator.isPostcode\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为邮政编码\n * @example\n *\n * isPostcode('101111');\n * // => true\n *\n * isPostcode('123');\n * // => false\n *\n */\nfunction isPostcode(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isPostcode;\n","import convertToString from './utils/convertToString';\n\n// 身份证号正则\nconst regIdCard = /^[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;\n\n/**\n * 校验码计算\n *\n * @private\n * @see 参考 {@link https://zh.wikipedia.org/wiki/中华人民共和国公民身份号码|中华人民共和国公民身份号码}\n * @see 参考 {@link https://baike.baidu.com/item/居民身份证号码|居民身份证号码}\n * @param {string} id 身份证号码\n * @returns {boolean} 校验码是否正确\n */\nfunction check(id) {\n let index, sum, num;\n for (sum = index = 0; index < 17; index++) {\n sum += (Math.pow(2, 17 - index) % 11) * Number(id[index]);\n }\n num = (12 - (sum % 11)) % 11;\n if (num < 10) {\n return num === Number(id[17]);\n } else {\n return id[17].toUpperCase() === 'X';\n }\n}\n\n/**\n * 检测值是否为18位身份证号码。<br/>宽松模式下,支持15位身份证号码\n *\n * @static\n * @alias module:Validator.isIdCard\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @param {Object} [options] 配置项\n * @param {boolean} [options.loose=false] 宽松模式,支持15位身份证号码\n * @param {boolean} [options.checkCode=true] 是否校验最后一位校验码,仅支持18位身份证号码\n * @returns {boolean} 值是否为身份证号\n * @example\n *\n * isIdCard('130701199310302288');\n * // => true\n *\n * isIdCard('13070119931030228X');\n * // => false\n *\n * isIdCard('13070119931030228X', { checkCode: false }); // 不校验校验码\n * // => true\n *\n * isIdCard('320311770706001');\n * // => false\n *\n * isIdCard('320311770706001', { loose: true });\n * // => true\n *\n */\nfunction isIdCard(value, { loose = false, checkCode = true } = {}) {\n const valueStr = convertToString(value);\n if (valueStr.length === 15 && loose) {\n return regIdCard.test(valueStr);\n }\n\n if (valueStr.length === 18 && regIdCard.test(valueStr)) {\n if (checkCode) {\n return check(valueStr);\n }\n return true;\n }\n\n return false;\n}\n\nexport default isIdCard;\n","import convertToString from './utils/convertToString';\n\n// 邮箱\nconst reg = /^[\\da-z]+([\\-\\.\\_]?[\\da-z]+)*@[\\da-z]+([\\-\\.]?[\\da-z]+)*(\\.[a-z]{2,})+$/i;\n\n/**\n * 检测值是否为Email\n *\n * @static\n * @alias module:Validator.isEmail\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为Email\n * @example\n *\n * isEmail('1232@qq.com');\n * // => true\n *\n * isEmail('123@');\n * // => false\n *\n */\nfunction isEmail(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isEmail;\n","import convertToString from './utils/convertToString';\n\n// QQ号正则\nconst reg = /^[1-9]\\d{4,10}$/;\n\n/**\n * 检测值是否为QQ号,非0开头,5至11位数字\n *\n * @static\n * @alias module:Validator.isQQ\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为QQ号\n * @example\n *\n * isQQ('12345');\n * // => true\n *\n * isQQ('123');\n * // => false\n *\n */\nfunction isQQ(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isQQ;\n","import convertToString from './utils/convertToString';\n\n// 微信号 6至20位,以字母开头,字母,数字,减号(连接符),下划线\nconst reg = /^[a-z]([-_a-z0-9]{5,19})+$/i;\n\n/**\n * 检测值是否为微信号\n *\n * @static\n * @alias module:Validator.isWX\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为微信号\n * @example\n *\n * isWX('a12345');\n * // => true\n *\n * isWX('123');\n * // => false\n *\n */\nfunction isWX(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isWX;\n","import convertToString from './utils/convertToString';\n\n// 车牌号正则\nconst reg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([A-Z0-9]{4}[A-Z0-9挂学警港澳]{1})|([A-Z0-9]{5}[DF])|([DF][A-Z0-9]{5}))$/;\n\n/**\n * 检测值是否为车牌号,支持新能源和非新能源车牌\n *\n * @static\n * @alias module:Validator.isVehicle\n * @see 参考 {@link https://baike.baidu.com/item/车牌号|车牌号}\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为车牌号\n * @example\n *\n * isVehicle('京L12345');\n * // => true\n *\n * isVehicle('粤BD12345');\n * // => true\n *\n * isVehicle('粤BF12345');\n * // => true\n *\n * isVehicle('粤B12345D');\n * // => true\n *\n * isVehicle('粤B12345F');\n * // => true\n *\n */\nfunction isVehicle(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isVehicle;\n","import convertToString from './utils/convertToString';\n\n// 非0开头,10~21位数字\nconst reg = /^[1-9]\\d{9,20}$/;\n\n// 8~30位数字\nconst regLoose = /^\\d{8,30}$/;\n\n/**\n * 检测值是否为银行卡号。正常模式(非0开头,10~21位数字)宽松模式(8~30位数字)\n *\n * @static\n * @alias module:Validator.isBankCard\n * @see 参考 {@link https://kf.qq.com/faq/170112ABnm6b170112FvquAn.html|常用银行账号位数参考}\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @param {Object} [options] 配置项\n * @param {boolean} [options.loose=false] 宽松模式,8~30位数字\n * @returns {boolean} 值是否为银行卡号\n * @example\n *\n * isBankCard('6228480402564890018');\n * // => true\n *\n * isBankCard('6228480402564890');\n * // => true\n *\n * isBankCard('123456789');\n * // => false\n *\n * isBankCard('123456789', { loose: true });\n * // => true\n *\n */\nfunction isBankCard(value, { loose = false } = {}) {\n const valueStr = convertToString(value);\n\n if (loose) {\n return regLoose.test(valueStr);\n }\n return reg.test(valueStr);\n}\n\nexport default isBankCard;\n","import convertToString from './utils/convertToString';\n\n// 基础规则,由18位数字和大写字母组成,不使用I、O、Z、S、V。\nconst baseReg = /^[\\dA-HJ-NPQRTUWXY]{2}\\d{6}[\\dA-HJ-NPQRTUWXY]{10}$/;\n\n// 基础字符组成\nconst baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split('');\n\n/**\n * 获取字符位置\n *\n * @private\n * @param {string} code 字符\n * @returns {number} 字符所在基础字符的位置\n */\nfunction getBaseCodeIndex(code) {\n let ret;\n\n baseCodeArr.some((item, index) => {\n if (item === code) {\n ret = index;\n return true;\n }\n return false;\n });\n\n // @ts-ignore\n return ret;\n}\n\n/**\n * 计算校验码\n *\n * @private\n * @since 1.1.0\n * @param {string} preCode 统一代码前17位\n * @returns {string} 校验码\n */\nfunction sumCheckCode(preCode) {\n // const preCodeArr = preCode.split('');\n\n let total = 0;\n\n // 计算字符位置对应序号和加权因子的乘积,总和\n for (let i = 0; i < 17; i++) {\n // 字符位置对应的基础编码序号\n const index = getBaseCodeIndex(preCode[i]);\n // 加权因子\n const wf = Math.pow(3, i) % 31;\n // 计算序号和加权因子的乘积,并计算级数之和\n total += index * wf;\n }\n\n // 计算整数求余函数MOD\n const remainder = total % 31;\n // 校验码字符值序号\n const checkCodeIndex = 31 - remainder;\n\n return baseCodeArr[checkCodeIndex];\n}\n\n/**\n * 检测值是否为统一社会信用代码,也叫三证合一组织代码。由18位数字和大写字母组成,不使用I、O、Z、S、V。\n *\n * @static\n * @alias module:Validator.isSocialCreditCode\n * @see 参考 {@link https://zh.wikisource.org/zh-hans/GB_32100-2015_法人和其他组织统一社会信用代码编码规则|GB 32100-2015 法人和其他组织统一社会信用代码编码规则}\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @param {Object} [options] 配置项\n * @param {boolean} [options.loose=false] 宽松模式。如果为true,不校验校验位。\n * @returns {boolean} 值是否为统一社会信用代码\n * @example\n *\n * isSocialCreditCode('91350100M000100Y43');\n * // => true\n *\n * isSocialCreditCode('91350100M000100Y4A');\n * // => false\n *\n * // 宽松模式,不校验校验位。所以也可以通过\n * isSocialCreditCode('91350100M000100Y4A', {loose: true});\n * // => true\n *\n */\nfunction isSocialCreditCode(value, { loose = false } = {}) {\n const valueStr = convertToString(value);\n\n const passBaseRule = baseReg.test(valueStr);\n\n // 宽松模式 或 基础规则不通过直接返回\n if (loose || !passBaseRule) {\n return passBaseRule;\n }\n\n // 前17位\n const preCode = valueStr.substring(0, 17);\n // 校验码\n const lastCode = valueStr.substring(valueStr.length - 1);\n // 计算校验码\n const checkCode = sumCheckCode(preCode);\n\n return lastCode === checkCode;\n}\n\nexport default isSocialCreditCode;\n","const config = {\n // 禁用warning提示\n disableWarning: true\n};\n\n/**\n * 设置禁止warning提示\n * @static\n * @alias module:Debug.formatBankCard\n * @since 3.6.1\n * @param {boolean} bool 是否禁止warning提示\n */\nfunction setDisableWarning(bool) {\n config.disableWarning = !!bool;\n}\n\nexport { config, setDisableWarning };\n","import { config } from './utils/config';\n\nconst regNumber = /[\\d]/;\nconst regLowerCaseLetter = /[a-z]/;\nconst regUpperCaseLetter = /[A-Z]/;\nconst regAllNumberAndLetter = /[\\d|a-z]/gi;\n\n/**\n * 是否包含数字\n *\n * @private\n * @param {string} val 检查的值\n * @returns {boolean} 是否包含数字\n */\nfunction hasNumber(val) {\n return regNumber.test(val);\n}\n\n/**\n * 是否包含小写字母\n *\n * @private\n * @param {string} val 检测的值\n * @returns {boolean} 是否包含小写字母\n */\nfunction hasLowerCaseLetter(val) {\n return regLowerCaseLetter.test(val);\n}\n\n/**\n * 是否包含大写字母\n *\n * @private\n * @param {string} val 检测的值\n * @returns {boolean} 是否包含大写字母\n */\nfunction hasUpperCaseLetter(val) {\n return regUpperCaseLetter.test(val);\n}\n\n/**\n * 是否为十六进制\n *\n * @private\n * @param {string} val 检测的值\n * @returns {boolean} 是否为十六进制\n */\nfunction hasHex(val) {\n return val.indexOf('\\\\x') > -1 || val.indexOf('\\\\u') > -1;\n}\n\n/**\n * 是否包含特殊字符\n *\n * @private\n * @param {string} val 检测的值\n * @param {string} [chars] 特殊字符\n * @returns {boolean} 是否包含特殊字符\n */\nfunction hasSpecialCharacter(val, chars = '') {\n if (!chars) {\n return false;\n }\n\n const specialChars = val.replace(regAllNumberAndLetter, '');\n const regChars = hasHex(chars) ? new RegExp(`[${chars}]`) : null;\n\n if (regChars) {\n return regChars.test(specialChars);\n }\n\n let ret = false;\n specialChars.split('').some((charItem) => {\n if (chars.indexOf(charItem) > -1) {\n ret = true;\n }\n return ret;\n });\n return ret;\n}\n\n/**\n * 是否包含非法字符\n *\n * @private\n * @param {string} val 检测的值\n * @param {string} chars 非法字符\n * @returns {boolean} 是否包含非法字符\n */\nfunction hasUnallowableCharacter(val, chars = '') {\n const specialChars = val.replace(regAllNumberAndLetter, '');\n\n if (!chars && specialChars) {\n return true;\n }\n\n const regChars = hasHex(chars) ? new RegExp(`[^${chars}]`) : null;\n if (regChars) {\n return regChars.test(specialChars);\n }\n let ret = false;\n specialChars.split('').some((charItem) => {\n if (chars.indexOf(charItem) === -1) {\n ret = true;\n }\n return ret;\n });\n return ret;\n}\n\n/**\n * @typedef {Object} PasswordContaines - 验证密码的包含内容\n * @property {boolean} number - 包含数字\n * @property {boolean} lowerCaseLetter - 包含小写字母\n * @property {boolean} upperCaseLetter - 包含大写字母\n * @property {boolean} specialCharacter - 包含特殊字符\n * @property {boolean} unallowableCharacter - 包含非法字符\n */\n\n/**\n * @typedef {Object} ValidatePasswordReturn - 验证结果\n * @property {boolean} validated - 验证结果,根据密码强度、是否包含非法字符得出\n * @property {number} level - 强度级别,包含数字/大小写字母/特殊字符\n * @property {PasswordContaines} containes - 包含内容\n */\n\n/**\n * 验证密码(数字、大小写字母、特殊字符、非法字符)\n *\n * @see 参考 {@link https://baike.baidu.com/item/ASCII#3|ASCII}\n * @static\n * @alias module:Validator.validatePassword\n * @since 3.7.0\n * @param {string} value 要检测的值\n * @param {Object} [options] 配置项\n * @param {number} [options.level=2] 密码强度 1-包含一种字符 2-包含两种字符 3-包含三种字符。(大写字母、小写字母、数字、特殊字符)\n * @param {boolean} [options.ignoreCase=false] 是否忽略大小写,为 ture 时,大小写字母视为一种字符\n * @param {string} [options.special=\"!@#$%^&*()-=_+[]\\|{},./?<>~\"] 支持的特殊字符\n * @returns {ValidatePasswordReturn} 验证结果\n * @example\n *\n * validatePassword('a12345678');\n * // =>\n * {\n * validated: true, // 验证结果,根据密码强度、是否包含非法字符得出\n * level: 2, // 强度级别\n * containes: {\n * number: true, // 包含数字\n * lowerCaseLetter: true, // 包含小写字母\n * upperCaseLetter: false, // 包含大写字母\n * specialCharacter: false, // 包含特殊字符\n * unallowableCharacter: false // 包含非法字符\n * }\n * }\n *\n * validatePassword('a12345678', {level: 3});\n * // =>\n * {\n * validated: false,\n * level: 2,\n * containes: {\n * number: true,\n * lowerCaseLetter: true,\n * upperCaseLetter: false,\n * specialCharacter: false,\n * unallowableCharacter: false\n * }\n * }\n *\n * validatePassword('_Aa一二三45678', {level: 3, ignoreCase: true});\n * // =>\n * {\n * validated: false,\n * level: 3,\n * containes: {\n * number: true,\n * lowerCaseLetter: true,\n * upperCaseLetter: true,\n * specialCharacter: true,\n * unallowableCharacter: true\n * }\n * }\n *\n * // 自定义特殊字符\n * validatePassword('_Aa一二三45678', {level: 3, ignoreCase: true, special: '_一二三'});\n * // =>\n * {\n * validated: true,\n * level: 3,\n * containes: {\n * number: true,\n * lowerCaseLetter: true,\n * upperCaseLetter: true,\n * specialCharacter: true,\n * unallowableCharacter: false\n * }\n * }\n */\nfunction validatePassword(value, { level = 2, ignoreCase = false, special = '\\\\x21-\\\\x2F\\\\x3A-\\\\x40\\\\x5B-\\\\x60\\\\x7B-\\\\x7E' } = {}) {\n let valStr = value;\n\n if (typeof value !== 'string') {\n if (!config.disableWarning) {\n console.warn(`[validatePassword] value must be a string.`);\n }\n valStr = '';\n }\n\n let currentLevel = 0;\n\n // 包含数字\n const containesNumber = hasNumber(valStr);\n // 包含小写字母\n const containesLowerCaseLetter = hasLowerCaseLetter(valStr);\n // 包含大写字母\n const containesUpperCaseLetter = hasUpperCaseLetter(valStr);\n // 包含特殊字符\n const containesSpecialCharacter = hasSpecialCharacter(valStr, special);\n // 包含非法字符\n const containesUnallowableCharacter = hasUnallowableCharacter(valStr, special);\n\n if (containesNumber) {\n currentLevel += 1;\n }\n\n if (ignoreCase) {\n // 不区分大小写\n if (containesLowerCaseLetter || containesUpperCaseLetter) {\n currentLevel += 1;\n }\n } else {\n // 区分大小写\n if (containesLowerCaseLetter) {\n currentLevel += 1;\n }\n if (containesUpperCaseLetter) {\n currentLevel += 1;\n }\n }\n\n if (containesSpecialCharacter) {\n currentLevel += 1;\n }\n\n // 验证结果\n const validated = currentLevel >= level && !containesUnallowableCharacter;\n\n return {\n validated,\n level: currentLevel,\n containes: {\n number: containesNumber,\n lowerCaseLetter: containesLowerCaseLetter,\n upperCaseLetter: containesUpperCaseLetter,\n specialCharacter: containesSpecialCharacter,\n unallowableCharacter: containesUnallowableCharacter\n }\n };\n}\n\nexport default validatePassword;\n","import validatePassword from './validatePassword';\n\n/**\n * 检测值是否符合密码强度\n * <p><strong>注意:该校验只校验是否存在不同字符(大小写字母、数字、特殊符号),不判断长度。</strong></p>\n * <p><i>如果需要更细致的验证,请使用 <a href=\"#.validatePassword\">validatePassword</a></i></p>\n *\n * @see 参考 {@link https://baike.baidu.com/item/ASCII#3|ASCII}\n * @static\n * @alias module:Validator.isPassword\n * @since 1.1.0\n * @requires module:Validator.validatePassword\n * @param {*} value 要检测的值\n * @param {Object} [options] 配置项\n * @param {number} [options.level=2] 密码强度 1-包含一种字符 2-包含两种字符 3-包含三种字符。(大写字母、小写字母、数字、特殊字符)\n * @param {boolean} [options.ignoreCase=false] 是否忽略大小写,为 ture 时,大小写字母视为一种字符\n * @param {string} [options.special=\"!@#$%^&*()-=_+[]\\|{},./?<>~\"] 支持的特殊字符\n * @returns {boolean} 值是否符合密码强度\n * @example\n *\n * isPassword('a12345678');\n * // => true\n *\n * isPassword('a12345678', {level: 3});\n * // => false\n *\n * isPassword('Aa12345678', {level: 3});\n * // => true\n *\n * isPassword('Aa12345678', {level: 3, ignoreCase: true});\n * // => false\n *\n * isPassword('_Aa12345678', {level: 3, ignoreCase: true});\n * // => true\n *\n * // 仅支持 数字、字母、特殊字符,其他字符如中文字符是校验不通过的\n * isPassword('_Aa一二三45678', {level: 3, ignoreCase: true});\n * // => false\n *\n * isPassword(' _Aa12345678', {level: 3, ignoreCase: true});\n * // => false\n */\nfunction isPassword(value, { level = 2, ignoreCase = false, special = '\\\\x21-\\\\x2F\\\\x3A-\\\\x40\\\\x5B-\\\\x60\\\\x7B-\\\\x7E' } = {}) {\n return validatePassword(value, { level, ignoreCase, special }).validated;\n}\n\nexport default isPassword;\n","import convertToString from './utils/convertToString';\n\n// 护照号 9位,包括首字母和数字;支持 普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ)、澳门特区护照(MA)\nconst reg = /^((e[\\da-z])|(de)|(se)|(pe)|(k[\\da-z])|(kj)|(ma))[\\da-z]{7}$/i;\n\n/**\n * 检测值是否为护照号\n * 支持普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ)、澳门特区护照(MA)\n *\n * @static\n * @alias module:Validator.isPassport\n * @see 参考 {@link https://zh.wikipedia.org/wiki/中华人民共和国护照#个人资料页|中华人民共和国护照#个人资料页}\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为护照号\n * @example\n *\n * isPassport('E12345678');\n * // => true\n *\n * isPassport('abc');\n * // => false\n *\n */\nfunction isPassport(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isPassport;\n","import convertToString from './utils/convertToString';\n\nconst chineseDictionary = {\n // 基本汉字\n chineseBasic: '[\\u4e00-\\u9fa5]',\n\n // 基本汉字补充\n chineseExtend: '[\\u9ea6-\\u9fef]',\n\n // 汉字扩展A\n chineseExtendA: '[\\u3400-\\u4DB5]',\n\n // 汉字扩展B\n chineseExtendB: '[\\u{20000}-\\u{2A6D6}]',\n\n // 汉字扩展C\n chineseExtendC: '[\\u{2A700}-\\u{2B734}]',\n\n // 汉字扩展D\n chineseExtendD: '[\\u{2B740}-\\u{2B81D}]',\n\n // 汉字扩展E\n chineseExtendE: '[\\u{2B820}-\\u{2CEA1}]',\n\n // 汉字扩展F\n chineseExtendF: '[\\u{2CEB0}-\\u{2EBE0}]'\n};\n\nlet looseChineseRegExp = chineseDictionary.chineseBasic + '+';\n\nlet chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$';\n\n// eslint-disable-next-line no-prototype-builtins\nconst supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');\n\nif (supportRegExpUnicode) {\n looseChineseRegExp = '(?:' + chineseDictionary.chineseBasic + '|' + chineseDictionary.chineseExtend + '|' + chineseDictionary.chineseExtendA + '|' + chineseDictionary.chineseExtendB + '|' + chineseDictionary.chineseExtendC + '|' + chineseDictionary.chineseExtendD + '|' + chineseDictionary.chineseExtendE + '|' + chineseDictionary.chineseExtendF + ')+';\n chineseRegExp = '^(?:' + chineseDictionary.chineseBasic + '|' + chineseDictionary.chineseExtend + '|' + chineseDictionary.chineseExtendA + '|' + chineseDictionary.chineseExtendB + '|' + chineseDictionary.chineseExtendC + '|' + chineseDictionary.chineseExtendD + '|' + chineseDictionary.chineseExtendE + '|' + chineseDictionary.chineseExtendF + ')+$';\n}\n\n/**\n * 检测值是否为中文\n *\n * @static\n * @alias module:Validator.isChinese\n * @since 1.1.0\n * @see 参考 {@link http://www.unicode.org/reports/tr38/#BlockListing|4.4 Listing of Characters Covered by the Unihan Database}\n * @param {*} value 要检测的值\n * @param {Object} [options] 配置项\n * @param {boolean} [options.loose=false] 宽松模式。如果为true,只要包含中文即为true\n * @returns {boolean} 值是否为中文\n * @example\n *\n * isChinese('林某某');\n * // => true\n *\n * isChinese('林A');\n * // => false\n *\n * // 宽松模式,只要包含中文即为true\n * isChinese('林A', {loose: true});\n * // => true\n *\n * isChinese('A林A', {loose: true});\n * // => true\n *\n */\nfunction isChinese(value, { loose = false } = {}) {\n const valueStr = convertToString(value);\n const reg = new RegExp(loose ? looseChineseRegExp : chineseRegExp, supportRegExpUnicode ? 'u' : undefined);\n return reg.test(valueStr);\n}\n\nexport default isChinese;\n","import convertToString from './utils/convertToString';\n\n// ipv4正则\nconst reg = /^((\\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])$/;\n\n/**\n * 检测值是否为ipv4\n *\n * @static\n * @alias module:Validator.isIPv4\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为ipv4\n * @example\n *\n * isIPv4('192.168.1.1');\n * // => true\n *\n * isIPv4('255.255.255.255');\n * // => true\n *\n * isIPv4('256.256.256.256');\n * // => false\n *\n * isIPv4('0.0');\n * // => false\n *\n */\nfunction isIPv4(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isIPv4;\n","import convertToString from './utils/convertToString';\n\n// ipv6正则\nconst reg = /^((([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;\n\n/**\n * 检测值是否为ipv6\n *\n * @static\n * @alias module:Validator.isIPv6\n * @since 1.1.0\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为ipv6\n * @example\n *\n * // 冒分十六进制表示法\n * isIPv6('2001:0DB8:0000:0023:0008:0800:200C:417A');\n * // => true\n *\n * // 前导0省略\n * isIPv6('2001:DB8:0:23:8:800:200C:417A');\n * // => true\n *\n * isIPv6('FF01:0:0:0:0:0:0:1101');\n * // => true\n *\n * // 0位压缩表示法\n * isIPv6('FF01::1101');\n * // => true\n *\n * isIPv6('::1');\n * // => true\n *\n * isIPv6('::');\n * // => true\n *\n * isIPv6('0:0:0:0:0:0:0:1');\n * // => true\n *\n * isIPv6('0:0:0:0:0:0:0:0');\n * // => true\n *\n * // 内嵌IPv4地址表示法\n * isIPv6('::192.168.1.1');\n * // => true\n *\n * isIPv6('::FFFF:192.168.1.1');\n * // => true\n *\n * isIPv6('192.168.1.1');\n * // => false\n *\n */\nfunction isIPv6(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isIPv6;\n","import convertToString from './utils/convertToString';\n\n// url正则\nconst reg = /(((^https?:(?:\\/\\/)?)(?:[-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9.-]+(?::\\d+)?|(?:www.|[-;:&=\\+\\$,\\w]+@)[A-Za-z0-9.-]+)((?:\\/[\\+~%\\/.\\w-_]*)?\\??(?:[-\\+=&;%@.\\w_]*)#?(?:[\\w]*))?)$/;\n\n/**\n * 检测值是否为url\n *\n * @static\n * @alias module:Validator.isUrl\n * @since 3.4.0\n * @see 参考 {@link https://zh.wikipedia.org/wiki/统一资源定位符|统一资源定位符}\n * @param {*} value 要检测的值\n * @returns {boolean} 值是否为url\n * @example\n *\n * isUrl('');\n * // => false\n *\n * isUrl('8.8.8.8');\n * // => false\n *\n * isUrl('example.com');\n * // => true\n *\n * isUrl('http://example.com');\n * // => true\n *\n * isUrl('https://example.com:8080');\n * // => true\n *\n * isUrl('http://www.example.com/test/123');\n * // => true\n *\n * isUrl('http://www.example.com/test/123?foo=bar');\n * // => true\n */\nfunction isUrl(value) {\n const valueStr = convertToString(value);\n return reg.test(valueStr);\n}\n\nexport default isUrl;\n","import convertToString from './utils/convertToString';\n\n// 基础规则,由14位数字本体码和1位数字校验码组成,其中本体码从左至右依次为:6位首次登记机关码、8位顺序码。\nconst baseReg = /^\\d{15}$/;\n\n/**\n * 计算校验码\n *\n * @private\n * @since 3.5.0\n * @param {string} preCode 营业执照前14位\n * @returns {number} 校验码\n */\nfunction sumCheckCode(preCode) {\n let retNum; // 校验位数字\n\n let pj = 10; // Pj+1 11,初始为10\n\n for (let j = 0; j < 14; j++) {\n const sj = pj + Number(preCode[j]);\n let sj10 = sj % 10;\n sj10 = sj10 === 0 ? 10 : sj10;\n const pj1 = sj10 * 2;\n pj = pj1 % 11;\n }\n\n // 反模10计算\n if (pj === 10 || pj === 1) {\n retNum = 1;\n } else {\n retNum = 11 - pj;\n }\n\n return retNum;\n}\n\n/**\n * 检测值是否为营业执照号,也叫工商注册号。由14位数字本体码和1位数字校验码组成,其中本体码从左至右依次为:6位首次登记机关码、8位顺序码。\n *\n * @static\n * @alias module:Validator.isBusinessLicense\n * @see 参考 {@link https://wenku.baidu.com/view/19873704cc1755270722087c.html|GS15—2006 工商行政管理市场主体注册号编制规则}\n * @since 3.5.0\n * @param {*} value 要检测的值\n * @param {Object} [options] 配置项\n * @param {boolean} [options.loose=false] 宽松模式。如果为true,不校验校验位。\n * @returns {boolean} 值是否为营业执照号\n * @example\n *\n * isBusinessLicense('310115600985533');\n * // => true\n *\n * isBusinessLicense('3101156009');\n * // => false\n *\n * isBusinessLicense('3101156009', { loose: true });\n * // => false\n *\n * isBusinessLicense('310115600985535');\n * // => false\n *\n * isBusinessLicense('310115600985535', { loose: true });\n * // => true\n */\nfunction isBusinessLicense(value, { loose = false } = {}) {\n const valueStr = convertToString(value);\n\n const passBaseRule = baseReg.test(valueStr);\n\n // 宽松模式 或 基础规则不通过直接返回\n if (loose || !passBaseRule) {\n return passBaseRule;\n }\n\n // 前14位\n const preCode = valueStr.substring(0, 14);\n // 校验码\n const lastCode = valueStr.substring(valueStr.length - 1);\n // 计算校验码\n const checkCode = sumCheckCode(preCode);\n\n return lastCode === String(checkCode);\n}\n\nexport default isBusinessLicense;\n","/**\n * 检测值是否类似Promise对象\n *\n * @static\n * @alias module:Validator.isPromiseLike\n * @since 3.8.0\n * @param {*} obj 要检测的值\n * @returns {boolean} 是否类似Promise对象\n * @example\n *\n * isPromiseLike([]);\n * => false\n *\n * isPromiseLike({then:()=>{}});\n * => true\n *\n * isPromiseLike(Promise.resolve());\n * => true\n */\nfunction isPromiseLike(obj) {\n return obj !== null && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';\n}\n\nexport default isPromiseLike;\n","import convertToString from './utils/convertToString';\n\n// 港澳居民来往内地通行证正则\nconst regHMCard = /^[hm]{1}([0-9]{10}|[0-9]{8})$/i;\n\n/**\n * 检测值是否为港澳居民来往内地通行证,俗称回乡证或回乡卡。\n *\n * @static\n * @alias module:Validator.isHMCard\n * @since 4.0.0\n * @see 参考 {@link https://zh.wikipedia.org/wiki/港澳居民来往内地通行证|港澳居民来往内地通行证}\n * @param {*} value 要检测的值\n * @returns {boolean} 是否为港澳居民来往内地通行证\n * @example\n * // 第一代 11 位\n * isHMCard('h3203117707') // true\n * isHMCard('H3203117707') // true\n * isHMCard('m3203117707') // true\n * isHMCard('M3203117707') // true\n *\n * // 第二代 9 位\n * isHMCard('h32031177') // true\n * isHMCard('H32031177') // true\n * isHMCard('m32031177') // true\n * isHMCard('M32031177') // true\n */\nfunction isHMCard(value) {\n const valueStr = convertToString(value);\n return regHMCard.test(valueStr);\n}\n\nexport default isHMCard;\n","import convertToString from './utils/convertToString';\n\n// 台湾居民来往大陆通行证正则,支持一次性短期台胞证\nconst regTWCard = /^(\\d{8}|[\\da-z]{10})$/i;\n\n/**\n * 检测值是否为台湾居民来往大陆通行证,俗称台胞证。\n *\n * @static\n * @alias module:Validator.isTWCard\n * @since 4.0.0\n * @see 参考 {@link https://zh.wikipedia.org/wiki/台湾居民来往大陆通行证|台湾居民来往大陆通行证}\n * @param {*} value 要检测的值\n * @returns {boolean} 是否为台湾居民来往大陆通行证\n * @example\n * isTWCard('12345678') // true\n * isTWCard('07257456') // true\n *\n * // 一次性短期\n * isTWCard('F290299977') // true\n */\nfunction isTWCard(value) {\n const valueStr = convertToString(value);\n return regTWCard.test(valueStr);\n}\n\nexport default isTWCard;\n","// 最大安全数字\nexport const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;\n// 最小安全数字\nexport const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;\n","/**\n * 参考: https://github.com/nefe/number-precision/blob/master/src/index.ts\n *\n * 解决浮动运算问题,避免小数点后产生多位数和计算精度损失。\n * 问题示例:2.3 + 2.4 = 4.699999999999999,1.0 - 0.9 = 0.09999999999999998\n */\n\nimport { MAX_SAFE_INTEGER, MIN_SAFE_INTEGER } from './constants';\nimport { config } from './config';\n\n/**\n * 是否为科学计数法数字\n *\n * @param {string} num 检查值\n * @returns {boolean}\n */\nexport function isScientificNumber(num) {\n return /\\d+\\.?\\d*e[\\+\\-]*\\d+/i.test(num);\n}\n\n/**\n * 把错误的数据转正\n *\n * @param {number} num 输入数\n * @param {number} [precision=12] 小数点的精度\n * @returns {number}\n * @example\n *\n * strip(0.09999999999999998)=0.1\n */\nexport function strip(num, precision = 12) {\n return +parseFloat(num.toPrecision(precision));\n}\n\n/**\n * 计算数字的小数点长度,支持科学记数法\n *\n * @param {number|string} num 输入数\n * @returns {number} 小数点长度\n */\nexport function digitLength(num) {\n // Get digit length of e\n const eSplit = num.toString().split(/e/i);\n const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);\n return len > 0 ? len : 0;\n}\n\n/**\n * 把小数转成整数,支持科学计数法。如果是小数则放大成整数\n *\n * @param {number|string} num 输入数\n * @returns {number}\n */\nexport function float2Fixed(num) {\n if (!isScientificNumber(num.toString())) {\n return Number(num.toString().replace('.', ''));\n }\n const dLen = digitLength(num);\n return dLen > 0 ? strip(+num * Math.pow(10, dLen)) : +num;\n}\n\n/**\n * 检测数字是否越界,如果越界给出提示\n * @param {number} num 输入数\n * @returns\n */\nexport function checkBoundary(num) {\n if (+num > MAX_SAFE_INTEGER || +num < MIN_SAFE_INTEGER) {\n if (!config.disableWarning) {\n console.warn(`${num} is beyond boundary when transfer to integer, the results may not be accurate`);\n }\n }\n}\n\n/**\n * 去掉左边数字0\n *\n * @param {string} num 数字字符串\n * @returns {string}\n */\nexport function trimLeftZero(num) {\n const reg = /^([+-])?(0+)([0-9\\.]+)$/;\n const result = reg.exec(num);\n\n let sign;\n\n if (result) {\n sign = result[1] || '';\n return sign + (result[3][0] === '.' ? '0' + result[3] : result[3]);\n }\n\n return num;\n}\n\n/**\n * 科学计数法转换成普通数字\n *\n * JavaScript在以下情景会自动将数值转换为科学计数法:\n * 1.小数点前的数字个数大于等于22位\n * 2.小数点前边是0,小数点后十分位(包含十分位)之后连续零的个数大于等于6个\n *\n * @param {string | number} num 科学计数法数字\n * @returns {string} 转换后的数字字符串\n */\nexport function scientificToNumber(num) {\n if (isScientificNumber(num.toString())) {\n const zero = '0';\n const parts = String(num).toLowerCase().split('e');\n const e = parts.pop(); // 存储指数\n // @ts-ignore\n const l = Math.abs(e); // 取绝对值,l-1就是0的个数\n // @ts-ignore\n const sign = e / l; //判断正负\n const coeff_array = parts[0].split('.'); // 将系数按照小数点拆分\n\n //如果是小数\n if (sign === -1) {\n //拼接字符串,如果是小数,拼接0和小数点\n num = zero + '.' + new Array(l).join(zero) + coeff_array.join('');\n } else {\n const dec = coeff_array[1];\n\n //如果是整数,将整数除第一位之外的非零数字计入位数,相应的减少0的个数\n if (l - dec.length < 0) {\n num = trimLeftZero(coeff_array[0] + dec.substring(0, l)) + '.' + dec.substring(l);\n } else {\n //拼接字符串,如果是整数,不需要拼接小数点\n num = coeff_array.join('') + new Array(l - dec.length + 1).join(zero);\n }\n }\n }\n // @ts-ignore\n return num;\n}\n","import isType from './isType';\n\n/**\n * 检查值是否为NaN\n *\n * @static\n * @alias module:Type.isNaN\n * @since 1.1.0\n * @param {*} value 检查值\n * @returns {boolean} 是否为NaN\n * @example\n *\n * isNaN(NaN)\n * // => true\n *\n * isNaN(1)\n * // => false\n */\nfunction _isNaN(value) {\n return isType(value, 'Number') && isNaN(value);\n}\n\nexport default _isNaN;\n","import { checkBoundary, scientificToNumber, isScientificNumber } from './utils/math.util';\nimport isNaN from './utils/type/isNaN';\nimport { trimLeftZero } from './utils/math.util';\nimport { config } from './utils/config';\n\nconst reg = /^[+-]?\\d*\\.?\\d*$/;\n\n/**\n * 检查数字或数字字符串\n *\n * @private\n * @param {string} num\n * @returns 是否为数字\n */\nfunction checkNumber(num) {\n if (!(reg.test(num) || isScientificNumber(num)) || isNaN(num) || (typeof num !== 'number' && typeof num !== 'string') || num === '') {\n if (!config.disableWarning) {\n console.warn(`${num} invalid parameter.`);\n }\n\n return false;\n }\n\n // 数字超限如果不是是字符串,可能有异常\n // 如 1111111111111111111111 // => 1.1111111111111111e+21\n if (typeof num === 'number') {\n checkBoundary(num);\n }\n\n return true;\n}\n\n/**\n * 格式化整数部分\n *\n * @private\n * @param {string} intStr 数字字符串\n * @param {string} thousand 千分位符号\n * @returns 格式化后的值\n */\nfunction formatInt(intStr, thousand) {\n let txt = '';\n intStr = trimLeftZero(intStr);\n intStr = intStr[0] === '+' ? intStr.substring(1) : intStr; // 去掉+符号\n const negativeSymbol = Number(intStr) < 0 ? '-' : '';\n const reArr = negativeSymbol ? intStr.substring(1).split('').reverse() : intStr.split('').reverse();\n\n for (let i = 0; i < reArr.length; i++) {\n txt += reArr[i] + ((i + 1) % 3 === 0 && i + 1 !== reArr.length ? thousand : '');\n }\n\n return negativeSymbol + txt.split('').reverse().join('');\n}\n\n/**\n * 格式化小数部分,如果使用 toFixed,超大额数字会自动被截断\n *\n * @private\n * @param {string} decStr 小数点部分的字符串\n * @param {number} precision 保留位数\n * @param {string} decimal 小数点符号\n * @returns 格式化后的值\n */\nfunction formatDec(decStr, precision, decimal) {\n if (precision === 0) {\n return '';\n }\n\n const zero = 0;\n let ret = '';\n\n if (decStr && Number(decStr) > 0) {\n let tmpNum = parseFloat('0.' + decStr);\n ret = tmpNum.toFixed(precision).substring(2);\n } else {\n ret = zero.toFixed(precision).substring(2);\n }\n\n return decimal + ret;\n}\n\n/**\n * 格式化金额\n *\n * @static\n * @alias module:Processor.formatMoney\n * @since 1.1.0\n * @param {string | number} num 需转换金额 (最大:9007199254740991 最小: -9007199254740991)\n * @param {Object} [options] - 金额格式化配置\n * @param {string | number} [options.precision=2] - 保留位数 (最高:10位)\n * @param {string} [options.symbol] - 货币符号\n * @param {string} [options.thousand=\",\"] - 千分位符号\n * @param {string} [options.decimal=\".\"] - 小数位符号\n * @returns {string} 格式化的金额\n * @example\n *\n * // 整数\n * formatMoney('1000');\n * // => 1,000.00\n *\n * // 小数(默认保留2位小数)\n * formatMoney('3000.03');\n * // => 3,000.03\n *\n * // 保留4位小数\n * formatMoney('3000.0300', { precision: 4 });\n * // => 3,000.0300\n *\n * // 保留10位小数\n * formatMoney('1500.2', { precision: 10 });\n * // => 1,500.2000000000\n *\n * // 自定义单位符号\n * formatMoney(1000.00, { symbol: '$' });\n * // => $1,000.00\n *\n * // 自定义千位分割符(默认',')\n * formatMoney(1000.00, { thousand: '|' });\n * // => 1|000.00\n *\n * // 自定义小数位分割符(默认'.')\n * formatMoney(1000.00, { decimal: '&' });\n * // => 1,000&00\n */\nconst formatMoney = (num, { precision = 2, symbol, thousand = ',', decimal = '.' } = {}) => {\n // 数字参数不正确,返回空字符串\n // @ts-ignore\n if (!checkNumber(num)) {\n return '';\n }\n\n // 参数规整化\n if (typeof precision !== 'number' || isNaN(precision) || precision < 0) {\n precision = 2;\n } else if (precision > 10) {\n precision = 10;\n }\n symbol = typeof symbol === 'string' ? symbol : '';\n thousand = typeof thousand === 'string' ? thousand : ',';\n decimal = typeof decimal === 'string' ? decimal : '.';\n\n // 转换数字字符串,支持科学记数法\n const numStr = scientificToNumber(num) + '';\n // 整数和小数部分\n const [intStr, decStr] = numStr.split('.');\n\n return symbol + formatInt(intStr, thousand) + formatDec(decStr, precision, decimal);\n};\n\nexport default formatMoney;\n","/**\n * 检查值是否为Undefined\n *\n * @static\n * @alias module:Type.isUndefined\n * @since 1.1.0\n * @param {*} value 检查值\n * @returns {boolean} 是否为Undefined\n * @example\n *\n * isUndefined(undefined)\n * // => true\n *\n * isUndefined(void 0)\n * // => true\n *\n * isUndefined(null)\n * // => false\n */\nfunction isUndefined(value) {\n return value === void 0;\n}\n\nexport default isUndefined;\n","/**\n * 检查值是否为Null\n *\n * @static\n * @alias module:Type.isNull\n * @since 1.1.0\n * @param {*} value 检查值\n * @returns {boolean} 是否为Null\n * @example\n *\n * isNull(null)\n * // => true\n *\n * isNull(void 0)\n * // => false\n */\nfunction isNull(value) {\n return value === null;\n}\n\nexport default isNull;\n","import isUndefined from './isUndefined';\nimport isNull from './isNull';\n\n/**\n * 检查值是否为 undefined 或 null\n *\n * @static\n * @alias module:Type.isNaN\n * @since 4.3.0\n * @param {*} value 检查值\n * @returns {boolean} 是否为 undefined 或 null\n */\nfunction isNil(value) {\n return isUndefined(value) || isNull(value);\n}\n\nexport default isNil;\n","import isNil from './utils/type/isNil';\nimport convertToString from './utils/convertToString';\n\n/**\n * 规整化字符串。如果值为 undefined 或 null 将转为空字符串,如果值不是字符串类型将转为字符串。\n *\n * @static\n * @alias module:Processor.normalizeString\n * @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String#string_instances|String}\n * @since 4.3.0\n * @param {*} value 待处理的值\n * @returns {string} 规整化的值\n * @example\n * normalizeString(); // ''\n * normalizeString(undefined); // ''\n * normalizeString(void 0); // ''\n * normalizeString(null); // ''\n *\n * normalizeString(true); // 'true'\n * normalizeString(NaN); // 'NaN'\n * normalizeString(1); // '1'\n * normalizeString('a'); // 'a'\n */\nfunction normalizeString(value) {\n if (isNil(value)) {\n return '';\n }\n return convertToString(value);\n}\n\nexport default normalizeString;\n","import normalizeString from './normalizeString';\n\n/**\n * 格式化银行卡号\n *\n * @static\n * @alias module:Processor.formatBankCard\n * @since 1.1.0\n * @param {string} bankCardNo 要处理的字符串\n * @param {Object} [options] 配置项\n * @param {string} [options.char=\" \"] 间隔字符\n * @param {number} [options.length=4] 间隔长度\n * @returns {string} 格式化的银行卡号\n * @example\n *\n * // 19位银行卡\n * formatBankCard('6228480402564890018');\n * // => 6228 4804 0256 4890 018\n *\n * // 16位银行卡\n * formatBankCard('6228480402564890');\n * // => 6228 4804 0256 4890\n *\n * // 脱敏银行卡\n * formatBankCard('6228********890');\n * // => 6228 **** **** 890\n *\n * // 16位银行卡,\"-\"间隔\n * formatBankCard('6228480402564890', {char: '-'});\n * // => 6228-4804-0256-4890\n *\n */\nfunction formatBankCard(bankCardNo = '', { char = ' ', length = 4 } = {}) {\n const reg = new RegExp(`(.{${length}})`, 'g');\n const regChar = new RegExp(`${char}`, 'g');\n\n const realValue = normalizeString(bankCardNo).replace(regChar, '');\n const str = realValue.replace(reg, `$1${char}`);\n\n return realValue.length % length === 0 ? str.substring(0, str.length - 1) : str;\n}\n\nexport default formatBankCard;\n","/**\n * 替换字符,应用场景如:脱敏\n *\n * @static\n * @alias module:Processor.replaceChar\n * @since 1.1.0\n * @param {string} str 要处理的字符串\n * @param {Object} [options] 配置项\n * @param {number} [options.start=3] 开始位置\n * @param {number} [options.end=-4] 结束位置\n * @param {string} [options.char=\"*\"] 替换字符\n * @param {number} [options.repeat] 替换字符的重复次数,默认为替换内容长度,可设置为固定值\n * @param {string} [options.exclude] 排除字符,如果指定排除项,repeat设置无效\n * @returns {string} 处理后的字符\n * @example\n *\n * // 手机号\n * replaceChar('13000000000');\n * // => 130****0000\n *\n * // 身份证\n * replaceChar('130701199310302288');\n * // => 130***********2288\n *\n * // 邮箱\n * const email = '12345@qq.com'\n * replaceChar(email, {start: 2, end: email.indexOf('@'), repeat: 4});\n * // => 12****@qq.com\n *\n * // 银行卡号\n * replaceChar('6228480402564890018', {start: 0, end: -4, repeat: 4});\n * // => ****0018\n *\n * // 带格式的银行卡号\n * replaceChar('6228 4804 0256 4890 018', {start: 4, end: -4, exclude: ' '});\n * // => 6228 **** **** **** 018\n *\n * // 用户名\n * replaceChar('林某某', {start: 1, end: Infinity, repeat: 2});\n * // => 林**\n * replaceChar('林某', {start: 1, end: Infinity, repeat: 2});\n * // => 林**\n * replaceChar('林某某某', {start: 1, end: Infinity, repeat: 2});\n * // => 林**\n *\n */\nfunction replaceChar(str = '', { start = 3, end = -4, char = '*', repeat, exclude } = {}) {\n const strLen = str.length;\n\n // 开始位置超过str长度\n if (Math.abs(start) >= strLen) {\n return str;\n }\n\n start = start >= 0 ? start : strLen + start;\n end = end >= 0 ? end : strLen + end;\n\n // 开始位置大于结束位置\n if (start >= end) {\n return str;\n }\n\n let middleStr = str.substring(start, end);\n\n if (exclude) {\n const reg = new RegExp(`[^${exclude}]`, 'g');\n middleStr = middleStr.replace(reg, char);\n } else {\n repeat = typeof repeat === 'number' && repeat >= 0 ? repeat : middleStr.length;\n middleStr = char.repeat(repeat);\n }\n\n return str.substring(0, start) + middleStr + str.substring(end);\n}\n\nexport default replaceChar;\n","import { checkBoundary } from './utils/math.util';\nimport { config } from './utils/config';\n\n// 简体\nconst chnNumberChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];\nconst chnUnitChar = ['', '十', '百', '千'];\n\n// 繁体\nconst big5NumberChar = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];\nconst big5UnitChar = ['', '拾', '佰', '仟'];\n\n// 数字字符、计数单位\n\n/**\n * @type {string[]}\n * @private\n */\nlet numberChar;\n\n/**\n * @type {string[]}\n * @private\n */\nlet unitChar;\n\n/**\n * @type {string[]}\n * @private\n */\nlet unitSection;\n\n/**\n * 每个小节的内部进行转化\n *\n * @private\n * @param {number} section 数字\n * @returns {string} 转化的数字\n */\nfunction sectionToChinese(section) {\n let str = '',\n chnstr = '',\n zero = false, //zero为是否进行补零, 第一次进行取余由于为个位数,默认不补零\n unitPos = 0;\n\n while (section > 0) {\n // 对数字取余10,得到的数即为个位数\n let v = section % 10;\n\n //如果数字为零,则对字符串进行补零\n if (v == 0) {\n if (zero) {\n //如果遇到连续多次取余都是0,那么只需补一个零即可\n zero = false;\n chnstr = numberChar[v] + chnstr;\n }\n } else {\n //第一次取余之后,如果再次取余为零,则需要补零\n zero = true;\n str = numberChar[v];\n str += unitChar[unitPos];\n chnstr = str + chnstr;\n }\n unitPos++;\n section = Math.floor(section / 10);\n }\n return chnstr;\n}\n\n/**\n * 转换整数\n *\n * @private\n * @param {number} num 要转换的数字\n * @returns {string} 中文数字\n */\nfunction convertInteger(num) {\n num = Math.floor(num);\n\n let unitPos = 0;\n let strIns = '',\n chnStr = '';\n let needZero = false;\n\n if (num === 0) {\n return numberChar[0];\n }\n while (num > 0) {\n var section = num % 10000;\n if (needZero) {\n chnStr = numberChar[0] + chnStr;\n }\n strIns = sectionToChinese(section);\n strIns += section !== 0 ? unitSection[unitPos] : unitSection[0];\n chnStr = strIns + chnStr;\n needZero = section < 1000 && section > 0;\n num = Math.floor(num / 10000);\n unitPos++;\n }\n return chnStr;\n}\n\n/**\n * 转换小数\n *\n * @private\n * @param {number} num 要转换的数字\n */\nfunction convertDecimal(num) {\n const numStr = num + '';\n const index = numStr.indexOf('.');\n\n let ret = '';\n\n if (index > -1) {\n let decimalStr = numStr.slice(index + 1);\n ret = mapNumberChar(parseInt(decimalStr));\n }\n\n return ret;\n}\n\n/**\n * 映射为中文数字\n *\n * @private\n * @param {number} num 要处理的数字\n * @returns {string} 返回中文数字的映射\n */\nfunction mapNumberChar(num) {\n const numStr = num + '';\n let ret = '';\n\n for (let i = 0, len = numStr.length; i < len; i++) {\n ret += numberChar[parseInt(numStr[i])];\n }\n\n return ret;\n}\n\n/**\n * 数字转中文数字\n * 不在安全数字 -9007199254740991~9007199254740991 内,处理会有异常\n *\n * @static\n * @alias module:Processor.numberToChinese\n * @since 1.2.0\n * @param {number} num 数字\n * @param {Object} [options] 配置项\n * @param {boolean} [options.big5=false] 繁体\n * @param {boolean} [options.unit=true] 计数单位\n * @param {string} [options.decimal=\"点\"] 中文小数点\n * @param {string} [options.zero=\"零\"] 设置0。常用配置 〇\n * @param {string} [options.negative=\"负\"] 负数前面的字\n * @param {Object} [options.unitConfig] 节点单位配置\n * @param {string} [options.unitConfig.w=\"万\"] 设置计数单位万。常用配置 萬\n * @param {string} [options.unitConfig.y=\"亿\"] 设置计数单位亿。常用配置 億\n * @returns {string} 中文数字\n * @example\n *\n * numberToChinese(100);\n * // => 一百\n *\n * numberToChinese(100.3);\n * // => 一百点三\n *\n * // 繁体\n * numberToChinese(100, {big5: true});\n * // => 壹佰\n *\n * numberToChinese(100.3, {big5: true});\n * // => 壹佰点叁\n *\n * numberToChinese(1234567890, {big5: true});\n * // => 壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾\n *\n * // 不带计数单位\n * numberToChinese(1990, {unit: false});\n * // => 一九九零\n *\n * // 不带计数单位,修改0\n * numberToChinese(1990, {unit: false, zero:'〇'});\n * // => 一九九〇\n *\n */\nfunction numberToChinese(\n num,\n {\n big5 = false,\n unit = true,\n decimal = '点',\n zero = '',\n negative = '负',\n unitConfig = {\n w: '万', // '萬'\n y: '亿' // '億'\n }\n } = {}\n) {\n // 非数字 或 NaN 不处理\n if (typeof num !== 'number' || isNaN(num)) {\n if (!config.disableWarning) {\n console.warn(`参数错误 ${num},请传入数字`);\n }\n\n return '';\n }\n\n // 超过安全数字提示\n checkBoundary(num);\n\n // 设置数字字符和计数单位\n if (big5) {\n numberChar = big5NumberChar.slice();\n unitChar = big5UnitChar.slice();\n } else {\n numberChar = chnNumberChar.slice();\n unitChar = chnUnitChar.slice();\n }\n\n // 设置节点计数单位,万、亿、万亿\n const defaultUnitWan = '万';\n const defaultUnitYi = '亿';\n unitSection = ['', unitConfig.w || defaultUnitWan, unitConfig.y || defaultUnitYi, unitConfig.w && unitConfig.y ? unitConfig.w + unitConfig.y : defaultUnitWan + defaultUnitYi];\n\n // 设置0\n if (zero) {\n numberChar[0] = zero;\n }\n\n // 前置字符,负数处理\n const preStr = num < 0 ? negative : '';\n\n // 整数和小数\n let chnInteger, chnDecimal;\n\n // 处理整数\n if (unit) {\n chnInteger = convertInteger(num);\n } else {\n chnInteger = mapNumberChar(Math.floor(num));\n }\n\n // 处理小数\n chnDecimal = convertDecimal(num);\n\n return chnDecimal ? `${preStr}${chnInteger}${decimal}${chnDecimal}` : `${preStr}${chnInteger}`;\n}\n\nexport default numberToChinese;\n","/**\n * 字节转换存储单位,保留2位小数点\n *\n * @static\n * @alias module:Processor.bytesToSize\n * @since 3.8.0\n * @param {number} bytes 字节大小\n * @returns {string} 存储单位值\n * @example\n *\n * bytesToSize(0);\n * // => 0 B\n *\n * bytesToSize(1024);\n * // => 1 KB\n *\n * bytesToSize(3.213243*1024*1024);\n * // => 3.21 MB\n *\n * bytesToSize(1024*1024*1024);\n * // => 1 GB\n */\nfunction bytesToSize(bytes) {\n if (bytes === 0) return '0 B';\n const k = 1024;\n // 存储单位\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return sizes[i] ? `${Number((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}` : bytes + '';\n}\n\nexport default bytesToSize;\n","import isIdCard from './isIdCard';\n\nconst regIdCard = /^(?<province>\\d{2})(?<city>\\d{2})(?<area>\\d{2})(?<year>(?:\\d{2})?\\d{2})(?<month>\\d{2})(?<day>\\d{2})\\d{2}(?<gender>\\d)(?:\\d|X)?$/i;\n\nconst Provinces = [\n // 华北地区:北京市|110000,天津市|120000,河北省|130000,山西省|140000,内蒙古自治区|150000\n ['11', '北京市'],\n ['12', '天津市'],\n ['13', '河北省'],\n ['14', '山西省'],\n ['15', '内蒙古自治区'],\n\n // 东北地区: 辽宁省|210000,吉林省|220000,黑龙江省|230000\n ['21', '辽宁省'],\n ['22', '吉林省'],\n ['23', '黑龙江省'],\n\n // 华东地区: 上海市|310000,江苏省|320000,浙江省|330000,安徽省|340000,福建省|350000,江西省|360000,山东省|370000\n ['31', '上海市'],\n ['32', '江苏省'],\n ['33', '浙江省'],\n ['34', '安徽省'],\n ['35', '福建省'],\n ['36', '江西省'],\n ['37', '山东省'],\n\n // 华中地区: 河南省|410000,湖北省|420000,湖南省|430000\n ['41', '河南省'],\n ['42', '湖北省'],\n ['43', '湖南省'],\n\n // 华南地区:广东省|440000,广西壮族自治区|450000,海南省|460000\n ['44', '广东省'],\n ['45', '广西壮族自治区'],\n ['46', '海南省'],\n\n // 西南地区:重庆市|500000,四川省|510000,贵州省|520000,云南省|530000,西藏自治区|540000\n ['50', '重庆市'],\n ['51', '四川省'],\n ['52', '贵州省'],\n ['53', '云南省'],\n ['54', '西藏自治区'],\n\n // 西北地区: 陕西省|610000,甘肃省|620000,青海省|630000,宁夏回族自治区|640000,新疆维吾尔自治区|650000\n ['61', '陕西省'],\n ['62', '甘肃省'],\n ['63', '青海省'],\n ['64', '宁夏回族自治区'],\n ['65', '新疆维吾尔自治区'],\n\n // 台湾地区:台湾省|710000\n // 台湾居民公民身份号码地址码为830000,参考 http://www.wanweibaike.com/wiki-中华人民共和国行政区划代码_(7区)、https://zh.wikipedia.org/wiki/港澳台居民居住证\n ['71', '台湾省'],\n ['83', '台湾省'],\n\n // 港澳地区:香港特别行政区|810000,澳门特别行政区|820000\n ['81', '香港特别行政区'],\n ['82', '澳门特别行政区']\n];\n\n// 第一位数字是以前的大区制代码。第二位是大区所在省市编码。全国共分为8个大区:华北(1)、东北(2)、华东(3)、中南(4)、西南(5)、西北(6)、台湾(7)和港澳(8)。\n// const Regions = [\n// ['1', '华北地区'],\n// ['2', '东北地区'],\n// ['3', '华东地区'],\n// ['4', '中南地区'],\n// ['5', '西南地区'],\n// ['6', '西北地区'],\n// ['7', '台湾地区'],\n// ['8', '港澳地区']\n// ];\n\n/**\n * @typedef {Object} IdCardOrigin - 解析身份证原数据\n * @property {string} province - 省份编码\n * @property {string} city - 城市编码\n * @property {string} area - 地区编码\n * @property {string} year - 出生年\n * @property {string} month - 出生月\n * @property {string} day - 出生日\n * @property {string} gender - 性别 能整除2为女,否则为男\n */\n\n/**\n * @typedef {Object} IdCardInfo - 身份证信息\n * @property {string} province - 省份\n * @property {string} birthday - 生日\n * @property {string} gender - 性别\n * @property {IdCardOrigin} origin - 解析身份证原数据\n */\n\n/**\n * 解析身份证号码,支持15、18位身份证号码\n *\n * @static\n * @alias module:Processor.parseIdCard\n * @since 4.0.0\n * @see 参考 {@link https://baike.baidu.com/item/居民身份证号码|居民身份证号码}\n * @param {string} id 身份证号码,支持15位\n * @returns {null|IdCardInfo} null 或 省份、生日、性别,省/市/区/年/月/日/性别编码\n * @example\n * parseIdCard('123456789123456');\n * // => null\n *\n * // 18位身份证号码\n * parseIdCard('130701199310302288')\n * // =>\n * {\n * birthday: \"1993-10-30\",\n * gender: \"女\",\n * origin: { province: \"13\", city: \"07\", area: \"01\", year: \"1993\", month: \"10\", day: \"30\", gender: \"8\" },\n * province: \"河北省\"\n * }\n *\n * // 15位身份证号码\n * parseIdCard('130701931030228');\n * // =>\n * {\n * birthday: \"93-10-30\",\n * gender: \"女\",\n * origin: { province: \"13\", city: \"07\", area: \"01\", year: \"93\", month: \"10\", day: \"30\", gender: \"8\" },\n * province: \"河北省\"\n * }\n *\n */\nfunction parseIdCard(id) {\n if (!isIdCard(id, { loose: true })) {\n return null;\n }\n\n const info = regIdCard.exec(id);\n\n if (!info) {\n return null;\n }\n\n /**\n * @type {{ province: string, city: string, area: string, year: string, month: string, day: string, gender: string }}\n *\n */\n let origin = {\n province: '',\n city: '',\n area: '',\n year: '',\n month: '',\n day: '',\n gender: ''\n };\n\n if (info.groups) {\n // @ts-ignore\n origin = info.groups;\n } else {\n origin = {\n province: info[1],\n city: info[2],\n area: info[3],\n year: info[4],\n month: info[5],\n day: info[6],\n gender: info[7]\n };\n }\n\n const province = Provinces.find((item) => item[0] === origin.province);\n\n if (!province) {\n return null;\n }\n\n const birthday = `${origin.year}-${origin.month}-${origin.day}`;\n const gender = Number(origin.gender) % 2 === 0 ? '女' : '男';\n // const region = Regions.find(item => item[0] === origin.province?.substring(0, 1));\n\n return {\n // region,\n province: province[1],\n birthday,\n gender,\n origin\n };\n}\n\nexport default parseIdCard;\n","// file、blob文件如何预览图片?\n// 方法1:将file或者blob类型文件转成base64数据,再作为src赋值给img标签\n// 方法2:使用 window.URL.createObjectURL(blob) 为blob、file 创建一个指向该参数对象的URL\n\n/**\n * 将 Blob 或 File 对象转成 data:URL 格式的 Base64 字符串。\n *\n * @static\n * @alias module:Processor.blobToDataURL\n * @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader/readAsDataURL|FileReader.readAsDataURL()}\n * @since 4.1.0\n * @param {Blob} blob Blob 或 File 对象\n * @returns {Promise<string>} data:URL 格式的 Base64 字符串。\n * @example\n * const aFileParts = ['<a id=\"a\"><b id=\"b\">hey!</b></a>']; // 一个包含DOMString的数组\n * const htmlBlob = new Blob(aFileParts, { type: 'text/html' }); // 得到 blob\n *\n * blobToDataURL(htmlBlob).then(data=>{\n * console.log(data); // data:text/html;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=\n * });\n *\n * const textBlob = new Blob(aFileParts, { type: 'text/plain' });\n *\n * blobToDataURL(textBlob).then(data=>{\n * console.log(data); // data:text/plain;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=\n * });\n */\nfunction blobToDataURL(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(blob);\n // @ts-ignore\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(error);\n });\n}\n\nexport default blobToDataURL;\n","/**\n * 将 DataURL 转为 Blob 对象\n *\n * @static\n * @alias module:Processor.dataURLToBlob\n * @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Glossary/Base64|Base64}\n * @since 4.1.0\n * @param {string} dataurl data: 协议的URL\n * @returns {Blob} Blob 对象\n * @example\n * const dataurl = 'data:text/html;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=';\n * dataURLToBlob(dataurl);\n */\nfunction dataURLToBlob(dataurl) {\n const arr = dataurl.split(',');\n // @ts-ignore\n const mime = arr[0].match(/:(.*?);/)[1];\n const bstr = atob(arr[1]);\n let n = bstr.length;\n const u8arr = new Uint8Array(n);\n\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], { type: mime });\n}\n\nexport default dataURLToBlob;\n","/**\n * 设置 DataURL 前缀、MIME 类型、base64 标识。<br/>\n * 如果你需要获取DataURL 的 MIME 类型和数据本身,推荐使用 <a href=\"https://www.npmjs.com/package/data-urls\">data-urls</a>。\n *\n * @static\n * @alias module:Processor.setDataURLPrefix\n * @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Data_URIs|Data URLs}\n * @see 参考 {@link https://mimesniff.spec.whatwg.org/#understanding-mime-types|MIME types}\n * @since 4.1.0\n * @param {string} data 数据本身\n * @param {string} [mimetype=\"image/png\"] MIME 类型\n * @param {boolean} [base64=true] 添加 base64 标识\n * @returns {string} DataURL 格式的字符串\n * @example\n * const data = 'PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=';\n * setDataURLPrefix(data); // data:image/png;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=\n * setDataURLPrefix(data, 'image/png', false); // data:image/png,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=\n * setDataURLPrefix(data, 'image/jpg'); // data:image/jpg;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=\n * setDataURLPrefix(data, 'text/html'); // data:text/html;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=\n * setDataURLPrefix(data, ''); // data:;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=\n * setDataURLPrefix(data, '', false); // data:,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=\n */\nfunction setDataURLPrefix(data, mimetype = 'image/png', base64 = true) {\n return `data:${mimetype}${base64 ? ';base64' : ''},${data}`;\n}\n\nexport default setDataURLPrefix;\n","import isNil from './utils/type/isNil';\n\n// TODO: 函数重载,类型参照 Date\n\n/**\n * 创建一个 Date 实例日期对象,同 new Date() 。<br/>\n * 规避了苹果设备浏览器不支持部分格式(YYYY-MM-DD HH-mm 或 YYYY.MM.DD)。\n *\n * @static\n * @alias module:Processor.safeDate\n * @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date|Date}\n * @since 4.4.0\n * @param {string|number|Date} [value] 日期时间字符串、毫秒数、日期对象\n * @param {...number} args 月/日/时/分/秒/毫秒\n * @returns {Date} Date 实例日期对象\n * @example\n * safeDate('2022-1-1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)\n * safeDate('2022/1/1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)\n * safeDate('2022.1.1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)\n * safeDate('2022.1.1 11:11'); // Sat Jan 01 2022 11:11:00 GMT+0800 (中国标准时间)\n * safeDate(99, 1); // Mon Feb 01 1999 00:00:00 GMT+0800 (中国标准时间)\n * safeDate(1646711233171); // Tue Mar 08 2022 11:47:13 GMT+0800 (中国标准时间)\n *\n */\nfunction safeDate(value, ...args) {\n const safeValue = typeof value === 'string' ? value.replace(/[\\\\.-]/g, '/') : value;\n\n if (args && args.length > 0) {\n // @ts-ignore\n return new Date(safeValue, ...args);\n }\n\n // @ts-ignore\n return isNil(safeValue) ? new Date() : new Date(safeValue);\n}\n\nexport default safeDate;\n","import normalizeString from './normalizeString';\n\n/**\n * 格式化手机号码\n *\n * @static\n * @alias module:Processor.formatMobile\n * @since 4.5.0\n * @param {string} mobileNo 手机号码\n * @param {object} [options] 配置项\n * @param {string} [options.char=' '] 间隔字符\n * @returns {string} 格式化后的手机号码\n * @example\n * formatMobile('13345678900') // '133 4567 8900'\n * formatMobile('13345678900', { char: '-' }) // '133-4567-8900'\n *\n * // 脱敏手机号码\n * formatMobile('133****1234') // '133 **** 1234'\n * formatMobile('133****1234', { char: '-' }) // '133-****-1234'\n *\n * // 手机号码位数不够\n * formatMobile('133') // '133'\n * formatMobile('133456') // '133 456'\n * formatMobile('13345678') // '133 4567 8'\n */\nfunction formatMobile(mobileNo, { char = ' ' } = {}) {\n const regChar = new RegExp(char, 'g');\n const realValue = normalizeString(mobileNo).replace(regChar, '').substring(0, 11);\n\n if (realValue.length > 7) {\n return realValue.replace(/^(...)(....)/g, `$1${char}$2${char}`);\n }\n if (realValue.length > 3) {\n return realValue.replace(/^(...)/g, `$1${char}`);\n }\n return realValue;\n}\n\nexport default formatMobile;\n","import normalizeString from './normalizeString';\n\n/**\n * 前置补零\n *\n * @static\n * @alias module:Processor.padZero\n * @since 4.7.0\n * @param {string|number} value 要处理的值\n * @param {number} [size=2] 指定字符串长度\n * @returns {string} 用零填充数字到给定长度的字符串\n * @example\n * padZero(5); // '05'\n * padZero('5'); // '05'\n *\n * padZero(12); // '12'\n * padZero('12'); // '12'\n *\n * padZero(688); // '688'\n * padZero('688'); // '688'\n *\n * padZero(688, 5); // '00688'\n * padZero('688', 5); // '00688'\n */\nfunction padZero(value, size = 2) {\n const str = normalizeString(value);\n const len = str.length;\n\n if (typeof size !== 'number' || size < 0) {\n size = 0;\n }\n\n if (len < size) {\n return '0'.repeat(size - len) + str;\n }\n return str;\n}\n\nexport default padZero;\n","import isType from './isType';\n\n/**\n * 检查值是否为Number\n *\n * @static\n * @alias module:Type.isNumber\n * @since 1.1.0\n * @param {*} value 检查值\n * @returns {boolean} 是否为Number\n * @example\n *\n * isNumber(1)\n * // => true\n *\n * isNumber(Number.MIN_VALUE)\n * // => true\n *\n * isNumber(Infinity)\n * // => true\n *\n * isNumber(NaN)\n * // => true\n *\n * isNumber('1')\n * // => false\n */\nfunction isNumber(value) {\n return isType(value, 'Number');\n}\n\nexport default isNumber;\n","import { digitLength, float2Fixed, checkBoundary } from './utils/math.util';\nimport { isNumber, isNaN, isString } from './utils/type';\n\n/**\n * 精确乘法,支持多个数相乘\n *\n * @static\n * @alias module:Math.times\n * @since 3.1.0\n * @param {...number|string} nums 相乘的数\n * @returns {number} 乘积\n * @example\n *\n * times(3, 0.6);\n * // => 1.8\n *\n * times(3, 0.6, 2);\n * // => 3.6\n *\n * times(3, 0.6, 2, 10);\n * // => 36\n */\nfunction times(...nums) {\n const [num1, num2, ...rest] = nums;\n if (rest.length > 0) {\n return times(times(num1, num2), ...rest);\n }\n\n // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数\n if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {\n // @ts-ignore\n return num1;\n }\n\n const num1Changed = float2Fixed(num1);\n const num2Changed = float2Fixed(num2);\n const baseNum = digitLength(num1) + digitLength(num2);\n const leftValue = num1Changed * num2Changed;\n\n checkBoundary(leftValue);\n\n return leftValue / Math.pow(10, baseNum);\n}\n\nexport default times;\n","import { digitLength } from './utils/math.util';\nimport times from './times';\nimport { isNumber, isNaN, isString } from './utils/type';\n\n/**\n * 精确加法,支持多个数相加\n *\n * @static\n * @alias module:Math.plus\n * @since 3.1.0\n * @param {...number|string} nums 相加的数\n * @returns {number} 总和\n * @example\n *\n * plus(0.1, 0.2);\n * // => 0.3\n *\n * plus(0.1, 0.2, 0.3);\n * // => 0.6\n *\n * plus(0.1, 0.2, 0.3, 0.4);\n * // => 1\n */\nfunction plus(...nums) {\n const [num1, num2, ...rest] = nums;\n\n if (rest.length > 0) {\n return plus(plus(num1, num2), ...rest);\n }\n\n // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数\n if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {\n // @ts-ignore\n return num1;\n }\n\n const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));\n return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;\n}\n\nexport default plus;\n","import { digitLength } from './utils/math.util';\nimport times from './times';\nimport { isNumber, isNaN, isString } from './utils/type';\n\n/**\n * 精确减法,支持多个数相减\n *\n * @static\n * @alias module:Math.minus\n * @since 3.1.0\n * @param {...number|string} nums 相减的数\n * @returns {number} 差\n * @example\n *\n * minus(1, 0.9);\n * // => 0.1\n *\n * minus(1, 0.9, 0.02);\n * // => 0.08\n *\n * minus(1, 0.9, 0.02, 0.08);\n * // => 0\n */\nfunction minus(...nums) {\n const [num1, num2, ...rest] = nums;\n\n if (rest.length > 0) {\n return minus(minus(num1, num2), ...rest);\n }\n\n // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数\n if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {\n // @ts-ignore\n return num1;\n }\n\n const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));\n return (times(num1, baseNum) - times(num2, baseNum)) / baseNum;\n}\n\nexport default minus;\n","import { strip, digitLength, float2Fixed, checkBoundary } from './utils/math.util';\nimport times from './times';\nimport { isNumber, isNaN, isString } from './utils/type';\n\n/**\n * 精确除法,支持多个数相除\n *\n * @static\n * @alias module:Math.divide\n * @since 3.1.0\n * @param {...number|string} nums 除数和被除数\n * @returns {number} 商数\n * @example\n *\n * divide(1.21, 1.1);\n * // => 1.1\n *\n * divide(1000, 10, 10);\n * // => 10\n *\n * divide(1000, 10, 10, 10);\n * // => 1\n */\nfunction divide(...nums) {\n const [num1, num2, ...rest] = nums;\n\n if (rest.length > 0) {\n return divide(divide(num1, num2), ...rest);\n }\n\n // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数\n if ((!isNumber(num2) || isNaN(num2)) && !isString(num2)) {\n // @ts-ignore\n return num1;\n }\n\n const num1Changed = float2Fixed(num1);\n const num2Changed = float2Fixed(num2);\n checkBoundary(num1Changed);\n checkBoundary(num2Changed);\n // fix: 类似 10 ** -4 为 0.00009999999999999999,strip 修正\n return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1))));\n}\n\nexport default divide;\n","import divide from './divide';\nimport times from './times';\n\n/**\n * 四舍五入,支持设置精度\n *\n * @static\n * @alias module:Math.round\n * @since 3.1.0\n * @param {number|string} num 要四舍五入的数字\n * @param {number} [precision=0] 四舍五入的精度\n * @returns {number} 四舍五入的数字\n * @example\n *\n * round(4.006);\n * // => 4\n *\n * round(4.006, 2);\n * // => 4.01\n *\n * round(4060, -2);\n * // => 4100\n */\nfunction round(num, precision = 0) {\n const base = Math.pow(10, precision);\n return divide(Math.round(times(num, base)), base);\n}\n\nexport default round;\n","/**\n * 等待时间返回 Promise 。常用于异步方法中延时。\n *\n * @static\n * @alias module:Other.waitTime\n * @since 4.2.0\n * @param {number} [time=1000] 延时时间,单位毫秒\n * @returns {Promise<void>}\n * @example\n * const test = async ()=>{\n * await waitTime();\n * // do something\n * }\n *\n * waitTime(500).then(()=>{\n * // do something\n * })\n */\nfunction waitTime(time = 1000) {\n return new Promise((resolve) => {\n setTimeout(resolve, time);\n });\n}\n\nexport default waitTime;\n","import normalizeString from './normalizeString';\n\n// ref: https://github.com/ant-design/ant-design-mobile/blob/v2/components/input-item/index.tsx#L240\n\n/**\n * 计算输入框的值格式化后光标位置\n *\n * @static\n * @alias module:Other.calculateCursorPosition\n * @since 4.6.0\n * @see 格式化手机号码 {@link https://doly-dev.github.io/util-helpers/module-Processor.html#.formatMobile|formatMobile}\n * @see 格式化银行卡号 {@link https://doly-dev.github.io/util-helpers/module-Processor.html#.formatBankCard|formatBankCard}\n * @see h5示例 {@link https://2950v9.csb.app/|点击查看}\n * @see react示例 {@link https://33ccy9.csb.app/|点击查看}\n * @param {number} prevPos 赋值前的光标位置,onChange/onInput的光标位置 e.target.selectionEnd\n * @param {string} prevCtrlValue 上一个格式化后的值\n * @param {string} rawValue 当前输入原值\n * @param {string} ctrlValue 当前格式化后的值\n * @param {Object} [options] 配置项\n * @param {string[]|string} [options.placeholderChar=' '] 占位符\n * @param {RegExp} [options.maskReg=/\\D/g] 需要遮盖的字符规则。默认去掉非数字,意味着 ctrlValue 需要去掉非数字。\n * @param {'mobile'|'bankCard'} [options.type] 格式化类型,内置手机号码和银行卡号特殊处理\n * @returns {number} 格式化后的光标位置\n */\nfunction calculateCursorPosition(prevPos, prevCtrlValue, rawValue, ctrlValue, { placeholderChar = ' ', maskReg = /\\D/g, type } = {}) {\n const realCtrlValue = normalizeString(prevCtrlValue);\n const realRawValue = normalizeString(rawValue);\n const placeholderChars = Array.isArray(placeholderChar) ? placeholderChar : [placeholderChar];\n\n const editLength = realRawValue.length - realCtrlValue.length;\n const isAddition = editLength > 0;\n\n let pos = prevPos;\n\n if (isAddition) {\n const additionStr = realRawValue.substring(pos - editLength, pos);\n let ctrlCharCount = additionStr.replace(maskReg, '').length;\n pos -= editLength - ctrlCharCount;\n\n let placeholderCharCount = 0;\n while (ctrlCharCount > 0) {\n if (placeholderChars.indexOf(ctrlValue.charAt(pos - ctrlCharCount + placeholderCharCount)) !== -1) {\n placeholderCharCount++;\n } else {\n ctrlCharCount--;\n }\n }\n pos += placeholderCharCount;\n }\n\n if ((type === 'mobile' && (pos === 4 || pos === 9)) || (type === 'bankCard' && pos > 0 && pos % 5 === 0)) {\n pos -= 1;\n }\n\n return pos;\n}\n\nexport default calculateCursorPosition;\n","const numberChars = '0123456789';\nconst letterChars = 'abcdefghijklmnopqrstuvwxyz';\nconst defaultChars = numberChars + letterChars + letterChars.toUpperCase();\n\n/**\n * @private\n * @param {number} [len=0] 长度\n * @param {string} [optionalChars] 允许的字符,默认为数字和大小写字母\n * @param {string} [prefix=''] 前缀部分,不计入长度\n * @returns {string}\n */\nfunction internalRandomString(len = 0, optionalChars = defaultChars, prefix = '') {\n while (len-- > 0) {\n const r = optionalChars[Math.floor(Math.random() * optionalChars.length)];\n return internalRandomString(len, optionalChars, prefix + r);\n }\n return prefix;\n}\n\n/**\n * 生成随机字符串\n *\n * @static\n * @alias module:Other.randomString\n * @since 4.8.0\n * @param {number} [len=0] 长度\n * @param {string} [optionalChars] 允许的字符,默认为数字和大小写字母\n * @returns {string} 随机字符串\n * @example\n * randomString(5); // slk23\n * randomString(8); // 71mHqo2A\n *\n * // 自定义允许的字符\n * randomString(5, 'abc'); // ccbcb\n * randomString(8, 'abcefg'); // bcgcfabg\n */\nfunction randomString(len = 0, optionalChars) {\n let realLen = typeof len === 'number' ? len : Number(len);\n if (isNaN(realLen)) {\n realLen = 0;\n }\n\n const realChars = typeof optionalChars === 'string' && optionalChars ? optionalChars : defaultChars;\n\n return internalRandomString(len, realChars);\n}\n\nexport default randomString;\n"],"names":["reg","regIdCard","baseReg","sumCheckCode","isNaN"],"mappings":"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AAK;EACL,IAAI,OAAO,GAAG,CAAC;EACf,GAAG,CAAC,CAAC;EACL,EAAE,OAAO,GAAG,CAAC;EACb,CAAC;AACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;AACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,gBAAgB,CAAC,KAAK,EAAE,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,GAAG,KAAK,EAAE,OAAO,GAAG,8CAA8C,EAAE,GAAG,EAAE,EAAE;EACnI,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC;AACrB;EACA,EAAE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;EACjC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;EAChC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC;EACjE,KAAK;EACL,IAAI,MAAM,GAAG,EAAE,CAAC;EAChB,GAAG;AACH;EACA,EAAE,IAAI,YAAY,GAAG,CAAC,CAAC;AACvB;EACA;EACA,EAAE,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;EAC5C;EACA,EAAE,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;EAC9D;EACA,EAAE,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;EAC9D;EACA,EAAE,MAAM,yBAAyB,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;EACzE;EACA,EAAE,MAAM,6BAA6B,GAAG,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"}
@@ -1,2 +1,2 @@
1
- !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).utilHelpers={})}(this,(function(t){"use strict";const n=Object.prototype.toString;function e(t,e){return n.call(t)===`[object ${e}]`}function r(t){return e(t,"String")}function o(t){return r(t)?t:String(t)}const i=/^1[3456789]\d{9}$/;const s=/^(0\d{2,3}\-)?([2-9]\d{6,7})(\-\d{1,6})?$/;const u=/^\d{6}$/;const c=/^[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 a(t,{loose:n=!1,checkCode:e=!0}={}){const r=o(t);return 15===r.length&&n?c.test(r):!(18!==r.length||!c.test(r))&&(!e||function(t){let n,e,r;for(e=n=0;n<17;n++)e+=Math.pow(2,17-n)%11*Number(t[n]);return r=(12-e%11)%11,r<10?r===Number(t[17]):"X"==t[17]}(r))}const d=/^[\da-z]+([\-\.\_]?[\da-z]+)*@[\da-z]+([\-\.]?[\da-z]+)*(\.[a-z]{2,})+$/i;const l=/^[1-9]\d{4,10}$/;const f=/^[a-z]([-_a-z0-9]{5,19})+$/i;const g=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([A-Z0-9]{4}[A-Z0-9挂学警港澳]{1})|([A-Z0-9]{5}[DF])|([DF][A-Z0-9]{5}))$/;const p=/^[1-9]\d{9,20}$/,h=/^\d{8,30}$/;const b=/^[\dA-HJ-NPQRTUWXY]{2}\d{6}[\dA-HJ-NPQRTUWXY]{10}$/,$="0123456789ABCDEFGHJKLMNPQRTUWXY".split(""),m=[1,3,9,27,19,26,16,17,20,29,25,13,8,24,10,30,28];function y(t){let n;return $.some(((e,r)=>e===t&&(n=r,!0))),n}const w={disableWarning:!0};const A=/[\d]/,x=/[a-z]/,F=/[A-Z]/,M=/[\d|a-z]/gi;function v(t){return t.indexOf("\\x")>-1||t.indexOf("\\u")>-1}function C(t,{level:n=2,ignoreCase:e=!1,special:r="\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E"}={}){let o=t;"string"!=typeof t&&(w.disableWarning||console.warn("[validatePassword] value must be a string."),o="");let i=0;const s=(u=o,A.test(u));var u;const c=function(t){return x.test(t)}(o),a=function(t){return F.test(t)}(o),d=function(t,n=""){if(!n)return!1;const e=t.replace(M,""),r=v(n)?new RegExp(`[${n}]`):null;if(r)return r.test(e);let o=!1;return e.split("").some((t=>(n.indexOf(t)>-1&&(o=!0),o))),o}(o,r),l=function(t,n=""){const e=t.replace(M,"");if(!n&&e)return!0;const r=v(n)?new RegExp(`[^${n}]`):null;if(r)return r.test(e);let o=!1;return e.split("").some((t=>(-1===n.indexOf(t)&&(o=!0),o))),o}(o,r);s&&(i+=1),e?(c||a)&&(i+=1):(c&&(i+=1),a&&(i+=1)),d&&(i+=1);return{validated:i>=n&&!l,level:i,containes:{number:s,lowerCaseLetter:c,upperCaseLetter:a,specialCharacter:d,unallowableCharacter:l}}}const N=/^((e[\da-z])|(de)|(se)|(pe)|(k[\da-z])|(kj)|(ma))[\da-z]{7}$/i;const B="[一-龥]",E="[麦-鿯]",P="[㐀-䶵]",R="[𠀀-𪛖]",z="[𪜀-𫜴]",T="[𫝀-𫠝]",S="[𫠠-𬺡]",D="[𬺰-𮯠]";let W=B+"+",j="^"+B+"+$";const Z=RegExp.prototype.hasOwnProperty("unicode");Z&&(W="(?:"+B+"|"+E+"|"+P+"|"+R+"|"+z+"|"+T+"|"+S+"|"+D+")+",j="^(?:"+B+"|"+E+"|"+P+"|"+R+"|"+z+"|"+T+"|"+S+"|"+D+")+$");const L=/^((\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])$/;const _=/^((([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;const I=/(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;const O=/^\d{15}$/;const U=/^[hm]{1}([0-9]{10}|[0-9]{8})$/i;const k=/^(\d{8}|[\da-z]{10})$/i;const X=Number.MAX_SAFE_INTEGER||9007199254740991,H=Number.MIN_SAFE_INTEGER||-9007199254740991;function Q(t){return/\d+\.?\d*e[\+\-]*\d+/i.test(t)}function G(t,n=12){return+parseFloat(t.toPrecision(n))}function Y(t){const n=t.toString().split(/e/i),e=(n[0].split(".")[1]||"").length-+(n[1]||0);return e>0?e:0}function J(t){if(!Q(t.toString()))return Number(t.toString().replace(".",""));const n=Y(t);return n>0?G(+t*Math.pow(10,n)):+t}function K(t){(+t>X||+t<H)&&(w.disableWarning||console.warn(`${t} is beyond boundary when transfer to integer, the results may not be accurate`))}function V(t){const n=/^([+-])?(0+)([0-9\.]+)$/.exec(t);let e;return n?(e=n[1]||"",e+("."===n[3][0]?"0"+n[3]:n[3])):t}function q(t){return e(t,"Number")&&isNaN(t)}const tt=/^[+-]?\d*\.?\d*$/;function nt(t){return function(t){return void 0===t}(t)||function(t){return null===t}(t)}function et(t){return nt(t)?"":o(t)}const rt=["零","一","二","三","四","五","六","七","八","九"],ot=["","十","百","千"],it=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"],st=["","拾","佰","仟"];let ut,ct,at;function dt(t){let n="",e="",r=!1,o=0;for(;t>0;){let i=t%10;0==i?r&&(r=!1,e=ut[i]+e):(r=!0,n=ut[i],n+=ct[o],e=n+e),o++,t=Math.floor(t/10)}return e}function lt(t){const n=t+"";let e="";for(let t=0,r=n.length;t<r;t++)e+=ut[parseInt(n[t])];return e}const ft=/^(?<province>\d{2})(?<city>\d{2})(?<area>\d{2})(?<year>(?:\d{2})?\d{2})(?<month>\d{2})(?<day>\d{2})\d{2}(?<gender>\d)(?:\d|X)?$/i,gt=[["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 pt(t){return e(t,"Number")}function ht(...t){const[n,e,...o]=t;if(o.length>0)return ht(ht(n,e),...o);if((!pt(e)||q(e))&&!r(e))return n;const i=J(n),s=J(e),u=Y(n)+Y(e),c=i*s;return K(c),c/Math.pow(10,u)}function bt(...t){const[n,e,...o]=t;if(o.length>0)return bt(bt(n,e),...o);if((!pt(e)||q(e))&&!r(e))return n;const i=J(n),s=J(e);return K(i),K(s),ht(i/s,G(Math.pow(10,Y(e)-Y(n))))}t.blobToDataURL=function(t){return new Promise(((n,e)=>{const r=new FileReader;r.readAsDataURL(t),r.onload=()=>n(r.result),r.onerror=t=>e(t)}))},t.bytesToSize=function(t){if(0===t)return"0 B";const n=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],e=Math.floor(Math.log(t)/Math.log(1024));return n[e]?`${Number((t/Math.pow(1024,e)).toFixed(2))} ${n[e]}`:t+""},t.calculateCursorPosition=function(t,n,e,r,{placeholderChar:o=" ",maskReg:i=/\D/g,type:s}={}){const u=et(n),c=et(e),a=Array.isArray(o)?o:[o],d=c.length-u.length;let l=t;if(d>0){let t=c.substring(l-d,l).replace(i,"").length;l-=d-t;let n=0;for(;t>0;)-1!==a.indexOf(r.charAt(l-t+n))?n++:t--;l+=n}return("mobile"===s&&(4===l||9===l)||"bankCard"===s&&l>0&&l%5==0)&&(l-=1),l},t.dataURLToBlob=function(t){const n=t.split(","),e=n[0].match(/:(.*?);/)[1],r=atob(n[1]);let o=r.length;const i=new Uint8Array(o);for(;o--;)i[o]=r.charCodeAt(o);return new Blob([i],{type:e})},t.divide=bt,t.formatBankCard=function(t="",{char:n=" ",length:e=4}={}){const r=new RegExp(`(.{${e}})`,"g"),o=new RegExp(`${n}`,"g"),i=et(t).replace(o,""),s=i.replace(r,`$1${n}`);return i.length%e==0?s.substring(0,s.length-1):s},t.formatMobile=function(t,{char:n=" "}={}){const e=new RegExp(n,"g"),r=et(t).replace(e,"").substring(0,11);return r.length>7?r.replace(/^(...)(....)/g,`$1${n}$2${n}`):r.length>3?r.replace(/^(...)/g,`$1${n}`):r},t.formatMoney=(t,{precision:n=2,symbol:e,thousand:r=",",decimal:o="."}={})=>{if(!function(t){return!tt.test(t)&&!Q(t)||q(t)||"number"!=typeof t&&"string"!=typeof t||""===t?(w.disableWarning||console.warn(`${t} invalid parameter.`),!1):("number"==typeof t&&K(t),!0)}(t))return"";"number"!=typeof n||q(n)||n<0?n=2:n>10&&(n=10),e="string"==typeof e?e:"",r="string"==typeof r?r:",",o="string"==typeof o?o:".";const i=function(t){if(Q(t.toString())){const n="0",e=String(t).toLowerCase().split("e"),r=e.pop(),o=Math.abs(r),i=r/o,s=e[0].split(".");if(-1===i)t=n+"."+new Array(o).join(n)+s.join("");else{const e=s[1];t=o-e.length<0?V(s[0]+e.substring(0,o))+"."+e.substring(o):s.join("")+new Array(o-e.length+1).join(n)}}return t}(t)+"",[s,u]=i.split(".");return e+function(t,n){let e="";t="+"===(t=V(t))[0]?t.substring(1):t;const r=Number(t)<0?"-":"",o=r?t.substring(1).split("").reverse():t.split("").reverse();for(let t=0;t<o.length;t++)e+=o[t]+((t+1)%3==0&&t+1!==o.length?n:"");return r+e.split("").reverse().join("")}(s,r)+function(t,n,e){if(0===n)return"";let r="";r=t&&Number(t)>0?parseFloat("0."+t).toFixed(n).substring(2):(0).toFixed(n).substring(2);return e+r}(u,n,o)},t.isBankCard=function(t,{loose:n=!1}={}){const e=o(t);return n?h.test(e):p.test(e)},t.isBusinessLicense=function(t,{loose:n=!1}={}){const e=o(t),r=O.test(e);if(n||!r)return r;const i=e.substring(0,14),s=e.substring(e.length-1),u=function(t){let n,e=10;for(let n=0;n<14;n++){let r=(e+Number(t[n]))%10;r=0===r?10:r,e=2*r%11}return n=10===e||1===e?1:11-e,n}(i);return s===String(u)},t.isChinese=function(t,{loose:n=!1}={}){const e=o(t);return new RegExp(n?W:j,Z?"u":void 0).test(e)},t.isEmail=function(t){const n=o(t);return d.test(n)},t.isHMCard=function(t){const n=o(t);return U.test(n)},t.isIPv4=function(t){const n=o(t);return L.test(n)},t.isIPv6=function(t){const n=o(t);return _.test(n)},t.isIdCard=a,t.isMobile=function(t){const n=o(t);return i.test(n)},t.isPassport=function(t){const n=o(t);return N.test(n)},t.isPassword=function(t,{level:n=2,ignoreCase:e=!1,special:r="\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E"}={}){return C(t,{level:n,ignoreCase:e,special:r}).validated},t.isPostcode=function(t){const n=o(t);return u.test(n)},t.isPromiseLike=function(t){return null!==t&&("object"==typeof t||"function"==typeof t)&&"function"==typeof t.then},t.isQQ=function(t){const n=o(t);return l.test(n)},t.isSocialCreditCode=function(t,{loose:n=!1}={}){const e=o(t),r=b.test(e);if(n||!r)return r;const i=e.substring(0,17);return e.substring(e.length-1)===function(t){let n=0;for(let e=0;e<17;e++)n+=y(t[e])*m[e];return $[31-n%31]}(i)},t.isTWCard=function(t){const n=o(t);return k.test(n)},t.isTelephone=function(t){const n=o(t);return s.test(n)},t.isUrl=function(t){const n=o(t);return I.test(n)},t.isVehicle=function(t){const n=o(t);return g.test(n)},t.isWX=function(t){const n=o(t);return f.test(n)},t.minus=function t(...n){const[e,o,...i]=n;if(i.length>0)return t(t(e,o),...i);if((!pt(o)||q(o))&&!r(o))return e;const s=Math.pow(10,Math.max(Y(e),Y(o)));return(ht(e,s)-ht(o,s))/s},t.normalizeString=et,t.numberToChinese=function(t,{big5:n=!1,unit:e=!0,decimal:r="点",zero:o="",negative:i="负",unitConfig:s={w:"万",y:"亿"}}={}){if("number"!=typeof t||isNaN(t))return w.disableWarning||console.warn(`参数错误 ${t},请传入数字`),"";K(t),n?(ut=it.slice(),ct=st.slice()):(ut=rt.slice(),ct=ot.slice()),at=["",s.w||"万",s.y||"亿",s.w&&s.y?s.w+s.y:"万亿"],o&&(ut[0]=o);const u=t<0?i:"";let c,a;return c=e?function(t){let n=0,e="",r="",o=!1;if(0===(t=Math.floor(t)))return ut[0];for(;t>0;){var i=t%1e4;o&&(r=ut[0]+r),e=dt(i),e+=0!==i?at[n]:at[0],r=e+r,o=i<1e3&&i>0,t=Math.floor(t/1e4),n++}return r}(t):lt(Math.floor(t)),a=function(t){const n=t+"",e=n.indexOf(".");let r="";if(e>-1){let t=n.slice(e+1);r=lt(parseInt(t))}return r}(t),a?`${u}${c}${r}${a}`:`${u}${c}`},t.padZero=function(t,n=2){const e=et(t),r=e.length;return("number"!=typeof n||n<0)&&(n=0),r<n?"0".repeat(n-r)+e:e},t.parseIdCard=function(t){if(!a(t,{loose:!0}))return null;const n=ft.exec(t);if(!n)return null;let e={province:"",city:"",area:"",year:"",month:"",day:"",gender:""};e=n.groups?n.groups:{province:n[1],city:n[2],area:n[3],year:n[4],month:n[5],day:n[6],gender:n[7]};const r=gt.find((t=>t[0]===e.province));if(!r)return null;const o=`${e.year}-${e.month}-${e.day}`,i=Number(e.gender)%2==0?"女":"男";return{province:r[1],birthday:o,gender:i,origin:e}},t.plus=function t(...n){const[e,o,...i]=n;if(i.length>0)return t(t(e,o),...i);if((!pt(o)||q(o))&&!r(o))return e;const s=Math.pow(10,Math.max(Y(e),Y(o)));return(ht(e,s)+ht(o,s))/s},t.replaceChar=function(t="",{start:n=3,end:e=-4,char:r="*",repeat:o,exclude:i}={}){const s=t.length;if(Math.abs(n)>=s)return t;if((n=n>=0?n:s+n)>=(e=e>=0?e:s+e))return t;let u=t.substring(n,e);if(i){const t=new RegExp(`[^${i}]`,"g");u=u.replace(t,r)}else o="number"==typeof o&&o>=0?o:u.length,u=r.repeat(o);return t.substring(0,n)+u+t.substring(e)},t.round=function(t,n=0){const e=Math.pow(10,n);return bt(Math.round(ht(t,e)),e)},t.safeDate=function(t,...n){const e="string"==typeof t?t.replace(/[\\.-]/g,"/"):t;return n&&n.length>0?new Date(e,...n):nt(e)?new Date:new Date(e)},t.setDataURLPrefix=function(t,n="image/png",e=!0){return`data:${n}${e?";base64":""},${t}`},t.setDisableWarning=function(t){w.disableWarning=!!t},t.times=ht,t.validatePassword=C,t.waitTime=function(t=1e3){return new Promise((n=>{setTimeout(n,t)}))},Object.defineProperty(t,"__esModule",{value:!0})}));
1
+ !function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).utilHelpers={})}(this,(function(t){"use strict";const n=Object.prototype.toString;function e(t,e){return n.call(t)===`[object ${e}]`}function r(t){return e(t,"String")}function o(t){return r(t)?t:String(t)}const i=/^1[3456789]\d{9}$/;const s=/^(0\d{2,3}\-)?([2-9]\d{6,7})(\-\d{1,6})?$/;const u=/^\d{6}$/;const c=/^[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 a(t,{loose:n=!1,checkCode:e=!0}={}){const r=o(t);return 15===r.length&&n?c.test(r):!(18!==r.length||!c.test(r))&&(!e||function(t){let n,e,r;for(e=n=0;n<17;n++)e+=Math.pow(2,17-n)%11*Number(t[n]);return r=(12-e%11)%11,r<10?r===Number(t[17]):"X"===t[17].toUpperCase()}(r))}const d=/^[\da-z]+([\-\.\_]?[\da-z]+)*@[\da-z]+([\-\.]?[\da-z]+)*(\.[a-z]{2,})+$/i;const l=/^[1-9]\d{4,10}$/;const f=/^[a-z]([-_a-z0-9]{5,19})+$/i;const p=/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([A-Z0-9]{4}[A-Z0-9挂学警港澳]{1})|([A-Z0-9]{5}[DF])|([DF][A-Z0-9]{5}))$/;const g=/^[1-9]\d{9,20}$/,h=/^\d{8,30}$/;const b=/^[\dA-HJ-NPQRTUWXY]{2}\d{6}[\dA-HJ-NPQRTUWXY]{10}$/,m="0123456789ABCDEFGHJKLMNPQRTUWXY".split("");function $(t){let n;return m.some(((e,r)=>e===t&&(n=r,!0))),n}const y={disableWarning:!0};const w=/[\d]/,A=/[a-z]/,x=/[A-Z]/,F=/[\d|a-z]/gi;function M(t){return t.indexOf("\\x")>-1||t.indexOf("\\u")>-1}function v(t,{level:n=2,ignoreCase:e=!1,special:r="\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E"}={}){let o=t;"string"!=typeof t&&(y.disableWarning||console.warn("[validatePassword] value must be a string."),o="");let i=0;const s=(u=o,w.test(u));var u;const c=function(t){return A.test(t)}(o),a=function(t){return x.test(t)}(o),d=function(t,n=""){if(!n)return!1;const e=t.replace(F,""),r=M(n)?new RegExp(`[${n}]`):null;if(r)return r.test(e);let o=!1;return e.split("").some((t=>(n.indexOf(t)>-1&&(o=!0),o))),o}(o,r),l=function(t,n=""){const e=t.replace(F,"");if(!n&&e)return!0;const r=M(n)?new RegExp(`[^${n}]`):null;if(r)return r.test(e);let o=!1;return e.split("").some((t=>(-1===n.indexOf(t)&&(o=!0),o))),o}(o,r);s&&(i+=1),e?(c||a)&&(i+=1):(c&&(i+=1),a&&(i+=1)),d&&(i+=1);return{validated:i>=n&&!l,level:i,containes:{number:s,lowerCaseLetter:c,upperCaseLetter:a,specialCharacter:d,unallowableCharacter:l}}}const C=/^((e[\da-z])|(de)|(se)|(pe)|(k[\da-z])|(kj)|(ma))[\da-z]{7}$/i;const N="[一-龥]",B="[麦-鿯]",z="[㐀-䶵]",E="[𠀀-𪛖]",P="[𪜀-𫜴]",R="[𫝀-𫠝]",T="[𫠠-𬺡]",S="[𬺰-𮯠]";let j=N+"+",D="^"+N+"+$";const W=RegExp.prototype.hasOwnProperty("unicode");W&&(j="(?:"+N+"|"+B+"|"+z+"|"+E+"|"+P+"|"+R+"|"+T+"|"+S+")+",D="^(?:"+N+"|"+B+"|"+z+"|"+E+"|"+P+"|"+R+"|"+T+"|"+S+")+$");const U=/^((\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])$/;const Z=/^((([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;const L=/(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;const _=/^\d{15}$/;const k=/^[hm]{1}([0-9]{10}|[0-9]{8})$/i;const I=/^(\d{8}|[\da-z]{10})$/i;const O=Number.MAX_SAFE_INTEGER||9007199254740991,X=Number.MIN_SAFE_INTEGER||-9007199254740991;function H(t){return/\d+\.?\d*e[\+\-]*\d+/i.test(t)}function Q(t,n=12){return+parseFloat(t.toPrecision(n))}function G(t){const n=t.toString().split(/e/i),e=(n[0].split(".")[1]||"").length-+(n[1]||0);return e>0?e:0}function Y(t){if(!H(t.toString()))return Number(t.toString().replace(".",""));const n=G(t);return n>0?Q(+t*Math.pow(10,n)):+t}function J(t){(+t>O||+t<X)&&(y.disableWarning||console.warn(`${t} is beyond boundary when transfer to integer, the results may not be accurate`))}function K(t){const n=/^([+-])?(0+)([0-9\.]+)$/.exec(t);let e;return n?(e=n[1]||"",e+("."===n[3][0]?"0"+n[3]:n[3])):t}function q(t){return e(t,"Number")&&isNaN(t)}const V=/^[+-]?\d*\.?\d*$/;function tt(t){return function(t){return void 0===t}(t)||function(t){return null===t}(t)}function nt(t){return tt(t)?"":o(t)}const et=["零","一","二","三","四","五","六","七","八","九"],rt=["","十","百","千"],ot=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"],it=["","拾","佰","仟"];let st,ut,ct;function at(t){let n="",e="",r=!1,o=0;for(;t>0;){let i=t%10;0==i?r&&(r=!1,e=st[i]+e):(r=!0,n=st[i],n+=ut[o],e=n+e),o++,t=Math.floor(t/10)}return e}function dt(t){const n=t+"";let e="";for(let t=0,r=n.length;t<r;t++)e+=st[parseInt(n[t])];return e}const lt=/^(?<province>\d{2})(?<city>\d{2})(?<area>\d{2})(?<year>(?:\d{2})?\d{2})(?<month>\d{2})(?<day>\d{2})\d{2}(?<gender>\d)(?:\d|X)?$/i,ft=[["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 pt(t){return e(t,"Number")}function gt(...t){const[n,e,...o]=t;if(o.length>0)return gt(gt(n,e),...o);if((!pt(e)||q(e))&&!r(e))return n;const i=Y(n),s=Y(e),u=G(n)+G(e),c=i*s;return J(c),c/Math.pow(10,u)}function ht(...t){const[n,e,...o]=t;if(o.length>0)return ht(ht(n,e),...o);if((!pt(e)||q(e))&&!r(e))return n;const i=Y(n),s=Y(e);return J(i),J(s),gt(i/s,Q(Math.pow(10,G(e)-G(n))))}const bt="abcdefghijklmnopqrstuvwxyz",mt="0123456789"+bt+bt.toUpperCase();function $t(t=0,n=mt,e=""){for(;t-- >0;){return $t(t,n,e+n[Math.floor(Math.random()*n.length)])}return e}t.blobToDataURL=function(t){return new Promise(((n,e)=>{const r=new FileReader;r.readAsDataURL(t),r.onload=()=>n(r.result),r.onerror=t=>e(t)}))},t.bytesToSize=function(t){if(0===t)return"0 B";const n=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],e=Math.floor(Math.log(t)/Math.log(1024));return n[e]?`${Number((t/Math.pow(1024,e)).toFixed(2))} ${n[e]}`:t+""},t.calculateCursorPosition=function(t,n,e,r,{placeholderChar:o=" ",maskReg:i=/\D/g,type:s}={}){const u=nt(n),c=nt(e),a=Array.isArray(o)?o:[o],d=c.length-u.length;let l=t;if(d>0){let t=c.substring(l-d,l).replace(i,"").length;l-=d-t;let n=0;for(;t>0;)-1!==a.indexOf(r.charAt(l-t+n))?n++:t--;l+=n}return("mobile"===s&&(4===l||9===l)||"bankCard"===s&&l>0&&l%5==0)&&(l-=1),l},t.dataURLToBlob=function(t){const n=t.split(","),e=n[0].match(/:(.*?);/)[1],r=atob(n[1]);let o=r.length;const i=new Uint8Array(o);for(;o--;)i[o]=r.charCodeAt(o);return new Blob([i],{type:e})},t.divide=ht,t.formatBankCard=function(t="",{char:n=" ",length:e=4}={}){const r=new RegExp(`(.{${e}})`,"g"),o=new RegExp(`${n}`,"g"),i=nt(t).replace(o,""),s=i.replace(r,`$1${n}`);return i.length%e==0?s.substring(0,s.length-1):s},t.formatMobile=function(t,{char:n=" "}={}){const e=new RegExp(n,"g"),r=nt(t).replace(e,"").substring(0,11);return r.length>7?r.replace(/^(...)(....)/g,`$1${n}$2${n}`):r.length>3?r.replace(/^(...)/g,`$1${n}`):r},t.formatMoney=(t,{precision:n=2,symbol:e,thousand:r=",",decimal:o="."}={})=>{if(!function(t){return!V.test(t)&&!H(t)||q(t)||"number"!=typeof t&&"string"!=typeof t||""===t?(y.disableWarning||console.warn(`${t} invalid parameter.`),!1):("number"==typeof t&&J(t),!0)}(t))return"";"number"!=typeof n||q(n)||n<0?n=2:n>10&&(n=10),e="string"==typeof e?e:"",r="string"==typeof r?r:",",o="string"==typeof o?o:".";const i=function(t){if(H(t.toString())){const n="0",e=String(t).toLowerCase().split("e"),r=e.pop(),o=Math.abs(r),i=r/o,s=e[0].split(".");if(-1===i)t=n+"."+new Array(o).join(n)+s.join("");else{const e=s[1];t=o-e.length<0?K(s[0]+e.substring(0,o))+"."+e.substring(o):s.join("")+new Array(o-e.length+1).join(n)}}return t}(t)+"",[s,u]=i.split(".");return e+function(t,n){let e="";t="+"===(t=K(t))[0]?t.substring(1):t;const r=Number(t)<0?"-":"",o=r?t.substring(1).split("").reverse():t.split("").reverse();for(let t=0;t<o.length;t++)e+=o[t]+((t+1)%3==0&&t+1!==o.length?n:"");return r+e.split("").reverse().join("")}(s,r)+function(t,n,e){if(0===n)return"";let r="";r=t&&Number(t)>0?parseFloat("0."+t).toFixed(n).substring(2):(0).toFixed(n).substring(2);return e+r}(u,n,o)},t.isBankCard=function(t,{loose:n=!1}={}){const e=o(t);return n?h.test(e):g.test(e)},t.isBusinessLicense=function(t,{loose:n=!1}={}){const e=o(t),r=_.test(e);if(n||!r)return r;const i=e.substring(0,14),s=e.substring(e.length-1),u=function(t){let n,e=10;for(let n=0;n<14;n++){let r=(e+Number(t[n]))%10;r=0===r?10:r,e=2*r%11}return n=10===e||1===e?1:11-e,n}(i);return s===String(u)},t.isChinese=function(t,{loose:n=!1}={}){const e=o(t);return new RegExp(n?j:D,W?"u":void 0).test(e)},t.isEmail=function(t){const n=o(t);return d.test(n)},t.isHMCard=function(t){const n=o(t);return k.test(n)},t.isIPv4=function(t){const n=o(t);return U.test(n)},t.isIPv6=function(t){const n=o(t);return Z.test(n)},t.isIdCard=a,t.isMobile=function(t){const n=o(t);return i.test(n)},t.isPassport=function(t){const n=o(t);return C.test(n)},t.isPassword=function(t,{level:n=2,ignoreCase:e=!1,special:r="\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E"}={}){return v(t,{level:n,ignoreCase:e,special:r}).validated},t.isPostcode=function(t){const n=o(t);return u.test(n)},t.isPromiseLike=function(t){return null!==t&&("object"==typeof t||"function"==typeof t)&&"function"==typeof t.then},t.isQQ=function(t){const n=o(t);return l.test(n)},t.isSocialCreditCode=function(t,{loose:n=!1}={}){const e=o(t),r=b.test(e);if(n||!r)return r;const i=e.substring(0,17);return e.substring(e.length-1)===function(t){let n=0;for(let e=0;e<17;e++)n+=$(t[e])*(Math.pow(3,e)%31);return m[31-n%31]}(i)},t.isTWCard=function(t){const n=o(t);return I.test(n)},t.isTelephone=function(t){const n=o(t);return s.test(n)},t.isUrl=function(t){const n=o(t);return L.test(n)},t.isVehicle=function(t){const n=o(t);return p.test(n)},t.isWX=function(t){const n=o(t);return f.test(n)},t.minus=function t(...n){const[e,o,...i]=n;if(i.length>0)return t(t(e,o),...i);if((!pt(o)||q(o))&&!r(o))return e;const s=Math.pow(10,Math.max(G(e),G(o)));return(gt(e,s)-gt(o,s))/s},t.normalizeString=nt,t.numberToChinese=function(t,{big5:n=!1,unit:e=!0,decimal:r="点",zero:o="",negative:i="负",unitConfig:s={w:"万",y:"亿"}}={}){if("number"!=typeof t||isNaN(t))return y.disableWarning||console.warn(`参数错误 ${t},请传入数字`),"";J(t),n?(st=ot.slice(),ut=it.slice()):(st=et.slice(),ut=rt.slice()),ct=["",s.w||"万",s.y||"亿",s.w&&s.y?s.w+s.y:"万亿"],o&&(st[0]=o);const u=t<0?i:"";let c,a;return c=e?function(t){let n=0,e="",r="",o=!1;if(0===(t=Math.floor(t)))return st[0];for(;t>0;){var i=t%1e4;o&&(r=st[0]+r),e=at(i),e+=0!==i?ct[n]:ct[0],r=e+r,o=i<1e3&&i>0,t=Math.floor(t/1e4),n++}return r}(t):dt(Math.floor(t)),a=function(t){const n=t+"",e=n.indexOf(".");let r="";if(e>-1){let t=n.slice(e+1);r=dt(parseInt(t))}return r}(t),a?`${u}${c}${r}${a}`:`${u}${c}`},t.padZero=function(t,n=2){const e=nt(t),r=e.length;return("number"!=typeof n||n<0)&&(n=0),r<n?"0".repeat(n-r)+e:e},t.parseIdCard=function(t){if(!a(t,{loose:!0}))return null;const n=lt.exec(t);if(!n)return null;let e={province:"",city:"",area:"",year:"",month:"",day:"",gender:""};e=n.groups?n.groups:{province:n[1],city:n[2],area:n[3],year:n[4],month:n[5],day:n[6],gender:n[7]};const r=ft.find((t=>t[0]===e.province));if(!r)return null;const o=`${e.year}-${e.month}-${e.day}`,i=Number(e.gender)%2==0?"女":"男";return{province:r[1],birthday:o,gender:i,origin:e}},t.plus=function t(...n){const[e,o,...i]=n;if(i.length>0)return t(t(e,o),...i);if((!pt(o)||q(o))&&!r(o))return e;const s=Math.pow(10,Math.max(G(e),G(o)));return(gt(e,s)+gt(o,s))/s},t.randomString=function(t=0,n){return $t(t,"string"==typeof n&&n?n:mt)},t.replaceChar=function(t="",{start:n=3,end:e=-4,char:r="*",repeat:o,exclude:i}={}){const s=t.length;if(Math.abs(n)>=s)return t;if((n=n>=0?n:s+n)>=(e=e>=0?e:s+e))return t;let u=t.substring(n,e);if(i){const t=new RegExp(`[^${i}]`,"g");u=u.replace(t,r)}else o="number"==typeof o&&o>=0?o:u.length,u=r.repeat(o);return t.substring(0,n)+u+t.substring(e)},t.round=function(t,n=0){const e=Math.pow(10,n);return ht(Math.round(gt(t,e)),e)},t.safeDate=function(t,...n){const e="string"==typeof t?t.replace(/[\\.-]/g,"/"):t;return n&&n.length>0?new Date(e,...n):tt(e)?new Date:new Date(e)},t.setDataURLPrefix=function(t,n="image/png",e=!0){return`data:${n}${e?";base64":""},${t}`},t.setDisableWarning=function(t){y.disableWarning=!!t},t.times=gt,t.validatePassword=v,t.waitTime=function(t=1e3){return new Promise((n=>{setTimeout(n,t)}))},Object.defineProperty(t,"__esModule",{value:!0})}));
2
2
  //# sourceMappingURL=util-helpers.min.js.map