use std::panic;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
#[wasm_bindgen(js_namespace = ["global", "PRISMA_WASM_PANIC_REGISTRY"], js_name = "set_message")]
fn prisma_set_wasm_panic_message(s: &str);
}
fn register_panic_hook() {
use std::sync::Once;
static SET_HOOK: Once = Once::new();
SET_HOOK.call_once(|| {
panic::set_hook(Box::new(|info| {
let message = &info.to_string();
prisma_set_wasm_panic_message(message);
}));
});
}
#[wasm_bindgen]
pub fn format(schema: String, params: String) -> String {
register_panic_hook();
prisma_fmt::format(&schema, ¶ms)
}
#[wasm_bindgen]
pub fn get_config(params: String) -> Result<String, JsError> {
register_panic_hook();
prisma_fmt::get_config(params).map_err(|e| JsError::new(&e))
}
#[wasm_bindgen]
pub fn get_dmmf(params: String) -> Result<String, JsError> {
register_panic_hook();
prisma_fmt::get_dmmf(params).map_err(|e| JsError::new(&e))
}
#[wasm_bindgen]
pub fn lint(input: String) -> String {
register_panic_hook();
prisma_fmt::lint(input)
}
#[wasm_bindgen]
pub fn validate(params: String) -> Result<(), JsError> {
register_panic_hook();
prisma_fmt::validate(params).map_err(|e| JsError::new(&e))
}
#[wasm_bindgen]
pub fn native_types(input: String) -> String {
register_panic_hook();
prisma_fmt::native_types(input)
}
#[wasm_bindgen]
pub fn referential_actions(input: String) -> String {
register_panic_hook();
prisma_fmt::referential_actions(input)
}
#[wasm_bindgen]
pub fn preview_features() -> String {
register_panic_hook();
prisma_fmt::preview_features()
}
#[wasm_bindgen]
pub fn text_document_completion(schema: String, params: String) -> String {
register_panic_hook();
prisma_fmt::text_document_completion(schema, ¶ms)
}
#[wasm_bindgen]
pub fn code_actions(schema: String, params: String) -> String {
register_panic_hook();
prisma_fmt::code_actions(schema, ¶ms)
}
#[wasm_bindgen]
pub fn debug_panic() {
register_panic_hook();
panic!("This is the panic triggered by `prisma_fmt::debug_panic()`");
}
#[cfg(feature = "wasm_logger")]
#[wasm_bindgen]
pub fn enable_logs() {
wasm_logger::init(wasm_logger::Config::default());
}