1[package]
2name = "consumer"
3version = "0.1.0"
4edition = "2021"
5
6[dependencies]
7chrono = { version = "0.4.39", features = ["serde"] }
8chrono-tz = "0.10"
9cid = "0.11"
10ciborium = "0.2.2"
11clap = { version = "4.5.34", features = ["derive"] }
12deadpool-postgres = { version = "0.14.1", features = ["serde"] }
13did-resolver = { path = "../did-resolver" }
14eyre = "0.6.12"
15figment = { version = "0.10.19", features = ["env", "toml"] }
16flume = { version = "0.11", features = ["async"] }
17foldhash = "0.1.4"
18futures = "0.3.31"
19futures-util = "0.3.31"
20ipld-core = "0.4.1"
21iroh-car = "0.5.1"
22jacquard = { workspace = true }
23jacquard-api = { workspace = true }
24jacquard-common = { workspace = true }
25lexica = { path = "../lexica" }
26metrics = "0.24.1"
27metrics-exporter-prometheus = "0.16.2"
28moka = { version = "0.12", features = ["future"] }
29parakeet-db = { path = "../parakeet-db", default-features = false }
30reqwest = { version = "0.12.12", features = ["native-tls", "brotli", "stream"] }
31serde = { version = "1.0.217", features = ["derive"] }
32serde_with = "3.14"
33serde_bytes = "0.11"
34serde_ipld_dagcbor = "0.6.1"
35serde_json = "1.0.134"
36thiserror = "2"
37tokio = { version = "1.42.0", features = ["full"] }
38tokio-postgres = { version = "0.7.12", features = ["with-chrono-0_4", "with-serde_json-1"] }
39tokio-stream = "0.1.17"
40tokio-tungstenite = { version = "0.21", features = ["native-tls"] }
41zstd = { version = "0.13", default-features = false }
42rand = "0.8.5"
43tokio-util = { version = "0.7.14", features = ["io", "rt"] }
44tracing = "0.1.40"
45tracing-subscriber = "0.3.18"
46lru = "0.12.2"
47mpsc = "0.2.6"
48regex = "1.12.2"
49once_cell = "1.18.0"
50futures-channel = "0.3.31"
51urlencoding = "2.1"
52color-eyre = "0.6.5"
53unicode-segmentation = "1.10"
54async-trait = "0.1"
55
56
57[lints.rust]
58## Groups
59warnings = { level = "warn", priority = -1 } # All lints that are set to issue warnings
60deprecated-safe = { level = "warn", priority = -1 } # Lints for functions which were erroneously marked as safe in the past
61future-incompatible = { level = "warn", priority = -1 } # Lints that detect code that has future-compatibility problems
62keyword-idents = { level = "warn", priority = -1 } # Lints that detect identifiers which will be come keywords in later editions
63let-underscore = { level = "warn", priority = -1 } # Lints that detect wildcard let bindings that are likely to be invalid
64nonstandard-style = { level = "warn", priority = -1 } # Violation of standard naming conventions
65refining-impl-trait = { level = "warn", priority = -1 } # Detects refinement of impl Trait return types by trait implementations
66# rust-2018-compatibility = { level = "warn", priority = -1 } # Lints used to transition code from the 2015 edition to 2018
67# rust-2021-compatibility = { level = "warn", priority = -1 } # Lints used to transition code from the 2018 edition to 2021
68# rust-2018-idioms = { level = "warn", priority = -1 } # Lints to nudge you toward idiomatic features of Rust 2018
69# rust-2024-compatibility = { level = "warn", priority = -1 } # Lints used to transition code from the 2021 edition to 2024
70unused = { level = "warn", priority = -1 } # Lints that detect things being declared but not used, or excess syntax
71## Individual
72ambiguous_negative_literals = "warn" # checks for cases that are confusing between a negative literal and a negation that's not part of the literal.
73closure_returning_async_block = "warn" # detects cases where users write a closure that returns an async block. # nightly
74ffi_unwind_calls = "warn"
75# fuzzy_provenance_casts = "warn" # unstable
76# lossy_provenance_casts = "warn" # unstable
77macro_use_extern_crate = "warn"
78meta_variable_misuse = "warn"
79missing_abi = "warn"
80missing_copy_implementations = "allow" # detects potentially-forgotten implementations of Copy for public types.
81missing_debug_implementations = "allow" # detects missing implementations of fmt::Debug for public types.
82missing_docs = "allow"
83# multiple_supertrait_upcastable = "warn" # unstable
84# must_not_suspend = "warn" # unstable
85non_ascii_idents = "warn"
86# non_exhaustive_omitted_patterns = "warn" # unstable
87redundant_imports = "warn"
88redundant_lifetimes = "warn"
89rust_2024_incompatible_pat = "warn" # nightly
90single_use_lifetimes = "warn"
91trivial_casts = "warn"
92trivial_numeric_casts = "warn"
93unit_bindings = "warn"
94unnameable_types = "allow"
95# unqualified_local_imports = "warn" # unstable
96# unreachable_pub = "warn"
97unsafe_code = "warn"
98unstable_features = "warn"
99# unused_crate_dependencies = "warn"
100unused_import_braces = "warn"
101unused_lifetimes = "warn"
102unused_qualifications = "allow"
103# unused_results = "warn"
104variant_size_differences = "warn"
105elided_lifetimes_in_paths = "allow"
106# unstable-features = "allow"
107# # Temporary Allows
108# dead_code = "allow"
109# unused_imports = "allow"
110
111[lints.clippy]
112# Groups
113# nursery = { level = "warn", priority = -1 }
114# correctness = { level = "warn", priority = -1 }
115# suspicious = { level = "warn", priority = -1 }
116# complexity = { level = "warn", priority = -1 }
117# perf = { level = "warn", priority = -1 }
118# style = { level = "warn", priority = -1 }
119# pedantic = { level = "warn", priority = -1 }
120# restriction = { level = "warn", priority = -1 }
121# cargo = { level = "warn", priority = -1 }
122# Temporary Allows
123# multiple_crate_versions = "allow" # can be triggered by lib
124expect_used = "allow"
125missing_docs_in_private_items = "allow"
126# # Temporary Allows - Restriction
127min_ident_chars = "allow"
128missing_errors_doc = "allow"
129missing_panics_doc = "allow"
130# Restriction group allows - Overly strict for systems code
131arbitrary_source_item_ordering = "allow" # Don't enforce alphabetical ordering
132pub_use = "allow" # pub use is idiomatic
133let_underscore_untyped = "allow" # let _ = is idiomatic for dropping
134pattern_type_mismatch = "allow" # Pattern ergonomics work fine
135unwrap_used = "allow" # Used with validated data
136indexing_slicing = "allow" # Used with validated indices
137as_conversions = "allow" # Explicit casts are fine in systems code
138modulo_arithmetic = "allow" # Common in systems code
139integer_division = "allow" # Common in systems code
140integer_division_remainder_used = "allow" # Modulo and division are common
141arithmetic_side_effects = "allow" # Normal arithmetic is fine
142allow_attributes = "allow" # We use strategic allows
143impl_trait_in_params = "allow" # Ergonomic and idiomatic
144semicolon_outside_block = "allow" # Style preference
145unreachable = "warn" # impossible states
146cognitive_complexity = "allow" # Complex logic is sometimes necessary
147default_numeric_fallback = "allow" # Inference works fine
148string_slice = "allow" # Used with validated strings
149little_endian_bytes = "allow" # Intentional for wire format
150wildcard_enum_match_arm = "allow" # Future-proof matches are intentional
151let_underscore_must_use = "allow" # Explicit ignoring of must_use is fine
152clone_on_ref_ptr = "allow" # Cloning Arc/Rc is sometimes necessary
153single_char_lifetime_names = "allow" # Short lifetimes like 'a are fine
154shadow_unrelated = "allow" # Shadowing is idiomatic
155iter_over_hash_type = "allow" # Hash iteration is deterministic enough
156unwrap_in_result = "allow" # Used carefully with validated data
157unneeded_field_pattern = "warn" # Explicit _ for unused fields
158# Style Allows
159implicit_return = "allow"
160self_named_module_files = "allow" # Choose one of self_named_module_files or mod_module_files
161mod_module_files = "allow"
162else_if_without_else = "allow"
163std_instead_of_alloc = "allow"
164std_instead_of_core = "allow"
165blanket_clippy_restriction_lints = "allow"
166float_arithmetic = "allow"
167redundant_pub_crate = "allow"
168pub_with_shorthand = "allow"
169absolute_paths = "allow"
170module_name_repetitions = "allow"
171missing_trait_methods = "allow"
172separated_literal_suffix = "allow"
173exhaustive_structs = "allow"
174field_scoped_visibility_modifiers = "allow"
175allow_attributes_without_reason = "allow"
176tests_outside_test_module = "allow"
177ref_patterns = "allow"
178question_mark_used = "allow"
179shadow_reuse = "allow"
180single_call_fn = "allow"
181# Pedantic cast allows - intentional numeric conversions in systems code
182cast_possible_truncation = "allow"
183cast_possible_wrap = "allow"
184cast_sign_loss = "allow"
185cast_precision_loss = "allow"
186# Warns
187# use_self = "warn"
188# str_to_string = "warn"
189print_stdout = "warn"
190unseparated_literal_suffix = "warn"
191# unwrap_used = "warn"
192
193# Pedantic lints
194# unnested_or_patterns = "warn"
195# map_unwrap_or = "warn"
196# manual_let_else = "warn"
197# ignored_unit_patterns = "warn"
198# cast_lossless = "warn"
199# redundant_closure_for_method_calls = "warn"
200# cloned_instead_of_copied = "warn"
201# wildcard_imports = "warn"
202# ref_option_ref = "warn"
203# match_bool = "warn"
204# single_match_else = "warn"
205# match_same_arms = "warn"
206
207# Denys
208enum_glob_use = "deny"
209# expect_used = "deny"