diff --git a/server/api/decorator/base.d.ts b/server/api/decorator/base.d.ts deleted file mode 100644 index deb54ec..0000000 --- a/server/api/decorator/base.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -// eslint-disable-next-line @typescript-eslint/no-explicit-any - -type C = (...args: any) => any; -type Rev = ()=> A; - -type ChainResult = - T extends [infer R0 extends C] ? ReturnType : - T extends [infer R1 extends C, infer R0 extends C] ? ReturnType & ReturnType : - T extends [infer R2, infer R1, ...infer RX] ? ChainResult2, ChainResult<[Rev>, ...RX]>> : - never; - -type ChainResult2 = T extends ChainResult<[A, B]> ? ANS: never; - -declare function DeclConverter(r0: R0): [[R0], ReturnType]; -declare function DeclConverter(r0: R0, r1: R1): [[R0, R1], ChainResult<[R0, R1]>]; -declare function DeclConverter(r0: R0, r1: R1, r2:R2) : [[R0, R1, R2], ChainResult<[R0, R1, R2]>]; -declare function DeclConverter(r0: R0, r1: R1, r2:R2, r3:R3) : [[R0, R1, R2, R3], ChainResult<[R0, R1, R2, R3]>]; -declare function DeclConverter(r0: R0, r1: R1, r2:R2, r3:R3, r4:R4) : [[R0, R1, R2, R3, R4], ChainResult<[R0, R1, R2, R3, R4]>]; diff --git a/server/api/decorator/base.ts b/server/api/decorator/base.ts index 4e961e4..b5a8d13 100644 --- a/server/api/decorator/base.ts +++ b/server/api/decorator/base.ts @@ -2,7 +2,7 @@ import { Request, Response, NextFunction } from "express"; import { ReqLogin } from "./reqLogin"; import { ReqGameLogin } from "./reqGameLogin"; import { ParseUserLevel } from "./ParseUserLevel"; - +import { DeclConverter } from "./base2"; export type InvalidConversion = { isInvalid: true; reason?: string; diff --git a/server/api/decorator/base2.d.ts b/server/api/decorator/base2.d.ts new file mode 100644 index 0000000..fefa0f1 --- /dev/null +++ b/server/api/decorator/base2.d.ts @@ -0,0 +1,17 @@ +// eslint-disable-next-line @typescript-eslint/no-explicit-any +type C = (...args: any) => any; +type Rev = ()=> A; + +type ChainResult = + T extends [infer R0 extends C] ? ReturnType : + T extends [infer R1 extends C, infer R0 extends C] ? ReturnType & ReturnType : + T extends [infer R2, infer R1, ...infer RX] ? ChainResult2, ChainResult<[Rev>, ...RX]>> : + never; + +type ChainResult2 = T extends ChainResult<[A, B]> ? ANS: never; + +export function DeclConverter(r0: R0): [[R0], ReturnType]; +export function DeclConverter(r0: R0, r1: R1): [[R0, R1], ChainResult<[R0, R1]>]; +export function DeclConverter(r0: R0, r1: R1, r2:R2) : [[R0, R1, R2], ChainResult<[R0, R1, R2]>]; +export function DeclConverter(r0: R0, r1: R1, r2:R2, r3:R3) : [[R0, R1, R2, R3], ChainResult<[R0, R1, R2, R3]>]; +export function DeclConverter(r0: R0, r1: R1, r2:R2, r3:R3, r4:R4) : [[R0, R1, R2, R3, R4], ChainResult<[R0, R1, R2, R3, R4]>]; diff --git a/server/api/decorator/base2.js b/server/api/decorator/base2.js new file mode 100644 index 0000000..3b453ca --- /dev/null +++ b/server/api/decorator/base2.js @@ -0,0 +1,3 @@ +export function DeclConverter(...target){ + return [target, undefined]; +} \ No newline at end of file