[package]
name = "aarg-domain"
version = "0.3.0"
edition = "2024"
rust-version = "1.89"
license = "MIT OR Apache-2.0"
description = "AARG's resume-tailoring domain: the data model, JD parsing, gap analysis, tailoring, adversarial review, and variant projection — portable over the aarg-core runtime"
authors = ["Josey Morton <me@joseymorton.com>"]
repository = "https://github.com/joseym/aarg"

[features]
# Forwarded to aarg-core: on by default for the binary, off for a wasm build
# (`default-features = false`), which drops the reqwest client and file sinks.
# The domain logic itself is portable either way — only what it runs *over*
# changes.
default = ["native"]
native = ["aarg-core/native"]

[dependencies]
aarg-core = { path = "../aarg-core", version = "0.3.0", default-features = false }
async-trait = "0.1.89"
chrono = { version = "0.4.42", default-features = false, features = ["std", "clock", "serde"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"
thiserror = "2.0.18"

# Same discipline as the other crates: no unwrap/expect/panic in production code.
[lints.clippy]
unwrap_used = "deny"
expect_used = "deny"
panic = "deny"

# On browser wasm, chrono needs `wasmbind` to read the clock via JS —
# without it Utc::now() panics at runtime. Target-gated so native builds
# don't pull wasm-bindgen.
[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dependencies]
chrono = { version = "0.4.42", default-features = false, features = ["std", "clock", "serde", "wasmbind"] }

[dev-dependencies]
tokio = { version = "1.52.3", features = ["full"] }
