Repository navigation
Expand file tree
/
Copy pathCargo.toml
More file actions
159 lines (146 loc) · 6.54 KB
/
Copy pathCargo.toml
File metadata and controls
159 lines (146 loc) · 6.54 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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
[workspace]
resolver = "3"
members = [
"hyperdb-api-core",
"hyperdb-api",
"hyperdb-api-derive",
"hyperdb-api-node",
"hyperdb-api-salesforce",
"hyperdb-mcp",
"hyperdb-bootstrap",
"sea-query-hyperdb",
]
# Exclude hyperdb-compile-check from the workspace resolver: it has its own
# [workspace] declaration to avoid the Cargo cycle that would arise from
# hyperdb-api → hyperdb-api-derive → hyperdb-compile-check → hyperdb-api.
# See the comment block below for full rationale.
exclude = ["hyperdb-compile-check"]
# hyperdb-compile-check is intentionally NOT a workspace member.
# It depends on hyperdb-api, which depends on hyperdb-api-derive, which
# optionally depends on hyperdb-compile-check. Adding it to the workspace
# would create a cycle that Cargo rejects even for optional deps.
# It lives in the repository as a standalone crate with its own Cargo.toml
# and is referenced as a path dep by hyperdb-api-derive when the
# compile-time feature is enabled. CI builds it explicitly via
# `cargo build --manifest-path hyperdb-compile-check/Cargo.toml`.
[workspace.package]
version = "1.0.0-rc.5"
edition = "2024"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
repository = "https://github.com/tableau/hyper-api-rust"
homepage = "https://github.com/tableau/hyper-api-rust"
[workspace.dependencies]
base64 = "0.23"
byteorder = "1.5"
bytes = "1.11"
geo-types = "0.7"
hmac = "0.13"
memchr = "2.8"
pbkdf2 = "0.13"
prost = "0.14"
prost-types = "0.14"
rand = "0.10"
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"] }
sha2 = "0.11"
socket2 = "0.6"
sysinfo = "0.38"
tempfile = "3.20"
thiserror = "2.0"
tokio = { version = "1", features = ["rt-multi-thread", "sync", "macros"] }
tonic = { version = "0.14", features = ["tls-ring", "tls-webpki-roots"] }
tonic-build = "0.14"
tonic-prost = "0.14"
tonic-prost-build = "0.14"
tracing = "0.1"
webpki-roots = "1.0"
zeroize = "1.8"
# Salesforce OAuth dependencies
reqwest = { version = "0.13", default-features = false, features = ["json", "rustls-no-provider", "form"] }
jsonwebtoken = { version = "11", default-features = false, features = ["use_pem", "rust_crypto"] }
rsa = { version = "0.9", features = ["pem"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
url = "2.5"
chrono = { version = "0.4", default-features = false, features = ["std", "clock"] }
# hyperdb-bootstrap dependencies
zip = { version = "9", default-features = false, features = ["deflate"] }
toml = "1.1"
clap = { version = "4", features = ["derive"] }
anyhow = "1"
# Lint configuration, applied to every workspace crate via `[lints] workspace = true`.
# Aligned with the Microsoft Pragmatic Rust Guidelines
# (https://microsoft.github.io/rust-guidelines). See docs/RUST_GUIDELINES.md for the
# full mapping between individual lints and upstream guideline IDs.
[workspace.lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(kani)'] }
unsafe_op_in_unsafe_fn = "deny"
missing_docs = "warn"
missing_debug_implementations = "warn"
ambiguous_negative_literals = "warn"
redundant_imports = "warn"
redundant_lifetimes = "warn"
trivial_numeric_casts = "warn"
unused_lifetimes = "warn"
unreachable_pub = "warn"
[workspace.lints.clippy]
correctness = { level = "deny", priority = -1 }
suspicious = { level = "deny", priority = -1 }
perf = { level = "warn", priority = -1 }
style = { level = "warn", priority = -1 }
complexity = { level = "warn", priority = -1 }
pedantic = { level = "warn", priority = -1 }
cargo = { level = "warn", priority = -1 }
# Integer-cast discipline — matches the AGENTS.md rule.
cast_possible_truncation = "deny"
cast_sign_loss = "deny"
cast_possible_wrap = "deny"
cast_lossless = "warn"
cast_precision_loss = "warn"
as_underscore = "warn"
# Safety discipline.
undocumented_unsafe_blocks = "deny"
unnecessary_safety_comment = "warn"
unnecessary_safety_doc = "warn"
# Lint-suppression discipline.
allow_attributes_without_reason = "warn"
# Shared-ownership idioms.
clone_on_ref_ptr = "warn"
# Known-noisy pedantic lints we intentionally relax.
#
# Microsoft's Pragmatic Rust Guidelines explicitly permit per-lint opt-outs
# when a pedantic lint proves noisy in practice: "Undesired lints (e.g.,
# numeric casts) can be opted back out of on a case-by-case basis."
module_name_repetitions = "allow"
too_many_lines = "allow"
doc_markdown = "allow" # cosmetic: backticking every type name in rustdoc is churn
unreadable_literal = "allow" # cosmetic: digit separators on wire-format constants
items_after_statements = "allow" # stylistic: benchmarks and tests use local helpers
match_same_arms = "allow" # match readability; consolidating can hide semantic grouping
match_wildcard_for_single_variants = "allow" # cfg-conditional enum variants make wildcards cross-platform correct
# `must_use_candidate` measures *public API* ergonomics. Measured 2026-09-05:
# 141 sites workspace-wide, of which 122 are in `hyperdb-api-core` (whose
# lib.rs states it is not a public API), 10 are internal daemon helpers in the
# `hyperdb-mcp` binary, and 8 are in prost-generated protobuf. Exactly one was
# in the flagship public API, and it is now `#[must_use]`. So this stays
# `allow` here and `hyperdb-api/src/lib.rs` opts back in with a crate-level
# `#![warn]`, which is where the lint actually carries meaning.
must_use_candidate = "allow"
# Promoted from `warn` to `deny` on 2026-09-05. The previous comment claimed a
# large backlog pending a post-1.0 docs pass; a real measurement found **zero**
# sites for either lint, so the backlog had already been closed and the note
# was stale. Denying them keeps it that way (M-CANONICAL-DOCS).
missing_errors_doc = "deny"
missing_panics_doc = "deny"
# Transitive dependency version splits, surfaced per-crate by `clippy::cargo`.
# Not code-fixable: they are version-line splits inside our dependencies, not
# choices this workspace makes.
#
# Measured 2026-09-05, 17 remaining: base64, hashbrown, syn, getrandom, rand,
# rand_core, thiserror, thiserror-impl, r-efi, wit-bindgen, and the RustCrypto
# 0.10/0.11 cluster (digest, sha2, hmac, block-buffer, crypto-common,
# const-oid, cpufeatures). The `windows_*` triplet the previous note listed is
# gone, dropped along with the quinn stack when aws-lc-rs was replaced by ring.
#
# Microsoft guidelines explicitly permit opt-outs on the `cargo` group.
multiple_crate_versions = { level = "allow", priority = 1 }