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:
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 {