Skip to main content

omena_query_transform_runner/
lib.rs

1//! Transform-runner boundary for the `omena-query` facade.
2//!
3//! `omena-query` remains the consumer-facing analysis facade, but it should not
4//! directly depend on every transform-family crate. This boundary groups the
5//! transform planner, executor, target planner, printer, and egg witness surface
6//! behind one dependency while preserving the existing query API.
7
8use serde::Serialize;
9
10pub use omena_transform_bundle::{
11    TransformBundleSourceSummaryV0, summarize_omena_transform_bundle_from_source,
12};
13pub use omena_transform_cst::{TransformPassKind, all_transform_pass_kinds};
14pub use omena_transform_egg::{
15    EggRewriteSourceWitnessV0, TransformEggPlanV0, execute_egg_rewrite_witnesses_for_css_source,
16    plan_egg_rewrite_passes_for_source,
17};
18pub use omena_transform_passes::{
19    CustomPropertyLeastFixedPointSummaryV0, TransformClassNameRewriteV0,
20    TransformCssModuleComposesResolutionV0, TransformCssModuleValueResolutionV0,
21    TransformDesignTokenRouteV0, TransformExecutionContextV0, TransformExecutionSummaryV0,
22    TransformImportInlineV0, TransformLessInlineLiteralPlaceholderV0, TransformModuleEvaluationV0,
23    TransformPassPlanV0, execute_transform_passes_on_source_with_dialect_and_context,
24    expand_css_nested_selector, inline_css_imports,
25    inline_css_imports_for_static_module_evaluation, parse_static_css_cascade_value,
26    plan_transform_passes, reduce_static_numeric_expression,
27    resolve_static_css_modules_local_value_resolutions_from_source,
28    restore_less_inline_literal_placeholders,
29    summarize_static_css_custom_property_fixed_point_from_source,
30};
31pub use omena_transform_print::{
32    TransformPrintArtifactV0, TransformPrintMode, TransformPrintOptionsV0, default_print_options,
33    print_transform_execution_artifact_with_dialect_and_source,
34};
35pub use omena_transform_target::{
36    TargetFeatureSupportV0, TargetTransformOptionsV0, TransformTargetPlanV0,
37    TransformTargetQueryPlanV0, conservative_target_options, modern_feature_support,
38    plan_target_transforms, plan_target_transforms_from_query,
39};
40
41pub const OMENA_QUERY_TRANSFORM_RUNNER_COLLAPSED_CRATES_V0: [&str; 6] = [
42    "omena-transform-bundle",
43    "omena-transform-cst",
44    "omena-transform-egg",
45    "omena-transform-passes",
46    "omena-transform-print",
47    "omena-transform-target",
48];
49
50#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
51#[serde(rename_all = "camelCase")]
52pub struct OmenaQueryTransformRunnerBoundaryV0 {
53    pub schema_version: &'static str,
54    pub product: &'static str,
55    pub boundary_kind: &'static str,
56    pub collapsed_transform_crate_count: usize,
57    pub collapsed_transform_crates: Vec<&'static str>,
58    pub direct_query_dependency_replacement: &'static str,
59    pub ready_surfaces: Vec<&'static str>,
60}
61
62pub fn summarize_omena_query_transform_runner_boundary_v0() -> OmenaQueryTransformRunnerBoundaryV0 {
63    OmenaQueryTransformRunnerBoundaryV0 {
64        schema_version: "0",
65        product: "omena-query-transform-runner.boundary",
66        boundary_kind: "query-transform-runner-split",
67        collapsed_transform_crate_count: OMENA_QUERY_TRANSFORM_RUNNER_COLLAPSED_CRATES_V0.len(),
68        collapsed_transform_crates: OMENA_QUERY_TRANSFORM_RUNNER_COLLAPSED_CRATES_V0.to_vec(),
69        direct_query_dependency_replacement: "omena-query-transform-runner",
70        ready_surfaces: vec![
71            "transformPlannerBoundary",
72            "transformExecutorBoundary",
73            "transformPrinterBoundary",
74            "transformTargetPlannerBoundary",
75            "transformEggWitnessBoundary",
76        ],
77    }
78}
79
80#[cfg(test)]
81mod tests {
82    use super::*;
83
84    #[test]
85    fn transform_runner_boundary_collapses_transform_family_for_query() {
86        let summary = summarize_omena_query_transform_runner_boundary_v0();
87
88        assert_eq!(summary.collapsed_transform_crate_count, 6);
89        assert_eq!(
90            summary.collapsed_transform_crates,
91            OMENA_QUERY_TRANSFORM_RUNNER_COLLAPSED_CRATES_V0
92        );
93        assert!(
94            summary
95                .ready_surfaces
96                .contains(&"transformExecutorBoundary")
97        );
98        assert!(
99            summary
100                .ready_surfaces
101                .contains(&"transformTargetPlannerBoundary")
102        );
103    }
104}