diff --git a/Cargo.lock b/Cargo.lock index fec48e3..b8ab707 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -260,7 +260,7 @@ dependencies = [ ] [[package]] -name = "blah" +name = "blah-types" version = "0.0.0" dependencies = [ "bitflags", @@ -283,7 +283,7 @@ name = "blahctl" version = "0.1.0" dependencies = [ "anyhow", - "blah", + "blah-types", "clap", "ed25519-dalek", "hex", @@ -300,7 +300,7 @@ dependencies = [ "anyhow", "axum", "axum-extra", - "blah", + "blah-types", "clap", "ed25519-dalek", "futures-util", diff --git a/Cargo.toml b/Cargo.toml index 4a8cf36..aea0622 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [workspace] resolver = "2" members = [ - ".", + "blah-types", "blahctl", "blahd", ] @@ -14,28 +14,3 @@ print_stderr = "warn" print_stdout = "warn" todo = "warn" unwrap_used = "warn" - -[package] -name = "blah" -version = "0.0.0" -edition = "2021" - -[dependencies] -bitflags = "2" -bitflags_serde_shim = "0.2" -ed25519-dalek = "2.1" -hex = { version = "0.4", features = ["serde"] } -html-escape = "0.2" -rand = "0.8.5" -rand_core = "0.6" -rusqlite = { version = "0.32", optional = true } -serde = { version = "1", features = ["derive"] } -serde_jcs = "0.1" -serde_json = "1" -serde_with = "3.9.0" - -[dev-dependencies] -expect-test = "1.5.0" - -[lints] -workspace = true diff --git a/blah-types/Cargo.toml b/blah-types/Cargo.toml new file mode 100644 index 0000000..8cdcdd4 --- /dev/null +++ b/blah-types/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "blah-types" +version = "0.0.0" +edition = "2021" + +[dependencies] +bitflags = "2" +bitflags_serde_shim = "0.2" +ed25519-dalek = "2.1" +hex = { version = "0.4", features = ["serde"] } +html-escape = "0.2" +rand = "0.8.5" +rand_core = "0.6" +rusqlite = { version = "0.32", optional = true } +serde = { version = "1", features = ["derive"] } +serde_jcs = "0.1" +serde_json = "1" +serde_with = "3.9.0" + +[dev-dependencies] +expect-test = "1.5.0" + +[lints] +workspace = true diff --git a/src/types.rs b/blah-types/src/lib.rs similarity index 99% rename from src/types.rs rename to blah-types/src/lib.rs index ffc2168..d24e4ee 100644 --- a/src/types.rs +++ b/blah-types/src/lib.rs @@ -1,7 +1,6 @@ use std::fmt; use std::time::SystemTime; -use bitflags::bitflags; use bitflags_serde_shim::impl_serde_for_bitflags; use ed25519_dalek::{ Signature, SignatureError, Signer, SigningKey, VerifyingKey, PUBLIC_KEY_LENGTH, @@ -11,6 +10,10 @@ use rand_core::RngCore; use serde::{de, Deserialize, Deserializer, Serialize, Serializer}; use serde_with::{serde_as, DisplayFromStr}; +// Re-export of public dependencies. +pub use bitflags; +pub use ed25519_dalek; + /// An opaque server-specific ID for room, chat item, and etc. /// It's currently serialized as a string for JavaScript's convenience. #[serde_as] @@ -371,7 +374,7 @@ pub enum RoomAdminOp { // TODO: RU } -bitflags! { +bitflags::bitflags! { #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct ServerPermission: u64 { const CREATE_ROOM = 1 << 0; diff --git a/blahctl/Cargo.toml b/blahctl/Cargo.toml index dada5e3..89e08a6 100644 --- a/blahctl/Cargo.toml +++ b/blahctl/Cargo.toml @@ -13,7 +13,7 @@ reqwest = { version = "0.12", features = ["json"] } rusqlite = "0.32" tokio = { version = "1", features = ["rt", "macros"] } -blah = { path = "..", features = ["rusqlite"] } +blah-types = { path = "../blah-types", features = ["rusqlite"] } [lints.clippy] dbg_macro = "warn" diff --git a/blahctl/src/main.rs b/blahctl/src/main.rs index 78330c4..912ad5a 100644 --- a/blahctl/src/main.rs +++ b/blahctl/src/main.rs @@ -3,10 +3,9 @@ use std::path::{Path, PathBuf}; use std::{fs, io}; use anyhow::{Context, Result}; -use blah::bitflags; -use blah::types::{ - get_timestamp, ChatPayload, CreateRoomPayload, Id, MemberPermission, RichText, RoomAttrs, - RoomMember, RoomMemberList, ServerPermission, UserKey, WithSig, +use blah_types::{ + bitflags, get_timestamp, ChatPayload, CreateRoomPayload, Id, MemberPermission, RichText, + RoomAttrs, RoomMember, RoomMemberList, ServerPermission, UserKey, WithSig, }; use ed25519_dalek::pkcs8::spki::der::pem::LineEnding; use ed25519_dalek::pkcs8::{DecodePrivateKey, DecodePublicKey, EncodePrivateKey, EncodePublicKey}; diff --git a/blahd/Cargo.toml b/blahd/Cargo.toml index 508e5b3..aef1968 100644 --- a/blahd/Cargo.toml +++ b/blahd/Cargo.toml @@ -27,7 +27,7 @@ tracing = "0.1" tracing-subscriber = "0.3" url = { version = "2.5.2", features = ["serde"] } -blah = { path = "..", features = ["rusqlite"] } +blah-types = { path = "../blah-types", features = ["rusqlite"] } [dev-dependencies] rand = "0.8.5" diff --git a/blahd/src/event.rs b/blahd/src/event.rs index b9cb849..17dfe65 100644 --- a/blahd/src/event.rs +++ b/blahd/src/event.rs @@ -8,7 +8,7 @@ use std::task::{Context, Poll}; use anyhow::{bail, Context as _, Result}; use axum::extract::ws::{Message, WebSocket}; -use blah::types::{AuthPayload, ChatItem, WithSig}; +use blah_types::{AuthPayload, ChatItem, WithSig}; use futures_util::future::Either; use futures_util::stream::SplitSink; use futures_util::{stream_select, SinkExt as _, Stream, StreamExt}; diff --git a/blahd/src/id.rs b/blahd/src/id.rs index 8618711..2604c70 100644 --- a/blahd/src/id.rs +++ b/blahd/src/id.rs @@ -3,7 +3,7 @@ /// FIXME: Currently we assume no more than one request in a single millisecond. use std::time::SystemTime; -use blah::types::Id; +use blah_types::Id; pub trait IdExt { fn gen() -> Self; diff --git a/blahd/src/lib.rs b/blahd/src/lib.rs index 26029d6..606823a 100644 --- a/blahd/src/lib.rs +++ b/blahd/src/lib.rs @@ -10,7 +10,7 @@ use axum::response::{IntoResponse, Response}; use axum::routing::{get, post}; use axum::{Json, Router}; use axum_extra::extract::WithRejection as R; -use blah::types::{ +use blah_types::{ ChatItem, ChatPayload, CreateRoomPayload, Id, MemberPermission, RoomAdminOp, RoomAdminPayload, RoomAttrs, ServerPermission, Signee, UserKey, WithItemId, WithSig, }; diff --git a/blahd/src/middleware.rs b/blahd/src/middleware.rs index 0a6cf7b..6286351 100644 --- a/blahd/src/middleware.rs +++ b/blahd/src/middleware.rs @@ -6,7 +6,7 @@ use axum::extract::{FromRef, FromRequest, FromRequestParts, Request}; use axum::http::{header, request, StatusCode}; use axum::response::{IntoResponse, Response}; use axum::{async_trait, Json}; -use blah::types::{AuthPayload, UserKey, WithSig}; +use blah_types::{AuthPayload, UserKey, WithSig}; use serde::de::DeserializeOwned; use serde::{Deserialize, Serialize}; diff --git a/blahd/tests/basic.rs b/blahd/tests/basic.rs index 930cd98..c0aab5c 100644 --- a/blahd/tests/basic.rs +++ b/blahd/tests/basic.rs @@ -5,7 +5,7 @@ use std::future::IntoFuture; use std::sync::{Arc, LazyLock}; use anyhow::Result; -use blah::types::{ +use blah_types::{ get_timestamp, AuthPayload, CreateRoomPayload, Id, MemberPermission, RoomAdminOp, RoomAdminPayload, RoomAttrs, RoomMember, RoomMemberList, ServerPermission, UserKey, WithSig, }; diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index cc9a52c..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,5 +0,0 @@ -// Re-export of public dependencies. -pub use bitflags; -pub use ed25519_dalek; - -pub mod types;