checkpoint-ts 0.1.2

Interactive checkpoint system for TypeScript/JavaScript development. Debug with TUI, inspect state, skip functions, inject values.
use color_eyre::Result;
use crossterm::event::{Event, EventStream};
use futures::{FutureExt, StreamExt};

#[derive(Debug)]
pub struct EventHandler {
    event_stream: EventStream,
}

impl Default for EventHandler {
    fn default() -> Self {
        Self {
            event_stream: EventStream::new(),
        }
    }
}

impl EventHandler {
    pub fn new() -> Self {
        Self::default()
    }

    pub async fn next_event(&mut self) -> Result<Option<Event>> {
        match self.event_stream.next().fuse().await {
            Some(Ok(event)) => Ok(Some(event)),
            Some(Err(e)) => Err(e.into()),
            None => Ok(None),
        }
    }
}