@efffrida/il2cpp-bridge 0.0.26 → 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Assembly.d.ts +7 -1
- package/dist/Assembly.d.ts.map +1 -1
- package/dist/Assembly.js +19 -5
- package/dist/Assembly.js.map +1 -1
- package/dist/Class.d.ts +14 -8
- package/dist/Class.d.ts.map +1 -1
- package/dist/Class.js +81 -19
- package/dist/Class.js.map +1 -1
- package/dist/Extensions.d.ts.map +1 -1
- package/dist/Extensions.js +8 -3
- package/dist/Extensions.js.map +1 -1
- package/dist/FridaIl2cppBridge.d.ts.map +1 -1
- package/dist/FridaIl2cppBridge.js +2 -3
- package/dist/FridaIl2cppBridge.js.map +1 -1
- package/package.json +7 -7
- package/src/Assembly.ts +21 -10
- package/src/Class.ts +169 -77
- package/src/Extensions.ts +9 -3
- package/src/FridaIl2cppBridge.ts +3 -3
package/dist/Assembly.d.ts
CHANGED
|
@@ -5,7 +5,13 @@
|
|
|
5
5
|
import "frida-il2cpp-bridge";
|
|
6
6
|
import type * as Scope from "effect/Scope";
|
|
7
7
|
import * as Cause from "effect/Cause";
|
|
8
|
+
import * as Context from "effect/Context";
|
|
8
9
|
import * as Effect from "effect/Effect";
|
|
10
|
+
/**
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category Cache
|
|
13
|
+
*/
|
|
14
|
+
export declare const CacheCapacity: Context.Reference<number>;
|
|
9
15
|
/**
|
|
10
16
|
* @since 1.0.0
|
|
11
17
|
* @category Assembly
|
|
@@ -15,7 +21,7 @@ export declare const assembly: (name: string) => Effect.Effect<Il2Cpp.Assembly,
|
|
|
15
21
|
* @since 1.0.0
|
|
16
22
|
* @category Assembly
|
|
17
23
|
*/
|
|
18
|
-
export declare const tryAssembly: (name: string) => Effect.Effect<Il2Cpp.Assembly, Cause.
|
|
24
|
+
export declare const tryAssembly: (name: string) => Effect.Effect<Il2Cpp.Assembly, Cause.NoSuchElementError, never>;
|
|
19
25
|
/**
|
|
20
26
|
* @since 1.0.0
|
|
21
27
|
* @category Assembly
|
package/dist/Assembly.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Assembly.d.ts","sourceRoot":"","sources":["../src/Assembly.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"Assembly.d.ts","sourceRoot":"","sources":["../src/Assembly.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAGnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAChC,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAIxD,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,QAAQ,EAAE,KAAK,EAAE,KAAK,CAGvE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,WAAW,EAAE,KAAK,EAAE,KAAK,CAG7E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAGnE,CAAC"}
|
package/dist/Assembly.js
CHANGED
|
@@ -3,9 +3,17 @@
|
|
|
3
3
|
* @category Assembly
|
|
4
4
|
*/
|
|
5
5
|
import "frida-il2cpp-bridge";
|
|
6
|
+
import * as Cache from "effect/Cache";
|
|
6
7
|
import * as Cause from "effect/Cause";
|
|
8
|
+
import * as Context from "effect/Context";
|
|
7
9
|
import * as Effect from "effect/Effect";
|
|
8
|
-
|
|
10
|
+
/**
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category Cache
|
|
13
|
+
*/
|
|
14
|
+
export const CacheCapacity = /*#__PURE__*/Context.Reference("@efffrida/il2cpp-bridge/CacheCapacity", {
|
|
15
|
+
defaultValue: () => 100
|
|
16
|
+
});
|
|
9
17
|
/**
|
|
10
18
|
* @since 1.0.0
|
|
11
19
|
* @category Assembly
|
|
@@ -17,18 +25,24 @@ export const assembly = name => Effect.sync(() => Il2Cpp.domain.assembly(name));
|
|
|
17
25
|
*/
|
|
18
26
|
export const tryAssembly = name => Effect.try({
|
|
19
27
|
try: () => Il2Cpp.domain.tryAssembly(name),
|
|
20
|
-
catch: () => new Cause.
|
|
21
|
-
}).pipe(Effect.flatMap(Effect.
|
|
28
|
+
catch: () => new Cause.NoSuchElementError(`No assembly with name ${name}`)
|
|
29
|
+
}).pipe(Effect.flatMap(Effect.fromNullishOr));
|
|
22
30
|
/**
|
|
23
31
|
* @since 1.0.0
|
|
24
32
|
* @category Assembly
|
|
25
33
|
*/
|
|
26
|
-
export const assemblyCached = /*#__PURE__*/Effect.
|
|
34
|
+
export const assemblyCached = /*#__PURE__*/CacheCapacity.pipe(/*#__PURE__*/Effect.flatMap(capacity => Cache.make({
|
|
35
|
+
capacity,
|
|
36
|
+
lookup: assembly
|
|
37
|
+
})), /*#__PURE__*/Effect.map(cache => name => Cache.get(cache, name)));
|
|
27
38
|
/**
|
|
28
39
|
* @since 1.0.0
|
|
29
40
|
* @category Assembly
|
|
30
41
|
*/
|
|
31
|
-
export const tryAssemblyCached = /*#__PURE__*/Effect.
|
|
42
|
+
export const tryAssemblyCached = /*#__PURE__*/CacheCapacity.pipe(/*#__PURE__*/Effect.flatMap(capacity => Cache.make({
|
|
43
|
+
capacity,
|
|
44
|
+
lookup: tryAssembly
|
|
45
|
+
})), /*#__PURE__*/Effect.map(cache => name => Cache.get(cache, name)));
|
|
32
46
|
/**
|
|
33
47
|
* @since 1.0.0
|
|
34
48
|
* @category Assembly
|
package/dist/Assembly.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Assembly.js","names":["Cause","Effect","
|
|
1
|
+
{"version":3,"file":"Assembly.js","names":["Cache","Cause","Context","Effect","CacheCapacity","Reference","defaultValue","assembly","name","sync","Il2Cpp","domain","tryAssembly","try","catch","NoSuchElementError","pipe","flatMap","fromNullishOr","assemblyCached","capacity","make","lookup","map","cache","get","tryAssemblyCached","attach","acquireRelease","thread","detach"],"sources":["../src/Assembly.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;AAKA,OAAO,qBAAqB;AAI5B,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC;;;;AAIA,OAAO,MAAMC,aAAa,gBAA8BF,OAAO,CAACG,SAAS,CACrE,uCAAuC,EACvC;EAAEC,YAAY,EAAEA,CAAA,KAAM;AAAG,CAAE,CAC9B;AAED;;;;AAIA,OAAO,MAAMC,QAAQ,GAAIC,IAAY,IACjCL,MAAM,CAACM,IAAI,CAAC,MAAMC,MAAM,CAACC,MAAM,CAACJ,QAAQ,CAACC,IAAI,CAAC,CAAC;AAEnD;;;;AAIA,OAAO,MAAMI,WAAW,GAAIJ,IAAY,IACpCL,MAAM,CAACU,GAAG,CAAC;EACPA,GAAG,EAAEA,CAAA,KAAMH,MAAM,CAACC,MAAM,CAACC,WAAW,CAACJ,IAAI,CAAC;EAC1CM,KAAK,EAAEA,CAAA,KAAM,IAAIb,KAAK,CAACc,kBAAkB,CAAC,yBAAyBP,IAAI,EAAE;CAC5E,CAAC,CAACQ,IAAI,CAACb,MAAM,CAACc,OAAO,CAACd,MAAM,CAACe,aAAa,CAAC,CAAC;AAEjD;;;;AAIA,OAAO,MAAMC,cAAc,gBAAiDf,aAAa,CAACY,IAAI,cAC1Fb,MAAM,CAACc,OAAO,CAAEG,QAAQ,IAAKpB,KAAK,CAACqB,IAAI,CAAC;EAAED,QAAQ;EAAEE,MAAM,EAAEf;AAAQ,CAAE,CAAC,CAAC,eACxEJ,MAAM,CAACoB,GAAG,CAAEC,KAAK,IAAMhB,IAAY,IAAKR,KAAK,CAACyB,GAAG,CAACD,KAAK,EAAEhB,IAAI,CAAC,CAAC,CAClE;AAED;;;;AAIA,OAAO,MAAMkB,iBAAiB,gBAAoDtB,aAAa,CAACY,IAAI,cAChGb,MAAM,CAACc,OAAO,CAAEG,QAAQ,IAAKpB,KAAK,CAACqB,IAAI,CAAC;EAAED,QAAQ;EAAEE,MAAM,EAAEV;AAAW,CAAE,CAAC,CAAC,eAC3ET,MAAM,CAACoB,GAAG,CAAEC,KAAK,IAAMhB,IAAY,IAAKR,KAAK,CAACyB,GAAG,CAACD,KAAK,EAAEhB,IAAI,CAAC,CAAC,CAClE;AAED;;;;AAIA,OAAO,MAAMmB,MAAM,gBAAqDxB,MAAM,CAACyB,cAAc,cACzFzB,MAAM,CAACM,IAAI,CAAC,MAAMC,MAAM,CAACC,MAAM,CAACgB,MAAM,EAAE,CAAC,EACxCE,MAAM,IAAK1B,MAAM,CAACM,IAAI,CAAC,MAAMoB,MAAM,CAACC,MAAM,EAAE,CAAC,CACjD","ignoreList":[]}
|
package/dist/Class.d.ts
CHANGED
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
import "frida-il2cpp-bridge";
|
|
6
6
|
import * as Cause from "effect/Cause";
|
|
7
7
|
import * as Effect from "effect/Effect";
|
|
8
|
+
export {
|
|
9
|
+
/**
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
* @category Cache
|
|
12
|
+
*/
|
|
13
|
+
CacheCapacity, } from "./Assembly.ts";
|
|
8
14
|
/**
|
|
9
15
|
* @since 1.0.0
|
|
10
16
|
* @category Class
|
|
@@ -20,7 +26,7 @@ class_ as class, };
|
|
|
20
26
|
* @since 1.0.0
|
|
21
27
|
* @category Class
|
|
22
28
|
*/
|
|
23
|
-
export declare const tryClass: ((name: string) => (image: Il2Cpp.Image) => Effect.Effect<Il2Cpp.Class, Cause.
|
|
29
|
+
export declare const tryClass: ((name: string) => (image: Il2Cpp.Image) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>) & ((image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>);
|
|
24
30
|
/**
|
|
25
31
|
* @since 1.0.0
|
|
26
32
|
* @category Class
|
|
@@ -30,7 +36,7 @@ export declare const classCached: Effect.Effect<(image: Il2Cpp.Image, name: stri
|
|
|
30
36
|
* @since 1.0.0
|
|
31
37
|
* @category Class
|
|
32
38
|
*/
|
|
33
|
-
export declare const tryClassCached: Effect.Effect<(image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, Cause.
|
|
39
|
+
export declare const tryClassCached: Effect.Effect<(image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>, never, never>;
|
|
34
40
|
/**
|
|
35
41
|
* @since 1.0.0
|
|
36
42
|
* @category Class
|
|
@@ -45,7 +51,7 @@ export declare const field: ((name: string) => <T extends Il2Cpp.Field.Type = Il
|
|
|
45
51
|
* @since 1.0.0
|
|
46
52
|
* @category Class
|
|
47
53
|
*/
|
|
48
|
-
export declare const tryField: ((name: string) => <T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(klass: Il2Cpp.Class) => Effect.Effect<Il2Cpp.Field<T>, Cause.
|
|
54
|
+
export declare const tryField: ((name: string) => <T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(klass: Il2Cpp.Class) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementError, never>) & (<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementError, never>);
|
|
49
55
|
/**
|
|
50
56
|
* @since 1.0.0
|
|
51
57
|
* @category Class
|
|
@@ -55,7 +61,7 @@ export declare const fieldCached: Effect.Effect<(<T extends Il2Cpp.Field.Type =
|
|
|
55
61
|
* @since 1.0.0
|
|
56
62
|
* @category Class
|
|
57
63
|
*/
|
|
58
|
-
export declare const tryFieldCached: Effect.Effect<(<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Field<T>, Cause.
|
|
64
|
+
export declare const tryFieldCached: Effect.Effect<(<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementError, never>), never, never>;
|
|
59
65
|
/**
|
|
60
66
|
* @since 1.0.0
|
|
61
67
|
* @category Class
|
|
@@ -70,7 +76,7 @@ export declare const method: ((name: string, parameterCount?: number | undefined
|
|
|
70
76
|
* @since 1.0.0
|
|
71
77
|
* @category Class
|
|
72
78
|
*/
|
|
73
|
-
export declare const tryMethod: ((name: string, parameterCount?: number | undefined) => <T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(klass: Il2Cpp.Class) => Effect.Effect<Il2Cpp.Method<T>, Cause.
|
|
79
|
+
export declare const tryMethod: ((name: string, parameterCount?: number | undefined) => <T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(klass: Il2Cpp.Class) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementError, never>) & (<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(klass: Il2Cpp.Class, name: string, parameterCount?: number | undefined) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementError, never>);
|
|
74
80
|
/**
|
|
75
81
|
* @since 1.0.0
|
|
76
82
|
* @category Class
|
|
@@ -80,7 +86,7 @@ export declare const methodCached: Effect.Effect<(<T extends Il2Cpp.Method.Retur
|
|
|
80
86
|
* @since 1.0.0
|
|
81
87
|
* @category Class
|
|
82
88
|
*/
|
|
83
|
-
export declare const tryMethodCached: Effect.Effect<(<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(klass: Il2Cpp.Class, name: string, parameterCount?: number | undefined) => Effect.Effect<Il2Cpp.Method<T>, Cause.
|
|
89
|
+
export declare const tryMethodCached: Effect.Effect<(<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(klass: Il2Cpp.Class, name: string, parameterCount?: number | undefined) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementError, never>), never, never>;
|
|
84
90
|
/**
|
|
85
91
|
* @since 1.0.0
|
|
86
92
|
* @category Class
|
|
@@ -90,7 +96,7 @@ export declare const nested: ((name: string) => (klass: Il2Cpp.Class) => Effect.
|
|
|
90
96
|
* @since 1.0.0
|
|
91
97
|
* @category Class
|
|
92
98
|
*/
|
|
93
|
-
export declare const tryNested: ((name: string) => (klass: Il2Cpp.Class) => Effect.Effect<Il2Cpp.Class, Cause.
|
|
99
|
+
export declare const tryNested: ((name: string) => (klass: Il2Cpp.Class) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>) & ((klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>);
|
|
94
100
|
/**
|
|
95
101
|
* @since 1.0.0
|
|
96
102
|
* @category Class
|
|
@@ -100,5 +106,5 @@ export declare const nestedCached: Effect.Effect<(klass: Il2Cpp.Class, name: str
|
|
|
100
106
|
* @since 1.0.0
|
|
101
107
|
* @category Class
|
|
102
108
|
*/
|
|
103
|
-
export declare const tryNestedCached: Effect.Effect<(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, Cause.
|
|
109
|
+
export declare const tryNestedCached: Effect.Effect<(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>, never, never>;
|
|
104
110
|
//# sourceMappingURL=Class.d.ts.map
|
package/dist/Class.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Class.d.ts","sourceRoot":"","sources":["../src/Class.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"Class.d.ts","sourceRoot":"","sources":["../src/Class.ts"],"names":[],"mappings":"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"}
|
package/dist/Class.js
CHANGED
|
@@ -3,12 +3,24 @@
|
|
|
3
3
|
* @category Class
|
|
4
4
|
*/
|
|
5
5
|
import "frida-il2cpp-bridge";
|
|
6
|
+
import * as Cache from "effect/Cache";
|
|
6
7
|
import * as Cause from "effect/Cause";
|
|
8
|
+
import * as Data from "effect/Data";
|
|
7
9
|
import * as Effect from "effect/Effect";
|
|
8
|
-
import * as Equivalence from "effect/Equivalence";
|
|
9
10
|
import * as Function from "effect/Function";
|
|
10
|
-
import
|
|
11
|
-
|
|
11
|
+
import { CacheCapacity } from "./Assembly.js";
|
|
12
|
+
export {
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category Cache
|
|
16
|
+
*/
|
|
17
|
+
CacheCapacity } from "./Assembly.js";
|
|
18
|
+
/** @internal */
|
|
19
|
+
class ImageNameKey extends Data.Class {}
|
|
20
|
+
/** @internal */
|
|
21
|
+
class ClassNameKey extends Data.Class {}
|
|
22
|
+
/** @internal */
|
|
23
|
+
class MethodKey extends Data.Class {}
|
|
12
24
|
/**
|
|
13
25
|
* @since 1.0.0
|
|
14
26
|
* @category Class
|
|
@@ -26,18 +38,30 @@ class_ as class };
|
|
|
26
38
|
*/
|
|
27
39
|
export const tryClass = /*#__PURE__*/Function.dual(2, (image, name) => Effect.try({
|
|
28
40
|
try: () => image.tryClass(name),
|
|
29
|
-
catch: () => new Cause.
|
|
30
|
-
}).pipe(Effect.flatMap(Effect.
|
|
41
|
+
catch: () => new Cause.NoSuchElementError(`No class with name ${name}`)
|
|
42
|
+
}).pipe(Effect.flatMap(Effect.fromNullishOr)));
|
|
31
43
|
/**
|
|
32
44
|
* @since 1.0.0
|
|
33
45
|
* @category Class
|
|
34
46
|
*/
|
|
35
|
-
export const classCached = /*#__PURE__*/
|
|
47
|
+
export const classCached = /*#__PURE__*/CacheCapacity.pipe(/*#__PURE__*/Effect.flatMap(capacity => Cache.make({
|
|
48
|
+
capacity,
|
|
49
|
+
lookup: key => class_(key.image, key.name)
|
|
50
|
+
})), /*#__PURE__*/Effect.map(cache => (image, name) => Cache.get(cache, new ImageNameKey({
|
|
51
|
+
image,
|
|
52
|
+
name
|
|
53
|
+
}))));
|
|
36
54
|
/**
|
|
37
55
|
* @since 1.0.0
|
|
38
56
|
* @category Class
|
|
39
57
|
*/
|
|
40
|
-
export const tryClassCached = /*#__PURE__*/
|
|
58
|
+
export const tryClassCached = /*#__PURE__*/CacheCapacity.pipe(/*#__PURE__*/Effect.flatMap(capacity => Cache.make({
|
|
59
|
+
lookup: key => tryClass(key.image, key.name),
|
|
60
|
+
capacity
|
|
61
|
+
})), /*#__PURE__*/Effect.map(cache => (image, name) => Cache.get(cache, new ImageNameKey({
|
|
62
|
+
image,
|
|
63
|
+
name
|
|
64
|
+
}))));
|
|
41
65
|
/**
|
|
42
66
|
* @since 1.0.0
|
|
43
67
|
* @category Class
|
|
@@ -54,18 +78,30 @@ export const field = /*#__PURE__*/Function.dual(2, (klass, name) => Effect.sync(
|
|
|
54
78
|
*/
|
|
55
79
|
export const tryField = /*#__PURE__*/Function.dual(2, (klass, name) => Effect.try({
|
|
56
80
|
try: () => klass.field(name),
|
|
57
|
-
catch: () => new Cause.
|
|
58
|
-
}).pipe(Effect.flatMap(Effect.
|
|
81
|
+
catch: () => new Cause.NoSuchElementError(`No field with name ${name}`)
|
|
82
|
+
}).pipe(Effect.flatMap(Effect.fromNullishOr)));
|
|
59
83
|
/**
|
|
60
84
|
* @since 1.0.0
|
|
61
85
|
* @category Class
|
|
62
86
|
*/
|
|
63
|
-
export const fieldCached = /*#__PURE__*/
|
|
87
|
+
export const fieldCached = /*#__PURE__*/CacheCapacity.pipe(/*#__PURE__*/Effect.flatMap(capacity => Cache.make({
|
|
88
|
+
lookup: key => field(key.klass, key.name),
|
|
89
|
+
capacity
|
|
90
|
+
})), /*#__PURE__*/Effect.map(cache => (klass, name) => Cache.get(cache, new ClassNameKey({
|
|
91
|
+
klass,
|
|
92
|
+
name
|
|
93
|
+
}))));
|
|
64
94
|
/**
|
|
65
95
|
* @since 1.0.0
|
|
66
96
|
* @category Class
|
|
67
97
|
*/
|
|
68
|
-
export const tryFieldCached = /*#__PURE__*/
|
|
98
|
+
export const tryFieldCached = /*#__PURE__*/CacheCapacity.pipe(/*#__PURE__*/Effect.flatMap(capacity => Cache.make({
|
|
99
|
+
lookup: key => tryField(key.klass, key.name),
|
|
100
|
+
capacity
|
|
101
|
+
})), /*#__PURE__*/Effect.map(cache => (klass, name) => Cache.get(cache, new ClassNameKey({
|
|
102
|
+
klass,
|
|
103
|
+
name
|
|
104
|
+
}))));
|
|
69
105
|
/**
|
|
70
106
|
* @since 1.0.0
|
|
71
107
|
* @category Class
|
|
@@ -82,18 +118,32 @@ export const method = /*#__PURE__*/Function.dual(_arguments => typeof _arguments
|
|
|
82
118
|
*/
|
|
83
119
|
export const tryMethod = /*#__PURE__*/Function.dual(_arguments => typeof _arguments[1] === "string", (klass, name, parameterCount) => Effect.try({
|
|
84
120
|
try: () => klass.tryMethod(name, parameterCount),
|
|
85
|
-
catch: () => new Cause.
|
|
86
|
-
}).pipe(Effect.flatMap(Effect.
|
|
121
|
+
catch: () => new Cause.NoSuchElementError(`No method with name ${name}`)
|
|
122
|
+
}).pipe(Effect.flatMap(Effect.fromNullishOr)));
|
|
87
123
|
/**
|
|
88
124
|
* @since 1.0.0
|
|
89
125
|
* @category Class
|
|
90
126
|
*/
|
|
91
|
-
export const methodCached = /*#__PURE__*/
|
|
127
|
+
export const methodCached = /*#__PURE__*/CacheCapacity.pipe(/*#__PURE__*/Effect.flatMap(capacity => Cache.make({
|
|
128
|
+
lookup: key => method(key.klass, key.name, key.parameterCount),
|
|
129
|
+
capacity
|
|
130
|
+
})), /*#__PURE__*/Effect.map(cache => (klass, name, parameterCount) => Cache.get(cache, new MethodKey({
|
|
131
|
+
klass,
|
|
132
|
+
name,
|
|
133
|
+
parameterCount
|
|
134
|
+
}))));
|
|
92
135
|
/**
|
|
93
136
|
* @since 1.0.0
|
|
94
137
|
* @category Class
|
|
95
138
|
*/
|
|
96
|
-
export const tryMethodCached = /*#__PURE__*/
|
|
139
|
+
export const tryMethodCached = /*#__PURE__*/CacheCapacity.pipe(/*#__PURE__*/Effect.flatMap(capacity => Cache.make({
|
|
140
|
+
lookup: key => tryMethod(key.klass, key.name, key.parameterCount),
|
|
141
|
+
capacity
|
|
142
|
+
})), /*#__PURE__*/Effect.map(cache => (klass, name, parameterCount) => Cache.get(cache, new MethodKey({
|
|
143
|
+
klass,
|
|
144
|
+
name,
|
|
145
|
+
parameterCount
|
|
146
|
+
}))));
|
|
97
147
|
/**
|
|
98
148
|
* @since 1.0.0
|
|
99
149
|
* @category Class
|
|
@@ -105,16 +155,28 @@ export const nested = /*#__PURE__*/Function.dual(2, (klass, name) => Effect.sync
|
|
|
105
155
|
*/
|
|
106
156
|
export const tryNested = /*#__PURE__*/Function.dual(2, (klass, name) => Effect.try({
|
|
107
157
|
try: () => klass.tryNested(name),
|
|
108
|
-
catch: () => new Cause.
|
|
109
|
-
}).pipe(Effect.flatMap(Effect.
|
|
158
|
+
catch: () => new Cause.NoSuchElementError(`No nested class with name ${name}`)
|
|
159
|
+
}).pipe(Effect.flatMap(Effect.fromNullishOr)));
|
|
110
160
|
/**
|
|
111
161
|
* @since 1.0.0
|
|
112
162
|
* @category Class
|
|
113
163
|
*/
|
|
114
|
-
export const nestedCached = /*#__PURE__*/
|
|
164
|
+
export const nestedCached = /*#__PURE__*/CacheCapacity.pipe(/*#__PURE__*/Effect.flatMap(capacity => Cache.make({
|
|
165
|
+
capacity,
|
|
166
|
+
lookup: key => nested(key.klass, key.name)
|
|
167
|
+
})), /*#__PURE__*/Effect.map(cache => (klass, name) => Cache.get(cache, new ClassNameKey({
|
|
168
|
+
klass,
|
|
169
|
+
name
|
|
170
|
+
}))));
|
|
115
171
|
/**
|
|
116
172
|
* @since 1.0.0
|
|
117
173
|
* @category Class
|
|
118
174
|
*/
|
|
119
|
-
export const tryNestedCached = /*#__PURE__*/
|
|
175
|
+
export const tryNestedCached = /*#__PURE__*/CacheCapacity.pipe(/*#__PURE__*/Effect.flatMap(capacity => Cache.make({
|
|
176
|
+
lookup: key => tryNested(key.klass, key.name),
|
|
177
|
+
capacity
|
|
178
|
+
})), /*#__PURE__*/Effect.map(cache => (klass, name) => Cache.get(cache, new ClassNameKey({
|
|
179
|
+
klass,
|
|
180
|
+
name
|
|
181
|
+
}))));
|
|
120
182
|
//# sourceMappingURL=Class.js.map
|
package/dist/Class.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Class.js","names":["Cause","
|
|
1
|
+
{"version":3,"file":"Class.js","names":["Cache","Cause","Data","Effect","Function","CacheCapacity","ImageNameKey","Class","ClassNameKey","MethodKey","class_","dual","image","name","sync","class","tryClass","try","catch","NoSuchElementError","pipe","flatMap","fromNullishOr","classCached","capacity","make","lookup","key","map","cache","get","tryClassCached","fields","klass","field","tryField","fieldCached","tryFieldCached","methods","method","_arguments","parameterCount","tryMethod","methodCached","tryMethodCached","nested","tryNested","nestedCached","tryNestedCached"],"sources":["../src/Class.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/Extensions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Extensions.d.ts","sourceRoot":"","sources":["../src/Extensions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"Extensions.d.ts","sourceRoot":"","sources":["../src/Extensions.ts"],"names":[],"mappings":"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"}
|
package/dist/Extensions.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @category Extensions
|
|
4
4
|
*/
|
|
5
5
|
import "frida-il2cpp-bridge";
|
|
6
|
-
import { Array, Option, Record, pipe } from "effect";
|
|
6
|
+
import { Array, Option, Record, pipe, Result } from "effect";
|
|
7
7
|
/**
|
|
8
8
|
* @since 1.0.0
|
|
9
9
|
* @category Extensions
|
|
@@ -71,9 +71,14 @@ export class Dictionary extends Il2Cpp.Object {
|
|
|
71
71
|
return this.isNull() ? "null" : `{${[...this.entries].map(([k, v]) => `${k}: ${v}`).join(", ")}}`;
|
|
72
72
|
}
|
|
73
73
|
toRecord(keys) {
|
|
74
|
-
const readKeyOptionString = key => key instanceof Il2Cpp.String ? Option.
|
|
74
|
+
const readKeyOptionString = key => key instanceof Il2Cpp.String ? Option.fromNullOr(key.isNull() ? null : key.content) : Option.some(key.toString());
|
|
75
75
|
const readValueOption = key => this.containsKey(key) ? Option.some(this.get(key)) : Option.none();
|
|
76
|
-
return pipe(keys ?? this.keys, Array.filterMap(key =>
|
|
76
|
+
return pipe(keys ?? this.keys, Array.filterMap(key => {
|
|
77
|
+
const maybeKey = readKeyOptionString(key);
|
|
78
|
+
const maybeValue = readValueOption(key);
|
|
79
|
+
const product = Option.product(maybeKey, maybeValue);
|
|
80
|
+
return Result.fromOption(product, () => void 0);
|
|
81
|
+
}), Record.fromEntries);
|
|
77
82
|
}
|
|
78
83
|
/** The Dictionary class. */
|
|
79
84
|
static get class() {
|
package/dist/Extensions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Extensions.js","names":["Array","Option","Record","pipe","Dictionary","Il2Cpp","Object","length","method","invoke","keys","array","class","generics","fromIterable","values","entries","zip","get","key","set","value","add","clear","containsKey","containsValue","find","remove","Symbol","iterator","i","toString","isNull","map","k","v","join","toRecord","readKeyOptionString","String","
|
|
1
|
+
{"version":3,"file":"Extensions.js","names":["Array","Option","Record","pipe","Result","Dictionary","Il2Cpp","Object","length","method","invoke","keys","array","class","generics","fromIterable","values","entries","zip","get","key","set","value","add","clear","containsKey","containsValue","find","remove","Symbol","iterator","i","toString","isNull","map","k","v","join","toRecord","readKeyOptionString","String","fromNullOr","content","some","readValueOption","none","filterMap","maybeKey","maybeValue","product","fromOption","fromEntries","corlib","lift","object","handle","of","keyClass","valueClass","elements","dictionary","inflate","alloc","List","capacity","index","item","contains","indexOf","insert","reverse","sort","toArray","klass","list","element"],"sources":["../src/Extensions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FridaIl2cppBridge.d.ts","sourceRoot":"","sources":["../src/FridaIl2cppBridge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"FridaIl2cppBridge.d.ts","sourceRoot":"","sources":["../src/FridaIl2cppBridge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACtC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,KACnD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAgBxB,CAAC"}
|
|
@@ -4,15 +4,14 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import "frida-il2cpp-bridge";
|
|
6
6
|
import * as Effect from "effect/Effect";
|
|
7
|
-
import * as Runtime from "effect/Runtime";
|
|
8
7
|
/**
|
|
9
8
|
* Attaches the caller thread to Il2Cpp domain and executes the given block.
|
|
10
9
|
*
|
|
11
10
|
* @since 1.0.0
|
|
12
11
|
*/
|
|
13
12
|
export const il2cppPerformEffect = /*#__PURE__*/Effect.fnUntraced(function* (effect, flag) {
|
|
14
|
-
const
|
|
15
|
-
const runPromiseExit =
|
|
13
|
+
const services = yield* Effect.context();
|
|
14
|
+
const runPromiseExit = Effect.runPromiseExitWith(services);
|
|
16
15
|
const exit = yield* Effect.promise(abortSignal => Il2Cpp.perform(() => runPromiseExit(effect, {
|
|
17
16
|
signal: abortSignal
|
|
18
17
|
}), flag));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FridaIl2cppBridge.js","names":["Effect","
|
|
1
|
+
{"version":3,"file":"FridaIl2cppBridge.js","names":["Effect","il2cppPerformEffect","fnUntraced","effect","flag","services","context","runPromiseExit","runPromiseExitWith","exit","promise","abortSignal","Il2Cpp","perform","signal"],"sources":["../src/FridaIl2cppBridge.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;AAKA,OAAO,qBAAqB;AAE5B,OAAO,KAAKA,MAAM,MAAM,eAAe;AAEvC;;;;;AAKA,OAAO,MAAMC,mBAAmB,gBAGFD,MAAM,CAACE,UAAU,CAAC,WAC5CC,MAA8B,EAC9BC,IAAoD;EAEpD,MAAMC,QAAQ,GAAG,OAAOL,MAAM,CAACM,OAAO,EAAK;EAC3C,MAAMC,cAAc,GAAGP,MAAM,CAACQ,kBAAkB,CAACH,QAAQ,CAAC;EAC1D,MAAMI,IAAI,GAAG,OAAOT,MAAM,CAACU,OAAO,CAAEC,WAAW,IAC3CC,MAAM,CAACC,OAAO,CACV,MACIN,cAAc,CAACJ,MAAM,EAAE;IACnBW,MAAM,EAAEH;GACX,CAAC,EACNP,IAAI,CACP,CACJ;EACD,OAAO,OAAOK,IAAI;AACtB,CAAC,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@efffrida/il2cpp-bridge",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.28",
|
|
4
4
|
"description": "effect-ts frida-il2cpp-bridge",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"effect-ts",
|
|
@@ -38,16 +38,16 @@
|
|
|
38
38
|
"frida-il2cpp-bridge": "0.13.1"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@effect/vitest": "0.
|
|
41
|
+
"@effect/vitest": "4.0.0-beta.69",
|
|
42
42
|
"@types/frida-gum": "19.1.0",
|
|
43
|
-
"@types/node": "25.
|
|
44
|
-
"effect": "
|
|
43
|
+
"@types/node": "25.9.0",
|
|
44
|
+
"effect": "4.0.0-beta.69",
|
|
45
45
|
"vitest": "4.1.6",
|
|
46
|
-
"@efffrida/
|
|
47
|
-
"@efffrida/
|
|
46
|
+
"@efffrida/vitest-pool": "0.0.14",
|
|
47
|
+
"@efffrida/polyfills": "0.0.8"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"effect": "
|
|
50
|
+
"effect": "4.0.0-beta.69"
|
|
51
51
|
},
|
|
52
52
|
"tags": [
|
|
53
53
|
"frida.re",
|
package/src/Assembly.ts
CHANGED
|
@@ -4,11 +4,22 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import "frida-il2cpp-bridge";
|
|
7
|
+
|
|
7
8
|
import type * as Scope from "effect/Scope";
|
|
8
9
|
|
|
10
|
+
import * as Cache from "effect/Cache";
|
|
9
11
|
import * as Cause from "effect/Cause";
|
|
12
|
+
import * as Context from "effect/Context";
|
|
10
13
|
import * as Effect from "effect/Effect";
|
|
11
|
-
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category Cache
|
|
18
|
+
*/
|
|
19
|
+
export const CacheCapacity: Context.Reference<number> = Context.Reference<number>(
|
|
20
|
+
"@efffrida/il2cpp-bridge/CacheCapacity",
|
|
21
|
+
{ defaultValue: () => 100 }
|
|
22
|
+
);
|
|
12
23
|
|
|
13
24
|
/**
|
|
14
25
|
* @since 1.0.0
|
|
@@ -21,28 +32,28 @@ export const assembly = (name: string): Effect.Effect<Il2Cpp.Assembly, never, ne
|
|
|
21
32
|
* @since 1.0.0
|
|
22
33
|
* @category Assembly
|
|
23
34
|
*/
|
|
24
|
-
export const tryAssembly = (name: string): Effect.Effect<Il2Cpp.Assembly, Cause.
|
|
35
|
+
export const tryAssembly = (name: string): Effect.Effect<Il2Cpp.Assembly, Cause.NoSuchElementError, never> =>
|
|
25
36
|
Effect.try({
|
|
26
37
|
try: () => Il2Cpp.domain.tryAssembly(name),
|
|
27
|
-
catch: () => new Cause.
|
|
28
|
-
}).pipe(Effect.flatMap(Effect.
|
|
38
|
+
catch: () => new Cause.NoSuchElementError(`No assembly with name ${name}`),
|
|
39
|
+
}).pipe(Effect.flatMap(Effect.fromNullishOr));
|
|
29
40
|
|
|
30
41
|
/**
|
|
31
42
|
* @since 1.0.0
|
|
32
43
|
* @category Assembly
|
|
33
44
|
*/
|
|
34
|
-
export const assemblyCached: Effect.Effect<typeof assembly, never, never> =
|
|
35
|
-
assembly,
|
|
36
|
-
|
|
45
|
+
export const assemblyCached: Effect.Effect<typeof assembly, never, never> = CacheCapacity.pipe(
|
|
46
|
+
Effect.flatMap((capacity) => Cache.make({ capacity, lookup: assembly })),
|
|
47
|
+
Effect.map((cache) => (name: string) => Cache.get(cache, name))
|
|
37
48
|
);
|
|
38
49
|
|
|
39
50
|
/**
|
|
40
51
|
* @since 1.0.0
|
|
41
52
|
* @category Assembly
|
|
42
53
|
*/
|
|
43
|
-
export const tryAssemblyCached: Effect.Effect<typeof tryAssembly, never, never> =
|
|
44
|
-
tryAssembly,
|
|
45
|
-
|
|
54
|
+
export const tryAssemblyCached: Effect.Effect<typeof tryAssembly, never, never> = CacheCapacity.pipe(
|
|
55
|
+
Effect.flatMap((capacity) => Cache.make({ capacity, lookup: tryAssembly })),
|
|
56
|
+
Effect.map((cache) => (name: string) => Cache.get(cache, name))
|
|
46
57
|
);
|
|
47
58
|
|
|
48
59
|
/**
|
package/src/Class.ts
CHANGED
|
@@ -4,13 +4,41 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import "frida-il2cpp-bridge";
|
|
7
|
+
|
|
8
|
+
import * as Cache from "effect/Cache";
|
|
7
9
|
import * as Cause from "effect/Cause";
|
|
10
|
+
import * as Data from "effect/Data";
|
|
8
11
|
import * as Effect from "effect/Effect";
|
|
9
|
-
import * as Equivalence from "effect/Equivalence";
|
|
10
12
|
import * as Function from "effect/Function";
|
|
11
|
-
import * as Tuple from "effect/Tuple";
|
|
12
13
|
|
|
13
|
-
import
|
|
14
|
+
import { CacheCapacity } from "./Assembly.ts";
|
|
15
|
+
|
|
16
|
+
export {
|
|
17
|
+
/**
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
* @category Cache
|
|
20
|
+
*/
|
|
21
|
+
CacheCapacity,
|
|
22
|
+
} from "./Assembly.ts";
|
|
23
|
+
|
|
24
|
+
/** @internal */
|
|
25
|
+
class ImageNameKey extends Data.Class<{
|
|
26
|
+
readonly image: Il2Cpp.Image;
|
|
27
|
+
readonly name: string;
|
|
28
|
+
}> {}
|
|
29
|
+
|
|
30
|
+
/** @internal */
|
|
31
|
+
class ClassNameKey extends Data.Class<{
|
|
32
|
+
readonly klass: Il2Cpp.Class;
|
|
33
|
+
readonly name: string;
|
|
34
|
+
}> {}
|
|
35
|
+
|
|
36
|
+
/** @internal */
|
|
37
|
+
class MethodKey extends Data.Class<{
|
|
38
|
+
readonly klass: Il2Cpp.Class;
|
|
39
|
+
readonly name: string;
|
|
40
|
+
readonly parameterCount: number | undefined;
|
|
41
|
+
}> {}
|
|
14
42
|
|
|
15
43
|
/**
|
|
16
44
|
* @since 1.0.0
|
|
@@ -34,13 +62,13 @@ export {
|
|
|
34
62
|
* @category Class
|
|
35
63
|
*/
|
|
36
64
|
export const tryClass = Function.dual<
|
|
37
|
-
(name: string) => (image: Il2Cpp.Image) => Effect.Effect<Il2Cpp.Class, Cause.
|
|
38
|
-
(image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, Cause.
|
|
65
|
+
(name: string) => (image: Il2Cpp.Image) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>,
|
|
66
|
+
(image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>
|
|
39
67
|
>(2, (image: Il2Cpp.Image, name: string) =>
|
|
40
68
|
Effect.try({
|
|
41
69
|
try: () => image.tryClass(name),
|
|
42
|
-
catch: () => new Cause.
|
|
43
|
-
}).pipe(Effect.flatMap(Effect.
|
|
70
|
+
catch: () => new Cause.NoSuchElementError(`No class with name ${name}`),
|
|
71
|
+
}).pipe(Effect.flatMap(Effect.fromNullishOr))
|
|
44
72
|
);
|
|
45
73
|
|
|
46
74
|
/**
|
|
@@ -51,9 +79,9 @@ export const classCached: Effect.Effect<
|
|
|
51
79
|
(image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, never, never>,
|
|
52
80
|
never,
|
|
53
81
|
never
|
|
54
|
-
> =
|
|
55
|
-
Effect.
|
|
56
|
-
|
|
82
|
+
> = CacheCapacity.pipe(
|
|
83
|
+
Effect.flatMap((capacity) => Cache.make({ capacity, lookup: (key: ImageNameKey) => class_(key.image, key.name) })),
|
|
84
|
+
Effect.map((cache) => (image: Il2Cpp.Image, name: string) => Cache.get(cache, new ImageNameKey({ image, name })))
|
|
57
85
|
);
|
|
58
86
|
|
|
59
87
|
/**
|
|
@@ -61,12 +89,26 @@ export const classCached: Effect.Effect<
|
|
|
61
89
|
* @category Class
|
|
62
90
|
*/
|
|
63
91
|
export const tryClassCached: Effect.Effect<
|
|
64
|
-
(image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, Cause.
|
|
92
|
+
(image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>,
|
|
65
93
|
never,
|
|
66
94
|
never
|
|
67
|
-
> =
|
|
68
|
-
Effect.
|
|
69
|
-
|
|
95
|
+
> = CacheCapacity.pipe(
|
|
96
|
+
Effect.flatMap((capacity) =>
|
|
97
|
+
Cache.make({
|
|
98
|
+
lookup: (key: ImageNameKey) => tryClass(key.image, key.name),
|
|
99
|
+
capacity,
|
|
100
|
+
})
|
|
101
|
+
),
|
|
102
|
+
Effect.map(
|
|
103
|
+
(cache) => (image: Il2Cpp.Image, name: string) =>
|
|
104
|
+
Cache.get(
|
|
105
|
+
cache,
|
|
106
|
+
new ImageNameKey({
|
|
107
|
+
image,
|
|
108
|
+
name,
|
|
109
|
+
})
|
|
110
|
+
)
|
|
111
|
+
)
|
|
70
112
|
);
|
|
71
113
|
|
|
72
114
|
/**
|
|
@@ -107,21 +149,21 @@ export const tryField = Function.dual<
|
|
|
107
149
|
name: string
|
|
108
150
|
) => <T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
109
151
|
klass: Il2Cpp.Class
|
|
110
|
-
) => Effect.Effect<Il2Cpp.Field<T>, Cause.
|
|
152
|
+
) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementError, never>,
|
|
111
153
|
<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
112
154
|
klass: Il2Cpp.Class,
|
|
113
155
|
name: string
|
|
114
|
-
) => Effect.Effect<Il2Cpp.Field<T>, Cause.
|
|
156
|
+
) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementError, never>
|
|
115
157
|
>(
|
|
116
158
|
2,
|
|
117
159
|
<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
118
160
|
klass: Il2Cpp.Class,
|
|
119
161
|
name: string
|
|
120
|
-
): Effect.Effect<Il2Cpp.Field<T>, Cause.
|
|
162
|
+
): Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementError, never> =>
|
|
121
163
|
Effect.try({
|
|
122
164
|
try: () => klass.field<T>(name),
|
|
123
|
-
catch: () => new Cause.
|
|
124
|
-
}).pipe(Effect.flatMap(Effect.
|
|
165
|
+
catch: () => new Cause.NoSuchElementError(`No field with name ${name}`),
|
|
166
|
+
}).pipe(Effect.flatMap(Effect.fromNullishOr))
|
|
125
167
|
);
|
|
126
168
|
|
|
127
169
|
/**
|
|
@@ -135,13 +177,27 @@ export const fieldCached: Effect.Effect<
|
|
|
135
177
|
) => Effect.Effect<Il2Cpp.Field<T>, never, never>,
|
|
136
178
|
never,
|
|
137
179
|
never
|
|
138
|
-
> =
|
|
139
|
-
Effect.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
180
|
+
> = CacheCapacity.pipe(
|
|
181
|
+
Effect.flatMap((capacity) =>
|
|
182
|
+
Cache.make({
|
|
183
|
+
lookup: (key: ClassNameKey) => field(key.klass, key.name),
|
|
184
|
+
capacity,
|
|
185
|
+
})
|
|
186
|
+
),
|
|
187
|
+
Effect.map(
|
|
188
|
+
(cache) =>
|
|
189
|
+
((klass: Il2Cpp.Class, name: string) =>
|
|
190
|
+
Cache.get(
|
|
191
|
+
cache,
|
|
192
|
+
new ClassNameKey({
|
|
193
|
+
klass,
|
|
194
|
+
name,
|
|
195
|
+
})
|
|
196
|
+
)) as <T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
197
|
+
klass: Il2Cpp.Class,
|
|
198
|
+
name: string
|
|
199
|
+
) => Effect.Effect<Il2Cpp.Field<T>, never, never>
|
|
200
|
+
)
|
|
145
201
|
);
|
|
146
202
|
|
|
147
203
|
/**
|
|
@@ -152,16 +208,30 @@ export const tryFieldCached: Effect.Effect<
|
|
|
152
208
|
<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
153
209
|
klass: Il2Cpp.Class,
|
|
154
210
|
name: string
|
|
155
|
-
) => Effect.Effect<Il2Cpp.Field<T>, Cause.
|
|
211
|
+
) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementError, never>,
|
|
156
212
|
never,
|
|
157
213
|
never
|
|
158
|
-
> =
|
|
159
|
-
Effect.
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
214
|
+
> = CacheCapacity.pipe(
|
|
215
|
+
Effect.flatMap((capacity) =>
|
|
216
|
+
Cache.make({
|
|
217
|
+
lookup: (key: ClassNameKey) => tryField(key.klass, key.name),
|
|
218
|
+
capacity,
|
|
219
|
+
})
|
|
220
|
+
),
|
|
221
|
+
Effect.map(
|
|
222
|
+
(cache) =>
|
|
223
|
+
((klass: Il2Cpp.Class, name: string) =>
|
|
224
|
+
Cache.get(
|
|
225
|
+
cache,
|
|
226
|
+
new ClassNameKey({
|
|
227
|
+
klass,
|
|
228
|
+
name,
|
|
229
|
+
})
|
|
230
|
+
)) as <T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
231
|
+
klass: Il2Cpp.Class,
|
|
232
|
+
name: string
|
|
233
|
+
) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementError, never>
|
|
234
|
+
)
|
|
165
235
|
);
|
|
166
236
|
|
|
167
237
|
/**
|
|
@@ -206,23 +276,23 @@ export const tryMethod = Function.dual<
|
|
|
206
276
|
parameterCount?: number | undefined
|
|
207
277
|
) => <T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
208
278
|
klass: Il2Cpp.Class
|
|
209
|
-
) => Effect.Effect<Il2Cpp.Method<T>, Cause.
|
|
279
|
+
) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementError, never>,
|
|
210
280
|
<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
211
281
|
klass: Il2Cpp.Class,
|
|
212
282
|
name: string,
|
|
213
283
|
parameterCount?: number | undefined
|
|
214
|
-
) => Effect.Effect<Il2Cpp.Method<T>, Cause.
|
|
284
|
+
) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementError, never>
|
|
215
285
|
>(
|
|
216
286
|
(_arguments) => typeof _arguments[1] === "string",
|
|
217
287
|
<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
218
288
|
klass: Il2Cpp.Class,
|
|
219
289
|
name: string,
|
|
220
290
|
parameterCount?: number | undefined
|
|
221
|
-
): Effect.Effect<Il2Cpp.Method<T>, Cause.
|
|
291
|
+
): Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementError, never> =>
|
|
222
292
|
Effect.try({
|
|
223
293
|
try: () => klass.tryMethod<T>(name, parameterCount),
|
|
224
|
-
catch: () => new Cause.
|
|
225
|
-
}).pipe(Effect.flatMap(Effect.
|
|
294
|
+
catch: () => new Cause.NoSuchElementError(`No method with name ${name}`),
|
|
295
|
+
}).pipe(Effect.flatMap(Effect.fromNullishOr))
|
|
226
296
|
);
|
|
227
297
|
|
|
228
298
|
/**
|
|
@@ -237,20 +307,24 @@ export const methodCached: Effect.Effect<
|
|
|
237
307
|
) => Effect.Effect<Il2Cpp.Method<T>, never, never>,
|
|
238
308
|
never,
|
|
239
309
|
never
|
|
240
|
-
> =
|
|
241
|
-
Effect.
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
)
|
|
310
|
+
> = CacheCapacity.pipe(
|
|
311
|
+
Effect.flatMap((capacity) =>
|
|
312
|
+
Cache.make({
|
|
313
|
+
lookup: (key: MethodKey) => method(key.klass, key.name, key.parameterCount),
|
|
314
|
+
capacity,
|
|
315
|
+
})
|
|
247
316
|
),
|
|
248
|
-
(
|
|
249
|
-
|
|
250
|
-
klass: Il2Cpp.Class,
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
317
|
+
Effect.map(
|
|
318
|
+
(cache) =>
|
|
319
|
+
((klass: Il2Cpp.Class, name: string, parameterCount?: number) =>
|
|
320
|
+
Cache.get(cache, new MethodKey({ klass, name, parameterCount }))) as <
|
|
321
|
+
T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType,
|
|
322
|
+
>(
|
|
323
|
+
klass: Il2Cpp.Class,
|
|
324
|
+
name: string,
|
|
325
|
+
parameterCount?: number | undefined
|
|
326
|
+
) => Effect.Effect<Il2Cpp.Method<T>, never, never>
|
|
327
|
+
)
|
|
254
328
|
);
|
|
255
329
|
|
|
256
330
|
/**
|
|
@@ -262,23 +336,27 @@ export const tryMethodCached: Effect.Effect<
|
|
|
262
336
|
klass: Il2Cpp.Class,
|
|
263
337
|
name: string,
|
|
264
338
|
parameterCount?: number | undefined
|
|
265
|
-
) => Effect.Effect<Il2Cpp.Method<T>, Cause.
|
|
339
|
+
) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementError, never>,
|
|
266
340
|
never,
|
|
267
341
|
never
|
|
268
|
-
> =
|
|
269
|
-
Effect.
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
)
|
|
342
|
+
> = CacheCapacity.pipe(
|
|
343
|
+
Effect.flatMap((capacity) =>
|
|
344
|
+
Cache.make({
|
|
345
|
+
lookup: (key: MethodKey) => tryMethod(key.klass, key.name, key.parameterCount),
|
|
346
|
+
capacity,
|
|
347
|
+
})
|
|
275
348
|
),
|
|
276
|
-
(
|
|
277
|
-
|
|
278
|
-
klass: Il2Cpp.Class,
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
349
|
+
Effect.map(
|
|
350
|
+
(cache) =>
|
|
351
|
+
((klass: Il2Cpp.Class, name: string, parameterCount?: number) =>
|
|
352
|
+
Cache.get(cache, new MethodKey({ klass, name, parameterCount }))) as <
|
|
353
|
+
T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType,
|
|
354
|
+
>(
|
|
355
|
+
klass: Il2Cpp.Class,
|
|
356
|
+
name: string,
|
|
357
|
+
parameterCount?: number | undefined
|
|
358
|
+
) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementError, never>
|
|
359
|
+
)
|
|
282
360
|
);
|
|
283
361
|
|
|
284
362
|
/**
|
|
@@ -295,13 +373,13 @@ export const nested = Function.dual<
|
|
|
295
373
|
* @category Class
|
|
296
374
|
*/
|
|
297
375
|
export const tryNested = Function.dual<
|
|
298
|
-
(name: string) => (klass: Il2Cpp.Class) => Effect.Effect<Il2Cpp.Class, Cause.
|
|
299
|
-
(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, Cause.
|
|
376
|
+
(name: string) => (klass: Il2Cpp.Class) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>,
|
|
377
|
+
(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>
|
|
300
378
|
>(2, (klass: Il2Cpp.Class, name: string) =>
|
|
301
379
|
Effect.try({
|
|
302
380
|
try: () => klass.tryNested(name),
|
|
303
|
-
catch: () => new Cause.
|
|
304
|
-
}).pipe(Effect.flatMap(Effect.
|
|
381
|
+
catch: () => new Cause.NoSuchElementError(`No nested class with name ${name}`),
|
|
382
|
+
}).pipe(Effect.flatMap(Effect.fromNullishOr))
|
|
305
383
|
);
|
|
306
384
|
|
|
307
385
|
/**
|
|
@@ -312,9 +390,9 @@ export const nestedCached: Effect.Effect<
|
|
|
312
390
|
(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, never, never>,
|
|
313
391
|
never,
|
|
314
392
|
never
|
|
315
|
-
> =
|
|
316
|
-
Effect.
|
|
317
|
-
|
|
393
|
+
> = CacheCapacity.pipe(
|
|
394
|
+
Effect.flatMap((capacity) => Cache.make({ capacity, lookup: (key: ClassNameKey) => nested(key.klass, key.name) })),
|
|
395
|
+
Effect.map((cache) => (klass: Il2Cpp.Class, name: string) => Cache.get(cache, new ClassNameKey({ klass, name })))
|
|
318
396
|
);
|
|
319
397
|
|
|
320
398
|
/**
|
|
@@ -322,10 +400,24 @@ export const nestedCached: Effect.Effect<
|
|
|
322
400
|
* @category Class
|
|
323
401
|
*/
|
|
324
402
|
export const tryNestedCached: Effect.Effect<
|
|
325
|
-
(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, Cause.
|
|
403
|
+
(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>,
|
|
326
404
|
never,
|
|
327
405
|
never
|
|
328
|
-
> =
|
|
329
|
-
Effect.
|
|
330
|
-
|
|
406
|
+
> = CacheCapacity.pipe(
|
|
407
|
+
Effect.flatMap((capacity) =>
|
|
408
|
+
Cache.make({
|
|
409
|
+
lookup: (key: ClassNameKey) => tryNested(key.klass, key.name),
|
|
410
|
+
capacity,
|
|
411
|
+
})
|
|
412
|
+
),
|
|
413
|
+
Effect.map(
|
|
414
|
+
(cache) => (klass: Il2Cpp.Class, name: string) =>
|
|
415
|
+
Cache.get(
|
|
416
|
+
cache,
|
|
417
|
+
new ClassNameKey({
|
|
418
|
+
klass,
|
|
419
|
+
name,
|
|
420
|
+
})
|
|
421
|
+
)
|
|
422
|
+
)
|
|
331
423
|
);
|
package/src/Extensions.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import "frida-il2cpp-bridge";
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
import { Array, Option, Record, pipe, Result } from "effect";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* @since 1.0.0
|
|
@@ -94,7 +95,7 @@ export class Dictionary<
|
|
|
94
95
|
public toRecord(keys?: Array<K> | undefined): Record<string, V> {
|
|
95
96
|
const readKeyOptionString = (key: K): Option.Option<string> =>
|
|
96
97
|
key instanceof Il2Cpp.String
|
|
97
|
-
? Option.
|
|
98
|
+
? Option.fromNullOr(key.isNull() ? null : key.content)
|
|
98
99
|
: Option.some(key.toString());
|
|
99
100
|
|
|
100
101
|
const readValueOption = (key: K): Option.Option<V> =>
|
|
@@ -102,7 +103,12 @@ export class Dictionary<
|
|
|
102
103
|
|
|
103
104
|
return pipe(
|
|
104
105
|
keys ?? this.keys,
|
|
105
|
-
Array.filterMap((key) =>
|
|
106
|
+
Array.filterMap((key) => {
|
|
107
|
+
const maybeKey = readKeyOptionString(key);
|
|
108
|
+
const maybeValue = readValueOption(key);
|
|
109
|
+
const product = Option.product(maybeKey, maybeValue);
|
|
110
|
+
return Result.fromOption(product, () => void 0);
|
|
111
|
+
}),
|
|
106
112
|
Record.fromEntries
|
|
107
113
|
);
|
|
108
114
|
}
|
package/src/FridaIl2cppBridge.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import "frida-il2cpp-bridge";
|
|
7
|
+
|
|
7
8
|
import * as Effect from "effect/Effect";
|
|
8
|
-
import * as Runtime from "effect/Runtime";
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Attaches the caller thread to Il2Cpp domain and executes the given block.
|
|
@@ -19,8 +19,8 @@ export const il2cppPerformEffect: <X, E, R>(
|
|
|
19
19
|
effect: Effect.Effect<X, E, R>,
|
|
20
20
|
flag?: "free" | "bind" | "leak" | "main" | undefined
|
|
21
21
|
) {
|
|
22
|
-
const
|
|
23
|
-
const runPromiseExit =
|
|
22
|
+
const services = yield* Effect.context<R>();
|
|
23
|
+
const runPromiseExit = Effect.runPromiseExitWith(services);
|
|
24
24
|
const exit = yield* Effect.promise((abortSignal) =>
|
|
25
25
|
Il2Cpp.perform(
|
|
26
26
|
() =>
|