222 lines
7.1 KiB
TOML
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
|