jz-toolkit 1.1.0 → 1.1.2

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 (242) hide show
  1. package/README.md +5 -1
  2. package/dist/array/access.d.ts +41 -0
  3. package/dist/array/access.d.ts.map +1 -0
  4. package/dist/array/access.js +55 -0
  5. package/dist/array/flatten.d.ts +22 -0
  6. package/dist/array/flatten.d.ts.map +1 -0
  7. package/dist/array/flatten.js +41 -0
  8. package/dist/array/groupBy.d.ts +15 -0
  9. package/dist/array/groupBy.d.ts.map +1 -0
  10. package/dist/array/groupBy.js +29 -0
  11. package/dist/array/index.d.ts +6 -0
  12. package/dist/array/index.d.ts.map +1 -1
  13. package/dist/array/index.js +6 -0
  14. package/dist/array/set-operations.d.ts +30 -0
  15. package/dist/array/set-operations.d.ts.map +1 -0
  16. package/dist/array/set-operations.js +43 -0
  17. package/dist/array/sortBy.d.ts +15 -0
  18. package/dist/array/sortBy.d.ts.map +1 -0
  19. package/dist/array/sortBy.js +28 -0
  20. package/dist/array/uniq.d.ts +21 -0
  21. package/dist/array/uniq.d.ts.map +1 -0
  22. package/dist/array/uniq.js +37 -0
  23. package/dist/async/index.d.ts +37 -0
  24. package/dist/async/index.d.ts.map +1 -0
  25. package/dist/async/index.js +92 -0
  26. package/dist/date/dateCalc.d.ts +48 -0
  27. package/dist/date/dateCalc.d.ts.map +1 -0
  28. package/dist/date/dateCalc.js +77 -0
  29. package/dist/date/dateCheck.d.ts +39 -0
  30. package/dist/date/dateCheck.d.ts.map +1 -0
  31. package/dist/date/dateCheck.js +70 -0
  32. package/dist/date/formatDate.d.ts +13 -0
  33. package/dist/date/formatDate.d.ts.map +1 -0
  34. package/dist/date/formatDate.js +34 -0
  35. package/dist/date/index.d.ts +4 -0
  36. package/dist/date/index.d.ts.map +1 -0
  37. package/dist/date/index.js +19 -0
  38. package/dist/esm/array/access.d.ts +41 -0
  39. package/dist/esm/array/access.d.ts.map +1 -0
  40. package/dist/esm/array/access.js +48 -0
  41. package/dist/esm/array/flatten.d.ts +22 -0
  42. package/dist/esm/array/flatten.d.ts.map +1 -0
  43. package/dist/esm/array/flatten.js +36 -0
  44. package/dist/esm/array/groupBy.d.ts +15 -0
  45. package/dist/esm/array/groupBy.d.ts.map +1 -0
  46. package/dist/esm/array/groupBy.js +25 -0
  47. package/dist/esm/array/index.d.ts +6 -0
  48. package/dist/esm/array/index.d.ts.map +1 -1
  49. package/dist/esm/array/index.js +6 -0
  50. package/dist/esm/array/set-operations.d.ts +30 -0
  51. package/dist/esm/array/set-operations.d.ts.map +1 -0
  52. package/dist/esm/array/set-operations.js +37 -0
  53. package/dist/esm/array/sortBy.d.ts +15 -0
  54. package/dist/esm/array/sortBy.d.ts.map +1 -0
  55. package/dist/esm/array/sortBy.js +24 -0
  56. package/dist/esm/array/uniq.d.ts +21 -0
  57. package/dist/esm/array/uniq.d.ts.map +1 -0
  58. package/dist/esm/array/uniq.js +32 -0
  59. package/dist/esm/async/index.d.ts +37 -0
  60. package/dist/esm/async/index.d.ts.map +1 -0
  61. package/dist/esm/async/index.js +86 -0
  62. package/dist/esm/date/dateCalc.d.ts +48 -0
  63. package/dist/esm/date/dateCalc.d.ts.map +1 -0
  64. package/dist/esm/date/dateCalc.js +68 -0
  65. package/dist/esm/date/dateCheck.d.ts +39 -0
  66. package/dist/esm/date/dateCheck.d.ts.map +1 -0
  67. package/dist/esm/date/dateCheck.js +61 -0
  68. package/dist/esm/date/formatDate.d.ts +13 -0
  69. package/dist/esm/date/formatDate.d.ts.map +1 -0
  70. package/dist/esm/date/formatDate.js +30 -0
  71. package/dist/esm/date/index.d.ts +4 -0
  72. package/dist/esm/date/index.d.ts.map +1 -0
  73. package/dist/esm/date/index.js +3 -0
  74. package/dist/esm/function/debounce.d.ts +13 -0
  75. package/dist/esm/function/debounce.d.ts.map +1 -0
  76. package/dist/esm/function/debounce.js +31 -0
  77. package/dist/esm/function/index.d.ts +5 -0
  78. package/dist/esm/function/index.d.ts.map +1 -0
  79. package/dist/esm/function/index.js +4 -0
  80. package/dist/esm/function/once.d.ts +12 -0
  81. package/dist/esm/function/once.d.ts.map +1 -0
  82. package/dist/esm/function/once.js +22 -0
  83. package/dist/esm/function/sleep.d.ts +15 -0
  84. package/dist/esm/function/sleep.d.ts.map +1 -0
  85. package/dist/esm/function/sleep.js +16 -0
  86. package/dist/esm/function/throttle.d.ts +16 -0
  87. package/dist/esm/function/throttle.d.ts.map +1 -0
  88. package/dist/esm/function/throttle.js +39 -0
  89. package/dist/esm/index.d.ts +15 -5
  90. package/dist/esm/index.d.ts.map +1 -1
  91. package/dist/esm/index.js +25 -5
  92. package/dist/esm/number/index.d.ts +3 -0
  93. package/dist/esm/number/index.d.ts.map +1 -1
  94. package/dist/esm/number/index.js +3 -0
  95. package/dist/esm/number/math.d.ts +40 -0
  96. package/dist/esm/number/math.d.ts.map +1 -0
  97. package/dist/esm/number/math.js +55 -0
  98. package/dist/esm/number/random.d.ts +23 -0
  99. package/dist/esm/number/random.d.ts.map +1 -0
  100. package/dist/esm/number/random.js +27 -0
  101. package/dist/esm/number/range.d.ts +27 -0
  102. package/dist/esm/number/range.d.ts.map +1 -0
  103. package/dist/esm/number/range.js +30 -0
  104. package/dist/esm/object/deepClone.d.ts +13 -0
  105. package/dist/esm/object/deepClone.d.ts.map +1 -0
  106. package/dist/esm/object/deepClone.js +53 -0
  107. package/dist/esm/object/flattenObject.d.ts +27 -0
  108. package/dist/esm/object/flattenObject.d.ts.map +1 -0
  109. package/dist/esm/object/flattenObject.js +62 -0
  110. package/dist/esm/object/get.d.ts +15 -0
  111. package/dist/esm/object/get.d.ts.map +1 -0
  112. package/dist/esm/object/get.js +28 -0
  113. package/dist/esm/object/index.d.ts +5 -0
  114. package/dist/esm/object/index.d.ts.map +1 -1
  115. package/dist/esm/object/index.js +5 -0
  116. package/dist/esm/object/merge.d.ts +12 -0
  117. package/dist/esm/object/merge.d.ts.map +1 -0
  118. package/dist/esm/object/merge.js +34 -0
  119. package/dist/esm/object/set.d.ts +14 -0
  120. package/dist/esm/object/set.d.ts.map +1 -0
  121. package/dist/esm/object/set.js +32 -0
  122. package/dist/esm/string/index.d.ts +6 -0
  123. package/dist/esm/string/index.d.ts.map +1 -1
  124. package/dist/esm/string/index.js +6 -0
  125. package/dist/esm/string/kebabCase.d.ts +12 -0
  126. package/dist/esm/string/kebabCase.d.ts.map +1 -0
  127. package/dist/esm/string/kebabCase.js +16 -0
  128. package/dist/esm/string/pascalCase.d.ts +12 -0
  129. package/dist/esm/string/pascalCase.d.ts.map +1 -0
  130. package/dist/esm/string/pascalCase.js +15 -0
  131. package/dist/esm/string/randomString.d.ts +21 -0
  132. package/dist/esm/string/randomString.d.ts.map +1 -0
  133. package/dist/esm/string/randomString.js +34 -0
  134. package/dist/esm/string/snakeCase.d.ts +12 -0
  135. package/dist/esm/string/snakeCase.d.ts.map +1 -0
  136. package/dist/esm/string/snakeCase.js +16 -0
  137. package/dist/esm/string/trim.d.ts +21 -0
  138. package/dist/esm/string/trim.d.ts.map +1 -0
  139. package/dist/esm/string/trim.js +42 -0
  140. package/dist/esm/string/truncate.d.ts +13 -0
  141. package/dist/esm/string/truncate.d.ts.map +1 -0
  142. package/dist/esm/string/truncate.js +18 -0
  143. package/dist/esm/url/index.d.ts +42 -0
  144. package/dist/esm/url/index.d.ts.map +1 -0
  145. package/dist/esm/url/index.js +77 -0
  146. package/dist/esm/utility/index.d.ts +1 -0
  147. package/dist/esm/utility/index.d.ts.map +1 -1
  148. package/dist/esm/utility/index.js +1 -0
  149. package/dist/esm/utility/isType.d.ts +149 -1
  150. package/dist/esm/utility/isType.d.ts.map +1 -1
  151. package/dist/esm/utility/isType.js +158 -6
  152. package/dist/esm/utility/uuid.d.ts +26 -0
  153. package/dist/esm/utility/uuid.d.ts.map +1 -0
  154. package/dist/esm/utility/uuid.js +40 -0
  155. package/dist/esm/validate/index.d.ts +58 -0
  156. package/dist/esm/validate/index.d.ts.map +1 -0
  157. package/dist/esm/validate/index.js +94 -0
  158. package/dist/function/debounce.d.ts +13 -0
  159. package/dist/function/debounce.d.ts.map +1 -0
  160. package/dist/function/debounce.js +35 -0
  161. package/dist/function/index.d.ts +5 -0
  162. package/dist/function/index.d.ts.map +1 -0
  163. package/dist/function/index.js +20 -0
  164. package/dist/function/once.d.ts +12 -0
  165. package/dist/function/once.d.ts.map +1 -0
  166. package/dist/function/once.js +26 -0
  167. package/dist/function/sleep.d.ts +15 -0
  168. package/dist/function/sleep.d.ts.map +1 -0
  169. package/dist/function/sleep.js +20 -0
  170. package/dist/function/throttle.d.ts +16 -0
  171. package/dist/function/throttle.d.ts.map +1 -0
  172. package/dist/function/throttle.js +43 -0
  173. package/dist/index.d.ts +15 -5
  174. package/dist/index.d.ts.map +1 -1
  175. package/dist/index.js +94 -1
  176. package/dist/number/index.d.ts +3 -0
  177. package/dist/number/index.d.ts.map +1 -1
  178. package/dist/number/index.js +3 -0
  179. package/dist/number/math.d.ts +40 -0
  180. package/dist/number/math.d.ts.map +1 -0
  181. package/dist/number/math.js +63 -0
  182. package/dist/number/random.d.ts +23 -0
  183. package/dist/number/random.d.ts.map +1 -0
  184. package/dist/number/random.js +32 -0
  185. package/dist/number/range.d.ts +27 -0
  186. package/dist/number/range.d.ts.map +1 -0
  187. package/dist/number/range.js +35 -0
  188. package/dist/object/deepClone.d.ts +13 -0
  189. package/dist/object/deepClone.d.ts.map +1 -0
  190. package/dist/object/deepClone.js +57 -0
  191. package/dist/object/flattenObject.d.ts +27 -0
  192. package/dist/object/flattenObject.d.ts.map +1 -0
  193. package/dist/object/flattenObject.js +67 -0
  194. package/dist/object/get.d.ts +15 -0
  195. package/dist/object/get.d.ts.map +1 -0
  196. package/dist/object/get.js +32 -0
  197. package/dist/object/index.d.ts +5 -0
  198. package/dist/object/index.d.ts.map +1 -1
  199. package/dist/object/index.js +5 -0
  200. package/dist/object/merge.d.ts +12 -0
  201. package/dist/object/merge.d.ts.map +1 -0
  202. package/dist/object/merge.js +38 -0
  203. package/dist/object/set.d.ts +14 -0
  204. package/dist/object/set.d.ts.map +1 -0
  205. package/dist/object/set.js +36 -0
  206. package/dist/string/index.d.ts +6 -0
  207. package/dist/string/index.d.ts.map +1 -1
  208. package/dist/string/index.js +6 -0
  209. package/dist/string/kebabCase.d.ts +12 -0
  210. package/dist/string/kebabCase.d.ts.map +1 -0
  211. package/dist/string/kebabCase.js +20 -0
  212. package/dist/string/pascalCase.d.ts +12 -0
  213. package/dist/string/pascalCase.d.ts.map +1 -0
  214. package/dist/string/pascalCase.js +19 -0
  215. package/dist/string/randomString.d.ts +21 -0
  216. package/dist/string/randomString.d.ts.map +1 -0
  217. package/dist/string/randomString.js +40 -0
  218. package/dist/string/snakeCase.d.ts +12 -0
  219. package/dist/string/snakeCase.d.ts.map +1 -0
  220. package/dist/string/snakeCase.js +20 -0
  221. package/dist/string/trim.d.ts +21 -0
  222. package/dist/string/trim.d.ts.map +1 -0
  223. package/dist/string/trim.js +48 -0
  224. package/dist/string/truncate.d.ts +13 -0
  225. package/dist/string/truncate.d.ts.map +1 -0
  226. package/dist/string/truncate.js +22 -0
  227. package/dist/url/index.d.ts +42 -0
  228. package/dist/url/index.d.ts.map +1 -0
  229. package/dist/url/index.js +84 -0
  230. package/dist/utility/index.d.ts +1 -0
  231. package/dist/utility/index.d.ts.map +1 -1
  232. package/dist/utility/index.js +1 -0
  233. package/dist/utility/isType.d.ts +149 -1
  234. package/dist/utility/isType.d.ts.map +1 -1
  235. package/dist/utility/isType.js +161 -7
  236. package/dist/utility/uuid.d.ts +26 -0
  237. package/dist/utility/uuid.d.ts.map +1 -0
  238. package/dist/utility/uuid.js +46 -0
  239. package/dist/validate/index.d.ts +58 -0
  240. package/dist/validate/index.d.ts.map +1 -0
  241. package/dist/validate/index.js +105 -0
  242. package/package.json +21 -1
