From 7f25da3e2b6ea14ad551182b0866998c3a2dafe4 Mon Sep 17 00:00:00 2001 From: Billy Chan Date: Mon, 5 Feb 2024 14:35:37 +0800 Subject: [PATCH] example: loco-todo-list (#2092) * example: loco-todo-list * fmt * Cargo.lock * Disabled integration test for GitHub CI * fmt * Update Cargo.toml --- .github/workflows/rust.yml | 1 + examples/loco_example/.cargo/config.toml | 3 + examples/loco_example/.dockerignore | 5 + examples/loco_example/.gitignore | 17 + examples/loco_example/.rustfmt.toml | 7 + examples/loco_example/Cargo.lock | 4994 ++++++++++++++++ examples/loco_example/Cargo.toml | 47 + examples/loco_example/README.md | 95 + examples/loco_example/Screenshot.png | Bin 0 -> 648485 bytes examples/loco_example/config/development.yaml | 72 + examples/loco_example/config/production.yaml | 72 + examples/loco_example/config/test.yaml | 76 + examples/loco_example/dockerfile | 18 + examples/loco_example/frontend/.eslintrc.cjs | 20 + examples/loco_example/frontend/.gitignore | 27 + examples/loco_example/frontend/index.html | 13 + examples/loco_example/frontend/package.json | 29 + examples/loco_example/frontend/pnpm-lock.yaml | 2898 ++++++++++ examples/loco_example/frontend/src/App.css | 37 + examples/loco_example/frontend/src/App.jsx | 163 + .../loco_example/frontend/src/assets/loco.svg | 5116 +++++++++++++++++ examples/loco_example/frontend/src/index.css | 68 + examples/loco_example/frontend/src/main.jsx | 21 + examples/loco_example/frontend/vite.config.js | 16 + examples/loco_example/frontend/yarn.lock | 3979 +++++++++++++ examples/loco_example/migration/Cargo.toml | 23 + examples/loco_example/migration/README.md | 41 + examples/loco_example/migration/src/lib.rs | 14 + .../migration/src/m20231103_114510_notes.rs | 36 + examples/loco_example/migration/src/main.rs | 6 + examples/loco_example/src/app.rs | 42 + examples/loco_example/src/bin/main.rs | 8 + examples/loco_example/src/controllers/mod.rs | 1 + .../loco_example/src/controllers/notes.rs | 69 + examples/loco_example/src/fixtures/notes.yaml | 11 + examples/loco_example/src/lib.rs | 3 + .../loco_example/src/models/_entities/mod.rs | 5 + .../src/models/_entities/notes.rs | 18 + .../src/models/_entities/prelude.rs | 3 + examples/loco_example/src/models/mod.rs | 2 + examples/loco_example/src/models/notes.rs | 7 + examples/loco_example/tests/mod.rs | 3 + examples/loco_example/tests/models/mod.rs | 1 + examples/loco_example/tests/requests/mod.rs | 1 + examples/loco_example/tests/requests/notes.rs | 127 + .../snapshots/can_add_note@notes_request.snap | 8 + .../can_delete_note@notes_request.snap | 8 + .../snapshots/can_get_note@notes_request.snap | 8 + .../can_get_notes@notes_request.snap | 8 + examples/loco_example/tests/tasks/mod.rs | 1 + examples/loco_example/tests/tasks/seed.rs | 42 + 51 files changed, 18290 insertions(+) create mode 100644 examples/loco_example/.cargo/config.toml create mode 100644 examples/loco_example/.dockerignore create mode 100644 examples/loco_example/.gitignore create mode 100644 examples/loco_example/.rustfmt.toml create mode 100644 examples/loco_example/Cargo.lock create mode 100644 examples/loco_example/Cargo.toml create mode 100644 examples/loco_example/README.md create mode 100644 examples/loco_example/Screenshot.png create mode 100644 examples/loco_example/config/development.yaml create mode 100644 examples/loco_example/config/production.yaml create mode 100644 examples/loco_example/config/test.yaml create mode 100644 examples/loco_example/dockerfile create mode 100644 examples/loco_example/frontend/.eslintrc.cjs create mode 100644 examples/loco_example/frontend/.gitignore create mode 100644 examples/loco_example/frontend/index.html create mode 100644 examples/loco_example/frontend/package.json create mode 100644 examples/loco_example/frontend/pnpm-lock.yaml create mode 100644 examples/loco_example/frontend/src/App.css create mode 100644 examples/loco_example/frontend/src/App.jsx create mode 100644 examples/loco_example/frontend/src/assets/loco.svg create mode 100644 examples/loco_example/frontend/src/index.css create mode 100644 examples/loco_example/frontend/src/main.jsx create mode 100644 examples/loco_example/frontend/vite.config.js create mode 100644 examples/loco_example/frontend/yarn.lock create mode 100644 examples/loco_example/migration/Cargo.toml create mode 100644 examples/loco_example/migration/README.md create mode 100644 examples/loco_example/migration/src/lib.rs create mode 100644 examples/loco_example/migration/src/m20231103_114510_notes.rs create mode 100644 examples/loco_example/migration/src/main.rs create mode 100644 examples/loco_example/src/app.rs create mode 100644 examples/loco_example/src/bin/main.rs create mode 100644 examples/loco_example/src/controllers/mod.rs create mode 100644 examples/loco_example/src/controllers/notes.rs create mode 100644 examples/loco_example/src/fixtures/notes.yaml create mode 100644 examples/loco_example/src/lib.rs create mode 100644 examples/loco_example/src/models/_entities/mod.rs create mode 100644 examples/loco_example/src/models/_entities/notes.rs create mode 100644 examples/loco_example/src/models/_entities/prelude.rs create mode 100644 examples/loco_example/src/models/mod.rs create mode 100644 examples/loco_example/src/models/notes.rs create mode 100644 examples/loco_example/tests/mod.rs create mode 100644 examples/loco_example/tests/models/mod.rs create mode 100644 examples/loco_example/tests/requests/mod.rs create mode 100644 examples/loco_example/tests/requests/notes.rs create mode 100644 examples/loco_example/tests/requests/snapshots/can_add_note@notes_request.snap create mode 100644 examples/loco_example/tests/requests/snapshots/can_delete_note@notes_request.snap create mode 100644 examples/loco_example/tests/requests/snapshots/can_get_note@notes_request.snap create mode 100644 examples/loco_example/tests/requests/snapshots/can_get_notes@notes_request.snap create mode 100644 examples/loco_example/tests/tasks/mod.rs create mode 100644 examples/loco_example/tests/tasks/seed.rs diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 97b198a6..a84fd3b1 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -239,6 +239,7 @@ jobs: examples/basic, examples/graphql_example, examples/jsonrpsee_example, + examples/loco_example, examples/poem_example, examples/proxy_gluesql_example, examples/rocket_example, diff --git a/examples/loco_example/.cargo/config.toml b/examples/loco_example/.cargo/config.toml new file mode 100644 index 00000000..21b76281 --- /dev/null +++ b/examples/loco_example/.cargo/config.toml @@ -0,0 +1,3 @@ +[alias] +loco = "run --" +playground = "run --example playground" diff --git a/examples/loco_example/.dockerignore b/examples/loco_example/.dockerignore new file mode 100644 index 00000000..41e0a306 --- /dev/null +++ b/examples/loco_example/.dockerignore @@ -0,0 +1,5 @@ +target +dockerfile +.dockerignore +.git +.gitignore diff --git a/examples/loco_example/.gitignore b/examples/loco_example/.gitignore new file mode 100644 index 00000000..624c1b57 --- /dev/null +++ b/examples/loco_example/.gitignore @@ -0,0 +1,17 @@ +**/config/local.yaml +**/config/*.local.yaml + +# Generated by Cargo +# will have compiled files and executables +debug/ +target/ + +# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries +# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +!Cargo.lock + +# These are backup files generated by rustfmt +**/*.rs.bk + +# MSVC Windows builds of rustc generate these, which store debugging information +*.pdb diff --git a/examples/loco_example/.rustfmt.toml b/examples/loco_example/.rustfmt.toml new file mode 100644 index 00000000..d509e3ae --- /dev/null +++ b/examples/loco_example/.rustfmt.toml @@ -0,0 +1,7 @@ +max_width = 100 +comment_width = 80 +wrap_comments = true +imports_granularity = "Crate" +use_small_heuristics = "Default" +group_imports = "StdExternalCrate" +format_strings = true diff --git a/examples/loco_example/Cargo.lock b/examples/loco_example/Cargo.lock new file mode 100644 index 00000000..285c5000 --- /dev/null +++ b/examples/loco_example/Cargo.lock @@ -0,0 +1,4994 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +dependencies = [ + "cfg-if", + "getrandom", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anstream" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d664a92ecae85fd0a7392615844904654d1d5f5514837f471ddef4a057aba1b6" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys 0.52.0", +] + +[[package]] +name = "anyhow" +version = "1.0.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" + +[[package]] +name = "argon2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ba4cac0a46bc1d2912652a751c47f2a9f3a7fe89bcae2275d418f5270402f9" +dependencies = [ + "base64ct", + "blake2", + "cpufeatures", + "password-hash", +] + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "async-attributes" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +dependencies = [ + "concurrent-queue", + "event-listener 4.0.0", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +dependencies = [ + "async-lock 3.2.0", + "async-task", + "concurrent-queue", + "fastrand 2.0.1", + "futures-lite 2.1.0", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.1.1", + "async-executor", + "async-io 2.2.2", + "async-lock 3.2.0", + "blocking", + "futures-lite 2.1.0", + "once_cell", + "tokio", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock 2.8.0", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite 1.13.0", + "log", + "parking", + "polling 2.8.0", + "rustix 0.37.27", + "slab", + "socket2 0.4.10", + "waker-fn", +] + +[[package]] +name = "async-io" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6afaa937395a620e33dc6a742c593c01aced20aa376ffb0f628121198578ccc7" +dependencies = [ + "async-lock 3.2.0", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite 2.1.0", + "parking", + "polling 3.3.1", + "rustix 0.38.28", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", +] + +[[package]] +name = "async-lock" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7125e42787d53db9dd54261812ef17e937c95a51e4d291373b670342fa44310c" +dependencies = [ + "event-listener 4.0.0", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +dependencies = [ + "async-attributes", + "async-channel 1.9.0", + "async-global-executor", + "async-io 1.13.0", + "async-lock 2.8.0", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite 1.13.0", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "async-task" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" + +[[package]] +name = "async-trait" +version = "0.1.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "atoi" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atomic-write-file" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edcdbedc2236483ab103a53415653d6b4442ea6141baf1ffa85df29635e88436" +dependencies = [ + "nix", + "rand", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "auto-future" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c1e7e457ea78e524f48639f551fd79703ac3f2237f5ecccdf4708f8a75ad373" + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "202651474fe73c62d9e0a56c6133f7a0ff1dc1c8cf7a5b03381af2a26553ac9d" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77cb22c689c44d4c07b0ab44ebc25d69d8ae601a2f28fb8d672d344178fa17aa" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-test" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ac99db40006a1a3fffeb381f2a78cb341dbc99d07b561e8bd119e22a2b1b0f" +dependencies = [ + "anyhow", + "async-trait", + "auto-future", + "axum", + "bytes", + "cookie", + "http", + "http-body-util", + "hyper", + "hyper-util", + "pretty_assertions", + "reserve-port", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "tokio", + "tower", + "url", +] + +[[package]] +name = "backtrace" +version = "0.3.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "backtrace_printer" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d28de81c708c843640982b66573df0f0168d87e42854b563971f326745aab7" +dependencies = [ + "btparse-stable", + "colored", + "regex", + "thiserror", +] + +[[package]] +name = "base64" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bb8" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98b4b0f25f18bcdc3ac72bdb486ed0acf7e185221fd4dc985bc15db5800b0ba2" +dependencies = [ + "async-trait", + "futures-channel", + "futures-util", + "parking_lot", + "tokio", +] + +[[package]] +name = "bigdecimal" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +dependencies = [ + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +dependencies = [ + "async-channel 2.1.1", + "async-lock 3.2.0", + "async-task", + "fastrand 2.0.1", + "futures-io", + "futures-lite 2.1.0", + "piper", + "tracing", +] + +[[package]] +name = "borsh" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9897ef0f1bd2362169de6d7e436ea2237dc1085d7d1e4db75f4be34d86f309d1" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478b41ff04256c5c8330f3dfdaaae2a5cc976a8e75088bafa4625b0d0208de8c" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.41", + "syn_derive", +] + +[[package]] +name = "bstr" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "btparse-stable" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d75b8252ed252f881d1dc4482ae3c3854df6ee8183c1906bac50ff358f4f89f" + +[[package]] +name = "bumpalo" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" + +[[package]] +name = "byte-unit" +version = "4.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da78b32057b8fdfc352504708feeba7216dcd65a2c9ab02978cbd288d1279b6c" +dependencies = [ + "serde", + "utf8-width", +] + +[[package]] +name = "bytecheck" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + +[[package]] +name = "chrono" +version = "0.4.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.48.5", +] + +[[package]] +name = "chrono-tz" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e23185c0e21df6ed832a12e2bda87c7d1def6842881fb634a8511ced741b0d76" +dependencies = [ + "chrono", + "chrono-tz-build", + "phf", +] + +[[package]] +name = "chrono-tz-build" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" +dependencies = [ + "parse-zoneinfo", + "phf", + "phf_codegen", +] + +[[package]] +name = "chumsky" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eebd66744a15ded14960ab4ccdbfb51ad3b81f51f3f04a80adac98c985396c9" +dependencies = [ + "hashbrown 0.14.3", + "stacker", +] + +[[package]] +name = "clap" +version = "4.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "clap_lex" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + +[[package]] +name = "combine" +version = "4.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +dependencies = [ + "bytes", + "futures-core", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "concurrent-queue" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "console" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" +dependencies = [ + "encode_unicode", + "lazy_static", + "libc", + "windows-sys 0.45.0", +] + +[[package]] +name = "const-oid" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" + +[[package]] +name = "cookie" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd91cf61412820176e137621345ee43b3f4423e589e7ae4e50d601d93e35ef8" +dependencies = [ + "time", + "version_check", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" + +[[package]] +name = "cpufeatures" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "cron_clock" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a8699d8ed16e3db689f8ae04d8dc3c6666a4ba7e724e5a157884b7cc385d16b" +dependencies = [ + "chrono", + "nom", + "once_cell", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9bcf5bdbfdd6030fb4a1c497b5d5fc5921aa2f60d359a17e249c0e6df3de153" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossterm" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "cruet" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "113a9e83d8f614be76de8df1f25bf9d0ea6e85ea573710a3d3f3abe1438ae49c" +dependencies = [ + "once_cell", + "regex", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.3", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +dependencies = [ + "powerfmt", + "serde", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "deunicode" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ae2a35373c5c74340b79ae6780b498b2b183915ec5dacf263aac5a099bf485a" + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "duct" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ae3fc31835f74c2a7ceda3aeede378b0ae2e74c8f1c36559fcc9ae2a4e7d3e" +dependencies = [ + "libc", + "once_cell", + "os_pipe", + "shared_child", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +dependencies = [ + "serde", +] + +[[package]] +name = "email-encoding" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbfb21b9878cf7a348dcb8559109aabc0ec40d69924bd706fa5149846c4fef75" +dependencies = [ + "base64", + "memchr", +] + +[[package]] +name = "email_address" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2153bd83ebc09db15bcbdc3e2194d901804952e3dc96967e1cd3b0c5c32d112" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "etcetera" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "770d968249b5d99410d61f5bf89057f3199a077a04d087092f58e7d10692baae" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.0", + "pin-project-lite", +] + +[[package]] +name = "eyre" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" + +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "futures-core", + "futures-sink", + "spin 0.9.8", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fs-err" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" + +[[package]] +name = "futures-executor" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot", +] + +[[package]] +name = "futures-io" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-lite" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143" +dependencies = [ + "fastrand 2.0.1", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "futures-sink" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" + +[[package]] +name = "futures-task" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" + +[[package]] +name = "futures-util" +version = "0.3.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "getrandom" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", +] + +[[package]] +name = "globwalk" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" +dependencies = [ + "bitflags 1.3.2", + "ignore", + "walkdir", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "h2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d308f63daf4181410c242d34c11f928dcb3aa105852019e043c9d1f4e4368a" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.7", +] + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash 0.8.6", + "allocator-api2", +] + +[[package]] +name = "hashlink" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" +dependencies = [ + "hashbrown 0.14.3", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + +[[package]] +name = "http" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ce4ef31cda248bbdb6e6820603b82dfcd9e833db65a43e997a0ccec777d11fe" + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "humansize" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" +dependencies = [ + "libm", +] + +[[package]] +name = "hyper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "403f9214f3e703236b221f1a9cd88ec8b4adfa5296de01ab96216361f4692f56" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "tokio", + "want", +] + +[[package]] +name = "hyper-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca339002caeb0d159cc6e023dff48e199f081e42fa039895c7c6f38b37f2e9d" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2 0.5.5", + "tokio", + "tower", + "tower-service", + "tracing", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "if_chain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" + +[[package]] +name = "ignore" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "747ad1b4ae841a78e8aba0d63adbfbeaea26b517b63705d47856b73015d27060" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata 0.4.3", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "include_dir" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +dependencies = [ + "equivalent", + "hashbrown 0.14.3", +] + +[[package]] +name = "inherent" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce243b1bfa62ffc028f1cc3b6034ec63d649f3031bc8a4fbbb004e1ac17d1f68" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "insta" +version = "1.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc" +dependencies = [ + "console", + "lazy_static", + "linked-hash-map", + "pest", + "pest_derive", + "regex", + "serde", + "similar", + "yaml-rust", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi 0.3.3", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "itertools" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "js-sys" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "9.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c7ea04a7c5c055c175f189b6dc6ba036fd62306b58c66c9f6389036c503a3f4" +dependencies = [ + "base64", + "js-sys", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] + +[[package]] +name = "lettre" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a48c2e9831b370bc2d7233c2620298c45f3a158ed6b4b8d7416b2ada5a268fd8" +dependencies = [ + "async-trait", + "base64", + "chumsky", + "email-encoding", + "email_address", + "fastrand 2.0.1", + "futures-io", + "futures-util", + "hostname", + "httpdate", + "idna 0.5.0", + "mime", + "nom", + "once_cell", + "quoted_printable", + "rustls", + "rustls-pemfile", + "socket2 0.5.5", + "tokio", + "tokio-rustls", + "url", + "webpki-roots", +] + +[[package]] +name = "libc" +version = "0.2.151" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "loco-rs" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af486e72ce8e7f6a8ae87bab477131db2b1b819f7f76ff4583f69207cc783f48" +dependencies = [ + "argon2", + "async-trait", + "axum", + "axum-test", + "backtrace_printer", + "bb8", + "byte-unit", + "cargo_metadata", + "cfg-if", + "chrono", + "clap", + "colored", + "duct", + "eyre", + "fs-err", + "include_dir", + "jsonwebtoken", + "lazy_static", + "lettre", + "rand", + "regex", + "requestty", + "rrgen", + "rusty-sidekiq", + "sea-orm", + "sea-orm-migration", + "serde", + "serde_json", + "serde_variant", + "serde_yaml", + "tera", + "thiserror", + "tokio", + "tower-http", + "tracing", + "tracing-subscriber", + "uuid", + "validator", +] + +[[package]] +name = "log" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +dependencies = [ + "value-bag", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if", + "digest", +] + +[[package]] +name = "memchr" +version = "2.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "migration" +version = "0.1.0" +dependencies = [ + "async-std", + "loco-rs", + "sea-orm-migration", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "nix" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +dependencies = [ + "bitflags 2.4.1", + "cfg-if", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi 0.3.3", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "object" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "ordered-float" +version = "3.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" +dependencies = [ + "num-traits", +] + +[[package]] +name = "os_pipe" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ae859aa07428ca9a929b936690f8b12dc5f11dd8c6992a18ca93919f28bc177" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ouroboros" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2ba07320d39dfea882faa70554b4bd342a5f273ed59ba7c1c6b4c840492c954" +dependencies = [ + "aliasable", + "ouroboros_macro", + "static_assertions", +] + +[[package]] +name = "ouroboros_macro" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec4c6225c69b4ca778c0aea097321a64c421cf4577b331c61b229267edabb6f8" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "parse-zoneinfo" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41" +dependencies = [ + "regex", +] + +[[package]] +name = "password-hash" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "346f04948ba92c43e8469c1ee6736c7563d71012b17d40745260fe106aac2166" +dependencies = [ + "base64ct", + "rand_core", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "pem" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b8fcc794035347fb64beda2d3b462595dd2753e3f268d89c5aae77e8cf2c310" +dependencies = [ + "base64", + "serde", +] + +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pest" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +dependencies = [ + "memchr", + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "pest_meta" +version = "2.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_shared", +] + +[[package]] +name = "phf_codegen" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +dependencies = [ + "phf_generator", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared", + "rand", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +dependencies = [ + "atomic-waker", + "fastrand 2.0.1", + "futures-io", +] + +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "polling" +version = "3.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf63fa624ab313c11656b4cda960bfc46c410187ad493c41f6ba2d8c1e991c9e" +dependencies = [ + "cfg-if", + "concurrent-queue", + "pin-project-lite", + "rustix 0.38.28", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "pretty_assertions" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af7cee1a6c8a5b9208b3cb1061f10c0cb689087b3d8ce85fb9d2dd7a29b6ba66" +dependencies = [ + "diff", + "yansi", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a" +dependencies = [ + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.70" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "psm" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +dependencies = [ + "cc", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "quoted_printable" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79ec282e887b434b68c18fe5c121d38e72a5cf35119b59e54ec5b992ea9c8eb0" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redis" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa8455fa3621f6b41c514946de66ea0531f57ca017b2e6c7cc368035ea5b46df" +dependencies = [ + "async-trait", + "bytes", + "combine", + "futures-util", + "itoa", + "percent-encoding", + "pin-project-lite", + "ryu", + "sha1_smol", + "tokio", + "tokio-util", + "url", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "relative-path" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c707298afce11da2efef2f600116fa93ffa7a032b5d7b628aa17711ec81383ca" + +[[package]] +name = "rend" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "requestty" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa883a1f3e288e65187f653e6ba2e84fdf810fe02f4c8074f9c723d1aa26e2ae" +dependencies = [ + "requestty-ui", + "shell-words", + "smallvec", + "tempfile", + "winsplit", +] + +[[package]] +name = "requestty-ui" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7549bab39cf982b629b68e7ec191a5574e85086e95c0ebe514c02d3b42ffe225" +dependencies = [ + "bitflags 1.3.2", + "crossterm", + "once_cell", + "textwrap", + "unicode-segmentation", +] + +[[package]] +name = "reserve-port" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3969e7fe15c6c1532ba1a761628298e870bbd18c252fd41a58445f6091c372a0" +dependencies = [ + "lazy_static", + "thiserror", +] + +[[package]] +name = "ring" +version = "0.17.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" +dependencies = [ + "cc", + "getrandom", + "libc", + "spin 0.9.8", + "untrusted", + "windows-sys 0.48.0", +] + +[[package]] +name = "rkyv" +version = "0.7.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0200c8230b013893c0b2d6213d6ec64ed2b9be2e0e016682b7224ff82cff5c58" +dependencies = [ + "bitvec", + "bytecheck", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rrgen" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e40013551787f9f535e7dbc8dafc164591d941aeae48881a385d8b0393dd45f6" +dependencies = [ + "cruet", + "fs-err", + "glob", + "heck", + "regex", + "serde", + "serde_json", + "serde_regex", + "serde_yaml", + "tera", + "thiserror", +] + +[[package]] +name = "rsa" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +dependencies = [ + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rstest" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97eeab2f3c0a199bc4be135c36c924b6590b88c377d416494288c14f2db30199" +dependencies = [ + "futures", + "futures-timer", + "rstest_macros", + "rustc_version", +] + +[[package]] +name = "rstest_macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d428f8247852f894ee1be110b375111b586d4fa431f6c46e64ba5a0dcccbe605" +dependencies = [ + "cfg-if", + "glob", + "proc-macro2", + "quote", + "regex", + "relative-path", + "rustc_version", + "syn 2.0.41", + "unicode-ident", +] + +[[package]] +name = "rust_decimal" +version = "1.33.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06676aec5ccb8fc1da723cc8c0f9a46549f21ebb8753d3915c6c41db1e7f1dc4" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand", + "rkyv", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.37.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +dependencies = [ + "bitflags 1.3.2", + "errno", + "io-lifetimes", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +dependencies = [ + "bitflags 2.4.1", + "errno", + "libc", + "linux-raw-sys 0.4.12", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.21.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" +dependencies = [ + "log", + "ring", + "rustls-webpki", + "sct", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "rusty-sidekiq" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a00db3916faeea070039864f98d4fd759d96fc07722571a4918d996fea5621" +dependencies = [ + "async-trait", + "bb8", + "chrono", + "cron_clock", + "gethostname", + "heck", + "hex", + "num_cpus", + "rand", + "redis", + "serde", + "serde_json", + "sha2", + "slog-term", + "thiserror", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "ryu" +version = "1.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sea-bae" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bd3534a9978d0aa7edd2808dc1f8f31c4d0ecd31ddf71d997b3c98e9f3c9114" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "sea-orm" +version = "0.12.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5181eedee8ad0d002d2a288600140fe9937581c4668426a4ff1295c14c736cf" +dependencies = [ + "async-stream", + "async-trait", + "bigdecimal", + "chrono", + "futures", + "log", + "ouroboros", + "rust_decimal", + "sea-orm-macros", + "sea-query", + "sea-query-binder", + "serde", + "serde_json", + "sqlx", + "strum", + "thiserror", + "time", + "tracing", + "url", + "uuid", +] + +[[package]] +name = "sea-orm-cli" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507c2b99f83129f4d5d511012ab47c9f40d1c7923fd4698c19fae23f0bf62913" +dependencies = [ + "chrono", + "clap", + "dotenvy", + "glob", + "regex", + "sea-schema", + "tracing", + "tracing-subscriber", + "url", +] + +[[package]] +name = "sea-orm-macros" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "816183a751bf9c22087679b20b6142da0b5c6d8981835ebb7b99bf1bf924640a" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "sea-bae", + "syn 2.0.41", + "unicode-ident", +] + +[[package]] +name = "sea-orm-migration" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d45937e5d4869a0dcf0222bb264df564c077cbe9b312265f3717401d023a633" +dependencies = [ + "async-trait", + "clap", + "dotenvy", + "futures", + "sea-orm", + "sea-orm-cli", + "sea-schema", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "sea-query" +version = "0.30.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41558fa9bb5f4d73952dac0b9d9c2ce23966493fc9ee0008037b01d709838a68" +dependencies = [ + "bigdecimal", + "chrono", + "derivative", + "inherent", + "ordered-float", + "rust_decimal", + "sea-query-derive", + "serde_json", + "time", + "uuid", +] + +[[package]] +name = "sea-query-binder" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36bbb68df92e820e4d5aeb17b4acd5cc8b5d18b2c36a4dd6f4626aabfa7ab1b9" +dependencies = [ + "bigdecimal", + "chrono", + "rust_decimal", + "sea-query", + "serde_json", + "sqlx", + "time", + "uuid", +] + +[[package]] +name = "sea-query-derive" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25a82fcb49253abcb45cdcb2adf92956060ec0928635eb21b4f7a6d8f25ab0bc" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.41", + "thiserror", +] + +[[package]] +name = "sea-schema" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cd9561232bd1b82ea748b581f15909d11de0db6563ddcf28c5d908aee8282f1" +dependencies = [ + "futures", + "sea-query", + "sea-schema-derive", +] + +[[package]] +name = "sea-schema-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6f686050f76bffc4f635cda8aea6df5548666b830b52387e8bc7de11056d11e" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "semver" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +dependencies = [ + "serde", +] + +[[package]] +name = "serde" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.193" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "serde_json" +version = "1.0.108" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_regex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" +dependencies = [ + "regex", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_variant" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47a8ec0b2fd0506290348d9699c0e3eb2e3e8c0498b5a9a6158b3bd4d6970076" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_yaml" +version = "0.9.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c" +dependencies = [ + "indexmap", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "serial_test" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" +dependencies = [ + "dashmap", + "futures", + "lazy_static", + "log", + "parking_lot", + "serial_test_derive", +] + +[[package]] +name = "serial_test_derive" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shared_child" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "shell-words" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +dependencies = [ + "libc", + "mio", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" +dependencies = [ + "digest", + "rand_core", +] + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "similar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597" + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time", +] + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slog" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" + +[[package]] +name = "slog-term" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87d29185c55b7b258b4f120eab00f48557d4d9bc814f41713f449d35b0f8977c" +dependencies = [ + "atty", + "slog", + "term", + "thread_local", + "time", +] + +[[package]] +name = "slug" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bd94acec9c8da640005f8e135a39fc0372e74535e6b368b7a04b875f784c8c4" +dependencies = [ + "deunicode", + "wasm-bindgen", +] + +[[package]] +name = "smallvec" +version = "1.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" + +[[package]] +name = "smawk" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c388c1b5e93756d0c740965c41e8822f866621d41acbdf6336a6a168f8840c" + +[[package]] +name = "socket2" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "sqlformat" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce81b7bd7c4493975347ef60d8c7e8b742d4694f4c49f93e0a12ea263938176c" +dependencies = [ + "itertools", + "nom", + "unicode_categories", +] + +[[package]] +name = "sqlx" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dba03c279da73694ef99763320dea58b51095dfe87d001b1d4b5fe78ba8763cf" +dependencies = [ + "sqlx-core", + "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", +] + +[[package]] +name = "sqlx-core" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d84b0a3c3739e220d94b3239fd69fb1f74bc36e16643423bd99de3b43c21bfbd" +dependencies = [ + "ahash 0.8.6", + "atoi", + "bigdecimal", + "byteorder", + "bytes", + "chrono", + "crc", + "crossbeam-queue", + "dotenvy", + "either", + "event-listener 2.5.3", + "futures-channel", + "futures-core", + "futures-intrusive", + "futures-io", + "futures-util", + "hashlink", + "hex", + "indexmap", + "log", + "memchr", + "once_cell", + "paste", + "percent-encoding", + "rust_decimal", + "rustls", + "rustls-pemfile", + "serde", + "serde_json", + "sha2", + "smallvec", + "sqlformat", + "thiserror", + "time", + "tokio", + "tokio-stream", + "tracing", + "url", + "uuid", + "webpki-roots", +] + +[[package]] +name = "sqlx-macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89961c00dc4d7dffb7aee214964b065072bff69e36ddb9e2c107541f75e4f2a5" +dependencies = [ + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn 1.0.109", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0bd4519486723648186a08785143599760f7cc81c52334a55d6a83ea1e20841" +dependencies = [ + "atomic-write-file", + "dotenvy", + "either", + "heck", + "hex", + "once_cell", + "proc-macro2", + "quote", + "serde", + "serde_json", + "sha2", + "sqlx-core", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn 1.0.109", + "tempfile", + "tokio", + "url", +] + +[[package]] +name = "sqlx-mysql" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e37195395df71fd068f6e2082247891bc11e3289624bbc776a0cdfa1ca7f1ea4" +dependencies = [ + "atoi", + "base64", + "bigdecimal", + "bitflags 2.4.1", + "byteorder", + "bytes", + "chrono", + "crc", + "digest", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand", + "rsa", + "rust_decimal", + "serde", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "time", + "tracing", + "uuid", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6ac0ac3b7ccd10cc96c7ab29791a7dd236bd94021f31eec7ba3d46a74aa1c24" +dependencies = [ + "atoi", + "base64", + "bigdecimal", + "bitflags 2.4.1", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "itoa", + "log", + "md-5", + "memchr", + "num-bigint", + "once_cell", + "rand", + "rust_decimal", + "serde", + "serde_json", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "time", + "tracing", + "uuid", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "210976b7d948c7ba9fced8ca835b11cbb2d677c59c79de41ac0d397e14547490" +dependencies = [ + "atoi", + "chrono", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "sqlx-core", + "time", + "tracing", + "url", + "urlencoding", + "uuid", +] + +[[package]] +name = "stacker" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "winapi", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stringprep" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" +dependencies = [ + "finl_unicode", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" + +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "tempfile" +version = "3.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +dependencies = [ + "cfg-if", + "fastrand 2.0.1", + "redox_syscall", + "rustix 0.38.28", + "windows-sys 0.48.0", +] + +[[package]] +name = "tera" +version = "1.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "970dff17c11e884a4a09bc76e3a17ef71e01bb13447a11e85226e254fe6d10b8" +dependencies = [ + "chrono", + "chrono-tz", + "globwalk", + "humansize", + "lazy_static", + "percent-encoding", + "pest", + "pest_derive", + "rand", + "regex", + "serde", + "serde_json", + "slug", + "unic-segment", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "textwrap" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7b3e525a49ec206798b40326a44121291b530c963cfb01018f63e135bac543d" +dependencies = [ + "smawk", + "unicode-linebreak", + "unicode-width", +] + +[[package]] +name = "thiserror" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +dependencies = [ + "deranged", + "itoa", + "libc", + "num_threads", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +dependencies = [ + "time-core", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "todolist" +version = "0.1.0" +dependencies = [ + "async-trait", + "axum", + "chrono", + "eyre", + "include_dir", + "insta", + "loco-rs", + "migration", + "rstest", + "sea-orm", + "serde", + "serde_json", + "serial_test", + "tokio", + "tracing", + "tracing-subscriber", + "uuid", + "validator", +] + +[[package]] +name = "tokio" +version = "1.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2 0.5.5", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09e12e6351354851911bdf8c2b8f2ab15050c567d70a8b9a37ae7b8301a4080d" +dependencies = [ + "bitflags 2.4.1", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-segment" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23" +dependencies = [ + "unic-ucd-segment", +] + +[[package]] +name = "unic-ucd-segment" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" + +[[package]] +name = "unicode-width" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +dependencies = [ + "form_urlencoded", + "idna 0.5.0", + "percent-encoding", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "utf8-width" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "validator" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b92f40481c04ff1f4f61f304d61793c7b56ff76ac1469f1beb199b1445b253bd" +dependencies = [ + "idna 0.4.0", + "lazy_static", + "regex", + "serde", + "serde_derive", + "serde_json", + "url", + "validator_derive", +] + +[[package]] +name = "validator_derive" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc44ca3088bb3ba384d9aecf40c6a23a676ce23e09bdaca2073d99c207f864af" +dependencies = [ + "if_chain", + "lazy_static", + "proc-macro-error", + "proc-macro2", + "quote", + "regex", + "syn 1.0.109", + "validator_types", +] + +[[package]] +name = "validator_types" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "111abfe30072511849c5910134e8baf8dc05de4c0e5903d681cbd5c9c4d611e3" +dependencies = [ + "proc-macro2", + "syn 1.0.109", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "value-bag" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a72e1902dde2bd6441347de2b70b7f5d59bf157c6c62f0c44572607a1d55bbe" + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" + +[[package]] +name = "walkdir" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.41", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" + +[[package]] +name = "web-sys" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" + +[[package]] +name = "whoami" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.51.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "winnow" +version = "0.5.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c830786f7720c2fd27a1a0e27a709dbd3c4d009b56d098fc742d4f4eab91fe2" +dependencies = [ + "memchr", +] + +[[package]] +name = "winsplit" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab703352da6a72f35c39a533526393725640575bb211f61987a2748323ad956" + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "zerocopy" +version = "0.7.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.41", +] + +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" diff --git a/examples/loco_example/Cargo.toml b/examples/loco_example/Cargo.toml new file mode 100644 index 00000000..ba860d78 --- /dev/null +++ b/examples/loco_example/Cargo.toml @@ -0,0 +1,47 @@ +[workspace] + +[package] +name = "todolist" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] + +loco-rs = { version = "0.1.7" } +migration = { path = "migration" } + +serde = { version = "1", features = ["derive"] } +serde_json = "1" +eyre = "0.6" +tokio = { version = "1.33.0", default-features = false } +async-trait = "0.1.74" +tracing = "0.1.40" +chrono = "0.4" +validator = { version = "0.16" } +axum = "0.7.1" +include_dir = "0.7" +uuid = { version = "1.6.0", features = ["v4"] } +tracing-subscriber = { version = "0.3.17", features = ["env-filter", "json"] } + +[dependencies.sea-orm] +# path = "../../" # remove this line in your own project +version = "0.12.4" # sea-orm version +features = [ + "sqlx-sqlite", + "sqlx-postgres", + "runtime-tokio-rustls", + "macros", +] + +[[bin]] +name = "todolist-cli" +path = "src/bin/main.rs" +required-features = [] + +[dev-dependencies] +serial_test = "2.0.0" +rstest = "0.18.2" +loco-rs = { version = "0.1.7", features = ["testing"] } +insta = { version = "1.34.0", features = ["redactions", "yaml", "filters"] } diff --git a/examples/loco_example/README.md b/examples/loco_example/README.md new file mode 100644 index 00000000..08cd9540 --- /dev/null +++ b/examples/loco_example/README.md @@ -0,0 +1,95 @@ +![screenshot](Screenshot.png) + +> Adapted from https://github.com/loco-rs/todo-list + +# Loco with SeaORM example todo list + +Build your own todo list website using Loco. Follow the step-by-step guide [here](<(https://loco.rs/blog/frontend-website/)>) to create it effortlessly. + +## Build Client + +Navigate to the `frontend` directory and build the client: + +```sh +$ cd frontend && yarn install && yarn build + +vite v5.0.8 building for production... +✓ 120 modules transformed. +dist/index.html 0.46 kB │ gzip: 0.30 kB +dist/assets/index-AbTMZIjW.css 1.26 kB │ gzip: 0.65 kB +dist/assets/index-MJFpQvzE.js 235.64 kB │ gzip: 75.58 kB +✓ built in 2.01s +``` + +## Run Locally + +You need: + +* A local postgres instance + +Check out your development [configuration](config/development.yaml). + +> To configure a database , please run a local postgres database with loco:loco and a db named [app name]_development.: +docker run -d -p 5432:5432 -e POSTGRES_USER=loco -e POSTGRES_DB=[app name]_development -e POSTGRES_PASSWORD="loco" postgres:15.3-alpine + +Execute the following command to run your todo list website locally, serving static assets from `frontend/dist`: + +```sh +$ cargo loco start + + Finished dev [unoptimized + debuginfo] target(s) in 0.53s + Running `target/debug/todolist-cli start` +2024-02-01T08:49:41.070430Z INFO loco_rs::db: auto migrating +2024-02-01T08:49:41.073698Z INFO sea_orm_migration::migrator: Applying all pending migrations +2024-02-01T08:49:41.078191Z INFO sea_orm_migration::migrator: No pending migrations +2024-02-01T08:49:41.100557Z INFO loco_rs::controller::app_routes: [GET] /api/_ping +2024-02-01T08:49:41.100617Z INFO loco_rs::controller::app_routes: [GET] /api/_health +2024-02-01T08:49:41.100667Z INFO loco_rs::controller::app_routes: [GET] /api/notes +2024-02-01T08:49:41.100702Z INFO loco_rs::controller::app_routes: [POST] /api/notes +2024-02-01T08:49:41.100738Z INFO loco_rs::controller::app_routes: [GET] /api/notes/:id +2024-02-01T08:49:41.100791Z INFO loco_rs::controller::app_routes: [DELETE] /api/notes/:id +2024-02-01T08:49:41.100817Z INFO loco_rs::controller::app_routes: [POST] /api/notes/:id +2024-02-01T08:49:41.100934Z INFO loco_rs::controller::app_routes: [Middleware] Adding limit payload data="5mb" +2024-02-01T08:49:41.101017Z INFO loco_rs::controller::app_routes: [Middleware] Adding log trace id +2024-02-01T08:49:41.101057Z INFO loco_rs::controller::app_routes: [Middleware] Adding timeout layer +2024-02-01T08:49:41.101192Z INFO loco_rs::controller::app_routes: [Middleware] Adding cors +2024-02-01T08:49:41.101241Z INFO loco_rs::controller::app_routes: [Middleware] Adding static + + ▄ ▀ + ▀ ▄ + ▄ ▀ ▄ ▄ ▄▀ + ▄ ▀▄▄ + ▄ ▀ ▀ ▀▄▀█▄ + ▀█▄ +▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄▄▄ ▄▄▄▄▄▄▄▄▄ ▀▀█ + ██████ █████ ███ █████ ███ █████ ███ ▀█ + ██████ █████ ███ █████ ▀▀▀ █████ ███ ▄█▄ + ██████ █████ ███ █████ █████ ███ ████▄ + ██████ █████ ███ █████ ▄▄▄ █████ ███ █████ + ██████ █████ ███ ████ ███ █████ ███ ████▀ + ▀▀▀██▄ ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀ ██▀ + ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ + https://loco.rs + +environment: development + database: automigrate + logger: debug +compilation: debug + modes: server + +listening on port 3000 +``` + +## Development + +To develop the UI, run the following commands: + +```sh +$ cd frontend && yarn install && yarn dev +``` + +To run the server: + +```sh +$ cargo loco start +``` diff --git a/examples/loco_example/Screenshot.png b/examples/loco_example/Screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb65b16329cb8e83c04249f64ff8982dce8dcf8 GIT binary patch literal 648485 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 !!vECxpV!l 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