chore(types): unbloat and clean up dependencies

This commit is contained in:
oxalica 2024-10-18 10:15:15 -04:00
parent ccd5401411
commit d7ac77a1d9
5 changed files with 59 additions and 237 deletions

219
Cargo.lock generated
View file

@ -38,21 +38,6 @@ dependencies = [
"memchr",
]
[[package]]
name = "android-tzdata"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
[[package]]
name = "android_system_properties"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
dependencies = [
"libc",
]
[[package]]
name = "anes"
version = "0.1.6"
@ -250,21 +235,11 @@ version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
[[package]]
name = "bitflags_serde_shim"
version = "0.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df031780c32b0f93cecaf883fa9e351e74679e24380c534aeef94556cfd80ac9"
dependencies = [
"serde",
]
[[package]]
name = "blah-types"
version = "0.0.0"
dependencies = [
"bitflags",
"bitflags_serde_shim",
"criterion",
"ed25519-dalek",
"expect-test",
@ -277,7 +252,6 @@ dependencies = [
"serde",
"serde_jcs",
"serde_json",
"serde_with",
"sha2",
"thiserror",
"url",
@ -399,19 +373,6 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]]
name = "chrono"
version = "0.4.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401"
dependencies = [
"android-tzdata",
"iana-time-zone",
"num-traits",
"serde",
"windows-targets",
]
[[package]]
name = "ciborium"
version = "0.2.2"
@ -620,41 +581,6 @@ dependencies = [
"syn",
]
[[package]]
name = "darling"
version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989"
dependencies = [
"darling_core",
"darling_macro",
]
[[package]]
name = "darling_core"
version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5"
dependencies = [
"fnv",
"ident_case",
"proc-macro2",
"quote",
"strsim",
"syn",
]
[[package]]
name = "darling_macro"
version = "0.20.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [
"darling_core",
"quote",
"syn",
]
[[package]]
name = "data-encoding"
version = "2.6.0"
@ -672,16 +598,6 @@ dependencies = [
"zeroize",
]
[[package]]
name = "deranged"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4"
dependencies = [
"powerfmt",
"serde",
]
[[package]]
name = "digest"
version = "0.10.7"
@ -922,7 +838,7 @@ dependencies = [
"futures-core",
"futures-sink",
"http",
"indexmap 2.6.0",
"indexmap",
"slab",
"tokio",
"tokio-util",
@ -939,12 +855,6 @@ dependencies = [
"crunchy",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
version = "0.14.5"
@ -1130,35 +1040,6 @@ dependencies = [
"tracing",
]
[[package]]
name = "iana-time-zone"
version = "0.1.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"wasm-bindgen",
"windows-core",
]
[[package]]
name = "iana-time-zone-haiku"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
dependencies = [
"cc",
]
[[package]]
name = "ident_case"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "idna"
version = "0.5.0"
@ -1169,17 +1050,6 @@ dependencies = [
"unicode-normalization",
]
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown 0.12.3",
"serde",
]
[[package]]
name = "indexmap"
version = "2.6.0"
@ -1188,7 +1058,6 @@ checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
dependencies = [
"equivalent",
"hashbrown 0.15.0",
"serde",
]
[[package]]
@ -1372,12 +1241,6 @@ dependencies = [
"winapi",
]
[[package]]
name = "num-conv"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9"
[[package]]
name = "num-traits"
version = "0.2.19"
@ -1597,12 +1460,6 @@ dependencies = [
"plotters-backend",
]
[[package]]
name = "powerfmt"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
[[package]]
name = "ppv-lite86"
version = "0.2.20"
@ -2109,36 +1966,6 @@ dependencies = [
"serde",
]
[[package]]
name = "serde_with"
version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e28bdad6db2b8340e449f7108f020b3b092e8583a9e3fb82713e1d4e71fe817"
dependencies = [
"base64",
"chrono",
"hex",
"indexmap 1.9.3",
"indexmap 2.6.0",
"serde",
"serde_derive",
"serde_json",
"serde_with_macros",
"time",
]
[[package]]
name = "serde_with_macros"
version = "3.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d846214a9854ef724f3da161b426242d8de7c1fc7de2f89bb1efcb154dca79d"
dependencies = [
"darling",
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "sha1"
version = "0.10.6"
@ -2250,7 +2077,7 @@ dependencies = [
"bitflags",
"cc",
"fallible-iterator",
"indexmap 2.6.0",
"indexmap",
"log",
"memchr",
"phf",
@ -2361,37 +2188,6 @@ dependencies = [
"once_cell",
]
[[package]]
name = "time"
version = "0.3.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885"
dependencies = [
"deranged",
"itoa",
"num-conv",
"powerfmt",
"serde",
"time-core",
"time-macros",
]
[[package]]
name = "time-core"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
[[package]]
name = "time-macros"
version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf"
dependencies = [
"num-conv",
"time-core",
]
[[package]]
name = "tinytemplate"
version = "1.2.1"
@ -2530,7 +2326,7 @@ version = "0.22.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5"
dependencies = [
"indexmap 2.6.0",
"indexmap",
"serde",
"serde_spanned",
"toml_datetime",
@ -2886,15 +2682,6 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows-core"
version = "0.52.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
dependencies = [
"windows-targets",
]
[[package]]
name = "windows-registry"
version = "0.2.0"

View file

@ -4,9 +4,11 @@ version = "0.0.0"
edition = "2021"
[features]
default = []
unsafe_use_mock_instant_for_testing = ["dep:mock_instant"]
default = ["ed25519-dalek/default"]
schemars = ["dep:schemars"]
rusqlite = ["dep:rusqlite"]
unsafe_use_mock_instant_for_testing = ["dep:mock_instant"]
[[bench]]
name = "crypto_ops"
@ -14,25 +16,29 @@ harness = false
[dependencies]
bitflags = "2"
bitflags_serde_shim = "0.2"
ed25519-dalek = "2"
ed25519-dalek = { version = "2", default-features = false }
hex = { version = "0.4", features = ["serde"] }
html-escape = "0.2"
mock_instant = { version = "0.5", optional = true }
rand = "0.8"
rusqlite = { version = "0.32", optional = true }
serde = { version = "1", features = ["derive"] }
serde_jcs = "0.1"
serde_json = "1"
serde_with = "3"
thiserror = "1"
url = { version = "2", features = ["serde"] }
[dependencies.rusqlite]
version = "0.32"
optional = true
[dependencies.schemars]
version = "0.8"
optional = true
features = ["url"]
[dependencies.mock_instant]
version = "0.5"
optional = true
[dev-dependencies]
criterion = "0.5"
ed25519-dalek = { version = "2", features = ["rand_core"] }

View file

@ -14,7 +14,7 @@ macro_rules! impl_json_schema_as {
// Workaround: https://github.com/GREsau/schemars/issues/267
#[cfg(feature = "schemars")]
macro_rules! impl_json_schema_as {
($ty:ident => $as_ty:ty) => {
($ty:ty => $as_ty:ty) => {
impl schemars::JsonSchema for $ty {
fn schema_name() -> String {
stringify!($ty).into()

View file

@ -3,9 +3,7 @@ use std::fmt;
use std::num::ParseIntError;
use std::str::FromStr;
use bitflags_serde_shim::impl_serde_for_bitflags;
use serde::{de, ser, Deserialize, Serialize};
use serde_with::{serde_as, DisplayFromStr};
use url::Url;
use crate::identity::IdUrl;
@ -13,13 +11,26 @@ use crate::{PubKey, Signed};
/// An opaque server-specific ID for rooms, messages, and etc.
/// It's currently serialized as a string for JavaScript's convenience.
#[serde_as]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
#[serde(transparent)]
pub struct Id(#[serde_as(as = "DisplayFromStr")] pub i64);
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct Id(pub i64);
impl_json_schema_as!(Id => String);
impl Serialize for Id {
fn serialize<S: ser::Serializer>(&self, ser: S) -> Result<S::Ok, S::Error> {
// TODO: No alloc?
self.0.to_string().serialize(ser)
}
}
impl<'de> Deserialize<'de> for Id {
fn deserialize<D: de::Deserializer<'de>>(de: D) -> Result<Self, D::Error> {
let s = <&str>::deserialize(de)?;
s.parse()
.map_err(|_| de::Error::invalid_value(de::Unexpected::Str(s), &"a stringified integer"))
}
}
impl fmt::Display for Id {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
self.0.fmt(f)
@ -455,13 +466,27 @@ bitflags::bitflags! {
}
}
impl_serde_for_bitflags!(ServerPermission);
impl_serde_for_bitflags!(MemberPermission);
impl_serde_for_bitflags!(RoomAttrs);
macro_rules! impl_for_bitflags {
($($ty:ty),* $(,)?) => {
$(
impl Serialize for $ty {
fn serialize<S: ser::Serializer>(&self, ser: S) -> Result<S::Ok, S::Error> {
self.bits().serialize(ser)
}
}
impl_json_schema_as!(ServerPermission => i32);
impl_json_schema_as!(MemberPermission => i32);
impl_json_schema_as!(RoomAttrs => i32);
impl<'de> Deserialize<'de> for $ty {
fn deserialize<D: de::Deserializer<'de>>(de: D) -> Result<Self, D::Error> {
<_>::deserialize(de).map(Self::from_bits_retain)
}
}
impl_json_schema_as!($ty => <$ty as bitflags::Flags>::Bits);
)*
};
}
impl_for_bitflags!(ServerPermission, MemberPermission, RoomAttrs);
#[cfg(test)]
mod tests {

View file

@ -5,6 +5,7 @@ edition = "2021"
[features]
default = []
unsafe_use_mock_instant_for_testing = ["dep:mock_instant", "blah-types/unsafe_use_mock_instant_for_testing"]
[dependencies]
@ -18,7 +19,6 @@ futures-util = "0.3"
html-escape = "0.2"
http-body-util = "0.1"
humantime = "2"
mock_instant = { version = "0.5", optional = true }
parking_lot = "0.12" # Maybe no better performance, just that we hate poisoning. ¯\_(ツ)_/¯
paste = "1.0.15"
rand = "0.8"
@ -43,6 +43,10 @@ url = { version = "2", features = ["serde"] }
blah-types = { path = "../blah-types", features = ["rusqlite"] }
[dependencies.mock_instant]
version = "0.5"
optional = true
[build-dependencies]
url = "2"