@ivujs/i-utils 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/README.md +40 -42
  2. package/dist/cjs/ID-card/index.cjs +21 -13
  3. package/dist/cjs/array/index.cjs +40 -34
  4. package/dist/cjs/clipboard/index.cjs +14 -10
  5. package/dist/cjs/color/index.cjs +73 -59
  6. package/dist/cjs/cookie/index.cjs +16 -13
  7. package/dist/cjs/crypto/base64/base64.cjs +398 -206
  8. package/dist/cjs/crypto/base64/index.cjs +58 -35
  9. package/dist/cjs/crypto/md5/index.cjs +33 -8
  10. package/dist/cjs/crypto/md5/md5.cjs +298 -844
  11. package/dist/cjs/crypto/sha256/index.cjs +95 -0
  12. package/dist/cjs/crypto/sha256/sha256.cjs +557 -0
  13. package/dist/cjs/crypto/sm3/index.cjs +27 -0
  14. package/dist/cjs/crypto/sm3/sm3.cjs +200 -0
  15. package/dist/cjs/crypto/sm4/index.cjs +101 -0
  16. package/dist/cjs/crypto/sm4/sm4.cjs +498 -0
  17. package/dist/cjs/date/index.cjs +379 -335
  18. package/dist/cjs/desensitized/index.cjs +21 -18
  19. package/dist/cjs/device/index.cjs +33 -30
  20. package/dist/cjs/dom/index.cjs +26 -23
  21. package/dist/cjs/file/index.cjs +51 -41
  22. package/dist/cjs/function/index.cjs +22 -19
  23. package/dist/cjs/id/index.cjs +6 -2
  24. package/dist/cjs/index.cjs +108 -127
  25. package/dist/cjs/keycode/index.cjs +9 -12
  26. package/dist/cjs/math/index.cjs +113 -81
  27. package/dist/cjs/number/index.cjs +10 -7
  28. package/dist/cjs/object/index.cjs +77 -30
  29. package/dist/cjs/pagination/index.cjs +25 -10
  30. package/dist/cjs/random/index.cjs +8 -5
  31. package/dist/cjs/regexp/index.cjs +23 -20
  32. package/dist/cjs/storage/index.cjs +4 -1
  33. package/dist/cjs/storage/localStorage.cjs +5 -5
  34. package/dist/cjs/storage/sessionStorage.cjs +6 -6
  35. package/dist/cjs/string/index.cjs +66 -63
  36. package/dist/cjs/url/index.cjs +83 -80
  37. package/dist/cjs/validate/index.cjs +122 -106
  38. package/dist/es/ID-card/index.d.ts +19 -14
  39. package/dist/es/ID-card/index.mjs +22 -14
  40. package/dist/es/array/index.d.ts +56 -50
  41. package/dist/es/array/index.mjs +40 -34
  42. package/dist/es/clipboard/index.d.ts +10 -7
  43. package/dist/es/clipboard/index.mjs +14 -10
  44. package/dist/es/color/index.d.ts +28 -25
  45. package/dist/es/color/index.mjs +73 -59
  46. package/dist/es/constants/date.d.ts +4 -174
  47. package/dist/es/constants/id-card.d.ts +4 -43
  48. package/dist/es/constants/index.d.ts +11 -7
  49. package/dist/es/constants/keycode.d.ts +1 -103
  50. package/dist/es/constants/lang.d.ts +4 -4
  51. package/dist/es/constants/math.d.ts +4 -4
  52. package/dist/es/constants/regexp.d.ts +4 -24
  53. package/dist/es/constants/sort.d.ts +4 -5
  54. package/dist/es/cookie/index.d.ts +13 -13
  55. package/dist/es/cookie/index.mjs +16 -13
  56. package/dist/es/crypto/base64/base64.d.ts +8 -5
  57. package/dist/es/crypto/base64/base64.mjs +393 -204
  58. package/dist/es/crypto/base64/index.d.ts +41 -24
  59. package/dist/es/crypto/base64/index.mjs +53 -32
  60. package/dist/es/crypto/index.d.ts +8 -8
  61. package/dist/es/crypto/md5/index.d.ts +20 -7
  62. package/dist/es/crypto/md5/index.mjs +32 -9
  63. package/dist/es/crypto/md5/md5.d.ts +9 -142
  64. package/dist/es/crypto/md5/md5.mjs +299 -844
  65. package/dist/es/crypto/sha256/index.d.ts +52 -0
  66. package/dist/es/crypto/sha256/index.mjs +86 -0
  67. package/dist/es/crypto/sha256/sha256.d.ts +82 -0
  68. package/dist/es/crypto/sha256/sha256.mjs +548 -0
  69. package/dist/es/crypto/sm3/index.d.ts +13 -0
  70. package/dist/es/crypto/sm3/index.mjs +24 -0
  71. package/dist/es/crypto/sm3/sm3.d.ts +3 -0
  72. package/dist/es/crypto/sm3/sm3.mjs +197 -0
  73. package/dist/es/crypto/sm4/index.d.ts +56 -0
  74. package/dist/es/crypto/sm4/index.mjs +95 -0
  75. package/dist/es/crypto/sm4/sm4.d.ts +48 -0
  76. package/dist/es/crypto/sm4/sm4.mjs +490 -0
  77. package/dist/es/date/index.d.ts +236 -175
  78. package/dist/es/date/index.mjs +378 -335
  79. package/dist/es/desensitized/index.d.ts +26 -23
  80. package/dist/es/desensitized/index.mjs +21 -18
  81. package/dist/es/device/index.d.ts +31 -25
  82. package/dist/es/device/index.mjs +33 -30
  83. package/dist/es/dom/index.d.ts +32 -29
  84. package/dist/es/dom/index.mjs +26 -23
  85. package/dist/es/file/index.d.ts +30 -30
  86. package/dist/es/file/index.mjs +51 -41
  87. package/dist/es/function/index.d.ts +10 -7
  88. package/dist/es/function/index.mjs +22 -19
  89. package/dist/es/id/index.d.ts +3 -0
  90. package/dist/es/id/index.mjs +6 -2
  91. package/dist/es/index.d.ts +24 -25
  92. package/dist/es/index.mjs +6 -23
  93. package/dist/es/keycode/index.d.ts +6 -6
  94. package/dist/es/keycode/index.mjs +9 -12
  95. package/dist/es/math/index.d.ts +37 -37
  96. package/dist/es/math/index.mjs +113 -81
  97. package/dist/es/number/index.d.ts +7 -7
  98. package/dist/es/number/index.mjs +10 -7
  99. package/dist/es/object/index.d.ts +20 -19
  100. package/dist/es/object/index.mjs +77 -30
  101. package/dist/es/pagination/index.d.ts +39 -6
  102. package/dist/es/pagination/index.mjs +25 -10
  103. package/dist/es/random/index.d.ts +10 -7
  104. package/dist/es/random/index.mjs +8 -5
  105. package/dist/es/regexp/index.d.ts +30 -30
  106. package/dist/es/regexp/index.mjs +23 -20
  107. package/dist/es/storage/index.d.ts +10 -4
  108. package/dist/es/storage/index.mjs +4 -1
  109. package/dist/es/storage/localStorage.d.ts +9 -9
  110. package/dist/es/storage/localStorage.mjs +5 -5
  111. package/dist/es/storage/sessionStorage.d.ts +9 -9
  112. package/dist/es/storage/sessionStorage.mjs +6 -6
  113. package/dist/es/string/index.d.ts +62 -59
  114. package/dist/es/string/index.mjs +66 -63
  115. package/dist/es/url/index.d.ts +65 -65
  116. package/dist/es/url/index.mjs +83 -80
  117. package/dist/es/validate/index.d.ts +83 -80
  118. package/dist/es/validate/index.mjs +122 -106
  119. package/dist/index.d.ts +2355 -2803
  120. package/dist/lib/index.full.umd.js +3297 -9474
  121. package/dist/lib/index.full.umd.min.js +2 -64
  122. package/dist/lib/index.full.umd.min.js.map +1 -1
  123. package/dist/resolver/auto-imports.cjs +38 -31
  124. package/dist/resolver/auto-imports.mjs +38 -31
  125. package/dist/resolver/index.cjs +1 -2
  126. package/dist/resolver/index.d.ts +1 -1
  127. package/dist/resolver/index.mjs +1 -2
  128. package/package.json +96 -90
  129. package/dist/cjs/crypto/aes/aes.cjs +0 -480
  130. package/dist/cjs/crypto/aes/index.cjs +0 -27
  131. package/dist/cjs/crypto/base32/base32.cjs +0 -357
  132. package/dist/cjs/crypto/base32/index.cjs +0 -41
  133. package/dist/cjs/crypto/des/des.cjs +0 -257
  134. package/dist/cjs/crypto/des/index.cjs +0 -28
  135. package/dist/cjs/crypto/sha/sha1/index.cjs +0 -24
  136. package/dist/cjs/crypto/sha/sha1/sha1.cjs +0 -529
  137. package/dist/cjs/crypto/sha/sha256/index.cjs +0 -43
  138. package/dist/cjs/crypto/sha/sha256/sha256.cjs +0 -595
  139. package/dist/cjs/crypto/sha/sha3/index.cjs +0 -41
  140. package/dist/cjs/crypto/sha/sha3/sha3.cjs +0 -624
  141. package/dist/cjs/crypto/sha/sha512/index.cjs +0 -81
  142. package/dist/cjs/crypto/sha/sha512/sha512.cjs +0 -950
  143. package/dist/cjs/crypto/sm/lib/asn1.cjs +0 -149
  144. package/dist/cjs/crypto/sm/lib/ec.cjs +0 -315
  145. package/dist/cjs/crypto/sm/lib/jsbn.cjs +0 -1608
  146. package/dist/cjs/crypto/sm/lib/sm3.cjs +0 -158
  147. package/dist/cjs/crypto/sm/lib/utils.cjs +0 -170
  148. package/dist/cjs/crypto/sm/sm2/index.cjs +0 -112
  149. package/dist/cjs/crypto/sm/sm2/sm2.cjs +0 -231
  150. package/dist/cjs/crypto/sm/sm3/index.cjs +0 -15
  151. package/dist/cjs/crypto/sm/sm3/sm3.cjs +0 -93
  152. package/dist/cjs/crypto/sm/sm4/index.cjs +0 -27
  153. package/dist/cjs/crypto/sm/sm4/sm4.cjs +0 -327
  154. package/dist/cjs/crypto/tea/index.cjs +0 -25
  155. package/dist/cjs/crypto/tea/tea.cjs +0 -187
  156. package/dist/cjs/weapp/index.cjs +0 -142
  157. package/dist/es/crypto/aes/aes.d.ts +0 -156
  158. package/dist/es/crypto/aes/aes.mjs +0 -478
  159. package/dist/es/crypto/aes/index.d.ts +0 -16
  160. package/dist/es/crypto/aes/index.mjs +0 -24
  161. package/dist/es/crypto/base32/base32.d.ts +0 -3
  162. package/dist/es/crypto/base32/base32.mjs +0 -353
  163. package/dist/es/crypto/base32/index.d.ts +0 -24
  164. package/dist/es/crypto/base32/index.mjs +0 -36
  165. package/dist/es/crypto/des/des.d.ts +0 -52
  166. package/dist/es/crypto/des/des.mjs +0 -255
  167. package/dist/es/crypto/des/index.d.ts +0 -14
  168. package/dist/es/crypto/des/index.mjs +0 -25
  169. package/dist/es/crypto/sha/index.d.ts +0 -4
  170. package/dist/es/crypto/sha/sha1/index.d.ts +0 -13
  171. package/dist/es/crypto/sha/sha1/index.mjs +0 -21
  172. package/dist/es/crypto/sha/sha1/sha1.d.ts +0 -2
  173. package/dist/es/crypto/sha/sha1/sha1.mjs +0 -526
  174. package/dist/es/crypto/sha/sha256/index.d.ts +0 -26
  175. package/dist/es/crypto/sha/sha256/index.mjs +0 -38
  176. package/dist/es/crypto/sha/sha256/sha256.d.ts +0 -4
  177. package/dist/es/crypto/sha/sha256/sha256.mjs +0 -590
  178. package/dist/es/crypto/sha/sha3/index.d.ts +0 -24
  179. package/dist/es/crypto/sha/sha3/index.mjs +0 -36
  180. package/dist/es/crypto/sha/sha3/sha3.d.ts +0 -4
  181. package/dist/es/crypto/sha/sha3/sha3.mjs +0 -619
  182. package/dist/es/crypto/sha/sha512/index.d.ts +0 -52
  183. package/dist/es/crypto/sha/sha512/index.mjs +0 -72
  184. package/dist/es/crypto/sha/sha512/sha512.d.ts +0 -8
  185. package/dist/es/crypto/sha/sha512/sha512.mjs +0 -941
  186. package/dist/es/crypto/sm/index.d.ts +0 -3
  187. package/dist/es/crypto/sm/lib/asn1.d.ts +0 -12
  188. package/dist/es/crypto/sm/lib/asn1.mjs +0 -146
  189. package/dist/es/crypto/sm/lib/ec.d.ts +0 -126
  190. package/dist/es/crypto/sm/lib/ec.mjs +0 -312
  191. package/dist/es/crypto/sm/lib/jsbn.d.ts +0 -198
  192. package/dist/es/crypto/sm/lib/jsbn.mjs +0 -1605
  193. package/dist/es/crypto/sm/lib/sm3.d.ts +0 -5
  194. package/dist/es/crypto/sm/lib/sm3.mjs +0 -155
  195. package/dist/es/crypto/sm/lib/utils.d.ts +0 -53
  196. package/dist/es/crypto/sm/lib/utils.mjs +0 -158
  197. package/dist/es/crypto/sm/sm2/index.d.ts +0 -71
  198. package/dist/es/crypto/sm/sm2/index.mjs +0 -101
  199. package/dist/es/crypto/sm/sm2/sm2.d.ts +0 -34
  200. package/dist/es/crypto/sm/sm2/sm2.mjs +0 -220
  201. package/dist/es/crypto/sm/sm3/index.d.ts +0 -7
  202. package/dist/es/crypto/sm/sm3/index.mjs +0 -13
  203. package/dist/es/crypto/sm/sm3/sm3.d.ts +0 -1
  204. package/dist/es/crypto/sm/sm3/sm3.mjs +0 -91
  205. package/dist/es/crypto/sm/sm4/index.d.ts +0 -16
  206. package/dist/es/crypto/sm/sm4/index.mjs +0 -24
  207. package/dist/es/crypto/sm/sm4/sm4.d.ts +0 -2
  208. package/dist/es/crypto/sm/sm4/sm4.mjs +0 -324
  209. package/dist/es/crypto/tea/index.d.ts +0 -14
  210. package/dist/es/crypto/tea/index.mjs +0 -22
  211. package/dist/es/crypto/tea/tea.d.ts +0 -69
  212. package/dist/es/crypto/tea/tea.mjs +0 -185
  213. package/dist/es/weapp/index.d.ts +0 -57
  214. package/dist/es/weapp/index.mjs +0 -131
