From 2dd90fbc44fe40d12a52bd4577a6439e9245690e Mon Sep 17 00:00:00 2001 From: DecDuck Date: Fri, 3 Apr 2026 01:25:10 +0000 Subject: [PATCH] New v0.4.0 website --- backend/.gitignore | 1 + backend/core/database.go | 19 + backend/core/go.mod | 10 + backend/core/go.sum | 15 + backend/go.mod | 5 + backend/go.sum | 2 + backend/go.work | 3 + backend/go.work.sum | 9 + backend/main.go | 37 + cli/Cargo.lock | 338 +++++++-- cli/Cargo.toml | 2 +- cli/src/commands/upload/interface.rs | 44 +- cli/src/main.rs | 2 + cli/src/manifest.rs | 68 +- desktop/.gitmodules | 6 - desktop/build.mjs | 7 - desktop/main/components/LibrarySearch.vue | 2 +- desktop/main/tailwind.config.js | 6 +- desktop/src-tauri/Cargo.lock | 661 ++++-------------- desktop/src-tauri/Cargo.toml | 1 - .../download_manager/src/depot_manager.rs | 16 +- desktop/src-tauri/games/Cargo.toml | 2 +- .../games/src/downloads/download_agent.rs | 2 +- .../games/src/downloads/download_logic.rs | 2 +- desktop/src-tauri/remote/Cargo.toml | 1 - desktop/src-tauri/tauri.conf.json | 2 +- libraries/droplet/.gitignore | 1 + libraries/droplet/.gitmodules | 3 - libraries/droplet/Cargo.lock | 575 ++++++++++----- libraries/droplet/Cargo.toml | 1 + libraries/droplet/libarchive-rust | 1 - libraries/droplet/src/lib.rs | 5 +- libraries/droplet/src/main.rs | 16 +- libraries/droplet/src/manifest.rs | 423 +++++------ libraries/droplet/src/tests.rs | 4 +- .../droplet/src/versions/archive_backend.rs | 49 +- libraries/droplet/src/versions/mod.rs | 21 +- libraries/droplet_types/.gitignore | 28 + libraries/droplet_types/Cargo.lock | 75 ++ libraries/droplet_types/Cargo.toml | 7 + libraries/droplet_types/README.md | 6 + libraries/droplet_types/src/lib.rs | 27 + libraries/libarchive/Cargo.toml | 4 +- libraries/libarchive/tests/lib.rs | 8 +- promo/public/gallery/store.png | Bin 4583359 -> 2435818 bytes promo/src/app/about/page.tsx | 26 +- promo/src/app/layout.tsx | 2 +- promo/src/app/news/[slug]/page.tsx | 6 +- promo/src/app/not-found.tsx | 2 +- promo/src/app/page.tsx | 69 +- promo/src/app/sponsors/page.tsx | 3 +- promo/src/components/bento-card.tsx | 15 +- promo/src/components/button.tsx | 14 +- promo/src/components/comparison.tsx | 47 +- promo/src/components/downloads.tsx | 12 +- promo/src/components/footer.tsx | 70 +- promo/src/components/gradient.tsx | 4 +- promo/src/components/mdx-components.tsx | 14 +- promo/src/components/navbar.tsx | 10 +- promo/src/components/news.tsx | 22 +- promo/src/components/plus-grid.tsx | 10 +- promo/src/components/sponsors.tsx | 17 +- promo/src/components/team.tsx | 13 +- promo/src/components/text.tsx | 4 +- server.code-workspace | 35 + server/.devcontainer/devcontainer.json | 52 ++ server/.devcontainer/docker-compose.yml | 26 + server/pnpm-lock.yaml | 659 +++++++++-------- server/pnpm-workspace.yaml | 42 +- torrential/Cargo.lock | 8 + torrential/src/droplet/manifest.rs | 6 +- 71 files changed, 2126 insertions(+), 1579 deletions(-) create mode 100644 backend/.gitignore create mode 100644 backend/core/database.go create mode 100644 backend/core/go.mod create mode 100644 backend/core/go.sum create mode 100644 backend/go.mod create mode 100644 backend/go.sum create mode 100644 backend/go.work create mode 100644 backend/go.work.sum create mode 100644 backend/main.go delete mode 100644 desktop/.gitmodules delete mode 100644 libraries/droplet/.gitmodules delete mode 160000 libraries/droplet/libarchive-rust create mode 100644 libraries/droplet_types/.gitignore create mode 100644 libraries/droplet_types/Cargo.lock create mode 100644 libraries/droplet_types/Cargo.toml create mode 100644 libraries/droplet_types/README.md create mode 100644 libraries/droplet_types/src/lib.rs create mode 100644 server.code-workspace create mode 100644 server/.devcontainer/devcontainer.json create mode 100644 server/.devcontainer/docker-compose.yml diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 00000000..7447f89a --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1 @@ +/bin \ No newline at end of file diff --git a/backend/core/database.go b/backend/core/database.go new file mode 100644 index 00000000..a50decab --- /dev/null +++ b/backend/core/database.go @@ -0,0 +1,19 @@ +package core + +import ( + "context" + "fmt" + "os" + + "github.com/jackc/pgx/v5" +) + +func connect() { + conn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL")) + if err != nil { + fmt.Fprintf(os.Stderr, "Unable to connect to database: %v\n", err) + os.Exit(1) + } + defer conn.Close(context.Background()) + +} diff --git a/backend/core/go.mod b/backend/core/go.mod new file mode 100644 index 00000000..93556cca --- /dev/null +++ b/backend/core/go.mod @@ -0,0 +1,10 @@ +module drop/core + +go 1.26.1 + +require ( + github.com/jackc/pgpassfile v1.0.0 // indirect + github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect + github.com/jackc/pgx/v5 v5.9.1 // indirect + golang.org/x/text v0.29.0 // indirect +) diff --git a/backend/core/go.sum b/backend/core/go.sum new file mode 100644 index 00000000..6f5c7cd4 --- /dev/null +++ b/backend/core/go.sum @@ -0,0 +1,15 @@ +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= +github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.9.1 h1:uwrxJXBnx76nyISkhr33kQLlUqjv7et7b9FjCen/tdc= +github.com/jackc/pgx/v5 v5.9.1/go.mod h1:mal1tBGAFfLHvZzaYh77YS/eC6IX9OWbRV1QIIM0Jn4= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/backend/go.mod b/backend/go.mod new file mode 100644 index 00000000..00366967 --- /dev/null +++ b/backend/go.mod @@ -0,0 +1,5 @@ +module drop + +go 1.26.1 + +require github.com/gorilla/mux v1.8.1 diff --git a/backend/go.sum b/backend/go.sum new file mode 100644 index 00000000..5d28444c --- /dev/null +++ b/backend/go.sum @@ -0,0 +1,2 @@ +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= \ No newline at end of file diff --git a/backend/go.work b/backend/go.work new file mode 100644 index 00000000..f1da3508 --- /dev/null +++ b/backend/go.work @@ -0,0 +1,3 @@ +go 1.26.1 + +use ./core diff --git a/backend/go.work.sum b/backend/go.work.sum new file mode 100644 index 00000000..c1225400 --- /dev/null +++ b/backend/go.work.sum @@ -0,0 +1,9 @@ +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/backend/main.go b/backend/main.go new file mode 100644 index 00000000..d5d0c856 --- /dev/null +++ b/backend/main.go @@ -0,0 +1,37 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "strings" + + "github.com/gorilla/mux" +) + +func handler(res http.ResponseWriter, req *http.Request) { + fmt.Fprintf(res, "G'day there mate") +} +func routingMiddleware(h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + url := *r.URL + url.Path = strings.TrimSuffix(r.URL.Path, "/") + r.URL = &url + + h.ServeHTTP(w, r) + }) +} + +func main() { + r := mux.NewRouter().StrictSlash(true) + r.Use(routingMiddleware) + + r.HandleFunc("/api/v1", handler) + + srv := &http.Server{ + Addr: ":3433", + Handler: r, + } + log.Printf("starting drop server on :3433") + srv.ListenAndServe() +} diff --git a/cli/Cargo.lock b/cli/Cargo.lock index c7e11ca1..2f510fda 100644 --- a/cli/Cargo.lock +++ b/cli/Cargo.lock @@ -2,6 +2,21 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -105,10 +120,10 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", + "synstructure 0.13.2", ] [[package]] @@ -117,10 +132,10 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", + "synstructure 0.13.2", ] [[package]] @@ -129,9 +144,9 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -140,9 +155,9 @@ version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -190,6 +205,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "backtrace" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-link", +] + [[package]] name = "base64" version = "0.22.1" @@ -295,9 +325,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a0b5487afeab2deb2ff4e03a807ad1a03ac532ff5a2cee5d86884440c7f7671" dependencies = [ "heck", - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -534,9 +564,9 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -577,7 +607,7 @@ dependencies = [ [[package]] name = "droplet-rs" -version = "0.14.1" +version = "0.16.3" dependencies = [ "anyhow", "async-trait", @@ -586,11 +616,14 @@ dependencies = [ "getrandom 0.3.4", "hex", "humansize", + "libarchive-drop", "rcgen", "ring", "serde", "serde_json", "sha2", + "speedometer", + "test-generator", "time", "tokio", "uuid", @@ -640,6 +673,28 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "failure" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" +dependencies = [ + "backtrace", + "failure_derive", +] + +[[package]] +name = "failure_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" +dependencies = [ + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 1.0.109", + "synstructure 0.12.6", +] + [[package]] name = "fastrand" version = "2.3.0" @@ -737,9 +792,9 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -809,6 +864,18 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + [[package]] name = "gloo-timers" version = "0.3.0" @@ -1193,9 +1260,9 @@ version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0c84ee7f197eca9a86c6fd6cb771e55eb991632f15f2bc3ca6ec838929e6e78" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -1261,6 +1328,24 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "libarchive-drop" +version = "0.1.1" +dependencies = [ + "libarchive3-sys", + "libc", +] + +[[package]] +name = "libarchive3-sys" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cd3beae8f59a4c7a806523269b5392037577c150446e88d684dfa6de6031ca7" +dependencies = [ + "libc", + "pkg-config", +] + [[package]] name = "libc" version = "0.2.178" @@ -1335,6 +1420,15 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "1.1.1" @@ -1421,6 +1515,15 @@ dependencies = [ "objc2", ] +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + [[package]] name = "oid-registry" version = "0.7.1" @@ -1530,6 +1633,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkg-config" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + [[package]] name = "portable-atomic" version = "1.11.1" @@ -1569,6 +1678,15 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid 0.1.0", +] + [[package]] name = "proc-macro2" version = "1.0.103" @@ -1654,13 +1772,22 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2 0.4.30", +] + [[package]] name = "quote" version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" dependencies = [ - "proc-macro2", + "proc-macro2 1.0.103", ] [[package]] @@ -1887,6 +2014,12 @@ dependencies = [ "ordered-multimap", ] +[[package]] +name = "rustc-demangle" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" + [[package]] name = "rustc-hash" version = "2.1.1" @@ -2084,9 +2217,9 @@ version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -2180,6 +2313,15 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "speedometer" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2789736092fa21b44baf8590acb4b360cb91f0f597bd6c1f1741ca9644c95c1e" +dependencies = [ + "failure", +] + [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -2198,14 +2340,36 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2 1.0.103", + "quote 1.0.43", + "unicode-ident", +] + [[package]] name = "syn" version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.103", + "quote 1.0.43", "unicode-ident", ] @@ -2218,15 +2382,27 @@ dependencies = [ "futures-core", ] +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 1.0.109", + "unicode-xid 0.2.6", +] + [[package]] name = "synstructure" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -2263,6 +2439,18 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "test-generator" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b23be2add79223226e1cb6446cb3e37506a5927089870687a0f1149bb7a073a" +dependencies = [ + "glob", + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -2287,9 +2475,9 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -2298,9 +2486,9 @@ version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -2390,9 +2578,9 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -2507,6 +2695,18 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "unit-prefix" version = "0.5.2" @@ -2627,7 +2827,7 @@ version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ - "quote", + "quote 1.0.43", "wasm-bindgen-macro-support", ] @@ -2638,9 +2838,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ "bumpalo", - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", "wasm-bindgen-shared", ] @@ -2748,9 +2948,9 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -2759,9 +2959,9 @@ version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -3095,10 +3295,10 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", + "synstructure 0.13.2", ] [[package]] @@ -3116,9 +3316,9 @@ version = "0.8.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] @@ -3136,10 +3336,10 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", + "synstructure 0.13.2", ] [[package]] @@ -3176,9 +3376,9 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ - "proc-macro2", - "quote", - "syn", + "proc-macro2 1.0.103", + "quote 1.0.43", + "syn 2.0.114", ] [[package]] diff --git a/cli/Cargo.toml b/cli/Cargo.toml index e506a0d7..d97171f1 100644 --- a/cli/Cargo.toml +++ b/cli/Cargo.toml @@ -11,7 +11,7 @@ clap = { version = "4.5.54", features = ["derive"] } console = "0.16.2" dialoguer = "0.12.0" dirs = "6.0.0" -droplet-rs = { path = "../droplet-rs", version = "0.14" } +droplet-rs = { path = "../libraries/droplet" } fern = { version = "0.7.1", features = ["colored"] } futures = "0.3.31" indicatif = "0.18.3" diff --git a/cli/src/commands/upload/interface.rs b/cli/src/commands/upload/interface.rs index 2a16e552..dab98556 100644 --- a/cli/src/commands/upload/interface.rs +++ b/cli/src/commands/upload/interface.rs @@ -3,7 +3,7 @@ use std::path::Path; use crate::{ cli::UploadInfo, commands::connect::{config::Config, config_option::ConfigOption}, - manifest::{CompressionOption, DepotManifest, generate_v2_manifest}, + manifest::{ClosureFactory, CompressionOption, DepotManifest, generate_v2_manifest}, operator_builder::OperatorBuilder, }; use futures::AsyncWriteExt; @@ -12,13 +12,13 @@ use opendal::{FuturesAsyncWriter, Operator}; use tokio_util::compat::{Compat, FuturesAsyncWriteCompatExt}; pub async fn upload( - info: &UploadInfo, + upload_info: &UploadInfo, config: Config, name: &Option, ) -> anyhow::Result<()> { - let game_id = &info.game_id; - let path = &info.path; - let version_id = &info.version_id; + let game_id = upload_info.game_id.clone(); + let path = upload_info.path.clone(); + let version_id = upload_info.version_id.clone(); let operator = get_operator(config, name)?; @@ -27,28 +27,30 @@ pub async fn upload( info!("Uploading chunks"); let v2_manifest = generate_v2_manifest( - Path::new(path), - async |id: String| { - info!("Uploading chunk id {id}"); - let writer = operator - .writer(&format!("{game_id}/{version_id}/{id}")) - .await - .unwrap() - .into_futures_async_write() - .compat_write(); - writer - }, - |writer: Compat| async { - writer.into_inner().close().await.unwrap(); - }, + Path::new(&path), + ClosureFactory::new( + async move |id: String| { + info!("Uploading chunk id {id}"); + let writer = operator + .writer(&format!("{game_id}/{version_id}/{id}")) + .await + .unwrap() + .into_futures_async_write() + .compat_write(); + writer + }, + |writer: Compat| async { + writer.into_inner().close().await.unwrap(); + }, + ), ) .await?; info!("Finished uploading chunks"); existing_depot_manifest.append( - game_id.to_string(), - version_id.to_string(), + upload_info.game_id.to_string(), + upload_info.version_id.to_string(), CompressionOption::None, ); Ok(()) diff --git a/cli/src/main.rs b/cli/src/main.rs index 0a0be5c4..91cc05e7 100644 --- a/cli/src/main.rs +++ b/cli/src/main.rs @@ -1,3 +1,5 @@ +#![feature(async_fn_traits)] + use crate::commands::connect::config::manage_configuration; use crate::{ cli::{Cli, Commands}, diff --git a/cli/src/manifest.rs b/cli/src/manifest.rs index b84884c2..7ad8d42d 100644 --- a/cli/src/manifest.rs +++ b/cli/src/manifest.rs @@ -1,8 +1,7 @@ use std::{collections::HashMap, path::Path}; -use droplet_rs::manifest::{ - Manifest, generate_manifest_rusty, generate_manifest_rusty_v2, -}; +use async_trait::async_trait; +use droplet_rs::manifest::{Manifest, ManifestWriterFactory, generate_manifest_rusty}; use indicatif::{ProgressBar, ProgressStyle}; use log::info; use serde::{Deserialize, Serialize}; @@ -40,11 +39,60 @@ impl DepotManifest { } } -pub async fn generate_v2_manifest(dir: &Path, factory: F, closer: CloseF) -> anyhow::Result +pub struct ClosureFactory where - W: AsyncWrite + Unpin, - F: AsyncFn(String) -> W, - CloseF: AsyncFn(W) + Writer: AsyncWrite + Unpin, + Factory: AsyncFn(String) -> Writer, + Closer: AsyncFn(Writer), +{ + writer: Factory, + closer: Closer, +} + +#[async_trait] +impl< + W: AsyncWrite + Unpin + Send + Sync, + F: AsyncFn(String) -> W + Send + Sync + 'static, + C: AsyncFn(W) + Send + Sync, +> ManifestWriterFactory for ClosureFactory +where + for<'a> F::CallRefFuture<'a>: Send, + for<'b> C::CallRefFuture<'b>: Send, +{ + type Writer = W; + + async fn create(&self, id: String) -> anyhow::Result { + let func = &self.writer; + let output = func(id).await; + Ok(output) + } + async fn close(&self, writer: Self::Writer) -> anyhow::Result<()> { + let func = &self.closer; + func(writer).await; + Ok(()) + } +} + +impl< + W: AsyncWrite + Unpin + Send + Sync, + F: AsyncFn(String) -> W + Send + Sync + 'static, + C: AsyncFn(W) + Sync, +> ClosureFactory +where + for<'a> F::CallRefFuture<'a>: Send, + for<'b> C::CallRefFuture<'b>: Send, +{ + pub fn new(f: F, c: C) -> Self { + Self { + writer: f, + closer: c, + } + } +} + +pub async fn generate_v2_manifest(dir: &Path, factory: Factory) -> anyhow::Result +where + Factory: ManifestWriterFactory, { let progress_bar = ProgressBar::new(10_000).with_style( ProgressStyle::default_bar() @@ -52,15 +100,15 @@ where .unwrap(), ); - generate_manifest_rusty_v2( + generate_manifest_rusty( dir, |progress| { let progress_int = (progress * 100f32).round() as u64; progress_bar.set_position(progress_int); }, |log| progress_bar.suspend(|| info!("{}", log)), - factory, - closer + Some(&factory), + None, ) .await } diff --git a/desktop/.gitmodules b/desktop/.gitmodules deleted file mode 100644 index df4511d8..00000000 --- a/desktop/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "src-tauri/tailscale/libtailscale"] - path = src-tauri/tailscale/libtailscale - url = https://github.com/tailscale/libtailscale.git -[submodule "libs/drop-base"] - path = libs/drop-base - url = https://github.com/drop-oss/drop-base.git diff --git a/desktop/build.mjs b/desktop/build.mjs index 68d5a184..aeb341d1 100644 --- a/desktop/build.mjs +++ b/desktop/build.mjs @@ -21,13 +21,6 @@ async function spawn(exec, opts) { }); } -const expectedLibs = ["drop-base/package.json"]; - -for (const lib of expectedLibs) { - const path = `./libs/${lib}`; - if (!fs.existsSync(path)) throw `Missing "${expectedLibs}". Run "git submodule update --init --recursive"`; -} - const views = fs.readdirSync(".").filter((view) => { const expectedPath = `./${view}/package.json`; return fs.existsSync(expectedPath); diff --git a/desktop/main/components/LibrarySearch.vue b/desktop/main/components/LibrarySearch.vue index ba48f73d..38f927aa 100644 --- a/desktop/main/components/LibrarySearch.vue +++ b/desktop/main/components/LibrarySearch.vue @@ -36,7 +36,7 @@ as="div" v-for="(nav, navIndex) in filteredNavigation" :key="nav.id" - :class="['first:pt-0 last:pb-0', nav.tools ? 'mt-auto' : '']" + :class="['first:pt-0 last:pb-0', nav.tools && !filteredNavigation[navIndex - 1].tools ? 'mt-auto' : '']" v-slot="{ open }" :default-open="nav.deft" > diff --git a/desktop/main/tailwind.config.js b/desktop/main/tailwind.config.js index 92d4cf72..2e71f1d7 100644 --- a/desktop/main/tailwind.config.js +++ b/desktop/main/tailwind.config.js @@ -1,3 +1,7 @@ +const path = require('path'); + +const dropbase = path.join(__dirname, "../../libraries/base") + /** @type {import('tailwindcss').Config} */ export default { content: [ @@ -7,7 +11,7 @@ export default { "./plugins/**/*.{js,ts}", "./app.vue", "./error.vue", - "../libs/drop-base/**/*.{js,vue,ts}", + `${dropbase}/components/**/*.{js,vue,ts}`, ], theme: { extend: { diff --git a/desktop/src-tauri/Cargo.lock b/desktop/src-tauri/Cargo.lock index 07185eac..32d9f45a 100644 --- a/desktop/src-tauri/Cargo.lock +++ b/desktop/src-tauri/Cargo.lock @@ -2,15 +2,6 @@ # It is not intended for manual editing. version = 4 -[[package]] -name = "addr2line" -version = "0.25.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" -dependencies = [ - "gimli", -] - [[package]] name = "adler2" version = "2.0.1" @@ -82,73 +73,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" -[[package]] -name = "asn1-rs" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" -dependencies = [ - "asn1-rs-derive 0.5.1", - "asn1-rs-impl", - "displaydoc", - "nom", - "num-traits", - "rusticata-macros", - "thiserror 1.0.69", - "time", -] - -[[package]] -name = "asn1-rs" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" -dependencies = [ - "asn1-rs-derive 0.6.0", - "asn1-rs-impl", - "displaydoc", - "nom", - "num-traits", - "rusticata-macros", - "thiserror 2.0.17", - "time", -] - -[[package]] -name = "asn1-rs-derive" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" -dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", - "syn 2.0.114", - "synstructure 0.13.2", -] - -[[package]] -name = "asn1-rs-derive" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" -dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", - "syn 2.0.114", - "synstructure 0.13.2", -] - -[[package]] -name = "asn1-rs-impl" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" -dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", - "syn 2.0.114", -] - [[package]] name = "async-broadcast" version = "0.7.2" @@ -266,8 +190,8 @@ version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -339,8 +263,8 @@ version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -412,21 +336,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" -[[package]] -name = "backtrace" -version = "0.3.76" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", - "windows-link 0.2.1", -] - [[package]] name = "base16ct" version = "0.2.0" @@ -488,8 +397,8 @@ version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "238b90427dfad9da4a9abd60f3ec1cdee6b80454bde49ed37f1781dd8e9dc7f9" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -1071,8 +980,8 @@ dependencies = [ "itoa", "matches", "phf 0.10.1", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "smallvec", "syn 1.0.109", ] @@ -1083,7 +992,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ - "quote 1.0.43", + "quote", "syn 2.0.114", ] @@ -1093,7 +1002,7 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" dependencies = [ - "quote 1.0.43", + "quote", "syn 2.0.114", ] @@ -1128,8 +1037,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -1151,8 +1060,8 @@ checksum = "1247195ecd7e3c85f83c8d2a366e4210d588e802133e1e355180a9870b517ea4" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "strsim", "syn 2.0.114", ] @@ -1164,7 +1073,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core", - "quote 1.0.43", + "quote", "syn 2.0.114", ] @@ -1233,34 +1142,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "der-parser" -version = "9.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" -dependencies = [ - "asn1-rs 0.6.2", - "displaydoc", - "nom", - "num-bigint", - "num-traits", - "rusticata-macros", -] - -[[package]] -name = "der-parser" -version = "10.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07da5016415d5a3c4dd39b11ed26f915f52fc4e0dc197d87908bc916e51bc1a6" -dependencies = [ - "asn1-rs 0.7.1", - "displaydoc", - "nom", - "num-bigint", - "num-traits", - "rusticata-macros", -] - [[package]] name = "deranged" version = "0.4.0" @@ -1284,8 +1165,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ "convert_case", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "rustc_version", "syn 2.0.114", ] @@ -1305,11 +1186,11 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "rustc_version", "syn 2.0.114", - "unicode-xid 0.2.6", + "unicode-xid", ] [[package]] @@ -1413,8 +1294,8 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -1436,8 +1317,8 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -1501,7 +1382,6 @@ dependencies = [ "deranged 0.4.0", "dirs 6.0.0", "download_manager", - "droplet-rs 0.7.3", "filetime", "futures-core", "futures-lite", @@ -1564,43 +1444,10 @@ dependencies = [ ] [[package]] -name = "droplet-rs" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "926e179267dfe9fd891d4141d65d71fba06b6b82cd6834916a6310794df7d739" +name = "droplet_types" +version = "0.1.0" dependencies = [ - "hex 0.4.3", - "rcgen", - "ring", - "time", - "time-macros", - "webpki", - "x509-parser 0.17.0", -] - -[[package]] -name = "droplet-rs" -version = "0.16.3" -dependencies = [ - "anyhow", - "async-trait", - "dyn-clone", - "futures", - "getrandom 0.3.4", - "hex 0.4.3", - "humansize", - "libarchive-drop", - "rcgen", - "ring", "serde", - "serde_json", - "sha2 0.10.9", - "speedometer", - "test-generator", - "time", - "tokio", - "uuid", - "x509-parser 0.17.0", ] [[package]] @@ -1760,8 +1607,8 @@ version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -1828,28 +1675,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", - "syn 1.0.109", - "synstructure 0.12.6", -] - [[package]] name = "fake-simd" version = "0.1.2" @@ -1956,8 +1781,8 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -2059,8 +1884,8 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -2117,7 +1942,7 @@ dependencies = [ "ctr", "database", "download_manager", - "droplet-rs 0.16.3", + "droplet_types", "futures-util", "hex 0.4.3", "log", @@ -2304,12 +2129,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "gimli" -version = "0.32.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" - [[package]] name = "gio" version = "0.18.4" @@ -2380,8 +2199,8 @@ dependencies = [ "heck 0.4.1", "proc-macro-crate 2.0.2", "proc-macro-error", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -2482,8 +2301,8 @@ checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" dependencies = [ "proc-macro-crate 1.3.1", "proc-macro-error", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -3285,24 +3104,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "libarchive-drop" -version = "0.1.1" -dependencies = [ - "libarchive3-sys", - "libc", -] - -[[package]] -name = "libarchive3-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cd3beae8f59a4c7a806523269b5392037577c150446e88d684dfa6de6031ca7" -dependencies = [ - "libc", - "pkg-config", -] - [[package]] name = "libc" version = "0.2.180" @@ -3468,8 +3269,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -3543,8 +3344,8 @@ version = "5.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -3564,12 +3365,6 @@ dependencies = [ "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.8.9" @@ -3655,8 +3450,8 @@ name = "native_model_macro" version = "0.6.4" dependencies = [ "log", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -3727,16 +3522,6 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" -[[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 = "ntapi" version = "0.4.2" @@ -3859,8 +3644,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" dependencies = [ "proc-macro-crate 3.4.0", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -4115,33 +3900,6 @@ dependencies = [ "objc2-security", ] -[[package]] -name = "object" -version = "0.37.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" -dependencies = [ - "memchr", -] - -[[package]] -name = "oid-registry" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d8034d9489cdaf79228eb9f6a3b8d7bb32ba00d6645ebd48eef4077ceb5bd9" -dependencies = [ - "asn1-rs 0.6.2", -] - -[[package]] -name = "oid-registry" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f40cff3dde1b6087cc5d5f5d4d65712f34016a03ed60e9c08dcc392736b5b7" -dependencies = [ - "asn1-rs 0.7.1", -] - [[package]] name = "once_cell" version = "1.21.3" @@ -4193,8 +3951,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -4526,8 +4284,8 @@ dependencies = [ "phf_generator 0.10.0", "phf_shared 0.10.0", "proc-macro-hack", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -4539,8 +4297,8 @@ checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator 0.11.3", "phf_shared 0.11.3", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -4586,8 +4344,8 @@ version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -4767,8 +4525,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 1.0.109", "version_check", ] @@ -4779,8 +4537,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "version_check", ] @@ -4790,15 +4548,6 @@ version = "0.5.20+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] - [[package]] name = "proc-macro2" version = "1.0.105" @@ -4893,22 +4642,13 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -dependencies = [ - "proc-macro2 0.4.30", -] - [[package]] name = "quote" version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" dependencies = [ - "proc-macro2 1.0.105", + "proc-macro2", ] [[package]] @@ -5053,20 +4793,6 @@ dependencies = [ "crossbeam-utils", ] -[[package]] -name = "rcgen" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" -dependencies = [ - "pem", - "ring", - "rustls-pki-types", - "time", - "x509-parser 0.16.0", - "yasna", -] - [[package]] name = "redox_syscall" version = "0.2.16" @@ -5131,8 +4857,8 @@ version = "1.0.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -5187,7 +4913,6 @@ dependencies = [ "chrono", "client", "database", - "droplet-rs 0.7.3", "gethostname", "hex 0.4.3", "http 1.4.0", @@ -5482,12 +5207,6 @@ dependencies = [ "thiserror 1.0.69", ] -[[package]] -name = "rustc-demangle" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" - [[package]] name = "rustc-hash" version = "2.1.1" @@ -5503,15 +5222,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rusticata-macros" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" -dependencies = [ - "nom", -] - [[package]] name = "rustix" version = "0.38.44" @@ -5660,8 +5370,8 @@ version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "serde_derive_internals", "syn 2.0.114", ] @@ -5816,8 +5526,8 @@ version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -5827,8 +5537,8 @@ version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -5851,8 +5561,8 @@ version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -5912,8 +5622,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" dependencies = [ "darling", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -5947,8 +5657,8 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -6230,15 +5940,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "speedometer" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2789736092fa21b44baf8590acb4b360cb91f0f597bd6c1f1741ca9644c95c1e" -dependencies = [ - "failure", -] - [[package]] name = "spin" version = "0.9.8" @@ -6320,8 +6021,8 @@ checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" dependencies = [ "phf_generator 0.11.3", "phf_shared 0.11.3", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", ] [[package]] @@ -6347,25 +6048,14 @@ dependencies = [ "serde_json", ] -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", -] - [[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "unicode-ident", ] @@ -6375,8 +6065,8 @@ version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "unicode-ident", ] @@ -6395,26 +6085,14 @@ dependencies = [ "futures-core", ] -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", - "syn 1.0.109", - "unicode-xid 0.2.6", -] - [[package]] name = "synstructure" version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -6556,8 +6234,8 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -6673,8 +6351,8 @@ dependencies = [ "json-patch", "plist", "png", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "semver", "serde", "serde_json", @@ -6695,8 +6373,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3764a12f886d8245e66b7ee9b43ccc47883399be2019a61d80cf0f4117446fde" dependencies = [ "heck 0.5.0", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", "tauri-codegen", "tauri-utils", @@ -6943,8 +6621,8 @@ dependencies = [ "log", "memchr", "phf 0.11.3", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "regex", "schemars 0.8.22", "semver", @@ -6996,18 +6674,6 @@ dependencies = [ "utf-8", ] -[[package]] -name = "test-generator" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b23be2add79223226e1cb6446cb3e37506a5927089870687a0f1149bb7a073a" -dependencies = [ - "glob", - "proc-macro2 0.4.30", - "quote 0.6.13", - "syn 0.15.44", -] - [[package]] name = "thiserror" version = "1.0.69" @@ -7032,8 +6698,8 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -7043,8 +6709,8 @@ version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -7065,8 +6731,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "482c185e5675626c9a130b3a8f362c322a239338c882f745a1d9a85838b987f0" dependencies = [ "parking_lot 0.11.2", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -7157,8 +6823,8 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -7354,8 +7020,8 @@ version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -7522,12 +7188,6 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - [[package]] name = "unicode-xid" version = "0.2.6" @@ -7626,8 +7286,8 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39d11901c36b3650df7acb0f9ebe624f35b5ac4e1922ecd3c57f444648429594" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -7753,7 +7413,7 @@ version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ - "quote 1.0.43", + "quote", "wasm-bindgen-macro-support", ] @@ -7764,8 +7424,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ "bumpalo", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", "wasm-bindgen-shared", ] @@ -7872,16 +7532,6 @@ dependencies = [ "system-deps", ] -[[package]] -name = "webpki" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" version = "1.0.5" @@ -7911,8 +7561,8 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -8081,8 +7731,8 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -8092,8 +7742,8 @@ version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -8636,42 +8286,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "x509-parser" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcbc162f30700d6f3f82a24bf7cc62ffe7caea42c0b2cba8bf7f3ae50cf51f69" -dependencies = [ - "asn1-rs 0.6.2", - "data-encoding", - "der-parser 9.0.0", - "lazy_static", - "nom", - "oid-registry 0.7.1", - "ring", - "rusticata-macros", - "thiserror 1.0.69", - "time", -] - -[[package]] -name = "x509-parser" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460" -dependencies = [ - "asn1-rs 0.7.1", - "data-encoding", - "der-parser 10.0.0", - "lazy_static", - "nom", - "oid-registry 0.8.1", - "ring", - "rusticata-macros", - "thiserror 2.0.17", - "time", -] - [[package]] name = "xattr" version = "1.6.1" @@ -8698,15 +8312,6 @@ version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" -[[package]] -name = "yasna" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" -dependencies = [ - "time", -] - [[package]] name = "yoke" version = "0.8.1" @@ -8724,10 +8329,10 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", - "synstructure 0.13.2", + "synstructure", ] [[package]] @@ -8804,8 +8409,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" dependencies = [ "proc-macro-crate 3.4.0", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", "zvariant_utils 2.1.0", ] @@ -8817,8 +8422,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aad23e2d2f91cae771c7af7a630a49e755f1eb74f8a46e9f6d5f7a146edf5a37" dependencies = [ "proc-macro-crate 3.4.0", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", "zbus_names 4.3.1", "zvariant 5.9.1", @@ -8862,8 +8467,8 @@ version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -8882,10 +8487,10 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", - "synstructure 0.13.2", + "synstructure", ] [[package]] @@ -8903,8 +8508,8 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -8936,8 +8541,8 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -9009,8 +8614,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" dependencies = [ "proc-macro-crate 3.4.0", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", "zvariant_utils 2.1.0", ] @@ -9022,8 +8627,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba44e1f8f4da9e6e2d25d2a60b116ef8b9d0be174a7685e55bb12a99866279a7" dependencies = [ "proc-macro-crate 3.4.0", - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", "zvariant_utils 3.3.0", ] @@ -9034,8 +8639,8 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "syn 2.0.114", ] @@ -9045,8 +8650,8 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f75c23a64ef8f40f13a6989991e643554d9bef1d682a281160cf0c1bc389c5e9" dependencies = [ - "proc-macro2 1.0.105", - "quote 1.0.43", + "proc-macro2", + "quote", "serde", "syn 2.0.114", "winnow 0.7.14", diff --git a/desktop/src-tauri/Cargo.toml b/desktop/src-tauri/Cargo.toml index b7840e2e..63dfd083 100644 --- a/desktop/src-tauri/Cargo.toml +++ b/desktop/src-tauri/Cargo.toml @@ -41,7 +41,6 @@ database = { path = "./database" } # database deranged = "=0.4.0" dirs = "6.0.0" download_manager = { path = "./download_manager", version = "0.1.0" } # download manager -droplet-rs = "0.7.3" filetime = "0.2.25" futures-core = "0.3.31" futures-lite = "2.6.0" diff --git a/desktop/src-tauri/download_manager/src/depot_manager.rs b/desktop/src-tauri/download_manager/src/depot_manager.rs index 6cfc8b70..8b2f2ff3 100644 --- a/desktop/src-tauri/download_manager/src/depot_manager.rs +++ b/desktop/src-tauri/download_manager/src/depot_manager.rs @@ -1,7 +1,9 @@ use std::{ collections::HashMap, + env, sync::RwLock, - time::{Duration, Instant}, usize, + time::{Duration, Instant}, + usize, }; use futures_util::StreamExt; @@ -34,7 +36,7 @@ struct Depot { manifest: Option, latest_speed: Option, // bytes per second current_downloads: SyncSemaphore, - enabled: bool + enabled: bool, } pub struct DepotManager { @@ -113,10 +115,16 @@ impl DepotManager { for depot in &mut new_depots { if let Err(sync_error) = self.sync_depot(depot).await { warn!("failed to sync depot {}: {:?}", depot.endpoint, sync_error); - depot.enabled = false; + if env::var("FORCE_ENABLE_DEPOTS") + .map(|v| !v.is_empty()) + .unwrap_or(false) + { + } else { + depot.enabled = false; + } } } - + let enabled = new_depots.iter().filter(|v| v.enabled).count(); if enabled == 0 { return Err(RemoteAccessError::NoDepots); diff --git a/desktop/src-tauri/games/Cargo.toml b/desktop/src-tauri/games/Cargo.toml index 703dd08c..4720a872 100644 --- a/desktop/src-tauri/games/Cargo.toml +++ b/desktop/src-tauri/games/Cargo.toml @@ -14,7 +14,7 @@ crossbeam-channel = "0.5.15" ctr = "0.9.2" database = { path = "../database", version = "0.1.0" } download_manager = { path = "../download_manager", version = "0.1.0" } -droplet-rs = { path = "../../../libraries/droplet" } +droplet_types = { path = "../../../libraries/droplet_types" } futures-util = "*" hex = "0.4.3" log = "0.4.28" diff --git a/desktop/src-tauri/games/src/downloads/download_agent.rs b/desktop/src-tauri/games/src/downloads/download_agent.rs index db34d96a..9718ca27 100644 --- a/desktop/src-tauri/games/src/downloads/download_agent.rs +++ b/desktop/src-tauri/games/src/downloads/download_agent.rs @@ -11,7 +11,7 @@ use download_manager::util::download_thread_control_flag::{ DownloadThreadControl, DownloadThreadControlFlag, }; use download_manager::util::progress_object::{ProgressHandle, ProgressObject, ProgressType}; -use droplet_rs::manifest::{ChunkData, Manifest}; +use droplet_types::{ChunkData, Manifest}; use futures_util::StreamExt; use futures_util::stream::FuturesUnordered; use log::{debug, error, info, warn}; diff --git a/desktop/src-tauri/games/src/downloads/download_logic.rs b/desktop/src-tauri/games/src/downloads/download_logic.rs index aa8ea4a3..4d9ab3ab 100644 --- a/desktop/src-tauri/games/src/downloads/download_logic.rs +++ b/desktop/src-tauri/games/src/downloads/download_logic.rs @@ -13,7 +13,7 @@ use download_manager::util::download_thread_control_flag::{ DownloadThreadControl, DownloadThreadControlFlag, }; use download_manager::util::progress_object::ProgressHandle; -use droplet_rs::manifest::ChunkData; +use droplet_types::ChunkData; use futures_util::StreamExt as _; use log::{debug, info}; use remote::auth::generate_authorization_header; diff --git a/desktop/src-tauri/remote/Cargo.toml b/desktop/src-tauri/remote/Cargo.toml index 2fb28fba..85d38e6f 100644 --- a/desktop/src-tauri/remote/Cargo.toml +++ b/desktop/src-tauri/remote/Cargo.toml @@ -10,7 +10,6 @@ bytes = "1.11.0" chrono = "0.4.42" client = { path = "../client", version = "0.1.0" } database = { path = "../database", version = "0.1.0" } -droplet-rs = "0.7.3" gethostname = "1.0.2" hex = "0.4.3" http = "1.3.1" diff --git a/desktop/src-tauri/tauri.conf.json b/desktop/src-tauri/tauri.conf.json index 4a0ee9e4..bb111300 100644 --- a/desktop/src-tauri/tauri.conf.json +++ b/desktop/src-tauri/tauri.conf.json @@ -27,7 +27,7 @@ }, "bundle": { "active": true, - "targets": ["nsis", "deb", "rpm", "dmg", "appimage"], + "targets": ["nsis", "deb", "rpm", "dmg"], "windows": { "nsis": { "installMode": "both" diff --git a/libraries/droplet/.gitignore b/libraries/droplet/.gitignore index 340991a0..aba9ad45 100644 --- a/libraries/droplet/.gitignore +++ b/libraries/droplet/.gitignore @@ -21,6 +21,7 @@ target/ /target perf.data +perf.data.old flamegraph.svg *.json diff --git a/libraries/droplet/.gitmodules b/libraries/droplet/.gitmodules deleted file mode 100644 index d471795d..00000000 --- a/libraries/droplet/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "libarchive-rust"] - path = libarchive-rust - url = https://github.com/Drop-OSS/libarchive-rust.git diff --git a/libraries/droplet/Cargo.lock b/libraries/droplet/Cargo.lock index 2a1665cf..9a38602f 100644 --- a/libraries/droplet/Cargo.lock +++ b/libraries/droplet/Cargo.lock @@ -19,9 +19,9 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "anyhow" -version = "1.0.100" +version = "1.0.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" [[package]] name = "asn1-rs" @@ -51,7 +51,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 2.0.12", + "thiserror 2.0.18", "time", ] @@ -61,10 +61,10 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", - "synstructure 0.13.1", + "synstructure 0.13.2", ] [[package]] @@ -73,10 +73,10 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3109e49b1e4909e9db6515a30c633684d68cdeaa252f215214cb4fa1a5bfee2c" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", - "synstructure 0.13.1", + "synstructure 0.13.2", ] [[package]] @@ -85,8 +85,8 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", ] @@ -96,16 +96,16 @@ version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", ] [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" @@ -128,6 +128,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" + [[package]] name = "block-buffer" version = "0.10.4" @@ -139,30 +145,31 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" [[package]] name = "bytes" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "cc" -version = "1.2.17" +version = "1.2.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" +checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1" dependencies = [ + "find-msvc-tools", "shlex", ] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cpufeatures" @@ -185,9 +192,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.8.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575f75dfd25738df5b91b8e43e14d44bda14637a58fae779fd2b064f8bf3e010" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" [[package]] name = "der-parser" @@ -219,9 +226,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.4.1" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cfac68e08048ae1883171632c2aef3ebc555621ae56fbccce1cbf22dd7f058" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" dependencies = [ "powerfmt", ] @@ -242,8 +249,8 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", ] @@ -253,6 +260,7 @@ version = "0.16.3" dependencies = [ "anyhow", "async-trait", + "droplet_types", "dyn-clone", "futures", "getrandom 0.3.4", @@ -272,12 +280,35 @@ dependencies = [ "x509-parser 0.17.0", ] +[[package]] +name = "droplet_types" +version = "0.1.0" +dependencies = [ + "serde", +] + [[package]] name = "dyn-clone" version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + [[package]] name = "failure" version = "0.1.8" @@ -294,17 +325,29 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 1.0.109", "synstructure 0.12.6", ] [[package]] -name = "futures" -version = "0.3.31" +name = "find-msvc-tools" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "futures" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" dependencies = [ "futures-channel", "futures-core", @@ -317,9 +360,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" dependencies = [ "futures-core", "futures-sink", @@ -327,15 +370,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" [[package]] name = "futures-executor" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" dependencies = [ "futures-core", "futures-task", @@ -344,38 +387,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" [[package]] name = "futures-macro" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", ] [[package]] name = "futures-sink" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" [[package]] name = "futures-task" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" [[package]] name = "futures-util" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" dependencies = [ "futures-channel", "futures-core", @@ -385,7 +428,6 @@ dependencies = [ "futures-task", "memchr", "pin-project-lite", - "pin-utils", "slab", ] @@ -401,9 +443,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "libc", @@ -418,10 +460,23 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", ] +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + [[package]] name = "gimli" version = "0.32.3" @@ -434,6 +489,27 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hex" version = "0.4.3" @@ -450,16 +526,34 @@ dependencies = [ ] [[package]] -name = "itoa" -version = "1.0.15" +name = "id-arena" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" [[package]] name = "js-sys" -version = "0.3.83" +version = "0.3.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" +checksum = "797146bb2677299a1eb6b7b50a890f4c361b29ef967addf5b2fa45dae1bb6d7d" dependencies = [ "once_cell", "wasm-bindgen", @@ -471,6 +565,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libarchive-drop" version = "0.1.1" @@ -491,21 +591,27 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.182" +version = "0.2.183" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" [[package]] name = "libm" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" +checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "memchr" -version = "2.7.4" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" [[package]] name = "minimal-lexical" @@ -524,9 +630,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" dependencies = [ "libc", "wasi", @@ -555,9 +661,9 @@ dependencies = [ [[package]] name = "num-conv" -version = "0.1.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" [[package]] name = "num-integer" @@ -606,31 +712,25 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.3" +version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" [[package]] name = "pem" -version = "3.0.5" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" +checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ "base64", - "serde", + "serde_core", ] [[package]] name = "pin-project-lite" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" @@ -644,6 +744,16 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2 1.0.106", + "syn 2.0.117", +] + [[package]] name = "proc-macro2" version = "0.4.30" @@ -655,9 +765,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.94" +version = "1.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" dependencies = [ "unicode-ident", ] @@ -673,11 +783,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.40" +version = "1.0.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" dependencies = [ - "proc-macro2 1.0.94", + "proc-macro2 1.0.106", ] [[package]] @@ -686,6 +796,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "rcgen" version = "0.13.2" @@ -708,7 +824,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -731,9 +847,12 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd" +dependencies = [ + "zeroize", +] [[package]] name = "rustversion" @@ -742,10 +861,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] -name = "ryu" -version = "1.0.20" +name = "semver" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] name = "serde" @@ -772,22 +891,22 @@ version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", ] [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -809,18 +928,19 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.6" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] [[package]] name = "slab" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "speedometer" @@ -848,8 +968,8 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "unicode-ident", ] @@ -859,8 +979,8 @@ version = "2.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "unicode-ident", ] @@ -870,20 +990,20 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 1.0.109", "unicode-xid 0.2.6", ] [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", ] @@ -910,11 +1030,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.18", ] [[package]] @@ -923,48 +1043,48 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", ] [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", ] [[package]] name = "time" -version = "0.3.41" +version = "0.3.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" dependencies = [ "deranged", "itoa", "num-conv", "powerfmt", - "serde", + "serde_core", "time-core", "time-macros", ] [[package]] name = "time-core" -version = "0.1.4" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" [[package]] name = "time-macros" -version = "0.2.22" +version = "0.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" dependencies = [ "num-conv", "time-core", @@ -972,9 +1092,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.48.0" +version = "1.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" dependencies = [ "bytes", "libc", @@ -987,12 +1107,12 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" dependencies = [ - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", ] @@ -1004,9 +1124,9 @@ checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "unicode-ident" -version = "1.0.18" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-xid" @@ -1028,11 +1148,11 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "uuid" -version = "1.19.0" +version = "1.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" +checksum = "5ac8b6f42ead25368cf5b098aeb3dc8a1a2c05a3eee8a9a1a68c640edbfc79d9" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.2", "js-sys", "wasm-bindgen", ] @@ -1045,24 +1165,33 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.1+wasi-0.2.4" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" dependencies = [ "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.106" +version = "0.2.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" +checksum = "7dc0882f7b5bb01ae8c5215a1230832694481c1a4be062fd410e12ea3da5b631" dependencies = [ "cfg-if", "once_cell", @@ -1073,36 +1202,70 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.106" +version = "0.2.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" +checksum = "75973d3066e01d035dbedaad2864c398df42f8dd7b1ea057c35b8407c015b537" dependencies = [ - "quote 1.0.40", + "quote 1.0.45", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.106" +version = "0.2.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" +checksum = "91af5e4be765819e0bcfee7322c14374dc821e35e72fa663a830bbc7dc199eac" dependencies = [ "bumpalo", - "proc-macro2 1.0.94", - "quote 1.0.40", + "proc-macro2 1.0.106", + "quote 1.0.45", "syn 2.0.117", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.106" +version = "0.2.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" +checksum = "c9bf0406a78f02f336bf1e451799cca198e8acde4ffa278f0fb20487b150a633" dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "windows-link" version = "0.2.1" @@ -1193,9 +1356,91 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "wit-bindgen" -version = "0.46.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2 1.0.106", + "quote 1.0.45", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid 0.2.6", + "wasmparser", +] [[package]] name = "x509-parser" @@ -1229,7 +1474,7 @@ dependencies = [ "oid-registry 0.8.1", "ring", "rusticata-macros", - "thiserror 2.0.12", + "thiserror 2.0.18", "time", ] @@ -1241,3 +1486,15 @@ checksum = "e17bb3549cc1321ae1296b9cdc2698e2b6cb1992adfa19a8c72e5b7a738f44cd" dependencies = [ "time", ] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/libraries/droplet/Cargo.toml b/libraries/droplet/Cargo.toml index 0eec32d2..c59cbf89 100644 --- a/libraries/droplet/Cargo.toml +++ b/libraries/droplet/Cargo.toml @@ -7,6 +7,7 @@ license = "AGPL-3.0-only" description = "Droplet is a `napi.rs` Rust/Node.js package full of high-performance and low-level utils for Drop" [dependencies] +droplet_types = { path = "../droplet_types" } hex = "0.4.3" time = "0.3.41" ring = "0.17.14" diff --git a/libraries/droplet/libarchive-rust b/libraries/droplet/libarchive-rust deleted file mode 160000 index fdb73ef2..00000000 --- a/libraries/droplet/libarchive-rust +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fdb73ef2dedb031e396153113ff9eee4ee082dc2 diff --git a/libraries/droplet/src/lib.rs b/libraries/droplet/src/lib.rs index 666a17bc..b13f620c 100644 --- a/libraries/droplet/src/lib.rs +++ b/libraries/droplet/src/lib.rs @@ -1,13 +1,14 @@ #![deny(clippy::all)] #![feature(impl_trait_in_bindings)] - +#![feature(nonpoison_mutex)] +#![feature(sync_nonpoison)] pub mod file_utils; pub mod manifest; pub mod ssl; pub mod versions; pub mod vm; -extern crate libarchive_drop; +pub use manifest::{CHUNK_SIZE, MAX_FILE_COUNT}; #[cfg(test)] pub mod tests; diff --git a/libraries/droplet/src/main.rs b/libraries/droplet/src/main.rs index b37cc682..c8fe74bf 100644 --- a/libraries/droplet/src/main.rs +++ b/libraries/droplet/src/main.rs @@ -1,8 +1,21 @@ use std::{env, path::PathBuf}; -use droplet_rs::manifest::generate_manifest_rusty; +use droplet_rs::manifest::{ManifestWriterFactory, generate_manifest_rusty}; use tokio::runtime::Handle; +struct SinkFactory {} +#[async_trait::async_trait] +impl ManifestWriterFactory for SinkFactory { + type Writer = tokio::io::Sink; + async fn create(&self, _id: String) -> anyhow::Result { + Ok(tokio::io::sink()) + } + + async fn close(&self, _writer: Self::Writer) -> anyhow::Result<()> { + Ok(()) + } +} + #[tokio::main] pub async fn main() { let mut args = env::args(); @@ -17,6 +30,7 @@ pub async fn main() { |message| { println!("{}", message); }, + Some(&SinkFactory {}), None, ) .await diff --git a/libraries/droplet/src/manifest.rs b/libraries/droplet/src/manifest.rs index f4c80138..145558c4 100644 --- a/libraries/droplet/src/manifest.rs +++ b/libraries/droplet/src/manifest.rs @@ -1,162 +1,172 @@ -use std::{ - collections::HashMap, - mem, - path::Path, - sync::{ - atomic::{AtomicU64, Ordering}, - Arc, - }, -}; +use std::{collections::HashMap, ops::Not, path::Path}; use anyhow::anyhow; +use async_trait::async_trait; +use futures::StreamExt; use hex::ToHex as _; use humansize::{format_size, BINARY}; -use serde::{Deserialize, Serialize}; use sha2::{Digest as _, Sha256}; -use tokio::{ - io::AsyncReadExt as _, - join, - sync::{Mutex, Semaphore}, - task::JoinSet, -}; +use tokio::io::AsyncWriteExt; +use tokio::io::{AsyncReadExt as _, AsyncWrite}; +use tokio::sync::Semaphore; +pub use droplet_types::{ChunkData, FileEntry, Manifest}; -#[derive(Serialize, Deserialize, Clone)] -pub struct FileEntry { - pub filename: String, - pub start: usize, - pub length: usize, - pub permissions: u32, -} -#[derive(Serialize, Deserialize, Clone)] -pub struct ChunkData { - pub files: Vec, - pub checksum: String, - pub iv: [u8; 16], -} - -#[derive(Serialize, Deserialize)] -pub struct Manifest { - pub version: String, - pub chunks: HashMap, - pub size: u64, - pub key: [u8; 16], -} - -const CHUNK_SIZE: u64 = 1024 * 1024 * 64; -const MAX_FILE_COUNT: usize = 512; +pub const CHUNK_SIZE: u64 = 1024 * 1024 * 64; +pub const MAX_FILE_COUNT: usize = 512; use crate::versions::{ create_backend_constructor, types::{VersionBackend, VersionFile}, }; -pub async fn generate_manifest_rusty( - dir: &Path, - progress_sfn: V, - log_sfn: T, - reader_semaphore: Option>, -) -> anyhow::Result { - let backend = - create_backend_constructor(dir).ok_or(anyhow!("Could not create backend for path."))?()?; - - let required_single_file = backend.require_whole_files(); +#[async_trait] +pub trait ManifestWriterFactory: Send + Sync { + type Writer: AsyncWrite + Unpin; + async fn create(&self, id: String) -> anyhow::Result; + async fn close(&self, writer: Self::Writer) -> anyhow::Result<()>; +} +pub async fn generate_manifest_rusty( + dir: P, + progress_sfn: ProgFn, + log_sfn: LogFn, + factory: Option<&dyn ManifestWriterFactory>, + semaphore: Option<&Semaphore>, +) -> anyhow::Result +where + P: AsRef, + LogFn: Fn(String) + Clone, + ProgFn: Fn(f32), + Writer: AsyncWrite + Unpin, +{ + let backend = create_backend_constructor(dir).ok_or(anyhow!( + "Could not create backend for path. Is this structure supported?" + ))?()?; let mut files = backend.list_files().await?; - files.sort_by_key(|b| std::cmp::Reverse(b.size)); - // Filepath to chunk data - let mut chunks: Vec> = Vec::new(); - let mut current_chunk: Vec<(VersionFile, u64, u64)> = Vec::new(); + files.sort_by(|a, b| b.size.cmp(&a.size)); - log_sfn("organizing files into chunks...".to_string()); + log_sfn("organising files into chunks...".to_string()); - if required_single_file { - for version_file in files { - if version_file.size >= CHUNK_SIZE { - let size = version_file.size; - chunks.push(vec![(version_file, 0, size)]); - - continue; - } - - let mut current_size = current_chunk.iter().map(|v| v.2).sum::(); - - let size = version_file.size; - current_chunk.push((version_file, 0, size)); - - current_size += size; - - if current_size >= CHUNK_SIZE { - // Pop current and add, then reset - let new_chunk = std::mem::take(&mut current_chunk); - chunks.push(new_chunk); - } - - if current_chunk.len() >= MAX_FILE_COUNT { - chunks.push(std::mem::take(&mut current_chunk)); - } - - continue; - } - } else { - for version_file in files { - if current_chunk.len() >= MAX_FILE_COUNT { - chunks.push(std::mem::take(&mut current_chunk)); - } - - let current_size = current_chunk.iter().map(|v| v.2).sum::(); - - if version_file.size + current_size < CHUNK_SIZE { - let size = version_file.size; - current_chunk.push((version_file, 0, size)); - - continue; - } - - // Fill up current chunk - let remaining = CHUNK_SIZE - current_size; - current_chunk.push((version_file.clone(), 0, remaining)); - chunks.push(std::mem::take(&mut current_chunk)); - - // This is our offset in our current file - let mut offset = remaining; - while offset < version_file.size { - let length = CHUNK_SIZE.min(version_file.size - offset); - if length == CHUNK_SIZE { - chunks.push(vec![(version_file.clone(), offset, length)]); - } else { - current_chunk.push((version_file.clone(), offset, length)); - } - offset += length; - } - } - } - - if !current_chunk.is_empty() { - chunks.push(current_chunk); - } + let chunks = organise_files(files, backend.require_whole_files()); log_sfn(format!( "organized into {} chunks, generating checksums...", chunks.len() )); + let manifest = read_chunks_and_generate_manifest( + backend.as_ref(), + chunks, + progress_sfn, + &log_sfn, + factory, + semaphore, + ) + .await?; - let manifest: Arc>> = Arc::new(Mutex::new(HashMap::new())); - let total_manifest_length = Arc::new(AtomicU64::new(0)); + let mut key = [0u8; 16]; + getrandom::fill(&mut key).map_err(|err| anyhow!("failed to generate key: {:?}", err))?; - // SAFETY: we .join_all() the futures using this - let backend: &'static (dyn VersionBackend + Send + Sync) = unsafe { mem::transmute(&*backend) }; + let total_manifest_length = manifest + .values() + .map(|value| value.files.iter().map(|f| f.length as u64).sum::()) + .sum::(); - let mut futures: JoinSet> = JoinSet::new(); - let (send_log, mut recieve_log) = tokio::sync::mpsc::channel(16); - let chunks_length = chunks.len(); - for (index, chunk) in chunks.into_iter().enumerate() { - let send_log = send_log.clone(); - let total_manifest_length = total_manifest_length.clone(); - let manifest = manifest.clone(); - let reader_semaphore = reader_semaphore.clone(); - futures.spawn(async move { - let mut read_buf = vec![0u8; 1024 * 1024 * 8]; + Ok(Manifest { + version: "2".to_string(), + chunks: manifest, + size: total_manifest_length, + key, + }) +} + +fn organise_files( + files: Vec, + require_whole_files: bool, +) -> Vec> { + let mut chunks = Vec::new(); + let mut current_chunk = Vec::new(); + + for version_file in files { + if current_chunk.len() >= MAX_FILE_COUNT { + // Pop current chunk + chunks.push(std::mem::take(&mut current_chunk)); + println!("Chunks: {}", chunks.len()); + } + let current_chunk_size = current_chunk + .iter() + .map(|(_, _, length)| *length) + .sum::(); + let version_file_size = version_file.size; + + if require_whole_files { + // If the current chunk is larger than chunk size, there's no point adding + // it to the current_chunk. Just push it by itself + if version_file_size >= CHUNK_SIZE { + chunks.push(vec![(version_file, 0, version_file_size)]); + println!("Chunks: {}", chunks.len()); + continue; + } + + current_chunk.push((version_file, 0, version_file_size)); + if current_chunk_size + version_file_size >= CHUNK_SIZE { + // Pop current chunk + chunks.push(std::mem::take(&mut current_chunk)); + println!("Chunks: {}", chunks.len()); + } + } else { + // Enough space for it to be put in immediately + if version_file_size + current_chunk_size < CHUNK_SIZE { + current_chunk.push((version_file, 0, version_file_size)); + continue; + } + + let bytes_free_in_existing_chunk = CHUNK_SIZE - current_chunk_size; + current_chunk.push((version_file.clone(), 0, bytes_free_in_existing_chunk)); + chunks.push(std::mem::take(&mut current_chunk)); + + // Loop over remaining data and create sufficient chunks to use it + let mut offset = bytes_free_in_existing_chunk; + while offset < version_file_size { + let length = CHUNK_SIZE.min(version_file_size - offset); + if length == CHUNK_SIZE { + chunks.push(vec![(version_file.clone(), offset, length)]); + println!("Chunks: {}", chunks.len()); + } else { + current_chunk.push((version_file.clone(), offset, length)); + println!("Chunks: {}", chunks.len()); + } + offset += length; + } + } + } + if current_chunk.is_empty().not() { + chunks.push(current_chunk); + println!("Pushed final chunk: {}", chunks.len()); + } + println!("Chunks: {}", chunks.len()); + chunks +} + +async fn read_chunks_and_generate_manifest( + backend: &(dyn VersionBackend + Send + Sync), + chunks: Vec>, + progress_sfn: ProgFn, + log_sfn: &LogFn, + factory: Option<&dyn ManifestWriterFactory>, + semaphore: Option<&Semaphore>, +) -> anyhow::Result> +where + LogFn: Fn(String), + ProgFn: Fn(f32), + Writer: AsyncWrite + Unpin, +{ + let total_chunk_count = chunks.len(); + + let futures = chunks.into_iter().enumerate().map(|(index, chunk)| { + // To make the borrow checker happy + async move { + let mut read_buf = vec![0; 1024 * 1024 * 64]; let uuid = uuid::Uuid::new_v4().to_string(); let mut hasher = Sha256::new(); @@ -168,91 +178,92 @@ pub async fn generate_manifest_rusty( checksum: String::new(), iv, }; - - let mut chunk_length = 0; - + let mut chunk_length = 0u64; + let mut writer = match factory { + Some(factory) => Some(factory.create(uuid.clone()).await?), + None => None, + }; for (file, start, length) in chunk { - let permit = if let Some(reader_semaphore) = &reader_semaphore { - Some(reader_semaphore.acquire().await?) + let permit = if let Some(semaphore) = &semaphore { + Some(semaphore.acquire().await?) } else { None }; - - let mut reader = backend.reader(&file, start, start + length).await?; - - let mut total = 0; - - loop { - let amount = reader.read(&mut read_buf).await?; - if amount == 0 { - break; - } - total += amount; - hasher.update(&read_buf[0..amount]); - } - - if total as u64 > length { - panic!("read too much: target {}, got {}", length, total); - } - + chunk_data.files.push( + read_and_generate_chunk_file_data( + backend, + &file, + start, + length, + &mut hasher, + &mut read_buf, + &mut writer, + ) + .await?, + ); chunk_length += length; - - chunk_data.files.push(FileEntry { - filename: file.relative_filename, - start: start.try_into().unwrap(), - length: length.try_into().unwrap(), - permissions: file.permission, - }); - drop(permit); } - - send_log - .send(format!( - "created chunk of size {} ({}b) from {} files (index {})", - format_size(chunk_length, BINARY), - chunk_length, - chunk_data.files.len(), - index - )) - .await?; - - total_manifest_length.fetch_add(chunk_length, Ordering::Relaxed); - + if let Some(factory) = factory { + factory.close(writer.expect("Failed to get writer")).await?; + } let hash: String = hasher.finalize().encode_hex(); chunk_data.checksum = hash; - { - let mut manifest_lock = manifest.lock().await; - manifest_lock.insert(uuid, chunk_data); - }; - Ok(()) - }); + log_sfn(format!( + "created chunk of size {} ({}b) from {} files (index {})", + format_size(chunk_length, BINARY), + chunk_length, + chunk_data.files.len(), + index + )); + + Ok::<_, anyhow::Error>((uuid, chunk_data)) + } + }); + let mut stream = futures::stream::iter(futures) + .buffer_unordered(semaphore.map(|s| s.available_permits()).unwrap_or(4)) + .enumerate(); + let mut results = HashMap::new(); + let mut current_progress = 0f32; + while let Some((_, res)) = stream.next().await { + let (id, data) = res?; + current_progress += 1.0; + progress_sfn((current_progress / total_chunk_count as f32) * 100.0f32); + results.insert(id, data); } - drop(send_log); - join!( - async move { - let mut current_progress = 0f32; - let total_progress = chunks_length as f32; - while let Some(message) = recieve_log.recv().await { - log_sfn(message); - current_progress += 1.0f32; - progress_sfn((current_progress / total_progress) * 100.0f32) - } - }, - futures.join_all() - ); + Ok(results) +} +async fn read_and_generate_chunk_file_data( + backend: &(dyn VersionBackend + Sync + Send), + file: &VersionFile, + start: u64, + length: u64, + hasher: &mut Sha256, + read_buf: &mut [u8], + writer: &mut Option, +) -> anyhow::Result +where + Writer: AsyncWrite + Unpin, +{ + let mut reader = backend.reader(file, start, start + length).await?; - let manifest = manifest.lock().await; - let manifest = manifest.clone(); + loop { + let amount = reader.read(read_buf).await?; - let mut key = [0u8; 16]; - getrandom::fill(&mut key).map_err(|err| anyhow!("failed to generate key: {:?}", err))?; + if amount == 0 { + break; + } + if let Some(writer) = writer.as_mut() { + writer.write_all(&read_buf[0..amount]).await?; + } + hasher.update(&read_buf[0..amount]); + } - Ok(Manifest { - version: "2".to_string(), - chunks: manifest, - size: total_manifest_length.fetch_add(0, Ordering::Relaxed), - key, + Ok(FileEntry { + filename: file.relative_filename.clone(), + start: start.try_into().unwrap(), + length: length.try_into().unwrap(), + permissions: file.permission, }) } diff --git a/libraries/droplet/src/tests.rs b/libraries/droplet/src/tests.rs index 0b81dd15..c4ac0079 100644 --- a/libraries/droplet/src/tests.rs +++ b/libraries/droplet/src/tests.rs @@ -4,8 +4,9 @@ extern crate test_generator; use std::path::Path; use test_generator::test_resources; +use tokio::io::SimplexStream; -use crate::manifest::generate_manifest_rusty; +use crate::manifest::{generate_manifest_rusty, ManifestWriterFactory}; #[test_resources("testfiles/**/*.7z")] fn manifest_gen(resource: &str) { @@ -22,6 +23,7 @@ fn manifest_gen(resource: &str) { |message| { println!("({}) {}", filepath.display(), message); }, + None::<&dyn ManifestWriterFactory>, // Dummy type signature, not actually used None, ) .await diff --git a/libraries/droplet/src/versions/archive_backend.rs b/libraries/droplet/src/versions/archive_backend.rs index 2c0b4f22..01d27476 100644 --- a/libraries/droplet/src/versions/archive_backend.rs +++ b/libraries/droplet/src/versions/archive_backend.rs @@ -28,12 +28,12 @@ impl ZipVersionBackend { } } -struct ArchiveReader<'a> { +struct ArchiveReader { archive: FileReader, - prev_block: Option<&'a [u8]>, + prev_block: Option>, } -impl<'a> AsyncRead for ArchiveReader<'a> { +impl AsyncRead for ArchiveReader { fn poll_read( mut self: std::pin::Pin<&mut Self>, _cx: &mut std::task::Context<'_>, @@ -41,9 +41,8 @@ impl<'a> AsyncRead for ArchiveReader<'a> { ) -> std::task::Poll> { if let Some(block) = &mut self.prev_block { let to_read = buf.remaining().min(block.len()); - let result = block.split_off(..to_read); - let result = result.unwrap(); // SAFETY: above .min statement - buf.put_slice(result); + let result = block.split_off(to_read); + buf.put_slice(&result); // If the block is empty, we can read more if block.is_empty() { @@ -52,27 +51,31 @@ impl<'a> AsyncRead for ArchiveReader<'a> { return Poll::Ready(Ok(())); } } - let block = match self.archive.read_block() { - Ok(v) => v, - Err(err) => return Poll::Ready(Err(std::io::Error::other(err.to_string()))), - }; + let prev_block_update = { + let block = match self.archive.read_block() { + Ok(v) => v, + Err(err) => return Poll::Ready(Err(std::io::Error::other(err.to_string()))), + }; - let mut block = match block { - Some(v) => v, - None => return Poll::Ready(Ok(())), - }; + let mut block = match block { + Some(v) => v, + None => return Poll::Ready(Ok(())), + }; - let write_amount = buf.remaining().min(block.len()); - let to_write = block.split_off(..write_amount); - let to_write = to_write.unwrap(); // SAFETY: above .min statement - buf.put_slice(to_write); + let write_amount = buf.remaining().min(block.len()); + let to_write = block.split_off(..write_amount); + let to_write = to_write.unwrap(); // SAFETY: above .min statement + buf.put_slice(to_write); - if !block.is_empty() { - #[cfg(debug_assertions)] - if self.prev_block.is_some() { - panic!("replacing prev_block while it contains data") + if !block.is_empty() { + Some(block[buf.remaining()..].to_vec()) + } else { + None } - self.prev_block.replace(&block[buf.remaining()..]); + }; + + if let Some(prev_block) = prev_block_update { + self.prev_block.replace(prev_block); } Poll::Ready(Ok(())) diff --git a/libraries/droplet/src/versions/mod.rs b/libraries/droplet/src/versions/mod.rs index 89874d1b..6b2ba0a3 100644 --- a/libraries/droplet/src/versions/mod.rs +++ b/libraries/droplet/src/versions/mod.rs @@ -5,10 +5,11 @@ use std::{ use anyhow::Result; -use crate::versions::{ - archive_backend::ZipVersionBackend, path_backend::PathVersionBackend, types::VersionBackend, -}; +use crate::versions::{path_backend::PathVersionBackend, types::VersionBackend}; +use crate::versions::archive_backend::ZipVersionBackend; + +// libarchive backend is Linux-only for now pub mod archive_backend; pub mod path_backend; @@ -33,10 +34,13 @@ const SUPPORTED_FILE_EXTENSIONS: [&str; 11] = [ ]; pub mod types; -#[allow(clippy::type_complexity)] -pub fn create_backend_constructor<'a>( - path: &Path, -) -> Option Result>>> { +pub fn create_backend_constructor<'a, P>( + path: P, +) -> Option Result>>> +where + P: AsRef, +{ + let path = path.as_ref(); if !path.exists() { return None; } @@ -49,8 +53,7 @@ pub fn create_backend_constructor<'a>( })); }; - let file_extension = path.extension().and_then(|v| v.to_str())?; - + let file_extension = path.extension().map(|v| v.to_str()).flatten()?; if SUPPORTED_FILE_EXTENSIONS.contains(&file_extension) { let buf = path.to_path_buf(); return Some(Box::new(move || Ok(Box::new(ZipVersionBackend::new(buf)?)))); diff --git a/libraries/droplet_types/.gitignore b/libraries/droplet_types/.gitignore new file mode 100644 index 00000000..aba9ad45 --- /dev/null +++ b/libraries/droplet_types/.gitignore @@ -0,0 +1,28 @@ +# Generated by Cargo +# will have compiled files and executables +debug/ +target/ + +# These are backup files generated by rustfmt +**/*.rs.bk + +# MSVC Windows builds of rustc generate these, which store debugging information +*.pdb + +# RustRover +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# Added by cargo + +/target + +perf.data +perf.data.old +flamegraph.svg +*.json + +.direnv \ No newline at end of file diff --git a/libraries/droplet_types/Cargo.lock b/libraries/droplet_types/Cargo.lock new file mode 100644 index 00000000..804f9a59 --- /dev/null +++ b/libraries/droplet_types/Cargo.lock @@ -0,0 +1,75 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "droplet_types" +version = "0.1.0" +dependencies = [ + "serde", +] + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" diff --git a/libraries/droplet_types/Cargo.toml b/libraries/droplet_types/Cargo.toml new file mode 100644 index 00000000..c30a5d8f --- /dev/null +++ b/libraries/droplet_types/Cargo.toml @@ -0,0 +1,7 @@ +[package] +name = "droplet_types" +version = "0.1.0" +edition = "2024" + +[dependencies] +serde = { version = "*", features = ["derive"] } diff --git a/libraries/droplet_types/README.md b/libraries/droplet_types/README.md new file mode 100644 index 00000000..a3ab780d --- /dev/null +++ b/libraries/droplet_types/README.md @@ -0,0 +1,6 @@ +# droplet_types + +Shared types between the cross-platform client and the droplet-rs crate. + + +Split off from droplet-rs because of cross-compiling issues with the desktop client, and there's no need to compile the entirety of droplet-rs if we're only using a few types. \ No newline at end of file diff --git a/libraries/droplet_types/src/lib.rs b/libraries/droplet_types/src/lib.rs new file mode 100644 index 00000000..b1b0ab8b --- /dev/null +++ b/libraries/droplet_types/src/lib.rs @@ -0,0 +1,27 @@ +use std::collections::HashMap; + +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Clone)] +pub struct FileEntry { + pub filename: String, + pub start: usize, + pub length: usize, // TODO: Replace with u64 for 32 bit clients + pub permissions: u32, +} + +#[derive(Serialize, Deserialize, Clone)] +pub struct ChunkData { + pub files: Vec, + pub checksum: String, + pub iv: [u8; 16], +} + +#[derive(Serialize, Deserialize)] +pub struct Manifest { + pub version: String, + pub chunks: HashMap, + pub size: u64, + pub key: [u8; 16], +} + diff --git a/libraries/libarchive/Cargo.toml b/libraries/libarchive/Cargo.toml index 11e0573a..0e2eba16 100644 --- a/libraries/libarchive/Cargo.toml +++ b/libraries/libarchive/Cargo.toml @@ -3,10 +3,10 @@ name = "libarchive-drop" version = "0.1.1" authors = ["Jamie Winsor ", "Drop OSS"] license = "Apache-2.0" -repository = "https://github.com/Drop-OSS/libarchive-rust" +repository = "https://lab.droposs.org/drop-oss/drop/-/tree/develop/libraries/libarchive" description = "A safe Rust API for authoring and extracting archives with libarchive" keywords = ["libarchive", "archive", "tar", "zip"] [dependencies] libc = ">= 0.2.0" -libarchive3-sys = "0.1" +libarchive3-sys = "0.1.2" diff --git a/libraries/libarchive/tests/lib.rs b/libraries/libarchive/tests/lib.rs index d35c5373..ffbe355b 100644 --- a/libraries/libarchive/tests/lib.rs +++ b/libraries/libarchive/tests/lib.rs @@ -1,10 +1,10 @@ -extern crate libarchive; +extern crate libarchive_drop; pub mod util; -use libarchive::archive::{self, ReadFilter, ReadFormat}; -use libarchive::reader::{self, Reader}; -use libarchive::writer; +use libarchive_drop::archive::{self, ReadFilter, ReadFormat}; +use libarchive_drop::reader::{self, Reader}; +use libarchive_drop::writer; use std::fs::File; #[test] diff --git a/promo/public/gallery/store.png b/promo/public/gallery/store.png index 0270e9d848b809c53baabf0c0afdbe64b23643cf..7a594d270d11714bc7662cafb270a5c7d387c162 100644 GIT binary patch literal 2435818 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

-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�~ssM`fSyEX@Wgx&iX?<-*atdyPLc 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