-
Notifications
You must be signed in to change notification settings - Fork 26.1k
/
mdx.rs
43 lines (36 loc) · 1.14 KB
/
mdx.rs
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
use mdxjs::{compile, Options};
use napi::bindgen_prelude::*;
pub struct MdxCompileTask {
pub input: String,
pub option: Buffer,
}
impl Task for MdxCompileTask {
type Output = String;
type JsValue = String;
fn compute(&mut self) -> napi::Result<Self::Output> {
let options: Options = serde_json::from_slice(&self.option)?;
compile(&self.input, &options)
.map_err(|err| napi::Error::new(Status::GenericFailure, format!("{:?}", err)))
}
fn resolve(&mut self, _env: Env, output: Self::Output) -> napi::Result<Self::JsValue> {
Ok(output)
}
}
#[napi]
pub fn mdx_compile(
value: String,
option: Buffer,
signal: Option<AbortSignal>,
) -> napi::Result<AsyncTask<MdxCompileTask>> {
let task = MdxCompileTask {
input: value,
option,
};
Ok(AsyncTask::with_optional_signal(task, signal))
}
#[napi]
pub fn mdx_compile_sync(value: String, option: Buffer) -> napi::Result<String> {
let option: Options = serde_json::from_slice(&option)?;
compile(value.as_str(), &option)
.map_err(|err| napi::Error::new(Status::GenericFailure, format!("{:?}", err)))
}