@zwa73/utils 1.0.116 → 1.0.118

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.
@@ -1,2 +1,4 @@
1
+ import { UtilFT } from "./UtilFileTools";
1
2
  import { UtilFunc } from "./UtilFunctions";
2
3
  export declare const outcome: typeof UtilFunc.outcome, matchProc: typeof UtilFunc.matchProc, sucesProc: typeof UtilFunc.sucesProc, isFailed: typeof UtilFunc.isFailed, isSafeNumber: typeof UtilFunc.isSafeNumber, isSuccess: typeof UtilFunc.isSuccess, likeNone: typeof UtilFunc.likeNone, expect: typeof UtilFunc.expect, assertType: typeof UtilFunc.assertType, assertLiteral: typeof UtilFunc.assertLiteral, deepClone: typeof UtilFunc.deepClone, sleep: typeof UtilFunc.sleep, stringifyJToken: typeof UtilFunc.stringifyJToken, getTime: typeof UtilFunc.getTime, mapEntries: typeof UtilFunc.mapEntries, dedent: typeof UtilFunc.dedent, throwError: typeof UtilFunc.throwError;
4
+ export declare const stylizePath: typeof UtilFT.stylizePath;
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.throwError = exports.dedent = exports.mapEntries = exports.getTime = exports.stringifyJToken = exports.sleep = exports.deepClone = exports.assertLiteral = exports.assertType = exports.expect = exports.likeNone = exports.isSuccess = exports.isSafeNumber = exports.isFailed = exports.sucesProc = exports.matchProc = exports.outcome = void 0;
3
+ exports.stylizePath = exports.throwError = exports.dedent = exports.mapEntries = exports.getTime = exports.stringifyJToken = exports.sleep = exports.deepClone = exports.assertLiteral = exports.assertType = exports.expect = exports.likeNone = exports.isSuccess = exports.isSafeNumber = exports.isFailed = exports.sucesProc = exports.matchProc = exports.outcome = void 0;
4
+ const UtilFileTools_1 = require("./UtilFileTools");
4
5
  const UtilFunctions_1 = require("./UtilFunctions");
5
6
  const UtilSymbol_1 = require("./UtilSymbol");
6
7
  exports.outcome = UtilFunctions_1.UtilFunc.outcome, exports.matchProc = UtilFunctions_1.UtilFunc.matchProc, exports.sucesProc = UtilFunctions_1.UtilFunc.sucesProc, exports.isFailed = UtilFunctions_1.UtilFunc.isFailed, exports.isSafeNumber = UtilFunctions_1.UtilFunc.isSafeNumber, exports.isSuccess = UtilFunctions_1.UtilFunc.isSuccess, exports.likeNone = UtilFunctions_1.UtilFunc.likeNone, exports.expect = UtilFunctions_1.UtilFunc.expect, exports.assertType = UtilFunctions_1.UtilFunc.assertType, exports.assertLiteral = UtilFunctions_1.UtilFunc.assertLiteral, exports.deepClone = UtilFunctions_1.UtilFunc.deepClone, exports.sleep = UtilFunctions_1.UtilFunc.sleep, exports.stringifyJToken = UtilFunctions_1.UtilFunc.stringifyJToken, exports.getTime = UtilFunctions_1.UtilFunc.getTime, exports.mapEntries = UtilFunctions_1.UtilFunc.mapEntries, exports.dedent = UtilFunctions_1.UtilFunc.dedent, exports.throwError = UtilFunctions_1.UtilFunc.throwError;
8
+ exports.stylizePath = UtilFileTools_1.UtilFT.stylizePath;
7
9
  if (false) {
8
10
  let aaser = (0, exports.assertLiteral)({ a: 1 });
9
11
  let a = null;
@@ -1,4 +1,4 @@
1
- import { LiteralCheck } from "./UtilInterfaces";
1
+ import { Literal } from "./UtilInterfaces";
2
2
  /**函数管道器 */
3
3
  export declare class Piper<Arg, Result = Arg> {
4
4
  /**管道函数列表 */
@@ -60,7 +60,7 @@ export declare class Stream<T> implements Iterable<T> {
60
60
  * @param value - 排除的值
61
61
  * @returns 自身
62
62
  */
63
- exclude<E>(value: LiteralCheck<E>): Promise<Stream<Exclude<T, E>>>;
63
+ exclude<E>(value: Literal<E>): Promise<Stream<Exclude<T, E>>>;
64
64
  /**应用加工 并过滤
65
65
  * @param func - 过滤函数
66
66
  * @returns 自身
@@ -29,8 +29,12 @@ const tiktoken_1 = require("tiktoken");
29
29
  /**编码/解码器 */
30
30
  var UtilCodec;
31
31
  (function (UtilCodec) {
32
- let encoderTurbo = null;
33
- let encoderDavinci = null;
32
+ /**gpt-4, gpt-3.5-turbo, text-embedding-ada-002, text-embedding-3-small, text-embedding-3-large
33
+ */
34
+ let encoderCl100kBase = null;
35
+ /**Codex models, text-davinci-002, text-davinci-003
36
+ */
37
+ let encoderP50kBase = null;
34
38
  const textDecoder = new TextDecoder();
35
39
  /**HTML实体解码 将一个字符串中的HTML实体转换为对应的字符
36
40
  * @param str - 要转换的字符串
@@ -55,10 +59,10 @@ var UtilCodec;
55
59
  //r50k_base (or gpt2) GPT-3 models like davinci
56
60
  //避免在nextjs调用时出错
57
61
  function initTikTokenEncoder() {
58
- if (encoderTurbo != null && encoderDavinci != null)
62
+ if (encoderCl100kBase != null && encoderP50kBase != null)
59
63
  return;
60
- encoderTurbo = (0, tiktoken_1.get_encoding)("cl100k_base");
61
- encoderDavinci = (0, tiktoken_1.get_encoding)("p50k_base");
64
+ encoderCl100kBase = (0, tiktoken_1.get_encoding)("cl100k_base");
65
+ encoderP50kBase = (0, tiktoken_1.get_encoding)("p50k_base");
62
66
  }
63
67
  /**token长度计算器 Turbo模型
64
68
  * @param str = 所要计算的消息
@@ -67,7 +71,7 @@ var UtilCodec;
67
71
  function tokenNumTurbo(str) {
68
72
  initTikTokenEncoder();
69
73
  //return encoder.encode(str).length
70
- return encoderTurbo?.encode(str).length;
74
+ return encoderCl100kBase?.encode(str).length;
71
75
  }
72
76
  UtilCodec.tokenNumTurbo = tokenNumTurbo;
73
77
  /**token长度计算器 Davinci模型
@@ -76,7 +80,7 @@ var UtilCodec;
76
80
  */
77
81
  function tokenNumDavinci(str) {
78
82
  initTikTokenEncoder();
79
- return encoderDavinci?.encode(str).length;
83
+ return encoderP50kBase?.encode(str).length;
80
84
  }
81
85
  UtilCodec.tokenNumDavinci = tokenNumDavinci;
82
86
  /**token编码 Turbo模型
@@ -85,7 +89,7 @@ var UtilCodec;
85
89
  */
86
90
  function encodeTokenTurbo(str) {
87
91
  initTikTokenEncoder();
88
- return encoderTurbo?.encode(str);
92
+ return encoderCl100kBase?.encode(str);
89
93
  }
90
94
  UtilCodec.encodeTokenTurbo = encodeTokenTurbo;
91
95
  /**token编码 Davinci模型
@@ -94,7 +98,7 @@ var UtilCodec;
94
98
  */
95
99
  function encodeTokenDavinci(str) {
96
100
  initTikTokenEncoder();
97
- return encoderDavinci?.encode(str);
101
+ return encoderP50kBase?.encode(str);
98
102
  }
99
103
  UtilCodec.encodeTokenDavinci = encodeTokenDavinci;
100
104
  /**token解码 Turbo模型
@@ -105,7 +109,7 @@ var UtilCodec;
105
109
  initTikTokenEncoder();
106
110
  if (Array.isArray(arr))
107
111
  arr = new Uint32Array(arr);
108
- return textDecoder.decode(encoderTurbo?.decode(arr));
112
+ return textDecoder.decode(encoderCl100kBase?.decode(arr));
109
113
  }
110
114
  UtilCodec.decodeTokenTurbo = decodeTokenTurbo;
111
115
  /**token解码 Davinci模型
@@ -116,7 +120,7 @@ var UtilCodec;
116
120
  initTikTokenEncoder();
117
121
  if (Array.isArray(arr))
118
122
  arr = new Uint32Array(arr);
119
- return textDecoder.decode(encoderDavinci?.decode(arr));
123
+ return textDecoder.decode(encoderP50kBase?.decode(arr));
120
124
  }
121
125
  UtilCodec.decodeTokenDavinci = decodeTokenDavinci;
122
126
  //#endregion
package/dist/UtilFP.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { Keyable, LiteralCheck } from "./UtilInterfaces";
1
+ import { Keyable, Literal, Matchable, MatchableFlag, ProperSubsetCheck } from "./UtilInterfaces";
2
+ import { FailedLike } from "./UtilSymbol";
2
3
  /**常用函数式编程库 */
3
4
  export declare namespace UtilFP {
4
5
  /**柯里化函数类型 */
@@ -15,54 +16,54 @@ export declare namespace UtilFP {
15
16
  * @param fs - 待组合的函数
16
17
  * @returns 组合完成的函数
17
18
  */
18
- export function flow<I>(...fs: CompFunc<I, I>[]): CompFunc<I, I>;
19
- export function flow<I, R1>(f1: CompFunc<I, R1>, ...fs: CompFunc<R1, R1>[]): CompFunc<I, R1>;
20
- export function flow<I, R1, R2>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, ...fs: CompFunc<R2, R2>[]): CompFunc<I, R2>;
21
- export function flow<I, R1, R2, R3>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, ...fs: CompFunc<R3, R3>[]): CompFunc<I, R3>;
22
- export function flow<I, R1, R2, R3, R4>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, ...fs: CompFunc<R4, R4>[]): CompFunc<I, R4>;
23
- export function flow<I, R1, R2, R3, R4, R5>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, ...fs: CompFunc<R5, R5>[]): CompFunc<I, R5>;
24
- export function flow<I, R1, R2, R3, R4, R5, R6>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, ...fs: CompFunc<R6, R6>[]): CompFunc<I, R6>;
25
- export function flow<I, R1, R2, R3, R4, R5, R6, R7>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, ...fs: CompFunc<R7, R7>[]): CompFunc<I, R7>;
26
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, ...fs: CompFunc<R8, R8>[]): CompFunc<I, R8>;
27
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, ...fs: CompFunc<R9, R9>[]): CompFunc<I, R9>;
28
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, ...fs: CompFunc<R10, R10>[]): CompFunc<I, R10>;
29
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, ...fs: CompFunc<R11, R11>[]): CompFunc<I, R11>;
30
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, ...fs: CompFunc<R12, R12>[]): CompFunc<I, R12>;
31
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, ...fs: CompFunc<R13, R13>[]): CompFunc<I, R13>;
32
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, ...fs: CompFunc<R14, R14>[]): CompFunc<I, R14>;
33
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, ...fs: CompFunc<R15, R15>[]): CompFunc<I, R15>;
34
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, ...fs: CompFunc<R16, R16>[]): CompFunc<I, R16>;
35
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, ...fs: CompFunc<R17, R17>[]): CompFunc<I, R17>;
36
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, ...fs: CompFunc<R18, R18>[]): CompFunc<I, R18>;
37
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, ...fs: CompFunc<R19, R19>[]): CompFunc<I, R19>;
38
19
  export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, f20: CompFunc<R19, R20>, ...fs: CompFunc<R20, R20>[]): CompFunc<I, R20>;
