@efffrida/il2cpp-bridge 0.0.55 → 0.0.56
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/README.md +38 -1
- package/dist/Assembly.d.ts.map +1 -1
- package/dist/Assembly.js +2 -4
- package/dist/Assembly.js.map +1 -1
- package/dist/Class.d.ts.map +1 -1
- package/dist/Class.js +45 -21
- package/dist/Class.js.map +1 -1
- package/dist/Extensions.d.ts +10 -4
- package/dist/Extensions.d.ts.map +1 -1
- package/dist/Extensions.js +16 -9
- package/dist/Extensions.js.map +1 -1
- package/package.json +1 -1
- package/src/Assembly.ts +4 -4
- package/src/Class.ts +60 -40
- package/src/Extensions.ts +18 -11
package/README.md
CHANGED
|
@@ -1,3 +1,40 @@
|
|
|
1
1
|
# @efffrida/il2cpp-bridge
|
|
2
2
|
|
|
3
|
-
Effect integration for
|
|
3
|
+
Effect integration for
|
|
4
|
+
[frida-il2cpp-bridge](https://github.com/vfsfitvnm/frida-il2cpp-bridge), for use
|
|
5
|
+
inside frida agents that instrument Unity il2cpp applications.
|
|
6
|
+
|
|
7
|
+
- `FridaIl2cppBridge.il2cppPerformEffect` runs an effect inside
|
|
8
|
+
`Il2Cpp.perform`, so the caller thread is attached to the il2cpp domain while
|
|
9
|
+
it executes.
|
|
10
|
+
- `Assembly` and `Class` look up assemblies, classes, fields, methods, and
|
|
11
|
+
nested classes as effects. The plain variants (`assembly`, `class`, `field`,
|
|
12
|
+
...) treat a missing member as a defect, the `try*` variants fail with a
|
|
13
|
+
`NoSuchElementError` instead, and the `*Cached` variants memoize lookups in a
|
|
14
|
+
`Cache` sized by the `CacheCapacity` reference (100 by default). Cache keys
|
|
15
|
+
compare il2cpp objects by their native handle.
|
|
16
|
+
- `Equivalence` compares images, classes, fields, and methods by their native
|
|
17
|
+
handle.
|
|
18
|
+
- `Extensions` provides `Dictionary` and `List` wrappers over
|
|
19
|
+
`System.Collections.Generic.Dictionary` and `System.Collections.Generic.List`
|
|
20
|
+
objects.
|
|
21
|
+
|
|
22
|
+
### Example usage
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import "@efffrida/polyfills";
|
|
26
|
+
|
|
27
|
+
import * as Effect from "effect/Effect";
|
|
28
|
+
|
|
29
|
+
import { Assembly, Class, Extensions, FridaIl2cppBridge } from "@efffrida/il2cpp-bridge";
|
|
30
|
+
import { FridaRuntime } from "@efffrida/platform";
|
|
31
|
+
|
|
32
|
+
Effect.gen(function* () {
|
|
33
|
+
const csharp = yield* Assembly.assembly("Assembly-CSharp");
|
|
34
|
+
const player = yield* Class.tryClass(csharp.image, "Player");
|
|
35
|
+
const allPlayers = yield* Class.tryField<Il2Cpp.Object>(player, "s_AllPlayers");
|
|
36
|
+
|
|
37
|
+
const players = Extensions.List.lift(allPlayers.value);
|
|
38
|
+
yield* Effect.logInfo(`There are ${players.length} players`);
|
|
39
|
+
}).pipe(FridaIl2cppBridge.il2cppPerformEffect, FridaRuntime.runMain);
|
|
40
|
+
```
|
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;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;
|
|
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;AAGxC;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,MAAM,CAGnD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAChC,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,WAAW,SAAU,MAAM,KAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAGpG,CAAC;AAEN;;;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
|
@@ -7,6 +7,7 @@ import * as Cache from "effect/Cache";
|
|
|
7
7
|
import * as Cause from "effect/Cause";
|
|
8
8
|
import * as Context from "effect/Context";
|
|
9
9
|
import * as Effect from "effect/Effect";
|
|
10
|
+
import * as Option from "effect/Option";
|
|
10
11
|
/**
|
|
11
12
|
* @since 1.0.0
|
|
12
13
|
* @category Cache
|
|
@@ -23,10 +24,7 @@ export const assembly = name => Effect.sync(() => Il2Cpp.domain.assembly(name));
|
|
|
23
24
|
* @since 1.0.0
|
|
24
25
|
* @category Assembly
|
|
25
26
|
*/
|
|
26
|
-
export const tryAssembly = name => Effect.
|
|
27
|
-
try: () => Il2Cpp.domain.tryAssembly(name),
|
|
28
|
-
catch: () => new Cause.NoSuchElementError(`No assembly with name ${name}`)
|
|
29
|
-
}).pipe(Effect.flatMap(Effect.fromNullishOr));
|
|
27
|
+
export const tryAssembly = name => Effect.sync(() => Option.fromNullishOr(Il2Cpp.domain.tryAssembly(name))).pipe(Effect.flatMap(Effect.fromOption(() => new Cause.NoSuchElementError(`No assembly with name ${name}`))));
|
|
30
28
|
/**
|
|
31
29
|
* @since 1.0.0
|
|
32
30
|
* @category Assembly
|
package/dist/Assembly.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Assembly.js","names":[],"sources":["../src/Assembly.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;AAKA,OAAO,qBAAqB;AAI5B,OAAO,KAAK,KAAK,MAAM,cAAc;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc;AACrC,OAAO,KAAK,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe;AAEvC;;;;AAIA,OAAO,MAAM,aAAa,gBAA8B,OAAO,CAAC,SAAS,CACrE,uCAAuC,EACvC;EAAE,YAAY,EAAE,MAAM;AAAG,CAAE,CAC9B;AAED;;;;AAIA,OAAO,MAAM,QAAQ,GAAI,IAAY,IACjC,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEnD;;;;AAIA,OAAO,MAAM,WAAW,GAAI,IAAY,IACpC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"Assembly.js","names":[],"sources":["../src/Assembly.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;AAKA,OAAO,qBAAqB;AAI5B,OAAO,KAAK,KAAK,MAAM,cAAc;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc;AACrC,OAAO,KAAK,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe;AAEvC;;;;AAIA,OAAO,MAAM,aAAa,gBAA8B,OAAO,CAAC,SAAS,CACrE,uCAAuC,EACvC;EAAE,YAAY,EAAE,MAAM;AAAG,CAAE,CAC9B;AAED;;;;AAIA,OAAO,MAAM,QAAQ,GAAI,IAAY,IACjC,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAEnD;;;;AAIA,OAAO,MAAM,WAAW,GAAI,IAAY,IACpC,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACzE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC,CAAC,CACzG;AAEL;;;;AAIA,OAAO,MAAM,cAAc,gBAAiD,aAAa,CAAC,IAAI,cAC1F,MAAM,CAAC,OAAO,CAAE,QAAQ,IAAK,KAAK,CAAC,IAAI,CAAC;EAAE,QAAQ;EAAE,MAAM,EAAE;AAAQ,CAAE,CAAC,CAAC,eACxE,MAAM,CAAC,GAAG,CAAE,KAAK,IAAM,IAAY,IAAK,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAClE;AAED;;;;AAIA,OAAO,MAAM,iBAAiB,gBAAoD,aAAa,CAAC,IAAI,cAChG,MAAM,CAAC,OAAO,CAAE,QAAQ,IAAK,KAAK,CAAC,IAAI,CAAC;EAAE,QAAQ;EAAE,MAAM,EAAE;AAAW,CAAE,CAAC,CAAC,eAC3E,MAAM,CAAC,GAAG,CAAE,KAAK,IAAM,IAAY,IAAK,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAClE;AAED;;;;AAIA,OAAO,MAAM,MAAM,gBAAqD,MAAM,CAAC,cAAc,cACzF,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EACxC,MAAM,IAAK,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CACjD","ignoreList":[]}
|
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;AAG7B,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Class.d.ts","sourceRoot":"","sources":["../src/Class.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,qBAAqB,CAAC;AAG7B,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAQxC,OAAO;AACH;;;GAGG;AACH,aAAa,GAChB,MAAM,eAAe,CAAC;AAuEvB;;;GAGG;AACH,QAAA,MAAM,MAAM,UACD,MAAM,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,aAC5E,MAAM,CAAC,KAAK,QAAQ,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CACH,CAAC;AAElF,OAAO;AACH;;;GAGG;AACH,MAAM,IAAI,KAAK,GAClB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,UACV,MAAM,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,aAC/F,MAAM,CAAC,KAAK,QAAQ,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAKtG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,CACnC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAChF,KAAK,EACL,KAAK,CAIR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CACtC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,EACnG,KAAK,EACL,KAAK,CAkBR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,MAAM,UAAW,MAAM,CAAC,KAAK,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CACjE,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,KAAK,UAEJ,MAAM,KACX,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EACjD,KAAK,EAAE,MAAM,CAAC,KAAK,KAClB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAChD,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,6BACjB,MAAM,CAAC,KAAK,QACb,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAOpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,UAEP,MAAM,KACX,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EACjD,KAAK,EAAE,MAAM,CAAC,KAAK,KAClB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,MACnE,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,6BACjB,MAAM,CAAC,KAAK,QACb,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAUvE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,CACnC,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAC5C,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,IAAI,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EACjD,KAAK,EACL,KAAK,CAsBR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,CACtC,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAC5C,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,IAAI,EAAE,MAAM,KACX,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,EACpE,KAAK,EACL,KAAK,CAsBR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,OAAO,UAAW,MAAM,CAAC,KAAK,KAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAClE,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,MAAM,UAEL,MAAM,mBACK,MAAM,GAAG,SAAS,KAClC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/D,KAAK,EAAE,MAAM,CAAC,KAAK,KAClB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MACjD,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,UAAU,oCACxB,MAAM,CAAC,KAAK,QACb,MAAM,mBACK,MAAM,GAAG,SAAS,KAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAQrD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,UAER,MAAM,mBACK,MAAM,GAAG,SAAS,KAClC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/D,KAAK,EAAE,MAAM,CAAC,KAAK,KAClB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,MACpE,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,UAAU,oCACxB,MAAM,CAAC,KAAK,QACb,MAAM,mBACK,MAAM,GAAG,SAAS,KAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAoBxE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CACpC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAC1D,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,KAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAClD,KAAK,EACL,KAAK,CAmBR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,CACvC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAC1D,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,KAClC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,EACrE,KAAK,EACL,KAAK,CAmBR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,MAAM,UACR,MAAM,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,aAC5E,MAAM,CAAC,KAAK,QAAQ,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CACF,CAAC;AAEnF;;;GAGG;AACH,eAAO,MAAM,SAAS,UACX,MAAM,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,aAC/F,MAAM,CAAC,KAAK,QAAQ,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAKtG,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,CACpC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAChF,KAAK,EACL,KAAK,CAIR,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,CACvC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,EACnG,KAAK,EACL,KAAK,CAkBR,CAAC"}
|
package/dist/Class.js
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
import "frida-il2cpp-bridge";
|
|
6
6
|
import * as Cache from "effect/Cache";
|
|
7
7
|
import * as Cause from "effect/Cause";
|
|
8
|
-
import * as Data from "effect/Data";
|
|
9
8
|
import * as Effect from "effect/Effect";
|
|
10
9
|
import * as Equal from "effect/Equal";
|
|
11
10
|
import * as Function from "effect/Function";
|
|
12
11
|
import * as Hash from "effect/Hash";
|
|
12
|
+
import * as Option from "effect/Option";
|
|
13
13
|
import { CacheCapacity } from "./Assembly.js";
|
|
14
14
|
export {
|
|
15
15
|
/**
|
|
@@ -17,8 +17,23 @@ export {
|
|
|
17
17
|
* @category Cache
|
|
18
18
|
*/
|
|
19
19
|
CacheCapacity } from "./Assembly.js";
|
|
20
|
-
/**
|
|
21
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Cache keys identify il2cpp objects by their native handle rather than by
|
|
22
|
+
* reference, since frida-il2cpp-bridge can hand out distinct wrapper instances
|
|
23
|
+
* for the same underlying image/class.
|
|
24
|
+
*
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
class ImageNameKey {
|
|
28
|
+
image;
|
|
29
|
+
name;
|
|
30
|
+
constructor({
|
|
31
|
+
image,
|
|
32
|
+
name
|
|
33
|
+
}) {
|
|
34
|
+
this.image = image;
|
|
35
|
+
this.name = name;
|
|
36
|
+
}
|
|
22
37
|
[Hash.symbol]() {
|
|
23
38
|
return Hash.string(`${this.image.handle}:${this.name}`);
|
|
24
39
|
}
|
|
@@ -27,7 +42,16 @@ class ImageNameKey extends Data.Class {
|
|
|
27
42
|
}
|
|
28
43
|
}
|
|
29
44
|
/** @internal */
|
|
30
|
-
class ClassNameKey
|
|
45
|
+
class ClassNameKey {
|
|
46
|
+
klass;
|
|
47
|
+
name;
|
|
48
|
+
constructor({
|
|
49
|
+
klass,
|
|
50
|
+
name
|
|
51
|
+
}) {
|
|
52
|
+
this.klass = klass;
|
|
53
|
+
this.name = name;
|
|
54
|
+
}
|
|
31
55
|
[Hash.symbol]() {
|
|
32
56
|
return Hash.string(`${this.klass.handle}:${this.name}`);
|
|
33
57
|
}
|
|
@@ -36,7 +60,19 @@ class ClassNameKey extends Data.Class {
|
|
|
36
60
|
}
|
|
37
61
|
}
|
|
38
62
|
/** @internal */
|
|
39
|
-
class MethodKey
|
|
63
|
+
class MethodKey {
|
|
64
|
+
klass;
|
|
65
|
+
name;
|
|
66
|
+
parameterCount;
|
|
67
|
+
constructor({
|
|
68
|
+
klass,
|
|
69
|
+
name,
|
|
70
|
+
parameterCount
|
|
71
|
+
}) {
|
|
72
|
+
this.klass = klass;
|
|
73
|
+
this.name = name;
|
|
74
|
+
this.parameterCount = parameterCount;
|
|
75
|
+
}
|
|
40
76
|
[Hash.symbol]() {
|
|
41
77
|
return Hash.string(`${this.klass.handle}:${this.name}:${this.parameterCount}`);
|
|
42
78
|
}
|
|
@@ -59,10 +95,7 @@ class_ as class };
|
|
|
59
95
|
* @since 1.0.0
|
|
60
96
|
* @category Class
|
|
61
97
|
*/
|
|
62
|
-
export const tryClass = /*#__PURE__*/Function.dual(2, (image, name) => Effect.
|
|
63
|
-
try: () => image.tryClass(name),
|
|
64
|
-
catch: () => new Cause.NoSuchElementError(`No class with name ${name}`)
|
|
65
|
-
}).pipe(Effect.flatMap(Effect.fromNullishOr)));
|
|
98
|
+
export const tryClass = /*#__PURE__*/Function.dual(2, (image, name) => Effect.sync(() => Option.fromNullishOr(image.tryClass(name))).pipe(Effect.flatMap(Effect.fromOption(() => new Cause.NoSuchElementError(`No class with name ${name}`)))));
|
|
66
99
|
/**
|
|
67
100
|
* @since 1.0.0
|
|
68
101
|
* @category Class
|
|
@@ -99,10 +132,7 @@ export const field = /*#__PURE__*/Function.dual(2, (klass, name) => Effect.sync(
|
|
|
99
132
|
* @since 1.0.0
|
|
100
133
|
* @category Class
|
|
101
134
|
*/
|
|
102
|
-
export const tryField = /*#__PURE__*/Function.dual(2, (klass, name) => Effect.
|
|
103
|
-
try: () => klass.field(name),
|
|
104
|
-
catch: () => new Cause.NoSuchElementError(`No field with name ${name}`)
|
|
105
|
-
}).pipe(Effect.flatMap(Effect.fromNullishOr)));
|
|
135
|
+
export const tryField = /*#__PURE__*/Function.dual(2, (klass, name) => Effect.sync(() => Option.fromNullishOr(klass.tryField(name))).pipe(Effect.flatMap(Effect.fromOption(() => new Cause.NoSuchElementError(`No field with name ${name}`)))));
|
|
106
136
|
/**
|
|
107
137
|
* @since 1.0.0
|
|
108
138
|
* @category Class
|
|
@@ -139,10 +169,7 @@ export const method = /*#__PURE__*/Function.dual(_arguments => typeof _arguments
|
|
|
139
169
|
* @since 1.0.0
|
|
140
170
|
* @category Class
|
|
141
171
|
*/
|
|
142
|
-
export const tryMethod = /*#__PURE__*/Function.dual(_arguments => typeof _arguments[1] === "string", (klass, name, parameterCount) => Effect.
|
|
143
|
-
try: () => klass.tryMethod(name, parameterCount),
|
|
144
|
-
catch: () => new Cause.NoSuchElementError(`No method with name ${name}`)
|
|
145
|
-
}).pipe(Effect.flatMap(Effect.fromNullishOr)));
|
|
172
|
+
export const tryMethod = /*#__PURE__*/Function.dual(_arguments => typeof _arguments[1] === "string", (klass, name, parameterCount) => Effect.sync(() => Option.fromNullishOr(klass.tryMethod(name, parameterCount))).pipe(Effect.flatMap(Effect.fromOption(() => new Cause.NoSuchElementError(parameterCount === undefined ? `No method with name ${name}` : `No method with name ${name} and ${parameterCount} parameters`)))));
|
|
146
173
|
/**
|
|
147
174
|
* @since 1.0.0
|
|
148
175
|
* @category Class
|
|
@@ -176,10 +203,7 @@ export const nested = /*#__PURE__*/Function.dual(2, (klass, name) => Effect.sync
|
|
|
176
203
|
* @since 1.0.0
|
|
177
204
|
* @category Class
|
|
178
205
|
*/
|
|
179
|
-
export const tryNested = /*#__PURE__*/Function.dual(2, (klass, name) => Effect.
|
|
180
|
-
try: () => klass.tryNested(name),
|
|
181
|
-
catch: () => new Cause.NoSuchElementError(`No nested class with name ${name}`)
|
|
182
|
-
}).pipe(Effect.flatMap(Effect.fromNullishOr)));
|
|
206
|
+
export const tryNested = /*#__PURE__*/Function.dual(2, (klass, name) => Effect.sync(() => Option.fromNullishOr(klass.tryNested(name))).pipe(Effect.flatMap(Effect.fromOption(() => new Cause.NoSuchElementError(`No nested class with name ${name}`)))));
|
|
183
207
|
/**
|
|
184
208
|
* @since 1.0.0
|
|
185
209
|
* @category Class
|
package/dist/Class.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Class.js","names":[],"sources":["../src/Class.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;AAKA,OAAO,qBAAqB;AAE5B,OAAO,KAAK,KAAK,MAAM,cAAc;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc;AACrC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Class.js","names":[],"sources":["../src/Class.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/dist/Extensions.d.ts
CHANGED
|
@@ -34,10 +34,13 @@ export declare class Dictionary<K extends Il2Cpp.Field.Type = Il2Cpp.Field.Type,
|
|
|
34
34
|
remove(key: K): boolean;
|
|
35
35
|
[Symbol.iterator](): IterableIterator<[K, V]>;
|
|
36
36
|
toString(): string;
|
|
37
|
-
toRecord(keys?:
|
|
37
|
+
toRecord(keys?: ReadonlyArray<K> | undefined): Record<string, V>;
|
|
38
38
|
/** The Dictionary class. */
|
|
39
39
|
static get class(): Il2Cpp.Class;
|
|
40
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Lifts an Il2Cpp.Object holding a System.Collections.Generic.Dictionary
|
|
42
|
+
* instance to a Dictionary.
|
|
43
|
+
*/
|
|
41
44
|
static lift<K extends Il2Cpp.Field.Type = Il2Cpp.Field.Type, V extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(object: Il2Cpp.Object): Dictionary<K, V>;
|
|
42
45
|
/** Creates a new dictionary with the given elements. */
|
|
43
46
|
static of<K extends Il2Cpp.Field.Type = Il2Cpp.Field.Type, V extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(keyClass: Il2Cpp.Class, valueClass: Il2Cpp.Class, elements?: Map<K, V> | undefined): Dictionary<K, V>;
|
|
@@ -77,9 +80,12 @@ export declare class List<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type> exten
|
|
|
77
80
|
toString(): string;
|
|
78
81
|
/** The List class. */
|
|
79
82
|
static get class(): Il2Cpp.Class;
|
|
80
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Lifts an Il2Cpp.Object holding a System.Collections.Generic.List instance
|
|
85
|
+
* to a List.
|
|
86
|
+
*/
|
|
81
87
|
static lift<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(object: Il2Cpp.Object): List<T>;
|
|
82
88
|
/** Creates a new list with the given elements. */
|
|
83
|
-
static of<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(klass: Il2Cpp.Class, elements?:
|
|
89
|
+
static of<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(klass: Il2Cpp.Class, elements?: ReadonlyArray<T> | undefined): List<T>;
|
|
84
90
|
}
|
|
85
91
|
//# sourceMappingURL=Extensions.d.ts.map
|
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,11 @@
|
|
|
3
3
|
* @category Extensions
|
|
4
4
|
*/
|
|
5
5
|
import "frida-il2cpp-bridge";
|
|
6
|
-
import
|
|
6
|
+
import * as Array from "effect/Array";
|
|
7
|
+
import * as Function from "effect/Function";
|
|
8
|
+
import * as Option from "effect/Option";
|
|
9
|
+
import * as Record from "effect/Record";
|
|
10
|
+
import * as Result from "effect/Result";
|
|
7
11
|
/**
|
|
8
12
|
* @since 1.0.0
|
|
9
13
|
* @category Extensions
|
|
@@ -62,18 +66,15 @@ export class Dictionary extends Il2Cpp.Object {
|
|
|
62
66
|
return this.method("Remove").invoke(key);
|
|
63
67
|
}
|
|
64
68
|
*[Symbol.iterator]() {
|
|
65
|
-
|
|
66
|
-
for (let i = 0; i < this.length; i++) {
|
|
67
|
-
yield entries[i];
|
|
68
|
-
}
|
|
69
|
+
yield* this.entries;
|
|
69
70
|
}
|
|
70
71
|
toString() {
|
|
71
|
-
return this.isNull() ? "null" : `{${
|
|
72
|
+
return this.isNull() ? "null" : `{${this.entries.map(([k, v]) => `${k}: ${v}`).join(", ")}}`;
|
|
72
73
|
}
|
|
73
74
|
toRecord(keys) {
|
|
74
75
|
const readKeyOptionString = key => key instanceof Il2Cpp.String ? Option.fromNullOr(key.isNull() ? null : key.content) : Option.some(key.toString());
|
|
75
76
|
const readValueOption = key => this.containsKey(key) ? Option.some(this.get(key)) : Option.none();
|
|
76
|
-
return pipe(keys ?? this.keys, Array.filterMap(key => {
|
|
77
|
+
return Function.pipe(keys ?? this.keys, Array.filterMap(key => {
|
|
77
78
|
const maybeKey = readKeyOptionString(key);
|
|
78
79
|
const maybeValue = readValueOption(key);
|
|
79
80
|
const product = Option.product(maybeKey, maybeValue);
|
|
@@ -84,7 +85,10 @@ export class Dictionary extends Il2Cpp.Object {
|
|
|
84
85
|
static get class() {
|
|
85
86
|
return Il2Cpp.corlib.class("System.Collections.Generic.Dictionary`2");
|
|
86
87
|
}
|
|
87
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Lifts an Il2Cpp.Object holding a System.Collections.Generic.Dictionary
|
|
90
|
+
* instance to a Dictionary.
|
|
91
|
+
*/
|
|
88
92
|
static lift(object) {
|
|
89
93
|
return new Dictionary(object.handle);
|
|
90
94
|
}
|
|
@@ -168,7 +172,10 @@ export class List extends Il2Cpp.Object {
|
|
|
168
172
|
static get class() {
|
|
169
173
|
return Il2Cpp.corlib.class("System.Collections.Generic.List`1");
|
|
170
174
|
}
|
|
171
|
-
/**
|
|
175
|
+
/**
|
|
176
|
+
* Lifts an Il2Cpp.Object holding a System.Collections.Generic.List instance
|
|
177
|
+
* to a List.
|
|
178
|
+
*/
|
|
172
179
|
static lift(object) {
|
|
173
180
|
return new List(object.handle);
|
|
174
181
|
}
|
package/dist/Extensions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Extensions.js","names":[],"sources":["../src/Extensions.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;AAKA,OAAO,qBAAqB;AAE5B,
|
|
1
|
+
{"version":3,"file":"Extensions.js","names":[],"sources":["../src/Extensions.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
package/src/Assembly.ts
CHANGED
|
@@ -11,6 +11,7 @@ import * as Cache from "effect/Cache";
|
|
|
11
11
|
import * as Cause from "effect/Cause";
|
|
12
12
|
import * as Context from "effect/Context";
|
|
13
13
|
import * as Effect from "effect/Effect";
|
|
14
|
+
import * as Option from "effect/Option";
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* @since 1.0.0
|
|
@@ -33,10 +34,9 @@ export const assembly = (name: string): Effect.Effect<Il2Cpp.Assembly, never, ne
|
|
|
33
34
|
* @category Assembly
|
|
34
35
|
*/
|
|
35
36
|
export const tryAssembly = (name: string): Effect.Effect<Il2Cpp.Assembly, Cause.NoSuchElementError, never> =>
|
|
36
|
-
Effect.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}).pipe(Effect.flatMap(Effect.fromNullishOr));
|
|
37
|
+
Effect.sync(() => Option.fromNullishOr(Il2Cpp.domain.tryAssembly(name))).pipe(
|
|
38
|
+
Effect.flatMap(Effect.fromOption(() => new Cause.NoSuchElementError(`No assembly with name ${name}`)))
|
|
39
|
+
);
|
|
40
40
|
|
|
41
41
|
/**
|
|
42
42
|
* @since 1.0.0
|
package/src/Class.ts
CHANGED
|
@@ -7,11 +7,11 @@ import "frida-il2cpp-bridge";
|
|
|
7
7
|
|
|
8
8
|
import * as Cache from "effect/Cache";
|
|
9
9
|
import * as Cause from "effect/Cause";
|
|
10
|
-
import * as Data from "effect/Data";
|
|
11
10
|
import * as Effect from "effect/Effect";
|
|
12
11
|
import * as Equal from "effect/Equal";
|
|
13
12
|
import * as Function from "effect/Function";
|
|
14
13
|
import * as Hash from "effect/Hash";
|
|
14
|
+
import * as Option from "effect/Option";
|
|
15
15
|
|
|
16
16
|
import { CacheCapacity } from "./Assembly.ts";
|
|
17
17
|
|
|
@@ -23,14 +23,20 @@ export {
|
|
|
23
23
|
CacheCapacity,
|
|
24
24
|
} from "./Assembly.ts";
|
|
25
25
|
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
{
|
|
26
|
+
/**
|
|
27
|
+
* Cache keys identify il2cpp objects by their native handle rather than by
|
|
28
|
+
* reference, since frida-il2cpp-bridge can hand out distinct wrapper instances
|
|
29
|
+
* for the same underlying image/class.
|
|
30
|
+
*
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
class ImageNameKey implements Equal.Equal {
|
|
34
|
+
readonly image: Il2Cpp.Image;
|
|
35
|
+
readonly name: string;
|
|
36
|
+
constructor({ image, name }: { image: Il2Cpp.Image; name: string }) {
|
|
37
|
+
this.image = image;
|
|
38
|
+
this.name = name;
|
|
39
|
+
}
|
|
34
40
|
[Hash.symbol](): number {
|
|
35
41
|
return Hash.string(`${this.image.handle}:${this.name}`);
|
|
36
42
|
}
|
|
@@ -40,13 +46,13 @@ class ImageNameKey
|
|
|
40
46
|
}
|
|
41
47
|
|
|
42
48
|
/** @internal */
|
|
43
|
-
class ClassNameKey
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
class ClassNameKey implements Equal.Equal {
|
|
50
|
+
readonly klass: Il2Cpp.Class;
|
|
51
|
+
readonly name: string;
|
|
52
|
+
constructor({ klass, name }: { klass: Il2Cpp.Class; name: string }) {
|
|
53
|
+
this.klass = klass;
|
|
54
|
+
this.name = name;
|
|
55
|
+
}
|
|
50
56
|
[Hash.symbol](): number {
|
|
51
57
|
return Hash.string(`${this.klass.handle}:${this.name}`);
|
|
52
58
|
}
|
|
@@ -56,14 +62,23 @@ class ClassNameKey
|
|
|
56
62
|
}
|
|
57
63
|
|
|
58
64
|
/** @internal */
|
|
59
|
-
class MethodKey
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
class MethodKey implements Equal.Equal {
|
|
66
|
+
readonly klass: Il2Cpp.Class;
|
|
67
|
+
readonly name: string;
|
|
68
|
+
readonly parameterCount: number | undefined;
|
|
69
|
+
constructor({
|
|
70
|
+
klass,
|
|
71
|
+
name,
|
|
72
|
+
parameterCount,
|
|
73
|
+
}: {
|
|
74
|
+
klass: Il2Cpp.Class;
|
|
75
|
+
name: string;
|
|
76
|
+
parameterCount: number | undefined;
|
|
77
|
+
}) {
|
|
78
|
+
this.klass = klass;
|
|
79
|
+
this.name = name;
|
|
80
|
+
this.parameterCount = parameterCount;
|
|
81
|
+
}
|
|
67
82
|
[Hash.symbol](): number {
|
|
68
83
|
return Hash.string(`${this.klass.handle}:${this.name}:${this.parameterCount}`);
|
|
69
84
|
}
|
|
@@ -102,10 +117,9 @@ export const tryClass = Function.dual<
|
|
|
102
117
|
(name: string) => (image: Il2Cpp.Image) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>,
|
|
103
118
|
(image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>
|
|
104
119
|
>(2, (image: Il2Cpp.Image, name: string) =>
|
|
105
|
-
Effect.
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}).pipe(Effect.flatMap(Effect.fromNullishOr))
|
|
120
|
+
Effect.sync(() => Option.fromNullishOr(image.tryClass(name))).pipe(
|
|
121
|
+
Effect.flatMap(Effect.fromOption(() => new Cause.NoSuchElementError(`No class with name ${name}`)))
|
|
122
|
+
)
|
|
109
123
|
);
|
|
110
124
|
|
|
111
125
|
/**
|
|
@@ -197,10 +211,9 @@ export const tryField = Function.dual<
|
|
|
197
211
|
klass: Il2Cpp.Class,
|
|
198
212
|
name: string
|
|
199
213
|
): Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementError, never> =>
|
|
200
|
-
Effect.
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
}).pipe(Effect.flatMap(Effect.fromNullishOr))
|
|
214
|
+
Effect.sync(() => Option.fromNullishOr(klass.tryField<T>(name))).pipe(
|
|
215
|
+
Effect.flatMap(Effect.fromOption(() => new Cause.NoSuchElementError(`No field with name ${name}`)))
|
|
216
|
+
)
|
|
204
217
|
);
|
|
205
218
|
|
|
206
219
|
/**
|
|
@@ -326,10 +339,18 @@ export const tryMethod = Function.dual<
|
|
|
326
339
|
name: string,
|
|
327
340
|
parameterCount?: number | undefined
|
|
328
341
|
): Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementError, never> =>
|
|
329
|
-
Effect.
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
342
|
+
Effect.sync(() => Option.fromNullishOr(klass.tryMethod<T>(name, parameterCount))).pipe(
|
|
343
|
+
Effect.flatMap(
|
|
344
|
+
Effect.fromOption(
|
|
345
|
+
() =>
|
|
346
|
+
new Cause.NoSuchElementError(
|
|
347
|
+
parameterCount === undefined
|
|
348
|
+
? `No method with name ${name}`
|
|
349
|
+
: `No method with name ${name} and ${parameterCount} parameters`
|
|
350
|
+
)
|
|
351
|
+
)
|
|
352
|
+
)
|
|
353
|
+
)
|
|
333
354
|
);
|
|
334
355
|
|
|
335
356
|
/**
|
|
@@ -413,10 +434,9 @@ export const tryNested = Function.dual<
|
|
|
413
434
|
(name: string) => (klass: Il2Cpp.Class) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>,
|
|
414
435
|
(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementError, never>
|
|
415
436
|
>(2, (klass: Il2Cpp.Class, name: string) =>
|
|
416
|
-
Effect.
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
}).pipe(Effect.flatMap(Effect.fromNullishOr))
|
|
437
|
+
Effect.sync(() => Option.fromNullishOr(klass.tryNested(name))).pipe(
|
|
438
|
+
Effect.flatMap(Effect.fromOption(() => new Cause.NoSuchElementError(`No nested class with name ${name}`)))
|
|
439
|
+
)
|
|
420
440
|
);
|
|
421
441
|
|
|
422
442
|
/**
|
package/src/Extensions.ts
CHANGED
|
@@ -5,7 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
import "frida-il2cpp-bridge";
|
|
7
7
|
|
|
8
|
-
import
|
|
8
|
+
import * as Array from "effect/Array";
|
|
9
|
+
import * as Function from "effect/Function";
|
|
10
|
+
import * as Option from "effect/Option";
|
|
11
|
+
import * as Record from "effect/Record";
|
|
12
|
+
import * as Result from "effect/Result";
|
|
9
13
|
|
|
10
14
|
/**
|
|
11
15
|
* @since 1.0.0
|
|
@@ -82,17 +86,14 @@ export class Dictionary<
|
|
|
82
86
|
}
|
|
83
87
|
|
|
84
88
|
public *[Symbol.iterator](): IterableIterator<[K, V]> {
|
|
85
|
-
|
|
86
|
-
for (let i = 0; i < this.length; i++) {
|
|
87
|
-
yield entries[i];
|
|
88
|
-
}
|
|
89
|
+
yield* this.entries;
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
public override toString(): string {
|
|
92
|
-
return this.isNull() ? "null" : `{${
|
|
93
|
+
return this.isNull() ? "null" : `{${this.entries.map(([k, v]) => `${k}: ${v}`).join(", ")}}`;
|
|
93
94
|
}
|
|
94
95
|
|
|
95
|
-
public toRecord(keys?:
|
|
96
|
+
public toRecord(keys?: ReadonlyArray<K> | undefined): Record<string, V> {
|
|
96
97
|
const readKeyOptionString = (key: K): Option.Option<string> =>
|
|
97
98
|
key instanceof Il2Cpp.String
|
|
98
99
|
? Option.fromNullOr(key.isNull() ? null : key.content)
|
|
@@ -101,7 +102,7 @@ export class Dictionary<
|
|
|
101
102
|
const readValueOption = (key: K): Option.Option<V> =>
|
|
102
103
|
this.containsKey(key) ? Option.some(this.get(key)) : Option.none();
|
|
103
104
|
|
|
104
|
-
return pipe(
|
|
105
|
+
return Function.pipe(
|
|
105
106
|
keys ?? this.keys,
|
|
106
107
|
Array.filterMap((key) => {
|
|
107
108
|
const maybeKey = readKeyOptionString(key);
|
|
@@ -118,7 +119,10 @@ export class Dictionary<
|
|
|
118
119
|
return Il2Cpp.corlib.class("System.Collections.Generic.Dictionary`2");
|
|
119
120
|
}
|
|
120
121
|
|
|
121
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Lifts an Il2Cpp.Object holding a System.Collections.Generic.Dictionary
|
|
124
|
+
* instance to a Dictionary.
|
|
125
|
+
*/
|
|
122
126
|
public static lift<
|
|
123
127
|
K extends Il2Cpp.Field.Type = Il2Cpp.Field.Type,
|
|
124
128
|
V extends Il2Cpp.Field.Type = Il2Cpp.Field.Type,
|
|
@@ -229,7 +233,10 @@ export class List<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type> extends Il2Cp
|
|
|
229
233
|
return Il2Cpp.corlib.class("System.Collections.Generic.List`1");
|
|
230
234
|
}
|
|
231
235
|
|
|
232
|
-
/**
|
|
236
|
+
/**
|
|
237
|
+
* Lifts an Il2Cpp.Object holding a System.Collections.Generic.List instance
|
|
238
|
+
* to a List.
|
|
239
|
+
*/
|
|
233
240
|
public static lift<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(object: Il2Cpp.Object): List<T> {
|
|
234
241
|
return new List<T>(object.handle);
|
|
235
242
|
}
|
|
@@ -237,7 +244,7 @@ export class List<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type> extends Il2Cp
|
|
|
237
244
|
/** Creates a new list with the given elements. */
|
|
238
245
|
public static of<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
239
246
|
klass: Il2Cpp.Class,
|
|
240
|
-
elements:
|
|
247
|
+
elements: ReadonlyArray<T> | undefined = []
|
|
241
248
|
): List<T> {
|
|
242
249
|
const list = new List<T>(List.class.inflate(klass).alloc());
|
|
243
250
|
for (const element of elements) {
|