Skip to main content

max / makenotwork

4.2 KB · 145 lines History Blame Raw
1 [workspace]
2 resolver = "2"
3 members = [
4 "crates/mt-core",
5 "crates/mt-db",
6 ]
7 default-members = ["."]
8
9 [workspace.package]
10 version = "0.4.1"
11 edition = "2024"
12 license-file = "LICENSE"
13
14 [workspace.dependencies]
15 # Core
16 tokio = { version = "1", features = ["rt-multi-thread", "sync", "time", "macros", "signal"] }
17 tokio-util = { version = "0.7", features = ["io"] }
18 thiserror = "2"
19 serde = { version = "1", features = ["derive"] }
20 serde_json = "1"
21 tracing = "0.1"
22 tracing-subscriber = { version = "0.3", features = ["env-filter"] }
23
24 # Web
25 axum = { version = "0.8", features = ["ws", "multipart"] }
26 tower = "0.5"
27 tower-http = { version = "0.7", features = ["fs", "cors", "trace", "set-header", "timeout"] }
28 tower-sessions = "0.14"
29 tower-sessions-sqlx-store = { version = "0.15", features = ["postgres"] }
30
31 # HTTP client / crypto
32 reqwest = { version = "0.13", default-features = false, features = ["json", "rustls"] }
33 # Pinned to the exact major reqwest resolves so the SSRF pre-check parses the
34 # host with the same parser reqwest connects through (link_preview::validate_url).
35 url = "2"
36 sha2 = "0.11"
37 hmac = "0.13"
38 base64 = "0.22"
39 rand = "0.10"
40
41 # S3 storage
42 s3-storage = { path = "../shared/s3-storage" }
43
44 # Database
45 sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "chrono", "uuid"] }
46
47 # Rate limiting
48 tower_governor = "0.8"
49 governor = "0.10"
50
51 # Utilities
52 chrono = { version = "0.4", features = ["serde"] }
53 uuid = { version = "1", features = ["v4", "serde"] }
54 pulldown-cmark = "0.13"
55 askama = "0.16.0"
56
57 # Internal crates
58 mt-core = { path = "crates/mt-core" }
59 mt-db = { path = "crates/mt-db" }
60 tagtree = { path = "../shared/tagtree" }
61
62 [package]
63 name = "multithreaded"
64 version.workspace = true
65 edition.workspace = true
66
67 [dependencies]
68 mt-core = { workspace = true }
69 mt-db = { workspace = true }
70 tokio = { workspace = true }
71 tokio-util = { workspace = true }
72 axum = { workspace = true }
73 tower = { workspace = true }
74 tower-http = { workspace = true }
75 tracing = { workspace = true }
76 tracing-subscriber = { workspace = true }
77 serde = { workspace = true }
78 serde_json = { workspace = true }
79 askama = { workspace = true }
80 chrono = { workspace = true }
81 uuid = { workspace = true }
82 sqlx = { workspace = true }
83 tower-sessions = { workspace = true }
84 tower-sessions-sqlx-store = { workspace = true }
85 reqwest = { workspace = true }
86 url = { workspace = true }
87 sha2 = { workspace = true }
88 base64 = { workspace = true }
89 rand = { workspace = true }
90 pulldown-cmark = { workspace = true }
91 docengine = { path = "../../Libraries/docengine", features = ["mentions", "quotes"] }
92 tagtree = { workspace = true }
93 tower_governor = { workspace = true }
94 governor = { workspace = true }
95 s3-storage = { workspace = true }
96 dotenvy = "0.15"
97 hex = "0.4"
98 hmac = { workspace = true }
99 regex-lite = "0.1"
100 urlencoding = "2"
101 time = "0.3"
102
103 [dev-dependencies]
104 http-body-util = "0.1"
105 wiremock = "0.6"
106 pom-contract = { path = "../shared/pom-contract" }
107 # Enable mt-db's setup-only mutations for the integration suite. Resolver 2 keeps
108 # this feature out of the normal/production build.
109 mt-db = { workspace = true, features = ["test-support"] }
110
111 [workspace.lints.rust]
112 unused = "warn"
113 unreachable_pub = "warn"
114
115 [workspace.lints.clippy]
116 pedantic = { level = "warn", priority = -1 }
117 # Allow-list tuned from a measured breakdown across server/multithreaded/pter
118 # (2026-07-22). These are the high-churn / low-signal pedantic lints; everything
119 # else in `pedantic` stays a warning. Keep this block identical across repos.
120 module_name_repetitions = "allow"
121 # Doc lints. No docs-completeness push is underway.
122 missing_errors_doc = "allow"
123 missing_panics_doc = "allow"
124 doc_markdown = "allow"
125 # Numeric casts. Endemic and mostly intentional in size and byte math.
126 cast_possible_truncation = "allow"
127 cast_sign_loss = "allow"
128 cast_precision_loss = "allow"
129 cast_possible_wrap = "allow"
130 cast_lossless = "allow"
131 # Subjective structure and style nags. High churn, low signal.
132 must_use_candidate = "allow"
133 too_many_lines = "allow"
134 struct_excessive_bools = "allow"
135 similar_names = "allow"
136 items_after_statements = "allow"
137 single_match_else = "allow"
138 # Frequent false-positives in TUI and router-heavy code.
139 match_same_arms = "allow"
140 unnecessary_wraps = "allow"
141 type_complexity = "allow"
142
143 [lints]
144 workspace = true
145