[package]
name = "armour"
version = "0.30.16"
authors = ["Rail Khusnutdinov <rail@33.run>"]
description = "DDL and serialization for key-value storage"
keywords = ["key-value", "ORM", "DDL", "serialization", "databases"]
categories = []
license = "MIT OR Apache-2.0"
homepage = "https://github.com/libfunc/armour/"
repository = "https://github.com/libfunc/armour/"
documentation = "https://docs.rs/armour/"
readme = "../README.md"
edition = "2024"

[[example]]
name = "ts"
test = false
bench = false
required-features = ["ts-rs", "id32"]

[[example]]
name = "decimal"
test = false
bench = false
required-features = ["rust_decimal"]

[[example]]
name = "ids"
test = false
bench = false
required-features = ["sled", "id32"]

[[bench]]
name = "gen_fuids"
harness = false
required-features = ["sled", "id32"]

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

[package.metadata.cargo-machete]
ignored = ["brsl2", "primitive-from-enum"]

[features]
default = ["std", "fjall", "rpc"]
std = [
    "time/std",
    "time/serde-human-readable",
    "arrayvec/serde",
    "dep:serde",
    "dep:serde_json",
    "dep:thiserror",
    "dep:bytes",
    "dep:rand",
    "dep:parking_lot",
    "dep:async-broadcast",
    "dep:strum",
]
id32 = []
sled = ["dep:sled", "rapira/inline-array"]
fjall = ["dep:fjall", "rapira/fjall"]
rkyv = ["dep:rkyv", "rkyv/std", "rkyv/alloc", "rkyv/bytecheck"]
bytemuck = ["dep:bytemuck"]
solana = ["solana-pubkey", "solana-signature"]
smol_str = ["dep:smol_str"]
compact_str = ["dep:compact_str"]
value_indexes = []
rpc = ["dep:armour-rpc", "dep:compio", "dep:futures-util", "dep:async-broadcast", "dep:ctrlc"]
# facet = ["dep:facet", "facet/reflect"]

[dependencies]
armour-derive = "0.27"
armour-rpc = { version = "0.1", optional = true }
rapira = "0.12"
blowfish_rs = "0.1"

arrayvec = { version = "0.7" }
data-encoding = "2.4"
data-encoding-macro = "0.1"
const-decoder = "0.4"
time = { version = "0.3", default-features = false }
xxhash-rust = { version = "0.8", features = ["xxh3"] }
crc32fast = "1.4"
const-fnv1a-hash = "1.1"
uuid = { version = "1.3", default-features = false }
# todo: facet

scc = "3.3"
rayon = "1.7"
crossbeam-skiplist = "0.1"
num_cpus = "1.15"
derive_more = { version = "2", features = ["debug", "from", "deref", "deref_mut", "as_ref"] }
tracing = "0.1"
metrics = "0.24"

sled = { version = "1.0.0-alpha.124", optional = true }
fjall = { version = "3.0", optional = true }
# canopydb = { version = "0.2", optional = true }

compio = { version = "0.18", optional = true, features = ["runtime", "net", "io", "macros", "signal"] }
futures-util = { version = "0.3", optional = true }
ctrlc = { version = "3.4", optional = true }
rust_decimal = { version = "1.30", optional = true }
serde = { version = "1.0", optional = true, features = ["derive"] }
serde_json = { version = "1.0", optional = true }
thiserror = { version = "2.0", optional = true }
smallvec = { version = "1.10", optional = true, features = [
    "union",
    "const_generics",
    "const_new",
    "serde",
] }
compact_str = { version = "0.9", optional = true }
smol_str = { version = "0.3", optional = true }
bytes = { version = "1.5", optional = true }
rand = { version = "0.10", optional = true }
parking_lot = { version = "0.12", optional = true }
async-broadcast = { version = "0.7", optional = true }
strum = { version = "0.27", optional = true, features = ["derive"] }
rkyv = { version = "0.8", default-features = false, features = [], optional = true }
rend = { version = "0.5", features = ["zerocopy-0_8", "bytemuck-1"] }
zerocopy = { version = "0.8", features = ["derive"] }
bytemuck = { version = "1.23", optional = true, features = ["derive", "extern_crate_alloc"] }
bitcode = { version = "0.6", optional = true }
eyre = "0.6"

solana-pubkey = { version = "4.0", optional = true }
solana-signature = { version = "3.1", optional = true }

ts-rs = { version = "12.0", optional = true, features = ["no-serde-warnings"] }
fake = { version = "4.4", optional = true }

[dev-dependencies]
criterion = "0.8"
harsh = "0.2"
sqids = "0.4"
bs58 = "0.5"
