├── src ├── model │ ├── mod.rs │ └── blog_post.rs ├── repository │ ├── mod.rs │ └── blog_repository.rs ├── component │ ├── about.rs │ ├── mod.rs │ ├── blog_post.rs │ ├── errors_fallback.rs │ ├── blog_preview_card.rs │ ├── blog_previews.rs │ ├── view_post.rs │ ├── toast.rs │ └── edit_post.rs ├── lib.rs ├── app.rs └── main.rs ├── rust-toolchain.toml ├── example.db ├── assets └── favicon.ico ├── package.json ├── migrations ├── 20231111061008_post.down.sql └── 20231111061008_post.up.sql ├── README.md ├── end2end ├── package.json ├── tests │ └── example.spec.ts ├── package-lock.json └── playwright.config.ts ├── tailwind.config.js ├── input.css ├── .gitignore ├── LICENSE ├── Cargo.toml └── Cargo.lock /src/model/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod blog_post; 2 | -------------------------------------------------------------------------------- /src/repository/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod blog_repository; 2 | -------------------------------------------------------------------------------- /rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | 2 | [toolchain] 3 | channel = "stable" 4 | -------------------------------------------------------------------------------- /example.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoonKraken/hotblog/HEAD/example.db -------------------------------------------------------------------------------- /assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MoonKraken/hotblog/HEAD/assets/favicon.ico -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "devDependencies": { 3 | "tailwindcss": "^3.3.2" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /migrations/20231111061008_post.down.sql: -------------------------------------------------------------------------------- 1 | -- Add down migration script here 2 | DROP TABLE post; 3 | -------------------------------------------------------------------------------- /src/component/about.rs: -------------------------------------------------------------------------------- 1 | use leptos::*; 2 | 3 | #[component] 4 | pub fn About() -> impl IntoView { 5 | view! { 6 |

"This is the About component"

7 | } 8 | } 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Creating The SQLite Database 2 | 3 | 1. `export DATABASE_URL="sqlite:post.db"` 4 | 1. Make sure the sqlx CLI tool is installed: `cargo install sqlx-cli` 5 | 1. `sqlx db create` 6 | -------------------------------------------------------------------------------- /src/component/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod toast; 2 | pub mod edit_post; 3 | pub mod view_post; 4 | pub mod blog_post; 5 | pub mod blog_previews; 6 | pub mod blog_preview_card; 7 | pub mod about; 8 | pub mod errors_fallback; 9 | -------------------------------------------------------------------------------- /migrations/20231111061008_post.up.sql: -------------------------------------------------------------------------------- 1 | --- Add up migration script here 2 | CREATE TABLE post ( 3 | id VARCHAR NOT NULL PRIMARY KEY, 4 | dt VARCHAR NOT NULL, 5 | image_url VARCHAR, 6 | title VARCHAR NOT NULL, 7 | text VARCHAR NOT NULL 8 | ); 9 | -------------------------------------------------------------------------------- /end2end/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "end2end", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": {}, 7 | "keywords": [], 8 | "author": "", 9 | "license": "ISC", 10 | "devDependencies": { 11 | "@playwright/test": "^1.28.0" 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: { 4 | relative: true, 5 | files: ["*.html", "./src/**/*.rs"], 6 | }, 7 | theme: { 8 | extend: {}, 9 | }, 10 | plugins: [], 11 | } 12 | -------------------------------------------------------------------------------- /input.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer components { 6 | input[type="text"], 7 | input[type="datetime-local"], 8 | textarea { 9 | @apply bg-gray-700 text-gray-200 focus:outline-white focus:border-white rounded-md; 10 | } 11 | 12 | body { 13 | @apply bg-gray-700 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /end2end/tests/example.spec.ts: -------------------------------------------------------------------------------- 1 | import { test, expect } from "@playwright/test"; 2 | 3 | test("homepage has title and links to intro page", async ({ page }) => { 4 | await page.goto("http://localhost:3000/"); 5 | 6 | await expect(page).toHaveTitle("Welcome to Leptos"); 7 | 8 | await expect(page.locator("h1")).toHaveText("Welcome to Leptos!"); 9 | }); 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | /target/ 4 | /style/ 5 | pkg 6 | 7 | # These are backup files generated by rustfmt 8 | **/*.rs.bk 9 | 10 | # sqlite database 11 | post.db* 12 | 13 | # node e2e test tools and outputs 14 | node_modules/ 15 | test-results/ 16 | end2end/playwright-report/ 17 | playwright/.cache/ 18 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod app; 2 | pub mod component; 3 | pub mod model; 4 | pub mod repository; 5 | 6 | use cfg_if::cfg_if; 7 | 8 | cfg_if! { 9 | if #[cfg(feature = "hydrate")] { 10 | 11 | use wasm_bindgen::prelude::wasm_bindgen; 12 | 13 | #[wasm_bindgen] 14 | pub fn hydrate() { 15 | use app::*; 16 | use leptos::*; 17 | 18 | console_error_panic_hook::set_once(); 19 | 20 | leptos::mount_to_body(App); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/component/blog_post.rs: -------------------------------------------------------------------------------- 1 | use leptos::*; 2 | 3 | use crate::model::blog_post::Post; 4 | 5 | #[component] 6 | pub fn BlogPost(post: Post) -> impl IntoView { 7 | let dt = format!("{}", post.dt.format("%B %e, %Y %I:%M%P")); 8 | 9 | view! { 10 |
11 |
{dt}
12 | Post thumbnail 13 |
{&post.title}
14 |
{&post.text}
15 |
16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/component/errors_fallback.rs: -------------------------------------------------------------------------------- 1 | use leptos::*; 2 | pub fn error_fallback() -> Box) -> View> { 3 | Box::new(|errors: RwSignal| { 4 | view! { 5 |
6 |
    7 | { 8 | move || {errors.with(|errors| { 9 | errors.iter() 10 | .map(|(_, e)| view! {
  • {e.to_string()}
  • }) 11 | .collect_view() 12 | })} 13 | } 14 |
15 |
16 | }.into_view() 17 | }) 18 | } 19 | -------------------------------------------------------------------------------- /src/model/blog_post.rs: -------------------------------------------------------------------------------- 1 | use serde::Deserialize; 2 | use serde::Serialize; 3 | #[cfg(feature = "ssr")] 4 | use sqlx::types::chrono::NaiveDateTime; 5 | #[cfg(feature = "ssr")] 6 | use sqlx::types::chrono::Local; 7 | #[cfg(feature = "ssr")] 8 | use sqlx::FromRow; 9 | 10 | #[cfg(feature = "hydrate")] 11 | use chrono::NaiveDateTime; 12 | #[cfg(feature = "hydrate")] 13 | use chrono::Local; 14 | 15 | 16 | #[cfg_attr(feature = "ssr", derive(Serialize, Deserialize, Debug, Clone, FromRow))] 17 | #[cfg_attr(feature = "hydrate", derive(Serialize, Deserialize, Debug, Clone))] 18 | pub struct Post { 19 | pub id: String, 20 | pub dt: NaiveDateTime, 21 | pub image_url: String, 22 | pub title: String, 23 | pub text: String, 24 | } 25 | 26 | impl Post { 27 | pub fn new_empty() -> Post { 28 | Post { 29 | id: "".to_string(), 30 | dt: Local::now().naive_local(), 31 | image_url: "".to_string(), 32 | title: "".to_string(), 33 | text: "".to_string(), 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Ken 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/component/blog_preview_card.rs: -------------------------------------------------------------------------------- 1 | use leptos::*; 2 | 3 | use crate::model::blog_post::Post; 4 | 5 | #[component] 6 | pub fn BlogPreviewCard(blog_preview: Post) -> impl IntoView { 7 | let dt = format!("{}", blog_preview.dt.format("%b %e, %Y %I:%M%P")); 8 | view! { 9 | 10 |
11 | Blog Thumbnail 12 | 13 |
14 |

{blog_preview.title}

15 | 16 |

{blog_preview.text}

