1#![cfg_attr(not(feature = "diagnostics"), allow(unused))]
2#![doc = include_str!("../README.md")]
3
4use debug_correlation_id::DebugCorrelationId;
5use nameth::NamedType as _;
6
7use self::owned_closure::XOwnedClosure;
8use self::prelude::OrElseLog;
9
10mod attribute;
11mod debug_correlation_id;
12mod element;
13mod key;
14mod mock_diagnostics;
15mod node;
16pub mod owned_closure;
17pub mod prelude;
18mod signal;
19mod string;
20mod template;
21mod utils;
22
23#[cfg(feature = "diagnostics")]
27pub fn setup_logging() {
28    use tracing_subscriber_wasm::MakeConsoleWriter;
29
30    tracing_subscriber::fmt()
31        .with_max_level(crate::prelude::diagnostics::Level::TRACE)
32        .with_writer(MakeConsoleWriter::default())
33        .without_time()
34        .with_ansi(false)
35        .with_line_number(true)
36        .with_file(true)
37        .with_target(false)
38        .init();
39    let version = "1.0";
40    crate::prelude::diagnostics::trace!(version, "Setting logging: TRACE");
41    crate::prelude::diagnostics::debug!(version, "Setting logging: DEBUG");
42    crate::prelude::diagnostics::info!(version, "Setting logging: INFO");
43    crate::prelude::diagnostics::info!(
44        "{}: {:?}",
45        DebugCorrelationId::<&str>::type_name(),
46        DebugCorrelationId::new(|| "here")
47    );
48
49    if cfg!(feature = "concise-traces") {
51        let closure = XOwnedClosure::new(|self_drop| {
52            move || {
53                let _self_drop = &self_drop;
54                web_sys::console::clear();
55            }
56        });
57        let window = web_sys::window().or_throw("window");
58        window
59            .set_interval_with_callback_and_timeout_and_arguments_0(
60                &closure.as_function(),
61                15 * 60 * 1000,
62            )
63            .or_throw("set_interval");
64    }
65}
66
67#[cfg(not(feature = "diagnostics"))]
68pub fn setup_logging() {}