@efffrida/rpc 0.0.15 → 0.0.16

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.
@@ -4,6 +4,7 @@
4
4
  *
5
5
  * @since 1.0.0
6
6
  */
7
+ import "@efffrida/polyfills";
7
8
  import type * as Duration from "effect/Duration";
8
9
  import type * as Scope from "effect/Scope";
9
10
  import * as RpcClient from "@effect/rpc/RpcClient";
@@ -1 +1 @@
1
- {"version":3,"file":"FridaRpcClient.d.ts","sourceRoot":"","sources":["../../src/frida/FridaRpcClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,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;AAG7B,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"}
@@ -4,6 +4,7 @@
4
4
  *
5
5
  * @since 1.0.0
6
6
  */
7
+ import "@efffrida/polyfills";
7
8
  import * as RpcClient from "@effect/rpc/RpcClient";
8
9
  import * as RpcSerialization from "@effect/rpc/RpcSerialization";
9
10
  import * as FridaStream from "@efffrida/platform/Stream";
@@ -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":["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":[]}
@@ -4,6 +4,7 @@
4
4
  *
5
5
  * @since 1.0.0
6
6
  */
7
+ import "@efffrida/polyfills";
7
8
  import * as RpcSerialization from "@effect/rpc/RpcSerialization";
8
9
  import * as RpcServer from "@effect/rpc/RpcServer";
9
10
  import * as Effect from "effect/Effect";
@@ -1 +1 @@
1
- {"version":3,"file":"FridaRpcServer.d.ts","sourceRoot":"","sources":["../../src/frida/FridaRpcServer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,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,CAwF/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;AAG7B,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,CA0F/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"}
@@ -4,6 +4,7 @@
4
4
  *
5
5
  * @since 1.0.0
6
6
  */
7
+ import "@efffrida/polyfills";
7
8
  import * as RpcMessage from "@effect/rpc/RpcMessage";
8
9
  import * as RpcSerialization from "@effect/rpc/RpcSerialization";
9
10
  import * as RpcServer from "@effect/rpc/RpcServer";
@@ -25,10 +26,10 @@ export const makeProtocolFrida = options => Effect.gen(function* () {
25
26
  const clientIds = new Set();
26
27
  const clients = new Map();
27
28
  let writeRequest;
28
- const exportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
29
+ const makeExportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
29
30
  // Listen for new clients on the main rpc export
30
31
  const rpcExport = Effect.gen(function* () {
31
- const id = clientId++;
32
+ const id = ++clientId;
32
33
  const parser = serialization.unsafeMake();
33
34
  const writeRaw = data => {
34
35
  const transformed = typeof data === "string" ? encoder.encode(data) : data;
@@ -49,7 +50,8 @@ export const makeProtocolFrida = options => Effect.gen(function* () {
49
50
  clients.set(id, {
50
51
  write
51
52
  });
52
- const onMessage = data => {
53
+ const onMessage = input => {
54
+ const data = typeof input === "string" ? input : Uint8Array.from(Object.values(input));
53
55
  try {
54
56
  const decoded = parser.decode(data);
55
57
  if (decoded.length === 0) return Effect.void;
@@ -66,8 +68,8 @@ export const makeProtocolFrida = options => Effect.gen(function* () {
66
68
  return Effect.sync(() => writeRaw(parser.encode(RpcMessage.ResponseDefectEncoded(cause))));
67
69
  }
68
70
  };
69
- rpc.exports[exportName(clientId)] = data => Effect.runPromise(onMessage(data));
70
- return clientId;
71
+ rpc.exports[makeExportName(id)] = data => Effect.runPromise(onMessage(data));
72
+ return id;
71
73
  });
72
74
  const protocol = yield* RpcServer.Protocol.make(writeRequest_ => {
73
75
  writeRequest = writeRequest_;
@@ -81,8 +83,8 @@ export const makeProtocolFrida = options => Effect.gen(function* () {
81
83
  end(clientId) {
82
84
  clientIds.delete(clientId); // TODO: Is this required?
83
85
  clients.delete(clientId); // TODO: Is this required?
84
- const exportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
85
- delete rpc.exports[exportName(clientId)];
86
+ const makeExportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
87
+ delete rpc.exports[makeExportName(clientId)];
86
88
  return Effect.void;
87
89
  },
88
90
  clientIds: Effect.sync(() => clientIds),
@@ -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","exportName","generateExportName","generateServerExportNameForClient","rpcExport","id","parser","unsafeMake","writeRaw","data","transformed","encode","send","buffer","write","response","encoded","isNotUndefined","cause","ResponseDefectEncoded","add","set","onMessage","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","defaultServerMainExportName","layerProtocolFrida","effect"],"sources":["../../src/frida/FridaRpcServer.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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","isNotUndefined","cause","ResponseDefectEncoded","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":[]}
@@ -16,13 +16,25 @@ import * as Layer from "effect/Layer";
16
16
  * @category Protocol
17
17
  */
18
18
  export declare const makeProtocolFrida: (options?: {
19
+ /**
20
+ * Name for the main rpc export that all clients start by
21
+ * connecting to.
22
+ */
19
23
  readonly exportName?: string | undefined;
24
+ /** Generates server listener rpc exports for individual clients. */
25
+ readonly generateExportName?: ((clientId: number) => string) | undefined;
20
26
  } | undefined) => Effect.Effect<RpcClient.Protocol["Type"], FridaSessionError.FridaSessionError, RpcSerialization.RpcSerialization | FridaScript.FridaScript | Scope.Scope>;
21
27
  /**
22
28
  * @since 1.0.0
23
29
  * @category Layers
24
30
  */
25
31
  export declare const layerProtocolFrida: (options?: {
32
+ /**
33
+ * Name for the main rpc export that all clients start by
34
+ * connecting to.
35
+ */
26
36
  readonly exportName?: string | undefined;
37
+ /** Generates server listener rpc exports for individual clients. */
38
+ readonly generateExportName?: ((clientId: number) => string) | undefined;
27
39
  } | undefined) => Layer.Layer<RpcClient.Protocol, FridaSessionError.FridaSessionError, RpcSerialization.RpcSerialization | FridaScript.FridaScript>;
28
40
  //# 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,UAAU;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,SAAS,KACnE,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,CAyExE,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC3B,UAAU;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAAG,SAAS,KACnE,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;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"}
@@ -15,7 +15,7 @@ import * as ParseResult from "effect/ParseResult";
15
15
  import * as Predicate from "effect/Predicate";
16
16
  import * as Schema from "effect/Schema";
17
17
  import * as Stream from "effect/Stream";
18
- import * as shared from "../shared/constants.js";
18
+ import * as constants from "../shared/constants.js";
19
19
  /**
20
20
  * @since 1.0.0
21
21
  * @category Protocol
@@ -23,15 +23,15 @@ import * as shared from "../shared/constants.js";
23
23
  export const makeProtocolFrida = options => RpcClient.Protocol.make(Effect.fnUntraced(function* (writeResponse) {
24
24
  const script = yield* FridaScript.FridaScript;
25
25
  const serialization = yield* RpcSerialization.RpcSerialization;
26
- const encoder = new TextEncoder();
27
26
  const parser = serialization.unsafeMake();
28
- const exportName = options?.exportName ?? shared.defaultServerMainExportName;
27
+ const mainExportName = options?.exportName ?? constants.defaultServerMainExportName;
28
+ const makeExportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
29
29
  /**
30
30
  * Obtain a client id from the frida script export, this will allow
31
31
  * us to filter future messages for ours since the script channels
32
32
  * are shared.
33
33
  */
34
- const clientId = yield* Effect.catchIf(script.callExport(exportName, Schema.Number)(), ParseResult.isParseError, () => Effect.dieMessage("Failed to obtain client ID from Frida script export"));
34
+ const clientId = yield* Effect.catchIf(script.callExport(mainExportName, Schema.Number)(), ParseResult.isParseError, () => Effect.dieMessage("Failed to obtain client ID from Frida script export"));
35
35
  const isClientId = Predicate.compose(Predicate.isNumber, id => id === clientId);
36
36
  const receivingPredicate = Predicate.compose(Predicate.isUnknown, Predicate.struct({
37
37
  clientId: isClientId
@@ -67,10 +67,7 @@ export const makeProtocolFrida = options => RpcClient.Protocol.make(Effect.fnUnt
67
67
  const send = Effect.fnUntraced(function* (message) {
68
68
  const encoded = parser.encode(message);
69
69
  if (Predicate.isUndefined(encoded)) return;
70
- const transformed = typeof encoded === "string" ? encoder.encode(encoded) : encoded;
71
- script.script.post({
72
- clientId
73
- }, Buffer.from(transformed));
70
+ yield* script.callExport(makeExportName(clientId), Schema.Void)(encoded).pipe(Effect.orDie);
74
71
  });
75
72
  return {
76
73
  send,
@@ -1 +1 @@
1
- {"version":3,"file":"FridaRpcClient.js","names":["RpcClient","RpcSerialization","FridaScript","Effect","Function","Layer","Option","ParseResult","Predicate","Schema","Stream","shared","makeProtocolFrida","options","Protocol","make","fnUntraced","writeResponse","script","serialization","encoder","TextEncoder","parser","unsafeMake","exportName","defaultServerMainExportName","clientId","catchIf","callExport","Number","isParseError","dieMessage","isClientId","compose","isNumber","id","receivingPredicate","isUnknown","struct","stream","pipe","filterMap","unfiltered","message","data","none","runForEach","filtered","responses","decode","length","void","i","whileLoop","while","body","step","constVoid","defect","_tag","interruptible","forkScoped","send","encoded","encode","isUndefined","transformed","post","Buffer","from","supportsAck","supportsTransferables","layerProtocolFrida","scoped"],"sources":["../../src/node/FridaRpcClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"FridaRpcClient.js","names":["RpcClient","RpcSerialization","FridaScript","Effect","Function","Layer","Option","ParseResult","Predicate","Schema","Stream","constants","makeProtocolFrida","options","Protocol","make","fnUntraced","writeResponse","script","serialization","parser","unsafeMake","mainExportName","exportName","defaultServerMainExportName","makeExportName","generateExportName","generateServerExportNameForClient","clientId","catchIf","callExport","Number","isParseError","dieMessage","isClientId","compose","isNumber","id","receivingPredicate","isUnknown","struct","stream","pipe","filterMap","unfiltered","message","data","none","runForEach","filtered","responses","decode","length","void","i","whileLoop","while","body","step","constVoid","defect","_tag","interruptible","forkScoped","send","encoded","encode","isUndefined","Void","orDie","supportsAck","supportsTransferables","layerProtocolFrida","scoped"],"sources":["../../src/node/FridaRpcClient.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.15",
3
+ "version": "0.0.16",
4
4
  "description": "effect rpc-frida",
5
5
  "keywords": [
6
6
  "frida.re",
@@ -19,9 +19,9 @@
19
19
  "type": "module",
20
20
  "exports": {
21
21
  "./package.json": "./package.json",
22
- "./node": "./dist/node/index.ts",
23
- "./frida": "./dist/frida/index.ts",
24
- "./*": "./dist/*.ts",
22
+ "./node": "./dist/node/index.js",
23
+ "./frida": "./dist/frida/index.js",
24
+ "./*": "./dist/*.js",
25
25
  "./internal/*": null,
26
26
  "./shared/*": null,
27
27
  "./*/index": null
@@ -34,28 +34,30 @@
34
34
  "dist/**/*.d.ts.map"
35
35
  ],
36
36
  "dependencies": {
37
- "@efffrida/frida-tools": "^0.0.15"
37
+ "@efffrida/frida-tools": "^0.0.16",
38
+ "@efffrida/polyfills": "0.0.1"
38
39
  },
39
40
  "devDependencies": {
40
- "@effect/cluster": "0.52.1",
41
- "@effect/experimental": "0.57.0",
42
- "@effect/platform": "0.93.0",
43
- "@effect/platform-node": "0.100.0",
44
- "@effect/rpc": "0.72.1",
45
- "@effect/sql": "0.48.0",
41
+ "@effect/cluster": "0.54.0",
42
+ "@effect/experimental": "0.57.8",
43
+ "@effect/platform": "0.93.5",
44
+ "@effect/platform-node": "0.102.0",
45
+ "@effect/rpc": "0.72.2",
46
+ "@effect/sql": "0.48.5",
46
47
  "@effect/vitest": "0.27.0",
47
- "@effect/workflow": "0.12.1",
48
+ "@effect/workflow": "0.14.0",
48
49
  "@types/frida-gum": "19.0.1",
49
- "@types/node": "24.10.0",
50
- "core-js": "3.46.0",
51
- "effect": "3.19.0",
52
- "vitest": "4.0.7",
53
- "@efffrida/platform": "0.0.13"
50
+ "@types/node": "24.10.1",
51
+ "effect": "3.19.8",
52
+ "frida": "17.5.1",
53
+ "vitest": "4.0.14",
54
+ "@efffrida/platform": "0.0.14",
55
+ "@efffrida/vitest-pool": "0.0.2"
54
56
  },
55
57
  "peerDependencies": {
56
- "@effect/platform": "0.93.0",
57
- "@effect/rpc": "0.72.1",
58
- "effect": "3.19.0"
58
+ "@effect/platform": "0.93.5",
59
+ "@effect/rpc": "0.72.2",
60
+ "effect": "3.19.8"
59
61
  },
60
62
  "publishConfig": {
61
63
  "access": "public"
@@ -5,6 +5,8 @@
5
5
  * @since 1.0.0
6
6
  */
7
7
 
8
+ import "@efffrida/polyfills";
9
+
8
10
  import type * as RpcMessage from "@effect/rpc/RpcMessage";
9
11
  import type * as Duration from "effect/Duration";
10
12
  import type * as Scope from "effect/Scope";
@@ -5,6 +5,8 @@
5
5
  * @since 1.0.0
6
6
  */
7
7
 
8
+ import "@efffrida/polyfills";
9
+
8
10
  import * as RpcMessage from "@effect/rpc/RpcMessage";
9
11
  import * as RpcSerialization from "@effect/rpc/RpcSerialization";
10
12
  import * as RpcServer from "@effect/rpc/RpcServer";
@@ -45,11 +47,11 @@ export const makeProtocolFrida = (
45
47
  const clients = new Map<number, { readonly write: (bytes: RpcMessage.FromServerEncoded) => void }>();
46
48
 
47
49
  let writeRequest!: (clientId: number, message: RpcMessage.FromClientEncoded) => Effect.Effect<void>;
48
- const exportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
50
+ const makeExportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
49
51
 
50
52
  // Listen for new clients on the main rpc export
51
53
  const rpcExport = Effect.gen(function* () {
52
- const id = clientId++;
54
+ const id = ++clientId;
53
55
  const parser = serialization.unsafeMake();
54
56
 
55
57
  const writeRaw = (data: string | Uint8Array): void => {
@@ -69,7 +71,9 @@ export const makeProtocolFrida = (
69
71
  clientIds.add(id);
70
72
  clients.set(id, { write });
71
73
 
72
- const onMessage = (data: string | Uint8Array): Effect.Effect<void, never, never> => {
74
+ const onMessage = (input: string | Record<number, string>): Effect.Effect<void, never, never> => {
75
+ const data = typeof input === "string" ? input : Uint8Array.from(Object.values(input));
76
+
73
77
  try {
74
78
  const decoded = parser.decode(data) as ReadonlyArray<RpcMessage.FromClientEncoded>;
75
79
  if (decoded.length === 0) return Effect.void;
@@ -87,10 +91,10 @@ export const makeProtocolFrida = (
87
91
  }
88
92
  };
89
93
 
90
- rpc.exports[exportName(clientId)] = (data: string | Uint8Array): Promise<void> =>
94
+ rpc.exports[makeExportName(id)] = (data: string | Record<number, string>): Promise<void> =>
91
95
  Effect.runPromise(onMessage(data));
92
96
 
93
- return clientId;
97
+ return id;
94
98
  });
95
99
 
96
100
  const protocol = yield* RpcServer.Protocol.make((writeRequest_) => {
@@ -105,8 +109,8 @@ export const makeProtocolFrida = (
105
109
  end(clientId) {
106
110
  clientIds.delete(clientId); // TODO: Is this required?
107
111
  clients.delete(clientId); // TODO: Is this required?
108
- const exportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
109
- delete rpc.exports[exportName(clientId)];
112
+ const makeExportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
113
+ delete rpc.exports[makeExportName(clientId)];
110
114
  return Effect.void;
111
115
  },
112
116
  clientIds: Effect.sync(() => clientIds),
@@ -21,14 +21,25 @@ import * as Predicate from "effect/Predicate";
21
21
  import * as Schema from "effect/Schema";
22
22
  import * as Stream from "effect/Stream";
23
23
 
24
- import * as shared from "../shared/constants.ts";
24
+ import * as constants from "../shared/constants.ts";
25
25
 
26
26
  /**
27
27
  * @since 1.0.0
28
28
  * @category Protocol
29
29
  */
30
30
  export const makeProtocolFrida = (
31
- options?: { readonly exportName?: string | undefined } | undefined
31
+ options?:
32
+ | {
33
+ /**
34
+ * Name for the main rpc export that all clients start by
35
+ * connecting to.
36
+ */
37
+ readonly exportName?: string | undefined;
38
+
39
+ /** Generates server listener rpc exports for individual clients. */
40
+ readonly generateExportName?: ((clientId: number) => string) | undefined;
41
+ }
42
+ | undefined
32
43
  ): Effect.Effect<
33
44
  RpcClient.Protocol["Type"],
34
45
  FridaSessionError.FridaSessionError,
@@ -39,9 +50,9 @@ export const makeProtocolFrida = (
39
50
  const script = yield* FridaScript.FridaScript;
40
51
  const serialization = yield* RpcSerialization.RpcSerialization;
41
52
 
42
- const encoder = new TextEncoder();
43
53
  const parser = serialization.unsafeMake();
44
- const exportName = options?.exportName ?? shared.defaultServerMainExportName;
54
+ const mainExportName = options?.exportName ?? constants.defaultServerMainExportName;
55
+ const makeExportName = options?.generateExportName ?? constants.generateServerExportNameForClient;
45
56
 
46
57
  /**
47
58
  * Obtain a client id from the frida script export, this will allow
@@ -49,7 +60,7 @@ export const makeProtocolFrida = (
49
60
  * are shared.
50
61
  */
51
62
  const clientId = yield* Effect.catchIf(
52
- script.callExport(exportName, Schema.Number)(),
63
+ script.callExport(mainExportName, Schema.Number)(),
53
64
  ParseResult.isParseError,
54
65
  () => Effect.dieMessage("Failed to obtain client ID from Frida script export")
55
66
  );
@@ -95,8 +106,7 @@ export const makeProtocolFrida = (
95
106
  const send = Effect.fnUntraced(function* (message: RpcMessage.FromClientEncoded) {
96
107
  const encoded = parser.encode(message);
97
108
  if (Predicate.isUndefined(encoded)) return;
98
- const transformed = typeof encoded === "string" ? encoder.encode(encoded) : encoded;
99
- script.script.post({ clientId }, Buffer.from(transformed));
109
+ yield* script.callExport(makeExportName(clientId), Schema.Void)(encoded).pipe(Effect.orDie);
100
110
  });
101
111
 
102
112
  return {
@@ -112,7 +122,18 @@ export const makeProtocolFrida = (
112
122
  * @category Layers
113
123
  */
114
124
  export const layerProtocolFrida = (
115
- options?: { readonly exportName?: string | undefined } | undefined
125
+ options?:
126
+ | {
127
+ /**
128
+ * Name for the main rpc export that all clients start by
129
+ * connecting to.
130
+ */
131
+ readonly exportName?: string | undefined;
132
+
133
+ /** Generates server listener rpc exports for individual clients. */
134
+ readonly generateExportName?: ((clientId: number) => string) | undefined;
135
+ }
136
+ | undefined
116
137
  ): Layer.Layer<
117
138
  RpcClient.Protocol,
118
139
  FridaSessionError.FridaSessionError,