20
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, ...fs: CompFunc<R19, R19>[]): CompFunc<I, R19>;
21
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, ...fs: CompFunc<R18, R18>[]): CompFunc<I, R18>;
22
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, ...fs: CompFunc<R17, R17>[]): CompFunc<I, R17>;
23
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, ...fs: CompFunc<R16, R16>[]): CompFunc<I, R16>;
24
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, ...fs: CompFunc<R15, R15>[]): CompFunc<I, R15>;
25
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, ...fs: CompFunc<R14, R14>[]): CompFunc<I, R14>;
26
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, ...fs: CompFunc<R13, R13>[]): CompFunc<I, R13>;
27
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, ...fs: CompFunc<R12, R12>[]): CompFunc<I, R12>;
28
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, ...fs: CompFunc<R11, R11>[]): CompFunc<I, R11>;
29
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, ...fs: CompFunc<R10, R10>[]): CompFunc<I, R10>;
30
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, ...fs: CompFunc<R9, R9>[]): CompFunc<I, R9>;
31
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, ...fs: CompFunc<R8, R8>[]): CompFunc<I, R8>;
32
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, ...fs: CompFunc<R7, R7>[]): CompFunc<I, R7>;
33
+ export function flow<I, R1, R2, R3, R4, R5, R6>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, ...fs: CompFunc<R6, R6>[]): CompFunc<I, R6>;
34
+ export function flow<I, R1, R2, R3, R4, R5>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, ...fs: CompFunc<R5, R5>[]): CompFunc<I, R5>;
35
+ export function flow<I, R1, R2, R3, R4>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, ...fs: CompFunc<R4, R4>[]): CompFunc<I, R4>;
36
+ export function flow<I, R1, R2, R3>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, ...fs: CompFunc<R3, R3>[]): CompFunc<I, R3>;
37
+ export function flow<I, R1, R2>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, ...fs: CompFunc<R2, R2>[]): CompFunc<I, R2>;
38
+ export function flow<I, R1>(f1: CompFunc<I, R1>, ...fs: CompFunc<R1, R1>[]): CompFunc<I, R1>;
39
+ export function flow<I>(...fs: CompFunc<I, I>[]): CompFunc<I, I>;
39
40
  /**函数管道
40
41
  * 从左到右执行
41
42
  * @param input - 初始输入值
42
43
  * @param fs - 待组合的函数
43
44
  * @returns 经过所有函数处理后的结果
44
45
  */
45
- export function pipe<I>(input: I, ...fs: CompFunc<I, I>[]): I;
46
- export function pipe<I, R1>(input: I, f1: CompFunc<I, R1>, ...fs: CompFunc<R1, R1>[]): R1;
47
- export function pipe<I, R1, R2>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, ...fs: CompFunc<R2, R2>[]): R2;
48
- export function pipe<I, R1, R2, R3>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, ...fs: CompFunc<R3, R3>[]): R3;
49
- export function pipe<I, R1, R2, R3, R4>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, ...fs: CompFunc<R4, R4>[]): R4;
50
- export function pipe<I, R1, R2, R3, R4, R5>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, ...fs: CompFunc<R5, R5>[]): R5;
51
- export function pipe<I, R1, R2, R3, R4, R5, R6>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, ...fs: CompFunc<R6, R6>[]): R6;
52
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, ...fs: CompFunc<R7, R7>[]): R7;
53
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, ...fs: CompFunc<R8, R8>[]): R8;
54
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, ...fs: CompFunc<R9, R9>[]): R9;
55
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, ...fs: CompFunc<R10, R10>[]): R10;
56
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, ...fs: CompFunc<R11, R11>[]): R11;
57
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, ...fs: CompFunc<R12, R12>[]): R12;
58
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, ...fs: CompFunc<R13, R13>[]): R13;
59
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, ...fs: CompFunc<R14, R14>[]): R14;
60
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, ...fs: CompFunc<R15, R15>[]): R15;
61
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, ...fs: CompFunc<R16, R16>[]): R16;
62
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, ...fs: CompFunc<R17, R17>[]): R17;
63
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, ...fs: CompFunc<R18, R18>[]): R18;
64
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, ...fs: CompFunc<R19, R19>[]): R19;
65
46
  export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, f20: CompFunc<R19, R20>, ...fs: CompFunc<R20, R20>[]): R20;
47
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, ...fs: CompFunc<R19, R19>[]): R19;
48
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, ...fs: CompFunc<R18, R18>[]): R18;
49
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, ...fs: CompFunc<R17, R17>[]): R17;
50
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, ...fs: CompFunc<R16, R16>[]): R16;
51
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, ...fs: CompFunc<R15, R15>[]): R15;
52
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, ...fs: CompFunc<R14, R14>[]): R14;
53
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, ...fs: CompFunc<R13, R13>[]): R13;
54
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, ...fs: CompFunc<R12, R12>[]): R12;
55
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, ...fs: CompFunc<R11, R11>[]): R11;
56
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, ...fs: CompFunc<R10, R10>[]): R10;
57
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, ...fs: CompFunc<R9, R9>[]): R9;
58
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, ...fs: CompFunc<R8, R8>[]): R8;
59
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, ...fs: CompFunc<R7, R7>[]): R7;
60
+ export function pipe<I, R1, R2, R3, R4, R5, R6>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, ...fs: CompFunc<R6, R6>[]): R6;
61
+ export function pipe<I, R1, R2, R3, R4, R5>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, ...fs: CompFunc<R5, R5>[]): R5;
62
+ export function pipe<I, R1, R2, R3, R4>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, ...fs: CompFunc<R4, R4>[]): R4;
63
+ export function pipe<I, R1, R2, R3>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, ...fs: CompFunc<R3, R3>[]): R3;
64
+ export function pipe<I, R1, R2>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, ...fs: CompFunc<R2, R2>[]): R2;
65
+ export function pipe<I, R1>(input: I, f1: CompFunc<I, R1>, ...fs: CompFunc<R1, R1>[]): R1;
66
+ export function pipe<I>(input: I, ...fs: CompFunc<I, I>[]): I;
66
67
  /**将一个字段加入一个对象中, 返回新类型 */
67
68
  /**绑定一个键和一个值到一个基础对象上, 并返回一个新的对象
68
69
  * 新的对象包含了基础对象的所有属性, 以及一个新的属性,
@@ -75,7 +76,7 @@ export declare namespace UtilFP {
75
76
  * 然后返回一个新的对象新的对象包含了基础对象的所有属性,
76
77
  * 以及一个新的属性, 这个新的属性的键是`key`, 值是`value`
77
78
  */