@@ -1,118 +1,118 @@
1
1
  /**
2
2
  * 获得协议名
3
- * @param {String} url url地址,默认当前url地址
4
- * @returns {String} 返回协议名
3
+ * @param {string} url url地址,默认当前url地址
4
+ * @returns {string} 返回协议名
5
5
  */
6
- export function getProtocol(url?: string): string;
6
+ export declare function getProtocol(url?: string): string | undefined;
7
7
  /**
8
8
  * 获得主机地址
9
- * @param {String} url url地址,默认当前url地址
10
- * @returns {String} 返回主机地址
9
+ * @param {string} url url地址,默认当前url地址
10
+ * @returns {string} 返回主机地址
11
11
  */
12
- export function getHost(url?: string): string;
12
+ export declare function getHost(url?: string): string | undefined;
13
13
  /**
14
14
  * 获得主机名称
15
- * @param {String} url url地址,默认当前url地址
16
- * @returns {String} 返回主机名称
15
+ * @param {string} url url地址,默认当前url地址
16
+ * @returns {string} 返回主机名称
17
17
  */
18
- export function getHostName(url?: string): string;
18
+ export declare function getHostName(url?: string): string | undefined;
19
19
  /**
20
20
  * 获得端口号
21
- * @param {String} url url地址,默认当前url地址
22
- * @returns {String} 返回端口号
21
+ * @param {string} url url地址,默认当前url地址
22
+ * @returns {string} 返回端口号
23
23
  */
