
[workspace]
resolver = "2"
members = [
    "crates/framework/crates/rustelo_core",
    "crates/framework/crates/rustelo_web",
    "crates/framework/crates/rustelo_auth",
    "crates/framework/crates/rustelo_content",
    "crates/framework/crates/rustelo_cli",
    "crates/foundation/crates/rustelo_client",
    "crates/foundation/crates/rustelo_server",
    "crates/foundation/crates/rustelo_core_lib",
    "crates/foundation/crates/rustelo_core_types",
    "crates/foundation/crates/rustelo_language",
    "crates/foundation/crates/rustelo_routing",
    "crates/foundation/crates/rustelo_components",
    "crates/foundation/crates/rustelo_pages",
    "crates/foundation/crates/rustelo_tools",
    "crates/foundation/crates/rustelo_utils",
    "crates/foundation/crates/rustelo_macros",
]

[workspace.dependencies]
# Core dependencies

# Rustelo foundation crates
rustelo_utils = { path = "crates/foundation/crates/rustelo_utils" }
rustelo_core_types = { path = "crates/foundation/crates/rustelo_core_types" }
rustelo_language = { path = "crates/foundation/crates/rustelo_language" }
rustelo_routing = { path = "crates/foundation/crates/rustelo_routing" }
rustelo_core_lib = { path = "crates/foundation/crates/rustelo_core_lib" }
rustelo_components = { path = "crates/foundation/crates/rustelo_components" }
rustelo_pages = { path = "crates/foundation/crates/rustelo_pages" }
rustelo_client = { path = "crates/foundation/crates/rustelo_client" }
rustelo_server = { path = "crates/foundation/crates/rustelo_server" }
rustelo_tools = { path = "crates/foundation/crates/rustelo_tools" }
rustelo_macros = { path = "crates/foundation/crates/rustelo_macros" }

# Rustelo framework crates
rustelo_core = { path = "crates/framework/crates/rustelo_core" }
rustelo_web = { path = "crates/framework/crates/rustelo_web" }
rustelo_auth = { path = "crates/framework/crates/rustelo_auth" }
rustelo_content = { path = "crates/framework/crates/rustelo_content" }
rustelo_cli = { path = "crates/framework/crates/rustelo_cli" }


# Leptos ecosystem
leptos = { version = "0.8.15", features = ["hydrate", "ssr"] }
leptos_router = { version = "0.8.11", features = ["ssr"] }
leptos_axum = { version = "0.8.7" }
leptos_config = { version = "0.8.8" }
leptos_meta = { version = "0.8.5" }
leptos_integration_utils = { version = "0.8.7" }

# Other dependencies
serde = { version = "1.0", features = ["derive"] }
axum = "0.8.8"
serde_json = "1.0"
thiserror = "2.0.18"
anyhow = "1.0.101"
rand = "0.9"

rand_core = { version = "0.10" }
#rand_core = { version = "0.6", features = ["getrandom"] }
getrandom = { version = "0.4", features = ["std", "wasm_js"] }
gloo-timers = { version = "0.3", features = ["futures"] }
gloo-net = { version = "0.6.0" }
glob = "0.3.3"
console_error_panic_hook = "0.1.7"
http = "1"
log = "0.4.29"
env_logger = "0.11"
wasm-bindgen-futures = "0.4.58"
wasm-bindgen = "0.2.108"
serde-wasm-bindgen = "0.6.5"
console_log = "1"
reqwest = { version = "0.13.2", features = ["json"] } # reqwest with JSON parsing support
reqwasm = "0.5.0"
js-sys = "0.3.85"
web-sys = { version = "0.3.85" , features = ["Clipboard", "Window", "Navigator", "Permissions", "MouseEvent", "Storage", "console", "File", "SvgElement", "SvgsvgElement", "SvgPathElement", "MediaQueryList"] }
regex = "1.12.3"
tracing = "0.1"
tracing-subscriber = "0.3"
toml = "0.9"
fluent = "0.17"
fluent-bundle = "0.16"
fluent-syntax = "0.12"
unic-langid = { version = "0.9", features = ["unic-langid-macros"] }

tokio = { version = "1.49", features = ["rt-multi-thread"]}
tower = "0.5.3"
tower-http = { version = "0.6.8", features = ["fs"]}

hex = "0.4.3"
dotenv = "0.15.0"
async-trait = "0.1.89"

once_cell = "1.21.3"
fluent-templates = { version = "0.13.2", features = ["tera"]}

rhai = { version = "1.24", features = ["serde", "only_i64", "no_float"] }

# Email support
lettre = { version = "0.11", features = ["tokio1-native-tls", "smtp-transport", "pool", "hostname", "builder"] }
handlebars = { version = "6.4" }
urlencoding = { version = "2.1" }

# TLS Support (optional)
axum-server = { version = "0.8", features = ["tls-rustls"] }
axum-test = "18.7"
rustls = { version = "0.23" }
rustls-pemfile = { version = "2.2" }

# Authentication & Authorization (optional)
jsonwebtoken = { version = "10.3", features = ["rust_crypto"] }
argon2 = { version = "0.5" }
uuid = { version = "1.20", features = ["v4", "serde", "js"] }
chrono = { version = "0.4", features = ["serde"] }
oauth2 = { version = "5.0" }
tower-sessions = { version = "0.15" }
sqlx = { version = "0.8.6", features = ["runtime-tokio-rustls", "postgres", "sqlite", "chrono", "uuid", "migrate"] }
tower-cookies = { version = "0.11" }
time = { version = "0.3", features = ["serde"] }

# 2FA Support (optional)
totp-rs = { version = "5.7.0" }
qrcode = { version = "0.14", features = ["svg"] }
base32 = { version = "0.5" }
sha2 = { version = "0.10" }
base64 = { version = "0.22" }

# Cryptography dependencies
aes-gcm = { version = "0.10" }
clap = { version = "4.5", features = ["derive"] }

# Metrics dependencies
prometheus = { version = "0.14" }

# Content Management & Rendering (optional)
pulldown-cmark = { version = "0.13.0", features = ["simd"] }
serde_yaml = { version = "0.9" }
tempfile = { version = "3.24" }
tera = { version = "1.20" }
unicode-normalization = { version = "0.1" }

paste = "1.0.15"
typed-builder = "0.23"

notify = { version = "8.2.0", default-features = false, features = ["macos_fsevent"] }
lru = "0.16"
ammonia = "4.1"
scraper = "0.25"
futures = "0.3.31"
async-compression = { version = "0.4", features = ["gzip", "tokio"] }

ratatui = "0.30"
inquire = "0.9"
crossterm = "0.29"
syntect = "5.3"
similar = "2.7"
reactive_graph = "0.2.12"

syn = { version = "2.0", features = ["full"] }
comrak = { version = "0.50", features = ["syntect"] }

walkdir = "2.5"
quote = "1.0"
proc-macro2 = "1.0"
gray_matter = "0.3"
ignore = "0.4"
mockall = "0.14"
wiremock = "0.6"
cfg-if = "1.0"
html-escape = "0.2"

shellexpand = "3.1"
semver = "1.0"
pathdiff = "0.2"

dialoguer = "0.12"
console = "0.16"
indicatif = "0.18"

[profile.release]
codegen-units = 1
lto = true
opt-level = "z"
