@efffrida/il2cpp-bridge 0.0.19 → 0.0.21
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 +10 -0
- package/dist/Assembly.d.ts.map +1 -1
- package/dist/Assembly.js +11 -0
- package/dist/Assembly.js.map +1 -1
- package/dist/Class.d.ts +54 -4
- package/dist/Class.d.ts.map +1 -1
- package/dist/Class.js +54 -1
- package/dist/Class.js.map +1 -1
- package/dist/Equivalence.d.ts +37 -0
- package/dist/Equivalence.d.ts.map +1 -0
- package/dist/Equivalence.js +37 -0
- package/dist/Equivalence.js.map +1 -0
- package/dist/Extensions.d.ts +85 -0
- package/dist/Extensions.d.ts.map +1 -0
- package/dist/Extensions.js +177 -0
- package/dist/Extensions.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/Assembly.ts +19 -0
- package/src/Class.ts +222 -20
- package/src/Equivalence.ts +44 -0
- package/src/Extensions.ts +239 -0
- package/src/index.ts +12 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Extensions.js","names":["Array","Option","Record","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","fromEntries","filterMap","product","String","fromNullable","content","some","none","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":[]}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,16 @@ export * as Assembly from "./Assembly.ts";
|
|
|
11
11
|
* @category Class
|
|
12
12
|
*/
|
|
13
13
|
export * as Class from "./Class.ts";
|
|
14
|
+
/**
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
* @category Equivalence
|
|
17
|
+
*/
|
|
18
|
+
export * as Equivalence from "./Equivalence.ts";
|
|
19
|
+
/**
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
* @category Extensions
|
|
22
|
+
*/
|
|
23
|
+
export * as Extensions from "./Extensions.ts";
|
|
14
24
|
/**
|
|
15
25
|
* @since 1.0.0
|
|
16
26
|
* @category FridaIl2cppBridge
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;GAGG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;;GAGG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAEzC;;;GAGG;AACH,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAEnC;;;GAGG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;;GAGG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;;GAGG;AACH,OAAO,KAAK,iBAAiB,MAAM,wBAAwB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,16 @@ export * as Assembly from "./Assembly.js";
|
|
|
11
11
|
* @category Class
|
|
12
12
|
*/
|
|
13
13
|
export * as Class from "./Class.js";
|
|
14
|
+
/**
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
* @category Equivalence
|
|
17
|
+
*/
|
|
18
|
+
export * as Equivalence from "./Equivalence.js";
|
|
19
|
+
/**
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
* @category Extensions
|
|
22
|
+
*/
|
|
23
|
+
export * as Extensions from "./Extensions.js";
|
|
14
24
|
/**
|
|
15
25
|
* @since 1.0.0
|
|
16
26
|
* @category FridaIl2cppBridge
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["Assembly","Class","FridaIl2cppBridge"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;;;;AAIA,OAAO,KAAKA,QAAQ,MAAM,eAAe;AAEzC;;;;AAIA,OAAO,KAAKC,KAAK,MAAM,YAAY;AAEnC;;;;AAIA,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["Assembly","Class","Equivalence","Extensions","FridaIl2cppBridge"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;;;;AAIA,OAAO,KAAKA,QAAQ,MAAM,eAAe;AAEzC;;;;AAIA,OAAO,KAAKC,KAAK,MAAM,YAAY;AAEnC;;;;AAIA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;;AAIA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;;AAIA,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB","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.21",
|
|
4
4
|
"description": "effect-ts frida-il2cpp-bridge",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"frida.re",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"effect": "3.19.13",
|
|
41
41
|
"vitest": "4.0.16",
|
|
42
42
|
"@efffrida/polyfills": "0.0.2",
|
|
43
|
-
"@efffrida/vitest-pool": "0.0.
|
|
43
|
+
"@efffrida/vitest-pool": "0.0.8"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"effect": "3.19.13"
|
package/src/Assembly.ts
CHANGED
|
@@ -9,6 +9,7 @@ import type * as Scope from "effect/Scope";
|
|
|
9
9
|
|
|
10
10
|
import * as Cause from "effect/Cause";
|
|
11
11
|
import * as Effect from "effect/Effect";
|
|
12
|
+
import * as Equivalence from "effect/Equivalence";
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* @since 1.0.0
|
|
@@ -27,6 +28,24 @@ export const tryAssembly = (name: string): Effect.Effect<Il2Cpp.Assembly, Cause.
|
|
|
27
28
|
catch: () => new Cause.NoSuchElementException(`No assembly with name ${name}`),
|
|
28
29
|
}).pipe(Effect.flatMap(Effect.fromNullable));
|
|
29
30
|
|
|
31
|
+
/**
|
|
32
|
+
* @since 1.0.0
|
|
33
|
+
* @category Assembly
|
|
34
|
+
*/
|
|
35
|
+
export const assemblyCached: Effect.Effect<typeof assembly, never, never> = Effect.cachedFunction(
|
|
36
|
+
assembly,
|
|
37
|
+
Equivalence.string
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
* @category Assembly
|
|
43
|
+
*/
|
|
44
|
+
export const tryAssemblyCached: Effect.Effect<typeof tryAssembly, never, never> = Effect.cachedFunction(
|
|
45
|
+
tryAssembly,
|
|
46
|
+
Equivalence.string
|
|
47
|
+
);
|
|
48
|
+
|
|
30
49
|
/**
|
|
31
50
|
* @since 1.0.0
|
|
32
51
|
* @category Assembly
|
package/src/Class.ts
CHANGED
|
@@ -7,7 +7,11 @@ import "frida-il2cpp-bridge";
|
|
|
7
7
|
|
|
8
8
|
import * as Cause from "effect/Cause";
|
|
9
9
|
import * as Effect from "effect/Effect";
|
|
10
|
+
import * as Equivalence from "effect/Equivalence";
|
|
10
11
|
import * as Function from "effect/Function";
|
|
12
|
+
import * as Tuple from "effect/Tuple";
|
|
13
|
+
|
|
14
|
+
import * as Il2CppEquivalence from "./Equivalence.ts";
|
|
11
15
|
|
|
12
16
|
/**
|
|
13
17
|
* @since 1.0.0
|
|
@@ -40,29 +44,134 @@ export const tryClass = Function.dual<
|
|
|
40
44
|
}).pipe(Effect.flatMap(Effect.fromNullable))
|
|
41
45
|
);
|
|
42
46
|
|
|
47
|
+
/**
|
|
48
|
+
* @since 1.0.0
|
|
49
|
+
* @category Class
|
|
50
|
+
*/
|
|
51
|
+
export const classCached: Effect.Effect<
|
|
52
|
+
(image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, never, never>,
|
|
53
|
+
never,
|
|
54
|
+
never
|
|
55
|
+
> = Effect.map(
|
|
56
|
+
Effect.cachedFunction(Function.tupled(class_), Equivalence.tuple(Il2CppEquivalence.image, Equivalence.string)),
|
|
57
|
+
Function.untupled
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @since 1.0.0
|
|
62
|
+
* @category Class
|
|
63
|
+
*/
|
|
64
|
+
export const tryClassCached: Effect.Effect<
|
|
65
|
+
(image: Il2Cpp.Image, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementException, never>,
|
|
66
|
+
never,
|
|
67
|
+
never
|
|
68
|
+
> = Effect.map(
|
|
69
|
+
Effect.cachedFunction(Function.tupled(tryClass), Equivalence.tuple(Il2CppEquivalence.image, Equivalence.string)),
|
|
70
|
+
Function.untupled
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @since 1.0.0
|
|
75
|
+
* @category Class
|
|
76
|
+
*/
|
|
77
|
+
export const fields = (klass: Il2Cpp.Class): Effect.Effect<ReadonlyArray<Il2Cpp.Field>, never, never> =>
|
|
78
|
+
Effect.sync(() => klass.fields);
|
|
79
|
+
|
|
43
80
|
/**
|
|
44
81
|
* @since 1.0.0
|
|
45
82
|
* @category Class
|
|
46
83
|
*/
|
|
47
84
|
export const field = Function.dual<
|
|
48
|
-
(
|
|
49
|
-
|
|
50
|
-
|
|
85
|
+
(
|
|
86
|
+
name: string
|
|
87
|
+
) => <T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
88
|
+
klass: Il2Cpp.Class
|
|
89
|
+
) => Effect.Effect<Il2Cpp.Field<T>, never, never>,
|
|
90
|
+
<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
91
|
+
klass: Il2Cpp.Class,
|
|
92
|
+
name: string
|
|
93
|
+
) => Effect.Effect<Il2Cpp.Field<T>, never, never>
|
|
94
|
+
>(
|
|
95
|
+
2,
|
|
96
|
+
<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
97
|
+
klass: Il2Cpp.Class,
|
|
98
|
+
name: string
|
|
99
|
+
): Effect.Effect<Il2Cpp.Field<T>, never, never> => Effect.sync(() => klass.field<T>(name))
|
|
100
|
+
);
|
|
51
101
|
|
|
52
102
|
/**
|
|
53
103
|
* @since 1.0.0
|
|
54
104
|
* @category Class
|
|
55
105
|
*/
|
|
56
106
|
export const tryField = Function.dual<
|
|
57
|
-
(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
107
|
+
(
|
|
108
|
+
name: string
|
|
109
|
+
) => <T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
110
|
+
klass: Il2Cpp.Class
|
|
111
|
+
) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementException, never>,
|
|
112
|
+
<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
113
|
+
klass: Il2Cpp.Class,
|
|
114
|
+
name: string
|
|
115
|
+
) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementException, never>
|
|
116
|
+
>(
|
|
117
|
+
2,
|
|
118
|
+
<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
119
|
+
klass: Il2Cpp.Class,
|
|
120
|
+
name: string
|
|
121
|
+
): Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementException, never> =>
|
|
122
|
+
Effect.try({
|
|
123
|
+
try: () => klass.field<T>(name),
|
|
124
|
+
catch: () => new Cause.NoSuchElementException(`No field with name ${name}`),
|
|
125
|
+
}).pipe(Effect.flatMap(Effect.fromNullable))
|
|
126
|
+
);
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @since 1.0.0
|
|
130
|
+
* @category Class
|
|
131
|
+
*/
|
|
132
|
+
export const fieldCached: Effect.Effect<
|
|
133
|
+
<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
134
|
+
klass: Il2Cpp.Class,
|
|
135
|
+
name: string
|
|
136
|
+
) => Effect.Effect<Il2Cpp.Field<T>, never, never>,
|
|
137
|
+
never,
|
|
138
|
+
never
|
|
139
|
+
> = Effect.map(
|
|
140
|
+
Effect.cachedFunction(Function.tupled(field), Equivalence.tuple(Il2CppEquivalence.class, Equivalence.string)),
|
|
141
|
+
(tupled) =>
|
|
142
|
+
Function.untupled(tupled) as <T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
143
|
+
klass: Il2Cpp.Class,
|
|
144
|
+
name: string
|
|
145
|
+
) => Effect.Effect<Il2Cpp.Field<T>, never, never>
|
|
64
146
|
);
|
|
65
147
|
|
|
148
|
+
/**
|
|
149
|
+
* @since 1.0.0
|
|
150
|
+
* @category Class
|
|
151
|
+
*/
|
|
152
|
+
export const tryFieldCached: Effect.Effect<
|
|
153
|
+
<T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
154
|
+
klass: Il2Cpp.Class,
|
|
155
|
+
name: string
|
|
156
|
+
) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementException, never>,
|
|
157
|
+
never,
|
|
158
|
+
never
|
|
159
|
+
> = Effect.map(
|
|
160
|
+
Effect.cachedFunction(Function.tupled(tryField), Equivalence.tuple(Il2CppEquivalence.class, Equivalence.string)),
|
|
161
|
+
(tupled) =>
|
|
162
|
+
Function.untupled(tupled) as <T extends Il2Cpp.Field.Type = Il2Cpp.Field.Type>(
|
|
163
|
+
klass: Il2Cpp.Class,
|
|
164
|
+
name: string
|
|
165
|
+
) => Effect.Effect<Il2Cpp.Field<T>, Cause.NoSuchElementException, never>
|
|
166
|
+
);
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @since 1.0.0
|
|
170
|
+
* @category Class
|
|
171
|
+
*/
|
|
172
|
+
export const methods = (klass: Il2Cpp.Class): Effect.Effect<ReadonlyArray<Il2Cpp.Method>, never, never> =>
|
|
173
|
+
Effect.sync(() => klass.methods);
|
|
174
|
+
|
|
66
175
|
/**
|
|
67
176
|
* @since 1.0.0
|
|
68
177
|
* @category Class
|
|
@@ -71,16 +180,21 @@ export const method = Function.dual<
|
|
|
71
180
|
(
|
|
72
181
|
name: string,
|
|
73
182
|
parameterCount?: number | undefined
|
|
74
|
-
) =>
|
|
75
|
-
|
|
183
|
+
) => <T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
184
|
+
klass: Il2Cpp.Class
|
|
185
|
+
) => Effect.Effect<Il2Cpp.Method<T>, never, never>,
|
|
186
|
+
<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
76
187
|
klass: Il2Cpp.Class,
|
|
77
188
|
name: string,
|
|
78
189
|
parameterCount?: number | undefined
|
|
79
|
-
) => Effect.Effect<Il2Cpp.Method
|
|
190
|
+
) => Effect.Effect<Il2Cpp.Method<T>, never, never>
|
|
80
191
|
>(
|
|
81
192
|
(_arguments) => typeof _arguments[1] === "string",
|
|
82
|
-
|
|
83
|
-
|
|
193
|
+
<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
194
|
+
klass: Il2Cpp.Class,
|
|
195
|
+
name: string,
|
|
196
|
+
parameterCount?: number | undefined
|
|
197
|
+
): Effect.Effect<Il2Cpp.Method<T>, never, never> => Effect.sync(() => klass.method<T>(name, parameterCount))
|
|
84
198
|
);
|
|
85
199
|
|
|
86
200
|
/**
|
|
@@ -91,21 +205,83 @@ export const tryMethod = Function.dual<
|
|
|
91
205
|
(
|
|
92
206
|
name: string,
|
|
93
207
|
parameterCount?: number | undefined
|
|
94
|
-
) =>
|
|
95
|
-
|
|
208
|
+
) => <T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
209
|
+
klass: Il2Cpp.Class
|
|
210
|
+
) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementException, never>,
|
|
211
|
+
<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
96
212
|
klass: Il2Cpp.Class,
|
|
97
213
|
name: string,
|
|
98
214
|
parameterCount?: number | undefined
|
|
99
|
-
) => Effect.Effect<Il2Cpp.Method
|
|
215
|
+
) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementException, never>
|
|
100
216
|
>(
|
|
101
217
|
(_arguments) => typeof _arguments[1] === "string",
|
|
102
|
-
|
|
218
|
+
<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
219
|
+
klass: Il2Cpp.Class,
|
|
220
|
+
name: string,
|
|
221
|
+
parameterCount?: number | undefined
|
|
222
|
+
): Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementException, never> =>
|
|
103
223
|
Effect.try({
|
|
104
|
-
try: () => klass.tryMethod(name, parameterCount),
|
|
224
|
+
try: () => klass.tryMethod<T>(name, parameterCount),
|
|
105
225
|
catch: () => new Cause.NoSuchElementException(`No method with name ${name}`),
|
|
106
226
|
}).pipe(Effect.flatMap(Effect.fromNullable))
|
|
107
227
|
);
|
|
108
228
|
|
|
229
|
+
/**
|
|
230
|
+
* @since 1.0.0
|
|
231
|
+
* @category Class
|
|
232
|
+
*/
|
|
233
|
+
export const methodCached: Effect.Effect<
|
|
234
|
+
<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
235
|
+
klass: Il2Cpp.Class,
|
|
236
|
+
name: string,
|
|
237
|
+
parameterCount?: number | undefined
|
|
238
|
+
) => Effect.Effect<Il2Cpp.Method<T>, never, never>,
|
|
239
|
+
never,
|
|
240
|
+
never
|
|
241
|
+
> = Effect.map(
|
|
242
|
+
Effect.cachedFunction(
|
|
243
|
+
Function.tupled(method),
|
|
244
|
+
Equivalence.mapInput(
|
|
245
|
+
Equivalence.tuple(Il2CppEquivalence.class, Equivalence.string, Equivalence.strict<number | undefined>()),
|
|
246
|
+
(tuple) => Tuple.make(tuple[0], tuple[1], tuple[2] ?? undefined)
|
|
247
|
+
)
|
|
248
|
+
),
|
|
249
|
+
(tupled) =>
|
|
250
|
+
Function.untupled(tupled) as <T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
251
|
+
klass: Il2Cpp.Class,
|
|
252
|
+
name: string,
|
|
253
|
+
parameterCount?: number | undefined
|
|
254
|
+
) => Effect.Effect<Il2Cpp.Method<T>, never, never>
|
|
255
|
+
);
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* @since 1.0.0
|
|
259
|
+
* @category Class
|
|
260
|
+
*/
|
|
261
|
+
export const tryMethodCached: Effect.Effect<
|
|
262
|
+
<T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
263
|
+
klass: Il2Cpp.Class,
|
|
264
|
+
name: string,
|
|
265
|
+
parameterCount?: number | undefined
|
|
266
|
+
) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementException, never>,
|
|
267
|
+
never,
|
|
268
|
+
never
|
|
269
|
+
> = Effect.map(
|
|
270
|
+
Effect.cachedFunction(
|
|
271
|
+
Function.tupled(tryMethod),
|
|
272
|
+
Equivalence.mapInput(
|
|
273
|
+
Equivalence.tuple(Il2CppEquivalence.class, Equivalence.string, Equivalence.strict<number | undefined>()),
|
|
274
|
+
(tuple) => Tuple.make(tuple[0], tuple[1], tuple[2] ?? undefined)
|
|
275
|
+
)
|
|
276
|
+
),
|
|
277
|
+
(tupled) =>
|
|
278
|
+
Function.untupled(tupled) as <T extends Il2Cpp.Method.ReturnType = Il2Cpp.Method.ReturnType>(
|
|
279
|
+
klass: Il2Cpp.Class,
|
|
280
|
+
name: string,
|
|
281
|
+
parameterCount?: number | undefined
|
|
282
|
+
) => Effect.Effect<Il2Cpp.Method<T>, Cause.NoSuchElementException, never>
|
|
283
|
+
);
|
|
284
|
+
|
|
109
285
|
/**
|
|
110
286
|
* @since 1.0.0
|
|
111
287
|
* @category Class
|
|
@@ -128,3 +304,29 @@ export const tryNested = Function.dual<
|
|
|
128
304
|
catch: () => new Cause.NoSuchElementException(`No nested class with name ${name}`),
|
|
129
305
|
}).pipe(Effect.flatMap(Effect.fromNullable))
|
|
130
306
|
);
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* @since 1.0.0
|
|
310
|
+
* @category Class
|
|
311
|
+
*/
|
|
312
|
+
export const nestedCached: Effect.Effect<
|
|
313
|
+
(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, never, never>,
|
|
314
|
+
never,
|
|
315
|
+
never
|
|
316
|
+
> = Effect.map(
|
|
317
|
+
Effect.cachedFunction(Function.tupled(nested), Equivalence.tuple(Il2CppEquivalence.class, Equivalence.string)),
|
|
318
|
+
Function.untupled
|
|
319
|
+
);
|
|
320
|
+
|
|
321
|
+
/**
|
|
322
|
+
* @since 1.0.0
|
|
323
|
+
* @category Class
|
|
324
|
+
*/
|
|
325
|
+
export const tryNestedCached: Effect.Effect<
|
|
326
|
+
(klass: Il2Cpp.Class, name: string) => Effect.Effect<Il2Cpp.Class, Cause.NoSuchElementException, never>,
|
|
327
|
+
never,
|
|
328
|
+
never
|
|
329
|
+
> = Effect.map(
|
|
330
|
+
Effect.cachedFunction(Function.tupled(tryNested), Equivalence.tuple(Il2CppEquivalence.class, Equivalence.string)),
|
|
331
|
+
Function.untupled
|
|
332
|
+
);
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
* @category Equivalence
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import * as Equivalence from "effect/Equivalence";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
* @category Equivalence
|
|
11
|
+
*/
|
|
12
|
+
export const nativePointer = Equivalence.make<NativePointer>((self, that) => self.equals(that));
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @since 1.0.0
|
|
16
|
+
* @category Equivalence
|
|
17
|
+
*/
|
|
18
|
+
export const image = Equivalence.mapInput(nativePointer, (image: Il2Cpp.Image) => image.handle);
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @since 1.0.0
|
|
22
|
+
* @category Equivalence
|
|
23
|
+
*/
|
|
24
|
+
const class_ = Equivalence.mapInput(nativePointer, (klass: Il2Cpp.Class) => klass.handle);
|
|
25
|
+
|
|
26
|
+
export {
|
|
27
|
+
/**
|
|
28
|
+
* @since 1.0.0
|
|
29
|
+
* @category Equivalence
|
|
30
|
+
*/
|
|
31
|
+
class_ as class,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @since 1.0.0
|
|
36
|
+
* @category Equivalence
|
|
37
|
+
*/
|
|
38
|
+
export const field = Equivalence.mapInput(nativePointer, (field: Il2Cpp.Field) => field.handle);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @since 1.0.0
|
|
42
|
+
* @category Equivalence
|
|
43
|
+
*/
|
|
44
|
+
export const method = Equivalence.mapInput(nativePointer, (method: Il2Cpp.Method) => method.handle);
|