24
- export function getPort(url?: string): string;
24
+ export declare function getPort(url?: string): string | undefined;
25
25
  /**
26
26
  * 获得地址路径
27
- * @param {String} url url地址,默认当前url地址
28
- * @returns {String} 返回地址路径
27
+ * @param {string} url url地址,默认当前url地址
28
+ * @returns {string} 返回地址路径
29
29
  */
30
- export function getUrlPath(url?: string): string;
30
+ export declare function getUrlPath(url?: string): string | undefined;
31
31
  /**
32
32
  * 获得hash字符串
33
- * @param {String} url url地址,默认当前url地址
34
- * @returns {String} 返回hash字符串
33
+ * @param {string} url url地址,默认当前url地址
34
+ * @returns {string} 返回hash字符串
35
35
  */
36
- export function getUrlHash(url?: string): string;
36
+ export declare function getUrlHash(url?: string): string | undefined;
37
37
  /**
38
38
  * 获得查询参数字符串
39
- * @param {String} url url地址,默认当前url地址
40
- * @returns {String} 返回查询参数字符串
39
+ * @param {string} url url地址,默认当前url地址
40
+ * @returns {string} 返回查询参数字符串
41
41
  */
42
- export function getSearchString(url?: string): string;
42
+ export declare function getSearchString(url?: string): string | undefined;
43
43
  /**
44
44
  * 查询参数字符串中是否包含某个参数
45
- * @param {String} url url地址,默认当前url地址
46
- * @param {String} name 参数名
47
- * @returns {Boolean} 返回结果
45
+ * @param {string} url url地址,默认当前url地址
46
+ * @param {string} name 参数名
47
+ * @returns {boolean} 返回结果
48
48
  */
