#![cfg(feature = "wasm")]
use super::{read_jsonl_v1, search_v1, IndexEntryV1, QueryV1, VehicleSchemaV1};
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn build_download_url(
id: &str,
extension: &str,
base_url: Option<String>,
) -> Result<String, JsError> {
let schema = id
.parse::<VehicleSchemaV1>()
.map_err(|e| JsError::new(&e.to_string()))?;
Ok(schema.build_url(base_url.as_deref(), extension))
}
#[wasm_bindgen]
pub fn parse_vehicles_jsonl(text: &str) -> Result<JsValue, JsError> {
let entries = read_jsonl_v1(text).map_err(|e| JsError::new(&e.to_string()))?;
serde_wasm_bindgen::to_value(&entries).map_err(|e| JsError::new(&e.to_string()))
}
#[wasm_bindgen]
pub fn search_entries(entries_json: &str, query_json: &str) -> Result<JsValue, JsError> {
let entries: Vec<IndexEntryV1> =
serde_json::from_str(entries_json).map_err(|e| JsError::new(&e.to_string()))?;
let query: QueryV1 =
serde_json::from_str(query_json).map_err(|e| JsError::new(&e.to_string()))?;
let results = search_v1(&entries, &query);
serde_wasm_bindgen::to_value(&results).map_err(|e| JsError::new(&e.to_string()))
}
#[cfg(test)]
mod tests {
use super::*;
}