diff --git a/bindings/node/src/lib.rs b/bindings/node/src/lib.rs index 0dec6f46..6e3ea8fa 100644 --- a/bindings/node/src/lib.rs +++ b/bindings/node/src/lib.rs @@ -155,6 +155,10 @@ impl MacdNode { pub fn is_ready(&self) -> bool { self.inner.is_ready() } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } } // ============================== Bollinger ============================== @@ -210,6 +214,10 @@ impl BollingerNode { pub fn is_ready(&self) -> bool { self.inner.is_ready() } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } } // ============================== Candle-input helpers ============================== @@ -265,6 +273,10 @@ impl AtrNode { pub fn is_ready(&self) -> bool { self.inner.is_ready() } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } } #[napi(object)] @@ -324,6 +336,14 @@ impl StochNode { pub fn reset(&mut self) { self.inner.reset(); } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } } #[napi(js_name = "OBV")] @@ -370,6 +390,14 @@ impl ObvNode { pub fn reset(&mut self) { self.inner.reset(); } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } } #[napi(object)] @@ -436,6 +464,14 @@ impl AdxNode { pub fn reset(&mut self) { self.inner.reset(); } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } } #[napi(js_name = "CCI")] @@ -451,6 +487,18 @@ impl CciNode { }) } #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } + #[napi] pub fn update(&mut self, high: f64, low: f64, close: f64) -> napi::Result> { Ok(self.inner.update(cnd(high, low, close, 0.0)?)) } @@ -491,6 +539,18 @@ impl WilliamsRNode { }) } #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } + #[napi] pub fn update(&mut self, high: f64, low: f64, close: f64) -> napi::Result> { Ok(self.inner.update(cnd(high, low, close, 0.0)?)) } @@ -531,6 +591,18 @@ impl MfiNode { }) } #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } + #[napi] pub fn update( &mut self, high: f64, @@ -578,6 +650,18 @@ impl PsarNode { }) } #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } + #[napi] pub fn update(&mut self, high: f64, low: f64, close: f64) -> napi::Result> { Ok(self.inner.update(cnd(high, low, close, 0.0)?)) } @@ -626,6 +710,18 @@ impl KeltnerNode { }) } #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } + #[napi] pub fn update( &mut self, high: f64, @@ -685,6 +781,18 @@ impl DonchianNode { }) } #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } + #[napi] pub fn update(&mut self, high: f64, low: f64) -> napi::Result> { Ok(self.inner.update(cnd(high, low, low, 0.0)?).map(|o| { DonchianValue { @@ -732,6 +840,18 @@ impl VwapNode { } } #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } + #[napi] pub fn update( &mut self, high: f64, @@ -779,6 +899,18 @@ impl AoNode { }) } #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } + #[napi] pub fn update(&mut self, high: f64, low: f64) -> napi::Result> { Ok(self.inner.update(cnd(high, low, low, 0.0)?)) } @@ -820,6 +952,18 @@ impl AroonNode { }) } #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } + #[napi] pub fn update(&mut self, high: f64, low: f64) -> napi::Result> { Ok(self .inner @@ -859,6 +1003,18 @@ impl KamaNode { }) } #[napi] + pub fn reset(&mut self) { + self.inner.reset(); + } + #[napi(js_name = "isReady")] + pub fn is_ready(&self) -> bool { + self.inner.is_ready() + } + #[napi(js_name = "warmupPeriod")] + pub fn warmup_period(&self) -> u32 { + self.inner.warmup_period() as u32 + } + #[napi] pub fn update(&mut self, value: f64) -> Option { self.inner.update(value) }