78
- export function bind<K extends Keyable, V>(key: LiteralCheck<K>, value: V): <B extends {}>(base?: B) => keyof B extends K ? "Base中已有对应键" & Error : {
79
+ export function bind<K extends Keyable, V>(key: Literal<K>, value: V): <B extends {}>(base?: B) => keyof B extends K ? "Base中已有对应键" & Error : {
79
80
  [P in K | keyof B]: P extends K ? V : P extends keyof B ? B[P] : never;
80
81
  };
81
82
  /**绑定一个键到一个基础对象上,
@@ -87,7 +88,7 @@ export declare namespace UtilFP {
87
88
  * 然后返回一个新的对象新的对象包含了基础对象的所有属性,
88
89
  * 以及一个新的属性, 这个新的属性的键是`key`, 值是基础对象
89
90
  */
90
- export function bind<K extends Keyable>(key: LiteralCheck<K>): <B extends {}>(base?: B) => {
91
+ export function bind<K extends Keyable>(key: Literal<K>): <B extends {}>(base?: B) => {
91
92
  [P in K]: B;
92
93
  };
93
94
  /**绑定一个键和一个值到一个基础对象上, 并返回一个新的对象
@@ -101,7 +102,7 @@ export declare namespace UtilFP {
101
102
  * @param base - 基础对象
102
103
  * @returns 完成绑定的基础对象
103
104
  */
104
- export function bind<K extends Keyable, V, B extends {}>(key: LiteralCheck<K>, value: V, base: B): keyof B extends K ? "Base中已有对应键" & Error : {
105
+ export function bind<K extends Keyable, V, B extends {}>(key: Literal<K>, value: V, base: B): keyof B extends K ? "Base中已有对应键" & Error : {
105
106
  [P in K | keyof B]: P extends K ? V : P extends keyof B ? B[P] : never;
106
107
  };
107
108
  /**创建一个对对象的每个属性进行映射的函数
@@ -111,5 +112,9 @@ export declare namespace UtilFP {
111
112
  export function map<VAL, OUT, KEY extends symbol | string = string>(func: (input: VAL, k: KEY) => OUT): <OM extends Record<KEY, VAL>>(input: OM) => keyof OM extends KEY ? {
112
113
  [P in keyof OM]: OUT;
113
114
  } : "map函数传入的键类型无法处理此对象" & Error;
115
+ /**创建在传入值为失败时不运行的函数 */
116
+ export const chain: <T, R>(f: (arg: T) => R) => (arg: T) => "E" extends ProperSubsetCheck<symbol, T> ? T | R : T extends Matchable<FailedLike> ? T : MatchableFlag<T> extends Exclude<MatchableFlag<T>, FailedLike> ? R : T | R;
117
+ /**创建在传入值为失败时才会尝试运行的函数 */
118
+ export const alt: <T, R>(f: CompFunc<T, R>) => (arg: T) => "E" extends ProperSubsetCheck<symbol, T> ? T | R : T extends Matchable<FailedLike> ? R : MatchableFlag<T> extends Exclude<MatchableFlag<T>, FailedLike> ? T : T | R;
114
119
  export {};
115
120
  }
package/dist/UtilFP.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UtilFP = void 0;
4
+ const QuickFunction_1 = require("./QuickFunction");
4
5
  /**常用函数式编程库 */
5
6
  var UtilFP;
6
7
  (function (UtilFP) {
@@ -53,6 +54,10 @@ var UtilFP;
53
54
  };
54
55
  }
55
56
  UtilFP.map = map;
57
+ /**创建在传入值为失败时不运行的函数 */
58
+ UtilFP.chain = (f) => (arg) => (0, QuickFunction_1.isFailed)(arg) ? arg : f(arg);
59
+ /**创建在传入值为失败时才会尝试运行的函数 */
60
+ UtilFP.alt = (f) => (arg) => (0, QuickFunction_1.isFailed)(arg) ? f(arg) : arg;
56
61
  /**
57
62
  let asd = bindTo("sss",123,{abc:223});//?
58
63
  let sumvoid = ()=>10;
@@ -18,14 +18,14 @@ type FileSearchGlobOpt = Partial<{
18
18
  /**忽略的文件 默认 undefined */
19
19
  ingore: string | string[];
20
20
  /**输出的路径风格 默认跟随系统 */
21
- normalize: "posix" | "win32";
21
+ style: "posix" | "win32";
22
22
  }>;
23
23
  /**regex搜索选项 */
24
24
  type FileSearchRegexOpt = Partial<{
25
25
  /**搜索子目录 默认 true */
26
26
  relative: boolean;
27
27
  /**输出的路径风格 默认跟随系统 */
28
- normalize: "posix" | "win32";
28
+ style: "posix" | "win32";
29
29
  }>;
30
30
  /**文件工具 */
31
31
  export declare namespace UtilFT {
@@ -101,12 +101,18 @@ export declare namespace UtilFT {
101
101
  * @param token - 所要写入的JToken
102
102
  */
103
103
  function writeJSONFile(filePath: string, token: JToken): Promise<void>;
104
+ /**保证路径为某个风格
105
+ * @param filePath - 输入路径
106
+ * @param style - 目标风格 undefined 时不改变
107
+ * @returns 新的符合目标风格的路径
108
+ */
109
+ function stylizePath(filePath: string, style?: 'win32' | 'posix'): string;
104
110
  /**搜索路径符合正则表达式的文件
105
111
  * @param dir - 起始目录
106
112
  * @param traitRegex - 正则表达式
107
113
  * @param opt - 可选参数
108
114
  * @param opt.relative - 搜索子目录
109
- * @param opt.normalize - 输出的路径风格 默认跟随系统
115
+ * @param opt.style - 输出的路径风格 默认跟随系统
110
116
  * @returns 文件名路径数组
111
117
  */
112
118
  function fileSearchRegex(dir: string, traitRegex: string, opt?: FileSearchRegexOpt): string[];
@@ -115,7 +121,7 @@ export declare namespace UtilFT {
115
121
  * @param globPattern - glob匹配
116
122
  * @param opt - 可选参数
117
123
  * @param opt.ignore - 忽略的文件
118
- * @param opt.normalize - 输出的路径风格 默认跟随系统
124
+ * @param opt.style - 输出的路径风格 默认跟随系统
119
125
  * @returns 文件绝对路径数组
120
126
  */
121
127
  function fileSearchGlob(dir: string, globPattern: string | string[], opt?: FileSearchGlobOpt): string[];
@@ -193,39 +193,49 @@ var UtilFT;
193
193
  }
194
194
  }
195
195
  UtilFT.writeJSONFile = writeJSONFile;
196
+ /**保证路径为某个风格
197
+ * @param filePath - 输入路径
198
+ * @param style - 目标风格 undefined 时不改变
199
+ * @returns 新的符合目标风格的路径
200
+ */
201
+ function stylizePath(filePath, style) {
202
+ if (style === undefined)
203
+ return filePath;
204
+ return (0, QuickFunction_1.matchProc)(style, {
205
+ posix: (nor) => filePath.replaceAll("\\", "/"),
206
+ win32: (nor) => filePath.replaceAll("/", "\\"),
207
+ });
208
+ }
209
+ UtilFT.stylizePath = stylizePath;
196
210
  /**搜索路径符合正则表达式的文件
197
211
  * @param dir - 起始目录
198
212
  * @param traitRegex - 正则表达式
199
213
  * @param opt - 可选参数
200
214
  * @param opt.relative - 搜索子目录
201
- * @param opt.normalize - 输出的路径风格 默认跟随系统
215
+ * @param opt.style - 输出的路径风格 默认跟随系统
202
216
  * @returns 文件名路径数组
203
217
  */
204
218
  function fileSearchRegex(dir, traitRegex, opt) {
219
+ dir = stylizePath(dir, opt?.style);
220
+ const fixpath = opt?.style === undefined ? path :
221
+ opt.style === 'posix' ? path.posix : path.win32;
205
222
  const relative = opt?.relative ?? true;
206
223
  const outArray = [];
207
224
  const subFiles = fs.readdirSync(dir, { withFileTypes: true });
208
225
  //如果使用 g 会导致 RegExp.lastIndex 更改, 将会导致匹配错误
209
226
  const regex = new RegExp(traitRegex);
210
227
  for (const subFile of subFiles) {
211
- const subFilePath = path.join(dir, subFile.name);
228
+ const subFilePath = fixpath.join(dir, subFile.name);
212
229
  //判断是否是文件夹,递归调用
213
230
  if (subFile.isDirectory()) {
214
231
  if (relative)
215
- outArray.push(...fileSearchRegex(path.join(subFilePath, path.sep), traitRegex));
232
+ outArray.push(...fileSearchRegex(fixpath.join(subFilePath, fixpath.sep), traitRegex));
216
233
  continue;
217
234
  }
218
235
  if (regex.test(subFilePath))
219
236
  outArray.push(subFilePath);
220
237
  }
221
- return outArray.map((filePath) => {
222
- if (opt?.normalize === undefined)
223
- return filePath;
224
- return (0, QuickFunction_1.matchProc)(opt.normalize, {
225
- posix: (nor) => path[nor].normalize(filePath.replaceAll("\\", "/")),
226
- win32: (nor) => path[nor].normalize(filePath.replaceAll("/", "\\")),
227
- });
228
- });
238
+ return outArray.map((filePath) => fixpath.normalize(stylizePath(filePath, opt?.style)));
229
239
  }
230
240
  UtilFT.fileSearchRegex = fileSearchRegex;
231
241
  /**搜索符合Glob匹配的文件
@@ -233,22 +243,18 @@ var UtilFT;
233
243
  * @param globPattern - glob匹配
234
244
  * @param opt - 可选参数
235
245
  * @param opt.ignore - 忽略的文件
236
- * @param opt.normalize - 输出的路径风格 默认跟随系统
246
+ * @param opt.style - 输出的路径风格 默认跟随系统
237
247
  * @returns 文件绝对路径数组
238
248
  */
239
249
  function fileSearchGlob(dir, globPattern, opt) {
250
+ dir = stylizePath(dir, opt?.style);
251
+ const fixpath = opt?.style === undefined ? path :
252
+ opt.style === 'posix' ? path.posix : path.win32;
240
253
  const fixedPath = typeof globPattern === "string"
241
- ? path.join(dir, globPattern).replaceAll("\\", "/")
242
- : globPattern.map((p) => path.join(dir, p).replaceAll("\\", "/"));
254
+ ? fixpath.join(dir, globPattern)
255
+ : globPattern.map((p) => fixpath.join(dir, p));
243
256
  return (0, glob_1.globSync)(fixedPath, { ignore: opt?.ingore, absolute: true })
244
- .map((filePath) => {
245
- if (opt?.normalize === undefined)
246
- return filePath;
247
- return (0, QuickFunction_1.matchProc)(opt.normalize, {
248
- posix: (nor) => path[nor].normalize(filePath.replaceAll("\\", "/")),
249
- win32: (nor) => path[nor].normalize(filePath.replaceAll("/", "\\")),
250
- });
251
- });
257
+ .map((filePath) => fixpath.normalize(stylizePath(filePath, opt?.style)));
252
258
  }
253
259
  UtilFT.fileSearchGlob = fileSearchGlob;
254
260
  /**
@@ -1,4 +1,4 @@
1
- import { AnyFunc, ComposedClass, ComposedMixinable, ComposedRefMixinable, ExtractOutcome, IJData, JObject, JToken, Keyable, LiteralCheck, Matchable, MatchableFlag, Mixinable, Outcome, PromiseVerifyFn, RefMixinable, UnionToIntersection } from "./UtilInterfaces";
1
+ import { AnyFunc, ComposedClass, ComposedMixinable, ComposedRefMixinable, ExtractOutcome, IJData, JObject, JToken, Keyable, Literal, Matchable, MatchableFlag, Mixinable, Outcome, PromiseVerifyFn, ProperSubsetCheck, RefMixinable, UnionToIntersection } from "./UtilInterfaces";
2
2
  import { LogLevel } from "./UtilLogger";
3
3
  import { FailedLike, None, StatusSymbol, Success, SuccessLike, Timeout } from "./UtilSymbol";
4
4
  declare const HashMethodList: readonly ["md5", "sha1", "sha256", "sha512", "sha3", "blake2", "blake3"];
@@ -145,9 +145,9 @@ export declare class UtilFunc {
145
145
  */
146
146
  static sucesProc<T extends Matchable<StatusSymbol>, S extends (arg: ExtractOutcome<T, SuccessLike>['result']) => unknown, F extends (arg: ExtractOutcome<T, FailedLike>['result']) => unknown = (arg: ExtractOutcome<T, FailedLike>['result']) => None, N extends () => unknown = () => None>(t: T, sucessFunc: S, failedFunc?: F, noneFunc?: N): ReturnType<S> | ReturnType<F> | ReturnType<N>;
147
147
  /**是失败的 */
148
- static isFailed<T>(tg: T): T extends Matchable<FailedLike> ? true : MatchableFlag<T> extends Exclude<MatchableFlag<T>, FailedLike> ? false : boolean;
148
+ static isFailed<T>(tg: T): 'E' extends ProperSubsetCheck<symbol, T> ? boolean : T extends Matchable<FailedLike> ? true : MatchableFlag<T> extends Exclude<MatchableFlag<T>, FailedLike> ? false : boolean;
149
149
  /**是成功的 */
150
- static isSuccess<T>(tg: T): T extends Matchable<SuccessLike> ? true : MatchableFlag<T> extends Exclude<MatchableFlag<T>, SuccessLike> ? false : boolean;
150
+ static isSuccess<T>(tg: T): 'E' extends ProperSubsetCheck<symbol, T> ? boolean : T extends Matchable<SuccessLike> ? true : MatchableFlag<T> extends Exclude<MatchableFlag<T>, SuccessLike> ? false : boolean;
151
151
  /**类似空值 undefined null None
152
152
  * @param t - 检测目标
153
153
  * @param strictLog - 应该严格等于None 否则将输出警告 但任然返回true
@@ -170,7 +170,7 @@ export declare class UtilFunc {
170
170
  * @template T - 验证类型
171
171
  * @param t - 验证目标
172
172
  */
173
- static assertLiteral<T>(t: LiteralCheck<T>): T;
173
+ static assertLiteral<T>(t: Literal<T>): T;
174
174
  /**深克隆 序列化并反序列化
175
175
  * @template T - JToken类型的泛型
176
176
  * @param obj - 克隆目标
@@ -185,12 +185,12 @@ export declare class UtilFunc {
185
185
  */
186
186
  static isSafeNumber(num: unknown): boolean;
187
187
  /**将一个字段加入一个对象中,将改变对象,返回新类型 */
188
- static bindTo<K extends Keyable, V, B extends {} = {}>(key: LiteralCheck<K>, value: V, base?: B): keyof B extends K ? "Base中已有对应键" & Error : {
188
+ static bindTo<K extends Keyable, V, B extends {} = {}>(key: Literal<K>, value: V, base?: B): keyof B extends K ? "Base中已有对应键" & Error : {
189
189
  [P in K | keyof B]: P extends K ? V : P extends keyof B ? B[P] : never;
190
190
  };
191
191
  /**移除多行字符串中每行开始的最小空格数。
192
192
  *
193
- * @param strings - 需要处理的多行字符串模板。
193
+ * @param input - 需要处理的多行 字符串模板 或 字符串。
194
194
  * @param values - 插入模板字符串中的值。
195
195
  * @returns 返回处理后的字符串,每行开始的空格数已被最小化。
196
196
  *
@@ -205,7 +205,7 @@ export declare class UtilFunc {
205
205
  * // Hello,
206
206
  * // World!
207
207
  */
208
- static dedent(strings: TemplateStringsArray, ...values: any[]): string;
208
+ static dedent(input: TemplateStringsArray | string, ...values: any[]): string;
209
209
  /**抛出错误
210
210
  * @param message - 错误信息
211
211
  * @param lvl - 日志等级
@@ -535,7 +535,7 @@ class UtilFunc {
535
535
  }
536
536
  /**移除多行字符串中每行开始的最小空格数。
537
537
  *
538
- * @param strings - 需要处理的多行字符串模板。
538
+ * @param input - 需要处理的多行 字符串模板 或 字符串。
539
539
  * @param values - 插入模板字符串中的值。
540
540
  * @returns 返回处理后的字符串,每行开始的空格数已被最小化。
541
541
  *
@@ -550,8 +550,10 @@ class UtilFunc {
550
550
  * // Hello,
551
551
  * // World!
552
552
  */
553
- static dedent(strings, ...values) {
554
- const str = strings.reduce((result, string, i) => result + string + (values[i] || ''), '');
553
+ static dedent(input, ...values) {
554
+ const str = typeof input === 'string'
555
+ ? input
556
+ : input.reduce((result, string, i) => result + string + (values[i] ?? ''), '');
555
557
  const lines = str.split('\n');
556
558
  const minIndent = Math.min(...lines.filter(line => line.trim() !== '').map(line => line.search(/\S/)));
557
559
  return lines.map(line => line.slice(minIndent)).join('\n');
@@ -25,10 +25,29 @@ export type Keyable = string | number | symbol;
25
25
  * @template D - 默认选项
26
26
  */
27
27
  export type PartialOption<B, D> = keyof D extends keyof B ? Omit<B, keyof D> & Partial<Pick<B, keyof D>> : never;
28
- /**真子集 */
29
- export type ProperSubset<B, T = B> = T extends B ? B extends T ? never : T : never;
30
- /**字面量检测 */
31
- export type LiteralCheck<L> = ProperSubset<string, L> | ProperSubset<number, L> | ProperSubset<boolean, L> | ProperSubset<symbol, L> | ProperSubset<any[], L> | ProperSubset<Record<any, any>, L> | null | undefined;
28
+ /**真子集 测试 T 是否为 B 的真子集
29
+ * @template B - 超集
30
+ * @template T - 子集
31
+ */
32
+ export type ProperSubset<B, T> = T extends B ? B extends T ? never : T : never;
33
+ /**真子集检查 测试 T 是否为 B 的真子集
34
+ * 相等时返回 'E'
35
+ * 真子集时返回 'P'
36
+ * 不相交时返回 'N'
37
+ * @template B - 超集
38
+ * @template T - 子集
39
+ */
40
+ export type ProperSubsetCheck<B, T> = T extends B ? B extends T ? "E" : "P" : "N";
41
+ /**字面量 检查 L 是否为字面量
42
+ * @template L - 目标量
43
+ */
44
+ export type Literal<L> = ProperSubset<string, L> | ProperSubset<number, L> | ProperSubset<boolean, L> | ProperSubset<symbol, L> | ProperSubset<any[], L> | ProperSubset<Record<any, any>, L> | Extract<L, null | undefined>;
45
+ /**字面量检查 测试 L 是否为字面量
46
+ * 是字面量时返回 true
47
+ * 不是字面量时返回 false
48
+ * @template L - 目标量
49
+ */
50
+ export type LiteralCheck<L> = ProperSubsetCheck<string, L> extends "P" ? true : ProperSubsetCheck<number, L> extends "P" ? true : ProperSubsetCheck<boolean, L> extends "P" ? true : ProperSubsetCheck<symbol, L> extends "P" ? true : ProperSubsetCheck<any[], L> extends "P" ? true : ProperSubsetCheck<Record<any, any>, L> extends "P" ? true : L extends null | undefined ? true : false;
32
51
  /**返回将Mixin分配给Base的结果,相同字段时Mixin覆盖Base */
33
52
  export type AssignObject<Base extends {}, Mixin extends {}> = {
34
53
  [P in keyof Mixin | keyof Base]: P extends keyof Mixin ? Mixin[P] : P extends keyof Base ? Base[P] : never;
@@ -141,7 +160,7 @@ export type RequiredOnly<T> = {
141
160
  };
142
161
  /**添加前缀 */
143
162
  export type WithPrefix<T, P extends string> = {
144
- [K in (keyof T) as K extends string ? `${P}_${K}` : K]: T[K];
163
+ [K in (keyof T) as K extends string ? `${P}${K}` : K]: T[K];
145
164
  };
146
165
  /**返回结果
147
166
  * @template K - 类型键值
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zwa73/utils",
3
- "version": "1.0.116",
3
+ "version": "1.0.118",
4
4
  "description": "my utils",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1,3 +1,4 @@
1
+ import { UtilFT } from "./UtilFileTools";
1
2
  import { UtilFunc } from "./UtilFunctions";
2
3
  import { Outcome } from "./UtilInterfaces";
3
4
  import { Completed, Failed, FailedLike, None, NoneOut, StatusSymbol, Success, SuccessLike, Terminated, Timeout } from "./UtilSymbol";
@@ -22,6 +23,10 @@ export const {
22
23
  throwError,
23
24
  } = UtilFunc;
24
25
 
26
+ export const {
27
+ stylizePath
28
+ } = UtilFT;
29
+
25
30
  if(false){
26
31
  let aaser = assertLiteral({a:1})
27
32
 
package/src/UtilClass.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { matchProc } from "./QuickFunction";
2
- import { LiteralCheck } from "./UtilInterfaces";
2
+ import { Literal } from "./UtilInterfaces";
3
3
 
4
4
  /**函数管道器 */
5
5
  export class Piper<Arg, Result = Arg> {
@@ -165,7 +165,7 @@ export class Stream<T> implements Iterable<T>{
165
165
  * @param value - 排除的值
166
166
  * @returns 自身
167
167
  */
168
- async exclude<E>(value:LiteralCheck<E>): Promise<Stream<Exclude<T,E>>>{
168
+ async exclude<E>(value:Literal<E>): Promise<Stream<Exclude<T,E>>>{
169
169
  await this.append();
170
170
  return new Stream(this._list.filter((v)=>v!==value as any) as Exclude<T,E>[]);
171
171
  }
package/src/UtilCodecs.ts CHANGED
@@ -6,9 +6,12 @@ import {get_encoding,Tiktoken} from 'tiktoken';
6
6
  /**编码/解码器 */
7
7
  export namespace UtilCodec{
8
8
 
9
-
10
- let encoderTurbo:Tiktoken|null = null;
11
- let encoderDavinci:Tiktoken|null = null;
9
+ /**gpt-4, gpt-3.5-turbo, text-embedding-ada-002, text-embedding-3-small, text-embedding-3-large
10
+ */
11
+ let encoderCl100kBase:Tiktoken|null = null;
12
+ /**Codex models, text-davinci-002, text-davinci-003
13
+ */
14
+ let encoderP50kBase:Tiktoken|null = null;
12
15
  const textDecoder = new TextDecoder();
13
16
 
14
17
  /**HTML实体解码 将一个字符串中的HTML实体转换为对应的字符
@@ -36,11 +39,11 @@ export function encodeHtmlEntities(str:string) {
36
39
 
37
40
  //避免在nextjs调用时出错
38
41
  function initTikTokenEncoder (){
39
- if(encoderTurbo!=null && encoderDavinci!=null)
42
+ if(encoderCl100kBase!=null && encoderP50kBase!=null)
40
43
  return;
41
44
 
42
- encoderTurbo = get_encoding("cl100k_base");
43
- encoderDavinci = get_encoding("p50k_base");
45
+ encoderCl100kBase = get_encoding("cl100k_base");
46
+ encoderP50kBase = get_encoding("p50k_base");
44
47
  }
45
48
 
46
49
  /**token长度计算器 Turbo模型
@@ -50,7 +53,7 @@ function initTikTokenEncoder (){
50
53
  export function tokenNumTurbo(str:string):number{
51
54
  initTikTokenEncoder();
52
55
  //return encoder.encode(str).length
53
- return encoderTurbo?.encode(str).length as any as number;
56
+ return encoderCl100kBase?.encode(str).length as any as number;
54
57
  }
55
58
  /**token长度计算器 Davinci模型
56
59
  * @param str = 所要计算的消息
@@ -58,7 +61,7 @@ export function tokenNumTurbo(str:string):number{
58
61
  */
59
62
  export function tokenNumDavinci(str:string):number{
60
63
  initTikTokenEncoder();
61
- return encoderDavinci?.encode(str).length as any as number;
64
+ return encoderP50kBase?.encode(str).length as any as number;
62
65
  }
63
66
 
64
67
  /**token编码 Turbo模型
@@ -67,7 +70,7 @@ export function tokenNumDavinci(str:string):number{
67
70
  */
68
71
  export function encodeTokenTurbo(str:string):Uint32Array{
69
72
  initTikTokenEncoder();
70
- return encoderTurbo?.encode(str) as any as Uint32Array
73
+ return encoderCl100kBase?.encode(str) as any as Uint32Array
71
74
  }
72
75
  /**token编码 Davinci模型
73
76
  * @param str = 所要计算的消息
@@ -75,7 +78,7 @@ export function encodeTokenTurbo(str:string):Uint32Array{
75
78
  */
76
79
  export function encodeTokenDavinci(str:string):Uint32Array{
77
80
  initTikTokenEncoder();
78
- return encoderDavinci?.encode(str) as any as Uint32Array;
81
+ return encoderP50kBase?.encode(str) as any as Uint32Array;
79
82
  }
80
83
  /**token解码 Turbo模型
81
84
  * @param arr = Token数组
@@ -84,7 +87,7 @@ export function encodeTokenDavinci(str:string):Uint32Array{
84
87
  export function decodeTokenTurbo(arr:Uint32Array|number[]):string{
85
88
  initTikTokenEncoder();
86
89
  if(Array.isArray(arr)) arr = new Uint32Array(arr);
87
- return textDecoder.decode(encoderTurbo?.decode(arr));
90
+ return textDecoder.decode(encoderCl100kBase?.decode(arr));
88
91
  }
89
92
  /**token解码 Davinci模型
90
93
  * @param arr = Token数组
@@ -93,7 +96,7 @@ export function decodeTokenTurbo(arr:Uint32Array|number[]):string{
93
96
  export function decodeTokenDavinci(arr:Uint32Array|number[]):string{
94
97
  initTikTokenEncoder();
95
98
  if(Array.isArray(arr)) arr = new Uint32Array(arr);
96
- return textDecoder.decode(encoderDavinci?.decode(arr));
99
+ return textDecoder.decode(encoderP50kBase?.decode(arr));
97
100
  }
98
101
  //#endregion
99
102
  }
@@ -6,24 +6,24 @@ const prefix = (str:string,prefix?:string)=> str.length>0?`${prefix}${str}`:str;
6
6
  const suffix = (str:string,suffix?:string)=> str.length>0?`${str}${suffix}`:str;
7
7
 
8
8
  regionMacro("flow重载",()=>{
9
- let result = ``;
9
+ const result:string[] = [];
10
10
  for (let i = 0; i <= N; i++) {
11
11
  const template = Array.from({length: i+1}, (_, k) => R(k)).join(', ');
12
12
  const args = suffix(Array.from({length: i}, (_, k) =>
13
13
  `f${k+1}: CompFunc<${R(k)}, ${R(k+1)}>`
14
14
  ).join(', '),", ");
15
- result += `export function flow<${template}>(${args}...fs: CompFunc<${R(i)}, ${R(i)}>[]): CompFunc<I, ${R(i)}>;\n`;
15
+ result.push(`export function flow<${template}>(${args}...fs: CompFunc<${R(i)}, ${R(i)}>[]): CompFunc<I, ${R(i)}>;`);
16
16
  }
17
- return result.trim();
17
+ return result.reverse().join('\n').trim();
18
18
  });
19
19
  regionMacro("pipe重载",()=>{
20
- let result = ``;
20
+ const result:string[] = [];
21
21
  for (let i = 0; i <= N; i++) {
22
22
  const template = Array.from({length: i+1}, (_, k) => R(k)).join(', ');
23
23
  const args = suffix(Array.from({length: i}, (_, k) =>
24
24
  `f${k+1}: CompFunc<${R(k)}, ${R(k+1)}>`
25
25
  ).join(', '),", ");
26
- result += `export function pipe<${template}>(input: I, ${args}...fs: CompFunc<${R(i)}, ${R(i)}>[]): ${R(i)};\n`;
26
+ result.push(`export function pipe<${template}>(input: I, ${args}...fs: CompFunc<${R(i)}, ${R(i)}>[]): ${R(i)};`);
27
27
  }
28
- return result.trim();
28
+ return result.reverse().join('\n').trim();
29
29
  });
package/src/UtilFP.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { Keyable, LiteralCheck } from "./UtilInterfaces";
2
- import { None } from "./UtilSymbol";
1
+ import { isFailed, likeNone } from "./QuickFunction";
2
+ import { Keyable, Literal, Matchable, MatchableFlag, ProperSubset, ProperSubsetCheck } from "./UtilInterfaces";
3
+ import { Failed, FailedLike, None } from "./UtilSymbol";
3
4
 
4
5
  /**常用函数式编程库 */
5
6
  export namespace UtilFP {
@@ -39,27 +40,27 @@ type CompFunc<T, R> = (arg: T) => R;
39
40
  * @returns 组合完成的函数
40
41
  */
41
42
  //#region flow重载
42
- export function flow<I>(...fs: CompFunc<I, I>[]): CompFunc<I, I>;
43
- export function flow<I, R1>(f1: CompFunc<I, R1>, ...fs: CompFunc<R1, R1>[]): CompFunc<I, R1>;
44
- export function flow<I, R1, R2>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, ...fs: CompFunc<R2, R2>[]): CompFunc<I, R2>;
45
- export function flow<I, R1, R2, R3>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, ...fs: CompFunc<R3, R3>[]): CompFunc<I, R3>;
46
- export function flow<I, R1, R2, R3, R4>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, ...fs: CompFunc<R4, R4>[]): CompFunc<I, R4>;
47
- export function flow<I, R1, R2, R3, R4, R5>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, ...fs: CompFunc<R5, R5>[]): CompFunc<I, R5>;
48
- export function flow<I, R1, R2, R3, R4, R5, R6>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, ...fs: CompFunc<R6, R6>[]): CompFunc<I, R6>;
49
- export function flow<I, R1, R2, R3, R4, R5, R6, R7>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, ...fs: CompFunc<R7, R7>[]): CompFunc<I, R7>;
50
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, ...fs: CompFunc<R8, R8>[]): CompFunc<I, R8>;
51
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, ...fs: CompFunc<R9, R9>[]): CompFunc<I, R9>;
52
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, ...fs: CompFunc<R10, R10>[]): CompFunc<I, R10>;
53
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, ...fs: CompFunc<R11, R11>[]): CompFunc<I, R11>;
54
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, ...fs: CompFunc<R12, R12>[]): CompFunc<I, R12>;
55
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, ...fs: CompFunc<R13, R13>[]): CompFunc<I, R13>;
56
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, ...fs: CompFunc<R14, R14>[]): CompFunc<I, R14>;
57
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, ...fs: CompFunc<R15, R15>[]): CompFunc<I, R15>;
58
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, ...fs: CompFunc<R16, R16>[]): CompFunc<I, R16>;
59
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, ...fs: CompFunc<R17, R17>[]): CompFunc<I, R17>;
60
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, ...fs: CompFunc<R18, R18>[]): CompFunc<I, R18>;
61
- export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, ...fs: CompFunc<R19, R19>[]): CompFunc<I, R19>;
62
43
  export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, f20: CompFunc<R19, R20>, ...fs: CompFunc<R20, R20>[]): CompFunc<I, R20>;
