@efffrida/rpc 0.0.26 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/frida/FridaRpcClient.d.ts +4 -29
  2. package/dist/frida/FridaRpcClient.d.ts.map +1 -1
  3. package/dist/frida/FridaRpcClient.js +47 -83
  4. package/dist/frida/FridaRpcClient.js.map +1 -1
  5. package/dist/frida/FridaRpcServer.d.ts +7 -7
  6. package/dist/frida/FridaRpcServer.d.ts.map +1 -1
  7. package/dist/frida/FridaRpcServer.js +37 -49
  8. package/dist/frida/FridaRpcServer.js.map +1 -1
  9. package/dist/node/FridaRpcClient.d.ts +6 -10
  10. package/dist/node/FridaRpcClient.d.ts.map +1 -1
  11. package/dist/node/FridaRpcClient.js +67 -46
  12. package/dist/node/FridaRpcClient.js.map +1 -1
  13. package/dist/node/FridaRpcServer.d.ts +10 -3
  14. package/dist/node/FridaRpcServer.d.ts.map +1 -1
  15. package/dist/node/FridaRpcServer.js +63 -64
  16. package/dist/node/FridaRpcServer.js.map +1 -1
  17. package/dist/shared/{constants.d.ts → Constants.d.ts} +7 -3
  18. package/dist/shared/Constants.d.ts.map +1 -0
  19. package/dist/shared/Constants.js +10 -0
  20. package/dist/shared/Constants.js.map +1 -0
  21. package/dist/shared/index.d.ts +10 -0
  22. package/dist/shared/index.d.ts.map +1 -0
  23. package/dist/shared/index.js +10 -0
  24. package/dist/shared/index.js.map +1 -0
  25. package/package.json +14 -21
  26. package/src/frida/FridaRpcClient.ts +61 -141
  27. package/src/frida/FridaRpcServer.ts +47 -54
  28. package/src/node/FridaRpcClient.ts +84 -71
  29. package/src/node/FridaRpcServer.ts +92 -80
  30. package/src/shared/Constants.ts +13 -0
  31. package/src/shared/index.ts +10 -0
  32. package/dist/shared/constants.d.ts.map +0 -1
  33. package/dist/shared/constants.js +0 -7
  34. package/dist/shared/constants.js.map +0 -1
  35. package/dist/shared/predicates.d.ts +0 -10
  36. package/dist/shared/predicates.d.ts.map +0 -1
  37. package/dist/shared/predicates.js +0 -12
  38. package/dist/shared/predicates.js.map +0 -1
  39. package/src/shared/constants.ts +0 -11
  40. package/src/shared/predicates.ts +0 -19
@@ -5,44 +5,19 @@
5
5
  * @since 1.0.0
6
6
  */
7
7
  import "@efffrida/polyfills";
8
- import type * as Duration from "effect/Duration";
9
8
  import type * as Scope from "effect/Scope";
10
- import * as RpcClient from "@effect/rpc/RpcClient";
11
- import * as RpcSerialization from "@effect/rpc/RpcSerialization";
12
9
  import * as Effect from "effect/Effect";
13
10
  import * as Layer from "effect/Layer";
11
+ import * as RpcClient from "effect/unstable/rpc/RpcClient";
12
+ import * as RpcSerialization from "effect/unstable/rpc/RpcSerialization";
14
13
  /**
15
14
  * @since 1.0.0
16
15
  * @category Protocol
17
16
  */
18
- export declare const makeProtocolFrida: (options?: {
19
- readonly generateExportName?: (() => string) | undefined;
20
- readonly receivingStreamShareOptions?: {
21
- readonly capacity: "unbounded";
22
- readonly replay?: number | undefined;
23
- readonly idleTimeToLive?: Duration.DurationInput | undefined;
24
- } | {
25
- readonly capacity: number;
26
- readonly strategy?: "sliding" | "dropping" | "suspend" | undefined;
27
- readonly replay?: number | undefined;
28
- readonly idleTimeToLive?: Duration.DurationInput | undefined;
29
- } | undefined;
30
- } | undefined) => Effect.Effect<RpcClient.Protocol["Type"], never, RpcSerialization.RpcSerialization | Scope.Scope>;
17
+ export declare const makeProtocolFrida: () => Effect.Effect<RpcClient.Protocol["Service"], never, RpcSerialization.RpcSerialization | Scope.Scope>;
31
18
  /**
32
19
  * @since 1.0.0
33
20
  * @category Layers
34
21
  */
