1pub const VERSION: &str = "0.1.0";
29
30#[cfg(all(feature = "lol_alloc", target_arch = "wasm32"))]
32#[global_allocator]
33static ALLOC: lol_alloc::LockedAllocator<lol_alloc::FreeListAllocator> =
34 lol_alloc::LockedAllocator::new(lol_alloc::FreeListAllocator::new());
35
36pub mod calm;
37pub mod concept_id;
38pub mod error;
39pub mod formatter;
40pub mod graph;
41pub mod kg;
42pub mod kg_import;
43pub mod module;
44pub mod parser;
45pub mod patterns;
46pub mod policy;
47pub mod primitives;
48pub mod projection;
49pub mod registry;
50pub mod sbvr;
51pub mod semantic_version;
52pub mod units;
53pub mod uuid_module;
54pub mod validation_error;
55pub mod validation_result;
56
57#[cfg(feature = "cli")]
58pub mod cli;
59
60#[cfg(feature = "python")]
61pub mod python;
62
63#[cfg(feature = "typescript")]
64pub mod typescript;
65
66#[cfg(feature = "typescript")]
67pub use typescript::primitives::{
68 Entity as TsEntity, Flow as TsFlow, Instance as TsInstance, Resource as TsResource,
69 ResourceInstance as TsResourceInstance,
70};
71
72#[cfg(feature = "typescript")]
73pub use typescript::graph::Graph as TsGraph;
74#[cfg(feature = "typescript")]
75pub use typescript::registry::{
76 NamespaceBinding as TsNamespaceBinding, NamespaceRegistry as TsNamespaceRegistry,
77};
78
79#[cfg(feature = "wasm")]
80pub mod wasm;
81
82pub use concept_id::ConceptId;
83pub use graph::Graph;
84pub use kg::{KgError, KnowledgeGraph};
85pub use kg_import::{import_kg_rdfxml, import_kg_turtle, ImportError};
86pub use parser::{parse, parse_to_graph, parse_to_graph_with_options, ParseOptions};
87pub use patterns::Pattern;
88pub use registry::{NamespaceBinding, NamespaceRegistry, RegistryError};
89pub use sbvr::{SbvrError, SbvrModel};
90pub use semantic_version::SemanticVersion;
91pub use units::{unit_from_string, Dimension, Unit, UnitError, UnitRegistry};
92pub use uuid_module::{format_uuid, generate_uuid_v7, parse_uuid};
93pub use validation_error::{ErrorCode, Position, SourceRange, ValidationError};
94pub use validation_result::ValidationResult;
95
96#[cfg(test)]
97mod test_utils;
98
99#[cfg(test)]
100mod tests {
101 use super::*;
102
103 #[test]
104 fn test_version() {
105 assert_eq!(VERSION, "0.1.0");
106 }
107}
108
109#[cfg(feature = "python")]
110use pyo3::prelude::*;
111
112#[cfg(feature = "python")]
113#[pymodule]
114fn sea_dsl(m: &Bound<'_, PyModule>) -> PyResult<()> {
115 m.add("__version__", VERSION)?;
116
117 m.add_class::<python::primitives::Entity>()?;
118 m.add_class::<python::primitives::Resource>()?;
119 m.add_class::<python::primitives::Flow>()?;
120 m.add_class::<python::primitives::ResourceInstance>()?;
121 m.add_class::<python::primitives::Instance>()?;
122 m.add_class::<python::primitives::Mapping>()?;
123 m.add_class::<python::primitives::Projection>()?;
124 m.add_class::<python::graph::Graph>()?;
125 m.add_class::<python::primitives::Role>()?;
126 m.add_class::<python::primitives::Relation>()?;
127 m.add_class::<python::registry::NamespaceRegistry>()?;
128 m.add_class::<python::registry::NamespaceBinding>()?;
129 m.add_class::<python::policy::Severity>()?;
130 m.add_class::<python::policy::Violation>()?;
131 m.add_class::<python::policy::EvaluationResult>()?;
132 m.add_class::<python::policy::UnaryOp>()?;
133 m.add_class::<python::policy::Quantifier>()?;
134 m.add_class::<python::policy::BinaryOp>()?;
135 m.add_class::<python::policy::AggregateFunction>()?;
136 m.add_class::<python::policy::WindowSpec>()?;
137 m.add_class::<python::policy::Expression>()?;
138 m.add_class::<python::policy::NormalizedExpression>()?;
139 m.add_class::<python::units::Dimension>()?;
140 m.add_class::<python::units::Unit>()?;
141
142 m.add_function(pyo3::wrap_pyfunction!(python::formatter::format_source, m)?)?;
144 m.add_function(pyo3::wrap_pyfunction!(python::formatter::check_format, m)?)?;
145
146 Ok(())
147}