44
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, ...fs: CompFunc<R19, R19>[]): CompFunc<I, R19>;
45
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, ...fs: CompFunc<R18, R18>[]): CompFunc<I, R18>;
46
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, ...fs: CompFunc<R17, R17>[]): CompFunc<I, R17>;
47
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, ...fs: CompFunc<R16, R16>[]): CompFunc<I, R16>;
48
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, ...fs: CompFunc<R15, R15>[]): CompFunc<I, R15>;
49
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, ...fs: CompFunc<R14, R14>[]): CompFunc<I, R14>;
50
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, ...fs: CompFunc<R13, R13>[]): CompFunc<I, R13>;
51
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, ...fs: CompFunc<R12, R12>[]): CompFunc<I, R12>;
52
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, ...fs: CompFunc<R11, R11>[]): CompFunc<I, R11>;
53
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, ...fs: CompFunc<R10, R10>[]): CompFunc<I, R10>;
54
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8, R9>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, ...fs: CompFunc<R9, R9>[]): CompFunc<I, R9>;
55
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7, R8>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, ...fs: CompFunc<R8, R8>[]): CompFunc<I, R8>;
56
+ export function flow<I, R1, R2, R3, R4, R5, R6, R7>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, ...fs: CompFunc<R7, R7>[]): CompFunc<I, R7>;
57
+ export function flow<I, R1, R2, R3, R4, R5, R6>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, ...fs: CompFunc<R6, R6>[]): CompFunc<I, R6>;
58
+ export function flow<I, R1, R2, R3, R4, R5>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, ...fs: CompFunc<R5, R5>[]): CompFunc<I, R5>;
59
+ export function flow<I, R1, R2, R3, R4>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, ...fs: CompFunc<R4, R4>[]): CompFunc<I, R4>;
60
+ export function flow<I, R1, R2, R3>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, ...fs: CompFunc<R3, R3>[]): CompFunc<I, R3>;
61
+ export function flow<I, R1, R2>(f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, ...fs: CompFunc<R2, R2>[]): CompFunc<I, R2>;
62
+ export function flow<I, R1>(f1: CompFunc<I, R1>, ...fs: CompFunc<R1, R1>[]): CompFunc<I, R1>;
63
+ export function flow<I>(...fs: CompFunc<I, I>[]): CompFunc<I, I>;
63
64
  //#endregion
