Skip to content

Commit 9bf86b7

Browse files
yotamNoleavr
authored andcommitted
Add overloads to MethodDispatcher
1 parent 652ea59 commit 9bf86b7

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

index.d.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,11 +415,25 @@ declare module "frida-java-bridge" {
415415
[name: string]: any;
416416
};
417417

418-
interface MethodDispatcher<Holder extends Members<Holder> = {}> extends Method<Holder> {
418+
type IsEmptyArray<T extends any[]> = T extends [] ? true : false;
419+
420+
type Overload<Identifiers extends Array<string> = [], Types extends Array<any> = [], Return = any> = [Identifiers, Types, Return];
421+
422+
type OverloadsMethods<
423+
Holder extends Members<Holder> = {},
424+
OLs extends ReadonlyArray<Overload<any, any, any>> = []
425+
> = {
426+
[K in keyof OLs]:
427+
OLs[K] extends Overload<any, infer A extends any[], infer R>
428+
? Method<Holder, A, R>
429+
: never
430+
};
431+
432+
interface MethodDispatcher<Holder extends Members<Holder> = {}, Overloads extends Array<Overload<Array<any>, Array<any>, any>> = []> extends Method<Holder> {
419433
/**
420434
* Available overloads.
421435
*/
422-
overloads: Array<Method<Holder>>;
436+
overloads: IsEmptyArray<Overloads> extends true ? Array<Method<Holder>> : OverloadsMethods<Holder, Overloads>;
423437

424438
/**
425439
* Obtains a specific overload.

0 commit comments

Comments
 (0)