Skip to main content

workflow_node/node_sys/class/fs/
read_stream.rs

1use crate::node_sys::interface::ReadableStream;
2use js_sys::Function;
3use wasm_bindgen::{JsCast, prelude::*};
4
5#[wasm_bindgen(module = "fs")]
6extern "C" {
7    #[wasm_bindgen(extends = ReadableStream)]
8    #[derive(Clone, Debug)]
9    pub type ReadStream;
10
11    //******************//
12    // Instance Methods //
13    //******************//
14
15    #[wasm_bindgen(method, getter, js_name = "bytesRead")]
16    pub fn bytes_read(this: &ReadStream) -> f64;
17
18    #[wasm_bindgen(method, getter)]
19    pub fn path(this: &ReadStream) -> JsValue; // Buffer | string
20
21    #[wasm_bindgen(method, getter)]
22    pub fn pending(this: &ReadStream) -> bool;
23}
24
25//******************************//
26// Instance Methods (Overloads) //
27//******************************//
28
29// Plain Rust convenience wrappers (not `#[wasm_bindgen]`): they call the
30// inherited extern methods and `unchecked_into()`. wasm-bindgen >= 0.2.126
31// rejects a `#[wasm_bindgen] impl` on an *imported* extern type ("class
32// ReadStream referenced by an impl block does not match any exported struct").
33impl ReadStream {
34    pub fn add_listener_with_open(&self, listener: &Function) -> ReadStream {
35        self.add_listener("open", listener).unchecked_into()
36    }
37
38    pub fn add_listener_with_close(&self, listener: &Function) -> ReadStream {
39        self.add_listener("close", listener).unchecked_into()
40    }
41
42    pub fn on_with_open(&self, listener: &Function) -> ReadStream {
43        self.on("open", listener).unchecked_into()
44    }
45
46    pub fn on_with_close(&self, listener: &Function) -> ReadStream {
47        self.on("close", listener).unchecked_into()
48    }
49
50    pub fn once_with_open(&self, listener: &Function) -> ReadStream {
51        self.once("open", listener).unchecked_into()
52    }
53
54    pub fn once_with_close(&self, listener: &Function) -> ReadStream {
55        self.once("close", listener).unchecked_into()
56    }
57
58    pub fn prepend_listener_with_open(&self, listener: &Function) -> ReadStream {
59        self.prepend_listener("open", listener).unchecked_into()
60    }
61
62    pub fn prepend_listener_with_close(&self, listener: &Function) -> ReadStream {
63        self.prepend_listener("close", listener).unchecked_into()
64    }
65
66    pub fn prepend_once_listener_with_open(&self, listener: &Function) -> ReadStream {
67        self.prepend_once_listener("open", listener)
68            .unchecked_into()
69    }
70
71    pub fn prepend_once_listener_with_close(&self, listener: &Function) -> ReadStream {
72        self.prepend_once_listener("close", listener)
73            .unchecked_into()
74    }
75}