[package]
name = "upub-routes"
version = "0.4.0"
edition = "2021"
authors = [ "alemi <me@alemi.dev>" ]
description = "api route definitions for upub"
license = "AGPL-3.0"
repository = "https://git.alemi.dev/upub.git"
readme = "README.md"

[lib]

[dependencies]
thiserror = "2.0"
rand = "0.8"
sha256 = "1.5" # TODO ughhh
chrono = { version = "0.4", features = ["serde"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
upub = { path = "../core/" }
jrd = "0.1"
tracing = "0.1"
tokio = "1.43"
reqwest = { version = "0.12", features = ["json"] }
axum = { version = "0.8", features = ["multipart"] }
tower = "0.5"
tower-http = { version = "0.6", features = ["cors", "trace", "timeout"] }
httpsign = { path = "../utils/httpsign/", features = ["axum"] }
apb = { path = "../apb", features = ["unstructured", "orm", "activitypub-fe", "activitypub-counters", "litepub", "ostatus", "toot", "jsonld"] }
sea-orm = "1.1"
# nodeinfo = "0.0.2" # the version on crates.io doesn't re-export necessary types to build the struct!!!
nodeinfo = { git = "https://codeberg.org/thefederationinfo/nodeinfo-rs", rev = "e865094804" }
# mastodon
mastodon-async-entities = { version = "1.1.0", optional = true }
time = { version = "0.3", features = ["serde"], optional = true }
# frontend
leptos = { version = "0.7", optional = true }
leptos_router = { version = "0.7", optional = true }
leptos_axum = { version = "0.7", optional = true }
leptos_meta = { version = "0.7", optional = true }

[features]
default = ["activitypub", "web"]
activitypub = []
mastodon = ["dep:mastodon-async-entities"]
web = [
	"dep:leptos",
	"dep:leptos_router",
	"dep:leptos_axum",
	"dep:leptos_meta"
]
web-redirect = []
activitypub-redirect = []