# Daemon library + CLI binary.
[package]
name = "jax-daemon"
version = "0.1.16"
edition.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
description = "End-to-end encrypted storage buckets with peer-to-peer synchronization"
keywords.workspace = true
categories.workspace = true
readme = "README.md"
build = "build.rs"

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

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

[features]
default = ["fuse"]
fuse = ["fuser", "moka", "libc"]

[dependencies]
# FUSE filesystem (optional)
fuser = { version = "0.15", optional = true }
moka = { version = "0.12", features = ["sync"], optional = true }
libc = { version = "0.2", optional = true }
# Workspace crates
common = { package = "jax-common", version = "^0.1.11", path = "../common" }
object-store = { package = "jax-object-store", version = "^0.1.4", path = "../object-store" }

# iroh for peer networking
iroh = { workspace = true }

# CLI
clap = { workspace = true }
owo-colors = { version = "4", features = ["supports-colors"] }
comfy-table = "7"
indicatif = { version = "0.17", features = ["tokio"] }

# web + service
axum = { workspace = true, features = ["macros", "multipart"] }
axum-extra = { version = "^0.10", features = ["typed-header"] }
tower = { workspace = true }
tower-http = { workspace = true, features = ["fs", "cors", "trace"] }

# observability
tracing-appender = { version = "^0.2" }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }

# async
tokio = { workspace = true }
async-trait = "0.1"
flume = "0.11"

# http
askama = { workspace = true }
askama_axum = { workspace = true }
rust-embed = "8.5"

# sql
sqlx = { version = "0.8", features = ["runtime-tokio", "sqlite", "time", "macros", "uuid"] }
time = { workspace = true }

# core
anyhow = { workspace = true }
thiserror = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
url = { workspace = true }
http = { workspace = true }
futures = { workspace = true }
reqwest = { workspace = true, features = ["json", "multipart"] }
uuid = { workspace = true, features = ["v4"] }
chrono = { workspace = true }
base64 = "0.22"
bytes = { workspace = true }
regex = "1.11"
pulldown-cmark = "0.12"
image = { version = "0.25", default-features = false, features = ["jpeg", "png", "gif", "webp"] }
tempfile = { workspace = true }
mime = "0.3"
mime_guess = { workspace = true }
directories = { workspace = true }
dirs = { workspace = true }
toml = { workspace = true }

[dev-dependencies]
tokio = { workspace = true, features = ["test-util"] }

[build-dependencies]
chrono = { workspace = true }
