@zwa73/utils 1.0.60 → 1.0.61

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 (42) hide show
  1. package/dist/UtilCodecs.d.ts +16 -16
  2. package/dist/UtilCodecs.js +16 -16
  3. package/dist/UtilCom.d.ts +22 -25
  4. package/dist/UtilCom.js +35 -38
  5. package/dist/UtilDecorators.d.ts +15 -8
  6. package/dist/UtilDecorators.js +79 -25
  7. package/dist/UtilFP.d.ts +46 -0
  8. package/dist/UtilFP.js +52 -0
  9. package/dist/UtilFfmpegTools.d.ts +30 -30
  10. package/dist/UtilFfmpegTools.js +32 -32
  11. package/dist/UtilFileTools.d.ts +30 -35
  12. package/dist/UtilFileTools.js +17 -18
  13. package/dist/UtilFunctions.d.ts +37 -78
  14. package/dist/UtilFunctions.js +27 -62
  15. package/dist/UtilInterfaces.d.ts +11 -11
  16. package/dist/UtilInterfaces.js +2 -2
  17. package/dist/UtilLogger.d.ts +55 -55
  18. package/dist/UtilLogger.js +55 -55
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.js +1 -0
  21. package/dist/test/composeTest.d.ts +21 -0
  22. package/dist/test/composeTest.js +33 -0
  23. package/dist/test/importtest.d.ts +1 -0
  24. package/dist/test/importtest.js +4 -0
  25. package/dist/test/test.js +5 -3
  26. package/package.json +1 -1
  27. package/src/UtilClass.ts +1051 -1051
  28. package/src/UtilCodecs.ts +117 -117
  29. package/src/UtilCom.ts +171 -174
  30. package/src/UtilDecorators.ts +174 -116
  31. package/src/UtilFP.ts +98 -0
  32. package/src/UtilFfmpegTools.ts +271 -271
  33. package/src/UtilFileTools.ts +231 -236
  34. package/src/UtilFunctions.ts +289 -364
  35. package/src/UtilInterfaces.ts +137 -137
  36. package/src/UtilLogger.ts +386 -386
  37. package/src/index.ts +10 -9
  38. package/src/test/composeTest.ts +37 -0
  39. package/src/test/importtest.ts +5 -0
  40. package/src/test/test.ts +8 -6
  41. package/src/test/test2.ts +2 -3
  42. package/tsconfig.json +2 -7
