# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO
#
# When uploading crates to the registry Cargo will automatically
# "normalize" Cargo.toml files for maximal compatibility
# with all versions of Cargo and also rewrite `path` dependencies
# to registry (e.g., crates.io) dependencies.
#
# If you are reading this file be aware that the original Cargo.toml
# will likely look very different (and much more reasonable).
# See Cargo.toml.orig for the original contents.

[package]
edition = "2021"
rust-version = "1.75"
name = "batpak"
version = "0.1.0"
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Event sourcing with causal graphs and policy gates. Sync API, zero async."
homepage = "https://github.com/TheFreeBatteryFactory/batpak"
documentation = "https://docs.rs/batpak"
readme = "README.md"
keywords = [
    "event-sourcing",
    "audit-trail",
    "causal-graph",
    "hash-chain",
    "policy-engine",
]
categories = [
    "database",
    "concurrency",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/TheFreeBatteryFactory/batpak"

[features]
blake3 = ["dep:blake3"]
default = ["blake3"]
lmdb = ["dep:heed"]
redb = ["dep:redb"]

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

[[example]]
name = "chat_room"
path = "examples/chat_room.rs"

[[example]]
name = "dungeon_typestate"
path = "examples/dungeon_typestate.rs"

[[example]]
name = "event_sourced_counter"
path = "examples/event_sourced_counter.rs"

[[example]]
name = "policy_gates"
path = "examples/policy_gates.rs"

[[test]]
name = "bigbang_compliance"
path = "tests/bigbang_compliance.rs"

[[test]]
name = "chaos_testing"
path = "tests/chaos_testing.rs"

[[test]]
name = "config_propagation"
path = "tests/config_propagation.rs"

[[test]]
name = "coverage_gaps"
path = "tests/coverage_gaps.rs"

[[test]]
name = "fuzz_chaos_feedback"
path = "tests/fuzz_chaos_feedback.rs"

[[test]]
name = "fuzz_targets"
path = "tests/fuzz_targets.rs"

[[test]]
name = "gate_pipeline"
path = "tests/gate_pipeline.rs"

[[test]]
name = "hash_chain"
path = "tests/hash_chain.rs"

[[test]]
name = "monad_laws"
path = "tests/monad_laws.rs"

[[test]]
name = "outcome_combinators"
path = "tests/outcome_combinators.rs"

[[test]]
name = "projection_cache"
path = "tests/projection_cache.rs"

[[test]]
name = "quiet_stragglers"
path = "tests/quiet_stragglers.rs"

[[test]]
name = "self_benchmark"
path = "tests/self_benchmark.rs"

[[test]]
name = "store_advanced"
path = "tests/store_advanced.rs"

[[test]]
name = "store_integration"
path = "tests/store_integration.rs"

[[test]]
name = "subscription_ops"
path = "tests/subscription_ops.rs"

[[test]]
name = "typestate_safety"
path = "tests/typestate_safety.rs"

[[test]]
name = "wire_format"
path = "tests/wire_format.rs"

[[bench]]
name = "cold_start"
path = "benches/cold_start.rs"
harness = false

[[bench]]
name = "compaction"
path = "benches/compaction.rs"
harness = false

[[bench]]
name = "projection_latency"
path = "benches/projection_latency.rs"
harness = false

[[bench]]
name = "subscription_fanout"
path = "benches/subscription_fanout.rs"
harness = false

[[bench]]
name = "write_throughput"
path = "benches/write_throughput.rs"
harness = false

[dependencies.blake3]
version = "1"
optional = true

[dependencies.crc32fast]
version = "1"

[dependencies.dashmap]
version = "5"

[dependencies.flume]
version = "0.11"

[dependencies.heed]
version = "0.20"
optional = true

[dependencies.parking_lot]
version = "0.12"

[dependencies.redb]
version = "2"
optional = true

[dependencies.rmp-serde]
version = "1"

[dependencies.serde]
version = "1"
features = [
    "derive",
    "rc",
]

[dependencies.serde_json]
version = "1"

[dependencies.tracing]
version = "0.1"

[dependencies.uuid]
version = "1"
features = ["v7"]

[dev-dependencies.arbitrary]
version = "1"
features = ["derive"]

[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]

[dev-dependencies.proptest]
version = "1"

[dev-dependencies.rand]
version = "0.8"

[dev-dependencies.tempfile]
version = "3"

[dev-dependencies.tokio]
version = "1"
features = [
    "rt",
    "macros",
]

[dev-dependencies.trybuild]
version = "1"

[lints.clippy]
assertions_on_constants = "deny"
cast_possible_truncation = "deny"
cast_sign_loss = "deny"
clone_on_ref_ptr = "warn"
dbg_macro = "deny"
disallowed_methods = "deny"
large_enum_variant = "warn"
missing_errors_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
needless_pass_by_value = "warn"
panic = "deny"
print_stderr = "deny"
print_stdout = "deny"
todo = "deny"
unimplemented = "deny"
unwrap_used = "deny"
wildcard_enum_match_arm = "warn"

[lints.rust]
deprecated = "deny"

[profile.bench]
debug = 2
inherits = "release"

[profile.dev]
opt-level = 0
debug = 2
incremental = true

[profile.dev.package."*"]
opt-level = 2

[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 16
strip = "symbols"

[profile.test]
opt-level = 1
