actypes 1.2.0

Add runtime type checking to your Typescript code
Documentation
#[derive(Debug)]
pub struct PatchAct {
    pub byte_pos: u32,
    pub patch: Vec<u8>,
}

#[derive(Debug)]
pub struct FunctionAct {
    pub name: String,
    pub params: Vec<ParamAct>,
    pub body_start: u32,
}

#[derive(Debug)]
pub struct MethodAct {
    pub function: FunctionAct,
}

#[derive(Debug)]
pub struct ClassAct {
    pub name: String,
    pub methods: Vec<MethodAct>,
}

#[derive(Debug, PartialEq)]
pub enum TypeAct {
    Number,
    String,
    BigInt,
    Boolean,
    Symbol,
    Float32Array,
    Float64Array,
    Int8Array,
    Int16Array,
    Int32Array,
    Uint8Array,
    Uint8ClampedArray,
    Uint16Array,
    Uint32Array,
    BigInt64Array,
    BigUint64Array,
    Unknown,
}
#[derive(Debug)]
pub struct ParamAct {
    pub name: String,
    pub act_type: TypeAct,
}

pub fn get_ts_type_from_acttype(act_type: &TypeAct) -> String {
    match act_type {
        TypeAct::Number => "number".to_string(),
        TypeAct::String => "string".to_string(),
        TypeAct::BigInt => "bigint".to_string(),
        TypeAct::Boolean => "boolean".to_string(),
        TypeAct::Symbol => "symbol".to_string(),
        TypeAct::Float32Array => "Float32Array".to_string(),
        TypeAct::Float64Array => "Float64Array".to_string(),
        TypeAct::Int8Array => "Int8Array".to_string(),
        TypeAct::Int16Array => "Int16Array".to_string(),
        TypeAct::Int32Array => "Int32Array".to_string(),
        TypeAct::Uint8Array => "Uint8Array".to_string(),
        TypeAct::Uint8ClampedArray => "Uint8ClampedArray".to_string(),
        TypeAct::Uint16Array => "Uint16Array".to_string(),
        TypeAct::Uint32Array => "Uint32Array".to_string(),
        TypeAct::BigInt64Array => "BigInt64Array".to_string(),
        TypeAct::BigUint64Array => "BigUint64Array".to_string(),
        TypeAct::Unknown => "unknown".to_string(),
    }
}

pub fn get_js_constructor_from_acttype(act_type: &TypeAct) -> String {
    match act_type {
        TypeAct::Number => "Number".to_string(),
        TypeAct::String => "String".to_string(),
        TypeAct::BigInt => "BigInt".to_string(),
        TypeAct::Boolean => "Boolean".to_string(),
        TypeAct::Symbol => "Symbol".to_string(),
        TypeAct::Float32Array => "new Float32Array".to_string(),
        TypeAct::Float64Array => "new Float64Array".to_string(),
        TypeAct::Int8Array => "new Int8Array".to_string(),
        TypeAct::Int16Array => "new Int16Array".to_string(),
        TypeAct::Int32Array => "new Int32Array".to_string(),
        TypeAct::Uint8Array => "new Uint8Array".to_string(),
        TypeAct::Uint8ClampedArray => "new Uint8ClampedArray".to_string(),
        TypeAct::Uint16Array => "new Uint16Array".to_string(),
        TypeAct::Uint32Array => "new Uint32Array".to_string(),
        TypeAct::BigInt64Array => "new BigInt64Array".to_string(),
        TypeAct::BigUint64Array => "new BigUint64Array".to_string(),
        TypeAct::Unknown => "".to_string(),
    }
}

pub fn get_acttype_from_string(type_str: &str) -> TypeAct {
    match type_str {
        "number" => TypeAct::Number,
        "string" => TypeAct::String,
        "bigint" => TypeAct::BigInt,
        "boolean" => TypeAct::Boolean,
        "symbol" => TypeAct::Symbol,
        "object" => TypeAct::Unknown,
        "unknown" => TypeAct::Unknown,
        "Float32Array" => TypeAct::Float32Array,
        "Float64Array" => TypeAct::Float64Array,
        "Int8Array" => TypeAct::Int8Array,
        "Int16Array" => TypeAct::Int16Array,
        "Int32Array" => TypeAct::Int32Array,
        "Uint8Array" => TypeAct::Uint8Array,
        "Uint8ClampedArray" => TypeAct::Uint8ClampedArray,
        "Uint16Array" => TypeAct::Uint16Array,
        "Uint32Array" => TypeAct::Uint32Array,
        "BigInt64Array" => TypeAct::BigInt64Array,
        "BigUint64Array" => TypeAct::BigUint64Array,
        _ => TypeAct::Unknown,
    }
}

pub fn get_typeinfo_operator_from_acttype(act_type: &TypeAct) -> String {
    match act_type {
        TypeAct::Number => "typeof".to_string(),
        TypeAct::String => "typeof".to_string(),
        TypeAct::BigInt => "typeof".to_string(),
        TypeAct::Boolean => "typeof".to_string(),
        TypeAct::Symbol => "typeof".to_string(),
        TypeAct::Float32Array => "instanceof".to_string(),
        TypeAct::Float64Array => "instanceof".to_string(),
        TypeAct::Int8Array => "instanceof".to_string(),
        TypeAct::Int16Array => "instanceof".to_string(),
        TypeAct::Int32Array => "instanceof".to_string(),
        TypeAct::Uint8Array => "instanceof".to_string(),
        TypeAct::Uint8ClampedArray => "instanceof".to_string(),
        TypeAct::Uint16Array => "instanceof".to_string(),
        TypeAct::Uint32Array => "instanceof".to_string(),
        TypeAct::BigInt64Array => "instanceof".to_string(),
        TypeAct::BigUint64Array => "instanceof".to_string(),
        TypeAct::Unknown => "".to_string(),
    }
}