@efffrida/rpc 0.0.2 → 0.0.4
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/FridaRpcClient/package.json +2 -2
- package/FridaRpcServer/package.json +2 -2
- package/dist/cjs/FridaRpcClient.js +0 -4
- package/dist/cjs/FridaRpcClient.js.map +1 -1
- package/dist/cjs/FridaRpcServer.js +24 -20
- package/dist/cjs/FridaRpcServer.js.map +1 -1
- package/dist/dts/FridaRpcClient.d.ts.map +1 -1
- package/dist/dts/FridaRpcServer.d.ts +1 -12
- package/dist/dts/FridaRpcServer.d.ts.map +1 -1
- package/dist/esm/FridaRpcClient.js +0 -4
- package/dist/esm/FridaRpcClient.js.map +1 -1
- package/dist/esm/FridaRpcServer.js +24 -20
- package/dist/esm/FridaRpcServer.js.map +1 -1
- package/index/package.json +6 -0
- package/package.json +13 -5
- package/src/FridaRpcClient.ts +0 -6
- package/src/FridaRpcServer.ts +36 -29
|
@@ -36,10 +36,6 @@ const makeProtocolFrida = (script, options) => RpcClient.Protocol.make(Effect.fn
|
|
|
36
36
|
return Effect.void;
|
|
37
37
|
}
|
|
38
38
|
const parser = serialization.unsafeMake();
|
|
39
|
-
if (!serialization.supportsBigInt) {
|
|
40
|
-
const mutable = request;
|
|
41
|
-
mutable.id = request.id.toString();
|
|
42
|
-
}
|
|
43
39
|
const schema = Schema.Union(Schema.String, Schema.Uint8Array);
|
|
44
40
|
const encode = Function.compose(parser.encode, Schema.encode(schema));
|
|
45
41
|
const decode = Function.compose(Schema.decodeUnknownSync(schema), parser.decode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FridaRpcClient.js","names":["RpcClient","_interopRequireWildcard","require","RpcSerialization","FridaScript","Effect","Function","Layer","Predicate","Schema","Stream","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","makeProtocolFrida","script","options","Protocol","make","fnUntraced","writeResponse","serialization","exportName","rpcIsAvailableWhen","send","request","_tag","void","parser","unsafeMake","
|
|
1
|
+
{"version":3,"file":"FridaRpcClient.js","names":["RpcClient","_interopRequireWildcard","require","RpcSerialization","FridaScript","Effect","Function","Layer","Predicate","Schema","Stream","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","makeProtocolFrida","script","options","Protocol","make","fnUntraced","writeResponse","serialization","exportName","rpcIsAvailableWhen","send","request","_tag","void","parser","unsafeMake","schema","Union","String","Uint8Array","encode","compose","decode","decodeUnknownSync","pipe","flatMap","callExport","orDie","incoming","responses","length","whileLoop","while","body","step","constVoid","defect","isNotUndefined","stream","map","message","filter","isString","takeUntil","runDrain","supportsAck","supportsTransferables","exports","layerProtocolFrida","effect"],"sources":["../../src/FridaRpcClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -8,12 +8,13 @@ var RpcMessage = _interopRequireWildcard(require("@effect/rpc/RpcMessage"));
|
|
|
8
8
|
var RpcSerialization = _interopRequireWildcard(require("@effect/rpc/RpcSerialization"));
|
|
9
9
|
var RpcServer = _interopRequireWildcard(require("@effect/rpc/RpcServer"));
|
|
10
10
|
var Array = _interopRequireWildcard(require("effect/Array"));
|
|
11
|
-
var
|
|
11
|
+
var Chunk = _interopRequireWildcard(require("effect/Chunk"));
|
|
12
12
|
var Effect = _interopRequireWildcard(require("effect/Effect"));
|
|
13
13
|
var Function = _interopRequireWildcard(require("effect/Function"));
|
|
14
14
|
var Layer = _interopRequireWildcard(require("effect/Layer"));
|
|
15
15
|
var Mailbox = _interopRequireWildcard(require("effect/Mailbox"));
|
|
16
16
|
var Predicate = _interopRequireWildcard(require("effect/Predicate"));
|
|
17
|
+
var Queue = _interopRequireWildcard(require("effect/Queue"));
|
|
17
18
|
var Runtime = _interopRequireWildcard(require("effect/Runtime"));
|
|
18
19
|
var Schema = _interopRequireWildcard(require("effect/Schema"));
|
|
19
20
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
@@ -40,30 +41,17 @@ const makeProtocolFrida = exports.makeProtocolFrida = /*#__PURE__*/Effect.gen(fu
|
|
|
40
41
|
const rpcExport = async function (request) {
|
|
41
42
|
const id = clientId++;
|
|
42
43
|
const parser = serialization.unsafeMake();
|
|
43
|
-
const chunks = Array.empty();
|
|
44
|
-
const deferred = await Runtime.runPromise(runtime, Deferred.make());
|
|
45
44
|
const schema = Schema.Union(Schema.String, Schema.Uint8Array);
|
|
46
45
|
const encode = Function.compose(parser.encode, Schema.encodeSync(schema));
|
|
47
46
|
const decode = Function.compose(Schema.decodeUnknownSync(schema), parser.decode);
|
|
47
|
+
const latch = await Effect.makeLatch(false).pipe(Runtime.runPromise(runtime));
|
|
48
|
+
const queue = await Queue.unbounded().pipe(Runtime.runPromise(runtime));
|
|
49
|
+
// When the implementation is done, do this with it's response
|
|
48
50
|
clients.set(id, {
|
|
49
51
|
end: Effect.void,
|
|
50
|
-
write: response =>
|
|
51
|
-
try {
|
|
52
|
-
if (!serialization.supportsBigInt && "requestId" in response) {
|
|
53
|
-
const mutable = response;
|
|
54
|
-
mutable.requestId = mutable.requestId.toString();
|
|
55
|
-
}
|
|
56
|
-
chunks.push(encode(response));
|
|
57
|
-
if (Predicate.isTagged(response, "Chunk")) return Effect.void;
|
|
58
|
-
const final = Predicate.isString(chunks[0]) ? chunks.join("") : Array.flatten(chunks);
|
|
59
|
-
return Deferred.succeed(deferred, final);
|
|
60
|
-
} catch (cause) {
|
|
61
|
-
const message = RpcMessage.ResponseDefectEncoded(cause);
|
|
62
|
-
const encoded = encode(message);
|
|
63
|
-
return Deferred.succeed(deferred, encoded);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
52
|
+
write: response => Effect.andThen(queue.offer(response), Predicate.isTagged(response, "Chunk") ? Effect.void : latch.open)
|
|
66
53
|
});
|
|
54
|
+
// Parse the request and send it to the implementation
|
|
67
55
|
try {
|
|
68
56
|
const decoded = decode(request);
|
|
69
57
|
if (decoded.length === 0) return "";
|
|
@@ -78,7 +66,23 @@ const makeProtocolFrida = exports.makeProtocolFrida = /*#__PURE__*/Effect.gen(fu
|
|
|
78
66
|
const encoded = encode(message);
|
|
79
67
|
return Promise.resolve(encoded);
|
|
80
68
|
}
|
|
81
|
-
|
|
69
|
+
// Wait for the implementation to respond
|
|
70
|
+
const responses = await latch.await.pipe(Effect.andThen(queue.takeAll)).pipe(Effect.tap(queue.shutdown)).pipe(Effect.map(Chunk.toReadonlyArray)).pipe(Runtime.runPromise(runtime));
|
|
71
|
+
// Encode the responses
|
|
72
|
+
const chunks = [];
|
|
73
|
+
for (const responseMessage of responses) {
|
|
74
|
+
try {
|
|
75
|
+
const encoded = encode(responseMessage);
|
|
76
|
+
chunks.push(encoded);
|
|
77
|
+
} catch (cause) {
|
|
78
|
+
const message = RpcMessage.ResponseDefectEncoded(cause);
|
|
79
|
+
const encoded = encode(message);
|
|
80
|
+
return Promise.resolve(encoded);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Concatenate the responses
|
|
84
|
+
const final = Predicate.isString(chunks[0]) ? chunks.join("") : Array.flatten(chunks);
|
|
85
|
+
return Promise.resolve(final);
|
|
82
86
|
};
|
|
83
87
|
const protocol = yield* RpcServer.Protocol.make(writeRequest_ => {
|
|
84
88
|
writeRequest = writeRequest_;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FridaRpcServer.js","names":["RpcMessage","_interopRequireWildcard","require","RpcSerialization","RpcServer","Array","
|
|
1
|
+
{"version":3,"file":"FridaRpcServer.js","names":["RpcMessage","_interopRequireWildcard","require","RpcSerialization","RpcServer","Array","Chunk","Effect","Function","Layer","Mailbox","Predicate","Queue","Runtime","Schema","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","makeProtocolFrida","exports","gen","runtime","disconnects","make","serialization","clientId","clients","Map","writeRequest","rpcExport","request","id","parser","unsafeMake","schema","Union","String","Uint8Array","encode","compose","encodeSync","decode","decodeUnknownSync","latch","makeLatch","pipe","runPromise","queue","unbounded","end","void","write","response","andThen","offer","isTagged","open","decoded","length","whileLoop","while","body","step","constVoid","cause","message","ResponseDefectEncoded","encoded","Promise","resolve","responses","await","takeAll","tap","shutdown","map","toReadonlyArray","chunks","responseMessage","push","final","isString","join","flatten","protocol","Protocol","writeRequest_","succeed","send","client","delete","initialMessage","succeedNone","supportsAck","supportsTransferables","supportsSpanPropagation","makeProtocolFridaWithExport","options","rpc","exportName","messageOnRpcAvailable","isNotUndefined","layerProtocolFrida","effect"],"sources":["../../src/FridaRpcServer.ts"],"sourcesContent":[null],"mappings":";;;;;;AAQA,IAAAA,UAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAF,uBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAH,uBAAA,CAAAC,OAAA;AACA,IAAAG,KAAA,GAAAJ,uBAAA,CAAAC,OAAA;AACA,IAAAI,KAAA,GAAAL,uBAAA,CAAAC,OAAA;AACA,IAAAK,MAAA,GAAAN,uBAAA,CAAAC,OAAA;AACA,IAAAM,QAAA,GAAAP,uBAAA,CAAAC,OAAA;AACA,IAAAO,KAAA,GAAAR,uBAAA,CAAAC,OAAA;AACA,IAAAQ,OAAA,GAAAT,uBAAA,CAAAC,OAAA;AACA,IAAAS,SAAA,GAAAV,uBAAA,CAAAC,OAAA;AACA,IAAAU,KAAA,GAAAX,uBAAA,CAAAC,OAAA;AACA,IAAAW,OAAA,GAAAZ,uBAAA,CAAAC,OAAA;AACA,IAAAY,MAAA,GAAAb,uBAAA,CAAAC,OAAA;AAAuC,SAAAa,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAf,wBAAAe,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AApBvC;;;;;;;;AAsBA;;;;AAIO,MAAMW,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,gBAO1B5B,MAAM,CAAC8B,GAAG,CAAC,aAAS;EACpB,MAAMC,OAAO,GAAG,OAAO/B,MAAM,CAAC+B,OAAO,EAAS;EAC9C,MAAMC,WAAW,GAAG,OAAO7B,OAAO,CAAC8B,IAAI,EAAU;EACjD,MAAMC,aAAa,GAAG,OAAOtC,gBAAgB,CAACA,gBAAgB;EAE9D,IAAIuC,QAAQ,GAAG,CAAC;EAChB,MAAMC,OAAO,GAAG,IAAIC,GAAG,EAMpB;EACH,IAAIC,YAA+F;EAEnG,MAAMC,SAAS,GAAG,eAAAA,CAAgBC,OAA4B;IAC1D,MAAMC,EAAE,GAAGN,QAAQ,EAAE;IAErB,MAAMO,MAAM,GAAGR,aAAa,CAACS,UAAU,EAAE;IACzC,MAAMC,MAAM,GAAGrC,MAAM,CAACsC,KAAK,CAACtC,MAAM,CAACuC,MAAM,EAAEvC,MAAM,CAACwC,UAAU,CAAC;IAC7D,MAAMC,MAAM,GAAG/C,QAAQ,CAACgD,OAAO,CAACP,MAAM,CAACM,MAAM,EAAEzC,MAAM,CAAC2C,UAAU,CAACN,MAAM,CAAC,CAAC;IACzE,MAAMO,MAAM,GAAGlD,QAAQ,CAACgD,OAAO,CAAC1C,MAAM,CAAC6C,iBAAiB,CAACR,MAAM,CAAC,EAAEF,MAAM,CAACS,MAAM,CAAC;IAEhF,MAAME,KAAK,GAAG,MAAMrD,MAAM,CAACsD,SAAS,CAAC,KAAK,CAAC,CAACC,IAAI,CAACjD,OAAO,CAACkD,UAAU,CAACzB,OAAO,CAAC,CAAC;IAC7E,MAAM0B,KAAK,GAAG,MAAMpD,KAAK,CAACqD,SAAS,EAAgC,CAACH,IAAI,CAACjD,OAAO,CAACkD,UAAU,CAACzB,OAAO,CAAC,CAAC;IAErG;IACAK,OAAO,CAACT,GAAG,CAACc,EAAE,EAAE;MACZkB,GAAG,EAAE3D,MAAM,CAAC4D,IAAI;MAChBC,KAAK,EAAGC,QAAsC,IAC1C9D,MAAM,CAAC+D,OAAO,CAACN,KAAK,CAACO,KAAK,CAACF,QAAQ,CAAC,EAAE1D,SAAS,CAAC6D,QAAQ,CAACH,QAAQ,EAAE,OAAO,CAAC,GAAG9D,MAAM,CAAC4D,IAAI,GAAGP,KAAK,CAACa,IAAI;KAC7G,CAAC;IAEF;IACA,IAAI;MACA,MAAMC,OAAO,GAAGhB,MAAM,CAACX,OAAO,CAAgD;MAC9E,IAAI2B,OAAO,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;MACnC,IAAI1C,CAAC,GAAG,CAAC;MACT,MAAMpB,OAAO,CAACkD,UAAU,CACpBzB,OAAO,EACP/B,MAAM,CAACqE,SAAS,CAAC;QACbC,KAAK,EAAEA,CAAA,KAAM5C,CAAC,GAAGyC,OAAO,CAACC,MAAM;QAC/BG,IAAI,EAAEA,CAAA,KAAMjC,YAAY,CAACG,EAAE,EAAE0B,OAAO,CAACzC,CAAC,EAAE,CAAC,CAAC;QAC1C8C,IAAI,EAAEvE,QAAQ,CAACwE;OAClB,CAAC,CACL;IACL,CAAC,CAAC,OAAOC,KAAK,EAAE;MACZ,MAAMC,OAAO,GAAGlF,UAAU,CAACmF,qBAAqB,CAACF,KAAK,CAAC;MACvD,MAAMG,OAAO,GAAG7B,MAAM,CAAC2B,OAAO,CAAC;MAC/B,OAAOG,OAAO,CAACC,OAAO,CAACF,OAAO,CAAC;IACnC;IAEA;IACA,MAAMG,SAAS,GAAG,MAAM3B,KAAK,CAAC4B,KAAK,CAC9B1B,IAAI,CAACvD,MAAM,CAAC+D,OAAO,CAACN,KAAK,CAACyB,OAAO,CAAC,CAAC,CACnC3B,IAAI,CAACvD,MAAM,CAACmF,GAAG,CAAC1B,KAAK,CAAC2B,QAAQ,CAAC,CAAC,CAChC7B,IAAI,CAACvD,MAAM,CAACqF,GAAG,CAACtF,KAAK,CAACuF,eAAe,CAAC,CAAC,CACvC/B,IAAI,CAACjD,OAAO,CAACkD,UAAU,CAACzB,OAAO,CAAC,CAAC;IAEtC;IACA,MAAMwD,MAAM,GAA0C,EAAE;IACxD,KAAK,MAAMC,eAAe,IAAIR,SAAS,EAAE;MACrC,IAAI;QACA,MAAMH,OAAO,GAAG7B,MAAM,CAACwC,eAAe,CAAC;QACvCD,MAAM,CAACE,IAAI,CAACZ,OAAO,CAAC;MACxB,CAAC,CAAC,OAAOH,KAAK,EAAE;QACZ,MAAMC,OAAO,GAAGlF,UAAU,CAACmF,qBAAqB,CAACF,KAAK,CAAC;QACvD,MAAMG,OAAO,GAAG7B,MAAM,CAAC2B,OAAO,CAAC;QAC/B,OAAOG,OAAO,CAACC,OAAO,CAACF,OAAO,CAAC;MACnC;IACJ;IAEA;IACA,MAAMa,KAAK,GAAGtF,SAAS,CAACuF,QAAQ,CAACJ,MAAM,CAAC,CAAC,CAAC,CAAC,GACrCA,MAAM,CAACK,IAAI,CAAC,EAAE,CAAC,GACf9F,KAAK,CAAC+F,OAAO,CAACN,MAAsC,CAAC;IAC3D,OAAOT,OAAO,CAACC,OAAO,CAACW,KAAK,CAAC;EACjC,CAAC;EAED,MAAMI,QAAQ,GAAG,OAAOjG,SAAS,CAACkG,QAAQ,CAAC9D,IAAI,CAAE+D,aAAa,IAAI;IAC9D1D,YAAY,GAAG0D,aAAa;IAC5B,OAAOhG,MAAM,CAACiG,OAAO,CAAC;MAClBjE,WAAW;MACXkE,IAAI,EAAEA,CAAC/D,QAAQ,EAAE2B,QAAQ,KAAI;QACzB,MAAMqC,MAAM,GAAG/D,OAAO,CAACpB,GAAG,CAACmB,QAAQ,CAAC;QACpC,IAAI,CAACgE,MAAM,EAAE,OAAOnG,MAAM,CAAC4D,IAAI;QAC/B,OAAOuC,MAAM,CAACtC,KAAK,CAACC,QAAQ,CAAC;MACjC,CAAC;MACDH,GAAGA,CAACxB,QAAQ;QACR,MAAMgE,MAAM,GAAG/D,OAAO,CAACpB,GAAG,CAACmB,QAAQ,CAAC;QACpC,IAAI,CAACgE,MAAM,EAAE,OAAOnG,MAAM,CAAC4D,IAAI;QAC/BxB,OAAO,CAACgE,MAAM,CAACjE,QAAQ,CAAC;QACxB,OAAOgE,MAAM,CAACxC,GAAG;MACrB,CAAC;MACD0C,cAAc,EAAErG,MAAM,CAACsG,WAAW;MAClCC,WAAW,EAAE,KAAK;MAClBC,qBAAqB,EAAE,KAAK;MAC5BC,uBAAuB,EAAE;KAC5B,CAAC;EACN,CAAC,CAAC;EAEF,OAAO;IAAEX,QAAQ;IAAEvD;EAAS,CAAE;AAClC,CAAC,CAAC;AAEF;;;;AAIO,MAAMmE,2BAA2B,GACpCC,OAKe,IAEf3G,MAAM,CAAC8B,GAAG,CAAC,aAAS;EAChB,MAAM;IAAEgE,QAAQ;IAAEvD;EAAS,CAAE,GAAG,OAAOX,iBAAiB;EACxDgF,GAAG,CAAC/E,OAAO,CAAC8E,OAAO,EAAEE,UAAU,IAAI,KAAK,CAAC,GAAGtE,SAAS;EACrD,MAAMuE,qBAAqB,GAAGH,OAAO,EAAEG,qBAAqB;EAC5D,IAAI1G,SAAS,CAAC2G,cAAc,CAACD,qBAAqB,CAAC,EAAE;IACjDZ,IAAI,CAACY,qBAAqB,CAAC;EAC/B;EACA,OAAOhB,QAAQ;AACnB,CAAC,CAAC;AAEN;;;;AAAAjE,OAAA,CAAA6E,2BAAA,GAAAA,2BAAA;AAIO,MAAMM,kBAAkB,GAC3BL,OAKe,IAEfzG,KAAK,CAAC+G,MAAM,CAACpH,SAAS,CAACkG,QAAQ,EAAEW,2BAA2B,CAACC,OAAO,CAAC,CAAC;AAAA9E,OAAA,CAAAmF,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FridaRpcClient.d.ts","sourceRoot":"","sources":["../../src/FridaRpcClient.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,KAAK,iBAAiB,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"FridaRpcClient.d.ts","sourceRoot":"","sources":["../../src/FridaRpcClient.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,KAAK,iBAAiB,MAAM,yCAAyC,CAAC;AAElF,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAC;AACjE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAKtC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC1B,QAAQ,WAAW,CAAC,WAAW,EAC/B,UACM;IACI,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;CAC5E,GACD,SAAS,KAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,CAoD9G,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UACM;IACI,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;CAC5E,GACD,SAAS,KAChB,KAAK,CAAC,KAAK,CACV,SAAS,CAAC,QAAQ,EAClB,iBAAiB,CAAC,iBAAiB,EACnC,gBAAgB,CAAC,gBAAgB,GAAG,WAAW,CAAC,WAAW,CAK1D,CAAC"}
|
|
@@ -5,12 +5,10 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @since 1.0.0
|
|
7
7
|
*/
|
|
8
|
-
import * as RpcMessage from "@effect/rpc/RpcMessage";
|
|
9
8
|
import * as RpcSerialization from "@effect/rpc/RpcSerialization";
|
|
10
9
|
import * as RpcServer from "@effect/rpc/RpcServer";
|
|
11
10
|
import * as Effect from "effect/Effect";
|
|
12
11
|
import * as Layer from "effect/Layer";
|
|
13
|
-
import * as Mailbox from "effect/Mailbox";
|
|
14
12
|
/**
|
|
15
13
|
* @since 1.0.0
|
|
16
14
|
* @category Protocol
|
|
@@ -26,16 +24,7 @@ export declare const makeProtocolFrida: Effect.Effect<{
|
|
|
26
24
|
export declare const makeProtocolFridaWithExport: (options?: {
|
|
27
25
|
readonly exportName?: string | undefined;
|
|
28
26
|
readonly messageOnRpcAvailable?: string | undefined;
|
|
29
|
-
} | undefined) => Effect.Effect<
|
|
30
|
-
readonly run: (f: (clientId: number, data: RpcMessage.FromClientEncoded) => Effect.Effect<void>) => Effect.Effect<never>;
|
|
31
|
-
readonly disconnects: Mailbox.ReadonlyMailbox<number>;
|
|
32
|
-
readonly send: (clientId: number, response: RpcMessage.FromServerEncoded, transferables?: ReadonlyArray<globalThis.Transferable>) => Effect.Effect<void>;
|
|
33
|
-
readonly end: (clientId: number) => Effect.Effect<void>;
|
|
34
|
-
readonly initialMessage: Effect.Effect<import("effect/Option").Option<unknown>>;
|
|
35
|
-
readonly supportsAck: boolean;
|
|
36
|
-
readonly supportsTransferables: boolean;
|
|
37
|
-
readonly supportsSpanPropagation: boolean;
|
|
38
|
-
}, never, RpcSerialization.RpcSerialization>;
|
|
27
|
+
} | undefined) => Effect.Effect<RpcServer.Protocol["Type"], never, RpcSerialization.RpcSerialization>;
|
|
39
28
|
/**
|
|
40
29
|
* @since 1.0.0
|
|
41
30
|
* @category Layer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FridaRpcServer.d.ts","sourceRoot":"","sources":["../../src/FridaRpcServer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"FridaRpcServer.d.ts","sourceRoot":"","sources":["../../src/FridaRpcServer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAGnD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAOtC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,CACzC;IACI,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,KAAK,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CACxF,EACD,KAAK,EACL,gBAAgB,CAAC,gBAAgB,CAuGnC,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GACpC,UACM;IACI,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvD,GACD,SAAS,KAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CAS/E,CAAC;AAEP;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UACM;IACI,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvD,GACD,SAAS,KAChB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CACD,CAAC"}
|
|
@@ -27,10 +27,6 @@ export const makeProtocolFrida = (script, options) => RpcClient.Protocol.make(Ef
|
|
|
27
27
|
return Effect.void;
|
|
28
28
|
}
|
|
29
29
|
const parser = serialization.unsafeMake();
|
|
30
|
-
if (!serialization.supportsBigInt) {
|
|
31
|
-
const mutable = request;
|
|
32
|
-
mutable.id = request.id.toString();
|
|
33
|
-
}
|
|
34
30
|
const schema = Schema.Union(Schema.String, Schema.Uint8Array);
|
|
35
31
|
const encode = Function.compose(parser.encode, Schema.encode(schema));
|
|
36
32
|
const decode = Function.compose(Schema.decodeUnknownSync(schema), parser.decode);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FridaRpcClient.js","names":["RpcClient","RpcSerialization","FridaScript","Effect","Function","Layer","Predicate","Schema","Stream","makeProtocolFrida","script","options","Protocol","make","fnUntraced","writeResponse","serialization","exportName","rpcIsAvailableWhen","send","request","_tag","void","parser","unsafeMake","
|
|
1
|
+
{"version":3,"file":"FridaRpcClient.js","names":["RpcClient","RpcSerialization","FridaScript","Effect","Function","Layer","Predicate","Schema","Stream","makeProtocolFrida","script","options","Protocol","make","fnUntraced","writeResponse","serialization","exportName","rpcIsAvailableWhen","send","request","_tag","void","parser","unsafeMake","schema","Union","String","Uint8Array","encode","compose","decode","decodeUnknownSync","pipe","flatMap","callExport","orDie","incoming","responses","length","i","whileLoop","while","body","step","constVoid","defect","isNotUndefined","stream","map","message","filter","isString","takeUntil","runDrain","supportsAck","supportsTransferables","layerProtocolFrida","effect"],"sources":["../../src/FridaRpcClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -9,12 +9,13 @@ import * as RpcMessage from "@effect/rpc/RpcMessage";
|
|
|
9
9
|
import * as RpcSerialization from "@effect/rpc/RpcSerialization";
|
|
10
10
|
import * as RpcServer from "@effect/rpc/RpcServer";
|
|
11
11
|
import * as Array from "effect/Array";
|
|
12
|
-
import * as
|
|
12
|
+
import * as Chunk from "effect/Chunk";
|
|
13
13
|
import * as Effect from "effect/Effect";
|
|
14
14
|
import * as Function from "effect/Function";
|
|
15
15
|
import * as Layer from "effect/Layer";
|
|
16
16
|
import * as Mailbox from "effect/Mailbox";
|
|
17
17
|
import * as Predicate from "effect/Predicate";
|
|
18
|
+
import * as Queue from "effect/Queue";
|
|
18
19
|
import * as Runtime from "effect/Runtime";
|
|
19
20
|
import * as Schema from "effect/Schema";
|
|
20
21
|
/**
|
|
@@ -31,30 +32,17 @@ export const makeProtocolFrida = /*#__PURE__*/Effect.gen(function* () {
|
|
|
31
32
|
const rpcExport = async function (request) {
|
|
32
33
|
const id = clientId++;
|
|
33
34
|
const parser = serialization.unsafeMake();
|
|
34
|
-
const chunks = Array.empty();
|
|
35
|
-
const deferred = await Runtime.runPromise(runtime, Deferred.make());
|
|
36
35
|
const schema = Schema.Union(Schema.String, Schema.Uint8Array);
|
|
37
36
|
const encode = Function.compose(parser.encode, Schema.encodeSync(schema));
|
|
38
37
|
const decode = Function.compose(Schema.decodeUnknownSync(schema), parser.decode);
|
|
38
|
+
const latch = await Effect.makeLatch(false).pipe(Runtime.runPromise(runtime));
|
|
39
|
+
const queue = await Queue.unbounded().pipe(Runtime.runPromise(runtime));
|
|
40
|
+
// When the implementation is done, do this with it's response
|
|
39
41
|
clients.set(id, {
|
|
40
42
|
end: Effect.void,
|
|
41
|
-
write: response =>
|
|
42
|
-
try {
|
|
43
|
-
if (!serialization.supportsBigInt && "requestId" in response) {
|
|
44
|
-
const mutable = response;
|
|
45
|
-
mutable.requestId = mutable.requestId.toString();
|
|
46
|
-
}
|
|
47
|
-
chunks.push(encode(response));
|
|
48
|
-
if (Predicate.isTagged(response, "Chunk")) return Effect.void;
|
|
49
|
-
const final = Predicate.isString(chunks[0]) ? chunks.join("") : Array.flatten(chunks);
|
|
50
|
-
return Deferred.succeed(deferred, final);
|
|
51
|
-
} catch (cause) {
|
|
52
|
-
const message = RpcMessage.ResponseDefectEncoded(cause);
|
|
53
|
-
const encoded = encode(message);
|
|
54
|
-
return Deferred.succeed(deferred, encoded);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
43
|
+
write: response => Effect.andThen(queue.offer(response), Predicate.isTagged(response, "Chunk") ? Effect.void : latch.open)
|
|
57
44
|
});
|
|
45
|
+
// Parse the request and send it to the implementation
|
|
58
46
|
try {
|
|
59
47
|
const decoded = decode(request);
|
|
60
48
|
if (decoded.length === 0) return "";
|
|
@@ -69,7 +57,23 @@ export const makeProtocolFrida = /*#__PURE__*/Effect.gen(function* () {
|
|
|
69
57
|
const encoded = encode(message);
|
|
70
58
|
return Promise.resolve(encoded);
|
|
71
59
|
}
|
|
72
|
-
|
|
60
|
+
// Wait for the implementation to respond
|
|
61
|
+
const responses = await latch.await.pipe(Effect.andThen(queue.takeAll)).pipe(Effect.tap(queue.shutdown)).pipe(Effect.map(Chunk.toReadonlyArray)).pipe(Runtime.runPromise(runtime));
|
|
62
|
+
// Encode the responses
|
|
63
|
+
const chunks = [];
|
|
64
|
+
for (const responseMessage of responses) {
|
|
65
|
+
try {
|
|
66
|
+
const encoded = encode(responseMessage);
|
|
67
|
+
chunks.push(encoded);
|
|
68
|
+
} catch (cause) {
|
|
69
|
+
const message = RpcMessage.ResponseDefectEncoded(cause);
|
|
70
|
+
const encoded = encode(message);
|
|
71
|
+
return Promise.resolve(encoded);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Concatenate the responses
|
|
75
|
+
const final = Predicate.isString(chunks[0]) ? chunks.join("") : Array.flatten(chunks);
|
|
76
|
+
return Promise.resolve(final);
|
|
73
77
|
};
|
|
74
78
|
const protocol = yield* RpcServer.Protocol.make(writeRequest_ => {
|
|
75
79
|
writeRequest = writeRequest_;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FridaRpcServer.js","names":["RpcMessage","RpcSerialization","RpcServer","Array","
|
|
1
|
+
{"version":3,"file":"FridaRpcServer.js","names":["RpcMessage","RpcSerialization","RpcServer","Array","Chunk","Effect","Function","Layer","Mailbox","Predicate","Queue","Runtime","Schema","makeProtocolFrida","gen","runtime","disconnects","make","serialization","clientId","clients","Map","writeRequest","rpcExport","request","id","parser","unsafeMake","schema","Union","String","Uint8Array","encode","compose","encodeSync","decode","decodeUnknownSync","latch","makeLatch","pipe","runPromise","queue","unbounded","set","end","void","write","response","andThen","offer","isTagged","open","decoded","length","i","whileLoop","while","body","step","constVoid","cause","message","ResponseDefectEncoded","encoded","Promise","resolve","responses","await","takeAll","tap","shutdown","map","toReadonlyArray","chunks","responseMessage","push","final","isString","join","flatten","protocol","Protocol","writeRequest_","succeed","send","client","get","delete","initialMessage","succeedNone","supportsAck","supportsTransferables","supportsSpanPropagation","makeProtocolFridaWithExport","options","rpc","exports","exportName","messageOnRpcAvailable","isNotUndefined","layerProtocolFrida","effect"],"sources":["../../src/FridaRpcServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@efffrida/rpc",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "effect rpc-frida",
|
|
5
5
|
"license": "GPL-3.0-only",
|
|
6
6
|
"repository": {
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"author": "Leo Conforti <leo@leoconforti.us> (https://leoconforti.us)",
|
|
13
13
|
"homepage": "https://github.com/leonitousconforti/efffrida",
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@efffrida/frida-tools": "^0.0.
|
|
15
|
+
"@efffrida/frida-tools": "^0.0.4"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"@effect/platform": "0.80.
|
|
19
|
-
"@effect/rpc": "0.
|
|
20
|
-
"effect": "3.14.
|
|
18
|
+
"@effect/platform": "0.80.14",
|
|
19
|
+
"@effect/rpc": "0.56.2",
|
|
20
|
+
"effect": "3.14.14"
|
|
21
21
|
},
|
|
22
22
|
"main": "./dist/cjs/index.js",
|
|
23
23
|
"module": "./dist/esm/index.js",
|
|
@@ -38,6 +38,11 @@
|
|
|
38
38
|
"types": "./dist/dts/FridaRpcServer.d.ts",
|
|
39
39
|
"import": "./dist/esm/FridaRpcServer.js",
|
|
40
40
|
"default": "./dist/cjs/FridaRpcServer.js"
|
|
41
|
+
},
|
|
42
|
+
"./index": {
|
|
43
|
+
"types": "./dist/dts/index.d.ts",
|
|
44
|
+
"import": "./dist/esm/index.js",
|
|
45
|
+
"default": "./dist/cjs/index.js"
|
|
41
46
|
}
|
|
42
47
|
},
|
|
43
48
|
"typesVersions": {
|
|
@@ -47,6 +52,9 @@
|
|
|
47
52
|
],
|
|
48
53
|
"FridaRpcServer": [
|
|
49
54
|
"./dist/dts/FridaRpcServer.d.ts"
|
|
55
|
+
],
|
|
56
|
+
"index": [
|
|
57
|
+
"./dist/dts/index.d.ts"
|
|
50
58
|
]
|
|
51
59
|
}
|
|
52
60
|
}
|
package/src/FridaRpcClient.ts
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
|
|
9
9
|
import type * as RpcMessage from "@effect/rpc/RpcMessage";
|
|
10
10
|
import type * as FridaSessionError from "@efffrida/frida-tools/FridaSessionError";
|
|
11
|
-
import type * as Types from "effect/Types";
|
|
12
11
|
|
|
13
12
|
import * as RpcClient from "@effect/rpc/RpcClient";
|
|
14
13
|
import * as RpcSerialization from "@effect/rpc/RpcSerialization";
|
|
@@ -45,11 +44,6 @@ export const makeProtocolFrida = (
|
|
|
45
44
|
}
|
|
46
45
|
|
|
47
46
|
const parser = serialization.unsafeMake();
|
|
48
|
-
if (!serialization.supportsBigInt) {
|
|
49
|
-
const mutable = request as Types.Mutable<typeof request>;
|
|
50
|
-
mutable.id = request.id.toString();
|
|
51
|
-
}
|
|
52
|
-
|
|
53
47
|
const schema = Schema.Union(Schema.String, Schema.Uint8Array);
|
|
54
48
|
const encode = Function.compose(parser.encode, Schema.encode(schema));
|
|
55
49
|
const decode = Function.compose(Schema.decodeUnknownSync(schema), parser.decode);
|
package/src/FridaRpcServer.ts
CHANGED
|
@@ -6,18 +6,17 @@
|
|
|
6
6
|
* @since 1.0.0
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import type * as Types from "effect/Types";
|
|
10
|
-
|
|
11
9
|
import * as RpcMessage from "@effect/rpc/RpcMessage";
|
|
12
10
|
import * as RpcSerialization from "@effect/rpc/RpcSerialization";
|
|
13
11
|
import * as RpcServer from "@effect/rpc/RpcServer";
|
|
14
12
|
import * as Array from "effect/Array";
|
|
15
|
-
import * as
|
|
13
|
+
import * as Chunk from "effect/Chunk";
|
|
16
14
|
import * as Effect from "effect/Effect";
|
|
17
15
|
import * as Function from "effect/Function";
|
|
18
16
|
import * as Layer from "effect/Layer";
|
|
19
17
|
import * as Mailbox from "effect/Mailbox";
|
|
20
18
|
import * as Predicate from "effect/Predicate";
|
|
19
|
+
import * as Queue from "effect/Queue";
|
|
21
20
|
import * as Runtime from "effect/Runtime";
|
|
22
21
|
import * as Schema from "effect/Schema";
|
|
23
22
|
|
|
@@ -49,39 +48,23 @@ export const makeProtocolFrida: Effect.Effect<
|
|
|
49
48
|
|
|
50
49
|
const rpcExport = async function (request: string | Uint8Array): Promise<string | ReadonlyArray<number>> {
|
|
51
50
|
const id = clientId++;
|
|
52
|
-
const parser = serialization.unsafeMake();
|
|
53
|
-
|
|
54
|
-
const chunks = Array.empty<string | ReadonlyArray<number>>();
|
|
55
|
-
const deferred = await Runtime.runPromise(runtime, Deferred.make<string | ReadonlyArray<number>, never>());
|
|
56
51
|
|
|
52
|
+
const parser = serialization.unsafeMake();
|
|
57
53
|
const schema = Schema.Union(Schema.String, Schema.Uint8Array);
|
|
58
54
|
const encode = Function.compose(parser.encode, Schema.encodeSync(schema));
|
|
59
55
|
const decode = Function.compose(Schema.decodeUnknownSync(schema), parser.decode);
|
|
60
56
|
|
|
57
|
+
const latch = await Effect.makeLatch(false).pipe(Runtime.runPromise(runtime));
|
|
58
|
+
const queue = await Queue.unbounded<RpcMessage.FromServerEncoded>().pipe(Runtime.runPromise(runtime));
|
|
59
|
+
|
|
60
|
+
// When the implementation is done, do this with it's response
|
|
61
61
|
clients.set(id, {
|
|
62
62
|
end: Effect.void,
|
|
63
|
-
write: (response: RpcMessage.FromServerEncoded) =>
|
|
64
|
-
|
|
65
|
-
if (!serialization.supportsBigInt && "requestId" in response) {
|
|
66
|
-
const mutable = response as Types.Mutable<typeof response>;
|
|
67
|
-
mutable.requestId = mutable.requestId.toString();
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
chunks.push(encode(response));
|
|
71
|
-
if (Predicate.isTagged(response, "Chunk")) return Effect.void;
|
|
72
|
-
|
|
73
|
-
const final = Predicate.isString(chunks[0])
|
|
74
|
-
? chunks.join("")
|
|
75
|
-
: Array.flatten(chunks as Array<ReadonlyArray<number>>);
|
|
76
|
-
return Deferred.succeed(deferred, final);
|
|
77
|
-
} catch (cause) {
|
|
78
|
-
const message = RpcMessage.ResponseDefectEncoded(cause);
|
|
79
|
-
const encoded = encode(message);
|
|
80
|
-
return Deferred.succeed(deferred, encoded);
|
|
81
|
-
}
|
|
82
|
-
},
|
|
63
|
+
write: (response: RpcMessage.FromServerEncoded): Effect.Effect<void, never, never> =>
|
|
64
|
+
Effect.andThen(queue.offer(response), Predicate.isTagged(response, "Chunk") ? Effect.void : latch.open),
|
|
83
65
|
});
|
|
84
66
|
|
|
67
|
+
// Parse the request and send it to the implementation
|
|
85
68
|
try {
|
|
86
69
|
const decoded = decode(request) as ReadonlyArray<RpcMessage.FromClientEncoded>;
|
|
87
70
|
if (decoded.length === 0) return "";
|
|
@@ -100,7 +83,31 @@ export const makeProtocolFrida: Effect.Effect<
|
|
|
100
83
|
return Promise.resolve(encoded);
|
|
101
84
|
}
|
|
102
85
|
|
|
103
|
-
|
|
86
|
+
// Wait for the implementation to respond
|
|
87
|
+
const responses = await latch.await
|
|
88
|
+
.pipe(Effect.andThen(queue.takeAll))
|
|
89
|
+
.pipe(Effect.tap(queue.shutdown))
|
|
90
|
+
.pipe(Effect.map(Chunk.toReadonlyArray))
|
|
91
|
+
.pipe(Runtime.runPromise(runtime));
|
|
92
|
+
|
|
93
|
+
// Encode the responses
|
|
94
|
+
const chunks: Array<string | ReadonlyArray<number>> = [];
|
|
95
|
+
for (const responseMessage of responses) {
|
|
96
|
+
try {
|
|
97
|
+
const encoded = encode(responseMessage);
|
|
98
|
+
chunks.push(encoded);
|
|
99
|
+
} catch (cause) {
|
|
100
|
+
const message = RpcMessage.ResponseDefectEncoded(cause);
|
|
101
|
+
const encoded = encode(message);
|
|
102
|
+
return Promise.resolve(encoded);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Concatenate the responses
|
|
107
|
+
const final = Predicate.isString(chunks[0])
|
|
108
|
+
? chunks.join("")
|
|
109
|
+
: Array.flatten(chunks as Array<ReadonlyArray<number>>);
|
|
110
|
+
return Promise.resolve(final);
|
|
104
111
|
};
|
|
105
112
|
|
|
106
113
|
const protocol = yield* RpcServer.Protocol.make((writeRequest_) => {
|
|
@@ -139,7 +146,7 @@ export const makeProtocolFridaWithExport = (
|
|
|
139
146
|
readonly messageOnRpcAvailable?: string | undefined;
|
|
140
147
|
}
|
|
141
148
|
| undefined
|
|
142
|
-
) =>
|
|
149
|
+
): Effect.Effect<RpcServer.Protocol["Type"], never, RpcSerialization.RpcSerialization> =>
|
|
143
150
|
Effect.gen(function* () {
|
|
144
151
|
const { protocol, rpcExport } = yield* makeProtocolFrida;
|
|
145
152
|
rpc.exports[options?.exportName ?? "rpc"] = rpcExport;
|