35
- export declare const layerProtocolFrida: (options?: {
36
- readonly generateExportName?: (() => string) | undefined;
37
- readonly receivingStreamShareOptions?: {
38
- readonly capacity: "unbounded";
39
- readonly replay?: number | undefined;
40
- readonly idleTimeToLive?: Duration.DurationInput | undefined;
41
- } | {
42
- readonly capacity: number;
43
- readonly strategy?: "sliding" | "dropping" | "suspend" | undefined;
44
- readonly replay?: number | undefined;
45
- readonly idleTimeToLive?: Duration.DurationInput | undefined;
46
- } | undefined;
47
- } | undefined) => Layer.Layer<RpcClient.Protocol, never, RpcSerialization.RpcSerialization>;
22
+ export declare const layerProtocolFrida: Layer.Layer<RpcClient.Protocol, never, RpcSerialization.RpcSerialization>;
48
23
  //# sourceMappingURL=FridaRpcClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FridaRpcClient.d.ts","sourceRoot":"","sources":["../../src/frida/FridaRpcClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AAIjE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAUtC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC1B,UACM;IACI,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,2BAA2B,CAAC,EAC/B;QACI,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC;KAChE,GACD;QACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;QACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC;KAChE,GACD,SAAS,CAAC;CACnB,GACD,SAAS,KAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAsG9F,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UACM;IACI,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,2BAA2B,CAAC,EAC/B;QACI,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;QAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC;KAChE,GACD;QACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;QACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,aAAa,GAAG,SAAS,CAAC;KAChE,GACD,SAAS,CAAC;CACnB,GACD,SAAS,KAChB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CACX,CAAC"}
