Alternative ATProto PDS implementation
1[package]
2name = "bluepds"
3version = "0.0.0"
4edition = "2024"
5publish = false
6authors = ["Justin Moore", "Timothy Quilling <teqed@shatteredsky.net>"]
7description = "Alternative ATProto PDS implementation"
8license = "MIT OR Apache-2.0"
9readme = "README.md"
10repository = "https://github.com/DrChat/bluepds"
11keywords = ["atproto", "pds"]
12categories = []
13
14[profile.dev.package."*"]
15opt-level = 3
16
17[profile.dev]
18opt-level = 1
19
20[profile.release]
21opt-level = "s" # Slightly slows compile times, great improvements to file size and runtime performance.
22lto = "thin" # Do a second optimization pass over the entire program, including dependencies.
23codegen-units = 1 # Compile the entire crate as one unit.
24strip = "debuginfo" # Strip all debugging information from the binary to slightly reduce file size.
25
26[lints.rust]
27## Groups
28warnings = { level = "warn", priority = -1 } # All lints that are set to issue warnings
29deprecated-safe = { level = "warn", priority = -1 } # Lints for functions which were erroneously marked as safe in the past
30future-incompatible = { level = "warn", priority = -1 } # Lints that detect code that has future-compatibility problems
31keyword-idents = { level = "warn", priority = -1 } # Lints that detect identifiers which will be come keywords in later editions
32let-underscore = { level = "warn", priority = -1 } # Lints that detect wildcard let bindings that are likely to be invalid
33nonstandard-style = { level = "warn", priority = -1 } # Violation of standard naming conventions
34refining-impl-trait = { level = "warn", priority = -1 } # Detects refinement of impl Trait return types by trait implementations
35rust-2018-compatibility = { level = "warn", priority = -1 } # Lints used to transition code from the 2015 edition to 2018
36rust-2021-compatibility = { level = "warn", priority = -1 } # Lints used to transition code from the 2018 edition to 2021
37rust-2018-idioms = { level = "warn", priority = -1 } # Lints to nudge you toward idiomatic features of Rust 2018
38rust-2024-compatibility = { level = "warn", priority = -1 } # Lints used to transition code from the 2021 edition to 2024
39# unused = { level = "warn", priority = -1 } # Lints that detect things being declared but not used, or excess syntax
40## Individual
41ambiguous_negative_literals = "warn" # checks for cases that are confusing between a negative literal and a negation that's not part of the literal.
42closure_returning_async_block = "warn" # detects cases where users write a closure that returns an async block. # nightly
43ffi_unwind_calls = "warn"
44# fuzzy_provenance_casts = "warn" # unstable
45# lossy_provenance_casts = "warn" # unstable
46macro_use_extern_crate = "warn"
47meta_variable_misuse = "warn"
48missing_abi = "warn"
49missing_copy_implementations = "allow" # detects potentially-forgotten implementations of Copy for public types.
50missing_debug_implementations = "allow" # detects missing implementations of fmt::Debug for public types.
51missing_docs = "warn"
52# multiple_supertrait_upcastable = "warn" # unstable
53# must_not_suspend = "warn" # unstable
54non_ascii_idents = "warn"
55# non_exhaustive_omitted_patterns = "warn" # unstable
56redundant_imports = "warn"
57redundant_lifetimes = "warn"
58rust_2024_incompatible_pat = "warn" # nightly
59single_use_lifetimes = "warn"
60trivial_casts = "warn"
61trivial_numeric_casts = "warn"
62unit_bindings = "warn"
63unnameable_types = "warn"
64# unqualified_local_imports = "warn" # unstable
65# unreachable_pub = "warn"
66unsafe_code = "warn"
67unstable_features = "warn"
68# unused_crate_dependencies = "warn"
69unused_import_braces = "warn"
70unused_lifetimes = "warn"
71unused_qualifications = "warn"
72unused_results = "warn"
73variant_size_differences = "warn"
74elided_lifetimes_in_paths = "allow"
75# unstable-features = "allow"
76# # Temporary Allows
77dead_code = "allow"
78unused_imports = "allow"
79
80[lints.clippy]
81# Groups
82nursery = { level = "warn", priority = -1 }
83correctness = { level = "warn", priority = -1 }
84suspicious = { level = "warn", priority = -1 }
85# complexity = { level = "warn", priority = -1 }
86# perf = { level = "warn", priority = -1 }
87# style = { level = "warn", priority = -1 }
88# pedantic = { level = "warn", priority = -1 }
89# restriction = { level = "warn", priority = -1 }
90cargo = { level = "warn", priority = -1 }
91# Temporary Allows
92multiple_crate_versions = "allow" # triggered by lib
93expect_used = "allow"
94missing_docs_in_private_items = "allow"
95# # Temporary Allows - Restriction
96min_ident_chars = "allow" # 50 instances
97# arbitrary_source_item_ordering = "allow"
98renamed_function_params = "allow" # possibly triggered by lib
99# pattern_type_mismatch = "allow"
100# Style Allows
101implicit_return = "allow"
102self_named_module_files = "allow" # Choose one of self_named_module_files or mod_module_files
103mod_module_files = "allow"
104else_if_without_else = "allow"
105std_instead_of_alloc = "allow"
106std_instead_of_core = "allow"
107blanket_clippy_restriction_lints = "allow"
108float_arithmetic = "allow"
109redundant_pub_crate = "allow"
110pub_with_shorthand = "allow"
111absolute_paths = "allow"
112module_name_repetitions = "allow"
113missing_trait_methods = "allow"
114separated_literal_suffix = "allow"
115exhaustive_structs = "allow"
116field_scoped_visibility_modifiers = "allow"
117allow_attributes_without_reason = "allow"
118tests_outside_test_module = "allow"
119ref_patterns = "allow"
120question_mark_used = "allow"
121shadow_reuse = "allow"
122single_call_fn = "allow"
123# Warns
124use_self = "warn"
125str_to_string = "warn"
126print_stdout = "warn"
127unseparated_literal_suffix = "warn"
128unwrap_used = "warn"
129# Denys
130enum_glob_use = "deny"
131# expect_used = "deny"
132
133[dependencies]
134multihash = "0.19.3"
135diesel = { version = "2.1.5", features = [
136 "chrono",
137 "sqlite",
138 "r2d2",
139 "returning_clauses_for_sqlite_3_35",
140] }
141diesel_migrations = { version = "2.1.0" }
142r2d2 = "0.8.10"
143
144atrium-repo = "0.1"
145atrium-api = "0.25"
146# atrium-common = { version = "0.1.2", path = "atrium-common" }
147atrium-crypto = "0.1"
148# atrium-identity = { version = "0.1.4", path = "atrium-identity" }
149atrium-xrpc = "0.12"
150atrium-xrpc-client = "0.5"
151# bsky-sdk = { version = "0.1.19", path = "bsky-sdk" }
152rsky-syntax = { git = "https://github.com/blacksky-algorithms/rsky.git" }
153rsky-repo = { git = "https://github.com/blacksky-algorithms/rsky.git" }
154rsky-pds = { git = "https://github.com/blacksky-algorithms/rsky.git" }
155rsky-common = { git = "https://github.com/blacksky-algorithms/rsky.git" }
156rsky-lexicon = { git = "https://github.com/blacksky-algorithms/rsky.git" }
157
158# async in streams
159# async-stream = "0.3"
160
161# DAG-CBOR codec
162ipld-core = "0.4.2"
163serde_ipld_dagcbor = { version = "0.6.2", default-features = false, features = [
164 "std",
165] }
166serde_ipld_dagjson = "0.2.0"
167cidv10 = { version = "0.10.1", package = "cid" }
168
169# Parsing and validation
170base64 = "0.22.1"
171chrono = "0.4.39"
172hex = "0.4.3"
173# langtag = "0.3"
174# multibase = "0.9.1"
175regex = "1.11.1"
176serde = { version = "1.0.218", features = ["derive"] }
177serde_bytes = "0.11.17"
178# serde_html_form = "0.2.6"
179serde_json = "1.0.139"
180# unsigned-varint = "0.8"
181
182# Cryptography
183# ecdsa = "0.16.9"
184# elliptic-curve = "0.13.6"
185# jose-jwa = "0.1.2"
186# jose-jwk = { version = "0.1.2", default-features = false }
187k256 = "0.13.4"
188# p256 = { version = "0.13.2", default-features = false }
189rand = "0.8.5"
190sha2 = "0.10.8"
191
192# Networking
193# dashmap = "6.1.0"
194futures = "0.3.31"
195# hickory-proto = { version = "0.24.3", default-features = false }
196# hickory-resolver = "0.24.1"
197# http = "1.1.0"
198# lru = "0.12.4"
199# moka = "0.12.8"
200tokio = { version = "1.43.0", features = ["macros", "rt-multi-thread"] }
201tokio-util = { version = "0.7.13", features = ["io"] }
202
203# HTTP client integrations
204# isahc = "1.7.2"
205reqwest = { version = "0.12.12", features = ["json"] }
206
207# Errors
208anyhow = "1.0.96"
209thiserror = "2.0.11"
210
211# CLI
212clap = { version = "4.5.30", features = ["derive"] }
213# dirs = "5.0.1"
214
215# Testing
216# gloo-timers = { version = "0.3.0", features = ["futures"] }
217# mockito = "=1.6.1"
218
219# WebAssembly
220# wasm-bindgen-test = "0.3.41"
221# web-time = "1.1.0"
222# bumpalo = "~3.14.0"
223
224# Code generation
225# trait-variant = "0.1.2"
226
227# Others
228# base64ct = "=1.6.0"
229# litemap = "=0.7.4"
230# native-tls = "=0.2.13"
231# zerofrom = "=0.1.5"
232argon2 = { version = "0.5.3", features = ["std"] }
233axum = { version = "0.8.1", features = [
234 "tower-log",
235 "form",
236 "macros",
237 "ws",
238 "json",
239] }
240azure_core = "0.22.0"
241azure_identity = "0.22.0"
242base32 = "0.5.1"
243clap-verbosity-flag = "3.0.2"
244constcat = "0.6.0"
245figment = { version = "0.10.19", features = ["toml", "env"] }
246http-cache-reqwest = { version = "0.15.1", default-features = false, features = [
247 "manager-moka",
248] }
249memmap2 = "0.9.5"
250metrics = "0.24.1"
251metrics-exporter-prometheus = "0.16.2"
252reqwest-middleware = { version = "0.4.0", features = ["json"] }
253tower-http = { version = "0.6.2", features = ["cors", "fs", "trace"] }
254tracing = "0.1.41"
255tracing-subscriber = "0.3.19"
256url = "2.5.4"
257uuid = { version = "1.14.0", features = ["v4"] }
258urlencoding = "2.1.3"
259async-trait = "0.1.88"
260lazy_static = "1.5.0"
261secp256k1 = "0.28.2"
262dotenvy = "0.15.7"
263deadpool-diesel = { version = "0.6.1", features = [
264 "serde",
265 "sqlite",
266 "tracing",
267] }