@ivujs/i-utils 1.1.14 → 1.1.16

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 (213) hide show
  1. package/dist/cjs/ID-card/index.cjs +87 -0
  2. package/dist/cjs/array/index.cjs +470 -0
  3. package/dist/cjs/clipboard/index.cjs +128 -0
  4. package/dist/cjs/color/index.cjs +193 -0
  5. package/dist/cjs/constants/date.cjs +178 -0
  6. package/dist/cjs/constants/id-card.cjs +52 -0
  7. package/dist/cjs/constants/keycode.cjs +117 -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 +53 -0
  11. package/dist/cjs/constants/sort.cjs +15 -0
  12. package/dist/cjs/cookie/index.cjs +70 -0
  13. package/dist/cjs/crypto/aes/aes.cjs +480 -0
  14. package/dist/cjs/crypto/aes/index.cjs +27 -0
  15. package/dist/cjs/crypto/base32/base32.cjs +357 -0
  16. package/dist/cjs/crypto/base32/index.cjs +41 -0
  17. package/dist/cjs/crypto/base64/base64.cjs +348 -0
  18. package/dist/cjs/crypto/base64/index.cjs +59 -0
  19. package/dist/cjs/crypto/des/des.cjs +257 -0
  20. package/dist/cjs/crypto/des/index.cjs +28 -0
  21. package/dist/cjs/crypto/md5/index.cjs +24 -0
  22. package/dist/cjs/crypto/md5/md5.cjs +897 -0
  23. package/dist/cjs/crypto/sha/sha1/index.cjs +24 -0
  24. package/dist/cjs/crypto/sha/sha1/sha1.cjs +529 -0
  25. package/dist/cjs/crypto/sha/sha256/index.cjs +43 -0
  26. package/dist/cjs/crypto/sha/sha256/sha256.cjs +595 -0
  27. package/dist/cjs/crypto/sha/sha3/index.cjs +41 -0
  28. package/dist/cjs/crypto/sha/sha3/sha3.cjs +624 -0
  29. package/dist/cjs/crypto/sha/sha512/index.cjs +81 -0
  30. package/dist/cjs/crypto/sha/sha512/sha512.cjs +950 -0
  31. package/dist/cjs/crypto/sm/lib/asn1.cjs +149 -0
  32. package/dist/cjs/crypto/sm/lib/ec.cjs +315 -0
  33. package/dist/cjs/crypto/sm/lib/jsbn.cjs +1608 -0
  34. package/dist/cjs/crypto/sm/lib/sm3.cjs +158 -0
  35. package/dist/cjs/crypto/sm/lib/utils.cjs +170 -0
  36. package/dist/cjs/crypto/sm/sm2/index.cjs +112 -0
  37. package/dist/cjs/crypto/sm/sm2/sm2.cjs +231 -0
  38. package/dist/cjs/crypto/sm/sm3/index.cjs +15 -0
  39. package/dist/cjs/crypto/sm/sm3/sm3.cjs +93 -0
  40. package/dist/cjs/crypto/sm/sm4/index.cjs +27 -0
  41. package/dist/cjs/crypto/sm/sm4/sm4.cjs +327 -0
  42. package/dist/cjs/crypto/tea/index.cjs +25 -0
  43. package/dist/cjs/crypto/tea/tea.cjs +187 -0
  44. package/dist/cjs/date/index.cjs +1266 -0
  45. package/dist/cjs/desensitized/index.cjs +75 -0
  46. package/dist/cjs/device/index.cjs +151 -0
  47. package/dist/cjs/dom/index.cjs +129 -0
  48. package/dist/cjs/file/index.cjs +333 -0
  49. package/dist/cjs/function/index.cjs +69 -0
  50. package/dist/cjs/id/index.cjs +1 -1
  51. package/dist/cjs/index.cjs +398 -47
  52. package/dist/cjs/keycode/index.cjs +33 -0
  53. package/dist/cjs/math/index.cjs +278 -0
  54. package/dist/cjs/number/index.cjs +31 -0
  55. package/dist/cjs/object/index.cjs +272 -0
  56. package/dist/cjs/pagination/index.cjs +131 -0
  57. package/dist/cjs/random/index.cjs +24 -0
  58. package/dist/cjs/regexp/index.cjs +100 -0
  59. package/dist/cjs/storage/index.cjs +11 -0
  60. package/dist/cjs/storage/localStorage.cjs +37 -0
  61. package/dist/cjs/storage/sessionStorage.cjs +37 -0
  62. package/dist/cjs/string/index.cjs +358 -0
  63. package/dist/cjs/url/index.cjs +258 -0
  64. package/dist/cjs/validate/index.cjs +468 -0
  65. package/dist/cjs/weapp/index.cjs +142 -0
  66. package/dist/es/ID-card/index.d.ts +31 -0
  67. package/dist/es/ID-card/index.mjs +81 -0
  68. package/dist/es/array/index.d.ts +203 -0
  69. package/dist/es/array/index.mjs +441 -0
  70. package/dist/es/clipboard/index.d.ts +29 -0
  71. package/dist/es/clipboard/index.mjs +122 -0
  72. package/dist/es/color/index.d.ts +52 -0
  73. package/dist/es/color/index.mjs +183 -0
  74. package/dist/es/constants/date.d.ts +174 -0
  75. package/dist/es/constants/date.mjs +176 -0
  76. package/dist/es/constants/id-card.d.ts +43 -0
  77. package/dist/es/constants/id-card.mjs +50 -0
  78. package/dist/es/constants/index.d.ts +7 -0
  79. package/dist/es/constants/keycode.d.ts +103 -0
  80. package/dist/es/constants/keycode.mjs +115 -0
  81. package/dist/es/constants/lang.d.ts +4 -0
  82. package/dist/es/constants/lang.mjs +11 -0
  83. package/dist/es/constants/math.d.ts +4 -0
  84. package/dist/es/constants/math.mjs +11 -0
  85. package/dist/es/constants/regexp.d.ts +24 -0
  86. package/dist/es/constants/regexp.mjs +51 -0
  87. package/dist/es/constants/sort.d.ts +5 -0
  88. package/dist/es/constants/sort.mjs +13 -0
  89. package/dist/es/cookie/index.d.ts +29 -0
  90. package/dist/es/cookie/index.mjs +64 -0
  91. package/dist/es/crypto/aes/aes.d.ts +156 -0
  92. package/dist/es/crypto/aes/aes.mjs +478 -0
  93. package/dist/es/crypto/aes/index.d.ts +16 -0
  94. package/dist/es/crypto/aes/index.mjs +24 -0
  95. package/dist/es/crypto/base32/base32.d.ts +3 -0
  96. package/dist/es/crypto/base32/base32.mjs +353 -0
  97. package/dist/es/crypto/base32/index.d.ts +24 -0
  98. package/dist/es/crypto/base32/index.mjs +36 -0
  99. package/dist/es/crypto/base64/base64.d.ts +5 -0
  100. package/dist/es/crypto/base64/base64.mjs +342 -0
  101. package/dist/es/crypto/base64/index.d.ts +36 -0
  102. package/dist/es/crypto/base64/index.mjs +52 -0
  103. package/dist/es/crypto/des/des.d.ts +52 -0
  104. package/dist/es/crypto/des/des.mjs +255 -0
  105. package/dist/es/crypto/des/index.d.ts +14 -0
  106. package/dist/es/crypto/des/index.mjs +25 -0
  107. package/dist/es/crypto/index.d.ts +8 -0
  108. package/dist/es/crypto/md5/index.d.ts +13 -0
  109. package/dist/es/crypto/md5/index.mjs +21 -0
  110. package/dist/es/crypto/md5/md5.d.ts +144 -0
  111. package/dist/es/crypto/md5/md5.mjs +894 -0
  112. package/dist/es/crypto/sha/index.d.ts +4 -0
  113. package/dist/es/crypto/sha/sha1/index.d.ts +13 -0
  114. package/dist/es/crypto/sha/sha1/index.mjs +21 -0
  115. package/dist/es/crypto/sha/sha1/sha1.d.ts +2 -0
  116. package/dist/es/crypto/sha/sha1/sha1.mjs +526 -0
  117. package/dist/es/crypto/sha/sha256/index.d.ts +26 -0
  118. package/dist/es/crypto/sha/sha256/index.mjs +38 -0
  119. package/dist/es/crypto/sha/sha256/sha256.d.ts +4 -0
  120. package/dist/es/crypto/sha/sha256/sha256.mjs +590 -0
  121. package/dist/es/crypto/sha/sha3/index.d.ts +24 -0
  122. package/dist/es/crypto/sha/sha3/index.mjs +36 -0
  123. package/dist/es/crypto/sha/sha3/sha3.d.ts +4 -0
  124. package/dist/es/crypto/sha/sha3/sha3.mjs +619 -0
  125. package/dist/es/crypto/sha/sha512/index.d.ts +52 -0
  126. package/dist/es/crypto/sha/sha512/index.mjs +72 -0
  127. package/dist/es/crypto/sha/sha512/sha512.d.ts +8 -0
  128. package/dist/es/crypto/sha/sha512/sha512.mjs +941 -0
  129. package/dist/es/crypto/sm/index.d.ts +3 -0
  130. package/dist/es/crypto/sm/lib/asn1.d.ts +12 -0
  131. package/dist/es/crypto/sm/lib/asn1.mjs +146 -0
  132. package/dist/es/crypto/sm/lib/ec.d.ts +126 -0
  133. package/dist/es/crypto/sm/lib/ec.mjs +312 -0
  134. package/dist/es/crypto/sm/lib/jsbn.d.ts +198 -0
  135. package/dist/es/crypto/sm/lib/jsbn.mjs +1605 -0
  136. package/dist/es/crypto/sm/lib/sm3.d.ts +5 -0
  137. package/dist/es/crypto/sm/lib/sm3.mjs +155 -0
  138. package/dist/es/crypto/sm/lib/utils.d.ts +53 -0
  139. package/dist/es/crypto/sm/lib/utils.mjs +158 -0
  140. package/dist/es/crypto/sm/sm2/index.d.ts +71 -0
  141. package/dist/es/crypto/sm/sm2/index.mjs +101 -0
  142. package/dist/es/crypto/sm/sm2/sm2.d.ts +34 -0
  143. package/dist/es/crypto/sm/sm2/sm2.mjs +220 -0
  144. package/dist/es/crypto/sm/sm3/index.d.ts +7 -0
  145. package/dist/es/crypto/sm/sm3/index.mjs +13 -0
  146. package/dist/es/crypto/sm/sm3/sm3.d.ts +1 -0
  147. package/dist/es/crypto/sm/sm3/sm3.mjs +91 -0
  148. package/dist/es/crypto/sm/sm4/index.d.ts +16 -0
  149. package/dist/es/crypto/sm/sm4/index.mjs +24 -0
  150. package/dist/es/crypto/sm/sm4/sm4.d.ts +2 -0
  151. package/dist/es/crypto/sm/sm4/sm4.mjs +324 -0
  152. package/dist/es/crypto/tea/index.d.ts +14 -0
  153. package/dist/es/crypto/tea/index.mjs +22 -0
  154. package/dist/es/crypto/tea/tea.d.ts +69 -0
  155. package/dist/es/crypto/tea/tea.mjs +185 -0
  156. package/dist/es/date/index.d.ts +547 -0
  157. package/dist/es/date/index.mjs +1179 -0
  158. package/dist/es/desensitized/index.d.ts +38 -0
  159. package/dist/es/desensitized/index.mjs +69 -0
  160. package/dist/es/device/index.d.ts +67 -0
  161. package/dist/es/device/index.mjs +137 -0
  162. package/dist/es/dom/index.d.ts +57 -0
  163. package/dist/es/dom/index.mjs +119 -0
  164. package/dist/es/file/index.d.ts +93 -0
  165. package/dist/es/file/index.mjs +317 -0
  166. package/dist/es/function/index.d.ts +23 -0
  167. package/dist/es/function/index.mjs +65 -0
  168. package/dist/es/id/index.mjs +1 -1
  169. package/dist/es/index.d.ts +25 -42
  170. package/dist/es/index.mjs +54 -40
  171. package/dist/es/keycode/index.d.ts +12 -0
  172. package/dist/es/keycode/index.mjs +30 -0
  173. package/dist/es/math/index.d.ts +66 -0
  174. package/dist/es/math/index.mjs +268 -0
  175. package/dist/es/number/index.d.ts +14 -0
  176. package/dist/es/number/index.mjs +28 -0
  177. package/dist/es/object/index.d.ts +83 -0
  178. package/dist/es/object/index.mjs +259 -0
  179. package/dist/es/pagination/index.d.ts +34 -0
  180. package/dist/es/pagination/index.mjs +125 -0
  181. package/dist/es/random/index.d.ts +15 -0
  182. package/dist/es/random/index.mjs +21 -0
  183. package/dist/es/regexp/index.d.ts +63 -0
  184. package/dist/es/regexp/index.mjs +89 -0
  185. package/dist/es/storage/index.d.ts +7 -0
  186. package/dist/es/storage/index.mjs +9 -0
  187. package/dist/es/storage/localStorage.d.ts +21 -0
  188. package/dist/es/storage/localStorage.mjs +32 -0
  189. package/dist/es/storage/sessionStorage.d.ts +21 -0
  190. package/dist/es/storage/sessionStorage.mjs +32 -0
  191. package/dist/es/string/index.d.ts +121 -0
  192. package/dist/es/string/index.mjs +339 -0
  193. package/dist/es/url/index.d.ts +118 -0
  194. package/dist/es/url/index.mjs +240 -0
  195. package/dist/es/validate/index.d.ts +228 -0
  196. package/dist/es/validate/index.mjs +431 -0
  197. package/dist/es/weapp/index.d.ts +57 -0
  198. package/dist/es/weapp/index.mjs +131 -0
  199. package/dist/index.d.ts +2850 -53
  200. package/dist/lib/index.full.cjs.js +14230 -67
  201. package/dist/lib/index.full.cjs.min.js +64 -2
  202. package/dist/lib/index.full.cjs.min.js.map +1 -1
  203. package/dist/lib/index.full.esm.js +13881 -63
  204. package/dist/lib/index.full.esm.min.js +59 -2
  205. package/dist/lib/index.full.esm.min.js.map +1 -1
  206. package/dist/lib/index.full.umd.js +14230 -67
  207. package/dist/lib/index.full.umd.min.js +64 -2
  208. package/dist/lib/index.full.umd.min.js.map +1 -1
  209. package/dist/resolver/auto-imports.cjs +337 -11
  210. package/dist/resolver/auto-imports.mjs +337 -11
  211. package/dist/resolver/index.cjs +1 -1
  212. package/dist/resolver/index.mjs +1 -1
  213. package/package.json +1 -1
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ var index = require('../validate/index.cjs');
4
+ var index$1 = require('../date/index.cjs');
5
+ var idCard = require('../constants/id-card.cjs');
6
+
7
+ /**
8
+ * 根据身份证号码获取信息
9
+ * @description 能获取到 籍贯,出生日期,年龄,性别
10
+ * @param {String} idCard 身份证号码,支持一代15位和二代18位
11
+ * @returns {Object} 返回身份证信息对象
12
+ */
13
+ function getInfoByIDCard(idCard) {
14
+ if (index.isNull(idCard))
15
+ return;
16
+ return {
17
+ // 省份
18
+ province: getProvinceByIDCard(idCard),
19
+ // 生日
20
+ birthday: getBirthdayByIDCard(idCard),
21
+ // 年龄
22
+ age: getAgeByIDCard(idCard),
23
+ // 性别
24
+ sex: getSexByIDCard(idCard),
25
+ };
26
+ }
27
+ /**
28
+ * 根据身份证号码获得生日
29
+ * @param {String} idCard 身份证号码,支持一代15位和二代18位
30
+ * @returns {String} 返回生日
31
+ */
32
+ function getBirthdayByIDCard(idCard) {
33
+ if (index.isNull(idCard))
34
+ return;
35
+ // 15位身份证
36
+ if (idCard.length === 15) {
37
+ return "19" + idCard.substring(6, 8) + "-" + idCard.substring(8, 10) + "-" + idCard.substring(10, 12);
38
+ }
39
+ // 18位身份证
40
+ if (idCard.length === 18) {
41
+ return idCard.substring(6, 10) + "-" + idCard.substring(10, 12) + "-" + idCard.substring(12, 14);
42
+ }
43
+ }
44
+ /**
45
+ * 根据身份证号码获得年龄
46
+ * @param {String} idCard 身份证号码,支持一代15位和二代18位
47
+ * @returns {Number} 返回年龄
48
+ */
49
+ function getAgeByIDCard(idCard) {
50
+ if (index.isNull(idCard))
51
+ return;
52
+ let birthday = getBirthdayByIDCard(idCard);
53
+ return index$1.getAge(index$1.parseDate(birthday));
54
+ }
55
+ /**
56
+ * 根据身份证号码获得性别
57
+ * @param {String} idCard 身份证号码,支持一代15位和二代18位
58
+ * @returns {String} 返回性别
59
+ */
60
+ function getSexByIDCard(idCard$1) {
61
+ if (index.isNull(idCard$1))
62
+ return;
63
+ // 15位身份证
64
+ if (idCard$1.length === 15) {
65
+ return Number(idCard$1.substring(14)) % 2 === 0 ? idCard.ID_CARD.SEX.WOMAN : idCard.ID_CARD.SEX.MAN;
66
+ }
67
+ // 18位身份证
68
+ if (idCard$1.length === 18) {
69
+ return Number(idCard$1.substring(16, 17)) % 2 === 0 ? idCard.ID_CARD.SEX.WOMAN : idCard.ID_CARD.SEX.MAN;
70
+ }
71
+ }
72
+ /**
73
+ * 根据身份证号码获得省份
74
+ * @param {String} idCard 身份证号码,支持一代15位和二代18位
75
+ * @returns {String} 返回省份
76
+ */
77
+ function getProvinceByIDCard(idCard$1) {
78
+ if (index.isNull(idCard$1))
79
+ return;
80
+ return idCard.ID_CARD.PROVINCE[idCard$1.substring(0, 2)];
81
+ }
82
+
83
+ exports.getAgeByIDCard = getAgeByIDCard;
84
+ exports.getBirthdayByIDCard = getBirthdayByIDCard;
85
+ exports.getInfoByIDCard = getInfoByIDCard;
86
+ exports.getProvinceByIDCard = getProvinceByIDCard;
87
+ exports.getSexByIDCard = getSexByIDCard;
@@ -0,0 +1,470 @@
1
+ 'use strict';
2
+
3
+ var sort = require('../constants/sort.cjs');
4
+ var index = require('../validate/index.cjs');
5
+
6
+ /* 数组计算 */
7
+ /**
8
+ * 数组最小值
9
+ * @param {Array} array 数组
10
+ * @returns {Number} 返回最小值
11
+ */
12
+ function arrayMin(array) {
13
+ return Math.min.apply(null, array);
14
+ }
15
+ /**
16
+ * 数组最大值
17
+ * @param {Array} array 数组
18
+ * @returns {Number} 返回最大值
19
+ */
20
+ function arrayMax(array) {
21
+ return Math.max.apply(null, array);
22
+ }
23
+ /**
24
+ * 数组求和
25
+ * @param {Array} array 数组
26
+ * @returns {Number} 返回和
27
+ */
28
+ function arraySum(array) {
29
+ return array.reduce(function (pre, cur) {
30
+ return pre + cur;
31
+ });
32
+ }
33
+ /**
34
+ * 数组求平均值
35
+ * @param {Array} array 数组
36
+ * @returns {Number} 返回平均数
37
+ */
38
+ function arrayAvg(array) {
39
+ return arraySum(array) / array.length;
40
+ }
41
+ /* 数组比较 */
42
+ /**
43
+ * 数组中是否包含指定的元素
44
+ * @param {String|Number} value 元素
45
+ * @param {Array} array 查找的数组
46
+ * @returns {Boolean} 返回结果
47
+ */
48
+ function inArray(value, array) {
49
+ if (index.isNull(value))
50
+ return false;
51
+ return array.includes(value);
52
+ }
53
+ /**
54
+ * 比较两个数组是否相等
55
+ * @param {Array} array1 数组1
56
+ * @param {Array} array2 数组2
57
+ * @returns {Boolean} 返回结果
58
+ */
59
+ function arrayEquals(array1, array2) {
60
+ if (array1 === array2)
61
+ return true;
62
+ if (array1.length !== array2.length)
63
+ return false;
64
+ return array1.every((v, i) => v === array2[i]);
65
+ }
66
+ /* 数组操作 */
67
+ /**
68
+ * 生成指定长度的数组
69
+ * @param {Number} length 长度,默认 0
70
+ * @returns {Array} 返回数组
71
+ */
72
+ function arrayCreate(length = 0) {
73
+ return [...Array(length).keys()];
74
+ }
75
+ /**
76
+ * 数组指定位置添加元素
77
+ * @description 如果数组为空,则在0位置添加元素
78
+ * @param {Array} array 数组
79
+ * @param {Number} index 下标位置,默认0
80
+ * @param {*} value 添加的元素
81
+ * @returns {Array} 返回操作后的数组
82
+ */
83
+ function arrayInsert(array = [], index = 0, value = undefined) {
84
+ if (index < 0)
85
+ return array;
86
+ if (array.length === 0) {
87
+ array.push(value);
88
+ }
89
+ else {
90
+ if (index > array.length - 1) {
91
+ return array;
92
+ }
93
+ array.splice(index, 0, value);
94
+ }
95
+ return array;
96
+ }
97
+ /**
98
+ * 数组指定位置前面添加元素
99
+ * @description 如果数组为空,则在0位置添加元素
100
+ * @param {Array} array 数组
101
+ * @param {Number} index 下标位置,默认0
102
+ * @param {*} value 添加的元素
103
+ * @returns {Array} 返回操作后的数组
104
+ */
105
+ function arrayInsertBefore(array = [], index = 0, value = undefined) {
106
+ if (index < 0)
107
+ return array;
108
+ if (array.length === 0) {
109
+ array.push(value);
110
+ }
111
+ else {
112
+ if (index > array.length - 1) {
113
+ return array;
114
+ }
115
+ array.splice(index, 0, value);
116
+ }
117
+ return array;
118
+ }
119
+ /**
120
+ * 数组指定位置后面添加元素
121
+ * @description 如果数组为空,则在0位置添加元素
122
+ * @param {Array} array 数组
123
+ * @param {Number} index 下标位置,默认0
124
+ * @param {*} value 添加的元素
125
+ * @returns {Array} 返回操作后的数组
126
+ */
127
+ function arrayInsertAfter(array = [], index = 0, value = undefined) {
128
+ if (index < 0)
129
+ return array;
130
+ if (array.length === 0) {
131
+ array.push(value);
132
+ }
133
+ else {
134
+ if (index > array.length - 1) {
135
+ return array;
136
+ }
137
+ array.splice(index, 0, array.splice(index, 1, value)[0]);
138
+ }
139
+ return array;
140
+ }
141
+ /**
142
+ * 数组指定位置删除元素
143
+ * @param {Array} array 数组
144
+ * @param {Number} index 下标位置,默认0
145
+ * @returns {Array} 返回操作后的数组
146
+ */
147
+ function arrayRemove(array = [], index = 0) {
148
+ if (index < 0 || index > array.length - 1)
149
+ return array;
150
+ array.splice(index, 1);
151
+ return array;
152
+ }
153
+ /**
154
+ * 数组指定位置前面删除元素
155
+ * @param {Array} array 数组
156
+ * @param {Number} index 下标位置,默认0
157
+ * @returns {Array} 返回操作后的数组
158
+ */
159
+ function arrayRemoveBefore(array = [], index = 0) {
160
+ if (index <= 0 || index > array.length - 1)
161
+ return array;
162
+ array.splice(index - 1, 1);
163
+ return array;
164
+ }
165
+ /**
166
+ * 数组指定位置后面删除元素
167
+ * @param {Array} array 数组
168
+ * @param {Number} index 下标位置,默认0
169
+ * @returns {Array} 返回操作后的数组
170
+ */
171
+ function arrayRemoveAfter(array = [], index = 0) {
172
+ if (index < 0 || index > array.length - 1)
173
+ return array;
174
+ array.splice(index + 1, 1);
175
+ return array;
176
+ }
177
+ /**
178
+ * 数组置顶
179
+ * @param {Array} array 数组
180
+ * @param {Number} index 下标位置,默认0
181
+ * @returns {Array} 返回操作后的数组
182
+ */
183
+ function arrayTop(array = [], index = 0) {
184
+ if (index < 0 || index > array.length - 1)
185
+ return array;
186
+ array.unshift(array.splice(index, 1)[0]);
187
+ return array;
188
+ }
189
+ /**
190
+ * 数组置尾
191
+ * @param {Array} array 数组
192
+ * @param {Number} index 下标位置,默认0
193
+ * @returns {Array} 返回操作后的数组
194
+ */
195
+ function arrayBottom(array = [], index = 0) {
196
+ if (index < 0 || index > array.length - 1)
197
+ return array;
198
+ array.push(array.splice(index, 1)[0]);
199
+ return array;
200
+ }
201
+ /**
202
+ * 数组向上移动
203
+ * @param {Array} array 数组
204
+ * @param {Number} index 下标位置,默认0
205
+ * @returns {Array} 返回操作后的数组
206
+ */
207
+ function arrayUp(array = [], index = 0) {
208
+ if (index < 0 || index > array.length - 1)
209
+ return array;
210
+ if (index > 0) {
211
+ array.splice(index - 1, 0, array.splice(index, 1)[0]);
212
+ }
213
+ else {
214
+ array.push(array.splice(index, 1)[0]);
215
+ }
216
+ return array;
217
+ }
218
+ /**
219
+ * 数组向下移动
220
+ * @param {Array} array 数组
221
+ * @param {Number} index 下标位置,默认0
222
+ * @returns {Array} 返回操作后的数组
223
+ */
224
+ function arrayDown(array = [], index = 0) {
225
+ if (index < 0 || index > array.length - 1)
226
+ return array;
227
+ if (index < array.length - 1) {
228
+ array.splice(index + 1, 0, array.splice(index, 1)[0]);
229
+ }
230
+ else {
231
+ array.unshift(array.splice(index, 1)[0]);
232
+ }
233
+ return array;
234
+ }
235
+ /**
236
+ * 数组交换元素
237
+ * @param {Array} array 数组
238
+ * @param {Number} sourceIndex 原索引
239
+ * @param {Number} targetIndex 目标索引
240
+ * @returns {Array} 返回操作后的数组
241
+ */
242
+ function arraySwap(array, sourceIndex, targetIndex) {
243
+ if (sourceIndex < 0 || targetIndex < 0 || sourceIndex > array.length - 1 || targetIndex > array.length - 1) {
244
+ return array;
245
+ }
246
+ [array[targetIndex], array[sourceIndex]] = [array[sourceIndex], array[targetIndex]];
247
+ return array;
248
+ }
249
+ /**
250
+ * 数组排序
251
+ * @param {Array} array 数组
252
+ * @param {Number} mode 排序模式,参考常量集合中 数组常量,默认是升序
253
+ * @returns {Array} 返回操作后的数组
254
+ */
255
+ function arraySort(array, mode = sort.SORT.ASC) {
256
+ return array.sort((a, b) => {
257
+ switch (mode) {
258
+ // 升序
259
+ case sort.SORT.ASC:
260
+ return a - b;
261
+ // 降序
262
+ case sort.SORT.DESC:
263
+ return b - a;
264
+ // 随机
265
+ case sort.SORT.RANDOM:
266
+ return Math.random() - 0.5;
267
+ // 默认
268
+ default:
269
+ return array;
270
+ }
271
+ });
272
+ }
273
+ /**
274
+ * 数组属性混合排序
275
+ * @description 排序默认为asc升序
276
+ * @param {Array} array 数组
277
+ * @param {Array} props 排序的属性
278
+ * @returns {Array} 返回操作后的数组
279
+ */
280
+ function arraySortBy(array, props) {
281
+ return array.sort((a, b) => {
282
+ for (let item of props) {
283
+ // 排序配置
284
+ let prop = "", order = "asc";
285
+ if (index.isObject(item)) {
286
+ prop = item.prop;
287
+ order = item.order || "asc";
288
+ }
289
+ else {
290
+ prop = item;
291
+ order = "asc";
292
+ }
293
+ // 排序逻辑
294
+ if (a[prop] < b[prop]) {
295
+ return order === "asc" ? -1 : 1;
296
+ }
297
+ if (a[prop] > b[prop]) {
298
+ return order === "asc" ? 1 : -1;
299
+ }
300
+ }
301
+ return 0;
302
+ });
303
+ }
304
+ /**
305
+ * 数组元素去重
306
+ * @param {Array} array 数组
307
+ * @returns {Array} 返回操作后的数组
308
+ */
309
+ function arrayUnique(array) {
310
+ if (index.isEmpty(array))
311
+ return [];
312
+ return Array.from(new Set(array));
313
+ }
314
+ /**
315
+ * 数组打乱元素
316
+ * @description 可以适用于一些抽奖人员列表打乱顺序
317
+ * @param {Array} array 数组
318
+ * @returns {Array} 返回操作后的数组
319
+ */
320
+ function arrayShuffle(array) {
321
+ for (let i = 1; i < array.length; i++) {
322
+ const random = Math.floor(Math.random() * (i + 1));
323
+ [array[random], array[i]] = [array[i], array[random]];
324
+ }
325
+ return array;
326
+ }
327
+ /* 数组转换 */
328
+ /**
329
+ * 普通数组转树形结构
330
+ * @description 包含id和pid属性关系的一维数组,转为children的树形结构
331
+ * @param {Array} array 数组
332
+ * @param {Object} setting 配置项
333
+ * @returns {Array} 返回树形节点
334
+ */
335
+ function arrayToTree(array, setting = { key: "id", parentKey: "pid", childrenKey: "children" }) {
336
+ let key = setting.key, parentKey = setting.parentKey, childrenKey = setting.childrenKey;
337
+ // 数组或者key是否为空
338
+ if (!array || array.length === 0 || !key || key === "")
339
+ return [];
340
+ // 获得子节点方法
341
+ const nodeChildren = function (node, childrenKey, newChildren) {
342
+ if (!node) {
343
+ return null;
344
+ }
345
+ if (typeof newChildren !== "undefined") {
346
+ node[childrenKey] = newChildren;
347
+ }
348
+ return node[childrenKey];
349
+ };
350
+ // 声明变量
351
+ let result = [];
352
+ let tempMap = {};
353
+ for (let i = 0; i < array.length; i++) {
354
+ // 如果源数据数组中有children,则需要删除掉,否则会导致和之前的children合并
355
+ array[i][childrenKey] && delete array[i][childrenKey];
356
+ tempMap[array[i][key]] = array[i];
357
+ }
358
+ for (let i = 0; i < array.length; i++) {
359
+ let parent = tempMap[array[i][parentKey]];
360
+ if (parent && array[i][key] !== array[i][parentKey]) {
361
+ let children = nodeChildren(parent, childrenKey);
362
+ if (!children) {
363
+ children = nodeChildren(parent, childrenKey, []);
364
+ }
365
+ children.push(array[i]);
366
+ }
367
+ else {
368
+ result.push(array[i]);
369
+ }
370
+ }
371
+ // 返回结果
372
+ return result;
373
+ }
374
+ /**
375
+ * 树形结构转普通数组
376
+ * @param {Array} nodes 树形节点
377
+ * @param {Object} setting 配置项
378
+ * @returns {Array} 返回普通数组
379
+ */
380
+ function treeToArray(nodes, setting = { childrenKey: "children" }) {
381
+ let childrenKey = setting.childrenKey;
382
+ let result = [];
383
+ for (let node of nodes) {
384
+ // 删除掉多余空的children
385
+ if (node[childrenKey] && !node[childrenKey].length) {
386
+ delete node[childrenKey];
387
+ }
388
+ result.push(node);
389
+ // 继续执行
390
+ if (node[childrenKey] && node[childrenKey].length) {
391
+ let array = treeToArray(node[childrenKey], setting);
392
+ array && result.push(...array);
393
+ }
394
+ }
395
+ // 返回结果
396
+ return result;
397
+ }
398
+ /* 数组求并集,交集,差集等 */
399
+ /**
400
+ * 数组求并集
401
+ * @description 数组1 和 数组2 合并一起的元素集合
402
+ * @param {Array} array1 数组1
403
+ * @param {Array} array2 数组2
404
+ * @returns {Array} 返回数组
405
+ */
406
+ function arrayUnion(array1, array2) {
407
+ return [...new Set(array1.concat(array2))];
408
+ }
409
+ /**
410
+ * 数组求交集
411
+ * @description 数组1 和 数组2 相同的元素集合
412
+ * @param {Array} array1 数组1
413
+ * @param {Array} array2 数组2
414
+ * @returns {Array} 返回数组
415
+ */
416
+ function arrayIntersect(array1, array2) {
417
+ return [...new Set(array1)].filter((item) => array2.includes(item));
418
+ }
419
+ /**
420
+ * 数组求差集
421
+ * @description 数组1 中不包含 数组2 的元素集合
422
+ * @param {Array} array1 数组1
423
+ * @param {Array} array2 数组2
424
+ * @returns {Array} 返回数组
425
+ */
426
+ function arrayDifference(array1, array2) {
427
+ return [...new Set(array1)].filter((item) => !array2.includes(item));
428
+ }
429
+ /**
430
+ * 数组求补集
431
+ * @description 数组1 和 数组2 不相同的元素集合
432
+ * @param {Array} array1 数组1
433
+ * @param {Array} array2 数组2
434
+ * @returns {Array} 返回数组
435
+ */
436
+ function arrayComplement(array1, array2) {
437
+ return [
438
+ ...[...new Set(array1)].filter((item) => !array2.includes(item)),
439
+ ...[...new Set(array2)].filter((item) => !array1.includes(item)),
440
+ ];
441
+ }
442
+
443
+ exports.arrayAvg = arrayAvg;
444
+ exports.arrayBottom = arrayBottom;
445
+ exports.arrayComplement = arrayComplement;
446
+ exports.arrayCreate = arrayCreate;
447
+ exports.arrayDifference = arrayDifference;
448
+ exports.arrayDown = arrayDown;
449
+ exports.arrayEquals = arrayEquals;
450
+ exports.arrayInsert = arrayInsert;
451
+ exports.arrayInsertAfter = arrayInsertAfter;
452
+ exports.arrayInsertBefore = arrayInsertBefore;
453
+ exports.arrayIntersect = arrayIntersect;
454
+ exports.arrayMax = arrayMax;
455
+ exports.arrayMin = arrayMin;
456
+ exports.arrayRemove = arrayRemove;
457
+ exports.arrayRemoveAfter = arrayRemoveAfter;
458
+ exports.arrayRemoveBefore = arrayRemoveBefore;
459
+ exports.arrayShuffle = arrayShuffle;
460
+ exports.arraySort = arraySort;
461
+ exports.arraySortBy = arraySortBy;
462
+ exports.arraySum = arraySum;
463
+ exports.arraySwap = arraySwap;
464
+ exports.arrayToTree = arrayToTree;
465
+ exports.arrayTop = arrayTop;
466
+ exports.arrayUnion = arrayUnion;
467
+ exports.arrayUnique = arrayUnique;
468
+ exports.arrayUp = arrayUp;
469
+ exports.inArray = inArray;
470
+ exports.treeToArray = treeToArray;
@@ -0,0 +1,128 @@
1
+ 'use strict';
2
+
3
+ var index = require('../file/index.cjs');
4
+
5
+ /**
6
+ * 获得剪切板数据
7
+ * @description 获得的剪切板的数据是会返回多个可用的MIME类型,比如是纯文本就返回一个['text/plain'],是复制的html则会返回两个可用的['text/plain','text/html'],是复制的图片则是['image/png']
8
+ * @returns {Promise} 返回剪切板的数据,是数组形式,如果是文本则是字符串,否则是blob数据
9
+ */
10
+ function getClipboard() {
11
+ return new Promise((resolve, reject) => {
12
+ if (window.navigator.clipboard) {
13
+ window.navigator.clipboard.read().then((clipboardItems) => {
14
+ let list = [];
15
+ for (let item of clipboardItems) {
16
+ for (let type of item.types) {
17
+ item.getType(type).then(async (blob) => {
18
+ // 文本类型,可以直接输出为字符串
19
+ if (blob.type.includes("text")) {
20
+ let text = await index.blobToText(blob);
21
+ list.push({ type: blob.type, data: text });
22
+ }
23
+ // 图片和其他文件类型,返回blob对象
24
+ else {
25
+ list.push({ type: blob.type, data: blob });
26
+ }
27
+ });
28
+ }
29
+ }
30
+ resolve(list);
31
+ });
32
+ }
33
+ else {
34
+ console.warn("not support navigator clipboard!");
35
+ }
36
+ });
37
+ }
38
+ /**
39
+ * 获得剪切板文本
40
+ * @returns {Promise} 返回剪切板文本
41
+ */
42
+ function getClipboardText() {
43
+ return new Promise((resolve, reject) => {
44
+ if (window.navigator.clipboard) {
45
+ window.navigator.clipboard
46
+ .readText()
47
+ .then((text) => {
48
+ resolve(text);
49
+ })
50
+ .catch((error) => {
51
+ reject(error);
52
+ });
53
+ }
54
+ else {
55
+ console.warn("not support navigator clipboard!");
56
+ }
57
+ });
58
+ }
59
+ /**
60
+ * 设置剪切板数据
61
+ * @description 可以设置文本或者blob类型的数据
62
+ * @param {String,Blob} data 写入的数据,可以是文本或blob数据
63
+ * @returns {Promise} 返回结果
64
+ */
65
+ function setClipboard(data) {
66
+ return new Promise((resolve, reject) => {
67
+ // 现代浏览器
68
+ if (window.navigator.clipboard) {
69
+ let clipboardItem = null;
70
+ // 是文本类型
71
+ if (typeof data === "string") {
72
+ let blob = new Blob([data], { type: "text/plain" });
73
+ clipboardItem = new window.ClipboardItem({
74
+ ["text/plain"]: blob,
75
+ });
76
+ }
77
+ // 其他文件类型
78
+ else {
79
+ clipboardItem = new window.ClipboardItem({ [data.type]: data });
80
+ }
81
+ // 写入到剪切板中
82
+ window.navigator.clipboard.write([clipboardItem]).then((success) => {
83
+ resolve(true);
84
+ }, (failed) => {
85
+ reject(false);
86
+ });
87
+ }
88
+ else {
89
+ console.warn("not support navigator clipboard!");
90
+ }
91
+ });
92
+ }
93
+ /**
94
+ * 设置剪切板文本
95
+ * @param {String} text 写入的文本
96
+ * @returns {Promise} 返回结果
97
+ */
98
+ function setClipboardText(text) {
99
+ return new Promise((resolve, reject) => {
100
+ // 现代浏览器
101
+ if (window.navigator.clipboard) {
102
+ window.navigator.clipboard.writeText(text).then((success) => {
103
+ resolve(true);
104
+ }, (failed) => {
105
+ reject(false);
106
+ });
107
+ }
108
+ else {
109
+ console.warn("not support navigator clipboard!");
110
+ }
111
+ });
112
+ }
113
+ /**
114
+ * 清空剪切板
115
+ * @returns {Promise} 返回结果
116
+ */
117
+ function clearClipboard() {
118
+ return new Promise(async (resolve, reject) => {
119
+ await setClipboardText("");
120
+ resolve(true);
121
+ });
122
+ }
123
+
124
+ exports.clearClipboard = clearClipboard;
125
+ exports.getClipboard = getClipboard;
126
+ exports.getClipboardText = getClipboardText;
127
+ exports.setClipboard = setClipboard;
128
+ exports.setClipboardText = setClipboardText;