New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

xe-utils

Package Overview
Dependencies
Maintainers
1
Versions
309
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

xe-utils - npm Package Compare versions

Comparing version

to
1.5.27

379

dist/xe-utils.js
/**
* xe-utils.js v1.5.26
* xe-utils.js v1.5.27
* (c) 2017-2018 Xu Liangzhan

@@ -16,3 +16,3 @@ * ISC License.

XEUtils.version = '1.5.26'
XEUtils.version = '1.5.27'

@@ -240,3 +240,4 @@ /**

/**
* 求和函数,将数值相加
* 求和函数,将数值相加
*
* @param {Array} array 数组

@@ -246,3 +247,3 @@ * @param {Function/String} iteratee 方法或属性

* @return {Number}
*/
*/
function arraySum (array, iteratee, context) {

@@ -262,2 +263,24 @@ var result = 0

/**
* 接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。
*
* @param {Array} array 数组
* @param {Function} callback 方法
* @param {Object} initialValue 初始值
* @return {Number}
*/
function arrayReduce (array, callback, initialValue) {
var previous = initialValue
var index = 0
var len = array.length
if (typeof initialValue === 'undefined') {
previous = array[0]
index = 1
}
for (; index < len; index++) {
previous = callback.call(global, previous, array[index], index, array)
}
return previous
}
var arrayExports = {

@@ -285,3 +308,5 @@ arrayUniq: arrayUniq,

arraySum: arraySum,
sum: sum
sum: sum,
arrayReduce: arrayReduce,
reduce: arrayReduce
}

@@ -294,7 +319,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
var isArray = Array.isArray || function (val) {
return objectToString.call(val) === '[object Array]'
var isArray = Array.isArray || function (obj) {
return objectToString.call(obj) === '[object Array]'
}

@@ -305,7 +330,7 @@

*
* @param {Number} val 数值
* @param {Number} obj 数值
* @return {Boolean}
*/
function isFloat (val) {
return val !== null && !isNaN(val) && !isInteger(val)
function isFloat (obj) {
return obj !== null && !isNaN(obj) && !isInteger(obj)
}

@@ -324,7 +349,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isFunction (val) {
return typeof val === 'function'
function isFunction (obj) {
return typeof obj === 'function'
}

@@ -335,7 +360,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isBoolean (val) {
return typeof val === 'boolean'
function isBoolean (obj) {
return typeof obj === 'boolean'
}

@@ -346,7 +371,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isString (val) {
return typeof val === 'string'
function isString (obj) {
return typeof obj === 'string'
}

@@ -357,7 +382,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isNumber (val) {
return typeof val === 'number'
function isNumber (obj) {
return typeof obj === 'number'
}

@@ -368,7 +393,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isRegExp (val) {
return objectToString.call(val) === '[object RegExp]'
function isRegExp (obj) {
return objectToString.call(obj) === '[object RegExp]'
}

@@ -379,7 +404,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isObject (val) {
return typeof val === 'object'
function isObject (obj) {
return typeof obj === 'object'
}

@@ -390,7 +415,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isPlainObject (val) {
return val ? val.constructor === Object : false
function isPlainObject (obj) {
return obj ? obj.constructor === Object : false
}

@@ -401,7 +426,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isDate (val) {
return objectToString.call(val) === '[object Date]'
function isDate (obj) {
return objectToString.call(obj) === '[object Date]'
}

@@ -412,7 +437,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isError (val) {
return objectToString.call(val) === '[object Error]'
function isError (obj) {
return objectToString.call(obj) === '[object Error]'
}

@@ -423,7 +448,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isTypeError (val) {
return val ? val.constructor === TypeError : false
function isTypeError (obj) {
return obj ? obj.constructor === TypeError : false
}

@@ -434,8 +459,8 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isEmpty (val) {
if (val === 0 || !isNumber(val)) {
for (var key in val) {
function isEmpty (obj) {
if (obj === 0 || !isNumber(obj)) {
for (var key in obj) {
return false

@@ -451,7 +476,7 @@ }

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isNull (val) {
return val === null
function isNull (obj) {
return obj === null
}

@@ -462,7 +487,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isSymbol (val) {
return typeof Symbol !== 'undefined' && Symbol.isSymbol ? Symbol.isSymbol(val) : (typeof val === 'symbol')
function isSymbol (obj) {
return typeof Symbol !== 'undefined' && Symbol.isSymbol ? Symbol.isSymbol(obj) : (typeof obj === 'symbol')
}

@@ -473,7 +498,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isArguments (val) {
return objectToString.call(val) === '[object Arguments]'
function isArguments (obj) {
return objectToString.call(obj) === '[object Arguments]'
}

@@ -484,7 +509,7 @@

*
* @param {Number} num 数值
* @param {Object} obj 对象
* @return {Boolean}
*/
function isElement (val) {
return val && isString(val.nodeName) && isNumber(val.nodeType)
function isElement (obj) {
return obj && isString(obj.nodeName) && isNumber(obj.nodeType)
}

@@ -495,7 +520,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isDocument (val) {
return val && val.nodeType === 9 && typeof document !== 'undefined'
function isDocument (obj) {
return obj && obj.nodeType === 9 && typeof document !== 'undefined'
}

@@ -506,7 +531,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isWindow (val) {
return val && val === val.window && typeof window !== 'undefined'
function isWindow (obj) {
return obj && obj === obj.window && typeof window !== 'undefined'
}

@@ -517,10 +542,50 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isFormData (val) {
return typeof FormData !== 'undefined' && val instanceof FormData
function isFormData (obj) {
return typeof FormData !== 'undefined' && obj instanceof FormData
}
/**
* 判断是否Map对象
*
* @param {Object} obj 对象
* @return {Boolean}
*/
function isMap (obj) {
return typeof Map !== 'undefined' && obj instanceof Map
}
/**
* 判断是否WeakMap对象
*
* @param {Object} obj 对象
* @return {Boolean}
*/
function isWeakMap (obj) {
return typeof WeakMap !== 'undefined' && obj instanceof WeakMap
}
/**
* 判断是否Set对象
*
* @param {Object} obj 对象
* @return {Boolean}
*/
function isSet (obj) {
return typeof Set !== 'undefined' && obj instanceof Set
}
/**
* 判断是否WeakSet对象
*
* @param {Object} obj 对象
* @return {Boolean}
*/
function isWeakSet (obj) {
return typeof WeakSet !== 'undefined' && obj instanceof WeakSet
}
/**
* 判断是否闰年

@@ -935,2 +1000,6 @@ *

isFormData: isFormData,
isMap: isMap,
isWeakMap: isWeakMap,
isSet: isSet,
isWeakSet: isWeakSet,
isLeapYear: isLeapYear,

@@ -1146,3 +1215,3 @@ getType: getType,

}
if (!isNaN(str)) {
if (/^[0-9]{11,13}$/.test(str)) {
return new Date(str)

@@ -1494,2 +1563,3 @@ }

* @param { String/Number } str 数值
* @return {Number}
*/

@@ -1504,2 +1574,11 @@ function stringToNumber (str) {

/**
* 转整数
* @param { String/Number } str 数值
* @return {Number}
*/
function stringToInteger (str) {
return parseInt(stringToNumber(str))
}
var numberExports = {

@@ -1513,5 +1592,37 @@ getRandom: getRandom,

toNumber: stringToNumber,
stringToNumber: stringToNumber
stringToNumber: stringToNumber,
toInteger: stringToInteger,
stringToInteger: stringToInteger
}
/**
* 去除字符串左右两边的空格
*
* @param {String} str 字符串
* @return {String}
*/
function stringTrim (str) {
return str && str.trim ? str.trim() : stringTrimRight(stringTrimLeft(str))
}
/**
* 去除字符串左边的空格
*
* @param {String} str 字符串
* @return {String}
*/
function stringTrimLeft (str) {
return str && str.trimLeft ? str.trimLeft() : ('' + str).replace(/^[\s\uFEFF\xA0]+/g, '')
}
/**
* 去除字符串右边的空格
*
* @param {String} str 字符串
* @return {String}
*/
function stringTrimRight (str) {
return str && str.trimRight ? str.trimRight() : ('' + str).replace(/[\s\uFEFF\xA0]+$/g, '')
}
var escapeMap = {

@@ -1534,3 +1645,3 @@ '&': '&amp;',

return function (str) {
return String(str || '').replace(replaceRegexp, function (match) {
return ('' + str).replace(replaceRegexp, function (match) {
return dataMap[match]

@@ -1557,5 +1668,133 @@ })

/**
* 将带字符串转成驼峰字符串,例如 project-name => projectName
*
* @param {String} str 字符串
* @return {String}
*/
function camelCase (str) {
return ('' + str).replace(/(-[a-zA-Z])/g, function (text, u) { return u.substring(1).toLocaleUpperCase() })
}
/**
* 将带驼峰字符串转成字符串,例如 projectName => project-name
*
* @param {String} str 字符串
* @return {String}
*/
function kebabCase (str) {
return ('' + str).replace(/([A-Z])/g, function (text, u) { return '-' + u.toLowerCase() })
}
/**
* 将字符串重复 n次
*
* @param {String} str 字符串
* @param {Number} count 次数
* @return {String}
*/
function stringRepeat (str, count) {
var rest = '' + str
if (str.repeat) {
return str.repeat(count)
}
var list = isNaN(count) ? [] : new Array(parseInt(count))
return list.join(rest) + (list.length > 0 ? rest : '')
}
/**
* 用指定字符从前面开始补全字符串
*
* @param {String} str 字符串
* @param {Number} targetLength 结果长度
* @param {Number} padString 补全字符
* @return {String}
*/
function stringPadStart (str, targetLength, padString) {
var rest = '' + str
if (rest.padStart) {
return rest.padStart(targetLength, padString)
}
if ((targetLength >> 0) > rest.length) {
padString = String(padString || ' ')
targetLength -= rest.length
if (targetLength > padString.length) {
padString += stringRepeat(padString, targetLength / padString.length)
}
return padString.slice(0, targetLength) + rest
}
return rest
}
/**
* 用指定字符从后面开始补全字符串
*
* @param {String} str 字符串
* @param {Number} targetLength 结果长度
* @param {Number} padString 补全字符
* @return {String}
*/
function stringPadEnd (str, targetLength, padString) {
var rest = '' + str
if (rest.padEnd) {
return rest.padEnd(targetLength, padString)
}
if ((targetLength >> 0) > rest.length) {
padString = String(padString || ' ')
targetLength -= rest.length
if (targetLength > padString.length) {
padString += stringRepeat(padString, targetLength / padString.length)
}
return rest + padString.slice(0, targetLength)
}
return rest
}
/**
* 判断字符串是否在源字符串的头部
*
* @param {String} str 字符串
* @param {String/Number} val 值
* @param {Number} startIndex 开始索引
* @return {String}
*/
function stringStartsWith (str, val, startIndex) {
var rest = '' + str
return (arguments.length === 1 ? rest : rest.substring(startIndex)).indexOf(val) === 0
}
/**
* 判断字符串是否在源字符串的尾部
*
* @param {String} str 字符串
* @param {String/Number} val 值
* @param {Number} startIndex 开始索引
* @return {String}
*/
function stringEndsWith (str, val, startIndex) {
var rest = '' + str
return arguments.length === 1 ? rest.indexOf(val) === rest.length - 1 : rest.substring(0, startIndex).indexOf(val) === startIndex - 1
}
var stringExports = {
trim: stringTrim,
stringTrim: stringTrim,
trimLeft: stringTrimLeft,
stringTrimLeft: stringTrimLeft,
trimRight: stringTrimRight,
stringTrimRight: stringTrimRight,
escape: escape,
unescape: unescape
unescape: unescape,
camelCase: camelCase,
kebabCase: kebabCase,
repeat: stringRepeat,
stringRepeat: stringRepeat,
padStart: stringPadStart,
stringPadStart: stringPadStart,
padEnd: stringPadEnd,
stringPadEnd: stringPadEnd,
startsWith: stringStartsWith,
stringStartsWith: stringStartsWith,
endsWith: stringEndsWith,
stringEndsWith: stringEndsWith
}

@@ -1562,0 +1801,0 @@

4

dist/xe-utils.min.js
/**
* xe-utils.js v1.5.26
* xe-utils.js v1.5.27
* (c) 2017-2018 Xu Liangzhan

@@ -7,2 +7,2 @@ * ISC License.

*/
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):e.XEUtils=n()}(this,function(){"use strict";function e(){}function n(e){var n=[];return oe.isArray(e)&&oe.arrayEach(e,function(e){n.includes(e)||n.push(e)}),n}function t(){for(var e=[],t=0,r=arguments.length;t<r;t++)e=e.concat(arguments[t]);return n(e)}function r(e,n,t){return oe.isArray(e)?e.sort(n?oe.isFunction(n)?n.bind(t||this):function(e,t){return e[n]>t[n]?1:-1}:function(e,n){return e>n?1:-1}):e}function i(e){for(var n=[],t=oe.objectValues(e),r=t.length-1;r>=0;r--){var i=r>0?de.getRandom(0,r):0;n.push(t[i]),t.splice(i,1)}return n}function o(e,n){var t=i(e);return 1===arguments.length?t[0]:(n<t.length&&(t.length=n||0),t)}function a(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.some(n,t);for(var r in e)if(e.hasOwnProperty(r)&&n.call(t,e[r],r,e))return!0}return!1}function u(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.every(n,t);for(var r in e)if(e.hasOwnProperty(r)&&!n.call(t,e[r],r,e))return!1}return!0}function s(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.filter(n,t);var r={};return oe.each(e,function(i,o){n.call(t,i,o,e)&&(r[o]=i)}),r}return[]}function c(e,n,t){if(e){if(t=t||this,oe.isArray(e))return e.find(n,t);for(var r in e)if(e.hasOwnProperty(r)&&n.call(t,e[r],r,e))return e[r]}}function f(e,n,t){var r=[];if(e){if(t=t||this,oe.isArray(e))return e.map(n,t);oe.each(e,function(){r.push(n.apply(t,arguments))})}return r}function l(e,n,t){var r=0;return t=t||this,oe.each(e,n?oe.isFunction(n)?function(){r+=n.apply(t,arguments)}:function(e,t){r+=e[n]}:function(e,n){r+=e}),r}function h(e){return"function"==typeof e}function y(e){return"string"==typeof e}function p(e){return"number"==typeof e}function g(e){return"object"==typeof e}function d(e){return!!e&&e.constructor===Object}function m(e){return"[object Date]"===K.call(e)}function v(e){return"undefined"!=typeof Symbol&&Symbol.isSymbol?Symbol.isSymbol(e):"symbol"==typeof e}function b(e){return function(n,t){if(n){if(y(n)||L(n))return e(n,t);for(var r in n)if(t===n[r])return r}return-1}}function S(e,n){return-1!==X(e,n)}function M(e,n,t){for(var r,i=1,o=n.length;i<o;i++)r=n[i],E(j(n[i]),function(n){e[n]=t?A(r[n],t):r[n]});return e}function j(e){var n=[];if(e){if(Object.keys)return Object.keys(e);N(e,function(e,t){n.push(t)})}return n}function x(e){if(Object.values)return e?Object.values(e):[];var n=[];return E(j(e),function(t){n.push(e[t])}),n}function D(e){if(Object.entries)return e?Object.entries(e):[];var n=[];return E(j(e),function(t){n.push([t,e[t]])}),n}function O(e){return x(e)[0]}function w(e){var n=x(e);return n[n.length-1]}function N(e,n,t){for(var r in e)e.hasOwnProperty(r)&&n.call(t||this,e[r],r,e)}function E(e,n,t){for(var r=0,i=e.length||0;r<i;r++)n.call(t||this,e[r],r,e)}function F(e,n,t){return e?L(e)?h(e.forEach)?e.forEach(n,t||this):E(e,n,t||this):N(e,n,t||this):e}function T(n){return d(n)?function(e){var n={};return F(e,function(e,t){n[t]=T(e)}),n}(n):L(n)?function(n){return e.arrayMap(n,T)}(n):n}function A(e,n){return e?n?T(e):_(d(e)?{}:[],e):e}function I(e,n){var t=parseFloat(n),r=new Date,i=r.getTime();switch(e){case"y":return ye.getWhatYear(r,t).getTime();case"M":return ye.getWhatMonth(r,t).getTime();case"d":return ye.getWhatDay(r,t).getTime();case"H":return i+60*t*60*1e3;case"m":return i+60*t*1e3;case"s":return i+1e3*t}return i}function H(e){return(oe.isDate(e)?e:new Date(e)).toUTCString()}function k(e,n,t){var r=[],i="undefined"!=typeof document;if(this&&this.$context&&(this.$context=null),oe.isArray(e)?r=e:arguments.length>1?r=[oe.objectAssign({name:e,value:n},t)]:oe.isObject(e)&&(r=[e]),!(r.length>0)){var o={};return i&&document.cookie&&oe.arrayEach(document.cookie.split("; "),function(e){var n=e.indexOf("=");o[ue(e.substring(0,n))]=ue(e.substring(n+1)||"")}),1===arguments.length?o[e]:o}i&&oe.arrayEach(r,function(e){var n=oe.objectAssign({},e),t=[];if(n.name){var r=n.expires;t.push(se(n.name)+"="+se(oe.isObject(n.value)?JSON.stringify(n.value):n.value)),r&&(isNaN(r)?n.expires=r.replace(/^([0-9]+)(y|M|d|H|m|s)$/,function(e,n,t){return H(I(t,n))}):/^[0-9]{11,13}$/.test(r)||oe.isDate(r)?n.expires=H(r):n.expires=H(I("d",r))),oe.arrayEach(["expires","path","domain","secure"],function(e){void 0!==n[e]&&t.push(n[e]&&"secure"===e?e:e+"="+n[e])})}document.cookie=t.join("; ")})}function P(e,n){if(e){if(oe.isDate(e))return e;if(!isNaN(e))return new Date(e);if(oe.isString(e)){n=n||"yyyy-MM-dd HH:mm:ss.SSS";var t=[];return oe.arrayEach(le,function(r){for(var i,o,a=0,u=r.rules,s=u.length;a<s;a++){if(i=u[a],(o=n.indexOf(i[0]))>-1){t.push(parseFloat(e.substring(o,o+i[1])||0)+(r.offset||0));break}a===s-1&&t.push(0)}}),new Date(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}}return"Invalid Date"}function R(e,n,t){var r=P(e),i=n&&!isNaN(n)?n:0,o=r.getHours(),a=r.getMinutes(),u=r.getSeconds(),s=r.getMilliseconds();if("first"===t){var c=r.getFullYear(),f=r.getMonth();return(f+=i)<0?new Date(c-Math.ceil((f=Math.abs(f))/12),12-(f%12||1),1,o,a,u,s):new Date(c+Math.floor(f/12),f%12,1,o,a,u,s)}if("last"===t)return new Date(R(r,i+1,"first").getTime()-864e5);var l=r.getDate(),h=R(r,i,"first"),y=h.getMonth();for(h.setDate(l);y<h.getMonth();)h.setDate(--l);return h}function U(e){var n={},t=e.split("?")[1]||"";return t&&oe.arrayEach(t.split("&"),function(e){var t=e.split("=");n[decodeURIComponent(t[0])]=decodeURIComponent(t[1]||"")}),n}function W(){return pe?pe.origin||pe.protocol+"//"+pe.host:""}function Y(e){var n=""+e;0===n.indexOf("/")&&(n=W()+n);var t=n.replace(/#.*/,"").match(/(\?.*)/),r={href:n,hash:"",host:"",hostname:"",protocol:"",port:"",search:t?t[1]:""};r.path=n.replace(/^([a-z0-9.+-]*:)\/\//,function(e,n){return r.protocol=n,""}).replace(/^([a-z0-9.+-]*)(:\d+)?\//,function(e,n,t){var i=t||"";return r.port=i.replace(":",""),r.hostname=n,r.host=n+i,"/"}).replace(/(#.*)/,function(e,n){return r.hash=n,""});var i=r.hash.match(/#((.*)\?|(.*))/);return r.pathname=r.path.replace(/(\?|#.*).*/,""),r.origin=r.protocol+"//"+r.host,r.hashKey=i?i[2]||"":"",r.hashQuery=U(r.hash),r.searchQuery=U(r.search),r}function $(e,n){return oe.isFunction(n)?z.arraySort(z.arrayMap(e,n,this)):z.arraySort(e,n)}function C(){return $.apply(this,arguments)[0]}function q(){return $.apply(this,arguments).reverse()[0]}function J(e){if(e){var n=parseFloat(e);return isNaN(n)?0:n}return 0}function B(e){var n=new RegExp("(?:"+oe.objectKeys(e).join("|")+")","g");return function(t){return String(t||"").replace(n,function(n){return e[n]})}}e.version="1.5.26";var z={arrayUniq:n,uniq:n,arrayUnion:t,union:t,arraySort:r,sort:r,arrayShuffle:i,shuffle:i,arraySample:o,sample:o,arraySome:a,some:a,arrayEvery:u,every:u,arrayFilter:s,filter:s,arrayFind:c,find:c,arrayMap:f,map:f,arraySum:l,sum:l},K=Object.prototype.toString,L=Array.isArray||function(e){return"[object Array]"===K.call(e)},Q=Number.isInteger,V=0,X=b(function(e,n){if(e.indexOf)return e.indexOf(n);for(var t=0,r=e.length;t<r;t++)if(n===e[t])return t}),G=b(function(e,n){if(e.lastIndexOf)return e.lastIndexOf(n);for(var t=e.length-1;t>=0;t--)if(n===e[t])return t;return-1}),Z=S,_=function(e){if(e){var n=arguments;if(!0!==e)return Object.assign?Object.assign.apply(Object,n):M(e,n);if(n.length>1)return e=L(e[1])?[]:{},M(e,n,!0)}return e},ee=j,ne=x,te=D,re=O,ie=w,oe={isNaN:isNaN,isFinite:isFinite,isArray:L,isFloat:function(e){return null!==e&&!isNaN(e)&&!Q(e)},isInteger:Q,isFunction:h,isBoolean:function(e){return"boolean"==typeof e},isString:y,isNumber:p,isRegExp:function(e){return"[object RegExp]"===K.call(e)},isObject:g,isPlainObject:d,isDate:m,isError:function(e){return"[object Error]"===K.call(e)},isTypeError:function(e){return!!e&&e.constructor===TypeError},isEmpty:function(e){if(0===e||!p(e)){for(var n in e)return!1;return!0}return!1},isNull:function(e){return null===e},isSymbol:v,isArguments:function(e){return"[object Arguments]"===K.call(e)},isElement:function(e){return e&&y(e.nodeName)&&p(e.nodeType)},isDocument:function(e){return e&&9===e.nodeType&&"undefined"!=typeof document},isWindow:function(e){return e&&e===e.window&&"undefined"!=typeof window},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isLeapYear:function(n){var t=(n?e.stringToDate(n):new Date).getFullYear();return t%4==0&&(t%100!=0||t%400==0)},getType:function(e){return null===e?""+e:v(e)?"symbol":m(e)?"date":L(e)?"array":typeof e},uniqueId:function(){return++V},getSize:function(e){var n=0;return y(e)||L(e)?e.length:(F(e,function(){n++}),n)},lastIndexOf:G,includes:S,contains:Z,objectAssign:_,assign:_,extend:_,stringToJson:function(e){if(g(e))return e;if(y(e))try{return JSON.parse(e)}catch(e){console.error(e)}return{}},jsonToString:function(e){if(g(e))try{return JSON.stringify(e)}catch(e){console.error(e)}return e?""+e:""},objectKeys:j,keys:ee,objectValues:x,values:ne,objectEntries:D,entries:te,arrayFirst:O,first:re,arrayLast:w,last:ie,objectEach:N,arrayEach:E,each:F,groupBy:function(e,n,t){var r,i,o={};return e&&(y(n)?(i=n,n=null):n=h(n)?n.bind(t||this):i=null,F(e,function(t,a){r=n?n(t,a,e):i?t[i]:t,o[r]?o[r].push(t):o[r]=[t]})),o},objectMap:function(e,n,t){var r={};return F(e,function(i,o){r[o]=n.call(t||this,i,o,e)}),r},clone:A},ae={browse:function(){var e={isNode:!1,isMobile:!1,isPC:!1};if("undefined"==typeof window&&"undefined"!=typeof process)e.nodeJS=!0;else if(e.isMobile=function(){for(var e=["Android","webOS","iPhone","iPad","iPod","SymbianOS","BlackBerry","Windows Phone"],n=navigator.userAgent,t=0;t<e.length;t++)if(n.indexOf(e[t])>0)return!0;return!1}(),e.isPC=!e.isMobile,"undefined"!=typeof document){var n=document.body||document.documentElement;oe.arrayEach(["webkit","khtml","moz","ms","o"],function(t){e["-"+t]=!!n[t+"MatchesSelector"]})}return e}},ue=decodeURIComponent,se=encodeURIComponent;oe.objectAssign(k,{setItem:function(e,n,t){k(e,n,t)},getItem:function(e){return k(e)},removeItem:function(e){k(e,null,{expires:-1})},getJSON:function(){return k()}});var ce={cookie:k},fe=Date.now||function(){return(new Date).getTime()},le=[{rules:[["yyyy",4],["yyy",3],["yy",2]]},{rules:[["MM",2],["M",1]],offset:-1},{rules:[["dd",2],["d",1]]},{rules:[["HH",2],["H",1]]},{rules:[["mm",2],["m",1]]},{rules:[["ss",2],["s",1]]},{rules:[["SSS",3],["SS",2],["S",1]]}],he=[["yyyy",31536e6],["MM",2592e6],["dd",864e5],["HH",36e5],["mm",6e4],["ss",1e3],["S",0]],ye={timestamp:fe,now:fe,stringToDate:P,dateToString:function(e,n){if(e){if(e=P(e),oe.isDate(e)){var t=["日","一","二","三","四","五","六"],r={"q+":Math.floor((e.getMonth()+3)/3),"M+":e.getMonth()+1,"E+":e.getDay(),"d+":e.getDate(),"H+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),S:e.getMilliseconds()},i=String(n||"yyyy-MM-dd HH:mm:ss").replace(/(y+)/,function(n){return(""+e.getFullYear()).substr(4-n.length)});for(var o in r)if(r.hasOwnProperty(o)){var a=""+r[o];i=i.replace(new RegExp("("+o+")"),function(e){return"q+"===o||"E+"===o?t[a]:1===e.length?a:("00"+a).substr(a.length)})}return i}return e}return""},getWhatYear:function(e,n){var t=P(e);if(n){var r=n&&!isNaN(n)?n:0;t.setFullYear(t.getFullYear()+r)}return t},getWhatMonth:R,getWhatWeek:function(e,n,t){var r=P(e),i=Number(/^[0-7]$/.test(t)?t:r.getDay()),o=r.getDay(),a=r.getTime()+864e5*((0===i?7:i)-(0===o?7:o));return n&&!isNaN(n)&&(a+=6048e5*n),new Date(a)},getWhatDay:function(e,n){var t=P(e);return n?new Date(t.getTime()+(n&&!isNaN(n)?864e5*n:0)):t},getDaysOfMonth:function(e,n){return Math.floor((R(e,n,"last").getTime()-R(e,n,"first").getTime())/864e5)+1},getDateDiff:function(e,n,t){var r={done:!1},i=P(e).getTime(),o=n?P(n).getTime():new Date;if(i<o){var a,u=o-i,s=t&&t.length>0?t:he;r.done=!0;for(var c=0,f=s.length;c<f;c++)u>=(a=s[c])[1]?c===f-1?r[a[0]]=u||0:(r[a[0]]=Math.floor(u/a[1]),u-=r[a[0]]*a[1]):r[a[0]]=0}return r}},pe=null;"undefined"!=typeof location&&(pe=location);var ge={parseUrl:Y,getBaseURL:function(){if(pe){var e=pe.pathname,n=oe.lastIndexOf(e,"/")+1;return W()+(n===e.length?e:e.substring(0,n))}return""},locat:function(){return pe?Y(pe.href):{}}},de={getRandom:function(e,n){return e>=n?e:(e>>=0)+Math.round(Math.random()*((n||9)-e))},arrayMin:C,min:C,arrayMax:q,max:q,commafy:function(e,n){var t=oe.objectAssign({spaceNumber:3,separator:",",fixed:0},n),r=parseFloat((""+e).replace(/,/g,"")||0).toFixed(t.fixed).split(".");return r[0].replace(new RegExp("(?=(?!(\\b))(\\d{"+t.spaceNumber+"})+$)","g"),t.separator)+(r[1]?"."+r[1]:"")},toNumber:J,stringToNumber:J},me={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},ve={};oe.arrayEach(oe.objectKeys(me),function(e){ve[me[e]]=e});var be={escape:B(me),unescape:B(ve)},Se={};return oe.objectAssign(Se,z,oe,ae,ce,ye,ge,de,be),e.mixin=function(n){Se.objectEach(n,function(n,t){e[t]=-1==="cookie".indexOf(t)&&Se.isFunction(n)?function(){var t=n.apply(e.$context,arguments);return e.$context=null,t}:n})},e.mixin(Se),e});
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):t.XEUtils=n()}(this,function(){"use strict";function t(){}function n(t){var n=[];return yt.isArray(t)&&yt.arrayEach(t,function(t){n.includes(t)||n.push(t)}),n}function e(){for(var t=[],e=0,r=arguments.length;e<r;e++)t=t.concat(arguments[e]);return n(t)}function r(t,n,e){return yt.isArray(t)?t.sort(n?yt.isFunction(n)?n.bind(e||this):function(t,e){return t[n]>e[n]?1:-1}:function(t,n){return t>n?1:-1}):t}function i(t){for(var n=[],e=yt.objectValues(t),r=e.length-1;r>=0;r--){var i=r>0?Et.getRandom(0,r):0;n.push(e[i]),e.splice(i,1)}return n}function a(t,n){var e=i(t);return 1===arguments.length?e[0]:(n<e.length&&(e.length=n||0),e)}function o(t,n,e){if(t){if(e=e||this,yt.isArray(t))return t.some(n,e);for(var r in t)if(t.hasOwnProperty(r)&&n.call(e,t[r],r,t))return!0}return!1}function u(t,n,e){if(t){if(e=e||this,yt.isArray(t))return t.every(n,e);for(var r in t)if(t.hasOwnProperty(r)&&!n.call(e,t[r],r,t))return!1}return!0}function s(t,n,e){if(t){if(e=e||this,yt.isArray(t))return t.filter(n,e);var r={};return yt.each(t,function(i,a){n.call(e,i,a,t)&&(r[a]=i)}),r}return[]}function c(t,n,e){if(t){if(e=e||this,yt.isArray(t))return t.find(n,e);for(var r in t)if(t.hasOwnProperty(r)&&n.call(e,t[r],r,t))return t[r]}}function f(t,n,e){var r=[];if(t){if(e=e||this,yt.isArray(t))return t.map(n,e);yt.each(t,function(){r.push(n.apply(e,arguments))})}return r}function l(t,n,e){var r=0;return e=e||this,yt.each(t,n?yt.isFunction(n)?function(){r+=n.apply(e,arguments)}:function(t,e){r+=t[n]}:function(t,n){r+=t}),r}function h(t,n,e){var r=e,i=0,a=t.length;for(void 0===e&&(r=t[0],i=1);i<a;i++)r=n.call(global,r,t[i],i,t);return r}function g(t){return"function"==typeof t}function p(t){return"string"==typeof t}function y(t){return"number"==typeof t}function d(t){return"object"==typeof t}function m(t){return!!t&&t.constructor===Object}function v(t){return"[object Date]"===et.call(t)}function b(t){return"undefined"!=typeof Symbol&&Symbol.isSymbol?Symbol.isSymbol(t):"symbol"==typeof t}function S(t){return function(n,e){if(n){if(p(n)||rt(n))return t(n,e);for(var r in n)if(e===n[r])return r}return-1}}function M(t,n){return-1!==ot(t,n)}function x(t,n,e){for(var r,i=1,a=n.length;i<a;i++)r=n[i],F(j(n[i]),function(n){t[n]=e?k(r[n],e):r[n]});return t}function j(t){var n=[];if(t){if(Object.keys)return Object.keys(t);N(t,function(t,e){n.push(e)})}return n}function O(t){if(Object.values)return t?Object.values(t):[];var n=[];return F(j(t),function(e){n.push(t[e])}),n}function D(t){if(Object.entries)return t?Object.entries(t):[];var n=[];return F(j(t),function(e){n.push([e,t[e]])}),n}function E(t){return O(t)[0]}function w(t){var n=O(t);return n[n.length-1]}function N(t,n,e){for(var r in t)t.hasOwnProperty(r)&&n.call(e||this,t[r],r,t)}function F(t,n,e){for(var r=0,i=t.length||0;r<i;r++)n.call(e||this,t[r],r,t)}function T(t,n,e){return t?rt(t)?g(t.forEach)?t.forEach(n,e||this):F(t,n,e||this):N(t,n,e||this):t}function A(n){return m(n)?function(t){var n={};return T(t,function(t,e){n[e]=A(t)}),n}(n):rt(n)?function(n){return t.arrayMap(n,A)}(n):n}function k(t,n){return t?n?A(t):ct(m(t)?{}:[],t):t}function W(t,n){var e=parseFloat(n),r=new Date,i=r.getTime();switch(t){case"y":return jt.getWhatYear(r,e).getTime();case"M":return jt.getWhatMonth(r,e).getTime();case"d":return jt.getWhatDay(r,e).getTime();case"H":return i+60*e*60*1e3;case"m":return i+60*e*1e3;case"s":return i+1e3*e}return i}function I(t){return(yt.isDate(t)?t:new Date(t)).toUTCString()}function R(t,n,e){var r=[],i="undefined"!=typeof document;if(this&&this.$context&&(this.$context=null),yt.isArray(t)?r=t:arguments.length>1?r=[yt.objectAssign({name:t,value:n},e)]:yt.isObject(t)&&(r=[t]),!(r.length>0)){var a={};return i&&document.cookie&&yt.arrayEach(document.cookie.split("; "),function(t){var n=t.indexOf("=");a[mt(t.substring(0,n))]=mt(t.substring(n+1)||"")}),1===arguments.length?a[t]:a}i&&yt.arrayEach(r,function(t){var n=yt.objectAssign({},t),e=[];if(n.name){var r=n.expires;e.push(vt(n.name)+"="+vt(yt.isObject(n.value)?JSON.stringify(n.value):n.value)),r&&(isNaN(r)?n.expires=r.replace(/^([0-9]+)(y|M|d|H|m|s)$/,function(t,n,e){return I(W(e,n))}):/^[0-9]{11,13}$/.test(r)||yt.isDate(r)?n.expires=I(r):n.expires=I(W("d",r))),yt.arrayEach(["expires","path","domain","secure"],function(t){void 0!==n[t]&&e.push(n[t]&&"secure"===t?t:t+"="+n[t])})}document.cookie=e.join("; ")})}function H(t,n){if(t){if(yt.isDate(t))return t;if(/^[0-9]{11,13}$/.test(t))return new Date(t);if(yt.isString(t)){n=n||"yyyy-MM-dd HH:mm:ss.SSS";var e=[];return yt.arrayEach(Mt,function(r){for(var i,a,o=0,u=r.rules,s=u.length;o<s;o++){if(i=u[o],(a=n.indexOf(i[0]))>-1){e.push(parseFloat(t.substring(a,a+i[1])||0)+(r.offset||0));break}o===s-1&&e.push(0)}}),new Date(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}}return"Invalid Date"}function P(t,n,e){var r=H(t),i=n&&!isNaN(n)?n:0,a=r.getHours(),o=r.getMinutes(),u=r.getSeconds(),s=r.getMilliseconds();if("first"===e){var c=r.getFullYear(),f=r.getMonth();return(f+=i)<0?new Date(c-Math.ceil((f=Math.abs(f))/12),12-(f%12||1),1,a,o,u,s):new Date(c+Math.floor(f/12),f%12,1,a,o,u,s)}if("last"===e)return new Date(P(r,i+1,"first").getTime()-864e5);var l=r.getDate(),h=P(r,i,"first"),g=h.getMonth();for(h.setDate(l);g<h.getMonth();)h.setDate(--l);return h}function C(t){var n={},e=t.split("?")[1]||"";return e&&yt.arrayEach(e.split("&"),function(t){var e=t.split("=");n[decodeURIComponent(e[0])]=decodeURIComponent(e[1]||"")}),n}function U(){return Ot?Ot.origin||Ot.protocol+"//"+Ot.host:""}function $(t){var n=""+t;0===n.indexOf("/")&&(n=U()+n);var e=n.replace(/#.*/,"").match(/(\?.*)/),r={href:n,hash:"",host:"",hostname:"",protocol:"",port:"",search:e?e[1]:""};r.path=n.replace(/^([a-z0-9.+-]*:)\/\//,function(t,n){return r.protocol=n,""}).replace(/^([a-z0-9.+-]*)(:\d+)?\//,function(t,n,e){var i=e||"";return r.port=i.replace(":",""),r.hostname=n,r.host=n+i,"/"}).replace(/(#.*)/,function(t,n){return r.hash=n,""});var i=r.hash.match(/#((.*)\?|(.*))/);return r.pathname=r.path.replace(/(\?|#.*).*/,""),r.origin=r.protocol+"//"+r.host,r.hashKey=i?i[2]||"":"",r.hashQuery=C(r.hash),r.searchQuery=C(r.search),r}function L(t,n){return yt.isFunction(n)?nt.arraySort(nt.arrayMap(t,n,this)):nt.arraySort(t,n)}function Y(){return L.apply(this,arguments)[0]}function q(){return L.apply(this,arguments).reverse()[0]}function J(t){if(t){var n=parseFloat(t);return isNaN(n)?0:n}return 0}function z(t){return parseInt(J(t))}function B(t){return t&&t.trim?t.trim():Q(K(t))}function K(t){return t&&t.trimLeft?t.trimLeft():(""+t).replace(/^[\s\uFEFF\xA0]+/g,"")}function Q(t){return t&&t.trimRight?t.trimRight():(""+t).replace(/[\s\uFEFF\xA0]+$/g,"")}function V(t){var n=new RegExp("(?:"+yt.objectKeys(t).join("|")+")","g");return function(e){return(""+e).replace(n,function(n){return t[n]})}}function Z(t,n){var e=""+t;if(t.repeat)return t.repeat(n);var r=isNaN(n)?[]:new Array(parseInt(n));return r.join(e)+(r.length>0?e:"")}function X(t,n,e){var r=""+t;return r.padStart?r.padStart(n,e):n>>0>r.length?(e=String(e||" "),(n-=r.length)>e.length&&(e+=Z(e,n/e.length)),e.slice(0,n)+r):r}function G(t,n,e){var r=""+t;return r.padEnd?r.padEnd(n,e):n>>0>r.length?(e=String(e||" "),(n-=r.length)>e.length&&(e+=Z(e,n/e.length)),r+e.slice(0,n)):r}function _(t,n,e){var r=""+t;return 0===(1===arguments.length?r:r.substring(e)).indexOf(n)}function tt(t,n,e){var r=""+t;return 1===arguments.length?r.indexOf(n)===r.length-1:r.substring(0,e).indexOf(n)===e-1}t.version="1.5.27";var nt={arrayUniq:n,uniq:n,arrayUnion:e,union:e,arraySort:r,sort:r,arrayShuffle:i,shuffle:i,arraySample:a,sample:a,arraySome:o,some:o,arrayEvery:u,every:u,arrayFilter:s,filter:s,arrayFind:c,find:c,arrayMap:f,map:f,arraySum:l,sum:l,arrayReduce:h,reduce:h},et=Object.prototype.toString,rt=Array.isArray||function(t){return"[object Array]"===et.call(t)},it=Number.isInteger,at=0,ot=S(function(t,n){if(t.indexOf)return t.indexOf(n);for(var e=0,r=t.length;e<r;e++)if(n===t[e])return e}),ut=S(function(t,n){if(t.lastIndexOf)return t.lastIndexOf(n);for(var e=t.length-1;e>=0;e--)if(n===t[e])return e;return-1}),st=M,ct=function(t){if(t){var n=arguments;if(!0!==t)return Object.assign?Object.assign.apply(Object,n):x(t,n);if(n.length>1)return t=rt(t[1])?[]:{},x(t,n,!0)}return t},ft=j,lt=O,ht=D,gt=E,pt=w,yt={isNaN:isNaN,isFinite:isFinite,isArray:rt,isFloat:function(t){return null!==t&&!isNaN(t)&&!it(t)},isInteger:it,isFunction:g,isBoolean:function(t){return"boolean"==typeof t},isString:p,isNumber:y,isRegExp:function(t){return"[object RegExp]"===et.call(t)},isObject:d,isPlainObject:m,isDate:v,isError:function(t){return"[object Error]"===et.call(t)},isTypeError:function(t){return!!t&&t.constructor===TypeError},isEmpty:function(t){if(0===t||!y(t)){for(var n in t)return!1;return!0}return!1},isNull:function(t){return null===t},isSymbol:b,isArguments:function(t){return"[object Arguments]"===et.call(t)},isElement:function(t){return t&&p(t.nodeName)&&y(t.nodeType)},isDocument:function(t){return t&&9===t.nodeType&&"undefined"!=typeof document},isWindow:function(t){return t&&t===t.window&&"undefined"!=typeof window},isFormData:function(t){return"undefined"!=typeof FormData&&t instanceof FormData},isMap:function(t){return"undefined"!=typeof Map&&t instanceof Map},isWeakMap:function(t){return"undefined"!=typeof WeakMap&&t instanceof WeakMap},isSet:function(t){return"undefined"!=typeof Set&&t instanceof Set},isWeakSet:function(t){return"undefined"!=typeof WeakSet&&t instanceof WeakSet},isLeapYear:function(n){var e=(n?t.stringToDate(n):new Date).getFullYear();return e%4==0&&(e%100!=0||e%400==0)},getType:function(t){return null===t?""+t:b(t)?"symbol":v(t)?"date":rt(t)?"array":typeof t},uniqueId:function(){return++at},getSize:function(t){var n=0;return p(t)||rt(t)?t.length:(T(t,function(){n++}),n)},lastIndexOf:ut,includes:M,contains:st,objectAssign:ct,assign:ct,extend:ct,stringToJson:function(t){if(d(t))return t;if(p(t))try{return JSON.parse(t)}catch(t){console.error(t)}return{}},jsonToString:function(t){if(d(t))try{return JSON.stringify(t)}catch(t){console.error(t)}return t?""+t:""},objectKeys:j,keys:ft,objectValues:O,values:lt,objectEntries:D,entries:ht,arrayFirst:E,first:gt,arrayLast:w,last:pt,objectEach:N,arrayEach:F,each:T,groupBy:function(t,n,e){var r,i,a={};return t&&(p(n)?(i=n,n=null):n=g(n)?n.bind(e||this):i=null,T(t,function(e,o){r=n?n(e,o,t):i?e[i]:e,a[r]?a[r].push(e):a[r]=[e]})),a},objectMap:function(t,n,e){var r={};return T(t,function(i,a){r[a]=n.call(e||this,i,a,t)}),r},clone:k},dt={browse:function(){var t={isNode:!1,isMobile:!1,isPC:!1};if("undefined"==typeof window&&"undefined"!=typeof process)t.nodeJS=!0;else if(t.isMobile=function(){for(var t=["Android","webOS","iPhone","iPad","iPod","SymbianOS","BlackBerry","Windows Phone"],n=navigator.userAgent,e=0;e<t.length;e++)if(n.indexOf(t[e])>0)return!0;return!1}(),t.isPC=!t.isMobile,"undefined"!=typeof document){var n=document.body||document.documentElement;yt.arrayEach(["webkit","khtml","moz","ms","o"],function(e){t["-"+e]=!!n[e+"MatchesSelector"]})}return t}},mt=decodeURIComponent,vt=encodeURIComponent;yt.objectAssign(R,{setItem:function(t,n,e){R(t,n,e)},getItem:function(t){return R(t)},removeItem:function(t){R(t,null,{expires:-1})},getJSON:function(){return R()}});var bt={cookie:R},St=Date.now||function(){return(new Date).getTime()},Mt=[{rules:[["yyyy",4],["yyy",3],["yy",2]]},{rules:[["MM",2],["M",1]],offset:-1},{rules:[["dd",2],["d",1]]},{rules:[["HH",2],["H",1]]},{rules:[["mm",2],["m",1]]},{rules:[["ss",2],["s",1]]},{rules:[["SSS",3],["SS",2],["S",1]]}],xt=[["yyyy",31536e6],["MM",2592e6],["dd",864e5],["HH",36e5],["mm",6e4],["ss",1e3],["S",0]],jt={timestamp:St,now:St,stringToDate:H,dateToString:function(t,n){if(t){if(t=H(t),yt.isDate(t)){var e=["日","一","二","三","四","五","六"],r={"q+":Math.floor((t.getMonth()+3)/3),"M+":t.getMonth()+1,"E+":t.getDay(),"d+":t.getDate(),"H+":t.getHours(),"m+":t.getMinutes(),"s+":t.getSeconds(),S:t.getMilliseconds()},i=String(n||"yyyy-MM-dd HH:mm:ss").replace(/(y+)/,function(n){return(""+t.getFullYear()).substr(4-n.length)});for(var a in r)if(r.hasOwnProperty(a)){var o=""+r[a];i=i.replace(new RegExp("("+a+")"),function(t){return"q+"===a||"E+"===a?e[o]:1===t.length?o:("00"+o).substr(o.length)})}return i}return t}return""},getWhatYear:function(t,n){var e=H(t);if(n){var r=n&&!isNaN(n)?n:0;e.setFullYear(e.getFullYear()+r)}return e},getWhatMonth:P,getWhatWeek:function(t,n,e){var r=H(t),i=Number(/^[0-7]$/.test(e)?e:r.getDay()),a=r.getDay(),o=r.getTime()+864e5*((0===i?7:i)-(0===a?7:a));return n&&!isNaN(n)&&(o+=6048e5*n),new Date(o)},getWhatDay:function(t,n){var e=H(t);return n?new Date(e.getTime()+(n&&!isNaN(n)?864e5*n:0)):e},getDaysOfMonth:function(t,n){return Math.floor((P(t,n,"last").getTime()-P(t,n,"first").getTime())/864e5)+1},getDateDiff:function(t,n,e){var r={done:!1},i=H(t).getTime(),a=n?H(n).getTime():new Date;if(i<a){var o,u=a-i,s=e&&e.length>0?e:xt;r.done=!0;for(var c=0,f=s.length;c<f;c++)u>=(o=s[c])[1]?c===f-1?r[o[0]]=u||0:(r[o[0]]=Math.floor(u/o[1]),u-=r[o[0]]*o[1]):r[o[0]]=0}return r}},Ot=null;"undefined"!=typeof location&&(Ot=location);var Dt={parseUrl:$,getBaseURL:function(){if(Ot){var t=Ot.pathname,n=yt.lastIndexOf(t,"/")+1;return U()+(n===t.length?t:t.substring(0,n))}return""},locat:function(){return Ot?$(Ot.href):{}}},Et={getRandom:function(t,n){return t>=n?t:(t>>=0)+Math.round(Math.random()*((n||9)-t))},arrayMin:Y,min:Y,arrayMax:q,max:q,commafy:function(t,n){var e=yt.objectAssign({spaceNumber:3,separator:",",fixed:0},n),r=parseFloat((""+t).replace(/,/g,"")||0).toFixed(e.fixed).split(".");return r[0].replace(new RegExp("(?=(?!(\\b))(\\d{"+e.spaceNumber+"})+$)","g"),e.separator)+(r[1]?"."+r[1]:"")},toNumber:J,stringToNumber:J,toInteger:z,stringToInteger:z},wt={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},Nt={};yt.arrayEach(yt.objectKeys(wt),function(t){Nt[wt[t]]=t});var Ft={trim:B,stringTrim:B,trimLeft:K,stringTrimLeft:K,trimRight:Q,stringTrimRight:Q,escape:V(wt),unescape:V(Nt),camelCase:function(t){return(""+t).replace(/(-[a-zA-Z])/g,function(t,n){return n.substring(1).toLocaleUpperCase()})},kebabCase:function(t){return(""+t).replace(/([A-Z])/g,function(t,n){return"-"+n.toLowerCase()})},repeat:Z,stringRepeat:Z,padStart:X,stringPadStart:X,padEnd:G,stringPadEnd:G,startsWith:_,stringStartsWith:_,endsWith:tt,stringEndsWith:tt},Tt={};return yt.objectAssign(Tt,nt,yt,dt,bt,jt,Dt,Et,Ft),t.mixin=function(n){Tt.objectEach(n,function(n,e){t[e]=-1==="cookie".indexOf(e)&&Tt.isFunction(n)?function(){var e=n.apply(t.$context,arguments);return t.$context=null,e}:n})},t.mixin(Tt),t});
{
"name": "xe-utils",
"version": "1.5.26",
"version": "1.5.27",
"description": "XEUtils 函数库",

@@ -5,0 +5,0 @@ "main": "index.js",

@@ -244,7 +244,35 @@ # XEUtils 函数库

```JavaScript
import { isFormData } from 'xe-utils'
import XEUtils from 'xe-utils'
isFormData({}) // false
isFormData(new FormData()) // true
XEUtils.isFormData({}) // false
XEUtils.isFormData(new FormData()) // true
```
### isMap (val) 判断是否Map对象
```JavaScript
import XEUtils from 'xe-utils'
XEUtils.isMap({}) // false
XEUtils.isMap(new Map()) // true
```
### isWeakMap (val) 判断是否WeakMap对象
```JavaScript
import XEUtils from 'xe-utils'
XEUtils.isWeakMap({}) // false
XEUtils.isWeakMap(new WeakMap()) // true
```
### isSet (val) 判断是否Set对象
```JavaScript
import XEUtils from 'xe-utils'
XEUtils.isSet({}) // false
XEUtils.isSet(new Set()) // true
```
### isWeakSet (val) 判断是否WeakSet对象
```JavaScript
import XEUtils from 'xe-utils'
XEUtils.isWeakSet({}) // false
XEUtils.isWeakSet(new WeakSet()) // true
```
### isLeapYear (date) 判断是否闰年

@@ -521,7 +549,13 @@ ```JavaScript

XEUtils.sum([{aa: 11}, {aa: 22}, {aa: 66}], 'aa') // 99
arraySum([{aa: 11}, {aa: 22}, {aa: 66}], (item, key) => {
return item.aa * 2
}) // 198
arraySum([{aa: 11}, {aa: 22}, {aa: 66}], (item, key) => item.aa * 2) // 198
```
### reduce/arrayReduce ( array, callback, initialValue ) 接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值
```JavaScript
import XEUtils, { arrayReduce } from 'xe-utils'
XEUtils.reduce([22, 66, 88], (previous, item, index) => previous + item) // 176
arrayReduce([22, 66, 88], (previous, item, index) => (previous + item) * 2) // 528
```
### now/timestamp ( ) 返回时间戳

@@ -660,9 +694,42 @@ ```JavaScript

```JavaScript
import XEUtils from 'xe-utils'
import XEUtils, { stringToNumber } from 'xe-utils'
XEUtils.toNumber(123) // 123
XEUtils.toNumber('12.3'}) // 12.3
XEUtils.toNumber('abc') // 0
stringToNumber('abc') // 0
```
### toInteger/stringToInteger ( num ) 转整数
```JavaScript
import XEUtils, { stringToInteger } from 'xe-utils'
XEUtils.toInteger(123) // 123
XEUtils.toInteger('12.3'}) // 12
stringToInteger('abc') // 0
```
### trim/stringTrim ( str ) 去除字符串左右两边的空格
```JavaScript
import XEUtils, { stringTrim } from 'xe-utils'
XEUtils.stringTrim(' abc ') // 'abc'
stringTrim(' abc ') // 'abc'
```
### trimLeft/stringTrimLeft ( str ) 去除字符串左边的空格
```JavaScript
import XEUtils, { stringTrimLeft } from 'xe-utils'
XEUtils.stringTrimLeft(' abc ') // 'abc '
stringTrimLeft(' abc ') // 'abc '
```
### trimRight/stringTrimRight ( str ) 去除字符串右边的空格
```JavaScript
import XEUtils, { stringTrimRight } from 'xe-utils'
XEUtils.stringTrimRight(' abc ') // ' aa'
stringTrimRight(' abc ') // ' aa'
```
### escape ( str ) 转义HTML字符串,替换&, <, >, ", ', `字符

@@ -672,6 +739,5 @@ ```JavaScript

// 转义
XEUtils.escape('<a>link</a>')
// '&lt;a&gt;link&lt;/a&gt;'
XEUtils.escape('<a>link</a>') // '&lt;a&gt;link&lt;/a&gt;'
```
### unescape ( str ) 反转escape

@@ -681,7 +747,59 @@ ```JavaScript

// 反转
XEUtils.unescape('&lt;a&gt;link&lt;/a&gt;')
// '<a>link</a>'
XEUtils.unescape('&lt;a&gt;link&lt;/a&gt;') // '<a>link</a>'
```
### camelCase ( str ) 将字符串转成驼峰字符串
```JavaScript
import XEUtils from 'xe-utils'
XEUtils.camelCase('projectName') // 'project-name'
```
### kebabCase ( str ) 将带驼峰字符串转成字符串
```JavaScript
import XEUtils from 'xe-utils'
XEUtils.kebabCase('project-name') // 'projectName'
```
### stringRepeat ( str, count ) 将字符串重复 n次
```JavaScript
import XEUtils, { stringRepeat } from 'xe-utils'
XEUtils.repeat('a', 5) // aaaaa
stringRepeat('a', 5) // aaaaa
```
### padStart/stringPadStart ( str, targetLength, padString ) 用指定字符从前面开始补全字符串
```JavaScript
import XEUtils, { stringPadStart } from 'xe-utils'
XEUtils.padStart('a', 5, 'b') // bbbba
stringPadStart('a', 5, 'b') // bbbba
```
### padEnd/stringPadEnd ( str, targetLength, padString ) 用指定字符从后面开始补全字符串
```JavaScript
import XEUtils, { stringPadEnd } from 'xe-utils'
XEUtils.padEnd('a', 5, 'b') // abbbb
stringPadEnd('a', 5, 'b') // abbbb
```
### startsWith/stringStartsWith ( str, val, startIndex ) 判断字符串是否在源字符串的头部
```JavaScript
import XEUtils, { stringStartsWith } from 'xe-utils'
XEUtils.startsWith('abc', 'b') // false
stringStartsWith('abc', 'a') // true
```
### endsWith/stringEndsWith ( str, val, startIndex ) 判断字符串是否在源字符串的尾部
```JavaScript
import XEUtils, { stringEndsWith } from 'xe-utils'
XEUtils.endsWith('abc', 5, 'a') // false
stringEndsWith('abc', 5, 'c') // true
```
### browse ( ) 获取浏览器内核

@@ -751,13 +869,13 @@ ```JavaScript

XEUtils.cookie('name', 'value')
// 指定时间戳 10 秒后过期
// 指定 10 秒后过期
XEUtils.cookie('name', 'value', {expires: '10s'})
// 指定时间戳 1 分钟后过期
// 指定 1 分钟后过期
XEUtils.cookie('name', 'value', {expires: '1m'})
// 指定时间戳 1 小时后过期
// 指定 1 小时后过期
XEUtils.cookie('name', 'value', {expires: '1H'})
// 指定时间戳 1 天后过期
// 指定 1 天后过期
XEUtils.cookie('name', 'value', {expires: '1d'})
// 指定时间戳 1 月后过期
// 指定 1 月后过期
XEUtils.cookie('name', 'value', {expires: '1M'})
// 指定时间戳 1 年后过期
// 指定 1 年后过期
XEUtils.cookie('name', 'value', {expires: '1y'})

@@ -764,0 +882,0 @@ // 指定时间戳后过期

@@ -5,4 +5,4 @@ 'use strict'

XEUtils.version = '1.5.26'
XEUtils.version = '1.5.27'
module.exports = XEUtils

@@ -227,3 +227,4 @@ 'use strict'

/**
* 求和函数,将数值相加
* 求和函数,将数值相加
*
* @param {Array} array 数组

@@ -233,3 +234,3 @@ * @param {Function/String} iteratee 方法或属性

* @return {Number}
*/
*/
function arraySum (array, iteratee, context) {

@@ -249,2 +250,24 @@ var result = 0

/**
* 接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。
*
* @param {Array} array 数组
* @param {Function} callback 方法
* @param {Object} initialValue 初始值
* @return {Number}
*/
function arrayReduce (array, callback, initialValue) {
var previous = initialValue
var index = 0
var len = array.length
if (typeof initialValue === 'undefined') {
previous = array[0]
index = 1
}
for (; index < len; index++) {
previous = callback.call(global, previous, array[index], index, array)
}
return previous
}
var arrayExports = {

@@ -272,5 +295,7 @@ arrayUniq: arrayUniq,

arraySum: arraySum,
sum: sum
sum: sum,
arrayReduce: arrayReduce,
reduce: arrayReduce
}
module.exports = arrayExports

@@ -10,7 +10,7 @@ 'use strict'

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
var isArray = Array.isArray || function (val) {
return objectToString.call(val) === '[object Array]'
var isArray = Array.isArray || function (obj) {
return objectToString.call(obj) === '[object Array]'
}

@@ -21,7 +21,7 @@

*
* @param {Number} val 数值
* @param {Number} obj 数值
* @return {Boolean}
*/
function isFloat (val) {
return val !== null && !isNaN(val) && !isInteger(val)
function isFloat (obj) {
return obj !== null && !isNaN(obj) && !isInteger(obj)
}

@@ -40,7 +40,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isFunction (val) {
return typeof val === 'function'
function isFunction (obj) {
return typeof obj === 'function'
}

@@ -51,7 +51,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isBoolean (val) {
return typeof val === 'boolean'
function isBoolean (obj) {
return typeof obj === 'boolean'
}

@@ -62,7 +62,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isString (val) {
return typeof val === 'string'
function isString (obj) {
return typeof obj === 'string'
}

@@ -73,7 +73,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isNumber (val) {
return typeof val === 'number'
function isNumber (obj) {
return typeof obj === 'number'
}

@@ -84,7 +84,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isRegExp (val) {
return objectToString.call(val) === '[object RegExp]'
function isRegExp (obj) {
return objectToString.call(obj) === '[object RegExp]'
}

@@ -95,7 +95,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isObject (val) {
return typeof val === 'object'
function isObject (obj) {
return typeof obj === 'object'
}

@@ -106,7 +106,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isPlainObject (val) {
return val ? val.constructor === Object : false
function isPlainObject (obj) {
return obj ? obj.constructor === Object : false
}

@@ -117,7 +117,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isDate (val) {
return objectToString.call(val) === '[object Date]'
function isDate (obj) {
return objectToString.call(obj) === '[object Date]'
}

@@ -128,7 +128,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isError (val) {
return objectToString.call(val) === '[object Error]'
function isError (obj) {
return objectToString.call(obj) === '[object Error]'
}

@@ -139,7 +139,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isTypeError (val) {
return val ? val.constructor === TypeError : false
function isTypeError (obj) {
return obj ? obj.constructor === TypeError : false
}

@@ -150,8 +150,8 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isEmpty (val) {
if (val === 0 || !isNumber(val)) {
for (var key in val) {
function isEmpty (obj) {
if (obj === 0 || !isNumber(obj)) {
for (var key in obj) {
return false

@@ -167,7 +167,7 @@ }

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isNull (val) {
return val === null
function isNull (obj) {
return obj === null
}

@@ -178,7 +178,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isSymbol (val) {
return typeof Symbol !== 'undefined' && Symbol.isSymbol ? Symbol.isSymbol(val) : (typeof val === 'symbol')
function isSymbol (obj) {
return typeof Symbol !== 'undefined' && Symbol.isSymbol ? Symbol.isSymbol(obj) : (typeof obj === 'symbol')
}

@@ -189,7 +189,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isArguments (val) {
return objectToString.call(val) === '[object Arguments]'
function isArguments (obj) {
return objectToString.call(obj) === '[object Arguments]'
}

@@ -200,7 +200,7 @@

*
* @param {Number} num 数值
* @param {Object} obj 对象
* @return {Boolean}
*/
function isElement (val) {
return val && isString(val.nodeName) && isNumber(val.nodeType)
function isElement (obj) {
return obj && isString(obj.nodeName) && isNumber(obj.nodeType)
}

@@ -211,7 +211,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isDocument (val) {
return val && val.nodeType === 9 && typeof document !== 'undefined'
function isDocument (obj) {
return obj && obj.nodeType === 9 && typeof document !== 'undefined'
}

@@ -222,7 +222,7 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isWindow (val) {
return val && val === val.window && typeof window !== 'undefined'
function isWindow (obj) {
return obj && obj === obj.window && typeof window !== 'undefined'
}

@@ -233,10 +233,50 @@

*
* @param {Object} val 对象
* @param {Object} obj 对象
* @return {Boolean}
*/
function isFormData (val) {
return typeof FormData !== 'undefined' && val instanceof FormData
function isFormData (obj) {
return typeof FormData !== 'undefined' && obj instanceof FormData
}
/**
* 判断是否Map对象
*
* @param {Object} obj 对象
* @return {Boolean}
*/
function isMap (obj) {
return typeof Map !== 'undefined' && obj instanceof Map
}
/**
* 判断是否WeakMap对象
*
* @param {Object} obj 对象
* @return {Boolean}
*/
function isWeakMap (obj) {
return typeof WeakMap !== 'undefined' && obj instanceof WeakMap
}
/**
* 判断是否Set对象
*
* @param {Object} obj 对象
* @return {Boolean}
*/
function isSet (obj) {
return typeof Set !== 'undefined' && obj instanceof Set
}
/**
* 判断是否WeakSet对象
*
* @param {Object} obj 对象
* @return {Boolean}
*/
function isWeakSet (obj) {
return typeof WeakSet !== 'undefined' && obj instanceof WeakSet
}
/**
* 判断是否闰年

@@ -651,2 +691,6 @@ *

isFormData: isFormData,
isMap: isMap,
isWeakMap: isWeakMap,
isSet: isSet,
isWeakSet: isWeakSet,
isLeapYear: isLeapYear,

@@ -653,0 +697,0 @@ getType: getType,

@@ -37,3 +37,3 @@ 'use strict'

}
if (!isNaN(str)) {
if (/^[0-9]{11,13}$/.test(str)) {
return new Date(str)

@@ -40,0 +40,0 @@ }

@@ -61,2 +61,3 @@ 'use strict'

* @param { String/Number } str 数值
* @return {Number}
*/

@@ -71,2 +72,11 @@ function stringToNumber (str) {

/**
* 转整数
* @param { String/Number } str 数值
* @return {Number}
*/
function stringToInteger (str) {
return parseInt(stringToNumber(str))
}
var numberExports = {

@@ -80,5 +90,7 @@ getRandom: getRandom,

toNumber: stringToNumber,
stringToNumber: stringToNumber
stringToNumber: stringToNumber,
toInteger: stringToInteger,
stringToInteger: stringToInteger
}
module.exports = numberExports

@@ -5,2 +5,32 @@ 'use strict'

/**
* 去除字符串左右两边的空格
*
* @param {String} str 字符串
* @return {String}
*/
function stringTrim (str) {
return str && str.trim ? str.trim() : stringTrimRight(stringTrimLeft(str))
}
/**
* 去除字符串左边的空格
*
* @param {String} str 字符串
* @return {String}
*/
function stringTrimLeft (str) {
return str && str.trimLeft ? str.trimLeft() : ('' + str).replace(/^[\s\uFEFF\xA0]+/g, '')
}
/**
* 去除字符串右边的空格
*
* @param {String} str 字符串
* @return {String}
*/
function stringTrimRight (str) {
return str && str.trimRight ? str.trimRight() : ('' + str).replace(/[\s\uFEFF\xA0]+$/g, '')
}
var escapeMap = {

@@ -23,3 +53,3 @@ '&': '&amp;',

return function (str) {
return String(str || '').replace(replaceRegexp, function (match) {
return ('' + str).replace(replaceRegexp, function (match) {
return dataMap[match]

@@ -46,7 +76,135 @@ })

/**
* 将带字符串转成驼峰字符串,例如 project-name => projectName
*
* @param {String} str 字符串
* @return {String}
*/
function camelCase (str) {
return ('' + str).replace(/(-[a-zA-Z])/g, function (text, u) { return u.substring(1).toLocaleUpperCase() })
}
/**
* 将带驼峰字符串转成字符串,例如 projectName => project-name
*
* @param {String} str 字符串
* @return {String}
*/
function kebabCase (str) {
return ('' + str).replace(/([A-Z])/g, function (text, u) { return '-' + u.toLowerCase() })
}
/**
* 将字符串重复 n次
*
* @param {String} str 字符串
* @param {Number} count 次数
* @return {String}
*/
function stringRepeat (str, count) {
var rest = '' + str
if (str.repeat) {
return str.repeat(count)
}
var list = isNaN(count) ? [] : new Array(parseInt(count))
return list.join(rest) + (list.length > 0 ? rest : '')
}
/**
* 用指定字符从前面开始补全字符串
*
* @param {String} str 字符串
* @param {Number} targetLength 结果长度
* @param {Number} padString 补全字符
* @return {String}
*/
function stringPadStart (str, targetLength, padString) {
var rest = '' + str
if (rest.padStart) {
return rest.padStart(targetLength, padString)
}
if ((targetLength >> 0) > rest.length) {
padString = String(padString || ' ')
targetLength -= rest.length
if (targetLength > padString.length) {
padString += stringRepeat(padString, targetLength / padString.length)
}
return padString.slice(0, targetLength) + rest
}
return rest
}
/**
* 用指定字符从后面开始补全字符串
*
* @param {String} str 字符串
* @param {Number} targetLength 结果长度
* @param {Number} padString 补全字符
* @return {String}
*/
function stringPadEnd (str, targetLength, padString) {
var rest = '' + str
if (rest.padEnd) {
return rest.padEnd(targetLength, padString)
}
if ((targetLength >> 0) > rest.length) {
padString = String(padString || ' ')
targetLength -= rest.length
if (targetLength > padString.length) {
padString += stringRepeat(padString, targetLength / padString.length)
}
return rest + padString.slice(0, targetLength)
}
return rest
}
/**
* 判断字符串是否在源字符串的头部
*
* @param {String} str 字符串
* @param {String/Number} val 值
* @param {Number} startIndex 开始索引
* @return {String}
*/
function stringStartsWith (str, val, startIndex) {
var rest = '' + str
return (arguments.length === 1 ? rest : rest.substring(startIndex)).indexOf(val) === 0
}
/**
* 判断字符串是否在源字符串的尾部
*
* @param {String} str 字符串
* @param {String/Number} val 值
* @param {Number} startIndex 开始索引
* @return {String}
*/
function stringEndsWith (str, val, startIndex) {
var rest = '' + str
return arguments.length === 1 ? rest.indexOf(val) === rest.length - 1 : rest.substring(0, startIndex).indexOf(val) === startIndex - 1
}
var stringExports = {
trim: stringTrim,
stringTrim: stringTrim,
trimLeft: stringTrimLeft,
stringTrimLeft: stringTrimLeft,
trimRight: stringTrimRight,
stringTrimRight: stringTrimRight,
escape: escape,
unescape: unescape
unescape: unescape,
camelCase: camelCase,
kebabCase: kebabCase,
repeat: stringRepeat,
stringRepeat: stringRepeat,
padStart: stringPadStart,
stringPadStart: stringPadStart,
padEnd: stringPadEnd,
stringPadEnd: stringPadEnd,
startsWith: stringStartsWith,
stringStartsWith: stringStartsWith,
endsWith: stringEndsWith,
stringEndsWith: stringEndsWith
}
module.exports = stringExports