From cb49ba0e8d6b82e2cfa43938eb5bd6850810edbd Mon Sep 17 00:00:00 2001 From: Fernando Araoz Date: Mon, 30 Dec 2024 07:07:28 -0500 Subject: [PATCH] Init --- backend/.gitignore | 1 + backend/Cargo.lock | 1597 +++++++++++++++++++++++++++++++ backend/Cargo.toml | 8 + backend/src/main.rs | 12 + frontend/.gitignore | 2 + frontend/README.md | 13 + frontend/bun.lockb | Bin 0 -> 91881 bytes frontend/index.html | 16 + frontend/package.json | 23 + frontend/src/App.tsx | 22 + frontend/src/assets/favicon.ico | Bin 0 -> 15086 bytes frontend/src/index.tsx | 15 + frontend/tsconfig.json | 15 + frontend/uno.config.ts | 9 + frontend/vite.config.ts | 16 + 15 files changed, 1749 insertions(+) create mode 100644 backend/.gitignore create mode 100644 backend/Cargo.lock create mode 100644 backend/Cargo.toml create mode 100644 backend/src/main.rs create mode 100644 frontend/.gitignore create mode 100644 frontend/README.md create mode 100755 frontend/bun.lockb create mode 100644 frontend/index.html create mode 100644 frontend/package.json create mode 100644 frontend/src/App.tsx create mode 100644 frontend/src/assets/favicon.ico create mode 100644 frontend/src/index.tsx create mode 100644 frontend/tsconfig.json create mode 100644 frontend/uno.config.ts create mode 100644 frontend/vite.config.ts diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1 @@ +/target diff --git a/backend/Cargo.lock b/backend/Cargo.lock new file mode 100644 index 0000000..69a41eb --- /dev/null +++ b/backend/Cargo.lock @@ -0,0 +1,1597 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-trait" +version = "0.1.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" + +[[package]] +name = "atomic" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backend" +version = "0.1.0" +dependencies = [ + "rocket", +] + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "binascii" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "383d29d513d8764dcdc42ea295d979eb99c3c9f00607b3692cf68a431f7dca72" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bytemuck" +version = "1.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" + +[[package]] +name = "cc" +version = "1.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "devise" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1d90b0c4c777a2cad215e3c7be59ac7c15adf45cf76317009b7d096d46f651d" +dependencies = [ + "devise_codegen", + "devise_core", +] + +[[package]] +name = "devise_codegen" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71b28680d8be17a570a2334922518be6adc3f58ecc880cbb404eaeb8624fd867" +dependencies = [ + "devise_core", + "quote", +] + +[[package]] +name = "devise_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b035a542cf7abf01f2e3c4d5a7acbaebfefe120ae4efc7bde3df98186e4b8af7" +dependencies = [ + "bitflags", + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[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.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "figment" +version = "0.10.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cb01cd46b0cf372153850f4c6c272d9cbea2da513e07538405148f95bd789f3" +dependencies = [ + "atomic 0.6.0", + "pear", + "serde", + "toml", + "uncased", + "version_check", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generator" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" +dependencies = [ + "cc", + "libc", + "log", + "rustversion", + "windows", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + +[[package]] +name = "glob" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" + +[[package]] +name = "h2" +version = "0.3.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 0.2.12", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "http" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +dependencies = [ + "bytes", + "http 0.2.12", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "0.14.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http 0.2.12", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "indexmap" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +dependencies = [ + "equivalent", + "hashbrown", + "serde", +] + +[[package]] +name = "inlinable_string" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" + +[[package]] +name = "is-terminal" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itoa" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.169" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "loom" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff50ecb28bb86013e935fb6683ab1f6d3a20016f123c76fd4c27470076ac30f5" +dependencies = [ + "cfg-if", + "generator", + "scoped-tls", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[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 = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "multer" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83e87776546dc87511aa5ee218730c92b666d7264ab6ed41f9d215af9cd5224b" +dependencies = [ + "bytes", + "encoding_rs", + "futures-util", + "http 1.2.0", + "httparse", + "memchr", + "mime", + "spin", + "tokio", + "tokio-util", + "version_check", +] + +[[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-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[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.9", + "libc", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "pear" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdeeaa00ce488657faba8ebf44ab9361f9365a97bd39ffb8a60663f57ff4b467" +dependencies = [ + "inlinable_string", + "pear_codegen", + "yansi", +] + +[[package]] +name = "pear_codegen" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bab5b985dc082b345f812b7df84e1bef27e7207b39e448439ba8bd69c93f147" +dependencies = [ + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[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.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "version_check", + "yansi", +] + +[[package]] +name = "quote" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" +dependencies = [ + "proc-macro2", +] + +[[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 = "redox_syscall" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" +dependencies = [ + "bitflags", +] + +[[package]] +name = "ref-cast" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", +] + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rocket" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a516907296a31df7dc04310e7043b61d71954d703b603cc6867a026d7e72d73f" +dependencies = [ + "async-stream", + "async-trait", + "atomic 0.5.3", + "binascii", + "bytes", + "either", + "figment", + "futures", + "indexmap", + "log", + "memchr", + "multer", + "num_cpus", + "parking_lot", + "pin-project-lite", + "rand", + "ref-cast", + "rocket_codegen", + "rocket_http", + "serde", + "state", + "tempfile", + "time", + "tokio", + "tokio-stream", + "tokio-util", + "ubyte", + "version_check", + "yansi", +] + +[[package]] +name = "rocket_codegen" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "575d32d7ec1a9770108c879fc7c47815a80073f96ca07ff9525a94fcede1dd46" +dependencies = [ + "devise", + "glob", + "indexmap", + "proc-macro2", + "quote", + "rocket_http", + "syn", + "unicode-xid", + "version_check", +] + +[[package]] +name = "rocket_http" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e274915a20ee3065f611c044bd63c40757396b6dbc057d6046aec27f14f882b9" +dependencies = [ + "cookie", + "either", + "futures", + "http 0.2.12", + "hyper", + "indexmap", + "log", + "memchr", + "pear", + "percent-encoding", + "pin-project-lite", + "ref-cast", + "serde", + "smallvec", + "stable-pattern", + "state", + "time", + "tokio", + "uncased", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustix" +version = "0.38.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustversion" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.134" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + +[[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 = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "stable-pattern" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4564168c00635f88eaed410d5efa8131afa8d8699a612c80c455a0ba05c21045" +dependencies = [ + "memchr", +] + +[[package]] +name = "state" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" +dependencies = [ + "loom", +] + +[[package]] +name = "syn" +version = "2.0.93" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "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.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tokio" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-stream" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" +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-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "ubyte" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f720def6ce1ee2fc44d40ac9ed6d3a59c361c80a75a7aa8e75bb9baed31cf2ea" +dependencies = [ + "serde", +] + +[[package]] +name = "uncased" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1b88fcfe09e89d3866a5c11019378088af2d24c3fbd4f0543f96b479ec90697" +dependencies = [ + "serde", + "version_check", +] + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[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 = "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-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +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.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[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.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +dependencies = [ + "memchr", +] + +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +dependencies = [ + "is-terminal", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/backend/Cargo.toml b/backend/Cargo.toml new file mode 100644 index 0000000..4bbaf41 --- /dev/null +++ b/backend/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "backend" +version = "0.1.0" +edition = "2021" + +[dependencies] +rocket = "0.5.1" + diff --git a/backend/src/main.rs b/backend/src/main.rs new file mode 100644 index 0000000..12cfdcb --- /dev/null +++ b/backend/src/main.rs @@ -0,0 +1,12 @@ +#[macro_use] +extern crate rocket; + +#[get("/")] +fn index() -> &'static str { + "Hello, world!" +} + +#[launch] +fn rocket() -> _ { + rocket::build().mount("/", routes![index]) +} diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..76add87 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,2 @@ +node_modules +dist \ No newline at end of file diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..8d9b3cd --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,13 @@ +# Reezer + +Yet another rewrite of deemix, this time with: + +- Rust in the backend + - Rocket.rs as server + - Swagger API docs +- Solidjs in the frontend + - SPA mode + - Bun + - UnoCSS +- Docker + diff --git a/frontend/bun.lockb b/frontend/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..953b9a30c6f412f074995a4d1a521949a9890d32 GIT binary patch literal 91881 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 C^>l^+ literal 0 HcmV?d00001 diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..48c59fc --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,16 @@ + + + + + + + + Solid App + + + +
+ + + + diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..bfa33f5 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,23 @@ +{ + "name": "vite-template-solid", + "version": "0.0.0", + "description": "", + "type": "module", + "scripts": { + "start": "vite", + "dev": "vite", + "build": "vite build", + "serve": "vite preview" + }, + "license": "MIT", + "devDependencies": { + "@unocss/preset-wind": "^0.65.3", + "typescript": "^5.7.2", + "unocss": "^0.65.3", + "vite": "^6.0.0", + "vite-plugin-solid": "^2.11.0" + }, + "dependencies": { + "solid-js": "^1.9.3" + } +} diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx new file mode 100644 index 0000000..1338a19 --- /dev/null +++ b/frontend/src/App.tsx @@ -0,0 +1,22 @@ +import type { Component } from 'solid-js'; + +const App: Component = () => { + return ( +
+
+

+ Edit src/App.tsx and save to reload. +

+ + Learn Solid + +
+
+ ); +}; + +export default App; diff --git a/frontend/src/assets/favicon.ico b/frontend/src/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b836b2bccac650e0e7d90514083add91d2c027ff GIT binary patch literal 15086 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 WLaxim%Fn{v*G , root!); diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..249b273 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "strict": true, + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "jsx": "preserve", + "jsxImportSource": "solid-js", + "types": ["vite/client"], + "noEmit": true, + "isolatedModules": true + } +} diff --git a/frontend/uno.config.ts b/frontend/uno.config.ts new file mode 100644 index 0000000..41edbb7 --- /dev/null +++ b/frontend/uno.config.ts @@ -0,0 +1,9 @@ +import presetWind from '@unocss/preset-wind' +import { defineConfig } from 'unocss' + +export default defineConfig({ + // ...UnoCSS options + presets: [ + presetWind(), + ] +}) diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts new file mode 100644 index 0000000..fd5ae5f --- /dev/null +++ b/frontend/vite.config.ts @@ -0,0 +1,16 @@ +import UnoCSS from 'unocss/vite' +import { defineConfig } from 'vite'; +import solidPlugin from 'vite-plugin-solid'; + +export default defineConfig({ + plugins: [ + solidPlugin(), + UnoCSS(), + ], + server: { + port: 3000, + }, + build: { + target: 'esnext', + }, +});