├── .gitignore ├── README.md ├── Cargo.toml ├── src ├── state.rs └── main.rs └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Chatly 2 | 3 | This project is used to showcase Rust with Socketioxide on the 4 | [Dreams of Code](https://youtube.com/@dreamsofcode) YouTube channel. 5 | 6 | ## Requirements 7 | 8 | This project requires Rust to be installed 9 | 10 | ## Usage 11 | 12 | To run this code, clone it down and call the `cargo run` command to start up 13 | the server. 14 | 15 | Additionally, this server provides a companion frontend to develop with. 16 | 17 | https://github.com/dreamsofcode-io/chatly-web 18 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "chatly" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | socketioxide = { version = "0.8", features = ["state"] } 10 | tokio = { version = "1", features = ["full"] } 11 | tracing = "0.1" 12 | tracing-subscriber = "0.3" 13 | axum = "0.6" 14 | serde = { version = "1.0", features = ["derive"] } 15 | serde_json = "1.0" 16 | tower-http = {version = "0.4", features = ["cors"]} 17 | tower = "0.4" 18 | chrono = { version = "0.4", features = ["serde"] } 19 | -------------------------------------------------------------------------------- /src/state.rs: -------------------------------------------------------------------------------- 1 | use std::collections::{HashMap, VecDeque}; 2 | use tokio::sync::RwLock; 3 | 4 | #[derive(serde::Serialize, Clone, Debug)] 5 | pub struct Message { 6 | pub text: String, 7 | pub user: String, 8 | pub date: chrono::DateTime, 9 | } 10 | 11 | pub type RoomStore = HashMap>; 12 | 13 | #[derive(Default)] 14 | pub struct MessageStore { 15 | pub messages: RwLock, 16 | } 17 | 18 | impl MessageStore { 19 | pub async fn insert(&self, room: &String, message: Message) { 20 | let mut binding = self.messages.write().await; 21 | let messages = binding.entry(room.clone()).or_default(); 22 | messages.push_front(message); 23 | messages.truncate(20); 24 | } 25 | 26 | pub async fn get(&self, room: &String) -> Vec { 27 | let messages = self.messages.read().await.get(room).cloned(); 28 | messages.unwrap_or_default().into_iter().rev().collect() 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | mod state; 2 | 3 | use axum::routing::get; 4 | use socketioxide::{ 5 | extract::{Data, SocketRef, State}, 6 | SocketIo, 7 | }; 8 | use tower::ServiceBuilder; 9 | use tower_http::cors::CorsLayer; 10 | use tracing::info; 11 | use tracing_subscriber::FmtSubscriber; 12 | 13 | #[derive(Debug, serde::Deserialize)] 14 | struct MessageIn { 15 | room: String, 16 | text: String, 17 | } 18 | 19 | #[derive(serde::Serialize)] 20 | struct Messages { 21 | messages: Vec, 22 | } 23 | 24 | async fn on_connect(socket: SocketRef) { 25 | info!("socket connected: {}", socket.id); 26 | 27 | socket.on( 28 | "join", 29 | |socket: SocketRef, Data::(room), store: State| async move { 30 | info!("Received join: {:?}", room); 31 | let _ = socket.leave_all(); 32 | let _ = socket.join(room.clone()); 33 | let messages = store.get(&room).await; 34 | let _ = socket.emit("messages", Messages { messages }); 35 | }, 36 | ); 37 | 38 | socket.on( 39 | "message", 40 | |socket: SocketRef, Data::(data), store: State| async move { 41 | info!("Received message: {:?}", data); 42 | 43 | let response = state::Message { 44 | text: data.text, 45 | user: format!("anon-{}", socket.id), 46 | date: chrono::Utc::now(), 47 | }; 48 | 49 | store.insert(&data.room, response.clone()).await; 50 | 51 | let _ = socket.within(data.room).emit("message", response); 52 | }, 53 | ) 54 | } 55 | 56 | async fn handler(axum::extract::State(io): axum::extract::State) { 57 | info!("handler called"); 58 | let _ = io.emit("hello", "world"); 59 | } 60 | 61 | #[tokio::main] 62 | async fn main() -> Result<(), Box> { 63 | tracing::subscriber::set_global_default(FmtSubscriber::default())?; 64 | 65 | let messages = state::MessageStore::default(); 66 | 67 | let (layer, io) = SocketIo::builder().with_state(messages).build_layer(); 68 | 69 | io.ns("/", on_connect); 70 | 71 | let app = axum::Router::new() 72 | .route("/", get(|| async { "Hello, World!" })) 73 | .route("/hello", get(handler)) 74 | .with_state(io) 75 | .layer( 76 | ServiceBuilder::new() 77 | .layer(CorsLayer::permissive()) 78 | .layer(layer), 79 | ); 80 | 81 | info!("Starting server"); 82 | 83 | axum::Server::bind(&"127.0.0.1:3000".parse().unwrap()) 84 | .serve(app.into_make_service()) 85 | .await?; 86 | 87 | Ok(()) 88 | } 89 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.21.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "aho-corasick" 22 | version = "1.1.2" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" 25 | dependencies = [ 26 | "memchr", 27 | ] 28 | 29 | [[package]] 30 | name = "android-tzdata" 31 | version = "0.1.1" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 34 | 35 | [[package]] 36 | name = "android_system_properties" 37 | version = "0.1.5" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 40 | dependencies = [ 41 | "libc", 42 | ] 43 | 44 | [[package]] 45 | name = "async-trait" 46 | version = "0.1.74" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" 49 | dependencies = [ 50 | "proc-macro2", 51 | "quote", 52 | "syn", 53 | ] 54 | 55 | [[package]] 56 | name = "autocfg" 57 | version = "1.1.0" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 60 | 61 | [[package]] 62 | name = "axum" 63 | version = "0.6.20" 64 | source = "registry+https://github.com/rust-lang/crates.io-index" 65 | checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" 66 | dependencies = [ 67 | "async-trait", 68 | "axum-core", 69 | "bitflags 1.3.2", 70 | "bytes", 71 | "futures-util", 72 | "http", 73 | "http-body", 74 | "hyper", 75 | "itoa", 76 | "matchit", 77 | "memchr", 78 | "mime", 79 | "percent-encoding", 80 | "pin-project-lite", 81 | "rustversion", 82 | "serde", 83 | "serde_json", 84 | "serde_path_to_error", 85 | "serde_urlencoded", 86 | "sync_wrapper", 87 | "tokio", 88 | "tower", 89 | "tower-layer", 90 | "tower-service", 91 | ] 92 | 93 | [[package]] 94 | name = "axum-core" 95 | version = "0.3.4" 96 | source = "registry+https://github.com/rust-lang/crates.io-index" 97 | checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" 98 | dependencies = [ 99 | "async-trait", 100 | "bytes", 101 | "futures-util", 102 | "http", 103 | "http-body", 104 | "mime", 105 | "rustversion", 106 | "tower-layer", 107 | "tower-service", 108 | ] 109 | 110 | [[package]] 111 | name = "backtrace" 112 | version = "0.3.69" 113 | source = "registry+https://github.com/rust-lang/crates.io-index" 114 | checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" 115 | dependencies = [ 116 | "addr2line", 117 | "cc", 118 | "cfg-if", 119 | "libc", 120 | "miniz_oxide", 121 | "object", 122 | "rustc-demangle", 123 | ] 124 | 125 | [[package]] 126 | name = "base64" 127 | version = "0.21.5" 128 | source = "registry+https://github.com/rust-lang/crates.io-index" 129 | checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" 130 | 131 | [[package]] 132 | name = "bitflags" 133 | version = "1.3.2" 134 | source = "registry+https://github.com/rust-lang/crates.io-index" 135 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 136 | 137 | [[package]] 138 | name = "bitflags" 139 | version = "2.4.1" 140 | source = "registry+https://github.com/rust-lang/crates.io-index" 141 | checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" 142 | 143 | [[package]] 144 | name = "block-buffer" 145 | version = "0.10.4" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 148 | dependencies = [ 149 | "generic-array", 150 | ] 151 | 152 | [[package]] 153 | name = "bumpalo" 154 | version = "3.14.0" 155 | source = "registry+https://github.com/rust-lang/crates.io-index" 156 | checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" 157 | 158 | [[package]] 159 | name = "byteorder" 160 | version = "1.5.0" 161 | source = "registry+https://github.com/rust-lang/crates.io-index" 162 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 163 | 164 | [[package]] 165 | name = "bytes" 166 | version = "1.5.0" 167 | source = "registry+https://github.com/rust-lang/crates.io-index" 168 | checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" 169 | 170 | [[package]] 171 | name = "cc" 172 | version = "1.0.83" 173 | source = "registry+https://github.com/rust-lang/crates.io-index" 174 | checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 175 | dependencies = [ 176 | "libc", 177 | ] 178 | 179 | [[package]] 180 | name = "cfg-if" 181 | version = "1.0.0" 182 | source = "registry+https://github.com/rust-lang/crates.io-index" 183 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 184 | 185 | [[package]] 186 | name = "chatly" 187 | version = "0.1.0" 188 | dependencies = [ 189 | "axum", 190 | "chrono", 191 | "serde", 192 | "serde_json", 193 | "socketioxide", 194 | "tokio", 195 | "tower", 196 | "tower-http", 197 | "tracing", 198 | "tracing-subscriber", 199 | ] 200 | 201 | [[package]] 202 | name = "chrono" 203 | version = "0.4.31" 204 | source = "registry+https://github.com/rust-lang/crates.io-index" 205 | checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" 206 | dependencies = [ 207 | "android-tzdata", 208 | "iana-time-zone", 209 | "js-sys", 210 | "num-traits", 211 | "serde", 212 | "wasm-bindgen", 213 | "windows-targets", 214 | ] 215 | 216 | [[package]] 217 | name = "core-foundation-sys" 218 | version = "0.8.6" 219 | source = "registry+https://github.com/rust-lang/crates.io-index" 220 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 221 | 222 | [[package]] 223 | name = "cpufeatures" 224 | version = "0.2.11" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" 227 | dependencies = [ 228 | "libc", 229 | ] 230 | 231 | [[package]] 232 | name = "crypto-common" 233 | version = "0.1.6" 234 | source = "registry+https://github.com/rust-lang/crates.io-index" 235 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 236 | dependencies = [ 237 | "generic-array", 238 | "typenum", 239 | ] 240 | 241 | [[package]] 242 | name = "data-encoding" 243 | version = "2.5.0" 244 | source = "registry+https://github.com/rust-lang/crates.io-index" 245 | checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" 246 | 247 | [[package]] 248 | name = "digest" 249 | version = "0.10.7" 250 | source = "registry+https://github.com/rust-lang/crates.io-index" 251 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 252 | dependencies = [ 253 | "block-buffer", 254 | "crypto-common", 255 | ] 256 | 257 | [[package]] 258 | name = "engineioxide" 259 | version = "0.8.0" 260 | source = "registry+https://github.com/rust-lang/crates.io-index" 261 | checksum = "ea9865b6f1effee0afb2649b25413db4d62679c793c4525a9a4e6604e0a3d793" 262 | dependencies = [ 263 | "base64", 264 | "bytes", 265 | "futures", 266 | "http", 267 | "http-body", 268 | "hyper", 269 | "pin-project", 270 | "rand", 271 | "serde", 272 | "serde_json", 273 | "thiserror", 274 | "tokio", 275 | "tokio-tungstenite", 276 | "tower", 277 | ] 278 | 279 | [[package]] 280 | name = "equivalent" 281 | version = "1.0.1" 282 | source = "registry+https://github.com/rust-lang/crates.io-index" 283 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 284 | 285 | [[package]] 286 | name = "fnv" 287 | version = "1.0.7" 288 | source = "registry+https://github.com/rust-lang/crates.io-index" 289 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 290 | 291 | [[package]] 292 | name = "form_urlencoded" 293 | version = "1.2.1" 294 | source = "registry+https://github.com/rust-lang/crates.io-index" 295 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 296 | dependencies = [ 297 | "percent-encoding", 298 | ] 299 | 300 | [[package]] 301 | name = "futures" 302 | version = "0.3.29" 303 | source = "registry+https://github.com/rust-lang/crates.io-index" 304 | checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" 305 | dependencies = [ 306 | "futures-channel", 307 | "futures-core", 308 | "futures-executor", 309 | "futures-io", 310 | "futures-sink", 311 | "futures-task", 312 | "futures-util", 313 | ] 314 | 315 | [[package]] 316 | name = "futures-channel" 317 | version = "0.3.29" 318 | source = "registry+https://github.com/rust-lang/crates.io-index" 319 | checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" 320 | dependencies = [ 321 | "futures-core", 322 | "futures-sink", 323 | ] 324 | 325 | [[package]] 326 | name = "futures-core" 327 | version = "0.3.29" 328 | source = "registry+https://github.com/rust-lang/crates.io-index" 329 | checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" 330 | 331 | [[package]] 332 | name = "futures-executor" 333 | version = "0.3.29" 334 | source = "registry+https://github.com/rust-lang/crates.io-index" 335 | checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" 336 | dependencies = [ 337 | "futures-core", 338 | "futures-task", 339 | "futures-util", 340 | ] 341 | 342 | [[package]] 343 | name = "futures-io" 344 | version = "0.3.29" 345 | source = "registry+https://github.com/rust-lang/crates.io-index" 346 | checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" 347 | 348 | [[package]] 349 | name = "futures-macro" 350 | version = "0.3.29" 351 | source = "registry+https://github.com/rust-lang/crates.io-index" 352 | checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" 353 | dependencies = [ 354 | "proc-macro2", 355 | "quote", 356 | "syn", 357 | ] 358 | 359 | [[package]] 360 | name = "futures-sink" 361 | version = "0.3.29" 362 | source = "registry+https://github.com/rust-lang/crates.io-index" 363 | checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" 364 | 365 | [[package]] 366 | name = "futures-task" 367 | version = "0.3.29" 368 | source = "registry+https://github.com/rust-lang/crates.io-index" 369 | checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" 370 | 371 | [[package]] 372 | name = "futures-util" 373 | version = "0.3.29" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" 376 | dependencies = [ 377 | "futures-channel", 378 | "futures-core", 379 | "futures-io", 380 | "futures-macro", 381 | "futures-sink", 382 | "futures-task", 383 | "memchr", 384 | "pin-project-lite", 385 | "pin-utils", 386 | "slab", 387 | ] 388 | 389 | [[package]] 390 | name = "generator" 391 | version = "0.7.5" 392 | source = "registry+https://github.com/rust-lang/crates.io-index" 393 | checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" 394 | dependencies = [ 395 | "cc", 396 | "libc", 397 | "log", 398 | "rustversion", 399 | "windows", 400 | ] 401 | 402 | [[package]] 403 | name = "generic-array" 404 | version = "0.14.7" 405 | source = "registry+https://github.com/rust-lang/crates.io-index" 406 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 407 | dependencies = [ 408 | "typenum", 409 | "version_check", 410 | ] 411 | 412 | [[package]] 413 | name = "getrandom" 414 | version = "0.2.11" 415 | source = "registry+https://github.com/rust-lang/crates.io-index" 416 | checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" 417 | dependencies = [ 418 | "cfg-if", 419 | "libc", 420 | "wasi", 421 | ] 422 | 423 | [[package]] 424 | name = "gimli" 425 | version = "0.28.1" 426 | source = "registry+https://github.com/rust-lang/crates.io-index" 427 | checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" 428 | 429 | [[package]] 430 | name = "h2" 431 | version = "0.3.22" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" 434 | dependencies = [ 435 | "bytes", 436 | "fnv", 437 | "futures-core", 438 | "futures-sink", 439 | "futures-util", 440 | "http", 441 | "indexmap", 442 | "slab", 443 | "tokio", 444 | "tokio-util", 445 | "tracing", 446 | ] 447 | 448 | [[package]] 449 | name = "hashbrown" 450 | version = "0.14.3" 451 | source = "registry+https://github.com/rust-lang/crates.io-index" 452 | checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" 453 | 454 | [[package]] 455 | name = "hermit-abi" 456 | version = "0.3.3" 457 | source = "registry+https://github.com/rust-lang/crates.io-index" 458 | checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" 459 | 460 | [[package]] 461 | name = "http" 462 | version = "0.2.11" 463 | source = "registry+https://github.com/rust-lang/crates.io-index" 464 | checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" 465 | dependencies = [ 466 | "bytes", 467 | "fnv", 468 | "itoa", 469 | ] 470 | 471 | [[package]] 472 | name = "http-body" 473 | version = "0.4.6" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 476 | dependencies = [ 477 | "bytes", 478 | "http", 479 | "pin-project-lite", 480 | ] 481 | 482 | [[package]] 483 | name = "http-range-header" 484 | version = "0.3.1" 485 | source = "registry+https://github.com/rust-lang/crates.io-index" 486 | checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" 487 | 488 | [[package]] 489 | name = "httparse" 490 | version = "1.8.0" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 493 | 494 | [[package]] 495 | name = "httpdate" 496 | version = "1.0.3" 497 | source = "registry+https://github.com/rust-lang/crates.io-index" 498 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 499 | 500 | [[package]] 501 | name = "hyper" 502 | version = "0.14.27" 503 | source = "registry+https://github.com/rust-lang/crates.io-index" 504 | checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" 505 | dependencies = [ 506 | "bytes", 507 | "futures-channel", 508 | "futures-core", 509 | "futures-util", 510 | "h2", 511 | "http", 512 | "http-body", 513 | "httparse", 514 | "httpdate", 515 | "itoa", 516 | "pin-project-lite", 517 | "socket2 0.4.10", 518 | "tokio", 519 | "tower-service", 520 | "tracing", 521 | "want", 522 | ] 523 | 524 | [[package]] 525 | name = "iana-time-zone" 526 | version = "0.1.58" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" 529 | dependencies = [ 530 | "android_system_properties", 531 | "core-foundation-sys", 532 | "iana-time-zone-haiku", 533 | "js-sys", 534 | "wasm-bindgen", 535 | "windows-core", 536 | ] 537 | 538 | [[package]] 539 | name = "iana-time-zone-haiku" 540 | version = "0.1.2" 541 | source = "registry+https://github.com/rust-lang/crates.io-index" 542 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 543 | dependencies = [ 544 | "cc", 545 | ] 546 | 547 | [[package]] 548 | name = "idna" 549 | version = "0.5.0" 550 | source = "registry+https://github.com/rust-lang/crates.io-index" 551 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 552 | dependencies = [ 553 | "unicode-bidi", 554 | "unicode-normalization", 555 | ] 556 | 557 | [[package]] 558 | name = "indexmap" 559 | version = "2.1.0" 560 | source = "registry+https://github.com/rust-lang/crates.io-index" 561 | checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" 562 | dependencies = [ 563 | "equivalent", 564 | "hashbrown", 565 | ] 566 | 567 | [[package]] 568 | name = "itoa" 569 | version = "1.0.10" 570 | source = "registry+https://github.com/rust-lang/crates.io-index" 571 | checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" 572 | 573 | [[package]] 574 | name = "js-sys" 575 | version = "0.3.66" 576 | source = "registry+https://github.com/rust-lang/crates.io-index" 577 | checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" 578 | dependencies = [ 579 | "wasm-bindgen", 580 | ] 581 | 582 | [[package]] 583 | name = "lazy_static" 584 | version = "1.4.0" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 587 | 588 | [[package]] 589 | name = "libc" 590 | version = "0.2.150" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" 593 | 594 | [[package]] 595 | name = "lock_api" 596 | version = "0.4.11" 597 | source = "registry+https://github.com/rust-lang/crates.io-index" 598 | checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" 599 | dependencies = [ 600 | "autocfg", 601 | "scopeguard", 602 | ] 603 | 604 | [[package]] 605 | name = "log" 606 | version = "0.4.20" 607 | source = "registry+https://github.com/rust-lang/crates.io-index" 608 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 609 | 610 | [[package]] 611 | name = "loom" 612 | version = "0.5.6" 613 | source = "registry+https://github.com/rust-lang/crates.io-index" 614 | checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" 615 | dependencies = [ 616 | "cfg-if", 617 | "generator", 618 | "scoped-tls", 619 | "serde", 620 | "serde_json", 621 | "tracing", 622 | "tracing-subscriber", 623 | ] 624 | 625 | [[package]] 626 | name = "matchers" 627 | version = "0.1.0" 628 | source = "registry+https://github.com/rust-lang/crates.io-index" 629 | checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" 630 | dependencies = [ 631 | "regex-automata 0.1.10", 632 | ] 633 | 634 | [[package]] 635 | name = "matchit" 636 | version = "0.7.3" 637 | source = "registry+https://github.com/rust-lang/crates.io-index" 638 | checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" 639 | 640 | [[package]] 641 | name = "memchr" 642 | version = "2.6.4" 643 | source = "registry+https://github.com/rust-lang/crates.io-index" 644 | checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" 645 | 646 | [[package]] 647 | name = "mime" 648 | version = "0.3.17" 649 | source = "registry+https://github.com/rust-lang/crates.io-index" 650 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 651 | 652 | [[package]] 653 | name = "miniz_oxide" 654 | version = "0.7.1" 655 | source = "registry+https://github.com/rust-lang/crates.io-index" 656 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 657 | dependencies = [ 658 | "adler", 659 | ] 660 | 661 | [[package]] 662 | name = "mio" 663 | version = "0.8.10" 664 | source = "registry+https://github.com/rust-lang/crates.io-index" 665 | checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" 666 | dependencies = [ 667 | "libc", 668 | "wasi", 669 | "windows-sys", 670 | ] 671 | 672 | [[package]] 673 | name = "nu-ansi-term" 674 | version = "0.46.0" 675 | source = "registry+https://github.com/rust-lang/crates.io-index" 676 | checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" 677 | dependencies = [ 678 | "overload", 679 | "winapi", 680 | ] 681 | 682 | [[package]] 683 | name = "num-traits" 684 | version = "0.2.17" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" 687 | dependencies = [ 688 | "autocfg", 689 | ] 690 | 691 | [[package]] 692 | name = "num_cpus" 693 | version = "1.16.0" 694 | source = "registry+https://github.com/rust-lang/crates.io-index" 695 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 696 | dependencies = [ 697 | "hermit-abi", 698 | "libc", 699 | ] 700 | 701 | [[package]] 702 | name = "object" 703 | version = "0.32.1" 704 | source = "registry+https://github.com/rust-lang/crates.io-index" 705 | checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" 706 | dependencies = [ 707 | "memchr", 708 | ] 709 | 710 | [[package]] 711 | name = "once_cell" 712 | version = "1.19.0" 713 | source = "registry+https://github.com/rust-lang/crates.io-index" 714 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 715 | 716 | [[package]] 717 | name = "overload" 718 | version = "0.1.1" 719 | source = "registry+https://github.com/rust-lang/crates.io-index" 720 | checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" 721 | 722 | [[package]] 723 | name = "parking_lot" 724 | version = "0.12.1" 725 | source = "registry+https://github.com/rust-lang/crates.io-index" 726 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 727 | dependencies = [ 728 | "lock_api", 729 | "parking_lot_core", 730 | ] 731 | 732 | [[package]] 733 | name = "parking_lot_core" 734 | version = "0.9.9" 735 | source = "registry+https://github.com/rust-lang/crates.io-index" 736 | checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" 737 | dependencies = [ 738 | "cfg-if", 739 | "libc", 740 | "redox_syscall", 741 | "smallvec", 742 | "windows-targets", 743 | ] 744 | 745 | [[package]] 746 | name = "percent-encoding" 747 | version = "2.3.1" 748 | source = "registry+https://github.com/rust-lang/crates.io-index" 749 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 750 | 751 | [[package]] 752 | name = "pin-project" 753 | version = "1.1.3" 754 | source = "registry+https://github.com/rust-lang/crates.io-index" 755 | checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" 756 | dependencies = [ 757 | "pin-project-internal", 758 | ] 759 | 760 | [[package]] 761 | name = "pin-project-internal" 762 | version = "1.1.3" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" 765 | dependencies = [ 766 | "proc-macro2", 767 | "quote", 768 | "syn", 769 | ] 770 | 771 | [[package]] 772 | name = "pin-project-lite" 773 | version = "0.2.13" 774 | source = "registry+https://github.com/rust-lang/crates.io-index" 775 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 776 | 777 | [[package]] 778 | name = "pin-utils" 779 | version = "0.1.0" 780 | source = "registry+https://github.com/rust-lang/crates.io-index" 781 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 782 | 783 | [[package]] 784 | name = "ppv-lite86" 785 | version = "0.2.17" 786 | source = "registry+https://github.com/rust-lang/crates.io-index" 787 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 788 | 789 | [[package]] 790 | name = "proc-macro2" 791 | version = "1.0.70" 792 | source = "registry+https://github.com/rust-lang/crates.io-index" 793 | checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" 794 | dependencies = [ 795 | "unicode-ident", 796 | ] 797 | 798 | [[package]] 799 | name = "quote" 800 | version = "1.0.33" 801 | source = "registry+https://github.com/rust-lang/crates.io-index" 802 | checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" 803 | dependencies = [ 804 | "proc-macro2", 805 | ] 806 | 807 | [[package]] 808 | name = "rand" 809 | version = "0.8.5" 810 | source = "registry+https://github.com/rust-lang/crates.io-index" 811 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 812 | dependencies = [ 813 | "libc", 814 | "rand_chacha", 815 | "rand_core", 816 | ] 817 | 818 | [[package]] 819 | name = "rand_chacha" 820 | version = "0.3.1" 821 | source = "registry+https://github.com/rust-lang/crates.io-index" 822 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 823 | dependencies = [ 824 | "ppv-lite86", 825 | "rand_core", 826 | ] 827 | 828 | [[package]] 829 | name = "rand_core" 830 | version = "0.6.4" 831 | source = "registry+https://github.com/rust-lang/crates.io-index" 832 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 833 | dependencies = [ 834 | "getrandom", 835 | ] 836 | 837 | [[package]] 838 | name = "redox_syscall" 839 | version = "0.4.1" 840 | source = "registry+https://github.com/rust-lang/crates.io-index" 841 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 842 | dependencies = [ 843 | "bitflags 1.3.2", 844 | ] 845 | 846 | [[package]] 847 | name = "regex" 848 | version = "1.10.2" 849 | source = "registry+https://github.com/rust-lang/crates.io-index" 850 | checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" 851 | dependencies = [ 852 | "aho-corasick", 853 | "memchr", 854 | "regex-automata 0.4.3", 855 | "regex-syntax 0.8.2", 856 | ] 857 | 858 | [[package]] 859 | name = "regex-automata" 860 | version = "0.1.10" 861 | source = "registry+https://github.com/rust-lang/crates.io-index" 862 | checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" 863 | dependencies = [ 864 | "regex-syntax 0.6.29", 865 | ] 866 | 867 | [[package]] 868 | name = "regex-automata" 869 | version = "0.4.3" 870 | source = "registry+https://github.com/rust-lang/crates.io-index" 871 | checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" 872 | dependencies = [ 873 | "aho-corasick", 874 | "memchr", 875 | "regex-syntax 0.8.2", 876 | ] 877 | 878 | [[package]] 879 | name = "regex-syntax" 880 | version = "0.6.29" 881 | source = "registry+https://github.com/rust-lang/crates.io-index" 882 | checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" 883 | 884 | [[package]] 885 | name = "regex-syntax" 886 | version = "0.8.2" 887 | source = "registry+https://github.com/rust-lang/crates.io-index" 888 | checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" 889 | 890 | [[package]] 891 | name = "rustc-demangle" 892 | version = "0.1.23" 893 | source = "registry+https://github.com/rust-lang/crates.io-index" 894 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 895 | 896 | [[package]] 897 | name = "rustversion" 898 | version = "1.0.14" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" 901 | 902 | [[package]] 903 | name = "ryu" 904 | version = "1.0.15" 905 | source = "registry+https://github.com/rust-lang/crates.io-index" 906 | checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" 907 | 908 | [[package]] 909 | name = "scoped-tls" 910 | version = "1.0.1" 911 | source = "registry+https://github.com/rust-lang/crates.io-index" 912 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 913 | 914 | [[package]] 915 | name = "scopeguard" 916 | version = "1.2.0" 917 | source = "registry+https://github.com/rust-lang/crates.io-index" 918 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 919 | 920 | [[package]] 921 | name = "serde" 922 | version = "1.0.193" 923 | source = "registry+https://github.com/rust-lang/crates.io-index" 924 | checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" 925 | dependencies = [ 926 | "serde_derive", 927 | ] 928 | 929 | [[package]] 930 | name = "serde_derive" 931 | version = "1.0.193" 932 | source = "registry+https://github.com/rust-lang/crates.io-index" 933 | checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" 934 | dependencies = [ 935 | "proc-macro2", 936 | "quote", 937 | "syn", 938 | ] 939 | 940 | [[package]] 941 | name = "serde_json" 942 | version = "1.0.108" 943 | source = "registry+https://github.com/rust-lang/crates.io-index" 944 | checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" 945 | dependencies = [ 946 | "itoa", 947 | "ryu", 948 | "serde", 949 | ] 950 | 951 | [[package]] 952 | name = "serde_path_to_error" 953 | version = "0.1.14" 954 | source = "registry+https://github.com/rust-lang/crates.io-index" 955 | checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" 956 | dependencies = [ 957 | "itoa", 958 | "serde", 959 | ] 960 | 961 | [[package]] 962 | name = "serde_urlencoded" 963 | version = "0.7.1" 964 | source = "registry+https://github.com/rust-lang/crates.io-index" 965 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 966 | dependencies = [ 967 | "form_urlencoded", 968 | "itoa", 969 | "ryu", 970 | "serde", 971 | ] 972 | 973 | [[package]] 974 | name = "sha1" 975 | version = "0.10.6" 976 | source = "registry+https://github.com/rust-lang/crates.io-index" 977 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 978 | dependencies = [ 979 | "cfg-if", 980 | "cpufeatures", 981 | "digest", 982 | ] 983 | 984 | [[package]] 985 | name = "sharded-slab" 986 | version = "0.1.7" 987 | source = "registry+https://github.com/rust-lang/crates.io-index" 988 | checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 989 | dependencies = [ 990 | "lazy_static", 991 | ] 992 | 993 | [[package]] 994 | name = "signal-hook-registry" 995 | version = "1.4.1" 996 | source = "registry+https://github.com/rust-lang/crates.io-index" 997 | checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" 998 | dependencies = [ 999 | "libc", 1000 | ] 1001 | 1002 | [[package]] 1003 | name = "slab" 1004 | version = "0.4.9" 1005 | source = "registry+https://github.com/rust-lang/crates.io-index" 1006 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 1007 | dependencies = [ 1008 | "autocfg", 1009 | ] 1010 | 1011 | [[package]] 1012 | name = "smallvec" 1013 | version = "1.11.2" 1014 | source = "registry+https://github.com/rust-lang/crates.io-index" 1015 | checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" 1016 | 1017 | [[package]] 1018 | name = "socket2" 1019 | version = "0.4.10" 1020 | source = "registry+https://github.com/rust-lang/crates.io-index" 1021 | checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" 1022 | dependencies = [ 1023 | "libc", 1024 | "winapi", 1025 | ] 1026 | 1027 | [[package]] 1028 | name = "socket2" 1029 | version = "0.5.5" 1030 | source = "registry+https://github.com/rust-lang/crates.io-index" 1031 | checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" 1032 | dependencies = [ 1033 | "libc", 1034 | "windows-sys", 1035 | ] 1036 | 1037 | [[package]] 1038 | name = "socketioxide" 1039 | version = "0.8.0" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "195c8ef7f374384cfed9cf5d70e5c005994101fc2e1cc8c6d1b951573e5fbeec" 1042 | dependencies = [ 1043 | "engineioxide", 1044 | "futures", 1045 | "http", 1046 | "http-body", 1047 | "itoa", 1048 | "serde", 1049 | "serde_json", 1050 | "state", 1051 | "thiserror", 1052 | "tokio", 1053 | "tower", 1054 | ] 1055 | 1056 | [[package]] 1057 | name = "state" 1058 | version = "0.6.0" 1059 | source = "registry+https://github.com/rust-lang/crates.io-index" 1060 | checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" 1061 | dependencies = [ 1062 | "loom", 1063 | ] 1064 | 1065 | [[package]] 1066 | name = "syn" 1067 | version = "2.0.39" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" 1070 | dependencies = [ 1071 | "proc-macro2", 1072 | "quote", 1073 | "unicode-ident", 1074 | ] 1075 | 1076 | [[package]] 1077 | name = "sync_wrapper" 1078 | version = "0.1.2" 1079 | source = "registry+https://github.com/rust-lang/crates.io-index" 1080 | checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" 1081 | 1082 | [[package]] 1083 | name = "thiserror" 1084 | version = "1.0.50" 1085 | source = "registry+https://github.com/rust-lang/crates.io-index" 1086 | checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" 1087 | dependencies = [ 1088 | "thiserror-impl", 1089 | ] 1090 | 1091 | [[package]] 1092 | name = "thiserror-impl" 1093 | version = "1.0.50" 1094 | source = "registry+https://github.com/rust-lang/crates.io-index" 1095 | checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" 1096 | dependencies = [ 1097 | "proc-macro2", 1098 | "quote", 1099 | "syn", 1100 | ] 1101 | 1102 | [[package]] 1103 | name = "thread_local" 1104 | version = "1.1.7" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" 1107 | dependencies = [ 1108 | "cfg-if", 1109 | "once_cell", 1110 | ] 1111 | 1112 | [[package]] 1113 | name = "tinyvec" 1114 | version = "1.6.0" 1115 | source = "registry+https://github.com/rust-lang/crates.io-index" 1116 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 1117 | dependencies = [ 1118 | "tinyvec_macros", 1119 | ] 1120 | 1121 | [[package]] 1122 | name = "tinyvec_macros" 1123 | version = "0.1.1" 1124 | source = "registry+https://github.com/rust-lang/crates.io-index" 1125 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 1126 | 1127 | [[package]] 1128 | name = "tokio" 1129 | version = "1.35.0" 1130 | source = "registry+https://github.com/rust-lang/crates.io-index" 1131 | checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" 1132 | dependencies = [ 1133 | "backtrace", 1134 | "bytes", 1135 | "libc", 1136 | "mio", 1137 | "num_cpus", 1138 | "parking_lot", 1139 | "pin-project-lite", 1140 | "signal-hook-registry", 1141 | "socket2 0.5.5", 1142 | "tokio-macros", 1143 | "windows-sys", 1144 | ] 1145 | 1146 | [[package]] 1147 | name = "tokio-macros" 1148 | version = "2.2.0" 1149 | source = "registry+https://github.com/rust-lang/crates.io-index" 1150 | checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" 1151 | dependencies = [ 1152 | "proc-macro2", 1153 | "quote", 1154 | "syn", 1155 | ] 1156 | 1157 | [[package]] 1158 | name = "tokio-tungstenite" 1159 | version = "0.20.1" 1160 | source = "registry+https://github.com/rust-lang/crates.io-index" 1161 | checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" 1162 | dependencies = [ 1163 | "futures-util", 1164 | "log", 1165 | "tokio", 1166 | "tungstenite", 1167 | ] 1168 | 1169 | [[package]] 1170 | name = "tokio-util" 1171 | version = "0.7.10" 1172 | source = "registry+https://github.com/rust-lang/crates.io-index" 1173 | checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" 1174 | dependencies = [ 1175 | "bytes", 1176 | "futures-core", 1177 | "futures-sink", 1178 | "pin-project-lite", 1179 | "tokio", 1180 | "tracing", 1181 | ] 1182 | 1183 | [[package]] 1184 | name = "tower" 1185 | version = "0.4.13" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" 1188 | dependencies = [ 1189 | "futures-core", 1190 | "futures-util", 1191 | "pin-project", 1192 | "pin-project-lite", 1193 | "tokio", 1194 | "tower-layer", 1195 | "tower-service", 1196 | "tracing", 1197 | ] 1198 | 1199 | [[package]] 1200 | name = "tower-http" 1201 | version = "0.4.4" 1202 | source = "registry+https://github.com/rust-lang/crates.io-index" 1203 | checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" 1204 | dependencies = [ 1205 | "bitflags 2.4.1", 1206 | "bytes", 1207 | "futures-core", 1208 | "futures-util", 1209 | "http", 1210 | "http-body", 1211 | "http-range-header", 1212 | "pin-project-lite", 1213 | "tower-layer", 1214 | "tower-service", 1215 | ] 1216 | 1217 | [[package]] 1218 | name = "tower-layer" 1219 | version = "0.3.2" 1220 | source = "registry+https://github.com/rust-lang/crates.io-index" 1221 | checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" 1222 | 1223 | [[package]] 1224 | name = "tower-service" 1225 | version = "0.3.2" 1226 | source = "registry+https://github.com/rust-lang/crates.io-index" 1227 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 1228 | 1229 | [[package]] 1230 | name = "tracing" 1231 | version = "0.1.40" 1232 | source = "registry+https://github.com/rust-lang/crates.io-index" 1233 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 1234 | dependencies = [ 1235 | "log", 1236 | "pin-project-lite", 1237 | "tracing-attributes", 1238 | "tracing-core", 1239 | ] 1240 | 1241 | [[package]] 1242 | name = "tracing-attributes" 1243 | version = "0.1.27" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 1246 | dependencies = [ 1247 | "proc-macro2", 1248 | "quote", 1249 | "syn", 1250 | ] 1251 | 1252 | [[package]] 1253 | name = "tracing-core" 1254 | version = "0.1.32" 1255 | source = "registry+https://github.com/rust-lang/crates.io-index" 1256 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 1257 | dependencies = [ 1258 | "once_cell", 1259 | "valuable", 1260 | ] 1261 | 1262 | [[package]] 1263 | name = "tracing-log" 1264 | version = "0.2.0" 1265 | source = "registry+https://github.com/rust-lang/crates.io-index" 1266 | checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 1267 | dependencies = [ 1268 | "log", 1269 | "once_cell", 1270 | "tracing-core", 1271 | ] 1272 | 1273 | [[package]] 1274 | name = "tracing-subscriber" 1275 | version = "0.3.18" 1276 | source = "registry+https://github.com/rust-lang/crates.io-index" 1277 | checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" 1278 | dependencies = [ 1279 | "matchers", 1280 | "nu-ansi-term", 1281 | "once_cell", 1282 | "regex", 1283 | "sharded-slab", 1284 | "smallvec", 1285 | "thread_local", 1286 | "tracing", 1287 | "tracing-core", 1288 | "tracing-log", 1289 | ] 1290 | 1291 | [[package]] 1292 | name = "try-lock" 1293 | version = "0.2.5" 1294 | source = "registry+https://github.com/rust-lang/crates.io-index" 1295 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 1296 | 1297 | [[package]] 1298 | name = "tungstenite" 1299 | version = "0.20.1" 1300 | source = "registry+https://github.com/rust-lang/crates.io-index" 1301 | checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" 1302 | dependencies = [ 1303 | "byteorder", 1304 | "bytes", 1305 | "data-encoding", 1306 | "http", 1307 | "httparse", 1308 | "log", 1309 | "rand", 1310 | "sha1", 1311 | "thiserror", 1312 | "url", 1313 | "utf-8", 1314 | ] 1315 | 1316 | [[package]] 1317 | name = "typenum" 1318 | version = "1.17.0" 1319 | source = "registry+https://github.com/rust-lang/crates.io-index" 1320 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 1321 | 1322 | [[package]] 1323 | name = "unicode-bidi" 1324 | version = "0.3.14" 1325 | source = "registry+https://github.com/rust-lang/crates.io-index" 1326 | checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" 1327 | 1328 | [[package]] 1329 | name = "unicode-ident" 1330 | version = "1.0.12" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 1333 | 1334 | [[package]] 1335 | name = "unicode-normalization" 1336 | version = "0.1.22" 1337 | source = "registry+https://github.com/rust-lang/crates.io-index" 1338 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 1339 | dependencies = [ 1340 | "tinyvec", 1341 | ] 1342 | 1343 | [[package]] 1344 | name = "url" 1345 | version = "2.5.0" 1346 | source = "registry+https://github.com/rust-lang/crates.io-index" 1347 | checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" 1348 | dependencies = [ 1349 | "form_urlencoded", 1350 | "idna", 1351 | "percent-encoding", 1352 | ] 1353 | 1354 | [[package]] 1355 | name = "utf-8" 1356 | version = "0.7.6" 1357 | source = "registry+https://github.com/rust-lang/crates.io-index" 1358 | checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 1359 | 1360 | [[package]] 1361 | name = "valuable" 1362 | version = "0.1.0" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" 1365 | 1366 | [[package]] 1367 | name = "version_check" 1368 | version = "0.9.4" 1369 | source = "registry+https://github.com/rust-lang/crates.io-index" 1370 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1371 | 1372 | [[package]] 1373 | name = "want" 1374 | version = "0.3.1" 1375 | source = "registry+https://github.com/rust-lang/crates.io-index" 1376 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 1377 | dependencies = [ 1378 | "try-lock", 1379 | ] 1380 | 1381 | [[package]] 1382 | name = "wasi" 1383 | version = "0.11.0+wasi-snapshot-preview1" 1384 | source = "registry+https://github.com/rust-lang/crates.io-index" 1385 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1386 | 1387 | [[package]] 1388 | name = "wasm-bindgen" 1389 | version = "0.2.89" 1390 | source = "registry+https://github.com/rust-lang/crates.io-index" 1391 | checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" 1392 | dependencies = [ 1393 | "cfg-if", 1394 | "wasm-bindgen-macro", 1395 | ] 1396 | 1397 | [[package]] 1398 | name = "wasm-bindgen-backend" 1399 | version = "0.2.89" 1400 | source = "registry+https://github.com/rust-lang/crates.io-index" 1401 | checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" 1402 | dependencies = [ 1403 | "bumpalo", 1404 | "log", 1405 | "once_cell", 1406 | "proc-macro2", 1407 | "quote", 1408 | "syn", 1409 | "wasm-bindgen-shared", 1410 | ] 1411 | 1412 | [[package]] 1413 | name = "wasm-bindgen-macro" 1414 | version = "0.2.89" 1415 | source = "registry+https://github.com/rust-lang/crates.io-index" 1416 | checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" 1417 | dependencies = [ 1418 | "quote", 1419 | "wasm-bindgen-macro-support", 1420 | ] 1421 | 1422 | [[package]] 1423 | name = "wasm-bindgen-macro-support" 1424 | version = "0.2.89" 1425 | source = "registry+https://github.com/rust-lang/crates.io-index" 1426 | checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" 1427 | dependencies = [ 1428 | "proc-macro2", 1429 | "quote", 1430 | "syn", 1431 | "wasm-bindgen-backend", 1432 | "wasm-bindgen-shared", 1433 | ] 1434 | 1435 | [[package]] 1436 | name = "wasm-bindgen-shared" 1437 | version = "0.2.89" 1438 | source = "registry+https://github.com/rust-lang/crates.io-index" 1439 | checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" 1440 | 1441 | [[package]] 1442 | name = "winapi" 1443 | version = "0.3.9" 1444 | source = "registry+https://github.com/rust-lang/crates.io-index" 1445 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1446 | dependencies = [ 1447 | "winapi-i686-pc-windows-gnu", 1448 | "winapi-x86_64-pc-windows-gnu", 1449 | ] 1450 | 1451 | [[package]] 1452 | name = "winapi-i686-pc-windows-gnu" 1453 | version = "0.4.0" 1454 | source = "registry+https://github.com/rust-lang/crates.io-index" 1455 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1456 | 1457 | [[package]] 1458 | name = "winapi-x86_64-pc-windows-gnu" 1459 | version = "0.4.0" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1462 | 1463 | [[package]] 1464 | name = "windows" 1465 | version = "0.48.0" 1466 | source = "registry+https://github.com/rust-lang/crates.io-index" 1467 | checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" 1468 | dependencies = [ 1469 | "windows-targets", 1470 | ] 1471 | 1472 | [[package]] 1473 | name = "windows-core" 1474 | version = "0.51.1" 1475 | source = "registry+https://github.com/rust-lang/crates.io-index" 1476 | checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" 1477 | dependencies = [ 1478 | "windows-targets", 1479 | ] 1480 | 1481 | [[package]] 1482 | name = "windows-sys" 1483 | version = "0.48.0" 1484 | source = "registry+https://github.com/rust-lang/crates.io-index" 1485 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 1486 | dependencies = [ 1487 | "windows-targets", 1488 | ] 1489 | 1490 | [[package]] 1491 | name = "windows-targets" 1492 | version = "0.48.5" 1493 | source = "registry+https://github.com/rust-lang/crates.io-index" 1494 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 1495 | dependencies = [ 1496 | "windows_aarch64_gnullvm", 1497 | "windows_aarch64_msvc", 1498 | "windows_i686_gnu", 1499 | "windows_i686_msvc", 1500 | "windows_x86_64_gnu", 1501 | "windows_x86_64_gnullvm", 1502 | "windows_x86_64_msvc", 1503 | ] 1504 | 1505 | [[package]] 1506 | name = "windows_aarch64_gnullvm" 1507 | version = "0.48.5" 1508 | source = "registry+https://github.com/rust-lang/crates.io-index" 1509 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 1510 | 1511 | [[package]] 1512 | name = "windows_aarch64_msvc" 1513 | version = "0.48.5" 1514 | source = "registry+https://github.com/rust-lang/crates.io-index" 1515 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 1516 | 1517 | [[package]] 1518 | name = "windows_i686_gnu" 1519 | version = "0.48.5" 1520 | source = "registry+https://github.com/rust-lang/crates.io-index" 1521 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 1522 | 1523 | [[package]] 1524 | name = "windows_i686_msvc" 1525 | version = "0.48.5" 1526 | source = "registry+https://github.com/rust-lang/crates.io-index" 1527 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 1528 | 1529 | [[package]] 1530 | name = "windows_x86_64_gnu" 1531 | version = "0.48.5" 1532 | source = "registry+https://github.com/rust-lang/crates.io-index" 1533 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 1534 | 1535 | [[package]] 1536 | name = "windows_x86_64_gnullvm" 1537 | version = "0.48.5" 1538 | source = "registry+https://github.com/rust-lang/crates.io-index" 1539 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 1540 | 1541 | [[package]] 1542 | name = "windows_x86_64_msvc" 1543 | version = "0.48.5" 1544 | source = "registry+https://github.com/rust-lang/crates.io-index" 1545 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 1546 | --------------------------------------------------------------------------------