Skip to main content

substrate/
lib.rs

1//! Substrate - Shared library for CMN (Code Mycelial Network)
2//!
3//! This library provides common data structures and utilities shared between
4//! hypha (client) and synapse (indexer).
5//!
6//! **Zero I/O, WASM-compatible.** All algorithms (tree hashing, signatures,
7//! schema validation) operate on in-memory data only. Filesystem traversal
8//! lives in downstream crates (e.g. cmn-hypha).
9
10#[cfg(any(feature = "archive-ruzstd", feature = "archive-zstd"))]
11pub mod archive;
12#[cfg(feature = "client")]
13pub mod client;
14pub mod crypto;
15pub mod model;
16pub mod schemas;
17pub mod tree;
18pub mod uri;
19pub mod util;
20
21pub use crypto::{
22    compute_blake3_hash, compute_signature, format_hash, format_key, format_signature, parse_hash,
23    parse_key, parse_signature, verify_json_signature, verify_signature, HashAlgorithm,
24    KeyAlgorithm, SignatureAlgorithm,
25};
26pub use model::*;
27pub use schemas::{detect_schema_type, validate as validate_schema, SchemaType};
28pub use tree::{
29    compute_tree_hash_from_entries, flatten_entries, max_mtime, walk_dir, DirEntry, DirReader,
30    TreeEntry,
31};
32pub use uri::{
33    build_domain_uri, build_mycelium_uri, build_spore_uri, build_taste_uri, cmn_entry_url,
34    normalize_and_validate_url, normalize_taste_target_uri, parse_uri, validate_domain, CmnUri,
35    CmnUriKind,
36};
37pub use util::{local_dir_name, validate_timestamp_not_future};