@ivujs/i-utils 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/dist/cjs/ID-card/index.cjs +122 -0
  4. package/dist/cjs/array/index.cjs +465 -0
  5. package/dist/cjs/clipboard/index.cjs +135 -0
  6. package/dist/cjs/color/index.cjs +210 -0
  7. package/dist/cjs/constants/date.cjs +186 -0
  8. package/dist/cjs/constants/lang.cjs +13 -0
  9. package/dist/cjs/constants/math.cjs +13 -0
  10. package/dist/cjs/constants/regexp.cjs +57 -0
  11. package/dist/cjs/constants/sort.cjs +15 -0
  12. package/dist/cjs/cookie/index.cjs +71 -0
  13. package/dist/cjs/crypto/aes/aes.cjs +533 -0
  14. package/dist/cjs/crypto/aes/index.cjs +28 -0
  15. package/dist/cjs/crypto/base32/base32.cjs +385 -0
  16. package/dist/cjs/crypto/base32/index.cjs +44 -0
  17. package/dist/cjs/crypto/base64/base64.cjs +433 -0
  18. package/dist/cjs/crypto/base64/index.cjs +64 -0
  19. package/dist/cjs/crypto/des/des.cjs +1054 -0
  20. package/dist/cjs/crypto/des/index.cjs +30 -0
  21. package/dist/cjs/crypto/md5/index.cjs +25 -0
  22. package/dist/cjs/crypto/md5/md5.cjs +944 -0
  23. package/dist/cjs/crypto/sha/sha1/index.cjs +25 -0
  24. package/dist/cjs/crypto/sha/sha1/sha1.cjs +602 -0
  25. package/dist/cjs/crypto/sha/sha256/index.cjs +46 -0
  26. package/dist/cjs/crypto/sha/sha256/sha256.cjs +654 -0
  27. package/dist/cjs/crypto/sha/sha3/index.cjs +44 -0
  28. package/dist/cjs/crypto/sha/sha3/sha3.cjs +747 -0
  29. package/dist/cjs/crypto/sha/sha512/index.cjs +88 -0
  30. package/dist/cjs/crypto/sha/sha512/sha512.cjs +1186 -0
  31. package/dist/cjs/crypto/sm/lib/asn1.cjs +167 -0
  32. package/dist/cjs/crypto/sm/lib/ec.cjs +352 -0
  33. package/dist/cjs/crypto/sm/lib/jsbn.cjs +1633 -0
  34. package/dist/cjs/crypto/sm/lib/sm3.cjs +173 -0
  35. package/dist/cjs/crypto/sm/lib/utils.cjs +198 -0
  36. package/dist/cjs/crypto/sm/sm2/index.cjs +122 -0
  37. package/dist/cjs/crypto/sm/sm2/sm2.cjs +269 -0
  38. package/dist/cjs/crypto/sm/sm3/index.cjs +15 -0
  39. package/dist/cjs/crypto/sm/sm3/sm3.cjs +103 -0
  40. package/dist/cjs/crypto/sm/sm4/index.cjs +28 -0
  41. package/dist/cjs/crypto/sm/sm4/sm4.cjs +362 -0
  42. package/dist/cjs/crypto/tea/index.cjs +26 -0
  43. package/dist/cjs/crypto/tea/tea.cjs +215 -0
  44. package/dist/cjs/date/index.cjs +1349 -0
  45. package/dist/cjs/desensitized/index.cjs +74 -0
  46. package/dist/cjs/device/index.cjs +159 -0
  47. package/dist/cjs/dom/index.cjs +176 -0
  48. package/dist/cjs/file/index.cjs +339 -0
  49. package/dist/cjs/function/index.cjs +67 -0
  50. package/dist/cjs/id/index.cjs +46 -0
  51. package/dist/cjs/index.cjs +399 -0
  52. package/dist/cjs/keycode/index.cjs +142 -0
  53. package/dist/cjs/math/index.cjs +284 -0
  54. package/dist/cjs/number/index.cjs +14 -0
  55. package/dist/cjs/object/index.cjs +216 -0
  56. package/dist/cjs/pagination/index.cjs +140 -0
  57. package/dist/cjs/random/index.cjs +25 -0
  58. package/dist/cjs/regexp/index.cjs +109 -0
  59. package/dist/cjs/storage/index.cjs +11 -0
  60. package/dist/cjs/storage/localStorage.cjs +40 -0
  61. package/dist/cjs/storage/sessionStorage.cjs +40 -0
  62. package/dist/cjs/string/index.cjs +338 -0
  63. package/dist/cjs/url/index.cjs +279 -0
  64. package/dist/cjs/validate/index.cjs +487 -0
  65. package/dist/cjs/weapp/index.cjs +151 -0
  66. package/dist/es/ID-card/index.mjs +116 -0
  67. package/dist/es/array/index.mjs +437 -0
  68. package/dist/es/clipboard/index.mjs +129 -0
  69. package/dist/es/color/index.mjs +200 -0
  70. package/dist/es/constants/date.mjs +184 -0
  71. package/dist/es/constants/lang.mjs +11 -0
  72. package/dist/es/constants/math.mjs +11 -0
  73. package/dist/es/constants/regexp.mjs +55 -0
  74. package/dist/es/constants/sort.mjs +13 -0
  75. package/dist/es/cookie/index.mjs +65 -0
  76. package/dist/es/crypto/aes/aes.mjs +529 -0
  77. package/dist/es/crypto/aes/index.mjs +25 -0
  78. package/dist/es/crypto/base32/base32.mjs +381 -0
  79. package/dist/es/crypto/base32/index.mjs +39 -0
  80. package/dist/es/crypto/base64/base64.mjs +427 -0
  81. package/dist/es/crypto/base64/index.mjs +57 -0
  82. package/dist/es/crypto/des/des.mjs +1050 -0
  83. package/dist/es/crypto/des/index.mjs +27 -0
  84. package/dist/es/crypto/md5/index.mjs +22 -0
  85. package/dist/es/crypto/md5/md5.mjs +941 -0
  86. package/dist/es/crypto/sha/sha1/index.mjs +22 -0
  87. package/dist/es/crypto/sha/sha1/sha1.mjs +599 -0
  88. package/dist/es/crypto/sha/sha256/index.mjs +41 -0
  89. package/dist/es/crypto/sha/sha256/sha256.mjs +649 -0
  90. package/dist/es/crypto/sha/sha3/index.mjs +39 -0
  91. package/dist/es/crypto/sha/sha3/sha3.mjs +742 -0
  92. package/dist/es/crypto/sha/sha512/index.mjs +79 -0
  93. package/dist/es/crypto/sha/sha512/sha512.mjs +1177 -0
  94. package/dist/es/crypto/sm/lib/asn1.mjs +164 -0
  95. package/dist/es/crypto/sm/lib/ec.mjs +349 -0
  96. package/dist/es/crypto/sm/lib/jsbn.mjs +1630 -0
  97. package/dist/es/crypto/sm/lib/sm3.mjs +170 -0
  98. package/dist/es/crypto/sm/lib/utils.mjs +186 -0
  99. package/dist/es/crypto/sm/sm2/index.mjs +111 -0
  100. package/dist/es/crypto/sm/sm2/sm2.mjs +258 -0
  101. package/dist/es/crypto/sm/sm3/index.mjs +13 -0
  102. package/dist/es/crypto/sm/sm3/sm3.mjs +99 -0
  103. package/dist/es/crypto/sm/sm4/index.mjs +25 -0
  104. package/dist/es/crypto/sm/sm4/sm4.mjs +359 -0
  105. package/dist/es/crypto/tea/index.mjs +23 -0
  106. package/dist/es/crypto/tea/tea.mjs +211 -0
  107. package/dist/es/date/index.mjs +1262 -0
  108. package/dist/es/desensitized/index.mjs +69 -0
  109. package/dist/es/device/index.mjs +145 -0
  110. package/dist/es/dom/index.mjs +164 -0
  111. package/dist/es/file/index.mjs +323 -0
  112. package/dist/es/function/index.mjs +63 -0
  113. package/dist/es/id/index.mjs +43 -0
  114. package/dist/es/index.mjs +59 -0
  115. package/dist/es/keycode/index.mjs +139 -0
  116. package/dist/es/math/index.mjs +274 -0
  117. package/dist/es/number/index.mjs +12 -0
  118. package/dist/es/object/index.mjs +203 -0
  119. package/dist/es/pagination/index.mjs +134 -0
  120. package/dist/es/random/index.mjs +22 -0
  121. package/dist/es/regexp/index.mjs +98 -0
  122. package/dist/es/storage/index.mjs +9 -0
  123. package/dist/es/storage/localStorage.mjs +35 -0
  124. package/dist/es/storage/sessionStorage.mjs +35 -0
  125. package/dist/es/string/index.mjs +321 -0
  126. package/dist/es/url/index.mjs +261 -0
  127. package/dist/es/validate/index.mjs +451 -0
  128. package/dist/es/weapp/index.mjs +140 -0
  129. package/dist/lib/index.full.esm.js +15825 -0
  130. package/dist/lib/index.full.esm.min.js +58 -0
  131. package/dist/lib/index.full.umd.js +16179 -0
  132. package/package.json +54 -0
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * 姓名中间转为星号
5
+ * @param {String} value 姓名
6
+ * @returns {String} 返回转化后字符串
7
+ */
8
+ function formatStartOfName(value) {
9
+ if (value.length === 2) {
10
+ return _formatStartOf(value, 1, 1);
11
+ } else if (value.length > 2) {
12
+ return _formatStartOf(value, 1, value.length - 2);
13
+ } else {
14
+ return value;
15
+ }
16
+ }
17
+
18
+ /**
19
+ * 手机号码固定位数转为星号
20
+ * @param {String} value 手机号码
21
+ * @param {Number} start 前缀长度,默认3位
22
+ * @param {Number} len 显示星号的长度,默认4位
23
+ * @returns {String} 返回转化后字符串
24
+ */
25
+ function formatStartOfMobile(value, start = 3, len = 4) {
26
+ return _formatStartOf(value, start, len);
27
+ }
28
+
29
+ /**
30
+ * 身份证号码固定位数转为星号
31
+ * @param {String} value 身份证号码
32
+ * @param {Number} start 前缀长度,默认4位
33
+ * @param {Number} len 显示星号的长度,默认8位
34
+ * @returns {String} 返回转化后字符串
35
+ */
36
+ function formatStartOfIDCard(value, start = 4, len = 8) {
37
+ return _formatStartOf(value, start, len);
38
+ }
39
+
40
+ /**
41
+ * 银行卡号固定位数转为星号
42
+ * @param {String} value 银行卡号
43
+ * @param {Number} start 前缀长度,默认4位
44
+ * @param {Number} len 显示星号的长度,默认10位
45
+ * @returns {String} 返回转化后字符串
46
+ */
47
+ function formatStartOfBankCard(value, start = 4, len = 11) {
48
+ return _formatStartOf(value, start, len);
49
+ }
50
+
51
+ /**
52
+ * 指定位置的字符串转为星号
53
+ * @param {String|Number} value 参数
54
+ * @param {Number} start 前缀长度
55
+ * @param {Number} len 显示星号的长度
56
+ * @returns {String} 返回转化后字符串
57
+ */
58
+ function _formatStartOf(value, start, len) {
59
+ value = String(value);
60
+ if (start > value.length) return value;
61
+ // len小于0和len大于剩余长度
62
+ let startStr = "";
63
+ if (len < 0) len = 0;
64
+ if (len > value.length - start) {
65
+ len = value.length - start;
66
+ }
67
+ startStr = String().padEnd(len, "*");
68
+ return value.substring(0, start) + startStr + value.substring(start + len);
69
+ }
70
+
71
+ exports.formatStartOfBankCard = formatStartOfBankCard;
72
+ exports.formatStartOfIDCard = formatStartOfIDCard;
73
+ exports.formatStartOfMobile = formatStartOfMobile;
74
+ exports.formatStartOfName = formatStartOfName;
@@ -0,0 +1,159 @@
1
+ 'use strict';
2
+
3
+ /* 浏览器信息 */
4
+ /**
5
+ * 获取浏览器信息
6
+ * @description 会获取到浏览器对应的名称以及版本
7
+ * @returns {Object} 返回浏览器信息
8
+ */
9
+ function getBrowserInfo() {
10
+ let ua = window.navigator.userAgent.toLowerCase();
11
+
12
+ // ie
13
+ let ie = ua.match(/rv:([\d.]+)\) like gecko/) || ua.match(/msie ([\d\.]+)/);
14
+ // edge
15
+ let edge = ua.match(/edg\/([\d\.]+)/);
16
+ // firefox
17
+ let firefox = ua.match(/firefox\/([\d\.]+)/);
18
+ // opera
19
+ let opera = ua.match(/(?:opera|opr).([\d\.]+)/);
20
+ // chrome
21
+ let chrome = ua.match(/chrome\/([\d\.]+)/);
22
+ // safari
23
+ let safari = ua.match(/version\/([\d\.]+).*safari/);
24
+
25
+ // 判断类型
26
+ if (ie) return { name: "ie", version: ie[1] };
27
+ if (edge) return { name: "edge", version: edge[1] };
28
+ if (firefox) return { name: "firefox", version: firefox[1] };
29
+ if (opera) return { name: "opera", version: opera[1] };
30
+ if (chrome) return { name: "chrome", version: chrome[1] };
31
+ if (safari) return { name: "safari", version: safari[1] };
32
+ return "unknown";
33
+ }
34
+
35
+ /* 设备类型 */
36
+ /**
37
+ * 判断是pc端
38
+ * @returns {Boolean} 返回true和false
39
+ */
40
+ function isPc() {
41
+ return !isPhone();
42
+ }
43
+
44
+ /**
45
+ * 判断是手机端
46
+ * @description 包含 android、iphone、黑莓手机、微软手机 等多种操作系统机型
47
+ * @returns {Boolean} 返回true和false
48
+ */
49
+ function isPhone() {
50
+ let ua = window.navigator.userAgent;
51
+ return /Android|webOS|iPhone|iPod|BlackBerry|Windows Phone|IEMobile/i.test(ua);
52
+ }
53
+
54
+ /* 操作系统类型 */
55
+ /**
56
+ * 判断是 android
57
+ * @returns {Boolean} 返回true和false
58
+ */
59
+ function isAndroid() {
60
+ let ua = window.navigator.userAgent;
61
+ return /Android|BlackBerry/i.test(ua);
62
+ }
63
+
64
+ /**
65
+ * 判断是 ios
66
+ * @returns {Boolean} 返回true和false
67
+ */
68
+ function isIos() {
69
+ let ua = window.navigator.userAgent;
70
+ return /iPhone|iPad|iPod|iOS/i.test(ua);
71
+ }
72
+
73
+ /**
74
+ * 判断是 windows phone
75
+ * @returns {Boolean} 返回true和false
76
+ */
77
+ function isWindowsPhone() {
78
+ let ua = window.navigator.userAgent;
79
+ return /Windows Phone/i.test(ua);
80
+ }
81
+
82
+ /**
83
+ * 判断是 windows
84
+ * @returns {Boolean} 返回true和false
85
+ */
86
+ function isWindows() {
87
+ let ua = window.navigator.userAgent;
88
+ return /win/i.test(ua);
89
+ }
90
+
91
+ /**
92
+ * 判断是 linux
93
+ * @returns {Boolean} 返回true和false
94
+ */
95
+ function isLinux() {
96
+ let ua = window.navigator.userAgent;
97
+ return /linux/i.test(ua);
98
+ }
99
+
100
+ /**
101
+ * 判断是 Mac
102
+ * @returns {Boolean} 返回true和false
103
+ */
104
+ function isMac() {
105
+ let ua = window.navigator.userAgent;
106
+ return /mac/i.test(ua);
107
+ }
108
+
109
+ /* 苹果设备类型 */
110
+ /**
111
+ * 判断是iphone
112
+ *@returns {Boolean} 返回true和false
113
+ */
114
+ function isIphone() {
115
+ let ua = window.navigator.userAgent;
116
+ return /iPhone/i.test(ua);
117
+ }
118
+
119
+ /**
120
+ * 判断是ipad
121
+ *@return {Boolean} 返回true和false
122
+ */
123
+ function isIpad() {
124
+ let ua = window.navigator.userAgent;
125
+ return /iPod/i.test(ua);
126
+ }
127
+
128
+ /* 手机浏览器类型 */
129
+ /**
130
+ * 判断是微信内置浏览器
131
+ * @returns {Boolean} 返回true和false
132
+ */
133
+ function isWeixin() {
134
+ let ua = window.navigator.userAgent;
135
+ return /MicroMessenger/i.test(ua);
136
+ }
137
+
138
+ /**
139
+ * 判断是QQ内置浏览器
140
+ * @returns {Boolean} 返回true和false
141
+ */
142
+ function isQQ() {
143
+ let ua = window.navigator.userAgent;
144
+ return /QQ/i.test(ua);
145
+ }
146
+
147
+ exports.getBrowserInfo = getBrowserInfo;
148
+ exports.isAndroid = isAndroid;
149
+ exports.isIos = isIos;
150
+ exports.isIpad = isIpad;
151
+ exports.isIphone = isIphone;
152
+ exports.isLinux = isLinux;
153
+ exports.isMac = isMac;
154
+ exports.isPc = isPc;
155
+ exports.isPhone = isPhone;
156
+ exports.isQQ = isQQ;
157
+ exports.isWeixin = isWeixin;
158
+ exports.isWindows = isWindows;
159
+ exports.isWindowsPhone = isWindowsPhone;
@@ -0,0 +1,176 @@
1
+ 'use strict';
2
+
3
+ /* Class操作 */
4
+ /**
5
+ * 判断元素包含某个类名
6
+ * @param {Element} elem 元素
7
+ * @param {String} className 类名
8
+ * @return {Boolean} 返回true和false
9
+ */
10
+ function hasClass(elem, className) {
11
+ return elem.className.indexOf(className) > 0;
12
+ }
13
+
14
+ /**
15
+ * 元素添加类名
16
+ * @param {Element} elem 元素
17
+ * @param {String} className 类名
18
+ */
19
+ function addClass(elem, className) {
20
+ if (!hasClass(elem, className)) {
21
+ elem.className += " " + className;
22
+ }
23
+ }
24
+
25
+ /**
26
+ * 元素删除类名
27
+ * @param {Element} elem 元素
28
+ * @param {String} className 类名
29
+ */
30
+ function removeClass(elem, className) {
31
+ if (hasClass(elem, className)) {
32
+ elem.className = elem.className.replace(new RegExp(className, "gm"), "");
33
+ }
34
+ }
35
+
36
+ /**
37
+ * 元素替换类名
38
+ * @param {Element} elem 元素
39
+ * @param {String} newClassName 新的类名
40
+ * @param {String} oldClassName 被替换掉的旧类名
41
+ */
42
+ function replaceClass(elem, newClassName, oldClassName) {
43
+ removeClass(elem, oldClassName);
44
+ addClass(elem, newClassName);
45
+ }
46
+
47
+ /* Style操作 */
48
+ /**
49
+ * 添加元素的style样式
50
+ * @param {Element} elem 元素
51
+ * @param {Object} styles 样式属性集合
52
+ */
53
+ function addStyle(elem, styles = {}) {
54
+ if (!elem) return;
55
+ for (let key in styles) {
56
+ elem.style[key] = styles[key];
57
+ }
58
+ }
59
+
60
+ /**
61
+ * 获取元素的style样式
62
+ * @param {Element} elem 元素
63
+ * @param {String} name 属性
64
+ * @returns {String} 返回样式的值
65
+ */
66
+ function getStyle(elem, name) {
67
+ if (!elem) return;
68
+ return elem.style[name];
69
+ }
70
+
71
+ /**
72
+ * 删除元素的style样式
73
+ * @param {Element} elem 元素
74
+ * @param {String} name 属性
75
+ */
76
+ function removeStyle(elem, name) {
77
+ if (!elem) return;
78
+ elem.style.removeProperty(name);
79
+ }
80
+
81
+ /* Html转码 */
82
+ /**
83
+ * html标签转义
84
+ * @param {String} htmlStr html字符串
85
+ * @returns {String} 返回转义后的字符串
86
+ */
87
+ function htmlEncode(htmlStr) {
88
+ const temp = {
89
+ "<": "&lt;",
90
+ ">": "&gt;",
91
+ "&": "&amp;",
92
+ "(": "&#40;",
93
+ ")": "&#41;",
94
+ "/": "&#47;",
95
+ " ": "&nbsp;",
96
+ '"': "&quot;",
97
+ "'": "&#39;",
98
+ };
99
+ return htmlStr.replace(/[<>&|()\/ '"]/g, function (c) {
100
+ return temp[c];
101
+ });
102
+ }
103
+
104
+ /**
105
+ * html标签解码
106
+ * @param {String} htmlStr html字符串
107
+ * @returns {String} 返回解析后的字符串
108
+ */
109
+ function htmlDecode(htmlStr) {
110
+ const temp = {
111
+ "&lt;": "<",
112
+ "&gt;": ">",
113
+ "&amp;": "&",
114
+ "&#40;": "(",
115
+ "&#41;": ")",
116
+ "&#47;": "/",
117
+ "&nbsp;": " ",
118
+ "&quot;": '"',
119
+ "&#39;": "'",
120
+ };
121
+ return htmlStr.replace(/(&lt;|&gt;|&amp;|&#40;|&#41;|&#47;|&nbsp;|&quot;|&#39;)/gi, function (all, t) {
122
+ return temp[t];
123
+ });
124
+ }
125
+
126
+ /* 复制剪切板 */
127
+ /**
128
+ * 复制文本到剪贴板
129
+ * @param {String} text 文本
130
+ * @description 仅支持谷歌等新浏览器
131
+ * @returns {Promise} 返回Promise的复制成功和失败
132
+ */
133
+ function copyText(text) {
134
+ // 谷歌等新版本浏览器
135
+ return new Promise((resolve, reject) => {
136
+ navigator.clipboard
137
+ .writeText(text)
138
+ .then(() => {
139
+ resolve(text);
140
+ })
141
+ .catch((error) => {
142
+ console.error("copy error!");
143
+ reject(error);
144
+ });
145
+ });
146
+ }
147
+
148
+ /**
149
+ * 从剪贴板获取文本
150
+ * @description 仅支持谷歌等新浏览器
151
+ * @returns {Promise} 返回Promise的剪切板内容
152
+ */
153
+ function getCopyText() {
154
+ return new Promise((resolve, reject) => {
155
+ navigator.clipboard
156
+ .readText()
157
+ .then((text) => {
158
+ resolve(text);
159
+ })
160
+ .catch((error) => {
161
+ reject(error);
162
+ });
163
+ });
164
+ }
165
+
166
+ exports.addClass = addClass;
167
+ exports.addStyle = addStyle;
168
+ exports.copyText = copyText;
169
+ exports.getCopyText = getCopyText;
170
+ exports.getStyle = getStyle;
171
+ exports.hasClass = hasClass;
172
+ exports.htmlDecode = htmlDecode;
173
+ exports.htmlEncode = htmlEncode;
174
+ exports.removeClass = removeClass;
175
+ exports.removeStyle = removeStyle;
176
+ exports.replaceClass = replaceClass;