use ts_rs::{Config, TS};
use crate::*;
pub const HEADER: &str = "\
// AUTO-GENERATED by `cargo run -p yah-workload-spec --bin export-ts`.
// Source of truth: crates/yah/workload-spec/src/lib.rs.
// Do not edit by hand. Regenerate after changing the Rust types and commit
// the result; CI fails if this file drifts from the Rust schema.
";
pub fn render() -> String {
let cfg = Config::default();
let mut out = String::from(HEADER);
macro_rules! emit {
($t:ty) => {
out.push_str("export ");
out.push_str(&<$t as TS>::decl(&cfg));
out.push_str("\n\n");
};
}
emit!(Millis);
emit!(MachineId);
emit!(MeshIdent);
emit!(TierTag);
emit!(TenantId);
emit!(NamespaceId);
emit!(MeshLookup);
emit!(EnvValue);
emit!(EnvVar);
emit!(SecretRef);
emit!(SecretTarget);
emit!(SecretMount);
emit!(VolumeSource);
emit!(VolumeMount);
emit!(ImageRef);
emit!(ResourceLimits);
emit!(HealthProbe);
emit!(Healthcheck);
emit!(BackoffPolicy);
emit!(RestartPolicy);
emit!(StopPolicy);
emit!(MeshPeer);
emit!(MeshExpose);
emit!(PublicTls);
emit!(PublicExpose);
emit!(OperatorExpose);
emit!(ExposeSpec);
emit!(Locality);
emit!(Supply);
emit!(Requirement);
emit!(WorkloadSpec);
emit!(ContainerMount);
emit!(ContainerRunConfig);
emit!(ContainerBuildStep);
emit!(ContainerBuild);
emit!(ContainerManifest);
emit!(BuildConfig);
emit!(BuildMode);
emit!(MesofactStaticWorkload);
emit!(MesofactServeBundle);
emit!(BundleLifecycle);
emit!(AlmanacFeed);
emit!(MesofactRevalidateReceiver);
emit!(AlmanacTarget);
emit!(NotReadyPolicy);
emit!(Cadence);
emit!(AlmanacManifest);
emit!(BlakeHash);
emit!(License);
emit!(FetchSource);
emit!(TransformSpec);
emit!(AssetDerive);
emit!(AssetEntry);
emit!(StaticAssetWorkload);
emit!(TenantPasswayTls);
emit!(TenantPasswayWorkload);
emit!(Workload);
out
}