[workspace]
members = ["nap_common", "nap_sdk", "nap_proto", "nap_gameserver", "nap_data"]
resolver = "2"

[workspace.package]
version = "0.1.0"

[workspace.dependencies]
# Runtime
tokio = { version = "1.36.0", features = ["full"] }
tokio-util = { version = "0.7.10", features = ["io"] }

# Serialization
serde = { version = "1.0.197", features = ["derive"] }
serde_json = "1.0.114"
jsonc-parser = { version = "0.23.0", features = ["serde"] }
chrono = { version = "0.4.38", features = ["serde"] }
toml = "0.8.4"
rbase64 = "2.0.3"
prost = "0.12.3"
prost-types = "0.12.3"
prost-build = "0.12.3"

# Cryptography
password-hash = { version = "0.5.0", features = ["alloc", "rand_core"] }
pbkdf2 = { version = "0.12.2", features = ["simple"] }
rand_mt = "4.2.2"
rsa = { version = "0.9.6", features = [
    "sha1",
    "nightly",
    "pkcs5",
    "serde",
    "sha2",
] }

# Http
axum = "0.7.5"

# Database
sqlx = { version = "0.7.4", features = ["postgres", "runtime-tokio-rustls"] }

# Logging
env_logger = "0.11.3"
tracing = "0.1.40"
tracing-futures = "0.2.5"
tracing-log = { version = "0.2.0", features = ["std", "log-tracer"] }
tracing-subscriber = { version = "0.3.18", features = [
    "env-filter",
    "registry",
    "std",
    "tracing",
    "tracing-log",
] }
tracing-bunyan-formatter = "0.3.9"

# Util
thiserror = "1.0.61"
paste = "1.0.15"
hex = "0.4.3"
rand = "0.8.5"
byteorder = "1.5.0"
atomic_enum = "0.3.0"
num_enum = "0.7.2"
dashmap = "6.0.1"
regex = "1.10.5"
rustyline-async = "0.4.2"
ansi_term = "0.12.1"

# Internal
common = { path = "nap_common" }
data = { path = "nap_data" }
proto = { path = "nap_proto" }
proto_gen = { path = "nap_proto/proto_gen" }

[profile.release]
strip = true      # Automatically strip symbols from the binary.
lto = true        # Link-time optimization.
opt-level = 3     # Optimize for speed.
codegen-units = 1 # Maximum size reduction optimizations.
