[package]
name = "omni-schema-core"
description = "Core types and traits for omni-schema - Universal Schema Generator for Rust"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true

[dependencies]
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true, optional = true }
indexmap = { workspace = true }
thiserror = { workspace = true }
once_cell = { workspace = true }

# Optional type support
uuid = { workspace = true, optional = true }
chrono = { workspace = true, optional = true }
url = { workspace = true, optional = true }

[dev-dependencies]
pretty_assertions = { workspace = true }

[features]
default = ["json-schema"]

# Output format features
json-schema = []
openapi = ["serde_yaml"]
graphql = []
protobuf = []
typescript = []
avro = []
all-formats = ["json-schema", "openapi", "graphql", "protobuf", "typescript", "avro"]

# Type support features
uuid-support = ["uuid"]
chrono-support = ["chrono"]
url-support = ["url"]
all-types = ["uuid-support", "chrono-support", "url-support"]

# Integration features
serde-compat = []
validator-compat = []
