@aiao/utils 0.0.5 → 0.0.7
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/dist/@browser/broadcast-channel-pool.d.ts +26 -6
- package/dist/@browser/broadcast-channel-pool.d.ts.map +1 -1
- package/dist/@browser/index.d.ts +2 -0
- package/dist/@browser/index.d.ts.map +1 -1
- package/dist/@browser/leader-election.d.ts +40 -2
- package/dist/@browser/leader-election.d.ts.map +1 -1
- package/dist/@browser/opfs-detection.d.ts +12 -0
- package/dist/@browser/opfs-detection.d.ts.map +1 -0
- package/dist/@browser/requestIdleCallbackPolyfill.d.ts +2 -0
- package/dist/@browser/requestIdleCallbackPolyfill.d.ts.map +1 -0
- package/dist/array/difference.d.ts +3 -3
- package/dist/array/flatten.d.ts +3 -3
- package/dist/array/flattenDeep.d.ts +3 -3
- package/dist/array/intersection.d.ts +4 -4
- package/dist/array/needArray.d.ts +5 -10
- package/dist/array/needArray.d.ts.map +1 -1
- package/dist/array/orderBy.d.ts +18 -4
- package/dist/array/orderBy.d.ts.map +1 -1
- package/dist/array/sortBy.d.ts +5 -5
- package/dist/array/unionBy.d.ts +20 -0
- package/dist/array/unionBy.d.ts.map +1 -1
- package/dist/async/{AsyncTaskExecutor.d.ts → AsyncQueueExecutor.d.ts} +15 -10
- package/dist/async/AsyncQueueExecutor.d.ts.map +1 -0
- package/dist/async/index.d.ts +1 -1
- package/dist/async/index.d.ts.map +1 -1
- package/dist/async/nextMacroTask.d.ts +11 -2
- package/dist/async/nextMacroTask.d.ts.map +1 -1
- package/dist/async/nextMicroTask.d.ts +1 -1
- package/dist/binary/uint8ArrayToString.d.ts +1 -1
- package/dist/collection/traverseObjectKeys.d.ts.map +1 -1
- package/dist/crypto/aesDecrypt.d.ts +12 -5
- package/dist/crypto/aesDecrypt.d.ts.map +1 -1
- package/dist/crypto/aesEncrypt.d.ts +2 -2
- package/dist/crypto/rsaGenerateKey.d.ts +22 -0
- package/dist/crypto/rsaGenerateKey.d.ts.map +1 -1
- package/dist/date/parseTime.d.ts +23 -0
- package/dist/date/parseTime.d.ts.map +1 -1
- package/dist/date/stringTime.d.ts +12 -0
- package/dist/date/stringTime.d.ts.map +1 -1
- package/dist/function/once.d.ts +2 -2
- package/dist/function/throttle.d.ts +3 -3
- package/dist/index.js +471 -409
- package/dist/indexing/fractional-indexing.d.ts +50 -11
- package/dist/indexing/fractional-indexing.d.ts.map +1 -1
- package/dist/number/canBeNumber.d.ts +2 -2
- package/dist/number/numberStep.d.ts +2 -2
- package/dist/number/numberStepScreenSize.d.ts +13 -0
- package/dist/number/numberStepScreenSize.d.ts.map +1 -1
- package/dist/number/numberStrip.d.ts +3 -3
- package/dist/number/toInt.d.ts +12 -6
- package/dist/number/toInt.d.ts.map +1 -1
- package/dist/number/tryToNumber.d.ts +17 -8
- package/dist/number/tryToNumber.d.ts.map +1 -1
- package/dist/object/deepFreeze.d.ts +17 -1
- package/dist/object/deepFreeze.d.ts.map +1 -1
- package/dist/object/flattenPathObjectToPlainObject.d.ts +14 -3
- package/dist/object/flattenPathObjectToPlainObject.d.ts.map +1 -1
- package/dist/object/get.d.ts +2 -2
- package/dist/object/has.d.ts +2 -2
- package/dist/object/isEqual.d.ts +3 -3
- package/dist/object/omit.d.ts +2 -2
- package/dist/object/omitBy.d.ts +3 -3
- package/dist/object/pick.d.ts +2 -2
- package/dist/object/plainObjectToFlattenPathObject.d.ts +10 -4
- package/dist/object/plainObjectToFlattenPathObject.d.ts.map +1 -1
- package/dist/object/set.d.ts +3 -3
- package/dist/object/setWith.d.ts +0 -1
- package/dist/object/setWith.d.ts.map +1 -1
- package/dist/object/toPlainObject.d.ts +19 -0
- package/dist/object/toPlainObject.d.ts.map +1 -1
- package/dist/object/zipObject.d.ts +22 -5
- package/dist/object/zipObject.d.ts.map +1 -1
- package/dist/platform/is-browser.d.ts +14 -1
- package/dist/platform/is-browser.d.ts.map +1 -1
- package/dist/random/randomArrayItem.d.ts +18 -1
- package/dist/random/randomArrayItem.d.ts.map +1 -1
- package/dist/random/randomFloat.d.ts +16 -0
- package/dist/random/randomFloat.d.ts.map +1 -1
- package/dist/random/randomInt.d.ts +14 -4
- package/dist/random/randomInt.d.ts.map +1 -1
- package/dist/random/randomString.d.ts +16 -0
- package/dist/random/randomString.d.ts.map +1 -1
- package/dist/random/randomUintByLength.d.ts +15 -0
- package/dist/random/randomUintByLength.d.ts.map +1 -1
- package/dist/random/randomUintString.d.ts +15 -0
- package/dist/random/randomUintString.d.ts.map +1 -1
- package/dist/string/camelCase.d.ts +1 -1
- package/dist/string/getWords.d.ts +21 -0
- package/dist/string/getWords.d.ts.map +1 -1
- package/dist/string/kebabCase.d.ts +2 -2
- package/dist/string/stringSingleline.d.ts +14 -1
- package/dist/string/stringSingleline.d.ts.map +1 -1
- package/dist/string/stringToArrayBuffer.d.ts +0 -1
- package/dist/string/stringToArrayBuffer.d.ts.map +1 -1
- package/dist/tools/event.d.ts +35 -22
- package/dist/tools/event.d.ts.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/type-definition/result-types.d.ts +26 -4
- package/dist/type-definition/result-types.d.ts.map +1 -1
- package/dist/types/AnyFunction.d.ts +2 -2
- package/dist/types/DeepPartial.d.ts +3 -3
- package/dist/types/isArray.d.ts +1 -1
- package/dist/types/isArrayBuffer.d.ts +3 -3
- package/dist/types/isBoolean.d.ts +3 -3
- package/dist/types/isDate.d.ts +3 -3
- package/dist/types/isEmpty.d.ts +4 -4
- package/dist/types/isNil.d.ts +2 -2
- package/dist/types/isNumber.d.ts +3 -3
- package/dist/types/isObject.d.ts +2 -2
- package/dist/types/isPlainObject.d.ts +3 -3
- package/dist/types/isPrimitive.d.ts +3 -3
- package/dist/types/isRegExp.d.ts +3 -3
- package/dist/types/isString.d.ts +2 -2
- package/dist/types/isUint8Array.d.ts +3 -3
- package/package.json +4 -4
- package/dist/async/AsyncTaskExecutor.d.ts.map +0 -1
|
@@ -1,18 +1,38 @@
|
|
|
1
1
|
import { Observable } from 'rxjs';
|
|
2
|
-
export
|
|
2
|
+
export interface BroadcastTopic<T = any> {
|
|
3
3
|
message$: Observable<T>;
|
|
4
4
|
emit: (message: T) => void;
|
|
5
|
-
}
|
|
5
|
+
}
|
|
6
6
|
/**
|
|
7
|
-
* BroadcastChannel
|
|
8
|
-
* 统一管理所有的 BroadcastChannel
|
|
7
|
+
* BroadcastChannel 池
|
|
8
|
+
* 统一管理所有的 BroadcastChannel,支持自动资源清理
|
|
9
9
|
*/
|
|
10
10
|
declare class BroadcastChannelPool {
|
|
11
|
-
|
|
11
|
+
private cache;
|
|
12
|
+
/**
|
|
13
|
+
* 发送消息到指定频道
|
|
14
|
+
* @param event 频道名称
|
|
15
|
+
* @param data 消息数据
|
|
16
|
+
* @throws 如果频道不存在则抛出错误
|
|
17
|
+
*/
|
|
12
18
|
emit<T = any>(event: string, data: T): void;
|
|
13
|
-
|
|
19
|
+
/**
|
|
20
|
+
* 订阅指定频道的消息
|
|
21
|
+
* @param event 频道名称
|
|
22
|
+
* @returns Observable 消息流
|
|
23
|
+
*/
|
|
24
|
+
on<T = any>(event: string): Observable<T>;
|
|
25
|
+
/**
|
|
26
|
+
* 减少引用计数,当计数为 0 时关闭频道
|
|
27
|
+
*/
|
|
28
|
+
private decrementRef;
|
|
14
29
|
}
|
|
15
30
|
export declare const pool: BroadcastChannelPool;
|
|
31
|
+
/**
|
|
32
|
+
* 创建一个 BroadcastChannel 主题
|
|
33
|
+
* @param event 频道名称
|
|
34
|
+
* @returns BroadcastTopic 对象,包含消息流和发送方法
|
|
35
|
+
*/
|
|
16
36
|
export declare const createBroadcastTopic: <T = any>(event: string) => BroadcastTopic<T>;
|
|
17
37
|
export {};
|
|
18
38
|
//# sourceMappingURL=broadcast-channel-pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast-channel-pool.d.ts","sourceRoot":"","sources":["../../src/@browser/broadcast-channel-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"broadcast-channel-pool.d.ts","sourceRoot":"","sources":["../../src/@browser/broadcast-channel-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAyB,MAAM,MAAM,CAAC;AAEzD,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,GAAG;IACrC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;CAC5B;AAQD;;;GAGG;AACH,cAAM,oBAAoB;IACxB,OAAO,CAAC,KAAK,CAAiC;IAE9C;;;;;OAKG;IACH,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI;IAQ3C;;;;OAIG;IACH,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;IAmCzC;;OAEG;IACH,OAAO,CAAC,YAAY;CASrB;AAED,eAAO,MAAM,IAAI,sBAA6B,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,GAAG,GAAG,EAAE,OAAO,MAAM,KAAG,cAAc,CAAC,CAAC,CAQ7E,CAAC"}
|
package/dist/@browser/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './broadcast-channel-pool.js';
|
|
2
2
|
export * from './IdleTimer.js';
|
|
3
3
|
export * from './leader-election.js';
|
|
4
|
+
export * from './opfs-detection.js';
|
|
4
5
|
export * from './perform-chunk.js';
|
|
6
|
+
export * from './requestIdleCallbackPolyfill.js';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/@browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/@browser/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kCAAkC,CAAC"}
|
|
@@ -1,8 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 基于 Web Locks API 的 Leader Election 实现
|
|
3
|
+
* 用于在多个浏览器 tab/window 之间选举唯一的 leader
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const leader = new LeaderElection('my-app');
|
|
8
|
+
*
|
|
9
|
+
* const unsubscribe = leader.elect(isLeader => {
|
|
10
|
+
* if (isLeader) {
|
|
11
|
+
* console.log('当前 tab 成为 leader');
|
|
12
|
+
* // 执行只有 leader 才能做的事情,如:
|
|
13
|
+
* // - 与服务器建立 WebSocket 连接
|
|
14
|
+
* // - 执行定时同步任务
|
|
15
|
+
* }
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* // 同步检查是否为 leader
|
|
19
|
+
* console.log(leader.isLeader);
|
|
20
|
+
*
|
|
21
|
+
* // 取消订阅
|
|
22
|
+
* unsubscribe();
|
|
23
|
+
*
|
|
24
|
+
* // 页面关闭时自动释放,也可手动调用
|
|
25
|
+
* leader.dispose();
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
1
28
|
export declare class LeaderElection {
|
|
2
29
|
#private;
|
|
3
|
-
private name;
|
|
30
|
+
private readonly name;
|
|
31
|
+
/** 当前是否为 leader */
|
|
4
32
|
get isLeader(): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* @param name - 锁名称,相同名称的实例竞争同一个 leader 位置
|
|
35
|
+
*/
|
|
5
36
|
constructor(name: string);
|
|
6
|
-
|
|
37
|
+
/**
|
|
38
|
+
* 参与 leader 选举
|
|
39
|
+
* @param callback - 成为 leader 时回调,参数为 `true`
|
|
40
|
+
* @returns 取消订阅函数
|
|
41
|
+
*/
|
|
42
|
+
elect(callback: (isLeader: boolean) => void): () => boolean;
|
|
43
|
+
/** 释放 leader 身份并清理资源 */
|
|
44
|
+
dispose(): void;
|
|
7
45
|
}
|
|
8
46
|
//# sourceMappingURL=leader-election.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leader-election.d.ts","sourceRoot":"","sources":["../../src/@browser/leader-election.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"leader-election.d.ts","sourceRoot":"","sources":["../../src/@browser/leader-election.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,cAAc;;IAeb,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,mBAAmB;IACnB,IAAI,QAAQ,YAEX;IAED;;OAEG;gBAC0B,IAAI,EAAE,MAAM;IAIzC;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI;IAmB3C,wBAAwB;IACxB,OAAO;CASR"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 检测浏览器是否支持 OPFS (Origin Private File System)
|
|
3
|
+
* @returns {boolean} 是否支持 OPFS
|
|
4
|
+
*/
|
|
5
|
+
export declare const isOPFSSupported: () => boolean;
|
|
6
|
+
/**
|
|
7
|
+
* 异步检测 OPFS 是否真正可用
|
|
8
|
+
* 有些浏览器可能有 API 但实际不可用
|
|
9
|
+
* @returns {Promise<boolean>} 是否可用
|
|
10
|
+
*/
|
|
11
|
+
export declare const checkOPFSAvailable: () => Promise<boolean>;
|
|
12
|
+
//# sourceMappingURL=opfs-detection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opfs-detection.d.ts","sourceRoot":"","sources":["../../src/@browser/opfs-detection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,eAAe,QAAO,OAAwE,CAAC;AAE5G;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,OAAO,CAU1D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestIdleCallbackPolyfill.d.ts","sourceRoot":"","sources":["../../src/@browser/requestIdleCallbackPolyfill.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,YAavC,CAAC"}
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
* @example
|
|
24
24
|
* difference([{ id: 1 }], [{ id: 1 }]);
|
|
25
25
|
* // 返回 [{ id: 1 }](对象引用不同,视为不同元素)
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
26
|
+
* **Note:** 使用 Array.prototype.includes 实现,因此比较使用严格相等 (===)
|
|
27
|
+
* **Note:** 结果数组中不会包含 array1 中重复出现但也存在于 array2 中的元素
|
|
28
|
+
* **Warning:** 不支持对象的深度比较,仅比较引用是否相同
|
|
29
29
|
*/
|
|
30
30
|
export declare const difference: <T>(array1: T[], array2: T[]) => T[];
|
|
31
31
|
//# sourceMappingURL=difference.d.ts.map
|
package/dist/array/flatten.d.ts
CHANGED
|
@@ -17,9 +17,9 @@
|
|
|
17
17
|
* flatten([1, 2, 3]); // 返回 [1, 2, 3] (无嵌套数组时返回原数组元素)
|
|
18
18
|
* @example
|
|
19
19
|
* flatten([]); // 返回 [] (空输入数组)
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* **Note:** 与flattenDeep的区别:此函数仅扁平化一层,而flattenDeep会递归扁平化所有层级
|
|
21
|
+
* **Note:** 函数返回新数组,不会修改原输入数组
|
|
22
|
+
* **Note:** 非数组元素会被直接包含在结果中
|
|
23
23
|
*/
|
|
24
24
|
export declare const flatten: <T>(array: (T | T[])[]) => T[];
|
|
25
25
|
//# sourceMappingURL=flatten.d.ts.map
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
* // 返回 [1, 2, 3, null, undefined, true] (包含多种类型元素)
|
|
19
19
|
* @example
|
|
20
20
|
* flattenDeep([[[[[1]]]]]); // 返回 [1] (单一元素的深层嵌套)
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* **Note:** 使用递归实现,对于层级极深的数组可能导致栈溢出
|
|
22
|
+
* **Note:** 非数组元素(包括null和undefined)会被直接包含在结果中
|
|
23
|
+
* **Note:** 仅处理Array类型的嵌套结构,不处理类数组对象(如arguments、NodeList等)
|
|
24
24
|
*/
|
|
25
25
|
export declare const flattenDeep: (array: any[]) => any[];
|
|
26
26
|
//# sourceMappingURL=flattenDeep.d.ts.map
|
|
@@ -21,10 +21,10 @@
|
|
|
21
21
|
* @example
|
|
22
22
|
* intersection([{ id: 1 }], [{ id: 1 }]);
|
|
23
23
|
* // 返回 [](对象引用不同,视为不同元素)
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
24
|
+
* **Note:** 元素比较使用严格相等 (===),因此 1 和 '1' 被视为不同元素
|
|
25
|
+
* **Note:** 结果数组会自动去重,即使原数组包含重复元素
|
|
26
|
+
* **Note:** 至少需要传入一个数组参数,否则会抛出运行时错误
|
|
27
|
+
* **Warning:** 对于大型数组,此实现可能存在性能问题(时间复杂度 O(n^2))
|
|
28
28
|
*/
|
|
29
29
|
export declare const intersection: (...arrays: any[]) => any;
|
|
30
30
|
//# sourceMappingURL=intersection.d.ts.map
|
|
@@ -13,25 +13,20 @@ type ArrayType<T = any> = T extends Array<infer R> ? R : T;
|
|
|
13
13
|
* - 当T为null/undefined时,返回空数组
|
|
14
14
|
* - 其他情况返回包含value的单元素数组
|
|
15
15
|
* @example
|
|
16
|
+
* ```ts
|
|
16
17
|
* needArray(5); // 返回 [5](基本类型包装)
|
|
17
|
-
* @example
|
|
18
18
|
* needArray([1, 2, 3]); // 返回 [1, 2, 3](数组直接返回)
|
|
19
|
-
* @example
|
|
20
19
|
* needArray(null); // 返回 [](null处理)
|
|
21
|
-
* @example
|
|
22
20
|
* needArray(undefined); // 返回 [](undefined处理)
|
|
23
|
-
* @example
|
|
24
21
|
* needArray('hello'); // 返回 ['hello'](字符串包装)
|
|
25
|
-
* @example
|
|
26
22
|
* needArray({ a: 1 }); // 返回 [{ a: 1 }](对象包装)
|
|
27
|
-
* @example
|
|
28
23
|
* needArray(true); // 返回 [true](布尔值包装)
|
|
29
|
-
* @example
|
|
30
24
|
* needArray(new Date()); // 返回 [Date实例](特殊对象包装)
|
|
25
|
+
* ```
|
|
31
26
|
* @see ArrayType - 用于提取数组元素类型的工具类型,定义为:type ArrayType<T = any> = T extends Array<infer R> ? R : T
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
27
|
+
* **Note:** 使用isNil函数判断null/undefined,该函数来自'../types'模块
|
|
28
|
+
* **Note:** 对于数组输入,返回原数组引用而非副本,修改返回值会影响原数组
|
|
29
|
+
* **Note:** 不处理类数组对象(如arguments、NodeList),会将其视为普通对象包装为单元素数组
|
|
35
30
|
*/
|
|
36
31
|
export declare const needArray: <T = any>(value: T) => ArrayType<T>[];
|
|
37
32
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"needArray.d.ts","sourceRoot":"","sources":["../../src/array/needArray.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3D
|
|
1
|
+
{"version":3,"file":"needArray.d.ts","sourceRoot":"","sources":["../../src/array/needArray.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,KAAG,SAAS,CAAC,CAAC,CAAC,EASzD,CAAC"}
|
package/dist/array/orderBy.d.ts
CHANGED
|
@@ -1,9 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 根据指定的迭代器和排序方向对数组进行排序
|
|
3
|
-
*
|
|
4
|
-
* @
|
|
5
|
-
* @param
|
|
6
|
-
* @
|
|
3
|
+
* 支持多字段排序,按迭代器数组顺序依次比较,当字段相等时继续比较下一个字段
|
|
4
|
+
* @template T - 数组元素的类型
|
|
5
|
+
* @param collection - 要排序的数组
|
|
6
|
+
* @param iteratees - 用于排序的属性名数组,每个元素为对象属性路径字符串
|
|
7
|
+
* @param orders - 排序方向数组,对应每个迭代器的排序方向,默认为 'asc'
|
|
8
|
+
* @returns 排序后的新数组,不修改原数组
|
|
9
|
+
* @example
|
|
10
|
+
* orderBy([{ name: 'Alice', age: 25 }, { name: 'Bob', age: 30 }], ['age'], ['desc']);
|
|
11
|
+
* // 返回 [{ name: 'Bob', age: 30 }, { name: 'Alice', age: 25 }](按年龄降序)
|
|
12
|
+
* @example
|
|
13
|
+
* orderBy([{ name: 'Alice', age: 25 }, { name: 'Bob', age: 25 }], ['age', 'name'], ['asc', 'asc']);
|
|
14
|
+
* // 返回 [{ name: 'Alice', age: 25 }, { name: 'Bob', age: 25 }](先按年龄,再按姓名排序)
|
|
15
|
+
* @example
|
|
16
|
+
* orderBy([3, 1, 4, 1, 5], [], []);
|
|
17
|
+
* // 返回 [3, 1, 4, 1, 5](无迭代器时返回原数组副本)
|
|
18
|
+
* **Note:** null 和 undefined 值会被视为最小值
|
|
19
|
+
* **Note:** 使用数组副本进行排序,不修改原数组
|
|
20
|
+
* **Note:** 当 iteratees 为空数组时,返回原数组的浅拷贝
|
|
7
21
|
*/
|
|
8
22
|
export declare const orderBy: <T>(collection: T[], iteratees?: string[], orders?: ("asc" | "desc")[]) => T[];
|
|
9
23
|
//# sourceMappingURL=orderBy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orderBy.d.ts","sourceRoot":"","sources":["../../src/array/orderBy.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"orderBy.d.ts","sourceRoot":"","sources":["../../src/array/orderBy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,YAAY,CAAC,EAAE,EAAE,YAAW,MAAM,EAAO,EAAE,SAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,EAAO,KAAG,CAAC,EAuCxG,CAAC"}
|
package/dist/array/sortBy.d.ts
CHANGED
|
@@ -28,10 +28,10 @@
|
|
|
28
28
|
* // 处理包含null/undefined的属性值
|
|
29
29
|
* const mixed = [{ score: 90 }, { score: null }, { score: 85 }];
|
|
30
30
|
* mixed.sort(sortBy('score')); // null值排在最后
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
31
|
+
* **Note:** 字符串比较区分大小写,'Z'会排在'a'前面
|
|
32
|
+
* **Note:** 不支持对象类型的属性值比较,复杂类型需先转换为基本类型
|
|
33
|
+
* **Note:** 排序是原地(in-place)进行的,会修改原始数组
|
|
34
|
+
* **Note:** 当属性不存在于对象中时,该对象会被视为值为undefined
|
|
35
35
|
*/
|
|
36
|
-
export declare const sortBy: (key: string) => (a: Record<string, any>, b: Record<string, any>) =>
|
|
36
|
+
export declare const sortBy: (key: string) => (a: Record<string, any>, b: Record<string, any>) => 1 | 0 | -1;
|
|
37
37
|
//# sourceMappingURL=sortBy.d.ts.map
|
package/dist/array/unionBy.d.ts
CHANGED
|
@@ -1,2 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 根据指定的键函数对数组进行去重,返回唯一元素的新数组
|
|
3
|
+
* 使用键函数提取每个元素的唯一标识符,保留第一次出现的元素
|
|
4
|
+
* @template T - 数组元素的类型
|
|
5
|
+
* @param array - 要去重的数组
|
|
6
|
+
* @param getKey - 键函数,用于从元素中提取唯一标识符
|
|
7
|
+
* @returns 去重后的新数组,保留元素在原数组中的出现顺序
|
|
8
|
+
* @example
|
|
9
|
+
* unionBy([{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 1, name: 'Alice2' }], item => item.id);
|
|
10
|
+
* // 返回 [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }](按id去重)
|
|
11
|
+
* @example
|
|
12
|
+
* unionBy(['apple', 'banana', 'Apple'], item => item.toLowerCase());
|
|
13
|
+
* // 返回 ['apple', 'banana'](按小写字母去重)
|
|
14
|
+
* @example
|
|
15
|
+
* unionBy([1, 2, 3, 2, 1], item => item);
|
|
16
|
+
* // 返回 [1, 2, 3](基本类型去重)
|
|
17
|
+
* **Note:** 键函数的返回值必须是字符串或数字类型
|
|
18
|
+
* **Note:** 保留第一次出现的元素,后续重复元素被过滤掉
|
|
19
|
+
* **Note:** 返回新数组,不修改原数组
|
|
20
|
+
*/
|
|
1
21
|
export declare const unionBy: <T = any>(array: T[], getKey: (item: T) => string | number) => T[];
|
|
2
22
|
//# sourceMappingURL=unionBy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unionBy.d.ts","sourceRoot":"","sources":["../../src/array/unionBy.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,GAAI,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,QACS,CAAC"}
|
|
1
|
+
{"version":3,"file":"unionBy.d.ts","sourceRoot":"","sources":["../../src/array/unionBy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,QACS,CAAC"}
|
|
@@ -2,31 +2,36 @@
|
|
|
2
2
|
* 执行器状态接口
|
|
3
3
|
*/
|
|
4
4
|
interface ExecutorStatus {
|
|
5
|
+
/**
|
|
6
|
+
* 当前运行中的任务数
|
|
7
|
+
*/
|
|
5
8
|
running: number;
|
|
9
|
+
/**
|
|
10
|
+
* 队列中等待的任务数
|
|
11
|
+
*/
|
|
6
12
|
queued: number;
|
|
13
|
+
/**
|
|
14
|
+
* 最大并发数
|
|
15
|
+
*/
|
|
7
16
|
maxConcurrent: number;
|
|
8
17
|
}
|
|
9
18
|
/**
|
|
10
19
|
* 异步任务执行器
|
|
11
20
|
* 支持并发控制和动态任务调度
|
|
12
21
|
*/
|
|
13
|
-
export declare class
|
|
22
|
+
export declare class AsyncQueueExecutor {
|
|
14
23
|
private maxConcurrent;
|
|
15
24
|
private running;
|
|
16
25
|
private queue;
|
|
26
|
+
private queue_map;
|
|
17
27
|
constructor(maxConcurrent?: number);
|
|
18
28
|
/**
|
|
19
29
|
* 添加任务到执行器
|
|
20
30
|
* @param task - 返回 Promise 的异步任务函数
|
|
31
|
+
* @param id - 任务唯一标识符(可选),用于去重相同任务
|
|
21
32
|
* @returns 返回任务执行结果的 Promise
|
|
22
33
|
*/
|
|
23
|
-
addTask<T>(task: () => Promise<T
|
|
24
|
-
/**
|
|
25
|
-
* 批量添加多个任务
|
|
26
|
-
* @param tasks - 任务数组
|
|
27
|
-
* @returns 返回所有任务结果的 Promise 数组
|
|
28
|
-
*/
|
|
29
|
-
addTasks<T>(tasks: (() => Promise<T>)[]): Promise<T[]>;
|
|
34
|
+
addTask<T>(task: () => Promise<T>, id?: string | number): Promise<T>;
|
|
30
35
|
/**
|
|
31
36
|
* 获取当前状态
|
|
32
37
|
* @returns 包含运行中任务数、队列长度和最大并发数
|
|
@@ -57,7 +62,7 @@ export declare class AsyncTaskExecutor {
|
|
|
57
62
|
/**
|
|
58
63
|
* 执行队列中的下一个任务
|
|
59
64
|
*/
|
|
60
|
-
private
|
|
65
|
+
private _run_next;
|
|
61
66
|
}
|
|
62
67
|
export {};
|
|
63
|
-
//# sourceMappingURL=
|
|
68
|
+
//# sourceMappingURL=AsyncQueueExecutor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncQueueExecutor.d.ts","sourceRoot":"","sources":["../../src/async/AsyncQueueExecutor.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,UAAU,cAAc;IACtB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,SAAS,CAAiD;gBAEtD,aAAa,GAAE,MAAU;IAIrC;;;;;OAKG;IACH,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAiBpE;;;OAGG;IACH,SAAS,IAAI,cAAc;IAQ3B;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQtC;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,OAAO,CAAC,SAAS;CAoBlB"}
|
package/dist/async/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/async/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/async/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
2
|
+
* 在下一个宏任务中执行函数
|
|
3
|
+
* 使用 setTimeout(fn, 0) 将函数推迟到当前执行栈清空后执行
|
|
4
|
+
* @param fn - 要延迟执行的函数
|
|
5
|
+
* @example
|
|
6
|
+
* console.log('1');
|
|
7
|
+
* nextMacroTask(() => console.log('3'));
|
|
8
|
+
* console.log('2');
|
|
9
|
+
* // 输出顺序: 1, 2, 3
|
|
10
|
+
* **Note:** 宏任务包括 setTimeout、setInterval、I/O 操作等
|
|
11
|
+
* **Note:** 常用于避免阻塞当前执行栈,或确保 DOM 更新后再执行代码
|
|
12
|
+
* **Note:** 与 nextMicroTask 的区别:宏任务在微任务之后执行
|
|
4
13
|
*/
|
|
5
14
|
export declare const nextMacroTask: (fn: () => any) => NodeJS.Timeout;
|
|
6
15
|
//# sourceMappingURL=nextMacroTask.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextMacroTask.d.ts","sourceRoot":"","sources":["../../src/async/nextMacroTask.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"nextMacroTask.d.ts","sourceRoot":"","sources":["../../src/async/nextMacroTask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,GAAG,mBAA8B,CAAC"}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
* }
|
|
24
24
|
* @param fn - 要推迟执行的函数,可选
|
|
25
25
|
* @returns 解析为回调函数返回值的Promise,若回调抛出错误则Promise会被拒绝
|
|
26
|
-
*
|
|
26
|
+
* **Note:** 基于微任务队列实现,执行时机早于setTimeout(fn, 0)等宏任务
|
|
27
27
|
*/
|
|
28
28
|
export declare const nextMicroTask: <T = void, R = void>(fn?: (this: T) => R) => Promise<R | void>;
|
|
29
29
|
//# sourceMappingURL=nextMicroTask.d.ts.map
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* uint8ArrayToString(bytes); // 返回 'Hello'
|
|
8
8
|
* @param u8 - 要转换的Uint8Array实例
|
|
9
9
|
* @returns 解码后的UTF-8字符串
|
|
10
|
-
*
|
|
10
|
+
* **Note:** 使用默认的UTF-8编码,不支持其他字符编码
|
|
11
11
|
*/
|
|
12
12
|
export declare const uint8ArrayToString: (u8: Uint8Array) => string;
|
|
13
13
|
//# sourceMappingURL=uint8ArrayToString.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseObjectKeys.d.ts","sourceRoot":"","sources":["../../src/collection/traverseObjectKeys.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"traverseObjectKeys.d.ts","sourceRoot":"","sources":["../../src/collection/traverseObjectKeys.ts"],"names":[],"mappings":"AAyBA,KAAK,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;AAkB/D,eAAO,MAAM,kBAAkB,GAAI,YAAY,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,EAAE,UAAU,QAAQ,KAAG,IAMhG,CAAC"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* AES
|
|
3
|
-
* @param cipherText
|
|
4
|
-
* @param keyString
|
|
5
|
-
* @param ivString
|
|
6
|
-
* @returns
|
|
2
|
+
* 使用 AES-GCM 算法解密数据
|
|
3
|
+
* @param cipherText - Base64 编码的密文字符串
|
|
4
|
+
* @param keyString - Base64 编码的 AES 密钥字符串
|
|
5
|
+
* @param ivString - Base64 编码的初始化向量字符串
|
|
6
|
+
* @returns 解密后的明文字符串
|
|
7
|
+
* @throws {Error} 当解密失败时抛出错误
|
|
8
|
+
* @example
|
|
9
|
+
* const plaintext = await aesDecrypt('encryptedData', 'keyInBase64', 'ivInBase64');
|
|
10
|
+
* console.log(plaintext); // 输出解密后的明文
|
|
11
|
+
* **Note:** 使用 Web Crypto API 进行 AES-GCM 解密
|
|
12
|
+
* **Note:** 密钥长度为 256 位
|
|
13
|
+
* **Note:** 所有输入参数都应为有效的 Base64 字符串
|
|
7
14
|
*/
|
|
8
15
|
export declare function aesDecrypt(cipherText: string, keyString: string, ivString: string): Promise<string>;
|
|
9
16
|
//# sourceMappingURL=aesDecrypt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aesDecrypt.d.ts","sourceRoot":"","sources":["../../src/crypto/aesDecrypt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aesDecrypt.d.ts","sourceRoot":"","sources":["../../src/crypto/aesDecrypt.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,mBAsBvF"}
|
|
@@ -1,4 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 导出加密密钥为指定格式
|
|
3
|
+
* @param key - 要导出的 CryptoKey 对象
|
|
4
|
+
* @param type - 导出格式,默认为 'pkcs8'
|
|
5
|
+
* @returns Base64 编码的密钥字符串
|
|
6
|
+
*/
|
|
1
7
|
export declare function exportCryptoKey(key: CryptoKey, type?: Exclude<KeyFormat, 'jwk'>): Promise<string>;
|
|
8
|
+
/**
|
|
9
|
+
* 生成 RSA 密钥对
|
|
10
|
+
* @param modulusLength - 模数长度,默认 1024,可选值:1024、2048、4096
|
|
11
|
+
* @returns 包含公钥和私钥 PEM 格式字符串的对象
|
|
12
|
+
* @property {string} publicKey - PEM 格式的 RSA 公钥
|
|
13
|
+
* @property {string} privateKey - PEM 格式的 RSA 私钥
|
|
14
|
+
* @throws {Error} 当密钥生成失败时抛出错误
|
|
15
|
+
* @example
|
|
16
|
+
* const keyPair = await rsaGenerateKey(2048);
|
|
17
|
+
* console.log(keyPair.publicKey); // PEM 格式的公钥
|
|
18
|
+
* console.log(keyPair.privateKey); // PEM 格式的私钥
|
|
19
|
+
* **Note:** 使用 Web Crypto API 生成 RSA-OAEP 密钥对
|
|
20
|
+
* **Note:** 使用 SHA-512 哈希算法
|
|
21
|
+
* **Note:** 公钥指数固定为 65537 (0x010001)
|
|
22
|
+
* **Note:** 生成的密钥可用于加密和解密操作
|
|
23
|
+
*/
|
|
2
24
|
export declare function rsaGenerateKey(modulusLength?: number): Promise<{
|
|
3
25
|
publicKey: string;
|
|
4
26
|
privateKey: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsaGenerateKey.d.ts","sourceRoot":"","sources":["../../src/crypto/rsaGenerateKey.ts"],"names":[],"mappings":"AAKA,wBAAsB,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,GAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAW,mBAG9F;AAED,wBAAsB,cAAc,CAAC,aAAa,SAAO;;;GAkBxD"}
|
|
1
|
+
{"version":3,"file":"rsaGenerateKey.d.ts","sourceRoot":"","sources":["../../src/crypto/rsaGenerateKey.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,GAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAW,mBAG9F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAAC,aAAa,SAAO;;;GAkBxD"}
|
package/dist/date/parseTime.d.ts
CHANGED
|
@@ -1,10 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 解析两个日期之间的时间差,返回分解后的时间单位
|
|
3
|
+
*/
|
|
1
4
|
export interface ParseTime {
|
|
5
|
+
/** 年数 */
|
|
2
6
|
year: number;
|
|
7
|
+
/** 月数 */
|
|
3
8
|
month: number;
|
|
9
|
+
/** 天数 */
|
|
4
10
|
day: number;
|
|
11
|
+
/** 小时数 */
|
|
5
12
|
hour: number;
|
|
13
|
+
/** 分钟数 */
|
|
6
14
|
minute: number;
|
|
15
|
+
/** 秒数 */
|
|
7
16
|
second: number;
|
|
8
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* 计算两个日期之间的时间差,并分解为年、月、日、时、分、秒
|
|
20
|
+
* @param startDate - 开始日期
|
|
21
|
+
* @param endDate - 结束日期
|
|
22
|
+
* @returns 包含时间差分解结果的对象
|
|
23
|
+
* @example
|
|
24
|
+
* const start = new Date('2023-01-01T00:00:00');
|
|
25
|
+
* const end = new Date('2024-02-02T12:30:45');
|
|
26
|
+
* const result = parseTime(start, end);
|
|
27
|
+
* // 返回: { year: 1, month: 13, day: 397, hour: 12, minute: 30, second: 45 }
|
|
28
|
+
* **Note:** 月份和年份的计算是近似值(30天=1月,12月=1年)
|
|
29
|
+
* **Note:** 所有时间单位都是向下取整的整数
|
|
30
|
+
* **Note:** 返回的月份和年份可能超过常规范围(如13个月表示1年1个月)
|
|
31
|
+
*/
|
|
9
32
|
export declare const parseTime: (startDate: Date, endDate: Date) => ParseTime;
|
|
10
33
|
//# sourceMappingURL=parseTime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseTime.d.ts","sourceRoot":"","sources":["../../src/date/parseTime.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"parseTime.d.ts","sourceRoot":"","sources":["../../src/date/parseTime.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS;IACT,IAAI,EAAE,MAAM,CAAC;IACb,SAAS;IACT,KAAK,EAAE,MAAM,CAAC;IACd,SAAS;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU;IACV,IAAI,EAAE,MAAM,CAAC;IACb,UAAU;IACV,MAAM,EAAE,MAAM,CAAC;IACf,SAAS;IACT,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,SAAS,GAAI,WAAW,IAAI,EAAE,SAAS,IAAI,KAAG,SAS1D,CAAC"}
|
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import { ParseTimeConfig } from './formatPassTime.js';
|
|
2
2
|
import { ParseTime } from './parseTime.js';
|
|
3
|
+
/**
|
|
4
|
+
* 将时间数值格式化为带单位的字符串
|
|
5
|
+
* @param key - 时间单位键名,对应 ParseTime 接口的属性
|
|
6
|
+
* @param value - 时间数值
|
|
7
|
+
* @param config - 可选的配置对象,用于自定义单位名称
|
|
8
|
+
* @returns 格式化后的时间字符串,如 "5 天" 或 "3 hours"
|
|
9
|
+
* @example
|
|
10
|
+
* stringTime('day', 5); // 返回 "5 day"
|
|
11
|
+
* stringTime('hour', 3, { hour: '小时' }); // 返回 "3 小时"
|
|
12
|
+
* **Note:** 如果提供 config,会使用配置中的单位名称,否则使用英文键名
|
|
13
|
+
* **Note:** 此函数主要用于 formatPassTime 等函数的内部实现
|
|
14
|
+
*/
|
|
3
15
|
export declare const stringTime: (key: keyof ParseTime, value: number, config?: ParseTimeConfig) => string;
|
|
4
16
|
//# sourceMappingURL=stringTime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stringTime.d.ts","sourceRoot":"","sources":["../../src/date/stringTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,SAAS,EAAE,OAAO,MAAM,EAAE,SAAS,eAAe,WACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"stringTime.d.ts","sourceRoot":"","sources":["../../src/date/stringTime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU,GAAI,KAAK,MAAM,SAAS,EAAE,OAAO,MAAM,EAAE,SAAS,eAAe,WACJ,CAAC"}
|
package/dist/function/once.d.ts
CHANGED
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
* // 多次调用只会发起一次请求
|
|
22
22
|
* getConfig();
|
|
23
23
|
* getConfig();
|
|
24
|
-
*
|
|
25
|
-
*
|
|
24
|
+
* **Note:** 该实现仅支持无参数函数,如需处理带参数的函数,请使用其他实现
|
|
25
|
+
* **Note:** 第一次执行的结果会被缓存,后续调用返回相同结果
|
|
26
26
|
*/
|
|
27
27
|
export declare function once<F extends () => any>(func: F): F;
|
|
28
28
|
//# sourceMappingURL=once.d.ts.map
|
|
@@ -23,9 +23,9 @@ import { AnyFunction } from '../types/index.js';
|
|
|
23
23
|
* };
|
|
24
24
|
* logger.log('Hello');
|
|
25
25
|
* logger.log('World'); // 200ms内只会执行一次
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
26
|
+
* **Note:** 节流函数会忽略在时间间隔内的调用,不累积执行
|
|
27
|
+
* **Note:** 首次调用会立即执行,之后按时间间隔限制
|
|
28
|
+
* **Warning:** 确保timeFrame为正整数,否则可能导致意外行为
|
|
29
29
|
*/
|
|
30
30
|
export declare const throttle: <Func extends AnyFunction>(func: Func, timeFrame: number) => (this: ThisParameterType<Func>, ...args: Parameters<Func>) => void;
|
|
31
31
|
//# sourceMappingURL=throttle.d.ts.map
|