diff --git a/Cargo.lock b/Cargo.lock index 04b6db5..8497af0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8,29 +8,6 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" -[[package]] -name = "aes" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" -dependencies = [ - "cfg-if", - "cipher", - "cpufeatures", -] - -[[package]] -name = "ahash" -version = "0.8.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" -dependencies = [ - "cfg-if", - "once_cell", - "version_check", - "zerocopy", -] - [[package]] name = "aho-corasick" version = "1.1.4" @@ -40,12 +17,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "allocator-api2" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -111,12 +82,6 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" -[[package]] -name = "arraydeque" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" - [[package]] name = "astral-tokio-tar" version = "0.5.6" @@ -133,131 +98,6 @@ dependencies = [ "xattr", ] -[[package]] -name = "async-broadcast" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" -dependencies = [ - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-channel" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" -dependencies = [ - "concurrent-queue", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-executor" -version = "1.13.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497c00e0fd83a72a79a39fcbd8e3e2f055d6f6c7e025f3b3d91f4f8e76527fb8" -dependencies = [ - "async-task", - "concurrent-queue", - "fastrand", - "futures-lite", - "pin-project-lite", - "slab", -] - -[[package]] -name = "async-fs" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8034a681df4aed8b8edbd7fbe472401ecf009251c8b40556b304567052e294c5" -dependencies = [ - "async-lock", - "blocking", - "futures-lite", -] - -[[package]] -name = "async-io" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456b8a8feb6f42d237746d4b3e9a178494627745c3c56c6ea55d92ba50d026fc" -dependencies = [ - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-io", - "futures-lite", - "parking", - "polling", - "rustix", - "slab", - "windows-sys 0.61.2", -] - -[[package]] -name = "async-lock" -version = "3.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f7f2596bd5b78a9fec8088ccd89180d7f9f55b94b0576823bbbdc72ee8311" -dependencies = [ - "event-listener", - "event-listener-strategy", - "pin-project-lite", -] - -[[package]] -name = "async-process" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc50921ec0055cdd8a16de48773bfeec5c972598674347252c0399676be7da75" -dependencies = [ - "async-channel", - "async-io", - "async-lock", - "async-signal", - "async-task", - "blocking", - "cfg-if", - "event-listener", - "futures-lite", - "rustix", -] - -[[package]] -name = "async-recursion" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "async-signal" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43c070bbf59cd3570b6b2dd54cd772527c7c3620fce8be898406dd3ed6adc64c" -dependencies = [ - "async-io", - "async-lock", - "atomic-waker", - "cfg-if", - "futures-core", - "futures-io", - "rustix", - "signal-hook-registry", - "slab", - "windows-sys 0.61.2", -] - [[package]] name = "async-stream" version = "0.3.6" @@ -280,12 +120,6 @@ dependencies = [ "syn", ] -[[package]] -name = "async-task" -version = "4.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" - [[package]] name = "async-trait" version = "0.1.89" @@ -387,12 +221,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "base16ct" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" - [[package]] name = "base64" version = "0.21.7" @@ -405,35 +233,11 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "base64ct" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" - -[[package]] -name = "beef" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" - [[package]] name = "bitflags" version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -dependencies = [ - "serde_core", -] - -[[package]] -name = "bitmaps" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "031043d04099746d8db04daf1fa424b2bc8bd69d92b25962dcde24da39ab64a2" -dependencies = [ - "typenum", -] [[package]] name = "block-buffer" @@ -444,28 +248,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "block-padding" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" -dependencies = [ - "generic-array", -] - -[[package]] -name = "blocking" -version = "1.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" -dependencies = [ - "async-channel", - "async-task", - "futures-io", - "futures-lite", - "piper", -] - [[package]] name = "bollard" version = "0.19.4" @@ -493,7 +275,7 @@ dependencies = [ "log", "num", "pin-project-lite", - "rand 0.9.2", + "rand", "rustls", "rustls-native-certs", "rustls-pemfile", @@ -519,8 +301,8 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85a885520bf6249ab931a764ffdb87b0ceef48e6e7d807cfdb21b751e086e1ad" dependencies = [ - "prost 0.14.3", - "prost-types 0.14.3", + "prost", + "prost-types", "tonic", "tonic-prost", "ureq", @@ -536,7 +318,7 @@ dependencies = [ "bollard-buildkit-proto", "bytes", "chrono", - "prost 0.14.3", + "prost", "serde", "serde_json", "serde_repr", @@ -549,27 +331,12 @@ version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - [[package]] name = "bytes" version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" -[[package]] -name = "cbc" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6" -dependencies = [ - "cipher", -] - [[package]] name = "cc" version = "1.2.55" @@ -614,16 +381,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "cipher" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" -dependencies = [ - "crypto-common", - "inout", -] - [[package]] name = "clap" version = "4.5.56" @@ -653,7 +410,7 @@ version = "4.5.55" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn", @@ -690,73 +447,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "concurrent-queue" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "config" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68578f196d2a33ff61b27fae256c3164f65e36382648e30666dde05b8cc9dfdf" -dependencies = [ - "async-trait", - "convert_case", - "json5", - "nom", - "pathdiff", - "ron", - "rust-ini", - "serde", - "serde_json", - "toml", - "yaml-rust2", -] - -[[package]] -name = "console" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width 0.2.2", - "windows-sys 0.59.0", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "const-random" -version = "0.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" -dependencies = [ - "const-random-macro", -] - -[[package]] -name = "const-random-macro" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" -dependencies = [ - "getrandom 0.2.17", - "once_cell", - "tiny-keccak", -] - [[package]] name = "const_format" version = "0.2.35" @@ -777,15 +467,6 @@ dependencies = [ "unicode-xid", ] -[[package]] -name = "convert_case" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "core-foundation" version = "0.9.4" @@ -830,30 +511,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crossbeam-utils" -version = "0.8.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" - -[[package]] -name = "crunchy" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" - -[[package]] -name = "crypto-bigint" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - [[package]] name = "crypto-common" version = "0.1.7" @@ -934,46 +591,6 @@ dependencies = [ "syn", ] -[[package]] -name = "dbus" -version = "0.9.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b3aa68d7e7abee336255bd7248ea965cc393f3e70411135a6f6a4b651345d4" -dependencies = [ - "libc", - "libdbus-sys", - "windows-sys 0.59.0", -] - -[[package]] -name = "dbus-secret-service" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "708b509edf7889e53d7efb0ffadd994cc6c2345ccb62f55cfd6b0682165e4fa6" -dependencies = [ - "aes", - "block-padding", - "cbc", - "dbus", - "fastrand", - "hkdf", - "num", - "once_cell", - "sha2", - "zeroize", -] - -[[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid", - "pem-rfc7468", - "zeroize", -] - [[package]] name = "deranged" version = "0.5.5" @@ -1015,19 +632,6 @@ dependencies = [ "syn", ] -[[package]] -name = "dialoguer" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" -dependencies = [ - "console", - "shell-words", - "tempfile", - "thiserror 1.0.69", - "zeroize", -] - [[package]] name = "digest" version = "0.10.7" @@ -1035,59 +639,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", - "const-oid", "crypto-common", - "subtle", ] [[package]] -name = "directories" -version = "5.0.1" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" -dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys 0.48.0", -] - -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "dlv-list" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" -dependencies = [ - "const-random", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -1113,52 +676,12 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" -[[package]] -name = "ecdsa" -version = "0.16.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" -dependencies = [ - "der", - "digest", - "elliptic-curve", - "rfc6979", - "signature", - "spki", -] - [[package]] name = "either" version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" -[[package]] -name = "elliptic-curve" -version = "0.13.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" -dependencies = [ - "base16ct", - "crypto-bigint", - "digest", - "ff", - "generic-array", - "group", - "pem-rfc7468", - "pkcs8", - "rand_core 0.6.4", - "sec1", - "subtle", - "zeroize", -] - -[[package]] -name = "encode_unicode" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" - [[package]] name = "encoding_rs" version = "0.8.35" @@ -1168,33 +691,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "endi" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b7e2430c6dff6a955451e2cfc438f09cea1965a9d6f87f7e3b90decc014099" - -[[package]] -name = "enumflags2" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1027f7680c853e056ebcec683615fb6fbbc07dbaa13b4d5d9442b146ded4ecef" -dependencies = [ - "enumflags2_derive", - "serde", -] - -[[package]] -name = "enumflags2_derive" -version = "0.7.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c78a4d8fdf9953a5c9d458f9efe940fd97a0cab0941c075a813ac594733827" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -1232,43 +728,12 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "event-listener" -version = "5.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" -dependencies = [ - "event-listener", - "pin-project-lite", -] - [[package]] name = "fastrand" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" -[[package]] -name = "ff" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "filetime" version = "0.2.27" @@ -1286,12 +751,6 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" version = "1.1.8" @@ -1377,19 +836,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" -[[package]] -name = "futures-lite" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" -dependencies = [ - "fastrand", - "futures-core", - "futures-io", - "parking", - "pin-project-lite", -] - [[package]] name = "futures-macro" version = "0.3.31" @@ -1445,7 +891,6 @@ checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", - "zeroize", ] [[package]] @@ -1493,17 +938,6 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" -[[package]] -name = "group" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" -dependencies = [ - "ff", - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "h2" version = "0.4.13" @@ -1529,16 +963,6 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] - [[package]] name = "hashbrown" version = "0.15.5" @@ -1554,57 +978,18 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -[[package]] -name = "hashlink" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" -dependencies = [ - "hashbrown 0.14.5", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" - [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "hkdf" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" -dependencies = [ - "hmac", -] - -[[package]] -name = "hmac" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" -dependencies = [ - "digest", -] - [[package]] name = "home" version = "0.5.12" @@ -1914,20 +1299,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "im-rc" -version = "15.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1955a75fa080c677d3972822ec4bad316169ab1cfc6c257a942c2265dbe5fe" -dependencies = [ - "bitmaps", - "rand_core 0.6.4", - "rand_xoshiro", - "sized-chunks", - "typenum", - "version_check", -] - [[package]] name = "indexmap" version = "1.9.3" @@ -1951,16 +1322,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "inout" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" -dependencies = [ - "block-padding", - "generic-array", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -1983,24 +1344,6 @@ version = "1.70.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" -[[package]] -name = "itertools" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.14.0" @@ -2058,17 +1401,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "json5" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" -dependencies = [ - "pest", - "pest_derive", - "serde", -] - [[package]] name = "jsonwebtoken" version = "10.3.0" @@ -2084,42 +1416,12 @@ dependencies = [ "signature", ] -[[package]] -name = "keyring" -version = "3.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eebcc3aff044e5944a8fbaf69eb277d11986064cba30c468730e8b9909fb551c" -dependencies = [ - "byteorder", - "dbus-secret-service", - "linux-keyutils", - "log", - "secret-service", - "security-framework 2.11.1", - "security-framework 3.5.1", - "windows-sys 0.60.2", - "zbus", - "zeroize", -] - -[[package]] -name = "lazy_static" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" - [[package]] name = "lazy_static" version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "leb128" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" - [[package]] name = "leb128fmt" version = "0.1.0" @@ -2132,15 +1434,6 @@ version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" -[[package]] -name = "libdbus-sys" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "328c4789d42200f1eeec05bd86c9c13c7f091d2ba9a6ea35acdf51f31bc0f043" -dependencies = [ - "pkg-config", -] - [[package]] name = "libredox" version = "0.1.12" @@ -2149,17 +1442,7 @@ checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags", "libc", - "redox_syscall 0.7.0", -] - -[[package]] -name = "linux-keyutils" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "761e49ec5fd8a5a463f9b84e877c373d888935b71c6be78f3767fe2ae6bed18e" -dependencies = [ - "bitflags", - "libc", + "redox_syscall", ] [[package]] @@ -2174,54 +1457,12 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" -[[package]] -name = "lock_api" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" -dependencies = [ - "scopeguard", -] - [[package]] name = "log" version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" -[[package]] -name = "logos" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7251356ef8cb7aec833ddf598c6cb24d17b689d20b993f9d11a3d764e34e6458" -dependencies = [ - "logos-derive", -] - -[[package]] -name = "logos-codegen" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59f80069600c0d66734f5ff52cc42f2dabd6b29d205f333d61fd7832e9e9963f" -dependencies = [ - "beef", - "fnv", - "lazy_static 1.5.0", - "proc-macro2", - "quote", - "regex-syntax", - "syn", -] - -[[package]] -name = "logos-derive" -version = "0.14.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24fb722b06a9dc12adb0963ed585f19fc61dc5413e6a9be9422ef92c091e731d" -dependencies = [ - "logos-codegen", -] - [[package]] name = "lru-slab" version = "0.1.2" @@ -2249,49 +1490,12 @@ version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "miette" -version = "7.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f98efec8807c63c752b5bd61f862c165c115b0a35685bdcfd9238c7aeb592b7" -dependencies = [ - "cfg-if", - "miette-derive", - "unicode-width 0.1.14", -] - -[[package]] -name = "miette-derive" -version = "7.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "mime" version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[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" @@ -2313,44 +1517,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "multimap" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" - -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags", - "cfg-if", - "cfg_aliases", - "libc", - "memoffset", -] - -[[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 = "normpath" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf23ab2b905654b4cb177e30b629937b3868311d4e1cba859f899c041046e69b" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "nu-ansi-term" version = "0.50.3" @@ -2451,7 +1617,7 @@ dependencies = [ "http", "http-auth", "jsonwebtoken", - "lazy_static 1.5.0", + "lazy_static", "oci-spec", "olpc-cjson", "regex", @@ -2528,82 +1694,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" -[[package]] -name = "option-ext" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" - -[[package]] -name = "ordered-float" -version = "2.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" -dependencies = [ - "num-traits", -] - -[[package]] -name = "ordered-multimap" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" -dependencies = [ - "dlv-list", - "hashbrown 0.14.5", -] - -[[package]] -name = "ordered-stream" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" -dependencies = [ - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" -dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2", -] - -[[package]] -name = "parking" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" - -[[package]] -name = "parking_lot" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.5.18", - "smallvec", - "windows-link", -] - [[package]] name = "parse-display" version = "0.9.1" @@ -2629,117 +1719,12 @@ dependencies = [ "syn", ] -[[package]] -name = "pathdiff" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" - -[[package]] -name = "pbjson" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90" -dependencies = [ - "base64 0.21.7", - "serde", -] - -[[package]] -name = "pbjson-build" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735" -dependencies = [ - "heck 0.4.1", - "itertools 0.11.0", - "prost 0.12.6", - "prost-types 0.12.6", -] - -[[package]] -name = "pbjson-types" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12" -dependencies = [ - "bytes", - "chrono", - "pbjson", - "pbjson-build", - "prost 0.12.6", - "prost-build", - "serde", -] - -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "percent-encoding" version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" -[[package]] -name = "pest" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9eb05c21a464ea704b53158d358a31e6425db2f63a1a7312268b05fe2b75f7" -dependencies = [ - "memchr", - "ucd-trie", -] - -[[package]] -name = "pest_derive" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f9dbced329c441fa79d80472764b1a2c7e57123553b8519b36663a2fb234ed" -dependencies = [ - "pest", - "pest_generator", -] - -[[package]] -name = "pest_generator" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bb96d5051a78f44f43c8f712d8e810adb0ebf923fc9ed2655a7f66f63ba8ee5" -dependencies = [ - "pest", - "pest_meta", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "pest_meta" -version = "2.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602113b5b5e8621770cfd490cfd90b9f84ab29bd2b0e49ad83eb6d186cef2365" -dependencies = [ - "pest", - "sha2", -] - -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.13.0", -] - [[package]] name = "pin-project" version = "1.1.10" @@ -2772,47 +1757,6 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" -[[package]] -name = "piper" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" -dependencies = [ - "atomic-waker", - "fastrand", - "futures-io", -] - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "pkg-config" -version = "0.3.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" - -[[package]] -name = "polling" -version = "3.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" -dependencies = [ - "cfg-if", - "concurrent-queue", - "hermit-abi", - "pin-project-lite", - "rustix", - "windows-sys 0.61.2", -] - [[package]] name = "portable-atomic" version = "1.13.1" @@ -2840,26 +1784,7 @@ version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy", -] - -[[package]] -name = "prettyplease" -version = "0.2.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" -dependencies = [ - "proc-macro2", - "syn", -] - -[[package]] -name = "primeorder" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" -dependencies = [ - "elliptic-curve", + "zerocopy", ] [[package]] @@ -2902,16 +1827,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "prost" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" -dependencies = [ - "bytes", - "prost-derive 0.12.6", -] - [[package]] name = "prost" version = "0.14.3" @@ -2919,41 +1834,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" dependencies = [ "bytes", - "prost-derive 0.14.3", -] - -[[package]] -name = "prost-build" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22505a5c94da8e3b7c2996394d1c933236c4d743e81a410bcca4e6989fc066a4" -dependencies = [ - "bytes", - "heck 0.5.0", - "itertools 0.12.1", - "log", - "multimap", - "once_cell", - "petgraph", - "prettyplease", - "prost 0.12.6", - "prost-types 0.12.6", - "regex", - "syn", - "tempfile", -] - -[[package]] -name = "prost-derive" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" -dependencies = [ - "anyhow", - "itertools 0.12.1", - "proc-macro2", - "quote", - "syn", + "prost-derive", ] [[package]] @@ -2963,83 +1844,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", - "itertools 0.14.0", + "itertools", "proc-macro2", "quote", "syn", ] -[[package]] -name = "prost-reflect" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f5eec97d5d34bdd17ad2db2219aabf46b054c6c41bd5529767c9ce55be5898f" -dependencies = [ - "logos", - "miette", - "once_cell", - "prost 0.12.6", - "prost-types 0.12.6", -] - -[[package]] -name = "prost-types" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" -dependencies = [ - "prost 0.12.6", -] - [[package]] name = "prost-types" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8991c4cbdb8bc5b11f0b074ffe286c30e523de90fee5ba8132f1399f23cb3dd7" dependencies = [ - "prost 0.14.3", -] - -[[package]] -name = "protox" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac532509cee918d40f38c3e12f8ef9230f215f017d54de7dd975015538a42ce7" -dependencies = [ - "bytes", - "miette", - "prost 0.12.6", - "prost-reflect", - "prost-types 0.12.6", - "protox-parse", - "thiserror 1.0.69", -] - -[[package]] -name = "protox-parse" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6c33f43516fe397e2f930779d720ca12cd057f7da4cd6326a0ef78d69dee96" -dependencies = [ - "logos", - "miette", - "prost-types 0.12.6", - "thiserror 1.0.69", -] - -[[package]] -name = "ptree" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "289cfd20ebec0e7ff2572e370dd7a1c9973ba666d3c38c5e747de0a4ada21f17" -dependencies = [ - "anstyle", - "config", - "directories", - "petgraph", - "serde", - "serde-value", - "tint", + "prost", ] [[package]] @@ -3072,7 +1889,7 @@ dependencies = [ "bytes", "getrandom 0.3.4", "lru-slab", - "rand 0.9.2", + "rand", "ring", "rustc-hash", "rustls", @@ -3113,37 +1930,16 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - [[package]] name = "rand" version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ - "rand_chacha 0.9.0", + "rand_chacha", "rand_core 0.9.5", ] -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core 0.6.4", -] - [[package]] name = "rand_chacha" version = "0.9.0" @@ -3172,24 +1968,6 @@ dependencies = [ "getrandom 0.3.4", ] -[[package]] -name = "rand_xoshiro" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" -dependencies = [ - "rand_core 0.6.4", -] - -[[package]] -name = "redox_syscall" -version = "0.5.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" -dependencies = [ - "bitflags", -] - [[package]] name = "redox_syscall" version = "0.7.0" @@ -3199,17 +1977,6 @@ dependencies = [ "bitflags", ] -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.17", - "libredox", - "thiserror 1.0.69", -] - [[package]] name = "ref-cast" version = "1.0.25" @@ -3275,7 +2042,6 @@ dependencies = [ "bytes", "encoding_rs", "futures-core", - "futures-util", "h2", "http", "http-body", @@ -3297,14 +2063,12 @@ dependencies = [ "sync_wrapper", "tokio", "tokio-rustls", - "tokio-util", "tower", "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", - "wasm-streams", "web-sys", "webpki-roots", ] @@ -3350,16 +2114,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "rfc6979" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" -dependencies = [ - "hmac", - "subtle", -] - [[package]] name = "ring" version = "0.17.14" @@ -3374,35 +2128,23 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "ron" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" -dependencies = [ - "base64 0.21.7", - "bitflags", - "serde", - "serde_derive", -] - [[package]] name = "rstest" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a2c585be59b6b5dd66a9d2084aa1d8bd52fbdb806eafdeffb52791147862035" +checksum = "6fc39292f8613e913f7df8fa892b8944ceb47c247b78e1b1ae2f09e019be789d" dependencies = [ - "futures", "futures-timer", + "futures-util", "rstest_macros", "rustc_version", ] [[package]] name = "rstest_macros" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "825ea780781b15345a146be27eaefb05085e337e869bff01b4306a4fd4a9ad5a" +checksum = "1f168d99749d307be9de54d23fd226628d99768225ef08f6ffb52e0182a27746" dependencies = [ "cfg-if", "glob", @@ -3416,16 +2158,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "rust-ini" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0698206bcb8882bf2a9ecb4c1e7785db57ff052297085a6efd4fe42302068a" -dependencies = [ - "cfg-if", - "ordered-multimap", -] - [[package]] name = "rustc-hash" version = "2.1.1" @@ -3479,7 +2211,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.5.1", + "security-framework", ] [[package]] @@ -3516,7 +2248,7 @@ dependencies = [ "rustls-native-certs", "rustls-platform-verifier-android", "rustls-webpki", - "security-framework 3.5.1", + "security-framework", "security-framework-sys", "webpki-root-certs", "windows-sys 0.61.2", @@ -3594,26 +2326,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sec1" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" -dependencies = [ - "base16ct", - "der", - "generic-array", - "pkcs8", - "subtle", - "zeroize", -] - [[package]] name = "secrecy" version = "0.8.0" @@ -3624,38 +2336,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "secret-service" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4d35ad99a181be0a60ffcbe85d680d98f87bdc4d7644ade319b87076b9dbfd4" -dependencies = [ - "aes", - "cbc", - "futures-util", - "generic-array", - "hkdf", - "num", - "once_cell", - "rand 0.8.5", - "serde", - "sha2", - "zbus", -] - -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - [[package]] name = "security-framework" version = "3.5.1" @@ -3699,16 +2379,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-value" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" -dependencies = [ - "ordered-float", - "serde", -] - [[package]] name = "serde_core" version = "1.0.228" @@ -3805,30 +2475,6 @@ dependencies = [ "syn", ] -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap 2.13.0", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] -name = "sha1" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - [[package]] name = "sha2" version = "0.10.9" @@ -3840,34 +2486,15 @@ dependencies = [ "digest", ] -[[package]] -name = "sha256" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f880fc8562bdeb709793f00eb42a2ad0e672c4f883bbe59122b926eca935c8f6" -dependencies = [ - "async-trait", - "bytes", - "hex", - "sha2", - "tokio", -] - [[package]] name = "sharded-slab" version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ - "lazy_static 1.5.0", + "lazy_static", ] -[[package]] -name = "shell-words" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6fe69c597f9c37bfeeeeeb33da3530379845f10be461a66d16d03eca2ded77" - [[package]] name = "shlex" version = "1.3.0" @@ -3890,7 +2517,6 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ - "digest", "rand_core 0.6.4", ] @@ -3900,16 +2526,6 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" -[[package]] -name = "sized-chunks" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d69225bde7a69b235da73377861095455d298f2b970996eec25ddbb42b3d1e" -dependencies = [ - "bitmaps", - "typenum", -] - [[package]] name = "slab" version = "0.4.12" @@ -3941,28 +2557,12 @@ dependencies = [ "smallvec", ] -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - [[package]] name = "stable_deref_trait" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "strsim" version = "0.11.1" @@ -4004,7 +2604,7 @@ version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn", @@ -4200,24 +2800,6 @@ dependencies = [ "time-core", ] -[[package]] -name = "tint" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7af24570664a3074673dbbf69a65bdae0ae0b72f2949b1adfbacb736ee4d6896" -dependencies = [ - "lazy_static 0.2.11", -] - -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - [[package]] name = "tinystr" version = "0.8.2" @@ -4252,7 +2834,6 @@ dependencies = [ "bytes", "libc", "mio", - "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", @@ -4412,7 +2993,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6c55a2d6a14174563de34409c9f92ff981d006f56da9c6ecd40d9d4a31500b0" dependencies = [ "bytes", - "prost 0.14.3", + "prost", "tonic", ] @@ -4531,30 +3112,13 @@ version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - -[[package]] -name = "uds_windows" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" -dependencies = [ - "memoffset", - "tempfile", - "winapi", -] - [[package]] name = "ulid" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "470dbf6591da1b39d43c14523b2b469c86879a53e8b758c8e090a470fe7b1fbe" dependencies = [ - "rand 0.9.2", + "rand", "web-time", ] @@ -4575,27 +3139,9 @@ name = "unicode-normalization" version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" - -[[package]] -name = "unicode-width" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" - -[[package]] -name = "unicode-width" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" +dependencies = [ + "tinyvec", +] [[package]] name = "unicode-xid" @@ -4603,12 +3149,6 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" -[[package]] -name = "unsafe-libyaml" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" - [[package]] name = "untrusted" version = "0.7.1" @@ -4705,144 +3245,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "warg-api" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98505d42b5289563c6d659f625b6789a97980166508bd00862c4328bf41c261" -dependencies = [ - "indexmap 2.13.0", - "itertools 0.12.1", - "serde", - "serde_with", - "thiserror 1.0.69", - "warg-crypto", - "warg-protocol", -] - -[[package]] -name = "warg-client" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "738a33cf369dea5d2684a61a7035c038858f40fc090d4981d35ee3fab416ddb8" -dependencies = [ - "anyhow", - "async-recursion", - "async-trait", - "bytes", - "clap", - "dialoguer", - "dirs", - "futures-util", - "indexmap 2.13.0", - "itertools 0.12.1", - "keyring", - "libc", - "normpath", - "once_cell", - "pathdiff", - "ptree", - "reqwest 0.12.28", - "secrecy", - "semver", - "serde", - "serde_json", - "sha256", - "tempfile", - "thiserror 1.0.69", - "tokio", - "tokio-util", - "tracing", - "url", - "walkdir", - "warg-api", - "warg-crypto", - "warg-protocol", - "warg-transparency", - "wasm-compose", - "wasm-encoder 0.41.2", - "wasmparser 0.121.2", - "wasmprinter", - "windows-sys 0.52.0", -] - -[[package]] -name = "warg-crypto" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71661a52504e20b9ec8e9846bddda041f30eb7aedeb6888c057d6a213eaedf87" -dependencies = [ - "anyhow", - "base64 0.21.7", - "digest", - "hex", - "leb128", - "once_cell", - "p256", - "rand_core 0.6.4", - "secrecy", - "serde", - "sha2", - "signature", - "thiserror 1.0.69", -] - -[[package]] -name = "warg-protobuf" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6af0b1733deeb4f0c496d2b8e3ddb0e93b39da19d90c4f6d7594f2861f7e3086" -dependencies = [ - "anyhow", - "pbjson", - "pbjson-build", - "pbjson-types", - "prost 0.12.6", - "prost-build", - "prost-types 0.12.6", - "protox", - "regex", - "serde", - "warg-crypto", -] - -[[package]] -name = "warg-protocol" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "922504990dbb7297c67139140fc5c08f596988fcbaf38d9e7d3bf89a0c0759fe" -dependencies = [ - "anyhow", - "base64 0.21.7", - "hex", - "indexmap 2.13.0", - "pbjson-types", - "prost 0.12.6", - "prost-types 0.12.6", - "semver", - "serde", - "serde_with", - "thiserror 1.0.69", - "warg-crypto", - "warg-protobuf", - "warg-transparency", - "wasmparser 0.121.2", -] - -[[package]] -name = "warg-transparency" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8d8110b6800c43422676201a6a62167769b015ca29a8fcab67d789ac8b9c63" -dependencies = [ - "anyhow", - "indexmap 2.13.0", - "prost 0.12.6", - "thiserror 1.0.69", - "warg-crypto", - "warg-protobuf", -] - [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -4917,37 +3319,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-compose" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd324927af875ebedb1b820c00e3c585992d33c2c787c5021fe6d8982527359b" -dependencies = [ - "anyhow", - "heck 0.4.1", - "im-rc", - "indexmap 2.13.0", - "log", - "petgraph", - "serde", - "serde_derive", - "serde_yaml", - "smallvec", - "wasm-encoder 0.41.2", - "wasmparser 0.121.2", - "wat", -] - -[[package]] -name = "wasm-encoder" -version = "0.41.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972f97a5d8318f908dded23594188a90bcd09365986b1163e66d70170e5287ae" -dependencies = [ - "leb128", - "wasmparser 0.121.2", -] - [[package]] name = "wasm-encoder" version = "0.244.0" @@ -4955,7 +3326,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" dependencies = [ "leb128fmt", - "wasmparser 0.244.0", + "wasmparser", ] [[package]] @@ -4973,8 +3344,8 @@ dependencies = [ "serde_json", "spdx", "url", - "wasm-encoder 0.244.0", - "wasmparser 0.244.0", + "wasm-encoder", + "wasmparser", ] [[package]] @@ -5004,9 +3375,6 @@ dependencies = [ "tracing", "tracing-subscriber", "url", - "warg-client", - "warg-crypto", - "warg-protocol", "wasm-metadata", "wasm-pkg-common", "wit-component", @@ -5021,6 +3389,7 @@ dependencies = [ "etcetera 0.11.0", "futures-util", "http", + "reqwest 0.12.28", "semver", "serde", "serde_json", @@ -5068,17 +3437,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasmparser" -version = "0.121.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" -dependencies = [ - "bitflags", - "indexmap 2.13.0", - "semver", -] - [[package]] name = "wasmparser" version = "0.244.0" @@ -5091,38 +3449,6 @@ dependencies = [ "semver", ] -[[package]] -name = "wasmprinter" -version = "0.2.80" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e73986a6b7fdfedb7c5bf9e7eb71135486507c8fbc4c0c42cffcb6532988b7" -dependencies = [ - "anyhow", - "wasmparser 0.121.2", -] - -[[package]] -name = "wast" -version = "244.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e7b9f9e23311275920e3d6b56d64137c160cf8af4f84a7283b36cfecbf4acb" -dependencies = [ - "bumpalo", - "leb128fmt", - "memchr", - "unicode-width 0.2.2", - "wasm-encoder 0.244.0", -] - -[[package]] -name = "wat" -version = "1.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbf35b87ed352f9ab6cd0732abde5a67dd6153dfd02c493e61459218b19456fa" -dependencies = [ - "wast", -] - [[package]] name = "web-sys" version = "0.3.85" @@ -5271,15 +3597,6 @@ dependencies = [ "windows-targets 0.42.2", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -5331,21 +3648,6 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -5385,12 +3687,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -5409,12 +3705,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -5433,12 +3723,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -5469,12 +3753,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -5493,12 +3771,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -5517,12 +3789,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -5541,12 +3807,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -5587,9 +3847,9 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "wasm-encoder 0.244.0", + "wasm-encoder", "wasm-metadata", - "wasmparser 0.244.0", + "wasmparser", "wit-parser", ] @@ -5608,7 +3868,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.244.0", + "wasmparser", ] [[package]] @@ -5650,27 +3910,6 @@ dependencies = [ "rustix", ] -[[package]] -name = "xdg-home" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" -dependencies = [ - "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "yaml-rust2" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8902160c4e6f2fb145dbe9d6760a75e3c9522d8bf796ed7047c85919ac7115f8" -dependencies = [ - "arraydeque", - "encoding_rs", - "hashlink", -] - [[package]] name = "yoke" version = "0.8.1" @@ -5694,68 +3933,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "zbus" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb97012beadd29e654708a0fdb4c84bc046f537aecfde2c3ee0a9e4b4d48c725" -dependencies = [ - "async-broadcast", - "async-executor", - "async-fs", - "async-io", - "async-lock", - "async-process", - "async-recursion", - "async-task", - "async-trait", - "blocking", - "enumflags2", - "event-listener", - "futures-core", - "futures-sink", - "futures-util", - "hex", - "nix", - "ordered-stream", - "rand 0.8.5", - "serde", - "serde_repr", - "sha1", - "static_assertions", - "tracing", - "uds_windows", - "windows-sys 0.52.0", - "xdg-home", - "zbus_macros", - "zbus_names", - "zvariant", -] - -[[package]] -name = "zbus_macros" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267db9407081e90bbfa46d841d3cbc60f59c0351838c4bc65199ecd79ab1983e" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils", -] - -[[package]] -name = "zbus_names" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" -dependencies = [ - "serde", - "static_assertions", - "zvariant", -] - [[package]] name = "zerocopy" version = "0.8.37" @@ -5802,20 +3979,6 @@ name = "zeroize" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -dependencies = [ - "zeroize_derive", -] - -[[package]] -name = "zeroize_derive" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5b4158499876c763cb03bc4e49185d3cccbabb15b33c627f7884f43db852e" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] [[package]] name = "zerotrie" @@ -5855,40 +4018,3 @@ name = "zmij" version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ff05f8caa9038894637571ae6b9e29466c1f4f829d26c9b28f869a29cbe3445" - -[[package]] -name = "zvariant" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2084290ab9a1c471c38fc524945837734fbf124487e105daec2bb57fd48c81fe" -dependencies = [ - "endi", - "enumflags2", - "serde", - "static_assertions", - "zvariant_derive", -] - -[[package]] -name = "zvariant_derive" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73e2ba546bda683a90652bac4a279bc146adad1386f25379cf73200d2002c449" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", - "zvariant_utils", -] - -[[package]] -name = "zvariant_utils" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51bcff7cc3dbb5055396bcf774748c3dab426b4b8659046963523cee4808340" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/README.md b/README.md index b9d5e66..0be1d67 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Tools to package up [Wasm Components](https://github.com/webassembly/component-model) This repo contains several Rust crates that can be used for fetching and publishing Wasm Components -to OCI or Warg registries. It is also the home of the `wkg` command line tool, which exposes all the +to OCI registries. It is also the home of the `wkg` command line tool, which exposes all the functionality of the libraries. The first (but not only) focus of this project is allow for fetching of Wit Interfaces stored as components for use in creating components. It can also be used to fetch and publish component "libraries" to/from a registry. @@ -94,24 +94,9 @@ another = { registry = "another", metadata = { preferredProtocol = "oci", "oci" # Same as namespace_registries above, but for a specific package. "example:bar" = { registry = "another", metadata = { preferredProtocol = "oci", "oci" = {registry = "ghcr.io", namespacePrefix = "webassembly/" } } } -# This section contains a mapping of registries to their configuration. There are currently 3 -# supported types of registries: "oci", "warg", and "local". The "oci" type is the default. The -# example below shows a use case that isn't yet super common (registries that speak multiple protocols) -# but is included for completeness. +# This section contains a mapping of registries to their configuration. There are currently 2 +# supported types of registries: "oci" and "local". The "oci" type is the default. [registry."acme.registry.com"] -# This field is only required if more that one protocol is supported. It indicates which protocol -# to use by default. If this is not set, then the fallback (oci) will be used. -default = "warg" -[registry."acme.registry.com".warg] -# A path to a valid warg config file. If this is not set, the `wkg` CLI (but not the libraries) -# will attempt to load the config from the default location(s). -config_file = "/a/path" -# An optional authentication token to use when authenticating with a registry. -auth_token = "an-auth-token" -# An optional key for signing the component. Ideally, you should just let warg use the keychain -# or programmatically set this key in the config without writing to disk. This offers an escape -# hatch for when you need to use a key that isn't in the keychain. -signing_key = "ecdsa-p256:2CV1EpLaSYEn4In4OAEDAj5O4Hzu8AFAxgHXuG310Ew=" [registry."acme.registry.com".oci] # The auth field can either be a username/password pair, or a base64 encoded `username:password` # string. If no auth is set, the `wkg` CLI (but not the libraries) will also attempt to load the @@ -131,11 +116,11 @@ root = "/a/path" # If a registry only has a config section for one protocol, then that protocol is automatically # the default. The following is equivalent to: # [registry."example.com"] -# default = "warg" -# [registry."example.com".warg] -# config_file = "/a/path" -[registry."example.com".warg] -config_file = "/a/path" +# default = "oci" +# [registry."example.com".oci] +# auth = { username = "open", password = "sesame" } +[registry."example.com".oci] +auth = { username = "open", password = "sesame" } # Configuration for the "another" registry defined above. [registry."another".oci] @@ -155,24 +140,19 @@ A full example of what this `registry.json` file should look like is below: ```json { - "preferredProtocol":"warg", - "warg": {"url":"https://warg.example.com"}, + "preferredProtocol":"oci", "oci": {"registry": "ghcr.io", "namespacePrefix": "webassembly/"} } ``` The `preferredProtocol` field is optional and specifies which protocol the registry expects you to -use in the case where it supports both OCI and Warg. If both `warg` and `oci` config is in the -`registry.json` it is _highly recommended_ that this field be set. +use. While this field is present for future compatibility, it's generally fixed to "oci" in this implementation. For the `oci` config, the `registry` field is the base URL of the OCI registry, and the `namespacePrefix` field is the prefix that is used to store components in the registry. So in the example above (which is for wasi.dev), the components will be available at `ghcr.io/webassembly/$NAMESPACE/$PACKAGE:$VERSION` (e.g. `ghcr.io/webassembly/wasi/http:0.2.1`). -For the `warg` config, the `url` field is the base URL of the Warg registry used when connecting the -client. Namespacing for warg is built in to the protocol. - Please note that for backwards compatibility, with previous tooling and versions of the `wkg` tool, you may also encounter a `registry.json` file that looks different. These files are still supported, but should be considered deprecated. @@ -186,16 +166,6 @@ For OCI registries, the JSON looks like this: } ``` - - -For Warg registries, the JSON looks like this: - -```json -{ - "wargUrl": "https://warg.wa.dev" -} -``` - ### Conventions for storing components in OCI Astute observers will note that OCI requires a specific structure for how those components are diff --git a/crates/wasm-pkg-client/Cargo.toml b/crates/wasm-pkg-client/Cargo.toml index e15adf1..97c64a3 100644 --- a/crates/wasm-pkg-client/Cargo.toml +++ b/crates/wasm-pkg-client/Cargo.toml @@ -41,10 +41,7 @@ toml = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } url = "2.5.0" -warg-client = "0.9.2" -warg-crypto = "0.9.2" wasm-metadata = { workspace = true } -warg-protocol = "0.9.2" wasm-pkg-common = { workspace = true, features = ["registry-config"] } wit-component = { workspace = true } diff --git a/crates/wasm-pkg-client/src/lib.rs b/crates/wasm-pkg-client/src/lib.rs index 7621e86..235433f 100644 --- a/crates/wasm-pkg-client/src/lib.rs +++ b/crates/wasm-pkg-client/src/lib.rs @@ -33,7 +33,6 @@ pub mod metadata; pub mod oci; mod publisher; mod release; -pub mod warg; use std::path::Path; use std::sync::Arc; @@ -57,7 +56,7 @@ pub use wasm_pkg_common::{ use wit_component::DecodedWasm; use crate::metadata::RegistryMetadataExt; -use crate::{loader::PackageLoader, local::LocalBackend, oci::OciBackend, warg::WargBackend}; +use crate::{loader::PackageLoader, local::LocalBackend, oci::OciBackend}; pub use release::{Release, VersionInfo}; @@ -277,9 +276,6 @@ impl Client { ®istry_config, ®istry_meta, )?), - "warg" => { - Box::new(WargBackend::new(®istry, ®istry_config, ®istry_meta).await?) - } other => { return Err(Error::InvalidConfig(anyhow!( "unknown backend type {other:?}" diff --git a/crates/wasm-pkg-client/src/oci/loader.rs b/crates/wasm-pkg-client/src/oci/loader.rs index 30dfc17..fa9c3bb 100644 --- a/crates/wasm-pkg-client/src/oci/loader.rs +++ b/crates/wasm-pkg-client/src/oci/loader.rs @@ -1,8 +1,10 @@ use async_trait::async_trait; use futures_util::{StreamExt, TryStreamExt}; use oci_client::{manifest::OciDescriptor, RegistryOperation}; -use warg_protocol::Version; -use wasm_pkg_common::{package::PackageRef, Error}; +use wasm_pkg_common::{ + package::{PackageRef, Version}, + Error, +}; use crate::{ loader::PackageLoader, @@ -36,7 +38,12 @@ impl PackageLoader for OciBackend { yanked: false, }), Err(err) => { - tracing::debug!(?tag, error = ?err, "Ignoring invalid version tag"); + // Signature tags all start with a SHA and shouldn't generate a warning + if tag.starts_with("sha256-") { + tracing::debug!(?tag, "Ignoring signature tag"); + } else { + tracing::warn!(?tag, error = ?err, "Ignoring invalid version tag"); + } None } }) diff --git a/crates/wasm-pkg-client/src/warg/config.rs b/crates/wasm-pkg-client/src/warg/config.rs deleted file mode 100644 index 63636d1..0000000 --- a/crates/wasm-pkg-client/src/warg/config.rs +++ /dev/null @@ -1,214 +0,0 @@ -use std::{fmt::Debug, path::PathBuf, sync::Arc}; - -use secrecy::{ExposeSecret, SecretString}; -use serde::{Deserialize, Serialize, Serializer}; -use warg_crypto::signing::PrivateKey; -use wasm_pkg_common::{config::RegistryConfig, Error}; - -/// Registry configuration for Warg backends. -/// -/// See: [`RegistryConfig::backend_config`] -#[derive(Clone, Default, Serialize)] -#[serde(into = "WargRegistryConfigToml")] -pub struct WargRegistryConfig { - /// The configuration for the Warg client. - pub client_config: warg_client::Config, - /// The authentication token for the Warg registry. - pub auth_token: Option, - /// A signing key to use for publishing packages. - // NOTE(thomastaylor312): This couldn't be wrapped in a secret because the outer type doesn't - // implement Zeroize. However, the inner type is zeroized. - pub signing_key: Option>, - /// The path to the Warg config file, if specified. - pub config_file: Option, -} - -impl Debug for WargRegistryConfig { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("WargRegistryConfig") - .field("client_config", &self.client_config) - .field("auth_token", &self.auth_token) - .field("signing_key", &"[redacted]") - .field("config_file", &self.config_file) - .finish() - } -} - -impl TryFrom<&RegistryConfig> for WargRegistryConfig { - type Error = Error; - - fn try_from(registry_config: &RegistryConfig) -> Result { - let WargRegistryConfigToml { - auth_token, - signing_key, - config_file, - } = registry_config.backend_config("warg")?.unwrap_or_default(); - let (client_config, config_file) = match config_file { - Some(path) => ( - warg_client::Config::from_file(&path).map_err(Error::RegistryError)?, - Some(path), - ), - None => { - // NOTE(thomastaylor312): We could try to be smarter here and see which file it - // loaded, but there isn't a way to do that if it loaded from the current working - // directory. - ( - warg_client::Config::from_default_file() - .map_err(Error::RegistryError)? - .unwrap_or_default(), - None, - ) - } - }; - - Ok(Self { - client_config, - auth_token, - signing_key: signing_key - .map(|k| PrivateKey::decode(k).map(Arc::new)) - .transpose() - .map_err(|e| { - Error::InvalidConfig(anyhow::anyhow!("invalid signing key in config file: {e}")) - })?, - config_file, - }) - } -} - -#[derive(Default, Deserialize, Serialize)] -struct WargRegistryConfigToml { - #[serde(skip_serializing_if = "Option::is_none")] - config_file: Option, - #[serde( - skip_serializing_if = "Option::is_none", - serialize_with = "serialize_secret" - )] - auth_token: Option, - #[serde( - skip_serializing_if = "Option::is_none", - serialize_with = "serialize_secret" - )] - signing_key: Option, -} - -impl From for WargRegistryConfigToml { - fn from(value: WargRegistryConfig) -> Self { - WargRegistryConfigToml { - auth_token: value.auth_token, - config_file: value.config_file, - signing_key: value - .signing_key - .map(|k| SecretString::new(k.encode().to_string())), - } - } -} - -fn serialize_secret( - secret: &Option, - serializer: S, -) -> Result { - if let Some(secret) = secret { - secret.expose_secret().serialize(serializer) - } else { - serializer.serialize_none() - } -} - -#[cfg(test)] -mod tests { - use wasm_pkg_common::config::RegistryMapping; - - use crate::warg::WargRegistryMetadata; - - use super::*; - - #[tokio::test] - async fn test_warg_config_roundtrip() { - let dir = tempfile::tempdir().expect("Unable to create tempdir"); - let warg_config_path = dir.path().join("warg_config.json"); - let (_, key) = warg_crypto::signing::generate_p256_pair(); - let config = WargRegistryConfig { - client_config: warg_client::Config { - home_url: Some("https://example.com".to_owned()), - ..Default::default() - }, - auth_token: Some("imsecret".to_owned().into()), - signing_key: Some(Arc::new(key)), - config_file: Some(warg_config_path.clone()), - }; - - // Try loading it with the normal method to make sure it comes out right - let mut conf = crate::Config::empty(); - - let registry: crate::Registry = "example.com:8080".parse().unwrap(); - let reg_conf = conf.get_or_insert_registry_config_mut(®istry); - reg_conf - .set_backend_config("warg", &config) - .expect("Unable to set config"); - - let reg_conf = conf.registry_config(®istry).unwrap(); - - // Write the warg config to disk - tokio::fs::write( - &warg_config_path, - serde_json::to_vec(&config.client_config).unwrap(), - ) - .await - .unwrap(); - - let roundtripped = WargRegistryConfig::try_from(reg_conf).expect("Unable to load config"); - assert_eq!( - roundtripped - .client_config - .home_url - .expect("Should have a home url set"), - config.client_config.home_url.unwrap(), - "Home url should be set to the right value" - ); - assert_eq!( - roundtripped - .auth_token - .expect("Should have an auth token set") - .expose_secret(), - config.auth_token.unwrap().expose_secret(), - "Auth token should be set to the right value" - ); - assert_eq!( - roundtripped - .signing_key - .expect("Should have a signing key set") - .encode(), - config.signing_key.unwrap().encode(), - "Signing key should be set to the right value" - ); - } - - #[test] - fn test_custom_namespace_config() { - let toml_config = toml::toml! { - [namespace_registries] - test = { registry = "localhost:1234", metadata = { preferredProtocol = "warg", "warg" = { url = "http://localhost:1234" } } } - }; - - let cfg = wasm_pkg_common::config::Config::from_toml(&toml_config.to_string()) - .expect("Should be able to load config"); - - let ns_config = cfg - .namespace_registry(&"test".parse().unwrap()) - .expect("Should have a namespace config"); - let custom = match ns_config { - RegistryMapping::Custom(c) => c, - _ => panic!("Should have a custom namespace config"), - }; - let map: WargRegistryMetadata = custom - .metadata - .protocol_config("warg") - .expect("Should be able to deserialize config") - .expect("protocol config should be present"); - assert_eq!( - map.url, - Some("http://localhost:1234".into()), - "URL should be set to the right value" - ); - } -} diff --git a/crates/wasm-pkg-client/src/warg/loader.rs b/crates/wasm-pkg-client/src/warg/loader.rs deleted file mode 100644 index b6f2ff2..0000000 --- a/crates/wasm-pkg-client/src/warg/loader.rs +++ /dev/null @@ -1,70 +0,0 @@ -use anyhow::anyhow; -use async_trait::async_trait; -use futures_util::{StreamExt, TryStreamExt}; -use wasm_pkg_common::{ - package::{PackageRef, Version}, - Error, -}; - -use crate::{ - loader::PackageLoader, - release::{Release, VersionInfo}, - ContentStream, -}; - -use super::{package_ref_to_name, warg_registry_error, WargBackend}; - -#[async_trait] -impl PackageLoader for WargBackend { - async fn list_all_versions(&self, package: &PackageRef) -> Result, Error> { - let info = self.fetch_package_info(package).await?; - Ok(info - .state - .releases() - .map(|r| VersionInfo { - version: r.version.clone(), - yanked: r.yanked(), - }) - .collect()) - } - - async fn get_release(&self, package: &PackageRef, version: &Version) -> Result { - let info = self.fetch_package_info(package).await?; - let release = info - .state - .release(version) - .ok_or_else(|| Error::VersionNotFound(version.clone()))?; - let content_digest = release - .content() - .ok_or_else(|| Error::RegistryError(anyhow!("version {version} yanked")))? - .to_string(); - Ok(Release { - version: version.clone(), - content_digest: content_digest.parse()?, - }) - } - - async fn stream_content_unvalidated( - &self, - package: &PackageRef, - release: &Release, - ) -> Result { - self.stream_content(package, release).await - } - - async fn stream_content( - &self, - package: &PackageRef, - release: &Release, - ) -> Result { - let package_name = package_ref_to_name(package)?; - - // warg client validates the digest matches the content - let (_, stream) = self - .client - .download_exact_as_stream(&package_name, &release.version) - .await - .map_err(warg_registry_error)?; - Ok(stream.map_err(Error::RegistryError).boxed()) - } -} diff --git a/crates/wasm-pkg-client/src/warg/mod.rs b/crates/wasm-pkg-client/src/warg/mod.rs deleted file mode 100644 index c444868..0000000 --- a/crates/wasm-pkg-client/src/warg/mod.rs +++ /dev/null @@ -1,105 +0,0 @@ -//! Warg package backend. - -use std::sync::Arc; - -use serde::Deserialize; -use warg_client::{storage::PackageInfo, ClientError, FileSystemClient}; -use warg_crypto::signing::PrivateKey; -use warg_protocol::registry::PackageName; -use wasm_pkg_common::{ - config::RegistryConfig, metadata::RegistryMetadata, package::PackageRef, registry::Registry, - Error, -}; - -mod config; -mod loader; -mod publisher; - -/// Re-exported for convenience. -pub use warg_client as client; - -pub use config::WargRegistryConfig; - -#[derive(Debug, Default, Deserialize)] -#[serde(rename_all = "camelCase")] -struct WargRegistryMetadata { - url: Option, -} - -pub(crate) struct WargBackend { - client: FileSystemClient, - signing_key: Option>, -} - -impl WargBackend { - pub async fn new( - registry: &Registry, - registry_config: &RegistryConfig, - registry_meta: &RegistryMetadata, - ) -> Result { - let warg_meta = registry_meta - .protocol_config::("warg")? - .unwrap_or_default(); - - let WargRegistryConfig { - client_config, - auth_token, - signing_key, - .. - } = registry_config.try_into()?; - - let url = warg_meta.url.unwrap_or_else(|| { - // If we just pass registry plain, warg will assume it is https. This is a workaround to - // assume that a local registry is http. - if registry.host() == "localhost" || registry.host() == "127.0.0.1" { - format!("http://{registry}") - } else { - format!("https://{registry}") - } - }); - - let client = - FileSystemClient::new_with_config(Some(url.as_str()), &client_config, auth_token) - .await - .map_err(warg_registry_error)?; - Ok(Self { - client, - signing_key, - }) - } - - pub(crate) async fn fetch_package_info( - &self, - package: &PackageRef, - ) -> Result { - let package_name = package_ref_to_name(package)?; - // NOTE(thomastaylor312): We need to make sure we're up to date with all packages, but if we - // bypass the cache every time, we'll have to fetch the whole package log every time rather - // than loading from cache on disk. The remaining question here is the performance impact. - // At scale, we don't know if this will result in a lot of HTTP requests even though the - // packages were updated on a previous call. This should be good enough for now, but we - // might need to revisit this later. - self.client - .update() - .await - .map_err(|e| Error::RegistryError(e.into()))?; - self.client - .package(&package_name) - .await - .map_err(warg_registry_error) - } -} - -pub(crate) fn package_ref_to_name(package_ref: &PackageRef) -> Result { - PackageName::new(package_ref.to_string()) - .map_err(|err| Error::InvalidPackageRef(err.to_string())) -} - -pub(crate) fn warg_registry_error(err: ClientError) -> Error { - match err { - ClientError::PackageDoesNotExist { .. } - | ClientError::PackageDoesNotExistWithHintHeader { .. } => Error::PackageNotFound, - ClientError::PackageVersionDoesNotExist { version, .. } => Error::VersionNotFound(version), - _ => Error::RegistryError(err.into()), - } -} diff --git a/crates/wasm-pkg-client/src/warg/publisher.rs b/crates/wasm-pkg-client/src/warg/publisher.rs deleted file mode 100644 index e1163d7..0000000 --- a/crates/wasm-pkg-client/src/warg/publisher.rs +++ /dev/null @@ -1,62 +0,0 @@ -use std::time::Duration; - -use futures_util::TryStreamExt; -use tokio_util::codec::{BytesCodec, FramedRead}; -use warg_client::storage::{ContentStorage, PublishEntry, PublishInfo}; - -use crate::publisher::PackagePublisher; -use crate::{PackageRef, PublishingSource, Version}; - -use super::WargBackend; - -const DEFAULT_WAIT_INTERVAL: Duration = Duration::from_secs(1); - -#[async_trait::async_trait] -impl PackagePublisher for WargBackend { - async fn publish( - &self, - package: &PackageRef, - version: &Version, - data: PublishingSource, - ) -> Result<(), crate::Error> { - // store the Wasm in Warg cache, so that it is available to Warg client for uploading - let content = self - .client - .content() - .store_content( - Box::pin( - FramedRead::new(data, BytesCodec::new()) - .map_ok(|b| b.freeze()) - .map_err(anyhow::Error::from), - ), - None, - ) - .await - .map_err(crate::Error::RegistryError)?; - - // convert package name to Warg package name - let name = super::package_ref_to_name(package)?; - - // start Warg publish, using the keyring to sign - let version = version.clone(); - let info = PublishInfo { - name: name.clone(), - head: None, - entries: vec![PublishEntry::Release { version, content }], - }; - let record_id = if let Some(key) = self.signing_key.as_ref() { - self.client.publish_with_info(key, info).await - } else { - self.client.sign_with_keyring_and_publish(Some(info)).await - } - .map_err(super::warg_registry_error)?; - - // wait for the Warg publish to finish - self.client - .wait_for_publish(&name, &record_id, DEFAULT_WAIT_INTERVAL) - .await - .map_err(super::warg_registry_error)?; - - Ok(()) - } -} diff --git a/crates/wasm-pkg-common/Cargo.toml b/crates/wasm-pkg-common/Cargo.toml index aa6eccf..371cd96 100644 --- a/crates/wasm-pkg-common/Cargo.toml +++ b/crates/wasm-pkg-common/Cargo.toml @@ -23,7 +23,14 @@ bytes = { workspace = true } etcetera = { workspace = true, optional = true } futures-util = { workspace = true } http = "1.1.0" -semver = { workspace = true } +reqwest = { version = "0.12.0", default-features = false, features = [ + "rustls-tls", + "charset", + "http2", + "macos-system-configuration", + "json", +], optional = true } +semver = { workspace = true, features = ["serde"] } serde = { workspace = true } serde_json = { workspace = true } sha2 = { workspace = true } diff --git a/crates/wasm-pkg-common/src/config/toml.rs b/crates/wasm-pkg-common/src/config/toml.rs index b52c4d4..efef68e 100644 --- a/crates/wasm-pkg-common/src/config/toml.rs +++ b/crates/wasm-pkg-common/src/config/toml.rs @@ -154,8 +154,8 @@ mod tests { [package_registry_overrides] - [registry."localhost:1234".warg] - config_file = "/a/path" + [registry."localhost:1234".oci] + auth = { username = "open", password = "sesame" } }; let toml_cfg: TomlConfig = toml_config.try_into().unwrap(); @@ -167,7 +167,7 @@ mod tests { reg_conf .default_backend() .expect("Should have a default set"), - "warg" + "oci" ); let toml_config = toml::toml! { @@ -176,10 +176,10 @@ mod tests { [package_registry_overrides] - [registry."localhost:1234".warg] - config_file = "/a/path" [registry."localhost:1234".oci] auth = { username = "open", password = "sesame" } + [registry."localhost:1234".other] + config = "value" }; let toml_cfg: TomlConfig = toml_config.try_into().unwrap(); @@ -200,10 +200,10 @@ mod tests { [registry."localhost:1234"] type = "foobar" - [registry."localhost:1234".warg] - config_file = "/a/path" [registry."localhost:1234".oci] auth = { username = "open", password = "sesame" } + [registry."localhost:1234".other] + config = "value" }; let toml_cfg: TomlConfig = toml_config.try_into().unwrap(); @@ -224,10 +224,10 @@ mod tests { [registry."localhost:1234"] default = "foobar" - [registry."localhost:1234".warg] - config_file = "/a/path" [registry."localhost:1234".oci] auth = { username = "open", password = "sesame" } + [registry."localhost:1234".other] + config = "value" }; let toml_cfg: TomlConfig = toml_config.try_into().unwrap(); diff --git a/crates/wasm-pkg-common/src/metadata.rs b/crates/wasm-pkg-common/src/metadata.rs index c3fd663..17c219f 100644 --- a/crates/wasm-pkg-common/src/metadata.rs +++ b/crates/wasm-pkg-common/src/metadata.rs @@ -30,14 +30,9 @@ pub struct RegistryMetadata { /// OCI Namespace Prefix #[serde(skip_serializing)] oci_namespace_prefix: Option, - - /// Warg URL - #[serde(skip_serializing)] - warg_url: Option, } const OCI_PROTOCOL: &str = "oci"; -const WARG_PROTOCOL: &str = "warg"; impl RegistryMetadata { /// Returns the registry's preferred protocol. @@ -52,12 +47,8 @@ impl RegistryMetadata { } if self.protocol_configs.len() == 1 { return self.protocol_configs.keys().next().map(|x| x.as_str()); - } else if self.protocol_configs.is_empty() { - match (self.oci_registry.is_some(), self.warg_url.is_some()) { - (true, false) => return Some(OCI_PROTOCOL), - (false, true) => return Some(WARG_PROTOCOL), - _ => {} - } + } else if self.protocol_configs.is_empty() && self.oci_registry.is_some() { + return Some(OCI_PROTOCOL); } None } @@ -69,9 +60,6 @@ impl RegistryMetadata { if self.oci_registry.is_some() || self.oci_namespace_prefix.is_some() { protos.insert(OCI_PROTOCOL.into()); } - if self.warg_url.is_some() { - protos.insert(WARG_PROTOCOL.into()); - } protos.into_iter().map(Into::into) } @@ -92,15 +80,9 @@ impl RegistryMetadata { .insert(key.into(), value.clone().into()); } }; - match protocol { - OCI_PROTOCOL => { - maybe_set("registry", &self.oci_registry); - maybe_set("namespacePrefix", &self.oci_namespace_prefix); - } - WARG_PROTOCOL => { - maybe_set("url", &self.warg_url); - } - _ => {} + if protocol == OCI_PROTOCOL { + maybe_set("registry", &self.oci_registry); + maybe_set("namespacePrefix", &self.oci_namespace_prefix); } if config.is_none() { @@ -141,31 +123,29 @@ mod tests { fn smoke_test() { let meta: RegistryMetadata = serde_json::from_value(json!({ "oci": {"registry": "oci.example.com"}, - "warg": {"url": "https://warg.example.com"}, + "other": {"key": "value"} })) .unwrap(); assert_eq!(meta.preferred_protocol(), None); assert_eq!( meta.configured_protocols().collect::>(), - ["oci", "warg"] + ["oci", "other"] ); let oci_config: JsonObject = meta.protocol_config("oci").unwrap().unwrap(); assert_eq!(oci_config["registry"], "oci.example.com"); - let warg_config: JsonObject = meta.protocol_config("warg").unwrap().unwrap(); - assert_eq!(warg_config["url"], "https://warg.example.com"); - let other_config: Option = meta.protocol_config("other").unwrap(); - assert_eq!(other_config, None); + let other_config: OtherProtocolConfig = meta.protocol_config("other").unwrap().unwrap(); + assert_eq!(other_config.key, "value"); } #[test] fn preferred_protocol_explicit() { let meta: RegistryMetadata = serde_json::from_value(json!({ - "preferredProtocol": "warg", + "preferredProtocol": "oci", "oci": {"registry": "oci.example.com"}, - "warg": {"url": "https://warg.example.com"}, + "other": {"key": "value"}, })) .unwrap(); - assert_eq!(meta.preferred_protocol(), Some("warg")); + assert_eq!(meta.preferred_protocol(), Some("oci")); } #[test] @@ -178,12 +158,12 @@ mod tests { } #[test] - fn preferred_protocol_implicit_warg() { + fn preferred_protocol_implicit_other() { let meta: RegistryMetadata = serde_json::from_value(json!({ - "warg": {"url": "https://warg.example.com"}, + "other": {"key": "value"}, })) .unwrap(); - assert_eq!(meta.preferred_protocol(), Some("warg")); + assert_eq!(meta.preferred_protocol(), Some("other")); } #[test] @@ -196,47 +176,32 @@ mod tests { assert_eq!(meta.preferred_protocol(), Some("oci")); } - #[test] - fn backward_compat_preferred_protocol_implicit_warg() { - let meta: RegistryMetadata = serde_json::from_value(json!({ - "wargUrl": "https://warg.example.com", - })) - .unwrap(); - assert_eq!(meta.preferred_protocol(), Some("warg")); - } - #[test] fn basic_backward_compat_test() { let meta: RegistryMetadata = serde_json::from_value(json!({ "ociRegistry": "oci.example.com", "ociNamespacePrefix": "prefix/", - "wargUrl": "https://warg.example.com", })) .unwrap(); - assert_eq!( - meta.configured_protocols().collect::>(), - ["oci", "warg"] - ); + assert_eq!(meta.configured_protocols().collect::>(), ["oci"]); let oci_config: JsonObject = meta.protocol_config("oci").unwrap().unwrap(); assert_eq!(oci_config["registry"], "oci.example.com"); assert_eq!(oci_config["namespacePrefix"], "prefix/"); - let warg_config: JsonObject = meta.protocol_config("warg").unwrap().unwrap(); - assert_eq!(warg_config["url"], "https://warg.example.com"); } #[test] fn merged_backward_compat_test() { let meta: RegistryMetadata = serde_json::from_value(json!({ - "wargUrl": "https://warg.example.com", + "ociRegistry": "oci.example.com", "other": {"key": "value"} })) .unwrap(); assert_eq!( meta.configured_protocols().collect::>(), - ["other", "warg"] + ["oci", "other"] ); - let warg_config: JsonObject = meta.protocol_config("warg").unwrap().unwrap(); - assert_eq!(warg_config["url"], "https://warg.example.com"); + let oci_config: JsonObject = meta.protocol_config("oci").unwrap().unwrap(); + assert_eq!(oci_config["registry"], "oci.example.com"); let other_config: OtherProtocolConfig = meta.protocol_config("other").unwrap().unwrap(); assert_eq!(other_config.key, "value"); } diff --git a/crates/wasm-pkg-common/src/package.rs b/crates/wasm-pkg-common/src/package.rs index 8360c97..9103b58 100644 --- a/crates/wasm-pkg-common/src/package.rs +++ b/crates/wasm-pkg-common/src/package.rs @@ -2,10 +2,10 @@ use std::str::FromStr; use serde::{Deserialize, Serialize}; -use crate::{label::Label, Error}; - pub use semver::Version; +use crate::{label::Label, Error}; + /// A package reference, consisting of kebab-case namespace and name. /// /// Ex: `wasm-pkg:client` diff --git a/crates/wasm-pkg-core/Cargo.toml b/crates/wasm-pkg-core/Cargo.toml index a43e021..94e0526 100644 --- a/crates/wasm-pkg-core/Cargo.toml +++ b/crates/wasm-pkg-core/Cargo.toml @@ -41,4 +41,5 @@ features = [ [dev-dependencies] tempfile = { workspace = true } sha2 = { workspace = true } -rstest = "0.23" +rstest = "0.25" +tokio = { workspace = true, features = ["rt", "macros", "process"] } diff --git a/crates/wasm-pkg-core/src/lock.rs b/crates/wasm-pkg-core/src/lock.rs index bd7efb9..a38ca23 100644 --- a/crates/wasm-pkg-core/src/lock.rs +++ b/crates/wasm-pkg-core/src/lock.rs @@ -8,13 +8,13 @@ use std::{ }; use anyhow::{Context, Result}; -use semver::{Version, VersionReq}; +use semver::VersionReq; use serde::{Deserialize, Serialize}; use tokio::{ fs::{File, OpenOptions}, io::{AsyncReadExt, AsyncSeekExt, AsyncWriteExt}, }; -use wasm_pkg_client::{ContentDigest, PackageRef}; +use wasm_pkg_client::{ContentDigest, PackageRef, Version}; use crate::resolver::{DependencyResolution, DependencyResolutionMap}; diff --git a/crates/wkg/Cargo.toml b/crates/wkg/Cargo.toml index 908004c..320dd7e 100644 --- a/crates/wkg/Cargo.toml +++ b/crates/wkg/Cargo.toml @@ -21,7 +21,12 @@ futures-util = { workspace = true, features = ["io"] } oci-client = { workspace = true } oci-wasm = { workspace = true } tempfile = { workspace = true } -tokio = { workspace = true, features = ["macros", "rt"] } +tokio = { workspace = true, features = [ + "macros", + "rt", + "rt-multi-thread", + "process", +] } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ["ansi"] } wasm-pkg-common = { workspace = true }