1use js_sys::{Object, Reflect};
4use merge::Merge;
5use std::path::PathBuf;
6use wasm_bindgen::prelude::*;
7
8use crate::args::{Args, OptionArgs};
9use crate::config::get_config_args;
10use crate::format::format_file;
11use crate::logging::{format_logs, Log};
12
13#[wasm_bindgen]
19#[must_use]
20pub fn main(text: &str, config: &str) -> JsValue {
21 let config = Some((PathBuf::new(), String::new(), config.to_string()));
23 let mut args: OptionArgs = get_config_args(config).unwrap();
24 args.merge(OptionArgs::default());
25 let mut args = Args::from(args);
26 args.stdin = true;
27
28 let mut logs = Vec::<Log>::new();
30 args.resolve(&mut logs);
31 let file = PathBuf::from("input");
32 let new_text = format_file(text, &file, &args, &mut logs);
33 let logs = format_logs(&mut logs, &args);
34
35 let js_object = Object::new();
37 Reflect::set(&js_object, &"output".into(), &new_text.into()).unwrap();
38 Reflect::set(&js_object, &"logs".into(), &logs.into()).unwrap();
39 js_object.into()
40}