1
1
import * as passport from 'passport' ;
2
2
import { Type , WithoutCallback } from '../interfaces' ;
3
3
4
+ type ExcludeUnknown < T > =
5
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
6
+ T extends Array < infer I > ? ( { } extends I & { } ? never : T ) : T ;
7
+ export type AllConstructorParameters < T > = ExcludeUnknown <
8
+ T extends {
9
+ new ( ...o : infer U ) : void ;
10
+ new ( ...o : infer U2 ) : void ;
11
+ new ( ...o : infer U3 ) : void ;
12
+ new ( ...o : infer U4 ) : void ;
13
+ new ( ...o : infer U5 ) : void ;
14
+ new ( ...o : infer U6 ) : void ;
15
+ new ( ...o : infer U7 ) : void ;
16
+ }
17
+ ? U | U2 | U3 | U4 | U5 | U6 | U7
18
+ : T extends {
19
+ new ( ...o : infer U ) : void ;
20
+ new ( ...o : infer U2 ) : void ;
21
+ new ( ...o : infer U3 ) : void ;
22
+ new ( ...o : infer U4 ) : void ;
23
+ new ( ...o : infer U5 ) : void ;
24
+ new ( ...o : infer U6 ) : void ;
25
+ }
26
+ ? U | U2 | U3 | U4 | U5 | U6
27
+ : T extends {
28
+ new ( ...o : infer U ) : void ;
29
+ new ( ...o : infer U2 ) : void ;
30
+ new ( ...o : infer U3 ) : void ;
31
+ new ( ...o : infer U4 ) : void ;
32
+ new ( ...o : infer U5 ) : void ;
33
+ }
34
+ ? U | U2 | U3 | U4 | U5
35
+ : T extends {
36
+ new ( ...o : infer U ) : void ;
37
+ new ( ...o : infer U2 ) : void ;
38
+ new ( ...o : infer U3 ) : void ;
39
+ new ( ...o : infer U4 ) : void ;
40
+ }
41
+ ? U | U2 | U3 | U4
42
+ : T extends {
43
+ new ( ...o : infer U ) : void ;
44
+ new ( ...o : infer U2 ) : void ;
45
+ new ( ...o : infer U3 ) : void ;
46
+ }
47
+ ? U | U2 | U3
48
+ : T extends {
49
+ new ( ...o : infer U ) : void ;
50
+ new ( ...o : infer U2 ) : void ;
51
+ }
52
+ ? U | U2
53
+ : T extends {
54
+ new ( ...o : infer U ) : void ;
55
+ }
56
+ ? U
57
+ : never
58
+ > ;
59
+
4
60
abstract class PassportStrategyMixin < TValidationResult > {
5
61
abstract validate (
6
62
...args : any [ ]
@@ -17,7 +73,7 @@ export function PassportStrategy<
17
73
callbackArity ?: true | number
18
74
) : {
19
75
new (
20
- ...args : WithoutCallback < ConstructorParameters < T > >
76
+ ...args : WithoutCallback < AllConstructorParameters < T > >
21
77
) : InstanceType < T > & PassportStrategyMixin < TValidationResult > ;
22
78
} {
23
79
abstract class StrategyWithMixin
0 commit comments