reluxscript 0.1.4

Write AST transformations once. Compile to Babel, SWC, and beyond.
Documentation
// Generated by ReluxScript compiler
// Do not edit manually

use swc_common::{Span, DUMMY_SP};
use swc_ecma_ast::*;
use swc_ecma_visit::{VisitMut, VisitMutWith};

pub struct InterfaceExtractor {
    // Plugin state
}

impl InterfaceExtractor {
    pub fn new() -> Self {
        Self {}
    }
}

impl VisitMut for InterfaceExtractor {
    
    fn visit_mut_ts_interface_decl(&mut self, n: &mut TsInterfaceDecl) {
        let mut parts = vec![];
        let interface_name = n.id.sym.clone();
        parts.push(interface_name);
        for member in &n.body.body {
            if let TsTypeElement::TsPropertySignature(member) = &member {
                let prop_name = { match member.key.as_ref() { Expr::Ident(i) => i.sym.clone(), _ => "".into() } }.clone();
                parts.push(prop_name);
            }
        }
        return parts.join(",");
    }
    
    fn visit_mut_call_expr(&mut self, n: &mut CallExpr) {
        if {
            let __matched = matches!(n.callee, Expr::Ident(_));
            __matched
        } {
            let callee_name = { let __callee = &n.callee; match __callee { Callee::Expr(e) => match e.as_ref() { Expr::Ident(i) => i.sym.clone(), _ => "".into() }, _ => "".into() } }.clone();
            if (callee_name == "useState") {
                return callee_name;
            }
        }
        return "";
    }
}