wssf-kage-js 1.0.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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Kage.js
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,331 @@
1
+ # Kage.js
2
+
3
+ 一个现代化的 JavaScript/TypeScript 工具库,类似于 lodash,提供了丰富的数组、对象、字符串、函数和数学运算工具方法。
4
+
5
+ ## ✨ 特性
6
+
7
+ - 🚀 **完整的 TypeScript 支持** - 提供完整的类型定义
8
+ - 📦 **模块化设计** - 支持按需导入,减小打包体积
9
+ - 🧪 **完善的测试** - 100% 测试覆盖率
10
+ - 🔧 **零依赖** - 不依赖任何第三方库
11
+ - 📝 **详细的文档** - 每个函数都有清晰的注释
12
+
13
+ ## 📦 安装
14
+
15
+ ```bash
16
+ npm install wssf-kage-js
17
+ ```
18
+
19
+ 或使用 yarn:
20
+
21
+ ```bash
22
+ yarn add wssf-kage-js
23
+ ```
24
+
25
+ 或使用 pnpm:
26
+
27
+ ```bash
28
+ pnpm add wssf-kage-js
29
+ ```
30
+
31
+ ## 🚀 快速开始
32
+
33
+ ```typescript
34
+ import { chunk, camelCase, debounce, range } from 'wssf-kage-js';
35
+
36
+ // 数组操作
37
+ chunk([1, 2, 3, 4, 5], 2);
38
+ // => [[1, 2], [3, 4], [5]]
39
+
40
+ // 字符串操作
41
+ camelCase('hello-world');
42
+ // => 'helloWorld'
43
+
44
+ // 函数工具
45
+ const debouncedFn = debounce(() => console.log('执行'), 1000);
46
+
47
+ // 数学运算
48
+ range(5);
49
+ // => [0, 1, 2, 3, 4]
50
+ ```
51
+
52
+ ## 📚 API 文档
53
+
54
+ ### 语言检查 (Lang)
55
+
56
+ 判断数据类型的工具函数。
57
+
58
+ ```typescript
59
+ import { isNil, isArray, isObject, isEmpty } from 'wssf-kage-js';
60
+
61
+ isNil(null); // => true
62
+ isArray([1, 2, 3]); // => true
63
+ isObject({}); // => true
64
+ isEmpty([]); // => true
65
+ ```
66
+
67
+ **可用方法:**
68
+ - `isNil(value)` - 检查是否为 null 或 undefined
69
+ - `isArray(value)` - 检查是否为数组
70
+ - `isObject(value)` - 检查是否为对象
71
+ - `isFunction(value)` - 检查是否为函数
72
+ - `isString(value)` - 检查是否为字符串
73
+ - `isNumber(value)` - 检查是否为数字
74
+ - `isBoolean(value)` - 检查是否为布尔值
75
+ - `isEmpty(value)` - 检查是否为空
76
+
77
+ ### 数组操作 (Array)
78
+
79
+ 强大的数组处理工具。
80
+
81
+ ```typescript
82
+ import { chunk, uniq, flatten, shuffle } from 'wssf-kage-js';
83
+
84
+ // 分块
85
+ chunk([1, 2, 3, 4, 5], 2);
86
+ // => [[1, 2], [3, 4], [5]]
87
+
88
+ // 去重
89
+ uniq([1, 2, 2, 3, 3]);
90
+ // => [1, 2, 3]
91
+
92
+ // 扁平化
93
+ flatten([1, [2, 3], [4]]);
94
+ // => [1, 2, 3, 4]
95
+
96
+ // 随机打乱
97
+ shuffle([1, 2, 3, 4, 5]);
98
+ // => [3, 1, 5, 2, 4] (随机顺序)
99
+ ```
100
+
101
+ **可用方法:**
102
+ - `head(array)` - 获取第一个元素
103
+ - `last(array)` - 获取最后一个元素
104
+ - `tail(array)` - 获取除第一个元素外的所有元素
105
+ - `uniq(array)` - 数组去重
106
+ - `uniqBy(array, iteratee)` - 根据迭代函数去重
107
+ - `flatten(array)` - 浅层扁平化
108
+ - `flattenDeep(array)` - 深度扁平化
109
+ - `chunk(array, size)` - 分块数组
110
+ - `compact(array)` - 过滤假值
111
+ - `difference(array, values)` - 数组差集
112
+ - `intersection(array, ...arrays)` - 数组交集
113
+ - `sum(array)` - 数组求和
114
+ - `sumBy(array, iteratee)` - 根据迭代函数求和
115
+ - `shuffle(array)` - 随机打乱
116
+ - `sample(array)` - 随机取一个元素
117
+ - `sampleSize(array, n)` - 随机取 n 个元素
118
+
119
+ ### 对象操作 (Object)
120
+
121
+ 灵活的对象处理方法。
122
+
123
+ ```typescript
124
+ import { get, set, merge, pick, omit } from 'wssf-kage-js';
125
+
126
+ const obj = { a: { b: { c: 3 } } };
127
+
128
+ // 获取嵌套属性
129
+ get(obj, 'a.b.c');
130
+ // => 3
131
+
132
+ // 设置嵌套属性
133
+ set(obj, 'a.b.d', 4);
134
+ // => { a: { b: { c: 3, d: 4 } } }
135
+
136
+ // 合并对象
137
+ merge({ a: 1 }, { b: 2 });
138
+ // => { a: 1, b: 2 }
139
+
140
+ // 选取属性
141
+ pick({ a: 1, b: 2, c: 3 }, ['a', 'c']);
142
+ // => { a: 1, c: 3 }
143
+
144
+ // 排除属性
145
+ omit({ a: 1, b: 2, c: 3 }, ['b']);
146
+ // => { a: 1, c: 3 }
147
+ ```
148
+
149
+ **可用方法:**
150
+ - `cloneDeep(value)` - 深度克隆
151
+ - `get(obj, path, defaultValue)` - 获取嵌套属性
152
+ - `set(obj, path, value)` - 设置嵌套属性
153
+ - `merge(target, ...sources)` - 合并对象
154
+ - `pick(obj, keys)` - 选取属性
155
+ - `omit(obj, keys)` - 排除属性
156
+ - `keys(obj)` - 获取所有键
157
+ - `values(obj)` - 获取所有值
158
+ - `entries(obj)` - 获取键值对
159
+ - `invert(obj)` - 反转键值
160
+ - `mapValues(obj, iteratee)` - 映射对象值
161
+
162
+ ### 字符串操作 (String)
163
+
164
+ 丰富的字符串处理工具。
165
+
166
+ ```typescript
167
+ import { camelCase, snakeCase, kebabCase, truncate } from 'wssf-kage-js';
168
+
169
+ // 驼峰命名
170
+ camelCase('hello-world');
171
+ // => 'helloWorld'
172
+
173
+ // 蛇形命名
174
+ snakeCase('helloWorld');
175
+ // => 'hello_world'
176
+
177
+ // 短横线命名
178
+ kebabCase('helloWorld');
179
+ // => 'hello-world'
180
+
181
+ // 截断字符串
182
+ truncate('hello world', { length: 8 });
183
+ // => 'hello...'
184
+ ```
185
+
186
+ **可用方法:**
187
+ - `capitalize(str)` - 首字母大写
188
+ - `camelCase(str)` - 驼峰命名
189
+ - `snakeCase(str)` - 蛇形命名
190
+ - `kebabCase(str)` - 短横线命名
191
+ - `trim(str, chars)` - 去除空格
192
+ - `truncate(str, options)` - 截断字符串
193
+ - `words(str)` - 分词
194
+ - `repeat(str, n)` - 重复字符串
195
+ - `padStart(str, length, chars)` - 左侧填充
196
+ - `padEnd(str, length, chars)` - 右侧填充
197
+
198
+ ### 函数工具 (Function)
199
+
200
+ 高阶函数和函数式编程工具。
201
+
202
+ ```typescript
203
+ import { debounce, throttle, once, memoize, curry } from 'wssf-kage-js';
204
+
205
+ // 防抖
206
+ const debouncedFn = debounce(() => {
207
+ console.log('执行');
208
+ }, 1000);
209
+
210
+ // 节流
211
+ const throttledFn = throttle(() => {
212
+ console.log('执行');
213
+ }, 1000);
214
+
215
+ // 只执行一次
216
+ const onceFn = once(() => {
217
+ console.log('只执行一次');
218
+ });
219
+
220
+ // 记忆化
221
+ const memoizedFn = memoize((x) => x * 2);
222
+
223
+ // 柯里化
224
+ const add = (a, b, c) => a + b + c;
225
+ const curriedAdd = curry(add);
226
+ curriedAdd(1)(2)(3); // => 6
227
+ ```
228
+
229
+ **可用方法:**
230
+ - `debounce(func, wait, options)` - 防抖
231
+ - `throttle(func, wait, options)` - 节流
232
+ - `once(func)` - 只执行一次
233
+ - `delay(func, wait, ...args)` - 延迟执行
234
+ - `memoize(func, resolver)` - 记忆化
235
+ - `curry(func, arity)` - 柯里化
236
+ - `compose(...funcs)` - 函数组合
237
+ - `pipe(...funcs)` - 管道函数
238
+
239
+ ### 数学运算 (Math)
240
+
241
+ 常用的数学计算工具。
242
+
243
+ ```typescript
244
+ import { range, random, clamp, mean, max, min } from 'wssf-kage-js';
245
+
246
+ // 生成数字范围
247
+ range(5);
248
+ // => [0, 1, 2, 3, 4]
249
+
250
+ range(1, 5);
251
+ // => [1, 2, 3, 4]
252
+
253
+ range(0, 10, 2);
254
+ // => [0, 2, 4, 6, 8]
255
+
256
+ // 随机数
257
+ random(1, 10);
258
+ // => 7 (随机)
259
+
260
+ // 限制范围
261
+ clamp(15, 1, 10);
262
+ // => 10
263
+
264
+ // 求平均值
265
+ mean([1, 2, 3, 4, 5]);
266
+ // => 3
267
+ ```
268
+
269
+ **可用方法:**
270
+ - `range(start, end, step)` - 生成数字范围
271
+ - `random(min, max, floating)` - 生成随机数
272
+ - `clamp(number, min, max)` - 限制数字范围
273
+ - `ceil(number, precision)` - 向上取整
274
+ - `floor(number, precision)` - 向下取整
275
+ - `round(number, precision)` - 四舍五入
276
+ - `mean(array)` - 求平均值
277
+ - `max(array)` - 求最大值
278
+ - `min(array)` - 求最小值
279
+ - `maxBy(array, iteratee)` - 根据迭代函数求最大值
280
+ - `minBy(array, iteratee)` - 根据迭代函数求最小值
281
+
282
+ ## 🧪 测试
283
+
284
+ ```bash
285
+ # 运行测试
286
+ npm test
287
+
288
+ # 观察模式
289
+ npm run test:watch
290
+
291
+ # 生成覆盖率报告
292
+ npm run test:coverage
293
+ ```
294
+
295
+ ## 📖 生成 API 文档
296
+
297
+ 本项目使用 TypeDoc 从源代码自动生成 API 文档:
298
+
299
+ ```bash
300
+ # 生成文档
301
+ npm run docs
302
+
303
+ # 观察模式(开发时使用)
304
+ npm run docs:watch
305
+ ```
306
+
307
+ 生成的文档位于 `docs/` 目录,在浏览器中打开 `docs/index.html` 即可查看。
308
+
309
+ 详细的文档编写指南请参考 [DOCS_GUIDE.md](./DOCS_GUIDE.md)。
310
+
311
+ ## 🔨 构建
312
+
313
+ ```bash
314
+ npm run build
315
+ ```
316
+
317
+ ## 📄 许可证
318
+
319
+ MIT License
320
+
321
+ ## 🤝 贡献
322
+
323
+ 欢迎提交 Issue 和 Pull Request!
324
+
325
+ ## 📝 更新日志
326
+
327
+ ### 1.0.0 (2024-01-16)
328
+ - 🎉 首次发布
329
+ - ✨ 支持数组、对象、字符串、函数和数学运算工具
330
+ - 📝 完善的 TypeScript 类型定义
331
+ - 🧪 完整的测试覆盖
@@ -0,0 +1,221 @@
1
+ /**
2
+ * 数组操作模块 - 提供强大的数组处理工具
3
+ * @module Array
4
+ */
5
+ /**
6
+ * 创建数组切片,从 start 到 end(不包含 end)
7
+ * @category Array
8
+ * @param array - 源数组
9
+ * @param start - 起始索引,默认为 0
10
+ * @param end - 结束索引(不包含),默认为数组长度
11
+ * @returns 切片后的新数组
12
+ * @example
13
+ * ```typescript
14
+ * slice([1, 2, 3, 4], 1, 3) // => [2, 3]
15
+ * slice([1, 2, 3, 4], 2) // => [3, 4]
16
+ * ```
17
+ */
18
+ export declare function slice<T>(array: T[], start?: number, end?: number): T[];
19
+ /**
20
+ * 返回数组的第一个元素
21
+ * @category Array
22
+ * @param array - 源数组
23
+ * @returns 数组的第一个元素,如果数组为空则返回 undefined
24
+ * @example
25
+ * ```typescript
26
+ * head([1, 2, 3]) // => 1
27
+ * head([]) // => undefined
28
+ * ```
29
+ */
30
+ export declare function head<T>(array: T[]): T | undefined;
31
+ /**
32
+ * 返回数组的最后一个元素
33
+ * @category Array
34
+ * @param array - 源数组
35
+ * @returns 数组的最后一个元素,如果数组为空则返回 undefined
36
+ * @example
37
+ * ```typescript
38
+ * last([1, 2, 3]) // => 3
39
+ * last([]) // => undefined
40
+ * ```
41
+ */
42
+ export declare function last<T>(array: T[]): T | undefined;
43
+ /**
44
+ * 返回数组去除第一个元素后的部分
45
+ * @category Array
46
+ * @param array - 源数组
47
+ * @returns 去除第一个元素后的新数组
48
+ * @example
49
+ * ```typescript
50
+ * tail([1, 2, 3]) // => [2, 3]
51
+ * tail([1]) // => []
52
+ * ```
53
+ */
54
+ export declare function tail<T>(array: T[]): T[];
55
+ /**
56
+ * 数组去重,使用 Set 实现
57
+ * @category Array
58
+ * @param array - 源数组
59
+ * @returns 去重后的新数组
60
+ * @example
61
+ * ```typescript
62
+ * uniq([1, 2, 2, 3, 3]) // => [1, 2, 3]
63
+ * uniq(['a', 'b', 'a']) // => ['a', 'b']
64
+ * ```
65
+ */
66
+ export declare function uniq<T>(array: T[]): T[];
67
+ /**
68
+ * 根据迭代函数的返回值去重
69
+ * @category Array
70
+ * @param array - 源数组
71
+ * @param iteratee - 迭代函数,用于生成唯一标识
72
+ * @returns 去重后的新数组
73
+ * @example
74
+ * ```typescript
75
+ * uniqBy([2.1, 1.2, 2.3], Math.floor)
76
+ * // => [2.1, 1.2]
77
+ *
78
+ * uniqBy([{ id: 1 }, { id: 2 }, { id: 1 }], o => o.id)
79
+ * // => [{ id: 1 }, { id: 2 }]
80
+ * ```
81
+ */
82
+ export declare function uniqBy<T>(array: T[], iteratee: (value: T) => unknown): T[];
83
+ /**
84
+ * 数组扁平化(浅层),将嵌套一层的数组展开
85
+ * @category Array
86
+ * @param array - 源数组
87
+ * @returns 扁平化后的新数组
88
+ * @example
89
+ * ```typescript
90
+ * flatten([1, [2, 3], [4]]) // => [1, 2, 3, 4]
91
+ * ```
92
+ */
93
+ export declare function flatten<T>(array: (T | T[])[]): T[];
94
+ /**
95
+ * 深度扁平化,递归展开所有嵌套数组
96
+ * @category Array
97
+ * @param array - 源数组
98
+ * @returns 完全扁平化后的新数组
99
+ * @example
100
+ * ```typescript
101
+ * flattenDeep([1, [2, [3, [4]]]]) // => [1, 2, 3, 4]
102
+ * ```
103
+ */
104
+ export declare function flattenDeep<T>(array: unknown[]): T[];
105
+ /**
106
+ * 将数组分割成指定大小的块
107
+ * @category Array
108
+ * @param array - 源数组
109
+ * @param size - 每块的大小,默认为 1
110
+ * @returns 分块后的二维数组
111
+ * @example
112
+ * ```typescript
113
+ * chunk([1, 2, 3, 4, 5], 2) // => [[1, 2], [3, 4], [5]]
114
+ * chunk([1, 2, 3], 1) // => [[1], [2], [3]]
115
+ * ```
116
+ */
117
+ export declare function chunk<T>(array: T[], size?: number): T[][];
118
+ /**
119
+ * 过滤掉所有假值(false, null, 0, "", undefined, NaN)
120
+ * @category Array
121
+ * @param array - 源数组
122
+ * @returns 过滤后的新数组
123
+ * @example
124
+ * ```typescript
125
+ * compact([0, 1, false, 2, '', 3])
126
+ * // => [1, 2, 3]
127
+ * ```
128
+ */
129
+ export declare function compact<T>(array: (T | null | undefined | false | 0 | '')[]): T[];
130
+ /**
131
+ * 返回两个数组的差集(在第一个数组中但不在第二个数组中的元素)
132
+ * @category Array
133
+ * @param array - 源数组
134
+ * @param values - 要排除的值数组
135
+ * @returns 差集数组
136
+ * @example
137
+ * ```typescript
138
+ * difference([1, 2, 3, 4], [2, 4])
139
+ * // => [1, 3]
140
+ * ```
141
+ */
142
+ export declare function difference<T>(array: T[], values: T[]): T[];
143
+ /**
144
+ * 返回多个数组的交集(所有数组中都存在的元素)
145
+ * @category Array
146
+ * @param array - 第一个数组
147
+ * @param arrays - 其他数组
148
+ * @returns 交集数组
149
+ * @example
150
+ * ```typescript
151
+ * intersection([1, 2, 3], [2, 3, 4])
152
+ * // => [2, 3]
153
+ *
154
+ * intersection([1, 2, 3], [2, 3], [3])
155
+ * // => [3]
156
+ * ```
157
+ */
158
+ export declare function intersection<T>(array: T[], ...arrays: T[][]): T[];
159
+ /**
160
+ * 计算数组中所有数字的总和
161
+ * @category Array
162
+ * @param array - 数字数组
163
+ * @returns 总和
164
+ * @example
165
+ * ```typescript
166
+ * sum([1, 2, 3, 4]) // => 10
167
+ * sum([]) // => 0
168
+ * ```
169
+ */
170
+ export declare function sum(array: number[]): number;
171
+ /**
172
+ * 根据迭代函数的返回值计算总和
173
+ * @category Array
174
+ * @param array - 源数组
175
+ * @param iteratee - 迭代函数,将数组元素转换为数字
176
+ * @returns 总和
177
+ * @example
178
+ * ```typescript
179
+ * sumBy([{ n: 1 }, { n: 2 }], o => o.n)
180
+ * // => 3
181
+ * ```
182
+ */
183
+ export declare function sumBy<T>(array: T[], iteratee: (value: T) => number): number;
184
+ /**
185
+ * 随机打乱数组(Fisher-Yates 洗牌算法)
186
+ * @category Array
187
+ * @param array - 源数组
188
+ * @returns 打乱后的新数组
189
+ * @example
190
+ * ```typescript
191
+ * shuffle([1, 2, 3, 4, 5])
192
+ * // => [3, 1, 5, 2, 4] (随机顺序)
193
+ * ```
194
+ */
195
+ export declare function shuffle<T>(array: T[]): T[];
196
+ /**
197
+ * 从数组中随机取一个元素
198
+ * @category Array
199
+ * @param array - 源数组
200
+ * @returns 随机元素,如果数组为空则返回 undefined
201
+ * @example
202
+ * ```typescript
203
+ * sample([1, 2, 3, 4, 5])
204
+ * // => 3 (随机)
205
+ * ```
206
+ */
207
+ export declare function sample<T>(array: T[]): T | undefined;
208
+ /**
209
+ * 从数组中随机取多个元素
210
+ * @category Array
211
+ * @param array - 源数组
212
+ * @param n - 要取的元素数量
213
+ * @returns 包含随机元素的新数组
214
+ * @example
215
+ * ```typescript
216
+ * sampleSize([1, 2, 3, 4, 5], 3)
217
+ * // => [2, 5, 1] (随机)
218
+ * ```
219
+ */
220
+ export declare function sampleSize<T>(array: T[], n: number): T[];
221
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../src/array.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,SAAI,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAEjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAEjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAEjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEvC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEvC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,EAAE,CAU1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAIlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAMpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,SAAI,GAAG,CAAC,EAAE,EAAE,CAOpD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAG1D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAIjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAE3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAO1C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAEnD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAGxD"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * 创建防抖函数
3
+ */
4
+ export declare function debounce<T extends (...args: any[]) => any>(func: T, wait: number, options?: {
5
+ leading?: boolean;
6
+ trailing?: boolean;
7
+ }): T & {
8
+ cancel: () => void;
9
+ };
10
+ /**
11
+ * 创建节流函数
12
+ */
13
+ export declare function throttle<T extends (...args: any[]) => any>(func: T, wait: number, options?: {
14
+ leading?: boolean;
15
+ trailing?: boolean;
16
+ }): T & {
17
+ cancel: () => void;
18
+ };
19
+ /**
20
+ * 创建只执行一次的函数
21
+ */
22
+ export declare function once<T extends (...args: any[]) => any>(func: T): T;
23
+ /**
24
+ * 延迟执行函数
25
+ */
26
+ export declare function delay(func: (...args: any[]) => any, wait: number, ...args: any[]): NodeJS.Timeout;
27
+ /**
28
+ * 创建记忆化函数
29
+ */
30
+ export declare function memoize<T extends (...args: any[]) => any>(func: T, resolver?: (...args: Parameters<T>) => any): T & {
31
+ cache: Map<any, any>;
32
+ };
33
+ /**
34
+ * 柯里化函数
35
+ */
36
+ export declare function curry<T extends (...args: any[]) => any>(func: T, arity?: number): any;
37
+ /**
38
+ * 函数组合
39
+ */
40
+ export declare function compose<T>(...funcs: Array<(arg: T) => T>): (arg: T) => T;
41
+ /**
42
+ * 管道函数
43
+ */
44
+ export declare function pipe<T>(...funcs: Array<(arg: T) => T>): (arg: T) => T;
45
+ //# sourceMappingURL=function.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.d.ts","sourceRoot":"","sources":["../src/function.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACtD,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CA0C5B;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACxD,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GACtD,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,IAAI,CAAA;CAAE,CA+C5B;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAWlE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,CAEjG;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACvD,IAAI,EAAE,CAAC,EACP,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,GACzC,CAAC,GAAG;IAAE,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAAE,CAe9B;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EACrD,IAAI,EAAE,CAAC,EACP,KAAK,GAAE,MAAoB,GAC1B,GAAG,CASL;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAExE;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAErE"}
@@ -0,0 +1,7 @@
1
+ export { isNil, isArray, isObject, isFunction, isString, isNumber, isBoolean, isEmpty, } from './lang';
2
+ export { slice, head, last, tail, uniq, uniqBy, flatten, flattenDeep, chunk, compact, difference, intersection, sum, sumBy, shuffle, sample, sampleSize, } from './array';
3
+ export { cloneDeep, get, set, merge, pick, omit, keys, values, entries, invert, mapValues, } from './object';
4
+ export { upperCase, lowerCase, capitalize, camelCase, snakeCase, kebabCase, trim, trimStart, trimEnd, repeat, padStart, padEnd, truncate, words, replace, startsWith, endsWith, } from './string';
5
+ export { debounce, throttle, once, delay, memoize, curry, compose, pipe, } from './function';
6
+ export { range, random, clamp, ceil, floor, round, mean, max, min, maxBy, minBy, } from './math';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,GACR,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,EACP,WAAW,EACX,KAAK,EACL,OAAO,EACP,UAAU,EACV,YAAY,EACZ,GAAG,EACH,KAAK,EACL,OAAO,EACP,MAAM,EACN,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,SAAS,EACT,GAAG,EACH,GAAG,EACH,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAO,EACP,MAAM,EACN,SAAS,GACV,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,IAAI,EACJ,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,EACL,OAAO,EACP,UAAU,EACV,QAAQ,GACT,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,IAAI,GACL,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,KAAK,EACL,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,IAAI,EACJ,GAAG,EACH,GAAG,EACH,KAAK,EACL,KAAK,GACN,MAAM,QAAQ,CAAC"}