pub mod card_index;
mod cards;
mod descriptors;
mod meta;
mod nodes;
mod prune;
mod resources;
pub(crate) mod serde_helpers;
mod static_graph;
mod tile;
mod translatable;
pub use cards::{
StaticCard, StaticCardsXNodesXWidgets, StaticConstraint, StaticFunctionsXGraphs,
StaticPublication,
};
pub use descriptors::{
DescriptorConfig, DescriptorTypeConfig, StaticResourceDescriptors, DESCRIPTOR_FUNCTION_ID,
};
pub use meta::StaticGraphMeta;
pub use nodes::{StaticEdge, StaticNode, StaticNodegroup};
pub use prune::{build_backedges, find_root_node, prune_graph, PruneError};
pub use resources::{
batch_merge_resources, merge_resources, parse_resources_from_json_str,
unify_cardinality_one_tiles, BatchMergeResult, MergeAccumulator, MergeResult,
PopulateCachesResult, RelatedResourceEntry, ResourceCache, ResourceEntry, StaticResource,
StaticResourceMetadata, StaticResourceReference, StaticResourceRegistry, StaticResourceSummary,
UnknownReference,
};
pub use static_graph::{GraphWrapper, IndexedGraph, StaticGraph};
pub use tile::StaticTile;
pub use translatable::StaticTranslatableString;
pub const ITERABLE_DATATYPES: &[&str] = &[
"concept-list",
"resource-instance-list",
"domain-value-list",
];
pub fn is_iterable_datatype(datatype: &str) -> bool {
ITERABLE_DATATYPES.contains(&datatype)
}