64
65
  export function flow<T>(...fs: ((arg: T) => T)[]): (arg: T) => T {
65
66
  return (arg: T): T => {
@@ -74,27 +75,27 @@ export function flow<T>(...fs: ((arg: T) => T)[]): (arg: T) => T {
74
75
  * @returns 经过所有函数处理后的结果
75
76
  */
76
77
  //#region pipe重载
77
- export function pipe<I>(input: I, ...fs: CompFunc<I, I>[]): I;
78
- export function pipe<I, R1>(input: I, f1: CompFunc<I, R1>, ...fs: CompFunc<R1, R1>[]): R1;
79
- export function pipe<I, R1, R2>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, ...fs: CompFunc<R2, R2>[]): R2;
80
- export function pipe<I, R1, R2, R3>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, ...fs: CompFunc<R3, R3>[]): R3;
81
- export function pipe<I, R1, R2, R3, R4>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, ...fs: CompFunc<R4, R4>[]): R4;
82
- export function pipe<I, R1, R2, R3, R4, R5>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, ...fs: CompFunc<R5, R5>[]): R5;
83
- export function pipe<I, R1, R2, R3, R4, R5, R6>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, ...fs: CompFunc<R6, R6>[]): R6;
84
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, ...fs: CompFunc<R7, R7>[]): R7;
85
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, ...fs: CompFunc<R8, R8>[]): R8;
86
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, ...fs: CompFunc<R9, R9>[]): R9;
87
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, ...fs: CompFunc<R10, R10>[]): R10;
88
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, ...fs: CompFunc<R11, R11>[]): R11;
89
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, ...fs: CompFunc<R12, R12>[]): R12;
90
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, ...fs: CompFunc<R13, R13>[]): R13;
91
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, ...fs: CompFunc<R14, R14>[]): R14;
92
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, ...fs: CompFunc<R15, R15>[]): R15;
93
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, ...fs: CompFunc<R16, R16>[]): R16;
94
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, ...fs: CompFunc<R17, R17>[]): R17;
95
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, ...fs: CompFunc<R18, R18>[]): R18;
96
- export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, ...fs: CompFunc<R19, R19>[]): R19;
97
78
  export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19, R20>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, f20: CompFunc<R19, R20>, ...fs: CompFunc<R20, R20>[]): R20;
