1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
[workspace]
members = [
"crates/core",
"crates/tui",
"crates/wasm",
"crates/steam",
"crates/server"
]
resolver = "2"
[workspace.package]
version = "0.1.0"
edition = "2021"
authors = ["Your Name <[email protected]>"]
license = "MIT"
description = "Competitive typing - solo practice, live races and code drills, in the terminal and the browser"
[workspace.dependencies]
# Core dependencies
tokio = { version = "1.0", features = ["full"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
anyhow = "1.0"
thiserror = "1.0"
config = "0.13"
dirs = "5.0"
rlua = "0.19"
rand = "0.8"
# Terminal UI
crossterm = "0.27"
ratatui = "0.24"
# Web/WASM
wasm-bindgen = "0.2"
js-sys = "0.3"
web-sys = "0.3"
wasm-bindgen-futures = "0.4"
wasm-timer = "0.2"
# Networking
tokio-tungstenite = { version = "0.20", features = ["native-tls"] }
futures-util = "0.3"
# Backend server
axum = { version = "0.7", features = ["ws"] }
axum-extra = { version = "0.9", features = ["cookie"] }
tower = "0.4"
tower-http = { version = "0.5", features = ["cors", "trace", "set-header"] }
# default-features off: the defaults pull the MySQL and SQLite drivers, and
# with them rsa, which carries RUSTSEC-2023-0071. Only Postgres is used.
sqlx = { version = "0.8", default-features = false, features = ["runtime-tokio-rustls", "postgres", "macros", "migrate", "time", "uuid"] }
argon2 = "0.5"
# Already in the tree through argon2; declared directly because the Stripe
# webhook signature check needs them by name.
hmac = "0.12"
sha2 = "0.10"
subtle = "2.6"
# 0.12 moves to hyper 1.x, which brings h2 0.4 and rustls 0.23 with it.
# 0.11 was the sole source of every remaining advisory in the server build:
# h2 0.3, rustls-webpki 0.101, rustls-pemfile 1.0 and idna 0.3.
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
uuid = { version = "1.10", features = ["v4", "serde"] }
time = { version = "0.3", features = ["serde"] }
dashmap = "6.1"
dotenvy = "0.15"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Steam desktop client
# Using full default features for now (guarantees DefaultPlugins resolves).
# Trimming to a minimal feature set is a later optimization once this builds
# cleanly - don't fight feature-flag mismatches without a compiler to check against.
bevy = "0.19"
|