1
+ {"version":3,"file":"FridaRpcClient.d.ts","sourceRoot":"","sources":["../../src/frida/FridaRpcClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAG3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,gBAAgB,MAAM,sCAAsC,CAAC;AAIzE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAO,MAAM,CAAC,MAAM,CAC9C,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC7B,KAAK,EACL,gBAAgB,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAgE9C,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CAChD,CAAC"}
@@ -5,112 +5,76 @@
5
5
  * @since 1.0.0
6
6
  */
7
7
  import "@efffrida/polyfills";
8
- import * as RpcClient from "@effect/rpc/RpcClient";
9
- import * as RpcSerialization from "@effect/rpc/RpcSerialization";
10
- import * as FridaStream from "@efffrida/platform/Stream";
11
- import * as Cause from "effect/Cause";
12
- import * as Deferred from "effect/Deferred";
13
8
  import * as Effect from "effect/Effect";
14
9
  import * as Function from "effect/Function";
15
10
  import * as Layer from "effect/Layer";
16
- import * as Option from "effect/Option";
17
- import * as ParseResult from "effect/ParseResult";
18
- import * as Predicate from "effect/Predicate";
19
- import * as Schema from "effect/Schema";
20
- import * as Stream from "effect/Stream";
21
- import * as constants from "../shared/constants.js";
22
- import * as sharedPredicates from "../shared/predicates.js";
11
+ import * as Random from "effect/Random";
12
+ import * as RpcClient from "effect/unstable/rpc/RpcClient";
13
+ import * as RpcClientError from "effect/unstable/rpc/RpcClientError";
14
+ import * as RpcSerialization from "effect/unstable/rpc/RpcSerialization";
15
+ import * as constants from "../shared/Constants.js";
23
16
  /**
24
17
  * @since 1.0.0
25
18
  * @category Protocol
26
19
  */
27
- export const makeProtocolFrida = options => RpcClient.Protocol.make(Effect.fnUntraced(function* (writeResponse) {
20
+ export const makeProtocolFrida = () => RpcClient.Protocol.make(Effect.fnUntraced(function* (writeResponse, clientIds) {
28
21
  const serialization = yield* RpcSerialization.RpcSerialization;
29
22
  const encoder = new TextEncoder();
30
- const parser = serialization.unsafeMake();
31
- /**
32
- * Once the server has acknowledged our initiation request and sent
33
- * use a client id to identify ourselves, this deferred will
34
- * complete.
35
- */
36
- const clientIdDeferred = yield* Deferred.make();
37
- /**
38
- * Setup the receiving handler for the client id. We receive the
39
- * client id over a script export instead of over the receiving
40
- * stream since there could be multiple clients in this frida script
41
- * and multiple could request client ids at the same time. This
42
- * could be mitigated with a nonce of some kind in the request
43
- * message, but receiving over a script export is full-proof so long
44
- * as the exports are unique.
45
- */
46
- const exportName = options?.generateExportName?.() ?? constants.generateClientCallbackExportNameForServer();
47
- yield* Effect.addFinalizer(() => Effect.sync(() => delete rpc.exports[exportName]));
48
- rpc.exports[exportName] = maybeIncomingClientId => {
49
- const parsedClientId = Schema.decodeUnknown(Schema.Number)(maybeIncomingClientId);
50
- Deferred.unsafeDone(clientIdDeferred, parsedClientId);
51
- };
52
- /**
53
- * Request a client id from the node side and wait for the response,
54
- * handling any transient errors that might occur by retrying with
55
- * the retry policy.
56
- */
23
+ const parser = serialization.makeUnsafe();
24
+ const requestClientMap = new Map();
25
+ const exportName = yield* Random.nextUUIDv4;
57
26
  const connectionRequest = constants.nodeRpcClientMakeConnectionRequestForServer(exportName);
58
- const connectionRequestTimeout = "1 second";
59
- const clientId = yield* Effect.sync(() => send(connectionRequest)).pipe(Effect.flatMap(() => Deferred.await(clientIdDeferred)), Effect.timeout(connectionRequestTimeout), Effect.catchIf(ParseResult.isParseError, () => Effect.dieMessage("Failed to parse client ID")), Effect.catchIf(Cause.isTimeoutException, () => Effect.dieMessage("Timed out too many times")));
60
- /**
61
- * Attach to the receiving stream, where all future messages will
62
- * come in at, and filter for only our messages.
63
- */
64
- const receivingPredicate = sharedPredicates.isTaggedForClient(clientId);
65
- const receiveStream = yield* FridaStream.receiveStream(options?.receivingStreamShareOptions ?? {
66
- replay: 100,
67
- capacity: "unbounded"
27
+ const broadcast = response => Effect.forEach(clientIds, id => writeResponse(id, response), {
28
+ discard: true
68
29
  });
69
- /**
70
- * For every response message received, decode it and send it the
71
- * response back to the implementation.
72
- */
73
- yield* receiveStream.pipe(Stream.filterMap(unfiltered => {
74
- if (receivingPredicate(unfiltered.message)) return Option.fromNullable(unfiltered.data);else return Option.none();
75
- }), Stream.runForEach(filtered => {
30
+ yield* Effect.addFinalizer(() => Effect.sync(() => delete rpc.exports[exportName]));
31
+ rpc.exports[exportName] = data => {
76
32
  try {
77
- const responses = parser.decode(filtered);
78
- if (responses.length === 0) return Effect.void;
33
+ const responses = parser.decode(data);
34
+ if (responses.length === 0) return Promise.resolve();
79
35
  let i = 0;
80
36
  return Effect.whileLoop({
37
+ step: Function.constVoid,
81
38
  while: () => i < responses.length,
82
- body: () => writeResponse(responses[i++]),
83
- step: Function.constVoid
84
- });
39
+ body: () => {
40
+ const response = responses[i++];
41
+ if ("requestId" in response) {
42
+ const clientId = requestClientMap.get(response.requestId);
43
+ if (response._tag === "Exit") requestClientMap.delete(response.requestId);
44
+ return writeResponse(clientId, response);
45
+ } else return broadcast(response);
46
+ }
47
+ }).pipe(Effect.runPromise);
85
48
  } catch (defect) {
86
- return writeResponse({
87
- _tag: "Defect",
88
- defect
89
- });
49
+ return broadcast({
50
+ _tag: "ClientProtocolError",
51
+ error: new RpcClientError.RpcClientError({
52
+ reason: new RpcClientError.RpcClientDefect({
53
+ message: "Error decoding message",
54
+ cause: defect
55
+ })
56
+ })
57
+ }).pipe(Effect.runPromise);
90
58
  }
91
- }), Effect.interruptible, Effect.forkScoped);
92
- /**
93
- * Sending messages is as simple as encoding them, then sending them
94
- * to the node side tagged with our client id so it knows where to
95
- * send them back to.
96
- */
97
- const sendHelper = Effect.fnUntraced(function* (message) {
98
- const encoded = parser.encode(message);
99
- if (Predicate.isUndefined(encoded)) return;
100
- const transformed = typeof encoded === "string" ? encoder.encode(encoded) : encoded;
101
- send({
102
- clientId
103
- }, transformed.buffer);
104
- });
59
+ };
60
+ send(connectionRequest);
105
61
  return {
106
- send: sendHelper,
107
62
  supportsAck: true,
108
- supportsTransferables: false
63
+ supportsTransferables: false,
64
+ send(clientId, request) {
65
+ if (request._tag === "Request") {
66
+ requestClientMap.set(request.id, clientId);
67
+ }
68
+ const encoded = parser.encode(request);
69
+ if (encoded === undefined) return Effect.void;
70
+ const transformed = typeof encoded === "string" ? encoder.encode(encoded) : encoded;
71
+ return Effect.sync(() => send(exportName, transformed.buffer));
72
+ }
109
73
  };
110
74
  }));
111
75
  /**
112
76
  * @since 1.0.0
113
77
  * @category Layers
114
78
  */
115
- export const layerProtocolFrida = options => Layer.scoped(RpcClient.Protocol, makeProtocolFrida(options));
79
+ export const layerProtocolFrida = /*#__PURE__*/Layer.effect(RpcClient.Protocol, /*#__PURE__*/makeProtocolFrida());
116
80
  //# sourceMappingURL=FridaRpcClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FridaRpcClient.js","names":["RpcClient","RpcSerialization","FridaStream","Cause","Deferred","Effect","Function","Layer","Option","ParseResult","Predicate","Schema","Stream","constants","sharedPredicates","makeProtocolFrida","options","Protocol","make","fnUntraced","writeResponse","serialization","encoder","TextEncoder","parser","unsafeMake","clientIdDeferred","exportName","generateExportName","generateClientCallbackExportNameForServer","addFinalizer","sync","rpc","exports","maybeIncomingClientId","parsedClientId","decodeUnknown","Number","unsafeDone","connectionRequest","nodeRpcClientMakeConnectionRequestForServer","connectionRequestTimeout","clientId","send","pipe","flatMap","await","timeout","catchIf","isParseError","dieMessage","isTimeoutException","receivingPredicate","isTaggedForClient","receiveStream","receivingStreamShareOptions","replay","capacity","filterMap","unfiltered","message","fromNullable","data","none","runForEach","filtered","responses","decode","length","void","i","whileLoop","while","body","step","constVoid","defect","_tag","interruptible","forkScoped","sendHelper","encoded","encode","isUndefined","transformed","buffer","supportsAck","supportsTransferables","layerProtocolFrida","scoped"],"sources":["../../src/frida/FridaRpcClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FridaRpcClient.js","names":["Effect","Function","Layer","Random","RpcClient","RpcClientError","RpcSerialization","constants","makeProtocolFrida","Protocol","make","fnUntraced","writeResponse","clientIds","serialization","encoder","TextEncoder","parser","makeUnsafe","requestClientMap","Map","exportName","nextUUIDv4","connectionRequest","nodeRpcClientMakeConnectionRequestForServer","broadcast","response","forEach","id","discard","addFinalizer","sync","rpc","exports","data","responses","decode","length","Promise","resolve","i","whileLoop","step","constVoid","while","body","clientId","get","requestId","_tag","delete","pipe","runPromise","defect","error","reason","RpcClientDefect","message","cause","send","supportsAck","supportsTransferables","request","set","encoded","encode","undefined","void","transformed","buffer","layerProtocolFrida","effect"],"sources":["../../src/frida/FridaRpcClient.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;AAOA,OAAO,qBAAqB;AAK5B,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,SAAS,MAAM,+BAA+B;AAC1D,OAAO,KAAKC,cAAc,MAAM,oCAAoC;AACpE,OAAO,KAAKC,gBAAgB,MAAM,sCAAsC;AAExE,OAAO,KAAKC,SAAS,MAAM,wBAAwB;AAEnD;;;;AAIA,OAAO,MAAMC,iBAAiB,GAAGA,CAAA,KAK7BJ,SAAS,CAACK,QAAQ,CAACC,IAAI,CACnBV,MAAM,CAACW,UAAU,CAAC,WAAWC,aAAa,EAAEC,SAAS;EACjD,MAAMC,aAAa,GAAG,OAAOR,gBAAgB,CAACA,gBAAgB;EAE9D,MAAMS,OAAO,GAAG,IAAIC,WAAW,EAAE;EACjC,MAAMC,MAAM,GAAGH,aAAa,CAACI,UAAU,EAAE;EACzC,MAAMC,gBAAgB,GAAG,IAAIC,GAAG,EAAkB;EAElD,MAAMC,UAAU,GAAG,OAAOlB,MAAM,CAACmB,UAAU;EAC3C,MAAMC,iBAAiB,GAAGhB,SAAS,CAACiB,2CAA2C,CAACH,UAAU,CAAC;EAE3F,MAAMI,SAAS,GAAIC,QAAsC,IACrD1B,MAAM,CAAC2B,OAAO,CAACd,SAAS,EAAGe,EAAE,IAAKhB,aAAa,CAACgB,EAAE,EAAEF,QAAQ,CAAC,EAAE;IAAEG,OAAO,EAAE;EAAI,CAAE,CAAC;EAErF,OAAO7B,MAAM,CAAC8B,YAAY,CAAC,MAAM9B,MAAM,CAAC+B,IAAI,CAAC,MAAM,OAAOC,GAAG,CAACC,OAAO,CAACZ,UAAU,CAAC,CAAC,CAAC;EACnFW,GAAG,CAACC,OAAO,CAACZ,UAAU,CAAC,GAAIa,IAAyB,IAAmB;IACnE,IAAI;MACA,MAAMC,SAAS,GAAGlB,MAAM,CAACmB,MAAM,CAACF,IAAI,CAAwC;MAC5E,IAAIC,SAAS,CAACE,MAAM,KAAK,CAAC,EAAE,OAAOC,OAAO,CAACC,OAAO,EAAE;MACpD,IAAIC,CAAC,GAAG,CAAC;MACT,OAAOxC,MAAM,CAACyC,SAAS,CAAC;QACpBC,IAAI,EAAEzC,QAAQ,CAAC0C,SAAS;QACxBC,KAAK,EAAEA,CAAA,KAAMJ,CAAC,GAAGL,SAAS,CAACE,MAAM;QACjCQ,IAAI,EAAEA,CAAA,KAAK;UACP,MAAMnB,QAAQ,GAAGS,SAAS,CAACK,CAAC,EAAE,CAAE;UAChC,IAAI,WAAW,IAAId,QAAQ,EAAE;YACzB,MAAMoB,QAAQ,GAAG3B,gBAAgB,CAAC4B,GAAG,CAACrB,QAAQ,CAACsB,SAAS,CAAE;YAC1D,IAAItB,QAAQ,CAACuB,IAAI,KAAK,MAAM,EAAE9B,gBAAgB,CAAC+B,MAAM,CAACxB,QAAQ,CAACsB,SAAS,CAAC;YACzE,OAAOpC,aAAa,CAACkC,QAAQ,EAAEpB,QAAQ,CAAC;UAC5C,CAAC,MAAM,OAAOD,SAAS,CAACC,QAAQ,CAAC;QACrC;OACH,CAAC,CAACyB,IAAI,CAACnD,MAAM,CAACoD,UAAU,CAAC;IAC9B,CAAC,CAAC,OAAOC,MAAM,EAAE;MACb,OAAO5B,SAAS,CAAC;QACbwB,IAAI,EAAE,qBAAqB;QAC3BK,KAAK,EAAE,IAAIjD,cAAc,CAACA,cAAc,CAAC;UACrCkD,MAAM,EAAE,IAAIlD,cAAc,CAACmD,eAAe,CAAC;YACvCC,OAAO,EAAE,wBAAwB;YACjCC,KAAK,EAAEL;WACV;SACJ;OACJ,CAAC,CAACF,IAAI,CAACnD,MAAM,CAACoD,UAAU,CAAC;IAC9B;EACJ,CAAC;EAEDO,IAAI,CAACpC,iBAAiB,CAAC;EAEvB,OAAO;IACHqC,WAAW,EAAE,IAAI;IACjBC,qBAAqB,EAAE,KAAK;IAC5BF,IAAIA,CAACb,QAAQ,EAAEgB,OAAO;MAClB,IAAIA,OAAO,CAACb,IAAI,KAAK,SAAS,EAAE;QAC5B9B,gBAAgB,CAAC4C,GAAG,CAACD,OAAO,CAAClC,EAAE,EAAEkB,QAAQ,CAAC;MAC9C;MAEA,MAAMkB,OAAO,GAAG/C,MAAM,CAACgD,MAAM,CAACH,OAAO,CAAC;MACtC,IAAIE,OAAO,KAAKE,SAAS,EAAE,OAAOlE,MAAM,CAACmE,IAAI;MAC7C,MAAMC,WAAW,GAAG,OAAOJ,OAAO,KAAK,QAAQ,GAAGjD,OAAO,CAACkD,MAAM,CAACD,OAAO,CAAC,GAAGA,OAAO;MACnF,OAAOhE,MAAM,CAAC+B,IAAI,CAAC,MAAM4B,IAAI,CAACtC,UAAU,EAAG+C,WAAuC,CAACC,MAAM,CAAC,CAAC;IAC/F;GACH;AACL,CAAC,CAAC,CACL;AAEL;;;;AAIA,OAAO,MAAMC,kBAAkB,gBAC3BpE,KAAK,CAACqE,MAAM,CAACnE,SAAS,CAACK,QAAQ,eAAED,iBAAiB,EAAE,CAAC","ignoreList":[]}
@@ -5,26 +5,26 @@
5
5
  * @since 1.0.0
6
6
  */
7
7
  import "@efffrida/polyfills";
8
- import * as RpcSerialization from "@effect/rpc/RpcSerialization";
9
- import * as RpcServer from "@effect/rpc/RpcServer";
10
8
  import * as Effect from "effect/Effect";
11
9
  import * as Layer from "effect/Layer";
10
+ import * as RpcSerialization from "effect/unstable/rpc/RpcSerialization";
11
+ import * as RpcServer from "effect/unstable/rpc/RpcServer";
12
12
  /**
13
13
  * @since 1.0.0
14
14
  * @category Protocol
15
15
  */
16
- export declare const makeProtocolFrida: (options?: {
16
+ export declare const makeProtocolFridaNoSendRecv: (options?: {
17
17
  /** Generates server listener rpc exports for individual clients. */
18
18
  readonly generateExportName?: ((clientId: number) => string) | undefined;
19
19
  } | undefined) => Effect.Effect<{
20
- readonly protocol: RpcServer.Protocol["Type"];
21
- readonly rpcExport: () => Promise<number>;
20
+ readonly protocol: RpcServer.Protocol["Service"];
21
+ readonly rpcExport: () => Promise<string>;
22
22
  }, never, RpcSerialization.RpcSerialization>;
23
23
  /**
24
24
  * @since 1.0.0
25
25
  * @category Protocol
26
26
  */
27
- export declare const makeProtocolFridaWithExport: (options?: {
27
+ export declare const makeProtocolFrida: (options?: {
28
28
  /**
29
29
  * Name for the main rpc export that all clients start by
30
30
  * connecting to.
@@ -32,7 +32,7 @@ export declare const makeProtocolFridaWithExport: (options?: {
32
32
  readonly exportName?: string | undefined;
33
33
  /** Generates server listener rpc exports for individual clients. */
34
34
  readonly generateExportName?: ((clientId: number) => string) | undefined;
35
- } | undefined) => Effect.Effect<RpcServer.Protocol["Type"], never, RpcSerialization.RpcSerialization>;
35
+ } | undefined) => Effect.Effect<RpcServer.Protocol["Service"], never, RpcSerialization.RpcSerialization>;
36
36
  /**
37
37
  * @since 1.0.0
38
38
  * @category Layer
@@ -1 +1 @@
1
- {"version":3,"file":"FridaRpcServer.d.ts","sourceRoot":"","sources":["../../src/frida/FridaRpcServer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAMtC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC1B,UACM;IACI,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC5E,GACD,SAAS,KAChB,MAAM,CAAC,MAAM,CACZ;IACI,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C,EACD,KAAK,EACL,gBAAgB,CAAC,gBAAgB,CAqG/B,CAAC;AAEP;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GACpC,UACM;IACI;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC5E,GACD,SAAS,KAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CAK/E,CAAC;AAEP;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UACM;IACI;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC5E,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/frida/FridaRpcServer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,gBAAgB,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAC;AAI3D;;;GAGG;AACH,eAAO,MAAM,2BAA2B,GACpC,UACM;IACI,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC5E,GACD,SAAS,KAChB,MAAM,CAAC,MAAM,CACZ;IACI,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7C,EACD,KAAK,EACL,gBAAgB,CAAC,gBAAgB,CA6F/B,CAAC;AAEP;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC1B,UACM;IACI;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC5E,GACD,SAAS,KAChB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CAMlF,CAAC;AAEP;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UACM;IACI;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC5E,GACD,SAAS,KAChB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CACX,CAAC"}
@@ -5,80 +5,70 @@
5
5
  * @since 1.0.0
6
6
  */
7
7
  import "@efffrida/polyfills";
8
- import * as RpcMessage from "@effect/rpc/RpcMessage";
9
- import * as RpcSerialization from "@effect/rpc/RpcSerialization";
10
- import * as RpcServer from "@effect/rpc/RpcServer";
11
8
  import * as Effect from "effect/Effect";
12
9
  import * as Function from "effect/Function";
13
10
  import * as Layer from "effect/Layer";
14
- import * as Mailbox from "effect/Mailbox";
15
- import * as Predicate from "effect/Predicate";
16
- import * as constants from "../shared/constants.js";
11
+ import * as Queue from "effect/Queue";
12
+ import * as RpcMessage from "effect/unstable/rpc/RpcMessage";
13
+ import * as RpcSerialization from "effect/unstable/rpc/RpcSerialization";
14
+ import * as RpcServer from "effect/unstable/rpc/RpcServer";
15
+ import * as constants from "../shared/Constants.js";
17
16
  /**
18
17
  * @since 1.0.0
19
18
  * @category Protocol
20
19
  */
21
- export const makeProtocolFrida = options => Effect.gen(function* () {
22
- const encoder = new TextEncoder();
23
- const disconnects = yield* Mailbox.make();
20
+ export const makeProtocolFridaNoSendRecv = options => Effect.gen(function* () {
24
21
  const serialization = yield* RpcSerialization.RpcSerialization;
22
+ const disconnects = yield* Queue.unbounded();
23
+ const parser = serialization.makeUnsafe();
24
+ const encoder = new TextEncoder();
25
25
  let clientId = 0;
26
26
  const clientIds = new Set();
27
27
  const clients = new Map();
28
28
  let writeRequest;
29
29
  const makeExportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
30
- // Listen for new clients on the main rpc export
30
+ const writeRaw = data => {
31
+ const transformed = typeof data === "string" ? encoder.encode(data) : data;
32
+ return send(void 0, transformed.buffer);
33
+ };
34
+ const write = response => {
35
+ try {
36
+ const encoded = parser.encode(response);
37
+ if (encoded === undefined) return;
38
+ return writeRaw(encoded);
39
+ } catch (cause) {
40
+ const encoded = parser.encode(RpcMessage.ResponseDefectEncoded(cause));
41
+ return writeRaw(encoded);
42
+ }
43
+ };
44
+ // @effect-diagnostics-next-line runEffectInsideEffect:off
31
45
  const rpcExport = Effect.gen(function* () {
32
46
  const id = ++clientId;
33
- const parser = serialization.unsafeMake();
34
- const writeRaw = data => {
35
- const transformed = typeof data === "string" ? encoder.encode(data) : data;
36
- return send({
37
- clientId: id
38
- }, transformed.buffer);
39
- };
40
- const write = response => {
41
- try {
42
- const encoded = parser.encode(
43
- // TODO: handle defects on the node client better
44
- response._tag === "Defect" && response.defect instanceof Error ? RpcMessage.ResponseDefectEncoded({
45
- stack: response.defect.stack,
46
- cause: response.defect.cause,
47
- ...response.defect
48
- }) : response);
49
- if (Predicate.isNotUndefined(encoded)) {
50
- return writeRaw(encoded);
51
- }
52
- } catch (cause) {
53
- const encoded = parser.encode(RpcMessage.ResponseDefectEncoded(cause));
54
- return writeRaw(encoded);
55
- }
56
- };
57
- clientIds.add(id);
58
47
  clients.set(id, {
59
48
  write
60
49
  });
50
+ clientIds.add(id);
61
51
  const onMessage = input => {
62
- const data = typeof input === "string" ? input : Uint8Array.from(Object.values(input));
63
52
  try {
53
+ const data = typeof input === "string" ? input : Uint8Array.from(Object.values(input));
64
54
  const decoded = parser.decode(data);
65
55
  if (decoded.length === 0) return Effect.void;
66
56
  let i = 0;
67
57
  return Effect.whileLoop({
68
58
  while: () => i < decoded.length,
59
+ step: Function.constVoid,
69
60
  body() {
70
61
  const message = decoded[i++];
71
62
  return writeRequest(id, message);
72
- },
73
- step: Function.constVoid
63
+ }
74
64
  });
75
65
  } catch (cause) {
76
66
  return Effect.sync(() => writeRaw(parser.encode(RpcMessage.ResponseDefectEncoded(cause))));
77
67
  }
78
68
  };
79
69
  rpc.exports[makeExportName(id)] = data => Effect.runPromise(onMessage(data));
80
- return id;
81
- });
70
+ return makeExportName(id);
71
+ }).pipe(export_ => () => Effect.runPromise(export_));
82
72
  const protocol = yield* RpcServer.Protocol.make(writeRequest_ => {
83
73
  writeRequest = writeRequest_;
84
74
  return Effect.succeed({
@@ -89,9 +79,6 @@ export const makeProtocolFrida = options => Effect.gen(function* () {
89
79
  return Effect.sync(() => client.write(response));
90
80
  },
91
81
  end(clientId) {
92
- clientIds.delete(clientId); // TODO: Is this required?
93
- clients.delete(clientId); // TODO: Is this required?
94
- const makeExportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
95
82
  delete rpc.exports[makeExportName(clientId)];
96
83
  return Effect.void;
97
84
  },
@@ -104,20 +91,21 @@ export const makeProtocolFrida = options => Effect.gen(function* () {
104
91
  });
105
92
  return {
106
93
  protocol,
107
- rpcExport: () => Effect.runPromise(rpcExport)
94
+ rpcExport
108
95
  };
109
96
  });
110
97
  /**
111
98
  * @since 1.0.0
112
99
  * @category Protocol
113
100
  */
114
- export const makeProtocolFridaWithExport = options => Effect.gen(function* () {
101
+ export const makeProtocolFrida = options => Effect.gen(function* () {
102
+ const protocolOptions = {
103
+ generateExportName: options?.generateExportName
104
+ };
115
105
  const {
116
106
  protocol,
117
107
  rpcExport
118
- } = yield* makeProtocolFrida({
119
- generateExportName: options?.generateExportName
120
- });
108
+ } = yield* makeProtocolFridaNoSendRecv(protocolOptions);
121
109
  rpc.exports[options?.exportName ?? constants.defaultServerMainExportName] = rpcExport;
122
110
  return protocol;
123
111
  });
@@ -125,5 +113,5 @@ export const makeProtocolFridaWithExport = options => Effect.gen(function* () {
125
113
  * @since 1.0.0
126
114
  * @category Layer
127
115
  */
128
- export const layerProtocolFrida = options => Layer.effect(RpcServer.Protocol, makeProtocolFridaWithExport(options));
116
+ export const layerProtocolFrida = options => Layer.effect(RpcServer.Protocol, makeProtocolFrida(options));
129
117
  //# sourceMappingURL=FridaRpcServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FridaRpcServer.js","names":["RpcMessage","RpcSerialization","RpcServer","Effect","Function","Layer","Mailbox","Predicate","constants","makeProtocolFrida","options","gen","encoder","TextEncoder","disconnects","make","serialization","clientId","clientIds","Set","clients","Map","writeRequest","makeExportName","generateExportName","generateServerExportNameForClient","rpcExport","id","parser","unsafeMake","writeRaw","data","transformed","encode","send","buffer","write","response","encoded","_tag","defect","Error","ResponseDefectEncoded","stack","cause","isNotUndefined","add","set","onMessage","input","Uint8Array","from","Object","values","decoded","decode","length","void","i","whileLoop","while","body","message","step","constVoid","sync","rpc","exports","runPromise","protocol","Protocol","writeRequest_","succeed","client","get","end","delete","initialMessage","succeedNone","supportsAck","supportsTransferables","supportsSpanPropagation","makeProtocolFridaWithExport","exportName","defaultServerMainExportName","layerProtocolFrida","effect"],"sources":["../../src/frida/FridaRpcServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FridaRpcServer.js","names":["Effect","Function","Layer","Queue","RpcMessage","RpcSerialization","RpcServer","constants","makeProtocolFridaNoSendRecv","options","gen","serialization","disconnects","unbounded","parser","makeUnsafe","encoder","TextEncoder","clientId","clientIds","Set","clients","Map","writeRequest","makeExportName","generateExportName","generateServerExportNameForClient","writeRaw","data","transformed","encode","send","buffer","write","response","encoded","undefined","cause","ResponseDefectEncoded","rpcExport","id","set","add","onMessage","input","Uint8Array","from","Object","values","decoded","decode","length","void","i","whileLoop","while","step","constVoid","body","message","sync","rpc","exports","runPromise","pipe","export_","protocol","Protocol","make","writeRequest_","succeed","client","get","end","initialMessage","succeedNone","supportsAck","supportsTransferables","supportsSpanPropagation","makeProtocolFrida","protocolOptions","exportName","defaultServerMainExportName","layerProtocolFrida","effect"],"sources":["../../src/frida/FridaRpcServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -4,13 +4,13 @@
4
4
  *
5
5
  * @since 1.0.0
6
6
  */
7
- import type * as FridaSessionError from "@efffrida/frida-tools/FridaSessionError";
8
7
  import type * as Scope from "effect/Scope";
9
- import * as RpcClient from "@effect/rpc/RpcClient";
10
- import * as RpcSerialization from "@effect/rpc/RpcSerialization";
11
- import * as FridaScript from "@efffrida/frida-tools/FridaScript";
12
8
  import * as Effect from "effect/Effect";
13
9
  import * as Layer from "effect/Layer";
10
+ import * as RpcClient from "effect/unstable/rpc/RpcClient";
11
+ import * as RpcSerialization from "effect/unstable/rpc/RpcSerialization";
12
+ import type * as FridaSessionError from "@efffrida/frida-tools/FridaSessionError";
13
+ import * as FridaScript from "@efffrida/frida-tools/FridaScript";
14
14
  /**
15
15
  * @since 1.0.0
16
16
  * @category Protocol
@@ -21,9 +21,7 @@ export declare const makeProtocolFrida: (options?: {
21
21
  * connecting to.
22
22
  */
23
23
  readonly exportName?: string | undefined;
24
- /** Generates server listener rpc exports for individual clients. */
25
- readonly generateExportName?: ((clientId: number) => string) | undefined;
26
- } | undefined) => Effect.Effect<RpcClient.Protocol["Type"], FridaSessionError.FridaSessionError, RpcSerialization.RpcSerialization | FridaScript.FridaScript | Scope.Scope>;
24
+ } | undefined) => Effect.Effect<RpcClient.Protocol["Service"], FridaSessionError.FridaSessionError, RpcSerialization.RpcSerialization | FridaScript.FridaScript | Scope.Scope>;
27
25
  /**
28
26
  * @since 1.0.0
29
27
  * @category Layers
@@ -31,10 +29,8 @@ export declare const makeProtocolFrida: (options?: {
31
29
  export declare const layerProtocolFrida: (options?: {
32
30
  /**
33
31
  * Name for the main rpc export that all clients start by
34
- * connecting to.
32
+ * connecting to to inform the script of their client id.
35
33
  */
36
34
  readonly exportName?: string | undefined;
37
- /** Generates server listener rpc exports for individual clients. */
38
- readonly generateExportName?: ((clientId: number) => string) | undefined;
39
35
  } | undefined) => Layer.Layer<RpcClient.Protocol, FridaSessionError.FridaSessionError, RpcSerialization.RpcSerialization | FridaScript.FridaScript>;
40
36
  //# sourceMappingURL=FridaRpcClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FridaRpcClient.d.ts","sourceRoot":"","sources":["../../src/node/FridaRpcClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,KAAK,iBAAiB,MAAM,yCAAyC,CAAC;AAClF,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAE3C,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;AAStC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC1B,UACM;IACI;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAC5E,GACD,SAAS,KAChB,MAAM,CAAC,MAAM,CACZ,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC1B,iBAAiB,CAAC,iBAAiB,EACnC,gBAAgB,CAAC,gBAAgB,GAAG,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAwExE,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UACM;IACI;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEzC,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,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,CACE,CAAC"}
1
+ {"version":3,"file":"FridaRpcClient.d.ts","sourceRoot":"","sources":["../../src/node/FridaRpcClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAI3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAKtC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,gBAAgB,MAAM,sCAAsC,CAAC;AAEzE,OAAO,KAAK,KAAK,iBAAiB,MAAM,yCAAyC,CAAC;AAElF,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAC;AAIjE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAC1B,UACM;IACI;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C,GACD,SAAS,KAChB,MAAM,CAAC,MAAM,CACZ,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC7B,iBAAiB,CAAC,iBAAiB,EACnC,gBAAgB,CAAC,gBAAgB,GAAG,WAAW,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAwFxE,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UACM;IACI;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5C,GACD,SAAS,KAChB,KAAK,CAAC,KAAK,CACV,SAAS,CAAC,QAAQ,EAClB,iBAAiB,CAAC,iBAAiB,EACnC,gBAAgB,CAAC,gBAAgB,GAAG,WAAW,CAAC,WAAW,CACE,CAAC"}