79
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18, R19>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, f19: CompFunc<R18, R19>, ...fs: CompFunc<R19, R19>[]): R19;
80
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17, R18>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, f18: CompFunc<R17, R18>, ...fs: CompFunc<R18, R18>[]): R18;
81
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16, R17>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, f17: CompFunc<R16, R17>, ...fs: CompFunc<R17, R17>[]): R17;
82
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15, R16>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, f16: CompFunc<R15, R16>, ...fs: CompFunc<R16, R16>[]): R16;
83
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14, R15>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, f15: CompFunc<R14, R15>, ...fs: CompFunc<R15, R15>[]): R15;
84
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13, R14>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, f14: CompFunc<R13, R14>, ...fs: CompFunc<R14, R14>[]): R14;
85
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12, R13>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, f13: CompFunc<R12, R13>, ...fs: CompFunc<R13, R13>[]): R13;
86
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, f12: CompFunc<R11, R12>, ...fs: CompFunc<R12, R12>[]): R12;
87
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, f11: CompFunc<R10, R11>, ...fs: CompFunc<R11, R11>[]): R11;
88
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9, R10>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, f10: CompFunc<R9, R10>, ...fs: CompFunc<R10, R10>[]): R10;
89
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8, R9>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, f9: CompFunc<R8, R9>, ...fs: CompFunc<R9, R9>[]): R9;
90
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7, R8>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, f8: CompFunc<R7, R8>, ...fs: CompFunc<R8, R8>[]): R8;
91
+ export function pipe<I, R1, R2, R3, R4, R5, R6, R7>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, f7: CompFunc<R6, R7>, ...fs: CompFunc<R7, R7>[]): R7;
92
+ export function pipe<I, R1, R2, R3, R4, R5, R6>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, f6: CompFunc<R5, R6>, ...fs: CompFunc<R6, R6>[]): R6;
93
+ export function pipe<I, R1, R2, R3, R4, R5>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, f5: CompFunc<R4, R5>, ...fs: CompFunc<R5, R5>[]): R5;
94
+ export function pipe<I, R1, R2, R3, R4>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, f4: CompFunc<R3, R4>, ...fs: CompFunc<R4, R4>[]): R4;
95
+ export function pipe<I, R1, R2, R3>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, f3: CompFunc<R2, R3>, ...fs: CompFunc<R3, R3>[]): R3;
96
+ export function pipe<I, R1, R2>(input: I, f1: CompFunc<I, R1>, f2: CompFunc<R1, R2>, ...fs: CompFunc<R2, R2>[]): R2;
97
+ export function pipe<I, R1>(input: I, f1: CompFunc<I, R1>, ...fs: CompFunc<R1, R1>[]): R1;
98
+ export function pipe<I>(input: I, ...fs: CompFunc<I, I>[]): I;
98
99
  //#endregion
