@dazhicheng/utils 1.3.4 → 1.3.6

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.
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from 'vue';
2
+ export type SFCWithInstall<T> = T & Plugin;
3
+ export declare function withInstall<T, E extends Record<string, any>>(main: T, extra?: E): SFCWithInstall<T> & E;
4
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,MAAM,EAAE,MAAM,KAAK,CAAA;AAEtC,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAA;AAE1C,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAc/D,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CACrC"}
package/dist/is.d.ts ADDED
@@ -0,0 +1,238 @@
1
+ import dayjs from "dayjs";
2
+ /**
3
+ * 判断值的类型
4
+ *
5
+ * @param val 未知类型的值
6
+ * @param type 需要判断的目标类型
7
+ * @returns 如果val的类型与目标类型相符,则返回true;否则返回false
8
+ *
9
+ * 说明:
10
+ * - 该函数通过Object.prototype.toString.call(val)方法获取val的内部[[Class]]属性值,然后与目标类型进行比较
11
+ * - 这种方法可以准确地判断值的类型,包括数组、函数、日期等特殊对象
12
+ */
13
+ export declare function is(val: unknown, type: string): boolean;
14
+ /**
15
+ * 判断一个值是否已定义
16
+ *
17
+ * 此函数用于检查传入的值是否为 undefined,以确定该值是否已定义
18
+ * 在 TypeScript 中,通过这种方式可以对类型进行精确的判断,而不仅仅是依赖于值
19
+ *
20
+ * @param val 可能为任意类型的值,可能为 undefined
21
+ * @returns 如果值不为 undefined,则返回 true;否则返回 false
22
+ */
23
+ export declare function isDef<T = unknown>(val?: T): val is T;
24
+ /**
25
+ * 判断值是否未定义
26
+ *
27
+ * 此函数用于检查传入的值是否为 undefined 或者 null
28
+ * 它提供了一种类型安全的方式来忽略未知的类型,并确保我们在处理可能不存在的值时能够安全地进行
29
+ *
30
+ * @param val 可能为 undefined 或具体类型的值
31
+ * @returns 如果值为 undefined 则返回 true;否则返回 false
32
+ */
33
+ export declare function isUndefined(val?: any): val is undefined;
34
+ /**
35
+ * 判断给定的值是否为 null
36
+ *
37
+ * @param val 任何类型的值,用于检查是否为 null
38
+ * @returns 返回 true 如果 val 是 null,否则返回 false
39
+ */
40
+ export declare function isNull(val: unknown): val is null;
41
+ /**
42
+ * 检查值是否为 null 或 undefined
43
+ *
44
+ * @param val 未知类型值,从 unknown 类型进行参数输入,可以接受任何类型的值
45
+ * @returns 返回一个布尔值,如果 val 是 undefined 或 null,则返回 true,否则返回 false
46
+ */
47
+ export declare function isNullOrUnDef(val: unknown): val is null | undefined;
48
+ /**
49
+ * 检查给定的值是否为对象
50
+ *
51
+ * @param val 任意值,待检查其类型
52
+ * @returns 如果值是对象,则返回true;否则返回false
53
+ *
54
+ * 此函数的存在是为了提供一个精确的类型检查机制,以确定传入的参数是否符合Record类型,
55
+ * 这在处理复杂的数据结构时尤其有用,例如JSON数据解析或复杂的对象操作。通过这种方式,
56
+ * 开发者可以确保数据的结构符合预期,从而避免潜在的运行时错误。
57
+ * @example 如需从联合类型中获取对象类型,可以使用以下方式
58
+ * isObject<TipConfig>
59
+ */
60
+ export declare function isObject<T>(val: unknown | Record<string, T>): val is Record<string, T>;
61
+ /**
62
+ * 检查给定的值是否为空
63
+ * 此函数旨在统一处理多种数据类型,包括字符串、数组、Map、Set和对象
64
+ * undefined 和 null 值也被视为"空"
65
+ * 以判断它们是否为空。对于每种数据类型,采用不同的方法来检查空值
66
+ *
67
+ * @param val 任意类型的值,其空状态将被检查
68
+ * @returns 如果值被认为是空的,则返回 true,否则返回 false
69
+ */
70
+ export declare function isEmpty<T>(val: T): boolean;
71
+ /**
72
+ * 检查给定的值是否为空(包括0值)
73
+ * 将以下值判定为空:0、'0'、'undefined'、'null'
74
+ *
75
+ * @param val 任意类型的值
76
+ * @returns 如果值为 0、'0'、'undefined'、'null',则返回 true,否则返回 false
77
+ */
78
+ export declare function isEmptyZero(val: unknown): boolean;
79
+ /**
80
+ * 判断给定的值是否为Date类型
81
+ *
82
+ * @param val 未知类型值,由用户传入
83
+ * @returns 如果val是Date类型,返回true;否则返回false
84
+ */
85
+ export declare function isDate(val: unknown): val is Date;
86
+ /**
87
+ * 判断给定的值是否为Number类型 排除NaN
88
+ * 一个数字与自身相比较,除了 NaN 之外都应该相等
89
+ * @param val 未知类型值,由用户传入
90
+ * @returns 如果val是Number类型,返回true;否则返回false
91
+ */
92
+ export declare function isNumber(val: unknown): val is number;
93
+ /**
94
+ * 判断给定的值是否为Promise类型
95
+ *
96
+ * @param val 未知类型值,由用户传入
97
+ * @returns 如果val是Promise类型,返回true;否则返回false
98
+ */
99
+ export declare function isPromise<T = any>(val: unknown): val is Promise<T>;
100
+ /**
101
+ * 判断给定的值是否为String类型
102
+ *
103
+ * @param val 未知类型值,由用户传入
104
+ * @returns 如果val是String类型,返回true;否则返回false
105
+ */
106
+ export declare function isString(val: unknown): val is string;
107
+ /**
108
+ * 判断给定的值是否为Function类型
109
+ *
110
+ * @param val 未知类型值,由用户传入
111
+ * @returns 如果val是Function类型,返回true;否则返回false
112
+ */
113
+ export declare function isFunction(val: unknown): val is (...args: any[]) => any;
114
+ /**
115
+ * 判断给定的值是否为Boolean类型
116
+ *
117
+ * @param val 未知类型值,由用户传入
118
+ * @returns 如果val是Boolean类型,返回true;否则返回false
119
+ */
120
+ export declare function isBoolean(val: unknown): val is boolean;
121
+ /**
122
+ * 判断给定的值是否为RegExp类型
123
+ *
124
+ * @param val 未知类型值,由用户传入
125
+ * @returns 如果val是RegExp类型,返回true;否则返回false
126
+ */
127
+ export declare function isRegExp(val: unknown): val is RegExp;
128
+ /**
129
+ * 判断给定的值是否为Array类型
130
+ *
131
+ * @param val 未知类型值,由用户传入
132
+ * @returns 如果val是Array类型,返回true;否则返回false
133
+ */
134
+ export declare function isArray(val: any): val is Array<any>;
135
+ /**
136
+ * 判断给定的值是否为Window类型
137
+ *
138
+ * @param val 未知类型值,由用户传入
139
+ * @returns 如果val是Window类型,返回true;否则返回false
140
+ */
141
+ export declare function isWindow(val: any): val is Window;
142
+ /**
143
+ * 判断给定的值是否是一个 DOM 元素。
144
+ *
145
+ * @param e 任意类型的值,其类型由调用者决定。
146
+ * @returns 如果 `e` 是一个 DOM 元素实例,则返回 `true`,否则返回 `false`。
147
+ */
148
+ export declare function isElement(e: unknown): e is Element;
149
+ /**
150
+ * 检查给定的值是否为Map类型
151
+ *
152
+ * @param val 未知类型的值
153
+ * @returns 如果给定的值是Map类型,则返回true;否则返回false
154
+ */
155
+ export declare function isMap(val: unknown): val is Map<any, any>;
156
+ export declare const isServer: boolean;
157
+ export declare const isClient: boolean;
158
+ /**
159
+ * 检查给定的值是否为正确的Url地址
160
+ *
161
+ * @param path 字符串类型的值
162
+ * @returns 如果给定的值是Url地址,则返回true;否则返回false
163
+ */
164
+ export declare function isUrl(path: string): boolean;
165
+ /**
166
+ * 判断一个字符串是否可以转换为数字
167
+ *
168
+ * @param val 待检查的字符串
169
+ * @returns 如果字符串可以转换为数字,则返回true;否则返回false
170
+ */
171
+ export declare function isStringNumber(val: string): boolean;
172
+ /**
173
+ * 检查给定的值是否为原始类型
174
+ *
175
+ * 原始类型包括:数字、字符串、布尔值、符号、大整数、未定义、空值
176
+ *
177
+ * @param {*} value 要检查的值
178
+ * @returns {boolean} 检查结果
179
+ */
180
+ export declare function isPrimitive(value: any): boolean;
181
+ /**
182
+ * 是否为错误对象
183
+ * @param val 入参
184
+ */
185
+ export declare function isError(val: any): boolean;
186
+ /**
187
+ * 是否为Symbol函数
188
+ * @param val 入参
189
+ */
190
+ export declare function isSymbol(val: any): boolean;
191
+ /**
192
+ * 是否为Set对象
193
+ * @param val 入参
194
+ */
195
+ export declare function isSet(val: any): boolean;
196
+ /**
197
+ * 是否为非真
198
+ * @param val 入参
199
+ */
200
+ export declare function isFalse(val: any): boolean;
201
+ /**
202
+ * 是否为真
203
+ * @param val 入参
204
+ */
205
+ export declare function isTrue(val: any): boolean;
206
+ /**
207
+ * 获取设备类型
208
+ */
209
+ export declare function getDeviceType(): string;
210
+ /**
211
+ * 获取浏览器类型
212
+ */
213
+ export declare function getBrowserType(): string;
214
+ /**
215
+ * 是否为ios
216
+ * @returns {boolean} 是-否
217
+ */
218
+ export declare function isIos(): boolean;
219
+ /**
220
+ * 是否为Android
221
+ */
222
+ export declare function isAndroid(): boolean;
223
+ /**
224
+ * 是否为PC端
225
+ */
226
+ export declare function isPC(): boolean;
227
+ /**
228
+ * @description 判读是否为外链
229
+ * @param path
230
+ */
231
+ export declare function isExternal(path: string): boolean;
232
+ /**
233
+ * @description 判断是否为json
234
+ * @param value
235
+ */
236
+ export declare function isJson(value: string | null): boolean;
237
+ export declare function isDayjsObject(value: any): value is dayjs.Dayjs;
238
+ //# sourceMappingURL=is.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is.d.ts","sourceRoot":"","sources":["../src/is.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Defu } from 'defu';
2
+ export {
3
+ /** 定制合并 createMerge=createDefu https://www.npmjs.com/package/defu */
4
+ createDefu as createMerge,
5
+ /** 对象合并 merge=defu https://www.npmjs.com/package/defu */
6
+ defu as merge,
7
+ /** 过滤 mergFn=defuFn https://www.npmjs.com/package/defu */
8
+ defuFn as mergFn, } from 'defu';
9
+ /**
10
+ * 对象合并函数,支持指定字段直接覆盖和数组类型直接替换
11
+ * @param source 源对象,将被合并的目标对象
12
+ * @param defaultsAndOptions 其他默认对象,最后一项可为 Source 的 key 数组,指定需要覆盖的 key
13
+ * @returns 合并后的对象
14
+ */
15
+ export declare function mergeWithArrayOverride<Source extends Record<string, any>, Defaults extends Array<Record<string, any>>>(source: Source, ...defaultsAndOptions: [...Defaults]): Defu<Source, Defaults>;
16
+ export declare function mergeWithArrayOverride<Source extends Record<string, any>, Defaults extends Array<Record<string, any>>>(source: Source, ...defaultsAndOptions: [...Defaults, Array<keyof Source>]): Defu<Source, Defaults>;
17
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../src/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAGhC,OAAO;AACL,qEAAqE;AACrE,UAAU,IAAI,WAAW;AACzB,yDAAyD;AACzD,IAAI,IAAI,KAAK;AACb,0DAA0D;AAC1D,MAAM,IAAI,MAAM,GACjB,MAAM,MAAM,CAAA;AAEb;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,QAAQ,SAAS,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAC/E,wBAAgB,sBAAsB,CACpC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,QAAQ,SAAS,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA"}
@@ -0,0 +1,22 @@
1
+ export declare class StateHandler {
2
+ private condition;
3
+ private promiseResolvers;
4
+ isConditionTrue(): boolean;
5
+ reset(): void;
6
+ setConditionFalse(): void;
7
+ setConditionTrue(): void;
8
+ waitForCondition(): Promise<void>;
9
+ private clearPromises;
10
+ }
11
+ export declare class StateHandlerOld {
12
+ private condition;
13
+ private rejectCondition;
14
+ private resolveCondition;
15
+ isConditionTrue(): boolean;
16
+ reset(): void;
17
+ setConditionFalse(): void;
18
+ setConditionTrue(): void;
19
+ waitForCondition(): Promise<void>;
20
+ private clearPromises;
21
+ }
22
+ //# sourceMappingURL=stateHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateHandler.d.ts","sourceRoot":"","sources":["../src/stateHandler.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,gBAAgB,CAGT;IAEf,eAAe,IAAI,OAAO;IAI1B,KAAK,IAAI,IAAI;IAKb,iBAAiB,IAAI,IAAI;IAQzB,gBAAgB,IAAI,IAAI;IAQxB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IASjC,OAAO,CAAC,aAAa;CAGtB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,eAAe,IAAI,OAAO;IAI1B,KAAK,IAAI,IAAI;IAMb,iBAAiB,IAAI,IAAI;IASzB,gBAAgB,IAAI,IAAI;IASxB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC,OAAO,CAAC,aAAa;CAItB"}
@@ -0,0 +1,4 @@
1
+ export declare function capitalize(str: string): string;
2
+ export declare function trim(str: string): string;
3
+ export declare function kebabToCamelCase(str: string): string;
4
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpD"}
@@ -0,0 +1,84 @@
1
+ export type Options = Partial<CreateStorageParams>;
2
+ export declare const enableStorageEncryption = true;
3
+ export declare const DEFAULT_CACHE_TIME: number;
4
+ export type CreateStorageParams = {
5
+ prefixKey: string;
6
+ storage: Storage;
7
+ hasEncrypt: boolean;
8
+ timeout?: number | null;
9
+ } & EncryptionParams;
10
+ export type EncryptionParams = {
11
+ key: string;
12
+ iv: string;
13
+ };
14
+ type CipherOption = {
15
+ iv?: CryptoJS.lib.WordArray | undefined;
16
+ [key: string]: any;
17
+ };
18
+ export declare const cacheCipher: {
19
+ key: string;
20
+ iv: string;
21
+ };
22
+ declare class AesEncryption {
23
+ private key;
24
+ private iv;
25
+ constructor(opt?: Partial<EncryptionParams>);
26
+ get getOptions(): CipherOption;
27
+ encryptByAES(cipherText: string): string;
28
+ decryptByAES(cipherText: string): string;
29
+ }
30
+ export declare function create({ prefixKey, storage, key, iv, timeout, hasEncrypt, }?: Partial<CreateStorageParams>): {
31
+ storage: Storage;
32
+ prefixKey?: string;
33
+ encryption: AesEncryption;
34
+ hasEncrypt: boolean;
35
+ getKey: (key: string) => string;
36
+ set: (key: string, value: any, expire?: number | null) => void;
37
+ get: (key: string, def?: any) => any;
38
+ remove: (key: string) => void;
39
+ clear: () => void;
40
+ };
41
+ export declare function createStorage(storage?: Storage, options?: Options): {
42
+ storage: Storage;
43
+ prefixKey?: string;
44
+ encryption: AesEncryption;
45
+ hasEncrypt: boolean;
46
+ getKey: (key: string) => string;
47
+ set: (key: string, value: any, expire?: number | null) => void;
48
+ get: (key: string, def?: any) => any;
49
+ remove: (key: string) => void;
50
+ clear: (options?: {
51
+ keys?: string[];
52
+ exclude?: string[];
53
+ }) => void;
54
+ };
55
+ export declare function createSessionStorage(options?: Options): {
56
+ storage: Storage;
57
+ prefixKey?: string;
58
+ encryption: AesEncryption;
59
+ hasEncrypt: boolean;
60
+ getKey: (key: string) => string;
61
+ set: (key: string, value: any, expire?: number | null) => void;
62
+ get: (key: string, def?: any) => any;
63
+ remove: (key: string) => void;
64
+ clear: (options?: {
65
+ keys?: string[];
66
+ exclude?: string[];
67
+ }) => void;
68
+ };
69
+ export declare function createLocalStorage(options?: Options): {
70
+ storage: Storage;
71
+ prefixKey?: string;
72
+ encryption: AesEncryption;
73
+ hasEncrypt: boolean;
74
+ getKey: (key: string) => string;
75
+ set: (key: string, value: any, expire?: number | null) => void;
76
+ get: (key: string, def?: any) => any;
77
+ remove: (key: string) => void;
78
+ clear: (options?: {
79
+ keys?: string[];
80
+ exclude?: string[];
81
+ }) => void;
82
+ };
83
+ export {};
84
+ //# sourceMappingURL=stroge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stroge.d.ts","sourceRoot":"","sources":["../src/stroge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * TestID 生成工具函数
3
+ * 用于为组件自动生成唯一、层级化的 testid
4
+ *
5
+ * @module testid-helper
6
+ * @see e2e-testing-solution/TESTID-SPECIFICATION.md
7
+ */
8
+ /**
9
+ * 从组件传入的 API 配置提取资源名称
10
+ *
11
+ * - 当 `api` 是字符串时,直接返回字符串(推荐传入类似 `client.queryUserList` 的唯一名称)
12
+ * - 当 `api` 是函数引用时,返回函数名
13
+ * - 其它情况返回空字符串,由调用方自行兜底
14
+ *
15
+ * @param api - API 字符串或函数
16
+ * @returns 资源名称(原样或函数名)
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * extractResourceFromApi('adminClientImpl.FindTriggerProjects')
21
+ * // → 'adminClientImpl.FindTriggerProjects'
22
+ *
23
+ * extractResourceFromApi(CountryGetPageGET)
24
+ * // → 'CountryGetPageGET'
25
+ * ```
26
+ */
27
+ export declare function extractResourceFromApi(api: string | Function): string;
28
+ /**
29
+ * 生成 testid
30
+ *
31
+ * 将多个部分拼接成完整的 testid,自动过滤 null、undefined 和空字符串
32
+ *
33
+ * @param parts - testid 的各个部分
34
+ * @returns 拼接后的 testid
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * generateTestId('user', 'form', 'field', 'username')
39
+ * // → 'user-form-field-username'
40
+ *
41
+ * generateTestId('user', null, 'table', undefined, 'row', '123')
42
+ * // → 'user-table-row-123'
43
+ *
44
+ * generateTestId('modal', 'user-edit')
45
+ * // → 'modal-user-edit'
46
+ * ```
47
+ */
48
+ export declare function generateTestId(...parts: (string | undefined | null)[]): string;
49
+ /**
50
+ * 转换为 kebab-case
51
+ *
52
+ * 支持以下转换:
53
+ * - 空格分隔: "Add User" → "add-user"
54
+ * - PascalCase: "AddUser" → "add-user"
55
+ * - camelCase: "addUser" → "add-user"
56
+ * - 下划线: "add_user" → "add-user"
57
+ * - 中文: "用户管理" → "yong-hu-guan-li"(需要拼音库,可选功能)
58
+ *
59
+ * @param str - 要转换的字符串
60
+ * @returns kebab-case 字符串
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * toKebabCase('Add User')
65
+ * // → 'add-user'
66
+ *
67
+ * toKebabCase('AddUser')
68
+ * // → 'add-user'
69
+ *
70
+ * toKebabCase('addUser')
71
+ * // → 'add-user'
72
+ *
73
+ * toKebabCase('add_user')
74
+ * // → 'add-user'
75
+ *
76
+ * toKebabCase('Add-User')
77
+ * // → 'add-user'
78
+ * ```
79
+ */
80
+ export declare function toKebabCase(str: string): string;
81
+ /**
82
+ * 从 fieldNames 生成表单名称
83
+ *
84
+ * 取 schema 中前 N 个 fieldName 拼接,用于自动生成表单名称
85
+ *
86
+ * @param fieldNames - 字段名称数组
87
+ * @param maxLength - 最多取几个字段名(默认 3)
88
+ * @returns 拼接后的表单名称
89
+ *
90
+ * @example
91
+ * ```ts
92
+ * generateFormName(['username', 'email', 'phone', 'address'])
93
+ * // → 'username-email-phone'
94
+ *
95
+ * generateFormName(['username', 'email'], 3)
96
+ * // → 'username-email'
97
+ *
98
+ * generateFormName(['username'], 3)
99
+ * // → 'username'
100
+ *
101
+ * generateFormName([])
102
+ * // → 'form'
103
+ * ```
104
+ */
105
+ export declare function generateFormName(fieldNames: string[], maxLength?: number): string;
106
+ /**
107
+ * 从标题提取 ID
108
+ *
109
+ * 用于从 Modal/Drawer 的 title 生成 ID
110
+ *
111
+ * @param title - 标题字符串
112
+ * @returns kebab-case ID
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * extractIdFromTitle('Add User')
117
+ * // → 'add-user'
118
+ *
119
+ * extractIdFromTitle('编辑用户信息')
120
+ * // → 'bian-ji-yong-hu-xin-xi'
121
+ * ```
122
+ */
123
+ export declare function extractIdFromTitle(title: string): string;
124
+ /**
125
+ * 验证 testid 是否有效
126
+ *
127
+ * 检查 testid 是否符合命名规范:
128
+ * - 非空
129
+ * - 只包含小写字母、数字、连字符
130
+ * - 不以连字符开头或结尾
131
+ *
132
+ * @param testid - 要验证的 testid
133
+ * @returns 是否有效
134
+ *
135
+ * @example
136
+ * ```ts
137
+ * isValidTestId('user-form-field-username')
138
+ * // → true
139
+ *
140
+ * isValidTestId('User-Form')
141
+ * // → false (包含大写字母)
142
+ *
143
+ * isValidTestId('-user-form')
144
+ * // → false (以连字符开头)
145
+ *
146
+ * isValidTestId('')
147
+ * // → false (空字符串)
148
+ * ```
149
+ */
150
+ export declare function isValidTestId(testid: string): boolean;
151
+ //# sourceMappingURL=testid-helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testid-helper.d.ts","sourceRoot":"","sources":["../src/testid-helper.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAWrE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,EAAE,GAAG,MAAM,CAM9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqB/C;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,SAAS,SAAI,GAAG,MAAM,CAgB5E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOrD"}