-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCargo.toml
More file actions
121 lines (97 loc) · 4.13 KB
/
Cargo.toml
File metadata and controls
121 lines (97 loc) · 4.13 KB
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
[workspace]
members = ["crates/*"]
resolver = "2"
[workspace.package]
version = "0.41.0"
readme = "README.md"
edition = "2021"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
repository = "https://github.com/ujeenet/rustango"
homepage = "https://github.com/ujeenet/rustango"
documentation = "https://docs.rs/rustango"
keywords = ["web-framework", "orm", "django", "sqlite", "async"]
categories = ["web-programming::http-server", "database", "asynchronous"]
[workspace.dependencies]
# Internal — collapsed shape: one library facade `rustango` (with
# feature flags for admin / tenancy) plus the proc-macro crate which
# Rust requires to live separately.
rustango-macros = { version = "0.40.0", path = "crates/rustango-macros" }
rustango = { version = "0.40.0", path = "crates/rustango" }
# Async runtime
tokio = { version = "1", features = ["macros", "rt-multi-thread", "sync", "signal", "net"] }
# DB — backends are turned on via rustango's own `postgres` /
# `mysql` features so apps can pick a single backend (smaller dep
# tree) or both (one binary serving either). `json` is a fan-out
# feature that wires `sqlx::types::Json<T>: Type<DB>` for whichever
# backend(s) are enabled — needed for MySQL bind() of JSON columns.
# `rust_decimal` fans out `rust_decimal::Decimal ↔ NUMERIC/DECIMAL`
# for every backend so the universal `FieldType::Decimal` round-
# trips through bind/decode without per-dialect special-cases.
sqlx = { version = "0.8", default-features = false, features = ["runtime-tokio", "chrono", "uuid", "json", "rust_decimal"] }
# Schema collection + collections
inventory = "0.3"
indexmap = { version = "2", features = ["serde"] }
# Serde
serde = { version = "1", features = ["derive"] }
serde_json = "1"
# Field types
chrono = { version = "0.4", default-features = false, features = ["serde", "clock"] }
uuid = { version = "1", features = ["serde", "v4"] }
rust_decimal = { version = "1.36", default-features = false, features = ["serde", "std"] }
# Layered config (slice 8.3). `toml` is parser-only; we hand-roll the
# layering + env-var override pass so we don't pull figment in.
toml = { version = "0.8", default-features = false, features = ["parse"] }
# Errors
thiserror = "1"
# Logging
tracing = { version = "0.1", default-features = false, features = ["std"] }
tracing-appender = "0.2"
# Async-trait for dyn-dispatchable async traits (e.g. OrgResolver)
async-trait = "0.1"
# HTTP types — used by rustango-tenancy resolvers to inspect request parts
http = "1"
# Password hashing for the 2-domain auth (Operator + per-tenant User)
argon2 = "0.5"
password-hash = "0.5"
# Session cookie crypto for the operator console
hmac = "0.12"
sha1 = "0.10" # TOTP / RFC 6238 default
sha2 = "0.10"
subtle = "2" # constant-time eq for MAC verify
cookie = "0.18"
rand = "0.8" # session-secret auto-gen fallback
# Interactive manage CLI
dotenvy = "0.15"
# 7.4+ uses `libc::__errno_location` which is Linux-only; pin to 7.3
# until rpassword adopts a portable errno call.
rpassword = "=7.3.1"
# Admin (HTTP)
axum = { version = "0.8", default-features = false, features = ["tokio", "http1", "json", "form", "query", "original-uri"] }
tower = { version = "0.5", features = ["util"] }
http-body-util = "0.1"
serde_urlencoded = "0.7"
base64 = "0.22"
tera = { version = "1.20", default-features = false }
# Caching
redis = { version = "0.27", default-features = false, features = ["tokio-comp", "connection-manager"] }
# OAuth2 / OIDC HTTP client (rustls — no openssl footprint)
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
urlencoding = "2"
# Response compression (gzip + deflate). flate2 chooses the best backend
# at build time (miniz_oxide by default, no C deps).
flate2 = "1"
# Macro deps
syn = { version = "2", features = ["full", "extra-traits"] }
quote = "1"
proc-macro2 = "1"
[workspace.lints.rust]
unsafe_code = "forbid"
# missing_docs lints are deferred to week 8 hardening.
[workspace.lints.clippy]
all = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
[profile.dev]
opt-level = 0
[profile.test]
opt-level = 0