lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

commit d4e910c321e256c8cc035243eaf312eebc047bfd
parent 2709a7ae5e8a2f19e0d1b7c5f4bcdb4711e5bdd0
Author: triesap <tyson@radroots.org>
Date:   Wed, 24 Jun 2026 06:32:26 +0000

dto: render core bindings from source roots

Diffstat:
Mtools/sdk_xtask_import/Cargo.toml | 1-
Mtools/sdk_xtask_import/src/check.rs | 2+-
Mtools/sdk_xtask_import/src/dto_roots.rs | 15+++++++++++++++
Mtools/sdk_xtask_import/src/generate.rs | 2+-
Mtools/sdk_xtask_import/src/output.rs | 10++++++----
5 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/tools/sdk_xtask_import/Cargo.toml b/tools/sdk_xtask_import/Cargo.toml @@ -17,7 +17,6 @@ path = "src/main.rs" dto_bindgen_core = { workspace = true } radroots_sdk_binding_model = { path = "../../crates/binding_model" } radroots_core = { workspace = true, features = ["dto-bindgen"] } -radroots_core_bindings = { path = "../../crates/core_bindings" } radroots_events = { workspace = true, features = ["dto-bindgen"] } radroots_events_bindings = { path = "../../crates/events_bindings" } radroots_events_indexed_bindings = { path = "../../crates/events_indexed_bindings" } diff --git a/tools/sdk_xtask_import/src/check.rs b/tools/sdk_xtask_import/src/check.rs @@ -28,7 +28,7 @@ pub fn check() -> Result<(), String> { for spec in wasm_package_specs() { check_wasm_package_surface(&root, *spec)?; } - for output in package_outputs() { + for output in package_outputs()? { for expected in output.files() { let path = root .join(output.spec.package_dir) diff --git a/tools/sdk_xtask_import/src/dto_roots.rs b/tools/sdk_xtask_import/src/dto_roots.rs @@ -1,5 +1,7 @@ use dto_bindgen_core::{Registry, RootDescriptor, build_registry}; +use crate::dto_render::{DtoRegistryRenderOptions, DtoTypesModule, render_registry_types}; + #[derive(Clone, Copy, Debug)] pub struct DtoPackageRootSet { pub package_key: &'static str, @@ -103,6 +105,19 @@ pub fn package_root_set(package_key: &str) -> Option<&'static DtoPackageRootSet> .find(|root_set| root_set.package_key == package_key) } +pub fn core_types_module() -> Result<DtoTypesModule, String> { + let root_set = package_root_set("core").ok_or_else(|| "missing core DTO roots".to_owned())?; + let rendered = + render_registry_types(&root_set.registry(), &DtoRegistryRenderOptions::default())?; + Ok(DtoTypesModule::new( + rendered.imports_ts().unwrap_or_default(), + format!( + "export type RadrootsCoreCurrency = string;\n\nexport type RadrootsCoreDecimal = string;\n\n{}", + rendered.body_ts() + ), + )) +} + fn core_roots() -> Vec<RootDescriptor> { radroots_core::dto::dto_roots().into_iter().collect() } diff --git a/tools/sdk_xtask_import/src/generate.rs b/tools/sdk_xtask_import/src/generate.rs @@ -3,7 +3,7 @@ use crate::{fs::workspace_root, output::package_outputs, package_matrix::validat pub fn generate_ts() -> Result<(), String> { validate_package_matrix()?; let root = workspace_root()?; - for output in package_outputs() { + for output in package_outputs()? { for generated_file in output.files() { let path = root .join(output.spec.package_dir) diff --git a/tools/sdk_xtask_import/src/output.rs b/tools/sdk_xtask_import/src/output.rs @@ -1,5 +1,6 @@ use crate::{ dto_render::DtoTypesModule, + dto_roots, manifest::manifest_file_name, manifest::package_manifest, package_matrix::{PackageSpec, package_specs}, @@ -76,11 +77,11 @@ impl PackageOutput { } } -pub fn package_outputs() -> Vec<PackageOutput> { - vec![ +pub fn package_outputs() -> Result<Vec<PackageOutput>, String> { + Ok(vec![ PackageOutput { spec: spec_by_key("core"), - types_ts: Some(TsSource::Module(radroots_core_bindings::types_module())), + types_ts: Some(TsSource::DtoRegistry(dto_roots::core_types_module()?)), types_imports_ts: None, constants_ts: None, kinds_ts: None, @@ -135,7 +136,7 @@ pub fn package_outputs() -> Vec<PackageOutput> { constants_ts: None, kinds_ts: None, }, - ] + ]) } fn spec_by_key(key: &str) -> PackageSpec { @@ -277,6 +278,7 @@ mod tests { #[test] fn includes_core_and_types_outputs() { let package_names = package_outputs() + .expect("package outputs") .into_iter() .map(|output| output.spec.package_name) .collect::<Vec<_>>();