49
- export function hasSearchParam(url: string, name: string): boolean;
49
+ export declare function hasSearchParam(url: string | undefined, name: string): boolean;
50
50
  /**
51
51
  * 查询参数字符串中获得某个参数的值
52
- * @param {String} url url地址,默认当前url地址
53
- * @param {String} name 参数名
54
- * @returns {String} 返回查询到的值
52
+ * @param {string} url url地址,默认当前url地址
53
+ * @param {string} name 参数名
54
+ * @returns {string} 返回查询到的值
55
55
  */
56
- export function getSearchParam(url?: string, name?: string): string;
56
+ export declare function getSearchParam(url?: string, name?: string): string | undefined;
57
57
  /**
58
58
  * 查询参数字符串中设置某个参数的值
59
- * @param {String} name 参数名
60
- * @param {String,Number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
61
- * @param {String} url url地址,默认当前url地址
62
- * @returns {String} 返回查询参数字符串
59
+ * @param {string} name 参数名
60
+ * @param {string|number|Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
61
+ * @param {string} url url地址,默认当前url地址
62
+ * @returns {string} 返回查询参数字符串
63
63
  */
64
- export function setSearchParam(url: string, name: string, value: any): string;
64
+ export declare function setSearchParam(url: string | undefined, name: string | undefined, value: string | number | number[] | string[]): string;
65
65
  /**
66
66
  * 查询参数字符串转为对象
67
- * @param {String} url url地址,默认当前url地址
67
+ * @param {string} url url地址,默认当前url地址
68
68
  * @returns {Object} 返回参数对象
69
69
  */
