diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..16ee306 --- /dev/null +++ b/.npmignore @@ -0,0 +1,8 @@ +**/* +!/dist/** +!/lib/** +!index.js +!index.d.ts +!index.d.cts +!LICENSE +!README.md diff --git a/methods-util.js b/dist/browser/methods_util.cjs similarity index 78% rename from methods-util.js rename to dist/browser/methods_util.cjs index 1cb2aef..4880b3e 100644 --- a/methods-util.js +++ b/dist/browser/methods_util.cjs @@ -1,116 +1,114 @@ -/** 正则匹配相关信息 */ +// methods_util v0.5.2 Copyright (c) 2023 Wei Zhixiang and contributors +'use strict'; -// 是否邮箱 -export const isEmail = (s) => { +const isEmail = (s) => { return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s) -} +}; // 是否手机号码 -export const isMobile = (s) => { +const isMobile = (s) => { return /^1[0-9]{10}$/.test(s) -} +}; // 是否大陆有效手机号码 -export const isStrictMobile = (s) => { +const isStrictMobile = (s) => { return /^[0]?1[3|5][0-9]{10}$/.test(s) -} +}; // 是否电话号码 -export const isPhone = (s) => { +const isPhone = (s) => { return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s) -} +}; // 是否Url地址 -export const isURL = (s) => { +const isURL = (s) => { return /^http[s]?:\/\/.*/.test(s) -} +}; // 是否字符串 -export const isString = (o) => { +const isString = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'String' -} +}; // 是否数字 -export const isNumber = (o) => { +const isNumber = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Number' -} +}; // 是否Boolean -export const isBoolean = (o) => { +const isBoolean = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean' -} +}; // 是否函数 -export const isFunction = (o) => { +const isFunction = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Function' -} +}; // 是否为Null -export const isNull = (o) => { +const isNull = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Null' -} +}; // 是否为undefined -export const isUndefined = (o) => { +const isUndefined = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined' -} +}; // 是否对象 -export const isObj = (o) => { +const isObj = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Object' -} +}; // 是否数组 -export const isArray = (o) => { +const isArray = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Array' -} +}; // 是否时间 -export const isDate = (o) => { +const isDate = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Date' -} +}; // 是否正则 -export const isRegExp = (o) => { +const isRegExp = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp' -} +}; // 是否为错误对象 -export const isError = (o) => { +const isError = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Error' -} +}; // 是否为Symbol函数 -export const isSymbol = (o) => { +const isSymbol = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol' -} +}; // 是否为Promise对象 -export const isPromise = (o) => { +const isPromise = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Promise' -} +}; // 是否为Set对象 -export const isSet = (o) => { +const isSet = (o) => { return Object.prototype.toString.call(o).slice(8, -1) === 'Set' -} - -/** 浏览器设备相关 */ +}; // 是否为移动端 -export const isDeviceMobile = () => { +const isDeviceMobile = () => { return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase()) -} +}; // 是否为IOS -export const isIOS = () => { - var u = window.navigator.userAgent +const isIOS = () => { + var u = window.navigator.userAgent; if (u.indexOf('iPhone') !== -1) return true else return false -} +}; // 是否为PC端 -export const isPC = () => { +const isPC = () => { var userAgentInfo = navigator.userAgent; var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", @@ -123,31 +121,60 @@ export const isPC = () => { } } return flag; -} +}; // 是否为微信浏览器 -export const isWeiXinBrowser = () => { - window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger' -} +const isWeiXinBrowser = () => { + window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'; +}; // 是否为QQ浏览器 -export const isQQBrowser = () => { +const isQQBrowser = () => { return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i) -} +}; // 是否为IE浏览器 -export const isIEBrowser = () => { +const isIEBrowser = () => { if (!!window.ActiveXObject || "ActiveXObject" in window) { return true; } else { return false; } -} +}; + + +var is = { + isEmail, + isMobile, + isStrictMobile, + isPhone, + isURL, + isString, + isNumber, + isBoolean, + isFunction, + isNull, + isUndefined, + isObj, + isArray, + isDate, + isRegExp, + isError, + isSymbol, + isPromise, + isSet, + isDeviceMobile, + isIOS, + isPC, + isWeiXinBrowser, + isQQBrowser, + isIEBrowser, +}; // 获取IE浏览器版本号 -export const getIEVersions = () => { +const getIEVersions = () => { if (!!window.ActiveXObject || "ActiveXObject" in window) { - var str = window.navigator.userAgent + var str = window.navigator.userAgent; if (str.indexOf("MSIE 6.0") != "-1") return "IE6"; if (str.indexOf("MSIE 7.0") != "-1") return "IE7"; if (str.indexOf("MSIE 8.0") != "-1") return "IE8"; @@ -157,10 +184,10 @@ export const getIEVersions = () => { } else { return false; } -} +}; // 获取浏览器类型 -export const getBrowserType = () => { +const getBrowserType = () => { var str = window.navigator.userAgent; if (str.indexOf("QQBrowser") != "-1") { return "QQ"; @@ -179,20 +206,18 @@ export const getBrowserType = () => { } else if (str.indexOf("Safari") != "-1") { return "safari"; } -} - -/** BOM 操作相关 */ +}; // 获取url参数 -export const getUrlParam = (name, href) => { +const getUrlParam = (name, href) => { const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); const search = href ? href.split('?')[1] : window.location.href.split('?')[1]; const r = search.match(reg) || []; return r[2]; -} +}; // 追加url参数 -export const appendUrlParam = (url, key, value) => { +const appendUrlParam = (url, key, value) => { var options = key; if (typeof options == 'string') { options = {}; @@ -200,48 +225,53 @@ export const appendUrlParam = (url, key, value) => { } options = $.param(options); if (url.includes('?')) { - url += '&' + options + url += '&' + options; } else { - url += '?' + options + url += '?' + options; } return url; -} +}; -/** DOM相关 */ +var bom = { + getIEVersions, + getBrowserType, + getUrlParam, + appendUrlParam, +}; // el是否包含某个class -export const hasClass = (el, className) => { - let reg = new RegExp('(^|\\s)' + className + '(\\s|$)') +const hasClass = (el, className) => { + let reg = new RegExp('(^|\\s)' + className + '(\\s|$)'); return reg.test(el.className) -} +}; // el添加某个class -export const addClass = (el, className) => { +const addClass = (el, className) => { if (hasClass(el, className)) { return } - let newClass = el.className.split(' ') - newClass.push(className) - el.className = newClass.join(' ') -} + let newClass = el.className.split(' '); + newClass.push(className); + el.className = newClass.join(' '); +}; // el去除某个class -export const removeClass = (el, className) => { +const removeClass = (el, className) => { if (!hasClass(el, className)) { return } - let reg = new RegExp('(^|\\s)' + className + '(\\s|$)', 'g') - el.className = el.className.replace(reg, ' ') -} + let reg = new RegExp('(^|\\s)' + className + '(\\s|$)', 'g'); + el.className = el.className.replace(reg, ' '); +}; // 去除Html标签 -export const removeHtmltag = (str) => { +const removeHtmltag = (str) => { return str.replace(/<[^>]+>/g, '') -} +}; // 动态引入js -export const injectScript = (src) => { +const injectScript = (src) => { return new Promise((resolve, reject) => { if (!!src) { const s = document.createElement('script'); @@ -254,38 +284,38 @@ export const injectScript = (src) => { s.onreadystatechange = function () { if (s.readyState == 'complete' || s.readyState == 'loaded') { s.onreadystatechange = null; - resolve() + resolve(); } - } + }; } else { //非IE s.onload = function () { s.onload = null; - resolve() - } + resolve(); + }; } } else { - reject('The script src property value is null') + reject('The script src property value is null'); } }) -} +}; // 获取滚动的坐标 -export const getScrollPosition = (el = window) => ({ +const getScrollPosition = (el = window) => ({ x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft, y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop -}) +}); // 滚动到顶部 -export const scrollToTop = () => { +const scrollToTop = () => { const c = document.documentElement.scrollTop || document.body.scrollTop; if (c > 0) { window.requestAnimationFrame(scrollToTop); window.scrollTo(0, c - c / 8); } -} +}; // 获取光标所在位置 -export const getCursortPosition = (dom) => { +const getCursortPosition = (dom) => { // ie if (document.selection) { let range = document.selection.createRange(); @@ -294,24 +324,33 @@ export const getCursortPosition = (dom) => { } else { return dom.selectionStart } -} +}; -/** 功能函数 */ +var dom = { + hasClass, + addClass, + removeClass, + removeHtmltag, + injectScript, + getScrollPosition, + scrollToTop, + getCursortPosition, +}; // 洗牌随机算法 -export const shuffle = (arr) => { +const shuffle = (arr) => { var result = [], random; while (arr.length > 0) { random = Math.floor(Math.random() * arr.length); - result.push(arr[random]) - arr.splice(random, 1) + result.push(arr[random]); + arr.splice(random, 1); } return result; -} +}; // 类型判断集合 -export const checkStr = (str, type) => { +const checkStr = (str, type) => { switch (type) { case 'phone': //手机号码 return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str); @@ -348,58 +387,58 @@ export const checkStr = (str, type) => { default: return true; } -} +}; // 严格的身份证效验 -export const isCardID = (sId) => { +const isCardID = (sId) => { if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) { - console.log('你输入的身份证长度或格式错误') + console.log('你输入的身份证长度或格式错误'); return false } //身份证城市 var aCity = { 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: "台湾", 81: "香港", 82: "澳门", 91: "国外" }; if (!aCity[parseInt(sId.substr(0, 2))]) { - console.log('你的身份证地区非法') + console.log('你的身份证地区非法'); return false } // 出生日期验证 var sBirthday = (sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2))).replace(/-/g, "/"), - d = new Date(sBirthday) + d = new Date(sBirthday); if (sBirthday != (d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate())) { - console.log('身份证上的出生日期非法') + console.log('身份证上的出生日期非法'); return false } // 身份证号码校验 var sum = 0, weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2], - codes = "10X98765432" + codes = "10X98765432"; for (var i = 0; i < sId.length - 1; i++) { sum += sId[i] * weights[i]; } var last = codes[sum % 11]; //计算出来的最后一位身份证号码 if (sId[sId.length - 1] != last) { - console.log('你输入的身份证号非法') + console.log('你输入的身份证号非法'); return false } return true -} +}; // 随机数范围 -export const randomRange = function (min, max) { +const randomRange = function (min, max) { if (arguments.length === 2) { return Math.floor(min + Math.random() * ((max + 1) - min)) } else { return null } -} +}; // 判断元素是否在数组中 -export const inArray = (arr, val) => { +const inArray = (arr, val) => { return arr.indexOf(val) != -1 ? true : false -} +}; // 数组排序 {type} 1:从小到大 2:从大到小 -export const sort = (arr, type = 1) => { +const sort = (arr, type = 1) => { return arr.sort((a, b) => { switch (type) { case 1: @@ -410,10 +449,10 @@ export const sort = (arr, type = 1) => { return arr } }) -} +}; // 数组去重 -export const unique = (arr) => { +const unique = (arr) => { if (Array.hasOwnProperty('from')) { return Array.from(new Set(arr)); } else { @@ -426,56 +465,56 @@ export const unique = (arr) => { } return r; } -} +}; // 求两个集合的并集 -export const union = (arr1, arr2) => { - var newArr = arr1.concat(arr2) +const union = (arr1, arr2) => { + var newArr = arr1.concat(arr2); return unique(newArr) -} +}; // 求两个集合的交集 -export const intersection = (arr1, arr2) => { - var arr1_x = unique(arr1) - var arr2_x = unique(arr2) +const intersection = (arr1, arr2) => { + var arr1_x = unique(arr1); + var arr2_x = unique(arr2); return arr1_x.filter(function (item) { return arr2_x.indexOf(item) > -1 }) -} +}; // 删除集合中其中一个目标元素 -export const listRemoveTarget = (list, target) => { - var index = list.indexOf(target) +const listRemoveTarget = (list, target) => { + var index = list.indexOf(target); if (index > -1) { - list.splice(index, 1) + list.splice(index, 1); } return list -} +}; // 求集合中的最大值 -export const listMax = list => { +const listMax = list => { return Math.max.apply(null, list) -} +}; // 求集合中的最小值 -export const listMin = list => { +const listMin = list => { return Math.min.apply(null, list) -} +}; // 求和 -export const sum = arr => { +const sum = arr => { return arr.reduce((pre, cur) => { return pre + cur }) -} +}; // 平均值 -export const average = arr => { +const average = arr => { return sum(arr) / arr.length -} +}; // 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格 -export const trim = (str, type = 1) => { +const trim = (str, type = 1) => { switch (type) { case 1: return str.replace(/\s+/g, '') @@ -488,63 +527,63 @@ export const trim = (str, type = 1) => { default: return str } -} +}; // 检测密码强度 -export const checkPwd = (str) => { +const checkPwd = (str) => { var Lv = 0; if (str.length < 6) { return Lv } if (/[0-9]/.test(str)) { - Lv++ + Lv++; } if (/[a-z]/.test(str)) { - Lv++ + Lv++; } if (/[A-Z]/.test(str)) { - Lv++ + Lv++; } if (/[\.|-|_]/.test(str)) { - Lv++ + Lv++; } return Lv; -} +}; // 防抖函数 -export const debounce = function (fn, delay) { +const debounce = function (fn, delay) { var timer = null; return function () { var that = this, arg = arguments; if (timer) { - window.clearTimeout(timer) - timer = null + window.clearTimeout(timer); + timer = null; } timer = window.setTimeout(() => { - fn.apply(that, arg) - }, delay) + fn.apply(that, arg); + }, delay); } -} +}; // 节流函数 -export const throttle = function (fn, delay) { - var oldTime = Date.now() +const throttle = function (fn, delay) { + var oldTime = Date.now(); return function () { var time = Date.now(), that = this, arg = arguments; if (time - oldTime >= delay) { - oldTime = Date.now() + oldTime = Date.now(); return fn.apply(that, arg) } } -} +}; // 获取文章中出现次数最多的单词 -export const findMostWord = function (article) { +const findMostWord = function (article) { if (!article) return false - article = article.trim().toLowerCase() // 清除两端空字符串并转为小写 + article = article.trim().toLowerCase(); // 清除两端空字符串并转为小写 let wordlist = article.match(/[a-z]+/g), // 将文章中的每个单词转换成数组中的每一项元素 visited = [], maxNum = 0, @@ -553,48 +592,48 @@ export const findMostWord = function (article) { // 遍历判断单词出现次数 wordlist.forEach(function (item) { if (visited.indexOf(item) === -1) { - visited.push(item) + visited.push(item); let wrod = new RegExp(" " + item + " ", "g"), // 正则 全局匹配 当前单词 num = article.match(wrod).length; // 当前单词出现的个数 if (num > maxNum) { - maxNum = num - maxWord = item + maxNum = num; + maxWord = item; } } - }) + }); return maxWord + " " + maxNum -} +}; // 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] -export const flattenArray = function (array) { +const flattenArray = function (array) { if (!Array.isArray(array)) return false - var res = [] + var res = []; res = array.reduce((prev, cur) => { return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur) - }, []) + }, []); return res -} +}; // 求最大公约数 -export const getMaxCommonDivisor = function (a, b) { +const getMaxCommonDivisor = function (a, b) { if (b == 0) return a return getMaxCommonDivisor(b, a % b) -} +}; // 最小公倍数 -export const getMinCommonMultiple = function (a, b) { +const getMinCommonMultiple = function (a, b) { return a * b / getMaxCommonDivisor(a, b) -} +}; // 判断字符串是否回文字符串 -export const isPalindrome = function (str) { +const isPalindrome = function (str) { var reg = /[\W_]/g; var newStr = str.replace(reg, '').toLowerCase(); var reverserStr = newStr.split('').reverse().join(''); return reverserStr === newStr; -} +}; // 文件大小转化 -export const to_filesize = (e) => { +const to_filesize = (e) => { if (!e) { return "-"; } @@ -602,47 +641,9 @@ export const to_filesize = (e) => { var f = Math.floor(Math.log(e) / Math.log(1024)); var h = (f > 1) ? 2 : 0; return (f > 1) ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f]; -} +}; - -export default { - isEmail, - isMobile, - isStrictMobile, - isPhone, - isURL, - isString, - isNumber, - isBoolean, - isFunction, - isNull, - isUndefined, - isObj, - isArray, - isDate, - isRegExp, - isError, - isSymbol, - isPromise, - isSet, - isDeviceMobile, - isIOS, - isPC, - isWeiXinBrowser, - isQQBrowser, - isIEBrowser, - getIEVersions, - getBrowserType, - getUrlParam, - appendUrlParam, - hasClass, - addClass, - removeClass, - removeHtmltag, - injectScript, - getScrollPosition, - scrollToTop, - getCursortPosition, +var func = { shuffle, checkStr, isCardID, @@ -667,4 +668,17 @@ export default { getMinCommonMultiple, isPalindrome, to_filesize -} +}; + +const methods_util = { + ...is, + ...bom, + ...dom, + ...func +}; + + +methods_util.default = methods_util; + +module.exports = methods_util; +//# sourceMappingURL=methods_util.cjs.map diff --git a/dist/browser/methods_util.cjs.map b/dist/browser/methods_util.cjs.map new file mode 100644 index 0000000..d9324be --- /dev/null +++ b/dist/browser/methods_util.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"methods_util.cjs","sources":["../../lib/core/is.js","../../lib/core/bom.js","../../lib/core/dom.js","../../lib/core/func.js","../../lib/methods_util.js"],"sourcesContent":["const isEmail = (s) => {\r\n return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s)\r\n}\r\n\r\n// 是否手机号码\r\nconst isMobile = (s) => {\r\n return /^1[0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否大陆有效手机号码\r\nconst isStrictMobile = (s) => {\r\n return /^[0]?1[3|5][0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否电话号码\r\nconst isPhone = (s) => {\r\n return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)\r\n}\r\n\r\n// 是否Url地址\r\nconst isURL = (s) => {\r\n return /^http[s]?:\\/\\/.*/.test(s)\r\n}\r\n\r\n// 是否字符串\r\nconst isString = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'String'\r\n}\r\n\r\n// 是否数字\r\nconst isNumber = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Number'\r\n}\r\n\r\n// 是否Boolean\r\nconst isBoolean = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'\r\n}\r\n\r\n// 是否函数\r\nconst isFunction = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Function'\r\n}\r\n\r\n// 是否为Null\r\nconst isNull = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Null'\r\n}\r\n\r\n// 是否为undefined\r\nconst isUndefined = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'\r\n}\r\n\r\n// 是否对象\r\nconst isObj = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Object'\r\n}\r\n\r\n// 是否数组\r\nconst isArray = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Array'\r\n}\r\n\r\n// 是否时间\r\nconst isDate = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Date'\r\n}\r\n\r\n// 是否正则\r\nconst isRegExp = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'\r\n}\r\n\r\n// 是否为错误对象\r\nconst isError = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Error'\r\n}\r\n\r\n// 是否为Symbol函数\r\nconst isSymbol = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'\r\n}\r\n\r\n// 是否为Promise对象\r\nconst isPromise = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'\r\n}\r\n\r\n// 是否为Set对象\r\nconst isSet = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Set'\r\n}\r\n\r\n// 是否为移动端\r\nconst isDeviceMobile = () => {\r\n return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase())\r\n}\r\n\r\n// 是否为IOS\r\nconst isIOS = () => {\r\n var u = window.navigator.userAgent\r\n if (u.indexOf('iPhone') !== -1) return true\r\n else return false\r\n}\r\n\r\n// 是否为PC端\r\nconst isPC = () => {\r\n var userAgentInfo = navigator.userAgent;\r\n var Agents = [\"Android\", \"iPhone\",\r\n \"SymbianOS\", \"Windows Phone\",\r\n \"iPad\", \"iPod\"];\r\n var flag = true;\r\n for (var v = 0; v < Agents.length; v++) {\r\n if (userAgentInfo.indexOf(Agents[v]) > 0) {\r\n flag = false;\r\n break;\r\n }\r\n }\r\n return flag;\r\n}\r\n\r\n// 是否为微信浏览器\r\nconst isWeiXinBrowser = () => {\r\n window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'\r\n}\r\n\r\n// 是否为QQ浏览器\r\nconst isQQBrowser = () => {\r\n return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)\r\n}\r\n\r\n// 是否为IE浏览器\r\nconst isIEBrowser = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n\r\nexport default {\r\n isEmail,\r\n isMobile,\r\n isStrictMobile,\r\n isPhone,\r\n isURL,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isObj,\r\n isArray,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isSymbol,\r\n isPromise,\r\n isSet,\r\n isDeviceMobile,\r\n isIOS,\r\n isPC,\r\n isWeiXinBrowser,\r\n isQQBrowser,\r\n isIEBrowser,\r\n}\r\n","// 获取IE浏览器版本号\r\nconst getIEVersions = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n var str = window.navigator.userAgent\r\n if (str.indexOf(\"MSIE 6.0\") != \"-1\") return \"IE6\";\r\n if (str.indexOf(\"MSIE 7.0\") != \"-1\") return \"IE7\";\r\n if (str.indexOf(\"MSIE 8.0\") != \"-1\") return \"IE8\";\r\n if (str.indexOf(\"MSIE 9.0\") != \"-1\") return \"IE9\";\r\n if (str.indexOf(\"MSIE 10.0\") != \"-1\") return \"IE10\";\r\n return \"IE11\";\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n// 获取浏览器类型\r\nconst getBrowserType = () => {\r\n var str = window.navigator.userAgent;\r\n if (str.indexOf(\"QQBrowser\") != \"-1\") {\r\n return \"QQ\";\r\n } else if (str.indexOf(\"LBBROWSER\") != \"-1\") {\r\n return \"liebao\";\r\n } else if (str.indexOf(\"SE\") != \"-1\") {\r\n return \"sougou\";\r\n } else if (str.indexOf(\"Firefox\") != \"-1\") {\r\n return \"firefox\";\r\n } else if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return \"IE\";\r\n } else if (str.indexOf(\"OPR\") != \"-1\") {\r\n return \"opera\";\r\n } else if (str.indexOf(\"Chrome\") != \"-1\") {\r\n return \"chrome\";\r\n } else if (str.indexOf(\"Safari\") != \"-1\") {\r\n return \"safari\";\r\n }\r\n}\r\n\r\n// 获取url参数\r\nconst getUrlParam = (name, href) => {\r\n const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');\r\n const search = href ? href.split('?')[1] : window.location.href.split('?')[1];\r\n const r = search.match(reg) || [];\r\n return r[2];\r\n}\r\n\r\n// 追加url参数\r\nconst appendUrlParam = (url, key, value) => {\r\n var options = key;\r\n if (typeof options == 'string') {\r\n options = {};\r\n options[key] = value;\r\n }\r\n options = $.param(options);\r\n if (url.includes('?')) {\r\n url += '&' + options\r\n } else {\r\n url += '?' + options\r\n }\r\n return url;\r\n}\r\n\r\n\r\nexport default {\r\n getIEVersions,\r\n getBrowserType,\r\n getUrlParam,\r\n appendUrlParam,\r\n}","// el是否包含某个class\r\nconst hasClass = (el, className) => {\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)')\r\n return reg.test(el.className)\r\n}\r\n\r\n// el添加某个class\r\nconst addClass = (el, className) => {\r\n if (hasClass(el, className)) {\r\n return\r\n }\r\n let newClass = el.className.split(' ')\r\n newClass.push(className)\r\n el.className = newClass.join(' ')\r\n}\r\n\r\n// el去除某个class\r\nconst removeClass = (el, className) => {\r\n if (!hasClass(el, className)) {\r\n return\r\n }\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)', 'g')\r\n el.className = el.className.replace(reg, ' ')\r\n}\r\n\r\n// 去除Html标签\r\nconst removeHtmltag = (str) => {\r\n return str.replace(/<[^>]+>/g, '')\r\n}\r\n\r\n// 动态引入js\r\nconst injectScript = (src) => {\r\n return new Promise((resolve, reject) => {\r\n if (!!src) {\r\n const s = document.createElement('script');\r\n s.type = 'text/javascript';\r\n s.async = true;\r\n s.src = src;\r\n const t = document.getElementsByTagName('script')[0];\r\n t.parentNode.insertBefore(s, t);\r\n if (s.readyState) { //IE\r\n s.onreadystatechange = function () {\r\n if (s.readyState == 'complete' || s.readyState == 'loaded') {\r\n s.onreadystatechange = null;\r\n resolve()\r\n }\r\n }\r\n } else { //非IE\r\n s.onload = function () {\r\n s.onload = null;\r\n resolve()\r\n }\r\n }\r\n } else {\r\n reject('The script src property value is null')\r\n }\r\n })\r\n}\r\n\r\n// 获取滚动的坐标\r\nconst getScrollPosition = (el = window) => ({\r\n x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,\r\n y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop\r\n})\r\n\r\n// 滚动到顶部\r\nconst scrollToTop = () => {\r\n const c = document.documentElement.scrollTop || document.body.scrollTop;\r\n if (c > 0) {\r\n window.requestAnimationFrame(scrollToTop);\r\n window.scrollTo(0, c - c / 8);\r\n }\r\n}\r\n\r\n// 获取光标所在位置\r\nconst getCursortPosition = (dom) => {\r\n // ie\r\n if (document.selection) {\r\n let range = document.selection.createRange();\r\n range.setEndPoint(\"StartToStart\", dom.createTextRange());\r\n return range.text.length;\r\n } else {\r\n return dom.selectionStart\r\n }\r\n}\r\n\r\nexport default {\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n removeHtmltag,\r\n injectScript,\r\n getScrollPosition,\r\n scrollToTop,\r\n getCursortPosition,\r\n}","// 洗牌随机算法\r\nconst shuffle = (arr) => {\r\n var result = [],\r\n random;\r\n while (arr.length > 0) {\r\n random = Math.floor(Math.random() * arr.length);\r\n result.push(arr[random])\r\n arr.splice(random, 1)\r\n }\r\n return result;\r\n}\r\n\r\n// 类型判断集合\r\nconst checkStr = (str, type) => {\r\n switch (type) {\r\n case 'phone': //手机号码\r\n return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);\r\n case 'tel': //座机\r\n return /^(0\\d{2,3}-\\d{7,8})(-\\d{1,4})?$/.test(str);\r\n case 'card': //身份证\r\n return /(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/.test(str);\r\n case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线\r\n return /^[a-zA-Z]\\w{5,17}$/.test(str)\r\n case 'postal': //邮政编码\r\n return /[1-9]\\d{5}(?!\\d)/.test(str);\r\n case 'QQ': //QQ号\r\n return /^[1-9][0-9]{4,9}$/.test(str);\r\n case 'email': //邮箱\r\n return /^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$/.test(str);\r\n case 'money': //金额(小数点2位)\r\n return /^\\d*(?:\\.\\d{0,2})?$/.test(str);\r\n case 'URL': //网址\r\n return /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(str)\r\n case 'IP': //IP\r\n return /((?:(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d)\\\\.){3}(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d))/.test(str);\r\n case 'date': //日期时间\r\n return /^(\\d{4})\\-(\\d{2})\\-(\\d{2}) (\\d{2})(?:\\:\\d{2}|:(\\d{2}):(\\d{2}))$/.test(str) || /^(\\d{4})\\-(\\d{2})\\-(\\d{2})$/.test(str)\r\n case 'english': //英文\r\n return /^[a-zA-Z]+$/.test(str);\r\n case 'chinese': //中文\r\n return /[\\u4e00-\\u9fa5]/g.test(str);\r\n case 'lower': //小写\r\n return /^[a-z]+$/.test(str);\r\n case 'upper': //大写\r\n return /^[A-Z]+$/.test(str);\r\n case 'HTML': //HTML标记\r\n return /<([^]*|[^]*|[^>])*>/.test(str);\r\n default:\r\n return true;\r\n }\r\n}\r\n\r\n// 严格的身份证效验\r\nconst isCardID = (sId) => {\r\n if (!/(^\\d{15}$)|(^\\d{17}(\\d|X|x)$)/.test(sId)) {\r\n console.log('你输入的身份证长度或格式错误')\r\n return false\r\n }\r\n //身份证城市\r\n var aCity = { 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: \"台湾\", 81: \"香港\", 82: \"澳门\", 91: \"国外\" };\r\n if (!aCity[parseInt(sId.substr(0, 2))]) {\r\n console.log('你的身份证地区非法')\r\n return false\r\n }\r\n // 出生日期验证\r\n var sBirthday = (sId.substr(6, 4) + \"-\" + Number(sId.substr(10, 2)) + \"-\" + Number(sId.substr(12, 2))).replace(/-/g, \"/\"),\r\n d = new Date(sBirthday)\r\n if (sBirthday != (d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate())) {\r\n console.log('身份证上的出生日期非法')\r\n return false\r\n }\r\n // 身份证号码校验\r\n var sum = 0,\r\n weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],\r\n codes = \"10X98765432\"\r\n for (var i = 0; i < sId.length - 1; i++) {\r\n sum += sId[i] * weights[i];\r\n }\r\n var last = codes[sum % 11]; //计算出来的最后一位身份证号码\r\n if (sId[sId.length - 1] != last) {\r\n console.log('你输入的身份证号非法')\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n// 随机数范围\r\nconst randomRange = function (min, max) {\r\n if (arguments.length === 2) {\r\n return Math.floor(min + Math.random() * ((max + 1) - min))\r\n } else {\r\n return null\r\n }\r\n}\r\n\r\n// 判断元素是否在数组中\r\nconst inArray = (arr, val) => {\r\n return arr.indexOf(val) != -1 ? true : false\r\n}\r\n\r\n// 数组排序 {type} 1:从小到大 2:从大到小\r\nconst sort = (arr, type = 1) => {\r\n return arr.sort((a, b) => {\r\n switch (type) {\r\n case 1:\r\n return a - b\r\n case 2:\r\n return b - a\r\n default:\r\n return arr\r\n }\r\n })\r\n}\r\n\r\n// 数组去重\r\nconst unique = (arr) => {\r\n if (Array.hasOwnProperty('from')) {\r\n return Array.from(new Set(arr));\r\n } else {\r\n var n = {}, r = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n if (!n[arr[i]]) {\r\n n[arr[i]] = true;\r\n r.push(arr[i]);\r\n }\r\n }\r\n return r;\r\n }\r\n}\r\n\r\n// 求两个集合的并集\r\nconst union = (arr1, arr2) => {\r\n var newArr = arr1.concat(arr2)\r\n return unique(newArr)\r\n}\r\n\r\n// 求两个集合的交集\r\nconst intersection = (arr1, arr2) => {\r\n var arr1_x = unique(arr1)\r\n var arr2_x = unique(arr2)\r\n return arr1_x.filter(function (item) {\r\n return arr2_x.indexOf(item) > -1\r\n })\r\n}\r\n\r\n// 删除集合中其中一个目标元素\r\nconst listRemoveTarget = (list, target) => {\r\n var index = list.indexOf(target)\r\n if (index > -1) {\r\n list.splice(index, 1)\r\n }\r\n return list\r\n}\r\n\r\n// 求集合中的最大值\r\nconst listMax = list => {\r\n return Math.max.apply(null, list)\r\n}\r\n\r\n// 求集合中的最小值\r\nconst listMin = list => {\r\n return Math.min.apply(null, list)\r\n}\r\n\r\n// 求和\r\nconst sum = arr => {\r\n return arr.reduce((pre, cur) => {\r\n return pre + cur\r\n })\r\n}\r\n\r\n// 平均值\r\nconst average = arr => {\r\n return sum(arr) / arr.length\r\n}\r\n\r\n// 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格\r\nconst trim = (str, type = 1) => {\r\n switch (type) {\r\n case 1:\r\n return str.replace(/\\s+/g, '')\r\n case 2:\r\n return str.replace(/(^\\s*)|(\\s*$)/g, '')\r\n case 3:\r\n return str.replace(/(^\\s*)/g, '')\r\n case 4:\r\n return str.replace(/(\\s*$)/g, '')\r\n default:\r\n return str\r\n }\r\n}\r\n\r\n// 检测密码强度\r\nconst checkPwd = (str) => {\r\n var Lv = 0;\r\n if (str.length < 6) {\r\n return Lv\r\n }\r\n if (/[0-9]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[a-z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[A-Z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[\\.|-|_]/.test(str)) {\r\n Lv++\r\n }\r\n return Lv;\r\n}\r\n\r\n// 防抖函数\r\nconst debounce = function (fn, delay) {\r\n var timer = null;\r\n return function () {\r\n var that = this,\r\n arg = arguments;\r\n if (timer) {\r\n window.clearTimeout(timer)\r\n timer = null\r\n }\r\n timer = window.setTimeout(() => {\r\n fn.apply(that, arg)\r\n }, delay)\r\n }\r\n}\r\n\r\n// 节流函数\r\nconst throttle = function (fn, delay) {\r\n var oldTime = Date.now()\r\n return function () {\r\n var time = Date.now(),\r\n that = this,\r\n arg = arguments;\r\n if (time - oldTime >= delay) {\r\n oldTime = Date.now()\r\n return fn.apply(that, arg)\r\n }\r\n }\r\n}\r\n\r\n// 获取文章中出现次数最多的单词\r\nconst findMostWord = function (article) {\r\n if (!article) return false\r\n article = article.trim().toLowerCase() // 清除两端空字符串并转为小写\r\n let wordlist = article.match(/[a-z]+/g), // 将文章中的每个单词转换成数组中的每一项元素\r\n visited = [],\r\n maxNum = 0,\r\n maxWord = '';\r\n article = \" \" + wordlist.join(\" \") + \" \";\r\n // 遍历判断单词出现次数\r\n wordlist.forEach(function (item) {\r\n if (visited.indexOf(item) === -1) {\r\n visited.push(item)\r\n let wrod = new RegExp(\" \" + item + \" \", \"g\"), // 正则 全局匹配 当前单词 \r\n num = article.match(wrod).length; // 当前单词出现的个数 \r\n if (num > maxNum) {\r\n maxNum = num\r\n maxWord = item\r\n }\r\n }\r\n })\r\n return maxWord + \" \" + maxNum\r\n}\r\n\r\n// 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]\r\nconst flattenArray = function (array) {\r\n if (!Array.isArray(array)) return false\r\n var res = []\r\n res = array.reduce((prev, cur) => {\r\n return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur)\r\n }, [])\r\n return res\r\n}\r\n\r\n// 求最大公约数\r\nconst getMaxCommonDivisor = function (a, b) {\r\n if (b == 0) return a\r\n return getMaxCommonDivisor(b, a % b)\r\n}\r\n// 最小公倍数\r\nconst getMinCommonMultiple = function (a, b) {\r\n return a * b / getMaxCommonDivisor(a, b)\r\n}\r\n\r\n// 判断字符串是否回文字符串\r\nconst isPalindrome = function (str) {\r\n var reg = /[\\W_]/g;\r\n var newStr = str.replace(reg, '').toLowerCase();\r\n var reverserStr = newStr.split('').reverse().join('');\r\n return reverserStr === newStr;\r\n}\r\n\r\n// 文件大小转化\r\nconst to_filesize = (e) => {\r\n if (!e) {\r\n return \"-\";\r\n }\r\n var g = [\" Bytes\", \" KB\", \" MB\", \" GB\", \" TB\", \" PB\", \" EB\", \" ZB\", \" YB\"];\r\n var f = Math.floor(Math.log(e) / Math.log(1024));\r\n var h = (f > 1) ? 2 : 0;\r\n return (f > 1) ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f];\r\n}\r\n\r\nexport default {\r\n shuffle,\r\n checkStr,\r\n isCardID,\r\n randomRange,\r\n inArray,\r\n sort,\r\n unique,\r\n union,\r\n intersection,\r\n listRemoveTarget,\r\n listMax,\r\n listMin,\r\n sum,\r\n average,\r\n trim,\r\n checkPwd,\r\n debounce,\r\n throttle,\r\n findMostWord,\r\n flattenArray,\r\n getMaxCommonDivisor,\r\n getMinCommonMultiple,\r\n isPalindrome,\r\n to_filesize\r\n}","import is from \"./core/is\";\r\nimport bom from \"./core/bom\";\r\nimport dom from './core/dom';\r\nimport func from \"./core/func\";\r\n\r\nconst methods_util = {\r\n ...is,\r\n ...bom,\r\n ...dom,\r\n ...func\r\n}\r\n\r\n\r\nmethods_util.default = methods_util\r\n\r\nexport default methods_util"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/esm/methods_util.js b/dist/esm/methods_util.js new file mode 100644 index 0000000..285332e --- /dev/null +++ b/dist/esm/methods_util.js @@ -0,0 +1,746 @@ +// methods_util v0.5.2 Copyright (c) 2023 Wei Zhixiang and contributors +const isEmail$1 = (s) => { + return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s) +}; + +// 是否手机号码 +const isMobile$1 = (s) => { + return /^1[0-9]{10}$/.test(s) +}; + +// 是否大陆有效手机号码 +const isStrictMobile$1 = (s) => { + return /^[0]?1[3|5][0-9]{10}$/.test(s) +}; + +// 是否电话号码 +const isPhone$1 = (s) => { + return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s) +}; + +// 是否Url地址 +const isURL$1 = (s) => { + return /^http[s]?:\/\/.*/.test(s) +}; + +// 是否字符串 +const isString$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'String' +}; + +// 是否数字 +const isNumber$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Number' +}; + +// 是否Boolean +const isBoolean$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean' +}; + +// 是否函数 +const isFunction$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Function' +}; + +// 是否为Null +const isNull$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Null' +}; + +// 是否为undefined +const isUndefined$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined' +}; + +// 是否对象 +const isObj$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Object' +}; + +// 是否数组 +const isArray$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Array' +}; + +// 是否时间 +const isDate$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Date' +}; + +// 是否正则 +const isRegExp$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp' +}; + +// 是否为错误对象 +const isError$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Error' +}; + +// 是否为Symbol函数 +const isSymbol$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol' +}; + +// 是否为Promise对象 +const isPromise$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Promise' +}; + +// 是否为Set对象 +const isSet$1 = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Set' +}; + +// 是否为移动端 +const isDeviceMobile$1 = () => { + return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase()) +}; + +// 是否为IOS +const isIOS$1 = () => { + var u = window.navigator.userAgent; + if (u.indexOf('iPhone') !== -1) return true + else return false +}; + +// 是否为PC端 +const isPC$1 = () => { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", + "SymbianOS", "Windows Phone", + "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +}; + +// 是否为微信浏览器 +const isWeiXinBrowser$1 = () => { + window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'; +}; + +// 是否为QQ浏览器 +const isQQBrowser$1 = () => { + return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i) +}; + +// 是否为IE浏览器 +const isIEBrowser$1 = () => { + if (!!window.ActiveXObject || "ActiveXObject" in window) { + return true; + } else { + return false; + } +}; + + +const is = { + isEmail: isEmail$1, + isMobile: isMobile$1, + isStrictMobile: isStrictMobile$1, + isPhone: isPhone$1, + isURL: isURL$1, + isString: isString$1, + isNumber: isNumber$1, + isBoolean: isBoolean$1, + isFunction: isFunction$1, + isNull: isNull$1, + isUndefined: isUndefined$1, + isObj: isObj$1, + isArray: isArray$1, + isDate: isDate$1, + isRegExp: isRegExp$1, + isError: isError$1, + isSymbol: isSymbol$1, + isPromise: isPromise$1, + isSet: isSet$1, + isDeviceMobile: isDeviceMobile$1, + isIOS: isIOS$1, + isPC: isPC$1, + isWeiXinBrowser: isWeiXinBrowser$1, + isQQBrowser: isQQBrowser$1, + isIEBrowser: isIEBrowser$1, +}; + +// 获取IE浏览器版本号 +const getIEVersions$1 = () => { + if (!!window.ActiveXObject || "ActiveXObject" in window) { + var str = window.navigator.userAgent; + if (str.indexOf("MSIE 6.0") != "-1") return "IE6"; + if (str.indexOf("MSIE 7.0") != "-1") return "IE7"; + if (str.indexOf("MSIE 8.0") != "-1") return "IE8"; + if (str.indexOf("MSIE 9.0") != "-1") return "IE9"; + if (str.indexOf("MSIE 10.0") != "-1") return "IE10"; + return "IE11"; + } else { + return false; + } +}; + +// 获取浏览器类型 +const getBrowserType$1 = () => { + var str = window.navigator.userAgent; + if (str.indexOf("QQBrowser") != "-1") { + return "QQ"; + } else if (str.indexOf("LBBROWSER") != "-1") { + return "liebao"; + } else if (str.indexOf("SE") != "-1") { + return "sougou"; + } else if (str.indexOf("Firefox") != "-1") { + return "firefox"; + } else if (!!window.ActiveXObject || "ActiveXObject" in window) { + return "IE"; + } else if (str.indexOf("OPR") != "-1") { + return "opera"; + } else if (str.indexOf("Chrome") != "-1") { + return "chrome"; + } else if (str.indexOf("Safari") != "-1") { + return "safari"; + } +}; + +// 获取url参数 +const getUrlParam$1 = (name, href) => { + const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); + const search = href ? href.split('?')[1] : window.location.href.split('?')[1]; + const r = search.match(reg) || []; + return r[2]; +}; + +// 追加url参数 +const appendUrlParam$1 = (url, key, value) => { + var options = key; + if (typeof options == 'string') { + options = {}; + options[key] = value; + } + options = $.param(options); + if (url.includes('?')) { + url += '&' + options; + } else { + url += '?' + options; + } + return url; +}; + + +const bom = { + getIEVersions: getIEVersions$1, + getBrowserType: getBrowserType$1, + getUrlParam: getUrlParam$1, + appendUrlParam: appendUrlParam$1, +}; + +// el是否包含某个class +const hasClass$1 = (el, className) => { + let reg = new RegExp('(^|\\s)' + className + '(\\s|$)'); + return reg.test(el.className) +}; + +// el添加某个class +const addClass$1 = (el, className) => { + if (hasClass$1(el, className)) { + return + } + let newClass = el.className.split(' '); + newClass.push(className); + el.className = newClass.join(' '); +}; + +// el去除某个class +const removeClass$1 = (el, className) => { + if (!hasClass$1(el, className)) { + return + } + let reg = new RegExp('(^|\\s)' + className + '(\\s|$)', 'g'); + el.className = el.className.replace(reg, ' '); +}; + +// 去除Html标签 +const removeHtmltag$1 = (str) => { + return str.replace(/<[^>]+>/g, '') +}; + +// 动态引入js +const injectScript$1 = (src) => { + return new Promise((resolve, reject) => { + if (!!src) { + const s = document.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = src; + const t = document.getElementsByTagName('script')[0]; + t.parentNode.insertBefore(s, t); + if (s.readyState) { //IE + s.onreadystatechange = function () { + if (s.readyState == 'complete' || s.readyState == 'loaded') { + s.onreadystatechange = null; + resolve(); + } + }; + } else { //非IE + s.onload = function () { + s.onload = null; + resolve(); + }; + } + } else { + reject('The script src property value is null'); + } + }) +}; + +// 获取滚动的坐标 +const getScrollPosition$1 = (el = window) => ({ + x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft, + y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop +}); + +// 滚动到顶部 +const scrollToTop$1 = () => { + const c = document.documentElement.scrollTop || document.body.scrollTop; + if (c > 0) { + window.requestAnimationFrame(scrollToTop$1); + window.scrollTo(0, c - c / 8); + } +}; + +// 获取光标所在位置 +const getCursortPosition$1 = (dom) => { + // ie + if (document.selection) { + let range = document.selection.createRange(); + range.setEndPoint("StartToStart", dom.createTextRange()); + return range.text.length; + } else { + return dom.selectionStart + } +}; + +const dom = { + hasClass: hasClass$1, + addClass: addClass$1, + removeClass: removeClass$1, + removeHtmltag: removeHtmltag$1, + injectScript: injectScript$1, + getScrollPosition: getScrollPosition$1, + scrollToTop: scrollToTop$1, + getCursortPosition: getCursortPosition$1, +}; + +// 洗牌随机算法 +const shuffle$1 = (arr) => { + var result = [], + random; + while (arr.length > 0) { + random = Math.floor(Math.random() * arr.length); + result.push(arr[random]); + arr.splice(random, 1); + } + return result; +}; + +// 类型判断集合 +const checkStr$1 = (str, type) => { + switch (type) { + case 'phone': //手机号码 + return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str); + case 'tel': //座机 + return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str); + case 'card': //身份证 + return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str); + case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线 + return /^[a-zA-Z]\w{5,17}$/.test(str) + case 'postal': //邮政编码 + return /[1-9]\d{5}(?!\d)/.test(str); + case 'QQ': //QQ号 + return /^[1-9][0-9]{4,9}$/.test(str); + case 'email': //邮箱 + return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str); + case 'money': //金额(小数点2位) + return /^\d*(?:\.\d{0,2})?$/.test(str); + case 'URL': //网址 + return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str) + case 'IP': //IP + return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str); + case 'date': //日期时间 + return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str) + case 'english': //英文 + return /^[a-zA-Z]+$/.test(str); + case 'chinese': //中文 + return /[\u4e00-\u9fa5]/g.test(str); + case 'lower': //小写 + return /^[a-z]+$/.test(str); + case 'upper': //大写 + return /^[A-Z]+$/.test(str); + case 'HTML': //HTML标记 + return /<([^]*|[^]*|[^>])*>/.test(str); + default: + return true; + } +}; + +// 严格的身份证效验 +const isCardID$1 = (sId) => { + if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) { + console.log('你输入的身份证长度或格式错误'); + return false + } + //身份证城市 + var aCity = { 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: "台湾", 81: "香港", 82: "澳门", 91: "国外" }; + if (!aCity[parseInt(sId.substr(0, 2))]) { + console.log('你的身份证地区非法'); + return false + } + // 出生日期验证 + var sBirthday = (sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2))).replace(/-/g, "/"), + d = new Date(sBirthday); + if (sBirthday != (d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate())) { + console.log('身份证上的出生日期非法'); + return false + } + // 身份证号码校验 + var sum = 0, + weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2], + codes = "10X98765432"; + for (var i = 0; i < sId.length - 1; i++) { + sum += sId[i] * weights[i]; + } + var last = codes[sum % 11]; //计算出来的最后一位身份证号码 + if (sId[sId.length - 1] != last) { + console.log('你输入的身份证号非法'); + return false + } + return true +}; + +// 随机数范围 +const randomRange$1 = function (min, max) { + if (arguments.length === 2) { + return Math.floor(min + Math.random() * ((max + 1) - min)) + } else { + return null + } +}; + +// 判断元素是否在数组中 +const inArray$1 = (arr, val) => { + return arr.indexOf(val) != -1 ? true : false +}; + +// 数组排序 {type} 1:从小到大 2:从大到小 +const sort$1 = (arr, type = 1) => { + return arr.sort((a, b) => { + switch (type) { + case 1: + return a - b + case 2: + return b - a + default: + return arr + } + }) +}; + +// 数组去重 +const unique$1 = (arr) => { + if (Array.hasOwnProperty('from')) { + return Array.from(new Set(arr)); + } else { + var n = {}, r = []; + for (var i = 0; i < arr.length; i++) { + if (!n[arr[i]]) { + n[arr[i]] = true; + r.push(arr[i]); + } + } + return r; + } +}; + +// 求两个集合的并集 +const union$1 = (arr1, arr2) => { + var newArr = arr1.concat(arr2); + return unique$1(newArr) +}; + +// 求两个集合的交集 +const intersection$1 = (arr1, arr2) => { + var arr1_x = unique$1(arr1); + var arr2_x = unique$1(arr2); + return arr1_x.filter(function (item) { + return arr2_x.indexOf(item) > -1 + }) +}; + +// 删除集合中其中一个目标元素 +const listRemoveTarget$1 = (list, target) => { + var index = list.indexOf(target); + if (index > -1) { + list.splice(index, 1); + } + return list +}; + +// 求集合中的最大值 +const listMax$1 = list => { + return Math.max.apply(null, list) +}; + +// 求集合中的最小值 +const listMin$1 = list => { + return Math.min.apply(null, list) +}; + +// 求和 +const sum$1 = arr => { + return arr.reduce((pre, cur) => { + return pre + cur + }) +}; + +// 平均值 +const average$1 = arr => { + return sum$1(arr) / arr.length +}; + +// 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格 +const trim$1 = (str, type = 1) => { + switch (type) { + case 1: + return str.replace(/\s+/g, '') + case 2: + return str.replace(/(^\s*)|(\s*$)/g, '') + case 3: + return str.replace(/(^\s*)/g, '') + case 4: + return str.replace(/(\s*$)/g, '') + default: + return str + } +}; + +// 检测密码强度 +const checkPwd$1 = (str) => { + var Lv = 0; + if (str.length < 6) { + return Lv + } + if (/[0-9]/.test(str)) { + Lv++; + } + if (/[a-z]/.test(str)) { + Lv++; + } + if (/[A-Z]/.test(str)) { + Lv++; + } + if (/[\.|-|_]/.test(str)) { + Lv++; + } + return Lv; +}; + +// 防抖函数 +const debounce$1 = function (fn, delay) { + var timer = null; + return function () { + var that = this, + arg = arguments; + if (timer) { + window.clearTimeout(timer); + timer = null; + } + timer = window.setTimeout(() => { + fn.apply(that, arg); + }, delay); + } +}; + +// 节流函数 +const throttle$1 = function (fn, delay) { + var oldTime = Date.now(); + return function () { + var time = Date.now(), + that = this, + arg = arguments; + if (time - oldTime >= delay) { + oldTime = Date.now(); + return fn.apply(that, arg) + } + } +}; + +// 获取文章中出现次数最多的单词 +const findMostWord$1 = function (article) { + if (!article) return false + article = article.trim().toLowerCase(); // 清除两端空字符串并转为小写 + let wordlist = article.match(/[a-z]+/g), // 将文章中的每个单词转换成数组中的每一项元素 + visited = [], + maxNum = 0, + maxWord = ''; + article = " " + wordlist.join(" ") + " "; + // 遍历判断单词出现次数 + wordlist.forEach(function (item) { + if (visited.indexOf(item) === -1) { + visited.push(item); + let wrod = new RegExp(" " + item + " ", "g"), // 正则 全局匹配 当前单词 + num = article.match(wrod).length; // 当前单词出现的个数 + if (num > maxNum) { + maxNum = num; + maxWord = item; + } + } + }); + return maxWord + " " + maxNum +}; + +// 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] +const flattenArray$1 = function (array) { + if (!Array.isArray(array)) return false + var res = []; + res = array.reduce((prev, cur) => { + return prev.concat(Array.isArray(cur) ? flattenArray$1(cur) : cur) + }, []); + return res +}; + +// 求最大公约数 +const getMaxCommonDivisor$1 = function (a, b) { + if (b == 0) return a + return getMaxCommonDivisor$1(b, a % b) +}; +// 最小公倍数 +const getMinCommonMultiple$1 = function (a, b) { + return a * b / getMaxCommonDivisor$1(a, b) +}; + +// 判断字符串是否回文字符串 +const isPalindrome$1 = function (str) { + var reg = /[\W_]/g; + var newStr = str.replace(reg, '').toLowerCase(); + var reverserStr = newStr.split('').reverse().join(''); + return reverserStr === newStr; +}; + +// 文件大小转化 +const to_filesize$1 = (e) => { + if (!e) { + return "-"; + } + var g = [" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"]; + var f = Math.floor(Math.log(e) / Math.log(1024)); + var h = (f > 1) ? 2 : 0; + return (f > 1) ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f]; +}; + +const func = { + shuffle: shuffle$1, + checkStr: checkStr$1, + isCardID: isCardID$1, + randomRange: randomRange$1, + inArray: inArray$1, + sort: sort$1, + unique: unique$1, + union: union$1, + intersection: intersection$1, + listRemoveTarget: listRemoveTarget$1, + listMax: listMax$1, + listMin: listMin$1, + sum: sum$1, + average: average$1, + trim: trim$1, + checkPwd: checkPwd$1, + debounce: debounce$1, + throttle: throttle$1, + findMostWord: findMostWord$1, + flattenArray: flattenArray$1, + getMaxCommonDivisor: getMaxCommonDivisor$1, + getMinCommonMultiple: getMinCommonMultiple$1, + isPalindrome: isPalindrome$1, + to_filesize: to_filesize$1 +}; + +const methods_util = { + ...is, + ...bom, + ...dom, + ...func +}; + + +methods_util.default = methods_util; + +const { + isEmail, + isMobile, + isStrictMobile, + isPhone, + isURL, + isString, + isNumber, + isBoolean, + isFunction, + isNull, + isUndefined, + isObj, + isArray, + isDate, + isRegExp, + isError, + isSymbol, + isPromise, + isSet, + isDeviceMobile, + isIOS, + isPC, + isWeiXinBrowser, + isQQBrowser, + isIEBrowser, + getIEVersions, + getBrowserType, + getUrlParam, + appendUrlParam, + hasClass, + addClass, + removeClass, + removeHtmltag, + injectScript, + getScrollPosition, + scrollToTop, + getCursortPosition, + shuffle, + checkStr, + isCardID, + randomRange, + inArray, + sort, + unique, + union, + intersection, + listRemoveTarget, + listMax, + listMin, + sum, + average, + trim, + checkPwd, + debounce, + throttle, + findMostWord, + flattenArray, + getMaxCommonDivisor, + getMinCommonMultiple, + isPalindrome, + to_filesize +} = methods_util; + +export { addClass, appendUrlParam, average, checkPwd, checkStr, debounce, findMostWord, flattenArray, getBrowserType, getCursortPosition, getIEVersions, getMaxCommonDivisor, getMinCommonMultiple, getScrollPosition, getUrlParam, hasClass, inArray, injectScript, intersection, isArray, isBoolean, isCardID, isDate, isDeviceMobile, isEmail, isError, isFunction, isIEBrowser, isIOS, isMobile, isNull, isNumber, isObj, isPC, isPalindrome, isPhone, isPromise, isQQBrowser, isRegExp, isSet, isStrictMobile, isString, isSymbol, isURL, isUndefined, isWeiXinBrowser, listMax, listMin, listRemoveTarget, randomRange, removeClass, removeHtmltag, scrollToTop, shuffle, sort, sum, throttle, to_filesize, trim, union, unique }; +//# sourceMappingURL=methods_util.js.map diff --git a/dist/esm/methods_util.js.map b/dist/esm/methods_util.js.map new file mode 100644 index 0000000..770521d --- /dev/null +++ b/dist/esm/methods_util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"methods_util.js","sources":["../../lib/core/is.js","../../lib/core/bom.js","../../lib/core/dom.js","../../lib/core/func.js","../../lib/methods_util.js","../../index.js"],"sourcesContent":["const isEmail = (s) => {\r\n return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s)\r\n}\r\n\r\n// 是否手机号码\r\nconst isMobile = (s) => {\r\n return /^1[0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否大陆有效手机号码\r\nconst isStrictMobile = (s) => {\r\n return /^[0]?1[3|5][0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否电话号码\r\nconst isPhone = (s) => {\r\n return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)\r\n}\r\n\r\n// 是否Url地址\r\nconst isURL = (s) => {\r\n return /^http[s]?:\\/\\/.*/.test(s)\r\n}\r\n\r\n// 是否字符串\r\nconst isString = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'String'\r\n}\r\n\r\n// 是否数字\r\nconst isNumber = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Number'\r\n}\r\n\r\n// 是否Boolean\r\nconst isBoolean = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'\r\n}\r\n\r\n// 是否函数\r\nconst isFunction = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Function'\r\n}\r\n\r\n// 是否为Null\r\nconst isNull = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Null'\r\n}\r\n\r\n// 是否为undefined\r\nconst isUndefined = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'\r\n}\r\n\r\n// 是否对象\r\nconst isObj = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Object'\r\n}\r\n\r\n// 是否数组\r\nconst isArray = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Array'\r\n}\r\n\r\n// 是否时间\r\nconst isDate = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Date'\r\n}\r\n\r\n// 是否正则\r\nconst isRegExp = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'\r\n}\r\n\r\n// 是否为错误对象\r\nconst isError = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Error'\r\n}\r\n\r\n// 是否为Symbol函数\r\nconst isSymbol = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'\r\n}\r\n\r\n// 是否为Promise对象\r\nconst isPromise = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'\r\n}\r\n\r\n// 是否为Set对象\r\nconst isSet = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Set'\r\n}\r\n\r\n// 是否为移动端\r\nconst isDeviceMobile = () => {\r\n return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase())\r\n}\r\n\r\n// 是否为IOS\r\nconst isIOS = () => {\r\n var u = window.navigator.userAgent\r\n if (u.indexOf('iPhone') !== -1) return true\r\n else return false\r\n}\r\n\r\n// 是否为PC端\r\nconst isPC = () => {\r\n var userAgentInfo = navigator.userAgent;\r\n var Agents = [\"Android\", \"iPhone\",\r\n \"SymbianOS\", \"Windows Phone\",\r\n \"iPad\", \"iPod\"];\r\n var flag = true;\r\n for (var v = 0; v < Agents.length; v++) {\r\n if (userAgentInfo.indexOf(Agents[v]) > 0) {\r\n flag = false;\r\n break;\r\n }\r\n }\r\n return flag;\r\n}\r\n\r\n// 是否为微信浏览器\r\nconst isWeiXinBrowser = () => {\r\n window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'\r\n}\r\n\r\n// 是否为QQ浏览器\r\nconst isQQBrowser = () => {\r\n return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)\r\n}\r\n\r\n// 是否为IE浏览器\r\nconst isIEBrowser = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n\r\nexport default {\r\n isEmail,\r\n isMobile,\r\n isStrictMobile,\r\n isPhone,\r\n isURL,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isObj,\r\n isArray,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isSymbol,\r\n isPromise,\r\n isSet,\r\n isDeviceMobile,\r\n isIOS,\r\n isPC,\r\n isWeiXinBrowser,\r\n isQQBrowser,\r\n isIEBrowser,\r\n}\r\n","// 获取IE浏览器版本号\r\nconst getIEVersions = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n var str = window.navigator.userAgent\r\n if (str.indexOf(\"MSIE 6.0\") != \"-1\") return \"IE6\";\r\n if (str.indexOf(\"MSIE 7.0\") != \"-1\") return \"IE7\";\r\n if (str.indexOf(\"MSIE 8.0\") != \"-1\") return \"IE8\";\r\n if (str.indexOf(\"MSIE 9.0\") != \"-1\") return \"IE9\";\r\n if (str.indexOf(\"MSIE 10.0\") != \"-1\") return \"IE10\";\r\n return \"IE11\";\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n// 获取浏览器类型\r\nconst getBrowserType = () => {\r\n var str = window.navigator.userAgent;\r\n if (str.indexOf(\"QQBrowser\") != \"-1\") {\r\n return \"QQ\";\r\n } else if (str.indexOf(\"LBBROWSER\") != \"-1\") {\r\n return \"liebao\";\r\n } else if (str.indexOf(\"SE\") != \"-1\") {\r\n return \"sougou\";\r\n } else if (str.indexOf(\"Firefox\") != \"-1\") {\r\n return \"firefox\";\r\n } else if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return \"IE\";\r\n } else if (str.indexOf(\"OPR\") != \"-1\") {\r\n return \"opera\";\r\n } else if (str.indexOf(\"Chrome\") != \"-1\") {\r\n return \"chrome\";\r\n } else if (str.indexOf(\"Safari\") != \"-1\") {\r\n return \"safari\";\r\n }\r\n}\r\n\r\n// 获取url参数\r\nconst getUrlParam = (name, href) => {\r\n const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');\r\n const search = href ? href.split('?')[1] : window.location.href.split('?')[1];\r\n const r = search.match(reg) || [];\r\n return r[2];\r\n}\r\n\r\n// 追加url参数\r\nconst appendUrlParam = (url, key, value) => {\r\n var options = key;\r\n if (typeof options == 'string') {\r\n options = {};\r\n options[key] = value;\r\n }\r\n options = $.param(options);\r\n if (url.includes('?')) {\r\n url += '&' + options\r\n } else {\r\n url += '?' + options\r\n }\r\n return url;\r\n}\r\n\r\n\r\nexport default {\r\n getIEVersions,\r\n getBrowserType,\r\n getUrlParam,\r\n appendUrlParam,\r\n}","// el是否包含某个class\r\nconst hasClass = (el, className) => {\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)')\r\n return reg.test(el.className)\r\n}\r\n\r\n// el添加某个class\r\nconst addClass = (el, className) => {\r\n if (hasClass(el, className)) {\r\n return\r\n }\r\n let newClass = el.className.split(' ')\r\n newClass.push(className)\r\n el.className = newClass.join(' ')\r\n}\r\n\r\n// el去除某个class\r\nconst removeClass = (el, className) => {\r\n if (!hasClass(el, className)) {\r\n return\r\n }\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)', 'g')\r\n el.className = el.className.replace(reg, ' ')\r\n}\r\n\r\n// 去除Html标签\r\nconst removeHtmltag = (str) => {\r\n return str.replace(/<[^>]+>/g, '')\r\n}\r\n\r\n// 动态引入js\r\nconst injectScript = (src) => {\r\n return new Promise((resolve, reject) => {\r\n if (!!src) {\r\n const s = document.createElement('script');\r\n s.type = 'text/javascript';\r\n s.async = true;\r\n s.src = src;\r\n const t = document.getElementsByTagName('script')[0];\r\n t.parentNode.insertBefore(s, t);\r\n if (s.readyState) { //IE\r\n s.onreadystatechange = function () {\r\n if (s.readyState == 'complete' || s.readyState == 'loaded') {\r\n s.onreadystatechange = null;\r\n resolve()\r\n }\r\n }\r\n } else { //非IE\r\n s.onload = function () {\r\n s.onload = null;\r\n resolve()\r\n }\r\n }\r\n } else {\r\n reject('The script src property value is null')\r\n }\r\n })\r\n}\r\n\r\n// 获取滚动的坐标\r\nconst getScrollPosition = (el = window) => ({\r\n x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,\r\n y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop\r\n})\r\n\r\n// 滚动到顶部\r\nconst scrollToTop = () => {\r\n const c = document.documentElement.scrollTop || document.body.scrollTop;\r\n if (c > 0) {\r\n window.requestAnimationFrame(scrollToTop);\r\n window.scrollTo(0, c - c / 8);\r\n }\r\n}\r\n\r\n// 获取光标所在位置\r\nconst getCursortPosition = (dom) => {\r\n // ie\r\n if (document.selection) {\r\n let range = document.selection.createRange();\r\n range.setEndPoint(\"StartToStart\", dom.createTextRange());\r\n return range.text.length;\r\n } else {\r\n return dom.selectionStart\r\n }\r\n}\r\n\r\nexport default {\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n removeHtmltag,\r\n injectScript,\r\n getScrollPosition,\r\n scrollToTop,\r\n getCursortPosition,\r\n}","// 洗牌随机算法\r\nconst shuffle = (arr) => {\r\n var result = [],\r\n random;\r\n while (arr.length > 0) {\r\n random = Math.floor(Math.random() * arr.length);\r\n result.push(arr[random])\r\n arr.splice(random, 1)\r\n }\r\n return result;\r\n}\r\n\r\n// 类型判断集合\r\nconst checkStr = (str, type) => {\r\n switch (type) {\r\n case 'phone': //手机号码\r\n return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);\r\n case 'tel': //座机\r\n return /^(0\\d{2,3}-\\d{7,8})(-\\d{1,4})?$/.test(str);\r\n case 'card': //身份证\r\n return /(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/.test(str);\r\n case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线\r\n return /^[a-zA-Z]\\w{5,17}$/.test(str)\r\n case 'postal': //邮政编码\r\n return /[1-9]\\d{5}(?!\\d)/.test(str);\r\n case 'QQ': //QQ号\r\n return /^[1-9][0-9]{4,9}$/.test(str);\r\n case 'email': //邮箱\r\n return /^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$/.test(str);\r\n case 'money': //金额(小数点2位)\r\n return /^\\d*(?:\\.\\d{0,2})?$/.test(str);\r\n case 'URL': //网址\r\n return /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(str)\r\n case 'IP': //IP\r\n return /((?:(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d)\\\\.){3}(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d))/.test(str);\r\n case 'date': //日期时间\r\n return /^(\\d{4})\\-(\\d{2})\\-(\\d{2}) (\\d{2})(?:\\:\\d{2}|:(\\d{2}):(\\d{2}))$/.test(str) || /^(\\d{4})\\-(\\d{2})\\-(\\d{2})$/.test(str)\r\n case 'english': //英文\r\n return /^[a-zA-Z]+$/.test(str);\r\n case 'chinese': //中文\r\n return /[\\u4e00-\\u9fa5]/g.test(str);\r\n case 'lower': //小写\r\n return /^[a-z]+$/.test(str);\r\n case 'upper': //大写\r\n return /^[A-Z]+$/.test(str);\r\n case 'HTML': //HTML标记\r\n return /<([^]*|[^]*|[^>])*>/.test(str);\r\n default:\r\n return true;\r\n }\r\n}\r\n\r\n// 严格的身份证效验\r\nconst isCardID = (sId) => {\r\n if (!/(^\\d{15}$)|(^\\d{17}(\\d|X|x)$)/.test(sId)) {\r\n console.log('你输入的身份证长度或格式错误')\r\n return false\r\n }\r\n //身份证城市\r\n var aCity = { 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: \"台湾\", 81: \"香港\", 82: \"澳门\", 91: \"国外\" };\r\n if (!aCity[parseInt(sId.substr(0, 2))]) {\r\n console.log('你的身份证地区非法')\r\n return false\r\n }\r\n // 出生日期验证\r\n var sBirthday = (sId.substr(6, 4) + \"-\" + Number(sId.substr(10, 2)) + \"-\" + Number(sId.substr(12, 2))).replace(/-/g, \"/\"),\r\n d = new Date(sBirthday)\r\n if (sBirthday != (d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate())) {\r\n console.log('身份证上的出生日期非法')\r\n return false\r\n }\r\n // 身份证号码校验\r\n var sum = 0,\r\n weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],\r\n codes = \"10X98765432\"\r\n for (var i = 0; i < sId.length - 1; i++) {\r\n sum += sId[i] * weights[i];\r\n }\r\n var last = codes[sum % 11]; //计算出来的最后一位身份证号码\r\n if (sId[sId.length - 1] != last) {\r\n console.log('你输入的身份证号非法')\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n// 随机数范围\r\nconst randomRange = function (min, max) {\r\n if (arguments.length === 2) {\r\n return Math.floor(min + Math.random() * ((max + 1) - min))\r\n } else {\r\n return null\r\n }\r\n}\r\n\r\n// 判断元素是否在数组中\r\nconst inArray = (arr, val) => {\r\n return arr.indexOf(val) != -1 ? true : false\r\n}\r\n\r\n// 数组排序 {type} 1:从小到大 2:从大到小\r\nconst sort = (arr, type = 1) => {\r\n return arr.sort((a, b) => {\r\n switch (type) {\r\n case 1:\r\n return a - b\r\n case 2:\r\n return b - a\r\n default:\r\n return arr\r\n }\r\n })\r\n}\r\n\r\n// 数组去重\r\nconst unique = (arr) => {\r\n if (Array.hasOwnProperty('from')) {\r\n return Array.from(new Set(arr));\r\n } else {\r\n var n = {}, r = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n if (!n[arr[i]]) {\r\n n[arr[i]] = true;\r\n r.push(arr[i]);\r\n }\r\n }\r\n return r;\r\n }\r\n}\r\n\r\n// 求两个集合的并集\r\nconst union = (arr1, arr2) => {\r\n var newArr = arr1.concat(arr2)\r\n return unique(newArr)\r\n}\r\n\r\n// 求两个集合的交集\r\nconst intersection = (arr1, arr2) => {\r\n var arr1_x = unique(arr1)\r\n var arr2_x = unique(arr2)\r\n return arr1_x.filter(function (item) {\r\n return arr2_x.indexOf(item) > -1\r\n })\r\n}\r\n\r\n// 删除集合中其中一个目标元素\r\nconst listRemoveTarget = (list, target) => {\r\n var index = list.indexOf(target)\r\n if (index > -1) {\r\n list.splice(index, 1)\r\n }\r\n return list\r\n}\r\n\r\n// 求集合中的最大值\r\nconst listMax = list => {\r\n return Math.max.apply(null, list)\r\n}\r\n\r\n// 求集合中的最小值\r\nconst listMin = list => {\r\n return Math.min.apply(null, list)\r\n}\r\n\r\n// 求和\r\nconst sum = arr => {\r\n return arr.reduce((pre, cur) => {\r\n return pre + cur\r\n })\r\n}\r\n\r\n// 平均值\r\nconst average = arr => {\r\n return sum(arr) / arr.length\r\n}\r\n\r\n// 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格\r\nconst trim = (str, type = 1) => {\r\n switch (type) {\r\n case 1:\r\n return str.replace(/\\s+/g, '')\r\n case 2:\r\n return str.replace(/(^\\s*)|(\\s*$)/g, '')\r\n case 3:\r\n return str.replace(/(^\\s*)/g, '')\r\n case 4:\r\n return str.replace(/(\\s*$)/g, '')\r\n default:\r\n return str\r\n }\r\n}\r\n\r\n// 检测密码强度\r\nconst checkPwd = (str) => {\r\n var Lv = 0;\r\n if (str.length < 6) {\r\n return Lv\r\n }\r\n if (/[0-9]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[a-z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[A-Z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[\\.|-|_]/.test(str)) {\r\n Lv++\r\n }\r\n return Lv;\r\n}\r\n\r\n// 防抖函数\r\nconst debounce = function (fn, delay) {\r\n var timer = null;\r\n return function () {\r\n var that = this,\r\n arg = arguments;\r\n if (timer) {\r\n window.clearTimeout(timer)\r\n timer = null\r\n }\r\n timer = window.setTimeout(() => {\r\n fn.apply(that, arg)\r\n }, delay)\r\n }\r\n}\r\n\r\n// 节流函数\r\nconst throttle = function (fn, delay) {\r\n var oldTime = Date.now()\r\n return function () {\r\n var time = Date.now(),\r\n that = this,\r\n arg = arguments;\r\n if (time - oldTime >= delay) {\r\n oldTime = Date.now()\r\n return fn.apply(that, arg)\r\n }\r\n }\r\n}\r\n\r\n// 获取文章中出现次数最多的单词\r\nconst findMostWord = function (article) {\r\n if (!article) return false\r\n article = article.trim().toLowerCase() // 清除两端空字符串并转为小写\r\n let wordlist = article.match(/[a-z]+/g), // 将文章中的每个单词转换成数组中的每一项元素\r\n visited = [],\r\n maxNum = 0,\r\n maxWord = '';\r\n article = \" \" + wordlist.join(\" \") + \" \";\r\n // 遍历判断单词出现次数\r\n wordlist.forEach(function (item) {\r\n if (visited.indexOf(item) === -1) {\r\n visited.push(item)\r\n let wrod = new RegExp(\" \" + item + \" \", \"g\"), // 正则 全局匹配 当前单词 \r\n num = article.match(wrod).length; // 当前单词出现的个数 \r\n if (num > maxNum) {\r\n maxNum = num\r\n maxWord = item\r\n }\r\n }\r\n })\r\n return maxWord + \" \" + maxNum\r\n}\r\n\r\n// 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]\r\nconst flattenArray = function (array) {\r\n if (!Array.isArray(array)) return false\r\n var res = []\r\n res = array.reduce((prev, cur) => {\r\n return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur)\r\n }, [])\r\n return res\r\n}\r\n\r\n// 求最大公约数\r\nconst getMaxCommonDivisor = function (a, b) {\r\n if (b == 0) return a\r\n return getMaxCommonDivisor(b, a % b)\r\n}\r\n// 最小公倍数\r\nconst getMinCommonMultiple = function (a, b) {\r\n return a * b / getMaxCommonDivisor(a, b)\r\n}\r\n\r\n// 判断字符串是否回文字符串\r\nconst isPalindrome = function (str) {\r\n var reg = /[\\W_]/g;\r\n var newStr = str.replace(reg, '').toLowerCase();\r\n var reverserStr = newStr.split('').reverse().join('');\r\n return reverserStr === newStr;\r\n}\r\n\r\n// 文件大小转化\r\nconst to_filesize = (e) => {\r\n if (!e) {\r\n return \"-\";\r\n }\r\n var g = [\" Bytes\", \" KB\", \" MB\", \" GB\", \" TB\", \" PB\", \" EB\", \" ZB\", \" YB\"];\r\n var f = Math.floor(Math.log(e) / Math.log(1024));\r\n var h = (f > 1) ? 2 : 0;\r\n return (f > 1) ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f];\r\n}\r\n\r\nexport default {\r\n shuffle,\r\n checkStr,\r\n isCardID,\r\n randomRange,\r\n inArray,\r\n sort,\r\n unique,\r\n union,\r\n intersection,\r\n listRemoveTarget,\r\n listMax,\r\n listMin,\r\n sum,\r\n average,\r\n trim,\r\n checkPwd,\r\n debounce,\r\n throttle,\r\n findMostWord,\r\n flattenArray,\r\n getMaxCommonDivisor,\r\n getMinCommonMultiple,\r\n isPalindrome,\r\n to_filesize\r\n}","import is from \"./core/is\";\r\nimport bom from \"./core/bom\";\r\nimport dom from './core/dom';\r\nimport func from \"./core/func\";\r\n\r\nconst methods_util = {\r\n ...is,\r\n ...bom,\r\n ...dom,\r\n ...func\r\n}\r\n\r\n\r\nmethods_util.default = methods_util\r\n\r\nexport default methods_util","import methods_util from './lib/methods_util'\r\n\r\n\r\nconst {\r\n isEmail,\r\n isMobile,\r\n isStrictMobile,\r\n isPhone,\r\n isURL,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isObj,\r\n isArray,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isSymbol,\r\n isPromise,\r\n isSet,\r\n isDeviceMobile,\r\n isIOS,\r\n isPC,\r\n isWeiXinBrowser,\r\n isQQBrowser,\r\n isIEBrowser,\r\n getIEVersions,\r\n getBrowserType,\r\n getUrlParam,\r\n appendUrlParam,\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n removeHtmltag,\r\n injectScript,\r\n getScrollPosition,\r\n scrollToTop,\r\n getCursortPosition,\r\n shuffle,\r\n checkStr,\r\n isCardID,\r\n randomRange,\r\n inArray,\r\n sort,\r\n unique,\r\n union,\r\n intersection,\r\n listRemoveTarget,\r\n listMax,\r\n listMin,\r\n sum,\r\n average,\r\n trim,\r\n checkPwd,\r\n debounce,\r\n throttle,\r\n findMostWord,\r\n flattenArray,\r\n getMaxCommonDivisor,\r\n getMinCommonMultiple,\r\n isPalindrome,\r\n to_filesize\r\n} = methods_util\r\n\r\n\r\nexport {\r\n isEmail,\r\n isMobile,\r\n isStrictMobile,\r\n isPhone,\r\n isURL,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isObj,\r\n isArray,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isSymbol,\r\n isPromise,\r\n isSet,\r\n isDeviceMobile,\r\n isIOS,\r\n isPC,\r\n isWeiXinBrowser,\r\n isQQBrowser,\r\n isIEBrowser,\r\n getIEVersions,\r\n getBrowserType,\r\n getUrlParam,\r\n appendUrlParam,\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n removeHtmltag,\r\n injectScript,\r\n getScrollPosition,\r\n scrollToTop,\r\n getCursortPosition,\r\n shuffle,\r\n checkStr,\r\n isCardID,\r\n randomRange,\r\n inArray,\r\n sort,\r\n unique,\r\n union,\r\n intersection,\r\n listRemoveTarget,\r\n listMax,\r\n listMin,\r\n sum,\r\n average,\r\n trim,\r\n checkPwd,\r\n debounce,\r\n throttle,\r\n findMostWord,\r\n flattenArray,\r\n getMaxCommonDivisor,\r\n getMinCommonMultiple,\r\n isPalindrome,\r\n to_filesize\r\n}"],"names":["isEmail","isMobile","isStrictMobile","isPhone","isURL","isString","isNumber","isBoolean","isFunction","isNull","isUndefined","isObj","isArray","isDate","isRegExp","isError","isSymbol","isPromise","isSet","isDeviceMobile","isIOS","isPC","isWeiXinBrowser","isQQBrowser","isIEBrowser","getIEVersions","getBrowserType","getUrlParam","appendUrlParam","hasClass","addClass","removeClass","removeHtmltag","injectScript","getScrollPosition","scrollToTop","getCursortPosition","shuffle","checkStr","isCardID","randomRange","inArray","sort","unique","union","intersection","listRemoveTarget","listMax","listMin","sum","average","trim","checkPwd","debounce","throttle","findMostWord","flattenArray","getMaxCommonDivisor","getMinCommonMultiple","isPalindrome","to_filesize"],"mappings":"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"} \ No newline at end of file diff --git a/dist/esm/methods_util.min.js b/dist/esm/methods_util.min.js new file mode 100644 index 0000000..0242252 --- /dev/null +++ b/dist/esm/methods_util.min.js @@ -0,0 +1,2 @@ +const e=(e,t)=>new RegExp("(^|\\s)"+t+"(\\s|$)").test(e.className),t=()=>{const e=document.documentElement.scrollTop||document.body.scrollTop;e>0&&(window.requestAnimationFrame(t),window.scrollTo(0,e-e/8))},r=e=>{if(Array.hasOwnProperty("from"))return Array.from(new Set(e));for(var t={},r=[],n=0;ne.reduce(((e,t)=>e+t)),i=function(e){if(!Array.isArray(e))return!1;return e.reduce(((e,t)=>e.concat(Array.isArray(t)?i(t):t)),[])},o=function(e,t){return 0==t?e:o(t,e%t)},s={shuffle:e=>{for(var t,r=[];e.length>0;)t=Math.floor(Math.random()*e.length),r.push(e[t]),e.splice(t,1);return r},checkStr:(e,t)=>{switch(t){case"phone":return/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(e);case"tel":return/^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(e);case"card":return/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(e);case"pwd":return/^[a-zA-Z]\w{5,17}$/.test(e);case"postal":return/[1-9]\d{5}(?!\d)/.test(e);case"QQ":return/^[1-9][0-9]{4,9}$/.test(e);case"email":return/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(e);case"money":return/^\d*(?:\.\d{0,2})?$/.test(e);case"URL":return/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(e);case"IP":return/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(e);case"date":return/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(e)||/^(\d{4})\-(\d{2})\-(\d{2})$/.test(e);case"english":return/^[a-zA-Z]+$/.test(e);case"chinese":return/[\u4e00-\u9fa5]/g.test(e);case"lower":return/^[a-z]+$/.test(e);case"upper":return/^[A-Z]+$/.test(e);case"HTML":return/<([^]*|[^]*|[^>])*>/.test(e);default:return!0}},isCardID:e=>{if(!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(e))return console.log("你输入的身份证长度或格式错误"),!1;if(!{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:"台湾",81:"香港",82:"澳门",91:"国外"}[parseInt(e.substr(0,2))])return console.log("你的身份证地区非法"),!1;var t=(e.substr(6,4)+"-"+Number(e.substr(10,2))+"-"+Number(e.substr(12,2))).replace(/-/g,"/"),r=new Date(t);if(t!=r.getFullYear()+"/"+(r.getMonth()+1)+"/"+r.getDate())return console.log("身份证上的出生日期非法"),!1;for(var n=0,i=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],o=0;o-1!=e.indexOf(t),sort:(e,t=1)=>e.sort(((r,n)=>{switch(t){case 1:return r-n;case 2:return n-r;default:return e}})),unique:r,union:(e,t)=>{var n=e.concat(t);return r(n)},intersection:(e,t)=>{var n=r(e),i=r(t);return n.filter((function(e){return i.indexOf(e)>-1}))},listRemoveTarget:(e,t)=>{var r=e.indexOf(t);return r>-1&&e.splice(r,1),e},listMax:e=>Math.max.apply(null,e),listMin:e=>Math.min.apply(null,e),sum:n,average:e=>n(e)/e.length,trim:(e,t=1)=>{switch(t){case 1:return e.replace(/\s+/g,"");case 2:return e.replace(/(^\s*)|(\s*$)/g,"");case 3:return e.replace(/(^\s*)/g,"");case 4:return e.replace(/(\s*$)/g,"");default:return e}},checkPwd:e=>{var t=0;return e.length<6||(/[0-9]/.test(e)&&t++,/[a-z]/.test(e)&&t++,/[A-Z]/.test(e)&&t++,/[\.|-|_]/.test(e)&&t++),t},debounce:function(e,t){var r=null;return function(){var n=this,i=arguments;r&&(window.clearTimeout(r),r=null),r=window.setTimeout((()=>{e.apply(n,i)}),t)}},throttle:function(e,t){var r=Date.now();return function(){var n=arguments;if(Date.now()-r>=t)return r=Date.now(),e.apply(this,n)}},findMostWord:function(e){if(!e)return!1;let t=(e=e.trim().toLowerCase()).match(/[a-z]+/g),r=[],n=0,i="";return e=" "+t.join(" ")+" ",t.forEach((function(t){if(-1===r.indexOf(t)){r.push(t);let o=new RegExp(" "+t+" ","g"),s=e.match(o).length;s>n&&(n=s,i=t)}})),i+" "+n},flattenArray:i,getMaxCommonDivisor:o,getMinCommonMultiple:function(e,t){return e*t/o(e,t)},isPalindrome:function(e){var t=e.replace(/[\W_]/g,"").toLowerCase();return t.split("").reverse().join("")===t},to_filesize:e=>{if(!e)return"-";var t=[" Bytes"," KB"," MB"," GB"," TB"," PB"," EB"," ZB"," YB"],r=Math.floor(Math.log(e)/Math.log(1024)),n=r>1?2:0;return r>1?(e/Math.pow(1024,Math.ceil(r))).toFixed(n)+t[r]:Math.ceil(e/Math.pow(1024,Math.ceil(r))).toFixed(n)+t[r]}},a={...{isEmail:e=>/^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(e),isMobile:e=>/^1[0-9]{10}$/.test(e),isStrictMobile:e=>/^[0]?1[3|5][0-9]{10}$/.test(e),isPhone:e=>/^([0-9]{3,4}-)?[0-9]{7,8}$/.test(e),isURL:e=>/^http[s]?:\/\/.*/.test(e),isString:e=>"String"===Object.prototype.toString.call(e).slice(8,-1),isNumber:e=>"Number"===Object.prototype.toString.call(e).slice(8,-1),isBoolean:e=>"Boolean"===Object.prototype.toString.call(e).slice(8,-1),isFunction:e=>"Function"===Object.prototype.toString.call(e).slice(8,-1),isNull:e=>"Null"===Object.prototype.toString.call(e).slice(8,-1),isUndefined:e=>"Undefined"===Object.prototype.toString.call(e).slice(8,-1),isObj:e=>"Object"===Object.prototype.toString.call(e).slice(8,-1),isArray:e=>"Array"===Object.prototype.toString.call(e).slice(8,-1),isDate:e=>"Date"===Object.prototype.toString.call(e).slice(8,-1),isRegExp:e=>"RegExp"===Object.prototype.toString.call(e).slice(8,-1),isError:e=>"Error"===Object.prototype.toString.call(e).slice(8,-1),isSymbol:e=>"Symbol"===Object.prototype.toString.call(e).slice(8,-1),isPromise:e=>"Promise"===Object.prototype.toString.call(e).slice(8,-1),isSet:e=>"Set"===Object.prototype.toString.call(e).slice(8,-1),isDeviceMobile:()=>/android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase()),isIOS:()=>-1!==window.navigator.userAgent.indexOf("iPhone"),isPC:()=>{for(var e=navigator.userAgent,t=["Android","iPhone","SymbianOS","Windows Phone","iPad","iPod"],r=!0,n=0;n0){r=!1;break}return r},isWeiXinBrowser:()=>{window.navigator.userAgent.toLowerCase().match(/microMessenger/i)},isQQBrowser:()=>!!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i),isIEBrowser:()=>!(!window.ActiveXObject&&!("ActiveXObject"in window))},...{getIEVersions:()=>{if(window.ActiveXObject||"ActiveXObject"in window){var e=window.navigator.userAgent;return"-1"!=e.indexOf("MSIE 6.0")?"IE6":"-1"!=e.indexOf("MSIE 7.0")?"IE7":"-1"!=e.indexOf("MSIE 8.0")?"IE8":"-1"!=e.indexOf("MSIE 9.0")?"IE9":"-1"!=e.indexOf("MSIE 10.0")?"IE10":"IE11"}return!1},getBrowserType:()=>{var e=window.navigator.userAgent;return"-1"!=e.indexOf("QQBrowser")?"QQ":"-1"!=e.indexOf("LBBROWSER")?"liebao":"-1"!=e.indexOf("SE")?"sougou":"-1"!=e.indexOf("Firefox")?"firefox":window.ActiveXObject||"ActiveXObject"in window?"IE":"-1"!=e.indexOf("OPR")?"opera":"-1"!=e.indexOf("Chrome")?"chrome":"-1"!=e.indexOf("Safari")?"safari":void 0},getUrlParam:(e,t)=>{const r=new RegExp("(^|&)"+e+"=([^&]*)(&|$)","i");return((t?t.split("?")[1]:window.location.href.split("?")[1]).match(r)||[])[2]},appendUrlParam:(e,t,r)=>{var n=t;return"string"==typeof n&&((n={})[t]=r),n=$.param(n),e.includes("?")?e+="&"+n:e+="?"+n,e}},...{hasClass:e,addClass:(t,r)=>{if(e(t,r))return;let n=t.className.split(" ");n.push(r),t.className=n.join(" ")},removeClass:(t,r)=>{if(!e(t,r))return;let n=new RegExp("(^|\\s)"+r+"(\\s|$)","g");t.className=t.className.replace(n," ")},removeHtmltag:e=>e.replace(/<[^>]+>/g,""),injectScript:e=>new Promise(((t,r)=>{if(e){const r=document.createElement("script");r.type="text/javascript",r.async=!0,r.src=e;const n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(r,n),r.readyState?r.onreadystatechange=function(){"complete"!=r.readyState&&"loaded"!=r.readyState||(r.onreadystatechange=null,t())}:r.onload=function(){r.onload=null,t()}}else r("The script src property value is null")})),getScrollPosition:(e=window)=>({x:void 0!==e.pageXOffset?e.pageXOffset:e.scrollLeft,y:void 0!==e.pageYOffset?e.pageYOffset:e.scrollTop}),scrollToTop:t,getCursortPosition:e=>{if(document.selection){let t=document.selection.createRange();return t.setEndPoint("StartToStart",e.createTextRange()),t.text.length}return e.selectionStart}},...s};a.default=a;const{isEmail:l,isMobile:c,isStrictMobile:u,isPhone:d,isURL:p,isString:g,isNumber:f,isBoolean:w,isFunction:m,isNull:h,isUndefined:b,isObj:y,isArray:v,isDate:O,isRegExp:S,isError:x,isSymbol:M,isPromise:E,isSet:A,isDeviceMobile:P,isIOS:j,isPC:B,isWeiXinBrowser:C,isQQBrowser:I,isIEBrowser:T,getIEVersions:R,getBrowserType:N,getUrlParam:D,appendUrlParam:X,hasClass:z,addClass:L,removeClass:Q,removeHtmltag:U,injectScript:q,getScrollPosition:_,scrollToTop:F,getCursortPosition:Z,shuffle:W,checkStr:k,isCardID:Y,randomRange:H,inArray:V,sort:G,unique:K,union:J,intersection:ee,listRemoveTarget:te,listMax:re,listMin:ne,sum:ie,average:oe,trim:se,checkPwd:ae,debounce:le,throttle:ce,findMostWord:ue,flattenArray:de,getMaxCommonDivisor:pe,getMinCommonMultiple:ge,isPalindrome:fe,to_filesize:we}=a;export{L as addClass,X as appendUrlParam,oe as average,ae as checkPwd,k as checkStr,le as debounce,ue as findMostWord,de as flattenArray,N as getBrowserType,Z as getCursortPosition,R as getIEVersions,pe as getMaxCommonDivisor,ge as getMinCommonMultiple,_ as getScrollPosition,D as getUrlParam,z as hasClass,V as inArray,q as injectScript,ee as intersection,v as isArray,w as isBoolean,Y as isCardID,O as isDate,P as isDeviceMobile,l as isEmail,x as isError,m as isFunction,T as isIEBrowser,j as isIOS,c as isMobile,h as isNull,f as isNumber,y as isObj,B as isPC,fe as isPalindrome,d as isPhone,E as isPromise,I as isQQBrowser,S as isRegExp,A as isSet,u as isStrictMobile,g as isString,M as isSymbol,p as isURL,b as isUndefined,C as isWeiXinBrowser,re as listMax,ne as listMin,te as listRemoveTarget,H as randomRange,Q as removeClass,U as removeHtmltag,F as scrollToTop,W as shuffle,G as sort,ie as sum,ce as throttle,we as to_filesize,se as trim,J as union,K as unique}; +//# sourceMappingURL=methods_util.min.js.map diff --git a/dist/esm/methods_util.min.js.map b/dist/esm/methods_util.min.js.map new file mode 100644 index 0000000..d94f9bc --- /dev/null +++ b/dist/esm/methods_util.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"methods_util.min.js","sources":["../../lib/core/is.js","../../lib/core/dom.js","../../lib/core/func.js","../../lib/methods_util.js","../../lib/core/bom.js","../../index.js"],"sourcesContent":["const isEmail = (s) => {\r\n return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s)\r\n}\r\n\r\n// 是否手机号码\r\nconst isMobile = (s) => {\r\n return /^1[0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否大陆有效手机号码\r\nconst isStrictMobile = (s) => {\r\n return /^[0]?1[3|5][0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否电话号码\r\nconst isPhone = (s) => {\r\n return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)\r\n}\r\n\r\n// 是否Url地址\r\nconst isURL = (s) => {\r\n return /^http[s]?:\\/\\/.*/.test(s)\r\n}\r\n\r\n// 是否字符串\r\nconst isString = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'String'\r\n}\r\n\r\n// 是否数字\r\nconst isNumber = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Number'\r\n}\r\n\r\n// 是否Boolean\r\nconst isBoolean = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'\r\n}\r\n\r\n// 是否函数\r\nconst isFunction = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Function'\r\n}\r\n\r\n// 是否为Null\r\nconst isNull = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Null'\r\n}\r\n\r\n// 是否为undefined\r\nconst isUndefined = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'\r\n}\r\n\r\n// 是否对象\r\nconst isObj = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Object'\r\n}\r\n\r\n// 是否数组\r\nconst isArray = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Array'\r\n}\r\n\r\n// 是否时间\r\nconst isDate = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Date'\r\n}\r\n\r\n// 是否正则\r\nconst isRegExp = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'\r\n}\r\n\r\n// 是否为错误对象\r\nconst isError = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Error'\r\n}\r\n\r\n// 是否为Symbol函数\r\nconst isSymbol = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'\r\n}\r\n\r\n// 是否为Promise对象\r\nconst isPromise = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'\r\n}\r\n\r\n// 是否为Set对象\r\nconst isSet = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Set'\r\n}\r\n\r\n// 是否为移动端\r\nconst isDeviceMobile = () => {\r\n return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase())\r\n}\r\n\r\n// 是否为IOS\r\nconst isIOS = () => {\r\n var u = window.navigator.userAgent\r\n if (u.indexOf('iPhone') !== -1) return true\r\n else return false\r\n}\r\n\r\n// 是否为PC端\r\nconst isPC = () => {\r\n var userAgentInfo = navigator.userAgent;\r\n var Agents = [\"Android\", \"iPhone\",\r\n \"SymbianOS\", \"Windows Phone\",\r\n \"iPad\", \"iPod\"];\r\n var flag = true;\r\n for (var v = 0; v < Agents.length; v++) {\r\n if (userAgentInfo.indexOf(Agents[v]) > 0) {\r\n flag = false;\r\n break;\r\n }\r\n }\r\n return flag;\r\n}\r\n\r\n// 是否为微信浏览器\r\nconst isWeiXinBrowser = () => {\r\n window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'\r\n}\r\n\r\n// 是否为QQ浏览器\r\nconst isQQBrowser = () => {\r\n return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)\r\n}\r\n\r\n// 是否为IE浏览器\r\nconst isIEBrowser = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n\r\nexport default {\r\n isEmail,\r\n isMobile,\r\n isStrictMobile,\r\n isPhone,\r\n isURL,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isObj,\r\n isArray,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isSymbol,\r\n isPromise,\r\n isSet,\r\n isDeviceMobile,\r\n isIOS,\r\n isPC,\r\n isWeiXinBrowser,\r\n isQQBrowser,\r\n isIEBrowser,\r\n}\r\n","// el是否包含某个class\r\nconst hasClass = (el, className) => {\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)')\r\n return reg.test(el.className)\r\n}\r\n\r\n// el添加某个class\r\nconst addClass = (el, className) => {\r\n if (hasClass(el, className)) {\r\n return\r\n }\r\n let newClass = el.className.split(' ')\r\n newClass.push(className)\r\n el.className = newClass.join(' ')\r\n}\r\n\r\n// el去除某个class\r\nconst removeClass = (el, className) => {\r\n if (!hasClass(el, className)) {\r\n return\r\n }\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)', 'g')\r\n el.className = el.className.replace(reg, ' ')\r\n}\r\n\r\n// 去除Html标签\r\nconst removeHtmltag = (str) => {\r\n return str.replace(/<[^>]+>/g, '')\r\n}\r\n\r\n// 动态引入js\r\nconst injectScript = (src) => {\r\n return new Promise((resolve, reject) => {\r\n if (!!src) {\r\n const s = document.createElement('script');\r\n s.type = 'text/javascript';\r\n s.async = true;\r\n s.src = src;\r\n const t = document.getElementsByTagName('script')[0];\r\n t.parentNode.insertBefore(s, t);\r\n if (s.readyState) { //IE\r\n s.onreadystatechange = function () {\r\n if (s.readyState == 'complete' || s.readyState == 'loaded') {\r\n s.onreadystatechange = null;\r\n resolve()\r\n }\r\n }\r\n } else { //非IE\r\n s.onload = function () {\r\n s.onload = null;\r\n resolve()\r\n }\r\n }\r\n } else {\r\n reject('The script src property value is null')\r\n }\r\n })\r\n}\r\n\r\n// 获取滚动的坐标\r\nconst getScrollPosition = (el = window) => ({\r\n x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,\r\n y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop\r\n})\r\n\r\n// 滚动到顶部\r\nconst scrollToTop = () => {\r\n const c = document.documentElement.scrollTop || document.body.scrollTop;\r\n if (c > 0) {\r\n window.requestAnimationFrame(scrollToTop);\r\n window.scrollTo(0, c - c / 8);\r\n }\r\n}\r\n\r\n// 获取光标所在位置\r\nconst getCursortPosition = (dom) => {\r\n // ie\r\n if (document.selection) {\r\n let range = document.selection.createRange();\r\n range.setEndPoint(\"StartToStart\", dom.createTextRange());\r\n return range.text.length;\r\n } else {\r\n return dom.selectionStart\r\n }\r\n}\r\n\r\nexport default {\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n removeHtmltag,\r\n injectScript,\r\n getScrollPosition,\r\n scrollToTop,\r\n getCursortPosition,\r\n}","// 洗牌随机算法\r\nconst shuffle = (arr) => {\r\n var result = [],\r\n random;\r\n while (arr.length > 0) {\r\n random = Math.floor(Math.random() * arr.length);\r\n result.push(arr[random])\r\n arr.splice(random, 1)\r\n }\r\n return result;\r\n}\r\n\r\n// 类型判断集合\r\nconst checkStr = (str, type) => {\r\n switch (type) {\r\n case 'phone': //手机号码\r\n return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);\r\n case 'tel': //座机\r\n return /^(0\\d{2,3}-\\d{7,8})(-\\d{1,4})?$/.test(str);\r\n case 'card': //身份证\r\n return /(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/.test(str);\r\n case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线\r\n return /^[a-zA-Z]\\w{5,17}$/.test(str)\r\n case 'postal': //邮政编码\r\n return /[1-9]\\d{5}(?!\\d)/.test(str);\r\n case 'QQ': //QQ号\r\n return /^[1-9][0-9]{4,9}$/.test(str);\r\n case 'email': //邮箱\r\n return /^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$/.test(str);\r\n case 'money': //金额(小数点2位)\r\n return /^\\d*(?:\\.\\d{0,2})?$/.test(str);\r\n case 'URL': //网址\r\n return /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(str)\r\n case 'IP': //IP\r\n return /((?:(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d)\\\\.){3}(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d))/.test(str);\r\n case 'date': //日期时间\r\n return /^(\\d{4})\\-(\\d{2})\\-(\\d{2}) (\\d{2})(?:\\:\\d{2}|:(\\d{2}):(\\d{2}))$/.test(str) || /^(\\d{4})\\-(\\d{2})\\-(\\d{2})$/.test(str)\r\n case 'english': //英文\r\n return /^[a-zA-Z]+$/.test(str);\r\n case 'chinese': //中文\r\n return /[\\u4e00-\\u9fa5]/g.test(str);\r\n case 'lower': //小写\r\n return /^[a-z]+$/.test(str);\r\n case 'upper': //大写\r\n return /^[A-Z]+$/.test(str);\r\n case 'HTML': //HTML标记\r\n return /<([^]*|[^]*|[^>])*>/.test(str);\r\n default:\r\n return true;\r\n }\r\n}\r\n\r\n// 严格的身份证效验\r\nconst isCardID = (sId) => {\r\n if (!/(^\\d{15}$)|(^\\d{17}(\\d|X|x)$)/.test(sId)) {\r\n console.log('你输入的身份证长度或格式错误')\r\n return false\r\n }\r\n //身份证城市\r\n var aCity = { 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: \"台湾\", 81: \"香港\", 82: \"澳门\", 91: \"国外\" };\r\n if (!aCity[parseInt(sId.substr(0, 2))]) {\r\n console.log('你的身份证地区非法')\r\n return false\r\n }\r\n // 出生日期验证\r\n var sBirthday = (sId.substr(6, 4) + \"-\" + Number(sId.substr(10, 2)) + \"-\" + Number(sId.substr(12, 2))).replace(/-/g, \"/\"),\r\n d = new Date(sBirthday)\r\n if (sBirthday != (d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate())) {\r\n console.log('身份证上的出生日期非法')\r\n return false\r\n }\r\n // 身份证号码校验\r\n var sum = 0,\r\n weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],\r\n codes = \"10X98765432\"\r\n for (var i = 0; i < sId.length - 1; i++) {\r\n sum += sId[i] * weights[i];\r\n }\r\n var last = codes[sum % 11]; //计算出来的最后一位身份证号码\r\n if (sId[sId.length - 1] != last) {\r\n console.log('你输入的身份证号非法')\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n// 随机数范围\r\nconst randomRange = function (min, max) {\r\n if (arguments.length === 2) {\r\n return Math.floor(min + Math.random() * ((max + 1) - min))\r\n } else {\r\n return null\r\n }\r\n}\r\n\r\n// 判断元素是否在数组中\r\nconst inArray = (arr, val) => {\r\n return arr.indexOf(val) != -1 ? true : false\r\n}\r\n\r\n// 数组排序 {type} 1:从小到大 2:从大到小\r\nconst sort = (arr, type = 1) => {\r\n return arr.sort((a, b) => {\r\n switch (type) {\r\n case 1:\r\n return a - b\r\n case 2:\r\n return b - a\r\n default:\r\n return arr\r\n }\r\n })\r\n}\r\n\r\n// 数组去重\r\nconst unique = (arr) => {\r\n if (Array.hasOwnProperty('from')) {\r\n return Array.from(new Set(arr));\r\n } else {\r\n var n = {}, r = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n if (!n[arr[i]]) {\r\n n[arr[i]] = true;\r\n r.push(arr[i]);\r\n }\r\n }\r\n return r;\r\n }\r\n}\r\n\r\n// 求两个集合的并集\r\nconst union = (arr1, arr2) => {\r\n var newArr = arr1.concat(arr2)\r\n return unique(newArr)\r\n}\r\n\r\n// 求两个集合的交集\r\nconst intersection = (arr1, arr2) => {\r\n var arr1_x = unique(arr1)\r\n var arr2_x = unique(arr2)\r\n return arr1_x.filter(function (item) {\r\n return arr2_x.indexOf(item) > -1\r\n })\r\n}\r\n\r\n// 删除集合中其中一个目标元素\r\nconst listRemoveTarget = (list, target) => {\r\n var index = list.indexOf(target)\r\n if (index > -1) {\r\n list.splice(index, 1)\r\n }\r\n return list\r\n}\r\n\r\n// 求集合中的最大值\r\nconst listMax = list => {\r\n return Math.max.apply(null, list)\r\n}\r\n\r\n// 求集合中的最小值\r\nconst listMin = list => {\r\n return Math.min.apply(null, list)\r\n}\r\n\r\n// 求和\r\nconst sum = arr => {\r\n return arr.reduce((pre, cur) => {\r\n return pre + cur\r\n })\r\n}\r\n\r\n// 平均值\r\nconst average = arr => {\r\n return sum(arr) / arr.length\r\n}\r\n\r\n// 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格\r\nconst trim = (str, type = 1) => {\r\n switch (type) {\r\n case 1:\r\n return str.replace(/\\s+/g, '')\r\n case 2:\r\n return str.replace(/(^\\s*)|(\\s*$)/g, '')\r\n case 3:\r\n return str.replace(/(^\\s*)/g, '')\r\n case 4:\r\n return str.replace(/(\\s*$)/g, '')\r\n default:\r\n return str\r\n }\r\n}\r\n\r\n// 检测密码强度\r\nconst checkPwd = (str) => {\r\n var Lv = 0;\r\n if (str.length < 6) {\r\n return Lv\r\n }\r\n if (/[0-9]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[a-z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[A-Z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[\\.|-|_]/.test(str)) {\r\n Lv++\r\n }\r\n return Lv;\r\n}\r\n\r\n// 防抖函数\r\nconst debounce = function (fn, delay) {\r\n var timer = null;\r\n return function () {\r\n var that = this,\r\n arg = arguments;\r\n if (timer) {\r\n window.clearTimeout(timer)\r\n timer = null\r\n }\r\n timer = window.setTimeout(() => {\r\n fn.apply(that, arg)\r\n }, delay)\r\n }\r\n}\r\n\r\n// 节流函数\r\nconst throttle = function (fn, delay) {\r\n var oldTime = Date.now()\r\n return function () {\r\n var time = Date.now(),\r\n that = this,\r\n arg = arguments;\r\n if (time - oldTime >= delay) {\r\n oldTime = Date.now()\r\n return fn.apply(that, arg)\r\n }\r\n }\r\n}\r\n\r\n// 获取文章中出现次数最多的单词\r\nconst findMostWord = function (article) {\r\n if (!article) return false\r\n article = article.trim().toLowerCase() // 清除两端空字符串并转为小写\r\n let wordlist = article.match(/[a-z]+/g), // 将文章中的每个单词转换成数组中的每一项元素\r\n visited = [],\r\n maxNum = 0,\r\n maxWord = '';\r\n article = \" \" + wordlist.join(\" \") + \" \";\r\n // 遍历判断单词出现次数\r\n wordlist.forEach(function (item) {\r\n if (visited.indexOf(item) === -1) {\r\n visited.push(item)\r\n let wrod = new RegExp(\" \" + item + \" \", \"g\"), // 正则 全局匹配 当前单词 \r\n num = article.match(wrod).length; // 当前单词出现的个数 \r\n if (num > maxNum) {\r\n maxNum = num\r\n maxWord = item\r\n }\r\n }\r\n })\r\n return maxWord + \" \" + maxNum\r\n}\r\n\r\n// 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]\r\nconst flattenArray = function (array) {\r\n if (!Array.isArray(array)) return false\r\n var res = []\r\n res = array.reduce((prev, cur) => {\r\n return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur)\r\n }, [])\r\n return res\r\n}\r\n\r\n// 求最大公约数\r\nconst getMaxCommonDivisor = function (a, b) {\r\n if (b == 0) return a\r\n return getMaxCommonDivisor(b, a % b)\r\n}\r\n// 最小公倍数\r\nconst getMinCommonMultiple = function (a, b) {\r\n return a * b / getMaxCommonDivisor(a, b)\r\n}\r\n\r\n// 判断字符串是否回文字符串\r\nconst isPalindrome = function (str) {\r\n var reg = /[\\W_]/g;\r\n var newStr = str.replace(reg, '').toLowerCase();\r\n var reverserStr = newStr.split('').reverse().join('');\r\n return reverserStr === newStr;\r\n}\r\n\r\n// 文件大小转化\r\nconst to_filesize = (e) => {\r\n if (!e) {\r\n return \"-\";\r\n }\r\n var g = [\" Bytes\", \" KB\", \" MB\", \" GB\", \" TB\", \" PB\", \" EB\", \" ZB\", \" YB\"];\r\n var f = Math.floor(Math.log(e) / Math.log(1024));\r\n var h = (f > 1) ? 2 : 0;\r\n return (f > 1) ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f];\r\n}\r\n\r\nexport default {\r\n shuffle,\r\n checkStr,\r\n isCardID,\r\n randomRange,\r\n inArray,\r\n sort,\r\n unique,\r\n union,\r\n intersection,\r\n listRemoveTarget,\r\n listMax,\r\n listMin,\r\n sum,\r\n average,\r\n trim,\r\n checkPwd,\r\n debounce,\r\n throttle,\r\n findMostWord,\r\n flattenArray,\r\n getMaxCommonDivisor,\r\n getMinCommonMultiple,\r\n isPalindrome,\r\n to_filesize\r\n}","import is from \"./core/is\";\r\nimport bom from \"./core/bom\";\r\nimport dom from './core/dom';\r\nimport func from \"./core/func\";\r\n\r\nconst methods_util = {\r\n ...is,\r\n ...bom,\r\n ...dom,\r\n ...func\r\n}\r\n\r\n\r\nmethods_util.default = methods_util\r\n\r\nexport default methods_util","// 获取IE浏览器版本号\r\nconst getIEVersions = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n var str = window.navigator.userAgent\r\n if (str.indexOf(\"MSIE 6.0\") != \"-1\") return \"IE6\";\r\n if (str.indexOf(\"MSIE 7.0\") != \"-1\") return \"IE7\";\r\n if (str.indexOf(\"MSIE 8.0\") != \"-1\") return \"IE8\";\r\n if (str.indexOf(\"MSIE 9.0\") != \"-1\") return \"IE9\";\r\n if (str.indexOf(\"MSIE 10.0\") != \"-1\") return \"IE10\";\r\n return \"IE11\";\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n// 获取浏览器类型\r\nconst getBrowserType = () => {\r\n var str = window.navigator.userAgent;\r\n if (str.indexOf(\"QQBrowser\") != \"-1\") {\r\n return \"QQ\";\r\n } else if (str.indexOf(\"LBBROWSER\") != \"-1\") {\r\n return \"liebao\";\r\n } else if (str.indexOf(\"SE\") != \"-1\") {\r\n return \"sougou\";\r\n } else if (str.indexOf(\"Firefox\") != \"-1\") {\r\n return \"firefox\";\r\n } else if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return \"IE\";\r\n } else if (str.indexOf(\"OPR\") != \"-1\") {\r\n return \"opera\";\r\n } else if (str.indexOf(\"Chrome\") != \"-1\") {\r\n return \"chrome\";\r\n } else if (str.indexOf(\"Safari\") != \"-1\") {\r\n return \"safari\";\r\n }\r\n}\r\n\r\n// 获取url参数\r\nconst getUrlParam = (name, href) => {\r\n const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');\r\n const search = href ? href.split('?')[1] : window.location.href.split('?')[1];\r\n const r = search.match(reg) || [];\r\n return r[2];\r\n}\r\n\r\n// 追加url参数\r\nconst appendUrlParam = (url, key, value) => {\r\n var options = key;\r\n if (typeof options == 'string') {\r\n options = {};\r\n options[key] = value;\r\n }\r\n options = $.param(options);\r\n if (url.includes('?')) {\r\n url += '&' + options\r\n } else {\r\n url += '?' + options\r\n }\r\n return url;\r\n}\r\n\r\n\r\nexport default {\r\n getIEVersions,\r\n getBrowserType,\r\n getUrlParam,\r\n appendUrlParam,\r\n}","import methods_util from './lib/methods_util'\r\n\r\n\r\nconst {\r\n isEmail,\r\n isMobile,\r\n isStrictMobile,\r\n isPhone,\r\n isURL,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isObj,\r\n isArray,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isSymbol,\r\n isPromise,\r\n isSet,\r\n isDeviceMobile,\r\n isIOS,\r\n isPC,\r\n isWeiXinBrowser,\r\n isQQBrowser,\r\n isIEBrowser,\r\n getIEVersions,\r\n getBrowserType,\r\n getUrlParam,\r\n appendUrlParam,\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n removeHtmltag,\r\n injectScript,\r\n getScrollPosition,\r\n scrollToTop,\r\n getCursortPosition,\r\n shuffle,\r\n checkStr,\r\n isCardID,\r\n randomRange,\r\n inArray,\r\n sort,\r\n unique,\r\n union,\r\n intersection,\r\n listRemoveTarget,\r\n listMax,\r\n listMin,\r\n sum,\r\n average,\r\n trim,\r\n checkPwd,\r\n debounce,\r\n throttle,\r\n findMostWord,\r\n flattenArray,\r\n getMaxCommonDivisor,\r\n getMinCommonMultiple,\r\n isPalindrome,\r\n to_filesize\r\n} = methods_util\r\n\r\n\r\nexport {\r\n isEmail,\r\n isMobile,\r\n isStrictMobile,\r\n isPhone,\r\n isURL,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isObj,\r\n isArray,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isSymbol,\r\n isPromise,\r\n isSet,\r\n isDeviceMobile,\r\n isIOS,\r\n isPC,\r\n isWeiXinBrowser,\r\n isQQBrowser,\r\n isIEBrowser,\r\n getIEVersions,\r\n getBrowserType,\r\n getUrlParam,\r\n appendUrlParam,\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n removeHtmltag,\r\n injectScript,\r\n getScrollPosition,\r\n scrollToTop,\r\n getCursortPosition,\r\n shuffle,\r\n checkStr,\r\n isCardID,\r\n randomRange,\r\n inArray,\r\n sort,\r\n unique,\r\n union,\r\n intersection,\r\n listRemoveTarget,\r\n listMax,\r\n listMin,\r\n sum,\r\n average,\r\n trim,\r\n checkPwd,\r\n debounce,\r\n throttle,\r\n findMostWord,\r\n flattenArray,\r\n getMaxCommonDivisor,\r\n getMinCommonMultiple,\r\n isPalindrome,\r\n to_filesize\r\n}"],"names":["hasClass","el","className","RegExp","test","scrollToTop","c","document","documentElement","scrollTop","body","window","requestAnimationFrame","scrollTo","unique","arr","Array","hasOwnProperty","from","Set","n","r","i","length","push","sum","reduce","pre","cur","flattenArray","array","isArray","prev","concat","getMaxCommonDivisor","a","b","random","result","Math","floor","splice","str","type","sId","console","log","parseInt","substr","sBirthday","Number","replace","d","Date","getFullYear","getMonth","getDate","weights","last","min","max","arguments","val","indexOf","sort","arr1","arr2","newArr","arr1_x","arr2_x","filter","item","list","target","index","apply","Lv","fn","delay","timer","that","this","arg","clearTimeout","setTimeout","oldTime","now","article","wordlist","trim","toLowerCase","match","visited","maxNum","maxWord","join","forEach","wrod","num","newStr","split","reverse","e","g","f","h","pow","ceil","toFixed","methods_util","s","o","Object","prototype","toString","call","slice","navigator","userAgent","userAgentInfo","Agents","flag","v","ActiveXObject","name","href","reg","location","url","key","value","options","$","param","includes","newClass","src","Promise","resolve","reject","createElement","async","t","getElementsByTagName","parentNode","insertBefore","readyState","onreadystatechange","onload","x","undefined","pageXOffset","scrollLeft","y","pageYOffset","dom","selection","range","createRange","setEndPoint","createTextRange","text","selectionStart","func","default","isEmail","isMobile","isStrictMobile","isPhone","isURL","isString","isNumber","isBoolean","isFunction","isNull","isUndefined","isObj","isDate","isRegExp","isError","isSymbol","isPromise","isSet","isDeviceMobile","isIOS","isPC","isWeiXinBrowser","isQQBrowser","isIEBrowser","getIEVersions","getBrowserType","getUrlParam","appendUrlParam","addClass","removeClass","removeHtmltag","injectScript","getScrollPosition","getCursortPosition","shuffle","checkStr","isCardID","randomRange","inArray","union","intersection","listRemoveTarget","listMax","listMin","average","checkPwd","debounce","throttle","findMostWord","getMinCommonMultiple","isPalindrome","to_filesize"],"mappings":"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"} \ No newline at end of file diff --git a/dist/methods_util.js b/dist/methods_util.js new file mode 100644 index 0000000..005acb9 --- /dev/null +++ b/dist/methods_util.js @@ -0,0 +1,786 @@ +// methods_util v0.5.2 Copyright (c) 2023 Wei Zhixiang and contributors +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.methods_util = factory()); +})(this, (function () { 'use strict'; + + function ownKeys(object, enumerableOnly) { + var keys = Object.keys(object); + if (Object.getOwnPropertySymbols) { + var symbols = Object.getOwnPropertySymbols(object); + enumerableOnly && (symbols = symbols.filter(function (sym) { + return Object.getOwnPropertyDescriptor(object, sym).enumerable; + })), keys.push.apply(keys, symbols); + } + return keys; + } + function _objectSpread2(target) { + for (var i = 1; i < arguments.length; i++) { + var source = null != arguments[i] ? arguments[i] : {}; + i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { + _defineProperty(target, key, source[key]); + }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { + Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); + }); + } + return target; + } + function _defineProperty(obj, key, value) { + key = _toPropertyKey(key); + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + return obj; + } + function _toPrimitive(input, hint) { + if (typeof input !== "object" || input === null) return input; + var prim = input[Symbol.toPrimitive]; + if (prim !== undefined) { + var res = prim.call(input, hint || "default"); + if (typeof res !== "object") return res; + throw new TypeError("@@toPrimitive must return a primitive value."); + } + return (hint === "string" ? String : Number)(input); + } + function _toPropertyKey(arg) { + var key = _toPrimitive(arg, "string"); + return typeof key === "symbol" ? key : String(key); + } + + var isEmail = function isEmail(s) { + return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s); + }; + + // 是否手机号码 + var isMobile = function isMobile(s) { + return /^1[0-9]{10}$/.test(s); + }; + + // 是否大陆有效手机号码 + var isStrictMobile = function isStrictMobile(s) { + return /^[0]?1[3|5][0-9]{10}$/.test(s); + }; + + // 是否电话号码 + var isPhone = function isPhone(s) { + return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s); + }; + + // 是否Url地址 + var isURL = function isURL(s) { + return /^http[s]?:\/\/.*/.test(s); + }; + + // 是否字符串 + var isString = function isString(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'String'; + }; + + // 是否数字 + var isNumber = function isNumber(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Number'; + }; + + // 是否Boolean + var isBoolean = function isBoolean(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'; + }; + + // 是否函数 + var isFunction = function isFunction(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Function'; + }; + + // 是否为Null + var isNull = function isNull(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Null'; + }; + + // 是否为undefined + var isUndefined = function isUndefined(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'; + }; + + // 是否对象 + var isObj = function isObj(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + }; + + // 是否数组 + var isArray = function isArray(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Array'; + }; + + // 是否时间 + var isDate = function isDate(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Date'; + }; + + // 是否正则 + var isRegExp = function isRegExp(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'; + }; + + // 是否为错误对象 + var isError = function isError(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Error'; + }; + + // 是否为Symbol函数 + var isSymbol = function isSymbol(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'; + }; + + // 是否为Promise对象 + var isPromise = function isPromise(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'; + }; + + // 是否为Set对象 + var isSet = function isSet(o) { + return Object.prototype.toString.call(o).slice(8, -1) === 'Set'; + }; + + // 是否为移动端 + var isDeviceMobile = function isDeviceMobile() { + return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase()); + }; + + // 是否为IOS + var isIOS = function isIOS() { + var u = window.navigator.userAgent; + if (u.indexOf('iPhone') !== -1) return true;else return false; + }; + + // 是否为PC端 + var isPC = function isPC() { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; + }; + + // 是否为微信浏览器 + var isWeiXinBrowser = function isWeiXinBrowser() { + window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'; + }; + + // 是否为QQ浏览器 + var isQQBrowser = function isQQBrowser() { + return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i); + }; + + // 是否为IE浏览器 + var isIEBrowser = function isIEBrowser() { + if (!!window.ActiveXObject || "ActiveXObject" in window) { + return true; + } else { + return false; + } + }; + var is = { + isEmail: isEmail, + isMobile: isMobile, + isStrictMobile: isStrictMobile, + isPhone: isPhone, + isURL: isURL, + isString: isString, + isNumber: isNumber, + isBoolean: isBoolean, + isFunction: isFunction, + isNull: isNull, + isUndefined: isUndefined, + isObj: isObj, + isArray: isArray, + isDate: isDate, + isRegExp: isRegExp, + isError: isError, + isSymbol: isSymbol, + isPromise: isPromise, + isSet: isSet, + isDeviceMobile: isDeviceMobile, + isIOS: isIOS, + isPC: isPC, + isWeiXinBrowser: isWeiXinBrowser, + isQQBrowser: isQQBrowser, + isIEBrowser: isIEBrowser + }; + + // 获取IE浏览器版本号 + var getIEVersions = function getIEVersions() { + if (!!window.ActiveXObject || "ActiveXObject" in window) { + var str = window.navigator.userAgent; + if (str.indexOf("MSIE 6.0") != "-1") return "IE6"; + if (str.indexOf("MSIE 7.0") != "-1") return "IE7"; + if (str.indexOf("MSIE 8.0") != "-1") return "IE8"; + if (str.indexOf("MSIE 9.0") != "-1") return "IE9"; + if (str.indexOf("MSIE 10.0") != "-1") return "IE10"; + return "IE11"; + } else { + return false; + } + }; + + // 获取浏览器类型 + var getBrowserType = function getBrowserType() { + var str = window.navigator.userAgent; + if (str.indexOf("QQBrowser") != "-1") { + return "QQ"; + } else if (str.indexOf("LBBROWSER") != "-1") { + return "liebao"; + } else if (str.indexOf("SE") != "-1") { + return "sougou"; + } else if (str.indexOf("Firefox") != "-1") { + return "firefox"; + } else if (!!window.ActiveXObject || "ActiveXObject" in window) { + return "IE"; + } else if (str.indexOf("OPR") != "-1") { + return "opera"; + } else if (str.indexOf("Chrome") != "-1") { + return "chrome"; + } else if (str.indexOf("Safari") != "-1") { + return "safari"; + } + }; + + // 获取url参数 + var getUrlParam = function getUrlParam(name, href) { + var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); + var search = href ? href.split('?')[1] : window.location.href.split('?')[1]; + var r = search.match(reg) || []; + return r[2]; + }; + + // 追加url参数 + var appendUrlParam = function appendUrlParam(url, key, value) { + var options = key; + if (typeof options == 'string') { + options = {}; + options[key] = value; + } + options = $.param(options); + if (url.includes('?')) { + url += '&' + options; + } else { + url += '?' + options; + } + return url; + }; + var bom = { + getIEVersions: getIEVersions, + getBrowserType: getBrowserType, + getUrlParam: getUrlParam, + appendUrlParam: appendUrlParam + }; + + // el是否包含某个class + var hasClass = function hasClass(el, className) { + var reg = new RegExp('(^|\\s)' + className + '(\\s|$)'); + return reg.test(el.className); + }; + + // el添加某个class + var addClass = function addClass(el, className) { + if (hasClass(el, className)) { + return; + } + var newClass = el.className.split(' '); + newClass.push(className); + el.className = newClass.join(' '); + }; + + // el去除某个class + var removeClass = function removeClass(el, className) { + if (!hasClass(el, className)) { + return; + } + var reg = new RegExp('(^|\\s)' + className + '(\\s|$)', 'g'); + el.className = el.className.replace(reg, ' '); + }; + + // 去除Html标签 + var removeHtmltag = function removeHtmltag(str) { + return str.replace(/<[^>]+>/g, ''); + }; + + // 动态引入js + var injectScript = function injectScript(src) { + return new Promise(function (resolve, reject) { + if (!!src) { + var s = document.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = src; + var t = document.getElementsByTagName('script')[0]; + t.parentNode.insertBefore(s, t); + if (s.readyState) { + //IE + s.onreadystatechange = function () { + if (s.readyState == 'complete' || s.readyState == 'loaded') { + s.onreadystatechange = null; + resolve(); + } + }; + } else { + //非IE + s.onload = function () { + s.onload = null; + resolve(); + }; + } + } else { + reject('The script src property value is null'); + } + }); + }; + + // 获取滚动的坐标 + var getScrollPosition = function getScrollPosition() { + var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window; + return { + x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft, + y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop + }; + }; + + // 滚动到顶部 + var scrollToTop = function scrollToTop() { + var c = document.documentElement.scrollTop || document.body.scrollTop; + if (c > 0) { + window.requestAnimationFrame(scrollToTop); + window.scrollTo(0, c - c / 8); + } + }; + + // 获取光标所在位置 + var getCursortPosition = function getCursortPosition(dom) { + // ie + if (document.selection) { + var range = document.selection.createRange(); + range.setEndPoint("StartToStart", dom.createTextRange()); + return range.text.length; + } else { + return dom.selectionStart; + } + }; + var dom = { + hasClass: hasClass, + addClass: addClass, + removeClass: removeClass, + removeHtmltag: removeHtmltag, + injectScript: injectScript, + getScrollPosition: getScrollPosition, + scrollToTop: scrollToTop, + getCursortPosition: getCursortPosition + }; + + // 洗牌随机算法 + var shuffle = function shuffle(arr) { + var result = [], + random; + while (arr.length > 0) { + random = Math.floor(Math.random() * arr.length); + result.push(arr[random]); + arr.splice(random, 1); + } + return result; + }; + + // 类型判断集合 + var checkStr = function checkStr(str, type) { + switch (type) { + case 'phone': + //手机号码 + return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str); + case 'tel': + //座机 + return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str); + case 'card': + //身份证 + return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str); + case 'pwd': + //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线 + return /^[a-zA-Z]\w{5,17}$/.test(str); + case 'postal': + //邮政编码 + return /[1-9]\d{5}(?!\d)/.test(str); + case 'QQ': + //QQ号 + return /^[1-9][0-9]{4,9}$/.test(str); + case 'email': + //邮箱 + return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str); + case 'money': + //金额(小数点2位) + return /^\d*(?:\.\d{0,2})?$/.test(str); + case 'URL': + //网址 + return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str); + case 'IP': + //IP + return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str); + case 'date': + //日期时间 + return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str); + case 'english': + //英文 + return /^[a-zA-Z]+$/.test(str); + case 'chinese': + //中文 + return /[\u4e00-\u9fa5]/g.test(str); + case 'lower': + //小写 + return /^[a-z]+$/.test(str); + case 'upper': + //大写 + return /^[A-Z]+$/.test(str); + case 'HTML': + //HTML标记 + return /<([^]*|[^]*|[^>])*>/.test(str); + default: + return true; + } + }; + + // 严格的身份证效验 + var isCardID = function isCardID(sId) { + if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) { + console.log('你输入的身份证长度或格式错误'); + return false; + } + //身份证城市 + var aCity = { + 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: "台湾", + 81: "香港", + 82: "澳门", + 91: "国外" + }; + if (!aCity[parseInt(sId.substr(0, 2))]) { + console.log('你的身份证地区非法'); + return false; + } + // 出生日期验证 + var sBirthday = (sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2))).replace(/-/g, "/"), + d = new Date(sBirthday); + if (sBirthday != d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate()) { + console.log('身份证上的出生日期非法'); + return false; + } + // 身份证号码校验 + var sum = 0, + weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2], + codes = "10X98765432"; + for (var i = 0; i < sId.length - 1; i++) { + sum += sId[i] * weights[i]; + } + var last = codes[sum % 11]; //计算出来的最后一位身份证号码 + if (sId[sId.length - 1] != last) { + console.log('你输入的身份证号非法'); + return false; + } + return true; + }; + + // 随机数范围 + var randomRange = function randomRange(min, max) { + if (arguments.length === 2) { + return Math.floor(min + Math.random() * (max + 1 - min)); + } else { + return null; + } + }; + + // 判断元素是否在数组中 + var inArray = function inArray(arr, val) { + return arr.indexOf(val) != -1 ? true : false; + }; + + // 数组排序 {type} 1:从小到大 2:从大到小 + var sort = function sort(arr) { + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + return arr.sort(function (a, b) { + switch (type) { + case 1: + return a - b; + case 2: + return b - a; + default: + return arr; + } + }); + }; + + // 数组去重 + var unique = function unique(arr) { + if (Array.hasOwnProperty('from')) { + return Array.from(new Set(arr)); + } else { + var n = {}, + r = []; + for (var i = 0; i < arr.length; i++) { + if (!n[arr[i]]) { + n[arr[i]] = true; + r.push(arr[i]); + } + } + return r; + } + }; + + // 求两个集合的并集 + var union = function union(arr1, arr2) { + var newArr = arr1.concat(arr2); + return unique(newArr); + }; + + // 求两个集合的交集 + var intersection = function intersection(arr1, arr2) { + var arr1_x = unique(arr1); + var arr2_x = unique(arr2); + return arr1_x.filter(function (item) { + return arr2_x.indexOf(item) > -1; + }); + }; + + // 删除集合中其中一个目标元素 + var listRemoveTarget = function listRemoveTarget(list, target) { + var index = list.indexOf(target); + if (index > -1) { + list.splice(index, 1); + } + return list; + }; + + // 求集合中的最大值 + var listMax = function listMax(list) { + return Math.max.apply(null, list); + }; + + // 求集合中的最小值 + var listMin = function listMin(list) { + return Math.min.apply(null, list); + }; + + // 求和 + var sum = function sum(arr) { + return arr.reduce(function (pre, cur) { + return pre + cur; + }); + }; + + // 平均值 + var average = function average(arr) { + return sum(arr) / arr.length; + }; + + // 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格 + var trim = function trim(str) { + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + switch (type) { + case 1: + return str.replace(/\s+/g, ''); + case 2: + return str.replace(/(^\s*)|(\s*$)/g, ''); + case 3: + return str.replace(/(^\s*)/g, ''); + case 4: + return str.replace(/(\s*$)/g, ''); + default: + return str; + } + }; + + // 检测密码强度 + var checkPwd = function checkPwd(str) { + var Lv = 0; + if (str.length < 6) { + return Lv; + } + if (/[0-9]/.test(str)) { + Lv++; + } + if (/[a-z]/.test(str)) { + Lv++; + } + if (/[A-Z]/.test(str)) { + Lv++; + } + if (/[\.|-|_]/.test(str)) { + Lv++; + } + return Lv; + }; + + // 防抖函数 + var debounce = function debounce(fn, delay) { + var timer = null; + return function () { + var that = this, + arg = arguments; + if (timer) { + window.clearTimeout(timer); + timer = null; + } + timer = window.setTimeout(function () { + fn.apply(that, arg); + }, delay); + }; + }; + + // 节流函数 + var throttle = function throttle(fn, delay) { + var oldTime = Date.now(); + return function () { + var time = Date.now(), + that = this, + arg = arguments; + if (time - oldTime >= delay) { + oldTime = Date.now(); + return fn.apply(that, arg); + } + }; + }; + + // 获取文章中出现次数最多的单词 + var findMostWord = function findMostWord(article) { + if (!article) return false; + article = article.trim().toLowerCase(); // 清除两端空字符串并转为小写 + var wordlist = article.match(/[a-z]+/g), + // 将文章中的每个单词转换成数组中的每一项元素 + visited = [], + maxNum = 0, + maxWord = ''; + article = " " + wordlist.join(" ") + " "; + // 遍历判断单词出现次数 + wordlist.forEach(function (item) { + if (visited.indexOf(item) === -1) { + visited.push(item); + var wrod = new RegExp(" " + item + " ", "g"), + // 正则 全局匹配 当前单词 + num = article.match(wrod).length; // 当前单词出现的个数 + if (num > maxNum) { + maxNum = num; + maxWord = item; + } + } + }); + return maxWord + " " + maxNum; + }; + + // 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] + var flattenArray = function flattenArray(array) { + if (!Array.isArray(array)) return false; + var res = []; + res = array.reduce(function (prev, cur) { + return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur); + }, []); + return res; + }; + + // 求最大公约数 + var getMaxCommonDivisor = function getMaxCommonDivisor(a, b) { + if (b == 0) return a; + return getMaxCommonDivisor(b, a % b); + }; + // 最小公倍数 + var getMinCommonMultiple = function getMinCommonMultiple(a, b) { + return a * b / getMaxCommonDivisor(a, b); + }; + + // 判断字符串是否回文字符串 + var isPalindrome = function isPalindrome(str) { + var reg = /[\W_]/g; + var newStr = str.replace(reg, '').toLowerCase(); + var reverserStr = newStr.split('').reverse().join(''); + return reverserStr === newStr; + }; + + // 文件大小转化 + var to_filesize = function to_filesize(e) { + if (!e) { + return "-"; + } + var g = [" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"]; + var f = Math.floor(Math.log(e) / Math.log(1024)); + var h = f > 1 ? 2 : 0; + return f > 1 ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f]; + }; + var func = { + shuffle: shuffle, + checkStr: checkStr, + isCardID: isCardID, + randomRange: randomRange, + inArray: inArray, + sort: sort, + unique: unique, + union: union, + intersection: intersection, + listRemoveTarget: listRemoveTarget, + listMax: listMax, + listMin: listMin, + sum: sum, + average: average, + trim: trim, + checkPwd: checkPwd, + debounce: debounce, + throttle: throttle, + findMostWord: findMostWord, + flattenArray: flattenArray, + getMaxCommonDivisor: getMaxCommonDivisor, + getMinCommonMultiple: getMinCommonMultiple, + isPalindrome: isPalindrome, + to_filesize: to_filesize + }; + + var methods_util = _objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({}, is), bom), dom), func); + methods_util["default"] = methods_util; + + return methods_util; + +})); +//# sourceMappingURL=methods_util.js.map diff --git a/dist/methods_util.js.map b/dist/methods_util.js.map new file mode 100644 index 0000000..aae0461 --- /dev/null +++ b/dist/methods_util.js.map @@ -0,0 +1 @@ +{"version":3,"file":"methods_util.js","sources":["../lib/core/is.js","../lib/core/bom.js","../lib/core/dom.js","../lib/core/func.js","../lib/methods_util.js"],"sourcesContent":["const isEmail = (s) => {\r\n return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s)\r\n}\r\n\r\n// 是否手机号码\r\nconst isMobile = (s) => {\r\n return /^1[0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否大陆有效手机号码\r\nconst isStrictMobile = (s) => {\r\n return /^[0]?1[3|5][0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否电话号码\r\nconst isPhone = (s) => {\r\n return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)\r\n}\r\n\r\n// 是否Url地址\r\nconst isURL = (s) => {\r\n return /^http[s]?:\\/\\/.*/.test(s)\r\n}\r\n\r\n// 是否字符串\r\nconst isString = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'String'\r\n}\r\n\r\n// 是否数字\r\nconst isNumber = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Number'\r\n}\r\n\r\n// 是否Boolean\r\nconst isBoolean = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'\r\n}\r\n\r\n// 是否函数\r\nconst isFunction = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Function'\r\n}\r\n\r\n// 是否为Null\r\nconst isNull = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Null'\r\n}\r\n\r\n// 是否为undefined\r\nconst isUndefined = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'\r\n}\r\n\r\n// 是否对象\r\nconst isObj = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Object'\r\n}\r\n\r\n// 是否数组\r\nconst isArray = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Array'\r\n}\r\n\r\n// 是否时间\r\nconst isDate = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Date'\r\n}\r\n\r\n// 是否正则\r\nconst isRegExp = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'\r\n}\r\n\r\n// 是否为错误对象\r\nconst isError = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Error'\r\n}\r\n\r\n// 是否为Symbol函数\r\nconst isSymbol = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'\r\n}\r\n\r\n// 是否为Promise对象\r\nconst isPromise = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'\r\n}\r\n\r\n// 是否为Set对象\r\nconst isSet = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Set'\r\n}\r\n\r\n// 是否为移动端\r\nconst isDeviceMobile = () => {\r\n return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase())\r\n}\r\n\r\n// 是否为IOS\r\nconst isIOS = () => {\r\n var u = window.navigator.userAgent\r\n if (u.indexOf('iPhone') !== -1) return true\r\n else return false\r\n}\r\n\r\n// 是否为PC端\r\nconst isPC = () => {\r\n var userAgentInfo = navigator.userAgent;\r\n var Agents = [\"Android\", \"iPhone\",\r\n \"SymbianOS\", \"Windows Phone\",\r\n \"iPad\", \"iPod\"];\r\n var flag = true;\r\n for (var v = 0; v < Agents.length; v++) {\r\n if (userAgentInfo.indexOf(Agents[v]) > 0) {\r\n flag = false;\r\n break;\r\n }\r\n }\r\n return flag;\r\n}\r\n\r\n// 是否为微信浏览器\r\nconst isWeiXinBrowser = () => {\r\n window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'\r\n}\r\n\r\n// 是否为QQ浏览器\r\nconst isQQBrowser = () => {\r\n return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)\r\n}\r\n\r\n// 是否为IE浏览器\r\nconst isIEBrowser = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n\r\nexport default {\r\n isEmail,\r\n isMobile,\r\n isStrictMobile,\r\n isPhone,\r\n isURL,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isObj,\r\n isArray,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isSymbol,\r\n isPromise,\r\n isSet,\r\n isDeviceMobile,\r\n isIOS,\r\n isPC,\r\n isWeiXinBrowser,\r\n isQQBrowser,\r\n isIEBrowser,\r\n}\r\n","// 获取IE浏览器版本号\r\nconst getIEVersions = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n var str = window.navigator.userAgent\r\n if (str.indexOf(\"MSIE 6.0\") != \"-1\") return \"IE6\";\r\n if (str.indexOf(\"MSIE 7.0\") != \"-1\") return \"IE7\";\r\n if (str.indexOf(\"MSIE 8.0\") != \"-1\") return \"IE8\";\r\n if (str.indexOf(\"MSIE 9.0\") != \"-1\") return \"IE9\";\r\n if (str.indexOf(\"MSIE 10.0\") != \"-1\") return \"IE10\";\r\n return \"IE11\";\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n// 获取浏览器类型\r\nconst getBrowserType = () => {\r\n var str = window.navigator.userAgent;\r\n if (str.indexOf(\"QQBrowser\") != \"-1\") {\r\n return \"QQ\";\r\n } else if (str.indexOf(\"LBBROWSER\") != \"-1\") {\r\n return \"liebao\";\r\n } else if (str.indexOf(\"SE\") != \"-1\") {\r\n return \"sougou\";\r\n } else if (str.indexOf(\"Firefox\") != \"-1\") {\r\n return \"firefox\";\r\n } else if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return \"IE\";\r\n } else if (str.indexOf(\"OPR\") != \"-1\") {\r\n return \"opera\";\r\n } else if (str.indexOf(\"Chrome\") != \"-1\") {\r\n return \"chrome\";\r\n } else if (str.indexOf(\"Safari\") != \"-1\") {\r\n return \"safari\";\r\n }\r\n}\r\n\r\n// 获取url参数\r\nconst getUrlParam = (name, href) => {\r\n const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');\r\n const search = href ? href.split('?')[1] : window.location.href.split('?')[1];\r\n const r = search.match(reg) || [];\r\n return r[2];\r\n}\r\n\r\n// 追加url参数\r\nconst appendUrlParam = (url, key, value) => {\r\n var options = key;\r\n if (typeof options == 'string') {\r\n options = {};\r\n options[key] = value;\r\n }\r\n options = $.param(options);\r\n if (url.includes('?')) {\r\n url += '&' + options\r\n } else {\r\n url += '?' + options\r\n }\r\n return url;\r\n}\r\n\r\n\r\nexport default {\r\n getIEVersions,\r\n getBrowserType,\r\n getUrlParam,\r\n appendUrlParam,\r\n}","// el是否包含某个class\r\nconst hasClass = (el, className) => {\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)')\r\n return reg.test(el.className)\r\n}\r\n\r\n// el添加某个class\r\nconst addClass = (el, className) => {\r\n if (hasClass(el, className)) {\r\n return\r\n }\r\n let newClass = el.className.split(' ')\r\n newClass.push(className)\r\n el.className = newClass.join(' ')\r\n}\r\n\r\n// el去除某个class\r\nconst removeClass = (el, className) => {\r\n if (!hasClass(el, className)) {\r\n return\r\n }\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)', 'g')\r\n el.className = el.className.replace(reg, ' ')\r\n}\r\n\r\n// 去除Html标签\r\nconst removeHtmltag = (str) => {\r\n return str.replace(/<[^>]+>/g, '')\r\n}\r\n\r\n// 动态引入js\r\nconst injectScript = (src) => {\r\n return new Promise((resolve, reject) => {\r\n if (!!src) {\r\n const s = document.createElement('script');\r\n s.type = 'text/javascript';\r\n s.async = true;\r\n s.src = src;\r\n const t = document.getElementsByTagName('script')[0];\r\n t.parentNode.insertBefore(s, t);\r\n if (s.readyState) { //IE\r\n s.onreadystatechange = function () {\r\n if (s.readyState == 'complete' || s.readyState == 'loaded') {\r\n s.onreadystatechange = null;\r\n resolve()\r\n }\r\n }\r\n } else { //非IE\r\n s.onload = function () {\r\n s.onload = null;\r\n resolve()\r\n }\r\n }\r\n } else {\r\n reject('The script src property value is null')\r\n }\r\n })\r\n}\r\n\r\n// 获取滚动的坐标\r\nconst getScrollPosition = (el = window) => ({\r\n x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,\r\n y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop\r\n})\r\n\r\n// 滚动到顶部\r\nconst scrollToTop = () => {\r\n const c = document.documentElement.scrollTop || document.body.scrollTop;\r\n if (c > 0) {\r\n window.requestAnimationFrame(scrollToTop);\r\n window.scrollTo(0, c - c / 8);\r\n }\r\n}\r\n\r\n// 获取光标所在位置\r\nconst getCursortPosition = (dom) => {\r\n // ie\r\n if (document.selection) {\r\n let range = document.selection.createRange();\r\n range.setEndPoint(\"StartToStart\", dom.createTextRange());\r\n return range.text.length;\r\n } else {\r\n return dom.selectionStart\r\n }\r\n}\r\n\r\nexport default {\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n removeHtmltag,\r\n injectScript,\r\n getScrollPosition,\r\n scrollToTop,\r\n getCursortPosition,\r\n}","// 洗牌随机算法\r\nconst shuffle = (arr) => {\r\n var result = [],\r\n random;\r\n while (arr.length > 0) {\r\n random = Math.floor(Math.random() * arr.length);\r\n result.push(arr[random])\r\n arr.splice(random, 1)\r\n }\r\n return result;\r\n}\r\n\r\n// 类型判断集合\r\nconst checkStr = (str, type) => {\r\n switch (type) {\r\n case 'phone': //手机号码\r\n return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);\r\n case 'tel': //座机\r\n return /^(0\\d{2,3}-\\d{7,8})(-\\d{1,4})?$/.test(str);\r\n case 'card': //身份证\r\n return /(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/.test(str);\r\n case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线\r\n return /^[a-zA-Z]\\w{5,17}$/.test(str)\r\n case 'postal': //邮政编码\r\n return /[1-9]\\d{5}(?!\\d)/.test(str);\r\n case 'QQ': //QQ号\r\n return /^[1-9][0-9]{4,9}$/.test(str);\r\n case 'email': //邮箱\r\n return /^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$/.test(str);\r\n case 'money': //金额(小数点2位)\r\n return /^\\d*(?:\\.\\d{0,2})?$/.test(str);\r\n case 'URL': //网址\r\n return /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(str)\r\n case 'IP': //IP\r\n return /((?:(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d)\\\\.){3}(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d))/.test(str);\r\n case 'date': //日期时间\r\n return /^(\\d{4})\\-(\\d{2})\\-(\\d{2}) (\\d{2})(?:\\:\\d{2}|:(\\d{2}):(\\d{2}))$/.test(str) || /^(\\d{4})\\-(\\d{2})\\-(\\d{2})$/.test(str)\r\n case 'english': //英文\r\n return /^[a-zA-Z]+$/.test(str);\r\n case 'chinese': //中文\r\n return /[\\u4e00-\\u9fa5]/g.test(str);\r\n case 'lower': //小写\r\n return /^[a-z]+$/.test(str);\r\n case 'upper': //大写\r\n return /^[A-Z]+$/.test(str);\r\n case 'HTML': //HTML标记\r\n return /<([^]*|[^]*|[^>])*>/.test(str);\r\n default:\r\n return true;\r\n }\r\n}\r\n\r\n// 严格的身份证效验\r\nconst isCardID = (sId) => {\r\n if (!/(^\\d{15}$)|(^\\d{17}(\\d|X|x)$)/.test(sId)) {\r\n console.log('你输入的身份证长度或格式错误')\r\n return false\r\n }\r\n //身份证城市\r\n var aCity = { 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: \"台湾\", 81: \"香港\", 82: \"澳门\", 91: \"国外\" };\r\n if (!aCity[parseInt(sId.substr(0, 2))]) {\r\n console.log('你的身份证地区非法')\r\n return false\r\n }\r\n // 出生日期验证\r\n var sBirthday = (sId.substr(6, 4) + \"-\" + Number(sId.substr(10, 2)) + \"-\" + Number(sId.substr(12, 2))).replace(/-/g, \"/\"),\r\n d = new Date(sBirthday)\r\n if (sBirthday != (d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate())) {\r\n console.log('身份证上的出生日期非法')\r\n return false\r\n }\r\n // 身份证号码校验\r\n var sum = 0,\r\n weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],\r\n codes = \"10X98765432\"\r\n for (var i = 0; i < sId.length - 1; i++) {\r\n sum += sId[i] * weights[i];\r\n }\r\n var last = codes[sum % 11]; //计算出来的最后一位身份证号码\r\n if (sId[sId.length - 1] != last) {\r\n console.log('你输入的身份证号非法')\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n// 随机数范围\r\nconst randomRange = function (min, max) {\r\n if (arguments.length === 2) {\r\n return Math.floor(min + Math.random() * ((max + 1) - min))\r\n } else {\r\n return null\r\n }\r\n}\r\n\r\n// 判断元素是否在数组中\r\nconst inArray = (arr, val) => {\r\n return arr.indexOf(val) != -1 ? true : false\r\n}\r\n\r\n// 数组排序 {type} 1:从小到大 2:从大到小\r\nconst sort = (arr, type = 1) => {\r\n return arr.sort((a, b) => {\r\n switch (type) {\r\n case 1:\r\n return a - b\r\n case 2:\r\n return b - a\r\n default:\r\n return arr\r\n }\r\n })\r\n}\r\n\r\n// 数组去重\r\nconst unique = (arr) => {\r\n if (Array.hasOwnProperty('from')) {\r\n return Array.from(new Set(arr));\r\n } else {\r\n var n = {}, r = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n if (!n[arr[i]]) {\r\n n[arr[i]] = true;\r\n r.push(arr[i]);\r\n }\r\n }\r\n return r;\r\n }\r\n}\r\n\r\n// 求两个集合的并集\r\nconst union = (arr1, arr2) => {\r\n var newArr = arr1.concat(arr2)\r\n return unique(newArr)\r\n}\r\n\r\n// 求两个集合的交集\r\nconst intersection = (arr1, arr2) => {\r\n var arr1_x = unique(arr1)\r\n var arr2_x = unique(arr2)\r\n return arr1_x.filter(function (item) {\r\n return arr2_x.indexOf(item) > -1\r\n })\r\n}\r\n\r\n// 删除集合中其中一个目标元素\r\nconst listRemoveTarget = (list, target) => {\r\n var index = list.indexOf(target)\r\n if (index > -1) {\r\n list.splice(index, 1)\r\n }\r\n return list\r\n}\r\n\r\n// 求集合中的最大值\r\nconst listMax = list => {\r\n return Math.max.apply(null, list)\r\n}\r\n\r\n// 求集合中的最小值\r\nconst listMin = list => {\r\n return Math.min.apply(null, list)\r\n}\r\n\r\n// 求和\r\nconst sum = arr => {\r\n return arr.reduce((pre, cur) => {\r\n return pre + cur\r\n })\r\n}\r\n\r\n// 平均值\r\nconst average = arr => {\r\n return sum(arr) / arr.length\r\n}\r\n\r\n// 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格\r\nconst trim = (str, type = 1) => {\r\n switch (type) {\r\n case 1:\r\n return str.replace(/\\s+/g, '')\r\n case 2:\r\n return str.replace(/(^\\s*)|(\\s*$)/g, '')\r\n case 3:\r\n return str.replace(/(^\\s*)/g, '')\r\n case 4:\r\n return str.replace(/(\\s*$)/g, '')\r\n default:\r\n return str\r\n }\r\n}\r\n\r\n// 检测密码强度\r\nconst checkPwd = (str) => {\r\n var Lv = 0;\r\n if (str.length < 6) {\r\n return Lv\r\n }\r\n if (/[0-9]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[a-z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[A-Z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[\\.|-|_]/.test(str)) {\r\n Lv++\r\n }\r\n return Lv;\r\n}\r\n\r\n// 防抖函数\r\nconst debounce = function (fn, delay) {\r\n var timer = null;\r\n return function () {\r\n var that = this,\r\n arg = arguments;\r\n if (timer) {\r\n window.clearTimeout(timer)\r\n timer = null\r\n }\r\n timer = window.setTimeout(() => {\r\n fn.apply(that, arg)\r\n }, delay)\r\n }\r\n}\r\n\r\n// 节流函数\r\nconst throttle = function (fn, delay) {\r\n var oldTime = Date.now()\r\n return function () {\r\n var time = Date.now(),\r\n that = this,\r\n arg = arguments;\r\n if (time - oldTime >= delay) {\r\n oldTime = Date.now()\r\n return fn.apply(that, arg)\r\n }\r\n }\r\n}\r\n\r\n// 获取文章中出现次数最多的单词\r\nconst findMostWord = function (article) {\r\n if (!article) return false\r\n article = article.trim().toLowerCase() // 清除两端空字符串并转为小写\r\n let wordlist = article.match(/[a-z]+/g), // 将文章中的每个单词转换成数组中的每一项元素\r\n visited = [],\r\n maxNum = 0,\r\n maxWord = '';\r\n article = \" \" + wordlist.join(\" \") + \" \";\r\n // 遍历判断单词出现次数\r\n wordlist.forEach(function (item) {\r\n if (visited.indexOf(item) === -1) {\r\n visited.push(item)\r\n let wrod = new RegExp(\" \" + item + \" \", \"g\"), // 正则 全局匹配 当前单词 \r\n num = article.match(wrod).length; // 当前单词出现的个数 \r\n if (num > maxNum) {\r\n maxNum = num\r\n maxWord = item\r\n }\r\n }\r\n })\r\n return maxWord + \" \" + maxNum\r\n}\r\n\r\n// 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]\r\nconst flattenArray = function (array) {\r\n if (!Array.isArray(array)) return false\r\n var res = []\r\n res = array.reduce((prev, cur) => {\r\n return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur)\r\n }, [])\r\n return res\r\n}\r\n\r\n// 求最大公约数\r\nconst getMaxCommonDivisor = function (a, b) {\r\n if (b == 0) return a\r\n return getMaxCommonDivisor(b, a % b)\r\n}\r\n// 最小公倍数\r\nconst getMinCommonMultiple = function (a, b) {\r\n return a * b / getMaxCommonDivisor(a, b)\r\n}\r\n\r\n// 判断字符串是否回文字符串\r\nconst isPalindrome = function (str) {\r\n var reg = /[\\W_]/g;\r\n var newStr = str.replace(reg, '').toLowerCase();\r\n var reverserStr = newStr.split('').reverse().join('');\r\n return reverserStr === newStr;\r\n}\r\n\r\n// 文件大小转化\r\nconst to_filesize = (e) => {\r\n if (!e) {\r\n return \"-\";\r\n }\r\n var g = [\" Bytes\", \" KB\", \" MB\", \" GB\", \" TB\", \" PB\", \" EB\", \" ZB\", \" YB\"];\r\n var f = Math.floor(Math.log(e) / Math.log(1024));\r\n var h = (f > 1) ? 2 : 0;\r\n return (f > 1) ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f];\r\n}\r\n\r\nexport default {\r\n shuffle,\r\n checkStr,\r\n isCardID,\r\n randomRange,\r\n inArray,\r\n sort,\r\n unique,\r\n union,\r\n intersection,\r\n listRemoveTarget,\r\n listMax,\r\n listMin,\r\n sum,\r\n average,\r\n trim,\r\n checkPwd,\r\n debounce,\r\n throttle,\r\n findMostWord,\r\n flattenArray,\r\n getMaxCommonDivisor,\r\n getMinCommonMultiple,\r\n isPalindrome,\r\n to_filesize\r\n}","import is from \"./core/is\";\r\nimport bom from \"./core/bom\";\r\nimport dom from './core/dom';\r\nimport func from \"./core/func\";\r\n\r\nconst methods_util = {\r\n ...is,\r\n ...bom,\r\n ...dom,\r\n ...func\r\n}\r\n\r\n\r\nmethods_util.default = methods_util\r\n\r\nexport default methods_util"],"names":["isEmail","s","test","isMobile","isStrictMobile","isPhone","isURL","isString","o","Object","prototype","toString","call","slice","isNumber","isBoolean","isFunction","isNull","isUndefined","isObj","isArray","isDate","isRegExp","isError","isSymbol","isPromise","isSet","isDeviceMobile","window","navigator","userAgent","toLowerCase","isIOS","u","indexOf","isPC","userAgentInfo","Agents","flag","v","length","isWeiXinBrowser","match","isQQBrowser","isIEBrowser","ActiveXObject","getIEVersions","str","getBrowserType","getUrlParam","name","href","reg","RegExp","search","split","location","r","appendUrlParam","url","key","value","options","$","param","includes","hasClass","el","className","addClass","newClass","push","join","removeClass","replace","removeHtmltag","injectScript","src","Promise","resolve","reject","document","createElement","type","async","t","getElementsByTagName","parentNode","insertBefore","readyState","onreadystatechange","onload","getScrollPosition","x","pageXOffset","undefined","scrollLeft","y","pageYOffset","scrollTop","scrollToTop","c","documentElement","body","requestAnimationFrame","scrollTo","getCursortPosition","dom","selection","range","createRange","setEndPoint","createTextRange","text","selectionStart","shuffle","arr","result","random","Math","floor","splice","checkStr","isCardID","sId","console","log","aCity","parseInt","substr","sBirthday","Number","d","Date","getFullYear","getMonth","getDate","sum","weights","codes","i","last","randomRange","min","max","arguments","inArray","val","sort","a","b","unique","Array","hasOwnProperty","from","Set","n","union","arr1","arr2","newArr","concat","intersection","arr1_x","arr2_x","filter","item","listRemoveTarget","list","target","index","listMax","apply","listMin","reduce","pre","cur","average","trim","checkPwd","Lv","debounce","fn","delay","timer","that","arg","clearTimeout","setTimeout","throttle","oldTime","now","time","findMostWord","article","wordlist","visited","maxNum","maxWord","forEach","wrod","num","flattenArray","array","res","prev","getMaxCommonDivisor","getMinCommonMultiple","isPalindrome","newStr","reverserStr","reverse","to_filesize","e","g","f","h","pow","ceil","toFixed","methods_util","is","bom","func"],"mappings":"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"} \ No newline at end of file diff --git a/dist/methods_util.min.js b/dist/methods_util.min.js new file mode 100644 index 0000000..b4be3e7 --- /dev/null +++ b/dist/methods_util.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).methods_util=t()}(this,(function(){"use strict";function e(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function t(t){for(var n=1;n]+>/g,"")},injectScript:function(e){return new Promise((function(t,r){if(e){var n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src=e;var o=document.getElementsByTagName("script")[0];o.parentNode.insertBefore(n,o),n.readyState?n.onreadystatechange=function(){"complete"!=n.readyState&&"loaded"!=n.readyState||(n.onreadystatechange=null,t())}:n.onload=function(){n.onload=null,t()}}else r("The script src property value is null")}))},getScrollPosition:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;return{x:void 0!==e.pageXOffset?e.pageXOffset:e.scrollLeft,y:void 0!==e.pageYOffset?e.pageYOffset:e.scrollTop}},scrollToTop:function e(){var t=document.documentElement.scrollTop||document.body.scrollTop;t>0&&(window.requestAnimationFrame(e),window.scrollTo(0,t-t/8))},getCursortPosition:function(e){if(document.selection){var t=document.selection.createRange();return t.setEndPoint("StartToStart",e.createTextRange()),t.text.length}return e.selectionStart}},c=function(e){if(Array.hasOwnProperty("from"))return Array.from(new Set(e));for(var t={},r=[],n=0;n0;)t=Math.floor(Math.random()*e.length),r.push(e[t]),e.splice(t,1);return r},checkStr:function(e,t){switch(t){case"phone":return/^1[3|4|5|6|7|8|9][0-9]{9}$/.test(e);case"tel":return/^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(e);case"card":return/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(e);case"pwd":return/^[a-zA-Z]\w{5,17}$/.test(e);case"postal":return/[1-9]\d{5}(?!\d)/.test(e);case"QQ":return/^[1-9][0-9]{4,9}$/.test(e);case"email":return/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(e);case"money":return/^\d*(?:\.\d{0,2})?$/.test(e);case"URL":return/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(e);case"IP":return/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(e);case"date":return/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(e)||/^(\d{4})\-(\d{2})\-(\d{2})$/.test(e);case"english":return/^[a-zA-Z]+$/.test(e);case"chinese":return/[\u4e00-\u9fa5]/g.test(e);case"lower":return/^[a-z]+$/.test(e);case"upper":return/^[A-Z]+$/.test(e);case"HTML":return/<([^]*|[^]*|[^>])*>/.test(e);default:return!0}},isCardID:function(e){if(!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(e))return console.log("你输入的身份证长度或格式错误"),!1;if(!{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:"台湾",81:"香港",82:"澳门",91:"国外"}[parseInt(e.substr(0,2))])return console.log("你的身份证地区非法"),!1;var t=(e.substr(6,4)+"-"+Number(e.substr(10,2))+"-"+Number(e.substr(12,2))).replace(/-/g,"/"),r=new Date(t);if(t!=r.getFullYear()+"/"+(r.getMonth()+1)+"/"+r.getDate())return console.log("身份证上的出生日期非法"),!1;for(var n=0,o=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],i=0;i1&&void 0!==arguments[1]?arguments[1]:1;return e.sort((function(r,n){switch(t){case 1:return r-n;case 2:return n-r;default:return e}}))},unique:c,union:function(e,t){var r=e.concat(t);return c(r)},intersection:function(e,t){var r=c(e),n=c(t);return r.filter((function(e){return n.indexOf(e)>-1}))},listRemoveTarget:function(e,t){var r=e.indexOf(t);return r>-1&&e.splice(r,1),e},listMax:function(e){return Math.max.apply(null,e)},listMin:function(e){return Math.min.apply(null,e)},sum:a,average:function(e){return a(e)/e.length},trim:function(e){switch(arguments.length>1&&void 0!==arguments[1]?arguments[1]:1){case 1:return e.replace(/\s+/g,"");case 2:return e.replace(/(^\s*)|(\s*$)/g,"");case 3:return e.replace(/(^\s*)/g,"");case 4:return e.replace(/(\s*$)/g,"");default:return e}},checkPwd:function(e){var t=0;return e.length<6||(/[0-9]/.test(e)&&t++,/[a-z]/.test(e)&&t++,/[A-Z]/.test(e)&&t++,/[\.|-|_]/.test(e)&&t++),t},debounce:function(e,t){var r=null;return function(){var n=this,o=arguments;r&&(window.clearTimeout(r),r=null),r=window.setTimeout((function(){e.apply(n,o)}),t)}},throttle:function(e,t){var r=Date.now();return function(){var n=arguments;if(Date.now()-r>=t)return r=Date.now(),e.apply(this,n)}},findMostWord:function(e){if(!e)return!1;var t=(e=e.trim().toLowerCase()).match(/[a-z]+/g),r=[],n=0,o="";return e=" "+t.join(" ")+" ",t.forEach((function(t){if(-1===r.indexOf(t)){r.push(t);var i=new RegExp(" "+t+" ","g"),c=e.match(i).length;c>n&&(n=c,o=t)}})),o+" "+n},flattenArray:function e(t){if(!Array.isArray(t))return!1;return t.reduce((function(t,r){return t.concat(Array.isArray(r)?e(r):r)}),[])},getMaxCommonDivisor:u,getMinCommonMultiple:function(e,t){return e*t/u(e,t)},isPalindrome:function(e){var t=e.replace(/[\W_]/g,"").toLowerCase();return t.split("").reverse().join("")===t},to_filesize:function(e){if(!e)return"-";var t=[" Bytes"," KB"," MB"," GB"," TB"," PB"," EB"," ZB"," YB"],r=Math.floor(Math.log(e)/Math.log(1024)),n=r>1?2:0;return r>1?(e/Math.pow(1024,Math.ceil(r))).toFixed(n)+t[r]:Math.ceil(e/Math.pow(1024,Math.ceil(r))).toFixed(n)+t[r]}},l=t(t(t(t({},{isEmail:function(e){return/^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(e)},isMobile:function(e){return/^1[0-9]{10}$/.test(e)},isStrictMobile:function(e){return/^[0]?1[3|5][0-9]{10}$/.test(e)},isPhone:function(e){return/^([0-9]{3,4}-)?[0-9]{7,8}$/.test(e)},isURL:function(e){return/^http[s]?:\/\/.*/.test(e)},isString:function(e){return"String"===Object.prototype.toString.call(e).slice(8,-1)},isNumber:function(e){return"Number"===Object.prototype.toString.call(e).slice(8,-1)},isBoolean:function(e){return"Boolean"===Object.prototype.toString.call(e).slice(8,-1)},isFunction:function(e){return"Function"===Object.prototype.toString.call(e).slice(8,-1)},isNull:function(e){return"Null"===Object.prototype.toString.call(e).slice(8,-1)},isUndefined:function(e){return"Undefined"===Object.prototype.toString.call(e).slice(8,-1)},isObj:function(e){return"Object"===Object.prototype.toString.call(e).slice(8,-1)},isArray:function(e){return"Array"===Object.prototype.toString.call(e).slice(8,-1)},isDate:function(e){return"Date"===Object.prototype.toString.call(e).slice(8,-1)},isRegExp:function(e){return"RegExp"===Object.prototype.toString.call(e).slice(8,-1)},isError:function(e){return"Error"===Object.prototype.toString.call(e).slice(8,-1)},isSymbol:function(e){return"Symbol"===Object.prototype.toString.call(e).slice(8,-1)},isPromise:function(e){return"Promise"===Object.prototype.toString.call(e).slice(8,-1)},isSet:function(e){return"Set"===Object.prototype.toString.call(e).slice(8,-1)},isDeviceMobile:function(){return/android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase())},isIOS:function(){return-1!==window.navigator.userAgent.indexOf("iPhone")},isPC:function(){for(var e=navigator.userAgent,t=["Android","iPhone","SymbianOS","Windows Phone","iPad","iPod"],r=!0,n=0;n0){r=!1;break}return r},isWeiXinBrowser:function(){window.navigator.userAgent.toLowerCase().match(/microMessenger/i)},isQQBrowser:function(){return!!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)},isIEBrowser:function(){return!(!window.ActiveXObject&&!("ActiveXObject"in window))}}),n),i),s);return l.default=l,l})); +//# sourceMappingURL=methods_util.min.js.map diff --git a/dist/methods_util.min.js.map b/dist/methods_util.min.js.map new file mode 100644 index 0000000..9697962 --- /dev/null +++ b/dist/methods_util.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"methods_util.min.js","sources":["../lib/core/is.js","../lib/core/bom.js","../lib/core/dom.js","../lib/core/func.js","../lib/methods_util.js"],"sourcesContent":["const isEmail = (s) => {\r\n return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s)\r\n}\r\n\r\n// 是否手机号码\r\nconst isMobile = (s) => {\r\n return /^1[0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否大陆有效手机号码\r\nconst isStrictMobile = (s) => {\r\n return /^[0]?1[3|5][0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否电话号码\r\nconst isPhone = (s) => {\r\n return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)\r\n}\r\n\r\n// 是否Url地址\r\nconst isURL = (s) => {\r\n return /^http[s]?:\\/\\/.*/.test(s)\r\n}\r\n\r\n// 是否字符串\r\nconst isString = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'String'\r\n}\r\n\r\n// 是否数字\r\nconst isNumber = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Number'\r\n}\r\n\r\n// 是否Boolean\r\nconst isBoolean = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'\r\n}\r\n\r\n// 是否函数\r\nconst isFunction = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Function'\r\n}\r\n\r\n// 是否为Null\r\nconst isNull = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Null'\r\n}\r\n\r\n// 是否为undefined\r\nconst isUndefined = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'\r\n}\r\n\r\n// 是否对象\r\nconst isObj = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Object'\r\n}\r\n\r\n// 是否数组\r\nconst isArray = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Array'\r\n}\r\n\r\n// 是否时间\r\nconst isDate = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Date'\r\n}\r\n\r\n// 是否正则\r\nconst isRegExp = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'\r\n}\r\n\r\n// 是否为错误对象\r\nconst isError = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Error'\r\n}\r\n\r\n// 是否为Symbol函数\r\nconst isSymbol = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'\r\n}\r\n\r\n// 是否为Promise对象\r\nconst isPromise = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'\r\n}\r\n\r\n// 是否为Set对象\r\nconst isSet = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Set'\r\n}\r\n\r\n// 是否为移动端\r\nconst isDeviceMobile = () => {\r\n return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase())\r\n}\r\n\r\n// 是否为IOS\r\nconst isIOS = () => {\r\n var u = window.navigator.userAgent\r\n if (u.indexOf('iPhone') !== -1) return true\r\n else return false\r\n}\r\n\r\n// 是否为PC端\r\nconst isPC = () => {\r\n var userAgentInfo = navigator.userAgent;\r\n var Agents = [\"Android\", \"iPhone\",\r\n \"SymbianOS\", \"Windows Phone\",\r\n \"iPad\", \"iPod\"];\r\n var flag = true;\r\n for (var v = 0; v < Agents.length; v++) {\r\n if (userAgentInfo.indexOf(Agents[v]) > 0) {\r\n flag = false;\r\n break;\r\n }\r\n }\r\n return flag;\r\n}\r\n\r\n// 是否为微信浏览器\r\nconst isWeiXinBrowser = () => {\r\n window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'\r\n}\r\n\r\n// 是否为QQ浏览器\r\nconst isQQBrowser = () => {\r\n return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)\r\n}\r\n\r\n// 是否为IE浏览器\r\nconst isIEBrowser = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n\r\nexport default {\r\n isEmail,\r\n isMobile,\r\n isStrictMobile,\r\n isPhone,\r\n isURL,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isObj,\r\n isArray,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isSymbol,\r\n isPromise,\r\n isSet,\r\n isDeviceMobile,\r\n isIOS,\r\n isPC,\r\n isWeiXinBrowser,\r\n isQQBrowser,\r\n isIEBrowser,\r\n}\r\n","// 获取IE浏览器版本号\r\nconst getIEVersions = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n var str = window.navigator.userAgent\r\n if (str.indexOf(\"MSIE 6.0\") != \"-1\") return \"IE6\";\r\n if (str.indexOf(\"MSIE 7.0\") != \"-1\") return \"IE7\";\r\n if (str.indexOf(\"MSIE 8.0\") != \"-1\") return \"IE8\";\r\n if (str.indexOf(\"MSIE 9.0\") != \"-1\") return \"IE9\";\r\n if (str.indexOf(\"MSIE 10.0\") != \"-1\") return \"IE10\";\r\n return \"IE11\";\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n// 获取浏览器类型\r\nconst getBrowserType = () => {\r\n var str = window.navigator.userAgent;\r\n if (str.indexOf(\"QQBrowser\") != \"-1\") {\r\n return \"QQ\";\r\n } else if (str.indexOf(\"LBBROWSER\") != \"-1\") {\r\n return \"liebao\";\r\n } else if (str.indexOf(\"SE\") != \"-1\") {\r\n return \"sougou\";\r\n } else if (str.indexOf(\"Firefox\") != \"-1\") {\r\n return \"firefox\";\r\n } else if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return \"IE\";\r\n } else if (str.indexOf(\"OPR\") != \"-1\") {\r\n return \"opera\";\r\n } else if (str.indexOf(\"Chrome\") != \"-1\") {\r\n return \"chrome\";\r\n } else if (str.indexOf(\"Safari\") != \"-1\") {\r\n return \"safari\";\r\n }\r\n}\r\n\r\n// 获取url参数\r\nconst getUrlParam = (name, href) => {\r\n const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');\r\n const search = href ? href.split('?')[1] : window.location.href.split('?')[1];\r\n const r = search.match(reg) || [];\r\n return r[2];\r\n}\r\n\r\n// 追加url参数\r\nconst appendUrlParam = (url, key, value) => {\r\n var options = key;\r\n if (typeof options == 'string') {\r\n options = {};\r\n options[key] = value;\r\n }\r\n options = $.param(options);\r\n if (url.includes('?')) {\r\n url += '&' + options\r\n } else {\r\n url += '?' + options\r\n }\r\n return url;\r\n}\r\n\r\n\r\nexport default {\r\n getIEVersions,\r\n getBrowserType,\r\n getUrlParam,\r\n appendUrlParam,\r\n}","// el是否包含某个class\r\nconst hasClass = (el, className) => {\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)')\r\n return reg.test(el.className)\r\n}\r\n\r\n// el添加某个class\r\nconst addClass = (el, className) => {\r\n if (hasClass(el, className)) {\r\n return\r\n }\r\n let newClass = el.className.split(' ')\r\n newClass.push(className)\r\n el.className = newClass.join(' ')\r\n}\r\n\r\n// el去除某个class\r\nconst removeClass = (el, className) => {\r\n if (!hasClass(el, className)) {\r\n return\r\n }\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)', 'g')\r\n el.className = el.className.replace(reg, ' ')\r\n}\r\n\r\n// 去除Html标签\r\nconst removeHtmltag = (str) => {\r\n return str.replace(/<[^>]+>/g, '')\r\n}\r\n\r\n// 动态引入js\r\nconst injectScript = (src) => {\r\n return new Promise((resolve, reject) => {\r\n if (!!src) {\r\n const s = document.createElement('script');\r\n s.type = 'text/javascript';\r\n s.async = true;\r\n s.src = src;\r\n const t = document.getElementsByTagName('script')[0];\r\n t.parentNode.insertBefore(s, t);\r\n if (s.readyState) { //IE\r\n s.onreadystatechange = function () {\r\n if (s.readyState == 'complete' || s.readyState == 'loaded') {\r\n s.onreadystatechange = null;\r\n resolve()\r\n }\r\n }\r\n } else { //非IE\r\n s.onload = function () {\r\n s.onload = null;\r\n resolve()\r\n }\r\n }\r\n } else {\r\n reject('The script src property value is null')\r\n }\r\n })\r\n}\r\n\r\n// 获取滚动的坐标\r\nconst getScrollPosition = (el = window) => ({\r\n x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,\r\n y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop\r\n})\r\n\r\n// 滚动到顶部\r\nconst scrollToTop = () => {\r\n const c = document.documentElement.scrollTop || document.body.scrollTop;\r\n if (c > 0) {\r\n window.requestAnimationFrame(scrollToTop);\r\n window.scrollTo(0, c - c / 8);\r\n }\r\n}\r\n\r\n// 获取光标所在位置\r\nconst getCursortPosition = (dom) => {\r\n // ie\r\n if (document.selection) {\r\n let range = document.selection.createRange();\r\n range.setEndPoint(\"StartToStart\", dom.createTextRange());\r\n return range.text.length;\r\n } else {\r\n return dom.selectionStart\r\n }\r\n}\r\n\r\nexport default {\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n removeHtmltag,\r\n injectScript,\r\n getScrollPosition,\r\n scrollToTop,\r\n getCursortPosition,\r\n}","// 洗牌随机算法\r\nconst shuffle = (arr) => {\r\n var result = [],\r\n random;\r\n while (arr.length > 0) {\r\n random = Math.floor(Math.random() * arr.length);\r\n result.push(arr[random])\r\n arr.splice(random, 1)\r\n }\r\n return result;\r\n}\r\n\r\n// 类型判断集合\r\nconst checkStr = (str, type) => {\r\n switch (type) {\r\n case 'phone': //手机号码\r\n return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);\r\n case 'tel': //座机\r\n return /^(0\\d{2,3}-\\d{7,8})(-\\d{1,4})?$/.test(str);\r\n case 'card': //身份证\r\n return /(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/.test(str);\r\n case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线\r\n return /^[a-zA-Z]\\w{5,17}$/.test(str)\r\n case 'postal': //邮政编码\r\n return /[1-9]\\d{5}(?!\\d)/.test(str);\r\n case 'QQ': //QQ号\r\n return /^[1-9][0-9]{4,9}$/.test(str);\r\n case 'email': //邮箱\r\n return /^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$/.test(str);\r\n case 'money': //金额(小数点2位)\r\n return /^\\d*(?:\\.\\d{0,2})?$/.test(str);\r\n case 'URL': //网址\r\n return /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(str)\r\n case 'IP': //IP\r\n return /((?:(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d)\\\\.){3}(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d))/.test(str);\r\n case 'date': //日期时间\r\n return /^(\\d{4})\\-(\\d{2})\\-(\\d{2}) (\\d{2})(?:\\:\\d{2}|:(\\d{2}):(\\d{2}))$/.test(str) || /^(\\d{4})\\-(\\d{2})\\-(\\d{2})$/.test(str)\r\n case 'english': //英文\r\n return /^[a-zA-Z]+$/.test(str);\r\n case 'chinese': //中文\r\n return /[\\u4e00-\\u9fa5]/g.test(str);\r\n case 'lower': //小写\r\n return /^[a-z]+$/.test(str);\r\n case 'upper': //大写\r\n return /^[A-Z]+$/.test(str);\r\n case 'HTML': //HTML标记\r\n return /<([^]*|[^]*|[^>])*>/.test(str);\r\n default:\r\n return true;\r\n }\r\n}\r\n\r\n// 严格的身份证效验\r\nconst isCardID = (sId) => {\r\n if (!/(^\\d{15}$)|(^\\d{17}(\\d|X|x)$)/.test(sId)) {\r\n console.log('你输入的身份证长度或格式错误')\r\n return false\r\n }\r\n //身份证城市\r\n var aCity = { 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: \"台湾\", 81: \"香港\", 82: \"澳门\", 91: \"国外\" };\r\n if (!aCity[parseInt(sId.substr(0, 2))]) {\r\n console.log('你的身份证地区非法')\r\n return false\r\n }\r\n // 出生日期验证\r\n var sBirthday = (sId.substr(6, 4) + \"-\" + Number(sId.substr(10, 2)) + \"-\" + Number(sId.substr(12, 2))).replace(/-/g, \"/\"),\r\n d = new Date(sBirthday)\r\n if (sBirthday != (d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate())) {\r\n console.log('身份证上的出生日期非法')\r\n return false\r\n }\r\n // 身份证号码校验\r\n var sum = 0,\r\n weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],\r\n codes = \"10X98765432\"\r\n for (var i = 0; i < sId.length - 1; i++) {\r\n sum += sId[i] * weights[i];\r\n }\r\n var last = codes[sum % 11]; //计算出来的最后一位身份证号码\r\n if (sId[sId.length - 1] != last) {\r\n console.log('你输入的身份证号非法')\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n// 随机数范围\r\nconst randomRange = function (min, max) {\r\n if (arguments.length === 2) {\r\n return Math.floor(min + Math.random() * ((max + 1) - min))\r\n } else {\r\n return null\r\n }\r\n}\r\n\r\n// 判断元素是否在数组中\r\nconst inArray = (arr, val) => {\r\n return arr.indexOf(val) != -1 ? true : false\r\n}\r\n\r\n// 数组排序 {type} 1:从小到大 2:从大到小\r\nconst sort = (arr, type = 1) => {\r\n return arr.sort((a, b) => {\r\n switch (type) {\r\n case 1:\r\n return a - b\r\n case 2:\r\n return b - a\r\n default:\r\n return arr\r\n }\r\n })\r\n}\r\n\r\n// 数组去重\r\nconst unique = (arr) => {\r\n if (Array.hasOwnProperty('from')) {\r\n return Array.from(new Set(arr));\r\n } else {\r\n var n = {}, r = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n if (!n[arr[i]]) {\r\n n[arr[i]] = true;\r\n r.push(arr[i]);\r\n }\r\n }\r\n return r;\r\n }\r\n}\r\n\r\n// 求两个集合的并集\r\nconst union = (arr1, arr2) => {\r\n var newArr = arr1.concat(arr2)\r\n return unique(newArr)\r\n}\r\n\r\n// 求两个集合的交集\r\nconst intersection = (arr1, arr2) => {\r\n var arr1_x = unique(arr1)\r\n var arr2_x = unique(arr2)\r\n return arr1_x.filter(function (item) {\r\n return arr2_x.indexOf(item) > -1\r\n })\r\n}\r\n\r\n// 删除集合中其中一个目标元素\r\nconst listRemoveTarget = (list, target) => {\r\n var index = list.indexOf(target)\r\n if (index > -1) {\r\n list.splice(index, 1)\r\n }\r\n return list\r\n}\r\n\r\n// 求集合中的最大值\r\nconst listMax = list => {\r\n return Math.max.apply(null, list)\r\n}\r\n\r\n// 求集合中的最小值\r\nconst listMin = list => {\r\n return Math.min.apply(null, list)\r\n}\r\n\r\n// 求和\r\nconst sum = arr => {\r\n return arr.reduce((pre, cur) => {\r\n return pre + cur\r\n })\r\n}\r\n\r\n// 平均值\r\nconst average = arr => {\r\n return sum(arr) / arr.length\r\n}\r\n\r\n// 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格\r\nconst trim = (str, type = 1) => {\r\n switch (type) {\r\n case 1:\r\n return str.replace(/\\s+/g, '')\r\n case 2:\r\n return str.replace(/(^\\s*)|(\\s*$)/g, '')\r\n case 3:\r\n return str.replace(/(^\\s*)/g, '')\r\n case 4:\r\n return str.replace(/(\\s*$)/g, '')\r\n default:\r\n return str\r\n }\r\n}\r\n\r\n// 检测密码强度\r\nconst checkPwd = (str) => {\r\n var Lv = 0;\r\n if (str.length < 6) {\r\n return Lv\r\n }\r\n if (/[0-9]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[a-z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[A-Z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[\\.|-|_]/.test(str)) {\r\n Lv++\r\n }\r\n return Lv;\r\n}\r\n\r\n// 防抖函数\r\nconst debounce = function (fn, delay) {\r\n var timer = null;\r\n return function () {\r\n var that = this,\r\n arg = arguments;\r\n if (timer) {\r\n window.clearTimeout(timer)\r\n timer = null\r\n }\r\n timer = window.setTimeout(() => {\r\n fn.apply(that, arg)\r\n }, delay)\r\n }\r\n}\r\n\r\n// 节流函数\r\nconst throttle = function (fn, delay) {\r\n var oldTime = Date.now()\r\n return function () {\r\n var time = Date.now(),\r\n that = this,\r\n arg = arguments;\r\n if (time - oldTime >= delay) {\r\n oldTime = Date.now()\r\n return fn.apply(that, arg)\r\n }\r\n }\r\n}\r\n\r\n// 获取文章中出现次数最多的单词\r\nconst findMostWord = function (article) {\r\n if (!article) return false\r\n article = article.trim().toLowerCase() // 清除两端空字符串并转为小写\r\n let wordlist = article.match(/[a-z]+/g), // 将文章中的每个单词转换成数组中的每一项元素\r\n visited = [],\r\n maxNum = 0,\r\n maxWord = '';\r\n article = \" \" + wordlist.join(\" \") + \" \";\r\n // 遍历判断单词出现次数\r\n wordlist.forEach(function (item) {\r\n if (visited.indexOf(item) === -1) {\r\n visited.push(item)\r\n let wrod = new RegExp(\" \" + item + \" \", \"g\"), // 正则 全局匹配 当前单词 \r\n num = article.match(wrod).length; // 当前单词出现的个数 \r\n if (num > maxNum) {\r\n maxNum = num\r\n maxWord = item\r\n }\r\n }\r\n })\r\n return maxWord + \" \" + maxNum\r\n}\r\n\r\n// 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]\r\nconst flattenArray = function (array) {\r\n if (!Array.isArray(array)) return false\r\n var res = []\r\n res = array.reduce((prev, cur) => {\r\n return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur)\r\n }, [])\r\n return res\r\n}\r\n\r\n// 求最大公约数\r\nconst getMaxCommonDivisor = function (a, b) {\r\n if (b == 0) return a\r\n return getMaxCommonDivisor(b, a % b)\r\n}\r\n// 最小公倍数\r\nconst getMinCommonMultiple = function (a, b) {\r\n return a * b / getMaxCommonDivisor(a, b)\r\n}\r\n\r\n// 判断字符串是否回文字符串\r\nconst isPalindrome = function (str) {\r\n var reg = /[\\W_]/g;\r\n var newStr = str.replace(reg, '').toLowerCase();\r\n var reverserStr = newStr.split('').reverse().join('');\r\n return reverserStr === newStr;\r\n}\r\n\r\n// 文件大小转化\r\nconst to_filesize = (e) => {\r\n if (!e) {\r\n return \"-\";\r\n }\r\n var g = [\" Bytes\", \" KB\", \" MB\", \" GB\", \" TB\", \" PB\", \" EB\", \" ZB\", \" YB\"];\r\n var f = Math.floor(Math.log(e) / Math.log(1024));\r\n var h = (f > 1) ? 2 : 0;\r\n return (f > 1) ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f];\r\n}\r\n\r\nexport default {\r\n shuffle,\r\n checkStr,\r\n isCardID,\r\n randomRange,\r\n inArray,\r\n sort,\r\n unique,\r\n union,\r\n intersection,\r\n listRemoveTarget,\r\n listMax,\r\n listMin,\r\n sum,\r\n average,\r\n trim,\r\n checkPwd,\r\n debounce,\r\n throttle,\r\n findMostWord,\r\n flattenArray,\r\n getMaxCommonDivisor,\r\n getMinCommonMultiple,\r\n isPalindrome,\r\n to_filesize\r\n}","import is from \"./core/is\";\r\nimport bom from \"./core/bom\";\r\nimport dom from './core/dom';\r\nimport func from \"./core/func\";\r\n\r\nconst methods_util = {\r\n ...is,\r\n ...bom,\r\n ...dom,\r\n ...func\r\n}\r\n\r\n\r\nmethods_util.default = methods_util\r\n\r\nexport default methods_util"],"names":["getIEVersions","window","ActiveXObject","str","navigator","userAgent","indexOf","getBrowserType","getUrlParam","name","href","reg","RegExp","split","location","match","appendUrlParam","url","key","value","options","$","param","includes","hasClass","el","className","test","addClass","newClass","push","join","removeClass","replace","removeHtmltag","injectScript","src","Promise","resolve","reject","s","document","createElement","type","async","t","getElementsByTagName","parentNode","insertBefore","readyState","onreadystatechange","onload","getScrollPosition","x","undefined","pageXOffset","scrollLeft","y","pageYOffset","scrollTop","scrollToTop","c","documentElement","body","requestAnimationFrame","scrollTo","getCursortPosition","dom","selection","range","createRange","setEndPoint","createTextRange","text","length","selectionStart","unique","arr","Array","hasOwnProperty","from","Set","n","r","i","sum","reduce","pre","cur","getMaxCommonDivisor","a","b","shuffle","random","result","Math","floor","splice","checkStr","isCardID","sId","console","log","parseInt","substr","sBirthday","Number","d","Date","getFullYear","getMonth","getDate","weights","last","randomRange","min","max","arguments","inArray","val","sort","union","arr1","arr2","newArr","concat","intersection","arr1_x","arr2_x","filter","item","listRemoveTarget","list","target","index","listMax","apply","listMin","average","trim","checkPwd","Lv","debounce","fn","delay","timer","that","this","arg","clearTimeout","setTimeout","throttle","oldTime","now","findMostWord","article","wordlist","toLowerCase","visited","maxNum","maxWord","forEach","wrod","num","flattenArray","array","isArray","prev","getMinCommonMultiple","isPalindrome","newStr","reverse","to_filesize","e","g","f","h","pow","ceil","toFixed","methods_util","isEmail","isMobile","isStrictMobile","isPhone","isURL","isString","o","Object","prototype","toString","call","slice","isNumber","isBoolean","isFunction","isNull","isUndefined","isObj","isDate","isRegExp","isError","isSymbol","isPromise","isSet","isDeviceMobile","isIOS","isPC","userAgentInfo","Agents","flag","v","isWeiXinBrowser","isQQBrowser","isIEBrowser","bom","func"],"mappings":"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"} \ No newline at end of file diff --git a/dist/node/methods_util.cjs b/dist/node/methods_util.cjs new file mode 100644 index 0000000..ee14939 --- /dev/null +++ b/dist/node/methods_util.cjs @@ -0,0 +1,684 @@ +// methods_util v0.5.2 Copyright (c) 2023 Wei Zhixiang and contributors +'use strict'; + +const isEmail = (s) => { + return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s) +}; + +// 是否手机号码 +const isMobile = (s) => { + return /^1[0-9]{10}$/.test(s) +}; + +// 是否大陆有效手机号码 +const isStrictMobile = (s) => { + return /^[0]?1[3|5][0-9]{10}$/.test(s) +}; + +// 是否电话号码 +const isPhone = (s) => { + return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s) +}; + +// 是否Url地址 +const isURL = (s) => { + return /^http[s]?:\/\/.*/.test(s) +}; + +// 是否字符串 +const isString = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'String' +}; + +// 是否数字 +const isNumber = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Number' +}; + +// 是否Boolean +const isBoolean = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean' +}; + +// 是否函数 +const isFunction = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Function' +}; + +// 是否为Null +const isNull = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Null' +}; + +// 是否为undefined +const isUndefined = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined' +}; + +// 是否对象 +const isObj = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Object' +}; + +// 是否数组 +const isArray = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Array' +}; + +// 是否时间 +const isDate = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Date' +}; + +// 是否正则 +const isRegExp = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp' +}; + +// 是否为错误对象 +const isError = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Error' +}; + +// 是否为Symbol函数 +const isSymbol = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol' +}; + +// 是否为Promise对象 +const isPromise = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Promise' +}; + +// 是否为Set对象 +const isSet = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Set' +}; + +// 是否为移动端 +const isDeviceMobile = () => { + return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase()) +}; + +// 是否为IOS +const isIOS = () => { + var u = window.navigator.userAgent; + if (u.indexOf('iPhone') !== -1) return true + else return false +}; + +// 是否为PC端 +const isPC = () => { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", + "SymbianOS", "Windows Phone", + "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +}; + +// 是否为微信浏览器 +const isWeiXinBrowser = () => { + window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'; +}; + +// 是否为QQ浏览器 +const isQQBrowser = () => { + return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i) +}; + +// 是否为IE浏览器 +const isIEBrowser = () => { + if (!!window.ActiveXObject || "ActiveXObject" in window) { + return true; + } else { + return false; + } +}; + + +const is = { + isEmail, + isMobile, + isStrictMobile, + isPhone, + isURL, + isString, + isNumber, + isBoolean, + isFunction, + isNull, + isUndefined, + isObj, + isArray, + isDate, + isRegExp, + isError, + isSymbol, + isPromise, + isSet, + isDeviceMobile, + isIOS, + isPC, + isWeiXinBrowser, + isQQBrowser, + isIEBrowser, +}; + +// 获取IE浏览器版本号 +const getIEVersions = () => { + if (!!window.ActiveXObject || "ActiveXObject" in window) { + var str = window.navigator.userAgent; + if (str.indexOf("MSIE 6.0") != "-1") return "IE6"; + if (str.indexOf("MSIE 7.0") != "-1") return "IE7"; + if (str.indexOf("MSIE 8.0") != "-1") return "IE8"; + if (str.indexOf("MSIE 9.0") != "-1") return "IE9"; + if (str.indexOf("MSIE 10.0") != "-1") return "IE10"; + return "IE11"; + } else { + return false; + } +}; + +// 获取浏览器类型 +const getBrowserType = () => { + var str = window.navigator.userAgent; + if (str.indexOf("QQBrowser") != "-1") { + return "QQ"; + } else if (str.indexOf("LBBROWSER") != "-1") { + return "liebao"; + } else if (str.indexOf("SE") != "-1") { + return "sougou"; + } else if (str.indexOf("Firefox") != "-1") { + return "firefox"; + } else if (!!window.ActiveXObject || "ActiveXObject" in window) { + return "IE"; + } else if (str.indexOf("OPR") != "-1") { + return "opera"; + } else if (str.indexOf("Chrome") != "-1") { + return "chrome"; + } else if (str.indexOf("Safari") != "-1") { + return "safari"; + } +}; + +// 获取url参数 +const getUrlParam = (name, href) => { + const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); + const search = href ? href.split('?')[1] : window.location.href.split('?')[1]; + const r = search.match(reg) || []; + return r[2]; +}; + +// 追加url参数 +const appendUrlParam = (url, key, value) => { + var options = key; + if (typeof options == 'string') { + options = {}; + options[key] = value; + } + options = $.param(options); + if (url.includes('?')) { + url += '&' + options; + } else { + url += '?' + options; + } + return url; +}; + + +const bom = { + getIEVersions, + getBrowserType, + getUrlParam, + appendUrlParam, +}; + +// el是否包含某个class +const hasClass = (el, className) => { + let reg = new RegExp('(^|\\s)' + className + '(\\s|$)'); + return reg.test(el.className) +}; + +// el添加某个class +const addClass = (el, className) => { + if (hasClass(el, className)) { + return + } + let newClass = el.className.split(' '); + newClass.push(className); + el.className = newClass.join(' '); +}; + +// el去除某个class +const removeClass = (el, className) => { + if (!hasClass(el, className)) { + return + } + let reg = new RegExp('(^|\\s)' + className + '(\\s|$)', 'g'); + el.className = el.className.replace(reg, ' '); +}; + +// 去除Html标签 +const removeHtmltag = (str) => { + return str.replace(/<[^>]+>/g, '') +}; + +// 动态引入js +const injectScript = (src) => { + return new Promise((resolve, reject) => { + if (!!src) { + const s = document.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = src; + const t = document.getElementsByTagName('script')[0]; + t.parentNode.insertBefore(s, t); + if (s.readyState) { //IE + s.onreadystatechange = function () { + if (s.readyState == 'complete' || s.readyState == 'loaded') { + s.onreadystatechange = null; + resolve(); + } + }; + } else { //非IE + s.onload = function () { + s.onload = null; + resolve(); + }; + } + } else { + reject('The script src property value is null'); + } + }) +}; + +// 获取滚动的坐标 +const getScrollPosition = (el = window) => ({ + x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft, + y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop +}); + +// 滚动到顶部 +const scrollToTop = () => { + const c = document.documentElement.scrollTop || document.body.scrollTop; + if (c > 0) { + window.requestAnimationFrame(scrollToTop); + window.scrollTo(0, c - c / 8); + } +}; + +// 获取光标所在位置 +const getCursortPosition = (dom) => { + // ie + if (document.selection) { + let range = document.selection.createRange(); + range.setEndPoint("StartToStart", dom.createTextRange()); + return range.text.length; + } else { + return dom.selectionStart + } +}; + +const dom = { + hasClass, + addClass, + removeClass, + removeHtmltag, + injectScript, + getScrollPosition, + scrollToTop, + getCursortPosition, +}; + +// 洗牌随机算法 +const shuffle = (arr) => { + var result = [], + random; + while (arr.length > 0) { + random = Math.floor(Math.random() * arr.length); + result.push(arr[random]); + arr.splice(random, 1); + } + return result; +}; + +// 类型判断集合 +const checkStr = (str, type) => { + switch (type) { + case 'phone': //手机号码 + return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str); + case 'tel': //座机 + return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str); + case 'card': //身份证 + return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str); + case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线 + return /^[a-zA-Z]\w{5,17}$/.test(str) + case 'postal': //邮政编码 + return /[1-9]\d{5}(?!\d)/.test(str); + case 'QQ': //QQ号 + return /^[1-9][0-9]{4,9}$/.test(str); + case 'email': //邮箱 + return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str); + case 'money': //金额(小数点2位) + return /^\d*(?:\.\d{0,2})?$/.test(str); + case 'URL': //网址 + return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str) + case 'IP': //IP + return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str); + case 'date': //日期时间 + return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str) + case 'english': //英文 + return /^[a-zA-Z]+$/.test(str); + case 'chinese': //中文 + return /[\u4e00-\u9fa5]/g.test(str); + case 'lower': //小写 + return /^[a-z]+$/.test(str); + case 'upper': //大写 + return /^[A-Z]+$/.test(str); + case 'HTML': //HTML标记 + return /<([^]*|[^]*|[^>])*>/.test(str); + default: + return true; + } +}; + +// 严格的身份证效验 +const isCardID = (sId) => { + if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) { + console.log('你输入的身份证长度或格式错误'); + return false + } + //身份证城市 + var aCity = { 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: "台湾", 81: "香港", 82: "澳门", 91: "国外" }; + if (!aCity[parseInt(sId.substr(0, 2))]) { + console.log('你的身份证地区非法'); + return false + } + // 出生日期验证 + var sBirthday = (sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2))).replace(/-/g, "/"), + d = new Date(sBirthday); + if (sBirthday != (d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate())) { + console.log('身份证上的出生日期非法'); + return false + } + // 身份证号码校验 + var sum = 0, + weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2], + codes = "10X98765432"; + for (var i = 0; i < sId.length - 1; i++) { + sum += sId[i] * weights[i]; + } + var last = codes[sum % 11]; //计算出来的最后一位身份证号码 + if (sId[sId.length - 1] != last) { + console.log('你输入的身份证号非法'); + return false + } + return true +}; + +// 随机数范围 +const randomRange = function (min, max) { + if (arguments.length === 2) { + return Math.floor(min + Math.random() * ((max + 1) - min)) + } else { + return null + } +}; + +// 判断元素是否在数组中 +const inArray = (arr, val) => { + return arr.indexOf(val) != -1 ? true : false +}; + +// 数组排序 {type} 1:从小到大 2:从大到小 +const sort = (arr, type = 1) => { + return arr.sort((a, b) => { + switch (type) { + case 1: + return a - b + case 2: + return b - a + default: + return arr + } + }) +}; + +// 数组去重 +const unique = (arr) => { + if (Array.hasOwnProperty('from')) { + return Array.from(new Set(arr)); + } else { + var n = {}, r = []; + for (var i = 0; i < arr.length; i++) { + if (!n[arr[i]]) { + n[arr[i]] = true; + r.push(arr[i]); + } + } + return r; + } +}; + +// 求两个集合的并集 +const union = (arr1, arr2) => { + var newArr = arr1.concat(arr2); + return unique(newArr) +}; + +// 求两个集合的交集 +const intersection = (arr1, arr2) => { + var arr1_x = unique(arr1); + var arr2_x = unique(arr2); + return arr1_x.filter(function (item) { + return arr2_x.indexOf(item) > -1 + }) +}; + +// 删除集合中其中一个目标元素 +const listRemoveTarget = (list, target) => { + var index = list.indexOf(target); + if (index > -1) { + list.splice(index, 1); + } + return list +}; + +// 求集合中的最大值 +const listMax = list => { + return Math.max.apply(null, list) +}; + +// 求集合中的最小值 +const listMin = list => { + return Math.min.apply(null, list) +}; + +// 求和 +const sum = arr => { + return arr.reduce((pre, cur) => { + return pre + cur + }) +}; + +// 平均值 +const average = arr => { + return sum(arr) / arr.length +}; + +// 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格 +const trim = (str, type = 1) => { + switch (type) { + case 1: + return str.replace(/\s+/g, '') + case 2: + return str.replace(/(^\s*)|(\s*$)/g, '') + case 3: + return str.replace(/(^\s*)/g, '') + case 4: + return str.replace(/(\s*$)/g, '') + default: + return str + } +}; + +// 检测密码强度 +const checkPwd = (str) => { + var Lv = 0; + if (str.length < 6) { + return Lv + } + if (/[0-9]/.test(str)) { + Lv++; + } + if (/[a-z]/.test(str)) { + Lv++; + } + if (/[A-Z]/.test(str)) { + Lv++; + } + if (/[\.|-|_]/.test(str)) { + Lv++; + } + return Lv; +}; + +// 防抖函数 +const debounce = function (fn, delay) { + var timer = null; + return function () { + var that = this, + arg = arguments; + if (timer) { + window.clearTimeout(timer); + timer = null; + } + timer = window.setTimeout(() => { + fn.apply(that, arg); + }, delay); + } +}; + +// 节流函数 +const throttle = function (fn, delay) { + var oldTime = Date.now(); + return function () { + var time = Date.now(), + that = this, + arg = arguments; + if (time - oldTime >= delay) { + oldTime = Date.now(); + return fn.apply(that, arg) + } + } +}; + +// 获取文章中出现次数最多的单词 +const findMostWord = function (article) { + if (!article) return false + article = article.trim().toLowerCase(); // 清除两端空字符串并转为小写 + let wordlist = article.match(/[a-z]+/g), // 将文章中的每个单词转换成数组中的每一项元素 + visited = [], + maxNum = 0, + maxWord = ''; + article = " " + wordlist.join(" ") + " "; + // 遍历判断单词出现次数 + wordlist.forEach(function (item) { + if (visited.indexOf(item) === -1) { + visited.push(item); + let wrod = new RegExp(" " + item + " ", "g"), // 正则 全局匹配 当前单词 + num = article.match(wrod).length; // 当前单词出现的个数 + if (num > maxNum) { + maxNum = num; + maxWord = item; + } + } + }); + return maxWord + " " + maxNum +}; + +// 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] +const flattenArray = function (array) { + if (!Array.isArray(array)) return false + var res = []; + res = array.reduce((prev, cur) => { + return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur) + }, []); + return res +}; + +// 求最大公约数 +const getMaxCommonDivisor = function (a, b) { + if (b == 0) return a + return getMaxCommonDivisor(b, a % b) +}; +// 最小公倍数 +const getMinCommonMultiple = function (a, b) { + return a * b / getMaxCommonDivisor(a, b) +}; + +// 判断字符串是否回文字符串 +const isPalindrome = function (str) { + var reg = /[\W_]/g; + var newStr = str.replace(reg, '').toLowerCase(); + var reverserStr = newStr.split('').reverse().join(''); + return reverserStr === newStr; +}; + +// 文件大小转化 +const to_filesize = (e) => { + if (!e) { + return "-"; + } + var g = [" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"]; + var f = Math.floor(Math.log(e) / Math.log(1024)); + var h = (f > 1) ? 2 : 0; + return (f > 1) ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f]; +}; + +const func = { + shuffle, + checkStr, + isCardID, + randomRange, + inArray, + sort, + unique, + union, + intersection, + listRemoveTarget, + listMax, + listMin, + sum, + average, + trim, + checkPwd, + debounce, + throttle, + findMostWord, + flattenArray, + getMaxCommonDivisor, + getMinCommonMultiple, + isPalindrome, + to_filesize +}; + +const methods_util = { + ...is, + ...bom, + ...dom, + ...func +}; + + +methods_util.default = methods_util; + +module.exports = methods_util; +//# sourceMappingURL=methods_util.cjs.map diff --git a/dist/node/methods_util.cjs.map b/dist/node/methods_util.cjs.map new file mode 100644 index 0000000..a670bd7 --- /dev/null +++ b/dist/node/methods_util.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"methods_util.cjs","sources":["../../lib/core/is.js","../../lib/core/bom.js","../../lib/core/dom.js","../../lib/core/func.js","../../lib/methods_util.js"],"sourcesContent":["const isEmail = (s) => {\r\n return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s)\r\n}\r\n\r\n// 是否手机号码\r\nconst isMobile = (s) => {\r\n return /^1[0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否大陆有效手机号码\r\nconst isStrictMobile = (s) => {\r\n return /^[0]?1[3|5][0-9]{10}$/.test(s)\r\n}\r\n\r\n// 是否电话号码\r\nconst isPhone = (s) => {\r\n return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)\r\n}\r\n\r\n// 是否Url地址\r\nconst isURL = (s) => {\r\n return /^http[s]?:\\/\\/.*/.test(s)\r\n}\r\n\r\n// 是否字符串\r\nconst isString = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'String'\r\n}\r\n\r\n// 是否数字\r\nconst isNumber = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Number'\r\n}\r\n\r\n// 是否Boolean\r\nconst isBoolean = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'\r\n}\r\n\r\n// 是否函数\r\nconst isFunction = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Function'\r\n}\r\n\r\n// 是否为Null\r\nconst isNull = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Null'\r\n}\r\n\r\n// 是否为undefined\r\nconst isUndefined = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'\r\n}\r\n\r\n// 是否对象\r\nconst isObj = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Object'\r\n}\r\n\r\n// 是否数组\r\nconst isArray = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Array'\r\n}\r\n\r\n// 是否时间\r\nconst isDate = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Date'\r\n}\r\n\r\n// 是否正则\r\nconst isRegExp = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'\r\n}\r\n\r\n// 是否为错误对象\r\nconst isError = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Error'\r\n}\r\n\r\n// 是否为Symbol函数\r\nconst isSymbol = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'\r\n}\r\n\r\n// 是否为Promise对象\r\nconst isPromise = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'\r\n}\r\n\r\n// 是否为Set对象\r\nconst isSet = (o) => {\r\n return Object.prototype.toString.call(o).slice(8, -1) === 'Set'\r\n}\r\n\r\n// 是否为移动端\r\nconst isDeviceMobile = () => {\r\n return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase())\r\n}\r\n\r\n// 是否为IOS\r\nconst isIOS = () => {\r\n var u = window.navigator.userAgent\r\n if (u.indexOf('iPhone') !== -1) return true\r\n else return false\r\n}\r\n\r\n// 是否为PC端\r\nconst isPC = () => {\r\n var userAgentInfo = navigator.userAgent;\r\n var Agents = [\"Android\", \"iPhone\",\r\n \"SymbianOS\", \"Windows Phone\",\r\n \"iPad\", \"iPod\"];\r\n var flag = true;\r\n for (var v = 0; v < Agents.length; v++) {\r\n if (userAgentInfo.indexOf(Agents[v]) > 0) {\r\n flag = false;\r\n break;\r\n }\r\n }\r\n return flag;\r\n}\r\n\r\n// 是否为微信浏览器\r\nconst isWeiXinBrowser = () => {\r\n window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'\r\n}\r\n\r\n// 是否为QQ浏览器\r\nconst isQQBrowser = () => {\r\n return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i)\r\n}\r\n\r\n// 是否为IE浏览器\r\nconst isIEBrowser = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n\r\nexport default {\r\n isEmail,\r\n isMobile,\r\n isStrictMobile,\r\n isPhone,\r\n isURL,\r\n isString,\r\n isNumber,\r\n isBoolean,\r\n isFunction,\r\n isNull,\r\n isUndefined,\r\n isObj,\r\n isArray,\r\n isDate,\r\n isRegExp,\r\n isError,\r\n isSymbol,\r\n isPromise,\r\n isSet,\r\n isDeviceMobile,\r\n isIOS,\r\n isPC,\r\n isWeiXinBrowser,\r\n isQQBrowser,\r\n isIEBrowser,\r\n}\r\n","// 获取IE浏览器版本号\r\nconst getIEVersions = () => {\r\n if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n var str = window.navigator.userAgent\r\n if (str.indexOf(\"MSIE 6.0\") != \"-1\") return \"IE6\";\r\n if (str.indexOf(\"MSIE 7.0\") != \"-1\") return \"IE7\";\r\n if (str.indexOf(\"MSIE 8.0\") != \"-1\") return \"IE8\";\r\n if (str.indexOf(\"MSIE 9.0\") != \"-1\") return \"IE9\";\r\n if (str.indexOf(\"MSIE 10.0\") != \"-1\") return \"IE10\";\r\n return \"IE11\";\r\n } else {\r\n return false;\r\n }\r\n}\r\n\r\n// 获取浏览器类型\r\nconst getBrowserType = () => {\r\n var str = window.navigator.userAgent;\r\n if (str.indexOf(\"QQBrowser\") != \"-1\") {\r\n return \"QQ\";\r\n } else if (str.indexOf(\"LBBROWSER\") != \"-1\") {\r\n return \"liebao\";\r\n } else if (str.indexOf(\"SE\") != \"-1\") {\r\n return \"sougou\";\r\n } else if (str.indexOf(\"Firefox\") != \"-1\") {\r\n return \"firefox\";\r\n } else if (!!window.ActiveXObject || \"ActiveXObject\" in window) {\r\n return \"IE\";\r\n } else if (str.indexOf(\"OPR\") != \"-1\") {\r\n return \"opera\";\r\n } else if (str.indexOf(\"Chrome\") != \"-1\") {\r\n return \"chrome\";\r\n } else if (str.indexOf(\"Safari\") != \"-1\") {\r\n return \"safari\";\r\n }\r\n}\r\n\r\n// 获取url参数\r\nconst getUrlParam = (name, href) => {\r\n const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');\r\n const search = href ? href.split('?')[1] : window.location.href.split('?')[1];\r\n const r = search.match(reg) || [];\r\n return r[2];\r\n}\r\n\r\n// 追加url参数\r\nconst appendUrlParam = (url, key, value) => {\r\n var options = key;\r\n if (typeof options == 'string') {\r\n options = {};\r\n options[key] = value;\r\n }\r\n options = $.param(options);\r\n if (url.includes('?')) {\r\n url += '&' + options\r\n } else {\r\n url += '?' + options\r\n }\r\n return url;\r\n}\r\n\r\n\r\nexport default {\r\n getIEVersions,\r\n getBrowserType,\r\n getUrlParam,\r\n appendUrlParam,\r\n}","// el是否包含某个class\r\nconst hasClass = (el, className) => {\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)')\r\n return reg.test(el.className)\r\n}\r\n\r\n// el添加某个class\r\nconst addClass = (el, className) => {\r\n if (hasClass(el, className)) {\r\n return\r\n }\r\n let newClass = el.className.split(' ')\r\n newClass.push(className)\r\n el.className = newClass.join(' ')\r\n}\r\n\r\n// el去除某个class\r\nconst removeClass = (el, className) => {\r\n if (!hasClass(el, className)) {\r\n return\r\n }\r\n let reg = new RegExp('(^|\\\\s)' + className + '(\\\\s|$)', 'g')\r\n el.className = el.className.replace(reg, ' ')\r\n}\r\n\r\n// 去除Html标签\r\nconst removeHtmltag = (str) => {\r\n return str.replace(/<[^>]+>/g, '')\r\n}\r\n\r\n// 动态引入js\r\nconst injectScript = (src) => {\r\n return new Promise((resolve, reject) => {\r\n if (!!src) {\r\n const s = document.createElement('script');\r\n s.type = 'text/javascript';\r\n s.async = true;\r\n s.src = src;\r\n const t = document.getElementsByTagName('script')[0];\r\n t.parentNode.insertBefore(s, t);\r\n if (s.readyState) { //IE\r\n s.onreadystatechange = function () {\r\n if (s.readyState == 'complete' || s.readyState == 'loaded') {\r\n s.onreadystatechange = null;\r\n resolve()\r\n }\r\n }\r\n } else { //非IE\r\n s.onload = function () {\r\n s.onload = null;\r\n resolve()\r\n }\r\n }\r\n } else {\r\n reject('The script src property value is null')\r\n }\r\n })\r\n}\r\n\r\n// 获取滚动的坐标\r\nconst getScrollPosition = (el = window) => ({\r\n x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,\r\n y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop\r\n})\r\n\r\n// 滚动到顶部\r\nconst scrollToTop = () => {\r\n const c = document.documentElement.scrollTop || document.body.scrollTop;\r\n if (c > 0) {\r\n window.requestAnimationFrame(scrollToTop);\r\n window.scrollTo(0, c - c / 8);\r\n }\r\n}\r\n\r\n// 获取光标所在位置\r\nconst getCursortPosition = (dom) => {\r\n // ie\r\n if (document.selection) {\r\n let range = document.selection.createRange();\r\n range.setEndPoint(\"StartToStart\", dom.createTextRange());\r\n return range.text.length;\r\n } else {\r\n return dom.selectionStart\r\n }\r\n}\r\n\r\nexport default {\r\n hasClass,\r\n addClass,\r\n removeClass,\r\n removeHtmltag,\r\n injectScript,\r\n getScrollPosition,\r\n scrollToTop,\r\n getCursortPosition,\r\n}","// 洗牌随机算法\r\nconst shuffle = (arr) => {\r\n var result = [],\r\n random;\r\n while (arr.length > 0) {\r\n random = Math.floor(Math.random() * arr.length);\r\n result.push(arr[random])\r\n arr.splice(random, 1)\r\n }\r\n return result;\r\n}\r\n\r\n// 类型判断集合\r\nconst checkStr = (str, type) => {\r\n switch (type) {\r\n case 'phone': //手机号码\r\n return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str);\r\n case 'tel': //座机\r\n return /^(0\\d{2,3}-\\d{7,8})(-\\d{1,4})?$/.test(str);\r\n case 'card': //身份证\r\n return /(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X|x)$)/.test(str);\r\n case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线\r\n return /^[a-zA-Z]\\w{5,17}$/.test(str)\r\n case 'postal': //邮政编码\r\n return /[1-9]\\d{5}(?!\\d)/.test(str);\r\n case 'QQ': //QQ号\r\n return /^[1-9][0-9]{4,9}$/.test(str);\r\n case 'email': //邮箱\r\n return /^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$/.test(str);\r\n case 'money': //金额(小数点2位)\r\n return /^\\d*(?:\\.\\d{0,2})?$/.test(str);\r\n case 'URL': //网址\r\n return /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(str)\r\n case 'IP': //IP\r\n return /((?:(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d)\\\\.){3}(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d))/.test(str);\r\n case 'date': //日期时间\r\n return /^(\\d{4})\\-(\\d{2})\\-(\\d{2}) (\\d{2})(?:\\:\\d{2}|:(\\d{2}):(\\d{2}))$/.test(str) || /^(\\d{4})\\-(\\d{2})\\-(\\d{2})$/.test(str)\r\n case 'english': //英文\r\n return /^[a-zA-Z]+$/.test(str);\r\n case 'chinese': //中文\r\n return /[\\u4e00-\\u9fa5]/g.test(str);\r\n case 'lower': //小写\r\n return /^[a-z]+$/.test(str);\r\n case 'upper': //大写\r\n return /^[A-Z]+$/.test(str);\r\n case 'HTML': //HTML标记\r\n return /<([^]*|[^]*|[^>])*>/.test(str);\r\n default:\r\n return true;\r\n }\r\n}\r\n\r\n// 严格的身份证效验\r\nconst isCardID = (sId) => {\r\n if (!/(^\\d{15}$)|(^\\d{17}(\\d|X|x)$)/.test(sId)) {\r\n console.log('你输入的身份证长度或格式错误')\r\n return false\r\n }\r\n //身份证城市\r\n var aCity = { 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: \"台湾\", 81: \"香港\", 82: \"澳门\", 91: \"国外\" };\r\n if (!aCity[parseInt(sId.substr(0, 2))]) {\r\n console.log('你的身份证地区非法')\r\n return false\r\n }\r\n // 出生日期验证\r\n var sBirthday = (sId.substr(6, 4) + \"-\" + Number(sId.substr(10, 2)) + \"-\" + Number(sId.substr(12, 2))).replace(/-/g, \"/\"),\r\n d = new Date(sBirthday)\r\n if (sBirthday != (d.getFullYear() + \"/\" + (d.getMonth() + 1) + \"/\" + d.getDate())) {\r\n console.log('身份证上的出生日期非法')\r\n return false\r\n }\r\n // 身份证号码校验\r\n var sum = 0,\r\n weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2],\r\n codes = \"10X98765432\"\r\n for (var i = 0; i < sId.length - 1; i++) {\r\n sum += sId[i] * weights[i];\r\n }\r\n var last = codes[sum % 11]; //计算出来的最后一位身份证号码\r\n if (sId[sId.length - 1] != last) {\r\n console.log('你输入的身份证号非法')\r\n return false\r\n }\r\n return true\r\n}\r\n\r\n// 随机数范围\r\nconst randomRange = function (min, max) {\r\n if (arguments.length === 2) {\r\n return Math.floor(min + Math.random() * ((max + 1) - min))\r\n } else {\r\n return null\r\n }\r\n}\r\n\r\n// 判断元素是否在数组中\r\nconst inArray = (arr, val) => {\r\n return arr.indexOf(val) != -1 ? true : false\r\n}\r\n\r\n// 数组排序 {type} 1:从小到大 2:从大到小\r\nconst sort = (arr, type = 1) => {\r\n return arr.sort((a, b) => {\r\n switch (type) {\r\n case 1:\r\n return a - b\r\n case 2:\r\n return b - a\r\n default:\r\n return arr\r\n }\r\n })\r\n}\r\n\r\n// 数组去重\r\nconst unique = (arr) => {\r\n if (Array.hasOwnProperty('from')) {\r\n return Array.from(new Set(arr));\r\n } else {\r\n var n = {}, r = [];\r\n for (var i = 0; i < arr.length; i++) {\r\n if (!n[arr[i]]) {\r\n n[arr[i]] = true;\r\n r.push(arr[i]);\r\n }\r\n }\r\n return r;\r\n }\r\n}\r\n\r\n// 求两个集合的并集\r\nconst union = (arr1, arr2) => {\r\n var newArr = arr1.concat(arr2)\r\n return unique(newArr)\r\n}\r\n\r\n// 求两个集合的交集\r\nconst intersection = (arr1, arr2) => {\r\n var arr1_x = unique(arr1)\r\n var arr2_x = unique(arr2)\r\n return arr1_x.filter(function (item) {\r\n return arr2_x.indexOf(item) > -1\r\n })\r\n}\r\n\r\n// 删除集合中其中一个目标元素\r\nconst listRemoveTarget = (list, target) => {\r\n var index = list.indexOf(target)\r\n if (index > -1) {\r\n list.splice(index, 1)\r\n }\r\n return list\r\n}\r\n\r\n// 求集合中的最大值\r\nconst listMax = list => {\r\n return Math.max.apply(null, list)\r\n}\r\n\r\n// 求集合中的最小值\r\nconst listMin = list => {\r\n return Math.min.apply(null, list)\r\n}\r\n\r\n// 求和\r\nconst sum = arr => {\r\n return arr.reduce((pre, cur) => {\r\n return pre + cur\r\n })\r\n}\r\n\r\n// 平均值\r\nconst average = arr => {\r\n return sum(arr) / arr.length\r\n}\r\n\r\n// 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格\r\nconst trim = (str, type = 1) => {\r\n switch (type) {\r\n case 1:\r\n return str.replace(/\\s+/g, '')\r\n case 2:\r\n return str.replace(/(^\\s*)|(\\s*$)/g, '')\r\n case 3:\r\n return str.replace(/(^\\s*)/g, '')\r\n case 4:\r\n return str.replace(/(\\s*$)/g, '')\r\n default:\r\n return str\r\n }\r\n}\r\n\r\n// 检测密码强度\r\nconst checkPwd = (str) => {\r\n var Lv = 0;\r\n if (str.length < 6) {\r\n return Lv\r\n }\r\n if (/[0-9]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[a-z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[A-Z]/.test(str)) {\r\n Lv++\r\n }\r\n if (/[\\.|-|_]/.test(str)) {\r\n Lv++\r\n }\r\n return Lv;\r\n}\r\n\r\n// 防抖函数\r\nconst debounce = function (fn, delay) {\r\n var timer = null;\r\n return function () {\r\n var that = this,\r\n arg = arguments;\r\n if (timer) {\r\n window.clearTimeout(timer)\r\n timer = null\r\n }\r\n timer = window.setTimeout(() => {\r\n fn.apply(that, arg)\r\n }, delay)\r\n }\r\n}\r\n\r\n// 节流函数\r\nconst throttle = function (fn, delay) {\r\n var oldTime = Date.now()\r\n return function () {\r\n var time = Date.now(),\r\n that = this,\r\n arg = arguments;\r\n if (time - oldTime >= delay) {\r\n oldTime = Date.now()\r\n return fn.apply(that, arg)\r\n }\r\n }\r\n}\r\n\r\n// 获取文章中出现次数最多的单词\r\nconst findMostWord = function (article) {\r\n if (!article) return false\r\n article = article.trim().toLowerCase() // 清除两端空字符串并转为小写\r\n let wordlist = article.match(/[a-z]+/g), // 将文章中的每个单词转换成数组中的每一项元素\r\n visited = [],\r\n maxNum = 0,\r\n maxWord = '';\r\n article = \" \" + wordlist.join(\" \") + \" \";\r\n // 遍历判断单词出现次数\r\n wordlist.forEach(function (item) {\r\n if (visited.indexOf(item) === -1) {\r\n visited.push(item)\r\n let wrod = new RegExp(\" \" + item + \" \", \"g\"), // 正则 全局匹配 当前单词 \r\n num = article.match(wrod).length; // 当前单词出现的个数 \r\n if (num > maxNum) {\r\n maxNum = num\r\n maxWord = item\r\n }\r\n }\r\n })\r\n return maxWord + \" \" + maxNum\r\n}\r\n\r\n// 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]\r\nconst flattenArray = function (array) {\r\n if (!Array.isArray(array)) return false\r\n var res = []\r\n res = array.reduce((prev, cur) => {\r\n return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur)\r\n }, [])\r\n return res\r\n}\r\n\r\n// 求最大公约数\r\nconst getMaxCommonDivisor = function (a, b) {\r\n if (b == 0) return a\r\n return getMaxCommonDivisor(b, a % b)\r\n}\r\n// 最小公倍数\r\nconst getMinCommonMultiple = function (a, b) {\r\n return a * b / getMaxCommonDivisor(a, b)\r\n}\r\n\r\n// 判断字符串是否回文字符串\r\nconst isPalindrome = function (str) {\r\n var reg = /[\\W_]/g;\r\n var newStr = str.replace(reg, '').toLowerCase();\r\n var reverserStr = newStr.split('').reverse().join('');\r\n return reverserStr === newStr;\r\n}\r\n\r\n// 文件大小转化\r\nconst to_filesize = (e) => {\r\n if (!e) {\r\n return \"-\";\r\n }\r\n var g = [\" Bytes\", \" KB\", \" MB\", \" GB\", \" TB\", \" PB\", \" EB\", \" ZB\", \" YB\"];\r\n var f = Math.floor(Math.log(e) / Math.log(1024));\r\n var h = (f > 1) ? 2 : 0;\r\n return (f > 1) ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f];\r\n}\r\n\r\nexport default {\r\n shuffle,\r\n checkStr,\r\n isCardID,\r\n randomRange,\r\n inArray,\r\n sort,\r\n unique,\r\n union,\r\n intersection,\r\n listRemoveTarget,\r\n listMax,\r\n listMin,\r\n sum,\r\n average,\r\n trim,\r\n checkPwd,\r\n debounce,\r\n throttle,\r\n findMostWord,\r\n flattenArray,\r\n getMaxCommonDivisor,\r\n getMinCommonMultiple,\r\n isPalindrome,\r\n to_filesize\r\n}","import is from \"./core/is\";\r\nimport bom from \"./core/bom\";\r\nimport dom from './core/dom';\r\nimport func from \"./core/func\";\r\n\r\nconst methods_util = {\r\n ...is,\r\n ...bom,\r\n ...dom,\r\n ...func\r\n}\r\n\r\n\r\nmethods_util.default = methods_util\r\n\r\nexport default methods_util"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/index.js b/index.js new file mode 100644 index 0000000..e502ba3 --- /dev/null +++ b/index.js @@ -0,0 +1,131 @@ +import methods_util from './lib/methods_util' + + +const { + isEmail, + isMobile, + isStrictMobile, + isPhone, + isURL, + isString, + isNumber, + isBoolean, + isFunction, + isNull, + isUndefined, + isObj, + isArray, + isDate, + isRegExp, + isError, + isSymbol, + isPromise, + isSet, + isDeviceMobile, + isIOS, + isPC, + isWeiXinBrowser, + isQQBrowser, + isIEBrowser, + getIEVersions, + getBrowserType, + getUrlParam, + appendUrlParam, + hasClass, + addClass, + removeClass, + removeHtmltag, + injectScript, + getScrollPosition, + scrollToTop, + getCursortPosition, + shuffle, + checkStr, + isCardID, + randomRange, + inArray, + sort, + unique, + union, + intersection, + listRemoveTarget, + listMax, + listMin, + sum, + average, + trim, + checkPwd, + debounce, + throttle, + findMostWord, + flattenArray, + getMaxCommonDivisor, + getMinCommonMultiple, + isPalindrome, + to_filesize +} = methods_util + + +export { + isEmail, + isMobile, + isStrictMobile, + isPhone, + isURL, + isString, + isNumber, + isBoolean, + isFunction, + isNull, + isUndefined, + isObj, + isArray, + isDate, + isRegExp, + isError, + isSymbol, + isPromise, + isSet, + isDeviceMobile, + isIOS, + isPC, + isWeiXinBrowser, + isQQBrowser, + isIEBrowser, + getIEVersions, + getBrowserType, + getUrlParam, + appendUrlParam, + hasClass, + addClass, + removeClass, + removeHtmltag, + injectScript, + getScrollPosition, + scrollToTop, + getCursortPosition, + shuffle, + checkStr, + isCardID, + randomRange, + inArray, + sort, + unique, + union, + intersection, + listRemoveTarget, + listMax, + listMin, + sum, + average, + trim, + checkPwd, + debounce, + throttle, + findMostWord, + flattenArray, + getMaxCommonDivisor, + getMinCommonMultiple, + isPalindrome, + to_filesize +} \ No newline at end of file diff --git a/lib/core/bom.js b/lib/core/bom.js new file mode 100644 index 0000000..5a8c964 --- /dev/null +++ b/lib/core/bom.js @@ -0,0 +1,68 @@ +// 获取IE浏览器版本号 +const getIEVersions = () => { + if (!!window.ActiveXObject || "ActiveXObject" in window) { + var str = window.navigator.userAgent + if (str.indexOf("MSIE 6.0") != "-1") return "IE6"; + if (str.indexOf("MSIE 7.0") != "-1") return "IE7"; + if (str.indexOf("MSIE 8.0") != "-1") return "IE8"; + if (str.indexOf("MSIE 9.0") != "-1") return "IE9"; + if (str.indexOf("MSIE 10.0") != "-1") return "IE10"; + return "IE11"; + } else { + return false; + } +} + +// 获取浏览器类型 +const getBrowserType = () => { + var str = window.navigator.userAgent; + if (str.indexOf("QQBrowser") != "-1") { + return "QQ"; + } else if (str.indexOf("LBBROWSER") != "-1") { + return "liebao"; + } else if (str.indexOf("SE") != "-1") { + return "sougou"; + } else if (str.indexOf("Firefox") != "-1") { + return "firefox"; + } else if (!!window.ActiveXObject || "ActiveXObject" in window) { + return "IE"; + } else if (str.indexOf("OPR") != "-1") { + return "opera"; + } else if (str.indexOf("Chrome") != "-1") { + return "chrome"; + } else if (str.indexOf("Safari") != "-1") { + return "safari"; + } +} + +// 获取url参数 +const getUrlParam = (name, href) => { + const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); + const search = href ? href.split('?')[1] : window.location.href.split('?')[1]; + const r = search.match(reg) || []; + return r[2]; +} + +// 追加url参数 +const appendUrlParam = (url, key, value) => { + var options = key; + if (typeof options == 'string') { + options = {}; + options[key] = value; + } + options = $.param(options); + if (url.includes('?')) { + url += '&' + options + } else { + url += '?' + options + } + return url; +} + + +export default { + getIEVersions, + getBrowserType, + getUrlParam, + appendUrlParam, +} \ No newline at end of file diff --git a/lib/core/dom.js b/lib/core/dom.js new file mode 100644 index 0000000..3c9dd50 --- /dev/null +++ b/lib/core/dom.js @@ -0,0 +1,96 @@ +// el是否包含某个class +const hasClass = (el, className) => { + let reg = new RegExp('(^|\\s)' + className + '(\\s|$)') + return reg.test(el.className) +} + +// el添加某个class +const addClass = (el, className) => { + if (hasClass(el, className)) { + return + } + let newClass = el.className.split(' ') + newClass.push(className) + el.className = newClass.join(' ') +} + +// el去除某个class +const removeClass = (el, className) => { + if (!hasClass(el, className)) { + return + } + let reg = new RegExp('(^|\\s)' + className + '(\\s|$)', 'g') + el.className = el.className.replace(reg, ' ') +} + +// 去除Html标签 +const removeHtmltag = (str) => { + return str.replace(/<[^>]+>/g, '') +} + +// 动态引入js +const injectScript = (src) => { + return new Promise((resolve, reject) => { + if (!!src) { + const s = document.createElement('script'); + s.type = 'text/javascript'; + s.async = true; + s.src = src; + const t = document.getElementsByTagName('script')[0]; + t.parentNode.insertBefore(s, t); + if (s.readyState) { //IE + s.onreadystatechange = function () { + if (s.readyState == 'complete' || s.readyState == 'loaded') { + s.onreadystatechange = null; + resolve() + } + } + } else { //非IE + s.onload = function () { + s.onload = null; + resolve() + } + } + } else { + reject('The script src property value is null') + } + }) +} + +// 获取滚动的坐标 +const getScrollPosition = (el = window) => ({ + x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft, + y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop +}) + +// 滚动到顶部 +const scrollToTop = () => { + const c = document.documentElement.scrollTop || document.body.scrollTop; + if (c > 0) { + window.requestAnimationFrame(scrollToTop); + window.scrollTo(0, c - c / 8); + } +} + +// 获取光标所在位置 +const getCursortPosition = (dom) => { + // ie + if (document.selection) { + let range = document.selection.createRange(); + range.setEndPoint("StartToStart", dom.createTextRange()); + return range.text.length; + } else { + return dom.selectionStart + } +} + +export default { + hasClass, + addClass, + removeClass, + removeHtmltag, + injectScript, + getScrollPosition, + scrollToTop, + getCursortPosition, +} \ No newline at end of file diff --git a/lib/core/func.js b/lib/core/func.js new file mode 100644 index 0000000..4eaac8a --- /dev/null +++ b/lib/core/func.js @@ -0,0 +1,332 @@ +// 洗牌随机算法 +const shuffle = (arr) => { + var result = [], + random; + while (arr.length > 0) { + random = Math.floor(Math.random() * arr.length); + result.push(arr[random]) + arr.splice(random, 1) + } + return result; +} + +// 类型判断集合 +const checkStr = (str, type) => { + switch (type) { + case 'phone': //手机号码 + return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str); + case 'tel': //座机 + return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str); + case 'card': //身份证 + return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str); + case 'pwd': //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线 + return /^[a-zA-Z]\w{5,17}$/.test(str) + case 'postal': //邮政编码 + return /[1-9]\d{5}(?!\d)/.test(str); + case 'QQ': //QQ号 + return /^[1-9][0-9]{4,9}$/.test(str); + case 'email': //邮箱 + return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str); + case 'money': //金额(小数点2位) + return /^\d*(?:\.\d{0,2})?$/.test(str); + case 'URL': //网址 + return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str) + case 'IP': //IP + return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str); + case 'date': //日期时间 + return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str) + case 'english': //英文 + return /^[a-zA-Z]+$/.test(str); + case 'chinese': //中文 + return /[\u4e00-\u9fa5]/g.test(str); + case 'lower': //小写 + return /^[a-z]+$/.test(str); + case 'upper': //大写 + return /^[A-Z]+$/.test(str); + case 'HTML': //HTML标记 + return /<([^]*|[^]*|[^>])*>/.test(str); + default: + return true; + } +} + +// 严格的身份证效验 +const isCardID = (sId) => { + if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) { + console.log('你输入的身份证长度或格式错误') + return false + } + //身份证城市 + var aCity = { 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: "台湾", 81: "香港", 82: "澳门", 91: "国外" }; + if (!aCity[parseInt(sId.substr(0, 2))]) { + console.log('你的身份证地区非法') + return false + } + // 出生日期验证 + var sBirthday = (sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2))).replace(/-/g, "/"), + d = new Date(sBirthday) + if (sBirthday != (d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate())) { + console.log('身份证上的出生日期非法') + return false + } + // 身份证号码校验 + var sum = 0, + weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2], + codes = "10X98765432" + for (var i = 0; i < sId.length - 1; i++) { + sum += sId[i] * weights[i]; + } + var last = codes[sum % 11]; //计算出来的最后一位身份证号码 + if (sId[sId.length - 1] != last) { + console.log('你输入的身份证号非法') + return false + } + return true +} + +// 随机数范围 +const randomRange = function (min, max) { + if (arguments.length === 2) { + return Math.floor(min + Math.random() * ((max + 1) - min)) + } else { + return null + } +} + +// 判断元素是否在数组中 +const inArray = (arr, val) => { + return arr.indexOf(val) != -1 ? true : false +} + +// 数组排序 {type} 1:从小到大 2:从大到小 +const sort = (arr, type = 1) => { + return arr.sort((a, b) => { + switch (type) { + case 1: + return a - b + case 2: + return b - a + default: + return arr + } + }) +} + +// 数组去重 +const unique = (arr) => { + if (Array.hasOwnProperty('from')) { + return Array.from(new Set(arr)); + } else { + var n = {}, r = []; + for (var i = 0; i < arr.length; i++) { + if (!n[arr[i]]) { + n[arr[i]] = true; + r.push(arr[i]); + } + } + return r; + } +} + +// 求两个集合的并集 +const union = (arr1, arr2) => { + var newArr = arr1.concat(arr2) + return unique(newArr) +} + +// 求两个集合的交集 +const intersection = (arr1, arr2) => { + var arr1_x = unique(arr1) + var arr2_x = unique(arr2) + return arr1_x.filter(function (item) { + return arr2_x.indexOf(item) > -1 + }) +} + +// 删除集合中其中一个目标元素 +const listRemoveTarget = (list, target) => { + var index = list.indexOf(target) + if (index > -1) { + list.splice(index, 1) + } + return list +} + +// 求集合中的最大值 +const listMax = list => { + return Math.max.apply(null, list) +} + +// 求集合中的最小值 +const listMin = list => { + return Math.min.apply(null, list) +} + +// 求和 +const sum = arr => { + return arr.reduce((pre, cur) => { + return pre + cur + }) +} + +// 平均值 +const average = arr => { + return sum(arr) / arr.length +} + +// 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格 +const trim = (str, type = 1) => { + switch (type) { + case 1: + return str.replace(/\s+/g, '') + case 2: + return str.replace(/(^\s*)|(\s*$)/g, '') + case 3: + return str.replace(/(^\s*)/g, '') + case 4: + return str.replace(/(\s*$)/g, '') + default: + return str + } +} + +// 检测密码强度 +const checkPwd = (str) => { + var Lv = 0; + if (str.length < 6) { + return Lv + } + if (/[0-9]/.test(str)) { + Lv++ + } + if (/[a-z]/.test(str)) { + Lv++ + } + if (/[A-Z]/.test(str)) { + Lv++ + } + if (/[\.|-|_]/.test(str)) { + Lv++ + } + return Lv; +} + +// 防抖函数 +const debounce = function (fn, delay) { + var timer = null; + return function () { + var that = this, + arg = arguments; + if (timer) { + window.clearTimeout(timer) + timer = null + } + timer = window.setTimeout(() => { + fn.apply(that, arg) + }, delay) + } +} + +// 节流函数 +const throttle = function (fn, delay) { + var oldTime = Date.now() + return function () { + var time = Date.now(), + that = this, + arg = arguments; + if (time - oldTime >= delay) { + oldTime = Date.now() + return fn.apply(that, arg) + } + } +} + +// 获取文章中出现次数最多的单词 +const findMostWord = function (article) { + if (!article) return false + article = article.trim().toLowerCase() // 清除两端空字符串并转为小写 + let wordlist = article.match(/[a-z]+/g), // 将文章中的每个单词转换成数组中的每一项元素 + visited = [], + maxNum = 0, + maxWord = ''; + article = " " + wordlist.join(" ") + " "; + // 遍历判断单词出现次数 + wordlist.forEach(function (item) { + if (visited.indexOf(item) === -1) { + visited.push(item) + let wrod = new RegExp(" " + item + " ", "g"), // 正则 全局匹配 当前单词 + num = article.match(wrod).length; // 当前单词出现的个数 + if (num > maxNum) { + maxNum = num + maxWord = item + } + } + }) + return maxWord + " " + maxNum +} + +// 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] +const flattenArray = function (array) { + if (!Array.isArray(array)) return false + var res = [] + res = array.reduce((prev, cur) => { + return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur) + }, []) + return res +} + +// 求最大公约数 +const getMaxCommonDivisor = function (a, b) { + if (b == 0) return a + return getMaxCommonDivisor(b, a % b) +} +// 最小公倍数 +const getMinCommonMultiple = function (a, b) { + return a * b / getMaxCommonDivisor(a, b) +} + +// 判断字符串是否回文字符串 +const isPalindrome = function (str) { + var reg = /[\W_]/g; + var newStr = str.replace(reg, '').toLowerCase(); + var reverserStr = newStr.split('').reverse().join(''); + return reverserStr === newStr; +} + +// 文件大小转化 +const to_filesize = (e) => { + if (!e) { + return "-"; + } + var g = [" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"]; + var f = Math.floor(Math.log(e) / Math.log(1024)); + var h = (f > 1) ? 2 : 0; + return (f > 1) ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f]; +} + +export default { + shuffle, + checkStr, + isCardID, + randomRange, + inArray, + sort, + unique, + union, + intersection, + listRemoveTarget, + listMax, + listMin, + sum, + average, + trim, + checkPwd, + debounce, + throttle, + findMostWord, + flattenArray, + getMaxCommonDivisor, + getMinCommonMultiple, + isPalindrome, + to_filesize +} \ No newline at end of file diff --git a/lib/core/is.js b/lib/core/is.js new file mode 100644 index 0000000..550e6d5 --- /dev/null +++ b/lib/core/is.js @@ -0,0 +1,169 @@ +const isEmail = (s) => { + return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s) +} + +// 是否手机号码 +const isMobile = (s) => { + return /^1[0-9]{10}$/.test(s) +} + +// 是否大陆有效手机号码 +const isStrictMobile = (s) => { + return /^[0]?1[3|5][0-9]{10}$/.test(s) +} + +// 是否电话号码 +const isPhone = (s) => { + return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s) +} + +// 是否Url地址 +const isURL = (s) => { + return /^http[s]?:\/\/.*/.test(s) +} + +// 是否字符串 +const isString = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'String' +} + +// 是否数字 +const isNumber = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Number' +} + +// 是否Boolean +const isBoolean = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean' +} + +// 是否函数 +const isFunction = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Function' +} + +// 是否为Null +const isNull = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Null' +} + +// 是否为undefined +const isUndefined = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined' +} + +// 是否对象 +const isObj = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Object' +} + +// 是否数组 +const isArray = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Array' +} + +// 是否时间 +const isDate = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Date' +} + +// 是否正则 +const isRegExp = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp' +} + +// 是否为错误对象 +const isError = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Error' +} + +// 是否为Symbol函数 +const isSymbol = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol' +} + +// 是否为Promise对象 +const isPromise = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Promise' +} + +// 是否为Set对象 +const isSet = (o) => { + return Object.prototype.toString.call(o).slice(8, -1) === 'Set' +} + +// 是否为移动端 +const isDeviceMobile = () => { + return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase()) +} + +// 是否为IOS +const isIOS = () => { + var u = window.navigator.userAgent + if (u.indexOf('iPhone') !== -1) return true + else return false +} + +// 是否为PC端 +const isPC = () => { + var userAgentInfo = navigator.userAgent; + var Agents = ["Android", "iPhone", + "SymbianOS", "Windows Phone", + "iPad", "iPod"]; + var flag = true; + for (var v = 0; v < Agents.length; v++) { + if (userAgentInfo.indexOf(Agents[v]) > 0) { + flag = false; + break; + } + } + return flag; +} + +// 是否为微信浏览器 +const isWeiXinBrowser = () => { + window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger' +} + +// 是否为QQ浏览器 +const isQQBrowser = () => { + return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i) +} + +// 是否为IE浏览器 +const isIEBrowser = () => { + if (!!window.ActiveXObject || "ActiveXObject" in window) { + return true; + } else { + return false; + } +} + + +export default { + isEmail, + isMobile, + isStrictMobile, + isPhone, + isURL, + isString, + isNumber, + isBoolean, + isFunction, + isNull, + isUndefined, + isObj, + isArray, + isDate, + isRegExp, + isError, + isSymbol, + isPromise, + isSet, + isDeviceMobile, + isIOS, + isPC, + isWeiXinBrowser, + isQQBrowser, + isIEBrowser, +} diff --git a/lib/methods_util.js b/lib/methods_util.js new file mode 100644 index 0000000..29323ce --- /dev/null +++ b/lib/methods_util.js @@ -0,0 +1,16 @@ +import is from "./core/is"; +import bom from "./core/bom"; +import dom from './core/dom'; +import func from "./core/func"; + +const methods_util = { + ...is, + ...bom, + ...dom, + ...func +} + + +methods_util.default = methods_util + +export default methods_util \ No newline at end of file diff --git a/methods-util.esm.js b/methods-util.esm.js deleted file mode 100644 index 03fba28..0000000 --- a/methods-util.esm.js +++ /dev/null @@ -1,729 +0,0 @@ -/** 正则匹配相关信息 */ -// 是否邮箱 -var isEmail = function isEmail(s) { - return /^([0-9a-zA-Z_-])+@([0-9a-zA-Z_-]+(.[0-9a-zA-Z_-]{2,3}){1,2})/.test(s); -}; // 是否手机号码 - -var isMobile = function isMobile(s) { - return /^1[0-9]{10}$/.test(s); -}; // 是否大陆有效手机号码 - -var isStrictMobile = function isStrictMobile(s) { - return /^[0]?1[3|5][0-9]{10}$/.test(s); -}; // 是否电话号码 - -var isPhone = function isPhone(s) { - return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s); -}; // 是否Url地址 - -var isURL = function isURL(s) { - return /^http[s]?:\/\/.*/.test(s); -}; // 是否字符串 - -var isString = function isString(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'String'; -}; // 是否数字 - -var isNumber = function isNumber(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Number'; -}; // 是否Boolean - -var isBoolean = function isBoolean(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Boolean'; -}; // 是否函数 - -var isFunction = function isFunction(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Function'; -}; // 是否为Null - -var isNull = function isNull(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Null'; -}; // 是否为undefined - -var isUndefined = function isUndefined(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Undefined'; -}; // 是否对象 - -var isObj = function isObj(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Object'; -}; // 是否数组 - -var isArray = function isArray(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Array'; -}; // 是否时间 - -var isDate = function isDate(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Date'; -}; // 是否正则 - -var isRegExp = function isRegExp(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'RegExp'; -}; // 是否为错误对象 - -var isError = function isError(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Error'; -}; // 是否为Symbol函数 - -var isSymbol = function isSymbol(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Symbol'; -}; // 是否为Promise对象 - -var isPromise = function isPromise(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Promise'; -}; // 是否为Set对象 - -var isSet = function isSet(o) { - return Object.prototype.toString.call(o).slice(8, -1) === 'Set'; -}; -/** 浏览器设备相关 */ -// 是否为移动端 - -var isDeviceMobile = function isDeviceMobile() { - return /android|webos|iphone|ipod|balckberry/i.test(window.navigator.userAgent.toLowerCase()); -}; // 是否为IOS - -var isIOS = function isIOS() { - var u = window.navigator.userAgent; - if (u.indexOf('iPhone') !== -1) return true;else return false; -}; // 是否为PC端 - -var isPC = function isPC() { - var userAgentInfo = navigator.userAgent; - var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; - var flag = true; - - for (var v = 0; v < Agents.length; v++) { - if (userAgentInfo.indexOf(Agents[v]) > 0) { - flag = false; - break; - } - } - - return flag; -}; // 是否为微信浏览器 - -var isWeiXinBrowser = function isWeiXinBrowser() { - window.navigator.userAgent.toLowerCase().match(/microMessenger/i) === 'micromessenger'; -}; // 是否为QQ浏览器 - -var isQQBrowser = function isQQBrowser() { - return !!window.navigator.userAgent.toLowerCase().match(/mqqbrowser|qzone|qqbrowser|qbwebviewtype/i); -}; // 是否为IE浏览器 - -var isIEBrowser = function isIEBrowser() { - if (!!window.ActiveXObject || "ActiveXObject" in window) { - return true; - } else { - return false; - } -}; // 获取IE浏览器版本号 - -var getIEVersions = function getIEVersions() { - if (!!window.ActiveXObject || "ActiveXObject" in window) { - var str = window.navigator.userAgent; - if (str.indexOf("MSIE 6.0") != "-1") return "IE6"; - if (str.indexOf("MSIE 7.0") != "-1") return "IE7"; - if (str.indexOf("MSIE 8.0") != "-1") return "IE8"; - if (str.indexOf("MSIE 9.0") != "-1") return "IE9"; - if (str.indexOf("MSIE 10.0") != "-1") return "IE10"; - return "IE11"; - } else { - return false; - } -}; // 获取浏览器类型 - -var getBrowserType = function getBrowserType() { - var str = window.navigator.userAgent; - - if (str.indexOf("QQBrowser") != "-1") { - return "QQ"; - } else if (str.indexOf("LBBROWSER") != "-1") { - return "liebao"; - } else if (str.indexOf("SE") != "-1") { - return "sougou"; - } else if (str.indexOf("Firefox") != "-1") { - return "firefox"; - } else if (!!window.ActiveXObject || "ActiveXObject" in window) { - return "IE"; - } else if (str.indexOf("OPR") != "-1") { - return "opera"; - } else if (str.indexOf("Chrome") != "-1") { - return "chrome"; - } else if (str.indexOf("Safari") != "-1") { - return "safari"; - } -}; -/** BOM 操作相关 */ -// 获取url参数 - -var getUrlParam = function getUrlParam(name, href) { - var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); - var search = href ? href.split('?')[1] : window.location.href.split('?')[1]; - var r = search.match(reg) || []; - return r[2]; -}; // 追加url参数 - -var appendUrlParam = function appendUrlParam(url, key, value) { - var options = key; - - if (typeof options == 'string') { - options = {}; - options[key] = value; - } - - options = $.param(options); - - if (url.includes('?')) { - url += '&' + options; - } else { - url += '?' + options; - } - - return url; -}; -/** DOM相关 */ -// el是否包含某个class - -var hasClass = function hasClass(el, className) { - var reg = new RegExp('(^|\\s)' + className + '(\\s|$)'); - return reg.test(el.className); -}; // el添加某个class - -var addClass = function addClass(el, className) { - if (hasClass(el, className)) { - return; - } - - var newClass = el.className.split(' '); - newClass.push(className); - el.className = newClass.join(' '); -}; // el去除某个class - -var removeClass = function removeClass(el, className) { - if (!hasClass(el, className)) { - return; - } - - var reg = new RegExp('(^|\\s)' + className + '(\\s|$)', 'g'); - el.className = el.className.replace(reg, ' '); -}; // 去除Html标签 - -var removeHtmltag = function removeHtmltag(str) { - return str.replace(/<[^>]+>/g, ''); -}; // 动态引入js - -var injectScript = function injectScript(src) { - return new Promise(function (resolve, reject) { - if (!!src) { - var s = document.createElement('script'); - s.type = 'text/javascript'; - s.async = true; - s.src = src; - var t = document.getElementsByTagName('script')[0]; - t.parentNode.insertBefore(s, t); - - if (s.readyState) { - //IE - s.onreadystatechange = function () { - if (s.readyState == 'complete' || s.readyState == 'loaded') { - s.onreadystatechange = null; - resolve(); - } - }; - } else { - //非IE - s.onload = function () { - s.onload = null; - resolve(); - }; - } - } else { - reject('The script src property value is null'); - } - }); -}; // 获取滚动的坐标 - -var getScrollPosition = function getScrollPosition() { - var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window; - return { - x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft, - y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop - }; -}; // 滚动到顶部 - -var scrollToTop = function scrollToTop() { - var c = document.documentElement.scrollTop || document.body.scrollTop; - - if (c > 0) { - window.requestAnimationFrame(scrollToTop); - window.scrollTo(0, c - c / 8); - } -}; // 获取光标所在位置 - -var getCursortPosition = function getCursortPosition(dom) { - // ie - if (document.selection) { - var range = document.selection.createRange(); - range.setEndPoint("StartToStart", dom.createTextRange()); - return range.text.length; - } else { - return dom.selectionStart; - } -}; -/** 功能函数 */ -// 洗牌随机算法 - -var shuffle = function shuffle(arr) { - var result = [], - random; - - while (arr.length > 0) { - random = Math.floor(Math.random() * arr.length); - result.push(arr[random]); - arr.splice(random, 1); - } - - return result; -}; // 类型判断集合 - -var checkStr = function checkStr(str, type) { - switch (type) { - case 'phone': - //手机号码 - return /^1[3|4|5|6|7|8|9][0-9]{9}$/.test(str); - - case 'tel': - //座机 - return /^(0\d{2,3}-\d{7,8})(-\d{1,4})?$/.test(str); - - case 'card': - //身份证 - return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(str); - - case 'pwd': - //密码以字母开头,长度在6~18之间,只能包含字母、数字和下划线 - return /^[a-zA-Z]\w{5,17}$/.test(str); - - case 'postal': - //邮政编码 - return /[1-9]\d{5}(?!\d)/.test(str); - - case 'QQ': - //QQ号 - return /^[1-9][0-9]{4,9}$/.test(str); - - case 'email': - //邮箱 - return /^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/.test(str); - - case 'money': - //金额(小数点2位) - return /^\d*(?:\.\d{0,2})?$/.test(str); - - case 'URL': - //网址 - return /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/.test(str); - - case 'IP': - //IP - return /((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/.test(str); - - case 'date': - //日期时间 - return /^(\d{4})\-(\d{2})\-(\d{2}) (\d{2})(?:\:\d{2}|:(\d{2}):(\d{2}))$/.test(str) || /^(\d{4})\-(\d{2})\-(\d{2})$/.test(str); - - case 'english': - //英文 - return /^[a-zA-Z]+$/.test(str); - - case 'chinese': - //中文 - return /[\u4e00-\u9fa5]/g.test(str); - - case 'lower': - //小写 - return /^[a-z]+$/.test(str); - - case 'upper': - //大写 - return /^[A-Z]+$/.test(str); - - case 'HTML': - //HTML标记 - return /<([^]*|[^]*|[^>])*>/.test(str); - - default: - return true; - } -}; // 严格的身份证效验 - -var isCardID = function isCardID(sId) { - if (!/(^\d{15}$)|(^\d{17}(\d|X|x)$)/.test(sId)) { - console.log('你输入的身份证长度或格式错误'); - return false; - } //身份证城市 - - - var aCity = { - 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: "台湾", - 81: "香港", - 82: "澳门", - 91: "国外" - }; - - if (!aCity[parseInt(sId.substr(0, 2))]) { - console.log('你的身份证地区非法'); - return false; - } // 出生日期验证 - - - var sBirthday = (sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2))).replace(/-/g, "/"), - d = new Date(sBirthday); - - if (sBirthday != d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate()) { - console.log('身份证上的出生日期非法'); - return false; - } // 身份证号码校验 - - - var sum = 0, - weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2], - codes = "10X98765432"; - - for (var i = 0; i < sId.length - 1; i++) { - sum += sId[i] * weights[i]; - } - - var last = codes[sum % 11]; //计算出来的最后一位身份证号码 - - if (sId[sId.length - 1] != last) { - console.log('你输入的身份证号非法'); - return false; - } - - return true; -}; // 随机数范围 - -var randomRange = function randomRange(min, max) { - if (arguments.length === 2) { - return Math.floor(min + Math.random() * (max + 1 - min)); - } else { - return null; - } -}; // 判断元素是否在数组中 - -var inArray = function inArray(arr, val) { - return arr.indexOf(val) != -1 ? true : false; -}; // 数组排序 {type} 1:从小到大 2:从大到小 - -var sort = function sort(arr) { - var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - return arr.sort(function (a, b) { - switch (type) { - case 1: - return a - b; - - case 2: - return b - a; - - default: - return arr; - } - }); -}; // 数组去重 - -var unique = function unique(arr) { - if (Array.hasOwnProperty('from')) { - return Array.from(new Set(arr)); - } else { - var n = {}, - r = []; - - for (var i = 0; i < arr.length; i++) { - if (!n[arr[i]]) { - n[arr[i]] = true; - r.push(arr[i]); - } - } - - return r; - } -}; // 求两个集合的并集 - -var union = function union(arr1, arr2) { - var newArr = arr1.concat(arr2); - return unique(newArr); -}; // 求两个集合的交集 - -var intersection = function intersection(arr1, arr2) { - var arr1_x = unique(arr1); - var arr2_x = unique(arr2); - return arr1_x.filter(function (item) { - return arr2_x.indexOf(item) > -1; - }); -}; // 删除集合中其中一个目标元素 - -var listRemoveTarget = function listRemoveTarget(list, target) { - var index = list.indexOf(target); - - if (index > -1) { - list.splice(index, 1); - } - - return list; -}; // 求集合中的最大值 - -var listMax = function listMax(list) { - return Math.max.apply(null, list); -}; // 求集合中的最小值 - -var listMin = function listMin(list) { - return Math.min.apply(null, list); -}; // 求和 - -var sum = function sum(arr) { - return arr.reduce(function (pre, cur) { - return pre + cur; - }); -}; // 平均值 - -var average = function average(arr) { - return sum(arr) / arr.length; -}; // 去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格 - -var trim = function trim(str) { - var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; - - switch (type) { - case 1: - return str.replace(/\s+/g, ''); - - case 2: - return str.replace(/(^\s*)|(\s*$)/g, ''); - - case 3: - return str.replace(/(^\s*)/g, ''); - - case 4: - return str.replace(/(\s*$)/g, ''); - - default: - return str; - } -}; // 检测密码强度 - -var checkPwd = function checkPwd(str) { - var Lv = 0; - - if (str.length < 6) { - return Lv; - } - - if (/[0-9]/.test(str)) { - Lv++; - } - - if (/[a-z]/.test(str)) { - Lv++; - } - - if (/[A-Z]/.test(str)) { - Lv++; - } - - if (/[\.|-|_]/.test(str)) { - Lv++; - } - - return Lv; -}; // 防抖函数 - -var debounce = function debounce(fn, delay) { - var timer = null; - return function () { - var that = this, - arg = arguments; - - if (timer) { - window.clearTimeout(timer); - timer = null; - } - - timer = window.setTimeout(function () { - fn.apply(that, arg); - }, delay); - }; -}; // 节流函数 - -var throttle = function throttle(fn, delay) { - var oldTime = Date.now(); - return function () { - var time = Date.now(), - that = this, - arg = arguments; - - if (time - oldTime >= delay) { - oldTime = Date.now(); - return fn.apply(that, arg); - } - }; -}; // 获取文章中出现次数最多的单词 - -var findMostWord = function findMostWord(article) { - if (!article) return false; - article = article.trim().toLowerCase(); // 清除两端空字符串并转为小写 - - var wordlist = article.match(/[a-z]+/g), - // 将文章中的每个单词转换成数组中的每一项元素 - visited = [], - maxNum = 0, - maxWord = ''; - article = " " + wordlist.join(" ") + " "; // 遍历判断单词出现次数 - - wordlist.forEach(function (item) { - if (visited.indexOf(item) === -1) { - visited.push(item); - var wrod = new RegExp(" " + item + " ", "g"), - // 正则 全局匹配 当前单词 - num = article.match(wrod).length; // 当前单词出现的个数 - - if (num > maxNum) { - maxNum = num; - maxWord = item; - } - } - }); - return maxWord + " " + maxNum; -}; // 数组扁平化 (将一个多维数组变成一个一维数组) [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] - -var flattenArray = function flattenArray(array) { - if (!Array.isArray(array)) return false; - var res = []; - res = array.reduce(function (prev, cur) { - return prev.concat(Array.isArray(cur) ? flattenArray(cur) : cur); - }, []); - return res; -}; // 求最大公约数 - -var getMaxCommonDivisor = function getMaxCommonDivisor(a, b) { - if (b == 0) return a; - return getMaxCommonDivisor(b, a % b); -}; // 最小公倍数 - -var getMinCommonMultiple = function getMinCommonMultiple(a, b) { - return a * b / getMaxCommonDivisor(a, b); -}; // 判断字符串是否回文字符串 - -var isPalindrome = function isPalindrome(str) { - var reg = /[\W_]/g; - var newStr = str.replace(reg, '').toLowerCase(); - var reverserStr = newStr.split('').reverse().join(''); - return reverserStr === newStr; -}; // 文件大小转化 - -var to_filesize = function to_filesize(e) { - if (!e) { - return "-"; - } - - var g = [" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"]; - var f = Math.floor(Math.log(e) / Math.log(1024)); - var h = f > 1 ? 2 : 0; - return f > 1 ? (e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f] : Math.ceil(e / Math.pow(1024, Math.ceil(f))).toFixed(h) + g[f]; -}; -var methods = { - isEmail: isEmail, - isMobile: isMobile, - isStrictMobile: isStrictMobile, - isPhone: isPhone, - isURL: isURL, - isString: isString, - isNumber: isNumber, - isBoolean: isBoolean, - isFunction: isFunction, - isNull: isNull, - isUndefined: isUndefined, - isObj: isObj, - isArray: isArray, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isPromise: isPromise, - isSet: isSet, - isDeviceMobile: isDeviceMobile, - isIOS: isIOS, - isPC: isPC, - isWeiXinBrowser: isWeiXinBrowser, - isQQBrowser: isQQBrowser, - isIEBrowser: isIEBrowser, - getIEVersions: getIEVersions, - getBrowserType: getBrowserType, - getUrlParam: getUrlParam, - appendUrlParam: appendUrlParam, - hasClass: hasClass, - addClass: addClass, - removeClass: removeClass, - removeHtmltag: removeHtmltag, - injectScript: injectScript, - getScrollPosition: getScrollPosition, - scrollToTop: scrollToTop, - getCursortPosition: getCursortPosition, - shuffle: shuffle, - checkStr: checkStr, - isCardID: isCardID, - randomRange: randomRange, - inArray: inArray, - sort: sort, - unique: unique, - union: union, - intersection: intersection, - listRemoveTarget: listRemoveTarget, - listMax: listMax, - listMin: listMin, - sum: sum, - average: average, - trim: trim, - checkPwd: checkPwd, - debounce: debounce, - throttle: throttle, - findMostWord: findMostWord, - flattenArray: flattenArray, - getMaxCommonDivisor: getMaxCommonDivisor, - getMinCommonMultiple: getMinCommonMultiple, - isPalindrome: isPalindrome, - to_filesize: to_filesize -}; - -export { addClass, appendUrlParam, average, checkPwd, checkStr, debounce, methods as default, findMostWord, flattenArray, getBrowserType, getCursortPosition, getIEVersions, getMaxCommonDivisor, getMinCommonMultiple, getScrollPosition, getUrlParam, hasClass, inArray, injectScript, intersection, isArray, isBoolean, isCardID, isDate, isDeviceMobile, isEmail, isError, isFunction, isIEBrowser, isIOS, isMobile, isNull, isNumber, isObj, isPC, isPalindrome, isPhone, isPromise, isQQBrowser, isRegExp, isSet, isStrictMobile, isString, isSymbol, isURL, isUndefined, isWeiXinBrowser, listMax, listMin, listRemoveTarget, randomRange, removeClass, removeHtmltag, scrollToTop, shuffle, sort, sum, throttle, to_filesize, trim, union, unique }; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..83b1264 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2377 @@ +{ + "name": "methods-util", + "version": "0.5.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", + "dev": true + }, + "@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/helpers": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.13", + "@babel/types": "^7.20.7" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", + "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.15", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.15.tgz", + "integrity": "sha512-Vv4DMZ6MiNOhu/LdaZsT/bsLRxgL94d269Mv4R/9sp6+Mp++X/JqypZYypJXLlM4mlL352/Egzbzr98iABH1CA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.2.tgz", + "integrity": "sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.18.1", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.2", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.18.2", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.2", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "@babel/runtime": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/traverse": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.13", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@rollup/plugin-babel": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.3.tgz", + "integrity": "sha512-fKImZKppa1A/gX73eg4JGo+8kQr/q1HBQaCGKECZ0v4YBBv3lFqi14+7xyApECzvkLTHCifx+7ntcrvtBIRcpg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@rollup/pluginutils": "^5.0.1" + } + }, + "@rollup/plugin-commonjs": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz", + "integrity": "sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + } + } + }, + "@rollup/plugin-json": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", + "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^5.0.1" + } + }, + "@rollup/plugin-node-resolve": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", + "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + }, + "dependencies": { + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, + "@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "requires": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + } + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "@types/node": { + "version": "18.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.13.0.tgz", + "integrity": "sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true + }, + "builtins": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-2.0.1.tgz", + "integrity": "sha512-XkkVe5QAb6guWPXTzpSrYpSlN3nqEmrrE2TkAr/tp7idSF6+MONh9WvKrAuR3HiKLvoSgmbs8l1U9IPmMrIoLw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "caniuse-lite": { + "version": "1.0.30001456", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001456.tgz", + "integrity": "sha512-XFHJY5dUgmpMV25UqaD4kVq2LsiaU5rS8fb0f17pCoXQiQslzmFgnfOxfvo1bTpTqf7dwG/N/05CnLCnOEKmzA==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "core-js-compat": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.28.0.tgz", + "integrity": "sha512-myzPgE7QodMg4nnd3K1TDoES/nADRStM8Gpz0D6nhkwbmwEnE0ZGJgoWsvQ722FR8D7xS0n0LV556RcEicjTyg==", + "dev": true, + "requires": { + "browserslist": "^4.21.5" + } + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "deepmerge": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", + "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "dev": true + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.301", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.301.tgz", + "integrity": "sha512-bz00ASIIDjcgszZKuEA1JEFhbDjqUNbQ/PEhNEl1wbixzYpeTp2H2QWjsQvAL2T1wJBdOwCF5hE896BoMwYKrA==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "gzip-size": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", + "integrity": "sha512-6s8trQiK+OMzSaCSVXX+iqIcLV9tC+E73jrJrJTyS4h/AJhlxHvzFKqM1YLDJWRGgHX8uLkBeXkA0njNj39L4w==", + "dev": true, + "requires": { + "duplexer": "^0.1.1" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "maxmin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/maxmin/-/maxmin-2.1.0.tgz", + "integrity": "sha512-NWlApBjW9az9qRPaeg7CX4sQBWwytqz32bIEo1PW9pRW+kBP9KLRfJO3UC+TV31EcQZEUq7eMzikC7zt3zPJcw==", + "dev": true, + "requires": { + "chalk": "^1.0.0", + "figures": "^1.0.1", + "gzip-size": "^3.0.0", + "pretty-bytes": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + }, + "pretty-bytes": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-3.0.1.tgz", + "integrity": "sha512-eb7ZAeUTgfh294cElcu51w+OTRp/6ItW758LjwJSK72LDevcuJn0P4eD71PLMDGPwwatXmAmYHTkzvpKlJE3ow==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.1.tgz", + "integrity": "sha512-nCOzW2V/X15XpLsK2rlgdwrysrBq+AauCn+omItIz4R1pIcmeot5zvjdmOBRLzEH/CkC6IxMJVmxDe3QcMuNVQ==", + "dev": true, + "requires": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "rollup": { + "version": "2.67.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.67.0.tgz", + "integrity": "sha512-W83AaERwvDiHwHEF/dfAfS3z1Be5wf7n+pO3ZAO5IQadCT2lBTr7WQ2MwZZe+nodbD+n3HtC4OCOAdsOPPcKZQ==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-auto-external": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-auto-external/-/rollup-plugin-auto-external-2.0.0.tgz", + "integrity": "sha512-HQM3ZkZYfSam1uoZtAB9sK26EiAsfs1phrkf91c/YX+S07wugyRXSigBxrIwiLr5EPPilKYmoMxsrnlGBsXnuQ==", + "dev": true, + "requires": { + "builtins": "^2.0.0", + "read-pkg": "^3.0.0", + "safe-resolve": "^1.0.0", + "semver": "^5.5.0" + } + }, + "rollup-plugin-bundle-size": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-bundle-size/-/rollup-plugin-bundle-size-1.0.3.tgz", + "integrity": "sha512-aWj0Pvzq90fqbI5vN1IvUrlf4utOqy+AERYxwWjegH1G8PzheMnrRIgQ5tkwKVtQMDP0bHZEACW/zLDF+XgfXQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "maxmin": "^2.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-resolve": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-resolve/-/safe-resolve-1.0.0.tgz", + "integrity": "sha512-aQpRvfxoi1y0UxKEU0tNO327kb0/LMo8Xrk64M2u172UqOOLCCM0khxN2OTClDiTqTJz5864GMD1X92j4YiHTg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "terser": { + "version": "5.16.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.3.tgz", + "integrity": "sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } +} diff --git a/package.json b/package.json index b8835d2..03662a7 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,30 @@ { "name": "methods-util", - "version": "0.5.0", - "description": "javascript utils", - "main": "methods-util.js", - "module": "methods-util.esm.js", + "version": "0.6.2", + "description": "javascript utils for the browser and node.js", + "main": "index.js", + "exports": { + ".": { + "types": { + "default": "./index.d.ts" + }, + "browser": { + "require": "./dist/browser/axios.cjs", + "default": "./index.js" + }, + "default": { + "require": "./dist/node/axios.cjs", + "default": "./index.js" + } + }, + "./package.json": "./package.json" + }, + "type": "module", "types": "methods-util.d.ts", "typings": "./methods-util.d.ts", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "echo \"Error: no test specified\" && exit 1", + "build": "cross-env NODE_ENV=production rollup -c -m" }, "repository": "lang1427/js-methods-util", "keywords": [ @@ -15,5 +32,20 @@ "ECMA2015" ], "author": "Wei Zhixiang", - "license": "MIT" -} \ No newline at end of file + "license": "MIT", + "devDependencies": { + "@babel/core": "^7.18.2", + "@babel/preset-env": "^7.18.2", + "@rollup/plugin-babel": "^6.0.3", + "@rollup/plugin-commonjs": "^15.1.0", + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^9.0.0", + "cross-env": "^7.0.3", + "rollup": "^2.67.0", + "rollup-plugin-auto-external": "^2.0.0", + "rollup-plugin-bundle-size": "^1.0.3", + "rollup-plugin-terser": "^7.0.2" + }, + "jsdelivr": "dist/methods_util.min.js", + "unpkg": "dist/methods_util.min.js" +} diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000..e212676 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,117 @@ +import resolve from '@rollup/plugin-node-resolve'; +import commonjs from '@rollup/plugin-commonjs'; +import {terser} from "rollup-plugin-terser"; +import json from '@rollup/plugin-json'; +import { babel } from '@rollup/plugin-babel'; +import autoExternal from 'rollup-plugin-auto-external'; +import bundleSize from 'rollup-plugin-bundle-size' +import path from 'path'; + +const lib = require("./package.json"); +const outputFileName = 'methods_util'; +const name = "methods_util"; +const namedInput = './index.js'; +const defaultInput = './lib/methods_util.js'; + +const buildConfig = ({es5, browser = true, minifiedVersion = true, ...config}) => { + const {file} = config.output; + const ext = path.extname(file); + const basename = path.basename(file, ext); + const extArr = ext.split('.'); + extArr.shift(); + + + const build = ({minified}) => ({ + input: namedInput, + ...config, + output: { + ...config.output, + file: `${path.dirname(file)}/${basename}.${(minified ? ['min', ...extArr] : extArr).join('.')}` + }, + plugins: [ + json(), + resolve({browser}), + commonjs(), + minified && terser(), + minified && bundleSize(), + ...(es5 ? [babel({ + babelHelpers: 'bundled', + presets: ['@babel/preset-env'] + })] : []), + ...(config.plugins || []), + ] + }); + + const configs = [ + build({minified: false}), + ]; + + if (minifiedVersion) { + configs.push(build({minified: true})) + } + + return configs; +}; + +export default async () => { + const year = new Date().getFullYear(); + const banner = `// methods_util v${lib.version} Copyright (c) ${year} ${lib.author} and contributors`; + + return [ + // browser ESM bundle for CDN + ...buildConfig({ + input: namedInput, + output: { + file: `dist/esm/${outputFileName}.js`, + format: "esm", + preferConst: true, + exports: "named", + banner + } + }), + + // Browser UMD bundle for CDN + ...buildConfig({ + input: defaultInput, + es5: true, + output: { + file: `dist/${outputFileName}.js`, + name, + format: "umd", + exports: "default", + banner + } + }), + + // Browser CJS bundle + ...buildConfig({ + input: defaultInput, + es5: false, + minifiedVersion: false, + output: { + file: `dist/browser/${name}.cjs`, + name, + format: "cjs", + exports: "default", + banner + } + }), + + // Node.js commonjs bundle + { + input: defaultInput, + output: { + file: `dist/node/${name}.cjs`, + format: "cjs", + preferConst: true, + exports: "default", + banner + }, + plugins: [ + autoExternal(), + resolve(), + commonjs() + ] + } + ] +};