1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/// Wrapper for the `log_<n>` functions.
#[macro_export]
macro_rules! log {
    () => {
        unsafe { $crate::web_sys::console::log_0() };
    };
    (  $t0:expr ) => {
        unsafe { $crate::web_sys::console::log_1(&$t0.into()) };
    };
    (  $t0:expr, $t1:expr ) => {
        unsafe {
            $crate::web_sys::console::log_2(
                &$t0.into(),
                &$t1.into(),
            )
        };
    };
    (  $t0:expr, $t1:expr, $t2:expr ) => {
        unsafe {
            $crate::web_sys::console::log_3(
                &$t0.into(),
                &$t1.into(),
                &$t2.into(),
            )
        };
    };
    (  $t0:expr, $t1:expr, $t2:expr, $t3:expr) => {
        unsafe {
            $crate::web_sys::console::log_4(
                &$t0.into(),
                &$t1.into(),
                &$t2.into(),
                &$t3.into(),
            )
        };
    };
    (  $t0:expr, $t1:expr, $t2:expr, $t3:expr, $t4:expr) => {
        unsafe {
            $crate::web_sys::console::log_5(
                &$t0.into(),
                &$t1.into(),
                &$t2.into(),
                &$t3.into(),
                &$t4.into(),
            )
        };
    };
    (  $t0:expr, $t1:expr, $t2:expr, $t3:expr, $t4:expr, $t5:expr) => {
        unsafe {
            $crate::web_sys::console::log_6(
                &$t0.into(),
                &$t1.into(),
                &$t2.into(),
                &$t3.into(),
                &$t4.into(),
                &$t5.into(),
            )
        };
    };
    (  $t0:expr, $t1:expr, $t2:expr, $t3:expr, $t4:expr, $t5:expr, $t6:expr) => {
        unsafe {
            $crate::web_sys::console::log_7(
                &$t0.into(),
                &$t1.into(),
                &$t2.into(),
                &$t3.into(),
                &$t4.into(),
                &$t5.into(),
                &$t6.into(),
            )
        };
    };
}

/// `format!`-like log
#[allow(unused_macros)]
macro_rules! flog {
    ( $( $t:tt )* ) => {
        unsafe{$crate::web_sys::console::log_1(&format!( $( $t )* ).into())};
    }
}

pub fn js_value<T: serde::Serialize>(
    value: T,
) -> wasm_bindgen::JsValue {
    wasm_bindgen::JsValue::from_serde(&value)
        .expect("failed to create a js_value")
}