70
- export function parseSearchParam(url?: string): Object;
70
+ export declare function parseSearchParam(url?: string): Record<string, any>;
71
71
  /**
72
72
  * 对象转为查询参数字符串
73
73
  * @param {Object} params 参数对象
74
- * @param {String} url url地址,如果不为空,则会拼接好查询参数字符串的url地址
75
- * @returns {String,Object} 返回参数字符串或参数对象
74
+ * @param {string} url url地址,如果不为空,则会拼接好查询参数字符串的url地址
75
+ * @returns {string} 返回参数字符串
76
76
  */
77
- export function stringifySearchParam(params: Object, url?: string): string;
77
+ export declare function stringifySearchParam(params: Record<string, any>, url?: string): string;
78
78
  /**
79
79
  * 查询参数字符串中在最前面追加新参数和值
80
- * @param {String} url url地址,默认当前url地址
81
- * @param {String} name 参数名
82
- * @param {String,Number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
83
- * @returns {String} 返回查询参数字符串
80
+ * @param {string} url url地址,默认当前url地址
81
+ * @param {string} name 参数名
82
+ * @param {string|number|Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
83
+ * @returns {string} 返回查询参数字符串
84
84
  */
85
- export function prependSearchParam(url: string, name: string, value: any): string;
85
+ export declare function prependSearchParam(url: string | undefined, name: string, value: string | number | number[] | string[]): string;
86
86
  /**
87
87
  * 查询参数字符串中在某个参数的前面追加新参数和值
88
- * @param {String} url url地址,默认当前url地址
89
- * @param {String} name 参数名
90
- * @param {String,Number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
91
- * @param {String} beforeParam 在前面追加参数的名称
92
- * @returns {String} 返回查询参数字符串
88
+ * @param {string} url url地址,默认当前url地址
89
+ * @param {string} name 参数名
90
+ * @param {string|number|Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
91
+ * @param {string} beforeParam 在前面追加参数的名称
92
+ * @returns {string} 返回查询参数字符串
93
93
  */
94
- export function prependToSearchParam(url: string, beforeParam: string, name: string, value: any): string;
94
+ export declare function prependToSearchParam(url: string | undefined, beforeParam: string, name: string, value: string | number | number[] | string[]): string;
95
95
  /**
96
96
  * 查询参数字符串中在最后面追加新参数和值
97
- * @param {String} url url地址,默认当前url地址
98
- * @param {String} name 参数名
99
- * @param {String,Number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
100
- * @returns {String} 返回查询参数字符串
97
+ * @param {string} url url地址,默认当前url地址
98
+ * @param {string} name 参数名
99
+ * @param {string,number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
100
+ * @returns {string} 返回查询参数字符串
101
101
  */
102
- export function appendSearchParam(url: string, name: string, value: any): string;
102
+ export declare function appendSearchParam(url: string | undefined, name: string, value: string | number | number[] | string[]): string;
103
103
  /**
104
104
  * 查询参数字符串中在某个参数的后面追加新参数和值
105
- * @param {String} url url地址,默认当前url地址
106
- * @param {String} name 参数名
107
- * @param {String,Number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
108
- * @param {String} afterName 在后面追加参数的名称
109
- * @returns {String} 返回查询参数字符串
105
+ * @param {string} url url地址,默认当前url地址
106
+ * @param {string} name 参数名
107
+ * @param {string,number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
108
+ * @param {string} afterName 在后面追加参数的名称
109
+ * @returns {string} 返回查询参数字符串
110
110
  */
111
- export function appendToSearchParam(url: string, afterName: string, name: string, value: any): string;
111
+ export declare function appendToSearchParam(url: string | undefined, afterName: string, name: string, value: string | number | number[] | string[]): string;
112
112
  /**
113
113
  * 查询参数字符串中移除某个参数和值
114
- * @param {String} url url地址,默认当前url地址
115
- * @param {String} name 参数名
116
- * @returns {String} 返回查询参数字符串
114
+ * @param {string} url url地址,默认当前url地址
115
+ * @param {string} name 参数名
116
+ * @returns {string} 返回查询参数字符串
117
117
  */
