Skip to content

Commit 84c8838

Browse files
fix: use all ctor params type to include overloads #1857
1 parent f6af117 commit 84c8838

File tree

1 file changed

+57
-1
lines changed

1 file changed

+57
-1
lines changed

lib/passport/passport.strategy.ts

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,62 @@
11
import * as passport from 'passport';
22
import { Type, WithoutCallback } from '../interfaces';
33

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+
460
abstract class PassportStrategyMixin<TValidationResult> {
561
abstract validate(
662
...args: any[]
@@ -17,7 +73,7 @@ export function PassportStrategy<
1773
callbackArity?: true | number
1874
): {
1975
new (
20-
...args: WithoutCallback<ConstructorParameters<T>>
76+
...args: WithoutCallback<AllConstructorParameters<T>>
2177
): InstanceType<T> & PassportStrategyMixin<TValidationResult>;
2278
} {
2379
abstract class StrategyWithMixin

0 commit comments

Comments
 (0)