package/README.md CHANGED
@@ -20,12 +20,16 @@
20
20
  npm i jz-toolkit
21
21
  ```
22
22
 
23
- ## 官方文档地址 📚 API 文档查阅
23
+ ## 官方文档地址 - 更多Api在文档查阅
24
24
 
25
25
  http://172.81.245.148:8098/api/utils.html
26
26
 
27
27
  ## 快速开始
28
28
 
29
+ ## 聊天群
30
+
31
+ <img src="./assets/2871763863632_.pic.jpg" alt="聊天群" width="200">
32
+
29
33
  ### 完整导入
30
34
 
31
35
  ```typescript
@@ -0,0 +1,41 @@
1
+ /**
2
+ * 获取数组的第一个元素
3
+ * @param array 输入数组
4
+ * @returns 第一个元素,如果数组为空则返回undefined
5
+ *
6
+ * @example
7
+ * first([1, 2, 3]) // => 1
8
+ * first([]) // => undefined
9
+ */
10
+ export declare function first<T>(array: T[]): T | undefined;
11
+ /**
12
+ * 获取数组的最后一个元素
13
+ * @param array 输入数组
14
+ * @returns 最后一个元素,如果数组为空则返回undefined
15
+ *
16
+ * @example
17
+ * last([1, 2, 3]) // => 3
18
+ * last([]) // => undefined
19
+ */
20
+ export declare function last<T>(array: T[]): T | undefined;
21
+ /**
22
+ * 获取数组的前n个元素
23
+ * @param array 输入数组
24
+ * @param n 要获取的元素数量
25
+ * @returns 前n个元素组成的数组
26
+ *
27
+ * @example
28
+ * take([1, 2, 3, 4], 2) // => [1, 2]
29
+ */
30
+ export declare function take<T>(array: T[], n?: number): T[];
31
+ /**
32
+ * 获取数组的后n个元素
33
+ * @param array 输入数组
34
+ * @param n 要获取的元素数量
35
+ * @returns 后n个元素组成的数组
36
+ *
37
+ * @example
38
+ * takeRight([1, 2, 3, 4], 2) // => [3, 4]
39
+ */
40
+ export declare function takeRight<T>(array: T[], n?: number): T[];
41
+ //# sourceMappingURL=access.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/array/access.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAElD;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAEjD;AAED;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAE,MAAU,GAAG,CAAC,EAAE,CAEtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,GAAE,MAAU,GAAG,CAAC,EAAE,CAE3D"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.takeRight = exports.take = exports.last = exports.first = void 0;
4
+ /**
5
+ * 获取数组的第一个元素
6
+ * @param array 输入数组
7
+ * @returns 第一个元素,如果数组为空则返回undefined
8
+ *
9
+ * @example
10
+ * first([1, 2, 3]) // => 1
11
+ * first([]) // => undefined
12
+ */
13
+ function first(array) {
14
+ return array[0];
15
+ }
16
+ exports.first = first;
17
+ /**
18
+ * 获取数组的最后一个元素
19
+ * @param array 输入数组
20
+ * @returns 最后一个元素,如果数组为空则返回undefined
21
+ *
22
+ * @example
23
+ * last([1, 2, 3]) // => 3
24
+ * last([]) // => undefined
25
+ */
26
+ function last(array) {
27
+ return array[array.length - 1];
28
+ }
29
+ exports.last = last;
30
+ /**
31
+ * 获取数组的前n个元素
32
+ * @param array 输入数组
33
+ * @param n 要获取的元素数量
34
+ * @returns 前n个元素组成的数组
35
+ *
36
+ * @example
37
+ * take([1, 2, 3, 4], 2) // => [1, 2]
38
+ */
39
+ function take(array, n = 1) {
40
+ return array.slice(0, n);
41
+ }
42
+ exports.take = take;
43
+ /**
44
+ * 获取数组的后n个元素
45
+ * @param array 输入数组
46
+ * @param n 要获取的元素数量
47
+ * @returns 后n个元素组成的数组
48
+ *
49
+ * @example
50
+ * takeRight([1, 2, 3, 4], 2) // => [3, 4]
51
+ */
52
+ function takeRight(array, n = 1) {
53
+ return n === 0 ? [] : array.slice(-n);
54
+ }
55
+ exports.takeRight = takeRight;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * 数组扁平化
3
+ * @param array 输入数组
4
+ * @param depth 扁平化深度,默认为1
5
+ * @returns 扁平化后的数组
6
+ *
7
+ * @example
8
+ * flatten([1, [2, [3, [4]], 5]]) // => [1, 2, [3, [4]], 5]
9
+ * flatten([1, [2, [3, [4]], 5]], 2) // => [1, 2, 3, [4], 5]
10
+ * flatten([1, [2, [3, [4]], 5]], Infinity) // => [1, 2, 3, 4, 5]
11
+ */
12
+ export declare function flatten<T>(array: any[], depth?: number): T[];
13
+ /**
14
+ * 深度扁平化数组(扁平化所有层级)
15
+ * @param array 输入数组
16
+ * @returns 完全扁平化后的数组
17
+ *
18
+ * @example
19
+ * flattenDeep([1, [2, [3, [4]], 5]]) // => [1, 2, 3, 4, 5]
20
+ */
21
+ export declare function flattenDeep<T>(array: any[]): T[];
22
+ //# sourceMappingURL=flatten.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flatten.d.ts","sourceRoot":"","sources":["../../src/array/flatten.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,GAAE,MAAU,GAAG,CAAC,EAAE,CAa/D;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAEhD"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flattenDeep = exports.flatten = void 0;
4
+ /**
5
+ * 数组扁平化
6
+ * @param array 输入数组
7
+ * @param depth 扁平化深度,默认为1
8
+ * @returns 扁平化后的数组
9
+ *
10
+ * @example
11
+ * flatten([1, [2, [3, [4]], 5]]) // => [1, 2, [3, [4]], 5]
12
+ * flatten([1, [2, [3, [4]], 5]], 2) // => [1, 2, 3, [4], 5]
13
+ * flatten([1, [2, [3, [4]], 5]], Infinity) // => [1, 2, 3, 4, 5]
14
+ */
15
+ function flatten(array, depth = 1) {
16
+ if (depth <= 0) {
17
+ return array.slice();
18
+ }
19
+ return array.reduce((acc, val) => {
20
+ if (Array.isArray(val)) {
21
+ acc.push(...flatten(val, depth - 1));
22
+ }
23
+ else {
24
+ acc.push(val);
25
+ }
26
+ return acc;
27
+ }, []);
28
+ }
29
+ exports.flatten = flatten;
30
+ /**
31
+ * 深度扁平化数组(扁平化所有层级)
32
+ * @param array 输入数组
33
+ * @returns 完全扁平化后的数组
34
+ *
35
+ * @example
36
+ * flattenDeep([1, [2, [3, [4]], 5]]) // => [1, 2, 3, 4, 5]
37
+ */
38
+ function flattenDeep(array) {
39
+ return flatten(array, Infinity);
40
+ }
41
+ exports.flattenDeep = flattenDeep;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 按指定属性或函数对数组进行分组
3
+ * @param array 输入数组
4
+ * @param iteratee 分组依据:属性名或函数
5
+ * @returns 分组后的对象
6
+ *
7
+ * @example
8
+ * groupBy([{type: 'a', val: 1}, {type: 'b', val: 2}, {type: 'a', val: 3}], 'type')
9
+ * // => {a: [{type: 'a', val: 1}, {type: 'a', val: 3}], b: [{type: 'b', val: 2}]}
10
+ *
11
+ * groupBy([1.3, 2.1, 2.4], num => Math.floor(num))
12
+ * // => {1: [1.3], 2: [2.1, 2.4]}
13
+ */
14
+ export declare function groupBy<T>(array: T[], iteratee: keyof T | ((item: T) => string | number)): Record<string, T[]>;
15
+ //# sourceMappingURL=groupBy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupBy.d.ts","sourceRoot":"","sources":["../../src/array/groupBy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC,GACjD,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAarB"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.groupBy = void 0;
4
+ /**
5
+ * 按指定属性或函数对数组进行分组
6
+ * @param array 输入数组
7
+ * @param iteratee 分组依据:属性名或函数
8
+ * @returns 分组后的对象
9
+ *
10
+ * @example
11
+ * groupBy([{type: 'a', val: 1}, {type: 'b', val: 2}, {type: 'a', val: 3}], 'type')
12
+ * // => {a: [{type: 'a', val: 1}, {type: 'a', val: 3}], b: [{type: 'b', val: 2}]}
13
+ *
14
+ * groupBy([1.3, 2.1, 2.4], num => Math.floor(num))
15
+ * // => {1: [1.3], 2: [2.1, 2.4]}
16
+ */
17
+ function groupBy(array, iteratee) {
18
+ return array.reduce((result, item) => {
19
+ const key = typeof iteratee === "function"
20
+ ? String(iteratee(item))
21
+ : String(item[iteratee]);
22
+ if (!result[key]) {
23
+ result[key] = [];
24
+ }
25
+ result[key].push(item);
26
+ return result;
27
+ }, {});
28
+ }
29
+ exports.groupBy = groupBy;
@@ -1,4 +1,10 @@
1
1
  export * from "./chunk";