118
- export function removeSearchParam(url: string, name: string): string;
118
+ export declare function removeSearchParam(url: string | undefined, name: string): string;
@@ -2,132 +2,135 @@ import { REGEXP } from '../constants/regexp.mjs';
2
2
  import { isArray } from '../validate/index.mjs';
3
3
  import { arrayInsertBefore, arrayInsertAfter } from '../array/index.mjs';
4
4
 
5
+ /**
6
+ * @module 浏览器Url
7
+ */
5
8
  /**
6
9
  * 获得协议名
7
- * @param {String} url url地址,默认当前url地址
8
- * @returns {String} 返回协议名
10
+ * @param {string} url url地址,默认当前url地址
11
+ * @returns {string} 返回协议名
9
12
  */
10
13
  function getProtocol(url = window.location.href) {
11
- let match = url.match(REGEXP.URL);
14
+ const match = url.match(REGEXP.URL);
12
15
  if (match) {
13
16
  return match[1] || "";
14
17
  }
15
18
  }
16
19
  /**
17
20
  * 获得主机地址
18
- * @param {String} url url地址,默认当前url地址
19
- * @returns {String} 返回主机地址
21
+ * @param {string} url url地址,默认当前url地址
22
+ * @returns {string} 返回主机地址
20
23
  */
21
24
  function getHost(url = window.location.href) {
22
- let match = url.match(REGEXP.URL);
25
+ const match = url.match(REGEXP.URL);
23
26
  if (match) {
24
27
  return (match[2] || "") + (match[3] ? ":" + match[3] : "");
25
28
  }
26
29
  }
27
30
  /**
28
31
  * 获得主机名称
29
- * @param {String} url url地址,默认当前url地址
30
- * @returns {String} 返回主机名称
32
+ * @param {string} url url地址,默认当前url地址
33
+ * @returns {string} 返回主机名称
31
34
  */
32
35
  function getHostName(url = window.location.href) {
33
- let match = url.match(REGEXP.URL);
36
+ const match = url.match(REGEXP.URL);
34
37
  if (match) {
35
38
  return match[2] || "";
36
39
  }
37
40
  }
38
41
  /**
39
42
  * 获得端口号
40
- * @param {String} url url地址,默认当前url地址
41
- * @returns {String} 返回端口号
43
+ * @param {string} url url地址,默认当前url地址
44
+ * @returns {string} 返回端口号
42
45
  */
43
46
  function getPort(url = window.location.href) {
44
- let match = url.match(REGEXP.URL);
47
+ const match = url.match(REGEXP.URL);
45
48
  if (match) {
46
49
  return match[3] || "";
47
50
  }
48
51
  }
49
52
  /**
50
53
  * 获得地址路径
51
- * @param {String} url url地址,默认当前url地址
52
- * @returns {String} 返回地址路径
54
+ * @param {string} url url地址,默认当前url地址
55
+ * @returns {string} 返回地址路径
53
56
  */
54
57
  function getUrlPath(url = window.location.href) {
55
- let match = url.match(REGEXP.URL);
58
+ const match = url.match(REGEXP.URL);
56
59
  if (match) {
57
60
  return match[4] || "";
58
61
  }
59
62
  }
60
63
  /**
61
64
  * 获得hash字符串
62
- * @param {String} url url地址,默认当前url地址
63
- * @returns {String} 返回hash字符串
65
+ * @param {string} url url地址,默认当前url地址
66
+ * @returns {string} 返回hash字符串
64
67
  */
65
68
  function getUrlHash(url = window.location.href) {
66
- let match = url.match(REGEXP.URL);
69
+ const match = url.match(REGEXP.URL);
67
70
  if (match) {
68
71
  return match[6] || "";
69
72
  }
70
73
  }
71
74
  /**
72
75
  * 获得查询参数字符串
73
- * @param {String} url url地址,默认当前url地址
74
- * @returns {String} 返回查询参数字符串
76
+ * @param {string} url url地址,默认当前url地址
77
+ * @returns {string} 返回查询参数字符串
75
78
  */
76
79
  function getSearchString(url = window.location.href) {
77
- let match = url.match(REGEXP.URL);
80
+ const match = url.match(REGEXP.URL);
78
81
  if (match) {
79
82
  return match[5] || "";
80
83
  }
81
84
  }
82
85
  /**
83
86
  * 查询参数字符串中是否包含某个参数
84
- * @param {String} url url地址,默认当前url地址
85
- * @param {String} name 参数名
86
- * @returns {Boolean} 返回结果
87
+ * @param {string} url url地址,默认当前url地址
88
+ * @param {string} name 参数名
89
+ * @returns {boolean} 返回结果
87
90
  */
