1pub mod errors;
2pub mod spec;
3
4pub use spec::*;
5
6use tx3_tir::{encoding::AnyTir, reduce::ArgMap};
7
8use crate::{interop, Error};
9
10pub fn parse_resolve_request(request: spec::ResolveParams) -> Result<(AnyTir, ArgMap), Error> {
11 let tir = AnyTir::try_from(request.tir)?;
12
13 let params = tx3_tir::reduce::find_params(&tir);
14 let mut args = ArgMap::new();
15
16 for (key, val) in request.args {
17 if let Some(ty) = params.get(&key) {
18 let arg = interop::from_json(val.clone(), &ty)?;
19 args.insert(key, arg);
20 }
21 }
22
23 Ok((tir, args))
24}