99
100
  export function pipe<T>(input: T, ...fs: ((arg: T) => T)[]): T {
100
101
  return fs.reduce((value, func) => func(value), input);
@@ -115,7 +116,7 @@ export function pipe<T>(input: T, ...fs: ((arg: T) => T)[]): T {
115
116
  * 以及一个新的属性, 这个新的属性的键是`key`, 值是`value`
116
117
  */
117
118
  export function bind<K extends Keyable, V>
118
- (key: LiteralCheck<K>,value: V): <B extends {}>
119
+ (key: Literal<K>,value: V): <B extends {}>
119
120
  (base?: B) => keyof B extends K
120
121
  ? "Base中已有对应键"&Error
121
122
  : {[P in K | keyof B]: P extends K ? V : P extends keyof B ? B[P] : never;};
@@ -129,7 +130,7 @@ export function bind<K extends Keyable, V>
129
130
  * 以及一个新的属性, 这个新的属性的键是`key`, 值是基础对象
130
131
  */
131
132
  export function bind<K extends Keyable>
132
- (key: LiteralCheck<K>): <B extends {}>
133
+ (key: Literal<K>): <B extends {}>
133
134
  (base?: B) => { [P in K]: B };
134
135
  /**绑定一个键和一个值到一个基础对象上, 并返回一个新的对象
135
136
  * 新的对象包含了基础对象的所有属性, 以及一个新的属性,
@@ -143,12 +144,12 @@ export function bind<K extends Keyable>
143
144
  * @returns 完成绑定的基础对象
144
145
  */
145
146
  export function bind<K extends Keyable, V, B extends {}>
146
- (key: LiteralCheck<K>,value: V, base:B):keyof B extends K
147
+ (key: Literal<K>,value: V, base:B):keyof B extends K
147
148
  ? "Base中已有对应键"&Error
148
149
  : {[P in K | keyof B]: P extends K ? V : P extends keyof B ? B[P] : never;};
149
150
  //#endregion
150
151
  export function bind
151
- <K extends Keyable, V, B>(key: LiteralCheck<K>, value?: V, base?:B){
152
+ <K extends Keyable, V, B>(key: Literal<K>, value?: V, base?:B){
152
153
  if(base !== undefined)
153
154
  return { ...base, [key as Keyable]: value };
154
155
  if(value ===undefined)
@@ -182,6 +183,20 @@ export function map<VAL, OUT, KEY extends symbol|string = string>
182
183
  };
183
184
  }
184
185
 
186
+ /**创建在传入值为失败时不运行的函数 */
187
+ export const chain = <T, R>(f: (arg:T)=>R) =>
188
+ (arg: T): 'E' extends ProperSubsetCheck<symbol,T>? T|R :
189
+ T extends Matchable<FailedLike>
190
+ ? T : MatchableFlag<T> extends Exclude<MatchableFlag<T>,FailedLike>
191
+ ? R : T|R => isFailed(arg) ? arg : f(arg) as any;
192
+
193
+ /**创建在传入值为失败时才会尝试运行的函数 */
194
+ export const alt = <T, R>(f: CompFunc<T, R>) =>
195
+ (arg: T): 'E' extends ProperSubsetCheck<symbol,T> ? T|R :
196
+ T extends Matchable<FailedLike>
197
+ ? R : MatchableFlag<T> extends Exclude<MatchableFlag<T>,FailedLike>
198
+ ? T : T|R => isFailed(arg) ? f(arg) : arg as any;
199
+
185
200
 
186
201
  /**
187
202
  let asd = bindTo("sss",123,{abc:223});//?
@@ -27,7 +27,7 @@ type FileSearchGlobOpt = Partial<{
27
27
  /**忽略的文件 默认 undefined */
28
28
  ingore:string|string[];
29
29
  /**输出的路径风格 默认跟随系统 */
30
- normalize:"posix"|"win32";
30
+ style:"posix"|"win32";
31
31
  }>
32
32
 
33
33
  /**regex搜索选项 */
@@ -35,7 +35,7 @@ type FileSearchRegexOpt = Partial<{
35
35
  /**搜索子目录 默认 true */
36
36
  relative:boolean;
37
37
  /**输出的路径风格 默认跟随系统 */
38
- normalize:"posix"|"win32";
38
+ style:"posix"|"win32";
39
39
  }>
40
40
 
41
41
  /**文件工具 */
@@ -230,59 +230,67 @@ export async function writeJSONFile(
230
230
  SLogger.error(`${filePath} writeJSONFile 错误`,err);
231
231
  }
232
232
  }
233
+ /**保证路径为某个风格
234
+ * @param filePath - 输入路径
235
+ * @param style - 目标风格 undefined 时不改变
236
+ * @returns 新的符合目标风格的路径
237
+ */
238
+ export function stylizePath(filePath:string,style?:'win32'|'posix'){
239
+ if(style===undefined) return filePath;
240
+ return matchProc(style, {
241
+ posix: (nor) => filePath.replaceAll("\\", "/"),
242
+ win32: (nor) => filePath.replaceAll("/", "\\"),
243
+ });
244
+ }
233
245
 
234
246
  /**搜索路径符合正则表达式的文件
235
247
  * @param dir - 起始目录
236
248
  * @param traitRegex - 正则表达式
237
249
  * @param opt - 可选参数
238
250
  * @param opt.relative - 搜索子目录
239
- * @param opt.normalize - 输出的路径风格 默认跟随系统
251
+ * @param opt.style - 输出的路径风格 默认跟随系统
240
252
  * @returns 文件名路径数组
241
253
  */
242
254
  export function fileSearchRegex(dir: string, traitRegex: string, opt?:FileSearchRegexOpt) {
255
+ dir = stylizePath(dir,opt?.style);
256
+ const fixpath = opt?.style === undefined ? path :
257
+ opt.style ==='posix' ? path.posix : path.win32;
258
+
243
259
  const relative = opt?.relative ?? true;
244
260
  const outArray: string[] = [];
245
261
  const subFiles = fs.readdirSync(dir, { withFileTypes: true });
246
262
  //如果使用 g 会导致 RegExp.lastIndex 更改, 将会导致匹配错误
247
263
  const regex = new RegExp(traitRegex);
248
264
  for (const subFile of subFiles) {
249
- const subFilePath = path.join(dir, subFile.name);
265
+ const subFilePath = fixpath.join(dir, subFile.name);
250
266
  //判断是否是文件夹,递归调用
251
267
  if (subFile.isDirectory()) {
252
268
  if (relative)
253
- outArray.push(...fileSearchRegex(path.join(subFilePath, path.sep), traitRegex));
269
+ outArray.push(...fileSearchRegex(fixpath.join(subFilePath, fixpath.sep), traitRegex));
254
270
  continue;
255
271
  }
256
272
  if (regex.test(subFilePath)) outArray.push(subFilePath);
257
273
  }
258
- return outArray.map((filePath) => {
259
- if (opt?.normalize === undefined) return filePath;
260
- return matchProc(opt.normalize, {
261
- posix: (nor) => path[nor].normalize(filePath.replaceAll("\\", "/")),
262
- win32: (nor) => path[nor].normalize(filePath.replaceAll("/", "\\")),
263
- });
264
- });
274
+ return outArray.map((filePath) => fixpath.normalize(stylizePath(filePath,opt?.style)));
265
275
  }
266
276
  /**搜索符合Glob匹配的文件
267
277
  * @param dir - 起始目录
268
278
  * @param globPattern - glob匹配
269
279
  * @param opt - 可选参数
270
280
  * @param opt.ignore - 忽略的文件
271
- * @param opt.normalize - 输出的路径风格 默认跟随系统
281
+ * @param opt.style - 输出的路径风格 默认跟随系统
272
282
  * @returns 文件绝对路径数组
273
283
  */
274
284
  export function fileSearchGlob(dir: string, globPattern:string|string[],opt?:FileSearchGlobOpt){
285
+ dir = stylizePath(dir,opt?.style);
286
+ const fixpath = opt?.style === undefined ? path :
287
+ opt.style ==='posix' ? path.posix : path.win32;
288
+
275
289
  const fixedPath = typeof globPattern === "string"
276
- ? path.join(dir,globPattern).replaceAll("\\","/")
277
- : globPattern.map((p)=>path.join(dir,p).replaceAll("\\","/"));
290
+ ? fixpath.join(dir,globPattern)
291
+ : globPattern.map((p)=>fixpath.join(dir,p));
278
292
  return globSync(fixedPath, { ignore: opt?.ingore, absolute: true })
279
- .map((filePath) => {
280
- if (opt?.normalize === undefined) return filePath;
281
- return matchProc(opt.normalize, {
282
- posix: (nor) => path[nor].normalize(filePath.replaceAll("\\", "/")),
283
- win32: (nor) => path[nor].normalize(filePath.replaceAll("/", "\\")),
284
- });
285
- });
293
+ .map((filePath) => fixpath.normalize(stylizePath(filePath,opt?.style)));
286
294
  }
