Skip to content

Commit d22f1a9

Browse files
committed
Refactor type exports in FirebaseFunction and FirebaseRequest for improved type inference
1 parent 9805e6c commit d22f1a9

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

src/admin/functions/FirebaseFunction.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ export abstract class FirebaseFunction<Parameters, ReturnType> {
2424

2525
export namespace FirebaseFunction {
2626

27-
export type Parameters<Function extends FirebaseFunction<any, any>> = Function extends FirebaseFunction<infer Parameters, any> ? Parameters : never;
28-
29-
export type ReturnType<Function extends FirebaseFunction<any, any>> = Function extends FirebaseFunction<any, infer ReturnType> ? ReturnType : never;
30-
3127
export type Constructor<Parameters, ReturnType> = new () => FirebaseFunction<Parameters, ReturnType>;
3228

3329
export class ConstructorWrapper<Parameters, ReturnType> {
@@ -38,6 +34,16 @@ export namespace FirebaseFunction {
3834
) {}
3935
}
4036

37+
export type Parameters<Function extends FirebaseFunction<any, any> | Constructor<any, any> | ConstructorWrapper<any, any>> =
38+
Function extends FirebaseFunction<infer Parameters, any> ? Parameters :
39+
Function extends Constructor<infer Parameters, any> ? Parameters :
40+
Function extends ConstructorWrapper<infer Parameters, any> ? Parameters : never;
41+
42+
export type ReturnType<Function extends FirebaseFunction<any, any> | Constructor<any, any> | ConstructorWrapper<any, any> > =
43+
Function extends FirebaseFunction<any, infer ReturnType> ? ReturnType :
44+
Function extends Constructor<any, infer ReturnType> ? ReturnType :
45+
Function extends ConstructorWrapper<any, infer ReturnType> ? ReturnType : never;
46+
4147
export function create<Parameters, ReturnType>(
4248
// eslint-disable-next-line @typescript-eslint/naming-convention
4349
FirebaseFunction: FirebaseFunction.Constructor<Parameters, ReturnType>,

src/admin/functions/FirebaseRequest.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ export abstract class FirebaseRequest<Parameters, ReturnType> {
2121

2222
export namespace FirebaseRequest {
2323

24-
export type Parameters<Function extends FirebaseRequest<any, any>> = Function extends FirebaseRequest<infer Parameters, any> ? Parameters : never;
25-
26-
export type ReturnType<Function extends FirebaseRequest<any, any>> = Function extends FirebaseRequest<any, infer ReturnType> ? ReturnType : never;
27-
2824
export type Constructor<Parameters, ReturnType> = new () => FirebaseRequest<Parameters, ReturnType>;
2925

3026
export class ConstructorWrapper<Parameters, ReturnType> {
@@ -35,6 +31,16 @@ export namespace FirebaseRequest {
3531
) {}
3632
}
3733

34+
export type Parameters<Request extends FirebaseRequest<any, any> | Constructor<any, any> | ConstructorWrapper<any, any>> =
35+
Request extends FirebaseRequest<infer Parameters, any> ? Parameters :
36+
Request extends Constructor<infer Parameters, any> ? Parameters :
37+
Request extends ConstructorWrapper<infer Parameters, any> ? Parameters : never;
38+
39+
export type ReturnType<Request extends FirebaseRequest<any, any> | Constructor<any, any> | ConstructorWrapper<any, any> > =
40+
Request extends FirebaseRequest<any, infer ReturnType> ? ReturnType :
41+
Request extends Constructor<any, infer ReturnType> ? ReturnType :
42+
Request extends ConstructorWrapper<any, infer ReturnType> ? ReturnType : never;
43+
3844
export function create<Parameters, ReturnType>(
3945
// eslint-disable-next-line @typescript-eslint/naming-convention
4046
FirebaseRequest: FirebaseRequest.Constructor<Parameters, ReturnType>,

0 commit comments

Comments
 (0)