[package]
name = "sd-core"
version = "0.1.2"
description = "Virtual distributed filesystem engine that powers Spacedrive."
authors = ["Spacedrive Technology Inc."]
rust-version = "1.70.0"
license = { workspace = true }
repository = { workspace = true }
edition = { workspace = true }

[features]
default = []
# This feature allows features to be disabled when the Core is running on mobile.
mobile = []
# This feature controls whether the Spacedrive Core contains functionality which requires FFmpeg.
ffmpeg = ["dep:sd-ffmpeg"]
location-watcher = ["dep:notify"]
heif = ["sd-images/heif"]

[dependencies]
sd-media-metadata = { path = "../crates/media-metadata" }
sd-prisma = { path = "../crates/prisma" }
sd-ffmpeg = { path = "../crates/ffmpeg", optional = true }
sd-crypto = { path = "../crates/crypto", features = [
	"rspc",
	"specta",
	"serde",
	"keymanager",
] }

sd-images = { path = "../crates/images", features = [
	"rspc",
	"serde",
	"specta",
] }
sd-file-ext = { path = "../crates/file-ext" }
sd-sync = { path = "../crates/sync" }
sd-p2p = { path = "../crates/p2p", features = ["specta", "serde"] }
sd-utils = { path = "../crates/utils" }
sd-core-sync = { path = "./crates/sync" }

rspc = { workspace = true, features = [
	"uuid",
	"chrono",
	"tracing",
	"alpha",
	"unstable",
] }
prisma-client-rust = { workspace = true }
specta = { workspace = true }
tokio = { workspace = true, features = [
	"sync",
	"rt-multi-thread",
	"io-util",
	"macros",
	"time",
	"process",
] }
base64 = "0.21.4"
serde = { version = "1.0", features = ["derive"] }
chrono = { version = "0.4.30", features = ["serde"] }
serde_json = { workspace = true }
futures = "0.3"
rmp = "^0.8.12"
rmp-serde = "^1.1.2"
rmpv = "^1.0.1"
blake3 = "1.4.1"
hostname = "0.3.1"
uuid = { workspace = true }
sysinfo = "0.29.10"
thiserror = "1.0.48"
include_dir = { version = "0.7.3", features = ["glob"] }
async-trait = "^0.1.73"
image = "0.24.7"
webp = "0.2.6"
tracing = { workspace = true }
tracing-subscriber = { workspace = true, features = ["env-filter"] }
async-stream = "0.3.5"
once_cell = "1.18.0"
ctor = "0.2.4"
globset = { version = "^0.4.13", features = ["serde1"] }
itertools = "^0.11.0"
enumflags2 = "0.7.7"
http-range = "0.1.5"
mini-moka = "0.10.2"
serde_with = "3.3.0"
dashmap = { version = "5.5.3", features = ["serde"] }
notify = { version = "=5.2.0", default-features = false, features = [
	"macos_fsevent",
], optional = true }
static_assertions = "1.1.0"
serde-hashkey = "0.4.5"
normpath = { version = "1.1.1", features = ["localization"] }
tracing-appender = { workspace = true }
strum = { version = "0.25", features = ["derive"] }
strum_macros = "0.25"
regex = "1.9.5"
hex = "0.4.3"
int-enum = "0.5.0"
tokio-stream = "0.1.14"
futures-concurrency = "7.4.3"
async-channel = "1.9"
tokio-util = { version = "0.7.8", features = ["io"] }
slotmap = "1.0.6"
flate2 = "1.0.27"
tar = "0.4.40"
tempfile = "^3.8.0"
axum = "0.6.20"
http-body = "0.4.5"
pin-project-lite = "0.2.13"
bytes = "1.5.0"
reqwest = { version = "0.11.20", features = ["json", "native-tls-vendored"] }
directories = "5.0.1"

# Override features of transitive dependencies
[dependencies.openssl]
version = "=0.10.57"
features = ["vendored"]
[dependencies.openssl-sys]
version = "=0.9.93"
features = ["vendored"]

[target.'cfg(target_os = "macos")'.dependencies]
plist = "1"

[target.'cfg(windows)'.dependencies.winapi-util]
version = "0.1.5"

[dev-dependencies]
tracing-test = "^0.2.4"
aovec = "1.1.0"
