[workspace]

[package]
name = "four-word-networking"
version = "2.7.0"
edition = "2024"
authors = ["David Irvine <david.irvine@autonomi.com>"]
description = "Convert IP addresses to memorable, family-friendly word groups. Interactive TUI with real-time autocomplete. IPv4 = 4 words, IPv6 = 6-12 words. Perfect reconstruction with progressive hints."
license = "MIT OR Apache-2.0"
repository = "https://github.com/dirvine/four-word-networking"
documentation = "https://docs.rs/4wn"
homepage = "https://github.com/dirvine/four-word-networking"
readme = "README.md"
keywords = ["networking", "ip-address", "human-readable", "encoding", "cli"]
categories = ["network-programming", "command-line-utilities"]
exclude = [
    "src/bin/debug_*", 
    "src/bin/test_*", 
    "src/bin/create_*",
    "src/bin/improve_*",
    "src/bin/build_*",
    "src/bin/demo_*",
    "src/bin/filter_*",
    "src/bin/reorder_*",
    "src/bin/trace_*",
    "src/bin/validate_*",
    "src/bin/verify_*",
    "src/bin/benchmark_*",
    "*.disabled"
]

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
thiserror = "1.0"
clap = { version = "4.0", features = ["derive"] }
tokio = { version = "1.0", features = ["full"] }
hex = "0.4"
bs58 = "0.5"
bitvec = "1.0"
once_cell = "1.20"
crossterm = "0.28"
rand = "0.8"
sha2 = "0.10"

[dev-dependencies]
tokio-test = "0.4"
proptest = "1.0"
criterion = { version = "0.5", features = ["html_reports"] }
# Advanced testing framework dependencies
rstest = "0.18"
serial_test = "3.0"
mockall = "0.11"
insta = "1.34"
quickcheck = "1.0"
quickcheck_macros = "1.0"
# Fuzzing dependencies
arbitrary = { version = "1.3", features = ["derive"] }
libfuzzer-sys = "0.4"
# Testing utilities
test-case = "3.3"
pretty_assertions = "1.4"
temp-env = "0.3"
tempfile = "3.8"

[[bin]]
name = "4wn"
path = "src/bin/4wn.rs"

[[bench]]
name = "encoding_benchmarks"
harness = false

[lib]
name = "four_word_networking"
path = "src/lib.rs"

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
