schema_analysis 0.6.0

Analyze the schema of any self describing format
Documentation
[package]
name = "schema_analysis"
version = "0.6.0"
authors = ["QuartzLibrary"]
license = "MIT OR Apache-2.0"
edition = "2024"
description = "Analyze the schema of any self describing format"
homepage = "https://schema-analysis.com/"
repository = "https://github.com/QuartzLibrary/schema_analysis"
keywords = [ "schema", "analysis", "json", "xml", "serde" ]
readme = "README.md"

[[bin]]
name = "schema_analysis"
path = "src/main.rs"
required-features = ["cli"]

[features]
cli = [
    "json_typegen",
    "schemars_integration",
    "dep:clap",
    "dep:anyhow",
    "dep:serde_json",
    "dep:serde_yaml",
    "dep:serde_cbor",
    "dep:toml",
    "dep:bson",
    "dep:quick-xml",
]
json_typegen = ["dep:json_typegen_shared"]
schemars_integration = ["dep:schemars", "dep:serde_json"]

[dependencies]
# Serde is the heart of this libary, it provides the common interfaces that
# allows a single Visitor implementation to infer the shape of any format
# with a self-describing schema.
serde = { version = "1.0", features = [ "serde_derive" ] }

regex = "1.5" # Used to detect interesting strings
once_cell = "1.8" # For global constants that require allocation
ordered-float = { version = "3.4", features = [ "serde" ] } # To save sets of floats
ordermap = { version = "0.5", features = [ "serde" ] } # To preserve the order of fields in the schema

# These are used to allow the users of the library to run
# custom analysis on the nodes. Check src/context/aggregators.rs 
# and src/traits.rs for more info.
downcast-rs = "1.2"
dyn-clonable = "0.9"

# Schemars integration allows the generation of json schemas.
schemars = { version = "0.8", optional = true }
serde_json = { version = "1.0", optional = true }

# json_typegen integration allows the generation of types in several languages and json schemas.
json_typegen_shared = { version = "0.7", optional = true, default-features = false }

# CLI dependencies (optional, behind "cli" feature)
clap = { version = "4", features = ["derive"], optional = true }
anyhow = { version = "1", optional = true }

# Format parsers for CLI (optional, behind "cli" feature)
serde_yaml = { version = "0.9", optional = true }
serde_cbor = { version = "0.11", optional = true }
toml = { version = "0.5", optional = true }
bson = { version = "2.0", optional = true }
quick-xml = { version = "0.26", features = ["serialize"], optional = true }

[dev-dependencies]
maplit = "1.0" # Ergonomic macros to write maps.
linked-hash-map = "0.5" # Used by json_typegen for structs.

# The following are the formats that have been tested.
serde_json = "1.0"
serde_yaml = "0.9"
serde_cbor = "0.11"
toml = "0.5"
bson = "2.0"
quick-xml = {version = "0.26", features = ["serialize"]}

version-sync = "0.9" # Used to ensure the doc url is up-to-date
assert_cmd = "2"
predicates = "3"

[package.metadata.docs.rs]
all-features = true