schematic 0.19.4

A layered serde configuration and schema library.
Documentation
[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 }

# config
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 }

# settings
regex = { workspace = true, optional = true }
semver = { workspace = true, optional = true }

# schema
convert_case = { workspace = true, optional = true }
indexmap = { workspace = true, optional = true, features = ["serde"] }

# json
json-strip-comments = { version = "3.1.0", optional = true }
serde_json = { workspace = true, optional = true, features = [
	"preserve_order",
] }

# json schema
markdown = { version = "1.0.0", optional = true }
schemars = { version = "0.8.22", optional = true, default-features = false }

# pkl
rpkl = { workspace = true, optional = true }

# ron
ron = { workspace = true, optional = true }

# toml
toml = { workspace = true, optional = true }

# yaml
serde_norway = { workspace = true, optional = true }

# url
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"]

# Features
env = ["schematic_macros/env"]
extends = ["schematic_macros/extends"]
url = ["dep:reqwest"]
validate = ["dep:garde", "schematic_macros/validate"]

# Formats
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"]

# Renderers
renderer_json_schema = ["json", "schema", "dep:markdown", "dep:schemars"]
renderer_template = ["schema"]
renderer_typescript = ["schema"]

# Types
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"]

# Validation
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"] }

# Types
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"] }