@efffrida/rpc 0.0.1 → 0.0.3

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.
@@ -1,6 +1,6 @@
1
1
  {
2
+ "sideEffects": [],
2
3
  "main": "../dist/cjs/FridaRpcClient.js",
3
4
  "module": "../dist/esm/FridaRpcClient.js",
4
- "types": "../dist/dts/FridaRpcClient.d.ts",
5
- "sideEffects": []
5
+ "types": "../dist/dts/FridaRpcClient.d.ts"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
+ "sideEffects": [],
2
3
  "main": "../dist/cjs/FridaRpcServer.js",
3
4
  "module": "../dist/esm/FridaRpcServer.js",
4
- "types": "../dist/dts/FridaRpcServer.d.ts",
5
- "sideEffects": []
5
+ "types": "../dist/dts/FridaRpcServer.d.ts"
6
6
  }
@@ -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","supportsBigInt","mutable","id","toString","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":[]}
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 Deferred = _interopRequireWildcard(require("effect/Deferred"));
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
- return Runtime.runPromise(runtime, deferred);
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","Deferred","Effect","Function","Layer","Mailbox","Predicate","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","chunks","empty","deferred","runPromise","schema","Union","String","Uint8Array","encode","compose","encodeSync","decode","decodeUnknownSync","end","void","write","response","supportsBigInt","mutable","requestId","toString","push","isTagged","final","isString","join","flatten","succeed","cause","message","ResponseDefectEncoded","encoded","decoded","length","whileLoop","while","body","step","constVoid","Promise","resolve","protocol","Protocol","writeRequest_","send","client","delete","initialMessage","succeedNone","supportsAck","supportsTransferables","supportsSpanPropagation","makeProtocolFridaWithExport","options","rpc","exportName","messageOnRpcAvailable","isNotUndefined","layerProtocolFrida","effect"],"sources":["../../src/FridaRpcServer.ts"],"sourcesContent":[null],"mappings":";;;;;;AAUA,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,QAAA,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,OAAA,GAAAX,uBAAA,CAAAC,OAAA;AACA,IAAAW,MAAA,GAAAZ,uBAAA,CAAAC,OAAA;AAAuC,SAAAY,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,SAAAd,wBAAAc,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;AArBvC;;;;;;;;AAuBA;;;;AAIO,MAAMW,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,gBAO1B3B,MAAM,CAAC6B,GAAG,CAAC,aAAS;EACpB,MAAMC,OAAO,GAAG,OAAO9B,MAAM,CAAC8B,OAAO,EAAS;EAC9C,MAAMC,WAAW,GAAG,OAAO5B,OAAO,CAAC6B,IAAI,EAAU;EACjD,MAAMC,aAAa,GAAG,OAAOrC,gBAAgB,CAACA,gBAAgB;EAE9D,IAAIsC,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;IACrB,MAAMO,MAAM,GAAGR,aAAa,CAACS,UAAU,EAAE;IAEzC,MAAMC,MAAM,GAAG7C,KAAK,CAAC8C,KAAK,EAAkC;IAC5D,MAAMC,QAAQ,GAAG,MAAMxC,OAAO,CAACyC,UAAU,CAAChB,OAAO,EAAE/B,QAAQ,CAACiC,IAAI,EAAyC,CAAC;IAE1G,MAAMe,MAAM,GAAGzC,MAAM,CAAC0C,KAAK,CAAC1C,MAAM,CAAC2C,MAAM,EAAE3C,MAAM,CAAC4C,UAAU,CAAC;IAC7D,MAAMC,MAAM,GAAGlD,QAAQ,CAACmD,OAAO,CAACX,MAAM,CAACU,MAAM,EAAE7C,MAAM,CAAC+C,UAAU,CAACN,MAAM,CAAC,CAAC;IACzE,MAAMO,MAAM,GAAGrD,QAAQ,CAACmD,OAAO,CAAC9C,MAAM,CAACiD,iBAAiB,CAACR,MAAM,CAAC,EAAEN,MAAM,CAACa,MAAM,CAAC;IAEhFnB,OAAO,CAACT,GAAG,CAACc,EAAE,EAAE;MACZgB,GAAG,EAAExD,MAAM,CAACyD,IAAI;MAChBC,KAAK,EAAGC,QAAsC,IAAI;QAC9C,IAAI;UACA,IAAI,CAAC1B,aAAa,CAAC2B,cAAc,IAAI,WAAW,IAAID,QAAQ,EAAE;YAC1D,MAAME,OAAO,GAAGF,QAA0C;YAC1DE,OAAO,CAACC,SAAS,GAAGD,OAAO,CAACC,SAAS,CAACC,QAAQ,EAAE;UACpD;UAEApB,MAAM,CAACqB,IAAI,CAACb,MAAM,CAACQ,QAAQ,CAAC,CAAC;UAC7B,IAAIvD,SAAS,CAAC6D,QAAQ,CAACN,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO3D,MAAM,CAACyD,IAAI;UAE7D,MAAMS,KAAK,GAAG9D,SAAS,CAAC+D,QAAQ,CAACxB,MAAM,CAAC,CAAC,CAAC,CAAC,GACrCA,MAAM,CAACyB,IAAI,CAAC,EAAE,CAAC,GACftE,KAAK,CAACuE,OAAO,CAAC1B,MAAsC,CAAC;UAC3D,OAAO5C,QAAQ,CAACuE,OAAO,CAACzB,QAAQ,EAAEqB,KAAK,CAAC;QAC5C,CAAC,CAAC,OAAOK,KAAK,EAAE;UACZ,MAAMC,OAAO,GAAG/E,UAAU,CAACgF,qBAAqB,CAACF,KAAK,CAAC;UACvD,MAAMG,OAAO,GAAGvB,MAAM,CAACqB,OAAO,CAAC;UAC/B,OAAOzE,QAAQ,CAACuE,OAAO,CAACzB,QAAQ,EAAE6B,OAAO,CAAC;QAC9C;MACJ;KACH,CAAC;IAEF,IAAI;MACA,MAAMC,OAAO,GAAGrB,MAAM,CAACf,OAAO,CAAgD;MAC9E,IAAIoC,OAAO,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;MACnC,IAAInD,CAAC,GAAG,CAAC;MACT,MAAMpB,OAAO,CAACyC,UAAU,CACpBhB,OAAO,EACP9B,MAAM,CAAC6E,SAAS,CAAC;QACbC,KAAK,EAAEA,CAAA,KAAMrD,CAAC,GAAGkD,OAAO,CAACC,MAAM;QAC/BG,IAAI,EAAEA,CAAA,KAAM1C,YAAY,CAACG,EAAE,EAAEmC,OAAO,CAAClD,CAAC,EAAE,CAAC,CAAC;QAC1CuD,IAAI,EAAE/E,QAAQ,CAACgF;OAClB,CAAC,CACL;IACL,CAAC,CAAC,OAAOV,KAAK,EAAE;MACZ,MAAMC,OAAO,GAAG/E,UAAU,CAACgF,qBAAqB,CAACF,KAAK,CAAC;MACvD,MAAMG,OAAO,GAAGvB,MAAM,CAACqB,OAAO,CAAC;MAC/B,OAAOU,OAAO,CAACC,OAAO,CAACT,OAAO,CAAC;IACnC;IAEA,OAAOrE,OAAO,CAACyC,UAAU,CAAChB,OAAO,EAAEe,QAAQ,CAAC;EAChD,CAAC;EAED,MAAMuC,QAAQ,GAAG,OAAOvF,SAAS,CAACwF,QAAQ,CAACrD,IAAI,CAAEsD,aAAa,IAAI;IAC9DjD,YAAY,GAAGiD,aAAa;IAC5B,OAAOtF,MAAM,CAACsE,OAAO,CAAC;MAClBvC,WAAW;MACXwD,IAAI,EAAEA,CAACrD,QAAQ,EAAEyB,QAAQ,KAAI;QACzB,MAAM6B,MAAM,GAAGrD,OAAO,CAACpB,GAAG,CAACmB,QAAQ,CAAC;QACpC,IAAI,CAACsD,MAAM,EAAE,OAAOxF,MAAM,CAACyD,IAAI;QAC/B,OAAO+B,MAAM,CAAC9B,KAAK,CAACC,QAAQ,CAAC;MACjC,CAAC;MACDH,GAAGA,CAACtB,QAAQ;QACR,MAAMsD,MAAM,GAAGrD,OAAO,CAACpB,GAAG,CAACmB,QAAQ,CAAC;QACpC,IAAI,CAACsD,MAAM,EAAE,OAAOxF,MAAM,CAACyD,IAAI;QAC/BtB,OAAO,CAACsD,MAAM,CAACvD,QAAQ,CAAC;QACxB,OAAOsD,MAAM,CAAChC,GAAG;MACrB,CAAC;MACDkC,cAAc,EAAE1F,MAAM,CAAC2F,WAAW;MAClCC,WAAW,EAAE,KAAK;MAClBC,qBAAqB,EAAE,KAAK;MAC5BC,uBAAuB,EAAE;KAC5B,CAAC;EACN,CAAC,CAAC;EAEF,OAAO;IAAEV,QAAQ;IAAE9C;EAAS,CAAE;AAClC,CAAC,CAAC;AAEF;;;;AAIO,MAAMyD,2BAA2B,GACpCC,OAKe,IAEfhG,MAAM,CAAC6B,GAAG,CAAC,aAAS;EAChB,MAAM;IAAEuD,QAAQ;IAAE9C;EAAS,CAAE,GAAG,OAAOX,iBAAiB;EACxDsE,GAAG,CAACrE,OAAO,CAACoE,OAAO,EAAEE,UAAU,IAAI,KAAK,CAAC,GAAG5D,SAAS;EACrD,MAAM6D,qBAAqB,GAAGH,OAAO,EAAEG,qBAAqB;EAC5D,IAAI/F,SAAS,CAACgG,cAAc,CAACD,qBAAqB,CAAC,EAAE;IACjDZ,IAAI,CAACY,qBAAqB,CAAC;EAC/B;EACA,OAAOf,QAAQ;AACnB,CAAC,CAAC;AAEN;;;;AAAAxD,OAAA,CAAAmE,2BAAA,GAAAA,2BAAA;AAIO,MAAMM,kBAAkB,GAC3BL,OAKe,IAEf9F,KAAK,CAACoG,MAAM,CAACzG,SAAS,CAACwF,QAAQ,EAAEU,2BAA2B,CAACC,OAAO,CAAC,CAAC;AAAApE,OAAA,CAAAyE,kBAAA,GAAAA,kBAAA","ignoreList":[]}
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":"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","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;AAGlF,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,CAyD9G,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"}
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;AAIH,OAAO,KAAK,UAAU,MAAM,wBAAwB,CAAC;AACrD,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;AACtC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAK1C;;;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,CA+FnC,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;;;2FAtEM,CAAC;;;;;;4CAgFpB,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"}
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","supportsBigInt","mutable","id","toString","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":[]}
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 Deferred from "effect/Deferred";
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
- return Runtime.runPromise(runtime, deferred);
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","Deferred","Effect","Function","Layer","Mailbox","Predicate","Runtime","Schema","makeProtocolFrida","gen","runtime","disconnects","make","serialization","clientId","clients","Map","writeRequest","rpcExport","request","id","parser","unsafeMake","chunks","empty","deferred","runPromise","schema","Union","String","Uint8Array","encode","compose","encodeSync","decode","decodeUnknownSync","set","end","void","write","response","supportsBigInt","mutable","requestId","toString","push","isTagged","final","isString","join","flatten","succeed","cause","message","ResponseDefectEncoded","encoded","decoded","length","i","whileLoop","while","body","step","constVoid","Promise","resolve","protocol","Protocol","writeRequest_","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":[]}
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":[]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "sideEffects": [],
3
+ "main": "../dist/cjs/index.js",
4
+ "module": "../dist/esm/index.js",
5
+ "types": "../dist/dts/index.d.ts"
6
+ }
package/package.json CHANGED
@@ -1,23 +1,23 @@
1
1
  {
2
2
  "name": "@efffrida/rpc",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "effect rpc-frida",
5
5
  "license": "GPL-3.0-only",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "https://github.com/leoconforti/efffrida.git",
8
+ "url": "https://github.com/leonitousconforti/efffrida.git",
9
9
  "directory": "packages/rpc"
10
10
  },
11
11
  "sideEffects": [],
12
12
  "author": "Leo Conforti <leo@leoconforti.us> (https://leoconforti.us)",
13
- "homepage": "https://github.com/leoconforti/efffrida",
13
+ "homepage": "https://github.com/leonitousconforti/efffrida",
14
14
  "dependencies": {
15
- "@efffrida/frida-tools": "^0.0.1"
15
+ "@efffrida/frida-tools": "^0.0.3"
16
16
  },
17
17
  "peerDependencies": {
18
- "@effect/platform": "0.80.8",
19
- "@effect/rpc": "0.55.10",
20
- "effect": "3.14.7"
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
  }
@@ -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);
@@ -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 Deferred from "effect/Deferred";
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
- try {
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
- return Runtime.runPromise(runtime, deferred);
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;