artcraftx/Cargo.toml

190 lines
7.1 KiB
TOML

[workspace]
resolver = "2"
# This block defines the workspace members.
# When we add a library or binary crate, it needs an entry here.
members = [
# API clients for external services
# These might be custom implementations or wrappers over other client libraries.
"crates/api_clients/artcraft_client",
"crates/api_clients/fal_client",
"crates/api_clients/gmicloud_client",
"crates/api_clients/grok_api_client",
"crates/api_clients/grok_consumer_client",
"crates/api_clients/grok_consumer_statsig",
"crates/api_clients/higgsfield_client",
"crates/api_clients/midjourney_client",
"crates/router",
"crates/api_clients/seedance2pro_client",
# Desktop apps
"crates/artcraftx",
# Highest-level shared types: enums and identifiers used across the workspace
"crates/core_types",
# Every generation model (image, video, mesh, splat, audio) and its capabilities
"crates/models",
# Shared libraries
"crates/lib/browser_emulation",
"crates/lib/build_metadata",
"crates/lib/caching/memory_store",
"crates/lib/cloudflare_errors",
"crates/lib/cloudflare_mitigation",
"crates/lib/cookie_store_wrapper",
"crates/lib/datadome_errors",
"crates/lib/datadome_mitigation",
"crates/lib/data/primitives",
"crates/lib/data/web_base64",
"crates/lib/errors",
"crates/lib/files/file_hashing",
"crates/lib/files/file_to_base64_url",
"crates/lib/files/filesys",
"crates/lib/files/images",
"crates/lib/files/mimetypes",
"crates/lib/files/thumbnails",
"crates/lib/http_headers",
"crates/lib/jwt_light",
"crates/lib/url_utils",
"crates/lib/uuid_utils",
# Local task storage (SQLite, embedded migrations)
"crates/schema/local_files_database",
"crates/schema/sqlite_database",
"crates/schema/sqlite_identifiers",
# Schema (public): common strongly-typed tokens, ids, payloads, etc.
# Testing code
"crates/testing/test_data",
"crates/testing/test_utils",
# Vendored code
"crates/vendor/tauri-plugin-http",
# cargo-hakari workspace hack (compilation speedup hack)
# NB: Currently disabled (empty crate); kept so member crates can depend on it.
"crates/workspace-build-acceleration",
]
[workspace.package]
# Common inheritable settings for monorepo packages
publish = false
# NB: Profiles must live at the workspace root; profiles in member crates are ignored.
[profile.dev]
incremental = true # Compile your binary in smaller steps.
[profile.release]
codegen-units = 1 # Allows LLVM to perform better optimization.
lto = true # Enables link-time-optimizations.
opt-level = 3 # `s` prioritizes small binary size. Use `3` if you prefer speed.
panic = "abort" # Higher performance by disabling panic handlers.
strip = true # Ensures debug symbols are removed.
[workspace.dependencies]
# Hakari workspace hack (faster compile times)
workspace-build-acceleration = { path = "crates/workspace-build-acceleration" }
# Internal libs
# Setting paths here ensures we don't need to do so in every crate's Cargo.toml
# It makes refactoring much easier.
artcraft_client = { path = "crates/api_clients/artcraft_client" }
build_metadata = { path = "crates/lib/build_metadata" }
cloudflare_errors = { path = "crates/lib/cloudflare_errors" }
cloudflare_mitigation = { path = "crates/lib/cloudflare_mitigation" }
datadome_errors = { path = "crates/lib/datadome_errors" }
datadome_mitigation = { path = "crates/lib/datadome_mitigation" }
browser_emulation = { path = "crates/lib/browser_emulation" }
cookie_store_wrapper = { path = "crates/lib/cookie_store_wrapper" }
errors = { path = "crates/lib/errors" }
fal_client = { path = "crates/api_clients/fal_client" }
file_hashing = { path = "crates/lib/files/file_hashing" }
file_to_base64_url = { path = "crates/lib/files/file_to_base64_url" }
filesys = { path = "crates/lib/files/filesys" }
gmicloud_client = { path = "crates/api_clients/gmicloud_client" }
grok_api_client = { path = "crates/api_clients/grok_api_client" }
grok_consumer_client = { path = "crates/api_clients/grok_consumer_client" }
higgsfield_client = { path = "crates/api_clients/higgsfield_client" }
grok_consumer_statsig = { path = "crates/api_clients/grok_consumer_statsig" }
http_headers = { path = "crates/lib/http_headers" }
core_types = { path = "crates/core_types" }
models = { path = "crates/models" }
images = { path = "crates/lib/files/images" }
jwt_light = { path = "crates/lib/jwt_light" }
memory_store = { path = "crates/lib/caching/memory_store" }
midjourney_client = { path = "crates/api_clients/midjourney_client" }
mimetypes = { path = "crates/lib/files/mimetypes" }
primitives = { path = "crates/lib/data/primitives" }
router = { path = "crates/router" }
seedance2pro_client = { path = "crates/api_clients/seedance2pro_client" }
local_files_database = { path = "crates/schema/local_files_database" }
sqlite_database = { path = "crates/schema/sqlite_database" }
sqlite_identifiers = { path = "crates/schema/sqlite_identifiers" }
test_data = { path = "crates/testing/test_data" }
thumbnails = { path = "crates/lib/files/thumbnails" }
test_utils = { path = "crates/testing/test_utils" }
url_utils = { path = "crates/lib/url_utils" }
uuid_utils = { path = "crates/lib/uuid_utils" }
web_base64 = { path = "crates/lib/data/web_base64" }
# External libs
# Centrally pinned versions so that we can uniformly upgrade/downgrade versions across the workspace
# If a crate needs to use an older/newer version, the dependency should be managed in that crate's own Cargo.toml
anyhow = "1.0.102"
assertor = "0.0.3"
base64 = "0.22.1"
async-trait = "0.1.89"
blake3 = "1.5"
bstr = "1.12.1"
byteorder = "1.5.0"
bytes = "1.11.1"
chrono = { version = "0.4.44", features = ["serde"] }
cookie = "0.18.1"
env = "1.0.1"
env_logger = "0.11.9"
futures = { version = "0.3.32" }
indexmap = { version = "2.13.0", features = ["serde"] }
log = "0.4.29"
mp4 = "0.14.0"
openh264 = "0.8.0"
once_cell = "1.21.4"
rand = "0.9.1"
regex = "1.12.3"
reqwest = { version = "0.12.23", default-features = false, features = [ "charset", "http2", "system-proxy", "json", "cookies", "rustls-tls", "gzip" ] }
serde = { version = "1.0.228", features = ["derive"] }
serde_derive = "1.0.228"
serde_json = "1.0.149"
sha2 = "0.11.0-rc.5"
sha3 = "0.10.8"
strum = { version = "0.28.0", features = ["derive"] }
tauri = { version = "2.11.2", features = ["unstable", "devtools", "protocol-asset"] } # NB: "devtools" prevents App Store distribution; "unstable" is needed for window access
tauri-plugin-dialog = "2.7.1"
tauri-plugin-fs = "2.5.1"
tauri-plugin-log = "2.8.0"
tauri-plugin-upload = "2.4.0"
tempdir = "0.3.7"
tempfile = "3.27.0"
thiserror = "2.0.18"
tokio = { version = "1.50.0", features = ["macros"] }
tokio-util = "0.7.12"
toml = "1.0.7+spec-1.1.0"
url = { version = "2.5.8", features = ["serde"] }
uuid = "1.22.0"
walkdir = "2.4.0"
webp-animation = "0.9.0"
# NB: wreq gets past fingerprinting, but we have to deal with platform-specific build issues.
#
# Mac:
# brew install --formula cmake pkg-config llvm
# Windows:
# choco install cmake -y
# choco install strawberryperl -y
# choco install pkgconfiglite -y
# choco install llvm -y
# choco install nasm -y
wreq-util = "3.0.0-rc.10"
wreq = { version = "6.0.0-rc.28", features = ["json", "query", "form", "multipart", "cookies", "ws", "stream", "gzip", "brotli", "zstd", "deflate"] }