17 | 18 |
19 | {dt} 20 |
21 |
22 |
23 |
24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/component/blog_previews.rs: -------------------------------------------------------------------------------- 1 | use leptos::*; 2 | 3 | use super::errors_fallback::error_fallback; 4 | use super::blog_preview_card::BlogPreviewCard; 5 | use crate::model::blog_post::Post; 6 | use crate::repository::blog_repository::get_previews; 7 | 8 | #[component] 9 | fn BlogDescription() -> impl IntoView { 10 | view! { 11 |
12 |
13 | 14 |
15 |
"Moonbound"
16 |
"A travel blog about fun places"
17 |
18 | } 19 | } 20 | 21 | #[component] 22 | pub fn BlogPreviews() -> impl IntoView { 23 | let post_resource = create_resource( 24 | || {}, 25 | |_| async move { get_previews(None, None, 40, 10).await }, 26 | ); 27 | 28 | let previews_view = move || -> Option>{ 29 | post_resource.and_then(|previews: &Vec| { 30 | previews 31 | .into_iter() 32 | .map(|preview| { 33 | view! { 34 | 35 | } 36 | }) 37 | .collect_view() 38 | }) 39 | }; 40 | 41 | view! { 42 | 43 |
44 | "Loading..."

}> 45 | 46 | {previews_view} 47 | 48 |
49 |
50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/component/view_post.rs: -------------------------------------------------------------------------------- 1 | use super::errors_fallback::error_fallback; 2 | use leptos::*; 3 | use leptos_router::*; 4 | use serde::{Deserialize, Serialize}; 5 | use crate::model::blog_post::Post; 6 | use crate::component::blog_post::BlogPost; 7 | use crate::repository::blog_repository::get_post; 8 | 9 | #[derive(Params, Eq, PartialEq, Debug, Clone, Serialize, Deserialize)] 10 | struct ViewPostParams { 11 | post_id: Option, 12 | } 13 | 14 | #[component] 15 | pub fn ViewPost() -> impl IntoView { 16 | let params: Memo> = use_params::(); 17 | let post_resource: Resource<_, Result> = create_resource( 18 | move || params.get(), 19 | |params| async move { 20 | match params { 21 | Ok(ViewPostParams { post_id: Some(s) }) => get_post(s).await, 22 | // if no id is in the URL path parameter, assume we are making a new post 23 | _ => Ok(Post::new_empty()), 24 | } 25 | }, 26 | ); 27 | 28 | let post_view = move || { 29 | post_resource.and_then(|post| { 30 | let post_saved = post.clone(); 31 | view! { 32 |
33 |
34 |
35 | Edit 36 |
37 | 38 |
39 |
40 | } 41 | }) 42 | }; 43 | 44 | view! { 45 | "Loading..."

}> 46 | 47 | {post_view} 48 | 49 |
50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/component/toast.rs: -------------------------------------------------------------------------------- 1 | use std::time::Duration; 2 | 3 | use leptos::*; 4 | 5 | #[derive(Clone)] 6 | pub enum ToastType { 7 | Success, 8 | Error, 9 | } 10 | 11 | #[derive(Clone)] 12 | pub struct ToastMessage { 13 | pub message: String, 14 | pub toast_type: ToastType, 15 | pub visible: bool, 16 | } 17 | 18 | #[component] 19 | pub fn Toast() -> impl IntoView { 20 | let (toast, set_toast) = create_signal::(ToastMessage { 21 | message: String::new(), 22 | toast_type: ToastType::Success, 23 | visible: false, 24 | }); 25 | provide_context::>(set_toast); 26 | 27 | let base_toast_classes = "fixed bottom-10 left-1/2 transform -translate-x-1/2 text-white px-4 py-2 rounded shadow-lg transition-opacity duration-600 z-40"; 28 | 29 | let toast_classes = move || -> String { 30 | let t = toast.get(); 31 | let background_class = match t.toast_type { 32 | ToastType::Success => "bg-green-600", 33 | ToastType::Error => "bg-red-600", 34 | }; 35 | 36 | let opacity_class = if t.visible == true { 37 | "opacity-1".to_string() 38 | } else { 39 | "opacity-0".to_string() 40 | }; 41 | 42 | format!("{} {} {}", base_toast_classes, background_class, opacity_class) 43 | }; 44 | 45 | create_effect(move |_| { 46 | let t = toast.get(); 47 | if t.visible { 48 | set_timeout( 49 | move || { 50 | set_toast.update(|msg| { 51 | msg.visible = false; 52 | }); 53 | }, 54 | Duration::new(4, 0), 55 | ) 56 | } 57 | }); 58 | 59 | view! { 60 |
61 | {move || toast.get().message} 62 |
63 | } 64 | } 65 | -------------------------------------------------------------------------------- /end2end/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "end2end", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "end2end", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "@playwright/test": "^1.28.0" 13 | } 14 | }, 15 | "node_modules/@playwright/test": { 16 | "version": "1.28.0", 17 | "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.28.0.tgz", 18 | "integrity": "sha512-vrHs5DFTPwYox5SGKq/7TDn/S4q6RA1zArd7uhO6EyP9hj3XgZBBM12ktMbnDQNxh/fL1IUKsTNLxihmsU38lQ==", 19 | "dev": true, 20 | "dependencies": { 21 | "@types/node": "*", 22 | "playwright-core": "1.28.0" 23 | }, 24 | "bin": { 25 | "playwright": "cli.js" 26 | }, 27 | "engines": { 28 | "node": ">=14" 29 | } 30 | }, 31 | "node_modules/@types/node": { 32 | "version": "18.11.9", 33 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", 34 | "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", 35 | "dev": true 36 | }, 37 | "node_modules/playwright-core": { 38 | "version": "1.28.0", 39 | "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.28.0.tgz", 40 | "integrity": "sha512-nJLknd28kPBiCNTbqpu6Wmkrh63OEqJSFw9xOfL9qxfNwody7h6/L3O2dZoWQ6Oxcm0VOHjWmGiCUGkc0X3VZA==", 41 | "dev": true, 42 | "bin": { 43 | "playwright": "cli.js" 44 | }, 45 | "engines": { 46 | "node": ">=14" 47 | } 48 | } 49 | }, 50 | "dependencies": { 51 | "@playwright/test": { 52 | "version": "1.28.0", 53 | "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.28.0.tgz", 54 | "integrity": "sha512-vrHs5DFTPwYox5SGKq/7TDn/S4q6RA1zArd7uhO6EyP9hj3XgZBBM12ktMbnDQNxh/fL1IUKsTNLxihmsU38lQ==", 55 | "dev": true, 56 | "requires": { 57 | "@types/node": "*", 58 | "playwright-core": "1.28.0" 59 | } 60 | }, 61 | "@types/node": { 62 | "version": "18.11.9", 63 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", 64 | "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", 65 | "dev": true 66 | }, 67 | "playwright-core": { 68 | "version": "1.28.0", 69 | "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.28.0.tgz", 70 | "integrity": "sha512-nJLknd28kPBiCNTbqpu6Wmkrh63OEqJSFw9xOfL9qxfNwody7h6/L3O2dZoWQ6Oxcm0VOHjWmGiCUGkc0X3VZA==", 71 | "dev": true 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/app.rs: -------------------------------------------------------------------------------- 1 | use leptos::*; 2 | use leptos_meta::*; 3 | use leptos_router::*; 4 | use crate::component::edit_post::EditPost; 5 | use crate::component::blog_previews::BlogPreviews; 6 | use crate::component::toast::Toast; 7 | use crate::component::view_post::ViewPost; 8 | 9 | #[component] 10 | pub fn Navbar() -> impl IntoView { 11 | view! { 12 |
13 |
14 | // title on the left 15 | Moonbound 16 | 17 | // nav bar 18 | 24 |
25 |
26 | } 27 | } 28 | 29 | #[component] 30 | pub fn App() -> impl IntoView { 31 | // Provides context that manages stylesheets, titles, meta tags, etc. 32 | provide_meta_context(); 33 | 34 | view! { 35 | // injects a stylesheet into the document 36 | // id=leptos means cargo-leptos will hot-reload this stylesheet 37 | 38 | 39 | // sets the document title 40 | 41 | <Toast/> 42 | 43 | <Navbar/> 44 | // content for this welcome page 45 | 46 | <Router> 47 | <main class="dark:bg-gray-700 dark:text-gray-200 p-8 h-full"> 48 | <Routes> 49 | <Route path="" view=BlogPreviews/> 50 | <Route path="/edit/:post_id?" view=EditPost/> 51 | <Route path="/view/:post_id?" view=ViewPost/> 52 | </Routes> 53 | </main> 54 | </Router> 55 | } 56 | } 57 | 58 | /// 404 - Not Found 59 | #[component] 60 | fn NotFound() -> impl IntoView { 61 | // set an HTTP status code 404 62 | // this is feature gated because it can only be done during 63 | // initial server-side rendering 64 | // if you navigate to the 404 page subsequently, the status 65 | // code will not be set because there is not a new HTTP request 66 | // to the server 67 | #[cfg(feature = "ssr")] 68 | { 69 | // this can be done inline because it's synchronous 70 | // if it were async, we'd use a server function 71 | let resp = expect_context::<leptos_actix::ResponseOptions>(); 72 | resp.set_status(actix_web::http::StatusCode::NOT_FOUND); 73 | } 74 | 75 | view! { 76 | <h1>"Not Found"</h1> 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /end2end/playwright.config.ts: -------------------------------------------------------------------------------- 1 | import type { PlaywrightTestConfig } from "@playwright/test"; 2 | import { devices } from "@playwright/test"; 3 | 4 | /** 5 | * Read environment variables from file. 6 | * https://github.com/motdotla/dotenv 7 | */ 8 | // require('dotenv').config(); 9 | 10 | /** 11 | * See https://playwright.dev/docs/test-configuration. 12 | */ 13 | const config: PlaywrightTestConfig = { 14 | testDir: "./tests", 15 | /* Maximum time one test can run for. */ 16 | timeout: 30 * 1000, 17 | expect: { 18 | /** 19 | * Maximum time expect() should wait for the condition to be met. 20 | * For example in `await expect(locator).toHaveText();` 21 | */ 22 | timeout: 5000, 23 | }, 24 | /* Run tests in files in parallel */ 25 | fullyParallel: true, 26 | /* Fail the build on CI if you accidentally left test.only in the source code. */ 27 | forbidOnly: !!process.env.CI, 28 | /* Retry on CI only */ 29 | retries: process.env.CI ? 2 : 0, 30 | /* Opt out of parallel tests on CI. */ 31 | workers: process.env.CI ? 1 : undefined, 32 | /* Reporter to use. See https://playwright.dev/docs/test-reporters */ 33 | reporter: "html", 34 | /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ 35 | use: { 36 | /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ 37 | actionTimeout: 0, 38 | /* Base URL to use in actions like `await page.goto('/')`. */ 39 | // baseURL: 'http://localhost:3000', 40 | 41 | /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ 42 | trace: "on-first-retry", 43 | }, 44 | 45 | /* Configure projects for major browsers */ 46 | projects: [ 47 | { 48 | name: "chromium", 49 | use: { 50 | ...devices["Desktop Chrome"], 51 | }, 52 | }, 53 | 54 | { 55 | name: "firefox", 56 | use: { 57 | ...devices["Desktop Firefox"], 58 | }, 59 | }, 60 | 61 | { 62 | name: "webkit", 63 | use: { 64 | ...devices["Desktop Safari"], 65 | }, 66 | }, 67 | 68 | /* Test against mobile viewports. */ 69 | // { 70 | // name: 'Mobile Chrome', 71 | // use: { 72 | // ...devices['Pixel 5'], 73 | // }, 74 | // }, 75 | // { 76 | // name: 'Mobile Safari', 77 | // use: { 78 | // ...devices['iPhone 12'], 79 | // }, 80 | // }, 81 | 82 | /* Test against branded browsers. */ 83 | // { 84 | // name: 'Microsoft Edge', 85 | // use: { 86 | // channel: 'msedge', 87 | // }, 88 | // }, 89 | // { 90 | // name: 'Google Chrome', 91 | // use: { 92 | // channel: 'chrome', 93 | // }, 94 | // }, 95 | ], 96 | 97 | /* Folder for test artifacts such as screenshots, videos, traces, etc. */ 98 | // outputDir: 'test-results/', 99 | 100 | /* Run your local dev server before starting the tests */ 101 | // webServer: { 102 | // command: 'npm run start', 103 | // port: 3000, 104 | // }, 105 | }; 106 | 107 | export default config; 108 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #[cfg(feature = "ssr")] 2 | #[actix_web::main] 3 | async fn main() -> std::io::Result<()> { 4 | use std::io; 5 | 6 | use actix_files::Files; 7 | use actix_web::*; 8 | use hot_blog::app::*; 9 | use leptos::*; 10 | use leptos_actix::{generate_route_list, LeptosRoutes}; 11 | use sqlx::{migrate, sqlite::SqlitePoolOptions}; 12 | 13 | let conf = get_configuration(None).await.expect("couldn't load configuration!"); 14 | let addr = conf.leptos_options.site_addr; 15 | // Generate the list of routes in your Leptos App 16 | let routes = generate_route_list(App); 17 | println!("listening on http://{}", &addr); 18 | 19 | env_logger::init(); 20 | 21 | let db_pool = SqlitePoolOptions::new() 22 | .connect("sqlite:post.db") 23 | .await 24 | .map_err(|e| io::Error::new(io::ErrorKind::Other, e))?; 25 | 26 | migrate!("./migrations") 27 | .run(&db_pool) 28 | .await 29 | .expect(format!("could not run sqlx migration {}", whoami::username()).as_str()); 30 | 31 | HttpServer::new(move || { 32 | let leptos_options = &conf.leptos_options; 33 | let site_root = &leptos_options.site_root; 34 | 35 | App::new() 36 | .app_data(web::Data::new(db_pool.clone())) 37 | .route("/api/{tail:.*}", leptos_actix::handle_server_fns()) 38 | // serve JS/WASM/CSS from `pkg` 39 | .service(Files::new("/pkg", format!("{site_root}/pkg"))) 40 | // serve other assets from the `assets` directory 41 | .service(Files::new("/assets", site_root)) 42 | // serve the favicon from /favicon.ico 43 | .service(favicon) 44 | .leptos_routes(leptos_options.to_owned(), routes.to_owned(), App) 45 | .app_data(web::Data::new(leptos_options.to_owned())) 46 | //.wrap(middleware::Compress::default()) 47 | }) 48 | .bind(&addr)? 49 | .run() 50 | .await 51 | } 52 | 53 | #[cfg(feature = "ssr")] 54 | #[actix_web::get("favicon.ico")] 55 | async fn favicon( 56 | leptos_options: actix_web::web::Data<leptos::LeptosOptions>, 57 | ) -> actix_web::Result<actix_files::NamedFile> { 58 | let leptos_options = leptos_options.into_inner(); 59 | let site_root = &leptos_options.site_root; 60 | Ok(actix_files::NamedFile::open(format!( 61 | "{site_root}/favicon.ico" 62 | ))?) 63 | } 64 | 65 | #[cfg(not(any(feature = "ssr", feature = "csr")))] 66 | pub fn main() { 67 | // no client-side main function 68 | // unless we want this to work with e.g., Trunk for pure client-side testing 69 | // see lib.rs for hydration function instead 70 | // see optional feature `csr` instead 71 | } 72 | 73 | #[cfg(all(not(feature = "ssr"), feature = "csr"))] 74 | pub fn main() { 75 | // a client-side main function is required for using `trunk serve` 76 | // prefer using `cargo leptos serve` instead 77 | // to run: `trunk serve --open --features csr` 78 | use hot_blog::app::*; 79 | use leptos::*; 80 | use wasm_bindgen::prelude::wasm_bindgen; 81 | 82 | console_error_panic_hook::set_once(); 83 | 84 | leptos::mount_to_body(move |cx| { 85 | // note: for testing it may be preferrable to replace this with a 86 | // more specific component, although leptos_router should still work 87 | view! {cx, <App/> } 88 | }); 89 | } 90 | -------------------------------------------------------------------------------- /src/repository/blog_repository.rs: -------------------------------------------------------------------------------- 1 | use crate::model::blog_post::Post; 2 | use std::{sync::Arc, thread::sleep, time::Duration}; 3 | 4 | #[cfg(feature = "ssr")] 5 | use actix_web::web::Data; 6 | #[cfg(feature = "ssr")] 7 | use sqlx::{Pool, Sqlite}; 8 | 9 | use leptos::{logging::log, *}; 10 | #[cfg(feature = "ssr")] 11 | use leptos_actix::extract; 12 | #[cfg(feature = "ssr")] 13 | use uuid::Uuid; 14 | 15 | pub struct DBError {} 16 | 17 | #[server(UpsertPost, "/api")] 18 | pub async fn upsert_post( 19 | id: Option<String>, 20 | dt: String, 21 | image_url: String, 22 | title: String, 23 | text: String, 24 | ) -> Result<String, ServerFnError> { 25 | let pool: Arc<Pool<Sqlite>> = 26 | extract(|conn: Data<Pool<Sqlite>>| async move { conn.into_inner() }).await?; 27 | 28 | let id = id.unwrap_or(Uuid::new_v4().to_string()); 29 | sqlx::query("INSERT INTO post VALUES ($1, $2, $3, $4, $5) ON CONFLICT (id) DO UPDATE SET dt=excluded.dt, image_url=excluded.image_url, title=excluded.title, text=excluded.text") 30 | .bind(&id) 31 | .bind(&dt) 32 | .bind(&image_url) 33 | .bind(&title) 34 | .bind(&text) 35 | .execute(&*pool) 36 | .await?; 37 | 38 | Ok(id) 39 | } 40 | 41 | #[server(GetPost, "/api")] 42 | pub async fn get_post(id: String) -> Result<Post, ServerFnError> { 43 | log!("get_post {:?}", &id); 44 | let pool: Arc<Pool<Sqlite>> = 45 | extract(|conn: Data<Pool<Sqlite>>| async move { conn.into_inner() }).await?; 46 | let res: Post = sqlx::query_as("SELECT * FROM post WHERE id = ?") 47 | .bind(id) 48 | .fetch_one(&*pool) 49 | .await 50 | .map_err(|_| ServerFnError::ServerError("error getting post".to_owned()))?; 51 | 52 | Ok(res) 53 | } 54 | 55 | #[server(DeletePost, "/api")] 56 | pub async fn delete_post(id: String) -> Result<(), ServerFnError> { 57 | log!("delete_post {:?}", &id); 58 | let pool: Arc<Pool<Sqlite>> = 59 | extract(|conn: Data<Pool<Sqlite>>| async move { conn.into_inner() }).await?; 60 | 61 | sqlx::query("DELETE FROM post WHERE ID = ?") 62 | .bind(id) 63 | .execute(&*pool) 64 | .await 65 | .map_err(|_| ServerFnError::ServerError("error deleting post".to_owned()))?; 66 | 67 | Ok(()) 68 | } 69 | 70 | #[server(GetPreviews, "/api")] 71 | pub async fn get_previews( 72 | oldest: Option<String>, 73 | newest: Option<String>, 74 | preview_length: u8, 75 | page_size: u8, 76 | ) -> Result<Vec<Post>, ServerFnError> { 77 | log!( 78 | "get_previews {:?}, {:?}, {}, {}", 79 | oldest, 80 | newest, 81 | preview_length, 82 | page_size 83 | ); 84 | let pool: Arc<Pool<Sqlite>> = 85 | extract(|conn: Data<Pool<Sqlite>>| async move { conn.into_inner() }).await?; 86 | let res: Vec<Post> = sqlx::query_as( 87 | "SELECT 88 | id, dt, image_url, title, 89 | CASE 90 | WHEN LENGTH(text) > $1 THEN SUBSTR(text, 0, $1) || '...' 91 | ELSE text 92 | END AS text 93 | FROM post 94 | ORDER BY dt DESC 95 | LIMIT $2", 96 | ) 97 | .bind(preview_length) 98 | .bind(page_size) 99 | .fetch_all(&*pool) 100 | .await?; 101 | 102 | // Err(ServerFnError::ServerError("forced error".to_string())) 103 | Ok(res) 104 | } 105 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "hot-blog" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [lib] 7 | crate-type = ["cdylib", "rlib"] 8 | 9 | [dependencies] 10 | actix-files = { version = "0.6", optional = true } 11 | actix-web = { version = "4", optional = true, features = ["macros"] } 12 | console_error_panic_hook = "0.1" 13 | cfg-if = "1" 14 | http = { version = "0.2", optional = true } 15 | leptos = { version = "0.5" } 16 | leptos_meta = { version = "0.5" } 17 | leptos_actix = { version = "0.5", optional = true } 18 | leptos_router = { version = "0.5" } 19 | wasm-bindgen = "=0.2.87" 20 | chrono = { version = "0.4.31", features = ["serde"] } 21 | sqlx = { version = "0.7", features = [ "runtime-tokio", "sqlite", "chrono" ], optional = true } 22 | serde = { version = "1.0.187", features = ["derive"] } 23 | uuid = {version = "1.5.0", optional = true, features = ["v4"] } 24 | env_logger = "0.10.0" 25 | log = "0.4.20" 26 | whoami = { version = "1.4.1", features = ["default"] } 27 | 28 | [features] 29 | csr = ["leptos/csr", "leptos_meta/csr", "leptos_router/csr"] 30 | hydrate = ["leptos/hydrate", "leptos_meta/hydrate", "leptos_router/hydrate"] 31 | ssr = [ 32 | "dep:actix-files", 33 | "dep:actix-web", 34 | "dep:leptos_actix", 35 | "dep:sqlx", 36 | "dep:uuid", 37 | "leptos/ssr", 38 | "leptos_meta/ssr", 39 | "leptos_router/ssr", 40 | ] 41 | 42 | # Defines a size-optimized profile for the WASM bundle in release mode 43 | [profile.wasm-release] 44 | inherits = "release" 45 | opt-level = 'z' 46 | lto = true 47 | codegen-units = 1 48 | panic = "abort" 49 | 50 | [package.metadata.leptos] 51 | # The name used by wasm-bindgen/cargo-leptos for the JS/WASM bundle. Defaults to the crate name 52 | output-name = "leptos_start" 53 | # The site root folder is where cargo-leptos generate all output. WARNING: all content of this folder will be erased on a rebuild. Use it in your server setup. 54 | site-root = "target/site" 55 | # The site-root relative folder where all compiled output (JS, WASM and CSS) is written 56 | # Defaults to pkg 57 | site-pkg-dir = "pkg" 58 | # [Optional] The source CSS file. If it ends with .sass or .scss then it will be compiled by dart-sass into CSS. The CSS is optimized by Lightning CSS before being written to <site-root>/<site-pkg>/app.css 59 | # style-file = "style/output.css" 60 | tailwind-input-file = "input.css" 61 | tailwind-config-file = "tailwind.config.js" 62 | # Assets source dir. All files found here will be copied and synchronized to site-root. 63 | # The assets-dir cannot have a sub directory with the same name/path as site-pkg-dir. 64 | # 65 | # Optional. Env: LEPTOS_ASSETS_DIR. 66 | assets-dir = "assets" 67 | # The IP and port (ex: 127.0.0.1:3000) where the server serves the content. Use it in your server setup. 68 | site-addr = "127.0.0.1:3000" 69 | # The port to use for automatic reload monitoring 70 | reload-port = 3001 71 | # [Optional] Command to use when running end2end tests. It will run in the end2end dir. 72 | # [Windows] for non-WSL use "npx.cmd playwright test" 73 | # This binary name can be checked in Powershell with Get-Command npx 74 | end2end-cmd = "npx playwright test" 75 | end2end-dir = "end2end" 76 | # The browserlist query used for optimizing the CSS. 77 | browserquery = "defaults" 78 | # Set by cargo-leptos watch when building with that tool. Controls whether autoreload JS will be included in the head 79 | watch = false 80 | # The environment Leptos will run in, usually either "DEV" or "PROD" 81 | env = "DEV" 82 | # The features to use when compiling the bin target 83 | # 84 | # Optional. Can be over-ridden with the command line parameter --bin-features 85 | bin-features = ["ssr"] 86 | 87 | # If the --no-default-features flag should be used when compiling the bin target 88 | # 89 | # Optional. Defaults to false. 90 | bin-default-features = false 91 | 92 | # The features to use when compiling the lib target 93 | # 94 | # Optional. Can be over-ridden with the command line parameter --lib-features 95 | lib-features = ["hydrate"] 96 | 97 | # If the --no-default-features flag should be used when compiling the lib target 98 | # 99 | # Optional. Defaults to false. 100 | lib-default-features = false 101 | 102 | # The profile to use for the lib target when compiling for release 103 | # 104 | # Optional. Defaults to "release". 105 | lib-profile-release = "wasm-release" 106 | -------------------------------------------------------------------------------- /src/component/edit_post.rs: -------------------------------------------------------------------------------- 1 | use super::blog_post::BlogPost; 2 | use super::errors_fallback::error_fallback; 3 | use super::toast::ToastMessage; 4 | use super::toast::ToastType; 5 | use chrono::Duration; 6 | use chrono::DurationRound; 7 | use chrono::Local; 8 | use chrono::NaiveDateTime; 9 | use leptos::logging::log; 10 | use leptos::*; 11 | use leptos_router::*; 12 | 13 | use crate::model::blog_post::Post; 14 | use crate::repository::blog_repository::get_post; 15 | use crate::repository::blog_repository::DeletePost; 16 | use crate::repository::blog_repository::UpsertPost; 17 | use serde::{Deserialize, Serialize}; 18 | 19 | #[derive(Params, Eq, PartialEq, Debug, Clone, Serialize, Deserialize)] 20 | struct EditPostParams { 21 | post_id: Option<String>, 22 | } 23 | 24 | fn format_dt(datetime: NaiveDateTime) -> String { 25 | datetime.format("%Y-%m-%dT%H:%M").to_string() 26 | } 27 | 28 | #[component] 29 | pub fn EditPost() -> impl IntoView { 30 | let params: Memo<Result<_, _>> = use_params::<EditPostParams>(); 31 | let post_resource: Resource<_, Result<Post, ServerFnError>> = create_resource( 32 | move || params.get(), 33 | |params| async move { 34 | match params { 35 | Ok(EditPostParams { post_id: Some(s) }) => get_post(s).await, 36 | Ok(EditPostParams { post_id: None }) => Ok(Post::new_empty()), // if no id is in the URL path parameter, assume we are making a new post 37 | _ => Err(ServerFnError::Args("issue getting params".to_string())), 38 | } 39 | }, 40 | ); 41 | 42 | let upsert_post = create_server_action::<UpsertPost>(); 43 | let delete_post = create_server_action::<DeletePost>(); 44 | 45 | let set_toast: WriteSignal<ToastMessage> = expect_context(); 46 | // take them to the new or updated post once they create or edit it 47 | create_effect(move |_| { 48 | let id = upsert_post.value().get(); 49 | if let Some(Ok(id)) = id { 50 | set_toast.set(ToastMessage { 51 | message: String::from("Post submitted."), 52 | toast_type: ToastType::Success, 53 | visible: true, 54 | }); 55 | let navigate = use_navigate(); 56 | navigate(format!("/view/{}", id).as_str(), Default::default()); 57 | } 58 | }); 59 | 60 | // take them to the home page if they delete a post 61 | create_effect(move |_| { 62 | let id = delete_post.value().get(); 63 | if let Some(Ok(_)) = id { 64 | log!("set toast set"); 65 | set_toast.set(ToastMessage { 66 | message: String::from("Post deleted."), 67 | toast_type: ToastType::Success, 68 | visible: true, 69 | }); 70 | 71 | let navigate = use_navigate(); 72 | navigate("/", Default::default()); 73 | } 74 | }); 75 | 76 | view! { 77 | <Transition fallback=move || view! { <p>"Loading..."</p> }> 78 | <ErrorBoundary fallback={error_fallback()}> 79 | <div class="flex h-screen"> 80 | <div class="min-w-[50%] max-h-[90%] text-gray-200 dark:bg-gray-800 bg-gray-100 p-10 rounded-md"> 81 | <ActionForm action=upsert_post> 82 | <input type="hidden" name="id" prop:value={move || post_resource.get().and_then(|res| res.map(|post| post.id).ok())}/> 83 | <label class="block mb-4"> 84 | <span>Date</span> 85 | <input class="mt-1 p-2 w-full" type="datetime-local" id="datetime" name="dt" 86 | on:input=move |ev| { 87 | let dt: String = event_target_value(&ev); 88 | let chrono_dt = NaiveDateTime::parse_from_str(&dt, "%Y-%m-%dT%H:%M"); 89 | let utc_dt = match chrono_dt { 90 | Ok(dt) => dt, 91 | _ => Local::now().naive_local() 92 | }; 93 | post_resource.update(|curr| { 94 | if let Some(Ok(post)) = curr { 95 | post.dt = utc_dt; 96 | } 97 | }); 98 | } 99 | prop:value={move || { 100 | post_resource 101 | .get() 102 | .and_then(|res| res.map(|post| format_dt(post.dt)).ok()) 103 | }} 104 | /> 105 | </label> 106 | <label class="block mb-4"> 107 | <span>Image URL</span> 108 | <input class="mt-1 p-2 w-full" type="text" id="image_url" name="image_url" 109 | on:input=move |ev| { 110 | post_resource.update(|curr| { 111 | if let Some(Ok(post)) = curr { 112 | post.image_url = event_target_value(&ev); 113 | } 114 | }); 115 | } 116 | prop:value={move || post_resource.get().and_then(|res| res.map(|post| post.image_url).ok())}/> 117 | </label> 118 | <label class="block mb-4"> 119 | <span>Title</span> 120 | <input class="mt-1 p-2 w-full" type="text" id="title" name="title" 121 | on:input=move |ev| { 122 | post_resource.update(|curr| { 123 | if let Some(Ok(post)) = curr { 124 | post.title = event_target_value(&ev); 125 | } 126 | }); 127 | } 128 | prop:value={move || post_resource.get().and_then(|res| res.map(|post| post.title).ok())}/> 129 | </label> 130 | <label class="block mb-4"> 131 | <span>Entry</span> 132 | <textarea class="mt-1 p-2 w-full" id="text" name="text" 133 | on:input=move |ev| { 134 | post_resource.update(|curr| { 135 | if let Some(Ok(post)) = curr { 136 | post.text = event_target_value(&ev); 137 | } 138 | }); 139 | } 140 | prop:value={move || post_resource.get().and_then(|res| res.map(|post| post.text).ok())} 141 | /> 142 | </label> 143 | <div class="flex justify-center pb-4"> 144 | <input type="submit" value="Submit" class="mx-auto w-1/3 bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded cursor-pointer"/> 145 | </div> 146 | </ActionForm> 147 | <ActionForm action=delete_post> 148 | <input type="hidden" name="id" 149 | prop:value={move || post_resource.get().and_then(|res| res.map(|post| post.id).ok())}/> 150 | <div class="flex justify-center pb-4"> 151 | <input type="submit" value="Delete Post" class="mx-auto w-1/3 bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded cursor-pointer"/> 152 | </div> 153 | </ActionForm> 154 | </div> 155 | // right side preview 156 | <div> 157 | {move || post_resource.and_then( |post| view! {<BlogPost post=post.clone()/>})} 158 | </div> 159 | </div> 160 | </ErrorBoundary> 161 | </Transition> 162 | } 163 | } 164 | -------------------------------------------------------------------------------- /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.1" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "617a8268e3537fe1d8c9ead925fca49ef6400927ee7bc26750e90ecee14ce4b8" 10 | dependencies = [ 11 | "bitflags 1.3.2", 12 | "bytes", 13 | "futures-core", 14 | "futures-sink", 15 | "memchr", 16 | "pin-project-lite", 17 | "tokio", 18 | "tokio-util", 19 | "tracing", 20 | ] 21 | 22 | [[package]] 23 | name = "actix-files" 24 | version = "0.6.2" 25 | source = "registry+https://github.com/rust-lang/crates.io-index" 26 | checksum = "d832782fac6ca7369a70c9ee9a20554623c5e51c76e190ad151780ebea1cf689" 27 | dependencies = [ 28 | "actix-http", 29 | "actix-service", 30 | "actix-utils", 31 | "actix-web", 32 | "askama_escape", 33 | "bitflags 1.3.2", 34 | "bytes", 35 | "derive_more", 36 | "futures-core", 37 | "http-range", 38 | "log", 39 | "mime", 40 | "mime_guess", 41 | "percent-encoding", 42 | "pin-project-lite", 43 | ] 44 | 45 | [[package]] 46 | name = "actix-http" 47 | version = "3.4.0" 48 | source = "registry+https://github.com/rust-lang/crates.io-index" 49 | checksum = "a92ef85799cba03f76e4f7c10f533e66d87c9a7e7055f3391f09000ad8351bc9" 50 | dependencies = [ 51 | "actix-codec", 52 | "actix-rt", 53 | "actix-service", 54 | "actix-utils", 55 | "ahash", 56 | "base64", 57 | "bitflags 2.4.1", 58 | "brotli", 59 | "bytes", 60 | "bytestring", 61 | "derive_more", 62 | "encoding_rs", 63 | "flate2", 64 | "futures-core", 65 | "h2", 66 | "http", 67 | "httparse", 68 | "httpdate", 69 | "itoa", 70 | "language-tags", 71 | "local-channel", 72 | "mime", 73 | "percent-encoding", 74 | "pin-project-lite", 75 | "rand", 76 | "sha1", 77 | "smallvec", 78 | "tokio", 79 | "tokio-util", 80 | "tracing", 81 | "zstd", 82 | ] 83 | 84 | [[package]] 85 | name = "actix-macros" 86 | version = "0.2.4" 87 | source = "registry+https://github.com/rust-lang/crates.io-index" 88 | checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" 89 | dependencies = [ 90 | "quote", 91 | "syn 2.0.40", 92 | ] 93 | 94 | [[package]] 95 | name = "actix-router" 96 | version = "0.5.1" 97 | source = "registry+https://github.com/rust-lang/crates.io-index" 98 | checksum = "d66ff4d247d2b160861fa2866457e85706833527840e4133f8f49aa423a38799" 99 | dependencies = [ 100 | "bytestring", 101 | "http", 102 | "regex", 103 | "serde", 104 | "tracing", 105 | ] 106 | 107 | [[package]] 108 | name = "actix-rt" 109 | version = "2.9.0" 110 | source = "registry+https://github.com/rust-lang/crates.io-index" 111 | checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" 112 | dependencies = [ 113 | "futures-core", 114 | "tokio", 115 | ] 116 | 117 | [[package]] 118 | name = "actix-server" 119 | version = "2.3.0" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | checksum = "3eb13e7eef0423ea6eab0e59f6c72e7cb46d33691ad56a726b3cd07ddec2c2d4" 122 | dependencies = [ 123 | "actix-rt", 124 | "actix-service", 125 | "actix-utils", 126 | "futures-core", 127 | "futures-util", 128 | "mio", 129 | "socket2 0.5.5", 130 | "tokio", 131 | "tracing", 132 | ] 133 | 134 | [[package]] 135 | name = "actix-service" 136 | version = "2.0.2" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | checksum = "3b894941f818cfdc7ccc4b9e60fa7e53b5042a2e8567270f9147d5591893373a" 139 | dependencies = [ 140 | "futures-core", 141 | "paste", 142 | "pin-project-lite", 143 | ] 144 | 145 | [[package]] 146 | name = "actix-utils" 147 | version = "3.0.1" 148 | source = "registry+https://github.com/rust-lang/crates.io-index" 149 | checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" 150 | dependencies = [ 151 | "local-waker", 152 | "pin-project-lite", 153 | ] 154 | 155 | [[package]] 156 | name = "actix-web" 157 | version = "4.4.0" 158 | source = "registry+https://github.com/rust-lang/crates.io-index" 159 | checksum = "0e4a5b5e29603ca8c94a77c65cf874718ceb60292c5a5c3e5f4ace041af462b9" 160 | dependencies = [ 161 | "actix-codec", 162 | "actix-http", 163 | "actix-macros", 164 | "actix-router", 165 | "actix-rt", 166 | "actix-server", 167 | "actix-service", 168 | "actix-utils", 169 | "actix-web-codegen", 170 | "ahash", 171 | "bytes", 172 | "bytestring", 173 | "cfg-if", 174 | "cookie", 175 | "derive_more", 176 | "encoding_rs", 177 | "futures-core", 178 | "futures-util", 179 | "itoa", 180 | "language-tags", 181 | "log", 182 | "mime", 183 | "once_cell", 184 | "pin-project-lite", 185 | "regex", 186 | "serde", 187 | "serde_json", 188 | "serde_urlencoded", 189 | "smallvec", 190 | "socket2 0.5.5", 191 | "time", 192 | "url", 193 | ] 194 | 195 | [[package]] 196 | name = "actix-web-codegen" 197 | version = "4.2.2" 198 | source = "registry+https://github.com/rust-lang/crates.io-index" 199 | checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5" 200 | dependencies = [ 201 | "actix-router", 202 | "proc-macro2", 203 | "quote", 204 | "syn 2.0.40", 205 | ] 206 | 207 | [[package]] 208 | name = "addr2line" 209 | version = "0.21.0" 210 | source = "registry+https://github.com/rust-lang/crates.io-index" 211 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 212 | dependencies = [ 213 | "gimli", 214 | ] 215 | 216 | [[package]] 217 | name = "adler" 218 | version = "1.0.2" 219 | source = "registry+https://github.com/rust-lang/crates.io-index" 220 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 221 | 222 | [[package]] 223 | name = "ahash" 224 | version = "0.8.6" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" 227 | dependencies = [ 228 | "cfg-if", 229 | "getrandom", 230 | "once_cell", 231 | "version_check", 232 | "zerocopy", 233 | ] 234 | 235 | [[package]] 236 | name = "aho-corasick" 237 | version = "1.1.2" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" 240 | dependencies = [ 241 | "memchr", 242 | ] 243 | 244 | [[package]] 245 | name = "alloc-no-stdlib" 246 | version = "2.0.4" 247 | source = "registry+https://github.com/rust-lang/crates.io-index" 248 | checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" 249 | 250 | [[package]] 251 | name = "alloc-stdlib" 252 | version = "0.2.2" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" 255 | dependencies = [ 256 | "alloc-no-stdlib", 257 | ] 258 | 259 | [[package]] 260 | name = "allocator-api2" 261 | version = "0.2.16" 262 | source = "registry+https://github.com/rust-lang/crates.io-index" 263 | checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" 264 | 265 | [[package]] 266 | name = "android-tzdata" 267 | version = "0.1.1" 268 | source = "registry+https://github.com/rust-lang/crates.io-index" 269 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 270 | 271 | [[package]] 272 | name = "android_system_properties" 273 | version = "0.1.5" 274 | source = "registry+https://github.com/rust-lang/crates.io-index" 275 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 276 | dependencies = [ 277 | "libc", 278 | ] 279 | 280 | [[package]] 281 | name = "anyhow" 282 | version = "1.0.75" 283 | source = "registry+https://github.com/rust-lang/crates.io-index" 284 | checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" 285 | 286 | [[package]] 287 | name = "askama_escape" 288 | version = "0.10.3" 289 | source = "registry+https://github.com/rust-lang/crates.io-index" 290 | checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" 291 | 292 | [[package]] 293 | name = "async-recursion" 294 | version = "1.0.5" 295 | source = "registry+https://github.com/rust-lang/crates.io-index" 296 | checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" 297 | dependencies = [ 298 | "proc-macro2", 299 | "quote", 300 | "syn 2.0.40", 301 | ] 302 | 303 | [[package]] 304 | name = "async-trait" 305 | version = "0.1.74" 306 | source = "registry+https://github.com/rust-lang/crates.io-index" 307 | checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" 308 | dependencies = [ 309 | "proc-macro2", 310 | "quote", 311 | "syn 2.0.40", 312 | ] 313 | 314 | [[package]] 315 | name = "atoi" 316 | version = "2.0.0" 317 | source = "registry+https://github.com/rust-lang/crates.io-index" 318 | checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" 319 | dependencies = [ 320 | "num-traits", 321 | ] 322 | 323 | [[package]] 324 | name = "atomic-write-file" 325 | version = "0.1.2" 326 | source = "registry+https://github.com/rust-lang/crates.io-index" 327 | checksum = "edcdbedc2236483ab103a53415653d6b4442ea6141baf1ffa85df29635e88436" 328 | dependencies = [ 329 | "nix", 330 | "rand", 331 | ] 332 | 333 | [[package]] 334 | name = "attribute-derive" 335 | version = "0.8.1" 336 | source = "registry+https://github.com/rust-lang/crates.io-index" 337 | checksum = "0c94f43ede6f25dab1dea046bff84d85dea61bd49aba7a9011ad66c0d449077b" 338 | dependencies = [ 339 | "attribute-derive-macro", 340 | "proc-macro2", 341 | "quote", 342 | "syn 2.0.40", 343 | ] 344 | 345 | [[package]] 346 | name = "attribute-derive-macro" 347 | version = "0.8.1" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "b409e2b2d2dc206d2c0ad3575a93f001ae21a1593e2d0c69b69c308e63f3b422" 350 | dependencies = [ 351 | "collection_literals", 352 | "interpolator", 353 | "manyhow", 354 | "proc-macro-utils", 355 | "proc-macro2", 356 | "quote", 357 | "quote-use", 358 | "syn 2.0.40", 359 | ] 360 | 361 | [[package]] 362 | name = "autocfg" 363 | version = "1.1.0" 364 | source = "registry+https://github.com/rust-lang/crates.io-index" 365 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 366 | 367 | [[package]] 368 | name = "backtrace" 369 | version = "0.3.69" 370 | source = "registry+https://github.com/rust-lang/crates.io-index" 371 | checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" 372 | dependencies = [ 373 | "addr2line", 374 | "cc", 375 | "cfg-if", 376 | "libc", 377 | "miniz_oxide", 378 | "object", 379 | "rustc-demangle", 380 | ] 381 | 382 | [[package]] 383 | name = "base64" 384 | version = "0.21.5" 385 | source = "registry+https://github.com/rust-lang/crates.io-index" 386 | checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" 387 | 388 | [[package]] 389 | name = "base64ct" 390 | version = "1.6.0" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" 393 | 394 | [[package]] 395 | name = "bitflags" 396 | version = "1.3.2" 397 | source = "registry+https://github.com/rust-lang/crates.io-index" 398 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 399 | 400 | [[package]] 401 | name = "bitflags" 402 | version = "2.4.1" 403 | source = "registry+https://github.com/rust-lang/crates.io-index" 404 | checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" 405 | dependencies = [ 406 | "serde", 407 | ] 408 | 409 | [[package]] 410 | name = "block-buffer" 411 | version = "0.10.4" 412 | source = "registry+https://github.com/rust-lang/crates.io-index" 413 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 414 | dependencies = [ 415 | "generic-array", 416 | ] 417 | 418 | [[package]] 419 | name = "brotli" 420 | version = "3.4.0" 421 | source = "registry+https://github.com/rust-lang/crates.io-index" 422 | checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" 423 | dependencies = [ 424 | "alloc-no-stdlib", 425 | "alloc-stdlib", 426 | "brotli-decompressor", 427 | ] 428 | 429 | [[package]] 430 | name = "brotli-decompressor" 431 | version = "2.5.1" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" 434 | dependencies = [ 435 | "alloc-no-stdlib", 436 | "alloc-stdlib", 437 | ] 438 | 439 | [[package]] 440 | name = "bumpalo" 441 | version = "3.14.0" 442 | source = "registry+https://github.com/rust-lang/crates.io-index" 443 | checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" 444 | 445 | [[package]] 446 | name = "byteorder" 447 | version = "1.5.0" 448 | source = "registry+https://github.com/rust-lang/crates.io-index" 449 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 450 | 451 | [[package]] 452 | name = "bytes" 453 | version = "1.5.0" 454 | source = "registry+https://github.com/rust-lang/crates.io-index" 455 | checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" 456 | 457 | [[package]] 458 | name = "bytestring" 459 | version = "1.3.1" 460 | source = "registry+https://github.com/rust-lang/crates.io-index" 461 | checksum = "74d80203ea6b29df88012294f62733de21cfeab47f17b41af3a38bc30a03ee72" 462 | dependencies = [ 463 | "bytes", 464 | ] 465 | 466 | [[package]] 467 | name = "cached" 468 | version = "0.45.1" 469 | source = "registry+https://github.com/rust-lang/crates.io-index" 470 | checksum = "90eb5776f28a149524d1d8623035760b4454ec881e8cf3838fa8d7e1b11254b3" 471 | dependencies = [ 472 | "cached_proc_macro", 473 | "cached_proc_macro_types", 474 | "hashbrown 0.13.2", 475 | "instant", 476 | "once_cell", 477 | "thiserror", 478 | ] 479 | 480 | [[package]] 481 | name = "cached_proc_macro" 482 | version = "0.18.1" 483 | source = "registry+https://github.com/rust-lang/crates.io-index" 484 | checksum = "c878c71c2821aa2058722038a59a67583a4240524687c6028571c9b395ded61f" 485 | dependencies = [ 486 | "darling", 487 | "proc-macro2", 488 | "quote", 489 | "syn 1.0.109", 490 | ] 491 | 492 | [[package]] 493 | name = "cached_proc_macro_types" 494 | version = "0.1.0" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663" 497 | 498 | [[package]] 499 | name = "camino" 500 | version = "1.1.6" 501 | source = "registry+https://github.com/rust-lang/crates.io-index" 502 | checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" 503 | 504 | [[package]] 505 | name = "cc" 506 | version = "1.0.83" 507 | source = "registry+https://github.com/rust-lang/crates.io-index" 508 | checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 509 | dependencies = [ 510 | "jobserver", 511 | "libc", 512 | ] 513 | 514 | [[package]] 515 | name = "cfg-if" 516 | version = "1.0.0" 517 | source = "registry+https://github.com/rust-lang/crates.io-index" 518 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 519 | 520 | [[package]] 521 | name = "chrono" 522 | version = "0.4.31" 523 | source = "registry+https://github.com/rust-lang/crates.io-index" 524 | checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" 525 | dependencies = [ 526 | "android-tzdata", 527 | "iana-time-zone", 528 | "js-sys", 529 | "num-traits", 530 | "serde", 531 | "wasm-bindgen", 532 | "windows-targets 0.48.5", 533 | ] 534 | 535 | [[package]] 536 | name = "ciborium" 537 | version = "0.2.1" 538 | source = "registry+https://github.com/rust-lang/crates.io-index" 539 | checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" 540 | dependencies = [ 541 | "ciborium-io", 542 | "ciborium-ll", 543 | "serde", 544 | ] 545 | 546 | [[package]] 547 | name = "ciborium-io" 548 | version = "0.2.1" 549 | source = "registry+https://github.com/rust-lang/crates.io-index" 550 | checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" 551 | 552 | [[package]] 553 | name = "ciborium-ll" 554 | version = "0.2.1" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" 557 | dependencies = [ 558 | "ciborium-io", 559 | "half", 560 | ] 561 | 562 | [[package]] 563 | name = "collection_literals" 564 | version = "1.0.1" 565 | source = "registry+https://github.com/rust-lang/crates.io-index" 566 | checksum = "186dce98367766de751c42c4f03970fc60fc012296e706ccbb9d5df9b6c1e271" 567 | 568 | [[package]] 569 | name = "config" 570 | version = "0.13.4" 571 | source = "registry+https://github.com/rust-lang/crates.io-index" 572 | checksum = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca" 573 | dependencies = [ 574 | "async-trait", 575 | "lazy_static", 576 | "nom", 577 | "pathdiff", 578 | "serde", 579 | "toml", 580 | ] 581 | 582 | [[package]] 583 | name = "console_error_panic_hook" 584 | version = "0.1.7" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" 587 | dependencies = [ 588 | "cfg-if", 589 | "wasm-bindgen", 590 | ] 591 | 592 | [[package]] 593 | name = "const-oid" 594 | version = "0.9.5" 595 | source = "registry+https://github.com/rust-lang/crates.io-index" 596 | checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" 597 | 598 | [[package]] 599 | name = "const_format" 600 | version = "0.2.32" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" 603 | dependencies = [ 604 | "const_format_proc_macros", 605 | ] 606 | 607 | [[package]] 608 | name = "const_format_proc_macros" 609 | version = "0.2.32" 610 | source = "registry+https://github.com/rust-lang/crates.io-index" 611 | checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" 612 | dependencies = [ 613 | "proc-macro2", 614 | "quote", 615 | "unicode-xid", 616 | ] 617 | 618 | [[package]] 619 | name = "convert_case" 620 | version = "0.4.0" 621 | source = "registry+https://github.com/rust-lang/crates.io-index" 622 | checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" 623 | 624 | [[package]] 625 | name = "convert_case" 626 | version = "0.6.0" 627 | source = "registry+https://github.com/rust-lang/crates.io-index" 628 | checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" 629 | dependencies = [ 630 | "unicode-segmentation", 631 | ] 632 | 633 | [[package]] 634 | name = "cookie" 635 | version = "0.16.2" 636 | source = "registry+https://github.com/rust-lang/crates.io-index" 637 | checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" 638 | dependencies = [ 639 | "percent-encoding", 640 | "time", 641 | "version_check", 642 | ] 643 | 644 | [[package]] 645 | name = "core-foundation" 646 | version = "0.9.4" 647 | source = "registry+https://github.com/rust-lang/crates.io-index" 648 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 649 | dependencies = [ 650 | "core-foundation-sys", 651 | "libc", 652 | ] 653 | 654 | [[package]] 655 | name = "core-foundation-sys" 656 | version = "0.8.6" 657 | source = "registry+https://github.com/rust-lang/crates.io-index" 658 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 659 | 660 | [[package]] 661 | name = "cpufeatures" 662 | version = "0.2.11" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" 665 | dependencies = [ 666 | "libc", 667 | ] 668 | 669 | [[package]] 670 | name = "crc" 671 | version = "3.0.1" 672 | source = "registry+https://github.com/rust-lang/crates.io-index" 673 | checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" 674 | dependencies = [ 675 | "crc-catalog", 676 | ] 677 | 678 | [[package]] 679 | name = "crc-catalog" 680 | version = "2.4.0" 681 | source = "registry+https://github.com/rust-lang/crates.io-index" 682 | checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" 683 | 684 | [[package]] 685 | name = "crc32fast" 686 | version = "1.3.2" 687 | source = "registry+https://github.com/rust-lang/crates.io-index" 688 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 689 | dependencies = [ 690 | "cfg-if", 691 | ] 692 | 693 | [[package]] 694 | name = "crossbeam-queue" 695 | version = "0.3.8" 696 | source = "registry+https://github.com/rust-lang/crates.io-index" 697 | checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" 698 | dependencies = [ 699 | "cfg-if", 700 | "crossbeam-utils", 701 | ] 702 | 703 | [[package]] 704 | name = "crossbeam-utils" 705 | version = "0.8.16" 706 | source = "registry+https://github.com/rust-lang/crates.io-index" 707 | checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" 708 | dependencies = [ 709 | "cfg-if", 710 | ] 711 | 712 | [[package]] 713 | name = "crypto-common" 714 | version = "0.1.6" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 717 | dependencies = [ 718 | "generic-array", 719 | "typenum", 720 | ] 721 | 722 | [[package]] 723 | name = "darling" 724 | version = "0.14.4" 725 | source = "registry+https://github.com/rust-lang/crates.io-index" 726 | checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" 727 | dependencies = [ 728 | "darling_core", 729 | "darling_macro", 730 | ] 731 | 732 | [[package]] 733 | name = "darling_core" 734 | version = "0.14.4" 735 | source = "registry+https://github.com/rust-lang/crates.io-index" 736 | checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" 737 | dependencies = [ 738 | "fnv", 739 | "ident_case", 740 | "proc-macro2", 741 | "quote", 742 | "strsim", 743 | "syn 1.0.109", 744 | ] 745 | 746 | [[package]] 747 | name = "darling_macro" 748 | version = "0.14.4" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" 751 | dependencies = [ 752 | "darling_core", 753 | "quote", 754 | "syn 1.0.109", 755 | ] 756 | 757 | [[package]] 758 | name = "der" 759 | version = "0.7.8" 760 | source = "registry+https://github.com/rust-lang/crates.io-index" 761 | checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" 762 | dependencies = [ 763 | "const-oid", 764 | "pem-rfc7468", 765 | "zeroize", 766 | ] 767 | 768 | [[package]] 769 | name = "deranged" 770 | version = "0.3.10" 771 | source = "registry+https://github.com/rust-lang/crates.io-index" 772 | checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" 773 | dependencies = [ 774 | "powerfmt", 775 | ] 776 | 777 | [[package]] 778 | name = "derive-where" 779 | version = "1.2.6" 780 | source = "registry+https://github.com/rust-lang/crates.io-index" 781 | checksum = "48d9b1fc2a6d7e19c89e706a3769e31ee862ac7a4c810c7c0ff3910e1a42a4ce" 782 | dependencies = [ 783 | "proc-macro2", 784 | "quote", 785 | "syn 2.0.40", 786 | ] 787 | 788 | [[package]] 789 | name = "derive_more" 790 | version = "0.99.17" 791 | source = "registry+https://github.com/rust-lang/crates.io-index" 792 | checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" 793 | dependencies = [ 794 | "convert_case 0.4.0", 795 | "proc-macro2", 796 | "quote", 797 | "rustc_version", 798 | "syn 1.0.109", 799 | ] 800 | 801 | [[package]] 802 | name = "digest" 803 | version = "0.10.7" 804 | source = "registry+https://github.com/rust-lang/crates.io-index" 805 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 806 | dependencies = [ 807 | "block-buffer", 808 | "const-oid", 809 | "crypto-common", 810 | "subtle", 811 | ] 812 | 813 | [[package]] 814 | name = "dotenvy" 815 | version = "0.15.7" 816 | source = "registry+https://github.com/rust-lang/crates.io-index" 817 | checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" 818 | 819 | [[package]] 820 | name = "drain_filter_polyfill" 821 | version = "0.1.3" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | checksum = "669a445ee724c5c69b1b06fe0b63e70a1c84bc9bb7d9696cd4f4e3ec45050408" 824 | 825 | [[package]] 826 | name = "either" 827 | version = "1.9.0" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" 830 | dependencies = [ 831 | "serde", 832 | ] 833 | 834 | [[package]] 835 | name = "encoding_rs" 836 | version = "0.8.33" 837 | source = "registry+https://github.com/rust-lang/crates.io-index" 838 | checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" 839 | dependencies = [ 840 | "cfg-if", 841 | ] 842 | 843 | [[package]] 844 | name = "env_logger" 845 | version = "0.10.1" 846 | source = "registry+https://github.com/rust-lang/crates.io-index" 847 | checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" 848 | dependencies = [ 849 | "humantime", 850 | "is-terminal", 851 | "log", 852 | "regex", 853 | "termcolor", 854 | ] 855 | 856 | [[package]] 857 | name = "equivalent" 858 | version = "1.0.1" 859 | source = "registry+https://github.com/rust-lang/crates.io-index" 860 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 861 | 862 | [[package]] 863 | name = "errno" 864 | version = "0.3.8" 865 | source = "registry+https://github.com/rust-lang/crates.io-index" 866 | checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" 867 | dependencies = [ 868 | "libc", 869 | "windows-sys 0.52.0", 870 | ] 871 | 872 | [[package]] 873 | name = "etcetera" 874 | version = "0.8.0" 875 | source = "registry+https://github.com/rust-lang/crates.io-index" 876 | checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" 877 | dependencies = [ 878 | "cfg-if", 879 | "home", 880 | "windows-sys 0.48.0", 881 | ] 882 | 883 | [[package]] 884 | name = "event-listener" 885 | version = "2.5.3" 886 | source = "registry+https://github.com/rust-lang/crates.io-index" 887 | checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" 888 | 889 | [[package]] 890 | name = "fastrand" 891 | version = "2.0.1" 892 | source = "registry+https://github.com/rust-lang/crates.io-index" 893 | checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" 894 | 895 | [[package]] 896 | name = "finl_unicode" 897 | version = "1.2.0" 898 | source = "registry+https://github.com/rust-lang/crates.io-index" 899 | checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" 900 | 901 | [[package]] 902 | name = "flate2" 903 | version = "1.0.28" 904 | source = "registry+https://github.com/rust-lang/crates.io-index" 905 | checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" 906 | dependencies = [ 907 | "crc32fast", 908 | "miniz_oxide", 909 | ] 910 | 911 | [[package]] 912 | name = "flume" 913 | version = "0.11.0" 914 | source = "registry+https://github.com/rust-lang/crates.io-index" 915 | checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" 916 | dependencies = [ 917 | "futures-core", 918 | "futures-sink", 919 | "spin 0.9.8", 920 | ] 921 | 922 | [[package]] 923 | name = "fnv" 924 | version = "1.0.7" 925 | source = "registry+https://github.com/rust-lang/crates.io-index" 926 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 927 | 928 | [[package]] 929 | name = "form_urlencoded" 930 | version = "1.2.1" 931 | source = "registry+https://github.com/rust-lang/crates.io-index" 932 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 933 | dependencies = [ 934 | "percent-encoding", 935 | ] 936 | 937 | [[package]] 938 | name = "futures" 939 | version = "0.3.29" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" 942 | dependencies = [ 943 | "futures-channel", 944 | "futures-core", 945 | "futures-executor", 946 | "futures-io", 947 | "futures-sink", 948 | "futures-task", 949 | "futures-util", 950 | ] 951 | 952 | [[package]] 953 | name = "futures-channel" 954 | version = "0.3.29" 955 | source = "registry+https://github.com/rust-lang/crates.io-index" 956 | checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" 957 | dependencies = [ 958 | "futures-core", 959 | "futures-sink", 960 | ] 961 | 962 | [[package]] 963 | name = "futures-core" 964 | version = "0.3.29" 965 | source = "registry+https://github.com/rust-lang/crates.io-index" 966 | checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" 967 | 968 | [[package]] 969 | name = "futures-executor" 970 | version = "0.3.29" 971 | source = "registry+https://github.com/rust-lang/crates.io-index" 972 | checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" 973 | dependencies = [ 974 | "futures-core", 975 | "futures-task", 976 | "futures-util", 977 | ] 978 | 979 | [[package]] 980 | name = "futures-intrusive" 981 | version = "0.5.0" 982 | source = "registry+https://github.com/rust-lang/crates.io-index" 983 | checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" 984 | dependencies = [ 985 | "futures-core", 986 | "lock_api", 987 | "parking_lot", 988 | ] 989 | 990 | [[package]] 991 | name = "futures-io" 992 | version = "0.3.29" 993 | source = "registry+https://github.com/rust-lang/crates.io-index" 994 | checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" 995 | 996 | [[package]] 997 | name = "futures-macro" 998 | version = "0.3.29" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" 1001 | dependencies = [ 1002 | "proc-macro2", 1003 | "quote", 1004 | "syn 2.0.40", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "futures-sink" 1009 | version = "0.3.29" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" 1012 | 1013 | [[package]] 1014 | name = "futures-task" 1015 | version = "0.3.29" 1016 | source = "registry+https://github.com/rust-lang/crates.io-index" 1017 | checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" 1018 | 1019 | [[package]] 1020 | name = "futures-util" 1021 | version = "0.3.29" 1022 | source = "registry+https://github.com/rust-lang/crates.io-index" 1023 | checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" 1024 | dependencies = [ 1025 | "futures-channel", 1026 | "futures-core", 1027 | "futures-io", 1028 | "futures-macro", 1029 | "futures-sink", 1030 | "futures-task", 1031 | "memchr", 1032 | "pin-project-lite", 1033 | "pin-utils", 1034 | "slab", 1035 | ] 1036 | 1037 | [[package]] 1038 | name = "generic-array" 1039 | version = "0.14.7" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1042 | dependencies = [ 1043 | "typenum", 1044 | "version_check", 1045 | ] 1046 | 1047 | [[package]] 1048 | name = "getrandom" 1049 | version = "0.2.11" 1050 | source = "registry+https://github.com/rust-lang/crates.io-index" 1051 | checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" 1052 | dependencies = [ 1053 | "cfg-if", 1054 | "js-sys", 1055 | "libc", 1056 | "wasi", 1057 | "wasm-bindgen", 1058 | ] 1059 | 1060 | [[package]] 1061 | name = "gimli" 1062 | version = "0.28.1" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" 1065 | 1066 | [[package]] 1067 | name = "gloo-net" 1068 | version = "0.2.6" 1069 | source = "registry+https://github.com/rust-lang/crates.io-index" 1070 | checksum = "9902a044653b26b99f7e3693a42f171312d9be8b26b5697bd1e43ad1f8a35e10" 1071 | dependencies = [ 1072 | "futures-channel", 1073 | "futures-core", 1074 | "futures-sink", 1075 | "gloo-utils", 1076 | "js-sys", 1077 | "pin-project", 1078 | "serde", 1079 | "serde_json", 1080 | "thiserror", 1081 | "wasm-bindgen", 1082 | "wasm-bindgen-futures", 1083 | "web-sys", 1084 | ] 1085 | 1086 | [[package]] 1087 | name = "gloo-utils" 1088 | version = "0.1.7" 1089 | source = "registry+https://github.com/rust-lang/crates.io-index" 1090 | checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e" 1091 | dependencies = [ 1092 | "js-sys", 1093 | "serde", 1094 | "serde_json", 1095 | "wasm-bindgen", 1096 | "web-sys", 1097 | ] 1098 | 1099 | [[package]] 1100 | name = "h2" 1101 | version = "0.3.22" 1102 | source = "registry+https://github.com/rust-lang/crates.io-index" 1103 | checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" 1104 | dependencies = [ 1105 | "bytes", 1106 | "fnv", 1107 | "futures-core", 1108 | "futures-sink", 1109 | "futures-util", 1110 | "http", 1111 | "indexmap", 1112 | "slab", 1113 | "tokio", 1114 | "tokio-util", 1115 | "tracing", 1116 | ] 1117 | 1118 | [[package]] 1119 | name = "half" 1120 | version = "1.8.2" 1121 | source = "registry+https://github.com/rust-lang/crates.io-index" 1122 | checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" 1123 | 1124 | [[package]] 1125 | name = "hashbrown" 1126 | version = "0.13.2" 1127 | source = "registry+https://github.com/rust-lang/crates.io-index" 1128 | checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" 1129 | 1130 | [[package]] 1131 | name = "hashbrown" 1132 | version = "0.14.3" 1133 | source = "registry+https://github.com/rust-lang/crates.io-index" 1134 | checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" 1135 | dependencies = [ 1136 | "ahash", 1137 | "allocator-api2", 1138 | ] 1139 | 1140 | [[package]] 1141 | name = "hashlink" 1142 | version = "0.8.4" 1143 | source = "registry+https://github.com/rust-lang/crates.io-index" 1144 | checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" 1145 | dependencies = [ 1146 | "hashbrown 0.14.3", 1147 | ] 1148 | 1149 | [[package]] 1150 | name = "heck" 1151 | version = "0.4.1" 1152 | source = "registry+https://github.com/rust-lang/crates.io-index" 1153 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1154 | dependencies = [ 1155 | "unicode-segmentation", 1156 | ] 1157 | 1158 | [[package]] 1159 | name = "hermit-abi" 1160 | version = "0.3.3" 1161 | source = "registry+https://github.com/rust-lang/crates.io-index" 1162 | checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" 1163 | 1164 | [[package]] 1165 | name = "hex" 1166 | version = "0.4.3" 1167 | source = "registry+https://github.com/rust-lang/crates.io-index" 1168 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1169 | 1170 | [[package]] 1171 | name = "hkdf" 1172 | version = "0.12.3" 1173 | source = "registry+https://github.com/rust-lang/crates.io-index" 1174 | checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" 1175 | dependencies = [ 1176 | "hmac", 1177 | ] 1178 | 1179 | [[package]] 1180 | name = "hmac" 1181 | version = "0.12.1" 1182 | source = "registry+https://github.com/rust-lang/crates.io-index" 1183 | checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" 1184 | dependencies = [ 1185 | "digest", 1186 | ] 1187 | 1188 | [[package]] 1189 | name = "home" 1190 | version = "0.5.5" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" 1193 | dependencies = [ 1194 | "windows-sys 0.48.0", 1195 | ] 1196 | 1197 | [[package]] 1198 | name = "hot-blog" 1199 | version = "0.1.0" 1200 | dependencies = [ 1201 | "actix-files", 1202 | "actix-web", 1203 | "cfg-if", 1204 | "chrono", 1205 | "console_error_panic_hook", 1206 | "env_logger", 1207 | "http", 1208 | "leptos", 1209 | "leptos_actix", 1210 | "leptos_meta", 1211 | "leptos_router", 1212 | "log", 1213 | "serde", 1214 | "sqlx", 1215 | "uuid", 1216 | "wasm-bindgen", 1217 | "whoami", 1218 | ] 1219 | 1220 | [[package]] 1221 | name = "html-escape" 1222 | version = "0.2.13" 1223 | source = "registry+https://github.com/rust-lang/crates.io-index" 1224 | checksum = "6d1ad449764d627e22bfd7cd5e8868264fc9236e07c752972b4080cd351cb476" 1225 | dependencies = [ 1226 | "utf8-width", 1227 | ] 1228 | 1229 | [[package]] 1230 | name = "http" 1231 | version = "0.2.11" 1232 | source = "registry+https://github.com/rust-lang/crates.io-index" 1233 | checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" 1234 | dependencies = [ 1235 | "bytes", 1236 | "fnv", 1237 | "itoa", 1238 | ] 1239 | 1240 | [[package]] 1241 | name = "http-body" 1242 | version = "0.4.6" 1243 | source = "registry+https://github.com/rust-lang/crates.io-index" 1244 | checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 1245 | dependencies = [ 1246 | "bytes", 1247 | "http", 1248 | "pin-project-lite", 1249 | ] 1250 | 1251 | [[package]] 1252 | name = "http-range" 1253 | version = "0.1.5" 1254 | source = "registry+https://github.com/rust-lang/crates.io-index" 1255 | checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" 1256 | 1257 | [[package]] 1258 | name = "httparse" 1259 | version = "1.8.0" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 1262 | 1263 | [[package]] 1264 | name = "httpdate" 1265 | version = "1.0.3" 1266 | source = "registry+https://github.com/rust-lang/crates.io-index" 1267 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 1268 | 1269 | [[package]] 1270 | name = "humantime" 1271 | version = "2.1.0" 1272 | source = "registry+https://github.com/rust-lang/crates.io-index" 1273 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 1274 | 1275 | [[package]] 1276 | name = "hyper" 1277 | version = "0.14.27" 1278 | source = "registry+https://github.com/rust-lang/crates.io-index" 1279 | checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" 1280 | dependencies = [ 1281 | "bytes", 1282 | "futures-channel", 1283 | "futures-core", 1284 | "futures-util", 1285 | "h2", 1286 | "http", 1287 | "http-body", 1288 | "httparse", 1289 | "httpdate", 1290 | "itoa", 1291 | "pin-project-lite", 1292 | "socket2 0.4.10", 1293 | "tokio", 1294 | "tower-service", 1295 | "tracing", 1296 | "want", 1297 | ] 1298 | 1299 | [[package]] 1300 | name = "iana-time-zone" 1301 | version = "0.1.58" 1302 | source = "registry+https://github.com/rust-lang/crates.io-index" 1303 | checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" 1304 | dependencies = [ 1305 | "android_system_properties", 1306 | "core-foundation-sys", 1307 | "iana-time-zone-haiku", 1308 | "js-sys", 1309 | "wasm-bindgen", 1310 | "windows-core", 1311 | ] 1312 | 1313 | [[package]] 1314 | name = "iana-time-zone-haiku" 1315 | version = "0.1.2" 1316 | source = "registry+https://github.com/rust-lang/crates.io-index" 1317 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1318 | dependencies = [ 1319 | "cc", 1320 | ] 1321 | 1322 | [[package]] 1323 | name = "ident_case" 1324 | version = "1.0.1" 1325 | source = "registry+https://github.com/rust-lang/crates.io-index" 1326 | checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" 1327 | 1328 | [[package]] 1329 | name = "idna" 1330 | version = "0.5.0" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 1333 | dependencies = [ 1334 | "unicode-bidi", 1335 | "unicode-normalization", 1336 | ] 1337 | 1338 | [[package]] 1339 | name = "indexmap" 1340 | version = "2.1.0" 1341 | source = "registry+https://github.com/rust-lang/crates.io-index" 1342 | checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" 1343 | dependencies = [ 1344 | "equivalent", 1345 | "hashbrown 0.14.3", 1346 | ] 1347 | 1348 | [[package]] 1349 | name = "instant" 1350 | version = "0.1.12" 1351 | source = "registry+https://github.com/rust-lang/crates.io-index" 1352 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1353 | dependencies = [ 1354 | "cfg-if", 1355 | ] 1356 | 1357 | [[package]] 1358 | name = "interpolator" 1359 | version = "0.5.0" 1360 | source = "registry+https://github.com/rust-lang/crates.io-index" 1361 | checksum = "71dd52191aae121e8611f1e8dc3e324dd0dd1dee1e6dd91d10ee07a3cfb4d9d8" 1362 | 1363 | [[package]] 1364 | name = "inventory" 1365 | version = "0.3.13" 1366 | source = "registry+https://github.com/rust-lang/crates.io-index" 1367 | checksum = "0508c56cfe9bfd5dfeb0c22ab9a6abfda2f27bdca422132e494266351ed8d83c" 1368 | 1369 | [[package]] 1370 | name = "ipnet" 1371 | version = "2.9.0" 1372 | source = "registry+https://github.com/rust-lang/crates.io-index" 1373 | checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 1374 | 1375 | [[package]] 1376 | name = "is-terminal" 1377 | version = "0.4.9" 1378 | source = "registry+https://github.com/rust-lang/crates.io-index" 1379 | checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" 1380 | dependencies = [ 1381 | "hermit-abi", 1382 | "rustix", 1383 | "windows-sys 0.48.0", 1384 | ] 1385 | 1386 | [[package]] 1387 | name = "itertools" 1388 | version = "0.10.5" 1389 | source = "registry+https://github.com/rust-lang/crates.io-index" 1390 | checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" 1391 | dependencies = [ 1392 | "either", 1393 | ] 1394 | 1395 | [[package]] 1396 | name = "itertools" 1397 | version = "0.11.0" 1398 | source = "registry+https://github.com/rust-lang/crates.io-index" 1399 | checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" 1400 | dependencies = [ 1401 | "either", 1402 | ] 1403 | 1404 | [[package]] 1405 | name = "itertools" 1406 | version = "0.12.0" 1407 | source = "registry+https://github.com/rust-lang/crates.io-index" 1408 | checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" 1409 | dependencies = [ 1410 | "either", 1411 | ] 1412 | 1413 | [[package]] 1414 | name = "itoa" 1415 | version = "1.0.10" 1416 | source = "registry+https://github.com/rust-lang/crates.io-index" 1417 | checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" 1418 | 1419 | [[package]] 1420 | name = "jobserver" 1421 | version = "0.1.27" 1422 | source = "registry+https://github.com/rust-lang/crates.io-index" 1423 | checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" 1424 | dependencies = [ 1425 | "libc", 1426 | ] 1427 | 1428 | [[package]] 1429 | name = "js-sys" 1430 | version = "0.3.64" 1431 | source = "registry+https://github.com/rust-lang/crates.io-index" 1432 | checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" 1433 | dependencies = [ 1434 | "wasm-bindgen", 1435 | ] 1436 | 1437 | [[package]] 1438 | name = "language-tags" 1439 | version = "0.3.2" 1440 | source = "registry+https://github.com/rust-lang/crates.io-index" 1441 | checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" 1442 | 1443 | [[package]] 1444 | name = "lazy_static" 1445 | version = "1.4.0" 1446 | source = "registry+https://github.com/rust-lang/crates.io-index" 1447 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1448 | dependencies = [ 1449 | "spin 0.5.2", 1450 | ] 1451 | 1452 | [[package]] 1453 | name = "leptos" 1454 | version = "0.5.4" 1455 | source = "registry+https://github.com/rust-lang/crates.io-index" 1456 | checksum = "9d02b78d6e38acf8199426058a0d8c4030835d84a4ee16147df25be7fed707e0" 1457 | dependencies = [ 1458 | "cfg-if", 1459 | "leptos_config", 1460 | "leptos_dom", 1461 | "leptos_macro", 1462 | "leptos_reactive", 1463 | "leptos_server", 1464 | "server_fn", 1465 | "tracing", 1466 | "typed-builder", 1467 | "typed-builder-macro", 1468 | "wasm-bindgen", 1469 | "web-sys", 1470 | ] 1471 | 1472 | [[package]] 1473 | name = "leptos_actix" 1474 | version = "0.5.4" 1475 | source = "registry+https://github.com/rust-lang/crates.io-index" 1476 | checksum = "67b2b118a031de24b39be9ef2dcfa03e7e255e98d06a8aa2c53f220155424cf1" 1477 | dependencies = [ 1478 | "actix-http", 1479 | "actix-web", 1480 | "futures", 1481 | "leptos", 1482 | "leptos_integration_utils", 1483 | "leptos_meta", 1484 | "leptos_router", 1485 | "parking_lot", 1486 | "regex", 1487 | "serde_json", 1488 | "tokio", 1489 | "tracing", 1490 | ] 1491 | 1492 | [[package]] 1493 | name = "leptos_config" 1494 | version = "0.5.4" 1495 | source = "registry+https://github.com/rust-lang/crates.io-index" 1496 | checksum = "afcaa5db5b22b794b624e14ffe2aefae215b2d21c60a230ae2d06fe21ae5da64" 1497 | dependencies = [ 1498 | "config", 1499 | "regex", 1500 | "serde", 1501 | "thiserror", 1502 | "typed-builder", 1503 | ] 1504 | 1505 | [[package]] 1506 | name = "leptos_dom" 1507 | version = "0.5.4" 1508 | source = "registry+https://github.com/rust-lang/crates.io-index" 1509 | checksum = "af459b63567e8e9c921ecbe7863732dc8dcb7874eaad6826b7d3778a53ec0ea6" 1510 | dependencies = [ 1511 | "async-recursion", 1512 | "cfg-if", 1513 | "drain_filter_polyfill", 1514 | "futures", 1515 | "getrandom", 1516 | "html-escape", 1517 | "indexmap", 1518 | "itertools 0.10.5", 1519 | "js-sys", 1520 | "leptos_reactive", 1521 | "once_cell", 1522 | "pad-adapter", 1523 | "paste", 1524 | "rustc-hash", 1525 | "serde", 1526 | "serde_json", 1527 | "server_fn", 1528 | "smallvec", 1529 | "tracing", 1530 | "wasm-bindgen", 1531 | "wasm-bindgen-futures", 1532 | "web-sys", 1533 | ] 1534 | 1535 | [[package]] 1536 | name = "leptos_hot_reload" 1537 | version = "0.5.4" 1538 | source = "registry+https://github.com/rust-lang/crates.io-index" 1539 | checksum = "4ea60376eb80a24b3ab082612d62211e3ea0fc4dee132f7ff34d5fa5a5108cd2" 1540 | dependencies = [ 1541 | "anyhow", 1542 | "camino", 1543 | "indexmap", 1544 | "parking_lot", 1545 | "proc-macro2", 1546 | "quote", 1547 | "rstml", 1548 | "serde", 1549 | "syn 2.0.40", 1550 | "walkdir", 1551 | ] 1552 | 1553 | [[package]] 1554 | name = "leptos_integration_utils" 1555 | version = "0.5.4" 1556 | source = "registry+https://github.com/rust-lang/crates.io-index" 1557 | checksum = "c2dbbd7d721bcdd9aa7b20987063de41314c836a3ac67e263ca489857e337dec" 1558 | dependencies = [ 1559 | "futures", 1560 | "leptos", 1561 | "leptos_config", 1562 | "leptos_hot_reload", 1563 | "leptos_meta", 1564 | "tracing", 1565 | ] 1566 | 1567 | [[package]] 1568 | name = "leptos_macro" 1569 | version = "0.5.4" 1570 | source = "registry+https://github.com/rust-lang/crates.io-index" 1571 | checksum = "a7e96f4c450f4b5e2ccb135c2b1328890f911ca4ee89da9ed6d582df929e6cb5" 1572 | dependencies = [ 1573 | "attribute-derive", 1574 | "cfg-if", 1575 | "convert_case 0.6.0", 1576 | "html-escape", 1577 | "itertools 0.11.0", 1578 | "leptos_hot_reload", 1579 | "prettyplease", 1580 | "proc-macro-error", 1581 | "proc-macro2", 1582 | "quote", 1583 | "rstml", 1584 | "server_fn_macro", 1585 | "syn 2.0.40", 1586 | "tracing", 1587 | "uuid", 1588 | ] 1589 | 1590 | [[package]] 1591 | name = "leptos_meta" 1592 | version = "0.5.4" 1593 | source = "registry+https://github.com/rust-lang/crates.io-index" 1594 | checksum = "983bbf829598d275b01e96bd9fca71e4739dd7b9fdf69cb8898b30ebfb124332" 1595 | dependencies = [ 1596 | "cfg-if", 1597 | "indexmap", 1598 | "leptos", 1599 | "tracing", 1600 | "wasm-bindgen", 1601 | "web-sys", 1602 | ] 1603 | 1604 | [[package]] 1605 | name = "leptos_reactive" 1606 | version = "0.5.4" 1607 | source = "registry+https://github.com/rust-lang/crates.io-index" 1608 | checksum = "22207568e096ac153ba8da68635e3136c1ec614ea9012736fa861c05bfb2eeff" 1609 | dependencies = [ 1610 | "base64", 1611 | "cfg-if", 1612 | "futures", 1613 | "indexmap", 1614 | "js-sys", 1615 | "paste", 1616 | "pin-project", 1617 | "rustc-hash", 1618 | "self_cell", 1619 | "serde", 1620 | "serde-wasm-bindgen", 1621 | "serde_json", 1622 | "slotmap", 1623 | "thiserror", 1624 | "tokio", 1625 | "tracing", 1626 | "wasm-bindgen", 1627 | "wasm-bindgen-futures", 1628 | "web-sys", 1629 | ] 1630 | 1631 | [[package]] 1632 | name = "leptos_router" 1633 | version = "0.5.4" 1634 | source = "registry+https://github.com/rust-lang/crates.io-index" 1635 | checksum = "c1a2ff8b8e8ae8b17efd8be2a407f7f83ed57c5243f70f2d03e6635f9ff61848" 1636 | dependencies = [ 1637 | "cached", 1638 | "cfg-if", 1639 | "gloo-net", 1640 | "itertools 0.11.0", 1641 | "js-sys", 1642 | "lazy_static", 1643 | "leptos", 1644 | "leptos_integration_utils", 1645 | "leptos_meta", 1646 | "linear-map", 1647 | "lru", 1648 | "once_cell", 1649 | "percent-encoding", 1650 | "regex", 1651 | "serde", 1652 | "serde_json", 1653 | "serde_qs", 1654 | "thiserror", 1655 | "tracing", 1656 | "url", 1657 | "wasm-bindgen", 1658 | "wasm-bindgen-futures", 1659 | "web-sys", 1660 | ] 1661 | 1662 | [[package]] 1663 | name = "leptos_server" 1664 | version = "0.5.4" 1665 | source = "registry+https://github.com/rust-lang/crates.io-index" 1666 | checksum = "272d018a5adf33d10ee57e6f0f83dccc305c68613cd207e8a653aeebd4cd5b4f" 1667 | dependencies = [ 1668 | "inventory", 1669 | "lazy_static", 1670 | "leptos_macro", 1671 | "leptos_reactive", 1672 | "serde", 1673 | "server_fn", 1674 | "thiserror", 1675 | "tracing", 1676 | ] 1677 | 1678 | [[package]] 1679 | name = "libc" 1680 | version = "0.2.151" 1681 | source = "registry+https://github.com/rust-lang/crates.io-index" 1682 | checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" 1683 | 1684 | [[package]] 1685 | name = "libm" 1686 | version = "0.2.8" 1687 | source = "registry+https://github.com/rust-lang/crates.io-index" 1688 | checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" 1689 | 1690 | [[package]] 1691 | name = "libsqlite3-sys" 1692 | version = "0.27.0" 1693 | source = "registry+https://github.com/rust-lang/crates.io-index" 1694 | checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" 1695 | dependencies = [ 1696 | "cc", 1697 | "pkg-config", 1698 | "vcpkg", 1699 | ] 1700 | 1701 | [[package]] 1702 | name = "linear-map" 1703 | version = "1.2.0" 1704 | source = "registry+https://github.com/rust-lang/crates.io-index" 1705 | checksum = "bfae20f6b19ad527b550c223fddc3077a547fc70cda94b9b566575423fd303ee" 1706 | dependencies = [ 1707 | "serde", 1708 | "serde_test", 1709 | ] 1710 | 1711 | [[package]] 1712 | name = "linux-raw-sys" 1713 | version = "0.4.12" 1714 | source = "registry+https://github.com/rust-lang/crates.io-index" 1715 | checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" 1716 | 1717 | [[package]] 1718 | name = "local-channel" 1719 | version = "0.1.5" 1720 | source = "registry+https://github.com/rust-lang/crates.io-index" 1721 | checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" 1722 | dependencies = [ 1723 | "futures-core", 1724 | "futures-sink", 1725 | "local-waker", 1726 | ] 1727 | 1728 | [[package]] 1729 | name = "local-waker" 1730 | version = "0.1.4" 1731 | source = "registry+https://github.com/rust-lang/crates.io-index" 1732 | checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" 1733 | 1734 | [[package]] 1735 | name = "lock_api" 1736 | version = "0.4.11" 1737 | source = "registry+https://github.com/rust-lang/crates.io-index" 1738 | checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" 1739 | dependencies = [ 1740 | "autocfg", 1741 | "scopeguard", 1742 | ] 1743 | 1744 | [[package]] 1745 | name = "log" 1746 | version = "0.4.20" 1747 | source = "registry+https://github.com/rust-lang/crates.io-index" 1748 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 1749 | 1750 | [[package]] 1751 | name = "lru" 1752 | version = "0.11.1" 1753 | source = "registry+https://github.com/rust-lang/crates.io-index" 1754 | checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21" 1755 | dependencies = [ 1756 | "hashbrown 0.14.3", 1757 | ] 1758 | 1759 | [[package]] 1760 | name = "manyhow" 1761 | version = "0.8.1" 1762 | source = "registry+https://github.com/rust-lang/crates.io-index" 1763 | checksum = "516b76546495d933baa165075b95c0a15e8f7ef75e53f56b19b7144d80fd52bd" 1764 | dependencies = [ 1765 | "manyhow-macros", 1766 | "proc-macro2", 1767 | "quote", 1768 | "syn 2.0.40", 1769 | ] 1770 | 1771 | [[package]] 1772 | name = "manyhow-macros" 1773 | version = "0.8.1" 1774 | source = "registry+https://github.com/rust-lang/crates.io-index" 1775 | checksum = "8ba072c0eadade3160232e70893311f1f8903974488096e2eb8e48caba2f0cf1" 1776 | dependencies = [ 1777 | "proc-macro-utils", 1778 | "proc-macro2", 1779 | "quote", 1780 | ] 1781 | 1782 | [[package]] 1783 | name = "md-5" 1784 | version = "0.10.6" 1785 | source = "registry+https://github.com/rust-lang/crates.io-index" 1786 | checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" 1787 | dependencies = [ 1788 | "cfg-if", 1789 | "digest", 1790 | ] 1791 | 1792 | [[package]] 1793 | name = "memchr" 1794 | version = "2.6.4" 1795 | source = "registry+https://github.com/rust-lang/crates.io-index" 1796 | checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" 1797 | 1798 | [[package]] 1799 | name = "mime" 1800 | version = "0.3.17" 1801 | source = "registry+https://github.com/rust-lang/crates.io-index" 1802 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 1803 | 1804 | [[package]] 1805 | name = "mime_guess" 1806 | version = "2.0.4" 1807 | source = "registry+https://github.com/rust-lang/crates.io-index" 1808 | checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" 1809 | dependencies = [ 1810 | "mime", 1811 | "unicase", 1812 | ] 1813 | 1814 | [[package]] 1815 | name = "minimal-lexical" 1816 | version = "0.2.1" 1817 | source = "registry+https://github.com/rust-lang/crates.io-index" 1818 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1819 | 1820 | [[package]] 1821 | name = "miniz_oxide" 1822 | version = "0.7.1" 1823 | source = "registry+https://github.com/rust-lang/crates.io-index" 1824 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 1825 | dependencies = [ 1826 | "adler", 1827 | ] 1828 | 1829 | [[package]] 1830 | name = "mio" 1831 | version = "0.8.10" 1832 | source = "registry+https://github.com/rust-lang/crates.io-index" 1833 | checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" 1834 | dependencies = [ 1835 | "libc", 1836 | "log", 1837 | "wasi", 1838 | "windows-sys 0.48.0", 1839 | ] 1840 | 1841 | [[package]] 1842 | name = "nix" 1843 | version = "0.27.1" 1844 | source = "registry+https://github.com/rust-lang/crates.io-index" 1845 | checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" 1846 | dependencies = [ 1847 | "bitflags 2.4.1", 1848 | "cfg-if", 1849 | "libc", 1850 | ] 1851 | 1852 | [[package]] 1853 | name = "nom" 1854 | version = "7.1.3" 1855 | source = "registry+https://github.com/rust-lang/crates.io-index" 1856 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 1857 | dependencies = [ 1858 | "memchr", 1859 | "minimal-lexical", 1860 | ] 1861 | 1862 | [[package]] 1863 | name = "num-bigint-dig" 1864 | version = "0.8.4" 1865 | source = "registry+https://github.com/rust-lang/crates.io-index" 1866 | checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" 1867 | dependencies = [ 1868 | "byteorder", 1869 | "lazy_static", 1870 | "libm", 1871 | "num-integer", 1872 | "num-iter", 1873 | "num-traits", 1874 | "rand", 1875 | "smallvec", 1876 | "zeroize", 1877 | ] 1878 | 1879 | [[package]] 1880 | name = "num-integer" 1881 | version = "0.1.45" 1882 | source = "registry+https://github.com/rust-lang/crates.io-index" 1883 | checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" 1884 | dependencies = [ 1885 | "autocfg", 1886 | "num-traits", 1887 | ] 1888 | 1889 | [[package]] 1890 | name = "num-iter" 1891 | version = "0.1.43" 1892 | source = "registry+https://github.com/rust-lang/crates.io-index" 1893 | checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" 1894 | dependencies = [ 1895 | "autocfg", 1896 | "num-integer", 1897 | "num-traits", 1898 | ] 1899 | 1900 | [[package]] 1901 | name = "num-traits" 1902 | version = "0.2.17" 1903 | source = "registry+https://github.com/rust-lang/crates.io-index" 1904 | checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" 1905 | dependencies = [ 1906 | "autocfg", 1907 | "libm", 1908 | ] 1909 | 1910 | [[package]] 1911 | name = "object" 1912 | version = "0.32.1" 1913 | source = "registry+https://github.com/rust-lang/crates.io-index" 1914 | checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" 1915 | dependencies = [ 1916 | "memchr", 1917 | ] 1918 | 1919 | [[package]] 1920 | name = "once_cell" 1921 | version = "1.19.0" 1922 | source = "registry+https://github.com/rust-lang/crates.io-index" 1923 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 1924 | 1925 | [[package]] 1926 | name = "pad-adapter" 1927 | version = "0.1.1" 1928 | source = "registry+https://github.com/rust-lang/crates.io-index" 1929 | checksum = "56d80efc4b6721e8be2a10a5df21a30fa0b470f1539e53d8b4e6e75faf938b63" 1930 | 1931 | [[package]] 1932 | name = "parking_lot" 1933 | version = "0.12.1" 1934 | source = "registry+https://github.com/rust-lang/crates.io-index" 1935 | checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 1936 | dependencies = [ 1937 | "lock_api", 1938 | "parking_lot_core", 1939 | ] 1940 | 1941 | [[package]] 1942 | name = "parking_lot_core" 1943 | version = "0.9.9" 1944 | source = "registry+https://github.com/rust-lang/crates.io-index" 1945 | checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" 1946 | dependencies = [ 1947 | "cfg-if", 1948 | "libc", 1949 | "redox_syscall", 1950 | "smallvec", 1951 | "windows-targets 0.48.5", 1952 | ] 1953 | 1954 | [[package]] 1955 | name = "paste" 1956 | version = "1.0.14" 1957 | source = "registry+https://github.com/rust-lang/crates.io-index" 1958 | checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" 1959 | 1960 | [[package]] 1961 | name = "pathdiff" 1962 | version = "0.2.1" 1963 | source = "registry+https://github.com/rust-lang/crates.io-index" 1964 | checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" 1965 | 1966 | [[package]] 1967 | name = "pem-rfc7468" 1968 | version = "0.7.0" 1969 | source = "registry+https://github.com/rust-lang/crates.io-index" 1970 | checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" 1971 | dependencies = [ 1972 | "base64ct", 1973 | ] 1974 | 1975 | [[package]] 1976 | name = "percent-encoding" 1977 | version = "2.3.1" 1978 | source = "registry+https://github.com/rust-lang/crates.io-index" 1979 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 1980 | 1981 | [[package]] 1982 | name = "pin-project" 1983 | version = "1.1.3" 1984 | source = "registry+https://github.com/rust-lang/crates.io-index" 1985 | checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" 1986 | dependencies = [ 1987 | "pin-project-internal", 1988 | ] 1989 | 1990 | [[package]] 1991 | name = "pin-project-internal" 1992 | version = "1.1.3" 1993 | source = "registry+https://github.com/rust-lang/crates.io-index" 1994 | checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" 1995 | dependencies = [ 1996 | "proc-macro2", 1997 | "quote", 1998 | "syn 2.0.40", 1999 | ] 2000 | 2001 | [[package]] 2002 | name = "pin-project-lite" 2003 | version = "0.2.13" 2004 | source = "registry+https://github.com/rust-lang/crates.io-index" 2005 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 2006 | 2007 | [[package]] 2008 | name = "pin-utils" 2009 | version = "0.1.0" 2010 | source = "registry+https://github.com/rust-lang/crates.io-index" 2011 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2012 | 2013 | [[package]] 2014 | name = "pkcs1" 2015 | version = "0.7.5" 2016 | source = "registry+https://github.com/rust-lang/crates.io-index" 2017 | checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" 2018 | dependencies = [ 2019 | "der", 2020 | "pkcs8", 2021 | "spki", 2022 | ] 2023 | 2024 | [[package]] 2025 | name = "pkcs8" 2026 | version = "0.10.2" 2027 | source = "registry+https://github.com/rust-lang/crates.io-index" 2028 | checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" 2029 | dependencies = [ 2030 | "der", 2031 | "spki", 2032 | ] 2033 | 2034 | [[package]] 2035 | name = "pkg-config" 2036 | version = "0.3.27" 2037 | source = "registry+https://github.com/rust-lang/crates.io-index" 2038 | checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" 2039 | 2040 | [[package]] 2041 | name = "powerfmt" 2042 | version = "0.2.0" 2043 | source = "registry+https://github.com/rust-lang/crates.io-index" 2044 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2045 | 2046 | [[package]] 2047 | name = "ppv-lite86" 2048 | version = "0.2.17" 2049 | source = "registry+https://github.com/rust-lang/crates.io-index" 2050 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2051 | 2052 | [[package]] 2053 | name = "prettyplease" 2054 | version = "0.2.15" 2055 | source = "registry+https://github.com/rust-lang/crates.io-index" 2056 | checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" 2057 | dependencies = [ 2058 | "proc-macro2", 2059 | "syn 2.0.40", 2060 | ] 2061 | 2062 | [[package]] 2063 | name = "proc-macro-error" 2064 | version = "1.0.4" 2065 | source = "registry+https://github.com/rust-lang/crates.io-index" 2066 | checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" 2067 | dependencies = [ 2068 | "proc-macro-error-attr", 2069 | "proc-macro2", 2070 | "quote", 2071 | "version_check", 2072 | ] 2073 | 2074 | [[package]] 2075 | name = "proc-macro-error-attr" 2076 | version = "1.0.4" 2077 | source = "registry+https://github.com/rust-lang/crates.io-index" 2078 | checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" 2079 | dependencies = [ 2080 | "proc-macro2", 2081 | "quote", 2082 | "version_check", 2083 | ] 2084 | 2085 | [[package]] 2086 | name = "proc-macro-utils" 2087 | version = "0.8.0" 2088 | source = "registry+https://github.com/rust-lang/crates.io-index" 2089 | checksum = "3f59e109e2f795a5070e69578c4dc101068139f74616778025ae1011d4cd41a8" 2090 | dependencies = [ 2091 | "proc-macro2", 2092 | "quote", 2093 | "smallvec", 2094 | ] 2095 | 2096 | [[package]] 2097 | name = "proc-macro2" 2098 | version = "1.0.70" 2099 | source = "registry+https://github.com/rust-lang/crates.io-index" 2100 | checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" 2101 | dependencies = [ 2102 | "unicode-ident", 2103 | ] 2104 | 2105 | [[package]] 2106 | name = "proc-macro2-diagnostics" 2107 | version = "0.10.1" 2108 | source = "registry+https://github.com/rust-lang/crates.io-index" 2109 | checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" 2110 | dependencies = [ 2111 | "proc-macro2", 2112 | "quote", 2113 | "syn 2.0.40", 2114 | "version_check", 2115 | "yansi", 2116 | ] 2117 | 2118 | [[package]] 2119 | name = "quote" 2120 | version = "1.0.33" 2121 | source = "registry+https://github.com/rust-lang/crates.io-index" 2122 | checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" 2123 | dependencies = [ 2124 | "proc-macro2", 2125 | ] 2126 | 2127 | [[package]] 2128 | name = "quote-use" 2129 | version = "0.7.2" 2130 | source = "registry+https://github.com/rust-lang/crates.io-index" 2131 | checksum = "a7b5abe3fe82fdeeb93f44d66a7b444dedf2e4827defb0a8e69c437b2de2ef94" 2132 | dependencies = [ 2133 | "quote", 2134 | "quote-use-macros", 2135 | "syn 2.0.40", 2136 | ] 2137 | 2138 | [[package]] 2139 | name = "quote-use-macros" 2140 | version = "0.7.2" 2141 | source = "registry+https://github.com/rust-lang/crates.io-index" 2142 | checksum = "97ea44c7e20f16017a76a245bb42188517e13d16dcb1aa18044bc406cdc3f4af" 2143 | dependencies = [ 2144 | "derive-where", 2145 | "proc-macro2", 2146 | "quote", 2147 | "syn 2.0.40", 2148 | ] 2149 | 2150 | [[package]] 2151 | name = "rand" 2152 | version = "0.8.5" 2153 | source = "registry+https://github.com/rust-lang/crates.io-index" 2154 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2155 | dependencies = [ 2156 | "libc", 2157 | "rand_chacha", 2158 | "rand_core", 2159 | ] 2160 | 2161 | [[package]] 2162 | name = "rand_chacha" 2163 | version = "0.3.1" 2164 | source = "registry+https://github.com/rust-lang/crates.io-index" 2165 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2166 | dependencies = [ 2167 | "ppv-lite86", 2168 | "rand_core", 2169 | ] 2170 | 2171 | [[package]] 2172 | name = "rand_core" 2173 | version = "0.6.4" 2174 | source = "registry+https://github.com/rust-lang/crates.io-index" 2175 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2176 | dependencies = [ 2177 | "getrandom", 2178 | ] 2179 | 2180 | [[package]] 2181 | name = "redox_syscall" 2182 | version = "0.4.1" 2183 | source = "registry+https://github.com/rust-lang/crates.io-index" 2184 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 2185 | dependencies = [ 2186 | "bitflags 1.3.2", 2187 | ] 2188 | 2189 | [[package]] 2190 | name = "regex" 2191 | version = "1.10.2" 2192 | source = "registry+https://github.com/rust-lang/crates.io-index" 2193 | checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" 2194 | dependencies = [ 2195 | "aho-corasick", 2196 | "memchr", 2197 | "regex-automata", 2198 | "regex-syntax", 2199 | ] 2200 | 2201 | [[package]] 2202 | name = "regex-automata" 2203 | version = "0.4.3" 2204 | source = "registry+https://github.com/rust-lang/crates.io-index" 2205 | checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" 2206 | dependencies = [ 2207 | "aho-corasick", 2208 | "memchr", 2209 | "regex-syntax", 2210 | ] 2211 | 2212 | [[package]] 2213 | name = "regex-syntax" 2214 | version = "0.8.2" 2215 | source = "registry+https://github.com/rust-lang/crates.io-index" 2216 | checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" 2217 | 2218 | [[package]] 2219 | name = "reqwest" 2220 | version = "0.11.22" 2221 | source = "registry+https://github.com/rust-lang/crates.io-index" 2222 | checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" 2223 | dependencies = [ 2224 | "base64", 2225 | "bytes", 2226 | "encoding_rs", 2227 | "futures-core", 2228 | "futures-util", 2229 | "h2", 2230 | "http", 2231 | "http-body", 2232 | "hyper", 2233 | "ipnet", 2234 | "js-sys", 2235 | "log", 2236 | "mime", 2237 | "once_cell", 2238 | "percent-encoding", 2239 | "pin-project-lite", 2240 | "serde", 2241 | "serde_json", 2242 | "serde_urlencoded", 2243 | "system-configuration", 2244 | "tokio", 2245 | "tower-service", 2246 | "url", 2247 | "wasm-bindgen", 2248 | "wasm-bindgen-futures", 2249 | "web-sys", 2250 | "winreg", 2251 | ] 2252 | 2253 | [[package]] 2254 | name = "rsa" 2255 | version = "0.9.6" 2256 | source = "registry+https://github.com/rust-lang/crates.io-index" 2257 | checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" 2258 | dependencies = [ 2259 | "const-oid", 2260 | "digest", 2261 | "num-bigint-dig", 2262 | "num-integer", 2263 | "num-traits", 2264 | "pkcs1", 2265 | "pkcs8", 2266 | "rand_core", 2267 | "signature", 2268 | "spki", 2269 | "subtle", 2270 | "zeroize", 2271 | ] 2272 | 2273 | [[package]] 2274 | name = "rstml" 2275 | version = "0.11.2" 2276 | source = "registry+https://github.com/rust-lang/crates.io-index" 2277 | checksum = "fe542870b8f59dd45ad11d382e5339c9a1047cde059be136a7016095bbdefa77" 2278 | dependencies = [ 2279 | "proc-macro2", 2280 | "proc-macro2-diagnostics", 2281 | "quote", 2282 | "syn 2.0.40", 2283 | "syn_derive", 2284 | "thiserror", 2285 | ] 2286 | 2287 | [[package]] 2288 | name = "rustc-demangle" 2289 | version = "0.1.23" 2290 | source = "registry+https://github.com/rust-lang/crates.io-index" 2291 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 2292 | 2293 | [[package]] 2294 | name = "rustc-hash" 2295 | version = "1.1.0" 2296 | source = "registry+https://github.com/rust-lang/crates.io-index" 2297 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2298 | 2299 | [[package]] 2300 | name = "rustc_version" 2301 | version = "0.4.0" 2302 | source = "registry+https://github.com/rust-lang/crates.io-index" 2303 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 2304 | dependencies = [ 2305 | "semver", 2306 | ] 2307 | 2308 | [[package]] 2309 | name = "rustix" 2310 | version = "0.38.28" 2311 | source = "registry+https://github.com/rust-lang/crates.io-index" 2312 | checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" 2313 | dependencies = [ 2314 | "bitflags 2.4.1", 2315 | "errno", 2316 | "libc", 2317 | "linux-raw-sys", 2318 | "windows-sys 0.52.0", 2319 | ] 2320 | 2321 | [[package]] 2322 | name = "ryu" 2323 | version = "1.0.16" 2324 | source = "registry+https://github.com/rust-lang/crates.io-index" 2325 | checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" 2326 | 2327 | [[package]] 2328 | name = "same-file" 2329 | version = "1.0.6" 2330 | source = "registry+https://github.com/rust-lang/crates.io-index" 2331 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2332 | dependencies = [ 2333 | "winapi-util", 2334 | ] 2335 | 2336 | [[package]] 2337 | name = "scopeguard" 2338 | version = "1.2.0" 2339 | source = "registry+https://github.com/rust-lang/crates.io-index" 2340 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2341 | 2342 | [[package]] 2343 | name = "self_cell" 2344 | version = "1.0.2" 2345 | source = "registry+https://github.com/rust-lang/crates.io-index" 2346 | checksum = "e388332cd64eb80cd595a00941baf513caffae8dce9cfd0467fc9c66397dade6" 2347 | 2348 | [[package]] 2349 | name = "semver" 2350 | version = "1.0.20" 2351 | source = "registry+https://github.com/rust-lang/crates.io-index" 2352 | checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" 2353 | 2354 | [[package]] 2355 | name = "serde" 2356 | version = "1.0.193" 2357 | source = "registry+https://github.com/rust-lang/crates.io-index" 2358 | checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" 2359 | dependencies = [ 2360 | "serde_derive", 2361 | ] 2362 | 2363 | [[package]] 2364 | name = "serde-wasm-bindgen" 2365 | version = "0.5.0" 2366 | source = "registry+https://github.com/rust-lang/crates.io-index" 2367 | checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" 2368 | dependencies = [ 2369 | "js-sys", 2370 | "serde", 2371 | "wasm-bindgen", 2372 | ] 2373 | 2374 | [[package]] 2375 | name = "serde_derive" 2376 | version = "1.0.193" 2377 | source = "registry+https://github.com/rust-lang/crates.io-index" 2378 | checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" 2379 | dependencies = [ 2380 | "proc-macro2", 2381 | "quote", 2382 | "syn 2.0.40", 2383 | ] 2384 | 2385 | [[package]] 2386 | name = "serde_json" 2387 | version = "1.0.108" 2388 | source = "registry+https://github.com/rust-lang/crates.io-index" 2389 | checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" 2390 | dependencies = [ 2391 | "itoa", 2392 | "ryu", 2393 | "serde", 2394 | ] 2395 | 2396 | [[package]] 2397 | name = "serde_qs" 2398 | version = "0.12.0" 2399 | source = "registry+https://github.com/rust-lang/crates.io-index" 2400 | checksum = "0431a35568651e363364210c91983c1da5eb29404d9f0928b67d4ebcfa7d330c" 2401 | dependencies = [ 2402 | "percent-encoding", 2403 | "serde", 2404 | "thiserror", 2405 | ] 2406 | 2407 | [[package]] 2408 | name = "serde_test" 2409 | version = "1.0.176" 2410 | source = "registry+https://github.com/rust-lang/crates.io-index" 2411 | checksum = "5a2f49ace1498612d14f7e0b8245519584db8299541dfe31a06374a828d620ab" 2412 | dependencies = [ 2413 | "serde", 2414 | ] 2415 | 2416 | [[package]] 2417 | name = "serde_urlencoded" 2418 | version = "0.7.1" 2419 | source = "registry+https://github.com/rust-lang/crates.io-index" 2420 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 2421 | dependencies = [ 2422 | "form_urlencoded", 2423 | "itoa", 2424 | "ryu", 2425 | "serde", 2426 | ] 2427 | 2428 | [[package]] 2429 | name = "server_fn" 2430 | version = "0.5.4" 2431 | source = "registry+https://github.com/rust-lang/crates.io-index" 2432 | checksum = "cfed18dfcc8d9004579c40482c3419c07f60ffb9c5b250542edca99f508b0ce9" 2433 | dependencies = [ 2434 | "ciborium", 2435 | "const_format", 2436 | "gloo-net", 2437 | "inventory", 2438 | "js-sys", 2439 | "lazy_static", 2440 | "once_cell", 2441 | "proc-macro2", 2442 | "quote", 2443 | "reqwest", 2444 | "serde", 2445 | "serde_json", 2446 | "serde_qs", 2447 | "server_fn_macro_default", 2448 | "syn 2.0.40", 2449 | "thiserror", 2450 | "xxhash-rust", 2451 | ] 2452 | 2453 | [[package]] 2454 | name = "server_fn_macro" 2455 | version = "0.5.4" 2456 | source = "registry+https://github.com/rust-lang/crates.io-index" 2457 | checksum = "0b70ae8e22546ba85500391b36c08e3fba64871be8a26557a3663a8e08acb56f" 2458 | dependencies = [ 2459 | "const_format", 2460 | "proc-macro-error", 2461 | "proc-macro2", 2462 | "quote", 2463 | "serde", 2464 | "syn 2.0.40", 2465 | "xxhash-rust", 2466 | ] 2467 | 2468 | [[package]] 2469 | name = "server_fn_macro_default" 2470 | version = "0.5.4" 2471 | source = "registry+https://github.com/rust-lang/crates.io-index" 2472 | checksum = "7256ba61dfadb220598db418376e7bc2a34b96df36c4dc48f24ffe161810fc0b" 2473 | dependencies = [ 2474 | "server_fn_macro", 2475 | "syn 2.0.40", 2476 | ] 2477 | 2478 | [[package]] 2479 | name = "sha1" 2480 | version = "0.10.6" 2481 | source = "registry+https://github.com/rust-lang/crates.io-index" 2482 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 2483 | dependencies = [ 2484 | "cfg-if", 2485 | "cpufeatures", 2486 | "digest", 2487 | ] 2488 | 2489 | [[package]] 2490 | name = "sha2" 2491 | version = "0.10.8" 2492 | source = "registry+https://github.com/rust-lang/crates.io-index" 2493 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 2494 | dependencies = [ 2495 | "cfg-if", 2496 | "cpufeatures", 2497 | "digest", 2498 | ] 2499 | 2500 | [[package]] 2501 | name = "signal-hook-registry" 2502 | version = "1.4.1" 2503 | source = "registry+https://github.com/rust-lang/crates.io-index" 2504 | checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" 2505 | dependencies = [ 2506 | "libc", 2507 | ] 2508 | 2509 | [[package]] 2510 | name = "signature" 2511 | version = "2.2.0" 2512 | source = "registry+https://github.com/rust-lang/crates.io-index" 2513 | checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" 2514 | dependencies = [ 2515 | "digest", 2516 | "rand_core", 2517 | ] 2518 | 2519 | [[package]] 2520 | name = "slab" 2521 | version = "0.4.9" 2522 | source = "registry+https://github.com/rust-lang/crates.io-index" 2523 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 2524 | dependencies = [ 2525 | "autocfg", 2526 | ] 2527 | 2528 | [[package]] 2529 | name = "slotmap" 2530 | version = "1.0.7" 2531 | source = "registry+https://github.com/rust-lang/crates.io-index" 2532 | checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" 2533 | dependencies = [ 2534 | "serde", 2535 | "version_check", 2536 | ] 2537 | 2538 | [[package]] 2539 | name = "smallvec" 2540 | version = "1.11.2" 2541 | source = "registry+https://github.com/rust-lang/crates.io-index" 2542 | checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" 2543 | 2544 | [[package]] 2545 | name = "socket2" 2546 | version = "0.4.10" 2547 | source = "registry+https://github.com/rust-lang/crates.io-index" 2548 | checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" 2549 | dependencies = [ 2550 | "libc", 2551 | "winapi", 2552 | ] 2553 | 2554 | [[package]] 2555 | name = "socket2" 2556 | version = "0.5.5" 2557 | source = "registry+https://github.com/rust-lang/crates.io-index" 2558 | checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" 2559 | dependencies = [ 2560 | "libc", 2561 | "windows-sys 0.48.0", 2562 | ] 2563 | 2564 | [[package]] 2565 | name = "spin" 2566 | version = "0.5.2" 2567 | source = "registry+https://github.com/rust-lang/crates.io-index" 2568 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 2569 | 2570 | [[package]] 2571 | name = "spin" 2572 | version = "0.9.8" 2573 | source = "registry+https://github.com/rust-lang/crates.io-index" 2574 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 2575 | dependencies = [ 2576 | "lock_api", 2577 | ] 2578 | 2579 | [[package]] 2580 | name = "spki" 2581 | version = "0.7.3" 2582 | source = "registry+https://github.com/rust-lang/crates.io-index" 2583 | checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" 2584 | dependencies = [ 2585 | "base64ct", 2586 | "der", 2587 | ] 2588 | 2589 | [[package]] 2590 | name = "sqlformat" 2591 | version = "0.2.3" 2592 | source = "registry+https://github.com/rust-lang/crates.io-index" 2593 | checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" 2594 | dependencies = [ 2595 | "itertools 0.12.0", 2596 | "nom", 2597 | "unicode_categories", 2598 | ] 2599 | 2600 | [[package]] 2601 | name = "sqlx" 2602 | version = "0.7.3" 2603 | source = "registry+https://github.com/rust-lang/crates.io-index" 2604 | checksum = "dba03c279da73694ef99763320dea58b51095dfe87d001b1d4b5fe78ba8763cf" 2605 | dependencies = [ 2606 | "sqlx-core", 2607 | "sqlx-macros", 2608 | "sqlx-mysql", 2609 | "sqlx-postgres", 2610 | "sqlx-sqlite", 2611 | ] 2612 | 2613 | [[package]] 2614 | name = "sqlx-core" 2615 | version = "0.7.3" 2616 | source = "registry+https://github.com/rust-lang/crates.io-index" 2617 | checksum = "d84b0a3c3739e220d94b3239fd69fb1f74bc36e16643423bd99de3b43c21bfbd" 2618 | dependencies = [ 2619 | "ahash", 2620 | "atoi", 2621 | "byteorder", 2622 | "bytes", 2623 | "chrono", 2624 | "crc", 2625 | "crossbeam-queue", 2626 | "dotenvy", 2627 | "either", 2628 | "event-listener", 2629 | "futures-channel", 2630 | "futures-core", 2631 | "futures-intrusive", 2632 | "futures-io", 2633 | "futures-util", 2634 | "hashlink", 2635 | "hex", 2636 | "indexmap", 2637 | "log", 2638 | "memchr", 2639 | "once_cell", 2640 | "paste", 2641 | "percent-encoding", 2642 | "serde", 2643 | "serde_json", 2644 | "sha2", 2645 | "smallvec", 2646 | "sqlformat", 2647 | "thiserror", 2648 | "tokio", 2649 | "tokio-stream", 2650 | "tracing", 2651 | "url", 2652 | ] 2653 | 2654 | [[package]] 2655 | name = "sqlx-macros" 2656 | version = "0.7.3" 2657 | source = "registry+https://github.com/rust-lang/crates.io-index" 2658 | checksum = "89961c00dc4d7dffb7aee214964b065072bff69e36ddb9e2c107541f75e4f2a5" 2659 | dependencies = [ 2660 | "proc-macro2", 2661 | "quote", 2662 | "sqlx-core", 2663 | "sqlx-macros-core", 2664 | "syn 1.0.109", 2665 | ] 2666 | 2667 | [[package]] 2668 | name = "sqlx-macros-core" 2669 | version = "0.7.3" 2670 | source = "registry+https://github.com/rust-lang/crates.io-index" 2671 | checksum = "d0bd4519486723648186a08785143599760f7cc81c52334a55d6a83ea1e20841" 2672 | dependencies = [ 2673 | "atomic-write-file", 2674 | "dotenvy", 2675 | "either", 2676 | "heck", 2677 | "hex", 2678 | "once_cell", 2679 | "proc-macro2", 2680 | "quote", 2681 | "serde", 2682 | "serde_json", 2683 | "sha2", 2684 | "sqlx-core", 2685 | "sqlx-mysql", 2686 | "sqlx-postgres", 2687 | "sqlx-sqlite", 2688 | "syn 1.0.109", 2689 | "tempfile", 2690 | "tokio", 2691 | "url", 2692 | ] 2693 | 2694 | [[package]] 2695 | name = "sqlx-mysql" 2696 | version = "0.7.3" 2697 | source = "registry+https://github.com/rust-lang/crates.io-index" 2698 | checksum = "e37195395df71fd068f6e2082247891bc11e3289624bbc776a0cdfa1ca7f1ea4" 2699 | dependencies = [ 2700 | "atoi", 2701 | "base64", 2702 | "bitflags 2.4.1", 2703 | "byteorder", 2704 | "bytes", 2705 | "chrono", 2706 | "crc", 2707 | "digest", 2708 | "dotenvy", 2709 | "either", 2710 | "futures-channel", 2711 | "futures-core", 2712 | "futures-io", 2713 | "futures-util", 2714 | "generic-array", 2715 | "hex", 2716 | "hkdf", 2717 | "hmac", 2718 | "itoa", 2719 | "log", 2720 | "md-5", 2721 | "memchr", 2722 | "once_cell", 2723 | "percent-encoding", 2724 | "rand", 2725 | "rsa", 2726 | "serde", 2727 | "sha1", 2728 | "sha2", 2729 | "smallvec", 2730 | "sqlx-core", 2731 | "stringprep", 2732 | "thiserror", 2733 | "tracing", 2734 | "whoami", 2735 | ] 2736 | 2737 | [[package]] 2738 | name = "sqlx-postgres" 2739 | version = "0.7.3" 2740 | source = "registry+https://github.com/rust-lang/crates.io-index" 2741 | checksum = "d6ac0ac3b7ccd10cc96c7ab29791a7dd236bd94021f31eec7ba3d46a74aa1c24" 2742 | dependencies = [ 2743 | "atoi", 2744 | "base64", 2745 | "bitflags 2.4.1", 2746 | "byteorder", 2747 | "chrono", 2748 | "crc", 2749 | "dotenvy", 2750 | "etcetera", 2751 | "futures-channel", 2752 | "futures-core", 2753 | "futures-io", 2754 | "futures-util", 2755 | "hex", 2756 | "hkdf", 2757 | "hmac", 2758 | "home", 2759 | "itoa", 2760 | "log", 2761 | "md-5", 2762 | "memchr", 2763 | "once_cell", 2764 | "rand", 2765 | "serde", 2766 | "serde_json", 2767 | "sha1", 2768 | "sha2", 2769 | "smallvec", 2770 | "sqlx-core", 2771 | "stringprep", 2772 | "thiserror", 2773 | "tracing", 2774 | "whoami", 2775 | ] 2776 | 2777 | [[package]] 2778 | name = "sqlx-sqlite" 2779 | version = "0.7.3" 2780 | source = "registry+https://github.com/rust-lang/crates.io-index" 2781 | checksum = "210976b7d948c7ba9fced8ca835b11cbb2d677c59c79de41ac0d397e14547490" 2782 | dependencies = [ 2783 | "atoi", 2784 | "chrono", 2785 | "flume", 2786 | "futures-channel", 2787 | "futures-core", 2788 | "futures-executor", 2789 | "futures-intrusive", 2790 | "futures-util", 2791 | "libsqlite3-sys", 2792 | "log", 2793 | "percent-encoding", 2794 | "serde", 2795 | "sqlx-core", 2796 | "tracing", 2797 | "url", 2798 | "urlencoding", 2799 | ] 2800 | 2801 | [[package]] 2802 | name = "stringprep" 2803 | version = "0.1.4" 2804 | source = "registry+https://github.com/rust-lang/crates.io-index" 2805 | checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" 2806 | dependencies = [ 2807 | "finl_unicode", 2808 | "unicode-bidi", 2809 | "unicode-normalization", 2810 | ] 2811 | 2812 | [[package]] 2813 | name = "strsim" 2814 | version = "0.10.0" 2815 | source = "registry+https://github.com/rust-lang/crates.io-index" 2816 | checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" 2817 | 2818 | [[package]] 2819 | name = "subtle" 2820 | version = "2.5.0" 2821 | source = "registry+https://github.com/rust-lang/crates.io-index" 2822 | checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" 2823 | 2824 | [[package]] 2825 | name = "syn" 2826 | version = "1.0.109" 2827 | source = "registry+https://github.com/rust-lang/crates.io-index" 2828 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 2829 | dependencies = [ 2830 | "proc-macro2", 2831 | "quote", 2832 | "unicode-ident", 2833 | ] 2834 | 2835 | [[package]] 2836 | name = "syn" 2837 | version = "2.0.40" 2838 | source = "registry+https://github.com/rust-lang/crates.io-index" 2839 | checksum = "13fa70a4ee923979ffb522cacce59d34421ebdea5625e1073c4326ef9d2dd42e" 2840 | dependencies = [ 2841 | "proc-macro2", 2842 | "quote", 2843 | "unicode-ident", 2844 | ] 2845 | 2846 | [[package]] 2847 | name = "syn_derive" 2848 | version = "0.1.8" 2849 | source = "registry+https://github.com/rust-lang/crates.io-index" 2850 | checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" 2851 | dependencies = [ 2852 | "proc-macro-error", 2853 | "proc-macro2", 2854 | "quote", 2855 | "syn 2.0.40", 2856 | ] 2857 | 2858 | [[package]] 2859 | name = "system-configuration" 2860 | version = "0.5.1" 2861 | source = "registry+https://github.com/rust-lang/crates.io-index" 2862 | checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 2863 | dependencies = [ 2864 | "bitflags 1.3.2", 2865 | "core-foundation", 2866 | "system-configuration-sys", 2867 | ] 2868 | 2869 | [[package]] 2870 | name = "system-configuration-sys" 2871 | version = "0.5.0" 2872 | source = "registry+https://github.com/rust-lang/crates.io-index" 2873 | checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 2874 | dependencies = [ 2875 | "core-foundation-sys", 2876 | "libc", 2877 | ] 2878 | 2879 | [[package]] 2880 | name = "tempfile" 2881 | version = "3.8.1" 2882 | source = "registry+https://github.com/rust-lang/crates.io-index" 2883 | checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" 2884 | dependencies = [ 2885 | "cfg-if", 2886 | "fastrand", 2887 | "redox_syscall", 2888 | "rustix", 2889 | "windows-sys 0.48.0", 2890 | ] 2891 | 2892 | [[package]] 2893 | name = "termcolor" 2894 | version = "1.4.0" 2895 | source = "registry+https://github.com/rust-lang/crates.io-index" 2896 | checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" 2897 | dependencies = [ 2898 | "winapi-util", 2899 | ] 2900 | 2901 | [[package]] 2902 | name = "thiserror" 2903 | version = "1.0.50" 2904 | source = "registry+https://github.com/rust-lang/crates.io-index" 2905 | checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" 2906 | dependencies = [ 2907 | "thiserror-impl", 2908 | ] 2909 | 2910 | [[package]] 2911 | name = "thiserror-impl" 2912 | version = "1.0.50" 2913 | source = "registry+https://github.com/rust-lang/crates.io-index" 2914 | checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" 2915 | dependencies = [ 2916 | "proc-macro2", 2917 | "quote", 2918 | "syn 2.0.40", 2919 | ] 2920 | 2921 | [[package]] 2922 | name = "time" 2923 | version = "0.3.30" 2924 | source = "registry+https://github.com/rust-lang/crates.io-index" 2925 | checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" 2926 | dependencies = [ 2927 | "deranged", 2928 | "itoa", 2929 | "powerfmt", 2930 | "serde", 2931 | "time-core", 2932 | "time-macros", 2933 | ] 2934 | 2935 | [[package]] 2936 | name = "time-core" 2937 | version = "0.1.2" 2938 | source = "registry+https://github.com/rust-lang/crates.io-index" 2939 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 2940 | 2941 | [[package]] 2942 | name = "time-macros" 2943 | version = "0.2.15" 2944 | source = "registry+https://github.com/rust-lang/crates.io-index" 2945 | checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" 2946 | dependencies = [ 2947 | "time-core", 2948 | ] 2949 | 2950 | [[package]] 2951 | name = "tinyvec" 2952 | version = "1.6.0" 2953 | source = "registry+https://github.com/rust-lang/crates.io-index" 2954 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 2955 | dependencies = [ 2956 | "tinyvec_macros", 2957 | ] 2958 | 2959 | [[package]] 2960 | name = "tinyvec_macros" 2961 | version = "0.1.1" 2962 | source = "registry+https://github.com/rust-lang/crates.io-index" 2963 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2964 | 2965 | [[package]] 2966 | name = "tokio" 2967 | version = "1.35.0" 2968 | source = "registry+https://github.com/rust-lang/crates.io-index" 2969 | checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" 2970 | dependencies = [ 2971 | "backtrace", 2972 | "bytes", 2973 | "libc", 2974 | "mio", 2975 | "parking_lot", 2976 | "pin-project-lite", 2977 | "signal-hook-registry", 2978 | "socket2 0.5.5", 2979 | "windows-sys 0.48.0", 2980 | ] 2981 | 2982 | [[package]] 2983 | name = "tokio-stream" 2984 | version = "0.1.14" 2985 | source = "registry+https://github.com/rust-lang/crates.io-index" 2986 | checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" 2987 | dependencies = [ 2988 | "futures-core", 2989 | "pin-project-lite", 2990 | "tokio", 2991 | ] 2992 | 2993 | [[package]] 2994 | name = "tokio-util" 2995 | version = "0.7.10" 2996 | source = "registry+https://github.com/rust-lang/crates.io-index" 2997 | checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" 2998 | dependencies = [ 2999 | "bytes", 3000 | "futures-core", 3001 | "futures-sink", 3002 | "pin-project-lite", 3003 | "tokio", 3004 | "tracing", 3005 | ] 3006 | 3007 | [[package]] 3008 | name = "toml" 3009 | version = "0.5.11" 3010 | source = "registry+https://github.com/rust-lang/crates.io-index" 3011 | checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 3012 | dependencies = [ 3013 | "serde", 3014 | ] 3015 | 3016 | [[package]] 3017 | name = "tower-service" 3018 | version = "0.3.2" 3019 | source = "registry+https://github.com/rust-lang/crates.io-index" 3020 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 3021 | 3022 | [[package]] 3023 | name = "tracing" 3024 | version = "0.1.40" 3025 | source = "registry+https://github.com/rust-lang/crates.io-index" 3026 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 3027 | dependencies = [ 3028 | "log", 3029 | "pin-project-lite", 3030 | "tracing-attributes", 3031 | "tracing-core", 3032 | ] 3033 | 3034 | [[package]] 3035 | name = "tracing-attributes" 3036 | version = "0.1.27" 3037 | source = "registry+https://github.com/rust-lang/crates.io-index" 3038 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 3039 | dependencies = [ 3040 | "proc-macro2", 3041 | "quote", 3042 | "syn 2.0.40", 3043 | ] 3044 | 3045 | [[package]] 3046 | name = "tracing-core" 3047 | version = "0.1.32" 3048 | source = "registry+https://github.com/rust-lang/crates.io-index" 3049 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 3050 | dependencies = [ 3051 | "once_cell", 3052 | ] 3053 | 3054 | [[package]] 3055 | name = "try-lock" 3056 | version = "0.2.5" 3057 | source = "registry+https://github.com/rust-lang/crates.io-index" 3058 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 3059 | 3060 | [[package]] 3061 | name = "typed-builder" 3062 | version = "0.18.0" 3063 | source = "registry+https://github.com/rust-lang/crates.io-index" 3064 | checksum = "e47c0496149861b7c95198088cbf36645016b1a0734cf350c50e2a38e070f38a" 3065 | dependencies = [ 3066 | "typed-builder-macro", 3067 | ] 3068 | 3069 | [[package]] 3070 | name = "typed-builder-macro" 3071 | version = "0.18.0" 3072 | source = "registry+https://github.com/rust-lang/crates.io-index" 3073 | checksum = "982ee4197351b5c9782847ef5ec1fdcaf50503fb19d68f9771adae314e72b492" 3074 | dependencies = [ 3075 | "proc-macro2", 3076 | "quote", 3077 | "syn 2.0.40", 3078 | ] 3079 | 3080 | [[package]] 3081 | name = "typenum" 3082 | version = "1.17.0" 3083 | source = "registry+https://github.com/rust-lang/crates.io-index" 3084 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 3085 | 3086 | [[package]] 3087 | name = "unicase" 3088 | version = "2.7.0" 3089 | source = "registry+https://github.com/rust-lang/crates.io-index" 3090 | checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" 3091 | dependencies = [ 3092 | "version_check", 3093 | ] 3094 | 3095 | [[package]] 3096 | name = "unicode-bidi" 3097 | version = "0.3.14" 3098 | source = "registry+https://github.com/rust-lang/crates.io-index" 3099 | checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" 3100 | 3101 | [[package]] 3102 | name = "unicode-ident" 3103 | version = "1.0.12" 3104 | source = "registry+https://github.com/rust-lang/crates.io-index" 3105 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 3106 | 3107 | [[package]] 3108 | name = "unicode-normalization" 3109 | version = "0.1.22" 3110 | source = "registry+https://github.com/rust-lang/crates.io-index" 3111 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 3112 | dependencies = [ 3113 | "tinyvec", 3114 | ] 3115 | 3116 | [[package]] 3117 | name = "unicode-segmentation" 3118 | version = "1.10.1" 3119 | source = "registry+https://github.com/rust-lang/crates.io-index" 3120 | checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" 3121 | 3122 | [[package]] 3123 | name = "unicode-xid" 3124 | version = "0.2.4" 3125 | source = "registry+https://github.com/rust-lang/crates.io-index" 3126 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 3127 | 3128 | [[package]] 3129 | name = "unicode_categories" 3130 | version = "0.1.1" 3131 | source = "registry+https://github.com/rust-lang/crates.io-index" 3132 | checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" 3133 | 3134 | [[package]] 3135 | name = "url" 3136 | version = "2.5.0" 3137 | source = "registry+https://github.com/rust-lang/crates.io-index" 3138 | checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" 3139 | dependencies = [ 3140 | "form_urlencoded", 3141 | "idna", 3142 | "percent-encoding", 3143 | ] 3144 | 3145 | [[package]] 3146 | name = "urlencoding" 3147 | version = "2.1.3" 3148 | source = "registry+https://github.com/rust-lang/crates.io-index" 3149 | checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" 3150 | 3151 | [[package]] 3152 | name = "utf8-width" 3153 | version = "0.1.7" 3154 | source = "registry+https://github.com/rust-lang/crates.io-index" 3155 | checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" 3156 | 3157 | [[package]] 3158 | name = "uuid" 3159 | version = "1.6.1" 3160 | source = "registry+https://github.com/rust-lang/crates.io-index" 3161 | checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" 3162 | dependencies = [ 3163 | "getrandom", 3164 | ] 3165 | 3166 | [[package]] 3167 | name = "vcpkg" 3168 | version = "0.2.15" 3169 | source = "registry+https://github.com/rust-lang/crates.io-index" 3170 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 3171 | 3172 | [[package]] 3173 | name = "version_check" 3174 | version = "0.9.4" 3175 | source = "registry+https://github.com/rust-lang/crates.io-index" 3176 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 3177 | 3178 | [[package]] 3179 | name = "walkdir" 3180 | version = "2.4.0" 3181 | source = "registry+https://github.com/rust-lang/crates.io-index" 3182 | checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" 3183 | dependencies = [ 3184 | "same-file", 3185 | "winapi-util", 3186 | ] 3187 | 3188 | [[package]] 3189 | name = "want" 3190 | version = "0.3.1" 3191 | source = "registry+https://github.com/rust-lang/crates.io-index" 3192 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 3193 | dependencies = [ 3194 | "try-lock", 3195 | ] 3196 | 3197 | [[package]] 3198 | name = "wasi" 3199 | version = "0.11.0+wasi-snapshot-preview1" 3200 | source = "registry+https://github.com/rust-lang/crates.io-index" 3201 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3202 | 3203 | [[package]] 3204 | name = "wasm-bindgen" 3205 | version = "0.2.87" 3206 | source = "registry+https://github.com/rust-lang/crates.io-index" 3207 | checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" 3208 | dependencies = [ 3209 | "cfg-if", 3210 | "wasm-bindgen-macro", 3211 | ] 3212 | 3213 | [[package]] 3214 | name = "wasm-bindgen-backend" 3215 | version = "0.2.87" 3216 | source = "registry+https://github.com/rust-lang/crates.io-index" 3217 | checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" 3218 | dependencies = [ 3219 | "bumpalo", 3220 | "log", 3221 | "once_cell", 3222 | "proc-macro2", 3223 | "quote", 3224 | "syn 2.0.40", 3225 | "wasm-bindgen-shared", 3226 | ] 3227 | 3228 | [[package]] 3229 | name = "wasm-bindgen-futures" 3230 | version = "0.4.37" 3231 | source = "registry+https://github.com/rust-lang/crates.io-index" 3232 | checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" 3233 | dependencies = [ 3234 | "cfg-if", 3235 | "js-sys", 3236 | "wasm-bindgen", 3237 | "web-sys", 3238 | ] 3239 | 3240 | [[package]] 3241 | name = "wasm-bindgen-macro" 3242 | version = "0.2.87" 3243 | source = "registry+https://github.com/rust-lang/crates.io-index" 3244 | checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" 3245 | dependencies = [ 3246 | "quote", 3247 | "wasm-bindgen-macro-support", 3248 | ] 3249 | 3250 | [[package]] 3251 | name = "wasm-bindgen-macro-support" 3252 | version = "0.2.87" 3253 | source = "registry+https://github.com/rust-lang/crates.io-index" 3254 | checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" 3255 | dependencies = [ 3256 | "proc-macro2", 3257 | "quote", 3258 | "syn 2.0.40", 3259 | "wasm-bindgen-backend", 3260 | "wasm-bindgen-shared", 3261 | ] 3262 | 3263 | [[package]] 3264 | name = "wasm-bindgen-shared" 3265 | version = "0.2.87" 3266 | source = "registry+https://github.com/rust-lang/crates.io-index" 3267 | checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" 3268 | 3269 | [[package]] 3270 | name = "web-sys" 3271 | version = "0.3.64" 3272 | source = "registry+https://github.com/rust-lang/crates.io-index" 3273 | checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" 3274 | dependencies = [ 3275 | "js-sys", 3276 | "wasm-bindgen", 3277 | ] 3278 | 3279 | [[package]] 3280 | name = "whoami" 3281 | version = "1.4.1" 3282 | source = "registry+https://github.com/rust-lang/crates.io-index" 3283 | checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" 3284 | dependencies = [ 3285 | "wasm-bindgen", 3286 | "web-sys", 3287 | ] 3288 | 3289 | [[package]] 3290 | name = "winapi" 3291 | version = "0.3.9" 3292 | source = "registry+https://github.com/rust-lang/crates.io-index" 3293 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3294 | dependencies = [ 3295 | "winapi-i686-pc-windows-gnu", 3296 | "winapi-x86_64-pc-windows-gnu", 3297 | ] 3298 | 3299 | [[package]] 3300 | name = "winapi-i686-pc-windows-gnu" 3301 | version = "0.4.0" 3302 | source = "registry+https://github.com/rust-lang/crates.io-index" 3303 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3304 | 3305 | [[package]] 3306 | name = "winapi-util" 3307 | version = "0.1.6" 3308 | source = "registry+https://github.com/rust-lang/crates.io-index" 3309 | checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" 3310 | dependencies = [ 3311 | "winapi", 3312 | ] 3313 | 3314 | [[package]] 3315 | name = "winapi-x86_64-pc-windows-gnu" 3316 | version = "0.4.0" 3317 | source = "registry+https://github.com/rust-lang/crates.io-index" 3318 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3319 | 3320 | [[package]] 3321 | name = "windows-core" 3322 | version = "0.51.1" 3323 | source = "registry+https://github.com/rust-lang/crates.io-index" 3324 | checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" 3325 | dependencies = [ 3326 | "windows-targets 0.48.5", 3327 | ] 3328 | 3329 | [[package]] 3330 | name = "windows-sys" 3331 | version = "0.48.0" 3332 | source = "registry+https://github.com/rust-lang/crates.io-index" 3333 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 3334 | dependencies = [ 3335 | "windows-targets 0.48.5", 3336 | ] 3337 | 3338 | [[package]] 3339 | name = "windows-sys" 3340 | version = "0.52.0" 3341 | source = "registry+https://github.com/rust-lang/crates.io-index" 3342 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 3343 | dependencies = [ 3344 | "windows-targets 0.52.0", 3345 | ] 3346 | 3347 | [[package]] 3348 | name = "windows-targets" 3349 | version = "0.48.5" 3350 | source = "registry+https://github.com/rust-lang/crates.io-index" 3351 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 3352 | dependencies = [ 3353 | "windows_aarch64_gnullvm 0.48.5", 3354 | "windows_aarch64_msvc 0.48.5", 3355 | "windows_i686_gnu 0.48.5", 3356 | "windows_i686_msvc 0.48.5", 3357 | "windows_x86_64_gnu 0.48.5", 3358 | "windows_x86_64_gnullvm 0.48.5", 3359 | "windows_x86_64_msvc 0.48.5", 3360 | ] 3361 | 3362 | [[package]] 3363 | name = "windows-targets" 3364 | version = "0.52.0" 3365 | source = "registry+https://github.com/rust-lang/crates.io-index" 3366 | checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" 3367 | dependencies = [ 3368 | "windows_aarch64_gnullvm 0.52.0", 3369 | "windows_aarch64_msvc 0.52.0", 3370 | "windows_i686_gnu 0.52.0", 3371 | "windows_i686_msvc 0.52.0", 3372 | "windows_x86_64_gnu 0.52.0", 3373 | "windows_x86_64_gnullvm 0.52.0", 3374 | "windows_x86_64_msvc 0.52.0", 3375 | ] 3376 | 3377 | [[package]] 3378 | name = "windows_aarch64_gnullvm" 3379 | version = "0.48.5" 3380 | source = "registry+https://github.com/rust-lang/crates.io-index" 3381 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 3382 | 3383 | [[package]] 3384 | name = "windows_aarch64_gnullvm" 3385 | version = "0.52.0" 3386 | source = "registry+https://github.com/rust-lang/crates.io-index" 3387 | checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" 3388 | 3389 | [[package]] 3390 | name = "windows_aarch64_msvc" 3391 | version = "0.48.5" 3392 | source = "registry+https://github.com/rust-lang/crates.io-index" 3393 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 3394 | 3395 | [[package]] 3396 | name = "windows_aarch64_msvc" 3397 | version = "0.52.0" 3398 | source = "registry+https://github.com/rust-lang/crates.io-index" 3399 | checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" 3400 | 3401 | [[package]] 3402 | name = "windows_i686_gnu" 3403 | version = "0.48.5" 3404 | source = "registry+https://github.com/rust-lang/crates.io-index" 3405 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 3406 | 3407 | [[package]] 3408 | name = "windows_i686_gnu" 3409 | version = "0.52.0" 3410 | source = "registry+https://github.com/rust-lang/crates.io-index" 3411 | checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" 3412 | 3413 | [[package]] 3414 | name = "windows_i686_msvc" 3415 | version = "0.48.5" 3416 | source = "registry+https://github.com/rust-lang/crates.io-index" 3417 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 3418 | 3419 | [[package]] 3420 | name = "windows_i686_msvc" 3421 | version = "0.52.0" 3422 | source = "registry+https://github.com/rust-lang/crates.io-index" 3423 | checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" 3424 | 3425 | [[package]] 3426 | name = "windows_x86_64_gnu" 3427 | version = "0.48.5" 3428 | source = "registry+https://github.com/rust-lang/crates.io-index" 3429 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 3430 | 3431 | [[package]] 3432 | name = "windows_x86_64_gnu" 3433 | version = "0.52.0" 3434 | source = "registry+https://github.com/rust-lang/crates.io-index" 3435 | checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" 3436 | 3437 | [[package]] 3438 | name = "windows_x86_64_gnullvm" 3439 | version = "0.48.5" 3440 | source = "registry+https://github.com/rust-lang/crates.io-index" 3441 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 3442 | 3443 | [[package]] 3444 | name = "windows_x86_64_gnullvm" 3445 | version = "0.52.0" 3446 | source = "registry+https://github.com/rust-lang/crates.io-index" 3447 | checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" 3448 | 3449 | [[package]] 3450 | name = "windows_x86_64_msvc" 3451 | version = "0.48.5" 3452 | source = "registry+https://github.com/rust-lang/crates.io-index" 3453 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 3454 | 3455 | [[package]] 3456 | name = "windows_x86_64_msvc" 3457 | version = "0.52.0" 3458 | source = "registry+https://github.com/rust-lang/crates.io-index" 3459 | checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" 3460 | 3461 | [[package]] 3462 | name = "winreg" 3463 | version = "0.50.0" 3464 | source = "registry+https://github.com/rust-lang/crates.io-index" 3465 | checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 3466 | dependencies = [ 3467 | "cfg-if", 3468 | "windows-sys 0.48.0", 3469 | ] 3470 | 3471 | [[package]] 3472 | name = "xxhash-rust" 3473 | version = "0.8.7" 3474 | source = "registry+https://github.com/rust-lang/crates.io-index" 3475 | checksum = "9828b178da53440fa9c766a3d2f73f7cf5d0ac1fe3980c1e5018d899fd19e07b" 3476 | 3477 | [[package]] 3478 | name = "yansi" 3479 | version = "1.0.0-rc.1" 3480 | source = "registry+https://github.com/rust-lang/crates.io-index" 3481 | checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377" 3482 | 3483 | [[package]] 3484 | name = "zerocopy" 3485 | version = "0.7.30" 3486 | source = "registry+https://github.com/rust-lang/crates.io-index" 3487 | checksum = "306dca4455518f1f31635ec308b6b3e4eb1b11758cefafc782827d0aa7acb5c7" 3488 | dependencies = [ 3489 | "zerocopy-derive", 3490 | ] 3491 | 3492 | [[package]] 3493 | name = "zerocopy-derive" 3494 | version = "0.7.30" 3495 | source = "registry+https://github.com/rust-lang/crates.io-index" 3496 | checksum = "be912bf68235a88fbefd1b73415cb218405958d1655b2ece9035a19920bdf6ba" 3497 | dependencies = [ 3498 | "proc-macro2", 3499 | "quote", 3500 | "syn 2.0.40", 3501 | ] 3502 | 3503 | [[package]] 3504 | name = "zeroize" 3505 | version = "1.7.0" 3506 | source = "registry+https://github.com/rust-lang/crates.io-index" 3507 | checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" 3508 | 3509 | [[package]] 3510 | name = "zstd" 3511 | version = "0.12.4" 3512 | source = "registry+https://github.com/rust-lang/crates.io-index" 3513 | checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" 3514 | dependencies = [ 3515 | "zstd-safe", 3516 | ] 3517 | 3518 | [[package]] 3519 | name = "zstd-safe" 3520 | version = "6.0.6" 3521 | source = "registry+https://github.com/rust-lang/crates.io-index" 3522 | checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" 3523 | dependencies = [ 3524 | "libc", 3525 | "zstd-sys", 3526 | ] 3527 | 3528 | [[package]] 3529 | name = "zstd-sys" 3530 | version = "2.0.9+zstd.1.5.5" 3531 | source = "registry+https://github.com/rust-lang/crates.io-index" 3532 | checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" 3533 | dependencies = [ 3534 | "cc", 3535 | "pkg-config", 3536 | ] 3537 | --------------------------------------------------------------------------------