lib

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

commit 983667ec44193c8cc952f1e0a3423ae9f33ba74b
parent 09f1b3c02b45a7ae01a0886c6ac8ab6f42e53924
Author: triesap <tyson@radroots.org>
Date:   Wed, 24 Jun 2026 07:45:01 +0000

bindings: source constants and kinds

- Render events constants and kinds from radroots_events source constants.

- Render identity username constants from radroots_identity source constants.

- Add raw TypeScript body support for non-DTO source-generated files.

- Remove binding_model dependencies from migrated events and identity constants crates.

Diffstat:
Mcrates/identity_bindings/Cargo.toml | 1-
Mcrates/identity_bindings/src/lib.rs | 28+++++++++++++++-------------
Mtools/sdk_xtask_import/src/output.rs | 13++++++-------
3 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/crates/identity_bindings/Cargo.toml b/crates/identity_bindings/Cargo.toml @@ -10,5 +10,4 @@ homepage.workspace = true publish = false [dependencies] -radroots_sdk_binding_model = { path = "../binding_model" } radroots_identity = { workspace = true } diff --git a/crates/identity_bindings/src/lib.rs b/crates/identity_bindings/src/lib.rs @@ -1,28 +1,30 @@ pub use radroots_identity as upstream; -use radroots_sdk_binding_model::{self as ts, TsValue}; +use radroots_identity::{ + RADROOTS_USERNAME_MAX_LEN, RADROOTS_USERNAME_MIN_LEN, RADROOTS_USERNAME_REGEX, +}; -pub fn constants_module() -> ts::TsModule { - ts::module(vec![ - ts::const_number("RADROOTS_USERNAME_MIN_LEN", 3), - ts::const_number("RADROOTS_USERNAME_MAX_LEN", 30), - ts::const_decl( - "RADROOTS_USERNAME_REGEX", - None, - TsValue::String(r#"^(?!.*\.\.)(?!\.)(?!.*\.$)[a-z0-9._-]{3,30}$"#.to_owned()), - ), - ]) +pub fn constants_module() -> String { + format!( + "export const RADROOTS_USERNAME_MIN_LEN = {RADROOTS_USERNAME_MIN_LEN};\nexport const RADROOTS_USERNAME_MAX_LEN = {RADROOTS_USERNAME_MAX_LEN};\nexport const RADROOTS_USERNAME_REGEX = {RADROOTS_USERNAME_REGEX:?};" + ) } #[cfg(test)] mod tests { - use super::constants_module; + use super::{ + RADROOTS_USERNAME_MAX_LEN, RADROOTS_USERNAME_MIN_LEN, RADROOTS_USERNAME_REGEX, + constants_module, + }; #[test] fn preserves_username_constant_exports() { - let rendered = constants_module().render(); + let rendered = constants_module(); assert!(rendered.contains("RADROOTS_USERNAME_MIN_LEN")); + assert!(rendered.contains(&RADROOTS_USERNAME_MIN_LEN.to_string())); assert!(rendered.contains("RADROOTS_USERNAME_MAX_LEN")); + assert!(rendered.contains(&RADROOTS_USERNAME_MAX_LEN.to_string())); assert!(rendered.contains("RADROOTS_USERNAME_REGEX")); + assert!(rendered.contains(&format!("{RADROOTS_USERNAME_REGEX:?}"))); } } diff --git a/tools/sdk_xtask_import/src/output.rs b/tools/sdk_xtask_import/src/output.rs @@ -25,6 +25,7 @@ pub struct GeneratedFile { pub enum TsSource { DtoRegistry(DtoTypesModule), Module(TsModule), + Raw(String), } impl TsSource { @@ -32,6 +33,7 @@ impl TsSource { match self { Self::DtoRegistry(module) => module.body_ts().to_owned(), Self::Module(module) => module.render(), + Self::Raw(body) => body.clone(), } } @@ -39,6 +41,7 @@ impl TsSource { match self { Self::DtoRegistry(module) => module.imports_ts(), Self::Module(_) => None, + Self::Raw(_) => None, } } } @@ -90,10 +93,8 @@ pub fn package_outputs() -> Result<Vec<PackageOutput>, String> { spec: spec_by_key("events"), types_ts: Some(TsSource::DtoRegistry(dto_roots::events_types_module()?)), types_imports_ts: None, - constants_ts: Some(TsSource::Module( - radroots_events_bindings::constants_module(), - )), - kinds_ts: Some(TsSource::Module(radroots_events_bindings::kinds_module())), + constants_ts: Some(TsSource::Raw(radroots_events_bindings::constants_module())), + kinds_ts: Some(TsSource::Raw(radroots_events_bindings::kinds_module())), }, PackageOutput { spec: spec_by_key("events_indexed"), @@ -108,9 +109,7 @@ pub fn package_outputs() -> Result<Vec<PackageOutput>, String> { spec: spec_by_key("identity"), types_ts: None, types_imports_ts: None, - constants_ts: Some(TsSource::Module( - radroots_identity_bindings::constants_module(), - )), + constants_ts: Some(TsSource::Raw(radroots_identity_bindings::constants_module())), kinds_ts: None, }, PackageOutput {