├── .gitignore ├── migrations ├── 20230126163950_init.down.sql └── 20230126163950_init.up.sql ├── .env ├── docker-compose.yml ├── src ├── response.rs ├── config.rs ├── model.rs ├── main.rs ├── jwt_auth.rs └── handler.rs ├── Cargo.toml ├── Makefile ├── README.md ├── Rust HS256 JWT.postman_collection.json └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /migrations/20230126163950_init.down.sql: -------------------------------------------------------------------------------- 1 | -- Add down migration script here 2 | 3 | DROP TABLE IF EXISTS "users"; -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | POSTGRES_HOST=127.0.0.1 2 | POSTGRES_PORT=6500 3 | POSTGRES_USER=admin 4 | POSTGRES_PASSWORD=password123 5 | POSTGRES_DB=rust_hs256 6 | 7 | DATABASE_URL=postgresql://admin:password123@localhost:6500/rust_hs256?schema=public 8 | 9 | PGADMIN_DEFAULT_EMAIL=admin@admin.com 10 | PGADMIN_DEFAULT_PASSWORD=password123 11 | 12 | JWT_SECRET=my_ultra_secure_secret 13 | JWT_EXPIRED_IN=60m 14 | JWT_MAXAGE=60 -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | postgres: 4 | image: postgres:latest 5 | container_name: postgres 6 | ports: 7 | - '6500:5432' 8 | volumes: 9 | - progresDB:/var/lib/postgresql/data 10 | env_file: 11 | - ./.env 12 | pgAdmin: 13 | image: dpage/pgadmin4 14 | container_name: pgAdmin 15 | env_file: 16 | - ./.env 17 | ports: 18 | - "5050:80" 19 | volumes: 20 | progresDB: 21 | -------------------------------------------------------------------------------- /src/response.rs: -------------------------------------------------------------------------------- 1 | use chrono::prelude::*; 2 | use serde::Serialize; 3 | 4 | #[allow(non_snake_case)] 5 | #[derive(Debug, Serialize)] 6 | pub struct FilteredUser { 7 | pub id: String, 8 | pub name: String, 9 | pub email: String, 10 | pub role: String, 11 | pub photo: String, 12 | pub verified: bool, 13 | pub createdAt: DateTime, 14 | pub updatedAt: DateTime, 15 | } 16 | 17 | #[derive(Serialize, Debug)] 18 | pub struct UserData { 19 | pub user: FilteredUser, 20 | } 21 | 22 | #[derive(Serialize, Debug)] 23 | pub struct UserResponse { 24 | pub status: String, 25 | pub data: UserData, 26 | } 27 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rust-jwt-hs256" 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 | actix-cors = "0.6.4" 10 | actix-web = "4.3.0" 11 | argon2 = "0.4.1" 12 | chrono = { version = "0.4.23", features = ["serde"] } 13 | dotenv = "0.15.0" 14 | env_logger = "0.10.0" 15 | jsonwebtoken = "8.2.0" 16 | rand_core = { version = "0.6.4", features = ["std"] } 17 | serde = { version = "1.0.152", features = ["derive"] } 18 | serde_json = "1.0.91" 19 | sqlx = { version = "0.6.2", features = ["runtime-async-std-native-tls", "postgres", "chrono", "uuid"] } 20 | uuid = { version = "1.2.2", features = ["serde", "v4"] } 21 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | dev: 2 | docker-compose up -d 3 | 4 | dev-down: 5 | docker-compose down 6 | 7 | migrate-up: 8 | sqlx migrate run 9 | 10 | migrate-down: 11 | sqlx migrate revert 12 | 13 | start-server: 14 | cargo watch -q -c -w src/ -x run 15 | 16 | install: 17 | cargo add actix-web 18 | cargo add actix-cors 19 | cargo add serde_json 20 | cargo add serde --features derive 21 | cargo add chrono --features serde 22 | cargo add env_logger 23 | cargo add dotenv 24 | cargo add uuid --features "serde v4" 25 | cargo add sqlx --features "runtime-async-std-native-tls postgres chrono uuid" 26 | cargo add jsonwebtoken 27 | cargo add argon2 28 | cargo add rand_core --features "std" 29 | # HotReload 30 | cargo install cargo-watch 31 | # SQLX-CLI 32 | cargo install sqlx-cli -------------------------------------------------------------------------------- /migrations/20230126163950_init.up.sql: -------------------------------------------------------------------------------- 1 | -- Add up migration script here 2 | 3 | CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; 4 | 5 | CREATE TABLE 6 | "users" ( 7 | id UUID NOT NULL PRIMARY KEY DEFAULT (uuid_generate_v4()), 8 | name VARCHAR(100) NOT NULL, 9 | email VARCHAR(255) NOT NULL UNIQUE, 10 | photo VARCHAR NOT NULL DEFAULT 'default.png', 11 | verified BOOLEAN NOT NULL DEFAULT FALSE, 12 | password VARCHAR(100) NOT NULL, 13 | role VARCHAR(50) NOT NULL DEFAULT 'user', 14 | created_at TIMESTAMP 15 | WITH 16 | TIME ZONE DEFAULT NOW(), 17 | updated_at TIMESTAMP 18 | WITH 19 | TIME ZONE DEFAULT NOW() 20 | ); 21 | 22 | CREATE INDEX users_email_idx ON users (email); -------------------------------------------------------------------------------- /src/config.rs: -------------------------------------------------------------------------------- 1 | #[derive(Debug, Clone)] 2 | pub struct Config { 3 | pub database_url: String, 4 | pub jwt_secret: String, 5 | pub jwt_expires_in: String, 6 | pub jwt_maxage: i32, 7 | } 8 | 9 | impl Config { 10 | pub fn init() -> Config { 11 | let database_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set"); 12 | let jwt_secret = std::env::var("JWT_SECRET").expect("JWT_SECRET must be set"); 13 | let jwt_expires_in = std::env::var("JWT_EXPIRED_IN").expect("JWT_EXPIRED_IN must be set"); 14 | let jwt_maxage = std::env::var("JWT_MAXAGE").expect("JWT_MAXAGE must be set"); 15 | Config { 16 | database_url, 17 | jwt_secret, 18 | jwt_expires_in, 19 | jwt_maxage: jwt_maxage.parse::().unwrap(), 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/model.rs: -------------------------------------------------------------------------------- 1 | use chrono::prelude::*; 2 | use serde::{Deserialize, Serialize}; 3 | 4 | #[allow(non_snake_case)] 5 | #[derive(Debug, Deserialize, sqlx::FromRow, Serialize, Clone)] 6 | pub struct User { 7 | pub id: uuid::Uuid, 8 | pub name: String, 9 | pub email: String, 10 | pub password: String, 11 | pub role: String, 12 | pub photo: String, 13 | pub verified: bool, 14 | #[serde(rename = "createdAt")] 15 | pub created_at: Option>, 16 | #[serde(rename = "updatedAt")] 17 | pub updated_at: Option>, 18 | } 19 | 20 | #[derive(Debug, Serialize, Deserialize)] 21 | pub struct TokenClaims { 22 | pub sub: String, 23 | pub iat: usize, 24 | pub exp: usize, 25 | } 26 | 27 | #[derive(Debug, Deserialize)] 28 | pub struct RegisterUserSchema { 29 | pub name: String, 30 | pub email: String, 31 | pub password: String, 32 | } 33 | 34 | #[derive(Debug, Deserialize)] 35 | pub struct LoginUserSchema { 36 | pub email: String, 37 | pub password: String, 38 | } 39 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Rust - JWT Authentication with Actix Web 2 | 3 | In this article, we will delve into the implementation of JWT authentication in Rust, covering all crucial steps from generating and verifying JWT tokens with the HS256 algorithm, to registering users, signing them in, logging them out, and safeguarding private routes. 4 | 5 | ![Rust - JWT Authentication with Actix Web](https://codevoweb.com/wp-content/uploads/2023/02/Rust-JWT-Authentication-with-Actix-Web.webp) 6 | 7 | ## Topics Covered 8 | 9 | - Run the Actix-Web JWT Project Locally 10 | - Setup the Rust Project 11 | - Setup Postgres and pgAdmin with Docker 12 | - Load the Environment Variables 13 | - Create the SQL Queries and Run the Migrations 14 | - Create the Database Model 15 | - Create the Response Structs 16 | - Create the JWT Actix-Web Middleware Guard 17 | - Implement the JWT Authentication Flow 18 | - Register User Route Handler 19 | - Login User Route Handler 20 | - Logout User Route Handler 21 | - Get Authenticated User Route Handler 22 | - Merge the Route Handlers 23 | - Register the Routes Config and Add CORS 24 | - Test the JWT Authentication Flow 25 | - Create a New User 26 | - Sign-in User 27 | - Access Protected Route 28 | - Logout User 29 | 30 | Read the entire article here: [https://codevoweb.com/rust-jwt-authentication-with-actix-web/](https://codevoweb.com/rust-jwt-authentication-with-actix-web/) 31 | 32 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | mod config; 2 | mod handler; 3 | mod jwt_auth; 4 | mod model; 5 | mod response; 6 | 7 | use actix_cors::Cors; 8 | use actix_web::middleware::Logger; 9 | use actix_web::{http::header, web, App, HttpServer}; 10 | use config::Config; 11 | use dotenv::dotenv; 12 | use sqlx::{postgres::PgPoolOptions, Pool, Postgres}; 13 | 14 | pub struct AppState { 15 | db: Pool, 16 | env: Config, 17 | } 18 | 19 | #[actix_web::main] 20 | async fn main() -> std::io::Result<()> { 21 | if std::env::var_os("RUST_LOG").is_none() { 22 | std::env::set_var("RUST_LOG", "actix_web=info"); 23 | } 24 | dotenv().ok(); 25 | env_logger::init(); 26 | 27 | let config = Config::init(); 28 | 29 | let pool = match PgPoolOptions::new() 30 | .max_connections(10) 31 | .connect(&config.database_url) 32 | .await 33 | { 34 | Ok(pool) => { 35 | println!("✅Connection to the database is successful!"); 36 | pool 37 | } 38 | Err(err) => { 39 | println!("🔥 Failed to connect to the database: {:?}", err); 40 | std::process::exit(1); 41 | } 42 | }; 43 | 44 | println!("🚀 Server started successfully"); 45 | 46 | HttpServer::new(move || { 47 | let cors = Cors::default() 48 | .allowed_origin("http://localhost:3000") 49 | .allowed_methods(vec!["GET", "POST"]) 50 | .allowed_headers(vec![ 51 | header::CONTENT_TYPE, 52 | header::AUTHORIZATION, 53 | header::ACCEPT, 54 | ]) 55 | .supports_credentials(); 56 | App::new() 57 | .app_data(web::Data::new(AppState { 58 | db: pool.clone(), 59 | env: config.clone(), 60 | })) 61 | .configure(handler::config) 62 | .wrap(cors) 63 | .wrap(Logger::default()) 64 | }) 65 | .bind(("127.0.0.1", 8000))? 66 | .run() 67 | .await 68 | } 69 | -------------------------------------------------------------------------------- /src/jwt_auth.rs: -------------------------------------------------------------------------------- 1 | use core::fmt; 2 | use std::future::{ready, Ready}; 3 | 4 | use actix_web::error::ErrorUnauthorized; 5 | use actix_web::{dev::Payload, Error as ActixWebError}; 6 | use actix_web::{http, web, FromRequest, HttpMessage, HttpRequest}; 7 | use jsonwebtoken::{decode, DecodingKey, Validation}; 8 | use serde::Serialize; 9 | 10 | use crate::model::TokenClaims; 11 | use crate::AppState; 12 | 13 | #[derive(Debug, Serialize)] 14 | struct ErrorResponse { 15 | status: String, 16 | message: String, 17 | } 18 | 19 | impl fmt::Display for ErrorResponse { 20 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 21 | write!(f, "{}", serde_json::to_string(&self).unwrap()) 22 | } 23 | } 24 | 25 | pub struct JwtMiddleware { 26 | pub user_id: uuid::Uuid, 27 | } 28 | 29 | impl FromRequest for JwtMiddleware { 30 | type Error = ActixWebError; 31 | type Future = Ready>; 32 | fn from_request(req: &HttpRequest, _: &mut Payload) -> Self::Future { 33 | let data = req.app_data::>().unwrap(); 34 | 35 | let token = req 36 | .cookie("token") 37 | .map(|c| c.value().to_string()) 38 | .or_else(|| { 39 | req.headers() 40 | .get(http::header::AUTHORIZATION) 41 | .map(|h| h.to_str().unwrap().split_at(7).1.to_string()) 42 | }); 43 | 44 | if token.is_none() { 45 | let json_error = ErrorResponse { 46 | status: "fail".to_string(), 47 | message: "You are not logged in, please provide token".to_string(), 48 | }; 49 | return ready(Err(ErrorUnauthorized(json_error))); 50 | } 51 | 52 | let claims = match decode::( 53 | &token.unwrap(), 54 | &DecodingKey::from_secret(data.env.jwt_secret.as_ref()), 55 | &Validation::default(), 56 | ) { 57 | Ok(c) => c.claims, 58 | Err(_) => { 59 | let json_error = ErrorResponse { 60 | status: "fail".to_string(), 61 | message: "Invalid token".to_string(), 62 | }; 63 | return ready(Err(ErrorUnauthorized(json_error))); 64 | } 65 | }; 66 | 67 | let user_id = uuid::Uuid::parse_str(claims.sub.as_str()).unwrap(); 68 | req.extensions_mut() 69 | .insert::(user_id.to_owned()); 70 | 71 | ready(Ok(JwtMiddleware { user_id })) 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Rust HS256 JWT.postman_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "info": { 3 | "_postman_id": "cefa74ab-2280-4d3b-8c1a-3e674c4e9f7b", 4 | "name": "Rust HS256 JWT", 5 | "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", 6 | "_exporter_id": "14791724" 7 | }, 8 | "item": [ 9 | { 10 | "name": "Auth", 11 | "item": [ 12 | { 13 | "name": "Register", 14 | "request": { 15 | "method": "POST", 16 | "header": [], 17 | "body": { 18 | "mode": "raw", 19 | "raw": "{\r\n \"email\": \"admin@admin.com\",\r\n \"name\": \"Admin\",\r\n \"password\": \"password123\",\r\n \"passwordConfirm\": \"password123\",\r\n \"photo\": \"default.png\"\r\n}", 20 | "options": { 21 | "raw": { 22 | "language": "json" 23 | } 24 | } 25 | }, 26 | "url": { 27 | "raw": "http://localhost:8000/api/auth/register", 28 | "protocol": "http", 29 | "host": [ 30 | "localhost" 31 | ], 32 | "port": "8000", 33 | "path": [ 34 | "api", 35 | "auth", 36 | "register" 37 | ] 38 | } 39 | }, 40 | "response": [] 41 | }, 42 | { 43 | "name": "Logout", 44 | "request": { 45 | "method": "GET", 46 | "header": [], 47 | "url": { 48 | "raw": "http://localhost:8000/api/auth/logout", 49 | "protocol": "http", 50 | "host": [ 51 | "localhost" 52 | ], 53 | "port": "8000", 54 | "path": [ 55 | "api", 56 | "auth", 57 | "logout" 58 | ] 59 | } 60 | }, 61 | "response": [] 62 | }, 63 | { 64 | "name": "Login", 65 | "request": { 66 | "method": "POST", 67 | "header": [], 68 | "body": { 69 | "mode": "raw", 70 | "raw": "{\r\n \"email\": \"admin@admin.com\",\r\n \"password\": \"password123\"\r\n}", 71 | "options": { 72 | "raw": { 73 | "language": "json" 74 | } 75 | } 76 | }, 77 | "url": { 78 | "raw": "http://localhost:8000/api/auth/login", 79 | "protocol": "http", 80 | "host": [ 81 | "localhost" 82 | ], 83 | "port": "8000", 84 | "path": [ 85 | "api", 86 | "auth", 87 | "login" 88 | ] 89 | } 90 | }, 91 | "response": [] 92 | } 93 | ] 94 | }, 95 | { 96 | "name": "User", 97 | "item": [ 98 | { 99 | "name": "Get Me", 100 | "request": { 101 | "auth": { 102 | "type": "noauth" 103 | }, 104 | "method": "GET", 105 | "header": [], 106 | "url": { 107 | "raw": "http://localhost:8000/api/users/me", 108 | "protocol": "http", 109 | "host": [ 110 | "localhost" 111 | ], 112 | "port": "8000", 113 | "path": [ 114 | "api", 115 | "users", 116 | "me" 117 | ] 118 | } 119 | }, 120 | "response": [] 121 | } 122 | ] 123 | } 124 | ] 125 | } -------------------------------------------------------------------------------- /src/handler.rs: -------------------------------------------------------------------------------- 1 | use crate::{ 2 | jwt_auth, 3 | model::{LoginUserSchema, RegisterUserSchema, TokenClaims, User}, 4 | response::FilteredUser, 5 | AppState, 6 | }; 7 | use actix_web::{ 8 | cookie::{time::Duration as ActixWebDuration, Cookie}, 9 | get, post, web, HttpMessage, HttpRequest, HttpResponse, Responder, 10 | }; 11 | use argon2::{ 12 | password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString}, 13 | Argon2, 14 | }; 15 | use chrono::{prelude::*, Duration}; 16 | use jsonwebtoken::{encode, EncodingKey, Header}; 17 | use serde_json::json; 18 | use sqlx::Row; 19 | 20 | #[get("/healthchecker")] 21 | async fn health_checker_handler() -> impl Responder { 22 | const MESSAGE: &str = "JWT Authentication in Rust using Actix-web, Postgres, and SQLX"; 23 | 24 | HttpResponse::Ok().json(json!({"status": "success", "message": MESSAGE})) 25 | } 26 | 27 | #[post("/auth/register")] 28 | async fn register_user_handler( 29 | body: web::Json, 30 | data: web::Data, 31 | ) -> impl Responder { 32 | let exists: bool = sqlx::query("SELECT EXISTS(SELECT 1 FROM users WHERE email = $1)") 33 | .bind(body.email.to_owned()) 34 | .fetch_one(&data.db) 35 | .await 36 | .unwrap() 37 | .get(0); 38 | 39 | if exists { 40 | return HttpResponse::Conflict().json( 41 | serde_json::json!({"status": "fail","message": "User with that email already exists"}), 42 | ); 43 | } 44 | 45 | let salt = SaltString::generate(&mut OsRng); 46 | let hashed_password = Argon2::default() 47 | .hash_password(body.password.as_bytes(), &salt) 48 | .expect("Error while hashing password") 49 | .to_string(); 50 | let query_result = sqlx::query_as!( 51 | User, 52 | "INSERT INTO users (name,email,password) VALUES ($1, $2, $3) RETURNING *", 53 | body.name.to_string(), 54 | body.email.to_string().to_lowercase(), 55 | hashed_password 56 | ) 57 | .fetch_one(&data.db) 58 | .await; 59 | 60 | match query_result { 61 | Ok(user) => { 62 | let user_response = serde_json::json!({"status": "success","data": serde_json::json!({ 63 | "user": filter_user_record(&user) 64 | })}); 65 | 66 | return HttpResponse::Ok().json(user_response); 67 | } 68 | Err(e) => { 69 | return HttpResponse::InternalServerError() 70 | .json(serde_json::json!({"status": "error","message": format!("{:?}", e)})); 71 | } 72 | } 73 | } 74 | #[post("/auth/login")] 75 | async fn login_user_handler( 76 | body: web::Json, 77 | data: web::Data, 78 | ) -> impl Responder { 79 | let query_result = sqlx::query_as!(User, "SELECT * FROM users WHERE email = $1", body.email) 80 | .fetch_optional(&data.db) 81 | .await 82 | .unwrap(); 83 | 84 | let is_valid = query_result.to_owned().map_or(false, |user| { 85 | let parsed_hash = PasswordHash::new(&user.password).unwrap(); 86 | Argon2::default() 87 | .verify_password(body.password.as_bytes(), &parsed_hash) 88 | .map_or(false, |_| true) 89 | }); 90 | 91 | if !is_valid { 92 | return HttpResponse::BadRequest() 93 | .json(json!({"status": "fail", "message": "Invalid email or password"})); 94 | } 95 | 96 | let user = query_result.unwrap(); 97 | 98 | let now = Utc::now(); 99 | let iat = now.timestamp() as usize; 100 | let exp = (now + Duration::minutes(60)).timestamp() as usize; 101 | let claims: TokenClaims = TokenClaims { 102 | sub: user.id.to_string(), 103 | exp, 104 | iat, 105 | }; 106 | 107 | let token = encode( 108 | &Header::default(), 109 | &claims, 110 | &EncodingKey::from_secret(data.env.jwt_secret.as_ref()), 111 | ) 112 | .unwrap(); 113 | 114 | let cookie = Cookie::build("token", token.to_owned()) 115 | .path("/") 116 | .max_age(ActixWebDuration::new(60 * 60, 0)) 117 | .http_only(true) 118 | .finish(); 119 | 120 | HttpResponse::Ok() 121 | .cookie(cookie) 122 | .json(json!({"status": "success", "token": token})) 123 | } 124 | 125 | #[get("/auth/logout")] 126 | async fn logout_handler(_: jwt_auth::JwtMiddleware) -> impl Responder { 127 | let cookie = Cookie::build("token", "") 128 | .path("/") 129 | .max_age(ActixWebDuration::new(-1, 0)) 130 | .http_only(true) 131 | .finish(); 132 | 133 | HttpResponse::Ok() 134 | .cookie(cookie) 135 | .json(json!({"status": "success"})) 136 | } 137 | 138 | #[get("/users/me")] 139 | async fn get_me_handler( 140 | req: HttpRequest, 141 | data: web::Data, 142 | _: jwt_auth::JwtMiddleware, 143 | ) -> impl Responder { 144 | let ext = req.extensions(); 145 | let user_id = ext.get::().unwrap(); 146 | 147 | let user = sqlx::query_as!(User, "SELECT * FROM users WHERE id = $1", user_id) 148 | .fetch_one(&data.db) 149 | .await 150 | .unwrap(); 151 | 152 | let json_response = serde_json::json!({ 153 | "status": "success", 154 | "data": serde_json::json!({ 155 | "user": filter_user_record(&user) 156 | }) 157 | }); 158 | 159 | HttpResponse::Ok().json(json_response) 160 | } 161 | 162 | fn filter_user_record(user: &User) -> FilteredUser { 163 | FilteredUser { 164 | id: user.id.to_string(), 165 | email: user.email.to_owned(), 166 | name: user.name.to_owned(), 167 | photo: user.photo.to_owned(), 168 | role: user.role.to_owned(), 169 | verified: user.verified, 170 | createdAt: user.created_at.unwrap(), 171 | updatedAt: user.updated_at.unwrap(), 172 | } 173 | } 174 | 175 | pub fn config(conf: &mut web::ServiceConfig) { 176 | let scope = web::scope("/api") 177 | .service(health_checker_handler) 178 | .service(register_user_handler) 179 | .service(login_user_handler) 180 | .service(logout_handler) 181 | .service(get_me_handler); 182 | 183 | conf.service(scope); 184 | } 185 | -------------------------------------------------------------------------------- /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 = "actix-codec" 7 | version = "0.5.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "57a7559404a7f3573127aab53c08ce37a6c6a315c374a31070f3c91cd1b4a7fe" 10 | dependencies = [ 11 | "bitflags", 12 | "bytes", 13 | "futures-core", 14 | "futures-sink", 15 | "log", 16 | "memchr", 17 | "pin-project-lite", 18 | "tokio", 19 | "tokio-util", 20 | ] 21 | 22 | [[package]] 23 | name = "actix-cors" 24 | version = "0.6.4" 25 | source = "registry+https://github.com/rust-lang/crates.io-index" 26 | checksum = "b340e9cfa5b08690aae90fb61beb44e9b06f44fe3d0f93781aaa58cfba86245e" 27 | dependencies = [ 28 | "actix-utils", 29 | "actix-web", 30 | "derive_more", 31 | "futures-util", 32 | "log", 33 | "once_cell", 34 | "smallvec", 35 | ] 36 | 37 | [[package]] 38 | name = "actix-http" 39 | version = "3.3.0" 40 | source = "registry+https://github.com/rust-lang/crates.io-index" 41 | checksum = "0070905b2c4a98d184c4e81025253cb192aa8a73827553f38e9410801ceb35bb" 42 | dependencies = [ 43 | "actix-codec", 44 | "actix-rt", 45 | "actix-service", 46 | "actix-utils", 47 | "ahash", 48 | "base64 0.21.0", 49 | "bitflags", 50 | "brotli", 51 | "bytes", 52 | "bytestring", 53 | "derive_more", 54 | "encoding_rs", 55 | "flate2", 56 | "futures-core", 57 | "h2", 58 | "http", 59 | "httparse", 60 | "httpdate", 61 | "itoa", 62 | "language-tags", 63 | "local-channel", 64 | "mime", 65 | "percent-encoding", 66 | "pin-project-lite", 67 | "rand", 68 | "sha1", 69 | "smallvec", 70 | "tokio", 71 | "tokio-util", 72 | "tracing", 73 | "zstd", 74 | ] 75 | 76 | [[package]] 77 | name = "actix-macros" 78 | version = "0.2.3" 79 | source = "registry+https://github.com/rust-lang/crates.io-index" 80 | checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6" 81 | dependencies = [ 82 | "quote", 83 | "syn", 84 | ] 85 | 86 | [[package]] 87 | name = "actix-router" 88 | version = "0.5.1" 89 | source = "registry+https://github.com/rust-lang/crates.io-index" 90 | checksum = "d66ff4d247d2b160861fa2866457e85706833527840e4133f8f49aa423a38799" 91 | dependencies = [ 92 | "bytestring", 93 | "http", 94 | "regex", 95 | "serde", 96 | "tracing", 97 | ] 98 | 99 | [[package]] 100 | name = "actix-rt" 101 | version = "2.8.0" 102 | source = "registry+https://github.com/rust-lang/crates.io-index" 103 | checksum = "15265b6b8e2347670eb363c47fc8c75208b4a4994b27192f345fcbe707804f3e" 104 | dependencies = [ 105 | "futures-core", 106 | "tokio", 107 | ] 108 | 109 | [[package]] 110 | name = "actix-server" 111 | version = "2.2.0" 112 | source = "registry+https://github.com/rust-lang/crates.io-index" 113 | checksum = "3e8613a75dd50cc45f473cee3c34d59ed677c0f7b44480ce3b8247d7dc519327" 114 | dependencies = [ 115 | "actix-rt", 116 | "actix-service", 117 | "actix-utils", 118 | "futures-core", 119 | "futures-util", 120 | "mio", 121 | "num_cpus", 122 | "socket2", 123 | "tokio", 124 | "tracing", 125 | ] 126 | 127 | [[package]] 128 | name = "actix-service" 129 | version = "2.0.2" 130 | source = "registry+https://github.com/rust-lang/crates.io-index" 131 | checksum = "3b894941f818cfdc7ccc4b9e60fa7e53b5042a2e8567270f9147d5591893373a" 132 | dependencies = [ 133 | "futures-core", 134 | "paste", 135 | "pin-project-lite", 136 | ] 137 | 138 | [[package]] 139 | name = "actix-utils" 140 | version = "3.0.1" 141 | source = "registry+https://github.com/rust-lang/crates.io-index" 142 | checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" 143 | dependencies = [ 144 | "local-waker", 145 | "pin-project-lite", 146 | ] 147 | 148 | [[package]] 149 | name = "actix-web" 150 | version = "4.3.0" 151 | source = "registry+https://github.com/rust-lang/crates.io-index" 152 | checksum = "464e0fddc668ede5f26ec1f9557a8d44eda948732f40c6b0ad79126930eb775f" 153 | dependencies = [ 154 | "actix-codec", 155 | "actix-http", 156 | "actix-macros", 157 | "actix-router", 158 | "actix-rt", 159 | "actix-server", 160 | "actix-service", 161 | "actix-utils", 162 | "actix-web-codegen", 163 | "ahash", 164 | "bytes", 165 | "bytestring", 166 | "cfg-if", 167 | "cookie", 168 | "derive_more", 169 | "encoding_rs", 170 | "futures-core", 171 | "futures-util", 172 | "http", 173 | "itoa", 174 | "language-tags", 175 | "log", 176 | "mime", 177 | "once_cell", 178 | "pin-project-lite", 179 | "regex", 180 | "serde", 181 | "serde_json", 182 | "serde_urlencoded", 183 | "smallvec", 184 | "socket2", 185 | "time 0.3.17", 186 | "url", 187 | ] 188 | 189 | [[package]] 190 | name = "actix-web-codegen" 191 | version = "4.1.0" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "1fa9362663c8643d67b2d5eafba49e4cb2c8a053a29ed00a0bea121f17c76b13" 194 | dependencies = [ 195 | "actix-router", 196 | "proc-macro2", 197 | "quote", 198 | "syn", 199 | ] 200 | 201 | [[package]] 202 | name = "adler" 203 | version = "1.0.2" 204 | source = "registry+https://github.com/rust-lang/crates.io-index" 205 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 206 | 207 | [[package]] 208 | name = "ahash" 209 | version = "0.7.6" 210 | source = "registry+https://github.com/rust-lang/crates.io-index" 211 | checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" 212 | dependencies = [ 213 | "getrandom", 214 | "once_cell", 215 | "version_check", 216 | ] 217 | 218 | [[package]] 219 | name = "aho-corasick" 220 | version = "0.7.20" 221 | source = "registry+https://github.com/rust-lang/crates.io-index" 222 | checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" 223 | dependencies = [ 224 | "memchr", 225 | ] 226 | 227 | [[package]] 228 | name = "alloc-no-stdlib" 229 | version = "2.0.4" 230 | source = "registry+https://github.com/rust-lang/crates.io-index" 231 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 232 | 233 | [[package]] 234 | name = "alloc-stdlib" 235 | version = "0.2.2" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 238 | dependencies = [ 239 | "alloc-no-stdlib", 240 | ] 241 | 242 | [[package]] 243 | name = "android_system_properties" 244 | version = "0.1.5" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 247 | dependencies = [ 248 | "libc", 249 | ] 250 | 251 | [[package]] 252 | name = "argon2" 253 | version = "0.4.1" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "db4ce4441f99dbd377ca8a8f57b698c44d0d6e712d8329b5040da5a64aa1ce73" 256 | dependencies = [ 257 | "base64ct", 258 | "blake2", 259 | "password-hash", 260 | ] 261 | 262 | [[package]] 263 | name = "async-channel" 264 | version = "1.8.0" 265 | source = "registry+https://github.com/rust-lang/crates.io-index" 266 | checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" 267 | dependencies = [ 268 | "concurrent-queue", 269 | "event-listener", 270 | "futures-core", 271 | ] 272 | 273 | [[package]] 274 | name = "async-executor" 275 | version = "1.5.0" 276 | source = "registry+https://github.com/rust-lang/crates.io-index" 277 | checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" 278 | dependencies = [ 279 | "async-lock", 280 | "async-task", 281 | "concurrent-queue", 282 | "fastrand", 283 | "futures-lite", 284 | "slab", 285 | ] 286 | 287 | [[package]] 288 | name = "async-global-executor" 289 | version = "2.3.1" 290 | source = "registry+https://github.com/rust-lang/crates.io-index" 291 | checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" 292 | dependencies = [ 293 | "async-channel", 294 | "async-executor", 295 | "async-io", 296 | "async-lock", 297 | "blocking", 298 | "futures-lite", 299 | "once_cell", 300 | ] 301 | 302 | [[package]] 303 | name = "async-io" 304 | version = "1.12.0" 305 | source = "registry+https://github.com/rust-lang/crates.io-index" 306 | checksum = "8c374dda1ed3e7d8f0d9ba58715f924862c63eae6849c92d3a18e7fbde9e2794" 307 | dependencies = [ 308 | "async-lock", 309 | "autocfg", 310 | "concurrent-queue", 311 | "futures-lite", 312 | "libc", 313 | "log", 314 | "parking", 315 | "polling", 316 | "slab", 317 | "socket2", 318 | "waker-fn", 319 | "windows-sys", 320 | ] 321 | 322 | [[package]] 323 | name = "async-lock" 324 | version = "2.6.0" 325 | source = "registry+https://github.com/rust-lang/crates.io-index" 326 | checksum = "c8101efe8695a6c17e02911402145357e718ac92d3ff88ae8419e84b1707b685" 327 | dependencies = [ 328 | "event-listener", 329 | "futures-lite", 330 | ] 331 | 332 | [[package]] 333 | name = "async-native-tls" 334 | version = "0.4.0" 335 | source = "registry+https://github.com/rust-lang/crates.io-index" 336 | checksum = "d57d4cec3c647232e1094dc013546c0b33ce785d8aeb251e1f20dfaf8a9a13fe" 337 | dependencies = [ 338 | "futures-util", 339 | "native-tls", 340 | "thiserror", 341 | "url", 342 | ] 343 | 344 | [[package]] 345 | name = "async-process" 346 | version = "1.6.0" 347 | source = "registry+https://github.com/rust-lang/crates.io-index" 348 | checksum = "6381ead98388605d0d9ff86371043b5aa922a3905824244de40dc263a14fcba4" 349 | dependencies = [ 350 | "async-io", 351 | "async-lock", 352 | "autocfg", 353 | "blocking", 354 | "cfg-if", 355 | "event-listener", 356 | "futures-lite", 357 | "libc", 358 | "signal-hook", 359 | "windows-sys", 360 | ] 361 | 362 | [[package]] 363 | name = "async-std" 364 | version = "1.12.0" 365 | source = "registry+https://github.com/rust-lang/crates.io-index" 366 | checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" 367 | dependencies = [ 368 | "async-channel", 369 | "async-global-executor", 370 | "async-io", 371 | "async-lock", 372 | "async-process", 373 | "crossbeam-utils", 374 | "futures-channel", 375 | "futures-core", 376 | "futures-io", 377 | "futures-lite", 378 | "gloo-timers", 379 | "kv-log-macro", 380 | "log", 381 | "memchr", 382 | "once_cell", 383 | "pin-project-lite", 384 | "pin-utils", 385 | "slab", 386 | "wasm-bindgen-futures", 387 | ] 388 | 389 | [[package]] 390 | name = "async-task" 391 | version = "4.3.0" 392 | source = "registry+https://github.com/rust-lang/crates.io-index" 393 | checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" 394 | 395 | [[package]] 396 | name = "atoi" 397 | version = "1.0.0" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" 400 | dependencies = [ 401 | "num-traits", 402 | ] 403 | 404 | [[package]] 405 | name = "atomic-waker" 406 | version = "1.1.0" 407 | source = "registry+https://github.com/rust-lang/crates.io-index" 408 | checksum = "debc29dde2e69f9e47506b525f639ed42300fc014a3e007832592448fa8e4599" 409 | 410 | [[package]] 411 | name = "autocfg" 412 | version = "1.1.0" 413 | source = "registry+https://github.com/rust-lang/crates.io-index" 414 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 415 | 416 | [[package]] 417 | name = "base64" 418 | version = "0.13.1" 419 | source = "registry+https://github.com/rust-lang/crates.io-index" 420 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 421 | 422 | [[package]] 423 | name = "base64" 424 | version = "0.21.0" 425 | source = "registry+https://github.com/rust-lang/crates.io-index" 426 | checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" 427 | 428 | [[package]] 429 | name = "base64ct" 430 | version = "1.5.3" 431 | source = "registry+https://github.com/rust-lang/crates.io-index" 432 | checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" 433 | 434 | [[package]] 435 | name = "bitflags" 436 | version = "1.3.2" 437 | source = "registry+https://github.com/rust-lang/crates.io-index" 438 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 439 | 440 | [[package]] 441 | name = "blake2" 442 | version = "0.10.6" 443 | source = "registry+https://github.com/rust-lang/crates.io-index" 444 | checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" 445 | dependencies = [ 446 | "digest", 447 | ] 448 | 449 | [[package]] 450 | name = "block-buffer" 451 | version = "0.10.3" 452 | source = "registry+https://github.com/rust-lang/crates.io-index" 453 | checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" 454 | dependencies = [ 455 | "generic-array", 456 | ] 457 | 458 | [[package]] 459 | name = "blocking" 460 | version = "1.3.0" 461 | source = "registry+https://github.com/rust-lang/crates.io-index" 462 | checksum = "3c67b173a56acffd6d2326fb7ab938ba0b00a71480e14902b2591c87bc5741e8" 463 | dependencies = [ 464 | "async-channel", 465 | "async-lock", 466 | "async-task", 467 | "atomic-waker", 468 | "fastrand", 469 | "futures-lite", 470 | ] 471 | 472 | [[package]] 473 | name = "brotli" 474 | version = "3.3.4" 475 | source = "registry+https://github.com/rust-lang/crates.io-index" 476 | checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" 477 | dependencies = [ 478 | "alloc-no-stdlib", 479 | "alloc-stdlib", 480 | "brotli-decompressor", 481 | ] 482 | 483 | [[package]] 484 | name = "brotli-decompressor" 485 | version = "2.3.4" 486 | source = "registry+https://github.com/rust-lang/crates.io-index" 487 | checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" 488 | dependencies = [ 489 | "alloc-no-stdlib", 490 | "alloc-stdlib", 491 | ] 492 | 493 | [[package]] 494 | name = "bumpalo" 495 | version = "3.12.0" 496 | source = "registry+https://github.com/rust-lang/crates.io-index" 497 | checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" 498 | 499 | [[package]] 500 | name = "byteorder" 501 | version = "1.4.3" 502 | source = "registry+https://github.com/rust-lang/crates.io-index" 503 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 504 | 505 | [[package]] 506 | name = "bytes" 507 | version = "1.3.0" 508 | source = "registry+https://github.com/rust-lang/crates.io-index" 509 | checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" 510 | 511 | [[package]] 512 | name = "bytestring" 513 | version = "1.2.0" 514 | source = "registry+https://github.com/rust-lang/crates.io-index" 515 | checksum = "f7f83e57d9154148e355404702e2694463241880b939570d7c97c014da7a69a1" 516 | dependencies = [ 517 | "bytes", 518 | ] 519 | 520 | [[package]] 521 | name = "cc" 522 | version = "1.0.78" 523 | source = "registry+https://github.com/rust-lang/crates.io-index" 524 | checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" 525 | dependencies = [ 526 | "jobserver", 527 | ] 528 | 529 | [[package]] 530 | name = "cfg-if" 531 | version = "1.0.0" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 534 | 535 | [[package]] 536 | name = "chrono" 537 | version = "0.4.23" 538 | source = "registry+https://github.com/rust-lang/crates.io-index" 539 | checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" 540 | dependencies = [ 541 | "iana-time-zone", 542 | "js-sys", 543 | "num-integer", 544 | "num-traits", 545 | "serde", 546 | "time 0.1.45", 547 | "wasm-bindgen", 548 | "winapi", 549 | ] 550 | 551 | [[package]] 552 | name = "codespan-reporting" 553 | version = "0.11.1" 554 | source = "registry+https://github.com/rust-lang/crates.io-index" 555 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 556 | dependencies = [ 557 | "termcolor", 558 | "unicode-width", 559 | ] 560 | 561 | [[package]] 562 | name = "concurrent-queue" 563 | version = "2.1.0" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | checksum = "c278839b831783b70278b14df4d45e1beb1aad306c07bb796637de9a0e323e8e" 566 | dependencies = [ 567 | "crossbeam-utils", 568 | ] 569 | 570 | [[package]] 571 | name = "convert_case" 572 | version = "0.4.0" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 575 | 576 | [[package]] 577 | name = "cookie" 578 | version = "0.16.2" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" 581 | dependencies = [ 582 | "percent-encoding", 583 | "time 0.3.17", 584 | "version_check", 585 | ] 586 | 587 | [[package]] 588 | name = "core-foundation" 589 | version = "0.9.3" 590 | source = "registry+https://github.com/rust-lang/crates.io-index" 591 | checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" 592 | dependencies = [ 593 | "core-foundation-sys", 594 | "libc", 595 | ] 596 | 597 | [[package]] 598 | name = "core-foundation-sys" 599 | version = "0.8.3" 600 | source = "registry+https://github.com/rust-lang/crates.io-index" 601 | checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" 602 | 603 | [[package]] 604 | name = "cpufeatures" 605 | version = "0.2.5" 606 | source = "registry+https://github.com/rust-lang/crates.io-index" 607 | checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" 608 | dependencies = [ 609 | "libc", 610 | ] 611 | 612 | [[package]] 613 | name = "crc" 614 | version = "3.0.0" 615 | source = "registry+https://github.com/rust-lang/crates.io-index" 616 | checksum = "53757d12b596c16c78b83458d732a5d1a17ab3f53f2f7412f6fb57cc8a140ab3" 617 | dependencies = [ 618 | "crc-catalog", 619 | ] 620 | 621 | [[package]] 622 | name = "crc-catalog" 623 | version = "2.2.0" 624 | source = "registry+https://github.com/rust-lang/crates.io-index" 625 | checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" 626 | 627 | [[package]] 628 | name = "crc32fast" 629 | version = "1.3.2" 630 | source = "registry+https://github.com/rust-lang/crates.io-index" 631 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 632 | dependencies = [ 633 | "cfg-if", 634 | ] 635 | 636 | [[package]] 637 | name = "crossbeam-queue" 638 | version = "0.3.8" 639 | source = "registry+https://github.com/rust-lang/crates.io-index" 640 | checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" 641 | dependencies = [ 642 | "cfg-if", 643 | "crossbeam-utils", 644 | ] 645 | 646 | [[package]] 647 | name = "crossbeam-utils" 648 | version = "0.8.14" 649 | source = "registry+https://github.com/rust-lang/crates.io-index" 650 | checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" 651 | dependencies = [ 652 | "cfg-if", 653 | ] 654 | 655 | [[package]] 656 | name = "crypto-common" 657 | version = "0.1.6" 658 | source = "registry+https://github.com/rust-lang/crates.io-index" 659 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 660 | dependencies = [ 661 | "generic-array", 662 | "typenum", 663 | ] 664 | 665 | [[package]] 666 | name = "ctor" 667 | version = "0.1.26" 668 | source = "registry+https://github.com/rust-lang/crates.io-index" 669 | checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" 670 | dependencies = [ 671 | "quote", 672 | "syn", 673 | ] 674 | 675 | [[package]] 676 | name = "cxx" 677 | version = "1.0.87" 678 | source = "registry+https://github.com/rust-lang/crates.io-index" 679 | checksum = "b61a7545f753a88bcbe0a70de1fcc0221e10bfc752f576754fa91e663db1622e" 680 | dependencies = [ 681 | "cc", 682 | "cxxbridge-flags", 683 | "cxxbridge-macro", 684 | "link-cplusplus", 685 | ] 686 | 687 | [[package]] 688 | name = "cxx-build" 689 | version = "1.0.87" 690 | source = "registry+https://github.com/rust-lang/crates.io-index" 691 | checksum = "f464457d494b5ed6905c63b0c4704842aba319084a0a3561cdc1359536b53200" 692 | dependencies = [ 693 | "cc", 694 | "codespan-reporting", 695 | "once_cell", 696 | "proc-macro2", 697 | "quote", 698 | "scratch", 699 | "syn", 700 | ] 701 | 702 | [[package]] 703 | name = "cxxbridge-flags" 704 | version = "1.0.87" 705 | source = "registry+https://github.com/rust-lang/crates.io-index" 706 | checksum = "43c7119ce3a3701ed81aca8410b9acf6fc399d2629d057b87e2efa4e63a3aaea" 707 | 708 | [[package]] 709 | name = "cxxbridge-macro" 710 | version = "1.0.87" 711 | source = "registry+https://github.com/rust-lang/crates.io-index" 712 | checksum = "65e07508b90551e610910fa648a1878991d367064997a596135b86df30daf07e" 713 | dependencies = [ 714 | "proc-macro2", 715 | "quote", 716 | "syn", 717 | ] 718 | 719 | [[package]] 720 | name = "derive_more" 721 | version = "0.99.17" 722 | source = "registry+https://github.com/rust-lang/crates.io-index" 723 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" 724 | dependencies = [ 725 | "convert_case", 726 | "proc-macro2", 727 | "quote", 728 | "rustc_version", 729 | "syn", 730 | ] 731 | 732 | [[package]] 733 | name = "digest" 734 | version = "0.10.6" 735 | source = "registry+https://github.com/rust-lang/crates.io-index" 736 | checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" 737 | dependencies = [ 738 | "block-buffer", 739 | "crypto-common", 740 | "subtle", 741 | ] 742 | 743 | [[package]] 744 | name = "dirs" 745 | version = "4.0.0" 746 | source = "registry+https://github.com/rust-lang/crates.io-index" 747 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 748 | dependencies = [ 749 | "dirs-sys", 750 | ] 751 | 752 | [[package]] 753 | name = "dirs-sys" 754 | version = "0.3.7" 755 | source = "registry+https://github.com/rust-lang/crates.io-index" 756 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 757 | dependencies = [ 758 | "libc", 759 | "redox_users", 760 | "winapi", 761 | ] 762 | 763 | [[package]] 764 | name = "dotenv" 765 | version = "0.15.0" 766 | source = "registry+https://github.com/rust-lang/crates.io-index" 767 | checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" 768 | 769 | [[package]] 770 | name = "dotenvy" 771 | version = "0.15.6" 772 | source = "registry+https://github.com/rust-lang/crates.io-index" 773 | checksum = "03d8c417d7a8cb362e0c37e5d815f5eb7c37f79ff93707329d5a194e42e54ca0" 774 | 775 | [[package]] 776 | name = "either" 777 | version = "1.8.0" 778 | source = "registry+https://github.com/rust-lang/crates.io-index" 779 | checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" 780 | 781 | [[package]] 782 | name = "encoding_rs" 783 | version = "0.8.31" 784 | source = "registry+https://github.com/rust-lang/crates.io-index" 785 | checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" 786 | dependencies = [ 787 | "cfg-if", 788 | ] 789 | 790 | [[package]] 791 | name = "env_logger" 792 | version = "0.10.0" 793 | source = "registry+https://github.com/rust-lang/crates.io-index" 794 | checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" 795 | dependencies = [ 796 | "humantime", 797 | "is-terminal", 798 | "log", 799 | "regex", 800 | "termcolor", 801 | ] 802 | 803 | [[package]] 804 | name = "errno" 805 | version = "0.2.8" 806 | source = "registry+https://github.com/rust-lang/crates.io-index" 807 | checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" 808 | dependencies = [ 809 | "errno-dragonfly", 810 | "libc", 811 | "winapi", 812 | ] 813 | 814 | [[package]] 815 | name = "errno-dragonfly" 816 | version = "0.1.2" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" 819 | dependencies = [ 820 | "cc", 821 | "libc", 822 | ] 823 | 824 | [[package]] 825 | name = "event-listener" 826 | version = "2.5.3" 827 | source = "registry+https://github.com/rust-lang/crates.io-index" 828 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 829 | 830 | [[package]] 831 | name = "fastrand" 832 | version = "1.8.0" 833 | source = "registry+https://github.com/rust-lang/crates.io-index" 834 | checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" 835 | dependencies = [ 836 | "instant", 837 | ] 838 | 839 | [[package]] 840 | name = "flate2" 841 | version = "1.0.25" 842 | source = "registry+https://github.com/rust-lang/crates.io-index" 843 | checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" 844 | dependencies = [ 845 | "crc32fast", 846 | "miniz_oxide", 847 | ] 848 | 849 | [[package]] 850 | name = "fnv" 851 | version = "1.0.7" 852 | source = "registry+https://github.com/rust-lang/crates.io-index" 853 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 854 | 855 | [[package]] 856 | name = "foreign-types" 857 | version = "0.3.2" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 860 | dependencies = [ 861 | "foreign-types-shared", 862 | ] 863 | 864 | [[package]] 865 | name = "foreign-types-shared" 866 | version = "0.1.1" 867 | source = "registry+https://github.com/rust-lang/crates.io-index" 868 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 869 | 870 | [[package]] 871 | name = "form_urlencoded" 872 | version = "1.1.0" 873 | source = "registry+https://github.com/rust-lang/crates.io-index" 874 | checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" 875 | dependencies = [ 876 | "percent-encoding", 877 | ] 878 | 879 | [[package]] 880 | name = "futures-channel" 881 | version = "0.3.26" 882 | source = "registry+https://github.com/rust-lang/crates.io-index" 883 | checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" 884 | dependencies = [ 885 | "futures-core", 886 | "futures-sink", 887 | ] 888 | 889 | [[package]] 890 | name = "futures-core" 891 | version = "0.3.26" 892 | source = "registry+https://github.com/rust-lang/crates.io-index" 893 | checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" 894 | 895 | [[package]] 896 | name = "futures-intrusive" 897 | version = "0.4.2" 898 | source = "registry+https://github.com/rust-lang/crates.io-index" 899 | checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" 900 | dependencies = [ 901 | "futures-core", 902 | "lock_api", 903 | "parking_lot 0.11.2", 904 | ] 905 | 906 | [[package]] 907 | name = "futures-io" 908 | version = "0.3.26" 909 | source = "registry+https://github.com/rust-lang/crates.io-index" 910 | checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" 911 | 912 | [[package]] 913 | name = "futures-lite" 914 | version = "1.12.0" 915 | source = "registry+https://github.com/rust-lang/crates.io-index" 916 | checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" 917 | dependencies = [ 918 | "fastrand", 919 | "futures-core", 920 | "futures-io", 921 | "memchr", 922 | "parking", 923 | "pin-project-lite", 924 | "waker-fn", 925 | ] 926 | 927 | [[package]] 928 | name = "futures-macro" 929 | version = "0.3.26" 930 | source = "registry+https://github.com/rust-lang/crates.io-index" 931 | checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" 932 | dependencies = [ 933 | "proc-macro2", 934 | "quote", 935 | "syn", 936 | ] 937 | 938 | [[package]] 939 | name = "futures-sink" 940 | version = "0.3.26" 941 | source = "registry+https://github.com/rust-lang/crates.io-index" 942 | checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" 943 | 944 | [[package]] 945 | name = "futures-task" 946 | version = "0.3.26" 947 | source = "registry+https://github.com/rust-lang/crates.io-index" 948 | checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" 949 | 950 | [[package]] 951 | name = "futures-util" 952 | version = "0.3.26" 953 | source = "registry+https://github.com/rust-lang/crates.io-index" 954 | checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" 955 | dependencies = [ 956 | "futures-core", 957 | "futures-io", 958 | "futures-macro", 959 | "futures-sink", 960 | "futures-task", 961 | "memchr", 962 | "pin-project-lite", 963 | "pin-utils", 964 | "slab", 965 | ] 966 | 967 | [[package]] 968 | name = "generic-array" 969 | version = "0.14.6" 970 | source = "registry+https://github.com/rust-lang/crates.io-index" 971 | checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" 972 | dependencies = [ 973 | "typenum", 974 | "version_check", 975 | ] 976 | 977 | [[package]] 978 | name = "getrandom" 979 | version = "0.2.8" 980 | source = "registry+https://github.com/rust-lang/crates.io-index" 981 | checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" 982 | dependencies = [ 983 | "cfg-if", 984 | "libc", 985 | "wasi 0.11.0+wasi-snapshot-preview1", 986 | ] 987 | 988 | [[package]] 989 | name = "gloo-timers" 990 | version = "0.2.6" 991 | source = "registry+https://github.com/rust-lang/crates.io-index" 992 | checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" 993 | dependencies = [ 994 | "futures-channel", 995 | "futures-core", 996 | "js-sys", 997 | "wasm-bindgen", 998 | ] 999 | 1000 | [[package]] 1001 | name = "h2" 1002 | version = "0.3.15" 1003 | source = "registry+https://github.com/rust-lang/crates.io-index" 1004 | checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" 1005 | dependencies = [ 1006 | "bytes", 1007 | "fnv", 1008 | "futures-core", 1009 | "futures-sink", 1010 | "futures-util", 1011 | "http", 1012 | "indexmap", 1013 | "slab", 1014 | "tokio", 1015 | "tokio-util", 1016 | "tracing", 1017 | ] 1018 | 1019 | [[package]] 1020 | name = "hashbrown" 1021 | version = "0.12.3" 1022 | source = "registry+https://github.com/rust-lang/crates.io-index" 1023 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 1024 | dependencies = [ 1025 | "ahash", 1026 | ] 1027 | 1028 | [[package]] 1029 | name = "hashlink" 1030 | version = "0.8.1" 1031 | source = "registry+https://github.com/rust-lang/crates.io-index" 1032 | checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" 1033 | dependencies = [ 1034 | "hashbrown", 1035 | ] 1036 | 1037 | [[package]] 1038 | name = "heck" 1039 | version = "0.4.0" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" 1042 | dependencies = [ 1043 | "unicode-segmentation", 1044 | ] 1045 | 1046 | [[package]] 1047 | name = "hermit-abi" 1048 | version = "0.2.6" 1049 | source = "registry+https://github.com/rust-lang/crates.io-index" 1050 | checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" 1051 | dependencies = [ 1052 | "libc", 1053 | ] 1054 | 1055 | [[package]] 1056 | name = "hex" 1057 | version = "0.4.3" 1058 | source = "registry+https://github.com/rust-lang/crates.io-index" 1059 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1060 | 1061 | [[package]] 1062 | name = "hkdf" 1063 | version = "0.12.3" 1064 | source = "registry+https://github.com/rust-lang/crates.io-index" 1065 | checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" 1066 | dependencies = [ 1067 | "hmac", 1068 | ] 1069 | 1070 | [[package]] 1071 | name = "hmac" 1072 | version = "0.12.1" 1073 | source = "registry+https://github.com/rust-lang/crates.io-index" 1074 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1075 | dependencies = [ 1076 | "digest", 1077 | ] 1078 | 1079 | [[package]] 1080 | name = "http" 1081 | version = "0.2.8" 1082 | source = "registry+https://github.com/rust-lang/crates.io-index" 1083 | checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" 1084 | dependencies = [ 1085 | "bytes", 1086 | "fnv", 1087 | "itoa", 1088 | ] 1089 | 1090 | [[package]] 1091 | name = "httparse" 1092 | version = "1.8.0" 1093 | source = "registry+https://github.com/rust-lang/crates.io-index" 1094 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 1095 | 1096 | [[package]] 1097 | name = "httpdate" 1098 | version = "1.0.2" 1099 | source = "registry+https://github.com/rust-lang/crates.io-index" 1100 | checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" 1101 | 1102 | [[package]] 1103 | name = "humantime" 1104 | version = "2.1.0" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 1107 | 1108 | [[package]] 1109 | name = "iana-time-zone" 1110 | version = "0.1.53" 1111 | source = "registry+https://github.com/rust-lang/crates.io-index" 1112 | checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" 1113 | dependencies = [ 1114 | "android_system_properties", 1115 | "core-foundation-sys", 1116 | "iana-time-zone-haiku", 1117 | "js-sys", 1118 | "wasm-bindgen", 1119 | "winapi", 1120 | ] 1121 | 1122 | [[package]] 1123 | name = "iana-time-zone-haiku" 1124 | version = "0.1.1" 1125 | source = "registry+https://github.com/rust-lang/crates.io-index" 1126 | checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" 1127 | dependencies = [ 1128 | "cxx", 1129 | "cxx-build", 1130 | ] 1131 | 1132 | [[package]] 1133 | name = "idna" 1134 | version = "0.3.0" 1135 | source = "registry+https://github.com/rust-lang/crates.io-index" 1136 | checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" 1137 | dependencies = [ 1138 | "unicode-bidi", 1139 | "unicode-normalization", 1140 | ] 1141 | 1142 | [[package]] 1143 | name = "indexmap" 1144 | version = "1.9.2" 1145 | source = "registry+https://github.com/rust-lang/crates.io-index" 1146 | checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" 1147 | dependencies = [ 1148 | "autocfg", 1149 | "hashbrown", 1150 | ] 1151 | 1152 | [[package]] 1153 | name = "instant" 1154 | version = "0.1.12" 1155 | source = "registry+https://github.com/rust-lang/crates.io-index" 1156 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1157 | dependencies = [ 1158 | "cfg-if", 1159 | ] 1160 | 1161 | [[package]] 1162 | name = "io-lifetimes" 1163 | version = "1.0.4" 1164 | source = "registry+https://github.com/rust-lang/crates.io-index" 1165 | checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e" 1166 | dependencies = [ 1167 | "libc", 1168 | "windows-sys", 1169 | ] 1170 | 1171 | [[package]] 1172 | name = "is-terminal" 1173 | version = "0.4.2" 1174 | source = "registry+https://github.com/rust-lang/crates.io-index" 1175 | checksum = "28dfb6c8100ccc63462345b67d1bbc3679177c75ee4bf59bf29c8b1d110b8189" 1176 | dependencies = [ 1177 | "hermit-abi", 1178 | "io-lifetimes", 1179 | "rustix", 1180 | "windows-sys", 1181 | ] 1182 | 1183 | [[package]] 1184 | name = "itertools" 1185 | version = "0.10.5" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" 1188 | dependencies = [ 1189 | "either", 1190 | ] 1191 | 1192 | [[package]] 1193 | name = "itoa" 1194 | version = "1.0.5" 1195 | source = "registry+https://github.com/rust-lang/crates.io-index" 1196 | checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" 1197 | 1198 | [[package]] 1199 | name = "jobserver" 1200 | version = "0.1.25" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | checksum = "068b1ee6743e4d11fb9c6a1e6064b3693a1b600e7f5f5988047d98b3dc9fb90b" 1203 | dependencies = [ 1204 | "libc", 1205 | ] 1206 | 1207 | [[package]] 1208 | name = "js-sys" 1209 | version = "0.3.60" 1210 | source = "registry+https://github.com/rust-lang/crates.io-index" 1211 | checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" 1212 | dependencies = [ 1213 | "wasm-bindgen", 1214 | ] 1215 | 1216 | [[package]] 1217 | name = "jsonwebtoken" 1218 | version = "8.2.0" 1219 | source = "registry+https://github.com/rust-lang/crates.io-index" 1220 | checksum = "09f4f04699947111ec1733e71778d763555737579e44b85844cae8e1940a1828" 1221 | dependencies = [ 1222 | "base64 0.13.1", 1223 | "pem", 1224 | "ring", 1225 | "serde", 1226 | "serde_json", 1227 | "simple_asn1", 1228 | ] 1229 | 1230 | [[package]] 1231 | name = "kv-log-macro" 1232 | version = "1.0.7" 1233 | source = "registry+https://github.com/rust-lang/crates.io-index" 1234 | checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" 1235 | dependencies = [ 1236 | "log", 1237 | ] 1238 | 1239 | [[package]] 1240 | name = "language-tags" 1241 | version = "0.3.2" 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" 1243 | checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" 1244 | 1245 | [[package]] 1246 | name = "lazy_static" 1247 | version = "1.4.0" 1248 | source = "registry+https://github.com/rust-lang/crates.io-index" 1249 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1250 | 1251 | [[package]] 1252 | name = "libc" 1253 | version = "0.2.139" 1254 | source = "registry+https://github.com/rust-lang/crates.io-index" 1255 | checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" 1256 | 1257 | [[package]] 1258 | name = "link-cplusplus" 1259 | version = "1.0.8" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" 1262 | dependencies = [ 1263 | "cc", 1264 | ] 1265 | 1266 | [[package]] 1267 | name = "linux-raw-sys" 1268 | version = "0.1.4" 1269 | source = "registry+https://github.com/rust-lang/crates.io-index" 1270 | checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" 1271 | 1272 | [[package]] 1273 | name = "local-channel" 1274 | version = "0.1.3" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | checksum = "7f303ec0e94c6c54447f84f3b0ef7af769858a9c4ef56ef2a986d3dcd4c3fc9c" 1277 | dependencies = [ 1278 | "futures-core", 1279 | "futures-sink", 1280 | "futures-util", 1281 | "local-waker", 1282 | ] 1283 | 1284 | [[package]] 1285 | name = "local-waker" 1286 | version = "0.1.3" 1287 | source = "registry+https://github.com/rust-lang/crates.io-index" 1288 | checksum = "e34f76eb3611940e0e7d53a9aaa4e6a3151f69541a282fd0dad5571420c53ff1" 1289 | 1290 | [[package]] 1291 | name = "lock_api" 1292 | version = "0.4.9" 1293 | source = "registry+https://github.com/rust-lang/crates.io-index" 1294 | checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" 1295 | dependencies = [ 1296 | "autocfg", 1297 | "scopeguard", 1298 | ] 1299 | 1300 | [[package]] 1301 | name = "log" 1302 | version = "0.4.17" 1303 | source = "registry+https://github.com/rust-lang/crates.io-index" 1304 | checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" 1305 | dependencies = [ 1306 | "cfg-if", 1307 | "value-bag", 1308 | ] 1309 | 1310 | [[package]] 1311 | name = "md-5" 1312 | version = "0.10.5" 1313 | source = "registry+https://github.com/rust-lang/crates.io-index" 1314 | checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" 1315 | dependencies = [ 1316 | "digest", 1317 | ] 1318 | 1319 | [[package]] 1320 | name = "memchr" 1321 | version = "2.5.0" 1322 | source = "registry+https://github.com/rust-lang/crates.io-index" 1323 | checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" 1324 | 1325 | [[package]] 1326 | name = "mime" 1327 | version = "0.3.16" 1328 | source = "registry+https://github.com/rust-lang/crates.io-index" 1329 | checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 1330 | 1331 | [[package]] 1332 | name = "minimal-lexical" 1333 | version = "0.2.1" 1334 | source = "registry+https://github.com/rust-lang/crates.io-index" 1335 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1336 | 1337 | [[package]] 1338 | name = "miniz_oxide" 1339 | version = "0.6.2" 1340 | source = "registry+https://github.com/rust-lang/crates.io-index" 1341 | checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" 1342 | dependencies = [ 1343 | "adler", 1344 | ] 1345 | 1346 | [[package]] 1347 | name = "mio" 1348 | version = "0.8.5" 1349 | source = "registry+https://github.com/rust-lang/crates.io-index" 1350 | checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" 1351 | dependencies = [ 1352 | "libc", 1353 | "log", 1354 | "wasi 0.11.0+wasi-snapshot-preview1", 1355 | "windows-sys", 1356 | ] 1357 | 1358 | [[package]] 1359 | name = "native-tls" 1360 | version = "0.2.11" 1361 | source = "registry+https://github.com/rust-lang/crates.io-index" 1362 | checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" 1363 | dependencies = [ 1364 | "lazy_static", 1365 | "libc", 1366 | "log", 1367 | "openssl", 1368 | "openssl-probe", 1369 | "openssl-sys", 1370 | "schannel", 1371 | "security-framework", 1372 | "security-framework-sys", 1373 | "tempfile", 1374 | ] 1375 | 1376 | [[package]] 1377 | name = "nom" 1378 | version = "7.1.3" 1379 | source = "registry+https://github.com/rust-lang/crates.io-index" 1380 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 1381 | dependencies = [ 1382 | "memchr", 1383 | "minimal-lexical", 1384 | ] 1385 | 1386 | [[package]] 1387 | name = "num-bigint" 1388 | version = "0.4.3" 1389 | source = "registry+https://github.com/rust-lang/crates.io-index" 1390 | checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" 1391 | dependencies = [ 1392 | "autocfg", 1393 | "num-integer", 1394 | "num-traits", 1395 | ] 1396 | 1397 | [[package]] 1398 | name = "num-integer" 1399 | version = "0.1.45" 1400 | source = "registry+https://github.com/rust-lang/crates.io-index" 1401 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 1402 | dependencies = [ 1403 | "autocfg", 1404 | "num-traits", 1405 | ] 1406 | 1407 | [[package]] 1408 | name = "num-traits" 1409 | version = "0.2.15" 1410 | source = "registry+https://github.com/rust-lang/crates.io-index" 1411 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 1412 | dependencies = [ 1413 | "autocfg", 1414 | ] 1415 | 1416 | [[package]] 1417 | name = "num_cpus" 1418 | version = "1.15.0" 1419 | source = "registry+https://github.com/rust-lang/crates.io-index" 1420 | checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" 1421 | dependencies = [ 1422 | "hermit-abi", 1423 | "libc", 1424 | ] 1425 | 1426 | [[package]] 1427 | name = "once_cell" 1428 | version = "1.17.0" 1429 | source = "registry+https://github.com/rust-lang/crates.io-index" 1430 | checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" 1431 | 1432 | [[package]] 1433 | name = "openssl" 1434 | version = "0.10.45" 1435 | source = "registry+https://github.com/rust-lang/crates.io-index" 1436 | checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" 1437 | dependencies = [ 1438 | "bitflags", 1439 | "cfg-if", 1440 | "foreign-types", 1441 | "libc", 1442 | "once_cell", 1443 | "openssl-macros", 1444 | "openssl-sys", 1445 | ] 1446 | 1447 | [[package]] 1448 | name = "openssl-macros" 1449 | version = "0.1.0" 1450 | source = "registry+https://github.com/rust-lang/crates.io-index" 1451 | checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" 1452 | dependencies = [ 1453 | "proc-macro2", 1454 | "quote", 1455 | "syn", 1456 | ] 1457 | 1458 | [[package]] 1459 | name = "openssl-probe" 1460 | version = "0.1.5" 1461 | source = "registry+https://github.com/rust-lang/crates.io-index" 1462 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 1463 | 1464 | [[package]] 1465 | name = "openssl-sys" 1466 | version = "0.9.80" 1467 | source = "registry+https://github.com/rust-lang/crates.io-index" 1468 | checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" 1469 | dependencies = [ 1470 | "autocfg", 1471 | "cc", 1472 | "libc", 1473 | "pkg-config", 1474 | "vcpkg", 1475 | ] 1476 | 1477 | [[package]] 1478 | name = "parking" 1479 | version = "2.0.0" 1480 | source = "registry+https://github.com/rust-lang/crates.io-index" 1481 | checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" 1482 | 1483 | [[package]] 1484 | name = "parking_lot" 1485 | version = "0.11.2" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 1488 | dependencies = [ 1489 | "instant", 1490 | "lock_api", 1491 | "parking_lot_core 0.8.6", 1492 | ] 1493 | 1494 | [[package]] 1495 | name = "parking_lot" 1496 | version = "0.12.1" 1497 | source = "registry+https://github.com/rust-lang/crates.io-index" 1498 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 1499 | dependencies = [ 1500 | "lock_api", 1501 | "parking_lot_core 0.9.6", 1502 | ] 1503 | 1504 | [[package]] 1505 | name = "parking_lot_core" 1506 | version = "0.8.6" 1507 | source = "registry+https://github.com/rust-lang/crates.io-index" 1508 | checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" 1509 | dependencies = [ 1510 | "cfg-if", 1511 | "instant", 1512 | "libc", 1513 | "redox_syscall", 1514 | "smallvec", 1515 | "winapi", 1516 | ] 1517 | 1518 | [[package]] 1519 | name = "parking_lot_core" 1520 | version = "0.9.6" 1521 | source = "registry+https://github.com/rust-lang/crates.io-index" 1522 | checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" 1523 | dependencies = [ 1524 | "cfg-if", 1525 | "libc", 1526 | "redox_syscall", 1527 | "smallvec", 1528 | "windows-sys", 1529 | ] 1530 | 1531 | [[package]] 1532 | name = "password-hash" 1533 | version = "0.4.2" 1534 | source = "registry+https://github.com/rust-lang/crates.io-index" 1535 | checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" 1536 | dependencies = [ 1537 | "base64ct", 1538 | "rand_core", 1539 | "subtle", 1540 | ] 1541 | 1542 | [[package]] 1543 | name = "paste" 1544 | version = "1.0.11" 1545 | source = "registry+https://github.com/rust-lang/crates.io-index" 1546 | checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" 1547 | 1548 | [[package]] 1549 | name = "pem" 1550 | version = "1.1.1" 1551 | source = "registry+https://github.com/rust-lang/crates.io-index" 1552 | checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" 1553 | dependencies = [ 1554 | "base64 0.13.1", 1555 | ] 1556 | 1557 | [[package]] 1558 | name = "percent-encoding" 1559 | version = "2.2.0" 1560 | source = "registry+https://github.com/rust-lang/crates.io-index" 1561 | checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" 1562 | 1563 | [[package]] 1564 | name = "pin-project-lite" 1565 | version = "0.2.9" 1566 | source = "registry+https://github.com/rust-lang/crates.io-index" 1567 | checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" 1568 | 1569 | [[package]] 1570 | name = "pin-utils" 1571 | version = "0.1.0" 1572 | source = "registry+https://github.com/rust-lang/crates.io-index" 1573 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1574 | 1575 | [[package]] 1576 | name = "pkg-config" 1577 | version = "0.3.26" 1578 | source = "registry+https://github.com/rust-lang/crates.io-index" 1579 | checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" 1580 | 1581 | [[package]] 1582 | name = "polling" 1583 | version = "2.5.2" 1584 | source = "registry+https://github.com/rust-lang/crates.io-index" 1585 | checksum = "22122d5ec4f9fe1b3916419b76be1e80bcb93f618d071d2edf841b137b2a2bd6" 1586 | dependencies = [ 1587 | "autocfg", 1588 | "cfg-if", 1589 | "libc", 1590 | "log", 1591 | "wepoll-ffi", 1592 | "windows-sys", 1593 | ] 1594 | 1595 | [[package]] 1596 | name = "ppv-lite86" 1597 | version = "0.2.17" 1598 | source = "registry+https://github.com/rust-lang/crates.io-index" 1599 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1600 | 1601 | [[package]] 1602 | name = "proc-macro2" 1603 | version = "1.0.50" 1604 | source = "registry+https://github.com/rust-lang/crates.io-index" 1605 | checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" 1606 | dependencies = [ 1607 | "unicode-ident", 1608 | ] 1609 | 1610 | [[package]] 1611 | name = "quote" 1612 | version = "1.0.23" 1613 | source = "registry+https://github.com/rust-lang/crates.io-index" 1614 | checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" 1615 | dependencies = [ 1616 | "proc-macro2", 1617 | ] 1618 | 1619 | [[package]] 1620 | name = "rand" 1621 | version = "0.8.5" 1622 | source = "registry+https://github.com/rust-lang/crates.io-index" 1623 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1624 | dependencies = [ 1625 | "libc", 1626 | "rand_chacha", 1627 | "rand_core", 1628 | ] 1629 | 1630 | [[package]] 1631 | name = "rand_chacha" 1632 | version = "0.3.1" 1633 | source = "registry+https://github.com/rust-lang/crates.io-index" 1634 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1635 | dependencies = [ 1636 | "ppv-lite86", 1637 | "rand_core", 1638 | ] 1639 | 1640 | [[package]] 1641 | name = "rand_core" 1642 | version = "0.6.4" 1643 | source = "registry+https://github.com/rust-lang/crates.io-index" 1644 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1645 | dependencies = [ 1646 | "getrandom", 1647 | ] 1648 | 1649 | [[package]] 1650 | name = "redox_syscall" 1651 | version = "0.2.16" 1652 | source = "registry+https://github.com/rust-lang/crates.io-index" 1653 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 1654 | dependencies = [ 1655 | "bitflags", 1656 | ] 1657 | 1658 | [[package]] 1659 | name = "redox_users" 1660 | version = "0.4.3" 1661 | source = "registry+https://github.com/rust-lang/crates.io-index" 1662 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 1663 | dependencies = [ 1664 | "getrandom", 1665 | "redox_syscall", 1666 | "thiserror", 1667 | ] 1668 | 1669 | [[package]] 1670 | name = "regex" 1671 | version = "1.7.1" 1672 | source = "registry+https://github.com/rust-lang/crates.io-index" 1673 | checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" 1674 | dependencies = [ 1675 | "aho-corasick", 1676 | "memchr", 1677 | "regex-syntax", 1678 | ] 1679 | 1680 | [[package]] 1681 | name = "regex-syntax" 1682 | version = "0.6.28" 1683 | source = "registry+https://github.com/rust-lang/crates.io-index" 1684 | checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" 1685 | 1686 | [[package]] 1687 | name = "remove_dir_all" 1688 | version = "0.5.3" 1689 | source = "registry+https://github.com/rust-lang/crates.io-index" 1690 | checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" 1691 | dependencies = [ 1692 | "winapi", 1693 | ] 1694 | 1695 | [[package]] 1696 | name = "ring" 1697 | version = "0.16.20" 1698 | source = "registry+https://github.com/rust-lang/crates.io-index" 1699 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 1700 | dependencies = [ 1701 | "cc", 1702 | "libc", 1703 | "once_cell", 1704 | "spin", 1705 | "untrusted", 1706 | "web-sys", 1707 | "winapi", 1708 | ] 1709 | 1710 | [[package]] 1711 | name = "rust-jwt-hs256" 1712 | version = "0.1.0" 1713 | dependencies = [ 1714 | "actix-cors", 1715 | "actix-web", 1716 | "argon2", 1717 | "chrono", 1718 | "dotenv", 1719 | "env_logger", 1720 | "jsonwebtoken", 1721 | "rand_core", 1722 | "serde", 1723 | "serde_json", 1724 | "sqlx", 1725 | "uuid", 1726 | ] 1727 | 1728 | [[package]] 1729 | name = "rustc_version" 1730 | version = "0.4.0" 1731 | source = "registry+https://github.com/rust-lang/crates.io-index" 1732 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 1733 | dependencies = [ 1734 | "semver", 1735 | ] 1736 | 1737 | [[package]] 1738 | name = "rustix" 1739 | version = "0.36.7" 1740 | source = "registry+https://github.com/rust-lang/crates.io-index" 1741 | checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03" 1742 | dependencies = [ 1743 | "bitflags", 1744 | "errno", 1745 | "io-lifetimes", 1746 | "libc", 1747 | "linux-raw-sys", 1748 | "windows-sys", 1749 | ] 1750 | 1751 | [[package]] 1752 | name = "ryu" 1753 | version = "1.0.12" 1754 | source = "registry+https://github.com/rust-lang/crates.io-index" 1755 | checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" 1756 | 1757 | [[package]] 1758 | name = "schannel" 1759 | version = "0.1.21" 1760 | source = "registry+https://github.com/rust-lang/crates.io-index" 1761 | checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" 1762 | dependencies = [ 1763 | "windows-sys", 1764 | ] 1765 | 1766 | [[package]] 1767 | name = "scopeguard" 1768 | version = "1.1.0" 1769 | source = "registry+https://github.com/rust-lang/crates.io-index" 1770 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 1771 | 1772 | [[package]] 1773 | name = "scratch" 1774 | version = "1.0.3" 1775 | source = "registry+https://github.com/rust-lang/crates.io-index" 1776 | checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" 1777 | 1778 | [[package]] 1779 | name = "security-framework" 1780 | version = "2.8.1" 1781 | source = "registry+https://github.com/rust-lang/crates.io-index" 1782 | checksum = "7c4437699b6d34972de58652c68b98cb5b53a4199ab126db8e20ec8ded29a721" 1783 | dependencies = [ 1784 | "bitflags", 1785 | "core-foundation", 1786 | "core-foundation-sys", 1787 | "libc", 1788 | "security-framework-sys", 1789 | ] 1790 | 1791 | [[package]] 1792 | name = "security-framework-sys" 1793 | version = "2.8.0" 1794 | source = "registry+https://github.com/rust-lang/crates.io-index" 1795 | checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" 1796 | dependencies = [ 1797 | "core-foundation-sys", 1798 | "libc", 1799 | ] 1800 | 1801 | [[package]] 1802 | name = "semver" 1803 | version = "1.0.16" 1804 | source = "registry+https://github.com/rust-lang/crates.io-index" 1805 | checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" 1806 | 1807 | [[package]] 1808 | name = "serde" 1809 | version = "1.0.152" 1810 | source = "registry+https://github.com/rust-lang/crates.io-index" 1811 | checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" 1812 | dependencies = [ 1813 | "serde_derive", 1814 | ] 1815 | 1816 | [[package]] 1817 | name = "serde_derive" 1818 | version = "1.0.152" 1819 | source = "registry+https://github.com/rust-lang/crates.io-index" 1820 | checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" 1821 | dependencies = [ 1822 | "proc-macro2", 1823 | "quote", 1824 | "syn", 1825 | ] 1826 | 1827 | [[package]] 1828 | name = "serde_json" 1829 | version = "1.0.91" 1830 | source = "registry+https://github.com/rust-lang/crates.io-index" 1831 | checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" 1832 | dependencies = [ 1833 | "itoa", 1834 | "ryu", 1835 | "serde", 1836 | ] 1837 | 1838 | [[package]] 1839 | name = "serde_urlencoded" 1840 | version = "0.7.1" 1841 | source = "registry+https://github.com/rust-lang/crates.io-index" 1842 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1843 | dependencies = [ 1844 | "form_urlencoded", 1845 | "itoa", 1846 | "ryu", 1847 | "serde", 1848 | ] 1849 | 1850 | [[package]] 1851 | name = "sha1" 1852 | version = "0.10.5" 1853 | source = "registry+https://github.com/rust-lang/crates.io-index" 1854 | checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" 1855 | dependencies = [ 1856 | "cfg-if", 1857 | "cpufeatures", 1858 | "digest", 1859 | ] 1860 | 1861 | [[package]] 1862 | name = "sha2" 1863 | version = "0.10.6" 1864 | source = "registry+https://github.com/rust-lang/crates.io-index" 1865 | checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" 1866 | dependencies = [ 1867 | "cfg-if", 1868 | "cpufeatures", 1869 | "digest", 1870 | ] 1871 | 1872 | [[package]] 1873 | name = "signal-hook" 1874 | version = "0.3.14" 1875 | source = "registry+https://github.com/rust-lang/crates.io-index" 1876 | checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" 1877 | dependencies = [ 1878 | "libc", 1879 | "signal-hook-registry", 1880 | ] 1881 | 1882 | [[package]] 1883 | name = "signal-hook-registry" 1884 | version = "1.4.0" 1885 | source = "registry+https://github.com/rust-lang/crates.io-index" 1886 | checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" 1887 | dependencies = [ 1888 | "libc", 1889 | ] 1890 | 1891 | [[package]] 1892 | name = "simple_asn1" 1893 | version = "0.6.2" 1894 | source = "registry+https://github.com/rust-lang/crates.io-index" 1895 | checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" 1896 | dependencies = [ 1897 | "num-bigint", 1898 | "num-traits", 1899 | "thiserror", 1900 | "time 0.3.17", 1901 | ] 1902 | 1903 | [[package]] 1904 | name = "slab" 1905 | version = "0.4.7" 1906 | source = "registry+https://github.com/rust-lang/crates.io-index" 1907 | checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" 1908 | dependencies = [ 1909 | "autocfg", 1910 | ] 1911 | 1912 | [[package]] 1913 | name = "smallvec" 1914 | version = "1.10.0" 1915 | source = "registry+https://github.com/rust-lang/crates.io-index" 1916 | checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" 1917 | 1918 | [[package]] 1919 | name = "socket2" 1920 | version = "0.4.7" 1921 | source = "registry+https://github.com/rust-lang/crates.io-index" 1922 | checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" 1923 | dependencies = [ 1924 | "libc", 1925 | "winapi", 1926 | ] 1927 | 1928 | [[package]] 1929 | name = "spin" 1930 | version = "0.5.2" 1931 | source = "registry+https://github.com/rust-lang/crates.io-index" 1932 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 1933 | 1934 | [[package]] 1935 | name = "sqlformat" 1936 | version = "0.2.1" 1937 | source = "registry+https://github.com/rust-lang/crates.io-index" 1938 | checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e" 1939 | dependencies = [ 1940 | "itertools", 1941 | "nom", 1942 | "unicode_categories", 1943 | ] 1944 | 1945 | [[package]] 1946 | name = "sqlx" 1947 | version = "0.6.2" 1948 | source = "registry+https://github.com/rust-lang/crates.io-index" 1949 | checksum = "9249290c05928352f71c077cc44a464d880c63f26f7534728cca008e135c0428" 1950 | dependencies = [ 1951 | "sqlx-core", 1952 | "sqlx-macros", 1953 | ] 1954 | 1955 | [[package]] 1956 | name = "sqlx-core" 1957 | version = "0.6.2" 1958 | source = "registry+https://github.com/rust-lang/crates.io-index" 1959 | checksum = "dcbc16ddba161afc99e14d1713a453747a2b07fc097d2009f4c300ec99286105" 1960 | dependencies = [ 1961 | "ahash", 1962 | "atoi", 1963 | "base64 0.13.1", 1964 | "bitflags", 1965 | "byteorder", 1966 | "bytes", 1967 | "chrono", 1968 | "crc", 1969 | "crossbeam-queue", 1970 | "dirs", 1971 | "dotenvy", 1972 | "either", 1973 | "event-listener", 1974 | "futures-channel", 1975 | "futures-core", 1976 | "futures-intrusive", 1977 | "futures-util", 1978 | "hashlink", 1979 | "hex", 1980 | "hkdf", 1981 | "hmac", 1982 | "indexmap", 1983 | "itoa", 1984 | "libc", 1985 | "log", 1986 | "md-5", 1987 | "memchr", 1988 | "once_cell", 1989 | "paste", 1990 | "percent-encoding", 1991 | "rand", 1992 | "serde", 1993 | "serde_json", 1994 | "sha1", 1995 | "sha2", 1996 | "smallvec", 1997 | "sqlformat", 1998 | "sqlx-rt", 1999 | "stringprep", 2000 | "thiserror", 2001 | "url", 2002 | "uuid", 2003 | "whoami", 2004 | ] 2005 | 2006 | [[package]] 2007 | name = "sqlx-macros" 2008 | version = "0.6.2" 2009 | source = "registry+https://github.com/rust-lang/crates.io-index" 2010 | checksum = "b850fa514dc11f2ee85be9d055c512aa866746adfacd1cb42d867d68e6a5b0d9" 2011 | dependencies = [ 2012 | "dotenvy", 2013 | "either", 2014 | "heck", 2015 | "once_cell", 2016 | "proc-macro2", 2017 | "quote", 2018 | "sha2", 2019 | "sqlx-core", 2020 | "sqlx-rt", 2021 | "syn", 2022 | "url", 2023 | ] 2024 | 2025 | [[package]] 2026 | name = "sqlx-rt" 2027 | version = "0.6.2" 2028 | source = "registry+https://github.com/rust-lang/crates.io-index" 2029 | checksum = "24c5b2d25fa654cc5f841750b8e1cdedbe21189bf9a9382ee90bfa9dd3562396" 2030 | dependencies = [ 2031 | "async-native-tls", 2032 | "async-std", 2033 | "native-tls", 2034 | ] 2035 | 2036 | [[package]] 2037 | name = "stringprep" 2038 | version = "0.1.2" 2039 | source = "registry+https://github.com/rust-lang/crates.io-index" 2040 | checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" 2041 | dependencies = [ 2042 | "unicode-bidi", 2043 | "unicode-normalization", 2044 | ] 2045 | 2046 | [[package]] 2047 | name = "subtle" 2048 | version = "2.4.1" 2049 | source = "registry+https://github.com/rust-lang/crates.io-index" 2050 | checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" 2051 | 2052 | [[package]] 2053 | name = "syn" 2054 | version = "1.0.107" 2055 | source = "registry+https://github.com/rust-lang/crates.io-index" 2056 | checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" 2057 | dependencies = [ 2058 | "proc-macro2", 2059 | "quote", 2060 | "unicode-ident", 2061 | ] 2062 | 2063 | [[package]] 2064 | name = "tempfile" 2065 | version = "3.3.0" 2066 | source = "registry+https://github.com/rust-lang/crates.io-index" 2067 | checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" 2068 | dependencies = [ 2069 | "cfg-if", 2070 | "fastrand", 2071 | "libc", 2072 | "redox_syscall", 2073 | "remove_dir_all", 2074 | "winapi", 2075 | ] 2076 | 2077 | [[package]] 2078 | name = "termcolor" 2079 | version = "1.2.0" 2080 | source = "registry+https://github.com/rust-lang/crates.io-index" 2081 | checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" 2082 | dependencies = [ 2083 | "winapi-util", 2084 | ] 2085 | 2086 | [[package]] 2087 | name = "thiserror" 2088 | version = "1.0.38" 2089 | source = "registry+https://github.com/rust-lang/crates.io-index" 2090 | checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" 2091 | dependencies = [ 2092 | "thiserror-impl", 2093 | ] 2094 | 2095 | [[package]] 2096 | name = "thiserror-impl" 2097 | version = "1.0.38" 2098 | source = "registry+https://github.com/rust-lang/crates.io-index" 2099 | checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" 2100 | dependencies = [ 2101 | "proc-macro2", 2102 | "quote", 2103 | "syn", 2104 | ] 2105 | 2106 | [[package]] 2107 | name = "time" 2108 | version = "0.1.45" 2109 | source = "registry+https://github.com/rust-lang/crates.io-index" 2110 | checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" 2111 | dependencies = [ 2112 | "libc", 2113 | "wasi 0.10.0+wasi-snapshot-preview1", 2114 | "winapi", 2115 | ] 2116 | 2117 | [[package]] 2118 | name = "time" 2119 | version = "0.3.17" 2120 | source = "registry+https://github.com/rust-lang/crates.io-index" 2121 | checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" 2122 | dependencies = [ 2123 | "itoa", 2124 | "serde", 2125 | "time-core", 2126 | "time-macros", 2127 | ] 2128 | 2129 | [[package]] 2130 | name = "time-core" 2131 | version = "0.1.0" 2132 | source = "registry+https://github.com/rust-lang/crates.io-index" 2133 | checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" 2134 | 2135 | [[package]] 2136 | name = "time-macros" 2137 | version = "0.2.6" 2138 | source = "registry+https://github.com/rust-lang/crates.io-index" 2139 | checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" 2140 | dependencies = [ 2141 | "time-core", 2142 | ] 2143 | 2144 | [[package]] 2145 | name = "tinyvec" 2146 | version = "1.6.0" 2147 | source = "registry+https://github.com/rust-lang/crates.io-index" 2148 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 2149 | dependencies = [ 2150 | "tinyvec_macros", 2151 | ] 2152 | 2153 | [[package]] 2154 | name = "tinyvec_macros" 2155 | version = "0.1.0" 2156 | source = "registry+https://github.com/rust-lang/crates.io-index" 2157 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 2158 | 2159 | [[package]] 2160 | name = "tokio" 2161 | version = "1.24.2" 2162 | source = "registry+https://github.com/rust-lang/crates.io-index" 2163 | checksum = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb" 2164 | dependencies = [ 2165 | "autocfg", 2166 | "bytes", 2167 | "libc", 2168 | "memchr", 2169 | "mio", 2170 | "parking_lot 0.12.1", 2171 | "pin-project-lite", 2172 | "signal-hook-registry", 2173 | "socket2", 2174 | "windows-sys", 2175 | ] 2176 | 2177 | [[package]] 2178 | name = "tokio-util" 2179 | version = "0.7.4" 2180 | source = "registry+https://github.com/rust-lang/crates.io-index" 2181 | checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" 2182 | dependencies = [ 2183 | "bytes", 2184 | "futures-core", 2185 | "futures-sink", 2186 | "pin-project-lite", 2187 | "tokio", 2188 | "tracing", 2189 | ] 2190 | 2191 | [[package]] 2192 | name = "tracing" 2193 | version = "0.1.37" 2194 | source = "registry+https://github.com/rust-lang/crates.io-index" 2195 | checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" 2196 | dependencies = [ 2197 | "cfg-if", 2198 | "log", 2199 | "pin-project-lite", 2200 | "tracing-core", 2201 | ] 2202 | 2203 | [[package]] 2204 | name = "tracing-core" 2205 | version = "0.1.30" 2206 | source = "registry+https://github.com/rust-lang/crates.io-index" 2207 | checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" 2208 | dependencies = [ 2209 | "once_cell", 2210 | ] 2211 | 2212 | [[package]] 2213 | name = "typenum" 2214 | version = "1.16.0" 2215 | source = "registry+https://github.com/rust-lang/crates.io-index" 2216 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 2217 | 2218 | [[package]] 2219 | name = "unicode-bidi" 2220 | version = "0.3.10" 2221 | source = "registry+https://github.com/rust-lang/crates.io-index" 2222 | checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" 2223 | 2224 | [[package]] 2225 | name = "unicode-ident" 2226 | version = "1.0.6" 2227 | source = "registry+https://github.com/rust-lang/crates.io-index" 2228 | checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" 2229 | 2230 | [[package]] 2231 | name = "unicode-normalization" 2232 | version = "0.1.22" 2233 | source = "registry+https://github.com/rust-lang/crates.io-index" 2234 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 2235 | dependencies = [ 2236 | "tinyvec", 2237 | ] 2238 | 2239 | [[package]] 2240 | name = "unicode-segmentation" 2241 | version = "1.10.0" 2242 | source = "registry+https://github.com/rust-lang/crates.io-index" 2243 | checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" 2244 | 2245 | [[package]] 2246 | name = "unicode-width" 2247 | version = "0.1.10" 2248 | source = "registry+https://github.com/rust-lang/crates.io-index" 2249 | checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" 2250 | 2251 | [[package]] 2252 | name = "unicode_categories" 2253 | version = "0.1.1" 2254 | source = "registry+https://github.com/rust-lang/crates.io-index" 2255 | checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" 2256 | 2257 | [[package]] 2258 | name = "untrusted" 2259 | version = "0.7.1" 2260 | source = "registry+https://github.com/rust-lang/crates.io-index" 2261 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 2262 | 2263 | [[package]] 2264 | name = "url" 2265 | version = "2.3.1" 2266 | source = "registry+https://github.com/rust-lang/crates.io-index" 2267 | checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" 2268 | dependencies = [ 2269 | "form_urlencoded", 2270 | "idna", 2271 | "percent-encoding", 2272 | ] 2273 | 2274 | [[package]] 2275 | name = "uuid" 2276 | version = "1.2.2" 2277 | source = "registry+https://github.com/rust-lang/crates.io-index" 2278 | checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" 2279 | dependencies = [ 2280 | "getrandom", 2281 | "serde", 2282 | ] 2283 | 2284 | [[package]] 2285 | name = "value-bag" 2286 | version = "1.0.0-alpha.9" 2287 | source = "registry+https://github.com/rust-lang/crates.io-index" 2288 | checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" 2289 | dependencies = [ 2290 | "ctor", 2291 | "version_check", 2292 | ] 2293 | 2294 | [[package]] 2295 | name = "vcpkg" 2296 | version = "0.2.15" 2297 | source = "registry+https://github.com/rust-lang/crates.io-index" 2298 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 2299 | 2300 | [[package]] 2301 | name = "version_check" 2302 | version = "0.9.4" 2303 | source = "registry+https://github.com/rust-lang/crates.io-index" 2304 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 2305 | 2306 | [[package]] 2307 | name = "waker-fn" 2308 | version = "1.1.0" 2309 | source = "registry+https://github.com/rust-lang/crates.io-index" 2310 | checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" 2311 | 2312 | [[package]] 2313 | name = "wasi" 2314 | version = "0.10.0+wasi-snapshot-preview1" 2315 | source = "registry+https://github.com/rust-lang/crates.io-index" 2316 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 2317 | 2318 | [[package]] 2319 | name = "wasi" 2320 | version = "0.11.0+wasi-snapshot-preview1" 2321 | source = "registry+https://github.com/rust-lang/crates.io-index" 2322 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 2323 | 2324 | [[package]] 2325 | name = "wasm-bindgen" 2326 | version = "0.2.83" 2327 | source = "registry+https://github.com/rust-lang/crates.io-index" 2328 | checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" 2329 | dependencies = [ 2330 | "cfg-if", 2331 | "wasm-bindgen-macro", 2332 | ] 2333 | 2334 | [[package]] 2335 | name = "wasm-bindgen-backend" 2336 | version = "0.2.83" 2337 | source = "registry+https://github.com/rust-lang/crates.io-index" 2338 | checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" 2339 | dependencies = [ 2340 | "bumpalo", 2341 | "log", 2342 | "once_cell", 2343 | "proc-macro2", 2344 | "quote", 2345 | "syn", 2346 | "wasm-bindgen-shared", 2347 | ] 2348 | 2349 | [[package]] 2350 | name = "wasm-bindgen-futures" 2351 | version = "0.4.33" 2352 | source = "registry+https://github.com/rust-lang/crates.io-index" 2353 | checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" 2354 | dependencies = [ 2355 | "cfg-if", 2356 | "js-sys", 2357 | "wasm-bindgen", 2358 | "web-sys", 2359 | ] 2360 | 2361 | [[package]] 2362 | name = "wasm-bindgen-macro" 2363 | version = "0.2.83" 2364 | source = "registry+https://github.com/rust-lang/crates.io-index" 2365 | checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" 2366 | dependencies = [ 2367 | "quote", 2368 | "wasm-bindgen-macro-support", 2369 | ] 2370 | 2371 | [[package]] 2372 | name = "wasm-bindgen-macro-support" 2373 | version = "0.2.83" 2374 | source = "registry+https://github.com/rust-lang/crates.io-index" 2375 | checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" 2376 | dependencies = [ 2377 | "proc-macro2", 2378 | "quote", 2379 | "syn", 2380 | "wasm-bindgen-backend", 2381 | "wasm-bindgen-shared", 2382 | ] 2383 | 2384 | [[package]] 2385 | name = "wasm-bindgen-shared" 2386 | version = "0.2.83" 2387 | source = "registry+https://github.com/rust-lang/crates.io-index" 2388 | checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" 2389 | 2390 | [[package]] 2391 | name = "web-sys" 2392 | version = "0.3.60" 2393 | source = "registry+https://github.com/rust-lang/crates.io-index" 2394 | checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" 2395 | dependencies = [ 2396 | "js-sys", 2397 | "wasm-bindgen", 2398 | ] 2399 | 2400 | [[package]] 2401 | name = "wepoll-ffi" 2402 | version = "0.1.2" 2403 | source = "registry+https://github.com/rust-lang/crates.io-index" 2404 | checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" 2405 | dependencies = [ 2406 | "cc", 2407 | ] 2408 | 2409 | [[package]] 2410 | name = "whoami" 2411 | version = "1.3.0" 2412 | source = "registry+https://github.com/rust-lang/crates.io-index" 2413 | checksum = "45dbc71f0cdca27dc261a9bd37ddec174e4a0af2b900b890f378460f745426e3" 2414 | dependencies = [ 2415 | "wasm-bindgen", 2416 | "web-sys", 2417 | ] 2418 | 2419 | [[package]] 2420 | name = "winapi" 2421 | version = "0.3.9" 2422 | source = "registry+https://github.com/rust-lang/crates.io-index" 2423 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2424 | dependencies = [ 2425 | "winapi-i686-pc-windows-gnu", 2426 | "winapi-x86_64-pc-windows-gnu", 2427 | ] 2428 | 2429 | [[package]] 2430 | name = "winapi-i686-pc-windows-gnu" 2431 | version = "0.4.0" 2432 | source = "registry+https://github.com/rust-lang/crates.io-index" 2433 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2434 | 2435 | [[package]] 2436 | name = "winapi-util" 2437 | version = "0.1.5" 2438 | source = "registry+https://github.com/rust-lang/crates.io-index" 2439 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 2440 | dependencies = [ 2441 | "winapi", 2442 | ] 2443 | 2444 | [[package]] 2445 | name = "winapi-x86_64-pc-windows-gnu" 2446 | version = "0.4.0" 2447 | source = "registry+https://github.com/rust-lang/crates.io-index" 2448 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2449 | 2450 | [[package]] 2451 | name = "windows-sys" 2452 | version = "0.42.0" 2453 | source = "registry+https://github.com/rust-lang/crates.io-index" 2454 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 2455 | dependencies = [ 2456 | "windows_aarch64_gnullvm", 2457 | "windows_aarch64_msvc", 2458 | "windows_i686_gnu", 2459 | "windows_i686_msvc", 2460 | "windows_x86_64_gnu", 2461 | "windows_x86_64_gnullvm", 2462 | "windows_x86_64_msvc", 2463 | ] 2464 | 2465 | [[package]] 2466 | name = "windows_aarch64_gnullvm" 2467 | version = "0.42.1" 2468 | source = "registry+https://github.com/rust-lang/crates.io-index" 2469 | checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" 2470 | 2471 | [[package]] 2472 | name = "windows_aarch64_msvc" 2473 | version = "0.42.1" 2474 | source = "registry+https://github.com/rust-lang/crates.io-index" 2475 | checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" 2476 | 2477 | [[package]] 2478 | name = "windows_i686_gnu" 2479 | version = "0.42.1" 2480 | source = "registry+https://github.com/rust-lang/crates.io-index" 2481 | checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" 2482 | 2483 | [[package]] 2484 | name = "windows_i686_msvc" 2485 | version = "0.42.1" 2486 | source = "registry+https://github.com/rust-lang/crates.io-index" 2487 | checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" 2488 | 2489 | [[package]] 2490 | name = "windows_x86_64_gnu" 2491 | version = "0.42.1" 2492 | source = "registry+https://github.com/rust-lang/crates.io-index" 2493 | checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" 2494 | 2495 | [[package]] 2496 | name = "windows_x86_64_gnullvm" 2497 | version = "0.42.1" 2498 | source = "registry+https://github.com/rust-lang/crates.io-index" 2499 | checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" 2500 | 2501 | [[package]] 2502 | name = "windows_x86_64_msvc" 2503 | version = "0.42.1" 2504 | source = "registry+https://github.com/rust-lang/crates.io-index" 2505 | checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" 2506 | 2507 | [[package]] 2508 | name = "zstd" 2509 | version = "0.12.2+zstd.1.5.2" 2510 | source = "registry+https://github.com/rust-lang/crates.io-index" 2511 | checksum = "e9262a83dc741c0b0ffec209881b45dbc232c21b02a2b9cb1adb93266e41303d" 2512 | dependencies = [ 2513 | "zstd-safe", 2514 | ] 2515 | 2516 | [[package]] 2517 | name = "zstd-safe" 2518 | version = "6.0.2+zstd.1.5.2" 2519 | source = "registry+https://github.com/rust-lang/crates.io-index" 2520 | checksum = "a6cf39f730b440bab43da8fb5faf5f254574462f73f260f85f7987f32154ff17" 2521 | dependencies = [ 2522 | "libc", 2523 | "zstd-sys", 2524 | ] 2525 | 2526 | [[package]] 2527 | name = "zstd-sys" 2528 | version = "2.0.5+zstd.1.5.2" 2529 | source = "registry+https://github.com/rust-lang/crates.io-index" 2530 | checksum = "edc50ffce891ad571e9f9afe5039c4837bede781ac4bb13052ed7ae695518596" 2531 | dependencies = [ 2532 | "cc", 2533 | "libc", 2534 | "pkg-config", 2535 | ] 2536 | --------------------------------------------------------------------------------