@@ -1,138 +1,138 @@
1
-
2
-
3
- /**可以序列化为JSON文件的对象 */
4
- export type JToken = JObject|JArray|JValue|IJData;
5
- /**在stringify输出时 undefine 会被转为 null */
6
- export type JValue = number|string|boolean|null|undefined;
7
- /**在stringify输出时 值为 undefine 的成员会被转为 null */
8
- export type JArray = Array<JToken>;
9
- /**在stringify输出时 值为 undefine 的键会被忽略 */
10
- export type JObject = {
11
- [key:string]:JToken;
12
- }
13
- /**可以保存为JToken的类 */
14
- export interface IJData{
15
- /**保存为JToken
16
- */
17
- toJSON():JToken;
18
- }
19
- /**将JToken转换为字符串
20
- * @param {JToken|IJData} token - 待转换的Token
21
- * @param {string|number|null} space - 插入的空格 数字为空格数量 默认为制表符\t
22
- * @returns 转换完成的字符串
23
- */
24
- export function stringifyJToken(token:JToken|IJData,space:string|number|null|undefined="\t"){
25
- if(space==null)
26
- space=undefined;
27
- return JSON.stringify(token,null,space);
28
- }
29
-
30
- /**转为可写的 */
31
- export type Writeable<T> = {
32
- -readonly [P in keyof T]: T[P]
33
- };
34
- /**翻转K和V */
35
- export type Inverted<T extends Record<keyof T, string | number | symbol>> = {
36
- [K in keyof T as T[K]]: K;
37
- };
38
- /**N长度 T类型的元组 */
39
- export type FixedLengthTuple<T, N extends number, R extends unknown[] = []> =
40
- R['length'] extends N ? R : FixedLengthTuple<T, N, [T, ...R]>;
41
-
42
-
43
- /**不影响智能补全的任意字符串
44
- * (string&Object)
45
- * (string&String)
46
- */
47
- export type AnyString = (string&{});
48
-
49
-
50
-
51
- /**创建一个新的类型,这个新的类型包含了基础类型 B 的所有属性,
52
- * 以及一个名为 K[N] 类型为 T 的新属性。
53
- * 所有 K 中非 K[N] 的其他属性都是可选的并且不能被赋值(因为它们的类型是 never)。
54
- */
55
- type ExclusiveSub<B, T, K extends string[], N extends number> =
56
- B & { [P in K[N]]: T } & { [P in Exclude<K[number], K[N]>]?: never };
57
-
58
- /**递归地创建一个元组类型, 所有成员类型都有一个 K[number] 键 并且与其他成员互斥
59
- * 这个元组类型的每个元素都是通过 ExclusiveSub 类型创建的。
60
- */
61
- type ExclusiveRecursive<B, T, K extends string[], R extends unknown[] = []> =
62
- R['length'] extends K['length'] ? R
63
- : ExclusiveRecursive<B, T, K, [ExclusiveSub<B, T, K, R['length']>, ...R]>;
64
-
65
- /**互斥表
66
- * 从 ExclusiveRecursive 类型创建的元组中创建一个或类型, 可以是任意一个元组元素类型
67
- */
68
- export type ExclusiveRecord<B, T, K extends string[], TMP = ExclusiveRecursive<B, T, K>> = TMP[keyof TMP];
69
-
70
- /**符合JObject约束的互斥表 */
71
- export type ExclusiveJObject<B extends JObject,T extends JToken,K extends string[],
72
- TMP extends JArray = ExclusiveRecursive<B,T,K>> = TMP[number];
73
-
74
-
75
- /**请求完成状态 成功/失败/终止
76
- * 成功/终止 将直接返回
77
- * 失败 将重试
78
- */
79
- export type PromiseStat = "Completed"|"Failed"|"Terminated";
80
- /**promise验证函数 */
81
- export type PromiseVerifyFn<T> = (obj:T)=>Promise<PromiseStat>|PromiseStat;
82
- /**发起promise的函数 */
83
- export type PromiseProcFn<T> = ()=>Promise<T>;
84
-
85
- /**类型中任意函数的字符串名称 */
86
- export type FuncPropNames<T> = {
87
- [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;
88
- }[keyof T];
89
-
90
- /**部分组合的类
91
- * @template {Base} - 基类
92
- * @template {Mixin} - 待混入的类
93
- * @template {PropKeys} - 需要混入的成员key
94
- */
95
- export type ComposedPartClass<Base extends object, Mixin extends object, PropKeys extends keyof Mixin> =
96
- Base & Pick<Mixin, PropKeys>;
97
-
98
- /**组合的类 嵌套变体 */
99
- export type ComposedPartClassMult<Base extends object,
100
- Mixin1 extends object = {}, PropKeys1 extends keyof Mixin1 = keyof Mixin1,
101
- Mixin2 extends object = {}, PropKeys2 extends keyof Mixin2 = keyof Mixin2,
102
- Mixin3 extends object = {}, PropKeys3 extends keyof Mixin3 = keyof Mixin3,
103
- Mixin4 extends object = {}, PropKeys4 extends keyof Mixin4 = keyof Mixin4,
104
- Mixin5 extends object = {}, PropKeys5 extends keyof Mixin5 = keyof Mixin5,
105
- Mixin6 extends object = {}, PropKeys6 extends keyof Mixin6 = keyof Mixin6> =
106
- ComposedPartClass<ComposedPartClass<ComposedPartClass<
107
- ComposedPartClass<ComposedPartClass<ComposedPartClass<
108
- Base,
109
- Mixin1,PropKeys1>,Mixin2,PropKeys2>,Mixin3,PropKeys3>,
110
- Mixin4,PropKeys4>,Mixin5,PropKeys5>,Mixin6,PropKeys6>
111
-
112
- /**递归多组合 仅单key有效 */
113
- type ComposedClassOnceKey<Base extends object,Data extends [object,string][]> =
114
- Data extends [[infer Mixin extends object, infer FuncKeys], ...infer Rest]
115
- ? FuncKeys extends FuncPropNames<Mixin>
116
- ? Rest extends [any, any][]
117
- ? ComposedClassOnceKey<ComposedPartClass<Base, Mixin, FuncKeys>,Rest>
118
- : Base
119
- : Base
120
- : Base;
121
-
122
- /**组合的类
123
- * @template {Base} - 基类
124
- * @template {Mixin} - 待混入的类
125
- */
126
- export type ComposedClass<Base extends object,Mixin extends object> = Base&Mixin;
127
- /**组合的类 多组合变体
128
- * @template {Base} - 基类
129
- * @template {MixinList}- 待混入的类型数组
130
- */
131
- export type ComposedClassMult<Base extends object,MixinList extends object[]> =
132
- MixinList extends [infer Mixin, ...infer Rest]
133
- ? Mixin extends object
134
- ? Rest extends object[]
135
- ? ComposedClassMult<ComposedClass<Base,Mixin>,Rest>
136
- : Base
137
- : Base
1
+
2
+
3
+ /**可以序列化为JSON文件的对象 */
4
+ export type JToken = JObject|JArray|JValue|IJData;
5
+ /**在stringify输出时 undefine 会被转为 null */
6
+ export type JValue = number|string|boolean|null|undefined;
7
+ /**在stringify输出时 值为 undefine 的成员会被转为 null */
8
+ export type JArray = Array<JToken>;
9
+ /**在stringify输出时 值为 undefine 的键会被忽略 */
10
+ export type JObject = {
11
+ [key:string]:JToken;
12
+ }
13
+ /**可以保存为JToken的类 */
14
+ export interface IJData{
15
+ /**保存为JToken
16
+ */
17
+ toJSON():JToken;
18
+ }
19
+ /**将JToken转换为字符串
20
+ * @param token - 待转换的Token
21
+ * @param space - 插入的空格 数字为空格数量 默认为制表符\t
22
+ * @returns 转换完成的字符串
23
+ */
24
+ export function stringifyJToken(token:JToken|IJData,space:string|number|null|undefined="\t"){
25
+ if(space==null)
26
+ space=undefined;
27
+ return JSON.stringify(token,null,space);
28
+ }
29
+
30
+ /**转为可写的 */
31
+ export type Writeable<T> = {
32
+ -readonly [P in keyof T]: T[P]
33
+ };
34
+ /**翻转K和V */
35
+ export type Inverted<T extends Record<keyof T, string | number | symbol>> = {
36
+ [K in keyof T as T[K]]: K;
37
+ };
38
+ /**N长度 T类型的元组 */
39
+ export type FixedLengthTuple<T, N extends number, R extends unknown[] = []> =
40
+ R['length'] extends N ? R : FixedLengthTuple<T, N, [T, ...R]>;
41
+
42
+
43
+ /**不影响智能补全的任意字符串
44
+ * (string&Object)
45
+ * (string&String)
46
+ */
47
+ export type AnyString = (string&{});
48
+
49
+
50
+
51
+ /**创建一个新的类型,这个新的类型包含了基础类型 B 的所有属性,
52
+ * 以及一个名为 K[N] 类型为 T 的新属性。
53
+ * 所有 K 中非 K[N] 的其他属性都是可选的并且不能被赋值(因为它们的类型是 never)。
54
+ */
55
+ type ExclusiveSub<B, T, K extends string[], N extends number> =
56
+ B & { [P in K[N]]: T } & { [P in Exclude<K[number], K[N]>]?: never };
57
+
58
+ /**递归地创建一个元组类型, 所有成员类型都有一个 K[number] 键 并且与其他成员互斥
59
+ * 这个元组类型的每个元素都是通过 ExclusiveSub 类型创建的。
60
+ */
61
+ type ExclusiveRecursive<B, T, K extends string[], R extends unknown[] = []> =
62
+ R['length'] extends K['length'] ? R
63
+ : ExclusiveRecursive<B, T, K, [ExclusiveSub<B, T, K, R['length']>, ...R]>;
64
+
65
+ /**互斥表
66
+ * 从 ExclusiveRecursive 类型创建的元组中创建一个或类型, 可以是任意一个元组元素类型
67
+ */
68
+ export type ExclusiveRecord<B, T, K extends string[], TMP = ExclusiveRecursive<B, T, K>> = TMP[keyof TMP];
69
+
70
+ /**符合JObject约束的互斥表 */
71
+ export type ExclusiveJObject<B extends JObject,T extends JToken,K extends string[],
72
+ TMP extends JArray = ExclusiveRecursive<B,T,K>> = TMP[number];
73
+
74
+
75
+ /**请求完成状态 成功/失败/终止
76
+ * 成功/终止 将直接返回
77
+ * 失败 将重试
78
+ */
79
+ export type PromiseStat = "Completed"|"Failed"|"Terminated";
80
+ /**promise验证函数 */
81
+ export type PromiseVerifyFn<T> = (obj:T)=>Promise<PromiseStat>|PromiseStat;
82
+ /**发起promise的函数 */
83
+ export type PromiseProcFn<T> = ()=>Promise<T>;
84
+
85
+ /**类型中任意函数的字符串名称 */
86
+ export type FuncPropNames<T> = {
87
+ [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;
88
+ }[keyof T];
89
+
90
+ /**部分组合的类
91
+ * @template Base - 基类
92
+ * @template Mixin - 待混入的类
93
+ * @template PropKeys - 需要混入的成员key
94
+ */
95
+ export type ComposedClassPart<Base extends object, Mixin extends object, PropKeys extends keyof Mixin> =
96
+ Base & Pick<Mixin, PropKeys>;
97
+
98
+ /**组合的类 嵌套变体 */
99
+ export type ComposedPartClassMult<Base extends object,
100
+ Mixin1 extends object = {}, PropKeys1 extends keyof Mixin1 = keyof Mixin1,
101
+ Mixin2 extends object = {}, PropKeys2 extends keyof Mixin2 = keyof Mixin2,
102
+ Mixin3 extends object = {}, PropKeys3 extends keyof Mixin3 = keyof Mixin3,
103
+ Mixin4 extends object = {}, PropKeys4 extends keyof Mixin4 = keyof Mixin4,
104
+ Mixin5 extends object = {}, PropKeys5 extends keyof Mixin5 = keyof Mixin5,
105
+ Mixin6 extends object = {}, PropKeys6 extends keyof Mixin6 = keyof Mixin6> =
106
+ ComposedClassPart<ComposedClassPart<ComposedClassPart<
107
+ ComposedClassPart<ComposedClassPart<ComposedClassPart<
108
+ Base,
109
+ Mixin1,PropKeys1>,Mixin2,PropKeys2>,Mixin3,PropKeys3>,
110
+ Mixin4,PropKeys4>,Mixin5,PropKeys5>,Mixin6,PropKeys6>
111
+
112
+ /**递归多组合 仅单key有效 */
113
+ type ComposedClassOnceKey<Base extends object,Data extends [object,string][]> =
114
+ Data extends [[infer Mixin extends object, infer FuncKeys], ...infer Rest]
115
+ ? FuncKeys extends FuncPropNames<Mixin>
116
+ ? Rest extends [any, any][]
117
+ ? ComposedClassOnceKey<ComposedClassPart<Base, Mixin, FuncKeys>,Rest>
118
+ : Base
119
+ : Base
120
+ : Base;
121
+
122
+ /**组合的类
123
+ * @template Base - 基类
124
+ * @template Mixin - 待混入的类
125
+ */
126
+ export type ComposedClass<Base extends object,Mixin extends object> = Base&Mixin;
127
+ /**组合的类 多组合变体
128
+ * @template Base - 基类
129
+ * @template MixinList- 待混入的类型数组
130
+ */
131
+ export type ComposedClassMult<Base extends object,MixinList extends object[]> =
132
+ MixinList extends [infer Mixin, ...infer Rest]
133
+ ? Mixin extends object
134
+ ? Rest extends object[]
135
+ ? ComposedClassMult<ComposedClass<Base,Mixin>,Rest>
136
+ : Base
137
+ : Base
138
138
  : Base;