use crate::quickjs::{Ctx, Value};
use anyhow::Result;
use rquickjs_serde::{de::Deserializer, ser::Serializer};
pub fn parse<'js>(context: Ctx<'js>, bytes: &mut [u8]) -> Result<Value<'js>> {
let mut deserializer = simd_json::Deserializer::from_slice(bytes)?;
let mut serializer = Serializer::from_context(context.clone())?;
serde_transcode::transcode(&mut deserializer, &mut serializer)?;
Ok(serializer.value)
}
pub fn stringify(val: Value<'_>) -> Result<Vec<u8>> {
let mut output: Vec<u8> = Vec::new();
let mut deserializer = Deserializer::from(val).with_strict();
let mut serializer = serde_json::Serializer::new(&mut output);
serde_transcode::transcode(&mut deserializer, &mut serializer)?;
Ok(output)
}