@ybgnb/utils 0.1.7 → 0.1.8
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/core/error/common-error.d.ts +8 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/result/biz-result.d.ts +17 -0
- package/dist/core/result/exec-biz.d.ts +6 -0
- package/dist/core/types/helpers.d.ts +54 -0
- package/dist/core/types/physical.d.ts +16 -0
- package/dist/core/utils/array.d.ts +12 -0
- package/dist/core/utils/error.d.ts +22 -0
- package/dist/core/utils/fetch.d.ts +13 -0
- package/dist/core/utils/function.d.ts +28 -0
- package/dist/core/utils/github.d.ts +31 -0
- package/dist/core/utils/number/format.d.ts +19 -0
- package/dist/core/utils/random.d.ts +28 -0
- package/dist/core/utils/serialize.d.ts +23 -0
- package/dist/core/utils/sleep.d.ts +13 -0
- package/dist/core/utils/time.d.ts +19 -0
- package/dist/core/utils/type.d.ts +9 -0
- package/dist/core/utils/url.d.ts +36 -0
- package/dist/core.d.ts +2 -0
- package/dist/core.js +299 -0
- package/dist/core.js.map +1 -0
- package/dist/core.umd.cjs +2 -0
- package/dist/core.umd.cjs.map +1 -0
- package/dist/dom/index.d.ts +6 -0
- package/dist/dom/utils/color.d.ts +32 -0
- package/dist/dom/utils/css.d.ts +4 -0
- package/dist/dom/utils/img.d.ts +14 -0
- package/dist/dom/utils/network.d.ts +25 -0
- package/dist/dom/utils/page.d.ts +10 -0
- package/dist/dom/utils/scroll.d.ts +13 -0
- package/dist/dom.d.ts +2 -0
- package/dist/dom.js +134 -0
- package/dist/dom.js.map +1 -0
- package/dist/dom.umd.cjs +2 -0
- package/dist/dom.umd.cjs.map +1 -0
- package/dist/node/index.d.ts +8 -0
- package/dist/node/utils/env.d.ts +6 -0
- package/dist/node/utils/file/base.d.ts +20 -0
- package/dist/node/utils/file/delete.d.ts +12 -0
- package/dist/node/utils/file/download.d.ts +4 -0
- package/dist/node/utils/file/find.d.ts +14 -0
- package/dist/node/utils/file/json.d.ts +20 -0
- package/dist/node/utils/file/size.d.ts +19 -0
- package/dist/node/utils/win/cmd.d.ts +21 -0
- package/dist/node/utils/win/copy.d.ts +4 -0
- package/dist/node/utils/win/explorer.d.ts +5 -0
- package/dist/node/utils/win/regedit.d.ts +17 -0
- package/dist/node.d.ts +2 -0
- package/dist/node.js +201 -0
- package/dist/node.js.map +1 -0
- package/dist/node.umd.cjs +2 -0
- package/dist/node.umd.cjs.map +1 -0
- package/package.json +22 -11
- package/dist/index.d.ts +0 -444
- package/dist/index.js +0 -388
- package/dist/index.js.map +0 -1
- package/dist/index.umd.cjs +0 -2
- package/dist/index.umd.cjs.map +0 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export * from './error/common-error.js';
|
|
2
|
+
export * from './result/biz-result.js';
|
|
3
|
+
export * from './result/exec-biz.js';
|
|
4
|
+
export * from './types/helpers.js';
|
|
5
|
+
export * from './types/physical.js';
|
|
6
|
+
export * from './utils/array.js';
|
|
7
|
+
export * from './utils/error.js';
|
|
8
|
+
export * from './utils/fetch.js';
|
|
9
|
+
export * from './utils/function.js';
|
|
10
|
+
export * from './utils/github.js';
|
|
11
|
+
export * from './utils/random.js';
|
|
12
|
+
export * from './utils/serialize.js';
|
|
13
|
+
export * from './utils/sleep.js';
|
|
14
|
+
export * from './utils/time.js';
|
|
15
|
+
export * from './utils/type.js';
|
|
16
|
+
export * from './utils/url.js';
|
|
17
|
+
export * from './utils/number/format.js';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 业务执行结果
|
|
3
|
+
*/
|
|
4
|
+
export declare class BizResult<T> {
|
|
5
|
+
success: boolean;
|
|
6
|
+
msg: string;
|
|
7
|
+
data?: T;
|
|
8
|
+
constructor(success: boolean, msg: string, data?: T);
|
|
9
|
+
static createSuccess<T>(data: T): BizResult<T>;
|
|
10
|
+
static createFail<T>(msg?: string, data?: T): BizResult<T>;
|
|
11
|
+
static createError<T>(e: unknown): BizResult<T>;
|
|
12
|
+
/**
|
|
13
|
+
* 展开成Promise
|
|
14
|
+
*/
|
|
15
|
+
toPromise(): Promise<void>;
|
|
16
|
+
toPromise<T>(): Promise<T>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 提取getter属性
|
|
3
|
+
*/
|
|
4
|
+
export type ExtractGetterProperties<T> = {
|
|
5
|
+
[K in keyof T as K extends `get${infer Rest}` ? Uncapitalize<Rest> : never]: T[K] extends (...args: any[]) => Promise<infer R> ? R : never;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* 至少包含一个字段
|
|
9
|
+
*/
|
|
10
|
+
export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
|
|
11
|
+
[K in Keys]: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
|
|
12
|
+
}[Keys];
|
|
13
|
+
/**
|
|
14
|
+
* 用元组限制长度
|
|
15
|
+
*/
|
|
16
|
+
export type MaxLengthArray<T, N extends number> = T[] & {
|
|
17
|
+
length: N;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* 提取 T 中所有值类型为 V 的键
|
|
21
|
+
*/
|
|
22
|
+
export type KeysMatching<T, V> = {
|
|
23
|
+
[K in keyof T]: T[K] extends V ? K : never;
|
|
24
|
+
}[keyof T];
|
|
25
|
+
/**
|
|
26
|
+
* 任意方法
|
|
27
|
+
*/
|
|
28
|
+
export type AnyFn = (...args: any[]) => any;
|
|
29
|
+
/**
|
|
30
|
+
* 提取所有方法
|
|
31
|
+
*/
|
|
32
|
+
export type MethodKeys<T> = {
|
|
33
|
+
[K in keyof T]-?: T[K] extends AnyFn ? K : never;
|
|
34
|
+
}[keyof T];
|
|
35
|
+
/**
|
|
36
|
+
* 方法参数类型
|
|
37
|
+
*/
|
|
38
|
+
export type MethodParams<T> = T extends (...args: infer P) => any ? P : never;
|
|
39
|
+
/**
|
|
40
|
+
* 方法返回类型
|
|
41
|
+
*/
|
|
42
|
+
export type MethodReturn<T> = T extends (...args: any[]) => infer R ? R : never;
|
|
43
|
+
/**
|
|
44
|
+
* 提取所有函数 key
|
|
45
|
+
*/
|
|
46
|
+
export type FunctionKeys<T> = {
|
|
47
|
+
[K in keyof T]: T[K] extends AnyFn ? K : never;
|
|
48
|
+
}[keyof T];
|
|
49
|
+
/**
|
|
50
|
+
* 拥有指定键集合的对象类型
|
|
51
|
+
*/
|
|
52
|
+
export type ObjectWithKeys<K extends string | symbol> = {
|
|
53
|
+
[key in K]: any;
|
|
54
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 是否为空数组
|
|
3
|
+
* @param data
|
|
4
|
+
*/
|
|
5
|
+
export declare function isEmptyArr(data: unknown): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* 将数组分块为指定大小的多个子数组
|
|
8
|
+
* @param arr 原数组
|
|
9
|
+
* @param size 每个块的长度
|
|
10
|
+
* @example chunk([1,2,3,4,5], 2) => [[1,2],[3,4],[5]]
|
|
11
|
+
*/
|
|
12
|
+
export declare function chunk<T>(arr: T[], size: number): T[][];
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { CommonError } from '../error/common-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* 是否为取消操作的错误
|
|
4
|
+
*/
|
|
5
|
+
export declare function isCanceledError(err: unknown): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* 创建取消错误
|
|
8
|
+
* @param msg
|
|
9
|
+
*/
|
|
10
|
+
export declare function createAbortError(msg?: string): Error;
|
|
11
|
+
/**
|
|
12
|
+
* 是否为通用错误对象
|
|
13
|
+
*/
|
|
14
|
+
export declare function isCommonError(error: unknown): error is CommonError;
|
|
15
|
+
/**
|
|
16
|
+
* 转换到通用异常
|
|
17
|
+
*/
|
|
18
|
+
export declare function convertToCommonError(error: unknown, prefix?: string): Error;
|
|
19
|
+
/**
|
|
20
|
+
* 获取异常信息
|
|
21
|
+
*/
|
|
22
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 用于指定 `fetch` 响应体的解析方式。
|
|
3
|
+
* 对应 `Response` 对象的不同解析方法(`.json()`、`.text()` 等)。
|
|
4
|
+
*/
|
|
5
|
+
export type ResponseBodyFormat = 'json' | 'text' | 'blob' | 'arrayBuffer' | 'formData';
|
|
6
|
+
/**
|
|
7
|
+
* 创建响应错误
|
|
8
|
+
*/
|
|
9
|
+
export declare function createResponseError(response: Response): Error;
|
|
10
|
+
/**
|
|
11
|
+
* 使用指定的响应解析格式发起 fetch 请求
|
|
12
|
+
*/
|
|
13
|
+
export declare function fetchWithFormat<T = any>(url: string, format: ResponseBodyFormat, init?: RequestInit): Promise<T>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 随机运行参数
|
|
3
|
+
* @param fns
|
|
4
|
+
* @param maxCount 最多执行次数(1 ~ fns.length)
|
|
5
|
+
*/
|
|
6
|
+
export declare function runRandomFunctions(fns: Array<() => void>, maxCount?: number): void;
|
|
7
|
+
/**
|
|
8
|
+
* 将数字范围按批次处理,每个批次调用一次异步函数
|
|
9
|
+
*
|
|
10
|
+
* @param start - 起始值(包含)
|
|
11
|
+
* @param end - 结束值(包含)
|
|
12
|
+
* @param batchSize - 每批最大元素个数
|
|
13
|
+
* @param processor - 处理单批数字数组的异步函数
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* // 分批处理 1..10,每批最多 3 个数字
|
|
17
|
+
* await processRangeInBatches(1, 10, 3, async (batch) => {
|
|
18
|
+
* console.log(batch) // 输出: [1,2,3], [4,5,6], [7,8,9], [10]
|
|
19
|
+
* })
|
|
20
|
+
*/
|
|
21
|
+
export declare function processRangeInBatches(start: number, end: number, batchSize: number, processor: (batch: number[]) => Promise<void>): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* 动态调用
|
|
24
|
+
* @param root 对象
|
|
25
|
+
* @param path 调用路径
|
|
26
|
+
* @param args 参数
|
|
27
|
+
*/
|
|
28
|
+
export declare function dynamicCall<T = any>(root: any, path: string, ...args: any[]): T;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/** github 仓库信息 */
|
|
2
|
+
export interface GitHubRepo {
|
|
3
|
+
/** 仓库所有者(用户或组织名) */
|
|
4
|
+
owner: string;
|
|
5
|
+
/** 仓库名称 */
|
|
6
|
+
repo: string;
|
|
7
|
+
}
|
|
8
|
+
/** github 仓库分支信息 */
|
|
9
|
+
export type GitHubRepoBranch = GitHubRepo & {
|
|
10
|
+
/** 分支名称 */
|
|
11
|
+
branch: string;
|
|
12
|
+
};
|
|
13
|
+
/** github 仓库文件信息 */
|
|
14
|
+
export type GitHubRepoFile = GitHubRepoBranch & {
|
|
15
|
+
/** 文件路径 */
|
|
16
|
+
filePath: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* 从 url 解析 github 仓库信息
|
|
20
|
+
* @param repositoryUrl 仓库 URL(支持带有git+前缀、具体文件路径)
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseGithubRepoUrl(repositoryUrl: string): GitHubRepoBranch;
|
|
23
|
+
/**
|
|
24
|
+
* 解析 github 仓库文件的原始内容的 url
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseGithubRawUrl(gitHubRepoFile: GitHubRepoFile): string;
|
|
27
|
+
/**
|
|
28
|
+
* 获取 github 仓库文件的 json 内容并解析为对象 T
|
|
29
|
+
* @param gitHubRepoFile
|
|
30
|
+
*/
|
|
31
|
+
export declare function getGithubRawJson<O>(gitHubRepoFile: GitHubRepoFile): Promise<O>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 格式化后的单位数据(如文件大小)
|
|
3
|
+
*/
|
|
4
|
+
export interface FormattedUnitSize {
|
|
5
|
+
/** 换算后该单位的数值(未四舍五入) */
|
|
6
|
+
size: number;
|
|
7
|
+
/** 单位名称,如 'MB' */
|
|
8
|
+
unit: string;
|
|
9
|
+
/** 显示文本:数值四舍五入保留两位小数 + 单位,如 '1.50 MB' */
|
|
10
|
+
text: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 按进制自动格式化单位
|
|
14
|
+
* @param value 数值
|
|
15
|
+
* @param base 进制(1024 / 1000)
|
|
16
|
+
* @param units 单位列表
|
|
17
|
+
* @param invalidText 无效值返回文本
|
|
18
|
+
*/
|
|
19
|
+
export declare function formatUnitSize(value: number, base: number, units: string[], invalidText?: string): FormattedUnitSize;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 数组洗牌
|
|
3
|
+
*/
|
|
4
|
+
export declare function shuffle<T>(arr: T[]): T[];
|
|
5
|
+
/**
|
|
6
|
+
* 获取 [min, max] 的随机整数
|
|
7
|
+
*/
|
|
8
|
+
export declare function randomInt(min: number, max: number): number;
|
|
9
|
+
/**
|
|
10
|
+
* 获取 [min, max) 的随机浮点数
|
|
11
|
+
*/
|
|
12
|
+
export declare function randomFloat(min: number, max: number): number;
|
|
13
|
+
/**
|
|
14
|
+
* 从数组中随机取若干项,不可重复
|
|
15
|
+
*/
|
|
16
|
+
export declare function sample<T>(arr: T[], count: number): T[];
|
|
17
|
+
/**
|
|
18
|
+
* 从数组中随机取若干项,可重复
|
|
19
|
+
*/
|
|
20
|
+
export declare function sampleWithReplacement<T>(arr: T[], count: number): T[];
|
|
21
|
+
/**
|
|
22
|
+
* 从数组中获取随机项
|
|
23
|
+
*/
|
|
24
|
+
export declare function sampleOne<T>(arr: T[]): T;
|
|
25
|
+
/**
|
|
26
|
+
* 获取 1~n 的随机数
|
|
27
|
+
*/
|
|
28
|
+
export declare function random1ToN(n: number): number;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 递归移除对象(或数组)中的所有函数属性,返回一个可安全序列化的副本。
|
|
3
|
+
*
|
|
4
|
+
* @typeParam T - 输入值的类型。
|
|
5
|
+
* @param value - 待处理的值(基本类型、对象、数组等)。
|
|
6
|
+
* @param seen - 内部使用的 WeakMap,用于记录已访问过的对象,防止循环引用。
|
|
7
|
+
* 调用方通常无需传递此参数。
|
|
8
|
+
* @returns 处理后的新副本,其中所有函数属性都被移除。
|
|
9
|
+
* 基本类型(string, number, boolean, null, undefined)将原样返回。
|
|
10
|
+
*/
|
|
11
|
+
export declare function stripFunctions<T>(value: T, seen?: WeakMap<object, any>): T;
|
|
12
|
+
/**
|
|
13
|
+
* 将错误转换为可 JSON 序列化的普通对象。
|
|
14
|
+
*/
|
|
15
|
+
export declare function serializeError(err: unknown): {
|
|
16
|
+
name: string;
|
|
17
|
+
message: string;
|
|
18
|
+
stack: string | undefined;
|
|
19
|
+
} | {
|
|
20
|
+
name: string;
|
|
21
|
+
message: string;
|
|
22
|
+
stack?: undefined;
|
|
23
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 支持取消的 sleep
|
|
3
|
+
* @param ms 延迟毫秒数
|
|
4
|
+
* @param signal 取消信号
|
|
5
|
+
*/
|
|
6
|
+
export declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* 支持取消的随机 sleep
|
|
9
|
+
* @param minMS 最小延迟毫秒数
|
|
10
|
+
* @param maxMS 最大延迟毫秒数
|
|
11
|
+
* @param signal 取消信号
|
|
12
|
+
*/
|
|
13
|
+
export declare function sleepRandom(minMS: number, maxMS: number, signal?: AbortSignal): Promise<void>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 格式化日期
|
|
3
|
+
*/
|
|
4
|
+
export declare function formatDate(date: Date, pattern: 'date' | 'time' | 'datetime'): string;
|
|
5
|
+
/**
|
|
6
|
+
* 格式化时间为 2020-02-02 20:20:20 的字符串
|
|
7
|
+
* @param date 需要格式化的时间,为空则获取当前时间
|
|
8
|
+
*/
|
|
9
|
+
export declare function getFormattedDateTime(date?: Date): string;
|
|
10
|
+
/**
|
|
11
|
+
* 格式化时间为 2020-02-02 20:20:20 的字符串
|
|
12
|
+
* @param date 需要格式化的时间,为空则获取当前时间
|
|
13
|
+
*/
|
|
14
|
+
export declare function getFormattedDate(date?: Date): string;
|
|
15
|
+
/**
|
|
16
|
+
* 格式化时间为 20:20:20 的字符串
|
|
17
|
+
* @param date 需要格式化的时间,为空则获取当前时间
|
|
18
|
+
*/
|
|
19
|
+
export declare function getFormattedTime(date?: Date): string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ObjectWithKeys } from '../types/helpers.js';
|
|
2
|
+
/**
|
|
3
|
+
* 判断一个值是否为纯对象
|
|
4
|
+
*/
|
|
5
|
+
export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
|
|
6
|
+
/**
|
|
7
|
+
* 包括类实例、普通对象,不包括 数组、null 和原始类型
|
|
8
|
+
*/
|
|
9
|
+
export declare function isObject<K extends string | symbol>(value: unknown, key?: K): value is ObjectWithKeys<K>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** URL query 中必须编码的保留字符 (RFC 3986) */
|
|
2
|
+
export declare const invalidCharRegex: RegExp;
|
|
3
|
+
/** 查询参数 */
|
|
4
|
+
export type QueryParams = Record<string, string | number | boolean | null | undefined>;
|
|
5
|
+
/**
|
|
6
|
+
* 已解析的 url
|
|
7
|
+
*/
|
|
8
|
+
export interface ParsedUrl {
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
searchParams: URLSearchParams;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 判断字符串是否为有效的 HTTP/HTTPS URL
|
|
14
|
+
* @param path - 待检测的字符串
|
|
15
|
+
*/
|
|
16
|
+
export declare function isHttpUrl(path: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 解析 url
|
|
19
|
+
* @param url
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseUrl(url: string): ParsedUrl;
|
|
22
|
+
/**
|
|
23
|
+
* 编码 URL 参数
|
|
24
|
+
* @param params 查询参数
|
|
25
|
+
* @param keepEmptyValues 保留 null/undefined的值(空字符串)
|
|
26
|
+
*/
|
|
27
|
+
export declare function encodeURLParams(params: QueryParams, keepEmptyValues?: boolean): string;
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* 合并查询参数
|
|
33
|
+
* @param urlSearchParams url解析后查询参数
|
|
34
|
+
* @param params 单独传的查询参数
|
|
35
|
+
*/
|
|
36
|
+
export declare function mergeQueryParams(urlSearchParams: URLSearchParams, params?: QueryParams): QueryParams;
|
package/dist/core.d.ts
ADDED