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