2
2
  export * from "./compact";
3
3
  export * from "./filterDuplicateValues";
4
+ export * from "./uniq";
5
+ export * from "./flatten";
6
+ export * from "./groupBy";
7
+ export * from "./sortBy";
8
+ export * from "./set-operations";
9
+ export * from "./access";
4
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/array/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/array/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC"}
@@ -17,3 +17,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./chunk"), exports);
18
18
  __exportStar(require("./compact"), exports);
19
19
  __exportStar(require("./filterDuplicateValues"), exports);
20
+ __exportStar(require("./uniq"), exports);
21
+ __exportStar(require("./flatten"), exports);
22
+ __exportStar(require("./groupBy"), exports);
23
+ __exportStar(require("./sortBy"), exports);
24
+ __exportStar(require("./set-operations"), exports);
25
+ __exportStar(require("./access"), exports);
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 返回两个数组的交集
3
+ * @param arr1 第一个数组
4
+ * @param arr2 第二个数组
5
+ * @returns 交集数组
6
+ *
7
+ * @example
8
+ * intersection([1, 2, 3], [2, 3, 4]) // => [2, 3]
9
+ */
10
+ export declare function intersection<T>(arr1: T[], arr2: T[]): T[];
11
+ /**
12
+ * 返回第一个数组与第二个数组的差集
13
+ * @param arr1 第一个数组
14
+ * @param arr2 第二个数组
15
+ * @returns 差集数组(arr1中有但arr2中没有的元素)
16
+ *
17
+ * @example
18
+ * difference([1, 2, 3], [2, 3, 4]) // => [1]
19
+ */
20
+ export declare function difference<T>(arr1: T[], arr2: T[]): T[];
21
+ /**
22
+ * 返回多个数组的并集
23
+ * @param arrays 多个数组
24
+ * @returns 并集数组
25
+ *
26
+ * @example
27
+ * union([1, 2], [2, 3], [3, 4]) // => [1, 2, 3, 4]
28
+ */
29
+ export declare function union<T>(...arrays: T[][]): T[];
30
+ //# sourceMappingURL=set-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-operations.d.ts","sourceRoot":"","sources":["../../src/array/set-operations.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAGzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAGvD;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAE9C"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.union = exports.difference = exports.intersection = void 0;
4
+ /**
5
+ * 返回两个数组的交集
6
+ * @param arr1 第一个数组
7
+ * @param arr2 第二个数组
8
+ * @returns 交集数组
9
+ *
10
+ * @example
11
+ * intersection([1, 2, 3], [2, 3, 4]) // => [2, 3]
12
+ */
13
+ function intersection(arr1, arr2) {
14
+ const set2 = new Set(arr2);
15
+ return arr1.filter((item) => set2.has(item));
16
+ }
17
+ exports.intersection = intersection;
18
+ /**
19
+ * 返回第一个数组与第二个数组的差集
20
+ * @param arr1 第一个数组
21
+ * @param arr2 第二个数组
22
+ * @returns 差集数组(arr1中有但arr2中没有的元素)
23
+ *
24
+ * @example
25
+ * difference([1, 2, 3], [2, 3, 4]) // => [1]
26
+ */
27
+ function difference(arr1, arr2) {
28
+ const set2 = new Set(arr2);
29
+ return arr1.filter((item) => !set2.has(item));
30
+ }
31
+ exports.difference = difference;
32
+ /**
33
+ * 返回多个数组的并集
34
+ * @param arrays 多个数组
35
+ * @returns 并集数组
36
+ *
37
+ * @example
38
+ * union([1, 2], [2, 3], [3, 4]) // => [1, 2, 3, 4]
39
+ */
40
+ function union(...arrays) {
41
+ return Array.from(new Set(arrays.flat()));
42
+ }
43
+ exports.union = union;
@@ -0,0 +1,15 @@
1
+ /**
2
+ * 按指定属性或函数对数组进行排序
3
+ * @param array 输入数组
4
+ * @param iteratee 排序依据:属性名或函数
5
+ * @returns 排序后的新数组
6
+ *
7
+ * @example
8
+ * sortBy([{name: 'john', age: 30}, {name: 'jane', age: 25}], 'age')
9
+ * // => [{name: 'jane', age: 25}, {name: 'john', age: 30}]
10
+ *
11
+ * sortBy([3, 1, 2], num => num)
12
+ * // => [1, 2, 3]
13
+ */
14
+ export declare function sortBy<T>(array: T[], iteratee: keyof T | ((item: T) => any)): T[];
15
+ //# sourceMappingURL=sortBy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortBy.d.ts","sourceRoot":"","sources":["../../src/array/sortBy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,CAAC,EACtB,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,GACrC,CAAC,EAAE,CASL"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sortBy = void 0;
4
+ /**
5
+ * 按指定属性或函数对数组进行排序
6
+ * @param array 输入数组
7
+ * @param iteratee 排序依据:属性名或函数
8
+ * @returns 排序后的新数组
9
+ *
10
+ * @example
11
+ * sortBy([{name: 'john', age: 30}, {name: 'jane', age: 25}], 'age')
12
+ * // => [{name: 'jane', age: 25}, {name: 'john', age: 30}]
13
+ *
14
+ * sortBy([3, 1, 2], num => num)
15
+ * // => [1, 2, 3]
16
+ */
17
+ function sortBy(array, iteratee) {
18
+ return [...array].sort((a, b) => {
19
+ const aVal = typeof iteratee === "function" ? iteratee(a) : a[iteratee];
20
+ const bVal = typeof iteratee === "function" ? iteratee(b) : b[iteratee];
21
+ if (aVal < bVal)
22
+ return -1;
23
+ if (aVal > bVal)
24
+ return 1;
25
+ return 0;
26
+ });
27
+ }
28
+ exports.sortBy = sortBy;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 数组去重
3
+ * @param array 输入数组
4
+ * @returns 去重后的数组
5
+ *
6
+ * @example
7
+ * uniq([1, 2, 2, 3, 4, 4, 5]) // => [1, 2, 3, 4, 5]
8
+ * uniq(['a', 'b', 'a', 'c']) // => ['a', 'b', 'c']
9
+ */
10
+ export declare function uniq<T>(array: T[]): T[];
11
+ /**
12
+ * 根据迭代器函数进行去重
13
+ * @param array 输入数组
14
+ * @param iteratee 迭代器函数
15
+ * @returns 去重后的数组
16
+ *
17
+ * @example
18
+ * uniqBy([{id: 1}, {id: 2}, {id: 1}], item => item.id) // => [{id: 1}, {id: 2}]
19
+ */
20
+ export declare function uniqBy<T>(array: T[], iteratee: (item: T) => any): T[];
21
+ //# sourceMappingURL=uniq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniq.d.ts","sourceRoot":"","sources":["../../src/array/uniq.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAUrE"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uniqBy = exports.uniq = void 0;
4
+ /**
5
+ * 数组去重
6
+ * @param array 输入数组
7
+ * @returns 去重后的数组
8
+ *
9
+ * @example
10
+ * uniq([1, 2, 2, 3, 4, 4, 5]) // => [1, 2, 3, 4, 5]
11
+ * uniq(['a', 'b', 'a', 'c']) // => ['a', 'b', 'c']
12
+ */
13
+ function uniq(array) {
14
+ return Array.from(new Set(array));
15
+ }
16
+ exports.uniq = uniq;
17
+ /**
18
+ * 根据迭代器函数进行去重
19
+ * @param array 输入数组
20
+ * @param iteratee 迭代器函数
21
+ * @returns 去重后的数组
22
+ *
23
+ * @example
24
+ * uniqBy([{id: 1}, {id: 2}, {id: 1}], item => item.id) // => [{id: 1}, {id: 2}]
25
+ */
26
+ function uniqBy(array, iteratee) {
27
+ const seen = new Set();
28
+ return array.filter((item) => {
29
+ const key = iteratee(item);
30
+ if (seen.has(key)) {
31
+ return false;
32
+ }
33
+ seen.add(key);
34
+ return true;
35
+ });
36
+ }
37
+ exports.uniqBy = uniqBy;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * 重试执行异步函数
3
+ * @param fn 要重试的异步函数
4
+ * @param times 重试次数
5
+ * @param interval 重试间隔(毫秒)
6
+ * @returns Promise
7
+ *
8
+ * @example
9
+ * await retry(() => fetch('/api'), 3, 1000);
10
+ */
11
+ export declare function retry<T>(fn: () => Promise<T>, times?: number, interval?: number): Promise<T>;
12
+ /**
13
+ * 超时控制
14
+ * @param promise 要执行的Promise
15
+ * @param ms 超时时间(毫秒)
16
+ * @param errorMessage 超时错误信息
17
+ * @returns Promise
18
+ *
19
+ * @example
20
+ * await timeout(fetch('/api'), 5000, 'Request timeout');
21
+ */
22
+ export declare function timeout<T>(promise: Promise<T>, ms: number, errorMessage?: string): Promise<T>;
23
+ /**
24
+ * 并发控制的Promise.all
25
+ * @param tasks 任务函数数组
26
+ * @param limit 最大并发数
27
+ * @returns Promise<T[]>
28
+ *
29
+ * @example
30
+ * const urls = ['/api/1', '/api/2', '/api/3', '/api/4', '/api/5'];
31
+ * const results = await promiseAllWithLimit(
32
+ * urls.map(url => () => fetch(url)),
33
+ * 2 // 最多同时执行2个请求
34
+ * );
35
+ */
36
+ export declare function promiseAllWithLimit<T>(tasks: (() => Promise<T>)[], limit: number): Promise<T[]>;
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/async/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,MAAa,GACtB,OAAO,CAAC,CAAC,CAAC,CAeZ;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,EAAE,EAAE,MAAM,EACV,YAAY,GAAE,MAA8B,GAC3C,OAAO,CAAC,CAAC,CAAC,CAgBZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,KAAK,EAAE,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,CAAC,EAAE,CAAC,CA4Bd"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.promiseAllWithLimit = exports.timeout = exports.retry = void 0;
4
+ /**
5
+ * 重试执行异步函数
6
+ * @param fn 要重试的异步函数
7
+ * @param times 重试次数
8
+ * @param interval 重试间隔(毫秒)
9
+ * @returns Promise
10
+ *
11
+ * @example
12
+ * await retry(() => fetch('/api'), 3, 1000);
13
+ */
14
+ async function retry(fn, times = 3, interval = 1000) {
15
+ let lastError = null;
16
+ for (let i = 0; i < times; i++) {
17
+ try {
18
+ return await fn();
19
+ }
20
+ catch (error) {
21
+ lastError = error;
22
+ if (i < times - 1 && interval > 0) {
23
+ await new Promise((resolve) => setTimeout(resolve, interval));
24
+ }
25
+ }
26
+ }
27
+ throw lastError || new Error("Retry failed");
28
+ }
29
+ exports.retry = retry;
30
+ /**
31
+ * 超时控制
32
+ * @param promise 要执行的Promise
33
+ * @param ms 超时时间(毫秒)
34
+ * @param errorMessage 超时错误信息
35
+ * @returns Promise
36
+ *
37
+ * @example
38
+ * await timeout(fetch('/api'), 5000, 'Request timeout');
39
+ */
40
+ function timeout(promise, ms, errorMessage = "Operation timed out") {
41
+ return new Promise((resolve, reject) => {
42
+ const timer = setTimeout(() => {
43
+ reject(new Error(errorMessage));
44
+ }, ms);
45
+ promise
46
+ .then((result) => {
47
+ clearTimeout(timer);
48
+ resolve(result);
49
+ })
50
+ .catch((error) => {
51
+ clearTimeout(timer);
52
+ reject(error);
53
+ });
54
+ });
55
+ }
56
+ exports.timeout = timeout;
57
+ /**
58
+ * 并发控制的Promise.all
59
+ * @param tasks 任务函数数组
60
+ * @param limit 最大并发数
61
+ * @returns Promise<T[]>
62
+ *
63
+ * @example
64
+ * const urls = ['/api/1', '/api/2', '/api/3', '/api/4', '/api/5'];
65
+ * const results = await promiseAllWithLimit(
66
+ * urls.map(url => () => fetch(url)),
67
+ * 2 // 最多同时执行2个请求
68
+ * );
69
+ */
70
+ async function promiseAllWithLimit(tasks, limit) {
71
+ const results = [];
72
+ const executing = [];
73
+ for (let i = 0; i < tasks.length; i++) {
74
+ const task = tasks[i];
75
+ const p = task().then((result) => {
76
+ results[i] = result;
77
+ });
78
+ executing.push(p);
79
+ if (executing.length >= limit) {
80
+ await Promise.race(executing);
81
+ // 移除已完成的任务
82
+ const index = executing.findIndex((p) => p.settled ||
83
+ Promise.race([p, Promise.resolve("pending")]) !== "pending");
84
+ if (index !== -1) {
85
+ executing.splice(index, 1);
86
+ }
87
+ }
88
+ }
89
+ await Promise.all(executing);
90
+ return results;
91
+ }
92
+ exports.promiseAllWithLimit = promiseAllWithLimit;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * 添加天数
3
+ * @param date 日期对象
4
+ * @param days 要添加的天数
5
+ * @returns 新的日期对象
6
+ *
7
+ * @example
8
+ * addDays(new Date('2024-01-01'), 1) // => 2024-01-02
9
+ * addDays(new Date('2024-01-01'), -1) // => 2023-12-31
10
+ */
11
+ export declare function addDays(date: Date, days: number): Date;
12
+ /**
13
+ * 添加月份
14
+ * @param date 日期对象
15
+ * @param months 要添加的月份
16
+ * @returns 新的日期对象
17
+ *
18
+ * @example
19
+ * addMonths(new Date('2024-01-31'), 1) // => 2024-02-29 (leap year)
20
+ * addMonths(new Date('2024-01-01'), -1) // => 2023-12-01
21
+ */
22
+ export declare function addMonths(date: Date, months: number): Date;
23
+ /**
24
+ * 添加年份
25
+ * @param date 日期对象
26
+ * @param years 要添加的年份
27
+ * @returns 新的日期对象
28
+ */
29
+ export declare function addYears(date: Date, years: number): Date;
30
+ /**
31
+ * 计算两个日期之间的天数差
32
+ * @param date1 第一个日期
33
+ * @param date2 第二个日期
34
+ * @returns 天数差(date1 - date2)
35
+ *
36
+ * @example
37
+ * diffDays(new Date('2024-01-10'), new Date('2024-01-01')) // => 9
38
+ */
39
+ export declare function diffDays(date1: Date, date2: Date): number;
40
+ /**
41
+ * 计算两个日期之间的小时差
42
+ */
43
+ export declare function diffHours(date1: Date, date2: Date): number;
44
+ /**
45
+ * 计算两个日期之间的分钟差
46
+ */
47
+ export declare function diffMinutes(date1: Date, date2: Date): number;
48
+ //# sourceMappingURL=dateCalc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateCalc.d.ts","sourceRoot":"","sources":["../../src/date/dateCalc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAItD;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAI1D;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,CAGzD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,CAG1D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,MAAM,CAG5D"}