feat: improve native

This commit is contained in:
DarkSky
2026-02-01 20:15:34 +08:00
parent 948951d461
commit 059d3aa04a
8 changed files with 101 additions and 57 deletions

View File

@@ -22,6 +22,7 @@ doc-loader = [
"url",
]
hashcash = ["chrono", "sha3", "rand"]
napi = ["dep:napi"]
tree-sitter = [
"cc",
"dep:tree-sitter",
@@ -53,6 +54,7 @@ chrono = { workspace = true, optional = true }
docx-parser = { workspace = true, optional = true }
infer = { workspace = true, optional = true }
nanoid = { workspace = true, optional = true }
napi = { workspace = true, optional = true }
path-ext = { workspace = true, optional = true }
pdf-extract = { workspace = true, optional = true }
pulldown-cmark = { workspace = true, optional = true }

View File

@@ -4,3 +4,5 @@ pub mod doc_loader;
pub mod doc_parser;
#[cfg(feature = "hashcash")]
pub mod hashcash;
#[cfg(feature = "napi")]
pub mod napi_utils;

View File

@@ -0,0 +1,22 @@
use std::fmt::{Debug, Display};
use napi::{Error, Result, Status};
pub fn to_napi_error<E: Display + Debug>(err: E, status: Status) -> Error {
Error::new(status, err.to_string())
}
pub fn map_napi_err<T, E: Display + Debug>(value: std::result::Result<T, E>, status: Status) -> Result<T> {
value.map_err(|err| to_napi_error(err, status))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn map_napi_err_keeps_message() {
let err = map_napi_err::<(), _>(Err("boom"), Status::GenericFailure).unwrap_err();
assert!(err.to_string().contains("boom"));
}
}