use serde::Serialize;
pub use omena_transform_bundle::{
TransformBundleSourceSummaryV0, summarize_omena_transform_bundle_from_source,
};
pub use omena_transform_cst::{TransformPassKind, all_transform_pass_kinds};
pub use omena_transform_egg::{
EggRewriteSourceWitnessV0, TransformEggPlanV0, execute_egg_rewrite_witnesses_for_css_source,
plan_egg_rewrite_passes_for_source,
};
pub use omena_transform_passes::{
CustomPropertyLeastFixedPointSummaryV0, TransformClassNameRewriteV0,
TransformCssModuleComposesResolutionV0, TransformCssModuleValueResolutionV0,
TransformDesignTokenRouteV0, TransformExecutionContextV0, TransformExecutionSummaryV0,
TransformImportInlineV0, TransformLessInlineLiteralPlaceholderV0, TransformModuleEvaluationV0,
TransformPassPlanV0, execute_transform_passes_on_source_with_dialect_and_context,
expand_css_nested_selector, inline_css_imports,
inline_css_imports_for_static_module_evaluation, parse_static_css_cascade_value,
plan_transform_passes, reduce_static_numeric_expression,
resolve_static_css_modules_local_value_resolutions_from_source,
restore_less_inline_literal_placeholders,
summarize_static_css_custom_property_fixed_point_from_source,
};
pub use omena_transform_print::{
TransformPrintArtifactV0, TransformPrintMode, TransformPrintOptionsV0, default_print_options,
print_transform_execution_artifact_with_dialect_and_source,
};
pub use omena_transform_target::{
TargetFeatureSupportV0, TargetTransformOptionsV0, TransformTargetPlanV0,
TransformTargetQueryPlanV0, conservative_target_options, modern_feature_support,
plan_target_transforms, plan_target_transforms_from_query,
};
pub const OMENA_QUERY_TRANSFORM_RUNNER_COLLAPSED_CRATES_V0: [&str; 6] = [
"omena-transform-bundle",
"omena-transform-cst",
"omena-transform-egg",
"omena-transform-passes",
"omena-transform-print",
"omena-transform-target",
];
#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct OmenaQueryTransformRunnerBoundaryV0 {
pub schema_version: &'static str,
pub product: &'static str,
pub boundary_kind: &'static str,
pub collapsed_transform_crate_count: usize,
pub collapsed_transform_crates: Vec<&'static str>,
pub direct_query_dependency_replacement: &'static str,
pub ready_surfaces: Vec<&'static str>,
}
pub fn summarize_omena_query_transform_runner_boundary_v0() -> OmenaQueryTransformRunnerBoundaryV0 {
OmenaQueryTransformRunnerBoundaryV0 {
schema_version: "0",
product: "omena-query-transform-runner.boundary",
boundary_kind: "query-transform-runner-split",
collapsed_transform_crate_count: OMENA_QUERY_TRANSFORM_RUNNER_COLLAPSED_CRATES_V0.len(),
collapsed_transform_crates: OMENA_QUERY_TRANSFORM_RUNNER_COLLAPSED_CRATES_V0.to_vec(),
direct_query_dependency_replacement: "omena-query-transform-runner",
ready_surfaces: vec![
"transformPlannerBoundary",
"transformExecutorBoundary",
"transformPrinterBoundary",
"transformTargetPlannerBoundary",
"transformEggWitnessBoundary",
],
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn transform_runner_boundary_collapses_transform_family_for_query() {
let summary = summarize_omena_query_transform_runner_boundary_v0();
assert_eq!(summary.collapsed_transform_crate_count, 6);
assert_eq!(
summary.collapsed_transform_crates,
OMENA_QUERY_TRANSFORM_RUNNER_COLLAPSED_CRATES_V0
);
assert!(
summary
.ready_surfaces
.contains(&"transformExecutorBoundary")
);
assert!(
summary
.ready_surfaces
.contains(&"transformTargetPlannerBoundary")
);
}
}