[package]
name = "schematic"
version = "0.19.4"
edition = "2024"
license = "MIT"
description = "A layered serde configuration and schema library."
homepage = "https://moonrepo.github.io/schematic"
repository = "https://github.com/moonrepo/schematic"
readme = "../../README.md"
rust-version = "1.85.0"
[package.metadata.release]
pre-release-replacements = [
{ file = "../../CHANGELOG.md", search = "Unreleased", replace = "{{version}}" },
]
[package.metadata.docs.rs]
all-features = true
[dependencies]
schematic_macros = { version = "0.19.3", path = "../macros" }
schematic_types = { version = "0.11.3", path = "../types" }
miette = { workspace = true }
serde-content = "0.1.2"
thiserror = "2.0.17"
tracing = { workspace = true }
garde = { version = "0.22.1", default-features = false, optional = true, features = [
"regex",
] }
serde = { workspace = true }
serde_path_to_error = { version = "0.1.20", optional = true }
starbase_styles = { version = "0.6.5", optional = true }
regex = { workspace = true, optional = true }
semver = { workspace = true, optional = true }
convert_case = { workspace = true, optional = true }
indexmap = { workspace = true, optional = true, features = ["serde"] }
json-strip-comments = { version = "3.1.0", optional = true }
serde_json = { workspace = true, optional = true, features = [
"preserve_order",
] }
markdown = { version = "1.0.0", optional = true }
schemars = { version = "0.8.22", optional = true, default-features = false }
rpkl = { workspace = true, optional = true }
ron = { workspace = true, optional = true }
toml = { workspace = true, optional = true }
serde_norway = { workspace = true, optional = true }
reqwest = { workspace = true, optional = true, features = ["blocking"] }
[features]
default = ["config", "env", "extends", "validate"]
config = [
"dep:serde_path_to_error",
"dep:starbase_styles",
"schematic_macros/config",
]
schema = ["dep:convert_case", "dep:indexmap", "schematic_macros/schema"]
schema_serde = ["schema", "schematic_types/serde"]
tracing = ["schematic_macros/tracing"]
env = ["schematic_macros/env"]
extends = ["schematic_macros/extends"]
url = ["dep:reqwest"]
validate = ["dep:garde", "schematic_macros/validate"]
json = [
"dep:json-strip-comments",
"dep:serde_json",
"schematic_types/serde_json",
]
pkl = ["dep:rpkl", "schematic_types/serde_rpkl"]
ron = ["dep:ron", "schematic_types/serde_ron"]
toml = ["dep:toml", "schematic_types/serde_toml"]
yaml = ["dep:serde_norway", "schematic_types/serde_yaml_norway"]
renderer_json_schema = ["json", "schema", "dep:markdown", "dep:schemars"]
renderer_template = ["schema"]
renderer_typescript = ["schema"]
type_chrono = ["schematic_types/chrono"]
type_indexmap = ["schematic_types/indexmap"]
type_regex = ["schematic_types/regex", "dep:regex"]
type_relative_path = ["schematic_types/relative_path"]
type_rust_decimal = ["schematic_types/rust_decimal", "garde?/rust_decimal"]
type_semver = ["schematic_types/semver", "dep:semver"]
type_url = ["schematic_types/url"]
type_uuid = ["schematic_types/uuid"]
validate_email = ["validate", "garde/email"]
validate_url = ["validate", "garde/url"]
[dev-dependencies]
schematic = { path = ".", features = [
"config",
"env",
"extends",
"json",
"pkl",
"renderer_json_schema",
"renderer_template",
"renderer_typescript",
"ron",
"schema",
"schema_serde",
"toml",
"tracing",
"type_chrono",
"type_indexmap",
"type_regex",
"type_relative_path",
"type_rust_decimal",
"type_semver",
"type_url",
"type_uuid",
"url",
"validate",
"validate_email",
"validate_url",
"yaml",
] }
reqwest = { workspace = true, features = ["blocking", "rustls"] }
serial_test = "3.3.1"
similar = "2.7.0"
starbase_sandbox = { workspace = true }
strip-ansi-escapes = "0.2"
derive_more = { version = "2.1.1", features = ["try_into", "as_ref"] }
chrono = { workspace = true, features = ["serde"] }
indexmap = { workspace = true }
relative-path = { workspace = true, features = ["serde"] }
rust_decimal = { workspace = true }
semver = { workspace = true, features = ["serde"] }
url = { workspace = true, features = ["serde"] }
uuid = { workspace = true, features = ["serde"] }