#╔══════════════════════════════════════════
#║ ▛ 𝐁ison 𝐃𝐁                          
#║                 _.-````'-,_   
#║      _,.,_ ,-'`           `'-.,_
#║    /)     (\                   '``-.
#║   ((      ) )                      `\
#║    \)    (_/                        )\
#║     |       /)           '    ,'    / \
#║     `\    ^'            '     (    /  ))
#║       |      _/\ ,     /    ,,`\   (  "`
#║        \Y,   |  \  \  | ````| / \_ \ 
#║          `)_/    \  \  )    ( >  ( > 
#║                   \( \(     |/   |/
#║ ▙                /_(/_(   /_(  /_(   
#╚═══════════════════════════════════════════
#║ Bison DB 
#║ Embedded Document Database for Rust.
#╚═══════════════════════════════════════════
[package] 
name    = "bison-db"
version = "1.0.0"

# Minimum supported Rust version and edition
rust-version = "1.85"
edition      = "2024"

# Metadata for crates.io
license = "Apache-2.0 OR MIT"
readme  = "README.md"

# Project Authors
authors = [
    "James Gober <me@jamesgober.com>"
]

# Project URLs
homepage      = "https://github.com/jamesgober/bison-db"
repository    = "https://github.com/jamesgober/bison-db"
documentation = "https://docs.rs/bison-db"

# Descriptive metadata1
description = "An embedded, document-oriented database for Rust - schemaless documents, secondary indexes, and ACID single-file storage, with zero network and zero external services."

# Metadata for crates.io
keywords = [
    "document-database",
    "embedded",
    "nosql",
    "document-store",
    "database"
]

# Categorization on crates.io
categories = [
    "database-implementations",
    "data-structures"
]

# Keep the standalone head-to-head benchmark crate out of the published package;
# it is a separate, detached crate with peer-engine dependencies.
exclude = ["benchmarks/"]

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



#║ LIBRARY CONFIGURATION
#╚═════════════════════════════════
[lib]
name = "bison_db"
path = "src/lib.rs"



#║ FEATURE FLAGS
#╚═════════════════════════════════
[features]
default = ["std"]
std = []
# Serialization for public types.
serde = ["dep:serde"]



#║ DEPENDENCIES
#╚═════════════════════════════════
[dependencies]
serde = { version = "1", optional = true, default-features = false, features = ["derive", "alloc"] }



#║ DEV DEPENDENCIES
#╚═════════════════════════════════
[dev-dependencies]
# `html_reports` is intentionally omitted: it pulls in plotters -> web-sys, a
# wasm/web dependency chain that bloats the dev tree and the audit/deny surface
# and has made CI lockfile resolution flaky. Benchmarks report to stdout.
criterion  = { version = "0.5", default-features = false, features = ["cargo_bench_support"] }
proptest   = "1"
# Exercises the `serde` feature end-to-end via a concrete data format.
serde_json = "1"

[target.'cfg(loom)'.dev-dependencies]
loom = "0.7"



#║ EXAMPLES
#╚═════════════════════════════════
[[example]]
name              = "json_interop"
required-features = ["serde"]
# ===================================================
# The JSON interop example needs the `serde` feature; 
# gate it so a plain  `cargo build --examples` 
# does not try to compile it without `serde` present.
# ===================================================



#║ BENCHMARKS
#╚═════════════════════════════════
[[bench]]
name    = "bison_bench"
harness = false



#║ RELEASE PROFILE
#╚═════════════════════════════════
[profile.release]
opt-level     = 3
lto           = "fat"
codegen-units = 1
panic         = "abort"
strip         = "symbols"


#╔═════════════════════════════════
#║ ᴇ-ᴅʙ // Embedded DB  
#╚═════════════════════════════════