287
295
  /**
288
296
  * @deprecated 请使用 fileSearchRegex 或 fileSearchGlob
@@ -1,5 +1,5 @@
1
1
  import * as crypto from "crypto";
2
- import { AnyFunc, ComposedClass, ComposedMixinable, ComposedRefMixinable, ExtractOutcome, IJData, JObject, JToken, Keyable, LiteralCheck, Matchable, MatchableFlag, Mixinable, Outcome, PromiseStat, PromiseVerifyFn, RefMixinable, UnionToIntersection } from "@src/UtilInterfaces";
2
+ import { AnyFunc, ComposedClass, ComposedMixinable, ComposedRefMixinable, ExtractOutcome, IJData, JObject, JToken, Keyable, Literal, Matchable, MatchableFlag, Mixinable, Outcome, PromiseStat, PromiseVerifyFn, ProperSubset, ProperSubsetCheck, RefMixinable, UnionToIntersection } from "@src/UtilInterfaces";
3
3
  import * as cp from "child_process";
4
4
  import { LogLevel, SLogger } from "@src/UtilLogger";
5
5
  import { Completed, Failed, FailedLike, None, StatusSymbol, Success, SuccessLike, Terminated, Timeout } from "./UtilSymbol";
@@ -515,7 +515,8 @@ static sucesProc<T extends Matchable<StatusSymbol>,
515
515
  }
516
516
  /**是失败的 */
517
517
  static isFailed<T>
518
- (tg:T):T extends Matchable<FailedLike>
518
+ (tg:T):'E' extends ProperSubsetCheck<symbol,T>? boolean
519
+ : T extends Matchable<FailedLike>
519
520
  ? true : MatchableFlag<T> extends Exclude<MatchableFlag<T>,FailedLike>
520
521
  ? false : boolean{
521
522
  const test = (t:any)=>t === Failed || t === Terminated || t === Timeout;
@@ -526,9 +527,10 @@ static isFailed<T>
526
527
 
527
528
  /**是成功的 */
528
529
  static isSuccess<T>
529
- (tg:T):T extends Matchable<SuccessLike>
530
- ? true : MatchableFlag<T> extends Exclude<MatchableFlag<T>,SuccessLike>
531
- ? false : boolean{
530
+ (tg:T):'E' extends ProperSubsetCheck<symbol,T>? boolean
531
+ : T extends Matchable<SuccessLike>
532
+ ? true : MatchableFlag<T> extends Exclude<MatchableFlag<T>,SuccessLike>
533
+ ? false : boolean{
532
534
  const test = (t:any)=>t === Success || t === Completed;
533
535
  if(tg!=null && typeof tg === 'object' && 'status' in tg)
534
536
  return test(tg.status) as any
@@ -571,7 +573,7 @@ static assertType<T>(t:T):T{return t;}
571
573
  * @template T - 验证类型
572
574
  * @param t - 验证目标
573
575
  */
574
- static assertLiteral<T>(t:LiteralCheck<T>):T{return t as T;}
576
+ static assertLiteral<T>(t:Literal<T>):T{return t as T;}
575
577
 
576
578
  /**深克隆 序列化并反序列化
577
579
  * @template T - JToken类型的泛型
@@ -599,7 +601,7 @@ static isSafeNumber(num: unknown): boolean {
599
601
 
600
602
  /**将一个字段加入一个对象中,将改变对象,返回新类型 */
601
603
  static bindTo<K extends Keyable, V, B extends {} = {}>
602
- (key: LiteralCheck<K>,value: V, base?:B):keyof B extends K
604
+ (key: Literal<K>,value: V, base?:B):keyof B extends K
603
605
  ? "Base中已有对应键"&Error
604
606
  : {[P in K | keyof B]: P extends K ? V : P extends keyof B ? B[P] : never;}{
605
607
  let out = base as any;
@@ -609,7 +611,7 @@ static bindTo<K extends Keyable, V, B extends {} = {}>
609
611
  }
610
612
  /**移除多行字符串中每行开始的最小空格数。
611
613
  *
612
- * @param strings - 需要处理的多行字符串模板。
614
+ * @param input - 需要处理的多行 字符串模板 或 字符串。
613
615
  * @param values - 插入模板字符串中的值。
614
616
  * @returns 返回处理后的字符串,每行开始的空格数已被最小化。
615
617
  *
@@ -624,8 +626,10 @@ static bindTo<K extends Keyable, V, B extends {} = {}>
624
626
  * // Hello,
625
627
  * // World!
626
628
  */
627
- static dedent(strings: TemplateStringsArray, ...values: any[]): string {
628
- const str = strings.reduce((result, string, i) => result + string + (values[i] || ''), '');
629
+ static dedent(input: TemplateStringsArray|string, ...values: any[]): string {
630
+ const str = typeof input === 'string'
631
+ ? input
632
+ : input.reduce((result, string, i) => result + string + (values[i] ?? ''), '');
629
633
  const lines = str.split('\n');
630
634
  const minIndent = Math.min(
631
635
  ...lines.filter(line => line.trim() !== '').map(line => line.search(/\S/))
@@ -32,18 +32,45 @@ export type PartialOption<B,D> = keyof D extends keyof B
32
32
  ? Omit<B,keyof D> & Partial<Pick<B,keyof D>>
33
33
  : never;
34
34
 
35
- /**真子集 */
36
- export type ProperSubset<B, T = B> = T extends B ? B extends T ? never : T : never;
35
+ /**真子集 测试 T 是否为 B 的真子集
36
+ * @template B - 超集
37
+ * @template T - 子集
38
+ */
39
+ export type ProperSubset<B, T> = T extends B ? B extends T ? never : T : never;
40
+ /**真子集检查 测试 T 是否为 B 的真子集
41
+ * 相等时返回 'E'
42
+ * 真子集时返回 'P'
43
+ * 不相交时返回 'N'
44
+ * @template B - 超集
45
+ * @template T - 子集
46
+ */
47
+ export type ProperSubsetCheck<B, T> = T extends B ? B extends T ? "E" : "P" : "N";
37
48
 
38
- /**字面量检测 */
39
- export type LiteralCheck<L> =
40
- ProperSubset<string, L> |
41
- ProperSubset<number, L> |
42
- ProperSubset<boolean, L>|
43
- ProperSubset<symbol, L> |
44
- ProperSubset<any[], L> |
49
+ /**字面量 检查 L 是否为字面量
50
+ * @template L - 目标量
51
+ */
52
+ export type Literal<L> =
53
+ ProperSubset<string , L> |
54
+ ProperSubset<number , L> |
55
+ ProperSubset<boolean, L> |
56
+ ProperSubset<symbol , L> |
57
+ ProperSubset<any[] , L> |
45
58
  ProperSubset<Record<any,any>, L> |
46
- null | undefined;
59
+ Extract<L, null | undefined>;
60
+
61
+ /**字面量检查 测试 L 是否为字面量
62
+ * 是字面量时返回 true
63
+ * 不是字面量时返回 false
64
+ * @template L - 目标量
65
+ */
66
+ export type LiteralCheck<L> =
67
+ ProperSubsetCheck<string , L> extends "P" ? true :
68
+ ProperSubsetCheck<number , L> extends "P" ? true :
69
+ ProperSubsetCheck<boolean, L> extends "P" ? true :
70
+ ProperSubsetCheck<symbol , L> extends "P" ? true :
71
+ ProperSubsetCheck<any[] , L> extends "P" ? true :
72
+ ProperSubsetCheck<Record<any,any>, L> extends "P" ? true :
73
+ L extends null | undefined ? true : false;
47
74
 
48
75
  /**返回将Mixin分配给Base的结果,相同字段时Mixin覆盖Base */
49
76
  export type AssignObject<Base extends {}, Mixin extends {}> = {
@@ -207,10 +234,10 @@ export type RequiredOnly<T> = {
207
234
  ]: T[K]
208
235
  };
209
236
  /**添加前缀 */
210
- export type WithPrefix<T,P extends string> = {
237
+ export type WithPrefix<T,P extends string> = {
211
238
  [K in (keyof T) as
212
239
  K extends string
213
- ? `${P}_${K}`
240
+ ? `${P}${K}`
214
241
  : K
215
242
  ]: T[K]
216
243
  };
@@ -1,5 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "include": ["./src/**/*.ts", "./src/**/*.js"],
4
- "exclude": ["./node_modules/**/*","./src/**/*.macro.ts"]
5
- }
package/tsconfig.json DELETED
@@ -1,22 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "allowJs": true,
4
- "strict": true,
5
- "target": "ES2022",
6
- "module": "CommonJS",
7
- "moduleResolution": "node",
8
- "esModuleInterop": true,
9
- "outDir": "./dist",
10
- "declaration": true,
11
- "baseUrl": ".",
12
- "emitDecoratorMetadata": true,
13
- "experimentalDecorators": true,
14
- "paths": {
15
- "@src/*": ["./src/*"],
16
- "@/*" : ["./*"],
17
- "@" : ["./src/index"]
18
- }
19
- },
20
- "include": ["./src/**/*.ts", "./src/**/*.js","./jest/**/*.ts"],
21
- "exclude": ["./node_modules/**/*"]
22
- }