88
91
  function hasSearchParam(url = window.location.href, name) {
89
- let params = parseSearchParam(url);
92
+ const params = parseSearchParam(url);
90
93
  return params[name] !== undefined;
91
94
  }
92
95
  /**
93
96
  * 查询参数字符串中获得某个参数的值
94
- * @param {String} url url地址,默认当前url地址
95
- * @param {String} name 参数名
96
- * @returns {String} 返回查询到的值
97
+ * @param {string} url url地址,默认当前url地址
98
+ * @param {string} name 参数名
99
+ * @returns {string} 返回查询到的值
97
100
  */
98
101
  function getSearchParam(url = window.location.href, name = "") {
99
102
  name = name.replace(/[[\]]/g, "\\$&");
100
- url = getSearchString(url);
101
- let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
102
- let match = url.substring(0).match(reg);
103
+ url = getSearchString(url) || "";
104
+ const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
105
+ const match = url.substring(0).match(reg);
103
106
  if (match) {
104
107
  return decodeURIComponent(match[2]);
105
108
  }
106
109
  }
107
110
  /**
108
111
  * 查询参数字符串中设置某个参数的值
109
- * @param {String} name 参数名
110
- * @param {String,Number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
111
- * @param {String} url url地址,默认当前url地址
112
- * @returns {String} 返回查询参数字符串
112
+ * @param {string} name 参数名
113
+ * @param {string|number|Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
114
+ * @param {string} url url地址,默认当前url地址
115
+ * @returns {string} 返回查询参数字符串
113
116
  */
