Files
artcraft-services/crates/service/web/storyteller_web/Cargo.toml
T
2026-08-09 22:54:25 -04:00

222 lines
7.1 KiB
TOML

[package]
name = "storyteller-web"
edition = "2018"
version = "0.0.1"
authors = [
"Brandon Thomas <bt@brand.io>",
"Brandon Thomas <echelon@gmail.com>",
]
publish = false
#[lints.rust]
#unused_imports = "forbid"
# Main server monolith
[[bin]]
name = "storyteller-web"
path = "src/main.rs"
[[bin]]
name = "docs"
path = "src/api_doc_server.rs"
[[bin]]
name = "docs-cli"
path = "src/api_doc_cli.rs"
#[package.metadata.cargo-udeps.ignore]
#normal = ["workspace-build-acceleration"]
[dependencies]
# cargo-hakari workspace hack (faster compile times)
workspace-build-acceleration.workspace = true
# Internal
actix_artcraft.workspace = true
actix_cors_configs = { path = "../../../lib/actix_cors_configs" }
actix_helpers.workspace = true
artcraft_api_defs.workspace = true
artcraft_api_keys.workspace = true
artcraft_router.workspace = true
sha1_hash.workspace = true
video_info.workspace = true
bootstrap.workspace = true
bucket_client.workspace = true
bucket_paths.workspace = true
cloud_storage.workspace = true
collections.workspace = true
component_traits.workspace = true
composite_identifiers = { path = "../../../schema/public/composite_identifiers" }
config = { path = "../../../lib/deprecated/config" }
jwt_signer.workspace = true
crockford = { path = "../../../lib/data/crockford" }
datetimes = { path = "../../../lib/data/datetimes" }
easyenv.workspace = true
elasticsearch_schema = { path = "../../../schema/database/elasticsearch_schema" }
enums.workspace = true
beeble_client.workspace = true
error_utils.workspace = true
errors.workspace = true
fal_client.workspace = true
gmicloud_client.workspace = true
grok_api_client.workspace = true
filesys.workspace = true
google_sign_in = { path = "../../../api_clients/google_sign_in" }
hashing = { path = "../../../lib/files/hashing" }
http_server_common = { path = "../../../lib/deprecated/http_server_common" }
uuid_utils = { path = "../../../lib/uuid_utils" }
images.workspace = true
markdown = { path = "../../../lib/markdown" }
media = { path = "../../../lib/files/media" }
memory_caching = { path = "../../../lib/caching/memory_caching" }
migration = { path = "../../../schema/database/migration" }
datadog_client.workspace = true
metrics.workspace = true
mimetypes.workspace = true
mysql_queries.workspace = true
opaque_cursors.workspace = true
pager.workspace = true
password = { path = "../../../lib/password" }
rootly_client.workspace = true
rootly_config.workspace = true
shared_env_var_config.workspace = true
primitives = { path = "../../../lib/data/primitives" }
redis_caching = { path = "../../../lib/caching/redis_caching" }
redis_common = { path = "../../../schema/database/redis_common" }
redis_schema = { path = "../../../schema/database/redis_schema" }
reusable_types = { path = "../../../schema/public/reusable_types" }
kinovi_web_client.workspace = true
server_environment = { path = "../../../lib/server_environment" }
thumbnail_generator = { path = "../../../api_clients/thumbnail_generator" }
tokens.workspace = true
trace_id.workspace = true
tts_common = { path = "../../../lib/deprecated/tts_common" }
url_config = { path = "../../../lib/url_config" }
url_utils = { path = "../../../lib/url_utils" }
user_input_common = { path = "../../../lib/user_input_common" }
users.workspace = true
ffmpeg_utils.workspace = true
videos = { path = "../../../lib/files/videos" }
worldlabs_api_client.workspace = true
# Internal Components
billing_component = { path = "../../plugins/billing" }
billing_artcraft_component = { path = "../../plugins/billing_artcraft" }
user_traits_component = { path = "../../plugins/user_traits_component" }
# External
anyhow.workspace = true
base64.workspace = true
chrono.workspace = true
derive_more = "0.99.17"
hostname.workspace = true
lexical-sort = "0.3.1"
log.workspace = true
once_cell.workspace = true
rand.workspace = true
regex.workspace = true
strum_macros = "0.26.4"
time.workspace = true
url.workspace = true
# Money
async-stripe = { version = "0.26.0", default-features = false, features = ["runtime-tokio-hyper-rustls", "connect", "billing", "checkout", "webhook-events"] }
# Language tag parsing
# TODO: Move to language support crate
language-tags = "0.3.2" # Parsing single tags richly
# HTTP
# TODO/NB: This is just for Twitch, but we might need it later.
# reqwest.workspace = true
wreq.workspace = true
# Email
resend-rs = { version = "0.21.0", default-features = false, features = ["rustls-tls"] }
# NB: Both ring (via reqwest 0.12/hyper-rustls) and aws-lc-rs (via quinn/resend-rs)
# are features of rustls 0.23 in this binary. rustls requires an explicit default
# provider when multiple crypto providers are compiled in.
rustls = { version = "0.23", features = ["ring"], default-features = false }
# Runtime
tokio.workspace = true
# Futures
futures = { version = "0.3.17", features = ["thread-pool"] } # feature for ThreadPool
futures-util = "0.3.29"
futures_old_for_limiter = { package = "futures", version = "0.1.29" } # Older version of futures for `limiter` crate
sqlx = { version = "0.7.4", features = [ "mysql", "runtime-tokio-rustls", "chrono" ] }
# Redis Database
limitation = { path = "../../../vendor/limitation" }
r2d2.workspace = true
redis.workspace = true
# Elasticsearch
elasticsearch.workspace = true
# Files
infer = "0.16.0"
bytes.workspace = true
tempdir.workspace = true
tempfile.workspace = true
# The "never-encode-slash" feature seems to have been removed:
# https://github.com/durch/rust-s3/pull/254
rust-s3.workspace = true
actix-http.workspace = true
actix-multipart.workspace = true
actix-service.workspace = true
actix-web.workspace = true
actix-web-lab.workspace = true
# Crypto
magic-crypt = "3.1.13" # encrypting sort IDs for the frontend so we don't leak info
md-5 = "0.10.6" # gravatar
# Serialization
erased-serde.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
toml.workspace = true
# Async traits
# NB: note: `async` trait functions are not currently supported
# The initial round of stabilizations for the async/await language feature in Rust 1.39 did not
# include support for async fn in traits.
async-trait = "0.1.58"
utoipa.workspace = true
utoipa-swagger-ui = { version = "9", features = ["actix-web"] }
# TODO: move zip pieces into a separate library that encapsulates calls to this lib
zip = "0.6.6"
[build-dependencies]
# NB: Only using diesel for migrations support
diesel = { version = "2.2.4", features = ["mysql"] }
[features]
# Database fixture tests (guarded MySQL test database + in-process stub
# providers) RUN BY DEFAULT with `cargo test`. On machines/CI without a local
# MySQL, skip them with:
# SQLX_OFFLINE=true cargo test -p storyteller-web --features skip_database_tests
skip_database_tests = []
[dev-dependencies]
# Testing/Dev Deps: Internal
mysql_testing = { path = "../../../schema/database/mysql_testing" }
# The test dependency graph enables both rustls crypto backends, so tests
# must install one explicitly before anything builds a TLS config.
rustls = { version = "0.23", features = ["aws-lc-rs"] }
test_utils = { path = "../../../testing/test_utils" }
# Testing/Dev Deps: External
speculoos.workspace = true
strum.workspace = true
tempfile.workspace = true