190 lines
7.1 KiB
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"] }
|