[package]
name = "fspulse"
version = "0.3.3"
edition = "2021"
authors = ["The FsPulse Developers"]
description = "FsPulse is a fast, cross-platform filesystem scanner and change tracker."
license = "MIT OR Apache-2.0"
repository = "https://github.com/gtunes-dev/fspulse"
homepage = "https://github.com/gtunes-dev/fspulse"
keywords = ["filesystem", "scanner", "tracking", "integrity"]
categories = ["command-line-utilities"]
readme = "README.md"
documentation = "https://gtunes-dev.github.io/fspulse/"
exclude = [
  ".github",
  ".gitignore"
]

[[bin]]
name = "fspulse"
path = "src/main.rs"

[dependencies]
chrono = { version = "0.4", features = ["clock"] }
clap = { version = "4.5", features = ["derive"] }
claxon = "0.4"
crossbeam-channel = "0.5"
dunce = "1.0"
directories = "6.0"
figment = { version = "0.10", features = ["toml", "env", "test"] }
flexi_logger = "0.31"
hex = "0.4"
icu_collator = "1.5"
image = "0.25"
log = "0.4"
logging_timer = "1.1"
lopdf = "0.38"
once_cell = "1.21"
pest = "2.8"
pest_derive = "2.8"
phf = "0.13"
phf_macros = "0.13"
r2d2 = "0.8"
r2d2_sqlite = "0.31"
rusqlite = { version = "0.37", features = ["bundled", "collation"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sha2 =  "0.10"
strum = "0.27"
thiserror = "2.0"
threadpool = "1.8"
tico = "2.0"
tokio = { version = "1.48", features = ["full"] }
toml = "0.9"
axum = { version = "0.8", features = ["ws"] }
rust-embed = { version = "8.5", features = ["debug-embed"] }
mime_guess = "2.0"

[dev-dependencies]
tempfile = "3.23"
proptest = "1.8"
pretty_assertions = "1.4"
serial_test = "3.2"

[build-dependencies]
static_vcruntime = "2.0"
chrono = { version = "0.4", features = ["clock"] }

# Performance optimizations for computation-heavy dependencies
# codegen-units=1 enables better cross-function optimization at the cost of slower compilation
# These crates have hot loops and benefit significantly from aggressive inlining

[profile.release.package.claxon]
codegen-units = 1  # FLAC decoder - documented 45% performance improvement

[profile.release.package.sha2]
codegen-units = 1  # SHA-256 hashing - critical path for file analysis

[profile.release.package.image]
codegen-units = 1  # Image decoding/validation

[profile.release.package.png]
codegen-units = 1  # PNG decoder (used by image crate)

[profile.release.package.lopdf]
codegen-units = 1  # PDF parsing - slow in this application's usage pattern

# Optimize dependencies in dev builds for faster debugging experience
# Your code remains fully debuggable; only dependencies are optimized
[profile.dev.package."*"]
opt-level = 3
