frida_rs/plumbing/
frida.rs1use crate::plumbing::nativepointer::NativePointer;
2use wasm_bindgen::prelude::*;
3use wasm_bindgen::JsCast;
4
5#[wasm_bindgen]
6extern "C" {
7 #[wasm_bindgen(js_namespace = Frida)]
8 pub static version: String;
9
10 #[wasm_bindgen(js_namespace = Frida, js_name = heapSize)]
11 pub static heap_size: usize;
12
13 #[wasm_bindgen(js_name = hexdump)]
14 pub fn hexdump(target: &NativePointer) -> String;
15
16 #[wasm_bindgen(js_name = hexdump)]
17 pub fn hexdump_arraybuffer(target: &ArrayBuffer) -> String;
18
19 #[wasm_bindgen(js_name = send)]
20 pub fn send(message: &JsValue, data: &JsValue);
21
22 #[wasm_bindgen(js_name = recv)]
23 pub fn recv(callback: &js_sys::Function);
24
25 #[wasm_bindgen(js_name = recv)]
26 pub fn recv_with_type(type_filter: &str, callback: &js_sys::Function);
27
28 #[wasm_bindgen]
33 #[derive(Debug)]
34 pub type RecvMessage;
35
36 #[wasm_bindgen(js_name = ArrayBuffer)]
37 #[derive(Debug)]
38 pub type ArrayBuffer;
39
40 #[wasm_bindgen(method, js_name = unwrap)]
41 pub fn unwrap(this: &ArrayBuffer) -> NativePointer;
42}
43
44impl RecvMessage {
45 pub fn into_serde<T>(self) -> serde_json::Result<T>
46 where
47 T: for<'a> serde::de::Deserialize<'a>,
48 {
49 let s = JsValue::unchecked_from_js_ref(&self);
50 s.into_serde()
51 }
52}