114
117
  function setSearchParam(url = window.location.href, name = "", value) {
115
- let params = parseSearchParam(url);
118
+ const params = parseSearchParam(url);
116
119
  params[name] = value;
117
120
  // 返回替换后的url
118
121
  return url.replace(/(\?.+?)(?=#|$)/, "?" + stringifySearchParam(params));
119
122
  }
120
123
  /**
121
124
  * 查询参数字符串转为对象
122
- * @param {String} url url地址,默认当前url地址
125
+ * @param {string} url url地址,默认当前url地址
123
126
  * @returns {Object} 返回参数对象
124
127
  */
125
128
  function parseSearchParam(url = window.location.href) {
126
- let searchString = getSearchString(url);
127
- let searchArr = searchString.split("&");
128
- let param = {};
129
+ const searchString = getSearchString(url) || "";
130
+ const searchArr = searchString.split("&");
131
+ const param = {};
129
132
  for (let i = 0; i < searchArr.length; i++) {
130
- let arr = searchArr[i].split("=");
133
+ const arr = searchArr[i].split("=");
131
134
  param[decodeURIComponent(arr[0])] = decodeURIComponent(arr[1] || "");
132
135
  }
133
136
  return param;
@@ -135,15 +138,15 @@ function parseSearchParam(url = window.location.href) {
135
138
  /**
136
139
  * 对象转为查询参数字符串
137
140
  * @param {Object} params 参数对象
138
- * @param {String} url url地址,如果不为空,则会拼接好查询参数字符串的url地址
139
- * @returns {String,Object} 返回参数字符串或参数对象
141
+ * @param {string} url url地址,如果不为空,则会拼接好查询参数字符串的url地址
142
+ * @returns {string} 返回参数字符串
140
143
  */
141
- function stringifySearchParam(params, url = undefined) {
144
+ function stringifySearchParam(params, url = "") {
142
145
  if (typeof params !== "object")
143
146
  return params;
144
- let arr = [];
145
- for (let key in params) {
146
- let value = params[key];
147
+ const arr = [];
148
+ for (const key in params) {
149
+ const value = params[key];
147
150
  if (isArray(value)) {
148
151
  for (let i = 0; i < value.length; ++i) {
149
152
  arr.push(encodeURIComponent(key + "[" + i + "]") + "=" + encodeURIComponent(value[i]));
@@ -163,15 +166,15 @@ function stringifySearchParam(params, url = undefined) {
163
166
  }
164
167
  /**
165
168
  * 查询参数字符串中在最前面追加新参数和值
166
- * @param {String} url url地址,默认当前url地址
167
- * @param {String} name 参数名
168
- * @param {String,Number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
169
- * @returns {String} 返回查询参数字符串
169
+ * @param {string} url url地址,默认当前url地址
170
+ * @param {string} name 参数名
171
+ * @param {string|number|Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
172
+ * @returns {string} 返回查询参数字符串
170
173
  */
171
174
  function prependSearchParam(url = window.location.href, name, value) {
172
- let searchArr = getSearchString(url).split("&");
173
- if (isArray(value)) {
174
- let arr = [];
175
+ const searchArr = (getSearchString(url) || "").split("&") || [];
176
+ if (Array.isArray(value)) {
177
+ const arr = [];
175
178
  for (let i = 0; i < value.length; i++) {
176
179
  arr.push(`${encodeURIComponent(name)}[${i}]=${encodeURIComponent(value[i])}`);
177
180
  }
@@ -184,53 +187,53 @@ function prependSearchParam(url = window.location.href, name, value) {
184
187
  }
185
188
  /**
186
189
  * 查询参数字符串中在某个参数的前面追加新参数和值
187
- * @param {String} url url地址,默认当前url地址
188
- * @param {String} name 参数名
189
- * @param {String,Number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
190
- * @param {String} beforeParam 在前面追加参数的名称
191
- * @returns {String} 返回查询参数字符串
190
+ * @param {string} url url地址,默认当前url地址
191
+ * @param {string} name 参数名
192
+ * @param {string|number|Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
193
+ * @param {string} beforeParam 在前面追加参数的名称
194
+ * @returns {string} 返回查询参数字符串
192
195
  */
193
196
  function prependToSearchParam(url = window.location.href, beforeParam, name, value) {
194
- let searchArr = getSearchString(url).split("&");
195
- let beforeIndex = searchArr.findIndex((v) => v.includes(beforeParam));
196
- let beforeArr = arrayInsertBefore(searchArr, beforeIndex, `${name}=${value}`);
197
+ const searchArr = (getSearchString(url) || "").split("&");
198
+ const beforeIndex = searchArr.findIndex((v) => v.includes(beforeParam));
199
+ const beforeArr = arrayInsertBefore(searchArr, beforeIndex, `${name}=${value}`);
197
200
  return url.replace(/(\?.+?)(?=#|$)/, "?" + beforeArr.join("&"));
198
201
  }
199
202
  /**
200
203
  * 查询参数字符串中在最后面追加新参数和值
201
- * @param {String} url url地址,默认当前url地址
202
- * @param {String} name 参数名
203
- * @param {String,Number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
204
- * @returns {String} 返回查询参数字符串
204
+ * @param {string} url url地址,默认当前url地址
205
+ * @param {string} name 参数名
206
+ * @param {string,number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
207
+ * @returns {string} 返回查询参数字符串
205
208
  */
206
209
  function appendSearchParam(url = window.location.href, name, value) {
207
- let searchArr = getSearchString(url).split("&");
210
+ const searchArr = (getSearchString(url) || "").split("&");
208
211
  searchArr.push(`${name}=${value}`);
209
212
  return url.replace(/(\?.+?)(?=#|$)/, "?" + searchArr.join("&"));
210
213
  }
211
214
  /**
212
215
  * 查询参数字符串中在某个参数的后面追加新参数和值
213
- * @param {String} url url地址,默认当前url地址
214
- * @param {String} name 参数名
215
- * @param {String,Number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
216
- * @param {String} afterName 在后面追加参数的名称
217
- * @returns {String} 返回查询参数字符串
216
+ * @param {string} url url地址,默认当前url地址
217
+ * @param {string} name 参数名
218
+ * @param {string,number,Array} value 参数值,如果是数组,则解析为:&ids[0]=1&ids[2]=2
219
+ * @param {string} afterName 在后面追加参数的名称
220
+ * @returns {string} 返回查询参数字符串
218
221
  */
219
222
  function appendToSearchParam(url = window.location.href, afterName, name, value) {
220
- let searchArr = getSearchString(url).split("&");
221
- let beforeIndex = searchArr.findIndex((v) => v.includes(afterName));
222
- let afterArr = arrayInsertAfter(searchArr, beforeIndex, `${name}=${value}`);
223
+ const searchArr = (getSearchString(url) || "").split("&");
224
+ const beforeIndex = searchArr.findIndex((v) => v.includes(afterName));
225
+ const afterArr = arrayInsertAfter(searchArr, beforeIndex, `${name}=${value}`);
223
226
  return url.replace(/(\?.+?)(?=#|$)/, "?" + afterArr.join("&"));
224
227
  }
225
228
  /**
226
229
  * 查询参数字符串中移除某个参数和值
227
- * @param {String} url url地址,默认当前url地址
228
- * @param {String} name 参数名
229
- * @returns {String} 返回查询参数字符串
230
+ * @param {string} url url地址,默认当前url地址
231
+ * @param {string} name 参数名
232
+ * @returns {string} 返回查询参数字符串
230
233
  */
231
234
  function removeSearchParam(url = window.location.href, name) {
232
- let searchArr = getSearchString(url).split("&");
233
- let delIndex = searchArr.findIndex((v) => v.includes(name));
235
+ const searchArr = (getSearchString(url) || "").split("&");
236
+ const delIndex = searchArr.findIndex((v) => v.includes(name));
234
237
  if (delIndex > -1) {
235
238
  searchArr.splice(delIndex, 1);
236
239
  }